@egovernments/digit-ui-module-core 2.0.0-dev-20 → 2.0.0-dev-22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main.08f8755983b7134bc9cd.hot-update.js +643 -0
- package/dist/main.08f8755983b7134bc9cd.hot-update.js.map +1 -0
- package/dist/main.08f8755983b7134bc9cd.hot-update.json +1 -0
- package/dist/main.5cddd7524feabea78c32.hot-update.js +125 -0
- package/dist/main.5cddd7524feabea78c32.hot-update.json +1 -0
- package/dist/main.67dccefddc0b941541c8.hot-update.js +126 -0
- package/dist/main.67dccefddc0b941541c8.hot-update.json +1 -0
- package/dist/main.js +19901 -2
- package/dist/main.js.map +1 -1
- package/package.json +3 -3
- package/dist/main.js.LICENSE.txt +0 -9
- package/dist/main.js.br +0 -0
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","mappings":"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bC,OAAQ,CACN,CACExT,MAAO,4BACP+Q,KAAK,gBACLyD,YAAa,mCAEf,CACExU,MAAO,4BACP+Q,KAAM,sBACNyD,YAAa,qCAInB,CACElB,SAAU,qBACVG,QAAS,wBACTD,OAAQ,CACN,CACExT,MAAO,KACPwU,YAAa,mCAEf,CACExU,MAAO,KACPwU,YAAa,mCAEf,CACExU,MAAO,KACPwU,YAAa,mCAEf,CACExU,MAAO,KACPwU,YAAa,qCAInB,CACElB,SAAU,qBACVG,QAAS,wBACTD,OAAQ,CACN,CACExT,MAAO,KACPwU,YAAa,mCAEf,CACExU,MAAO,KACPwU,YAAa,mCAEf,CACExU,MAAO,KACPwU,YAAa,mCAEf,CACExU,MAAO,KACPwU,YAAa,qCAInB,CACElB,SAAU,qBACVG,QAAS,wBACTD,OAAQ,CACN,CACExT,MAAO,KACPwU,YAAa,mCAEf,CACExU,MAAO,KACPwU,YAAa,qCAInB,CACElB,SAAU,qBACVG,QAAS,wBACTD,OAAQ,CACN,CACExT,MAAO,4BACPwU,YAAa,mCAEf,CACExU,MAAO,4BACPwU,YAAa,mCAEf,CACExU,MAAO,4BACPwU,YAAa,mCAEf,CACExU,MAAO,4BACPwU,YAAa,mCAEf,CACExU,MAAO,4BACPwU,YAAa,qCAInB,CACElB,SAAU,qBACVG,QAAS,yBAEX,CACEH,SAAU,qBACVG,QAAS,wBACTD,OAAQ,CACN,CACExT,MAAO,KACPwU,YAAa,mCAEf,CACExU,MAAO,KACPwU,YAAa,qCAInB,CACElB,SAAU,qBACVG,QAAS,wBACTD,OAAQ,CACN,CACExT,MAAO,KACPwU,YAAa,mCAEf,CACExU,MAAO,KACPwU,YAAa,mCAEf,CACExU,MAAO,KACPwU,YAAa,mCAEf,CACExU,MAAO,KACPwU,YAAa,qCAInB,CACElB,SAAU,qBACVG,QAAS,wBACTD,OAAQ,CACN,CACExT,MAAO,4BACPwU,YAAa,mCAEf,CACExU,MAAO,4BACPwU,YAAa,qCAInB,CACElB,SAAU,sBACVG,QAAS,yBACTD,OAAQ,CACN,CACExT,MAAO,6BACPwU,YAAa,oCAEf,CACExU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","sources":["webpack://@egovernments/digit-ui-module-core/webpack/universalModuleDefinition","webpack://@egovernments/digit-ui-module-core/./src/components/Background.js","webpack://@egovernments/digit-ui-module-core/./src/components/ChangeCity.js","webpack://@egovernments/digit-ui-module-core/./src/components/ChangeLanguage.js","webpack://@egovernments/digit-ui-module-core/./src/components/CustomErrorComponent.js","webpack://@egovernments/digit-ui-module-core/./src/components/Dialog/LogoutDialog.js","webpack://@egovernments/digit-ui-module-core/./src/components/DummyLoader.js","webpack://@egovernments/digit-ui-module-core/./src/components/DynamicModuleLoader.js","webpack://@egovernments/digit-ui-module-core/./src/components/ErrorBoundaries.js","webpack://@egovernments/digit-ui-module-core/./src/components/ErrorComponent.js","webpack://@egovernments/digit-ui-module-core/./src/components/Header.js","webpack://@egovernments/digit-ui-module-core/./src/components/RoleBasedEmployeeHome.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/QuickStart/QuickSetup.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/QuickStart/Config.js","webpack://@egovernments/digit-ui-module-core/./src/components/Home.js","webpack://@egovernments/digit-ui-module-core/./src/components/ImageComponent.js","webpack://@egovernments/digit-ui-module-core/./src/components/TopBarSideBar/TopBar.js","webpack://@egovernments/digit-ui-module-core/./src/components/utils.js","webpack://@egovernments/digit-ui-module-core/./src/config/sidebar-menu.js","webpack://@egovernments/digit-ui-module-core/./src/components/TopBarSideBar/SideBar/StaticCitizenSideBar.js","webpack://@egovernments/digit-ui-module-core/./src/components/TopBarSideBar/SideBar/CitizenSideBar.js","webpack://@egovernments/digit-ui-module-core/./src/components/TopBarSideBar/SideBar/EmployeeSideBar.js","webpack://@egovernments/digit-ui-module-core/./src/components/TopBarSideBar/SideBar/index.js","webpack://@egovernments/digit-ui-module-core/./src/components/TopBarSideBar/index.js","webpack://@egovernments/digit-ui-module-core/./src/hoc/withAutoFocusMain.js","webpack://@egovernments/digit-ui-module-core/./src/hooks/useInterval.js","webpack://@egovernments/digit-ui-module-core/./src/hooks/useLoginConfig.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/FAQs/FaqComponent.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/FAQs/FAQs.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Home/LanguageSelection.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Home/LocationSelection.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Home/ImageUpload/UploadDrawer.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Home/IndividualUserProfile.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Home/UserProfile.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Home/index.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/HowItWorks/howItWorks.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Login/SelectOtp.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Login/config.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Login/SelectMobileNumber.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Login/SelectName.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Login/IndividualLogin.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Login/index.js","webpack://@egovernments/digit-ui-module-core/javascript/node_modules/react-hook-form/dist/index.esm.mjs","webpack://@egovernments/digit-ui-module-core/./src/components/Search/SearchFields.js","webpack://@egovernments/digit-ui-module-core/./src/components/Search/MobileSearchApplication.js","webpack://@egovernments/digit-ui-module-core/./src/components/Search/index.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/SearchApp.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/StaticDynamicComponent/StaticDynamicCard.js","webpack://@egovernments/digit-ui-module-core/./src/components/TopBarSideBar/SideBar/CitizenSideNav.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/index.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/ChangePassword/changePassword.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/ChangePassword/config.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/ChangePassword/index.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/ForgotPassword/config.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/ForgotPassword/forgotPassword.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/ForgotPassword/index.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/LanguageSelection/index.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/Login/Carousel/Carousel.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/Login/config.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/Login/ConfigOtp.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/Login/login.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/Login/index.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/Otp/index.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/SignUp/config.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/SignUp/signUp.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/SignUp/index.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/ViewUrl/index.js","webpack://@egovernments/digit-ui-module-core/./src/components/AppModules.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/index.js","webpack://@egovernments/digit-ui-module-core/../node_modules/css-mediaquery/index.js","webpack://@egovernments/digit-ui-module-core/../node_modules/matchmediaquery/index.js","webpack://@egovernments/digit-ui-module-core/../node_modules/prop-types/factoryWithThrowingShims.js","webpack://@egovernments/digit-ui-module-core/../node_modules/prop-types/index.js","webpack://@egovernments/digit-ui-module-core/../node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://@egovernments/digit-ui-module-core/../node_modules/hyphenate-style-name/index.js","webpack://@egovernments/digit-ui-module-core/../node_modules/react-responsive/dist/esm/index.js","webpack://@egovernments/digit-ui-module-core/javascript/node_modules/react-responsive/node_modules/shallow-equal/dist/index.modern.mjs","webpack://@egovernments/digit-ui-module-core/../node_modules/react/cjs/react-jsx-runtime.production.js","webpack://@egovernments/digit-ui-module-core/../node_modules/react/jsx-runtime.js","webpack://@egovernments/digit-ui-module-core/external umd \"@egovernments/digit-ui-components\"","webpack://@egovernments/digit-ui-module-core/external umd \"@egovernments/digit-ui-react-components\"","webpack://@egovernments/digit-ui-module-core/external umd \"@egovernments/digit-ui-svg-components\"","webpack://@egovernments/digit-ui-module-core/external umd \"@tanstack/react-query\"","webpack://@egovernments/digit-ui-module-core/external umd \"React\"","webpack://@egovernments/digit-ui-module-core/external umd \"react-i18next\"","webpack://@egovernments/digit-ui-module-core/external umd \"react-redux\"","webpack://@egovernments/digit-ui-module-core/external umd \"react-router-dom\"","webpack://@egovernments/digit-ui-module-core/external umd \"redux\"","webpack://@egovernments/digit-ui-module-core/external umd \"redux-thunk\"","webpack://@egovernments/digit-ui-module-core/webpack/bootstrap","webpack://@egovernments/digit-ui-module-core/webpack/runtime/compat get default export","webpack://@egovernments/digit-ui-module-core/webpack/runtime/define property getters","webpack://@egovernments/digit-ui-module-core/webpack/runtime/hasOwnProperty shorthand","webpack://@egovernments/digit-ui-module-core/webpack/runtime/make namespace object","webpack://@egovernments/digit-ui-module-core/./src/App.js","webpack://@egovernments/digit-ui-module-core/./src/redux/store.js","webpack://@egovernments/digit-ui-module-core/./src/redux/reducers/index.js","webpack://@egovernments/digit-ui-module-core/./src/components/PrivacyComponent.js","webpack://@egovernments/digit-ui-module-core/./src/components/ForgotOrganizationTooltip.js","webpack://@egovernments/digit-ui-module-core/./src/components/EmployeeSSOLoginOptions.js","webpack://@egovernments/digit-ui-module-core/./src/Module.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/Otp/OtpCustomComponent.js","webpack://@egovernments/digit-ui-module-core/./src/components/LoginSignupSelector.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@egovernments/digit-ui-components\"), require(\"React\"), require(\"react-i18next\"), require(\"@tanstack/react-query\"), require(\"react-redux\"), require(\"react-router-dom\"), require(\"@egovernments/digit-ui-svg-components\"), require(\"@egovernments/digit-ui-react-components\"), require(\"redux\"), require(\"redux-thunk\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@egovernments/digit-ui-components\", \"React\", \"react-i18next\", \"@tanstack/react-query\", \"react-redux\", \"react-router-dom\", \"@egovernments/digit-ui-svg-components\", \"@egovernments/digit-ui-react-components\", \"redux\", \"redux-thunk\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@egovernments/digit-ui-module-core\"] = factory(require(\"@egovernments/digit-ui-components\"), require(\"React\"), require(\"react-i18next\"), require(\"@tanstack/react-query\"), require(\"react-redux\"), require(\"react-router-dom\"), require(\"@egovernments/digit-ui-svg-components\"), require(\"@egovernments/digit-ui-react-components\"), require(\"redux\"), require(\"redux-thunk\"));\n\telse\n\t\troot[\"@egovernments/digit-ui-module-core\"] = factory(root[\"@egovernments/digit-ui-components\"], root[\"React\"], root[\"react-i18next\"], root[\"@tanstack/react-query\"], root[\"react-redux\"], root[\"react-router-dom\"], root[\"@egovernments/digit-ui-svg-components\"], root[\"@egovernments/digit-ui-react-components\"], root[\"redux\"], root[\"redux-thunk\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE__6243__, __WEBPACK_EXTERNAL_MODULE__4883__, __WEBPACK_EXTERNAL_MODULE__5953__, __WEBPACK_EXTERNAL_MODULE__4456__, __WEBPACK_EXTERNAL_MODULE__2148__, __WEBPACK_EXTERNAL_MODULE__4442__, __WEBPACK_EXTERNAL_MODULE__338__, __WEBPACK_EXTERNAL_MODULE__5053__, __WEBPACK_EXTERNAL_MODULE__1954__, __WEBPACK_EXTERNAL_MODULE__2247__) => {\nreturn ","import React from \"react\";\n\nconst Background = ({ children }) => {\n return <div className=\"banner banner-container\">{children}</div>;\n};\n\nexport default Background;\n","import { CardText, Dropdown } from \"@egovernments/digit-ui-components\";\nimport React, { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\n\nconst stringReplaceAll = (str = \"\", searcher = \"\", replaceWith = \"\") => {\n if (searcher == \"\") return str;\n while (str?.includes(searcher)) {\n str = str?.replace(searcher, replaceWith);\n }\n return str;\n};\n\nconst ChangeCity = (prop) => {\n const [dropDownData, setDropDownData] = useState(null);\n const [selectCityData, setSelectCityData] = useState([]);\n const [selectedCity, setSelectedCity] = useState([]); \n const navigate = useNavigate();\n const isDropdown = prop.dropdown || false;\n let selectedCities = [];\n const isMultiRootTenant = Digit.Utils.getMultiRootTenant();\n\n const handleChangeCity = (city) => {\n const loggedInData = Digit.SessionStorage.get(\"citizen.userRequestObject\");\n const filteredRoles = Digit.SessionStorage.get(\"citizen.userRequestObject\")?.info?.roles?.filter((role) => role.tenantId === city.value);\n if (filteredRoles?.length > 0) {\n loggedInData.info.roles = filteredRoles;\n loggedInData.info.tenantId = city?.value;\n }\n Digit.SessionStorage.set(\"Employee.tenantId\", city?.value);\n Digit.UserService.setUser(loggedInData);\n setDropDownData(city);\n if (typeof window !== 'undefined' && window.location?.href?.includes(`/${window?.contextPath}/employee/`)) {\n const redirectPath = location.state?.from || `/${window?.contextPath}/employee`;\n navigate(redirectPath, { replace: true });\n }\n // Safe reload with error handling\n try {\n if (typeof window !== 'undefined') {\n window.location.reload();\n }\n } catch (error) {\n console.warn('Failed to reload page:', error);\n }\n };\n\n useEffect(() => {\n const userloggedValues = Digit.SessionStorage.get(\"citizen.userRequestObject\");\n let teantsArray = [],\n filteredArray = [];\n userloggedValues?.info?.roles?.forEach((role) => teantsArray.push(role.tenantId));\n let unique = teantsArray.filter((item, i, ar) => ar.indexOf(item) === i);\n unique?.forEach((uniCode) => {\n filteredArray.push({\n label: `TENANT_TENANTS_${stringReplaceAll(uniCode, \".\", \"_\")?.toUpperCase()}`,\n value: uniCode,\n });\n });\n selectedCities = filteredArray?.filter((select) => select.value == Digit.SessionStorage.get(\"Employee.tenantId\"));\n setSelectCityData(filteredArray);\n }, [dropDownData]);\n\n // if (isDropdown) {\n return (\n <div style={prop?.mobileView ? { color: \"#767676\" } : {}}>\n {\n (isMultiRootTenant && selectCityData.length==1) ? \n <CardText style={{color:\"#363636\"}}>{selectCityData?.[0]?.value}</CardText>\n :\n <Dropdown\n t={prop?.t}\n option={selectCityData}\n selected={selectCityData.find((cityValue) => cityValue.value === dropDownData?.value)}\n optionKey={\"label\"}\n select={handleChangeCity}\n freeze={true}\n customSelector={\n <label className=\"cp\">\n {prop?.t(`TENANT_TENANTS_${stringReplaceAll(Digit.SessionStorage.get(\"Employee.tenantId\"), \".\", \"_\")?.toUpperCase()}`)}\n </label>\n }\n />\n}\n </div>\n );\n // } else {\n // return (\n // <React.Fragment>\n // <div style={{ marginBottom: \"5px\" }}>City</div>\n // <div className=\"language-selector\" style={{display: \"flex\", flexWrap: \"wrap\"}}>\n // {selectCityData?.map((city, index) => (\n // <div className=\"language-button-container\" key={index}>\n // <CustomButton\n // selected={city.value === Digit.SessionStorage.get(\"Employee.tenantId\")}\n // text={city.label}\n // onClick={() => handleChangeCity(city)}\n // ></CustomButton>\n // </div>\n // ))}\n // </div>\n // </React.Fragment>\n // );\n // }\n};\n\nexport default ChangeCity;\n","import { Button, Dropdown } from \"@egovernments/digit-ui-components\";\nimport React, { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nconst ChangeLanguage = (prop) => {\n const isDropdown = prop.dropdown || false;\n const { data: storeData, isLoading } = Digit.Hooks.useStore.getInitData();\n const { languages, stateInfo } = storeData || {};\n const { t } = useTranslation();\n const selectedLanguage = Digit.StoreData.getCurrentLanguage();\n const [selected, setselected] = useState(selectedLanguage);\n const handleChangeLanguage = (language) => {\n setselected(language.value);\n Digit.LocalizationService.changeLanguage(language.value, stateInfo.code);\n };\n\n if (isLoading) return null;\n\n if (isDropdown) {\n return (\n <div>\n <Dropdown\n className={\"language-dropdown\"}\n option={languages}\n selected={languages?.find((language) => language?.value === selectedLanguage)}\n optionKey={\"label\"}\n select={handleChangeLanguage}\n freeze={true}\n customSelector={<label className=\"cp\">{t(languages?.find((language) => language?.value === selected)?.label)}</label>}\n />\n </div>\n );\n } else {\n return (\n <React.Fragment>\n <div style={{ marginBottom: \"5px\" }}>Language</div>\n <div className=\"language-selector\">\n {languages.map((language, index) => (\n <div className=\"language-button-container\" key={index}>\n <Button\n label={language.label}\n onClick={() => handleChangeLanguage(language)}\n variation={language.value === selected ? \"primary\" : \"\"}\n />\n </div>\n ))}\n </div>\n </React.Fragment>\n );\n }\n};\n\nexport default ChangeLanguage;\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport Background from \"./Background\";\nimport { Button, Card, CardHeader, CardText } from \"@egovernments/digit-ui-components\";\nimport Header from \"./Header\";\n\nconst CustomErrorComponent = (props) => {\n const { state = {} } = useLocation();\n // const module = state?.module;\n const { t } = useTranslation();\n const stateInfo = props.stateInfo;\n\n const navigate = useNavigate();\n const ModuleBasedErrorConfig = {\n sandbox: {\n imgUrl: `https://s3.ap-south-1.amazonaws.com/egov-qa-assets/error-image.png`,\n infoHeader: \"WRONG_TENANT_SIGN_UP\",\n infoMessage: \"WRONG_TENANT_SIGN_UP_MESSAGE\",\n buttonInfo: \"WRONG_TENANT_SIGN_UP_BUTTON\",\n action: () => {\n navigate(`/${window.globalPath}/`);\n },\n },\n };\n const config = ModuleBasedErrorConfig[\"sandbox\"];\n\n return (\n <Background>\n <Card className={`digit-employee-card customError`}>\n <Header showTenant={false} />\n <CardHeader className={\"center\"}>{t(config.infoHeader)}</CardHeader>\n <CardText className={\"center\"}>{t(config.infoMessage)}</CardText>\n <Button\n className=\"customErrorButton\"\n label={t(config?.buttonInfo)}\n variation={\"primary\"}\n isSuffix={true}\n onClick={(e) => {\n e.preventDefault();\n config?.action();\n }}\n />\n </Card>\n </Background>\n );\n};\n\nexport default CustomErrorComponent;\n","import { CardText, PopUp, Button } from \"@egovernments/digit-ui-components\";\nimport React from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nconst LogoutDialog = ({ onSelect, onCancel, onDismiss, PopupStyles, isDisabled, hideSubmit }) => {\n const { t } = useTranslation();\n\n const children = [\n <div>\n <CardText>\n {t(\"CORE_LOGOUT_WEB_CONFIRMATION_MESSAGE\") + \" \"}\n <strong>{t(\"CORE_LOGOUT_MESSAGE\")}</strong>\n </CardText>\n </div>,\n ];\n\n const footer = [\n <Button\n type={\"button\"}\n size={\"large\"}\n variation={\"secondary\"}\n label={t(\"CORE_LOGOUT_CANCEL\")}\n className={\"logout-cancel-button\"}\n onClick={onCancel}\n />,\n <Button\n type={\"button\"}\n size={\"large\"}\n variation={\"primary\"}\n label={t(\"CORE_LOGOUT_WEB_YES\")}\n formId={\"modal-action\"}\n onClick={onSelect}\n isDisabled={isDisabled}\n />\n ];\n\n const footerWithoutSubmit = [\n <Button\n type={\"button\"}\n size={\"large\"}\n variation={\"digit-action-cancel\"}\n label={t(\"CORE_LOGOUT_CANCEL\")}\n className={\"logout-cancel-button\"}\n onClick={onCancel}\n />,\n ];\n\n return (\n <PopUp\n type=\"default\"\n children={children}\n heading={t(\"CORE_LOGOUT_WEB_HEADER\")}\n footerChildren={hideSubmit ? footerWithoutSubmit : footer}\n sortFooterButtons={true}\n onClose={onDismiss}\n className={\"digit-logout-popup-wrapper\"}\n onOverlayClick={onDismiss}\n equalWidthButtons={true}\n style={PopupStyles}\n ></PopUp>\n );\n};\nexport default LogoutDialog;","import React, {useRef, useEffect, useState } from \"react\";\nimport { CheckCircle } from \"@egovernments/digit-ui-svg-components\";\nimport { useNavigate, useLocation } from \"react-router-dom\";\nimport { useTranslation } from \"react-i18next\";\n\nconst DummyLoaderScreen = () => {\n const [currentStep, setCurrentStep] = useState(0);\n const navigate = useNavigate();\n const location = useLocation();\n const { t } = useTranslation();\n const { tenant } = location.state || {};\n const steps = [\n \"SANDBOX_GUIDE_SETUP_ACCOUNT\",\n \"SANDBOX_GUIDE_DEFAULT_MASTER_DATA\",\n \"SANDBOX_GUIDE_CONFIGURING_COMPLAINTS\",\n \"SANDBOX_GUIDE_CONFIGURING_EMPLOYEE_MANAGEMENT\",\n \"SANDBOX_GUIDE_SETTING_UP_CITIZEN_PORTAL\",\n \"SANDBOX_GUIDE_SETTING_UP_EMPLOYEE_PORTAL\",\n \"SANDBOX_GUIDE_LOADING_CONFIGURATION_INTERFACE\",\n \"SANDBOX_GUIDE_CREATING_DASHBOARD\",\n \"SANDBOX_GUIDE_ALL_SETUP_DONE\",\n ];\n useEffect(() => {\n const stepInterval = setInterval(() => {\n if (currentStep < steps.length) {\n setCurrentStep((prev) => prev + 1);\n }\n }, 2000); // 1 second delay for each step\n\n if (currentStep === steps.length) {\n clearInterval(stepInterval); // Clear the interval to stop further updates\n const globalPath = typeof window !== 'undefined' ? window?.globalPath : '';\n\n const navigateTimeout = setTimeout(() => {\n if (roleForLandingPage(getUserRoles, MdmsRes)) {\n navigate({\n pathname: `/${window?.globalPath}/${tenant}${RoleLandingUrl}`,\n state: { tenant: tenant },\n });\n\n } else {\n navigate({\n pathname: `/${window?.globalPath}/${tenant}/employee`,\n state: { tenant: tenant },\n });\n }\n }, 1000);\n\n return () => clearTimeout(navigateTimeout); // Cleanup timeout\n }\n\n return () => {\n clearInterval(stepInterval);\n };\n }, [currentStep]);\n\n const ref = useRef(null);\n const getUserRoles = Digit.SessionStorage.get(\"User\")?.info?.roles;\n const [buttonDisabled, setButtonDisabled] = useState(true);\n const { data: MdmsRes } = Digit.Hooks.useCustomMDMS(\n tenant,\n \"SandBoxLanding\",\n [\n {\n name: \"LandingPageRoles\",\n },\n ],\n {\n enabled: true,\n staleTime: 0,\n cacheTime: 0,\n select: (data) => {\n return data?.[\"SandBoxLanding\"]?.[\"LandingPageRoles\"];\n },\n }\n );\n\n useEffect(() => {\n if (MdmsRes?.[0].url) {\n setButtonDisabled(false);\n }\n }, [MdmsRes]);\n\n const RoleLandingUrl = MdmsRes?.[0].url;\n\n const roleForLandingPage = (getUserRoles, MdmsRes) => {\n const userRole = getUserRoles?.[0]?.code;\n return userRole === \"SUPERUSER\" && MdmsRes.some((page) => page.rolesForLandingPage.includes(\"SUPERUSER\"));\n };\n\n const onButtonClick = () => {\n if (roleForLandingPage(getUserRoles, MdmsRes)) {\n window.location.href = `/${window?.globalPath}/${tenant}${RoleLandingUrl}`;\n } else {\n window.location.href = `/${window?.globalPath}/${tenant}/employee`;\n }\n };\n\n return (\n <div className=\"sandbox-loader-screen\">\n <div className=\"sandbox-loader\"></div>\n <ul className=\"sandbox-installation-steps\">\n {steps.map((step, index) => (\n <li key={index} className={`sandbox-step ${index < currentStep ? \"sandbox-visible\" : \"\"}`}>\n <span className=\"sandbox-step-text\">{t(step)}</span>\n {index < currentStep && <CheckCircle fill=\"#00703C\" />}\n </li>\n ))}\n </ul>\n </div>\n );\n};\n\nexport default DummyLoaderScreen;\n","import React, { useState, useEffect } from \"react\";\nimport { Navigate } from \"react-router-dom\";\nimport { Loader } from \"@egovernments/digit-ui-components\";\nimport { useTranslation } from \"react-i18next\";\n\n/**\n * DynamicModuleLoader handles loading of modules from the ComponentRegistryService\n * with loading states, retries, and graceful error handling\n */\nconst DynamicModuleLoader = ({ \n moduleCode, \n stateCode, \n userType, \n tenants, \n maxRetries = 5, \n retryDelay = 1500,\n initialDelay = 100 // Initial delay before first check to allow modules to register\n}) => {\n const [moduleState, setModuleState] = useState({\n module: null,\n loading: true,\n error: null,\n retryCount: 0,\n initialDelayComplete: false\n });\n const { t } = useTranslation();\n\n useEffect(() => {\n let retryTimeout;\n let initialTimeout;\n\n const loadModule = async () => {\n try {\n // Check if module is available in ComponentRegistryService\n const Module = Digit.ComponentRegistryService.getComponent(`${moduleCode}Module`);\n \n if (Module) {\n setModuleState({\n module: Module,\n loading: false,\n error: null,\n retryCount: 0,\n initialDelayComplete: true\n });\n } else {\n // Module not found, check if we should retry\n if (moduleState.retryCount < maxRetries) {\n setModuleState(prev => ({\n ...prev,\n retryCount: prev.retryCount + 1\n }));\n \n // Retry after delay (exponential backoff)\n const delay = retryDelay * Math.pow(1.5, moduleState.retryCount);\n retryTimeout = setTimeout(() => {\n loadModule();\n }, delay);\n } else {\n // Max retries reached\n setModuleState({\n module: null,\n loading: false,\n error: `Module \"${moduleCode}\" not found after ${maxRetries} attempts`,\n retryCount: moduleState.retryCount,\n initialDelayComplete: true\n });\n }\n }\n } catch (error) {\n console.error(`Error loading module ${moduleCode}:`, error);\n setModuleState({\n module: null,\n loading: false,\n error: error.message,\n retryCount: moduleState.retryCount,\n initialDelayComplete: true\n });\n }\n };\n\n // Start with initial delay to allow modules to register\n if (!moduleState.initialDelayComplete) {\n initialTimeout = setTimeout(() => {\n setModuleState(prev => ({ ...prev, initialDelayComplete: true }));\n loadModule();\n }, initialDelay);\n } else {\n loadModule();\n }\n\n // Cleanup timeouts on unmount\n return () => {\n if (retryTimeout) {\n clearTimeout(retryTimeout);\n }\n if (initialTimeout) {\n clearTimeout(initialTimeout);\n }\n };\n }, [moduleCode, moduleState.retryCount, moduleState.initialDelayComplete, maxRetries, retryDelay, initialDelay]);\n\n // Show loading state\n if (moduleState.loading) {\n const loadingText = !moduleState.initialDelayComplete\n ? t(\"CORE_INITIALIZING_MODULE\", { moduleCode, defaultValue: \"Initializing {{moduleCode}} module...\" })\n : t(\"CORE_LOADING_MODULE\", { moduleCode, defaultValue: \"Loading {{moduleCode}} module...\" });\n\n return (\n <div className=\"module-loading-container\">\n <Loader \n page={true} \n variant=\"PageLoader\" \n loaderText={loadingText}\n />\n {moduleState.retryCount > 0 && moduleState.initialDelayComplete && (\n <div className=\"retry-info\" style={{ textAlign: 'center', marginTop: '1rem', color: '#666' }}>\n {t(\"CORE_MODULE_RETRY_ATTEMPT\", { retryCount: moduleState.retryCount, maxRetries, defaultValue: \"Retry attempt {{retryCount}}/{{maxRetries}}\" })}\n </div>\n )}\n </div>\n );\n }\n\n // Show error state and redirect\n if (moduleState.error || !moduleState.module) {\n console.warn(`Module loading failed for ${moduleCode}:`, moduleState.error);\n return (\n <Navigate\n to={`/${window?.contextPath}/employee/user/error?type=notfound&module=${moduleCode}&reason=${encodeURIComponent(moduleState.error || 'Module not found')}`}\n replace\n />\n );\n }\n\n // Render the loaded module\n const Module = moduleState.module;\n return (\n <Module \n stateCode={stateCode} \n moduleCode={moduleCode} \n userType={userType} \n tenants={tenants} \n />\n );\n};\n\nexport default DynamicModuleLoader;","import React from \"react\";\nimport ErrorComponent from \"./ErrorComponent\";\n\nconst Redircter = () => {\n // Add safety checks for window object\n if (typeof window === 'undefined') {\n return <span></span>;\n }\n\n try {\n const contextPath = window?.contextPath || '';\n const userType = Digit.UserService.getType();\n const path = userType === \"employee\" \n ? `/${contextPath}/employee/user/error` \n : `/${contextPath}/citizen/error`;\n \n const currentHref = window.location.href;\n \n // Check if we're already on an error page or in development\n if (\n currentHref.includes(\"employee/user/error\") ||\n currentHref.includes(\"citizen/error\") ||\n process.env.NODE_ENV === \"development\"\n ) {\n // Do nothing - already on error page or in development\n return <span></span>;\n }\n \n // Safe navigation with error handling\n try {\n window.location.href = path;\n } catch (navigationError) {\n console.warn('Navigation failed in error boundary:', navigationError);\n // Fallback: try using replace instead\n try {\n window.location.replace(path);\n } catch (replaceError) {\n console.error('Both href and replace failed:', replaceError);\n }\n }\n } catch (error) {\n console.error('Error in Redircter component:', error);\n }\n\n return <span></span>;\n};\n\nclass ErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = { error: null, errorStack: null, hasError: false, module: null, action: null, info: null };\n }\n\n static getDerivedStateFromError(error) {\n // Update state so the next render will show the fallback UI.\n return { error: error?.message, hasError: true, errorStack: error?.stack, module: error?.module, action: error?.action, info: error?.info };\n }\n\n componentDidCatch(error, errorInfo) {\n // Catch errors in any components below and re-render with error message\n this.setState({ \n error: error?.message, \n hasError: true, \n errorStack: error?.stack,\n module: error?.module,\n action: error?.action,\n info: errorInfo\n });\n \n // Enhanced error logging with safety checks\n try {\n // Log to console in development\n if (process.env.NODE_ENV === 'development') {\n console.group('🚨 Error Boundary Caught Error');\n console.error('Error:', error);\n console.error('Error Info:', errorInfo);\n console.error('Component Stack:', errorInfo?.componentStack);\n console.groupEnd();\n }\n \n // You can also log error messages to an error reporting service here\n // Example: errorReportingService.captureException(error, { extra: errorInfo });\n \n } catch (loggingError) {\n console.warn('Failed to log error in ErrorBoundary:', loggingError);\n }\n }\n\n render() {\n if (this.state.hasError) {\n // (\"UI-errorInfo\", this.state?.errorStack);\n // (\"UI-component-details\", this.props);\n // You can render any custom fallback UI\n return (\n <div className=\"error-boundary\">\n <Redircter />\n <ErrorComponent initData={this.props.initData} errorData={this.state} goToHome={() => {\n window.location.href = `/${window?.contextPath}/${Digit?.UserService?.getType?.()}`; // Use navigate\n }}/>\n\n {/* <summary>Something went wrong</summary>\n <details style={{ whiteSpace: \"pre-wrap\" }}>\n {this.state?.errorStack && this.state.errorStack.toString().substring(0, 600)}\n {this.state?.error}\n </details> */}\n </div>\n );\n }\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport ImageComponent from \"./ImageComponent\";\n\nconst ErrorConfig = {\n error: {\n imgUrl: `https://digit-ui-assets.s3.ap-south-1.amazonaws.com/error-image.png`,\n infoMessage: \"CORE_SOMETHING_WENT_WRONG\",\n buttonInfo: \"ACTION_TEST_HOME\",\n },\n maintenance: {\n imgUrl: `https://digit-ui-assets.s3.ap-south-1.amazonaws.com/maintainence-image.png`,\n infoMessage: \"CORE_UNDER_MAINTENANCE\",\n buttonInfo: \"ACTION_TEST_HOME\",\n },\n notfound: {\n imgUrl: `https://digit-ui-assets.s3.ap-south-1.amazonaws.com/PageNotFound.png`,\n infoMessage: \"MODULE_NOT_FOUND\",\n buttonInfo: \"ACTION_TEST_HOME\",\n },\n};\n\nconst ModuleBasedErrorConfig = {\n sandbox: {\n imgUrl: `https://digit-ui-assets.s3.ap-south-1.amazonaws.com/error-image.png`,\n infoMessage: \"WRONG_TENANT_SIGN_UP\",\n buttonInfo: \"CREATE_TENANT_ERROR_BUTTON\",\n },\n};\n\nconst ErrorComponent = (props) => {\n const { type = \"error\" } = Digit.Hooks.useQueryParams();\n const module = props?.errorData?.module;\n const { t } = useTranslation();\n const config = module ? ModuleBasedErrorConfig[module] : ErrorConfig[type];\n const stateInfo = props.stateInfo;\n\n return (\n <div className=\"error-boundary\">\n <div className=\"error-container\">\n <ImageComponent src={config.imgUrl} alt=\"error\" />\n <h1>{t(config.infoMessage)}</h1>\n <button\n onClick={() => {\n module ? props?.errorData?.action() : props?.goToHome?.();\n }}\n >\n {t(config.buttonInfo)}\n </button>\n </div>\n </div>\n );\n};\n\nexport default ErrorComponent;\n","import { Loader } from \"@egovernments/digit-ui-components\";\nimport React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport ImageComponent from \"./ImageComponent\";\n\nconst Header = ({ showTenant = true }) => {\n const { data: storeData, isLoading } = Digit.Hooks.useStore.getInitData();\n const { stateInfo } = storeData || {};\n const { t } = useTranslation();\n\n if (isLoading) return <Loader />;\n\n //If HEADER_SVG config exists, return the custom block\n const headerSvgSecondaryUrl = window?.globalConfigs?.getConfig(\"SVG_HEADER_SECONDARY_LOGO_URL\");\n if (headerSvgSecondaryUrl) {\n return (\n <div className=\"bannerHeader secondaryBannerHeader\">\n <ImageComponent\n className=\"bannerLogo\"\n src={stateInfo?.logoUrl}\n style={!showTenant ? { borderRight: \"unset\" } : {}}\n alt=\"Digit Banner\"\n />\n <span style={{fontSize: \"xx-large\"}}>|</span>\n <ImageComponent\n className=\"svgHeaderLogo\"\n src={headerSvgSecondaryUrl}\n alt=\"DIGIT Logo\"\n />\n </div>\n );\n }\n\n // Default logic\n return (\n <div className=\"bannerHeader\">\n <ImageComponent\n className=\"bannerLogo\"\n src={stateInfo?.logoUrl}\n style={!showTenant ? { borderRight: \"unset\" } : {}}\n alt=\"Digit Banner\"\n />\n {showTenant && stateInfo?.code && (\n <p>{t(`TENANT_TENANTS_${stateInfo?.code?.toUpperCase()}`)}</p>\n )}\n </div>\n );\n};\n\nexport default Header;","import React, { Fragment, useState, useEffect } from \"react\";\nimport { Button, LandingPageCard, LandingPageWrapper } from \"@egovernments/digit-ui-components\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Loader } from \"@egovernments/digit-ui-components\";\n\n\nimport { CustomSVG } from \"@egovernments/digit-ui-components\";\nconst Components = require(\"@egovernments/digit-ui-svg-components\");\n\nexport const RoleBasedEmployeeHome = ({ modules, additionalComponent }) => {\n const { isLoading, data } = Digit.Hooks.useAccessControl();\n const isMultiRootTenant = Digit.Utils.getMultiRootTenant();\n const { t } = useTranslation();\n const navigate= useNavigate();\n const tenantId = Digit?.ULBService?.getStateId();\n let sortedConfigEmployeesSidebar = null;\n const [mdmsOrderData, setMdmsOrderData] = useState([{}]);\n\n const { data: MdmsRes } = Digit.Hooks.useCustomMDMS(\n tenantId,\n \"HomeScreenOrder\",\n [\n {\n name: \"CardsAndLinksOrder\",\n },\n ],\n {\n select: (data) => {\n return data?.[\"HomeScreenOrder\"]?.[\"CardsAndLinksOrder\"];\n },\n }\n );\n\n\n\n const { data: moduleConfigData, isLoading: isModuleConfigLoading } = Digit.Hooks.useCustomMDMS(\n tenantId,\n \"SandBoxLanding\",\n [\n {\n name: \"AdditionalModuleLinks\",\n },\n ],\n {\n \n select: (data) => {\n return data?.[\"SandBoxLanding\"]?.[\"AdditionalModuleLinks\"];\n },\n }\n );\n \n useEffect(() => {\n setMdmsOrderData(MdmsRes);\n }, [MdmsRes]);\n\n const transformURL = (url = \"\") => {\n if (url == \"/\") {\n return;\n }\n if (url?.indexOf(`/${window?.contextPath}`) === -1) {\n let updatedUrl = null;\n if (isMultiRootTenant) {\n url = url.replace(\"/sandbox-ui/employee\", `/sandbox-ui/${tenantId}/employee`);\n updatedUrl = url;\n } else {\n updatedUrl = url;\n }\n return updatedUrl;\n } else {\n return url;\n }\n };\n\n const getLinkByType = (moduleData, type) => {\n if (!moduleData || !type) return null;\n const moduleConfig = moduleConfigData?.find((config) => config.moduleName === moduleData.module);\n const linkKey = moduleConfig?.[type];\n const links = moduleData?.links;\n return links?.find((item) => item?.displayName === linkKey) || null;\n };\n\n // Function to filter links dynamically based on module config\n const getFilteredLinks = (moduleData) => {\n const moduleConfig = moduleConfigData?.find((config) => config.moduleName === moduleData.module);\n return moduleData?.links?.filter((item) => {\n const displayName = item.displayName;\n const isNotConfigureMaster = displayName !== \"Configure_master\";\n const isNotHowItWorks = displayName !== moduleConfig?.howItWorksLink;\n const isNotUserManual = displayName !== moduleConfig?.userManualLink;\n\n return isNotConfigureMaster && isNotHowItWorks && isNotUserManual;\n });\n };\n\n const configEmployeeSideBar = data?.actions\n .filter((e) => e.url === \"card\" && e.parentModule)\n .reduce((acc, item) => {\n const module = item.parentModule;\n if (!acc[module]) {\n acc[module] = {\n module: module,\n kpis: [],\n icon: item.leftIcon ? Digit.Utils.iconRender({iconName: item.leftIcon, iconFill: \"white\",CustomSVG,Components}) : \"\",\n label: Digit.Utils.locale.getTransformedLocale(`${module}_CARD_HEADER`),\n links: [],\n };\n }\n const linkUrl = transformURL(item.navigationURL);\n const queryParamIndex = linkUrl.indexOf(\"?\");\n acc[module].links.push({\n link: linkUrl,\n icon: item.leftIcon,\n queryParams: queryParamIndex === -1 ? null : linkUrl.substring(queryParamIndex),\n label: t(Digit.Utils.locale.getTransformedLocale(`${module}_LINK_${item.displayName}`)),\n displayName: item.displayName,\n });\n return acc;\n }, {});\n\n if (isLoading) {\n return <Loader page={false} variant={\"PageLoader\"} />;\n }\n\n if (!configEmployeeSideBar) {\n return \"\";\n }\n\n const sortCardAndLink = (configEmployeeSideBar) => {\n const sortedModules = Object.keys(configEmployeeSideBar)\n .sort((a, b) => {\n const cardOrderA = mdmsOrderData?.find((item) => item.moduleType === \"card\" && item.name === a)?.order || null;\n const cardOrderB = mdmsOrderData?.find((item) => item.moduleType === \"card\" && item.name === b)?.order || null;\n return cardOrderA - cardOrderB;\n })\n .reduce((acc, module) => {\n const sortedLinks = configEmployeeSideBar?.[module]?.links?.sort((linkA, linkB) => {\n const labelA = linkA?.displayName;\n const labelB = linkB?.displayName;\n const orderA =\n mdmsOrderData?.find((item) => item.moduleType === \"link\" && item.name === `${module}.${labelA.replace(/\\s+/g, \"_\")}`)?.order || null;\n const orderB =\n mdmsOrderData?.find((item) => item.moduleType === \"link\" && item.name === `${module}.${labelB.replace(/\\s+/g, \"_\")}`)?.order || null;\n\n return orderA - orderB;\n });\n\n acc[module] = {\n ...configEmployeeSideBar[module],\n links: sortedLinks,\n };\n\n return acc;\n }, {});\n\n return sortedModules;\n };\n\n if (isMultiRootTenant) {\n sortedConfigEmployeesSidebar = sortCardAndLink(configEmployeeSideBar);\n } else {\n sortedConfigEmployeesSidebar = configEmployeeSideBar;\n }\n\n const children = Object.keys(sortedConfigEmployeesSidebar)?.map((current, index) => {\n const moduleData = sortedConfigEmployeesSidebar?.[current];\n const configureData = moduleData?.links?.find((item) => item?.displayName === \"Configure_master\");\n const howItWorks = getLinkByType(moduleData, \"howItWorksLink\");\n const userManual = getLinkByType(moduleData, \"userManualLink\");\n\n const propsForModuleCard = {\n icon: \"SupervisorAccount\",\n moduleName: t(moduleData?.label),\n metrics: [],\n links: Digit.Utils.getMultiRootTenant() ? getFilteredLinks(moduleData) : moduleData?.links,\n centreChildren: [\n <div>{t(Digit.Utils.locale.getTransformedLocale(`MODULE_CARD_DESC_${current}`))}</div>,\n howItWorks && (\n <Button\n variation=\"teritiary\"\n label={howItWorks?.label}\n icon={howItWorks?.icon}\n type=\"button\"\n size={\"medium\"}\n onClick={() => window.open(howItWorks?.link, \"_blank\")}\n style={{ padding: \"0px\" }}\n />\n ),\n ],\n endChildren: Digit.Utils.getMultiRootTenant()\n ? [\n configureData && (\n <Button\n variation=\"teritiary\"\n label={configureData?.label}\n icon={configureData?.icon}\n type=\"button\"\n size={\"medium\"}\n onClick={() => navigate(configureData?.link)}\n style={{ padding: \"0px\" }}\n />\n ),\n userManual && (\n <Button\n variation=\"teritiary\"\n label={userManual?.label}\n icon={userManual?.icon}\n type=\"button\"\n size={\"medium\"}\n onClick={() => window.open(userManual?.link, \"_blank\")}\n style={{ padding: \"0px\" }}\n />\n ),\n ]\n : null,\n };\n\n return <LandingPageCard buttonSize={\"medium\"} {...propsForModuleCard} />;\n });\n\n return (\n <>\n <LandingPageWrapper>{React.Children.map(children, (child) => React.cloneElement(child))}</LandingPageWrapper>\n </>\n );\n};","import React from \"react\";\nimport{ useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { CardText, CardHeader, LinkLabel, Card, Button } from \"@egovernments/digit-ui-components\";\nimport { ArrowForward } from \"@egovernments/digit-ui-svg-components\";\nimport { CardSubHeader, CardSectionHeader, BreakLine, CardSectionSubText } from \"@egovernments/digit-ui-react-components\";\n\nconst FaqComponent = (props) => {\n const { question,isLabelLink, answer,type,actions,content, lastIndex } = props;\n const [isOpen, toggleOpen] = useState(false);\n const { t } = useTranslation();\n const tenantId = Digit.ULBService.getStateId();\n const ListTag = type === \"number\" ? \"ol\" : \"ul\";\n return (\n <div className=\"faqs border-none\" onClick={() => toggleOpen(!isOpen)}>\n <div className=\"faq-question\" style={{ justifyContent: \"space-between\", display: \"flex\" }}>\n <span>{t(question)}</span>\n <span className={isOpen ? \"faqicon rotate\" : \"faqicon\"} style={{ float: \"right\" }}>\n <ArrowForward />\n </span>\n </div>\n <div className=\"faq-answer\" style={isOpen ? { display: \"block\" } : { display: \"none\" }}>\n <CardSectionSubText style={{ marginTop: \"1rem\" }}>{t(content)}</CardSectionSubText>\n <div style={{ marginTop: \"1rem\" }}>\n {actions && (\n <ListTag>\n {actions.map((action, index) => (\n <li key={index} style={{ listStyleType: ListTag === \"ul\" ? \"disc\" : \"auto\", margin: \"8px 0\" }}>\n {isLabelLink ? (\n action?.label ? (\n <Button\n variation=\"teritiary\"\n label={t(action?.label)} \n type=\"button\"\n size={\"medium\"}\n onClick={() => {\n if (action?.fulllink) {\n window.open(action?.link, \"_blank\");\n } else {\n const baseURL = `https://${window.location.hostname}/${window?.globalPath}/${tenantId}`;\n window.open(`${baseURL}/${action?.link}`, \"_blank\");\n }\n }}\n style={{ padding: \"0px\" }}\n />\n ) : null\n ) : (\n action?.label ? <strong>{t(action?.label)}:</strong> : null\n )} \n {t(action?.description)}\n </li>\n ))}\n </ListTag>\n )}\n </div>\n </div>\n {!lastIndex ? <div className=\"cs-box-border\" /> : null}\n </div>\n );\n};\n\nconst CardC = ({ type, title, content, actions, style }) => {\n const { t } = useTranslation();\n const ListTag = type === \"number\" ? \"ol\" : \"ul\";\n return (\n <div>\n {/* <div style={{ border: \"1px solid #ccc\", borderRadius: \"8px\", padding: \"16px\", margin: \"16px\", ...style }}> */}\n <CardSectionHeader>{t(title)}</CardSectionHeader>\n <CardSectionSubText style={{ marginTop: \"1rem\" }}>{t(content)}</CardSectionSubText>\n <div style={{ marginTop: \"1rem\" }}>\n {actions && (\n <ListTag>\n {actions.map((action, index) => (\n <li key={index} style={{ listStyleType: ListTag === \"ul\" ? \"disc\" : \"auto\", margin: \"8px 0\" }}>\n {action?.label ? <strong>{t(action?.label)}:</strong> : null} {t(action?.description)}\n </li>\n ))}\n </ListTag>\n )}\n </div>\n </div>\n );\n};\n\nconst FAQ = ({ key, title, content, faqs ,type}) => {\n const { t } = useTranslation();\n return (\n <div style={{ width: \"100%\" }}>\n <div style={{ width: \"100%\" }}>\n {faqs.map((faq, i) => (\n <FaqComponent key={\"faq_\" + i} question={faq.question} answer={faq.answer} isLabelLink={faq.isLabelLink} type ={type} actions={faq.answer} content ={faq.content}lastIndex={i === faqs?.length - 1} />\n ))}\n </div>\n </div>\n );\n};\nconst QuickSetup = ({ cardConfig }) => {\n const { t } = useTranslation();\n\n const moduleFaqs = [\n {\n question: \"SANDBOX_FAQ_QUES_ONE\",\n answer: \"SANDBOX_FAQ_ANS_ONE\",\n },\n {\n question: \"SANDBOX_FAQ_QUES_TWO\",\n answer: \"SANDBOX_FAQ_ANS_TWO\",\n },\n {\n question: \"SANDBOX_FAQ_QUES_THREE\",\n answer: \"SANDBOX_FAQ_ANS_THREE\",\n },\n {\n question: \"SANDBOX_FAQ_QUES_FOUR\",\n answer: \"SANDBOX_FAQ_ANS_FOUR\",\n },\n ];\n return (\n <Card className={\"sandbox-guide\"} style={{ width: \"25rem\", height: \"47rem\", overflowY: \"scroll\" }}>\n {/* <Card style={{ height: \"47rem\", overflowY: \"scroll\" }}> */}\n <CardHeader>{t(\"GUIDE_TO_SETUP\")}</CardHeader>\n <div style={{ display: \"flex\", flexWrap: \"wrap\" }}>\n {cardConfig.map((config, index) => {\n return config?.type === \"faqs\" ? (\n <FAQ key={config.id} title={config.title} type = {config?.type} content={config.content} faqs={config.actions} />\n ) : (\n <React.Fragment>\n <CardC\n type={config?.type}\n key={config.id}\n title={config.title}\n content={config.content}\n actions={config.actions}\n style={config.style}\n />\n {index !== cardConfig?.length - 1 && <BreakLine style={{ width: \"100%\", border: \"1px solid #d6d5d4\" }} />}\n </React.Fragment>\n );\n })}\n </div>\n </Card>\n );\n};\n\nexport default QuickSetup;","import React, { Fragment, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { CardText, CardLabelError, Toast, CardLabel, Card, CardHeader, LinkLabel, Loader } from \"@egovernments/digit-ui-components\";\nimport QuickSetupComponent from \".\";\nimport QuickSetup from \"./QuickSetup\";\n\nconst QuickSetupConfigComponent = ({ onSelect, formData, control, formState, ...props }) => {\n const { t } = useTranslation();\n const { isLoading, data } = Digit.Hooks.useAccessControl();\n const isMultiRootTenant = Digit.Utils.getMultiRootTenant();\n const tenantId = Digit.ULBService.getStateId();\n\n // const transformURL = (url = \"\") => {\n // if (url == \"/\") {\n // return;\n // }\n // if (Digit.Utils.isContextPathMissing(url)) {\n // let updatedUrl = null;\n // if (isMultiRootTenant) {\n // url = url.replace(\"/sandbox-ui/employee\", `/sandbox-ui/${tenantId}/employee`);\n // updatedUrl = url;\n // } else {\n // updatedUrl = DIGIT_UI_CONTEXTS?.every((e) => url?.indexOf(`/${e}`) === -1) ? \"/employee/\" + url : url;\n // }\n // return updatedUrl;\n // } else {\n // return url;\n // }\n // };\n\n const configEmployeeSideBar = data?.actions\n .filter((e) => e.url === \"card\" && e.parentModule)\n .reduce((acc, item) => {\n const module = item.parentModule;\n if (!acc[module]) {\n acc[module] = {\n module: module,\n label: Digit.Utils.locale.getTransformedLocale(`${module}_CARD_HEADER`),\n links: [],\n };\n }\n const linkUrl = Digit.Utils.transformURL(item.navigationURL, tenantId);\n const queryParamIndex = linkUrl.indexOf(\"?\");\n acc[module].links.push({\n link: queryParamIndex === -1 ? linkUrl : linkUrl.substring(0, queryParamIndex),\n label: t(Digit.Utils.locale.getTransformedLocale(`${module}_LINK_${item.displayName}`)),\n queryParams: queryParamIndex === -1 ? null : linkUrl.substring(queryParamIndex),\n description: t(Digit.Utils.locale.getTransformedLocale(`${module}_LINK_${item.displayName}_DESCRIPTION`)),\n });\n return acc;\n }, {});\n\n if (!configEmployeeSideBar) {\n return \"\";\n }\n const QuickSetupConfig = [\n {\n sectionHeader: \"WELCOME_TO_SANDBOX\",\n sections: [\n {\n label: \"SANDBOX_DESCRIPTION_1\",\n },\n {\n label: \"SANDBOX_DESCRIPTION_2\",\n },\n {\n label: \"SANDBOX_DESCRIPTION_3\",\n },\n ],\n },\n {\n sectionHeader: \"QUICK_SETUP\",\n links: configEmployeeSideBar,\n },\n ];\n\n const cardConfig = [\n {\n id: 1,\n type: \"faqs\",\n actions: [\n {\n question: \"SANDBOX_FAQ_QUES_14\",\n isLabelLink: true,\n answer: [\n {\n label: \"SANDBOX_FAQ_ANS_14_LABEL_1\",\n fulllink:true,\n link:\"https://egov-digit.gitbook.io/digit-sandbox/specifications/user-manual/walkthrough-videos\",\n }\n ]\n },\n {\n question: \"SANDBOX_FAQ_QUES_1\",\n content: \"SANDBOX_FAQ_CONTENT_1\",\n isLabelLink: true,\n answer: [\n {\n label: \"SANDBOX_FAQ_ANS_1_LABEL_1\",\n link:\"citizen/login\",\n description: \"SANDBOX_FAQ_ANS_1_DESCRIPTION_1\",\n },\n {\n label: \"SANDBOX_FAQ_ANS_1_LABEL_2\",\n link: \"employee/user/login\",\n description: \"SANDBOX_FAQ_ANS_1_DESCRIPTION_2\",\n }\n ]\n },\n {\n question: \"SANDBOX_FAQ_QUES_2\",\n content: \"SANDBOX_FAQ_CONTENT_2\",\n answer: [\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_2_DESCRIPTION_1\",\n },\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_2_DESCRIPTION_2\",\n },\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_2_DESCRIPTION_3\",\n },\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_2_DESCRIPTION_4\",\n }\n ]\n },\n {\n question: \"SANDBOX_FAQ_QUES_3\",\n content: \"SANDBOX_FAQ_CONTENT_3\",\n answer: [\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_3_DESCRIPTION_1\",\n },\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_3_DESCRIPTION_2\",\n },\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_3_DESCRIPTION_3\",\n },\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_3_DESCRIPTION_4\",\n }\n ]\n },\n {\n question: \"SANDBOX_FAQ_QUES_4\",\n content: \"SANDBOX_FAQ_CONTENT_4\",\n answer: [\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_4_DESCRIPTION_1\",\n },\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_4_DESCRIPTION_2\",\n }\n ]\n },\n {\n question: \"SANDBOX_FAQ_QUES_5\",\n content: \"SANDBOX_FAQ_CONTENT_5\",\n answer: [\n {\n label: \"SANDBOX_FAQ_ANS_5_LABEL_1\",\n description: \"SANDBOX_FAQ_ANS_5_DESCRIPTION_1\",\n },\n {\n label: \"SANDBOX_FAQ_ANS_5_LABEL_2\",\n description: \"SANDBOX_FAQ_ANS_5_DESCRIPTION_2\",\n },\n {\n label: \"SANDBOX_FAQ_ANS_5_LABEL_3\",\n description: \"SANDBOX_FAQ_ANS_5_DESCRIPTION_3\",\n },\n {\n label: \"SANDBOX_FAQ_ANS_5_LABEL_4\",\n description: \"SANDBOX_FAQ_ANS_5_DESCRIPTION_4\",\n },\n {\n label: \"SANDBOX_FAQ_ANS_5_LABEL_5\",\n description: \"SANDBOX_FAQ_ANS_5_DESCRIPTION_5\",\n }\n ]\n },\n {\n question: \"SANDBOX_FAQ_QUES_6\",\n content: \"SANDBOX_FAQ_CONTENT_6\",\n },\n {\n question: \"SANDBOX_FAQ_QUES_7\",\n content: \"SANDBOX_FAQ_CONTENT_7\",\n answer: [\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_7_DESCRIPTION_1\",\n },\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_7_DESCRIPTION_2\",\n }\n ]\n },\n {\n question: \"SANDBOX_FAQ_QUES_8\",\n content: \"SANDBOX_FAQ_CONTENT_8\",\n answer: [\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_8_DESCRIPTION_1\",\n },\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_8_DESCRIPTION_2\",\n },\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_8_DESCRIPTION_3\",\n },\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_8_DESCRIPTION_4\",\n },\n ]\n },\n {\n question: \"SANDBOX_FAQ_QUES_9\",\n content: \"SANDBOX_FAQ_CONTENT_9\",\n answer: [\n {\n label: \"SANDBOX_FAQ_ANS_9_LABEL_1\",\n description: \"SANDBOX_FAQ_ANS_9_DESCRIPTION_1\",\n },\n {\n label: \"SANDBOX_FAQ_ANS_9_LABEL_2\",\n description: \"SANDBOX_FAQ_ANS_9_DESCRIPTION_2\",\n }\n ]\n },\n {\n question: \"SANDBOX_FAQ_QUES_10\",\n content: \"SANDBOX_FAQ_CONTENT_10\",\n answer: [\n {\n label: \"SANDBOX_FAQ_ANS_10_LABEL_1\",\n description: \"SANDBOX_FAQ_ANS_10_DESCRIPTION_1\",\n },\n {\n label: \"SANDBOX_FAQ_ANS_10_LABEL_2\",\n description: \"SANDBOX_FAQ_ANS_10_DESCRIPTION_2\",\n },\n {\n label: \"SANDBOX_FAQ_ANS_10_LABEL_3\",\n description: \"SANDBOX_FAQ_ANS_10_DESCRIPTION_3\",\n },\n {\n label: \"SANDBOX_FAQ_ANS_10_LABEL_4\",\n description: \"SANDBOX_FAQ_ANS_10_DESCRIPTION_4\",\n }\n ]\n },\n {\n question: \"SANDBOX_FAQ_QUES_11\",\n content: \"SANDBOX_FAQ_CONTENT_11\",\n },\n {\n question: \"SANDBOX_FAQ_QUES_12\",\n content: \"SANDBOX_FAQ_CONTENT_12\",\n },\n {\n question: \"SANDBOX_FAQ_QUES_13\",\n content: \"SANDBOX_FAQ_CONTENT_13\",\n } \n ],\n },\n ];\n\n // return <QuickSetupComponent config={QuickSetupConfig}></QuickSetupComponent>;\n return <QuickSetup cardConfig={cardConfig}></QuickSetup>;\n};\n\nexport default QuickSetupConfigComponent;\n","import {\n CitizenHomeCard,\n CitizenInfoLabel,\n Loader,\n} from \"@egovernments/digit-ui-react-components\";\n\nimport { BackLink, CustomSVG, SVG, LandingPageWrapper, Card, Divider } from \"@egovernments/digit-ui-components\";\n\nimport React, { Fragment } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { RoleBasedEmployeeHome } from \"./RoleBasedEmployeeHome\";\nimport QuickSetupConfigComponent from \"../pages/employee/QuickStart/Config\";\n\n/* \nFeature :: Citizen All service screen cards\n*/\nexport const processLinkData = (newData, code, t) => {\n const obj = newData?.[`${code}`];\n if (obj) {\n obj.map((link) => {\n if (Digit.Utils.getMultiRootTenant()) {\n link[\"navigationURL\"] = link[\"navigationURL\"].replace(\"/sandbox-ui/citizen\", `/sandbox-ui/${Digit.ULBService.getStateId()}/citizen`);\n }\n link.link = link[\"navigationURL\"];\n link.i18nKey = t(link[\"name\"]);\n\n });\n }\n const newObj = {\n links: obj?.reverse(),\n header: Digit.Utils.locale.getTransformedLocale(`ACTION_TEST_${code}`),\n iconName: `CITIZEN_${code}_ICON`,\n };\n if (code === \"FSM\") {\n const roleBasedLoginRoutes = [\n {\n role: \"FSM_DSO\",\n from: `/${window?.contextPath}/citizen/fsm/dso-dashboard`,\n dashoardLink: \"CS_LINK_DSO_DASHBOARD\",\n loginLink: \"CS_LINK_LOGIN_DSO\",\n },\n ];\n //RAIN-7297\n roleBasedLoginRoutes.map(({ role, from, loginLink, dashoardLink }) => {\n if (Digit.UserService.hasAccess(role))\n newObj?.links?.push({\n link: from,\n i18nKey: t(dashoardLink),\n });\n else\n newObj?.links?.push({\n link: `/${window?.contextPath}/citizen/login`,\n state: { role: \"FSM_DSO\", from },\n i18nKey: t(loginLink),\n });\n });\n }\n\n return newObj;\n};\nconst iconSelector = (code) => {\n switch (code) {\n case \"PT\":\n return <CustomSVG.PTIcon className=\"fill-path-primary-main\" />;\n case \"WS\":\n return <CustomSVG.WSICon className=\"fill-path-primary-main\" />;\n case \"FSM\":\n return <CustomSVG.FSMIcon className=\"fill-path-primary-main\" />;\n case \"MCollect\":\n return <CustomSVG.MCollectIcon className=\"fill-path-primary-main\" />;\n case \"PGR\":\n return <CustomSVG.PGRIcon className=\"fill-path-primary-main\" />;\n case \"TL\":\n return <CustomSVG.TLIcon className=\"fill-path-primary-main\" />;\n case \"OBPS\":\n return <CustomSVG.OBPSIcon className=\"fill-path-primary-main\" />;\n case \"Bills\":\n return <CustomSVG.BillsIcon className=\"fill-path-primary-main\" />;\n default:\n return <CustomSVG.PTIcon className=\"fill-path-primary-main\" />;\n }\n};\nimport { useNavigate } from \"react-router-dom\";\n\n// Inside CitizenHome component\nconst CitizenHome = ({ getCitizenMenu, fetchedCitizen, isLoading }) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const isMobile = window.Digit.Utils.browser.isMobile();\n\n if (isLoading || !fetchedCitizen || !getCitizenMenu) {\n return <Loader />;\n }\n\n const parentModules = Object.keys(getCitizenMenu);\n\n const handleLinkClick = (e, link) => {\n e.preventDefault();\n navigate(link);\n };\n\n \n\n const handleNavigate = (link) => {\n if (!link) return;\n link?.includes(`${window?.contextPath}/`) ? navigate(link) : (window.location.href = link);\n };\n\n const renderApplyIcon = () => (\n <SVG.AddExpense fill=\"#C84C0E\" width=\"1.25rem\" height=\"1.25rem\" className=\"digit-button-customIcon medium teritiary\" />\n );\n\n const renderMyAppIcon = () => (\n <SVG.ListAlt fill=\"#C84C0E\" width=\"1.25rem\" height=\"1.25rem\" className=\"digit-button-customIcon medium teritiary\" />\n );\n\n const isApplyLink = (link) => {\n const name = (link.name || link.displayName || \"\").toLowerCase();\n return name.includes(\"apply\") || name.includes(\"_apply\");\n };\n \n\n // Desktop: LandingPageWrapper + custom cards with icons (same grid as employee)\n if (!isMobile) {\n const children = parentModules.map((code) => {\n const mdmsDataObj = processLinkData(getCitizenMenu, code, t);\n\n if (!mdmsDataObj?.links?.length) return null;\n\n const seenLinks = new Set();\n const dedupedLinks = mdmsDataObj.links\n ?.filter((ele) => ele?.link)\n ?.sort((x, y) => x?.orderNumber - y?.orderNumber)\n .filter((link) => {\n const key = link.link;\n if (seenLinks.has(key)) return false;\n seenLinks.add(key);\n return true;\n });\n\n return (\n <Card key={code} className=\"digit-landing-page-card\" style={{ borderRadius: \"1rem\" }}>\n <div className=\"icon-module-header\">\n <div className=\"digit-landingpagecard-icon\">\n <CustomSVG.Devices fill=\"#C84C0E\" width=\"1rem\" height=\"1rem\" />\n </div>\n <div className=\"ladingcard-moduleName\" role=\"heading\" aria-level=\"2\">\n {t(mdmsDataObj?.header)}\n </div>\n </div>\n <Divider className=\"digit-landingpage-divider\" variant=\"small\" />\n {dedupedLinks.map((link, i) => {\n const LinkIcon = link.leftIcon && link.leftIcon !== \"TLIcon\" && CustomSVG[link.leftIcon] ? CustomSVG[link.leftIcon] : null;\n return (\n <button\n key={i}\n className=\"digit-button-teritiary medium\"\n type=\"button\"\n style={{ padding: \"0px\" }}\n onClick={() => handleNavigate(link.link)}\n >\n <div className=\"icon-label-container teritiary medium\">\n {LinkIcon ? <LinkIcon fill=\"#C84C0E\" width=\"1.25rem\" height=\"1.25rem\" className=\"digit-button-customIcon medium teritiary\" /> : (isApplyLink(link) ? renderApplyIcon() : renderMyAppIcon())}\n <h2 className=\"digit-button-label\">{link.i18nKey}</h2>\n </div>\n </button>\n );\n })}\n </Card>\n );\n }).filter(Boolean);\n\n return (\n <div className=\"citizen-all-services-wrapper\">\n <div className=\"employee-app-container digit-home-employee-app\">\n <LandingPageWrapper>{children}</LandingPageWrapper>\n </div>\n </div>\n );\n }\n\n // Mobile: Original vertical card layout\n return (\n <div className=\"citizen-all-services-wrapper\">\n {location.pathname.includes(\n \"sanitation-ui/citizen/all-services\"\n ) || (location.pathname.includes(\"sandbox-ui\") && location.pathname.includes(\"all-services\")) ? null : (\n <BackLink onClick={() => window.history.back()}/>\n )}\n <div className=\"citizenAllServiceGrid\">\n {parentModules.map((code) => {\n const mdmsDataObj = processLinkData(getCitizenMenu, code, t);\n\n if (mdmsDataObj?.links?.length > 0) {\n return (\n <div className=\"CitizenHomeCard\" key={code}>\n <div className=\"header\">\n <h2>{t(mdmsDataObj?.header)}</h2>\n {iconSelector(code)}\n </div>\n <div className=\"links\">\n {mdmsDataObj?.links\n ?.filter((ele) => ele?.link)\n ?.sort((x, y) => x?.orderNumber - y?.orderNumber)\n .map((link, i) => (\n <div className=\"linksWrapper\" key={i}>\n <a\n href={link.link}\n onClick={(e) => handleLinkClick(e, link.link)}\n >\n {link.i18nKey}\n </a>\n </div>\n ))}\n </div>\n </div>\n );\n }\n return null;\n })}\n </div>\n </div>\n );\n};\n\nconst EmployeeHome = ({ modules, additionalComponent }) => {\n return (\n <>\n <div className=\"employee-app-container digit-home-employee-app\">\n {/* <div className=\"ground-container moduleCardWrapper gridModuleWrapper digit-home-moduleCardWrapper\"> */}\n <LandingPageWrapper>\n {modules?.map(({ code }, index) => {\n const Card =\n Digit.ComponentRegistryService.getComponent(`${code}Card`) ||\n (() => <React.Fragment />);\n return <Card key={index} />;\n })}\n </LandingPageWrapper>\n {/* </div> */}\n </div>\n\n {additionalComponent &&\n additionalComponent?.length > 0 &&\n additionalComponent.map((i) => {\n const Component =\n typeof i === \"string\"\n ? Digit.ComponentRegistryService.getComponent(i)\n : null;\n return Component ? (\n <div className=\"additional-component-wrapper\">\n <Component />\n </div>\n ) : null;\n })}\n </>\n );\n};\n\nexport const AppHome = ({\n userType,\n modules,\n getCitizenMenu,\n fetchedCitizen,\n isLoading,\n additionalComponent,\n}) => {\n if (userType === \"citizen\") {\n return (\n <CitizenHome\n modules={modules}\n getCitizenMenu={getCitizenMenu}\n fetchedCitizen={fetchedCitizen}\n isLoading={isLoading}\n />\n );\n }\n const isSuperUserWithMultipleRootTenant = Digit.UserService.hasAccess(\"SUPERUSER\") && Digit.Utils.getMultiRootTenant()\n return Digit.Utils.getRoleBasedHomeCard() ? (\n <div className={isSuperUserWithMultipleRootTenant ? \"homeWrapper\" : \"\"}>\n <RoleBasedEmployeeHome modules={modules} additionalComponent={additionalComponent} />\n {isSuperUserWithMultipleRootTenant && !window.Digit.Utils.browser.isMobile() ? <QuickSetupConfigComponent /> : null}\n </div>\n ) : (\n <EmployeeHome modules={modules} additionalComponent={additionalComponent} />\n );\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst ImageComponent = ({\n src,\n alt = \"Image not found\",\n decorative = false,\n ariaLabel = \"No Image description set\",\n ariaLabelledby = \"no-image-description\",\n ...props\n}) => {\n // Determine the appropriate attributes based on the props\n const accessibilityProps = {};\n\n if (decorative) {\n // For decorative images\n accessibilityProps.alt = \"\";\n } else if (alt) {\n // Provide meaningful alt text if available\n accessibilityProps.alt = alt;\n } else if (ariaLabel) {\n // Use aria-label if alt is not provided\n accessibilityProps[\"aria-label\"] = ariaLabel;\n } else if (ariaLabelledby) {\n // Use aria-labelledby for descriptive associations\n accessibilityProps[\"aria-labelledby\"] = ariaLabelledby;\n } else {\n console.warn(\"AccessibleImage: Missing alt, aria-label, or aria-labelledby for non-decorative image.\");\n }\n\n return (\n <img\n src={src}\n {...accessibilityProps}\n {...props}\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n window.open(window?.globalConfigs?.getConfig?.(\"DIGIT_HOME_URL\"), \"_blank\").focus();\n }\n }}\n />\n );\n};\n\nImageComponent.propTypes = {\n src: PropTypes.string.isRequired, // The source URL for the image\n alt: PropTypes.string, // Alternative text for the image\n decorative: PropTypes.bool, // If true, image is decorative\n ariaLabel: PropTypes.string, // Custom label for screen readers\n ariaLabelledby: PropTypes.string, // Association with another descriptive element\n};\n\nexport default ImageComponent;\n","import { Hamburger, TopBar as TopBarComponent } from \"@egovernments/digit-ui-react-components\";\nimport { Dropdown } from \"@egovernments/digit-ui-components\";\nimport React,{Fragment} from \"react\";\nimport {useNavigate, useLocation } from \"react-router-dom\";\nimport ChangeCity from \"../ChangeCity\";\nimport ChangeLanguage from \"../ChangeLanguage\";\nimport { Header as TopBarComponentMain } from \"@egovernments/digit-ui-components\";\nimport ImageComponent from \"../ImageComponent\";\n\nconst DEFAULT_EGOV_LOGO =\"https://egov-dev-assets.s3.ap-south-1.amazonaws.com/egov-logo-2025.png\";\n\n\nconst TopBar = ({\n t,\n stateInfo,\n toggleSidebar,\n isSidebarOpen,\n handleLogout,\n userDetails,\n CITIZEN,\n cityDetails,\n mobileView,\n userOptions,\n handleUserDropdownSelection,\n logoUrl,\n logoUrlWhite,\n showLanguageChange = true,\n}) => {\n const [profilePic, setProfilePic] = React.useState(null);\n\n React.useEffect( () => {\n const app=async ()=>{\n const tenant = Digit.Utils.getMultiRootTenant() ? Digit.ULBService.getStateId() : Digit.ULBService.getCurrentTenantId();\n const uuid = userDetails?.info?.uuid;\n if (uuid) {\n const usersResponse = await Digit.UserService.userSearch(tenant, { uuid: [uuid] }, {});\n if (usersResponse && usersResponse.user && usersResponse.user.length) {\n const userDetails = usersResponse.user[0];\n const thumbs = userDetails?.photo?.split(\",\");\n setProfilePic(thumbs?.at(0));\n }\n }\n }\n app()\n }, [profilePic !== null, userDetails?.info?.uuid]);\n\n const CitizenHomePageTenantId = Digit.ULBService.getCitizenCurrentTenant(true);\n\n let navigate = useNavigate();\n const { pathname } = useLocation();\n\n const conditionsToDisableNotificationCountTrigger = () => {\n if (Digit.UserService?.getUser()?.info?.type === \"EMPLOYEE\") return false;\n if (Digit.UserService?.getUser()?.info?.type === \"CITIZEN\") {\n if (!CitizenHomePageTenantId) return false;\n else return true;\n }\n return false;\n };\n\n const { data: { unreadCount: unreadNotificationCount } = {}, isSuccess: notificationCountLoaded } = Digit.Hooks.useNotificationCount({\n tenantId: CitizenHomePageTenantId,\n config: {\n enabled: conditionsToDisableNotificationCountTrigger(),\n },\n });\n\n const updateSidebar = () => {\n if (!Digit.clikOusideFired) {\n toggleSidebar(true);\n } else {\n Digit.clikOusideFired = false;\n }\n };\n\n function onNotificationIconClick() {\n navigate(`/${window?.contextPath}/citizen/engagement/notifications`);\n }\n\n const urlsToDisableNotificationIcon = (pathname) =>\n !!Digit.UserService?.getUser()?.access_token\n ? false\n : [`/${window?.contextPath}/citizen/select-language`, `/${window?.contextPath}/citizen/select-location`].includes(pathname);\n\n if (CITIZEN) {\n return (\n <div>\n <TopBarComponent\n img={stateInfo?.logoUrlWhite}\n isMobile={true}\n toggleSidebar={updateSidebar}\n logoUrl={stateInfo?.logoUrlWhite}\n onLogout={handleLogout}\n userDetails={userDetails}\n notificationCount={unreadNotificationCount < 99 ? unreadNotificationCount : 99}\n notificationCountLoaded={notificationCountLoaded}\n cityOfCitizenShownBesideLogo={t(CitizenHomePageTenantId)}\n onNotificationIconClick={onNotificationIconClick}\n hideNotificationIconOnSomeUrlsWhenNotLoggedIn={urlsToDisableNotificationIcon(pathname)}\n changeLanguage={!mobileView ? <ChangeLanguage dropdown={true} /> : null}\n />\n </div>\n );\n }\n const loggedin = userDetails?.access_token ? true : false;\n\n //checking for custom topbar components\n const CustomEmployeeTopBar = Digit.ComponentRegistryService?.getComponent(\"CustomEmployeeTopBar\");\n\n if (CustomEmployeeTopBar) {\n return (\n <CustomEmployeeTopBar\n {...{\n t,\n stateInfo,\n toggleSidebar,\n isSidebarOpen,\n handleLogout,\n userDetails,\n CITIZEN,\n cityDetails,\n mobileView,\n userOptions,\n handleUserDropdownSelection,\n logoUrl,\n showLanguageChange,\n loggedin,\n }}\n />\n );\n }\n return (\n <TopBarComponentMain\n actionFields={[\n <ChangeCity dropdown={true} t={t} />,\n showLanguageChange && <ChangeLanguage dropdown={true} />,\n userDetails?.access_token && (\n <Dropdown\n option={userOptions}\n optionKey=\"name\"\n profilePic={profilePic ? profilePic : userDetails?.info?.name || userDetails?.info?.userInfo?.name || \"Employee\"}\n select={handleUserDropdownSelection}\n showArrow={true}\n menuStyles={{ marginTop: \"1rem\" }}\n theme=\"light\"\n />\n ),\n ]}\n onHamburgerClick={() => {\n toggleSidebar();\n }}\n className=\"digit-employee-header\"\n img={logoUrl}\n logoWidth={\"64px\"}\n logoHeight={\"48px\"}\n logo={(loggedin ? cityDetails?.logoId : stateInfo?.statelogo)||DEFAULT_EGOV_LOGO}\n onImageClick={() => {}}\n onLogoClick={() => {}}\n props={{}}\n showDeafultImg\n style={{}}\n theme={window?.globalConfigs?.getConfig(\"HEADER_THEME\") || \"light\"}\n ulb={\n loggedin ? (\n cityDetails?.city?.ulbGrade ? (\n <>\n {t(cityDetails?.i18nKey).toUpperCase()}{\" \"}\n {t(`ULBGRADE_${cityDetails?.city?.ulbGrade.toUpperCase().replace(\" \", \"_\").replace(\".\", \"_\")}`).toUpperCase()}\n </>\n ) : (\n <ImageComponent className=\"state\" src={logoUrlWhite} alt=\"State Logo\" />\n )\n ) : (\n <>\n {t(`MYCITY_${stateInfo?.code?.toUpperCase()}_LABEL`)} {t(`MYCITY_STATECODE_LABEL`)}\n </>\n )\n }\n />\n );\n};\n\nexport default TopBar;\n","export const defaultImage =\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAO4AAADUCAMAAACs0e/bAAAAM1BMVEXK0eL\" +\n \"/\" +\n \"/\" +\n \"/\" +\n \"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\";","import React from \"react\";\nimport { LanguageIcon, LogoutIcon, AddressBookIcon, LocationIcon } from \"@egovernments/digit-ui-react-components\";\nimport ChangeLanguage from \"../components/ChangeLanguage\";\n\nconst SideBarMenu = (t, closeSidebar, redirectToLoginPage, isEmployee) => [\n {\n type: \"component\",\n element: \"LANGUAGE\",\n action: <ChangeLanguage />,\n icon: \"LanguageIcon\",\n },\n {\n id: \"login-btn\",\n element: \"LOGIN\",\n text: t(\"CORE_COMMON_LOGIN\"),\n icon: <LogoutIcon className=\"icon\" />,\n populators: {\n onClick: redirectToLoginPage,\n },\n },\n];\n\nexport default SideBarMenu;\n","import React, { useEffect, useState } from \"react\";\nimport {\n HomeIcon,\n EditPencilIcon,\n LogoutIcon,\n AddressBookIcon,\n PropertyHouse,\n CaseIcon,\n CollectionIcon,\n PTIcon,\n OBPSIcon,\n PGRIcon,\n FSMIcon,\n WSICon,\n MCollectIcon,\n Phone,\n BirthIcon,\n DeathIcon,\n FirenocIcon,\n Loader,\n} from \"@egovernments/digit-ui-react-components\";\nimport { Link, useLocation } from \"react-router-dom\";\nimport SideBarMenu from \"../../../config/sidebar-menu\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport LogoutDialog from \"../../Dialog/LogoutDialog\";\nimport ChangeCity from \"../../ChangeCity\";\nimport { defaultImage } from \"../../utils\";\nimport ImageComponent from \"../../ImageComponent\";\n\n/* \nFeature :: Citizen Webview sidebar\n*/\nconst Profile = ({ info, stateName, t }) => (\n <div className=\"profile-section\">\n <div className=\"imageloader imageloader-loaded\">\n <ImageComponent className=\"img-responsive img-circle img-Profile\" src={defaultImage} alt=\"Profile Logo\" />\n </div>\n <div id=\"profile-name\" className=\"label-container name-Profile\">\n <div className=\"label-text\"> {info?.name} </div>\n </div>\n <div id=\"profile-location\" className=\"label-container loc-Profile\">\n <div className=\"label-text\"> {info?.mobileNumber} </div>\n </div>\n {info?.emailId && (\n <div id=\"profile-emailid\" className=\"label-container loc-Profile\">\n <div className=\"label-text\"> {info.emailId} </div>\n </div>\n )}\n <div className=\"profile-divider\"></div>\n {window.location.href.includes(\"/employee\") &&\n !window.location.href.includes(\"/employee/user/login\") &&\n !window.location.href.includes(\"employee/user/language-selection\") && <ChangeCity t={t} mobileView={true} />}\n </div>\n);\nconst IconsObject = {\n CommonPTIcon: <PTIcon className=\"icon\" />,\n OBPSIcon: <OBPSIcon className=\"icon\" />,\n propertyIcon: <PropertyHouse className=\"icon\" />,\n TLIcon: <CaseIcon className=\"icon\" />,\n PGRIcon: <PGRIcon className=\"icon\" />,\n FSMIcon: <FSMIcon className=\"icon\" />,\n WSIcon: <WSICon className=\"icon\" />,\n MCollectIcon: <MCollectIcon className=\"icon\" />,\n BillsIcon: <CollectionIcon className=\"icon\" />,\n BirthIcon: <BirthIcon className=\"icon\" />,\n DeathIcon: <DeathIcon className=\"icon\" />,\n FirenocIcon: <FirenocIcon className=\"icon\" />,\n HomeIcon: <HomeIcon className=\"icon\" />,\n EditPencilIcon: <EditPencilIcon className=\"icon\" />,\n LogoutIcon: <LogoutIcon className=\"icon\" />,\n Phone: <Phone className=\"icon\" />,\n};\nconst StaticCitizenSideBar = ({ linkData, islinkDataLoading }) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const location = useLocation();\n const { pathname } = location;\n const { data: storeData, isFetched } = Digit.Hooks.useStore.getInitData();\n const { stateInfo } = storeData || {};\n const user = Digit.UserService.getUser();\n let isMobile = window.Digit.Utils.browser.isMobile();\n\n const [isEmployee, setisEmployee] = useState(false);\n const [isSidebarOpen, toggleSidebar] = useState(false);\n const [showDialog, setShowDialog] = useState(false);\n\n const handleLogout = () => {\n toggleSidebar(false);\n setShowDialog(true);\n };\n const handleOnSubmit = () => {\n if (Digit.Utils.getMultiRootTenant()) {\n Digit.UserService.logout();\n setShowDialog(false);\n window.location.href = `/${window?.contextPath}/citizen/login`;\n } else {\n Digit.UserService.logout();\n setShowDialog(false);\n }\n };\n const handleOnCancel = () => {\n setShowDialog(false);\n };\n\n if (islinkDataLoading) {\n return <Loader />;\n }\n\n const redirectToLoginPage = () => {\n \n navigate(`/${window?.contextPath}/citizen/login`);\n };\n const showProfilePage = () => {\n navigate(`/${window?.contextPath}/citizen/user/profile`);\n };\n\n const closeSidebar = () => {\n navigate(`/${window?.contextPath}/citizen/all-services`);\n };\n\n let menuItems = [...SideBarMenu(t, showProfilePage, redirectToLoginPage, isEmployee)];\n\n menuItems = menuItems.filter((item) => item.element !== \"LANGUAGE\");\n\n const tenantId = Digit.ULBService.getCurrentTenantId();\n const MenuItem = ({ item }) => {\n const leftIconArray = item?.icon || item.icon?.type?.name;\n const leftIcon = leftIconArray ? IconsObject[leftIconArray] : IconsObject.BillsIcon;\n let itemComponent;\n if (item.type === \"component\") {\n itemComponent = item.action;\n } else {\n itemComponent = item.text;\n }\n const Item = () => (\n <span className=\"menu-item\" {...item.populators}>\n {leftIcon}\n <div className=\"menu-label\">{itemComponent}</div>\n </span>\n );\n if (item.type === \"external-link\") {\n return (\n <a href={item.link}>\n <Item />\n </a>\n );\n }\n if (item.type === \"link\") {\n return (\n <Link to={item?.link}>\n <Item />\n </Link>\n );\n }\n\n return <Item />;\n };\n let profileItem;\n\n if (isFetched && user && user.access_token && user?.info?.type === \"CITIZEN\") {\n profileItem = <Profile info={user?.info} stateName={stateInfo?.name} t={t} />;\n menuItems = menuItems.filter((item) => item?.id !== \"login-btn\");\n menuItems = [\n ...menuItems,\n {\n type: \"link\",\n icon: \"HomeIcon\",\n element: \"HOME\",\n text: t(\"COMMON_BOTTOM_NAVIGATION_HOME\"),\n link: isEmployee ? `/${window?.contextPath}/employee` : `/${window?.contextPath}/citizen`,\n populators: {\n onClick: closeSidebar,\n },\n },\n {\n text: t(\"EDIT_PROFILE\"),\n element: \"PROFILE\",\n icon: \"EditPencilIcon\",\n populators: {\n onClick: showProfilePage,\n },\n },\n {\n text: t(\"CORE_COMMON_LOGOUT\"),\n element: \"LOGOUT\",\n icon: \"LogoutIcon\",\n populators: { onClick: handleLogout },\n },\n {\n text: (\n <React.Fragment>\n {t(\"CS_COMMON_HELPLINE\")}\n <div className=\"telephone\" style={{ marginTop: \"-10%\" }}>\n {storeData?.tenants?.length > 0 && (\n <div className=\"link\">\n <a href={`tel:${\n storeData.tenants.find((tenant) => tenant.code === tenantId)?.contactNumber \n || storeData.tenants[0]?.contactNumber \n || ''\n }`}>\n {storeData.tenants.find((tenant) => tenant.code === tenantId)?.contactNumber \n || storeData.tenants[0]?.contactNumber \n || t(\"CS_NA\")}\n </a>\n </div>\n )}\n </div>\n </React.Fragment>\n ),\n element: \"Helpline\",\n icon: \"Phone\",\n}\n ];\n }\n Object.keys(linkData || {})\n ?.sort((x, y) => y.localeCompare(x))\n ?.map((key) => {\n if (linkData[key][0]?.sidebar === `${window.contextPath}-links`) {\n menuItems.splice(1, 0, {\n type: linkData[key][0]?.sidebarURL?.includes(window?.contextPath) ? \"link\" : \"external-link\",\n text: t(`ACTION_TEST_${Digit.Utils.locale.getTransformedLocale(key)}`),\n links: linkData[key],\n icon: linkData[key][0]?.leftIcon,\n link: linkData[key][0]?.sidebarURL,\n });\n }\n });\n\n return (\n <React.Fragment>\n <div>\n <div\n style={{\n height: \"100%\",\n width: \"100%\",\n top: \"0px\",\n backgroundColor: \"rgba(0, 0, 0, 0.54)\",\n pointerzevents: \"auto\",\n }}\n ></div>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n height: isMobile ? \"calc(100vh - 56px)\" : \"auto\",\n zIndex: \"99\",\n }}\n >\n {profileItem}\n <div className=\"drawer-desktop\">\n {menuItems?.map((item, index) => (\n <div className={`sidebar-list ${pathname === item?.link || pathname === item?.sidebarURL ? \"active\" : \"\"}`} key={index}>\n <MenuItem item={item} />\n </div>\n ))}\n </div>\n </div>\n <div>{showDialog && <LogoutDialog onSelect={handleOnSubmit} onCancel={handleOnCancel} onDismiss={handleOnCancel}></LogoutDialog>}</div>\n </div>\n </React.Fragment>\n );\n};\n\nexport default StaticCitizenSideBar;\n","// import { NavBar } from \"@egovernments/digit-ui-react-components\";\nimport { Loader } from \"@egovernments/digit-ui-components\";\nimport React, { useState, Fragment, useEffect } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate, useLocation } from \"react-router-dom\";\nimport ChangeCity from \"../../ChangeCity\";\nimport { defaultImage } from \"../../utils\";\nimport StaticCitizenSideBar from \"./StaticCitizenSideBar\";\nimport { Hamburger } from \"@egovernments/digit-ui-components\";\nimport { LogoutIcon } from \"@egovernments/digit-ui-react-components\";\nimport ImageComponent from \"../../ImageComponent\";\n\nconst Profile = ({ info, stateName, t }) => {\n const [profilePic, setProfilePic] = React.useState(null);\n React.useEffect(async () => {\n const tenant = Digit.ULBService.getCurrentTenantId();\n const uuid = info?.uuid;\n if (uuid) {\n const usersResponse = await Digit.UserService.userSearch(tenant, { uuid: [uuid] }, {});\n if (usersResponse && usersResponse.user && usersResponse?.user?.length) {\n const userDetails = usersResponse.user[0];\n const thumbs = userDetails?.photo?.split(\",\");\n setProfilePic(thumbs?.at(0));\n }\n }\n }, [profilePic !== null]);\n\n const CustomEmployeeTopBar = Digit.ComponentRegistryService?.getComponent(\"CustomEmployeeTopBar\");\n\n return (\n <div className=\"profile-section\">\n <div className=\"imageloader imageloader-loaded\">\n <ImageComponent\n className=\"img-responsive img-circle img-Profile\"\n src={profilePic ? profilePic : defaultImage}\n style={{ objectFit: \"cover\", objectPosition: \"center\" }}\n alt=\"Profile Image\"\n />\n </div>\n <div id=\"profile-name\" className=\"label-container name-Profile\">\n <div className=\"label-text\"> {info?.name} </div>\n </div>\n <div id=\"profile-location\" className=\"label-container loc-Profile\">\n <div className=\"label-text\"> {info?.mobileNumber} </div>\n </div>\n {info?.emailId && (\n <div id=\"profile-emailid\" className=\"label-container loc-Profile\">\n <div className=\"label-text\"> {info.emailId} </div>\n </div>\n )}\n <div className=\"profile-divider\"></div>\n {window.location.href.includes(\"/employee\") &&\n !window.location.href.includes(\"/employee/user/login\") &&\n !window.location.href.includes(\"employee/user/language-selection\") &&\n !CustomEmployeeTopBar && <ChangeCity t={t} mobileView={true} />}\n </div>\n );\n};\n\n/* \nFeature :: Citizen Webview sidebar\n*/\nexport const CitizenSideBar = ({\n isOpen,\n isMobile = false,\n toggleSidebar,\n onLogout,\n isEmployee = false,\n linkData,\n islinkDataLoading,\n userProfile,\n}) => {\n const isMultiRootTenant = Digit.Utils.getMultiRootTenant();\n const { data: storeData, isFetched } = Digit.Hooks.useStore.getInitData();\n const selectedLanguage = Digit.StoreData.getCurrentLanguage();\n const [profilePic, setProfilePic] = useState(null);\n const { languages, stateInfo } = storeData || {};\n const user = Digit.UserService.getUser();\n const [search, setSearch] = useState(\"\");\n const [dropDownData, setDropDownData] = useState(null);\n const [selectCityData, setSelectCityData] = useState([]);\n const [selectedCity, setSelectedCity] = useState([]); //selectedCities?.[0]?.value\n const [selected, setselected] = useState(selectedLanguage);\n let selectedCities = [];\n const { isLoading, data } = Digit.Hooks.useAccessControl();\n const tenantId = Digit.ULBService.getCurrentTenantId();\n const { t } = useTranslation();\n \n // React Router v6: useNavigate replaces useHistory\n const navigate = useNavigate();\n // React Router v6: useLocation for accessing location object\n const location = useLocation();\n\n const stringReplaceAll = (str = \"\", searcher = \"\", replaceWith = \"\") => {\n if (searcher == \"\") return str;\n while (str?.includes(searcher)) {\n str = str?.replace(searcher, replaceWith);\n }\n return str;\n };\n\n useEffect(() => {\n const userloggedValues = Digit.SessionStorage.get(\"citizen.userRequestObject\");\n let teantsArray = [],\n filteredArray = [];\n userloggedValues?.info?.roles?.forEach((role) => teantsArray.push(role.tenantId));\n let unique = teantsArray.filter((item, i, ar) => ar.indexOf(item) === i);\n unique?.forEach((uniCode) => {\n filteredArray.push({\n label: t(`TENANT_TENANTS_${stringReplaceAll(uniCode, \".\", \"_\")?.toUpperCase()}`),\n value: uniCode,\n });\n });\n selectedCities = filteredArray?.filter((select) => select.value == Digit.SessionStorage.get(\"Employee.tenantId\"));\n setSelectCityData(filteredArray);\n }, [dropDownData]);\n\n const closeSidebar = () => {\n Digit.clikOusideFired = true;\n toggleSidebar(false);\n };\n\n useEffect(() => {\n const fetchUserProfile = async () => {\n const tenant = Digit.ULBService.getCurrentTenantId();\n const uuid = user?.info?.uuid;\n if (uuid) {\n const usersResponse = await Digit.UserService.userSearch(tenant, { uuid: [uuid] }, {});\n const userData = usersResponse?.user?.[0];\n if (userData) {\n const currentUser = Digit.UserService.getUser();\n Digit.UserService.setUser({\n ...currentUser,\n info: userData\n });\n }\n if (usersResponse && usersResponse.user && usersResponse?.user?.length) {\n const userDetails = usersResponse.user[0];\n const thumbs = userDetails?.photo?.split(\",\");\n setProfilePic(thumbs?.at(0));\n }\n }\n };\n if (!profilePic) {\n fetchUserProfile();\n }\n }, [profilePic]);\n\n const handleChangeCity = (city) => {\n const loggedInData = Digit.SessionStorage.get(\"citizen.userRequestObject\");\n const filteredRoles = Digit.SessionStorage.get(\"citizen.userRequestObject\")?.info?.roles?.filter((role) => role.tenantId === city.value);\n if (filteredRoles?.length > 0) {\n loggedInData.info.roles = filteredRoles;\n loggedInData.info.tenantId = city?.value;\n }\n Digit.SessionStorage.set(\"Employee.tenantId\", city?.value);\n Digit.UserService.setUser(loggedInData);\n setDropDownData(city);\n if (typeof window !== 'undefined' && window.location?.href?.includes(`/${window?.contextPath}/employee/`)) {\n\n // React Router v6: navigate with { replace: true } instead of history.replace()\n const redirectPath = location.state?.from || `/${window?.contextPath}/employee`;\n navigate(redirectPath, { replace: true });\n }\n // Safe reload with error handling\n try {\n if (typeof window !== 'undefined') {\n window.location.reload();\n }\n } catch (error) {\n console.warn('Failed to reload page:', error);\n }\n };\n\n const handleChangeLanguage = (language) => {\n setselected(language.value);\n Digit.LocalizationService.changeLanguage(language.value, stateInfo.code);\n };\n\n const handleModuleClick = (url) => {\n let updatedUrl = null;\n if (Digit.Utils.getMultiRootTenant()) {\n updatedUrl = isEmployee\n ? url.replace(\"/sandbox-ui/employee\", `/sandbox-ui/${tenantId}/employee`)\n : url.replace(\"/sandbox-ui/citizen\", `/sandbox-ui/${tenantId}/citizen`);\n // React Router v6: navigate() instead of history.push()\n navigate(updatedUrl);\n toggleSidebar();\n } else {\n url[0] === \"/\"\n ? navigate(`/${window?.contextPath}/${isEmployee ? \"employee\" : \"citizen\"}${url}`)\n : navigate(`/${window?.contextPath}/${isEmployee ? \"employee\" : \"citizen\"}/${url}`);\n toggleSidebar();\n }\n };\n\n const redirectToLoginPage = () => {\n if (isEmployee) {\n // React Router v6: navigate() instead of history.push()\n navigate(`/${window?.contextPath}/employee/user/language-selection`);\n } else {\n navigate(`/${window?.contextPath}/citizen/login`);\n }\n closeSidebar();\n };\n\n if (islinkDataLoading || isLoading) {\n return <Loader />;\n }\n\n let menuItems = [\n {\n id: \"login-btn\",\n element: \"LOGIN\",\n text: t(\"CORE_COMMON_LOGIN\"),\n icon: <LogoutIcon className=\"icon\" />,\n populators: {\n onClick: redirectToLoginPage,\n },\n },\n ];\n\n let profileItem;\n if (isFetched && user && user.access_token) {\n profileItem = <Profile info={user?.info} stateName={stateInfo?.name} t={t} />;\n menuItems = menuItems.filter((item) => item?.id !== \"login-btn\");\n }\n\n let configEmployeeSideBar = {};\n\n if (!isEmployee) {\n Object.keys(linkData)\n ?.sort((x, y) => y.localeCompare(x))\n ?.map((key) => {\n if (linkData[key][0]?.sidebar === \"digit-ui-links\")\n menuItems.splice(1, 0, {\n type: linkData[key][0]?.sidebarURL?.includes(window?.contextPath) ? \"link\" : \"external-link\",\n text: t(`ACTION_TEST_${Digit.Utils.locale.getTransformedLocale(key)}`),\n links: linkData[key],\n icon: linkData[key][0]?.leftIcon,\n link: linkData[key][0]?.sidebarURL,\n });\n });\n } else {\n data?.actions\n .filter((e) => e.url === \"url\" && e.displayName !== \"Home\")\n .forEach((item) => {\n if (search == \"\" && item.path !== \"\") {\n let index = item.path.split(\".\")[0];\n if (index === \"TradeLicense\") index = \"Trade License\";\n if (!configEmployeeSideBar[index]) {\n configEmployeeSideBar[index] = [item];\n } else {\n configEmployeeSideBar[index].push(item);\n }\n } else if (item.path !== \"\" && item?.displayName?.toLowerCase().includes(search.toLowerCase())) {\n let index = item.path.split(\".\")[0];\n if (index === \"TradeLicense\") index = \"Trade License\";\n if (!configEmployeeSideBar[index]) {\n configEmployeeSideBar[index] = [item];\n } else {\n configEmployeeSideBar[index].push(item);\n }\n }\n });\n const keys = Object.keys(configEmployeeSideBar);\n for (let i = 0; i < keys?.length; i++) {\n const getSingleDisplayName = configEmployeeSideBar[keys[i]][0]?.displayName?.toUpperCase()?.replace(/[ -]/g, \"_\");\n const getParentDisplayName = keys[i]?.toUpperCase()?.replace(/[ -]/g, \"_\");\n\n if (configEmployeeSideBar[keys[i]][0].path.indexOf(\".\") === -1) {\n menuItems.splice(1, 0, {\n type: \"link\",\n text: t(`ACTION_TEST_${getSingleDisplayName}`),\n link: configEmployeeSideBar[keys[i]][0]?.navigationURL,\n icon: configEmployeeSideBar[keys[i]][0]?.leftIcon,\n populators: {\n onClick: () => {\n // React Router v6: navigate() instead of history.push()\n navigate(configEmployeeSideBar[keys[i]][0]?.navigationURL);\n closeSidebar();\n },\n },\n });\n } else {\n menuItems.splice(1, 0, {\n type: \"dynamic\",\n moduleName: t(`ACTION_TEST_${getParentDisplayName}`),\n links: configEmployeeSideBar[keys[i]]?.map((ob) => {\n return {\n ...ob,\n displayName: t(`ACTION_TEST_${ob?.displayName?.toUpperCase()?.replace(/[ -]/g, \"_\")}`),\n };\n }),\n icon: configEmployeeSideBar[keys[i]][1]?.leftIcon,\n });\n }\n }\n const indx = menuItems.findIndex((a) => a.element === \"HOME\");\n const home = menuItems.splice(indx, 1);\n const comp = menuItems.findIndex((a) => a.element === \"LANGUAGE\");\n const part = menuItems.splice(comp, menuItems?.length - comp);\n menuItems.sort((a, b) => {\n let c1 = a?.type === \"dynamic\" ? a?.moduleName : a?.text;\n let c2 = b?.type === \"dynamic\" ? b?.moduleName : b?.text;\n return c1.localeCompare(c2);\n });\n home?.[0] && menuItems.splice(0, 0, home[0]);\n menuItems = part?.length > 0 ? menuItems.concat(part) : menuItems;\n }\n\n /* URL with openlink wont have sidebar and actions */\n // React Router v6: location.pathname instead of history.location.pathname\n if (location.pathname.includes(\"/openlink\")) {\n profileItem = <span></span>;\n menuItems = menuItems.filter((ele) => ele.element === \"LANGUAGE\");\n }\n\n menuItems = menuItems?.map((item) => ({\n ...item,\n label: item?.text || item?.moduleName || \"\",\n icon: item?.icon ? item?.icon : undefined,\n }));\n\n let city = \"\";\n if (Digit.Utils.getMultiRootTenant()) {\n city = t(`TENANT_TENANTS_${tenantId}`);\n } else {\n city = t(`TENANT_TENANTS_${stringReplaceAll(Digit.ULBService.getCurrentTenantId(), \".\", \"_\")?.toUpperCase()}`);\n // city = \"TEST\";\n }\n const goToHome = () => {\n if (isEmployee) {\n // React Router v6: navigate() instead of history.push()\n navigate(`/${window?.contextPath}/employee`);\n } else {\n navigate(`/${window?.contextPath}/citizen`);\n }\n };\n const onItemSelect = ({ item, index, parentIndex }) => {\n if (item?.navigationURL) {\n handleModuleClick(item?.navigationURL);\n } else if (item?.link) {\n handleModuleClick(item?.link);\n } else if (item?.type === \"custom\") {\n switch (item?.key) {\n case \"home\":\n goToHome();\n toggleSidebar();\n break;\n case \"editProfile\":\n userProfile();\n toggleSidebar();\n break;\n case \"language\":\n handleChangeLanguage(item);\n toggleSidebar();\n break;\n case \"city\":\n handleChangeCity(item);\n toggleSidebar();\n break;\n }\n } else {\n return;\n }\n };\n\n const transformedMenuItems = menuItems?.map((item) => {\n if (item?.type === \"dynamic\") {\n return {\n ...item,\n children: item?.links?.map((link) => ({\n ...link,\n label: link?.displayName,\n icon: link?.leftIcon,\n })),\n };\n } else {\n return item;\n }\n });\n\n const transformedSelectedCityData = selectCityData?.map((city) => ({\n ...city,\n type: \"custom\",\n key: \"city\",\n }));\n\n const transformedLanguageData = languages?.map((language) => ({\n ...language,\n type: \"custom\",\n key: \"language\",\n icon: \"Language\",\n }));\n\n const hamburgerItems = [\n {\n label: \"HOME\",\n value: \"HOME\",\n icon: \"Home\",\n // children: transformedSelectedCityData?.length>0 ? transformedSelectedCityData : undefined,\n type: \"custom\",\n key: \"home\",\n },\n {\n label: city,\n value: city,\n children: transformedSelectedCityData?.length > 0 ? transformedSelectedCityData : undefined,\n type: \"custom\",\n icon: \"LocationCity\",\n key: \"city\",\n },\n {\n label: t(\"Language\"),\n children: transformedLanguageData?.length > 0 ? transformedLanguageData : undefined,\n type: \"custom\",\n icon: \"Language\",\n key: \"language\",\n },\n ...(user && user.access_token\n ? [\n {\n label: t(\"EDIT_PROFILE\"),\n type: \"custom\",\n icon: \"Edit\",\n key: \"editProfile\",\n },\n ]\n : []),\n {\n label: t(\"Modules\"),\n icon: \"DriveFileMove\",\n children: transformedMenuItems,\n },\n ];\n return isMobile ? (\n <Hamburger\n items={hamburgerItems}\n profileName={user?.info?.name}\n profileNumber={user?.info?.mobileNumber || user?.info?.emailId}\n theme=\"dark\"\n transitionDuration={0.3}\n styles={{ marginTop: \"64px\", height: \"93%\" }}\n onLogout={onLogout}\n hideUserManuals={true}\n profile={profilePic ? profilePic : undefined}\n isSearchable={true}\n onSelect={({ item, index, parentIndex }) => onItemSelect({ item, index, parentIndex })}\n />\n ) : (\n <StaticCitizenSideBar logout={onLogout} />\n );\n};","import React, { useRef, useEffect, useState } from \"react\";\nimport { SideNav, Loader } from \"@egovernments/digit-ui-components\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport MediaQuery from 'react-responsive';\n\n\n\n\nconst EmployeeSideBar = () => {\n const { isLoading, data } = Digit.Hooks.useAccessControl();\n const isMultiRootTenant = Digit.Utils.getMultiRootTenant();\n const { t } = useTranslation();\n const navigate = useNavigate();\n const tenantId = Digit?.ULBService?.getStateId();\n\n function extractLeftIcon(data = {}) {\n for (const key in data) {\n const item = data[key];\n if (key === \"item\" && item?.leftIcon !== \"\") {\n return item?.leftIcon;\n }\n if (typeof data[key] === \"object\" && !Array.isArray(data[key])) {\n const subResult = extractLeftIcon(data[key]);\n if (subResult) {\n return subResult;\n }\n }\n }\n return null;\n }\n\n function mergeObjects(obj1, obj2) {\n for (const key in obj2) {\n if (obj2.hasOwnProperty(key)) {\n if (typeof obj2[key] === \"object\" && !Array.isArray(obj2[key])) {\n if (!obj1[key]) {\n obj1[key] = {};\n }\n mergeObjects(obj1[key], obj2[key]);\n } else {\n if (!obj1[key]) {\n obj1[key] = obj2[key];\n }\n }\n }\n }\n }\n\n const configEmployeeSideBar = {};\n data?.actions\n .filter((e) => e.url === \"url\")\n .forEach((item) => {\n let index = item?.path?.split(\".\")?.[0] || \"\";\n if (item?.path !== \"\") {\n const keys = item?.path?.split(\".\");\n let hierarchicalMap = {};\n\n keys.reduce((acc, key, index) => {\n if (index === keys.length - 1) {\n acc[key] = { item };\n } else {\n acc[key] = {};\n return acc[key];\n }\n }, hierarchicalMap);\n mergeObjects(configEmployeeSideBar, hierarchicalMap);\n }\n });\n\n const splitKeyValue = (configEmployeeSideBar) => {\n const objectArray = Object.entries(configEmployeeSideBar);\n objectArray.sort((a, b) => {\n if (a[0] < b[0]) {\n return -1;\n }\n if (a[0] > b[0]) {\n return 1;\n }\n return 0;\n });\n const sortedObject = Object.fromEntries(objectArray);\n configEmployeeSideBar = sortedObject;\n return configEmployeeSideBar;\n };\n\n const navigateToRespectiveURL = (navigate = {}, url = \"\") => {\n if (!url || url === \"/\") return;\n\n //Detect if it's an external link (starts with http or https)\n const isExternal = /^https?:\\/\\//i.test(url);\n\n if (isExternal) {\n //Open external links in a new tab\n window.open(url, \"_blank\", \"noopener,noreferrer\");\n return;\n }\n\n //Internal navigation logic\n if (!url.includes(`/${window?.contextPath}`)) {\n const hostUrl = window.location.origin;\n let updatedUrl;\n\n if (isMultiRootTenant) {\n const contextPath = window?.contextPath || \"sandbox-ui\";\n url = url.replace(`/${contextPath}/employee`, `/${contextPath}/${tenantId}/employee`);\n updatedUrl = url;\n navigate(updatedUrl);\n }\n else{\n updatedUrl = hostUrl + url;\n try {\n if (typeof window !== 'undefined') {\n window.location.href = updatedUrl;\n }\n } catch (error) {\n console.warn('Navigation failed, attempting fallback:', error);\n try {\n window.location.replace(updatedUrl);\n } catch (fallbackError) {\n console.error('All navigation methods failed:', fallbackError);\n }\n }\n }\n } else {\n navigate(url);\n }\n};\n\n const onItemSelect = ({ item, index, parentIndex }) => {\n if (item?.navigationUrl) {\n navigateToRespectiveURL(navigate, item?.navigationUrl);\n } else {\n return;\n } \n };\n\n function transformData(data) {\n const transformItem = (key, value) => {\n if (value.item) {\n return {\n label: t(value.item.displayName),\n icon: { icon: value.item.leftIcon, width: \"1.5rem\", height: \"1.5rem\" },\n navigationUrl: value.item.navigationURL,\n orderNumber:value.item.orderNumber,\n };\n }\n const children = Object.keys(value).map((childKey) => transformItem(childKey, value[childKey]));\n const iconKey = extractLeftIcon(value);\n return {\n label: t(key),\n icon: { icon: iconKey, width: \"1.5rem\", height: \"1.5rem\" },\n children: children,\n };\n };\n return Object.keys(data).map((key) => transformItem(key, data[key]));\n }\n\n const sortDataByOrderNumber = (data) => {\n // Sort the current level of data by orderNumber, handling cases where orderNumber might be missing\n data.sort((a, b) => {\n const aOrder = a.orderNumber !== undefined ? a.orderNumber : Infinity; // Use Infinity if orderNumber is missing\n const bOrder = b.orderNumber !== undefined ? b.orderNumber : Infinity; // Use Infinity if orderNumber is missing\n return aOrder - bOrder;\n });\n \n // Recursively sort the children if they exist\n data.forEach((item) => {\n if (item.children && item.children.length > 0) {\n sortDataByOrderNumber(item.children);\n }\n });\n \n return data;\n };\n\n const transformedData = transformData(splitKeyValue(configEmployeeSideBar));\n const sortedTransformedData= sortDataByOrderNumber(transformedData);\n if (isLoading) {\n return <Loader />;\n }\n\n if (!configEmployeeSideBar) {\n return \"\";\n }\n \n return (\n <MediaQuery minWidth={768}>\n <SideNav\n items={sortedTransformedData}\n hideAccessbilityTools={true}\n onSelect={({ item, index, parentIndex }) => onItemSelect({ item, index, parentIndex })}\n theme={window?.globalConfigs?.getConfig(\"SIDENAV_THEME\") || \"dark\"}\n variant={window?.globalConfigs?.getConfig(\"SIDENAV_VARIANT\") || \"primary\"}\n transitionDuration={\"\"}\n className=\"\"\n styles={{}}\n expandedWidth=\"\"\n collapsedWidth=\"\"\n onBottomItemClick={() => { }}\n />\n </MediaQuery>\n );\n};\n\nexport default EmployeeSideBar;\n\n\n\n\n\n","import React from \"react\";\nimport { CitizenSideBar } from \"./CitizenSideBar\";\nimport EmployeeSideBar from \"./EmployeeSideBar\";\n\nconst SideBar = ({ t, CITIZEN, isSidebarOpen, toggleSidebar, handleLogout, mobileView, userDetails, modules, linkData, islinkDataLoading,userProfile}) => {\n if (CITIZEN)\n return (\n <CitizenSideBar\n isOpen={isSidebarOpen}\n isMobile={true}\n toggleSidebar={toggleSidebar}\n onLogout={handleLogout}\n linkData={linkData}\n islinkDataLoading={islinkDataLoading}\n userProfile={userProfile}\n isEmployee={false}\n />\n );\n else {\n return !isSidebarOpen && userDetails?.access_token ? (\n <div className=\"digit-employeeSidebar\">\n <EmployeeSideBar {...{ mobileView, userDetails, modules }} />\n </div>\n ) : (\n <div className=\"digit-citizenSidebar\">\n <CitizenSideBar\n isOpen={isSidebarOpen}\n isMobile={true}\n toggleSidebar={toggleSidebar}\n onLogout={handleLogout}\n isEmployee={true}\n userProfile={userProfile}\n />\n </div>\n );\n }\n};\n\nexport default SideBar;\n","import React, { useState } from \"react\";\nimport TopBar from \"./TopBar\";\nimport { useNavigate } from \"react-router-dom\";\nimport SideBar from \"./SideBar\";\nimport LogoutDialog from \"../Dialog/LogoutDialog\";\nconst TopBarSideBar = ({\n t,\n stateInfo,\n userDetails,\n CITIZEN,\n cityDetails,\n mobileView,\n handleUserDropdownSelection,\n logoUrl,\n logoUrlWhite,\n showSidebar = true,\n showLanguageChange,\n linkData,\n islinkDataLoading,\n}) => {\n const [isSidebarOpen, toggleSidebar] = useState(false);\n const navigate = useNavigate()\n const [showDialog, setShowDialog] = useState(false);\n const handleLogout = () => {\n toggleSidebar(false);\n setShowDialog(true);\n };\n\n const clearSSOLogoutMarkers = () => {\n localStorage.removeItem(\"sso-provider\");\n localStorage.removeItem(\"sso-client-id\");\n localStorage.removeItem(\"sso-tenant-id\");\n localStorage.removeItem(\"sso-authority\");\n localStorage.removeItem(\"sso-logout-url\");\n localStorage.removeItem(\"sso-logout-redirect-param\");\n };\n\n const getSSOPostLogoutRedirectUri = () => `${window.location.origin}/${window?.contextPath || \"\"}/employee`;\n\n const handleSSOLogout = async () => {\n const provider = localStorage.getItem(\"sso-provider\");\n const normalizedProvider = provider?.toUpperCase();\n const logoutUrlFromConfig = localStorage.getItem(\"sso-logout-url\");\n const redirectParamName = localStorage.getItem(\"sso-logout-redirect-param\") || \"post_logout_redirect_uri\";\n\n // Perform provider-specific cleanup before logout\n if (normalizedProvider === \"GOOGLE\") {\n const token = localStorage.getItem(\"google_access_token\");\n\n try {\n if (window.google?.accounts?.id) {\n window.google.accounts.id.disableAutoSelect();\n }\n\n if (token) {\n await fetch(`https://oauth2.googleapis.com/revoke?token=${encodeURIComponent(token)}`, {\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/x-www-form-urlencoded\",\n },\n });\n localStorage.removeItem(\"google_access_token\");\n }\n } catch (error) {\n console.error(\"Provider cleanup error\", error);\n }\n }\n\n // Generic SSO logout handler\n if (logoutUrlFromConfig) {\n const postLogoutRedirectUri = getSSOPostLogoutRedirectUri();\n clearSSOLogoutMarkers();\n\n try {\n await Digit.UserService.logout();\n } finally {\n try {\n const url = new URL(logoutUrlFromConfig);\n url.searchParams.set(redirectParamName, postLogoutRedirectUri);\n window.location.href = url.toString();\n } catch (error) {\n window.location.href = `${logoutUrlFromConfig}?${redirectParamName}=${encodeURIComponent(postLogoutRedirectUri)}`;\n }\n }\n\n return true;\n }\n\n return false;\n };\n\n const handleOnSubmit = async () => {\n const handledBySSO = await handleSSOLogout();\n if (!handledBySSO) {\n Digit.UserService.logout();\n }\n setShowDialog(false);\n };\n const handleOnCancel = () => {\n setShowDialog(false);\n };\n\n const handleSidebar = () => {\n toggleSidebar(!isSidebarOpen);\n };\n const userProfile = () => {\n CITIZEN ? navigate(`/${window?.contextPath}/citizen/user/profile`) : navigate(`/${window?.contextPath}/employee/user/profile`);\n };\n const userOptions = [\n { name: t(\"EDIT_PROFILE\"), icon: \"Edit\", func: userProfile },\n { name: t(\"CORE_COMMON_LOGOUT\"), icon: \"Logout\", func: handleLogout },\n ];\n\n return (\n <React.Fragment>\n <TopBar\n t={t}\n stateInfo={stateInfo}\n toggleSidebar={handleSidebar}\n isSidebarOpen={isSidebarOpen}\n handleLogout={handleLogout}\n userDetails={userDetails}\n CITIZEN={CITIZEN}\n cityDetails={cityDetails}\n mobileView={mobileView}\n userOptions={userOptions}\n handleUserDropdownSelection={handleUserDropdownSelection}\n logoUrl={logoUrl}\n logoUrlWhite={logoUrlWhite}\n showLanguageChange={showLanguageChange}\n />\n {showDialog && <LogoutDialog onSelect={handleOnSubmit} onCancel={handleOnCancel} onDismiss={handleOnCancel}></LogoutDialog>}\n {!CITIZEN\n ? showSidebar && (\n <SideBar\n t={t}\n CITIZEN={CITIZEN}\n isSidebarOpen={isSidebarOpen}\n toggleSidebar={handleSidebar}\n handleLogout={handleLogout}\n mobileView={mobileView}\n userDetails={userDetails}\n linkData={linkData}\n userProfile={userProfile}\n islinkDataLoading={islinkDataLoading}\n />\n )\n : CITIZEN\n ? showSidebar && isSidebarOpen && (\n <SideBar\n t={t}\n CITIZEN={CITIZEN}\n isSidebarOpen={isSidebarOpen}\n toggleSidebar={handleSidebar}\n handleLogout={handleLogout}\n mobileView={mobileView}\n userDetails={userDetails}\n linkData={linkData}\n userProfile={userProfile}\n islinkDataLoading={islinkDataLoading}\n />\n )\n : null}\n </React.Fragment>\n );\n};\nexport default TopBarSideBar;\n","import React, { useEffect } from 'react';\n\nconst withAutoFocusMain = (WrappedComponent, mainSelector = '.digit-home-main') => {\n return function WithAutoFocusWrapper(props) {\n useEffect(() => {\n const handleFirstTab = (e) => {\n if (e.key === 'Tab') {\n const main = document.querySelector(mainSelector);\n if (main) {\n main.setAttribute('tabindex', '-1');\n main.style.outline = 'none';\n main.focus();\n }\n window.removeEventListener('keydown', handleFirstTab);\n }\n };\n\n window.addEventListener('keydown', handleFirstTab);\n return () => window.removeEventListener('keydown', handleFirstTab);\n }, []);\n\n return <WrappedComponent {...props} />;\n };\n};\n\nexport default withAutoFocusMain;","import React, { useEffect, useRef } from \"react\";\n\nfunction useInterval(callback, delay) {\n const savedCallback = useRef();\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n const timer = setInterval(tick, delay);\n return () => clearInterval(timer);\n }\n }, [delay]);\n}\n\nexport default useInterval;\n","export const useLoginConfig = (stateCode) => {\n const moduleName = Digit.Utils.getConfigModuleName();\n\n return Digit.Hooks.useCommonMDMS(\n stateCode,\n moduleName,\n [\"LoginConfig\"],\n {\n select: (data) => ({\n config: data?.[moduleName]?.LoginConfig,\n }),\n retry: false,\n }\n );\n};\n","import { ArrowForward } from \"@egovernments/digit-ui-svg-components\";\nimport React, { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nconst FaqComponent = (props) => {\n const { question, answer, lastIndex } = props;\n const [isOpen, toggleOpen] = useState(false);\n const { t } = useTranslation();\n\n return (\n <div className=\"faqs border-none\" onClick={() => toggleOpen(!isOpen)}>\n <div className=\"faq-question\" style={{ justifyContent: \"space-between\", display: \"flex\" }}>\n <span>{t(question)}</span>\n <span className={isOpen ? \"faqicon rotate\" : \"faqicon\"} style={{ float: \"right\" }}>\n <ArrowForward />\n </span>\n </div>\n\n <div className=\"faq-answer\" style={isOpen ? { display: \"block\" } : { display: \"none\" }}>\n <span>{t(answer)}</span>\n </div>\n {!lastIndex ? <div className=\"cs-box-border\" /> : null}\n </div>\n );\n};\n\nexport default FaqComponent;\n","import { BackButton, HeaderComponent, Loader ,SearchIconSvg} from \"@egovernments/digit-ui-components\";\nimport React, { Fragment } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport FaqComponent from \"./FaqComponent\";\n\nconst FAQsSection = ({ module }) => {\n const user = Digit.UserService.getUser();\n const tenantId = user?.info?.tenantId || Digit.ULBService.getCurrentTenantId();\n const { t } = useTranslation();\n\n const SearchImg = () => {\n return <SearchIconSvg className=\"signature-img\" />;\n };\n\n const { isLoading, data } = Digit.Hooks.useGetFAQsJSON(Digit.ULBService.getStateId());\n\n const moduleFaqs = data?.MdmsRes[\"common-masters\"]?.faqs[0]?.[`${module}`].faqs;\n\n if (isLoading) {\n return <Loader />;\n }\n return (\n <Fragment>\n <div className=\"faq-page\">\n <BackButton style={{ marginLeft: \"unset\" }}></BackButton>\n <div style={{ marginBottom: \"15px\" }}>\n <HeaderComponent styles={{ marginLeft: \"0px\", paddingTop: \"10px\", fontSize: \"32px\" }}>{t(\"FAQ_S\")}</HeaderComponent>\n </div>\n <div className=\"faq-list\">\n {moduleFaqs.map((faq, i) => (\n <FaqComponent key={\"faq_\" + i} question={faq.question} answer={faq.answer} lastIndex={i === moduleFaqs?.length - 1} />\n ))}\n </div>\n </div>\n </Fragment>\n );\n};\n\nexport default FAQsSection;\n","import { PageBasedInput, Loader, RadioButtons, CardHeader } from \"@egovernments/digit-ui-components\";\nimport React, { useMemo } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\n\nconst LanguageSelection = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n\n const { data: { languages, stateInfo } = {}, isLoading } = Digit.Hooks.useStore.getInitData();\n const selectedLanguage = Digit.StoreData.getCurrentLanguage();\n\n const texts = useMemo(\n () => ({\n header: t(\"CS_COMMON_CHOOSE_LANGUAGE\"),\n submitBarLabel: t(\"CORE_COMMON_CONTINUE\"),\n }),\n [t]\n );\n\n const RadioButtonProps = useMemo(\n () => ({\n options: languages,\n optionsKey: \"label\",\n additionalWrapperClass: \"digit-reverse-radio-selection-wrapper\",\n onSelect: (language) => Digit.LocalizationService.changeLanguage(language.value, stateInfo.code),\n selectedOption: languages?.filter((i) => i.value === selectedLanguage)[0],\n }),\n [selectedLanguage, languages]\n );\n\n function onSubmit() {\n navigate(`/${window?.contextPath}/citizen/select-location`);\n }\n\n return isLoading ? (\n <Loader />\n ) : (\n <div className=\"selection-card-wrapper\">\n <PageBasedInput texts={texts} onSubmit={onSubmit}>\n <CardHeader>{t(\"CS_COMMON_CHOOSE_LANGUAGE\")}</CardHeader>\n <RadioButtons {...RadioButtonProps} />\n </PageBasedInput>\n </div>\n );\n};\n\nexport default LanguageSelection;\n","import { BackLink } from \"@egovernments/digit-ui-components\";\nimport { CardHeader, CardLabelError, PageBasedInput, SearchOnRadioButtons } from \"@egovernments/digit-ui-react-components\";\nimport React, { useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate, useLocation } from \"react-router-dom\";\n\nconst LocationSelection = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const location = useLocation();\nconst {\n data: { stateInfo, uiHomePage } = {},\n isLoading: initisLoading,\n} = Digit.Hooks.useStore.getInitData();\n\nconst redirectURL = uiHomePage?.redirectURL;\n\nconst { data: cities, isLoading } = Digit.Hooks.useTenants();\n\n\n const [selectedCity, setSelectedCity] = useState(() => ({ code: Digit.ULBService.getCitizenCurrentTenant(true) }));\n const [showError, setShowError] = useState(false);\n\n const texts = useMemo(\n () => ({\n header: t(\"CS_COMMON_CHOOSE_LOCATION\"),\n submitBarLabel: t(\"CORE_COMMON_CONTINUE\"),\n }),\n [t]\n );\n\n function selectCity(city) {\n setSelectedCity(city);\n setShowError(false);\n }\n\n const RadioButtonProps = useMemo(() => {\n return {\n options: cities,\n optionsKey:\"i18nKey\",\n additionalWrapperClass: \"digit-reverse-radio-selection-wrapper\",\n onSelect: selectCity,\n selectedOption: selectedCity,\n };\n }, [cities, t, selectedCity]);\n\n function onSubmit() {\n if (selectedCity) {\n Digit.SessionStorage.set(\"CITIZEN.COMMON.HOME.CITY\", selectedCity);\n const redirectBackTo = location.state?.redirectBackTo;\n if(redirectURL){\n navigate(`/${window?.contextPath}/citizen/${redirectURL}`);\n }\n else{\n if (redirectBackTo) {\n navigate(redirectBackTo, {replace:true});\n } else navigate(`/${window?.contextPath}/citizen`);\n }\n } else {\n setShowError(true);\n }\n }\n\n return isLoading ? (\n <loader />\n ) : (\n <div>\n <BackLink onClick={() => window.history.back()}/>\n <PageBasedInput texts={texts} onSubmit={onSubmit} className=\"location-selection-container\">\n <CardHeader>{t(\"CS_COMMON_CHOOSE_LOCATION\")}</CardHeader>\n <SearchOnRadioButtons {...RadioButtonProps} placeholder={t(\"COMMON_TABLE_SEARCH\")} />\n {showError ? <CardLabelError>{t(\"CS_COMMON_LOCATION_SELECTION_ERROR\")}</CardLabelError> : null}\n </PageBasedInput>\n </div>\n );\n};\n\nexport default LocationSelection;\n","import React, { useState, useEffect } from \"react\";\nimport { GalleryIcon, RemoveIcon } from \"@egovernments/digit-ui-react-components\";\nimport { useTranslation } from \"react-i18next\";\n\nfunction UploadDrawer({ setProfilePic, closeDrawer, userType, removeProfilePic ,showToast}) {\n const [uploadedFile, setUploadedFile] = useState(null);\n const [file, setFile] = useState(\"\");\n const [error, setError] = useState(null);\n const { t } = useTranslation();\n const selectfile = (e) => setFile(e.target.files[0]);\n const removeimg = () => {removeProfilePic(); closeDrawer()};\n const onOverlayBodyClick = () => closeDrawer();\n\n useEffect(() => {\n (async () => {\n setError(null);\n if (file) {\n if (file.size >= 1000000) {\n showToast(\"error\", t(\"CORE_COMMON_PROFILE_MAXIMUM_UPLOAD_SIZE_EXCEEDED\"))\n setError(t(\"CORE_COMMON_PROFILE_MAXIMUM_UPLOAD_SIZE_EXCEEDED\"));\n } else {\n try {\n const response = await Digit.UploadServices.Filestorage(`${userType}-profile`, file, Digit.ULBService.getStateId());\n if (response?.data?.files?.length > 0) {\n const fileStoreId = response?.data?.files[0]?.fileStoreId;\n setUploadedFile(fileStoreId);\n setProfilePic(fileStoreId);\n } else {\n showToast(\"error\", t(\"CORE_COMMON_PROFILE_FILE_UPLOAD_ERROR\"))\n setError(t(\"CORE_COMMON_PROFILE_FILE_UPLOAD_ERROR\"));\n }\n } catch (err) {\n showToast(\"error\",t(\"CORE_COMMON_PROFILE_INVALID_FILE_INPUT\"))\n // setError(t(\"PT_FILE_UPLOAD_ERROR\"));\n }\n }\n }\n })();\n }, [file]);\n\n return (\n <React.Fragment>\n <div\n style={{\n position: \"fixed\",\n top: \"0\",\n left: \"0\",\n right: \"0\",\n bottom: \"0\",\n width: \"100%\",\n height: \"100vh\",\n backgroundColor: \"rgba(0,0,0,.5)\",\n // zIndex: \"9998\",\n }}\n onClick={onOverlayBodyClick}\n ></div>\n <div\n style={{\n width: \"100%\",\n justifyContent: \"space-between\",\n display: \"flex\",\n backgroundColor: \"white\",\n alignItems: \"center\",\n position: \"fixed\",\n left: \"0\",\n right: \"0\",\n height: \"20%\",\n bottom: userType === \"citizen\" ? \"2.5rem\" : \"0\",\n zIndex: \"1000\",\n }}\n >\n <div\n style={{ display: \"flex\", flex: \"1\", flexDirection: \"column\", width: \"100%\", justifyContent: \"center\", alignItems: \"center\", gap: \"8px 0\" }}\n >\n <label for=\"file\" style={{ cursor: \"pointer\" }}>\n {\" \"}\n <GalleryIcon />\n </label>\n <label style={{ cursor: \"pointer\" }}> Gallery</label>\n <input type=\"file\" id=\"file\" accept=\"image/*, .png, .jpeg, .jpg\" onChange={selectfile} style={{ display: \"none\" }} />\n </div>\n\n <div\n style={{ display: \"flex\", flex: \"1\", width: \"100%\", justifyContent: \"center\", alignItems: \"center\", flexDirection: \"column\", gap: \"8px 0\" }}\n >\n <button onClick={removeimg}>\n <RemoveIcon />\n </button>\n <label style={{ cursor: \"pointer\" }}>Remove</label>\n </div>\n </div>\n </React.Fragment>\n );\n}\n\nexport default UploadDrawer;\n","import {\n SVG,\n Dropdown,\n LabelFieldPair,\n MobileNumber,\n TextInput,\n CardLabelError,\n BackLink,\n Loader,\n Button,\n SubmitBar,\n Footer,\n CardLabel,\n BreadCrumb,\n Toast,\n ErrorMessage,\n} from \"@egovernments/digit-ui-components\";\nimport { CameraIcon } from \"@egovernments/digit-ui-react-components\";\nimport React, { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport UploadDrawer from \"./ImageUpload/UploadDrawer\";\nimport ImageComponent from \"../../../components/ImageComponent\";\n\nconst DEFAULT_TENANT = Digit?.ULBService?.getStateId?.();\n\nconst defaultImage =\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAO4AAADUCAMAAACs0e/bAAAAM1BMVEXK0eL\" +\n \"/\" +\n \"/\" +\n \"/\" +\n \"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\";\n\nconst defaultValidationConfig = {\n tenantId: `${DEFAULT_TENANT}`,\n UserProfileValidationConfig: [\n {\n name: \"/^[a-zA-Z ]+$/i\",\n mobileNumber: \"/^[6-9]{1}[0-9]{9}$/\",\n password: \"/^([a-zA-Z0-9@#$%]{8,15})$/i\",\n },\n ],\n};\n\nconst IndividualUserProfile = ({ stateCode, userType, cityDetails }) => {\n const navigate = useNavigate();\n const { t } = useTranslation();\n const url = window.location.href;\n const stateId = Digit.ULBService.getStateId();\n const tenant = Digit.ULBService.getCurrentTenantId();\n const userInfo = Digit.UserService.getUser()?.info || {};\n const [userDetails, setUserDetails] = useState(null);\n const [name, setName] = useState(userInfo?.name ? userInfo.name : \"\");\n const [email, setEmail] = useState(userInfo?.emailId ? userInfo.emailId : \"\");\n const [gender, setGender] = useState(userDetails?.gender);\n const [city, setCity] = useState(userInfo?.permanentCity ? userInfo.permanentCity : cityDetails.name);\n const [mobileNumber, setMobileNo] = useState(userInfo?.mobileNumber ? userInfo.mobileNumber : \"\");\n const [profilePic, setProfilePic] = useState(null);\n const [profileImg, setProfileImg] = useState(\"\");\n const [openUploadSlide, setOpenUploadSide] = useState(false);\n const [changepassword, setChangepassword] = useState(false);\n const [currentPassword, setCurrentPassword] = useState(\"\");\n const [newPassword, setNewPassword] = useState(\"\");\n const [confirmPassword, setConfirmPassword] = useState(\"\");\n const [toast, setToast] = useState(null);\n const [loading, setLoading] = useState(false);\n const [windowWidth, setWindowWidth] = React.useState(window.innerWidth);\n const [errors, setErrors] = React.useState({});\n const isMobile = window.Digit.Utils.browser.isMobile();\n const isMultiRootTenant = Digit.Utils.getMultiRootTenant();\n\n const individualServicePath = window?.globalConfigs?.getConfig(\"INDIVIDUAL_SERVICE_CONTEXT_PATH\");\n // const useAnIndividual = window?.globalConfigs?.getConfig(\"USE_INDIVIDUAL_MODEL\"); // Handled in parent\n\n const mapConfigToRegExp = (config) => {\n return (\n config?.UserProfileValidationConfig?.[0] &&\n Object.entries(config?.UserProfileValidationConfig[0]).reduce((acc, [key, value]) => {\n if (typeof value === \"string\") {\n try {\n // Checking if value looks like a regex (starts with \"/\" and ends with \"/flags\")\n if (value.startsWith(\"/\") && value.lastIndexOf(\"/\") > 0) {\n const lastSlashIndex = value.lastIndexOf(\"/\");\n const pattern = value.slice(1, lastSlashIndex); // Extracting regex pattern\n const flags = value.slice(lastSlashIndex + 1); // Extracting regex flags\n\n acc[key] = new RegExp(pattern, flags); // Converting properly\n } else {\n acc[key] = new RegExp(value); // Treating it as a normal regex pattern (no flags)\n }\n } catch (error) {\n console.error(`Error parsing regex for key \"${key}\":`, error);\n acc[key] = value; // Keeping as string if invalid regex\n }\n } else {\n acc[key] = value; // Keeping non-string values as it is\n }\n return acc;\n }, {})\n );\n };\n\n const [validationConfig, setValidationConfig] = useState(mapConfigToRegExp(defaultValidationConfig) || {});\n\n const { data: mdmsValidationData, isValidationConfigLoading } = Digit.Hooks.useCustomMDMS(\n stateCode,\n \"commonUiConfig\",\n [{ name: \"UserProfileValidationConfig\" }],\n {\n select: (data) => {\n return data?.commonUiConfig;\n },\n }\n );\n\n useEffect(() => {\n if (mdmsValidationData && mdmsValidationData?.UserProfileValidationConfig?.[0]) {\n const updatedValidationConfig = mapConfigToRegExp(mdmsValidationData);\n setValidationConfig(updatedValidationConfig);\n }\n }, [mdmsValidationData]);\n\n const getUserInfo = async () => {\n const uuid = userInfo?.uuid;\n\n if (uuid) {\n // New API using health-individual\n const response = await Digit.CustomService.getResponse({\n url: `${individualServicePath}/v1/_search`,\n useCache: false,\n method: \"POST\",\n userService: true,\n params: {\n limit: 1000,\n offset: 0,\n tenantId: tenant,\n },\n body: {\n Individual: {\n userUuid: [uuid],\n tenantId: tenant,\n },\n },\n });\n\n if (response?.Individual?.length) {\n setUserDetails(response.Individual[0]);\n }\n }\n };\n\n React.useEffect(() => {\n window.addEventListener(\"resize\", () => setWindowWidth(window.innerWidth));\n return () => {\n window.removeEventListener(\"resize\", () => setWindowWidth(window.innerWidth));\n };\n });\n\n useEffect(() => {\n setLoading(true);\n\n getUserInfo();\n\n setGender({\n i18nKey: undefined,\n code: userDetails?.gender,\n value: userDetails?.gender,\n });\n\n const thumbs = userDetails?.photo?.split(\",\");\n setProfileImg(thumbs?.at(0));\n\n setLoading(false);\n }, [userDetails !== null]);\n\n let validation = {};\n const editScreen = false; // To-do: Deubug and make me dynamic or remove if not needed\n const onClickAddPic = () => setOpenUploadSide(!openUploadSlide);\n const TogleforPassword = () => setChangepassword(!changepassword);\n const setGenderName = (value) => setGender(value);\n const closeFileUploadDrawer = () => setOpenUploadSide(false);\n\n const setUserName = (value) => {\n setName(value);\n\n if (!validationConfig?.name?.test(value) || value.length === 0 || value.length > 50) {\n setErrors({\n ...errors,\n userName: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_NAME_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, userName: null });\n }\n };\n\n const setUserEmailAddress = (value) => {\n if (userInfo?.userName !== value) {\n setEmail(value);\n\n if (value.length && !(value.includes(\"@\") && value.includes(\".\"))) {\n setErrors({\n ...errors,\n emailAddress: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_EMAIL_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, emailAddress: null });\n }\n } else {\n setErrors({ ...errors, emailAddress: null });\n }\n };\n\n const setUserMobileNumber = (value) => {\n setMobileNo(value);\n\n if (userType === \"employee\" && !validationConfig?.mobileNumber?.test(value)) {\n setErrors({\n ...errors,\n mobileNumber: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_MOBILE_NUMBER_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, mobileNumber: null });\n }\n };\n\n const setUserCurrentPassword = (value) => {\n if (!validationConfig?.password.test(value)) {\n setErrors({\n ...errors,\n currentPassword: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_PASSWORD_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, currentPassword: null });\n }\n };\n\n const setUserNewPassword = (value) => {\n setNewPassword(value);\n if (!validationConfig?.password.test(value)) {\n setErrors({\n ...errors,\n newPassword: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_PASSWORD_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, newPassword: null });\n }\n };\n\n const setUserConfirmPassword = (value) => {\n setConfirmPassword(value);\n\n if (!validationConfig?.password.test(value)) {\n setErrors({\n ...errors,\n confirmPassword: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_PASSWORD_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, confirmPassword: null });\n }\n };\n\n const removeProfilePic = () => {\n setProfilePic(null);\n setProfileImg(null);\n };\n\n const showToast = (type, message, duration = 5000) => {\n setToast({ key: type, action: message });\n setTimeout(() => {\n setToast(null);\n }, duration);\n };\n\n const updateProfile = async () => {\n setLoading(true);\n try {\n if (name) {\n setName((prev) => prev.trim());\n }\n\n if (!validationConfig?.name.test(name) || name === \"\" || name.length > 50 || name.length < 1) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_NAME_INVALID\"),\n });\n }\n\n if (userType === \"employee\" && !validationConfig?.mobileNumber.test(mobileNumber)) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_MOBILE_NUMBER_INVALID\"),\n });\n }\n\n if (email.length && !(email.includes(\"@\") && email.includes(\".\"))) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_EMAIL_INVALID\"),\n });\n }\n\n const trimmedCurrentPassword = currentPassword.trim();\n const trimmedNewPassword = newPassword.trim();\n const trimmedConfirmPassword = confirmPassword.trim();\n\n setCurrentPassword(trimmedCurrentPassword);\n setNewPassword(trimmedNewPassword);\n setConfirmPassword(trimmedConfirmPassword);\n\n if (changepassword && (trimmedCurrentPassword && trimmedNewPassword && trimmedConfirmPassword)) {\n if (trimmedNewPassword !== trimmedConfirmPassword) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_PASSWORD_MISMATCH\"),\n });\n }\n\n if (!(trimmedCurrentPassword.length && trimmedNewPassword.length && trimmedConfirmPassword.length)) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_PASSWORD_INVALID\"),\n });\n }\n\n if (!validationConfig?.password.test(trimmedNewPassword) && !validationConfig?.password.test(trimmedConfirmPassword)) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_PASSWORD_INVALID\"),\n });\n }\n }\n\n let responseInfo;\n\n // Build Individual object dynamically\n const individualPayload = {\n ...userDetails,\n tenantId: tenant,\n name: {\n givenName: name.trim(),\n familyName: userDetails?.name?.familyName,\n otherNames: userDetails?.name?.otherNames,\n },\n mobileNumber: mobileNumber,\n isDeleted: false,\n isSystemUser: true,\n isSystemUserActive: true,\n };\n\n // Only add optional fields if they have values\n if (gender?.value) {\n individualPayload.gender = gender.value;\n }\n\n if (email) {\n individualPayload.email = email;\n }\n\n if (profilePic) {\n individualPayload.photo = profilePic;\n }\n\n const response = await Digit.CustomService.getResponse({\n url: `${individualServicePath}/v1/_update`,\n useCache: false,\n method: \"POST\",\n userService: true,\n body: {\n Individual: individualPayload,\n },\n });\n responseInfo = response?.responseInfo;\n \n\n\n if (responseInfo && responseInfo.status === \"200\") {\n const user = Digit.UserService.getUser();\n\n if (user) {\n Digit.UserService.setUser({\n ...user,\n info: {\n ...user.info,\n name,\n mobileNumber,\n emailId: email,\n permanentCity: city,\n },\n });\n }\n }\n\n if (currentPassword.length && newPassword.length && confirmPassword.length) {\n const requestData = {\n existingPassword: currentPassword,\n newPassword: newPassword,\n tenantId: tenant,\n type: \"EMPLOYEE\",\n username: userInfo?.userName,\n confirmPassword: confirmPassword,\n };\n\n if (newPassword === confirmPassword) {\n try {\n const res = await Digit.UserService.changePassword(requestData, tenant);\n\n const { responseInfo: changePasswordResponseInfo } = res;\n if (changePasswordResponseInfo?.status && changePasswordResponseInfo.status === \"200\") {\n showToast(\"success\", t(\"CORE_COMMON_PROFILE_UPDATE_SUCCESS_WITH_PASSWORD\"), 5000);\n setTimeout(() => Digit.UserService.logout(), 2000);\n } else {\n throw \"\";\n }\n } catch (error) {\n throw JSON.stringify({\n type: \"error\",\n message: error.Errors?.at(0)?.description ? error.Errors.at(0).description : \"CORE_COMMON_PROFILE_UPDATE_ERROR_WITH_PASSWORD\",\n });\n }\n } else {\n throw JSON.stringify({\n type: \"error\",\n message: \"CORE_COMMON_PROFILE_ERROR_PASSWORD_NOT_MATCH\",\n });\n }\n } else if (responseInfo?.status && responseInfo.status === \"200\") {\n showToast(\"success\", t(\"CORE_COMMON_PROFILE_UPDATE_SUCCESS\"), 5000);\n }\n } catch (error) {\n let errorObj;\n try {\n errorObj = JSON.parse(error);\n } catch (e) {\n errorObj = {\n type: \"error\",\n message: error?.response?.data?.Errors?.[0]?.description || \"CORE_COMMON_PROFILE_UPDATE_ERROR\",\n };\n }\n showToast(errorObj.type, t(errorObj.message), 5000);\n }\n\n setLoading(false);\n };\n\n let menu = [];\n const { data: Menu } = Digit.Hooks.useGenderMDMS(stateId, \"common-masters\", \"GenderType\");\n Menu &&\n Menu.map((genderDetails) => {\n menu.push({\n i18nKey: `PT_COMMON_GENDER_${genderDetails.code}`,\n code: `${genderDetails.code}`,\n value: `${genderDetails.code}`,\n });\n });\n\n const setFileStoreId = async (fileStoreId) => {\n setProfilePic(fileStoreId);\n\n const thumbnails = fileStoreId ? await getThumbnails([fileStoreId], stateId) : null;\n\n setProfileImg(thumbnails?.thumbs[0]);\n\n closeFileUploadDrawer();\n };\n\n const getThumbnails = async (ids, tenantId) => {\n const res = await Digit.UploadServices.Filefetch(ids, tenantId);\n if (res.data.fileStoreIds && res.data.fileStoreIds.length !== 0) {\n return {\n thumbs: res.data.fileStoreIds.map((o) => o.url.split(\",\")[3]),\n images: res.data.fileStoreIds.map((o) => Digit.Utils.getFileUrl(o.url)),\n };\n } else {\n return null;\n }\n };\n\n if (loading || isValidationConfigLoading) return <Loader></Loader>;\n\n // ... (RENDER JSX FROM NEW FILE) ...\n return (\n <div className={`user-profile ${userType === \"citizen\" ? \"citizen\" : \"employee\"}`}>\n <section style={{ margin: userType === \"citizen\" || isMobile ? \"8px\" : \"0px\" }}>\n {userType === \"citizen\" || isMobile ? (\n <BackLink onClick={() => navigate(-1)} />\n ) : (\n <BreadCrumb\n style={{ marginTop: \"0rem\", marginBottom: \"1.5rem\" }}\n crumbs={[\n {\n internalLink: isMultiRootTenant ? `/${window?.contextPath}/employee/sandbox/landing` : `/${window?.contextPath}/employee`,\n content: t(\"ES_COMMON_HOME\"),\n show: true,\n },\n {\n internalLink: `/${window?.contextPath}/employee/user/profile`,\n content: t(\"ES_COMMON_PAGE_1\"),\n show: url.includes(\"/user/profile\"),\n },\n ]}\n />\n )}\n </section>\n <div\n style={{\n display: \"flex\",\n flex: 1,\n flexDirection: windowWidth < 768 || userType === \"citizen\" ? \"column\" : \"row\",\n margin: userType === \"citizen\" ? \"8px\" : \"0px\",\n gap: userType === \"citizen\" ? \"\" : \"0 24px\",\n boxShadow: userType === \"citizen\" ? \"1px 1px 4px 0px rgba(0,0,0,0.2)\" : \"\",\n background: userType === \"citizen\" ? \"white\" : \"\",\n borderRadius: userType === \"citizen\" ? \"4px\" : \"\",\n maxWidth: userType === \"citizen\" ? \"960px\" : \"\",\n }}\n >\n <section\n style={{\n position: \"relative\",\n display: \"flex\",\n flex: userType === \"citizen\" ? 1 : 2.5,\n justifyContent: \"center\",\n alignItems: \"center\",\n maxWidth: \"100%\",\n // height: \"376px\",\n borderRadius: \"4px\",\n boxShadow: userType === \"citizen\" ? \"\" : \"1px 1px 4px 0px rgba(0,0,0,0.2)\",\n border: `${userType === \"citizen\" ? \"8px\" : \"24px\"} solid #fff`,\n background: \"#EEEEEE\",\n padding: userType === \"citizen\" ? \"8px\" : \"16px\",\n }}\n >\n <div\n style={{\n position: \"relative\",\n height: userType === \"citizen\" ? \"114px\" : \"150px\",\n width: userType === \"citizen\" ? \"114px\" : \"150px\",\n margin: \"16px\",\n }}\n >\n <ImageComponent\n style={{\n margin: \"auto\",\n borderRadius: \"300px\",\n justifyContent: \"center\",\n height: \"100%\",\n width: \"100%\",\n }}\n src={!profileImg || profileImg === \"\" ? defaultImage : profileImg}\n alt=\"Profile Image\"\n />\n\n <button\n style={{\n position: \"absolute\",\n left: \"50%\",\n bottom: \"-24px\",\n transform: \"translateX(-50%)\",\n }}\n onClick={onClickAddPic}\n >\n <CameraIcon />\n </button>\n </div>\n </section>\n <section\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n flex: userType === \"citizen\" ? 1 : 7.5,\n width: \"100%\",\n borderRadius: \"4px\",\n height: \"fit-content\",\n boxShadow: userType === \"citizen\" ? \"\" : \"1px 1px 4px 0px rgba(0,0,0,0.2)\",\n background: \"white\",\n padding: userType === \"citizen\" ? \"8px\" : \"24px\",\n paddingBottom: \"20px\",\n }}\n >\n {userType === \"citizen\" ? (\n <React.Fragment>\n <LabelFieldPair>\n <CardLabel className=\"user-profile\" style={editScreen ? { color: \"#B1B4B6\" } : {}}>\n {`${t(\"CORE_COMMON_PROFILE_NAME\")}`}*\n </CardLabel>\n <div style={{ width: \"100%\", maxWidth: \"960px\" }}>\n <TextInput\n t={t}\n style={{ width: \"100%\" }}\n type={\"text\"}\n isMandatory={false}\n name=\"name\"\n value={name}\n onChange={(e) => setUserName(e.target.value)}\n {...(validation = {\n isRequired: true,\n pattern:\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.name || defaultValidationConfig?.UserProfileValidationConfig?.[0]?.name,\n type: \"tel\",\n title: t(\"CORE_COMMON_PROFILE_NAME_ERROR_MESSAGE\"),\n })}\n disable={editScreen}\n />\n {/* {errors?.userName && (\n <CardLabelError>\n {\" \"}\n {t(errors?.userName?.message)}{\" \"}\n </CardLabelError>\n )} */}\n {errors?.userName && (\n <ErrorMessage\n message={t(errors?.userName?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair>\n <CardLabel className=\"user-profile\" style={editScreen ? { color: \"#B1B4B6\" } : {}}>{`${t(\"CORE_COMMON_PROFILE_GENDER\")}`}</CardLabel>\n <Dropdown\n style={{ width: \"100%\", fontSize: \"1rem\" }}\n className=\"form-field profileDropdown\"\n selected={gender?.length === 1 ? gender[0] : gender}\n disable={gender?.length === 1 || editScreen}\n option={menu}\n select={setGenderName}\n value={gender}\n optionKey=\"code\"\n t={t}\n name=\"gender\"\n />\n </LabelFieldPair>\n\n <LabelFieldPair>\n <CardLabel className=\"user-profile\" style={editScreen ? { color: \"#B1B4B6\" } : {}}>{`${t(\"CORE_COMMON_PROFILE_EMAIL\")}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n style={{ width: \"100%\" }}\n type={\"email\"}\n isMandatory={false}\n optionKey=\"i18nKey\"\n name=\"email\"\n value={email}\n onChange={(e) => setUserEmailAddress(e.target.value)}\n disabled={editScreen}\n />\n {errors?.emailAddress && (\n <ErrorMessage\n message={t(errors?.emailAddress?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <button\n onClick={updateProfile}\n style={{\n marginTop: \"24px\",\n backgroundColor: \"#c84c0e\",\n width: \"100%\",\n height: \"40px\",\n color: \"white\",\n\n maxWidth: isMobile ? \"100%\" : \"240px\",\n borderBottom: \"1px solid black\",\n }}\n >\n {t(\"CORE_COMMON_SAVE\")}\n </button>\n </React.Fragment>\n ) : (\n <React.Fragment>\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel className=\"profile-label-margin\" style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}>\n {`${t(\"CORE_COMMON_PROFILE_NAME\")}`}*\n </CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"text\"}\n isMandatory={false}\n name=\"name\"\n value={name}\n onChange={(e) => setUserName(e.target.value)}\n placeholder=\"Enter Your Name\"\n {...(validation = {\n isRequired: true,\n pattern:\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.name || defaultValidationConfig?.UserProfileValidationConfig?.[0]?.name,\n type: \"text\",\n title: t(\"CORE_COMMON_PROFILE_NAME_ERROR_MESSAGE\"),\n })}\n disabled={editScreen}\n />\n {errors?.userName && (\n <ErrorMessage\n message={t(errors?.userName?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel className=\"profile-label-margin\" style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}>{`${t(\n \"CORE_COMMON_PROFILE_GENDER\"\n )}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <Dropdown\n className=\"profileDropdown\"\n selected={gender?.length === 1 ? gender[0] : gender}\n disable={gender?.length === 1 || editScreen}\n option={menu}\n select={setGenderName}\n value={gender}\n optionKey=\"code\"\n t={t}\n name=\"gender\"\n />\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel className=\"profile-label-margin\" style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}>{`${t(\n \"CORE_COMMON_PROFILE_CITY\"\n )}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"text\"}\n isMandatory={false}\n name=\"city\"\n value={t(Digit.Utils.locale.getTransformedLocale(`TENANT_TENANTS_${tenant}`))}\n onChange={(e) => setCity(e.target.value)}\n placeholder=\"Enter Your City Name\"\n {...(validation = {\n isRequired: true,\n // pattern: \"^[a-zA-Z-.`' ]*$\",\n type: \"text\",\n title: t(\"CORE_COMMON_PROFILE_CITY_ERROR_MESSAGE\"),\n })}\n disabled={true}\n />\n <ErrorMessage />\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel className=\"profile-label-margin\" style={{ width: \"300px\" }}>{`${t(\"CORE_COMMON_PROFILE_MOBILE_NUMBER\")}*`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <MobileNumber\n value={mobileNumber}\n style={{ width: \"100%\" }}\n name=\"mobileNumber\"\n placeholder=\"Enter a valid Mobile No.\"\n onChange={(value) => setUserMobileNumber(value)}\n disable={Digit.Utils.getMultiRootTenant() ? false : true}\n {...{\n required: true,\n pattern:\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.mobileNumber ||\n defaultValidationConfig?.UserProfileValidationConfig?.[0]?.mobileNumber,\n type: \"tel\",\n title: t(\"CORE_COMMON_PROFILE_MOBILE_NUMBER_INVALID\"),\n }}\n />\n {errors?.mobileNumber && (\n <ErrorMessage\n message={t(errors?.mobileNumber?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel className=\"profile-label-margin\" style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}>{`${t(\n \"CORE_COMMON_PROFILE_EMAIL\"\n )}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"email\"}\n isMandatory={false}\n placeholder={t(\"EMAIL_VALIDATION\")}\n optionKey=\"i18nKey\"\n name=\"email\"\n value={email}\n onChange={(e) => setUserEmailAddress(e.target.value)}\n disabled={Digit.Utils.getMultiRootTenant() ? true : editScreen}\n />\n {errors?.emailAddress && (\n <ErrorMessage\n message={t(errors?.emailAddress?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair>\n <div style={{ width: \"100%\" }}>\n {changepassword == false && !Digit.Utils.getOTPBasedLogin() ? (\n <Button\n label={t(\"CORE_COMMON_CHANGE_PASSWORD\")}\n variation={\"teritiary\"}\n onClick={TogleforPassword}\n style={{ paddingLeft: \"20rem\" }}\n ></Button>\n ) : null}\n {changepassword ? (\n <div style={{ marginTop: \"10px\" }}>\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel\n className=\"profile-label-margin\"\n style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}\n >{`${t(\"CORE_COMMON_PROFILE_CURRENT_PASSWORD\")}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"password\"}\n isMandatory={false}\n name=\"name\"\n pattern={\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.password ||\n defaultValidationConfig?.UserProfileValidationConfig?.[0]?.password\n }\n onChange={(e) => setUserCurrentPassword(e?.target?.value)}\n disabled={editScreen}\n />\n {errors?.currentPassword && (\n <ErrorMessage\n message={t(errors?.currentPassword?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel\n className=\"profile-label-margin\"\n style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}\n >{`${t(\"CORE_COMMON_PROFILE_NEW_PASSWORD\")}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"password\"}\n isMandatory={false}\n name=\"name\"\n pattern={\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.password ||\n defaultValidationConfig?.UserProfileValidationConfig?.[0]?.password\n }\n onChange={(e) => setUserNewPassword(e?.target?.value)}\n disabled={editScreen}\n />\n {errors?.newPassword && (\n <ErrorMessage\n message={t(errors?.newPassword?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel\n className=\"profile-label-margin\"\n style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}\n >{`${t(\"CORE_COMMON_PROFILE_CONFIRM_PASSWORD\")}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"password\"}\n isMandatory={false}\n name=\"name\"\n pattern={\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.password ||\n defaultValidationConfig?.UserProfileValidationConfig?.[0]?.password\n }\n onChange={(e) => setUserConfirmPassword(e?.target?.value)}\n disabled={editScreen}\n />\n {errors?.confirmPassword && (\n <ErrorMessage\n message={t(errors?.confirmPassword?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n </div>\n ) : (\n \"\"\n )}\n </div>\n </LabelFieldPair>\n {userType === \"employee\" && isMobile ? (\n <button\n onClick={updateProfile}\n style={{\n marginTop: \"24px\",\n backgroundColor: \"#c84c0e\",\n width: \"100%\",\n height: \"40px\",\n color: \"white\",\n maxWidth: isMobile ? \"100%\" : \"240px\",\n borderBottom: \"1px solid black\",\n fontWeight: \"700\",\n fontSize: \"17px\",\n }}\n >\n {t(\"CORE_COMMON_SAVE\")}\n </button>\n ) : null}\n </React.Fragment>\n )}\n </section>\n </div>\n\n {userType === \"employee\" && !isMobile ? (\n <Footer actionFields={[<SubmitBar t={t} label={t(\"CORE_COMMON_SAVE\")} onSubmit={updateProfile} />]} className=\"\" setactionFieldsToRight />\n ) : null}\n {toast && (\n <Toast\n type={toast.key}\n label={t(toast.key === \"success\" ? `CORE_COMMON_PROFILE_UPDATE_SUCCESS` : toast.action)}\n onClose={() => setToast(null)}\n style={{ maxWidth: \"670px\" }}\n />\n )}\n\n {openUploadSlide == true ? (\n <UploadDrawer\n setProfilePic={setFileStoreId}\n closeDrawer={closeFileUploadDrawer}\n userType={userType}\n removeProfilePic={removeProfilePic}\n showToast={showToast}\n />\n ) : (\n \"\"\n )}\n </div>\n );\n};\n\nexport default IndividualUserProfile;","import {\n SVG,\n Dropdown,\n LabelFieldPair,\n MobileNumber,\n TextInput,\n CardLabelError,\n BackLink,\n Loader,\n Button,\n SubmitBar,\n Footer,\n CardLabel,\n BreadCrumb,\n Toast,\n ErrorMessage,\n} from \"@egovernments/digit-ui-components\";\nimport { CameraIcon } from \"@egovernments/digit-ui-react-components\";\nimport React, { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport UploadDrawer from \"./ImageUpload/UploadDrawer\";\nimport ImageComponent from \"../../../components/ImageComponent\";\nimport IndividualUserProfile from \"./IndividualUserProfile\";\n\nconst DEFAULT_TENANT=Digit?.ULBService?.getStateId?.();\n\nconst defaultImage =\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAO4AAADUCAMAAACs0e/bAAAAM1BMVEXK0eL\" +\n \"/\" +\n \"/\" +\n \"/\" +\n \"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\";\n\nconst defaultValidationConfig = {\n tenantId: `${DEFAULT_TENANT}`,\n UserProfileValidationConfig: [\n {\n name: \"/^[a-zA-Z ]+$/i\",\n mobileNumber: \"/^[6-9]{1}[0-9]{9}$/\",\n password: \"/^([a-zA-Z0-9@#$%]{8,15})$/i\",\n },\n ],\n};\n\nconst UserProfile = ({ stateCode, userType, cityDetails }) => {\n\n // Check if individual should be used for login\n const useAnIndividual = window?.globalConfigs?.getConfig(\"USE_INDIVIDUAL_MODEL\");\n const individualServicePath = window?.globalConfigs?.getConfig(\"INDIVIDUAL_SERVICE_CONTEXT_PATH\");\n\n // If useAnIndividual exists, use IndividualLogin component\n if (useAnIndividual && individualServicePath) {\n return <IndividualUserProfile stateCode={stateCode} userType={userType} cityDetails={cityDetails} />;\n }\n \n const navigate = useNavigate();\n const { t } = useTranslation();\n const url = window.location.href;\n const stateId = Digit.ULBService.getStateId();\n const tenant = Digit.ULBService.getCurrentTenantId();\n const userInfo = Digit.UserService.getUser()?.info || {};\n const [userDetails, setUserDetails] = useState(null);\n const [name, setName] = useState(userInfo?.name ? userInfo.name : \"\");\n const [email, setEmail] = useState(userInfo?.emailId ? userInfo.emailId : \"\");\n const [gender, setGender] = useState(userDetails?.gender);\n const [city, setCity] = useState(userInfo?.permanentCity ? userInfo.permanentCity : cityDetails.name);\n const [mobileNumber, setMobileNo] = useState(userInfo?.mobileNumber ? userInfo.mobileNumber : \"\");\n const [profilePic, setProfilePic] = useState(null);\n const [profileImg, setProfileImg] = useState(\"\");\n const [openUploadSlide, setOpenUploadSide] = useState(false);\n const [changepassword, setChangepassword] = useState(false);\n const [currentPassword, setCurrentPassword] = useState(\"\");\n const [newPassword, setNewPassword] = useState(\"\");\n const [confirmPassword, setConfirmPassword] = useState(\"\");\n const [toast, setToast] = useState(null);\n const [loading, setLoading] = useState(false);\n const [windowWidth, setWindowWidth] = React.useState(window.innerWidth);\n const [errors, setErrors] = React.useState({});\n const isMobile = window.Digit.Utils.browser.isMobile();\n const isMultiRootTenant = Digit.Utils.getMultiRootTenant();\n\n const mapConfigToRegExp = (config) => {\n return (\n config?.UserProfileValidationConfig?.[0] &&\n Object.entries(config?.UserProfileValidationConfig[0]).reduce((acc, [key, value]) => {\n if (typeof value === \"string\") {\n try {\n // Checking if value looks like a regex (starts with \"/\" and ends with \"/flags\")\n if (value.startsWith(\"/\") && value.lastIndexOf(\"/\") > 0) {\n const lastSlashIndex = value.lastIndexOf(\"/\");\n const pattern = value.slice(1, lastSlashIndex); // Extracting regex pattern\n const flags = value.slice(lastSlashIndex + 1); // Extracting regex flags\n \n acc[key] = new RegExp(pattern, flags); // Converting properly\n } else {\n acc[key] = new RegExp(value); // Treating it as a normal regex pattern (no flags)\n }\n } catch (error) {\n console.error(`Error parsing regex for key \"${key}\":`, error);\n acc[key] = value; // Keeping as string if invalid regex\n }\n } else {\n acc[key] = value; // Keeping non-string values as it is\n }\n return acc;\n }, {})\n );\n };\n\n const [validationConfig, setValidationConfig] = useState(mapConfigToRegExp(defaultValidationConfig) || {});\n\n const { data: mdmsValidationData, isValidationConfigLoading } = Digit.Hooks.useCustomMDMS(\n stateCode,\n \"commonUiConfig\",\n [{ name: \"UserProfileValidationConfig\" }],\n {\n select: (data) => {\n return data?.commonUiConfig;\n },\n }\n );\n\n useEffect(() => {\n if (mdmsValidationData && mdmsValidationData?.UserProfileValidationConfig?.[0]) {\n const updatedValidationConfig = mapConfigToRegExp(mdmsValidationData);\n setValidationConfig(updatedValidationConfig);\n }\n }, [mdmsValidationData]);\n\n const getUserInfo = async () => {\n const uuid = userInfo?.uuid;\n if (uuid) {\n const usersResponse = await Digit.UserService.userSearch(tenant, { uuid: [uuid] }, {});\n usersResponse && usersResponse.user && usersResponse.user.length && setUserDetails(usersResponse.user[0]);\n }\n };\n\n React.useEffect(() => {\n const handleResize = () => setWindowWidth(window.innerWidth);\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n\n useEffect(() => {\n setLoading(true);\n\n getUserInfo();\n\n setGender({\n i18nKey: undefined,\n code: userDetails?.gender,\n value: userDetails?.gender,\n });\n\n const thumbs = userDetails?.photo?.split(\",\");\n setProfileImg(thumbs?.at(0));\n\n setLoading(false);\n }, [userDetails !== null]);\n\n let validation = {};\n const editScreen = false; // To-do: Deubug and make me dynamic or remove if not needed\n const onClickAddPic = () => setOpenUploadSide(!openUploadSlide);\n const TogleforPassword = () => setChangepassword(!changepassword);\n const setGenderName = (value) => setGender(value);\n const closeFileUploadDrawer = () => setOpenUploadSide(false);\n\n const setUserName = (value) => {\n setName(value);\n\n if (!validationConfig?.name?.test(value) || value.length === 0 || value.length > 50) {\n setErrors({\n ...errors,\n userName: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_NAME_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, userName: null });\n }\n };\n\n const setUserEmailAddress = (value) => {\n if (userInfo?.userName !== value) {\n setEmail(value);\n\n if (value.length && !(value.includes(\"@\") && value.includes(\".\"))) {\n setErrors({\n ...errors,\n emailAddress: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_EMAIL_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, emailAddress: null });\n }\n } else {\n setErrors({ ...errors, emailAddress: null });\n }\n };\n\n const setUserMobileNumber = (value) => {\n setMobileNo(value);\n\n if (userType === \"employee\" && !validationConfig?.mobileNumber?.test(value)) {\n setErrors({\n ...errors,\n mobileNumber: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_MOBILE_NUMBER_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, mobileNumber: null });\n }\n };\n\n const setUserCurrentPassword = (value) => {\n if (!validationConfig?.password.test(value)) {\n setErrors({\n ...errors,\n currentPassword: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_PASSWORD_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, currentPassword: null });\n }\n };\n\n const setUserNewPassword = (value) => {\n setNewPassword(value);\n if (!validationConfig?.password.test(value)) {\n setErrors({\n ...errors,\n newPassword: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_PASSWORD_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, newPassword: null });\n }\n };\n\n const setUserConfirmPassword = (value) => {\n setConfirmPassword(value);\n\n if (!validationConfig?.password.test(value)) {\n setErrors({\n ...errors,\n confirmPassword: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_PASSWORD_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, confirmPassword: null });\n }\n };\n\n const removeProfilePic = () => {\n setProfilePic(null);\n setProfileImg(null);\n };\n\n const showToast = (type, message, duration = 5000) => {\n setToast({ key: type, action: message });\n setTimeout(() => {\n setToast(null);\n }, duration);\n };\n\n const updateProfile = async () => {\n setLoading(true);\n try {\n const requestData = {\n ...userInfo,\n name,\n gender: gender?.value,\n emailId: email,\n photo: profilePic,\n };\n\n if(name){\n setName((prev)=>prev.trim());\n }\n\n if (!validationConfig?.name.test(name) || name === \"\" || name.length > 50 || name.length < 1) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_NAME_INVALID\"),\n });\n }\n\n if (userType === \"employee\" && !validationConfig?.mobileNumber.test(mobileNumber)) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_MOBILE_NUMBER_INVALID\"),\n });\n }\n\n if (email.length && !(email.includes(\"@\") && email.includes(\".\"))) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_EMAIL_INVALID\"),\n });\n }\n const trimmedCurrentPassword = currentPassword.trim();\n const trimmedNewPassword = newPassword.trim();\n const trimmedConfirmPassword = confirmPassword.trim();\n\n // Updating state with trimmed values\n setCurrentPassword(trimmedCurrentPassword);\n setNewPassword(trimmedNewPassword);\n setConfirmPassword(trimmedConfirmPassword);\n \n\n if (changepassword && (trimmedCurrentPassword && trimmedNewPassword && trimmedConfirmPassword)) {\n if (trimmedNewPassword !== trimmedConfirmPassword) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_PASSWORD_MISMATCH\"),\n });\n }\n\n if (!(trimmedCurrentPassword.length && trimmedNewPassword.length && trimmedConfirmPassword.length)) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_PASSWORD_INVALID\"),\n });\n }\n\n if (!validationConfig?.password.test(trimmedNewPassword) && !validationConfig?.password.test(trimmedConfirmPassword)) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_PASSWORD_INVALID\"),\n });\n }\n }\n\n const { responseInfo, user } = await Digit.UserService.updateUser(requestData, stateCode);\n\n if (responseInfo && responseInfo.status === \"200\") {\n const user = Digit.UserService.getUser();\n\n if (user) {\n Digit.UserService.setUser({\n ...user,\n info: {\n ...user.info,\n name,\n mobileNumber,\n emailId: email,\n permanentCity: city,\n },\n });\n }\n }\n\n if (currentPassword.length && newPassword.length && confirmPassword.length) {\n const requestData = {\n existingPassword: currentPassword,\n newPassword: newPassword,\n tenantId: tenant,\n type: \"EMPLOYEE\",\n username: userInfo?.userName,\n confirmPassword: confirmPassword,\n };\n\n if (newPassword === confirmPassword) {\n try {\n const res = await Digit.UserService.changePassword(requestData, tenant);\n\n const { responseInfo: changePasswordResponseInfo } = res;\n if (changePasswordResponseInfo?.status && changePasswordResponseInfo.status === \"200\") {\n showToast(\"success\", t(\"CORE_COMMON_PROFILE_UPDATE_SUCCESS_WITH_PASSWORD\"), 5000);\n setTimeout(() => Digit.UserService.logout(), 2000);\n } else {\n throw \"\";\n }\n } catch (error) {\n throw JSON.stringify({\n type: \"error\",\n message: error.Errors?.at(0)?.description ? error.Errors.at(0).description : \"CORE_COMMON_PROFILE_UPDATE_ERROR_WITH_PASSWORD\",\n });\n }\n } else {\n throw JSON.stringify({\n type: \"error\",\n message: \"CORE_COMMON_PROFILE_ERROR_PASSWORD_NOT_MATCH\",\n });\n }\n } else if (responseInfo?.status && responseInfo.status === \"200\") {\n showToast(\"success\", t(\"CORE_COMMON_PROFILE_UPDATE_SUCCESS\"), 5000);\n }\n } catch (error) {\n const errorObj = JSON.parse(error);\n showToast(errorObj.type, t(errorObj.message), 5000);\n }\n\n setLoading(false);\n };\n\n let menu = [];\n const { data: Menu } = Digit.Hooks.useGenderMDMS(stateId, \"common-masters\", \"GenderType\");\n Menu &&\n Menu.map((genderDetails) => {\n menu.push({\n i18nKey: `PT_COMMON_GENDER_${genderDetails.code}`,\n code: `${genderDetails.code}`,\n value: `${genderDetails.code}`,\n });\n });\n\n const setFileStoreId = async (fileStoreId) => {\n setProfilePic(fileStoreId);\n\n const thumbnails = fileStoreId ? await getThumbnails([fileStoreId], stateId) : null;\n\n setProfileImg(thumbnails?.thumbs[0]);\n\n closeFileUploadDrawer();\n };\n\n const getThumbnails = async (ids, tenantId) => {\n const res = await Digit.UploadServices.Filefetch(ids, tenantId);\n if (res.data.fileStoreIds && res.data.fileStoreIds.length !== 0) {\n return {\n thumbs: res.data.fileStoreIds.map((o) => o.url.split(\",\")[3]),\n images: res.data.fileStoreIds.map((o) => Digit.Utils.getFileUrl(o.url)),\n };\n } else {\n return null;\n }\n };\n\n if (loading || isValidationConfigLoading) return <Loader></Loader>;\n\n return (\n <div className={`user-profile ${userType === \"citizen\" ? \"citizen\" : \"employee\"}`}>\n <section style={{ margin: userType === \"citizen\" || isMobile ? \"8px\" : \"0px\" }}>\n {userType === \"citizen\" || isMobile ? (\n <BackLink onClick={() => navigate(\"/\")} />\n ) : (\n <BreadCrumb\n style={{ marginTop: \"0rem\", marginBottom: \"1.5rem\" }}\n crumbs={[\n {\n internalLink: isMultiRootTenant ? `/${window?.contextPath}/employee/sandbox/landing` : `/${window?.contextPath}/employee`,\n content: t(\"ES_COMMON_HOME\"),\n show: true,\n },\n {\n internalLink: `/${window?.contextPath}/employee/user/profile`,\n content: t(\"ES_COMMON_PAGE_1\"),\n show: url.includes(\"/user/profile\"),\n },\n ]}\n />\n )}\n </section>\n <div\n style={{\n display: \"flex\",\n flex: 1,\n flexDirection: windowWidth < 768 || userType === \"citizen\" ? \"column\" : \"row\",\n margin: userType === \"citizen\" ? \"8px\" : \"0px\",\n gap: userType === \"citizen\" ? \"\" : \"0 24px\",\n boxShadow: userType === \"citizen\" ? \"1px 1px 4px 0px rgba(0,0,0,0.2)\" : \"\",\n background: userType === \"citizen\" ? \"white\" : \"\",\n borderRadius: userType === \"citizen\" ? \"4px\" : \"\",\n maxWidth: userType === \"citizen\" ? \"960px\" : \"\",\n }}\n >\n <section\n style={{\n position: \"relative\",\n display: \"flex\",\n flex: userType === \"citizen\" ? 1 : 2.5,\n justifyContent: \"center\",\n alignItems: \"center\",\n maxWidth: \"100%\",\n // height: \"376px\",\n borderRadius: \"4px\",\n boxShadow: userType === \"citizen\" ? \"\" : \"1px 1px 4px 0px rgba(0,0,0,0.2)\",\n border: `${userType === \"citizen\" ? \"8px\" : \"24px\"} solid #fff`,\n background: \"#EEEEEE\",\n padding: userType === \"citizen\" ? \"8px\" : \"16px\",\n }}\n >\n <div\n style={{\n position: \"relative\",\n height: userType === \"citizen\" ? \"114px\" : \"150px\",\n width: userType === \"citizen\" ? \"114px\" : \"150px\",\n margin: \"16px\",\n }}\n >\n <ImageComponent\n style={{\n margin: \"auto\",\n borderRadius: \"300px\",\n justifyContent: \"center\",\n height: \"100%\",\n width: \"100%\",\n }}\n src={!profileImg || profileImg === \"\" ? defaultImage : profileImg}\n alt=\"Profile Image\"\n />\n\n <button\n style={{\n position: \"absolute\",\n left: \"50%\",\n bottom: \"-24px\",\n transform: \"translateX(-50%)\",\n }}\n onClick={onClickAddPic}\n >\n <CameraIcon />\n </button>\n </div>\n </section>\n <section\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n flex: userType === \"citizen\" ? 1 : 7.5,\n width: \"100%\",\n borderRadius: \"4px\",\n height: \"fit-content\",\n boxShadow: userType === \"citizen\" ? \"\" : \"1px 1px 4px 0px rgba(0,0,0,0.2)\",\n background: \"white\",\n padding: userType === \"citizen\" ? \"8px\" : \"24px\",\n paddingBottom: \"20px\",\n }}\n >\n {userType === \"citizen\" ? (\n <React.Fragment>\n <LabelFieldPair>\n <CardLabel className=\"user-profile\" style={editScreen ? { color: \"#B1B4B6\" } : {}}>\n {`${t(\"CORE_COMMON_PROFILE_NAME\")}`}*\n </CardLabel>\n <div style={{ width: \"40rem\", maxWidth: \"960px\" }}>\n <TextInput\n t={t}\n style={{ width: \"100%\" }}\n type={\"text\"}\n isMandatory={false}\n name=\"name\"\n value={name}\n onChange={(e) => setUserName(e.target.value)}\n {...(validation = {\n isRequired: true,\n pattern:\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.name || defaultValidationConfig?.UserProfileValidationConfig?.[0]?.name,\n type: \"tel\",\n title: t(\"CORE_COMMON_PROFILE_NAME_ERROR_MESSAGE\"),\n })}\n disable={editScreen}\n />\n {/* {errors?.userName && (\n <CardLabelError>\n {\" \"}\n {t(errors?.userName?.message)}{\" \"}\n </CardLabelError>\n )} */}\n {errors?.userName && (\n <ErrorMessage\n message={t(errors?.userName?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair>\n <CardLabel className=\"user-profile\" style={editScreen ? { color: \"#B1B4B6\" } : {}}>{`${t(\"CORE_COMMON_PROFILE_GENDER\")}`}</CardLabel>\n <Dropdown\n style={{ width: \"40rem\", fontSize: \"1rem\" }}\n className=\"form-field profileDropdown\"\n selected={gender?.length === 1 ? gender[0] : gender}\n disable={gender?.length === 1 || editScreen}\n option={menu}\n select={setGenderName}\n value={gender}\n optionKey=\"code\"\n t={t}\n name=\"gender\"\n />\n </LabelFieldPair>\n\n <LabelFieldPair>\n <CardLabel className=\"user-profile\" style={editScreen ? { color: \"#B1B4B6\" } : {}}>{`${t(\"CORE_COMMON_PROFILE_EMAIL\")}`}</CardLabel>\n <div style={{ width: \"40rem\" }}>\n <TextInput\n t={t}\n style={{ width: \"100%\" }}\n type={\"email\"}\n isMandatory={false}\n optionKey=\"i18nKey\"\n name=\"email\"\n value={email}\n onChange={(e) => setUserEmailAddress(e.target.value)}\n disabled={editScreen}\n />\n {errors?.emailAddress && (\n <ErrorMessage\n message={t(errors?.emailAddress?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <button\n onClick={updateProfile}\n style={{\n marginTop: \"24px\",\n backgroundColor: \"#c84c0e\",\n width: \"100%\",\n height: \"40px\",\n color: \"white\",\n\n maxWidth: isMobile ? \"100%\" : \"240px\",\n borderBottom: \"1px solid black\",\n }}\n >\n {t(\"CORE_COMMON_SAVE\")}\n </button>\n </React.Fragment>\n ) : (\n <React.Fragment>\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel className=\"profile-label-margin\" style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}>\n {`${t(\"CORE_COMMON_PROFILE_NAME\")}`}*\n </CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"text\"}\n isMandatory={false}\n name=\"name\"\n value={name}\n onChange={(e) => setUserName(e.target.value)}\n placeholder=\"Enter Your Name\"\n {...(validation = {\n isRequired: true,\n pattern:\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.name || defaultValidationConfig?.UserProfileValidationConfig?.[0]?.name,\n type: \"text\",\n title: t(\"CORE_COMMON_PROFILE_NAME_ERROR_MESSAGE\"),\n })}\n disabled={editScreen}\n />\n {errors?.userName && (\n <ErrorMessage\n message={t(errors?.userName?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel className=\"profile-label-margin\" style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}>{`${t(\n \"CORE_COMMON_PROFILE_GENDER\"\n )}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <Dropdown\n className=\"profileDropdown\"\n selected={gender?.length === 1 ? gender[0] : gender}\n disable={gender?.length === 1 || editScreen}\n option={menu}\n select={setGenderName}\n value={gender}\n optionKey=\"code\"\n t={t}\n name=\"gender\"\n />\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel className=\"profile-label-margin\" style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}>{`${t(\n \"CORE_COMMON_PROFILE_CITY\"\n )}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"text\"}\n isMandatory={false}\n name=\"city\"\n value={t(Digit.Utils.locale.getTransformedLocale(`TENANT_TENANTS_${tenant}`))}\n onChange={(e) => setCity(e.target.value)}\n placeholder=\"Enter Your City Name\"\n {...(validation = {\n isRequired: true,\n // pattern: \"^[a-zA-Z-.`' ]*$\",\n type: \"text\",\n title: t(\"CORE_COMMON_PROFILE_CITY_ERROR_MESSAGE\"),\n })}\n disabled={true}\n />\n <ErrorMessage />\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel className=\"profile-label-margin\" style={{ width: \"300px\" }}>{`${t(\"CORE_COMMON_PROFILE_MOBILE_NUMBER\")}*`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <MobileNumber\n value={mobileNumber}\n style={{ width: \"100%\" }}\n name=\"mobileNumber\"\n placeholder=\"Enter a valid Mobile No.\"\n onChange={(value) => setUserMobileNumber(value)}\n disable={Digit.Utils.getMultiRootTenant() ? false : true}\n {...{\n required: true,\n pattern:\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.mobileNumber ||\n defaultValidationConfig?.UserProfileValidationConfig?.[0]?.mobileNumber,\n type: \"tel\",\n title: t(\"CORE_COMMON_PROFILE_MOBILE_NUMBER_INVALID\"),\n }}\n />\n {errors?.mobileNumber && (\n <ErrorMessage\n message={t(errors?.mobileNumber?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel className=\"profile-label-margin\" style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}>{`${t(\n \"CORE_COMMON_PROFILE_EMAIL\"\n )}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"email\"}\n isMandatory={false}\n placeholder={t(\"EMAIL_VALIDATION\")}\n optionKey=\"i18nKey\"\n name=\"email\"\n value={email}\n onChange={(e) => setUserEmailAddress(e.target.value)}\n disabled={Digit.Utils.getMultiRootTenant() ? true : editScreen}\n />\n {errors?.emailAddress && (\n <ErrorMessage\n message={t(errors?.emailAddress?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair>\n <div style={{ width: \"100%\" }}>\n {changepassword == false && !Digit.Utils.getOTPBasedLogin() ? (\n <Button\n label={t(\"CORE_COMMON_CHANGE_PASSWORD\")}\n variation={\"teritiary\"}\n onClick={TogleforPassword}\n style={{ paddingLeft: \"0rem\" }}\n ></Button>\n ) : null}\n {changepassword ? (\n <div style={{ marginTop: \"10px\" }}>\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel\n className=\"profile-label-margin\"\n style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}\n >{`${t(\"CORE_COMMON_PROFILE_CURRENT_PASSWORD\")}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"password\"}\n isMandatory={false}\n name=\"name\"\n pattern={\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.password ||\n defaultValidationConfig?.UserProfileValidationConfig?.[0]?.password\n }\n onChange={(e) => setUserCurrentPassword(e?.target?.value)}\n disabled={editScreen}\n />\n {errors?.currentPassword && (\n <ErrorMessage\n message={t(errors?.currentPassword?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel\n className=\"profile-label-margin\"\n style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}\n >{`${t(\"CORE_COMMON_PROFILE_NEW_PASSWORD\")}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"password\"}\n isMandatory={false}\n name=\"name\"\n pattern={\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.password ||\n defaultValidationConfig?.UserProfileValidationConfig?.[0]?.password\n }\n onChange={(e) => setUserNewPassword(e?.target?.value)}\n disabled={editScreen}\n />\n {errors?.newPassword && (\n <ErrorMessage\n message={t(errors?.newPassword?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel\n className=\"profile-label-margin\"\n style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}\n >{`${t(\"CORE_COMMON_PROFILE_CONFIRM_PASSWORD\")}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"password\"}\n isMandatory={false}\n name=\"name\"\n pattern={\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.password ||\n defaultValidationConfig?.UserProfileValidationConfig?.[0]?.password\n }\n onChange={(e) => setUserConfirmPassword(e?.target?.value)}\n disabled={editScreen}\n />\n {errors?.confirmPassword && (\n <ErrorMessage\n message={t(errors?.confirmPassword?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n </div>\n ) : (\n \"\"\n )}\n </div>\n </LabelFieldPair>\n {userType === \"employee\" && isMobile ? (\n <button\n onClick={updateProfile}\n style={{\n marginTop: \"24px\",\n backgroundColor: \"#c84c0e\",\n width: \"100%\",\n height: \"40px\",\n color: \"white\",\n maxWidth: isMobile ? \"100%\" : \"240px\",\n borderBottom: \"1px solid black\",\n fontWeight: \"700\",\n fontSize: \"17px\",\n }}\n >\n {t(\"CORE_COMMON_SAVE\")}\n </button>\n ) : null}\n </React.Fragment>\n )}\n </section>\n </div>\n\n {userType === \"employee\" && !isMobile ? (\n <Footer actionFields={[<SubmitBar t={t} label={t(\"CORE_COMMON_SAVE\")} onSubmit={updateProfile} />]} className=\"\" setactionFieldsToRight />\n ) : null}\n {toast && (\n <Toast\n type={toast.key}\n label={t(toast.key === \"success\" ? `CORE_COMMON_PROFILE_UPDATE_SUCCESS` : toast.action)}\n onClose={() => setToast(null)}\n style={{ maxWidth: \"670px\" }}\n />\n )}\n\n {openUploadSlide == true ? (\n <UploadDrawer\n setProfilePic={setFileStoreId}\n closeDrawer={closeFileUploadDrawer}\n userType={userType}\n removeProfilePic={removeProfilePic}\n showToast={showToast}\n />\n ) : (\n \"\"\n )}\n </div>\n );\n};\n\nexport default UserProfile;","import {\n Calender,\n CardBasedOptions,\n CaseIcon,\n ComplaintIcon,\n DocumentIcon,\n HomeIcon,\n OBPSIcon,\n PTIcon,\n Loader,\n WhatsNewCard,\n} from \"@egovernments/digit-ui-react-components\";\nimport React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport ImageComponent from \"../../../components/ImageComponent\";\n\nconst Home = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const tenantId = Digit.Utils.getMultiRootTenant() ? Digit.ULBService.getStateId() : Digit.ULBService.getCitizenCurrentTenant(true);\n const { data: { stateInfo, uiHomePage } = {}, isLoading } = Digit.Hooks.useStore.getInitData();\n let isMobile = window.Digit.Utils.browser.isMobile();\n\n const conditionsToDisableNotificationCountTrigger = () => {\n if (Digit.UserService?.getUser()?.info?.type === \"EMPLOYEE\") return false;\n if (!Digit.UserService?.getUser()?.access_token) return false;\n return true;\n };\n\n const { data: EventsData, isLoading: EventsDataLoading } = Digit.Hooks.useEvents({\n tenantId,\n variant: \"whats-new\",\n config: {\n enabled: conditionsToDisableNotificationCountTrigger(),\n },\n });\n\n if (!tenantId) {\n navigate(`/${window?.contextPath}/citizen/select-language`);\n }\n\n const appBannerWebObj = uiHomePage?.appBannerDesktop;\n const appBannerMobObj = uiHomePage?.appBannerMobile;\n const citizenServicesObj = uiHomePage?.citizenServicesCard;\n const infoAndUpdatesObj = uiHomePage?.informationAndUpdatesCard;\n const whatsAppBannerWebObj = uiHomePage?.whatsAppBannerDesktop;\n const whatsAppBannerMobObj = uiHomePage?.whatsAppBannerMobile;\n const whatsNewSectionObj = uiHomePage?.whatsNewSection;\n const redirectURL = uiHomePage?.redirectURL;\n /* configure redirect URL only if it is required to overide the default citizen home screen */\n if (redirectURL) {\n navigate(`/${window?.contextPath}/citizen/${redirectURL}`);\n }\n /* fix for sanitation ui & sandbox*/\n if (window?.location?.href?.includes?.(\"sanitation-ui\") || window?.location?.href?.includes?.(\"sandbox-ui\")) {\n navigate(`/${window?.contextPath}/citizen/all-services`);\n }\n\n const handleClickOnWhatsAppBanner = (obj) => {\n window.open(obj?.navigationUrl);\n };\n\n const allCitizenServicesProps = {\n header: t(citizenServicesObj?.headerLabel),\n sideOption: {\n name: t(citizenServicesObj?.sideOption?.name),\n onClick: () =>\n navigate(citizenServicesObj?.sideOption?.navigationUrl),\n },\n options: [\n {\n name: t(citizenServicesObj?.props?.[0]?.label),\n Icon: <ComplaintIcon />,\n onClick: () =>\n navigate(citizenServicesObj?.props?.[0]?.navigationUrl),\n },\n {\n name: t(citizenServicesObj?.props?.[1]?.label),\n Icon: <PTIcon className=\"fill-path-primary-main\" />,\n onClick: () =>\n navigate(citizenServicesObj?.props?.[1]?.navigationUrl),\n },\n {\n name: t(citizenServicesObj?.props?.[2]?.label),\n Icon: <CaseIcon className=\"fill-path-primary-main\" />,\n onClick: () =>\n navigate(citizenServicesObj?.props?.[2]?.navigationUrl),\n },\n // {\n // name: t(\"ACTION_TEST_WATER_AND_SEWERAGE\"),\n // Icon: <DropIcon/>,\n // onClick: () => history.push(`/${window?.contextPath}/citizen`)\n // },\n {\n name: t(citizenServicesObj?.props?.[3]?.label),\n Icon: <OBPSIcon />,\n onClick: () =>\n navigate(citizenServicesObj?.props?.[3]?.navigationUrl),\n },\n ],\n styles: {\n display: \"flex\",\n flexWrap: \"wrap\",\n justifyContent: \"flex-start\",\n width: \"100%\",\n },\n };\n const allInfoAndUpdatesProps = {\n header: t(infoAndUpdatesObj?.headerLabel),\n sideOption: {\n name: t(infoAndUpdatesObj?.sideOption?.name),\n onClick: () => navigate(infoAndUpdatesObj?.sideOption?.navigationUrl),\n },\n options: [\n {\n name: t(infoAndUpdatesObj?.props?.[0]?.label),\n Icon: <HomeIcon />,\n onClick: () =>\n navigate(infoAndUpdatesObj?.props?.[0]?.navigationUrl),\n },\n {\n name: t(infoAndUpdatesObj?.props?.[1]?.label),\n Icon: <Calender />,\n onClick: () =>\n navigate(infoAndUpdatesObj?.props?.[1]?.navigationUrl),\n },\n {\n name: t(infoAndUpdatesObj?.props?.[2]?.label),\n Icon: <DocumentIcon />,\n onClick: () =>\n navigate(infoAndUpdatesObj?.props?.[2]?.navigationUrl),\n },\n {\n name: t(infoAndUpdatesObj?.props?.[3]?.label),\n Icon: <DocumentIcon />,\n onClick: () =>\n navigate(infoAndUpdatesObj?.props?.[3]?.navigationUrl),\n },\n // {\n // name: t(\"CS_COMMON_HELP\"),\n // Icon: <HelpIcon/>\n // }\n ],\n styles: {\n display: \"flex\",\n flexWrap: \"wrap\",\n justifyContent: \"flex-start\",\n width: \"100%\",\n },\n };\n\n return isLoading ? (\n <Loader />\n ) : (\n <div className=\"HomePageContainer\">\n {/* <div className=\"SideBarStatic\">\n <StaticCitizenSideBar />\n </div> */}\n <div className=\"HomePageWrapper\">\n {\n <div className=\"BannerWithSearch\">\n {isMobile ? (\n <ImageComponent src={appBannerMobObj?.bannerUrl} alt=\"Banner Image\" />\n ) : (\n <ImageComponent src={appBannerWebObj?.bannerUrl} alt=\"Banner Image\" />\n )}\n {/* <div className=\"Search\">\n <StandaloneSearchBar placeholder={t(\"CS_COMMON_SEARCH_PLACEHOLDER\")} />\n </div> */}\n <div className=\"ServicesSection\">\n <CardBasedOptions style={{ marginTop: \"-30px\" }} {...allCitizenServicesProps} />\n <CardBasedOptions style={isMobile ? {} : { marginTop: \"-30px\" }} {...allInfoAndUpdatesProps} />\n </div>\n </div>\n }\n\n {(whatsAppBannerMobObj || whatsAppBannerWebObj) && (\n <div className=\"WhatsAppBanner\">\n {isMobile ? (\n <ImageComponent\n src={whatsAppBannerMobObj?.bannerUrl}\n onClick={() => handleClickOnWhatsAppBanner(whatsAppBannerMobObj)}\n alt=\"Whatsapp Banner\"\n />\n ) : (\n <ImageComponent\n src={whatsAppBannerWebObj?.bannerUrl}\n onClick={() => handleClickOnWhatsAppBanner(whatsAppBannerWebObj)}\n alt=\"Whatsapp Banner\"\n />\n )}\n </div>\n )}\n\n {conditionsToDisableNotificationCountTrigger() ? (\n EventsDataLoading ? (\n <Loader />\n ) : (\n <div className=\"WhatsNewSection\">\n <div className=\"headSection\">\n <h2>{t(whatsNewSectionObj?.headerLabel)}</h2>\n <p onClick={() => navigate(whatsNewSectionObj?.sideOption?.navigationUrl)}>{t(whatsNewSectionObj?.sideOption?.name)}</p>\n </div>\n <WhatsNewCard {...EventsData?.[0]} />\n </div>\n )\n ) : null}\n </div>\n </div>\n );\n};\n\nexport default Home;\n","import {\n BackButton,\n HeaderComponent,\n Loader,\n CloseSvg,\n DownloadImgIcon,\n PDFSvg,\n} from \"@egovernments/digit-ui-components\";\nimport { CustomButton } from \"@egovernments/digit-ui-react-components\";\nimport React, { Fragment, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nconst HowItWorks = ({ module }) => {\n const user = Digit.UserService.getUser();\n const tenantId =\n user?.info?.tenantId || Digit.ULBService.getCurrentTenantId();\n const { t } = useTranslation();\n const storeData = Digit.SessionStorage.get(\"initData\");\n const stateInfo = storeData.stateInfo;\n const selectedLanguage = Digit.StoreData.getCurrentLanguage();\n const [selected, setselected] = useState(selectedLanguage);\n const handleChangeLanguage = (language) => {\n setselected(language.value);\n Digit.LocalizationService.changeLanguage(language.value, stateInfo.code);\n };\n const [videoPlay, setVideoPlay] = useState(false);\n const [vidSrc, setVidSrc] = useState(\"\");\n\n const ViDSvg = () => (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 24C5.38053 24 0 18.6143 0 12C0 5.38054 5.38053 1.90735e-06 12 1.90735e-06C18.6143 1.90735e-06 24 5.38054 24 12C24 18.6143 18.6143 24 12 24ZM16.3488 10.7852L11.3855 7.25251C11.1263 7.0701 10.8238 6.97889 10.5214 6.97889C10.291 6.97889 10.0557 7.03172 9.83976 7.14202C9.34054 7.40118 9.02857 7.91006 9.02857 8.46694L9.02877 15.5323C9.02877 16.0892 9.34076 16.5979 9.83996 16.8572C10.3344 17.1116 10.9296 17.0732 11.3857 16.7467L16.349 13.214C16.7426 12.9356 16.9778 12.4795 16.9778 11.9996C16.9776 11.5197 16.7426 11.0636 16.3489 10.7852L16.3488 10.7852Z\"\n fill=\"white\"\n />\n </svg>\n );\n const onClickVideo = (vidObj) => {\n if (selected === \"hi_IN\") {\n setVidSrc(vidObj[\"hi_IN\"]);\n } else {\n setVidSrc(vidObj[\"en_IN\"]);\n }\n setVideoPlay(true);\n };\n const onClose = () => {\n setVideoPlay(false);\n };\n\n const { isLoading, data } = Digit.Hooks.useGetHowItWorksJSON(\n Digit.ULBService.getStateId()\n );\n\n const mdmsConfigResult =\n data?.MdmsRes[\"common-masters\"]?.howItWorks[0]?.[`${module}`];\n const languages = [\n {\n label: \"ENGLISH\",\n value: \"en_IN\",\n },\n {\n label: \"हिंदी\",\n value: \"hi_IN\",\n },\n ];\n\n if (isLoading) {\n return <Loader />;\n }\n return (\n <Fragment>\n <div className=\"how-it-works-page\">\n <BackButton></BackButton>\n <div className=\"how-it-works-page-header\">\n <HeaderComponent>\n {t(\n mdmsConfigResult.screenHeader\n ? mdmsConfigResult.screenHeader\n : \"HOW_IT_WORKS\"\n )}\n </HeaderComponent>\n </div>\n <div className=\"language-selector\" style={{ margin: \"10px\" }}>\n {languages.map((language, index) => (\n <div className=\"language-button-container\" key={index}>\n <CustomButton\n selected={language.value === selected}\n text={language.label}\n onClick={() => handleChangeLanguage(language)}\n ></CustomButton>\n </div>\n ))}\n </div>\n {mdmsConfigResult.videosJson.map((videos, index) => (\n <div>\n <div\n className=\"WhatsNewCard\"\n style={{\n float: \"left\",\n position: \"relative\",\n width: \"100%\",\n marginBottom: 10,\n }}\n >\n <div className=\"video-icon\" onClick={() => onClickVideo(videos)}>\n <div className=\"vid-svg\">\n <ViDSvg></ViDSvg>\n </div>\n </div>\n <div className=\"how-it-works-header-description\">\n <h2>{t(videos.headerLabel)}</h2>\n <p>{t(videos.description)}</p>\n </div>\n </div>\n </div>\n ))}\n {mdmsConfigResult.pdfHeader && mdmsConfigResult.pdfDesc && (\n <div\n className=\"WhatsNewCard\"\n style={{\n position: \"relative\",\n width: \"100%\",\n marginBottom: 10,\n display: \"inline-block\",\n }}\n >\n <div className=\"how-it-works-pdf-section\">\n <div className=\"pdf-icon-header-desc\">\n <div className=\"pdf-icon\">\n <PDFSvg></PDFSvg>\n </div>\n <div className=\"pdf-header-desc\">\n <h2>{t(mdmsConfigResult.pdfHeader)}</h2>\n <p>{t(mdmsConfigResult.pdfDesc)}</p>\n </div>\n </div>\n <div className=\"download-icon\">\n <DownloadImgIcon />\n </div>\n </div>\n </div>\n )}\n {videoPlay && (\n <div className=\"how-it-works-video-play\">\n <div className=\"close-button\">\n <CloseSvg onClick={onClose}></CloseSvg>\n </div>\n <video width={500} height={500} controls autoPlay>\n <source src={vidSrc} type=\"video/mp4\"></source>\n </video>\n </div>\n )}\n </div>\n </Fragment>\n );\n};\n\nexport default HowItWorks;\n","import { CardText, CardLabelError, FormStep } from \"@egovernments/digit-ui-components\";\nimport React, { Fragment, useState } from \"react\";\nimport useInterval from \"../../../hooks/useInterval\";\nimport { OTPInput } from \"@egovernments/digit-ui-react-components\";\n\nconst SelectOtp = ({ config, otp, onOtpChange, onResend, onSelect, t, error, userType = \"citizen\", canSubmit }) => {\n const [timeLeft, setTimeLeft] = useState(30);\n\n useInterval(\n () => {\n setTimeLeft(timeLeft - 1);\n },\n timeLeft > 0 ? 1000 : null\n );\n\n const handleResendOtp = () => {\n onResend();\n setTimeLeft(2);\n };\n\n if (userType === \"employee\") {\n return (\n <Fragment>\n <OTPInput length={6} onChange={onOtpChange} value={otp} />\n {timeLeft > 0 ? (\n <CardText>{`${t(\"CS_RESEND_ANOTHER_OTP\")} ${timeLeft} ${t(\"CS_RESEND_SECONDS\")}`}</CardText>\n ) : (\n <p className=\"card-text-button resend-otp\" onClick={handleResendOtp}>\n {t(\"CS_RESEND_OTP\")}\n </p>\n )}\n {!error && <CardLabelError>{t(\"CS_INVALID_OTP\")}</CardLabelError>}\n </Fragment>\n );\n }\n\n return (\n <FormStep onSelect={onSelect} config={config} t={t} isDisabled={!(otp?.length === 6 && canSubmit)}>\n <OTPInput length={6} onChange={onOtpChange} value={otp} />\n {timeLeft > 0 ? (\n <CardText>{`${t(\"CS_RESEND_ANOTHER_OTP\")} ${timeLeft} ${t(\"CS_RESEND_SECONDS\")}`}</CardText>\n ) : (\n <p className=\"card-text-button\" onClick={handleResendOtp}>\n {t(\"CS_RESEND_OTP\")}\n </p>\n )}\n {!error && <CardLabelError>{t(\"CS_INVALID_OTP\")}</CardLabelError>}\n </FormStep>\n );\n};\n\nexport default SelectOtp;\n","export const loginSteps = [\n {\n texts: {\n header: \"CS_LOGIN_PROVIDE_MOBILE_NUMBER\",\n cardText: \"CS_LOGIN_TEXT\",\n nextText: \"CS_COMMONS_NEXT\",\n submitBarLabel: \"CS_COMMONS_NEXT\",\n },\n inputs: [\n {\n label: \"CORE_COMMON_MOBILE_NUMBER\",\n type: \"text\",\n name: \"mobileNumber\",\n error: \"ERR_HRMS_INVALID_MOB_NO\",\n validation: {\n required: true,\n minlength: 10,\n maxlength: 10,\n },\n },\n ],\n },\n {\n texts: {\n header: \"CS_LOGIN_OTP\",\n cardText: \"CS_LOGIN_OTP_TEXT\",\n nextText: \"CS_COMMONS_NEXT\",\n submitBarLabel: \"CS_COMMONS_NEXT\",\n },\n },\n {\n texts: {\n header: \"CS_LOGIN_PROVIDE_NAME\",\n cardText: \"CS_LOGIN_NAME_TEXT\",\n nextText: \"CS_COMMONS_NEXT\",\n submitBarLabel: \"CS_COMMONS_NEXT\",\n },\n inputs: [\n {\n label: \"CORE_COMMON_NAME\",\n type: \"text\",\n name: \"name\",\n error: \"CORE_COMMON_NAME_VALIDMSG\",\n validation: {\n required: true,\n minlength: 1,\n maxlength: 50,\n // pattern: /^[^{0-9}^\\$\\\"<>?\\\\\\\\~!@#$%^()+={}\\[\\]*,/_:;“”‘’]{1,50}$/i,\n // pattern: /^(?!\\s)[^{0-9}^\\$\\\"<>?\\\\\\\\~!@#$%^()+={}\\[\\]*,/_:;“”‘’]{1,50}(?!\\s)$/i\n pattern: \"^[A-Za-z]+( [A-Za-z]+)*$\",\n },\n },\n ],\n },\n];\n","import { InputCard, TextBlock, FieldV1, LinkLabel } from \"@egovernments/digit-ui-components\";\nimport React, { useMemo, useState } from \"react\";\n\nconst SelectMobileNumber = ({ t, onSelect, mobileNumber,emailId, onMobileChange,onEmailChange, config, canSubmit }) => {\n const [isEmail, setIsEmail] = useState(emailId? true : false);\n const [error, setError] = useState(\"\");\n\n const core_mobile_config = window?.globalConfigs?.getConfig(\"CORE_MOBILE_CONFIGS\") || {};\n const EMAIL_REGEX = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n const rawPattern = core_mobile_config?.mobileNumberPattern || \"^\\\\d+$\";\n const mobileNumberPattern = new RegExp(rawPattern);\n\n const isEmailValid = useMemo(() => EMAIL_REGEX.test(emailId), [emailId]);\n const isMobileValid = useMemo(() => mobileNumberPattern.test(mobileNumber || \"\"), [mobileNumber, mobileNumberPattern]);\n\n const handleSubmit = () => {\n if (isEmail) {\n if (!isEmailValid) {\n setError(t(\"ERR_INVALID_EMAIL\"));\n return;\n }\n onSelect({ userName: emailId });\n } else {\n if (!isMobileValid) {\n setError(t(\"ERR_INVALID_MOBILE_NUMBER\"));\n return;\n }\n onSelect({ mobileNumber });\n }\n };\n\n const handleChange = (e) => {\n const value = e.target.value;\n setError(\"\");\n if (isEmail) {\n onEmailChange(e)\n if (value && !EMAIL_REGEX.test(value)) setError(t(\"ERR_INVALID_EMAIL\"));\n } else {\n onMobileChange(e);\n if (value && !mobileNumberPattern.test(value)) setError(t(\"ERR_INVALID_MOBILE_NUMBER\"));\n }\n };\n\n const switchMode = () => {\n setIsEmail(!isEmail);\n setError(\"\");\n if(isEmail)\n onEmailChange({ target: { value: \"\" } });\n else\n onMobileChange({ target: { value: \"\" } }); // clear mobile input\n };\n\n const isDisabled = useMemo(() => {\n return isEmail ? !(isEmailValid && canSubmit) : !(isMobileValid && canSubmit);\n }, [isEmail, isEmailValid, isMobileValid, canSubmit]);\n\n const mobileViewStyles = {\n marginLeft:\"0px\",\n userSelect: \"none\",\n color: \"inherit\", \n cursor: \"pointer\", // keeps it clickable\n textDecoration: \"underline\",\n };\n\n // Responsive label\n const linkLabel = useMemo(() => {\n if (window.innerWidth <= 768) {\n return isEmail ? t(\"LOGIN_WITH_MOBILE\") : t(\"LOGIN_WITH_EMAIL\");\n }\n return isEmail ? t(\"CS_USE_MOBILE_INSTEAD\") : t(\"CS_LOGIN_REGISTER_WITH_EMAIL\");\n }, [isEmail, t]);\n\n return (\n <InputCard\n t={t}\n texts={config?.texts}\n submit\n onNext={handleSubmit}\n isDisable={isDisabled}\n >\n <div>\n <FieldV1\n key={isEmail ? \"email\" : \"mobile\"}\n withoutLabel\n charCount\n error={error}\n onChange={handleChange}\n placeholder={isEmail ? t(\"ENTER_EMAIL_PLACEHOLDER\") : t(\"ENTER_MOBILE_PLACEHOLDER\")}\n populators={{\n name: isEmail ? \"userName\" : \"mobileNumber\",\n prefix: isEmail ? \"\" : core_mobile_config?.mobilePrefix,\n validation: {\n maxlength: isEmail ? 256 : (core_mobile_config?.mobileNumberLength || 10),\n pattern: isEmail ? EMAIL_REGEX : mobileNumberPattern,\n },\n }}\n props={{ fieldStyle: { width: \"100%\" } }}\n type=\"text\"\n value={isEmail ? emailId : mobileNumber}\n />\n </div>\n\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"1rem\", marginBottom: \"1.5rem\", marginTop: \"-24px\" }}>\n <LinkLabel style={{ display: \"inline\", ...mobileViewStyles }} onClick={switchMode}>\n {linkLabel}\n </LinkLabel>\n </div>\n </InputCard>\n );\n};\n\nexport default SelectMobileNumber;","import { FormStep } from \"@egovernments/digit-ui-components\";\nimport React from \"react\";\n\nconst SelectName = ({ config, onSelect, t, isDisabled }) => {\n return <FormStep config={config} onSelect={onSelect} t={t} isDisabled={isDisabled}></FormStep>;\n};\n\nexport default SelectName;\n","import { AppContainer, BackLink, Toast } from \"@egovernments/digit-ui-components\";\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Routes, Route, useLocation, useNavigate } from \"react-router-dom\";\nimport { loginSteps } from \"./config\";\nimport SelectMobileNumber from \"./SelectMobileNumber\";\nimport SelectName from \"./SelectName\";\nimport SelectOtp from \"./SelectOtp\";\n\nconst TYPE_REGISTER = { type: \"register\" };\nconst TYPE_LOGIN = { type: \"login\" };\nconst DEFAULT_USER = \"digit-user\";\nlet DEFAULT_REDIRECT_URL = `/${window?.contextPath || window?.globalConfigs?.getConfig(\"CONTEXT_PATH\")}/citizen`;\n\n/* set citizen details to enable backward compatible */\nconst setCitizenDetail = (userObject, token, tenantId) => {\n if (Digit.Utils.getMultiRootTenant()) {\n return;\n }\n let locale = JSON.parse(sessionStorage.getItem(\"Digit.initData\"))?.value?.selectedLanguage;\n localStorage.setItem(\"Citizen.tenant-id\", tenantId);\n localStorage.setItem(\"tenant-id\", tenantId);\n localStorage.setItem(\"citizen.userRequestObject\", JSON.stringify(userObject));\n localStorage.setItem(\"locale\", locale);\n localStorage.setItem(\"Citizen.locale\", locale);\n localStorage.setItem(\"token\", token);\n localStorage.setItem(\"Citizen.token\", token);\n localStorage.setItem(\"user-info\", JSON.stringify(userObject));\n localStorage.setItem(\"Citizen.user-info\", JSON.stringify(userObject));\n};\n\nconst getFromLocation = (state, searchParams) => {\n return state?.from || searchParams?.from || DEFAULT_REDIRECT_URL;\n};\n\nconst IndividualLogin = ({ stateCode, isUserRegistered = false }) => {\n const { t } = useTranslation();\n const location = useLocation();\n const navigate = useNavigate();\n const [user, setUser] = useState(null);\n const [error, setError] = useState(null);\n const [isOtpValid, setIsOtpValid] = useState(true);\n const [params, setParams] = useState(isUserRegistered ? {} : location?.state?.data);\n const [errorTO, setErrorTO] = useState(null);\n const searchParams = Digit.Hooks.useQueryParams();\n const [canSubmitName, setCanSubmitName] = useState(false);\n const [canSubmitOtp, setCanSubmitOtp] = useState(true);\n const [canSubmitNo, setCanSubmitNo] = useState(true);\n\n const individualServicePath = window?.globalConfigs?.getConfig(\"INDIVIDUAL_SERVICE_CONTEXT_PATH\");\n\n useEffect(() => {\n let errorTimeout;\n if (error) {\n if (errorTO) {\n clearTimeout(errorTO);\n setErrorTO(null);\n }\n errorTimeout = setTimeout(() => {\n setError(\"\");\n }, 5000);\n setErrorTO(errorTimeout);\n }\n return () => {\n errorTimeout && clearTimeout(errorTimeout);\n };\n }, [error]);\n\n useEffect(() => {\n if (!user) {\n return;\n }\n Digit.SessionStorage.set(\"citizen.userRequestObject\", user);\n Digit.UserService.setUser(user);\n setCitizenDetail(user?.info, user?.access_token, stateCode);\n const redirectPath = location.state?.from || DEFAULT_REDIRECT_URL;\n if (!Digit.ULBService.getCitizenCurrentTenant(true)) {\n navigate(\n `/${window?.contextPath}/citizen/select-location`,\n { state: { redirectBackTo: redirectPath }, replace: true }\n );\n } else {\n navigate(redirectPath, { replace: true });\n }\n }, [user]);\n\n const stepItems = useMemo(() =>\n loginSteps.map(\n (step) => {\n const texts = {};\n for (const key in step.texts) {\n texts[key] = t(step.texts[key]);\n }\n return { ...step, texts };\n },\n \n ), [loginSteps]\n );\n\n const getUserType = () => \"citizen\" || Digit.UserService.getType();\n\n const handleOtpChange = (otp) => {\n setParams({ ...params, otp });\n };\n\n const handleMobileChange = (event) => {\n const { value } = event.target;\n setParams({ ...params, mobileNumber: value });\n };\n\n const handleEmailChange = (event) => {\n const { value } = event.target;\n setParams({ ...params, userName: value });\n };\n\n const selectMobileNumber = async (mobileNumber) => {\n setCanSubmitNo(false);\n setParams({ ...params, ...mobileNumber });\n const data = {\n ...mobileNumber,\n tenantId: stateCode,\n userType: getUserType(),\n };\n\n const [res, err] = await sendOtp({ otp: { ...data, ...TYPE_LOGIN } });\n if (!err) {\n setCanSubmitNo(true);\n navigate(`otp`, { \n state: { \n from: getFromLocation(location.state, searchParams) \n }, \n replace: true \n });\n return;\n } else {\n setCanSubmitNo(true);\n navigate(`name`, {\n state: {\n from: getFromLocation(location.state, searchParams),\n data: data\n },\n replace: true\n });\n }\n };\n\n const selectName = async (name) => {\n setCanSubmitName(true);\n\n const userData = {\n ...params,\n ...name,\n };\n\n setParams(userData);\n\n // Call the Individual service registration API\n const registerURL = `${individualServicePath}/v1/_register`;\n\n const requestData = {\n IndividualRegister: {\n tenantId: stateCode,\n name: userData.name,\n emailId: userData.userName || \"\",\n mobileNumber: userData.mobileNumber || \"\",\n requestType: \"Register\"\n }\n };\n\n try {\n const registerResponse = await Digit.CustomService.getResponse({\n url: registerURL,\n body: requestData,\n useCache: false,\n method: \"POST\",\n userService: false,\n auth: false,\n params: {}\n });\n\n if (!registerResponse) {\n throw new Error(\"Registration API failed\");\n }\n\n setCanSubmitName(false);\n // After registration, go to OTP screen\n navigate(`otp`, {\n state: {\n from: getFromLocation(location.state, searchParams)\n },\n replace: true\n });\n\n } catch (err) {\n console.error(\"Registration error:\", err);\n setCanSubmitName(false);\n setError(t(\"REGISTRATION_FAILED\") || \"Registration failed. Please try again.\");\n }\n };\n\n const selectOtp = async () => {\n try {\n setIsOtpValid(true);\n setCanSubmitOtp(false);\n const { mobileNumber, otp, userName } = params;\n\n // Authenticate with OTP\n const requestData = {\n username: mobileNumber || userName,\n password: otp,\n tenantId: stateCode,\n userType: getUserType(),\n };\n\n const { ResponseInfo, UserRequest: info, ...tokens } = await Digit.UserService.authenticate(requestData);\n\n if (window?.globalConfigs?.getConfig(\"ENABLE_SINGLEINSTANCE\")) {\n info.tenantId = Digit.ULBService.getStateId();\n }\n\n setUser({ info, ...tokens });\n\n } catch (err) {\n setCanSubmitOtp(true);\n setIsOtpValid(false);\n setError(t(\"INVALID_OTP\") || \"Invalid OTP\");\n }\n };\n\n const resendOtp = async () => {\n if (!isUserRegistered) {\n // For registration flow, user needs to complete registration first\n setError(t(\"PLEASE_COMPLETE_REGISTRATION\") || \"Please enter the OTP sent during registration.\");\n } else {\n // For login flow, resend OTP\n const { mobileNumber, userName } = params;\n const data = {\n mobileNumber,\n userName,\n tenantId: stateCode,\n userType: getUserType(),\n };\n const [res, err] = await sendOtp({ otp: { ...data, ...TYPE_LOGIN } });\n if (err) {\n setError(t(\"OTP_RESEND_ERROR\") || \"Failed to resend OTP\");\n }\n }\n };\n\n const sendOtp = async (data) => {\n try {\n const res = await Digit.UserService.sendOtp(data, stateCode);\n return [res, null];\n } catch (err) {\n return [null, err];\n }\n };\n\n return (\n <div className=\"citizen-form-wrapper citizen-form-center\">\n <AppContainer>\n {location.pathname.includes(\"login\") ? null : <BackLink onClick={() => window.history.back()} />}\n <Routes>\n <Route\n path=\"/\" \n element={\n <SelectMobileNumber\n onSelect={selectMobileNumber}\n config={stepItems[0]}\n mobileNumber={params.mobileNumber || \"\"}\n emailId={params.userName || \"\"}\n onMobileChange={handleMobileChange}\n onEmailChange={handleEmailChange}\n canSubmit={canSubmitNo}\n showRegisterLink={isUserRegistered}\n t={t}\n />\n } \n />\n <Route \n path=\"otp\" \n element={\n <SelectOtp\n config={{ \n ...stepItems[1], \n texts: { \n ...stepItems[1].texts, \n cardText: `${stepItems[1].texts.cardText} ${params.mobileNumber || params.userName || \"\"}` \n } \n }}\n onOtpChange={handleOtpChange}\n onResend={resendOtp}\n onSelect={selectOtp}\n otp={params.otp}\n error={isOtpValid}\n canSubmit={canSubmitOtp}\n t={t}\n />\n } \n />\n <Route \n path=\"name\" \n element={\n <SelectName \n config={stepItems[2]} \n onSelect={selectName} \n t={t} \n isDisabled={canSubmitName} \n />\n } \n />\n </Routes>\n {error && <Toast type={\"error\"} label={error} onClose={() => setError(null)} />}\n </AppContainer>\n </div>\n );\n};\n\nexport default IndividualLogin;","import { AppContainer, BackLink, Toast } from \"@egovernments/digit-ui-components\";\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Routes, Route, useLocation, useNavigate } from \"react-router-dom\";\nimport { loginSteps } from \"./config\";\nimport SelectMobileNumber from \"./SelectMobileNumber\";\nimport SelectName from \"./SelectName\";\nimport SelectOtp from \"./SelectOtp\";\nimport IndividualLogin from \"./IndividualLogin\";\n\nconst TYPE_REGISTER = { type: \"register\" };\nconst TYPE_LOGIN = { type: \"login\" };\nconst DEFAULT_USER = \"digit-user\";\nconst DEFAULT_REDIRECT_URL = `/${window?.contextPath}/citizen`;\n\n/* set citizen details to enable backward compatible */\nconst setCitizenDetail = (userObject, token, tenantId) => {\n if (Digit.Utils.getMultiRootTenant()) {\n return;\n }\n let locale = JSON.parse(sessionStorage.getItem(\"Digit.initData\"))?.value?.selectedLanguage;\n localStorage.setItem(\"Citizen.tenant-id\", tenantId);\n localStorage.setItem(\"tenant-id\", tenantId);\n localStorage.setItem(\"citizen.userRequestObject\", JSON.stringify(userObject));\n localStorage.setItem(\"locale\", locale);\n localStorage.setItem(\"Citizen.locale\", locale);\n localStorage.setItem(\"token\", token);\n localStorage.setItem(\"Citizen.token\", token);\n localStorage.setItem(\"user-info\", JSON.stringify(userObject));\n localStorage.setItem(\"Citizen.user-info\", JSON.stringify(userObject));\n};\n\nconst getFromLocation = (state, searchParams) => {\n return state?.from || searchParams?.from || DEFAULT_REDIRECT_URL;\n};\n\nconst Login = ({ stateCode, isUserRegistered = true }) => {\n // Check if individual should be used for login\n const useAnIndividual = window?.globalConfigs?.getConfig(\"USE_INDIVIDUAL_MODEL\");\n const individualServicePath = window?.globalConfigs?.getConfig(\"INDIVIDUAL_SERVICE_CONTEXT_PATH\");\n\n // If useAnIndividual exists, use IndividualLogin component\n if (useAnIndividual && individualServicePath) {\n return <IndividualLogin stateCode={stateCode} isUserRegistered={isUserRegistered} />;\n }\n\n // Otherwise, continue with standard login flow\n const { t } = useTranslation();\n const location = useLocation();\n const navigate = useNavigate(); // Replaced useHistory with useNavigate\n // useRouteMatch is removed in v6. Path matching is handled by Routes/Route.\n // `path` and `url` were used for constructing sub-routes. In v6, paths are often relative.\n const [user, setUser] = useState(null);\n const [error, setError] = useState(null);\n const [isOtpValid, setIsOtpValid] = useState(true);\n const [params, setParams] = useState(isUserRegistered ? {} : location?.state?.data);\n const [errorTO, setErrorTO] = useState(null);\n const searchParams = Digit.Hooks.useQueryParams();\n const [canSubmitName, setCanSubmitName] = useState(false);\n const [canSubmitOtp, setCanSubmitOtp] = useState(true);\n const [canSubmitNo, setCanSubmitNo] = useState(true);\n\n useEffect(() => {\n let errorTimeout;\n if (error) {\n if (errorTO) {\n clearTimeout(errorTO);\n setErrorTO(null);\n }\n errorTimeout = setTimeout(() => {\n setError(\"\");\n }, 5000);\n setErrorTO(errorTimeout);\n }\n return () => {\n errorTimeout && clearTimeout(errorTimeout);\n };\n }, [error]);\n\n useEffect(() => {\n if (!user) {\n return;\n }\n Digit.SessionStorage.set(\"citizen.userRequestObject\", user);\n Digit.UserService.setUser(user);\n setCitizenDetail(user?.info, user?.access_token, stateCode);\n const redirectPath = location.state?.from || DEFAULT_REDIRECT_URL;\n if (!Digit.ULBService.getCitizenCurrentTenant(true)) {\n navigate(\n `/${window?.contextPath}/citizen/select-location`,\n { state: { redirectBackTo: redirectPath }, replace: true }\n );\n } else {\n navigate(redirectPath, { replace: true });\n }\n }, [user]);\n\n const stepItems = useMemo(\n () =>\n loginSteps.map((step) => {\n const texts = {};\n for (const key in step.texts) {\n texts[key] = t(step.texts[key]);\n }\n return { ...step, texts };\n }),\n [loginSteps]\n );\n\n const getUserType = () => \"citizen\" || Digit.UserService.getType();\n\n const handleOtpChange = (otp) => {\n setParams({ ...params, otp });\n };\n\n const handleMobileChange = (event) => {\n const { value } = event.target;\n setParams({ ...params, mobileNumber: value });\n };\n\n const selectMobileNumber = async (mobileNumber) => {\n setCanSubmitNo(false);\n setParams({ ...params, ...mobileNumber });\n const data = {\n ...mobileNumber,\n tenantId: stateCode,\n userType: getUserType(),\n };\n if (isUserRegistered) {\n const [res, err] = await sendOtp({ otp: { ...data, ...TYPE_LOGIN } });\n if (!err) {\n setCanSubmitNo(true);\n // Use relative path for navigation, `.` means current base path\n navigate(`otp`, { state: { from: getFromLocation(location.state, searchParams), role: location.state?.role }, replace: true });\n return;\n } else {\n setCanSubmitNo(true);\n if (!(location.state && location.state.role === \"FSM_DSO\")) {\n // Use absolute path if navigating outside the current route's scope, or relative if it's a sibling route\n navigate(`/${window?.contextPath}/citizen/register/name`, { state: { from: getFromLocation(location.state, searchParams), data: data } });\n }\n }\n if (location.state?.role) {\n setCanSubmitNo(true);\n setError(location.state?.role === \"FSM_DSO\" ? t(\"ES_ERROR_DSO_LOGIN\") : \"User not registered.\");\n }\n } else {\n const [res, err] = await sendOtp({ otp: { ...data, ...TYPE_REGISTER } });\n if (!err) {\n setCanSubmitNo(true);\n navigate(`otp`, { state: { from: getFromLocation(location.state, searchParams) }, replace: true });\n return;\n }\n setCanSubmitNo(true);\n }\n };\n\n const selectName = async (name) => {\n const data = {\n ...params,\n tenantId: stateCode,\n userType: getUserType(),\n ...name,\n };\n setParams({ ...params, ...name });\n setCanSubmitName(true);\n const [res, err] = await sendOtp({ otp: { ...data, ...TYPE_REGISTER } });\n if (res) {\n setCanSubmitName(false);\n navigate(`otp`, { state: { from: getFromLocation(location.state, searchParams) }, replace: true });\n } else {\n setCanSubmitName(false);\n }\n };\n\n const selectOtp = async () => {\n try {\n setIsOtpValid(true);\n setCanSubmitOtp(false);\n const { mobileNumber, otp, name } = params;\n if (isUserRegistered) {\n const requestData = {\n username: mobileNumber,\n password: otp,\n tenantId: stateCode,\n userType: getUserType(),\n };\n const { ResponseInfo, UserRequest: info, ...tokens } = await Digit.UserService.authenticate(requestData);\n\n if (location.state?.role) {\n const roleInfo = info.roles.find((userRole) => userRole.code === location.state.role);\n if (!roleInfo || !roleInfo.code) {\n setError(t(\"ES_ERROR_USER_NOT_PERMITTED\"));\n // navigate also handles timeouts for redirects\n setTimeout(() => navigate(DEFAULT_REDIRECT_URL, { replace: true }), 5000);\n return;\n }\n }\n if (window?.globalConfigs?.getConfig(\"ENABLE_SINGLEINSTANCE\")) {\n info.tenantId = Digit.ULBService.getStateId();\n }\n\n setUser({ info, ...tokens });\n } else if (!isUserRegistered) {\n const requestData = {\n name,\n username: mobileNumber,\n otpReference: otp,\n tenantId: stateCode,\n };\n\n const { ResponseInfo, UserRequest: info, ...tokens } = await Digit.UserService.registerUser(requestData, stateCode);\n\n if (window?.globalConfigs?.getConfig(\"ENABLE_SINGLEINSTANCE\")) {\n info.tenantId = Digit.ULBService.getStateId();\n }\n\n setUser({ info, ...tokens });\n }\n } catch (err) {\n setCanSubmitOtp(true);\n setIsOtpValid(false);\n }\n };\n\n const resendOtp = async () => {\n const { mobileNumber } = params;\n const data = {\n mobileNumber,\n tenantId: stateCode,\n userType: getUserType(),\n };\n if (!isUserRegistered) {\n const [res, err] = await sendOtp({ otp: { ...data, ...TYPE_REGISTER } });\n } else if (isUserRegistered) {\n const [res, err] = await sendOtp({ otp: { ...data, ...TYPE_LOGIN } });\n }\n };\n\n const sendOtp = async (data) => {\n try {\n const res = await Digit.UserService.sendOtp(data, stateCode);\n return [res, null];\n } catch (err) {\n return [null, err];\n }\n };\n\n const isCitizenDesktop = window.location.href.includes(\"citizen\") && !window.Digit.Utils.browser.isMobile();\n\n return (\n <div className={`citizen-form-wrapper${isCitizenDesktop ? ' citizen-form-center' : ''}`}>\n <AppContainer>\n {/* BackLink now uses navigate(-1) for going back */}\n {location.pathname.includes(\"login\") ? null : <BackLink onClick={() => navigate(-1)} />}\n <Routes> {/* Replaced Switch with Routes */}\n {/* Route path is now relative to the parent <Routes> */}\n <Route\n path=\"/\" // This will match the base path where this component is rendered (e.g., /citizen/login if mounted there)\n element={\n <SelectMobileNumber\n onSelect={selectMobileNumber}\n config={stepItems[0]}\n mobileNumber={params.mobileNumber || \"\"}\n onMobileChange={handleMobileChange}\n canSubmit={canSubmitNo}\n showRegisterLink={isUserRegistered && !location.state?.role}\n t={t}\n />\n }\n />\n <Route\n path=\"otp\" // This will match /path/to/current/route/otp\n element={\n <SelectOtp\n config={{ ...stepItems[1], texts: { ...stepItems[1].texts, cardText: `${stepItems[1].texts.cardText} ${params.mobileNumber || \"\"}` } }}\n onOtpChange={handleOtpChange}\n onResend={resendOtp}\n onSelect={selectOtp}\n otp={params.otp}\n error={isOtpValid}\n canSubmit={canSubmitOtp}\n t={t}\n />\n }\n />\n <Route\n path=\"name\" // This will match /path/to/current/route/name\n element={<SelectName config={stepItems[2]} onSelect={selectName} t={t} isDisabled={canSubmitName} />}\n />\n {error && <Toast type={\"error\"} label={error} onClose={() => setError(null)} />}\n </Routes>\n </AppContainer>\n </div>\n );\n};\n\nexport default Login;","import React from 'react';\n\nvar isCheckBoxInput = (element) => element.type === 'checkbox';\n\nvar isDateObject = (value) => value instanceof Date;\n\nvar isNullOrUndefined = (value) => value == null;\n\nconst isObjectType = (value) => typeof value === 'object';\nvar isObject = (value) => !isNullOrUndefined(value) &&\n !Array.isArray(value) &&\n isObjectType(value) &&\n !isDateObject(value);\n\nvar getEventValue = (event) => isObject(event) && event.target\n ? isCheckBoxInput(event.target)\n ? event.target.checked\n : event.target.value\n : event;\n\nvar getNodeParentName = (name) => name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\n\nvar isNameInFieldArray = (names, name) => names.has(getNodeParentName(name));\n\nvar isPlainObject = (tempObject) => {\n const prototypeCopy = tempObject.constructor && tempObject.constructor.prototype;\n return (isObject(prototypeCopy) && prototypeCopy.hasOwnProperty('isPrototypeOf'));\n};\n\nvar isWeb = typeof window !== 'undefined' &&\n typeof window.HTMLElement !== 'undefined' &&\n typeof document !== 'undefined';\n\nfunction cloneObject(data) {\n let copy;\n const isArray = Array.isArray(data);\n if (data instanceof Date) {\n copy = new Date(data);\n }\n else if (data instanceof Set) {\n copy = new Set(data);\n }\n else if (!(isWeb && (data instanceof Blob || data instanceof FileList)) &&\n (isArray || isObject(data))) {\n copy = isArray ? [] : {};\n if (!isArray && !isPlainObject(data)) {\n copy = data;\n }\n else {\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n copy[key] = cloneObject(data[key]);\n }\n }\n }\n }\n else {\n return data;\n }\n return copy;\n}\n\nvar compact = (value) => Array.isArray(value) ? value.filter(Boolean) : [];\n\nvar isUndefined = (val) => val === undefined;\n\nvar get = (object, path, defaultValue) => {\n if (!path || !isObject(object)) {\n return defaultValue;\n }\n const result = compact(path.split(/[,[\\].]+?/)).reduce((result, key) => isNullOrUndefined(result) ? result : result[key], object);\n return isUndefined(result) || result === object\n ? isUndefined(object[path])\n ? defaultValue\n : object[path]\n : result;\n};\n\nvar isBoolean = (value) => typeof value === 'boolean';\n\nvar isKey = (value) => /^\\w*$/.test(value);\n\nvar stringToPath = (input) => compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n\nvar set = (object, path, value) => {\n let index = -1;\n const tempPath = isKey(path) ? [path] : stringToPath(path);\n const length = tempPath.length;\n const lastIndex = length - 1;\n while (++index < length) {\n const key = tempPath[index];\n let newValue = value;\n if (index !== lastIndex) {\n const objValue = object[key];\n newValue =\n isObject(objValue) || Array.isArray(objValue)\n ? objValue\n : !isNaN(+tempPath[index + 1])\n ? []\n : {};\n }\n if (key === '__proto__') {\n return;\n }\n object[key] = newValue;\n object = object[key];\n }\n return object;\n};\n\nconst EVENTS = {\n BLUR: 'blur',\n FOCUS_OUT: 'focusout',\n CHANGE: 'change',\n};\nconst VALIDATION_MODE = {\n onBlur: 'onBlur',\n onChange: 'onChange',\n onSubmit: 'onSubmit',\n onTouched: 'onTouched',\n all: 'all',\n};\nconst INPUT_VALIDATION_RULES = {\n max: 'max',\n min: 'min',\n maxLength: 'maxLength',\n minLength: 'minLength',\n pattern: 'pattern',\n required: 'required',\n validate: 'validate',\n};\n\nconst HookFormContext = React.createContext(null);\n/**\n * This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @returns return all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst useFormContext = () => React.useContext(HookFormContext);\n/**\n * A provider component that propagates the `useForm` methods to all children components via [React Context](https://reactjs.org/docs/context.html) API. To be used with {@link useFormContext}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @param props - all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst FormProvider = (props) => {\n const { children, ...data } = props;\n return (React.createElement(HookFormContext.Provider, { value: data }, children));\n};\n\nvar getProxyFormState = (formState, control, localProxyFormState, isRoot = true) => {\n const result = {\n defaultValues: control._defaultValues,\n };\n for (const key in formState) {\n Object.defineProperty(result, key, {\n get: () => {\n const _key = key;\n if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\n control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n }\n localProxyFormState && (localProxyFormState[_key] = true);\n return formState[_key];\n },\n });\n }\n return result;\n};\n\nvar isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;\n\nvar shouldRenderFormState = (formStateData, _proxyFormState, updateFormState, isRoot) => {\n updateFormState(formStateData);\n const { name, ...formState } = formStateData;\n return (isEmptyObject(formState) ||\n Object.keys(formState).length >= Object.keys(_proxyFormState).length ||\n Object.keys(formState).find((key) => _proxyFormState[key] ===\n (!isRoot || VALIDATION_MODE.all)));\n};\n\nvar convertToArrayPayload = (value) => (Array.isArray(value) ? value : [value]);\n\nvar shouldSubscribeByName = (name, signalName, exact) => !name ||\n !signalName ||\n name === signalName ||\n convertToArrayPayload(name).some((currentName) => currentName &&\n (exact\n ? currentName === signalName\n : currentName.startsWith(signalName) ||\n signalName.startsWith(currentName)));\n\nfunction useSubscribe(props) {\n const _props = React.useRef(props);\n _props.current = props;\n React.useEffect(() => {\n const subscription = !props.disabled &&\n _props.current.subject &&\n _props.current.subject.subscribe({\n next: _props.current.next,\n });\n return () => {\n subscription && subscription.unsubscribe();\n };\n }, [props.disabled]);\n}\n\n/**\n * This custom hook allows you to subscribe to each form state, and isolate the re-render at the custom hook level. It has its scope in terms of form state subscription, so it would not affect other useFormState and useForm. Using this hook can reduce the re-render impact on large and complex form application.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformstate) • [Demo](https://codesandbox.io/s/useformstate-75xly)\n *\n * @param props - include options on specify fields to subscribe. {@link UseFormStateReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, control } = useForm({\n * defaultValues: {\n * firstName: \"firstName\"\n * }});\n * const { dirtyFields } = useFormState({\n * control\n * });\n * const onSubmit = (data) => console.log(data);\n *\n * return (\n * <form onSubmit={handleSubmit(onSubmit)}>\n * <input {...register(\"firstName\")} placeholder=\"First Name\" />\n * {dirtyFields.firstName && <p>Field is dirty.</p>}\n * <input type=\"submit\" />\n * </form>\n * );\n * }\n * ```\n */\nfunction useFormState(props) {\n const methods = useFormContext();\n const { control = methods.control, disabled, name, exact } = props || {};\n const [formState, updateFormState] = React.useState(control._formState);\n const _mounted = React.useRef(true);\n const _localProxyFormState = React.useRef({\n isDirty: false,\n isLoading: false,\n dirtyFields: false,\n touchedFields: false,\n validatingFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n });\n const _name = React.useRef(name);\n _name.current = name;\n useSubscribe({\n disabled,\n next: (value) => _mounted.current &&\n shouldSubscribeByName(_name.current, value.name, exact) &&\n shouldRenderFormState(value, _localProxyFormState.current, control._updateFormState) &&\n updateFormState({\n ...control._formState,\n ...value,\n }),\n subject: control._subjects.state,\n });\n React.useEffect(() => {\n _mounted.current = true;\n _localProxyFormState.current.isValid && control._updateValid(true);\n return () => {\n _mounted.current = false;\n };\n }, [control]);\n return getProxyFormState(formState, control, _localProxyFormState.current, false);\n}\n\nvar isString = (value) => typeof value === 'string';\n\nvar generateWatchOutput = (names, _names, formValues, isGlobal, defaultValue) => {\n if (isString(names)) {\n isGlobal && _names.watch.add(names);\n return get(formValues, names, defaultValue);\n }\n if (Array.isArray(names)) {\n return names.map((fieldName) => (isGlobal && _names.watch.add(fieldName), get(formValues, fieldName)));\n }\n isGlobal && (_names.watchAll = true);\n return formValues;\n};\n\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n * name: \"fieldName\"\n * control,\n * })\n * ```\n */\nfunction useWatch(props) {\n const methods = useFormContext();\n const { control = methods.control, name, defaultValue, disabled, exact, } = props || {};\n const _name = React.useRef(name);\n _name.current = name;\n useSubscribe({\n disabled,\n subject: control._subjects.values,\n next: (formState) => {\n if (shouldSubscribeByName(_name.current, formState.name, exact)) {\n updateValue(cloneObject(generateWatchOutput(_name.current, control._names, formState.values || control._formValues, false, defaultValue)));\n }\n },\n });\n const [value, updateValue] = React.useState(control._getWatch(name, defaultValue));\n React.useEffect(() => control._removeUnmounted());\n return value;\n}\n\n/**\n * Custom hook to work with controlled component, this function provide you with both form and field level state. Re-render is isolated at the hook level.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns field properties, field and form state. {@link UseControllerReturn}\n *\n * @example\n * ```tsx\n * function Input(props) {\n * const { field, fieldState, formState } = useController(props);\n * return (\n * <div>\n * <input {...field} placeholder={props.name} />\n * <p>{fieldState.isTouched && \"Touched\"}</p>\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n * </div>\n * );\n * }\n * ```\n */\nfunction useController(props) {\n const methods = useFormContext();\n const { name, disabled, control = methods.control, shouldUnregister } = props;\n const isArrayField = isNameInFieldArray(control._names.array, name);\n const value = useWatch({\n control,\n name,\n defaultValue: get(control._formValues, name, get(control._defaultValues, name, props.defaultValue)),\n exact: true,\n });\n const formState = useFormState({\n control,\n name,\n exact: true,\n });\n const _registerProps = React.useRef(control.register(name, {\n ...props.rules,\n value,\n ...(isBoolean(props.disabled) ? { disabled: props.disabled } : {}),\n }));\n React.useEffect(() => {\n const _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;\n const updateMounted = (name, value) => {\n const field = get(control._fields, name);\n if (field && field._f) {\n field._f.mount = value;\n }\n };\n updateMounted(name, true);\n if (_shouldUnregisterField) {\n const value = cloneObject(get(control._options.defaultValues, name));\n set(control._defaultValues, name, value);\n if (isUndefined(get(control._formValues, name))) {\n set(control._formValues, name, value);\n }\n }\n return () => {\n (isArrayField\n ? _shouldUnregisterField && !control._state.action\n : _shouldUnregisterField)\n ? control.unregister(name)\n : updateMounted(name, false);\n };\n }, [name, control, isArrayField, shouldUnregister]);\n React.useEffect(() => {\n if (get(control._fields, name)) {\n control._updateDisabledField({\n disabled,\n fields: control._fields,\n name,\n value: get(control._fields, name)._f.value,\n });\n }\n }, [disabled, name, control]);\n return {\n field: {\n name,\n value,\n ...(isBoolean(disabled) || formState.disabled\n ? { disabled: formState.disabled || disabled }\n : {}),\n onChange: React.useCallback((event) => _registerProps.current.onChange({\n target: {\n value: getEventValue(event),\n name: name,\n },\n type: EVENTS.CHANGE,\n }), [name]),\n onBlur: React.useCallback(() => _registerProps.current.onBlur({\n target: {\n value: get(control._formValues, name),\n name: name,\n },\n type: EVENTS.BLUR,\n }), [name, control]),\n ref: React.useCallback((elm) => {\n const field = get(control._fields, name);\n if (field && elm) {\n field._f.ref = {\n focus: () => elm.focus(),\n select: () => elm.select(),\n setCustomValidity: (message) => elm.setCustomValidity(message),\n reportValidity: () => elm.reportValidity(),\n };\n }\n }, [control._fields, name]),\n },\n formState,\n fieldState: Object.defineProperties({}, {\n invalid: {\n enumerable: true,\n get: () => !!get(formState.errors, name),\n },\n isDirty: {\n enumerable: true,\n get: () => !!get(formState.dirtyFields, name),\n },\n isTouched: {\n enumerable: true,\n get: () => !!get(formState.touchedFields, name),\n },\n isValidating: {\n enumerable: true,\n get: () => !!get(formState.validatingFields, name),\n },\n error: {\n enumerable: true,\n get: () => get(formState.errors, name),\n },\n }),\n };\n}\n\n/**\n * Component based on `useController` hook to work with controlled component.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller/controller) • [Demo](https://codesandbox.io/s/react-hook-form-v6-controller-ts-jwyzw) • [Video](https://www.youtube.com/watch?v=N2UNk_UCVyA)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns provide field handler functions, field and form state.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control } = useForm<FormValues>({\n * defaultValues: {\n * test: \"\"\n * }\n * });\n *\n * return (\n * <form>\n * <Controller\n * control={control}\n * name=\"test\"\n * render={({ field: { onChange, onBlur, value, ref }, formState, fieldState }) => (\n * <>\n * <input\n * onChange={onChange} // send value to hook form\n * onBlur={onBlur} // notify when input is touched\n * value={value} // return updated value\n * ref={ref} // set ref for focus management\n * />\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n * <p>{fieldState.isTouched ? \"touched\" : \"\"}</p>\n * </>\n * )}\n * />\n * </form>\n * );\n * }\n * ```\n */\nconst Controller = (props) => props.render(useController(props));\n\nconst POST_REQUEST = 'post';\n/**\n * Form component to manage submission.\n *\n * @param props - to setup submission detail. {@link FormProps}\n *\n * @returns form component or headless render prop.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control, formState: { errors } } = useForm();\n *\n * return (\n * <Form action=\"/api\" control={control}>\n * <input {...register(\"name\")} />\n * <p>{errors?.root?.server && 'Server error'}</p>\n * <button>Submit</button>\n * </Form>\n * );\n * }\n * ```\n */\nfunction Form(props) {\n const methods = useFormContext();\n const [mounted, setMounted] = React.useState(false);\n const { control = methods.control, onSubmit, children, action, method = POST_REQUEST, headers, encType, onError, render, onSuccess, validateStatus, ...rest } = props;\n const submit = async (event) => {\n let hasError = false;\n let type = '';\n await control.handleSubmit(async (data) => {\n const formData = new FormData();\n let formDataJson = '';\n try {\n formDataJson = JSON.stringify(data);\n }\n catch (_a) { }\n for (const name of control._names.mount) {\n formData.append(name, get(data, name));\n }\n if (onSubmit) {\n await onSubmit({\n data,\n event,\n method,\n formData,\n formDataJson,\n });\n }\n if (action) {\n try {\n const shouldStringifySubmissionData = [\n headers && headers['Content-Type'],\n encType,\n ].some((value) => value && value.includes('json'));\n const response = await fetch(action, {\n method,\n headers: {\n ...headers,\n ...(encType ? { 'Content-Type': encType } : {}),\n },\n body: shouldStringifySubmissionData ? formDataJson : formData,\n });\n if (response &&\n (validateStatus\n ? !validateStatus(response.status)\n : response.status < 200 || response.status >= 300)) {\n hasError = true;\n onError && onError({ response });\n type = String(response.status);\n }\n else {\n onSuccess && onSuccess({ response });\n }\n }\n catch (error) {\n hasError = true;\n onError && onError({ error });\n }\n }\n })(event);\n if (hasError && props.control) {\n props.control._subjects.state.next({\n isSubmitSuccessful: false,\n });\n props.control.setError('root.server', {\n type,\n });\n }\n };\n React.useEffect(() => {\n setMounted(true);\n }, []);\n return render ? (React.createElement(React.Fragment, null, render({\n submit,\n }))) : (React.createElement(\"form\", { noValidate: mounted, action: action, method: method, encType: encType, onSubmit: submit, ...rest }, children));\n}\n\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria\n ? {\n ...errors[name],\n types: {\n ...(errors[name] && errors[name].types ? errors[name].types : {}),\n [type]: message || true,\n },\n }\n : {};\n\nvar generateId = () => {\n const d = typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16 + d) % 16 | 0;\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n};\n\nvar getFocusFieldName = (name, index, options = {}) => options.shouldFocus || isUndefined(options.shouldFocus)\n ? options.focusName ||\n `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.`\n : '';\n\nvar getValidationModes = (mode) => ({\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n isOnBlur: mode === VALIDATION_MODE.onBlur,\n isOnChange: mode === VALIDATION_MODE.onChange,\n isOnAll: mode === VALIDATION_MODE.all,\n isOnTouch: mode === VALIDATION_MODE.onTouched,\n});\n\nvar isWatched = (name, _names, isBlurEvent) => !isBlurEvent &&\n (_names.watchAll ||\n _names.watch.has(name) ||\n [..._names.watch].some((watchName) => name.startsWith(watchName) &&\n /^\\.\\w+/.test(name.slice(watchName.length))));\n\nconst iterateFieldsByAction = (fields, action, fieldsNames, abortEarly) => {\n for (const key of fieldsNames || Object.keys(fields)) {\n const field = get(fields, key);\n if (field) {\n const { _f, ...currentField } = field;\n if (_f) {\n if (_f.refs && _f.refs[0] && action(_f.refs[0], key) && !abortEarly) {\n break;\n }\n else if (_f.ref && action(_f.ref, _f.name) && !abortEarly) {\n break;\n }\n else {\n iterateFieldsByAction(currentField, action);\n }\n }\n else if (isObject(currentField)) {\n iterateFieldsByAction(currentField, action);\n }\n }\n }\n};\n\nvar updateFieldArrayRootError = (errors, error, name) => {\n const fieldArrayErrors = convertToArrayPayload(get(errors, name));\n set(fieldArrayErrors, 'root', error[name]);\n set(errors, name, fieldArrayErrors);\n return errors;\n};\n\nvar isFileInput = (element) => element.type === 'file';\n\nvar isFunction = (value) => typeof value === 'function';\n\nvar isHTMLElement = (value) => {\n if (!isWeb) {\n return false;\n }\n const owner = value ? value.ownerDocument : 0;\n return (value instanceof\n (owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement));\n};\n\nvar isMessage = (value) => isString(value);\n\nvar isRadioInput = (element) => element.type === 'radio';\n\nvar isRegex = (value) => value instanceof RegExp;\n\nconst defaultResult = {\n value: false,\n isValid: false,\n};\nconst validResult = { value: true, isValid: true };\nvar getCheckboxValue = (options) => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options\n .filter((option) => option && option.checked && !option.disabled)\n .map((option) => option.value);\n return { value: values, isValid: !!values.length };\n }\n return options[0].checked && !options[0].disabled\n ? // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value)\n ? isUndefined(options[0].value) || options[0].value === ''\n ? validResult\n : { value: options[0].value, isValid: true }\n : validResult\n : defaultResult;\n }\n return defaultResult;\n};\n\nconst defaultReturn = {\n isValid: false,\n value: null,\n};\nvar getRadioValue = (options) => Array.isArray(options)\n ? options.reduce((previous, option) => option && option.checked && !option.disabled\n ? {\n isValid: true,\n value: option.value,\n }\n : previous, defaultReturn)\n : defaultReturn;\n\nfunction getValidateError(result, ref, type = 'validate') {\n if (isMessage(result) ||\n (Array.isArray(result) && result.every(isMessage)) ||\n (isBoolean(result) && !result)) {\n return {\n type,\n message: isMessage(result) ? result : '',\n ref,\n };\n }\n}\n\nvar getValueAndMessage = (validationData) => isObject(validationData) && !isRegex(validationData)\n ? validationData\n : {\n value: validationData,\n message: '',\n };\n\nvar validateField = async (field, formValues, validateAllFieldCriteria, shouldUseNativeValidation, isFieldArray) => {\n const { ref, refs, required, maxLength, minLength, min, max, pattern, validate, name, valueAsNumber, mount, disabled, } = field._f;\n const inputValue = get(formValues, name);\n if (!mount || disabled) {\n return {};\n }\n const inputRef = refs ? refs[0] : ref;\n const setCustomValidity = (message) => {\n if (shouldUseNativeValidation && inputRef.reportValidity) {\n inputRef.setCustomValidity(isBoolean(message) ? '' : message || '');\n inputRef.reportValidity();\n }\n };\n const error = {};\n const isRadio = isRadioInput(ref);\n const isCheckBox = isCheckBoxInput(ref);\n const isRadioOrCheckbox = isRadio || isCheckBox;\n const isEmpty = ((valueAsNumber || isFileInput(ref)) &&\n isUndefined(ref.value) &&\n isUndefined(inputValue)) ||\n (isHTMLElement(ref) && ref.value === '') ||\n inputValue === '' ||\n (Array.isArray(inputValue) && !inputValue.length);\n const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\n const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\n error[name] = {\n type: exceedMax ? maxType : minType,\n message,\n ref,\n ...appendErrorsCurry(exceedMax ? maxType : minType, message),\n };\n };\n if (isFieldArray\n ? !Array.isArray(inputValue) || !inputValue.length\n : required &&\n ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\n (isBoolean(inputValue) && !inputValue) ||\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\n (isRadio && !getRadioValue(refs).isValid))) {\n const { value, message } = isMessage(required)\n ? { value: !!required, message: required }\n : getValueAndMessage(required);\n if (value) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.required,\n message,\n ref: inputRef,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\n let exceedMax;\n let exceedMin;\n const maxOutput = getValueAndMessage(max);\n const minOutput = getValueAndMessage(min);\n if (!isNullOrUndefined(inputValue) && !isNaN(inputValue)) {\n const valueNumber = ref.valueAsNumber ||\n (inputValue ? +inputValue : inputValue);\n if (!isNullOrUndefined(maxOutput.value)) {\n exceedMax = valueNumber > maxOutput.value;\n }\n if (!isNullOrUndefined(minOutput.value)) {\n exceedMin = valueNumber < minOutput.value;\n }\n }\n else {\n const valueDate = ref.valueAsDate || new Date(inputValue);\n const convertTimeToDate = (time) => new Date(new Date().toDateString() + ' ' + time);\n const isTime = ref.type == 'time';\n const isWeek = ref.type == 'week';\n if (isString(maxOutput.value) && inputValue) {\n exceedMax = isTime\n ? convertTimeToDate(inputValue) > convertTimeToDate(maxOutput.value)\n : isWeek\n ? inputValue > maxOutput.value\n : valueDate > new Date(maxOutput.value);\n }\n if (isString(minOutput.value) && inputValue) {\n exceedMin = isTime\n ? convertTimeToDate(inputValue) < convertTimeToDate(minOutput.value)\n : isWeek\n ? inputValue < minOutput.value\n : valueDate < new Date(minOutput.value);\n }\n }\n if (exceedMax || exceedMin) {\n getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name].message);\n return error;\n }\n }\n }\n if ((maxLength || minLength) &&\n !isEmpty &&\n (isString(inputValue) || (isFieldArray && Array.isArray(inputValue)))) {\n const maxLengthOutput = getValueAndMessage(maxLength);\n const minLengthOutput = getValueAndMessage(minLength);\n const exceedMax = !isNullOrUndefined(maxLengthOutput.value) &&\n inputValue.length > +maxLengthOutput.value;\n const exceedMin = !isNullOrUndefined(minLengthOutput.value) &&\n inputValue.length < +minLengthOutput.value;\n if (exceedMax || exceedMin) {\n getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name].message);\n return error;\n }\n }\n }\n if (pattern && !isEmpty && isString(inputValue)) {\n const { value: patternValue, message } = getValueAndMessage(pattern);\n if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.pattern,\n message,\n ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n if (validate) {\n if (isFunction(validate)) {\n const result = await validate(inputValue, formValues);\n const validateError = getValidateError(result, inputRef);\n if (validateError) {\n error[name] = {\n ...validateError,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(validateError.message);\n return error;\n }\n }\n }\n else if (isObject(validate)) {\n let validationResult = {};\n for (const key in validate) {\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n break;\n }\n const validateError = getValidateError(await validate[key](inputValue, formValues), inputRef, key);\n if (validateError) {\n validationResult = {\n ...validateError,\n ...appendErrorsCurry(key, validateError.message),\n };\n setCustomValidity(validateError.message);\n if (validateAllFieldCriteria) {\n error[name] = validationResult;\n }\n }\n }\n if (!isEmptyObject(validationResult)) {\n error[name] = {\n ref: inputRef,\n ...validationResult,\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n }\n setCustomValidity(true);\n return error;\n};\n\nvar appendAt = (data, value) => [\n ...data,\n ...convertToArrayPayload(value),\n];\n\nvar fillEmptyArray = (value) => Array.isArray(value) ? value.map(() => undefined) : undefined;\n\nfunction insert(data, index, value) {\n return [\n ...data.slice(0, index),\n ...convertToArrayPayload(value),\n ...data.slice(index),\n ];\n}\n\nvar moveArrayAt = (data, from, to) => {\n if (!Array.isArray(data)) {\n return [];\n }\n if (isUndefined(data[to])) {\n data[to] = undefined;\n }\n data.splice(to, 0, data.splice(from, 1)[0]);\n return data;\n};\n\nvar prependAt = (data, value) => [\n ...convertToArrayPayload(value),\n ...convertToArrayPayload(data),\n];\n\nfunction removeAtIndexes(data, indexes) {\n let i = 0;\n const temp = [...data];\n for (const index of indexes) {\n temp.splice(index - i, 1);\n i++;\n }\n return compact(temp).length ? temp : [];\n}\nvar removeArrayAt = (data, index) => isUndefined(index)\n ? []\n : removeAtIndexes(data, convertToArrayPayload(index).sort((a, b) => a - b));\n\nvar swapArrayAt = (data, indexA, indexB) => {\n [data[indexA], data[indexB]] = [data[indexB], data[indexA]];\n};\n\nfunction baseGet(object, updatePath) {\n const length = updatePath.slice(0, -1).length;\n let index = 0;\n while (index < length) {\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\n }\n return object;\n}\nfunction isEmptyArray(obj) {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && !isUndefined(obj[key])) {\n return false;\n }\n }\n return true;\n}\nfunction unset(object, path) {\n const paths = Array.isArray(path)\n ? path\n : isKey(path)\n ? [path]\n : stringToPath(path);\n const childObject = paths.length === 1 ? object : baseGet(object, paths);\n const index = paths.length - 1;\n const key = paths[index];\n if (childObject) {\n delete childObject[key];\n }\n if (index !== 0 &&\n ((isObject(childObject) && isEmptyObject(childObject)) ||\n (Array.isArray(childObject) && isEmptyArray(childObject)))) {\n unset(object, paths.slice(0, -1));\n }\n return object;\n}\n\nvar updateAt = (fieldValues, index, value) => {\n fieldValues[index] = value;\n return fieldValues;\n};\n\n/**\n * A custom hook that exposes convenient methods to perform operations with a list of dynamic inputs that need to be appended, updated, removed etc. • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn) • [Video](https://youtu.be/4MrbfGSFY2A)\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)\n *\n * @param props - useFieldArray props\n *\n * @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, control, handleSubmit, reset, trigger, setError } = useForm({\n * defaultValues: {\n * test: []\n * }\n * });\n * const { fields, append } = useFieldArray({\n * control,\n * name: \"test\"\n * });\n *\n * return (\n * <form onSubmit={handleSubmit(data => console.log(data))}>\n * {fields.map((item, index) => (\n * <input key={item.id} {...register(`test.${index}.firstName`)} />\n * ))}\n * <button type=\"button\" onClick={() => append({ firstName: \"bill\" })}>\n * append\n * </button>\n * <input type=\"submit\" />\n * </form>\n * );\n * }\n * ```\n */\nfunction useFieldArray(props) {\n const methods = useFormContext();\n const { control = methods.control, name, keyName = 'id', shouldUnregister, } = props;\n const [fields, setFields] = React.useState(control._getFieldArray(name));\n const ids = React.useRef(control._getFieldArray(name).map(generateId));\n const _fieldIds = React.useRef(fields);\n const _name = React.useRef(name);\n const _actioned = React.useRef(false);\n _name.current = name;\n _fieldIds.current = fields;\n control._names.array.add(name);\n props.rules &&\n control.register(name, props.rules);\n useSubscribe({\n next: ({ values, name: fieldArrayName, }) => {\n if (fieldArrayName === _name.current || !fieldArrayName) {\n const fieldValues = get(values, _name.current);\n if (Array.isArray(fieldValues)) {\n setFields(fieldValues);\n ids.current = fieldValues.map(generateId);\n }\n }\n },\n subject: control._subjects.array,\n });\n const updateValues = React.useCallback((updatedFieldArrayValues) => {\n _actioned.current = true;\n control._updateFieldArray(name, updatedFieldArrayValues);\n }, [control, name]);\n const append = (value, options) => {\n const appendValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = appendAt(control._getFieldArray(name), appendValue);\n control._names.focus = getFocusFieldName(name, updatedFieldArrayValues.length - 1, options);\n ids.current = appendAt(ids.current, appendValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, appendAt, {\n argA: fillEmptyArray(value),\n });\n };\n const prepend = (value, options) => {\n const prependValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = prependAt(control._getFieldArray(name), prependValue);\n control._names.focus = getFocusFieldName(name, 0, options);\n ids.current = prependAt(ids.current, prependValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, prependAt, {\n argA: fillEmptyArray(value),\n });\n };\n const remove = (index) => {\n const updatedFieldArrayValues = removeArrayAt(control._getFieldArray(name), index);\n ids.current = removeArrayAt(ids.current, index);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\n argA: index,\n });\n };\n const insert$1 = (index, value, options) => {\n const insertValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = insert(control._getFieldArray(name), index, insertValue);\n control._names.focus = getFocusFieldName(name, index, options);\n ids.current = insert(ids.current, index, insertValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, insert, {\n argA: index,\n argB: fillEmptyArray(value),\n });\n };\n const swap = (indexA, indexB) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n swapArrayAt(updatedFieldArrayValues, indexA, indexB);\n swapArrayAt(ids.current, indexA, indexB);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, swapArrayAt, {\n argA: indexA,\n argB: indexB,\n }, false);\n };\n const move = (from, to) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n moveArrayAt(updatedFieldArrayValues, from, to);\n moveArrayAt(ids.current, from, to);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, moveArrayAt, {\n argA: from,\n argB: to,\n }, false);\n };\n const update = (index, value) => {\n const updateValue = cloneObject(value);\n const updatedFieldArrayValues = updateAt(control._getFieldArray(name), index, updateValue);\n ids.current = [...updatedFieldArrayValues].map((item, i) => !item || i === index ? generateId() : ids.current[i]);\n updateValues(updatedFieldArrayValues);\n setFields([...updatedFieldArrayValues]);\n control._updateFieldArray(name, updatedFieldArrayValues, updateAt, {\n argA: index,\n argB: updateValue,\n }, true, false);\n };\n const replace = (value) => {\n const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\n ids.current = updatedFieldArrayValues.map(generateId);\n updateValues([...updatedFieldArrayValues]);\n setFields([...updatedFieldArrayValues]);\n control._updateFieldArray(name, [...updatedFieldArrayValues], (data) => data, {}, true, false);\n };\n React.useEffect(() => {\n control._state.action = false;\n isWatched(name, control._names) &&\n control._subjects.state.next({\n ...control._formState,\n });\n if (_actioned.current &&\n (!getValidationModes(control._options.mode).isOnSubmit ||\n control._formState.isSubmitted)) {\n if (control._options.resolver) {\n control._executeSchema([name]).then((result) => {\n const error = get(result.errors, name);\n const existingError = get(control._formState.errors, name);\n if (existingError\n ? (!error && existingError.type) ||\n (error &&\n (existingError.type !== error.type ||\n existingError.message !== error.message))\n : error && error.type) {\n error\n ? set(control._formState.errors, name, error)\n : unset(control._formState.errors, name);\n control._subjects.state.next({\n errors: control._formState.errors,\n });\n }\n });\n }\n else {\n const field = get(control._fields, name);\n if (field &&\n field._f &&\n !(getValidationModes(control._options.reValidateMode).isOnSubmit &&\n getValidationModes(control._options.mode).isOnSubmit)) {\n validateField(field, control._formValues, control._options.criteriaMode === VALIDATION_MODE.all, control._options.shouldUseNativeValidation, true).then((error) => !isEmptyObject(error) &&\n control._subjects.state.next({\n errors: updateFieldArrayRootError(control._formState.errors, error, name),\n }));\n }\n }\n }\n control._subjects.values.next({\n name,\n values: { ...control._formValues },\n });\n control._names.focus &&\n iterateFieldsByAction(control._fields, (ref, key) => {\n if (control._names.focus &&\n key.startsWith(control._names.focus) &&\n ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n });\n control._names.focus = '';\n control._updateValid();\n _actioned.current = false;\n }, [fields, name, control]);\n React.useEffect(() => {\n !get(control._formValues, name) && control._updateFieldArray(name);\n return () => {\n (control._options.shouldUnregister || shouldUnregister) &&\n control.unregister(name);\n };\n }, [name, control, keyName, shouldUnregister]);\n return {\n swap: React.useCallback(swap, [updateValues, name, control]),\n move: React.useCallback(move, [updateValues, name, control]),\n prepend: React.useCallback(prepend, [updateValues, name, control]),\n append: React.useCallback(append, [updateValues, name, control]),\n remove: React.useCallback(remove, [updateValues, name, control]),\n insert: React.useCallback(insert$1, [updateValues, name, control]),\n update: React.useCallback(update, [updateValues, name, control]),\n replace: React.useCallback(replace, [updateValues, name, control]),\n fields: React.useMemo(() => fields.map((field, index) => ({\n ...field,\n [keyName]: ids.current[index] || generateId(),\n })), [fields, keyName]),\n };\n}\n\nvar createSubject = () => {\n let _observers = [];\n const next = (value) => {\n for (const observer of _observers) {\n observer.next && observer.next(value);\n }\n };\n const subscribe = (observer) => {\n _observers.push(observer);\n return {\n unsubscribe: () => {\n _observers = _observers.filter((o) => o !== observer);\n },\n };\n };\n const unsubscribe = () => {\n _observers = [];\n };\n return {\n get observers() {\n return _observers;\n },\n next,\n subscribe,\n unsubscribe,\n };\n};\n\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\n\nfunction deepEqual(object1, object2) {\n if (isPrimitive(object1) || isPrimitive(object2)) {\n return object1 === object2;\n }\n if (isDateObject(object1) && isDateObject(object2)) {\n return object1.getTime() === object2.getTime();\n }\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (const key of keys1) {\n const val1 = object1[key];\n if (!keys2.includes(key)) {\n return false;\n }\n if (key !== 'ref') {\n const val2 = object2[key];\n if ((isDateObject(val1) && isDateObject(val2)) ||\n (isObject(val1) && isObject(val2)) ||\n (Array.isArray(val1) && Array.isArray(val2))\n ? !deepEqual(val1, val2)\n : val1 !== val2) {\n return false;\n }\n }\n }\n return true;\n}\n\nvar isMultipleSelect = (element) => element.type === `select-multiple`;\n\nvar isRadioOrCheckbox = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\n\nvar live = (ref) => isHTMLElement(ref) && ref.isConnected;\n\nvar objectHasFunction = (data) => {\n for (const key in data) {\n if (isFunction(data[key])) {\n return true;\n }\n }\n return false;\n};\n\nfunction markFieldsDirty(data, fields = {}) {\n const isParentNodeArray = Array.isArray(data);\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (Array.isArray(data[key]) ||\n (isObject(data[key]) && !objectHasFunction(data[key]))) {\n fields[key] = Array.isArray(data[key]) ? [] : {};\n markFieldsDirty(data[key], fields[key]);\n }\n else if (!isNullOrUndefined(data[key])) {\n fields[key] = true;\n }\n }\n }\n return fields;\n}\nfunction getDirtyFieldsFromDefaultValues(data, formValues, dirtyFieldsFromValues) {\n const isParentNodeArray = Array.isArray(data);\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (Array.isArray(data[key]) ||\n (isObject(data[key]) && !objectHasFunction(data[key]))) {\n if (isUndefined(formValues) ||\n isPrimitive(dirtyFieldsFromValues[key])) {\n dirtyFieldsFromValues[key] = Array.isArray(data[key])\n ? markFieldsDirty(data[key], [])\n : { ...markFieldsDirty(data[key]) };\n }\n else {\n getDirtyFieldsFromDefaultValues(data[key], isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key]);\n }\n }\n else {\n dirtyFieldsFromValues[key] = !deepEqual(data[key], formValues[key]);\n }\n }\n }\n return dirtyFieldsFromValues;\n}\nvar getDirtyFields = (defaultValues, formValues) => getDirtyFieldsFromDefaultValues(defaultValues, formValues, markFieldsDirty(formValues));\n\nvar getFieldValueAs = (value, { valueAsNumber, valueAsDate, setValueAs }) => isUndefined(value)\n ? value\n : valueAsNumber\n ? value === ''\n ? NaN\n : value\n ? +value\n : value\n : valueAsDate && isString(value)\n ? new Date(value)\n : setValueAs\n ? setValueAs(value)\n : value;\n\nfunction getFieldValue(_f) {\n const ref = _f.ref;\n if (_f.refs ? _f.refs.every((ref) => ref.disabled) : ref.disabled) {\n return;\n }\n if (isFileInput(ref)) {\n return ref.files;\n }\n if (isRadioInput(ref)) {\n return getRadioValue(_f.refs).value;\n }\n if (isMultipleSelect(ref)) {\n return [...ref.selectedOptions].map(({ value }) => value);\n }\n if (isCheckBoxInput(ref)) {\n return getCheckboxValue(_f.refs).value;\n }\n return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\n}\n\nvar getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {\n const fields = {};\n for (const name of fieldsNames) {\n const field = get(_fields, name);\n field && set(fields, name, field._f);\n }\n return {\n criteriaMode,\n names: [...fieldsNames],\n fields,\n shouldUseNativeValidation,\n };\n};\n\nvar getRuleValue = (rule) => isUndefined(rule)\n ? rule\n : isRegex(rule)\n ? rule.source\n : isObject(rule)\n ? isRegex(rule.value)\n ? rule.value.source\n : rule.value\n : rule;\n\nvar hasValidation = (options) => options.mount &&\n (options.required ||\n options.min ||\n options.max ||\n options.maxLength ||\n options.minLength ||\n options.pattern ||\n options.validate);\n\nfunction schemaErrorLookup(errors, _fields, name) {\n const error = get(errors, name);\n if (error || isKey(name)) {\n return {\n error,\n name,\n };\n }\n const names = name.split('.');\n while (names.length) {\n const fieldName = names.join('.');\n const field = get(_fields, fieldName);\n const foundError = get(errors, fieldName);\n if (field && !Array.isArray(field) && name !== fieldName) {\n return { name };\n }\n if (foundError && foundError.type) {\n return {\n name: fieldName,\n error: foundError,\n };\n }\n names.pop();\n }\n return {\n name,\n };\n}\n\nvar skipValidation = (isBlurEvent, isTouched, isSubmitted, reValidateMode, mode) => {\n if (mode.isOnAll) {\n return false;\n }\n else if (!isSubmitted && mode.isOnTouch) {\n return !(isTouched || isBlurEvent);\n }\n else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n return !isBlurEvent;\n }\n else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n return isBlurEvent;\n }\n return true;\n};\n\nvar unsetEmptyArray = (ref, name) => !compact(get(ref, name)).length && unset(ref, name);\n\nconst defaultOptions = {\n mode: VALIDATION_MODE.onSubmit,\n reValidateMode: VALIDATION_MODE.onChange,\n shouldFocusError: true,\n};\nfunction createFormControl(props = {}) {\n let _options = {\n ...defaultOptions,\n ...props,\n };\n let _formState = {\n submitCount: 0,\n isDirty: false,\n isLoading: isFunction(_options.defaultValues),\n isValidating: false,\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n touchedFields: {},\n dirtyFields: {},\n validatingFields: {},\n errors: _options.errors || {},\n disabled: _options.disabled || false,\n };\n let _fields = {};\n let _defaultValues = isObject(_options.defaultValues) || isObject(_options.values)\n ? cloneObject(_options.defaultValues || _options.values) || {}\n : {};\n let _formValues = _options.shouldUnregister\n ? {}\n : cloneObject(_defaultValues);\n let _state = {\n action: false,\n mount: false,\n watch: false,\n };\n let _names = {\n mount: new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set(),\n };\n let delayErrorCallback;\n let timer = 0;\n const _proxyFormState = {\n isDirty: false,\n dirtyFields: false,\n validatingFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n };\n const _subjects = {\n values: createSubject(),\n array: createSubject(),\n state: createSubject(),\n };\n const validationModeBeforeSubmit = getValidationModes(_options.mode);\n const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n const shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;\n const debounce = (callback) => (wait) => {\n clearTimeout(timer);\n timer = setTimeout(callback, wait);\n };\n const _updateValid = async (shouldUpdateValid) => {\n if (_proxyFormState.isValid || shouldUpdateValid) {\n const isValid = _options.resolver\n ? isEmptyObject((await _executeSchema()).errors)\n : await executeBuiltInValidation(_fields, true);\n if (isValid !== _formState.isValid) {\n _subjects.state.next({\n isValid,\n });\n }\n }\n };\n const _updateIsValidating = (names, isValidating) => {\n if (_proxyFormState.isValidating || _proxyFormState.validatingFields) {\n (names || Array.from(_names.mount)).forEach((name) => {\n if (name) {\n isValidating\n ? set(_formState.validatingFields, name, isValidating)\n : unset(_formState.validatingFields, name);\n }\n });\n _subjects.state.next({\n validatingFields: _formState.validatingFields,\n isValidating: !isEmptyObject(_formState.validatingFields),\n });\n }\n };\n const _updateFieldArray = (name, values = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndState = true) => {\n if (args && method) {\n _state.action = true;\n if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\n const fieldValues = method(get(_fields, name), args.argA, args.argB);\n shouldSetValues && set(_fields, name, fieldValues);\n }\n if (shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.errors, name))) {\n const errors = method(get(_formState.errors, name), args.argA, args.argB);\n shouldSetValues && set(_formState.errors, name, errors);\n unsetEmptyArray(_formState.errors, name);\n }\n if (_proxyFormState.touchedFields &&\n shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.touchedFields, name))) {\n const touchedFields = method(get(_formState.touchedFields, name), args.argA, args.argB);\n shouldSetValues && set(_formState.touchedFields, name, touchedFields);\n }\n if (_proxyFormState.dirtyFields) {\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n }\n _subjects.state.next({\n name,\n isDirty: _getDirty(name, values),\n dirtyFields: _formState.dirtyFields,\n errors: _formState.errors,\n isValid: _formState.isValid,\n });\n }\n else {\n set(_formValues, name, values);\n }\n };\n const updateErrors = (name, error) => {\n set(_formState.errors, name, error);\n _subjects.state.next({\n errors: _formState.errors,\n });\n };\n const _setErrors = (errors) => {\n _formState.errors = errors;\n _subjects.state.next({\n errors: _formState.errors,\n isValid: false,\n });\n };\n const updateValidAndValue = (name, shouldSkipSetValueAs, value, ref) => {\n const field = get(_fields, name);\n if (field) {\n const defaultValue = get(_formValues, name, isUndefined(value) ? get(_defaultValues, name) : value);\n isUndefined(defaultValue) ||\n (ref && ref.defaultChecked) ||\n shouldSkipSetValueAs\n ? set(_formValues, name, shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f))\n : setFieldValue(name, defaultValue);\n _state.mount && _updateValid();\n }\n };\n const updateTouchAndDirty = (name, fieldValue, isBlurEvent, shouldDirty, shouldRender) => {\n let shouldUpdateField = false;\n let isPreviousDirty = false;\n const output = {\n name,\n };\n const disabledField = !!(get(_fields, name) &&\n get(_fields, name)._f &&\n get(_fields, name)._f.disabled);\n if (!isBlurEvent || shouldDirty) {\n if (_proxyFormState.isDirty) {\n isPreviousDirty = _formState.isDirty;\n _formState.isDirty = output.isDirty = _getDirty();\n shouldUpdateField = isPreviousDirty !== output.isDirty;\n }\n const isCurrentFieldPristine = disabledField || deepEqual(get(_defaultValues, name), fieldValue);\n isPreviousDirty = !!(!disabledField && get(_formState.dirtyFields, name));\n isCurrentFieldPristine || disabledField\n ? unset(_formState.dirtyFields, name)\n : set(_formState.dirtyFields, name, true);\n output.dirtyFields = _formState.dirtyFields;\n shouldUpdateField =\n shouldUpdateField ||\n (_proxyFormState.dirtyFields &&\n isPreviousDirty !== !isCurrentFieldPristine);\n }\n if (isBlurEvent) {\n const isPreviousFieldTouched = get(_formState.touchedFields, name);\n if (!isPreviousFieldTouched) {\n set(_formState.touchedFields, name, isBlurEvent);\n output.touchedFields = _formState.touchedFields;\n shouldUpdateField =\n shouldUpdateField ||\n (_proxyFormState.touchedFields &&\n isPreviousFieldTouched !== isBlurEvent);\n }\n }\n shouldUpdateField && shouldRender && _subjects.state.next(output);\n return shouldUpdateField ? output : {};\n };\n const shouldRenderByError = (name, isValid, error, fieldState) => {\n const previousFieldError = get(_formState.errors, name);\n const shouldUpdateValid = _proxyFormState.isValid &&\n isBoolean(isValid) &&\n _formState.isValid !== isValid;\n if (props.delayError && error) {\n delayErrorCallback = debounce(() => updateErrors(name, error));\n delayErrorCallback(props.delayError);\n }\n else {\n clearTimeout(timer);\n delayErrorCallback = null;\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n if ((error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\n !isEmptyObject(fieldState) ||\n shouldUpdateValid) {\n const updatedFormState = {\n ...fieldState,\n ...(shouldUpdateValid && isBoolean(isValid) ? { isValid } : {}),\n errors: _formState.errors,\n name,\n };\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n _subjects.state.next(updatedFormState);\n }\n };\n const _executeSchema = async (name) => {\n _updateIsValidating(name, true);\n const result = await _options.resolver(_formValues, _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation));\n _updateIsValidating(name);\n return result;\n };\n const executeSchemaAndUpdateState = async (names) => {\n const { errors } = await _executeSchema(names);\n if (names) {\n for (const name of names) {\n const error = get(errors, name);\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n }\n else {\n _formState.errors = errors;\n }\n return errors;\n };\n const executeBuiltInValidation = async (fields, shouldOnlyCheckValid, context = {\n valid: true,\n }) => {\n for (const name in fields) {\n const field = fields[name];\n if (field) {\n const { _f, ...fieldValue } = field;\n if (_f) {\n const isFieldArrayRoot = _names.array.has(_f.name);\n _updateIsValidating([name], true);\n const fieldError = await validateField(field, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation && !shouldOnlyCheckValid, isFieldArrayRoot);\n _updateIsValidating([name]);\n if (fieldError[_f.name]) {\n context.valid = false;\n if (shouldOnlyCheckValid) {\n break;\n }\n }\n !shouldOnlyCheckValid &&\n (get(fieldError, _f.name)\n ? isFieldArrayRoot\n ? updateFieldArrayRootError(_formState.errors, fieldError, _f.name)\n : set(_formState.errors, _f.name, fieldError[_f.name])\n : unset(_formState.errors, _f.name));\n }\n !isEmptyObject(fieldValue) &&\n (await executeBuiltInValidation(fieldValue, shouldOnlyCheckValid, context));\n }\n }\n return context.valid;\n };\n const _removeUnmounted = () => {\n for (const name of _names.unMount) {\n const field = get(_fields, name);\n field &&\n (field._f.refs\n ? field._f.refs.every((ref) => !live(ref))\n : !live(field._f.ref)) &&\n unregister(name);\n }\n _names.unMount = new Set();\n };\n const _getDirty = (name, data) => (name && data && set(_formValues, name, data),\n !deepEqual(getValues(), _defaultValues));\n const _getWatch = (names, defaultValue, isGlobal) => generateWatchOutput(names, _names, {\n ...(_state.mount\n ? _formValues\n : isUndefined(defaultValue)\n ? _defaultValues\n : isString(names)\n ? { [names]: defaultValue }\n : defaultValue),\n }, isGlobal, defaultValue);\n const _getFieldArray = (name) => compact(get(_state.mount ? _formValues : _defaultValues, name, props.shouldUnregister ? get(_defaultValues, name, []) : []));\n const setFieldValue = (name, value, options = {}) => {\n const field = get(_fields, name);\n let fieldValue = value;\n if (field) {\n const fieldReference = field._f;\n if (fieldReference) {\n !fieldReference.disabled &&\n set(_formValues, name, getFieldValueAs(value, fieldReference));\n fieldValue =\n isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\n ? ''\n : value;\n if (isMultipleSelect(fieldReference.ref)) {\n [...fieldReference.ref.options].forEach((optionRef) => (optionRef.selected = fieldValue.includes(optionRef.value)));\n }\n else if (fieldReference.refs) {\n if (isCheckBoxInput(fieldReference.ref)) {\n fieldReference.refs.length > 1\n ? fieldReference.refs.forEach((checkboxRef) => (!checkboxRef.defaultChecked || !checkboxRef.disabled) &&\n (checkboxRef.checked = Array.isArray(fieldValue)\n ? !!fieldValue.find((data) => data === checkboxRef.value)\n : fieldValue === checkboxRef.value))\n : fieldReference.refs[0] &&\n (fieldReference.refs[0].checked = !!fieldValue);\n }\n else {\n fieldReference.refs.forEach((radioRef) => (radioRef.checked = radioRef.value === fieldValue));\n }\n }\n else if (isFileInput(fieldReference.ref)) {\n fieldReference.ref.value = '';\n }\n else {\n fieldReference.ref.value = fieldValue;\n if (!fieldReference.ref.type) {\n _subjects.values.next({\n name,\n values: { ..._formValues },\n });\n }\n }\n }\n }\n (options.shouldDirty || options.shouldTouch) &&\n updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty, true);\n options.shouldValidate && trigger(name);\n };\n const setValues = (name, value, options) => {\n for (const fieldKey in value) {\n const fieldValue = value[fieldKey];\n const fieldName = `${name}.${fieldKey}`;\n const field = get(_fields, fieldName);\n (_names.array.has(name) ||\n !isPrimitive(fieldValue) ||\n (field && !field._f)) &&\n !isDateObject(fieldValue)\n ? setValues(fieldName, fieldValue, options)\n : setFieldValue(fieldName, fieldValue, options);\n }\n };\n const setValue = (name, value, options = {}) => {\n const field = get(_fields, name);\n const isFieldArray = _names.array.has(name);\n const cloneValue = cloneObject(value);\n set(_formValues, name, cloneValue);\n if (isFieldArray) {\n _subjects.array.next({\n name,\n values: { ..._formValues },\n });\n if ((_proxyFormState.isDirty || _proxyFormState.dirtyFields) &&\n options.shouldDirty) {\n _subjects.state.next({\n name,\n dirtyFields: getDirtyFields(_defaultValues, _formValues),\n isDirty: _getDirty(name, cloneValue),\n });\n }\n }\n else {\n field && !field._f && !isNullOrUndefined(cloneValue)\n ? setValues(name, cloneValue, options)\n : setFieldValue(name, cloneValue, options);\n }\n isWatched(name, _names) && _subjects.state.next({ ..._formState });\n _subjects.values.next({\n name: _state.mount ? name : undefined,\n values: { ..._formValues },\n });\n };\n const onChange = async (event) => {\n _state.mount = true;\n const target = event.target;\n let name = target.name;\n let isFieldValueUpdated = true;\n const field = get(_fields, name);\n const getCurrentFieldValue = () => target.type ? getFieldValue(field._f) : getEventValue(event);\n const _updateIsFieldValueUpdated = (fieldValue) => {\n isFieldValueUpdated =\n Number.isNaN(fieldValue) ||\n fieldValue === get(_formValues, name, fieldValue);\n };\n if (field) {\n let error;\n let isValid;\n const fieldValue = getCurrentFieldValue();\n const isBlurEvent = event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n const shouldSkipValidation = (!hasValidation(field._f) &&\n !_options.resolver &&\n !get(_formState.errors, name) &&\n !field._f.deps) ||\n skipValidation(isBlurEvent, get(_formState.touchedFields, name), _formState.isSubmitted, validationModeAfterSubmit, validationModeBeforeSubmit);\n const watched = isWatched(name, _names, isBlurEvent);\n set(_formValues, name, fieldValue);\n if (isBlurEvent) {\n field._f.onBlur && field._f.onBlur(event);\n delayErrorCallback && delayErrorCallback(0);\n }\n else if (field._f.onChange) {\n field._f.onChange(event);\n }\n const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent, false);\n const shouldRender = !isEmptyObject(fieldState) || watched;\n !isBlurEvent &&\n _subjects.values.next({\n name,\n type: event.type,\n values: { ..._formValues },\n });\n if (shouldSkipValidation) {\n _proxyFormState.isValid && _updateValid();\n return (shouldRender &&\n _subjects.state.next({ name, ...(watched ? {} : fieldState) }));\n }\n !isBlurEvent && watched && _subjects.state.next({ ..._formState });\n if (_options.resolver) {\n const { errors } = await _executeSchema([name]);\n _updateIsFieldValueUpdated(fieldValue);\n if (isFieldValueUpdated) {\n const previousErrorLookupResult = schemaErrorLookup(_formState.errors, _fields, name);\n const errorLookupResult = schemaErrorLookup(errors, _fields, previousErrorLookupResult.name || name);\n error = errorLookupResult.error;\n name = errorLookupResult.name;\n isValid = isEmptyObject(errors);\n }\n }\n else {\n _updateIsValidating([name], true);\n error = (await validateField(field, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation))[name];\n _updateIsValidating([name]);\n _updateIsFieldValueUpdated(fieldValue);\n if (isFieldValueUpdated) {\n if (error) {\n isValid = false;\n }\n else if (_proxyFormState.isValid) {\n isValid = await executeBuiltInValidation(_fields, true);\n }\n }\n }\n if (isFieldValueUpdated) {\n field._f.deps &&\n trigger(field._f.deps);\n shouldRenderByError(name, isValid, error, fieldState);\n }\n }\n };\n const _focusInput = (ref, key) => {\n if (get(_formState.errors, key) && ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n };\n const trigger = async (name, options = {}) => {\n let isValid;\n let validationResult;\n const fieldNames = convertToArrayPayload(name);\n if (_options.resolver) {\n const errors = await executeSchemaAndUpdateState(isUndefined(name) ? name : fieldNames);\n isValid = isEmptyObject(errors);\n validationResult = name\n ? !fieldNames.some((name) => get(errors, name))\n : isValid;\n }\n else if (name) {\n validationResult = (await Promise.all(fieldNames.map(async (fieldName) => {\n const field = get(_fields, fieldName);\n return await executeBuiltInValidation(field && field._f ? { [fieldName]: field } : field);\n }))).every(Boolean);\n !(!validationResult && !_formState.isValid) && _updateValid();\n }\n else {\n validationResult = isValid = await executeBuiltInValidation(_fields);\n }\n _subjects.state.next({\n ...(!isString(name) ||\n (_proxyFormState.isValid && isValid !== _formState.isValid)\n ? {}\n : { name }),\n ...(_options.resolver || !name ? { isValid } : {}),\n errors: _formState.errors,\n });\n options.shouldFocus &&\n !validationResult &&\n iterateFieldsByAction(_fields, _focusInput, name ? fieldNames : _names.mount);\n return validationResult;\n };\n const getValues = (fieldNames) => {\n const values = {\n ...(_state.mount ? _formValues : _defaultValues),\n };\n return isUndefined(fieldNames)\n ? values\n : isString(fieldNames)\n ? get(values, fieldNames)\n : fieldNames.map((name) => get(values, name));\n };\n const getFieldState = (name, formState) => ({\n invalid: !!get((formState || _formState).errors, name),\n isDirty: !!get((formState || _formState).dirtyFields, name),\n error: get((formState || _formState).errors, name),\n isValidating: !!get(_formState.validatingFields, name),\n isTouched: !!get((formState || _formState).touchedFields, name),\n });\n const clearErrors = (name) => {\n name &&\n convertToArrayPayload(name).forEach((inputName) => unset(_formState.errors, inputName));\n _subjects.state.next({\n errors: name ? _formState.errors : {},\n });\n };\n const setError = (name, error, options) => {\n const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\n const currentError = get(_formState.errors, name) || {};\n // Don't override existing error messages elsewhere in the object tree.\n const { ref: currentRef, message, type, ...restOfErrorTree } = currentError;\n set(_formState.errors, name, {\n ...restOfErrorTree,\n ...error,\n ref,\n });\n _subjects.state.next({\n name,\n errors: _formState.errors,\n isValid: false,\n });\n options && options.shouldFocus && ref && ref.focus && ref.focus();\n };\n const watch = (name, defaultValue) => isFunction(name)\n ? _subjects.values.subscribe({\n next: (payload) => name(_getWatch(undefined, defaultValue), payload),\n })\n : _getWatch(name, defaultValue, true);\n const unregister = (name, options = {}) => {\n for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n _names.mount.delete(fieldName);\n _names.array.delete(fieldName);\n if (!options.keepValue) {\n unset(_fields, fieldName);\n unset(_formValues, fieldName);\n }\n !options.keepError && unset(_formState.errors, fieldName);\n !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n !options.keepTouched && unset(_formState.touchedFields, fieldName);\n !options.keepIsValidating &&\n unset(_formState.validatingFields, fieldName);\n !_options.shouldUnregister &&\n !options.keepDefaultValue &&\n unset(_defaultValues, fieldName);\n }\n _subjects.values.next({\n values: { ..._formValues },\n });\n _subjects.state.next({\n ..._formState,\n ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\n });\n !options.keepIsValid && _updateValid();\n };\n const _updateDisabledField = ({ disabled, name, field, fields, value, }) => {\n if ((isBoolean(disabled) && _state.mount) || !!disabled) {\n const inputValue = disabled\n ? undefined\n : isUndefined(value)\n ? getFieldValue(field ? field._f : get(fields, name)._f)\n : value;\n set(_formValues, name, inputValue);\n updateTouchAndDirty(name, inputValue, false, false, true);\n }\n };\n const register = (name, options = {}) => {\n let field = get(_fields, name);\n const disabledIsDefined = isBoolean(options.disabled);\n set(_fields, name, {\n ...(field || {}),\n _f: {\n ...(field && field._f ? field._f : { ref: { name } }),\n name,\n mount: true,\n ...options,\n },\n });\n _names.mount.add(name);\n if (field) {\n _updateDisabledField({\n field,\n disabled: options.disabled,\n name,\n value: options.value,\n });\n }\n else {\n updateValidAndValue(name, true, options.value);\n }\n return {\n ...(disabledIsDefined ? { disabled: options.disabled } : {}),\n ...(_options.progressive\n ? {\n required: !!options.required,\n min: getRuleValue(options.min),\n max: getRuleValue(options.max),\n minLength: getRuleValue(options.minLength),\n maxLength: getRuleValue(options.maxLength),\n pattern: getRuleValue(options.pattern),\n }\n : {}),\n name,\n onChange,\n onBlur: onChange,\n ref: (ref) => {\n if (ref) {\n register(name, options);\n field = get(_fields, name);\n const fieldRef = isUndefined(ref.value)\n ? ref.querySelectorAll\n ? ref.querySelectorAll('input,select,textarea')[0] || ref\n : ref\n : ref;\n const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n const refs = field._f.refs || [];\n if (radioOrCheckbox\n ? refs.find((option) => option === fieldRef)\n : fieldRef === field._f.ref) {\n return;\n }\n set(_fields, name, {\n _f: {\n ...field._f,\n ...(radioOrCheckbox\n ? {\n refs: [\n ...refs.filter(live),\n fieldRef,\n ...(Array.isArray(get(_defaultValues, name)) ? [{}] : []),\n ],\n ref: { type: fieldRef.type, name },\n }\n : { ref: fieldRef }),\n },\n });\n updateValidAndValue(name, false, undefined, fieldRef);\n }\n else {\n field = get(_fields, name, {});\n if (field._f) {\n field._f.mount = false;\n }\n (_options.shouldUnregister || options.shouldUnregister) &&\n !(isNameInFieldArray(_names.array, name) && _state.action) &&\n _names.unMount.add(name);\n }\n },\n };\n };\n const _focusError = () => _options.shouldFocusError &&\n iterateFieldsByAction(_fields, _focusInput, _names.mount);\n const _disableForm = (disabled) => {\n if (isBoolean(disabled)) {\n _subjects.state.next({ disabled });\n iterateFieldsByAction(_fields, (ref, name) => {\n const currentField = get(_fields, name);\n if (currentField) {\n ref.disabled = currentField._f.disabled || disabled;\n if (Array.isArray(currentField._f.refs)) {\n currentField._f.refs.forEach((inputRef) => {\n inputRef.disabled = currentField._f.disabled || disabled;\n });\n }\n }\n }, 0, false);\n }\n };\n const handleSubmit = (onValid, onInvalid) => async (e) => {\n let onValidError = undefined;\n if (e) {\n e.preventDefault && e.preventDefault();\n e.persist && e.persist();\n }\n let fieldValues = cloneObject(_formValues);\n _subjects.state.next({\n isSubmitting: true,\n });\n if (_options.resolver) {\n const { errors, values } = await _executeSchema();\n _formState.errors = errors;\n fieldValues = values;\n }\n else {\n await executeBuiltInValidation(_fields);\n }\n unset(_formState.errors, 'root');\n if (isEmptyObject(_formState.errors)) {\n _subjects.state.next({\n errors: {},\n });\n try {\n await onValid(fieldValues, e);\n }\n catch (error) {\n onValidError = error;\n }\n }\n else {\n if (onInvalid) {\n await onInvalid({ ..._formState.errors }, e);\n }\n _focusError();\n setTimeout(_focusError);\n }\n _subjects.state.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful: isEmptyObject(_formState.errors) && !onValidError,\n submitCount: _formState.submitCount + 1,\n errors: _formState.errors,\n });\n if (onValidError) {\n throw onValidError;\n }\n };\n const resetField = (name, options = {}) => {\n if (get(_fields, name)) {\n if (isUndefined(options.defaultValue)) {\n setValue(name, cloneObject(get(_defaultValues, name)));\n }\n else {\n setValue(name, options.defaultValue);\n set(_defaultValues, name, cloneObject(options.defaultValue));\n }\n if (!options.keepTouched) {\n unset(_formState.touchedFields, name);\n }\n if (!options.keepDirty) {\n unset(_formState.dirtyFields, name);\n _formState.isDirty = options.defaultValue\n ? _getDirty(name, cloneObject(get(_defaultValues, name)))\n : _getDirty();\n }\n if (!options.keepError) {\n unset(_formState.errors, name);\n _proxyFormState.isValid && _updateValid();\n }\n _subjects.state.next({ ..._formState });\n }\n };\n const _reset = (formValues, keepStateOptions = {}) => {\n const updatedValues = formValues ? cloneObject(formValues) : _defaultValues;\n const cloneUpdatedValues = cloneObject(updatedValues);\n const isEmptyResetValues = isEmptyObject(formValues);\n const values = isEmptyResetValues ? _defaultValues : cloneUpdatedValues;\n if (!keepStateOptions.keepDefaultValues) {\n _defaultValues = updatedValues;\n }\n if (!keepStateOptions.keepValues) {\n if (keepStateOptions.keepDirtyValues) {\n for (const fieldName of _names.mount) {\n get(_formState.dirtyFields, fieldName)\n ? set(values, fieldName, get(_formValues, fieldName))\n : setValue(fieldName, get(values, fieldName));\n }\n }\n else {\n if (isWeb && isUndefined(formValues)) {\n for (const name of _names.mount) {\n const field = get(_fields, name);\n if (field && field._f) {\n const fieldReference = Array.isArray(field._f.refs)\n ? field._f.refs[0]\n : field._f.ref;\n if (isHTMLElement(fieldReference)) {\n const form = fieldReference.closest('form');\n if (form) {\n form.reset();\n break;\n }\n }\n }\n }\n }\n _fields = {};\n }\n _formValues = props.shouldUnregister\n ? keepStateOptions.keepDefaultValues\n ? cloneObject(_defaultValues)\n : {}\n : cloneObject(values);\n _subjects.array.next({\n values: { ...values },\n });\n _subjects.values.next({\n values: { ...values },\n });\n }\n _names = {\n mount: keepStateOptions.keepDirtyValues ? _names.mount : new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set(),\n watchAll: false,\n focus: '',\n };\n _state.mount =\n !_proxyFormState.isValid ||\n !!keepStateOptions.keepIsValid ||\n !!keepStateOptions.keepDirtyValues;\n _state.watch = !!props.shouldUnregister;\n _subjects.state.next({\n submitCount: keepStateOptions.keepSubmitCount\n ? _formState.submitCount\n : 0,\n isDirty: isEmptyResetValues\n ? false\n : keepStateOptions.keepDirty\n ? _formState.isDirty\n : !!(keepStateOptions.keepDefaultValues &&\n !deepEqual(formValues, _defaultValues)),\n isSubmitted: keepStateOptions.keepIsSubmitted\n ? _formState.isSubmitted\n : false,\n dirtyFields: isEmptyResetValues\n ? {}\n : keepStateOptions.keepDirtyValues\n ? keepStateOptions.keepDefaultValues && _formValues\n ? getDirtyFields(_defaultValues, _formValues)\n : _formState.dirtyFields\n : keepStateOptions.keepDefaultValues && formValues\n ? getDirtyFields(_defaultValues, formValues)\n : keepStateOptions.keepDirty\n ? _formState.dirtyFields\n : {},\n touchedFields: keepStateOptions.keepTouched\n ? _formState.touchedFields\n : {},\n errors: keepStateOptions.keepErrors ? _formState.errors : {},\n isSubmitSuccessful: keepStateOptions.keepIsSubmitSuccessful\n ? _formState.isSubmitSuccessful\n : false,\n isSubmitting: false,\n });\n };\n const reset = (formValues, keepStateOptions) => _reset(isFunction(formValues)\n ? formValues(_formValues)\n : formValues, keepStateOptions);\n const setFocus = (name, options = {}) => {\n const field = get(_fields, name);\n const fieldReference = field && field._f;\n if (fieldReference) {\n const fieldRef = fieldReference.refs\n ? fieldReference.refs[0]\n : fieldReference.ref;\n if (fieldRef.focus) {\n fieldRef.focus();\n options.shouldSelect && fieldRef.select();\n }\n }\n };\n const _updateFormState = (updatedFormState) => {\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n };\n const _resetDefaultValues = () => isFunction(_options.defaultValues) &&\n _options.defaultValues().then((values) => {\n reset(values, _options.resetOptions);\n _subjects.state.next({\n isLoading: false,\n });\n });\n return {\n control: {\n register,\n unregister,\n getFieldState,\n handleSubmit,\n setError,\n _executeSchema,\n _getWatch,\n _getDirty,\n _updateValid,\n _removeUnmounted,\n _updateFieldArray,\n _updateDisabledField,\n _getFieldArray,\n _reset,\n _resetDefaultValues,\n _updateFormState,\n _disableForm,\n _subjects,\n _proxyFormState,\n _setErrors,\n get _fields() {\n return _fields;\n },\n get _formValues() {\n return _formValues;\n },\n get _state() {\n return _state;\n },\n set _state(value) {\n _state = value;\n },\n get _defaultValues() {\n return _defaultValues;\n },\n get _names() {\n return _names;\n },\n set _names(value) {\n _names = value;\n },\n get _formState() {\n return _formState;\n },\n set _formState(value) {\n _formState = value;\n },\n get _options() {\n return _options;\n },\n set _options(value) {\n _options = {\n ..._options,\n ...value,\n };\n },\n },\n trigger,\n register,\n handleSubmit,\n watch,\n setValue,\n getValues,\n reset,\n resetField,\n clearErrors,\n unregister,\n setError,\n setFocus,\n getFieldState,\n };\n}\n\n/**\n * Custom hook to manage the entire form.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\n *\n * @param props - form configuration and validation parameters.\n *\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, watch, formState: { errors } } = useForm();\n * const onSubmit = data => console.log(data);\n *\n * console.log(watch(\"example\"));\n *\n * return (\n * <form onSubmit={handleSubmit(onSubmit)}>\n * <input defaultValue=\"test\" {...register(\"example\")} />\n * <input {...register(\"exampleRequired\", { required: true })} />\n * {errors.exampleRequired && <span>This field is required</span>}\n * <button>Submit</button>\n * </form>\n * );\n * }\n * ```\n */\nfunction useForm(props = {}) {\n const _formControl = React.useRef();\n const _values = React.useRef();\n const [formState, updateFormState] = React.useState({\n isDirty: false,\n isValidating: false,\n isLoading: isFunction(props.defaultValues),\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n submitCount: 0,\n dirtyFields: {},\n touchedFields: {},\n validatingFields: {},\n errors: props.errors || {},\n disabled: props.disabled || false,\n defaultValues: isFunction(props.defaultValues)\n ? undefined\n : props.defaultValues,\n });\n if (!_formControl.current) {\n _formControl.current = {\n ...createFormControl(props),\n formState,\n };\n }\n const control = _formControl.current.control;\n control._options = props;\n useSubscribe({\n subject: control._subjects.state,\n next: (value) => {\n if (shouldRenderFormState(value, control._proxyFormState, control._updateFormState, true)) {\n updateFormState({ ...control._formState });\n }\n },\n });\n React.useEffect(() => control._disableForm(props.disabled), [control, props.disabled]);\n React.useEffect(() => {\n if (control._proxyFormState.isDirty) {\n const isDirty = control._getDirty();\n if (isDirty !== formState.isDirty) {\n control._subjects.state.next({\n isDirty,\n });\n }\n }\n }, [control, formState.isDirty]);\n React.useEffect(() => {\n if (props.values && !deepEqual(props.values, _values.current)) {\n control._reset(props.values, control._options.resetOptions);\n _values.current = props.values;\n updateFormState((state) => ({ ...state }));\n }\n else {\n control._resetDefaultValues();\n }\n }, [props.values, control]);\n React.useEffect(() => {\n if (props.errors) {\n control._setErrors(props.errors);\n }\n }, [props.errors, control]);\n React.useEffect(() => {\n if (!control._state.mount) {\n control._updateValid();\n control._state.mount = true;\n }\n if (control._state.watch) {\n control._state.watch = false;\n control._subjects.state.next({ ...control._formState });\n }\n control._removeUnmounted();\n });\n React.useEffect(() => {\n props.shouldUnregister &&\n control._subjects.values.next({\n values: control._getWatch(),\n });\n }, [props.shouldUnregister, control]);\n _formControl.current.formState = getProxyFormState(formState, control);\n return _formControl.current;\n}\n\nexport { Controller, Form, FormProvider, appendErrors, get, set, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };\n//# sourceMappingURL=index.esm.mjs.map\n","import { DatePicker, SearchField, Button } from \"@egovernments/digit-ui-components\";\nimport React from \"react\";\nimport { Controller } from \"react-hook-form\";\nconst SearchFields = ({ register, control, reset, tenantId, t, previousPage, formState, isLoading }) => {\n const isMobile = window.Digit.Utils.browser.isMobile();\n\n return (\n <>\n <SearchField className=\"pt-form-field\">\n <label>{t(\"AUDIT_FROM_DATE_LABEL\")}</label>\n <Controller render={(props) => <DatePicker date={props.value} onChange={props.onChange} />} name=\"fromDate\" control={control} />\n </SearchField>\n <SearchField className=\"pt-form-field\">\n <label>{t(\"AUDIT_TO_DATE_LABEL\")}</label>\n <Controller render={(props) => <DatePicker date={props.value} onChange={props.onChange} />} name=\"toDate\" control={control} />\n </SearchField>\n <SearchField className=\"pt-search-action-submit\">\n <Button\n style={{ marginTop: isMobile ? \"510px\" : \"25px\", marginLeft: isMobile ? \"0\" : \"-30px\", maxWidth: isMobile ? \"100%\" : \"240px\" }}\n label={t(\"ES_COMMON_APPLY\")}\n submit\n />\n </SearchField>\n </>\n );\n};\nexport default SearchFields;\n","import {\n BackButton,\n DetailsCard,\n HeaderComponent,\n Loader,\n PopUp,\n SearchAction,\n SearchForm,\n CloseSvg,\n DownloadBtnCommon,\n} from \"@egovernments/digit-ui-components\";\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useState,\n} from \"react\";\nimport SearchFormFields from \"./SearchFields\";\n// import { convertEpochToDateDMY } from \"../../utils\";\n\nconst MobileSearchApplication = ({\n Controller,\n register,\n control,\n t,\n reset,\n previousPage,\n handleSubmit,\n tenantId,\n data,\n onSubmit,\n isLoading,\n}) => {\n function activateModal(state, action) {\n switch (action.type) {\n case \"set\":\n return action.payload;\n case \"remove\":\n return false;\n default:\n break;\n }\n }\n const [tabledata, settabledata] = useState([]);\n const DownloadBtn = (props) => {\n return (\n <div onClick={props.onClick}>\n <DownloadBtnCommon />\n </div>\n );\n };\n const handleExcelDownload = (tabData) => {\n if (tabData?.[0] !== undefined) {\n return Digit.Download.Excel(tabData?.[0], \"AuditReport\");\n }\n };\n useEffect(() => {\n if (data?.length > 0) {\n settabledata([\n data?.map((obj) => {\n let returnObject = {};\n returnObject[t(\"AUDIT_DATE_LABEL\")] = convertEpochToDate(\n obj?.timestamp\n );\n returnObject[t(\"AUDIT_TIME_LABEL\")] = convertEpochToTimeInHours(\n obj?.timestamp\n );\n returnObject[t(\"AUDIT_DATAVIEWED_LABEL\")] =\n obj?.dataView[0] + \",\" + obj?.dataView[1];\n returnObject[t(\"AUDIT_DATAVIEWED_BY_LABEL\")] = obj?.dataViewedBy;\n returnObject[t(\"AUDIT_ROLE_LABEL\")] = obj?.roles\n .map((obj) => obj.name)\n .join(\",\");\n return {\n ...returnObject,\n };\n }),\n ]);\n }\n }, [data]);\n const convertEpochToDate = (dateEpoch) => {\n if (dateEpoch == null || dateEpoch == undefined || dateEpoch == \"\") {\n return \"NA\";\n }\n const dateFromApi = new Date(dateEpoch);\n let month = dateFromApi.getMonth() + 1;\n let day = dateFromApi.getDate();\n let year = dateFromApi.getFullYear();\n month = (month > 9 ? \"\" : \"0\") + month;\n day = (day > 9 ? \"\" : \"0\") + day;\n return `${day}/${month}/${year}`;\n };\n const convertEpochToTimeInHours = (dateEpoch) => {\n if (dateEpoch == null || dateEpoch == undefined || dateEpoch == \"\") {\n return \"NA\";\n }\n const dateFromApi = new Date(dateEpoch);\n let hour = dateFromApi.getHours();\n let min = dateFromApi.getMinutes();\n let period = hour > 12 ? \"PM\" : \"AM\";\n hour = hour > 12 ? hour - 12 : hour;\n hour = (hour > 9 ? \"\" : \"0\") + hour;\n min = (min > 9 ? \"\" : \"0\") + min;\n return `${hour}:${min} ${period}`;\n };\n const [currentlyActiveMobileModal, setActiveMobileModal] = useReducer(\n activateModal,\n false\n );\n\n const closeMobilePopupModal = () => {\n setActiveMobileModal({ type: \"remove\" });\n };\n\n const MobilePopUpCloseButton = () => (\n <div\n className=\"InboxMobilePopupCloseButtonWrapper\"\n onClick={closeMobilePopupModal}\n >\n <CloseSvg />\n </div>\n );\n const searchFormFieldsComponentProps = {\n Controller,\n register,\n control,\n t,\n reset,\n previousPage,\n };\n\n const MobileComponentDirectory = ({\n currentlyActiveMobileModal,\n searchFormFieldsComponentProps,\n tenantId,\n ...props\n }) => {\n const { closeMobilePopupModal } = props;\n switch (currentlyActiveMobileModal) {\n case \"SearchFormComponent\":\n return (\n <SearchForm {...props}>\n <MobilePopUpCloseButton />\n <div className=\"MobilePopupHeadingWrapper\">\n <h2>{t(\"PRIVACY_AUDIT_REPORT\")}:</h2>\n </div>\n <SearchFormFields\n {...searchFormFieldsComponentProps}\n {...{ closeMobilePopupModal, tenantId, t }}\n />\n {/* <SearchField className=\"submit\">\n <SubmitBar label={t(\"ES_COMMON_SEARCH\")} submit form=\"search-form\"/>\n <p onClick={onResetSearchForm}>{t(`ES_COMMON_CLEAR_ALL`)}</p>\n </SearchField> */}\n </SearchForm>\n );\n default:\n return <span></span>;\n }\n };\n const CurrentMobileModalComponent = useCallback(\n ({\n currentlyActiveMobileModal,\n searchFormFieldsComponentProps,\n tenantId,\n ...props\n }) =>\n MobileComponentDirectory({\n currentlyActiveMobileModal,\n searchFormFieldsComponentProps,\n tenantId,\n ...props,\n }),\n [currentlyActiveMobileModal]\n );\n let roles = [];\n data?.roles?.forEach((item) => {\n roles.push(item?.name);\n });\n const propsMobileInboxCards = useMemo(() => {\n if (data?.display) {\n return [];\n }\n if (data === \"\") {\n return [];\n }\n return data?.map((data) => ({\n [t(\"AUDIT_DATE_LABEL\")]: convertEpochToDate(data.timestamp),\n [t(\"AUDIT_TIME_LABEL\")]: convertEpochToTimeInHours(data.timestamp),\n [t(\"AUDIT_DATAVIEWED_LABEL\")]: data.dataView[0] + \",\" + data.dataView[1],\n [t(\"AUDIT_DATAVIEWED_BY_LABEL\")]: data.dataViewedBy,\n [t(\"AUDIT_ROLE_LABEL\")]: data.roles\n .slice(0, 3)\n ?.map((e) => e.name)\n .join(\",\"),\n }));\n }, [data]);\n\n return (\n <React.Fragment>\n <BackButton />\n <div\n className=\"sideContent\"\n style={{ marginLeft: \"70%\", marginTop: \"-12%\" }}\n >\n <DownloadBtn\n className=\"mrlg cursorPointer\"\n onClick={() => handleExcelDownload(tabledata)}\n />\n </div>\n <HeaderComponent>{t(\"PRIVACY_AUDIT_REPORT\")}:</HeaderComponent>\n <div className=\"digit-search-box\">\n <SearchAction\n text={t(\"ES_COMMON_SEARCH\")}\n handleActionClick={() =>\n setActiveMobileModal({\n type: \"set\",\n payload: \"SearchFormComponent\",\n })\n }\n {...{ tenantId, t }}\n />\n </div>\n {currentlyActiveMobileModal ? (\n <PopUp>\n <CurrentMobileModalComponent\n onSubmit={(data) => {\n setActiveMobileModal({ type: \"remove\" });\n onSubmit(data);\n }}\n handleSubmit={handleSubmit}\n id=\"search-form\"\n className=\"rm-mb form-field-flex-one inboxPopupMobileWrapper\"\n {...{\n searchFormFieldsComponentProps,\n currentlyActiveMobileModal,\n closeMobilePopupModal,\n tenantId,\n }}\n />\n </PopUp>\n ) : null}\n {isLoading && <Loader />}\n <DetailsCard\n {...{\n data: propsMobileInboxCards,\n }}\n />\n </React.Fragment>\n );\n};\n\nexport default MobileSearchApplication;\n","import {\n DownloadBtnCommon,\n Table,\n} from \"@egovernments/digit-ui-react-components\";\nimport {\n BackButton,\n Loader,\n SearchForm,\n HeaderComponent\n} from \"@egovernments/digit-ui-components\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport MobileSearchApplication from \"./MobileSearchApplication\";\nimport SearchFields from \"./SearchFields\";\n\nconst SearchApplication = ({ tenantId, t, onSubmit, data, count }) => {\n const initialValues = Digit.SessionStorage.get(\n \"AUDIT_APPLICATION_DETAIL\"\n ) || {\n offset: 0,\n limit: 5,\n sortOrder: \"DESC\",\n };\n const {\n register,\n control,\n handleSubmit,\n setValue,\n getValues,\n reset,\n } = useForm({\n defaultValues: initialValues,\n });\n const convertEpochToDate = (dateEpoch) => {\n if (dateEpoch == null || dateEpoch == undefined || dateEpoch == \"\") {\n return \"NA\";\n }\n const dateFromApi = new Date(dateEpoch);\n let month = dateFromApi.getMonth() + 1;\n let day = dateFromApi.getDate();\n let year = dateFromApi.getFullYear();\n month = (month > 9 ? \"\" : \"0\") + month;\n day = (day > 9 ? \"\" : \"0\") + day;\n return `${day}/${month}/${year}`;\n };\n const convertEpochToTimeInHours = (dateEpoch) => {\n if (dateEpoch == null || dateEpoch == undefined || dateEpoch == \"\") {\n return \"NA\";\n }\n const dateFromApi = new Date(dateEpoch);\n let hour = dateFromApi.getHours();\n let min = dateFromApi.getMinutes();\n let period = hour > 12 ? \"PM\" : \"AM\";\n hour = hour > 12 ? hour - 12 : hour;\n hour = (hour > 9 ? \"\" : \"0\") + hour;\n min = (min > 9 ? \"\" : \"0\") + min;\n return `${hour}:${min} ${period}`;\n };\n const [tabledata, settabledata] = useState([]);\n const DownloadBtn = (props) => {\n return (\n <div onClick={props.onClick}>\n <DownloadBtnCommon />\n </div>\n );\n };\n const handleExcelDownload = (tabData) => {\n if (tabData?.[0] !== undefined) {\n return Digit.Download.Excel(tabData?.[0], \"AuditReport\");\n }\n };\n useEffect(() => {\n register(\"offset\", 0);\n register(\"limit\", 5);\n register(\"sortOrder\", \"DESC\");\n }, [register]);\n useEffect(() => {\n if (data?.length > 0) {\n settabledata([\n data?.map((obj) => {\n let returnObject = {};\n returnObject[t(\"AUDIT_DATE_LABEL\")] = convertEpochToDate(\n obj?.timestamp\n );\n returnObject[t(\"AUDIT_TIME_LABEL\")] = convertEpochToTimeInHours(\n obj?.timestamp\n );\n returnObject[t(\"AUDIT_DATAVIEWED_LABEL\")] =\n obj?.dataView[0] + \",\" + obj?.dataView[1];\n returnObject[t(\"AUDIT_DATAVIEWED_BY_LABEL\")] = obj?.dataViewedBy;\n returnObject[t(\"AUDIT_ROLE_LABEL\")] = obj?.roles\n .map((obj) => obj.name)\n .join(\",\");\n return {\n ...returnObject,\n };\n }),\n ]);\n }\n }, [data]);\n const onSort = useCallback((args) => {\n if (args.length === 0) return;\n setValue(\"sortBy\", args.id);\n setValue(\"sortOrder\", args.desc ? \"DESC\" : \"ASC\");\n }, []);\n\n function onPageSizeChange(e) {\n setValue(\"limit\", Number(e.target.value));\n handleSubmit(onSubmit)();\n }\n\n function nextPage() {\n setValue(\"offset\", getValues(\"offset\") + getValues(\"limit\"));\n handleSubmit(onSubmit)();\n }\n function previousPage() {\n setValue(\"offset\", getValues(\"offset\") - getValues(\"limit\"));\n handleSubmit(onSubmit)();\n }\n const isMobile = window.Digit.Utils.browser.isMobile();\n\n if (isMobile) {\n return (\n <MobileSearchApplication\n {...{\n Controller,\n register,\n control,\n t,\n reset,\n previousPage,\n handleSubmit,\n tenantId,\n data,\n onSubmit,\n }}\n />\n );\n }\n\n //need to get from workflow\n const GetCell = (value) => <span className=\"cell-text\">{value}</span>;\n const columns = useMemo(\n () => [\n {\n Header: t(\"AUDIT_DATE_LABEL\"),\n disableSortBy: true,\n accessor: (row) => {\n const timestamp =\n row.timestamp === \"NA\"\n ? t(\"WS_NA\")\n : convertEpochToDate(row.timestamp);\n return GetCell(`${timestamp}`);\n },\n },\n {\n Header: t(\"AUDIT_TIME_LABEL\"),\n disableSortBy: true,\n accessor: (row) => {\n const timestamp =\n row.timestamp === \"NA\"\n ? t(\"WS_NA\")\n : convertEpochToTimeInHours(row.timestamp);\n return GetCell(`${timestamp}`);\n },\n },\n {\n Header: isMobile\n ? t(\"AUDIT_DATAVIEWED_LABEL\")\n : t(\"AUDIT_DATAVIEWED_PRIVACY\"),\n disableSortBy: true,\n accessor: (row) => {\n return GetCell(`${row?.dataView}`);\n },\n },\n {\n Header: isMobile\n ? t(\"AUDIT_DATAVIEWED_BY_LABEL\")\n : t(\"AUDIT_DATAVIEWED_BY_PRIVACY\"),\n disableSortBy: true,\n accessor: (row) => {\n return GetCell(`${row?.dataViewedBy}`);\n },\n },\n {\n Header: t(\"AUDIT_ROLE_LABEL\"),\n disableSortBy: true,\n accessor: (row) => {\n return GetCell(`${row?.roles.slice(0, 3)?.map((e) => e.name)}`);\n },\n },\n ],\n []\n );\n\n return (\n <React.Fragment>\n <div style={{ marginRight: \"-70px\" }}>\n {\" \"}\n <BackButton />{\" \"}\n </div>\n <div style={{ marginTop: \"30px\", marginLeft: \"30px\" }}>\n {\" \"}\n <HeaderComponent>{t(\"PRIVACY_AUDIT_REPORT\")}</HeaderComponent>{\" \"}\n </div>\n <SearchForm\n className=\"audit-card\"\n onSubmit={onSubmit}\n handleSubmit={handleSubmit}\n >\n <SearchFields\n {...{ register, control, reset, tenantId, t, previousPage }}\n />\n </SearchForm>\n <div\n style={{\n marginTop: \"240px\",\n marginLeft: \"-55%\",\n maxWidth: \"80%\",\n marginRight: \"52px\",\n }}\n >\n {data?.display ? (\n <div\n style={{\n marginTop: \"20x\",\n width: \"1025px\",\n marginLeft: \"25px\",\n backgroundColor: \"white\",\n height: \"60px\",\n }}\n >\n {t(data.display)\n .split(\"\\\\n\")\n .map((text, index) => (\n <p key={index} style={{ textAlign: \"center\" }}>\n {text}\n </p>\n ))}\n </div>\n ) : data !== \"\" ? (\n <div\n style={{\n backgroundColor: \"white\",\n marginRight: \"-30px\",\n marginLeft: \"30px\",\n }}\n >\n <div\n className=\"sideContent\"\n style={{ float: \"right\", padding: \"10px 30px\" }}\n >\n <DownloadBtn\n className=\"mrlg cursorPointer\"\n onClick={() => handleExcelDownload(tabledata)}\n />\n </div>\n <Table\n t={t}\n data={data}\n totalRecords={count}\n columns={columns}\n getCellProps={(cellInfo) => {\n return {\n style: {\n minWidth:\n cellInfo.column.Header === t(\"ES_INBOX_APPLICATION_NO\")\n ? \"240px\"\n : \"\",\n padding: \"20px 18px\",\n fontSize: \"16px\",\n },\n };\n }}\n onPageSizeChange={onPageSizeChange}\n currentPage={getValues(\"offset\") / getValues(\"limit\")}\n onNextPage={nextPage}\n onPrevPage={previousPage}\n manualPagination={false}\n pageSizeLimit={getValues(\"limit\")}\n onSort={onSort}\n disableSort={false}\n sortParams={[\n {\n id: getValues(\"sortBy\"),\n desc: getValues(\"sortOrder\") === \"DESC\" ? true : false,\n },\n ]}\n />\n </div>\n ) : (\n <Loader />\n )}\n </div>\n </React.Fragment>\n );\n};\n\nexport default SearchApplication;\n","import React, { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport AuditSearchApplication from \"../../components/Search\";\nconst Search = ({ path }) => {\n const { t } = useTranslation();\n const tenantId = Digit.ULBService.getCitizenCurrentTenant()\n const [payload, setPayload] = useState({});\n const convertDateToEpoch = (dateString, dayStartOrEnd = \"dayend\") => {\n //example input format : \"2018-10-02\"\n try {\n const parts = dateString.match(/(\\d{4})-(\\d{1,2})-(\\d{1,2})/);\n const DateObj = new Date(Date.UTC(parts[1], parts[2] - 1, parts[3]));\n DateObj.setMinutes(DateObj.getMinutes() + DateObj.getTimezoneOffset());\n if (dayStartOrEnd === \"dayend\") {\n DateObj.setHours(DateObj.getHours() + 24);\n DateObj.setSeconds(DateObj.getSeconds() - 1);\n }\n return DateObj.getTime();\n } catch (e) {\n return dateString;\n }\n };\n function onSubmit(_data) {\n Digit.SessionStorage.set(\"AUDIT_APPLICATION_DETAIL\", {\n offset: 0,\n limit: 5,\n sortBy: \"commencementDate\",\n sortOrder: \"DESC\",\n });\n const data = {\n ..._data,\n fromDate: convertDateToEpoch(_data?.fromDate),\n toDate: convertDateToEpoch(_data?.toDate),\n };\n \n setPayload(\n Object.keys(data)\n .filter((k) => data[k])\n .reduce((acc, key) => ({ ...acc, [key]: typeof data[key] === \"object\" ? data[key] : data[key] }), {})\n );\n }\n useEffect(() => {\n const storedPayload = Digit.SessionStorage.get(\"AUDIT_APPLICATION_DETAIL\") || {};\n if (storedPayload) {\n const data = {\n ...storedPayload,\n };\n \n setPayload(\n Object.keys(data)\n .filter((k) => data[k])\n .reduce((acc, key) => ({ ...acc, [key]: typeof data[key] === \"object\" ? data[key].code : data[key] }), {})\n );\n }\n }, []);\n const config = {\n enabled: !!(payload && Object.keys(payload).length > 0),\n };\n const newObj = { ...payload };\n \n const {\n isLoading,\n data,\n} = Digit.Hooks.useAudit({\n tenantId,\n filters: {\n ...newObj,\n },\n config,\n });\n\n return (\n <AuditSearchApplication\n t={t}\n tenantId={tenantId}\n onSubmit={onSubmit}\n data={\n !isLoading\n ? data?.ElasticSearchData?.length > 0\n ? data?.ElasticSearchData\n : { display: \"ES_COMMON_NO_DATA\" }\n : \"\"\n }\n count={data?.ElasticSearchData?.length}\n />\n );\n };\n export default Search;","import {\n Card,\n Loader,\n CaseIcon,\n ComplaintIcon,\n HelpLineIcon,\n MCollectIcon,\n PTIcon,\n RupeeSymbol,\n ServiceCenterIcon,\n TimerIcon,\n ValidityTimeIcon,\n WhatsappIconGreen,\n} from \"@egovernments/digit-ui-components\";\nimport React from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nconst StaticDynamicCard = ({ moduleCode }) => {\n const { t } = useTranslation();\n const tenantId = Digit.ULBService.getCitizenCurrentTenant();\n const {\n isLoading: isMdmsLoading,\n data: mdmsData,\n } = Digit.Hooks.useStaticData(Digit.ULBService.getStateId());\n const {\n isLoading: isSearchLoading,\n error,\n data: dynamicData,\n isSuccess,\n } = Digit.Hooks.useDynamicData({\n moduleCode,\n tenantId: tenantId,\n filters: {},\n t,\n });\n const handleClickOnWhatsApp = (obj) => {\n window.open(obj);\n };\n\n const IconComponent = ({ module, styles }) => {\n switch (module) {\n case \"TL\":\n return <CaseIcon className=\"fill-path-primary-main\" styles={styles} />;\n case \"PT\":\n return <PTIcon className=\"fill-path-primary-main\" styles={styles} />;\n case \"MCOLLECT\":\n return (\n <MCollectIcon className=\"fill-path-primary-main\" styles={styles} />\n );\n case \"PGR\":\n return (\n <ComplaintIcon className=\"fill-path-primary-main\" styles={styles} />\n );\n default:\n return <CaseIcon className=\"fill-path-primary-main\" styles={styles} />;\n }\n };\n const mdmsConfigResult =\n mdmsData?.MdmsRes[\"common-masters\"]?.StaticData[0]?.[`${moduleCode}`];\n\n const StaticDataIconComponentOne = ({ module }) => {\n switch (module) {\n case \"PT\":\n case \"WS\":\n return (\n <span className=\"timerIcon\">\n <TimerIcon />\n </span>\n );\n default:\n return null;\n }\n };\n const StaticDataIconComponentTwo = ({ module }) => {\n switch (module) {\n case \"PT\":\n return (\n <span className=\"rupeeSymbol\">\n <RupeeSymbol />\n </span>\n );\n case \"WS\":\n return (\n <span className=\"timerIcon\">\n <TimerIcon />\n </span>\n );\n default:\n return null;\n }\n };\n const staticContent = (module) => {\n switch (module) {\n case \"TL\":\n case \"PT\":\n case \"MCOLLECT\":\n return {\n staticCommonContent: t(\"COMMON_VALIDITY\"),\n validity:\n mdmsConfigResult?.validity +\n (mdmsConfigResult?.validity === \"1\"\n ? t(\"COMMON_DAY\")\n : t(\"COMMON_DAYS\")),\n };\n case \"PGR\":\n return {\n staticCommonContent: t(\"ACTION_TEST_COMPLAINT_TYPES\"),\n };\n case \"OBPS\":\n return {\n staticCommonContent: t(\"BUILDING_PLAN_PERMIT_VALIDITY\"),\n validity:\n mdmsConfigResult?.validity +\n \" \" +\n (mdmsConfigResult?.validity === \"1\"\n ? t(\"COMMON_DAY\")\n : t(\"COMMON_DAYS\")),\n };\n default:\n return {\n staticCommonContent: \"\",\n };\n }\n };\n\n const staticData = (module) => {\n switch (module) {\n case \"PT\":\n return {\n staticDataOne:\n mdmsConfigResult?.staticDataOne + \" \" + t(\"COMMON_DAYS\"),\n staticDataOneHeader: t(\"APPLICATION_PROCESSING_TIME\"),\n staticDataTwo: mdmsConfigResult?.staticDataTwo,\n staticDataTwoHeader: t(\"APPLICATION_PROCESSING_FEE\"),\n };\n case \"WS\":\n return {\n staticDataOne: \"\",\n staticDataOneHeader:\n t(\"PAY_WATER_CHARGES_BY\") +\n \" \" +\n mdmsConfigResult?.staticDataOne +\n \" \" +\n t(\"COMMON_DAYS\") +\n \" \" +\n t(\"OF_BILL_GEN_TO_AVOID_LATE_FEE\"),\n staticDataTwo:\n mdmsConfigResult?.staticDataTwo + \" \" + t(\"COMMON_DAYS\"),\n staticDataTwoHeader: t(\"APPLICATION_PROCESSING_TIME\"),\n };\n default:\n return {};\n }\n };\n\n if (isMdmsLoading || isSearchLoading) {\n return <Loader />;\n }\n return mdmsConfigResult ? (\n <React.Fragment>\n {mdmsConfigResult && mdmsConfigResult?.payViaWhatsApp ? (\n <Card style={{ margin: \"16px\", padding: \"16px\", maxWidth: \"unset\" }}>\n <div\n className=\"pay-whatsapp-card\"\n onClick={() =>\n handleClickOnWhatsApp(mdmsConfigResult?.payViaWhatsApp)\n }\n >\n <div className=\"pay-whatsapp-text\">{t(\"PAY_VIA_WHATSAPP\")}</div>\n <div className=\"whatsAppIconG\">\n <WhatsappIconGreen />\n </div>\n </div>\n </Card>\n ) : null}\n {mdmsConfigResult && mdmsConfigResult?.helpline ? (\n <Card style={{ margin: \"16px\", padding: \"16px\", maxWidth: \"unset\" }}>\n <div className=\"static-home-Card\">\n <div className=\"static-home-Card-header\">\n {t(\"CALL_CENTER_HELPLINE\")}\n </div>\n <div className=\"helplineIcon\">\n <HelpLineIcon />\n </div>\n </div>\n <div className=\"call-center-card-text\">\n {mdmsConfigResult?.helpline?.contactOne ? (\n <div className=\"call-center-card-content\">\n <a href={`tel:${mdmsConfigResult?.helpline?.contactOne}`}>\n {mdmsConfigResult?.helpline?.contactOne}\n </a>\n </div>\n ) : null}\n {mdmsConfigResult?.helpline?.contactTwo ? (\n <div className=\"call-center-card-content\">\n <a href={`tel:${mdmsConfigResult?.helpline?.contactTwo}`}>\n {mdmsConfigResult?.helpline?.contactTwo}\n </a>\n </div>\n ) : null}\n </div>\n </Card>\n ) : null}\n {mdmsConfigResult && mdmsConfigResult?.serviceCenter ? (\n <Card style={{ margin: \"16px\", padding: \"16px\", maxWidth: \"unset\" }}>\n <div className=\"static-home-Card\">\n <div className=\"static-home-Card-header\">\n {t(\"CITIZEN_SERVICE_CENTER\")}\n </div>\n <div className=\"serviceCentrIcon\">\n <ServiceCenterIcon />\n </div>\n </div>\n <div className=\"service-center-details-card\">\n <div className=\"service-center-details-text\">\n {mdmsConfigResult?.serviceCenter}\n </div>\n </div>\n {mdmsConfigResult?.viewMapLocation ? (\n <div className=\"link\">\n <a href={mdmsConfigResult?.viewMapLocation}>{t(\"VIEW_ON_MAP\")}</a>\n </div>\n ) : null}\n </Card>\n ) : (\n <div />\n )}\n <Card style={{ margin: \"16px\", padding: \"16px\", maxWidth: \"unset\" }}>\n {error ||\n dynamicData == null ||\n dynamicData?.dynamicDataOne === null ? (\n <div />\n ) : (\n <div className=\"dynamicDataCard\">\n <div className=\"dynamicData\">\n <IconComponent\n module={moduleCode}\n styles={{ width: \"24px\", height: \"24px\" }}\n />\n <span className=\"dynamicData-content\">\n {dynamicData?.dynamicDataOne}\n </span>\n </div>\n </div>\n )}\n {error ||\n dynamicData == null ||\n dynamicData?.dynamicDataTwo === null ? (\n <div />\n ) : (\n <div className=\"dynamicDataCard\">\n <div className=\"dynamicData\">\n <IconComponent\n module={moduleCode}\n styles={{ width: \"24px\", height: \"24px\" }}\n />\n <span className=\"dynamicData-content\">\n {dynamicData?.dynamicDataTwo}\n </span>\n </div>\n </div>\n )}\n {mdmsConfigResult && mdmsConfigResult?.staticDataOne ? (\n <div className=\"staticDataCard\">\n <div className=\"staticData\">\n <StaticDataIconComponentOne module={moduleCode} />\n <span className=\"static-data-content\">\n <span\n className=\"static-data-content-first\"\n style={{\n marginTop:\n staticData(moduleCode)?.staticDataOne === \"\"\n ? \"8px\"\n : \"unset\",\n }}\n >\n {staticData(moduleCode)?.staticDataOneHeader}\n </span>\n <span className=\"static-data-content-second\">{`${\n staticData(moduleCode)?.staticDataOne\n }`}</span>\n </span>\n </div>\n </div>\n ) : (\n <div />\n )}\n {mdmsConfigResult && mdmsConfigResult?.staticDataTwo ? (\n <div className=\"staticDataCard\">\n <div className=\"staticData\">\n <StaticDataIconComponentTwo module={moduleCode} />\n <span className=\"static-data-content\">\n <span className=\"static-data-content-first\">\n {staticData(moduleCode)?.staticDataTwoHeader}\n </span>\n <span className=\"static-data-content-second\">\n {staticData(moduleCode)?.staticDataTwo}\n </span>\n </span>\n </div>\n </div>\n ) : (\n <div />\n )}\n {mdmsConfigResult && mdmsConfigResult?.validity ? (\n <div className=\"staticDataCard\">\n <div className=\"staticData\">\n <span className=\"validityIcon\">\n <ValidityTimeIcon />\n </span>\n <span className=\"static-data-content\">\n <span className=\"static-data-content-first\">\n {staticContent(moduleCode)?.staticCommonContent}\n </span>\n <span className=\"static-data-content-second\">\n {staticContent(moduleCode)?.validity}\n </span>\n </span>\n </div>\n </div>\n ) : (\n <div />\n )}\n {error ||\n dynamicData == null ||\n !dynamicData?.staticData ||\n dynamicData?.staticData === null ? (\n <div />\n ) : (\n <div className=\"staticDataCard\">\n <div className=\"staticData\">\n {moduleCode === \"PGR\" ? (\n <IconComponent\n module={moduleCode}\n styles={{\n width: \"24px\",\n height: \"24px\",\n marginLeft: \"13px\",\n marginTop: \"12px\",\n }}\n />\n ) : (\n <span className=\"validityIcon\">\n <ValidityTimeIcon />\n </span>\n )}\n <span className=\"static-data-content\">\n <span className=\"static-data-content-first\">\n {staticContent(moduleCode)?.staticCommonContent}\n </span>\n <span className=\"static-data-content-second\">\n {dynamicData?.staticData}\n </span>\n </span>\n </div>\n </div>\n )}\n </Card>\n </React.Fragment>\n ) : (\n <React.Fragment />\n );\n};\n\nexport default StaticDynamicCard;\n","import React, { useState } from \"react\";\nimport { SideNav, Loader } from \"@egovernments/digit-ui-components\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport MediaQuery from \"react-responsive\";\nimport LogoutDialog from \"../../Dialog/LogoutDialog\";\n\nconst CitizenSideNav = ({ linkData, islinkDataLoading }) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const isMultiRootTenant = Digit.Utils.getMultiRootTenant();\n const tenantId = Digit?.ULBService?.getStateId();\n const user = Digit.UserService.getUser();\n const isLoggedIn = user && user.access_token && user?.info?.type === \"CITIZEN\";\n\n const [showDialog, setShowDialog] = useState(false);\n\n const handleLogoutSubmit = () => {\n Digit.UserService.logout();\n setShowDialog(false);\n window.location.href = `/${window?.contextPath}/citizen/login`;\n };\n\n const handleLogoutCancel = () => {\n setShowDialog(false);\n };\n\n const navigateToUrl = (url) => {\n if (!url || url === \"/\") return;\n\n const isExternal = /^https?:\\/\\//i.test(url);\n if (isExternal) {\n window.open(url, \"_blank\", \"noopener,noreferrer\");\n return;\n }\n\n if (!url.includes(`/${window?.contextPath}`)) {\n const hostUrl = window.location.origin;\n if (isMultiRootTenant) {\n const contextPath = window?.contextPath || \"sandbox-ui\";\n url = url.replace(`/${contextPath}/citizen`, `/${contextPath}/${tenantId}/citizen`);\n navigate(url);\n } else {\n const updatedUrl = hostUrl + url;\n try {\n window.location.href = updatedUrl;\n } catch (error) {\n console.warn(\"Navigation failed, attempting fallback:\", error);\n window.location.replace(updatedUrl);\n }\n }\n } else {\n navigate(url);\n }\n };\n\n const onItemSelect = ({ item }) => {\n if (item?.navigationUrl) {\n navigateToUrl(item.navigationUrl);\n }\n };\n\n const onBottomItemClick = (item) => {\n if (item === \"Logout\") {\n setShowDialog(true);\n }\n };\n\n const buildItems = () => {\n const isDigitStudio = window.location.href.includes(\"digit-studio\");\n const items = [];\n let orderCounter = 1;\n\n if (isLoggedIn) {\n items.push({\n label: t(\"COMMON_BOTTOM_NAVIGATION_HOME\"),\n icon: { icon: \"Home\", width: \"1.5rem\", height: \"1.5rem\" },\n navigationUrl: `/${window?.contextPath}/citizen`,\n orderNumber: orderCounter++,\n });\n\n items.push({\n label: t(\"EDIT_PROFILE\"),\n icon: { icon: \"Edit\", width: \"1.5rem\", height: \"1.5rem\" },\n navigationUrl: `/${window?.contextPath}/citizen/user/profile`,\n orderNumber: orderCounter++,\n });\n }\n\n Object.keys(linkData || {})\n ?.sort((x, y) => x.localeCompare(y))\n ?.forEach((key) => {\n const moduleEntries = linkData[key];\n if (!moduleEntries || moduleEntries.length === 0) return;\n\n // Check if any entry in this module has a sidebar value ending with \"-links\"\n const hasSidebarLink = moduleEntries.some((entry) => entry.sidebar?.endsWith(\"-links\"));\n if (!hasSidebarLink) return;\n\n const rawIcon = moduleEntries[0]?.leftIcon;\n const leftIcon = isDigitStudio && (!rawIcon || rawIcon === \"TLIcon\") ? \"Devices\" : (rawIcon || \"ViewModule\");\n\n // Deduplicate entries by name to avoid duplicate children\n const seen = new Set();\n const uniqueEntries = moduleEntries.filter((entry) => {\n if (seen.has(entry.name)) return false;\n seen.add(entry.name);\n return true;\n });\n\n // Build children from all entries (Apply, My Applications, etc.)\n const children = uniqueEntries.map((entry) => ({\n label: t(entry.displayName || entry.i18nKey),\n icon: { icon: isDigitStudio && (!entry.leftIcon || entry.leftIcon === \"TLIcon\") ? \"Devices\" : (entry.leftIcon || \"ViewModule\"), width: \"1.5rem\", height: \"1.5rem\" },\n navigationUrl: entry.navigationURL || entry.link,\n orderNumber: entry.orderNumber,\n }));\n\n // Sort children by orderNumber\n children.sort((a, b) => {\n const aOrder = a.orderNumber !== undefined ? a.orderNumber : Infinity;\n const bOrder = b.orderNumber !== undefined ? b.orderNumber : Infinity;\n return aOrder - bOrder;\n });\n\n if (children.length === 1) {\n // Single entry — render as flat item (no parent/child nesting)\n items.push({\n label: t(`ACTION_TEST_${Digit.Utils.locale.getTransformedLocale(key)}`),\n icon: { icon: leftIcon, width: \"1.5rem\", height: \"1.5rem\" },\n navigationUrl: children[0].navigationUrl,\n orderNumber: orderCounter++,\n });\n } else {\n // Multiple entries — render as parent with children\n items.push({\n label: t(`ACTION_TEST_${Digit.Utils.locale.getTransformedLocale(key)}`),\n icon: { icon: leftIcon, width: \"1.5rem\", height: \"1.5rem\" },\n children: children,\n orderNumber: orderCounter++,\n });\n }\n });\n\n items.sort((a, b) => {\n const aOrder = a.orderNumber !== undefined ? a.orderNumber : Infinity;\n const bOrder = b.orderNumber !== undefined ? b.orderNumber : Infinity;\n return aOrder - bOrder;\n });\n\n return items;\n };\n\n if (islinkDataLoading) {\n return <Loader />;\n }\n\n const items = buildItems();\n\n return (\n <React.Fragment>\n <MediaQuery minWidth={768}>\n <SideNav\n items={items}\n hideAccessbilityTools={!isLoggedIn}\n onSelect={onItemSelect}\n theme={window?.globalConfigs?.getConfig(\"SIDENAV_THEME\") || \"light\"}\n enableSearch={true}\n variant={window?.globalConfigs?.getConfig(\"SIDENAV_VARIANT\") || \"primary\"}\n transitionDuration={\"\"}\n className=\"\"\n styles={{ position : \"unset\"}}\n expandedWidth=\"\"\n collapsedWidth=\"\"\n onBottomItemClick={onBottomItemClick}\n />\n </MediaQuery>\n {showDialog && (\n <LogoutDialog\n onSelect={handleLogoutSubmit}\n onCancel={handleLogoutCancel}\n onDismiss={handleLogoutCancel}\n />\n )}\n </React.Fragment>\n );\n};\n\nexport default CitizenSideNav;\n","import { BackLink, CitizenHomeCard, CitizenInfoLabel } from \"@egovernments/digit-ui-components\";\nimport React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Routes, Route, useNavigate, useLocation } from \"react-router-dom\";\nimport ErrorBoundary from \"../../components/ErrorBoundaries\";\nimport { AppHome, processLinkData } from \"../../components/Home\";\nimport TopBarSideBar from \"../../components/TopBarSideBar\";\nimport CitizenSideNav from \"../../components/TopBarSideBar/SideBar/CitizenSideNav\";\nimport ImageComponent from \"../../components/ImageComponent\";\nimport { lazyWithFallback } from \"@egovernments/digit-ui-components\";\nimport DynamicModuleLoader from \"../../components/DynamicModuleLoader\";\n\n// Create lazy components with fallbacks using the utility\nconst ErrorComponent = lazyWithFallback(\n () => import(/* webpackChunkName: \"citizen-error-component\" */ \"../../components/ErrorComponent\"),\n () => require(\"../../components/ErrorComponent\").default,\n { loaderText: \"CORE_LOADING_ERROR_COMPONENT\" }\n);\n\nconst FAQsSection = lazyWithFallback(\n () => import(/* webpackChunkName: \"citizen-faqs\" */ \"./FAQs/FAQs\"),\n () => require(\"./FAQs/FAQs\").default,\n { loaderText: \"CORE_LOADING_FAQS\" }\n);\n\nconst CitizenHome = lazyWithFallback(\n () => import(/* webpackChunkName: \"citizen-home\" */ \"./Home\"),\n () => require(\"./Home\").default,\n { loaderText: \"CORE_LOADING_HOME\" }\n);\n\nconst LanguageSelection = lazyWithFallback(\n () => import(/* webpackChunkName: \"citizen-language-selection\" */ \"./Home/LanguageSelection\"),\n () => require(\"./Home/LanguageSelection\").default,\n { loaderText: \"CORE_LOADING_LANGUAGE_SELECTION\" }\n);\n\nconst LocationSelection = lazyWithFallback(\n () => import(/* webpackChunkName: \"citizen-location-selection\" */ \"./Home/LocationSelection\"),\n () => require(\"./Home/LocationSelection\").default,\n { loaderText: \"CORE_LOADING_LOCATION_SELECTION\" }\n);\n\nconst UserProfile = lazyWithFallback(\n () => import(/* webpackChunkName: \"citizen-user-profile\" */ \"./Home/UserProfile\"),\n () => require(\"./Home/UserProfile\").default,\n { loaderText: \"CORE_LOADING_USER_PROFILE\" }\n);\n\nconst HowItWorks = lazyWithFallback(\n () => import(/* webpackChunkName: \"citizen-how-it-works\" */ \"./HowItWorks/howItWorks\"),\n () => require(\"./HowItWorks/howItWorks\").default,\n { loaderText: \"CORE_LOADING_HOW_IT_WORKS\" }\n);\n\nconst Login = lazyWithFallback(\n () => import(/* webpackChunkName: \"citizen-login\" */ \"./Login\"),\n () => require(\"./Login\").default,\n { loaderText: \"CORE_LOADING_LOGIN\" }\n);\n\nconst Search = lazyWithFallback(\n () => import(/* webpackChunkName: \"citizen-search\" */ \"./SearchApp\"),\n () => require(\"./SearchApp\").default,\n { loaderText: \"CORE_LOADING_SEARCH\" }\n);\n\nconst StaticDynamicCard = lazyWithFallback(\n () => import(/* webpackChunkName: \"citizen-static-dynamic-card\" */ \"./StaticDynamicComponent/StaticDynamicCard\"),\n () => require(\"./StaticDynamicComponent/StaticDynamicCard\").default,\n { loaderText: \"CORE_LOADING_DYNAMIC_CONTENT\" }\n);\n\nconst sidebarHiddenFor = [\n `${window?.contextPath}/citizen/register/name`,\n `/${window?.contextPath}/citizen/select-language`,\n `/${window?.contextPath}/citizen/select-location`,\n `/${window?.contextPath}/citizen/login`,\n `/${window?.contextPath}/citizen/register/otp`,\n];\n\nconst getTenants = (codes, tenants) => {\n return tenants.filter((tenant) => codes.map((item) => item.code).includes(tenant.code));\n};\n\nconst Home = ({\n stateInfo,\n userDetails,\n CITIZEN,\n cityDetails,\n mobileView,\n handleUserDropdownSelection,\n logoUrl,\n DSO,\n stateCode,\n modules,\n appTenants,\n sourceUrl, // This prop seems unused, consider removing\n pathname, // This prop seems unused, `useLocation().pathname` is used directly\n initData,\n}) => {\n const { isLoading: islinkDataLoading, data: linkData, isFetched: isLinkDataFetched } = Digit.Hooks.useCustomMDMS(\n Digit.ULBService.getStateId(),\n \"ACCESSCONTROL-ACTIONS-TEST\",\n [\n {\n name: \"actions-test\",\n filter: `[?(@.url == '${Digit.Utils.getMultiRootTenant() ? window.globalPath : window.contextPath}-card')]`,\n },\n ],\n {\n select: (data) => {\n const formattedData = data?.[\"ACCESSCONTROL-ACTIONS-TEST\"]?.[\"actions-test\"]\n ?.filter((el) => el.enabled === true)\n .reduce((a, b) => {\n a[b.parentModule] = a[b.parentModule]?.length > 0 ? [b, ...a[b.parentModule]] : [b];\n return a;\n }, {});\n return formattedData;\n },\n }\n );\n const classname = Digit.Hooks.useRouteSubscription(pathname);\n const { t } = useTranslation();\n const navigate = useNavigate();\n const location = useLocation();\n\n const handleClickOnWhatsApp = (obj) => {\n window.open(obj);\n };\n\n const hideSidebar = sidebarHiddenFor.some((e) => window.location.href.includes(e));\n\n // Create app routes with dynamic module loading and loading states for citizen modules\n const appRoutes = modules.map(({ code, tenants }, index) => {\n return (\n <Route\n key={index}\n path={`${code.toLowerCase()}/*`}\n element={\n <DynamicModuleLoader\n moduleCode={code}\n stateCode={stateCode}\n userType=\"citizen\"\n tenants={getTenants(tenants, appTenants)}\n maxRetries={3}\n retryDelay={1000}\n initialDelay={800}\n />\n }\n />\n );\n });\n\n const ModuleLevelLinkHomePages = modules.map(({ code, bannerImage }, index) => {\n let Links = Digit.ComponentRegistryService.getComponent(`${code}Links`) || (() => <React.Fragment />);\n let mdmsDataObj = isLinkDataFetched ? processLinkData(linkData, code, t) : undefined;\n\n if (mdmsDataObj?.header === \"ACTION_TEST_WS\") {\n mdmsDataObj?.links.sort((a, b) => {\n return b.orderNumber - a.orderNumber;\n });\n }\n return (\n <React.Fragment key={code + \"-routes\"}>\n <Route path={`${code.toLowerCase()}-home`} element={\n <div className=\"moduleLinkHomePage\">\n <ImageComponent src={bannerImage || stateInfo?.bannerUrl} alt=\"noimagefound\" />\n <BackLink className=\"moduleLinkHomePageBackButton\" onClick={() => navigate(-1)} />\n <h1>{t(\"MODULE_\" + code.toUpperCase())}</h1>\n <div className=\"moduleLinkHomePageModuleLinks\">\n {mdmsDataObj && (\n <CitizenHomeCard\n header={t(mdmsDataObj?.header)}\n links={mdmsDataObj?.links}\n Icon={() => <span />}\n Info={\n code === \"OBPS\"\n ? () => (\n <CitizenInfoLabel\n style={{ margin: \"0px\", padding: \"10px\" }}\n info={t(\"CS_FILE_APPLICATION_INFO_LABEL\")}\n text={t(`BPA_CITIZEN_HOME_STAKEHOLDER_INCLUDES_INFO_LABEL`)}\n />\n )\n : null\n }\n isInfo={code === \"OBPS\" ? true : false}\n />\n )}\n </div>\n <StaticDynamicCard moduleCode={code?.toUpperCase()} />\n </div>\n } />\n <Route path={`${code.toLowerCase()}-faq`} element={<FAQsSection module={code?.toUpperCase()} />} />\n <Route path={`${code.toLowerCase()}-how-it-works`} element={<HowItWorks module={code?.toUpperCase()} />} />\n </React.Fragment>\n );\n });\n\n return (\n <div className={classname}>\n <TopBarSideBar\n t={t}\n stateInfo={stateInfo}\n userDetails={userDetails}\n CITIZEN={CITIZEN}\n cityDetails={cityDetails}\n mobileView={mobileView}\n handleUserDropdownSelection={handleUserDropdownSelection}\n logoUrl={logoUrl}\n showSidebar={CITIZEN ? true : false}\n linkData={linkData}\n islinkDataLoading={islinkDataLoading}\n />\n\n <div className={`main center-container citizen-home-container mb-25`}>\n {hideSidebar ? null : (\n <div>\n <CitizenSideNav linkData={linkData} islinkDataLoading={islinkDataLoading} />\n </div>\n )}\n\n <Routes>\n <Route path=\"/\" element={<CitizenHome />} />\n\n <Route path=\"select-language\" element={<LanguageSelection />} />\n\n <Route path=\"select-location\" element={\n <div className=\"citizen-location-selection-wrapper\">\n <LocationSelection />\n </div>\n } />\n\n <Route path=\"error\" element={\n <ErrorComponent\n initData={initData}\n goToHome={() => {\n navigate(`/${window?.contextPath}/${Digit?.UserService?.getType?.()}`);\n }}\n />\n } />\n\n <Route path=\"all-services\" element={\n <AppHome\n userType=\"citizen\"\n modules={modules}\n getCitizenMenu={linkData}\n fetchedCitizen={isLinkDataFetched}\n isLoading={islinkDataLoading}\n />\n } />\n\n <Route path=\"login/*\" element={<Login stateCode={stateCode} />} />\n\n <Route path=\"register/*\" element={<Login stateCode={stateCode} isUserRegistered={false} />} />\n\n <Route path=\"user/profile\" element={\n <div className=\"citizen-user-profile-wrapper\">\n <UserProfile stateCode={stateCode} userType={\"citizen\"} cityDetails={cityDetails} />\n </div>\n } />\n\n <Route path=\"Audit\" element={<Search />} />\n\n {/* Dynamic App Routes and Module Level Link Home Pages */}\n {appRoutes}\n {ModuleLevelLinkHomePages}\n </Routes>\n </div>\n <div className=\"citizen-home-footer\" style={window.location.href.includes(\"citizen/obps\") ? { zIndex: \"-1\" } : {}}>\n <ImageComponent\n alt=\"Powered by DIGIT\"\n src={window?.globalConfigs?.getConfig?.(\"DIGIT_FOOTER\")}\n style={{ height: \"1.2em\", cursor: \"pointer\" }}\n onClick={() => {\n window.open(window?.globalConfigs?.getConfig?.(\"DIGIT_HOME_URL\"), \"_blank\").focus();\n }}\n />\n </div>\n </div>\n );\n};\n\nexport default Home;","import { CardSubHeader, FormComposer,CardText} from \"@egovernments/digit-ui-react-components\";\nimport { BackLink,Toast} from \"@egovernments/digit-ui-components\";\nimport PropTypes from \"prop-types\";\nimport React, { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport Background from \"../../../components/Background\";\nimport Header from \"../../../components/Header\";\nimport SelectOtp from \"../../citizen/Login/SelectOtp\";\nimport ImageComponent from \"../../../components/ImageComponent\";\n\nconst ChangePasswordComponent = ({ config: propsConfig, t }) => {\n const [user, setUser] = useState(null);\n const { mobile_number: mobileNumber, tenantId } = Digit.Hooks.useQueryParams();\n const navigate = useNavigate();\n const [otp, setOtp] = useState(\"\");\n const [isOtpValid, setIsOtpValid] = useState(true);\n const [showToast, setShowToast] = useState(null);\n const getUserType = () => Digit.UserService.getType();\n useEffect(() => {\n if (!user) {\n Digit.UserService.setType(\"employee\");\n return;\n }\n Digit.UserService.setUser(user);\n const redirectPath = location.state?.from || `/${window?.contextPath}/employee`;\n navigate(redirectPath, {replace:true});\n }, [user]);\n\n const closeToast = () => {\n setShowToast(null);\n };\n\n const onResendOTP = async () => {\n const requestData = {\n otp: {\n mobileNumber,\n userType: getUserType().toUpperCase(),\n type: \"passwordreset\",\n tenantId,\n },\n };\n\n try {\n await Digit.UserService.sendOtp(requestData, tenantId);\n setShowToast(t(\"ES_OTP_RESEND\"));\n } catch (err) {\n setShowToast(err?.response?.data?.error_description || t(\"ES_INVALID_LOGIN_CREDENTIALS\"));\n }\n setTimeout(closeToast, 5000);\n };\n\n const onChangePassword = async (data) => {\n try {\n if (data.newPassword !== data.confirmPassword) {\n return setShowToast(t(\"ERR_PASSWORD_DO_NOT_MATCH\"));\n }\n const requestData = {\n ...data,\n otpReference: otp,\n tenantId,\n type: getUserType().toUpperCase(),\n };\n\n const response = await Digit.UserService.changePassword(requestData, tenantId);\n navigateToLogin();\n } catch (err) {\n setShowToast(err?.response?.data?.error?.fields?.[0]?.message || t(\"ES_SOMETHING_WRONG\"));\n setTimeout(closeToast, 5000);\n }\n };\n\n const navigateToLogin = () => {\n navigate(`/${window?.contextPath}/employee/user/login`, {replace:true});\n };\n\n const [username, password, confirmPassword] = propsConfig.inputs;\n const config = [\n {\n body: [\n {\n label: t(username.label),\n type: username.type,\n populators: {\n name: username.name,\n },\n isMandatory: true,\n },\n {\n label: t(password.label),\n type: password.type,\n populators: {\n name: password.name,\n },\n isMandatory: true,\n },\n {\n label: t(confirmPassword.label),\n type: confirmPassword.type,\n populators: {\n name: confirmPassword.name,\n },\n isMandatory: true,\n },\n ],\n },\n ];\n\n return (\n <Background>\n <div className=\"employeeBackbuttonAlign\">\n <BackLink variant=\"primary\" style={{ borderBottom: \"none\" }} />\n </div>\n <FormComposer\n onSubmit={onChangePassword}\n noBoxShadow\n inline\n submitInForm\n config={config}\n label={propsConfig.texts.submitButtonLabel}\n cardStyle={{ maxWidth: \"408px\", margin: \"auto\" }}\n className=\"employeeChangePassword\"\n >\n <Header />\n <CardSubHeader style={{ textAlign: \"center\" }}> {propsConfig.texts.header} </CardSubHeader>\n <CardText>\n {`${t(`CS_LOGIN_OTP_TEXT`)} `}\n <b>\n {\" \"}\n {`${t(`+ 91 - `)}`} {mobileNumber}\n </b>\n </CardText>\n <SelectOtp t={t} userType=\"employee\" otp={otp} onOtpChange={setOtp} error={isOtpValid} onResend={onResendOTP} />\n {/* <div>\n <CardLabel style={{ marginBottom: \"8px\" }}>{t(\"CORE_OTP_SENT_MESSAGE\")}</CardLabel>\n <CardLabelDesc style={{ marginBottom: \"0px\" }}> {mobileNumber} </CardLabelDesc>\n <CardLabelDesc style={{ marginBottom: \"8px\" }}> {t(\"CORE_EMPLOYEE_OTP_CHECK_MESSAGE\")}</CardLabelDesc>\n </div>\n <CardLabel style={{ marginBottom: \"8px\" }}>{t(\"CORE_OTP_OTP\")} *</CardLabel>\n <TextInput className=\"field\" name={otpReference} isRequired={true} onChange={updateOtp} type={\"text\"} style={{ marginBottom: \"10px\" }} />\n <div className=\"flex-right\">\n <div className=\"primary-label-btn\" onClick={onResendOTP}>\n {t(\"CORE_OTP_RESEND\")}\n </div>\n </div> */}\n </FormComposer>\n {showToast && <Toast type={\"error\"} label={t(showToast)} onClose={closeToast} />}\n <div className=\"EmployeeLoginFooter\">\n <ImageComponent\n alt=\"Powered by DIGIT\"\n src={window?.globalConfigs?.getConfig?.(\"DIGIT_FOOTER_BW\")}\n style={{ cursor: \"pointer\" }}\n onClick={() => {\n window.open(window?.globalConfigs?.getConfig?.(\"DIGIT_HOME_URL\"), \"_blank\").focus();\n }}\n />{\" \"}\n </div>\n </Background>\n );\n};\n\nChangePasswordComponent.propTypes = {\n loginParams: PropTypes.any,\n};\n\nChangePasswordComponent.defaultProps = {\n loginParams: null,\n};\n\nexport default ChangePasswordComponent;\n","export const config = [\n {\n texts: {\n header: \"CORE_COMMON_RESET_PASSWORD_LABEL\",\n submitButtonLabel: \"CORE_COMMON_CHANGE_PASSWORD\",\n },\n inputs: [\n {\n label: \"CORE_LOGIN_USERNAME\",\n type: \"text\",\n name: \"userName\",\n error: \"ERR_HRMS_INVALID_USERNAME\",\n },\n {\n label: \"CORE_LOGIN_NEW_PASSWORD\",\n type: \"password\",\n name: \"newPassword\",\n error: \"CORE_COMMON_REQUIRED_ERRMSG\",\n },\n {\n label: \"CORE_LOGIN_CONFIRM_NEW_PASSWORD\",\n type: \"password\",\n name: \"confirmPassword\",\n error: \"CORE_COMMON_REQUIRED_ERRMSG\",\n },\n ],\n },\n];\n","import React, { useMemo } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Routes, Route } from \"react-router-dom\";\nimport ChangePasswordComponent from \"./changePassword\";\nimport { config } from \"./config\";\n\nconst EmployeeChangePassword = () => {\n const { t } = useTranslation();\n\n const params = useMemo(\n () =>\n config.map((step) => {\n const texts = {};\n for (const key in step.texts) {\n texts[key] = t(step.texts[key]);\n }\n return { ...step, texts };\n }),\n [config]\n );\n\n return (\n <Routes>\n <Route\n path=\"\"\n element={<ChangePasswordComponent config={params[0]} t={t} />}\n />\n </Routes>\n );\n};\n\nexport default EmployeeChangePassword;\n","export const loginConfig = [\n {\n texts: {\n header: \"CORE_COMMON_FORGOT_PASSWORD_LABEL\",\n description: \"ES_FORGOT_PASSWORD_DESC\",\n submitButtonLabel: \"CORE_COMMON_CONTINUE\",\n },\n inputs: [\n {\n label: \"CORE_COMMON_MOBILE_NUMBER\",\n type: \"mobileNumber\",\n name: \"mobileNumber\",\n error: \"ERR_HRMS_INVALID_MOBILE_NUMBER\",\n },\n {\n label: \"CORE_COMMON_CITY\",\n type: \"dropdown\",\n name: \"city\",\n error: \"ERR_HRMS_INVALID_CITY\",\n },\n ]\n },\n];\n","// import { FormComposer } from \"@egovernments/digit-ui-react-components\";\nimport { BackLink, Dropdown, Loader, Toast, FormComposerV2 } from \"@egovernments/digit-ui-components\";\nimport PropTypes from \"prop-types\";\nimport React, { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport Background from \"../../../components/Background\";\nimport Header from \"../../../components/Header\";\nimport ImageComponent from \"../../../components/ImageComponent\";\nimport Carousel from \"../Login/Carousel/Carousel\";\nimport { useLoginConfig } from \"../../../hooks/useLoginConfig\";\n\nconst ForgotPassword = ({ config: propsConfig, t, stateCode }) => {\n const { data: cities, isLoading } = Digit.Hooks.useTenants();\n const [user, setUser] = useState(null);\n const navigate = useNavigate();\n const [showToast, setShowToast] = useState(null);\n const getUserType = () => Digit.UserService.getType();\n \n const { data : mdmsData } = useLoginConfig(stateCode);\n \n if(mdmsData?.config){\n const bannerImages = mdmsData?.config[0]?.bannerImages;\n propsConfig.bannerImages = bannerImages;\n }\n\n useEffect(() => {\n if (!user) {\n Digit.UserService.setType(\"employee\");\n return;\n }\n Digit.UserService.setUser(user);\n const redirectPath = location.state?.from || `/${window?.contextPath}/employee`;\n navigate(redirectPath, {replace:true});\n }, [user]);\n\n const closeToast = () => {\n setShowToast(null);\n };\n\n const onForgotPassword = async (data) => {\n if (!data.city) {\n alert(\"Please Select City!\");\n return;\n }\n const requestData = {\n otp: {\n userName: data.username,\n userType: getUserType().toUpperCase(),\n type: \"passwordreset\",\n tenantId: data.city.code,\n },\n };\n try {\n await Digit.UserService.sendOtp(requestData, data.city.code);\n navigate(`/${window?.contextPath}/employee/user/change-password?USERNAME=${data.username}&tenantId=${data.city.code}`);\n } catch (err) {\n setShowToast(err?.response?.data?.error?.fields?.[0]?.message || \"Invalid login credentials!\");\n setTimeout(closeToast, 5000);\n }\n };\n\n const navigateToLogin = () => {\n navigate(`/${window?.contextPath}/employee/login`);\n };\n\n const [userId, city] = propsConfig.inputs;\n const config = [\n {\n body: [\n {\n label: t(\"USERNAME\"),\n type: \"text\",\n populators: {\n name: \"username\",\n },\n isMandatory: true,\n },\n {\n label: t(city.label),\n type: city.type,\n populators: {\n name: city.name,\n optionsKey: \"name\",\n required: true,\n options: cities,\n },\n isMandatory: true,\n },\n ],\n },\n ];\n\n if (isLoading) {\n return <Loader page={true} variant=\"PageLoader\" />\n }\n\n return (\n propsConfig?.bannerImages ? (\n <React.Fragment>\n <div className=\"login-container\">\n <Carousel bannerImages={propsConfig?.bannerImages} />\n <div className=\"login-form-container\">\n <FormComposerV2\n onSubmit={onForgotPassword}\n noBoxShadow\n inline\n submitInForm\n config={config}\n label={propsConfig.texts.submitButtonLabel}\n secondaryActionLabel={propsConfig.texts.secondaryButtonLabel}\n onSecondayActionClick={navigateToLogin}\n heading={propsConfig.texts.header}\n description={propsConfig.texts.description}\n headingStyle={{ textAlign: \"center\", fontWeight: \"bold\", color: \"#363636\" }}\n descriptionStyles={{ color: \"#787878\", textAlign: \"center\" }}\n cardStyle={{ maxWidth: \"408px\", margin: \"auto\" }}\n className=\"employeeForgotPassword\"\n secondaryActionId={\"employeeForgotPassword\"}\n >\n <Header />\n </FormComposerV2>\n {showToast && <Toast type={\"error\"} label={t(showToast)} onClose={closeToast} />}\n <div className=\"EmployeeLoginFooter\">\n <ImageComponent\n alt=\"Powered by DIGIT\"\n src={window?.globalConfigs?.getConfig?.(\"DIGIT_FOOTER_BW\")}\n style={{ cursor: \"pointer\" }}\n onClick={() => {\n window.open(window?.globalConfigs?.getConfig?.(\"DIGIT_HOME_URL\"), \"_blank\").focus();\n }}\n />{\" \"}\n </div>\n </div>\n </div>\n </React.Fragment>\n ) :\n <Background>\n <div className=\"employeeBackbuttonAlign\">\n <BackLink onClick={() => window.history.back()} />\n </div>\n <FormComposerV2\n onSubmit={onForgotPassword}\n noBoxShadow\n inline\n submitInForm\n config={config}\n label={propsConfig.texts.submitButtonLabel}\n secondaryActionLabel={propsConfig.texts.secondaryButtonLabel}\n onSecondayActionClick={navigateToLogin}\n heading={propsConfig.texts.header}\n description={propsConfig.texts.description}\n headingStyle={{ textAlign: \"center\", fontWeight: \"bold\", color: \"#363636\" }}\n descriptionStyles={{ color: \"#787878\", textAlign: \"center\" }}\n cardStyle={{ maxWidth: \"408px\", margin: \"auto\" }}\n className=\"employeeForgotPassword\"\n secondaryActionId={\"employeeForgotPassword\"}\n >\n <Header />\n </FormComposerV2>\n {showToast && <Toast type={\"error\"} label={t(showToast)} onClose={closeToast} />}\n <div className=\"EmployeeLoginFooter\">\n <ImageComponent\n alt=\"Powered by DIGIT\"\n src={window?.globalConfigs?.getConfig?.(\"DIGIT_FOOTER_BW\")}\n style={{ cursor: \"pointer\" }}\n onClick={() => {\n window.open(window?.globalConfigs?.getConfig?.(\"DIGIT_HOME_URL\"), \"_blank\").focus();\n }}\n />{\" \"}\n </div>\n </Background>\n );\n};\n\nForgotPassword.propTypes = {\n loginParams: PropTypes.any,\n};\n\nForgotPassword.defaultProps = {\n loginParams: null,\n};\n\nexport default ForgotPassword;","import React, { useMemo } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Routes, Route } from \"react-router-dom\";\nimport { loginConfig } from \"./config\";\nimport ForgotPasswordComponent from \"./forgotPassword\";\n\nconst EmployeeForgotPassword = ({ stateCode }) => {\n const { t } = useTranslation();\n\n const params = useMemo(\n () =>\n loginConfig.map((step) => {\n const texts = {};\n for (const key in step.texts) {\n texts[key] = t(step.texts[key]);\n }\n return { ...step, texts };\n }),\n [loginConfig]\n );\n\n return (\n <Routes>\n <Route\n path=\"\"\n element={<ForgotPasswordComponent config={params[0]} t={t} stateCode={stateCode} />}\n />\n </Routes>\n );\n};\n\nexport default EmployeeForgotPassword;\n","import { Button, Card, SubmitBar, Loader } from \"@egovernments/digit-ui-components\";\nimport { CustomButton } from \"@egovernments/digit-ui-react-components\";\nimport React, { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Navigate, useNavigate } from \"react-router-dom\";\nimport Background from \"../../../components/Background\";\nimport ImageComponent from \"../../../components/ImageComponent\";\n\nconst DEFAULT_LOCALE=Digit?.Utils?.getDefaultLanguage?.();\n\nconst defaultLanguage = { label: \"English\", value: DEFAULT_LOCALE};\n\nconst LanguageSelection = () => {\n const { data: storeData, isLoading } = Digit.Hooks.useStore.getInitData();\n const { t } = useTranslation();\n const navigate = useNavigate();\n const { languages, stateInfo } = storeData || {};\n let defaultLanguages = languages;\n if (!defaultLanguages || defaultLanguages?.length == 0) {\n defaultLanguages = [defaultLanguage];\n }\n const selectedLanguage = Digit.StoreData.getCurrentLanguage();\n const [selected, setselected] = useState(selectedLanguage);\n const handleChangeLanguage = (language) => {\n setselected(language.value);\n Digit.LocalizationService.changeLanguage(language.value, stateInfo.code);\n };\n function getContextPath(contextPath) {\n if (!contextPath || typeof contextPath !== \"string\") return \"\";\n return contextPath.split(\"/\")[0];\n }\n \n const hasMultipleLanguages = languages?.length > 1;\n\n const handleSubmit = (event) => {\n navigate(`/${getContextPath(window.contextPath)}/user/login?ts=${Date.now()}`);\n };\n\n if (isLoading) return <Loader />;\n\n if (!hasMultipleLanguages) {\n return <Navigate to={`/${window?.contextPath}/employee/user/login`} replace />;\n }\n\n return (\n <Background>\n <Card className={\"bannerCard removeBottomMargin languageSelection\"}>\n <div className=\"bannerHeader\">\n <ImageComponent className=\"bannerLogo\" src={stateInfo?.logoUrl} alt=\"Digit Banner Image\" />\n\n <p>{t(`TENANT_TENANTS_${stateInfo?.code?.toUpperCase()}`)}</p>\n </div>\n <div className=\"language-selector\" style={{ justifyContent: \"space-around\", marginBottom: \"24px\", padding: \"0 5%\" }}>\n {defaultLanguages.map((language, index) => (\n <div className=\"language-button-container\" key={index}>\n <CustomButton\n selected={language.value === selected}\n text={t(language.label)}\n onClick={() => handleChangeLanguage(language)}\n ></CustomButton>\n </div>\n ))}\n </div>\n <SubmitBar style={{ width: \"100%\" }} label={t(`CORE_COMMON_CONTINUE`)} onSubmit={handleSubmit} />\n </Card>\n <div className=\"EmployeeLoginFooter\">\n <ImageComponent\n alt=\"Powered by DIGIT\"\n src={window?.globalConfigs?.getConfig?.(\"DIGIT_FOOTER_BW\")}\n style={{ cursor: \"pointer\" }}\n onClick={() => {\n window.open(window?.globalConfigs?.getConfig?.(\"DIGIT_HOME_URL\"), \"_blank\").focus();\n }}\n />{\" \"}\n </div>\n </Background>\n );\n};\n\nexport default LanguageSelection;\n","import React, { useState, useEffect, Fragment } from 'react';\nimport { loginConfig } from '../config';\nimport { useTranslation } from \"react-i18next\";\n\nconst Carousel = ({bannerImages=[]}) => {\n const [currentSlide, setCurrentSlide] = useState(0);\n const { t } = useTranslation();\n\n const carouselItems = bannerImages|| loginConfig[0]?.bannerImages || [];\n\n const nextSlide = () => {\n setCurrentSlide(prev => (prev === carouselItems.length - 1 ? 0 : prev + 1));\n };\n\n const prevSlide = () => {\n setCurrentSlide(prev => (prev === 0 ? carouselItems.length - 1 : prev - 1));\n };\n\n const goToSlide = (index) => {\n setCurrentSlide(index);\n };\n\n // Auto-rotate carousel every 5 seconds\n useEffect(() => {\n const interval = setInterval(() => {\n nextSlide();\n }, 5000);\n return () => clearInterval(interval);\n }, [carouselItems.length]);\n\n return (\n <Fragment>\n\n {/* Carousel Background (70% width) */}\n\n <div className=\"carousel-container\">\n {carouselItems.sort((x,y)=>x?.id-y?.id).map((item, index) => (\n <div\n key={item.id}\n className={`carousel-slide ${index === currentSlide ? 'active' : ''}`}\n style={{ backgroundImage: `url(${item.image})` }}\n >\n <div className=\"carousel-content\">\n <h2>{t(item.title)}</h2>\n <p>{t(item.description)}</p>\n </div>\n </div>\n ))}\n\n {/* Combined Navigation and Indicators (Bottom Center) */}\n <div className=\"carousel-controls\">\n <button className=\"carousel-nav\" onClick={prevSlide}>\n <\n </button>\n\n <div className=\"carousel-indicators\">\n {carouselItems.map((_, index) => (\n <button\n key={index}\n className={`indicator ${index === currentSlide ? 'active' : ''}`}\n onClick={() => goToSlide(index)}\n />\n ))}\n </div>\n\n <button className=\"carousel-nav\" onClick={nextSlide}>\n >\n </button>\n </div>\n </div>\n </Fragment>\n );\n};\n\nexport default Carousel;","export const loginConfig = [\n {\n texts: {\n header: \"CORE_COMMON_LOGIN\",\n submitButtonLabel: \"CORE_COMMON_LOGIN\",\n secondaryButtonLabel: \"CORE_COMMON_FORGOT_PASSWORD\",\n },\n inputs: [\n {\n label: \"CORE_LOGIN_USERNAME\",\n type: \"text\",\n key: \"username\",\n isMandatory: true,\n populators: {\n name: \"username\",\n validation: {\n required: true,\n },\n error: \"ERR_USERNAME_REQUIRED\",\n },\n },\n {\n label: \"CORE_LOGIN_PASSWORD\",\n type: \"password\",\n key: \"password\",\n isMandatory: true,\n populators: {\n name: \"password\",\n validation: {\n required: true,\n },\n error: \"ERR_PASSWORD_REQUIRED\",\n },\n },\n {\n isMandatory: true,\n type: \"dropdown\",\n key: \"city\",\n label: \"CORE_COMMON_CITY\",\n disable: false,\n populators: {\n name: \"city\",\n optionsKey: \"name\",\n error: \"ERR_HRMS_INVALID_CITY\",\n mdmsConfig: {\n masterName: \"tenants\",\n moduleName: \"tenant\",\n localePrefix: \"TENANT_TENANTS\",\n select:\n \"(data)=>{ return Array.isArray(data['tenant'].tenants) && Digit.Utils.getUnique(data['tenant'].tenants).map(ele=>({code:ele.code,name:Digit.Utils.locale.getTransformedLocale('TENANT_TENANTS_'+ele.code)}))}\",\n },\n },\n },\n {\n key: \"check\",\n type: \"component\",\n disable: false,\n component: \"PrivacyComponent\",\n populators: {\n name: \"check\"\n },\n customProps: {\n module: \"HCM\"\n },\n isMandatory: false,\n withoutLabel: true\n },\n {\n key: \"employeeSsoLoginOptions\",\n type: \"component\",\n disable: false,\n component: \"EmployeeSSOLoginOptions\",\n populators: {\n name: \"employeeSsoLoginOptions\"\n },\n isMandatory: false,\n withoutLabel: true\n },\n ],\n },\n];\n","export const LoginOtpConfig = [\n {\n texts: {\n header: \"CORE_COMMON_LOGIN\",\n submitButtonLabel: \"CORE_COMMON_CONTINUE\",\n },\n inputs: [\n {\n label: \"CORE_SIGNUP_EMAILID\",\n type: \"text\",\n key: \"email\",\n isMandatory: true,\n populators: {\n name: \"email\",\n validation: {\n required: true,\n pattern: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/,\n },\n error: \"ERR_EMAIL_REQUIRED\",\n },\n },\n {\n isMandatory: true,\n key: \"check\",\n type: \"component\",\n component: \"PrivacyComponent\",\n withoutLabel: true,\n disable: false,\n customProps: {\n module: \"Sandbox\",\n },\n populators: {\n name: \"check\",\n },\n },\n ],\n },\n];\n","import { BackLink, Loader, FormComposerV2, Toast } from \"@egovernments/digit-ui-components\";\nimport PropTypes from \"prop-types\";\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport Background from \"../../../components/Background\";\nimport Header from \"../../../components/Header\";\nimport Carousel from \"./Carousel/Carousel\";\nimport ImageComponent from \"../../../components/ImageComponent\";\n// import SkipToMainContent from \"../SkipToMainContent/SkipToMainContent\";\nimport withAutoFocusMain from \"../../../hoc/withAutoFocusMain\";\n\nconst setEmployeeDetail = (userObject, token) => {\n if (Digit.Utils.getMultiRootTenant() && process.env.NODE_ENV !== \"development\") {\n return;\n }\n let locale = JSON.parse(sessionStorage.getItem(\"Digit.locale\"))?.value || Digit.Utils.getDefaultLanguage();\n localStorage.setItem(\"Employee.tenant-id\", userObject?.tenantId);\n localStorage.setItem(\"tenant-id\", userObject?.tenantId);\n localStorage.setItem(\"citizen.userRequestObject\", JSON.stringify(userObject));\n localStorage.setItem(\"locale\", locale);\n localStorage.setItem(\"Employee.locale\", locale);\n localStorage.setItem(\"token\", token);\n localStorage.setItem(\"Employee.token\", token);\n localStorage.setItem(\"user-info\", JSON.stringify(userObject));\n localStorage.setItem(\"Employee.user-info\", JSON.stringify(userObject));\n};\n\nconst Login = ({ config: propsConfig, t, isDisabled, loginOTPBased }) => {\n const { data: cities, isLoading } = Digit.Hooks.useTenants();\n const {\n data: storeData,\n isLoading: isStoreLoading,\n } = Digit.Hooks.useStore.getInitData();\n const {\n data: ssoMDMSData,\n isLoading: isSSOMDMSLoading,\n } = Digit.Hooks.useSSOConfig(Digit.ULBService.getStateId(), {\n select: (data) => {\n const config =\n data?.MdmsRes?.[\"SSO\"]?.IdentityProviders ||\n data?.[\"SSO\"]?.IdentityProviders ||\n data?.[\"IdentityProviders\"] ||\n [];\n return Array.isArray(config) ? config : [];\n },\n });\n const { stateInfo } = storeData || {};\n const [user, setUser] = useState(null);\n const [showToast, setShowToast] = useState(null);\n const [disable, setDisable] = useState(false);\n const [loginLoader, setLoginLoader] = useState(false);\n const navigate = useNavigate();\n const DynamicLoginComponent = Digit.ComponentRegistryService?.getComponent(\n \"DynamicLoginComponent\",\n );\n\n /* Generic SSO Callback Handler - runs on mount / when disable/user/stateInfo change */\n useEffect(() => {\n const hashParams = new URLSearchParams(window.location.hash.slice(1));\n const searchParams = new URLSearchParams(window.location.search);\n const idToken = hashParams.get(\"id_token\") || searchParams.get(\"id_token\");\n const accessToken =\n hashParams.get(\"access_token\") || searchParams.get(\"access_token\");\n const code = searchParams.get(\"code\");\n\n const error = searchParams.get(\"error\") || hashParams.get(\"error\");\n const errorDescription =\n searchParams.get(\"error_description\") ||\n hashParams.get(\"error_description\") ||\n searchParams.get(\"errorDescription\") ||\n hashParams.get(\"errorDescription\");\n\n // If we are not on an SSO callback URL, never keep the SSO overlay loader.\n // Important: we intentionally don't set the loader before redirecting to the provider,\n // so browser back (including bfcache restores) won't get stuck with a stale loader.\n // Note: do NOT reset `disable` here — it is also used for form-validation gating and\n // resetting it would fight FormComposerV2's onFormValueChange, causing an infinite loop.\n if (!idToken && !code && !error) {\n if (loginLoader) setLoginLoader(false);\n return;\n }\n\n if (error && !showToast) {\n setShowToast(errorDescription || \"SSO Login Failed!\");\n setTimeout(closeToast, 5000);\n setLoginLoader(false);\n setDisable(false);\n return;\n }\n\n if (!stateInfo?.code) {\n // Tenant/state not ready yet; wait and retry when stateInfo arrives.\n return;\n }\n\n if ((idToken || code) && !user && !disable) {\n if (idToken) {\n handleDigitLogin(idToken, accessToken);\n } else if (code) {\n setDisable(true);\n setLoginLoader(true);\n Digit.UserService.microsoftAuthenticate({ code })\n .then(({ UserRequest: info, ...tokens }) => {\n Digit.SessionStorage.set(\"Employee.tenantId\", info?.tenantId);\n setUser({ info, ...tokens });\n setDisable(false);\n setLoginLoader(false);\n })\n .catch((err) => {\n setShowToast(\n err?.response?.data?.error_description || \"Login Failed!\",\n );\n setTimeout(closeToast, 5000);\n setDisable(false);\n setLoginLoader(false);\n });\n }\n }\n\n }, [user, disable, stateInfo, loginLoader, showToast]);\n\n /* Post-login redirect and user setup */\n useEffect(() => {\n if (!user) {\n return;\n }\n Digit.SessionStorage.set(\"citizen.userRequestObject\", user);\n const filteredRoles = user?.info?.roles?.filter((role) => role.tenantId === Digit.SessionStorage.get(\"Employee.tenantId\"));\n if (user?.info?.roles?.length > 0) user.info.roles = filteredRoles;\n Digit.UserService.setUser(user);\n setEmployeeDetail(user?.info, user?.access_token);\n let redirectPath = `/${window?.contextPath}/employee`;\n\n /* logic to redirect back to same screen where we left off */\n if (window?.location?.href?.includes(\"from=\")) {\n redirectPath = decodeURIComponent(window?.location?.href?.split(\"from=\")?.[1]) || `/${window?.contextPath}/employee`;\n }\n\n /* RAIN-6489 Logic to navigate to National DSS home in case user has only one role [NATADMIN]*/\n if (\n user?.info?.roles &&\n user?.info?.roles?.every((e) => e.code === \"NATADMIN\")\n ) {\n redirectPath = `/${window?.contextPath}/employee/dss/landing/NURT_DASHBOARD`;\n }\n\n /* RAIN-6489 Logic to navigate to National DSS home incase user has only one role [NATADMIN]*/\n if (\n user?.info?.roles &&\n user?.info?.roles?.every((e) => e.code === \"STADMIN\")\n ) {\n redirectPath = `/${window?.contextPath}/employee/dss/landing/home`;\n }\n\n navigate(redirectPath, { replace: true });\n }, [user]);\n\n /* Generic Token Exchange with DIGIT Backend */\n const handleDigitLogin = async (idToken, accessToken = null) => {\n setDisable(true);\n setLoginLoader(true);\n try {\n const response = await fetch(\"/user/oauth/token\", {\n method: \"POST\",\n headers: {\n Authorization: `Basic ${\n window?.globalConfigs?.getConfig(\"JWT_TOKEN\") ||\n \"ZWdvdi11c2VyLWNsaWVudDo=\"\n }`,\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n body: new URLSearchParams({\n grant_type: \"jwt_exchange\",\n scope: \"read\",\n userType: \"EMPLOYEE\",\n assertion: idToken,\n ...(accessToken && { access_token: accessToken }),\n tenantId: stateInfo?.code,\n }),\n });\n\n if (!response.ok) {\n const raw = await response.text();\n let parsed;\n try {\n parsed = raw ? JSON.parse(raw) : null;\n } catch (e) {\n parsed = null;\n }\n const message =\n parsed?.error_description ||\n parsed?.errorDescription ||\n parsed?.message ||\n parsed?.error ||\n raw ||\n \"DIGIT Login Failed\";\n throw new Error(message);\n }\n\n const data = await response.json();\n const { UserRequest: info, ...tokens } = data;\n\n Digit.SessionStorage.set(\"Employee.tenantId\", info?.tenantId);\n setUser({ info, ...tokens });\n } catch (error) {\n console.error(\"DIGIT Login Error:\", error);\n setShowToast(error?.message || \"DIGIT Login Failed\");\n setTimeout(closeToast, 5000);\n\n\n // If token exchange fails, force Microsoft to prompt credentials on next SSO click.\n try {\n window.sessionStorage.setItem(\"sso.force.prompt.login\", \"true\");\n } catch (e) {\n // no-op\n }\n\n // Prevent retry loop: clear `id_token`/`code` from URL (stay on same page).\n try {\n window.history.replaceState({}, document.title, window.location.pathname);\n } catch (e) {\n // no-op\n }\n }\n setDisable(false);\n setLoginLoader(false);\n };\n\n const buildOIDCAuthorizeUrl = (uiConfig) => {\n const {\n authorizeUrl,\n clientId,\n scopes = [\"openid\", \"profile\", \"email\"],\n responseType = \"id_token\",\n responseMode = \"fragment\",\n nonceRequired = true,\n redirectPath = \"employee/user/login\",\n resource,\n provider,\n prompt,\n } = uiConfig || {};\n\n if (!authorizeUrl || !clientId) {\n throw new Error(\"Missing authorizeUrl or clientId for OIDC login\");\n }\n\n const nonce = nonceRequired\n ? Math.random().toString(36).substring(2)\n : undefined;\n const redirectUri = `${window.location.origin}/${window?.contextPath}/${redirectPath}`;\n\n const params = new URLSearchParams();\n params.set(\"client_id\", clientId);\n params.set(\"response_type\", responseType);\n params.set(\"redirect_uri\", redirectUri);\n if (nonce) params.set(\"nonce\", nonce);\n if (responseMode) params.set(\"response_mode\", responseMode);\n if (scopes && scopes.length) params.set(\"scope\", scopes.join(\" \"));\n if (resource) params.set(\"resource\", resource);\n\n // Handle prompt parameter with priority:\n // 1. Use configured prompt from SSO config (respects admin configuration)\n // 2. Fall back to forced login only if no prompt is configured AND a previous login failed\n try {\n const forcePromptLogin = window.sessionStorage.getItem(\"sso.force.prompt.login\") === \"true\";\n\n if (prompt) {\n // Respect configured prompt (e.g., \"select_account\", \"consent\")\n params.set(\"prompt\", prompt);\n // Clear the force flag since we're using configured prompt\n if (forcePromptLogin) {\n window.sessionStorage.removeItem(\"sso.force.prompt.login\");\n }\n } else if (forcePromptLogin) {\n // Only force login if no prompt is configured\n params.set(\"prompt\", \"login\");\n window.sessionStorage.removeItem(\"sso.force.prompt.login\");\n }\n } catch (e) {\n // If prompt is configured, still set it even if sessionStorage fails\n if (prompt) {\n params.set(\"prompt\", prompt);\n }\n }\n\n return `${authorizeUrl}?${params.toString()}`;\n };\n\n const onSSOLogin = async (ssoConfig) => {\n // For OIDC-like providers (MICROSOFT, GOOGLE, etc.), use generic OIDC login\n const ui = ssoConfig?.ui || {};\n const hasOidcConfig = Boolean((ui.authorizeUrl || ssoConfig?.authorizeUrl) && ui.clientId);\n\n if (ui.authStrategy === \"OIDC_POPUP\" || ui.provider === \"MICROSOFT\" || hasOidcConfig) {\n return onOIDCLogin(ssoConfig);\n }\n\n // If the config doesn't match any known SSO strategy, don't leave the overlay loader stuck.\n setShowToast(\"SSO configuration is invalid or unsupported\");\n setTimeout(closeToast, 5000);\n };\n\n const onOIDCLogin = async (ssoConfig) => {\n try {\n const ui = { ...(ssoConfig?.ui || {}) };\n // Backward-compatibility for older configs where authorizeUrl/resource\n // might be on the top level instead of inside ui.\n ui.authorizeUrl = ui.authorizeUrl || ssoConfig?.authorizeUrl;\n ui.resource = ui.resource || ssoConfig?.resource;\n // For Microsoft, if resource is not explicitly provided, default it to clientId (v1 behavior).\n if (ui.provider === \"MICROSOFT\" && !ui.resource) {\n ui.resource = ui.clientId;\n }\n // Persist provider + logout-relevant info for later use during logout\n if (ui.provider) {\n localStorage.setItem(\"sso-provider\", ui.provider);\n }\n if (ui.logoutUrl) {\n localStorage.setItem(\"sso-logout-url\", ui.logoutUrl);\n }\n if (ui.logoutRedirectParam) {\n localStorage.setItem(\"sso-logout-redirect-param\", ui.logoutRedirectParam);\n }\n if (ui.tenantId) {\n localStorage.setItem(\"sso-tenant-id\", ui.tenantId);\n }\n if (ui.authority) {\n localStorage.setItem(\"sso-authority\", ui.authority);\n }\n const url = buildOIDCAuthorizeUrl(ui);\n // Simple implementation: redirect for OIDC if no library is present\n // For a better experience, a popup and message bridge should be used\n window.location.href = url;\n } catch (error) {\n console.error(\"OIDC Login Error:\", error);\n setShowToast(error.message || \"OIDC Login Failed\");\n setTimeout(closeToast, 5000);\n setLoginLoader(false);\n }\n };\n\n const onLogin = async (data) => {\n // if (!data.city) {\n // alert(\"Please Select City!\");\n // return;\n // }\n if (data?.username) {\n data.username = data.username.trim();\n }\n if (data?.password) {\n data.password = data.password.trim();\n }\n\n setDisable(true);\n setLoginLoader(true);\n const requestData = {\n ...data,\n ...defaultValues,\n userType: \"EMPLOYEE\",\n };\n requestData.tenantId = requestData?.city?.code || Digit?.ULBService?.getStateId();\n delete requestData.city;\n try {\n const { UserRequest: info, ...tokens } = await Digit.UserService.authenticate(requestData);\n Digit.SessionStorage.set(\"Employee.tenantId\", info?.tenantId);\n setUser({ info, ...tokens });\n } catch (err) {\n setShowToast(\n err?.response?.data?.error_description ||\n (err?.message == \"ES_ERROR_USER_NOT_PERMITTED\" && t(\"ES_ERROR_USER_NOT_PERMITTED\")) ||\n t(\"INVALID_LOGIN_CREDENTIALS\")\n );\n setTimeout(closeToast, 5000);\n }\n setDisable(false);\n setLoginLoader(false);\n };\n\n const reqCreate = {\n url: `/user-otp/v1/_send`,\n params: { tenantId: Digit?.ULBService?.getStateId() },\n body: {},\n config: {\n enable: false,\n },\n };\n const mutation = Digit.Hooks.useCustomAPIMutationHook(reqCreate);\n\n const onOtpLogin = async (data) => {\n const inputEmail = data.email;\n await mutation.mutate(\n {\n body: {\n otp: {\n userName: data.email,\n type: \"login\",\n tenantId: Digit?.ULBService?.getStateId(),\n userType: \"EMPLOYEE\",\n },\n },\n config: {\n enable: true,\n },\n },\n {\n onError: (error, variables) => {\n setShowToast(\n error?.response?.data?.Errors?.[0].code\n ? `SANDBOX_RESEND_OTP${error?.response?.data?.Errors?.[0]?.code}`\n : `SANDBOX_RESEND_OTP_ERROR`,\n );\n setTimeout(closeToast, 5000);\n },\n onSuccess: async (data) => {\n navigate(`/${window?.contextPath}/employee/user/login/otp`, {\n state: {\n email: inputEmail,\n tenant: Digit?.ULBService?.getStateId(),\n },\n });\n },\n },\n );\n };\n\n const closeToast = () => {\n setShowToast(null);\n };\n\n const onForgotPassword = () => {\n navigate(`/${window?.contextPath}/employee/user/forgot-password`);\n };\n const defaultTenant = Digit.ULBService.getStateId();\n\n const defaultValue = {\n code: defaultTenant,\n name: Digit.Utils.locale.getTransformedLocale(\n `TENANT_TENANTS_${defaultTenant}`,\n ),\n };\n\n const ssoConfigs = ssoMDMSData?.map((sso) => ({\n ...sso,\n provider: sso.ui?.provider || sso.provider || \"sso\",\n label: t(`SSO_PROVIDER_${sso.ui?.name || sso.id}`),\n icon: sso.ui?.logo ? (\n <img\n src={sso.ui.logo}\n alt={sso.ui?.name}\n className=\"employee-login-sso-logo\"\n />\n ) : sso.ui?.provider === \"MICROSOFT\" ? \"Microsoft\" : sso.ui?.icon,\n onLogin: (ssoConfig) => {\n onSSOLogin(ssoConfig);\n },\n }));\n\n let config = [\n {\n body: propsConfig?.inputs?.map((field) =>\n field?.component === \"EmployeeSSOLoginOptions\"\n ? {\n ...field,\n customProps: {\n ...field.customProps,\n ssoConfigs,\n },\n }\n : field,\n ),\n },\n ];\n\n const { mode } = Digit.Hooks.useQueryParams();\n if (\n mode === \"admin\" &&\n config?.[0]?.body?.[2]?.disable == false &&\n config?.[0]?.body?.[2]?.populators?.defaultValue == undefined\n ) {\n config[0].body[2].disable = true;\n config[0].body[2].isMandatory = false;\n config[0].body[2].populators.defaultValue = defaultValue;\n }\n\n const defaultValues = useMemo(\n () =>\n Object.fromEntries(\n config[0].body\n .filter(\n (field) =>\n field?.populators?.defaultValue && field?.populators?.name,\n )\n .map((field) => [\n field.populators.name,\n field.populators.defaultValue,\n ]),\n ),\n [],\n );\n\n const onFormValueChange = (setValue, formData, formState) => {\n\n // Extract keys from the config \n const keys = config[0].body.filter(field => field?.isMandatory).map((field) => field?.key);\n\n const hasEmptyFields = keys.some((key) => {\n const value = formData[key];\n return value == null || value === \"\" || value === false;\n });\n\n setDisable(hasEmptyFields);\n };\n\n const renderLoginForm = (extraClasses = \"\", cardClassName = \"\", wrapperClass = \"\") => (\n <FormComposerV2\n onSubmit={loginOTPBased ? onOtpLogin : onLogin}\n isDisabled={isDisabled || disable}\n noBoxShadow\n inline\n submitInForm\n config={config}\n label={propsConfig?.texts?.submitButtonLabel}\n secondaryActionLabel={\n propsConfig?.texts?.secondaryButtonLabel +\n (extraClasses.includes(\"login-form-container\") ? \"?\" : \"\")\n }\n onSecondayActionClick={onForgotPassword}\n onFormValueChange={onFormValueChange}\n heading={propsConfig?.texts?.header}\n className={`${wrapperClass}`}\n cardSubHeaderClassName=\"loginCardSubHeaderClassName\"\n cardClassName={cardClassName}\n buttonClassName=\"buttonClassName\"\n defaultValues={defaultValues}\n >\n {stateInfo?.code ? <Header /> : <Header showTenant={false} />}\n </FormComposerV2>\n );\n \n const renderFooter = (footerClassName) => (\n <div className={footerClassName} style={{ backgroundColor: \"unset\" }}>\n <ImageComponent\n alt=\"Powered by DIGIT\"\n src={window?.globalConfigs?.getConfig?.(\"DIGIT_FOOTER_BW\")}\n style={{ cursor: \"pointer\" }}\n onClick={() => {\n window.open(window?.globalConfigs?.getConfig?.(\"DIGIT_HOME_URL\"), \"_blank\").focus();\n }}\n />\n </div>\n );\n\n if (isLoading || isStoreLoading) {\n return <Loader page={true} variant=\"PageLoader\" />;\n }\n return propsConfig?.bannerImages ? (\n <div className=\"login-container\">\n {/* <SkipToMainContent class_name={\".login-form-container\"}/> */}\n <Carousel bannerImages={propsConfig?.bannerImages} />\n <div className=\"login-form-container\">\n {renderLoginForm(\"login-form-container\", \"\", loginOTPBased ? \"sandbox-onboarding-wrapper\" : \"\")}\n {DynamicLoginComponent && <DynamicLoginComponent />} \n {showToast && <Toast type=\"error\" label={t(showToast)} onClose={closeToast} />}\n {renderFooter(\"EmployeeLoginFooter\")}\n </div>\n </div>\n ) : (\n <Background>\n {loginLoader && (\n <div\n style={{\n position: \"fixed\",\n top: 0,\n left: 0,\n width: \"100vw\",\n height: \"100vh\",\n background: \"rgba(0,0,0,0.35)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n zIndex: 9999,\n }}\n >\n <Loader />\n </div>\n )}\n <div className=\"employeeBackbuttonAlign\">\n <BackLink onClick={() => window.history.back()} />\n </div>\n {renderLoginForm(\n \"loginFormStyleEmployee\",\n \"loginCardClassName\",\n loginOTPBased ? \"sandbox-onboarding-wrapper\" : \"\",\n )}\n {DynamicLoginComponent && <DynamicLoginComponent />}\n {showToast && <Toast type=\"error\" label={t(showToast)} onClose={closeToast} />}\n {renderFooter(\"employee-login-home-footer\")}\n </Background>\n );\n \n};\n\nLogin.propTypes = {\n loginParams: PropTypes.any,\n};\n\nLogin.defaultProps = {\n loginParams: null,\n};\n\nexport default withAutoFocusMain(Login, \".login-form-container\");\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Routes, Route } from \"react-router-dom\"; // Updated imports for v6\nimport { loginConfig as defaultLoginConfig } from \"./config\";\nimport { LoginOtpConfig as defaultLoginOtpConfig } from \"./ConfigOtp\";\nimport LoginComponent from \"./login\";\nimport { useLoginConfig } from \"../../../hooks/useLoginConfig\";\nimport { Loader } from \"@egovernments/digit-ui-components\";\n\nconst EmployeeLogin = ({ stateCode }) => {\n const { t } = useTranslation();\n const [loginConfig, setloginConfig] = useState(defaultLoginConfig);\n const [loginOtpConfig, setloginOtpConfig] = useState(defaultLoginOtpConfig);\n const moduleCode = [\"privacy-policy\"];\n const language = Digit.StoreData.getCurrentLanguage();\n const modulePrefix = \"digit\";\n const loginType = window?.globalConfigs?.getConfig(\"OTP_BASED_LOGIN\") || false;\n const { data: mdmsData, isLoading } = useLoginConfig(stateCode);\n const { data: store } = Digit.Services.useStore({\n stateCode,\n moduleCode,\n language,\n modulePrefix,\n });\n\n useEffect(() => {\n if (!isLoading && mdmsData?.config) { \n setloginConfig(mdmsData?.config);\n } else {\n setloginConfig(defaultLoginConfig);\n }\n }, [mdmsData, isLoading]); \n\n const loginParams = useMemo(\n () =>\n loginConfig.map((step) => {\n const texts = {};\n for (const key in step.texts) {\n texts[key] = t(step.texts[key]);\n }\n return { ...step, texts };\n },\n [loginConfig]\n )\n );\n\n const loginOtpParams = useMemo(\n () =>\n loginOtpConfig.map((step) => {\n const texts = {};\n for (const key in step.texts) {\n texts[key] = t(step.texts[key]);\n }\n return { ...step, texts };\n },\n [loginOtpConfig]\n )\n );\n\n if (isLoading) {\n return <Loader page={false} variant={\"PageLoader\"} />;\n }\n\n return (\n <Routes> {/* Replaced Switch with Routes */}\n <Route\n path=\"/\" \n element={ \n loginType ? (\n <LoginComponent config={loginOtpParams[0]} t={t} loginOTPBased={loginType} />\n ) : (\n <LoginComponent config={loginParams[0]} t={t} />\n )\n }\n />\n </Routes>\n );\n};\n\nexport default EmployeeLogin;","import React, { useState, useEffect } from \"react\";\nimport { BackLink, CardLabel, Loader, Toast } from \"@egovernments/digit-ui-components\";\nimport { FormComposerV2 } from \"@egovernments/digit-ui-react-components\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate, useLocation } from \"react-router-dom\"; // Updated imports for v6\nimport Background from \"../../../components/Background\";\nimport Header from \"../../../components/Header\";\nimport ImageComponent from \"../../../components/ImageComponent\";\n\n/* set employee details to enable backward compatible */\nconst setEmployeeDetail = (userObject, token) => {\n if (Digit.Utils.getMultiRootTenant()) {\n return;\n }\n let locale = JSON.parse(sessionStorage.getItem(\"Digit.locale\"))?.value || Digit.Utils.getDefaultLanguage();\n localStorage.setItem(\"Employee.tenant-id\", userObject?.tenantId);\n localStorage.setItem(\"tenant-id\", userObject?.tenantId);\n localStorage.setItem(\"citizen.userRequestObject\", JSON.stringify(userObject));\n localStorage.setItem(\"locale\", locale);\n localStorage.setItem(\"Employee.locale\", locale);\n localStorage.setItem(\"token\", token);\n localStorage.setItem(\"Employee.token\", token);\n localStorage.setItem(\"user-info\", JSON.stringify(userObject));\n localStorage.setItem(\"Employee.user-info\", JSON.stringify(userObject));\n};\n\nconst Otp = ({ isLogin = false }) => {\n const { t } = useTranslation();\n const navigate = useNavigate(); // Replaced useHistory with useNavigate\n const location = useLocation();\n const [showToast, setShowToast] = useState(null);\n const [isOtpValid, setIsOtpValid] = useState(false);\n const [user, setUser] = useState(null);\n const [params, setParams] = useState(location?.state?.data || {});\n const [ifSuperUserExists, setIfSuperUserExist] = useState(false);\n // In v6, location.state is directly available, no need for destructuring within another object\n const { email, tenant } = location.state || {}; \n\n const { data: MdmsRes } = Digit.Hooks.useCustomMDMS(\n tenant,\n \"SandBoxLanding\",\n [\n {\n name: \"LandingPageRoles\",\n },\n ],\n {\n enabled: true,\n staleTime: 0,\n cacheTime: 0,\n select: (data) => {\n return data?.[\"SandBoxLanding\"]?.[\"LandingPageRoles\"];\n },\n }\n );\n\n const RoleLandingUrl = MdmsRes?.[0].url;\n\n const config = [\n {\n body: [\n {\n type: \"component\",\n component: \"OtpComponent\",\n key: \"OtpComponent\",\n withoutLabel: true,\n isMandatory: false,\n customProps: {\n email: email,\n tenant: tenant,\n },\n populators: {\n required: true,\n },\n },\n ],\n },\n ];\n\n const OtpConfig = [\n {\n texts: {\n // header: t(\"CORE_COMMON_OTP_LABEL\"),\n header: t(\"SANDBOX_OTP_VERIFICATION\"),\n submitButtonLabel: \"CORE_COMMON_SUBMIT\",\n },\n },\n ];\n\n const closeToast = () => {\n setShowToast(null);\n };\n\n useEffect(() => {\n if (!user) {\n return;\n }\n Digit.SessionStorage.set(\"citizen.userRequestObject\", user);\n const filteredRoles = user?.info?.roles?.filter((role) => role.tenantId === Digit.SessionStorage.get(\"Employee.tenantId\"));\n if (user?.info?.roles?.length > 0) user.info.roles = filteredRoles;\n Digit.UserService.setUser(user);\n setEmployeeDetail(user?.info, user?.access_token);\n let redirectPath = `/${window?.globalPath}/user/setup`;\n\n const getRedirectPathOtpLogin = (locationPathname, user, MdmsRes, RoleLandingUrl) => {\n const userRole = user?.info?.roles?.[0]?.code;\n const isSuperUser = userRole === \"SUPERUSER\";\n const contextPath = window?.contextPath;\n\n switch (true) {\n case locationPathname === \"/sandbox-ui/user/otp\" && isSuperUser:\n return `/${contextPath}/employee/sandbox/landing`;\n\n case isSuperUser && MdmsRes?.[0]?.rolesForLandingPage?.includes(\"SUPERUSER\"):\n return `/${contextPath}${RoleLandingUrl}`;\n\n default:\n return `/${contextPath}/employee`;\n }\n };\n\n // Usage\n const redirectPathOtpLogin = getRedirectPathOtpLogin(location.pathname, user, MdmsRes, RoleLandingUrl);\n\n if (isLogin) {\n navigate(redirectPathOtpLogin); // Replaced history.push with navigate\n return;\n } else {\n navigate(\n {\n pathname: redirectPath,\n },\n { state: { tenant: tenant } } // Pass state as a separate options object\n );\n return;\n }\n }, [user]);\n\n const onSubmit = async (formData) => {\n const requestData = {\n username: email,\n password: formData?.OtpComponent?.otp,\n tenantId: tenant,\n userType: \"EMPLOYEE\",\n };\n try {\n const { UserRequest: info, ...tokens } = await Digit.UserService.authenticate(requestData);\n Digit.SessionStorage.set(\"Employee.tenantId\", info?.tenantId);\n setUser({ info, ...tokens });\n } catch (err) {\n setShowToast(\n err?.response?.data?.error_description ||\n (err?.message == \"ES_ERROR_USER_NOT_PERMITTED\" && t(\"ES_ERROR_USER_NOT_PERMITTED\")) ||\n t(\"INVALID_LOGIN_CREDENTIALS\")\n );\n setTimeout(closeToast, 5000);\n }\n };\n\n return (\n <Background>\n <div className=\"employeeBackbuttonAlign\">\n <BackLink onClick={() => navigate(-1)} /> {/* navigate(-1) for going back */}\n </div>\n <FormComposerV2\n onSubmit={onSubmit}\n noBoxShadow\n inline\n submitInForm\n onFormValueChange={(setValue, formValue) => {\n const otpValue = formValue[\"OtpComponent\"];\n if (otpValue?.otp?.length === 6) {\n setIsOtpValid(true);\n } else {\n setIsOtpValid(false);\n }\n }}\n isDisabled={!isOtpValid}\n config={config}\n label={OtpConfig[0].texts.submitButtonLabel}\n heading={OtpConfig[0].texts.header}\n headingStyle={{ textAlign: \"center\" }}\n cardStyle={{ maxWidth: \"408px\", margin: \"auto\" }}\n className=\"sandbox-onboarding-wrapper\"\n >\n <Header showTenant={false} />\n </FormComposerV2>\n {showToast && <Toast type={\"error\"} label={t(showToast)} onClose={closeToast} />}\n <div className=\"EmployeeLoginFooter\">\n <ImageComponent\n alt=\"Powered by DIGIT\"\n src={window?.globalConfigs?.getConfig?.(\"DIGIT_FOOTER_BW\")}\n style={{ cursor: \"pointer\" }}\n onClick={() => {\n window.open(window?.globalConfigs?.getConfig?.(\"DIGIT_HOME_URL\"), \"_blank\").focus();\n }}\n />{\" \"}\n </div>\n </Background>\n );\n};\n\nexport default Otp;","export const SignUpConfig = [\n {\n texts: {\n header: \"CORE_COMMON_SIGN_UP\",\n submitButtonLabel: \"CORE_COMMON_SIGN_UP_BUTTON\",\n },\n inputs: [\n {\n label: \"CORE_SIGNUP_EMAILID\",\n type: \"text\",\n key: \"email\",\n isMandatory: true,\n populators: {\n name: \"email\",\n validation: {\n required: true,\n pattern: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/,\n maxLength: 64,\n },\n error: \"ERR_EMAIL_REQUIRED\",\n },\n },\n {\n label: \"CORE_SIGNUP_ACCOUNT_NAME\",\n type: \"text\",\n key: \"accountName\",\n isMandatory: true,\n populators: {\n name: \"accountName\",\n validation: {\n required: true,\n pattern: /^[A-Za-z]+( [A-Za-z]+)*$/,\n maxLength: 50,\n },\n error: \"ERR_ACCOUNT_NAME_REQUIRED\",\n },\n infoMessage:\"SANDBOX_SIGNUP_ACCOUNT_NAME_TOOLTIP\"\n },\n {\n isMandatory: false,\n key: \"check\",\n type: \"component\",\n component: \"PrivacyComponent\",\n withoutLabel: true,\n disable: false,\n customProps: {\n module: \"SandboxSignUp\",\n },\n populators: {\n name: \"check\",\n },\n },\n ],\n bannerImages: [{\n id: 1,\n image: 'https://images.unsplash.com/photo-1746277121508-f44615ff09bb',\n title: 'A digital partner for frontline workers',\n description: \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Distinctio nobis temporibus provident expedita consequuntur, repudiandae pariatur! Deleniti molestias vero, cumque vel error labore ipsam totam?\"\n },\n {\n id: 2,\n image: 'https://images.unsplash.com/photo-1581094271901-8022df4466f9',\n title: 'Feature 2 Title',\n description: \"Lorem, ipsum dolor sit amet consectetur adipisicing elit. Exercitationem esse doloribus molestiae fugiat eos adipisci sequi cumque sit, laboriosam dolores blanditiis nobis assumenda quasi nemo consectetur. Officia nesciunt quibusdam molestiae.\"\n },\n {\n id: 3,\n image: 'https://images.unsplash.com/photo-1624555130581-1d9cca783bc0',\n title: 'Feature 3 Title',\n description: \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Cupiditate aut autem aperiam et modi saepe obcaecati doloremque voluptatem iusto quidem!\"\n },\n {\n id: 4,\n image: 'https://images.unsplash.com/photo-1547481887-a26e2cacb5b2',\n title: 'Feature 4 Title',\n description: \"Lorem, ipsum dolor sit amet consectetur adipisicing elit. Exercitationem esse doloribus molestiae fugiat eos adipisci sequi cumque sit, laboriosam dolores blanditiis nobis assumenda quasi nemo consectetur. Officia nesciunt quibusdam molestiae.\"\n },\n {\n id: 5,\n image: 'https://images.unsplash.com/photo-1536782376847-5c9d14d97cc0',\n title: 'Feature 5 Title',\n description: \"Lorem, ipsum dolor sit amet consectetur adipisicing elit. Exercitationem esse doloribus molestiae fugiat eos adipisci sequi cumque sit, laboriosam dolores blanditiis nobis assumenda quasi nemo consectetur. Officia nesciunt quibusdam molestiae.\"\n },\n {\n id: 6,\n image: 'https://images.unsplash.com/photo-1490730141103-6cac27aaab94',\n title: 'Feature 6 Title',\n description: \"Lorem, ipsum dolor sit amet consectetur adipisicing elit. Exercitationem esse doloribus molestiae fugiat eos adipisci sequi cumque sit, laboriosam dolores blanditiis nobis assumenda quasi nemo consectetur. Officia nesciunt quibusdam molestiae.\"\n },\n ],\n },\n];\n","import { BackLink, Loader, FormComposerV2, Toast, useCustomAPIMutationHook } from \"@egovernments/digit-ui-components\";\nimport PropTypes from \"prop-types\";\nimport React, { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport Background from \"../../../components/Background\";\nimport Header from \"../../../components/Header\";\nimport ImageComponent from \"../../../components/ImageComponent\";\n\nconst Login = ({ config: propsConfig, t, isDisabled }) => {\n const { data: cities, isLoading } = Digit.Hooks.useTenants();\n const { data: storeData, isLoading: isStoreLoading } = Digit.Hooks.useStore.getInitData();\n const { stateInfo } = storeData || {};\n const [showToast, setShowToast] = useState(null);\n const [disable, setDisable] = useState(false);\n\n const navigate = useNavigate();\n\n const reqCreate = {\n url: `/tenant-management/tenant/_create`,\n params: {},\n body: {},\n config: {\n enable: false,\n },\n };\n const mutation = Digit.Hooks.useCustomAPIMutationHook(reqCreate);\n\n const onLogin = async (data) => {\n await mutation.mutate(\n {\n body: {\n tenant: {\n name: data.accountName,\n email: data.email,\n },\n },\n config: {\n enable: true,\n },\n },\n {\n onError: (error, variables) => {\n setShowToast({\n key: \"error\",\n label: error?.response?.data?.Errors?.[0]?.code ? `SANDBOX_SIGNUP_${error?.response?.data?.Errors?.[0]?.code}` : `SANDBOX_SIGNUP_ERROR`,\n });\n },\n onSuccess: async (data) => {\n navigate({\n pathname: `/${window?.globalPath}/user/otp`,\n state: { email: data?.Tenants[0]?.email, tenant: data?.Tenants[0]?.code },\n });\n },\n }\n );\n };\n\n const closeToast = () => {\n setShowToast(null);\n };\n\n let config = [{ body: propsConfig?.inputs }];\n\n const { mode } = Digit.Hooks.useQueryParams();\n if (mode === \"admin\" && config?.[0]?.body?.[2]?.disable == false && config?.[0]?.body?.[2]?.populators?.defaultValue == undefined) {\n config[0].body[2].disable = true;\n config[0].body[2].isMandatory = false;\n config[0].body[2].populators.defaultValue = defaultValue;\n }\n\n const onFormValueChange = (setValue, formData, formState) => {\n // Extract keys from the config\n const keys = config[0].body.map((field) => field.key);\n\n const hasEmptyFields = keys.some((key) => {\n const value = formData[key];\n return value == null || value === \"\" || (key === \"check\" && value === false) || (key === \"captcha\" && value === false);\n });\n\n // Set disable based on the check\n setDisable(hasEmptyFields);\n };\n\n return isLoading || isStoreLoading ? (\n <Loader />\n ) : (\n <Background>\n <div className=\"employeeBackbuttonAlign\">\n <BackLink onClick={() => window.history.back()} />\n </div>\n <FormComposerV2\n onSubmit={onLogin}\n isDisabled={isDisabled || disable}\n noBoxShadow\n inline\n submitInForm\n config={config}\n label={propsConfig?.texts?.submitButtonLabel}\n secondaryActionLabel={propsConfig?.texts?.secondaryButtonLabel}\n onFormValueChange={onFormValueChange}\n heading={propsConfig?.texts?.header}\n className=\"sandbox-signup-form\"\n cardSubHeaderClassName=\"signupCardSubHeaderClassName\"\n cardClassName=\"signupCardClassName sandbox-onboarding-wrapper\"\n buttonClassName=\"buttonClassName\"\n >\n <Header showTenant={false} />\n </FormComposerV2>\n {showToast && <Toast type={\"error\"} label={t(showToast?.label)} onClose={closeToast} />}\n <div className=\"employee-login-home-footer\" style={{ backgroundColor: \"unset\" }}>\n <img\n alt=\"Powered by DIGIT\"\n src={window?.globalConfigs?.getConfig?.(\"DIGIT_FOOTER_BW\")}\n style={{ cursor: \"pointer\" }}\n onClick={() => {\n window.open(window?.globalConfigs?.getConfig?.(\"DIGIT_HOME_URL\"), \"_blank\").focus();\n }}\n />\n </div>\n </Background>\n );\n};\n\nLogin.propTypes = {\n loginParams: PropTypes.any,\n};\n\nLogin.defaultProps = {\n loginParams: null,\n};\n\nexport default Login;\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Routes, Route, useLocation } from \"react-router-dom\";\nimport { SignUpConfig as defaultSignUpConfig } from \"./config\";\nimport Login from \"./signUp\";\n\nconst SignUp = ({ stateCode }) => {\n const { t } = useTranslation();\n const [SignUpConfig, setSignUpConfig] = useState(defaultSignUpConfig);\n\n const moduleCode = [\"privacy-policy\"];\n const language = Digit.StoreData.getCurrentLanguage();\n const modulePrefix = \"digit\";\n\n const { data: store } = Digit.Services.useStore({\n stateCode,\n moduleCode,\n language,\n modulePrefix\n });\n\n const { data: mdmsData, isLoading } = Digit.Hooks.useCommonMDMS(\n stateCode,\n \"commonUiConfig\",\n [\"SignUpConfig\"],\n {\n select: (data) => ({\n config: data?.commonUiConfig?.SignUpConfig\n }),\n retry: false\n }\n );\n\n useEffect(() => {\n if (!isLoading && mdmsData?.config) {\n setSignUpConfig(mdmsData.config);\n } else {\n setSignUpConfig(defaultSignUpConfig);\n }\n }, [mdmsData, isLoading]);\n\n const SignUpParams = useMemo(\n () =>\n SignUpConfig.map((step) => {\n const texts = {};\n for (const key in step.texts) {\n texts[key] = t(step.texts[key]);\n }\n return { ...step, texts };\n }),\n [SignUpConfig]\n );\n\n return (\n <Routes>\n <Route\n path=\"\"\n element={<Login config={SignUpParams[0]} t={t} />}\n />\n </Routes>\n );\n};\n\nexport default SignUp;\n","import React, { useRef, useState, useEffect } from \"react\";\nimport { BackLink, Button, Card, CardHeader, CardLabel, CardText, FieldV1, SVG, TextInput } from \"@egovernments/digit-ui-components\";\nimport { useTranslation } from \"react-i18next\";\nimport { useLocation } from \"react-router-dom\";\nimport Background from \"../../../components/Background\";\nimport Header from \"../../../components/Header\";\nimport ImageComponent from \"../../../components/ImageComponent\";\n\nconst ViewUrl = () => {\n const { t } = useTranslation();\n const location = useLocation();\n const { tenant } = location.state || {};\n const ref = useRef(null);\n const getUserRoles = Digit.SessionStorage.get(\"User\")?.info?.roles;\n const [buttonDisabled, setButtonDisabled] = useState(true);\n const { data: MdmsRes } = Digit.Hooks.useCustomMDMS(\n tenant,\n \"SandBoxLanding\",\n [\n {\n name: \"LandingPageRoles\",\n },\n ],\n {\n enabled: true,\n staleTime:0,\n gcTime:0,\n select: (data) => {\n return data?.[\"SandBoxLanding\"]?.[\"LandingPageRoles\"];\n },\n }\n );\n\n useEffect(() => {\n if (MdmsRes?.[0].url) {\n setButtonDisabled(false);\n }\n }, [MdmsRes]);\n\n const RoleLandingUrl = MdmsRes?.[0].url;\n\n const roleForLandingPage = (getUserRoles, MdmsRes) => {\n const userRole = getUserRoles?.[0]?.code;\n return userRole === \"SUPERUSER\" && MdmsRes.some((page) => page.rolesForLandingPage.includes(\"SUPERUSER\"));\n };\n\n const onButtonClick = () => {\n if (roleForLandingPage(getUserRoles, MdmsRes)) {\n window.location.href = `/${window?.globalPath}/${tenant}${RoleLandingUrl}`;\n } else {\n window.location.href = `/${window?.globalPath}/${tenant}/employee`;\n }\n };\n\n const handleCopyUrl = () => {\n navigator.clipboard.writeText(ref.current.value);\n };\n\n return (\n <Background>\n <div className=\"employeeBackbuttonAlign\">\n <BackLink onClick={() => window.history.back()} />\n </div>\n <Card className=\"card-sandbox\">\n <Header showTenant={false} />\n <div className=\"sandbox-success-signup\">\n <SVG.TickMark fill={\"#fff\"} height={30} width={70} />\n </div>\n <CardHeader className=\"cardHeader-sandbox\" styles={{ color: \"#00703c\" }}>\n {t(\"SANDBOX_HEADER\")}\n </CardHeader>\n <CardText className=\"cardText-sandbox\">{t(\"SAMDBOX_URL_SUB\")}</CardText>\n <CardLabel> {t(\"SANDBOX_URL\")} </CardLabel>\n <div className=\"sandbox-url-wrapper\">\n <TextInput\n inputRef={ref}\n className={\"urlInputText\"}\n onChange={() => {}}\n nonEditable={true}\n value={`${window.location.host}/${window?.globalPath}/${tenant}/employee`}\n />\n <Button className=\"copyButton\" variation={\"secondary\"} onClick={() => handleCopyUrl()} label={t(\"COPY_URL\")}></Button>\n </div>\n <div className=\"sandbox-url-footer\">{t(\"SANDBOX_URL_FOOT\")}</div>\n <Button isDisabled={buttonDisabled} onClick={onButtonClick} label={t(\"SIGN_IN\")}></Button>\n </Card>\n <div className=\"EmployeeLoginFooter\">\n <ImageComponent\n alt=\"Powered by DIGIT\"\n src={window?.globalConfigs?.getConfig?.(\"DIGIT_FOOTER_BW\")}\n style={{ cursor: \"pointer\" }}\n onClick={() => {\n window.open(window?.globalConfigs?.getConfig?.(\"DIGIT_HOME_URL\"), \"_blank\").focus();\n }}\n />\n </div>\n </Background>\n );\n};\n\nexport default ViewUrl;\n","import React from \"react\";\nimport { Routes, Route, Navigate, useLocation } from \"react-router-dom\";\nimport { lazyWithFallback } from \"@egovernments/digit-ui-components\";\nimport DynamicModuleLoader from \"./DynamicModuleLoader\";\n\n// Create lazy components with fallbacks using the utility\nconst ChangePassword = lazyWithFallback(\n () => import(/* webpackChunkName: \"app-change-password\" */ \"../pages/employee/ChangePassword/index\"),\n () => require(\"../pages/employee/ChangePassword/index\").default,\n { loaderText: \"CORE_LOADING_CHANGE_PASSWORD\" }\n);\n\nconst ForgotPassword = lazyWithFallback(\n () => import(/* webpackChunkName: \"app-forgot-password\" */ \"../pages/employee/ForgotPassword/index\"),\n () => require(\"../pages/employee/ForgotPassword/index\").default,\n { loaderText: \"CORE_LOADING_FORGOT_PASSWORD\" }\n);\n\nconst AppHome = lazyWithFallback(\n () => import(/* webpackChunkName: \"app-home\" */ \"./Home\").then(module => ({ default: module.AppHome })),\n () => require(\"./Home\").AppHome,\n { loaderText: \"CORE_LOADING_HOME\" }\n);\n\nconst getTenants = (codes, tenants) => {\n return tenants.filter((tenant) => codes?.map?.((item) => item.code).includes(tenant.code));\n};\n\nexport const AppModules = ({ stateCode, userType, modules, appTenants, additionalComponent }) => {\n const location = useLocation();\n const user = Digit.UserService.getUser();\n\n if (!user || !user?.access_token || !user?.info) {\n return <Navigate to={{ pathname: `/${window?.contextPath}/${userType}/user/login`, state: { from: location.pathname + location.search } }} replace />;\n }\n\n // Create app routes with dynamic module loading and loading states\n const appRoutes = modules?.map(({ code, tenants }, index) => {\n return (\n <Route\n key={index}\n path={`${code.toLowerCase()}/*`}\n element={\n <DynamicModuleLoader\n moduleCode={code}\n stateCode={stateCode}\n userType={userType}\n tenants={getTenants(tenants, appTenants)}\n maxRetries={3}\n retryDelay={1000}\n initialDelay={800}\n />\n }\n />\n );\n });\n\n return (\n <div className=\"ground-container digit-home-ground\">\n <Routes>\n {appRoutes}\n <Route\n path=\"login\"\n element={\n <Navigate\n to={{ pathname: `/${window?.contextPath}/${userType}/user/login`, state: { from: location.pathname + location.search } }}\n replace\n />\n }\n />\n <Route path=\"forgot-password\" element={<ForgotPassword />} />\n <Route path=\"change-password\" element={<ChangePassword />} />\n <Route\n path=\"*\"\n element={\n <AppHome\n userType={userType}\n modules={modules}\n additionalComponent={additionalComponent}\n />\n }\n />\n </Routes>\n </div>\n );\n};","import React, { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Routes, Route, useLocation, useNavigate, Navigate } from \"react-router-dom\";\nimport { AppModules } from \"../../components/AppModules\";\nimport ErrorBoundary from \"../../components/ErrorBoundaries\";\nimport TopBarSideBar from \"../../components/TopBarSideBar\";\nimport { PrivateRoute } from \"@egovernments/digit-ui-components\";\nimport ImageComponent from \"../../components/ImageComponent\";\nimport withAutoFocusMain from \"../../hoc/withAutoFocusMain\";\nimport { lazyWithFallback } from \"@egovernments/digit-ui-components\";\n\n// Create lazy components with fallbacks using the utility\nconst ChangePassword = lazyWithFallback(\n () => import(/* webpackChunkName: \"employee-change-password\" */ \"./ChangePassword\"),\n () => require(\"./ChangePassword\").default,\n { loaderText: \"CORE_LOADING_CHANGE_PASSWORD\" }\n);\n\nconst ForgotPassword = lazyWithFallback(\n () => import(/* webpackChunkName: \"employee-forgot-password\" */ \"./ForgotPassword\"),\n () => require(\"./ForgotPassword\").default,\n { loaderText: \"CORE_LOADING_FORGOT_PASSWORD\" }\n);\n\nconst LanguageSelection = lazyWithFallback(\n () => import(/* webpackChunkName: \"employee-language-selection\" */ \"./LanguageSelection\"),\n () => require(\"./LanguageSelection\").default,\n { loaderText: \"CORE_LOADING_LANGUAGE_SELECTION\" }\n);\n\nconst EmployeeLogin = lazyWithFallback(\n () => import(/* webpackChunkName: \"employee-login\" */ \"./Login\"),\n () => require(\"./Login\").default,\n { loaderText: \"CORE_LOADING_LOGIN\" }\n);\n\nconst Otp = lazyWithFallback(\n () => import(/* webpackChunkName: \"employee-otp\" */ \"./Otp\"),\n () => require(\"./Otp\").default,\n { loaderText: \"CORE_LOADING_OTP\" }\n);\n\nconst UserProfile = lazyWithFallback(\n () => import(/* webpackChunkName: \"user-profile\" */ \"../citizen/Home/UserProfile\"),\n () => require(\"../citizen/Home/UserProfile\").default,\n { loaderText: \"CORE_LOADING_USER_PROFILE\" }\n);\n\nconst ErrorComponent = lazyWithFallback(\n () => import(/* webpackChunkName: \"error-component\" */ \"../../components/ErrorComponent\"),\n () => require(\"../../components/ErrorComponent\").default,\n { loaderText: \"CORE_LOADING_ERROR_COMPONENT\" }\n);\n\nconst userScreensExempted = [\"user/landing\", \"user/profile\", \"user/error\", \"user/productPage\"];\n\nconst EmployeeApp = ({\n stateInfo,\n userDetails,\n CITIZEN,\n cityDetails,\n mobileView,\n handleUserDropdownSelection,\n logoUrl,\n logoUrlWhite,\n stateCode,\n modules,\n appTenants,\n sourceUrl,\n pathname, // This prop seems unused, consider removing\n initData,\n noTopBar = false,\n}) => {\n const navigate = useNavigate();\n const { t } = useTranslation();\n const location = useLocation();\n const showLanguageChange = location?.pathname?.includes(\"language-selection\");\n const isUserProfile = userScreensExempted.some((url) => location?.pathname?.includes(url));\n\n useEffect(() => {\n Digit.UserService.setType(\"employee\");\n }, []);\n\n const additionalComponent = initData?.modules?.filter((i) => i?.additionalComponent)?.map((i) => i?.additionalComponent);\n\n return (\n <div className=\"employee\">\n <Routes>\n <Route path=\"user/*\" element={\n <>\n {isUserProfile && (\n <TopBarSideBar\n t={t}\n stateInfo={stateInfo}\n userDetails={userDetails}\n CITIZEN={CITIZEN}\n cityDetails={cityDetails}\n mobileView={mobileView}\n handleUserDropdownSelection={handleUserDropdownSelection}\n logoUrl={logoUrl}\n logoUrlWhite={logoUrlWhite}\n showSidebar={isUserProfile ? true : false}\n showLanguageChange={!showLanguageChange}\n />\n )}\n <div\n className={isUserProfile ? \"grounded-container\" : \"loginContainer\"}\n style={\n isUserProfile\n ? { padding: 0, paddingTop: \"0\", marginLeft: mobileView ? \"0\" : \"0\" }\n : { \"--banner-url\": `url(${stateInfo?.bannerUrl})`, padding: \"0px\" }\n }\n >\n <Routes>\n <Route path=\"login\" element={<EmployeeLogin stateCode={stateCode} />} />\n <Route path=\"login/otp\" element={<Otp isLogin={true} />} />\n <Route path=\"forgot-password\" element={<ForgotPassword stateCode={stateCode} />} />\n <Route path=\"change-password\" element={<ChangePassword />} />\n <Route\n path=\"profile\"\n element={ <UserProfile stateCode={stateCode} userType={\"employee\"} cityDetails={cityDetails} />}\n />\n <Route\n path=\"error\"\n element={\n <ErrorComponent\n initData={initData}\n goToHome={() => {\n navigate(`/${window?.contextPath}/${Digit?.UserService?.getType?.()}`);\n }}\n />\n }\n />\n <Route path=\"language-selection\" element={<LanguageSelection />} />\n <Route path=\"*\" element={<Navigate to=\"language-selection\" replace />} />\n </Routes>\n </div>\n </>}\n />\n\n <Route path=\"*\" element={\n <>\n {!noTopBar && (\n <TopBarSideBar\n t={t}\n stateInfo={stateInfo}\n userDetails={userDetails}\n CITIZEN={CITIZEN}\n cityDetails={cityDetails}\n mobileView={mobileView}\n handleUserDropdownSelection={handleUserDropdownSelection}\n logoUrl={logoUrl}\n logoUrlWhite={logoUrlWhite}\n modules={modules}\n />\n )}\n <div className={!noTopBar ? `main digit-home-main` : \"\"}>\n <div className=\"employee-app-wrapper digit-home-app-wrapper\">\n <ErrorBoundary initData={initData}>\n <AppModules\n stateCode={stateCode}\n userType=\"employee\"\n modules={modules}\n appTenants={appTenants}\n additionalComponent={additionalComponent}\n />\n </ErrorBoundary>\n </div>\n <div className=\"employee-home-footer\">\n <ImageComponent\n alt=\"Powered by DIGIT\"\n src={window?.globalConfigs?.getConfig?.(\"DIGIT_FOOTER\")}\n style={{ height: \"1.1em\", cursor: \"pointer\" }}\n onClick={() => {\n window.open(window?.globalConfigs?.getConfig?.(\"DIGIT_HOME_URL\"), \"_blank\").focus();\n }}\n />\n </div>\n </div>\n </>\n }/>\n\n <Route path=\"*\" element={<Navigate to={`user/language-selection`} replace />} />\n </Routes>\n </div>\n );\n};\n\nexport default withAutoFocusMain(EmployeeApp, \".digit-home-main\");","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n'use strict';\n\nexports.match = matchQuery;\nexports.parse = parseQuery;\n\n// -----------------------------------------------------------------------------\n\nvar RE_MEDIA_QUERY = /(?:(only|not)?\\s*([^\\s\\(\\)]+)(?:\\s*and)?\\s*)?(.+)?/i,\n RE_MQ_EXPRESSION = /\\(\\s*([^\\s\\:\\)]+)\\s*(?:\\:\\s*([^\\s\\)]+))?\\s*\\)/,\n RE_MQ_FEATURE = /^(?:(min|max)-)?(.+)/,\n RE_LENGTH_UNIT = /(em|rem|px|cm|mm|in|pt|pc)?$/,\n RE_RESOLUTION_UNIT = /(dpi|dpcm|dppx)?$/;\n\nfunction matchQuery(mediaQuery, values) {\n return parseQuery(mediaQuery).some(function (query) {\n var inverse = query.inverse;\n\n // Either the parsed or specified `type` is \"all\", or the types must be\n // equal for a match.\n var typeMatch = query.type === 'all' || values.type === query.type;\n\n // Quit early when `type` doesn't match, but take \"not\" into account.\n if ((typeMatch && inverse) || !(typeMatch || inverse)) {\n return false;\n }\n\n var expressionsMatch = query.expressions.every(function (expression) {\n var feature = expression.feature,\n modifier = expression.modifier,\n expValue = expression.value,\n value = values[feature];\n\n // Missing or falsy values don't match.\n if (!value) { return false; }\n\n switch (feature) {\n case 'orientation':\n case 'scan':\n return value.toLowerCase() === expValue.toLowerCase();\n\n case 'width':\n case 'height':\n case 'device-width':\n case 'device-height':\n expValue = toPx(expValue);\n value = toPx(value);\n break;\n\n case 'resolution':\n expValue = toDpi(expValue);\n value = toDpi(value);\n break;\n\n case 'aspect-ratio':\n case 'device-aspect-ratio':\n case /* Deprecated */ 'device-pixel-ratio':\n expValue = toDecimal(expValue);\n value = toDecimal(value);\n break;\n\n case 'grid':\n case 'color':\n case 'color-index':\n case 'monochrome':\n expValue = parseInt(expValue, 10) || 1;\n value = parseInt(value, 10) || 0;\n break;\n }\n\n switch (modifier) {\n case 'min': return value >= expValue;\n case 'max': return value <= expValue;\n default : return value === expValue;\n }\n });\n\n return (expressionsMatch && !inverse) || (!expressionsMatch && inverse);\n });\n}\n\nfunction parseQuery(mediaQuery) {\n return mediaQuery.split(',').map(function (query) {\n query = query.trim();\n\n var captures = query.match(RE_MEDIA_QUERY),\n modifier = captures[1],\n type = captures[2],\n expressions = captures[3] || '',\n parsed = {};\n\n parsed.inverse = !!modifier && modifier.toLowerCase() === 'not';\n parsed.type = type ? type.toLowerCase() : 'all';\n\n // Split expressions into a list.\n expressions = expressions.match(/\\([^\\)]+\\)/g) || [];\n\n parsed.expressions = expressions.map(function (expression) {\n var captures = expression.match(RE_MQ_EXPRESSION),\n feature = captures[1].toLowerCase().match(RE_MQ_FEATURE);\n\n return {\n modifier: feature[1],\n feature : feature[2],\n value : captures[2]\n };\n });\n\n return parsed;\n });\n}\n\n// -- Utilities ----------------------------------------------------------------\n\nfunction toDecimal(ratio) {\n var decimal = Number(ratio),\n numbers;\n\n if (!decimal) {\n numbers = ratio.match(/^(\\d+)\\s*\\/\\s*(\\d+)$/);\n decimal = numbers[1] / numbers[2];\n }\n\n return decimal;\n}\n\nfunction toDpi(resolution) {\n var value = parseFloat(resolution),\n units = String(resolution).match(RE_RESOLUTION_UNIT)[1];\n\n switch (units) {\n case 'dpcm': return value / 2.54;\n case 'dppx': return value * 96;\n default : return value;\n }\n}\n\nfunction toPx(length) {\n var value = parseFloat(length),\n units = String(length).match(RE_LENGTH_UNIT)[1];\n\n switch (units) {\n case 'em' : return value * 16;\n case 'rem': return value * 16;\n case 'cm' : return value * 96 / 2.54;\n case 'mm' : return value * 96 / 2.54 / 10;\n case 'in' : return value * 96;\n case 'pt' : return value * 72;\n case 'pc' : return value * 72 / 12;\n default : return value;\n }\n}\n","'use strict';\n\nvar staticMatch = require('css-mediaquery').match;\nvar dynamicMatch = typeof window !== 'undefined' ? window.matchMedia : null;\n\n// our fake MediaQueryList\nfunction Mql(query, values, forceStatic){\n var self = this;\n var mql;\n\n // matchMedia will return null in FF when it's called in a hidden iframe\n // ref: https://stackoverflow.com/a/12330568\n if(dynamicMatch && !forceStatic) mql = dynamicMatch.call(window, query);\n\n if (mql) {\n this.matches = mql.matches;\n this.media = mql.media;\n // TODO: is there a time it makes sense to remove this listener?\n mql.addListener(update);\n } else {\n this.matches = staticMatch(query, values);\n this.media = query;\n }\n\n this.addListener = addListener;\n this.removeListener = removeListener;\n this.dispose = dispose;\n\n function addListener(listener){\n if(mql){\n mql.addListener(listener);\n }\n }\n\n function removeListener(listener){\n if(mql){\n mql.removeListener(listener);\n }\n }\n\n // update ourselves!\n function update(evt){\n self.matches = evt.matches;\n self.media = evt.media;\n }\n\n function dispose(){\n if(mql){\n mql.removeListener(update);\n }\n }\n}\n\nfunction matchMedia(query, values, forceStatic){\n return new Mql(query, values, forceStatic);\n}\n\nmodule.exports = matchMedia;\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 * 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 * 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","/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\nexport default hyphenateStyleName\n","import { createContext, useRef, useEffect, useContext, useState } from 'react';\nimport matchMedia from 'matchmediaquery';\nimport hyphenate from 'hyphenate-style-name';\nimport { shallowEqualObjects } from 'shallow-equal';\nimport PropTypes from 'prop-types';\n\nconst stringOrNumber = PropTypes.oneOfType([PropTypes.string, PropTypes.number]);\n// media types\nconst types = {\n all: PropTypes.bool,\n grid: PropTypes.bool,\n aural: PropTypes.bool,\n braille: PropTypes.bool,\n handheld: PropTypes.bool,\n print: PropTypes.bool,\n projection: PropTypes.bool,\n screen: PropTypes.bool,\n tty: PropTypes.bool,\n tv: PropTypes.bool,\n embossed: PropTypes.bool\n};\n// properties that match media queries\nconst matchers = {\n orientation: PropTypes.oneOf(['portrait', 'landscape']),\n scan: PropTypes.oneOf(['progressive', 'interlace']),\n aspectRatio: PropTypes.string,\n deviceAspectRatio: PropTypes.string,\n height: stringOrNumber,\n deviceHeight: stringOrNumber,\n width: stringOrNumber,\n deviceWidth: stringOrNumber,\n color: PropTypes.bool,\n colorIndex: PropTypes.bool,\n monochrome: PropTypes.bool,\n resolution: stringOrNumber,\n type: Object.keys(types)\n};\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst { type, ...featureMatchers } = matchers;\n// media features\nconst features = {\n minAspectRatio: PropTypes.string,\n maxAspectRatio: PropTypes.string,\n minDeviceAspectRatio: PropTypes.string,\n maxDeviceAspectRatio: PropTypes.string,\n minHeight: stringOrNumber,\n maxHeight: stringOrNumber,\n minDeviceHeight: stringOrNumber,\n maxDeviceHeight: stringOrNumber,\n minWidth: stringOrNumber,\n maxWidth: stringOrNumber,\n minDeviceWidth: stringOrNumber,\n maxDeviceWidth: stringOrNumber,\n minColor: PropTypes.number,\n maxColor: PropTypes.number,\n minColorIndex: PropTypes.number,\n maxColorIndex: PropTypes.number,\n minMonochrome: PropTypes.number,\n maxMonochrome: PropTypes.number,\n minResolution: stringOrNumber,\n maxResolution: stringOrNumber,\n ...featureMatchers\n};\nconst all = { ...types, ...features };\nvar mq = {\n all: all,\n types: types,\n matchers: matchers,\n features: features\n};\n\nconst negate = (cond) => `not ${cond}`;\nconst keyVal = (k, v) => {\n const realKey = hyphenate(k);\n // px shorthand\n if (typeof v === 'number') {\n v = `${v}px`;\n }\n if (v === true) {\n return realKey;\n }\n if (v === false) {\n return negate(realKey);\n }\n return `(${realKey}: ${v})`;\n};\nconst join = (conds) => conds.join(' and ');\nconst toQuery = (obj) => {\n const rules = [];\n Object.keys(mq.all).forEach((k) => {\n const v = obj[k];\n if (v != null) {\n rules.push(keyVal(k, v));\n }\n });\n return join(rules);\n};\n\nconst Context = createContext(undefined);\n\nconst makeQuery = (settings) => settings.query || toQuery(settings);\nconst hyphenateKeys = (obj) => {\n if (!obj)\n return undefined;\n const keys = Object.keys(obj);\n return keys.reduce((result, key) => {\n result[hyphenate(key)] = obj[key];\n return result;\n }, {});\n};\nconst useIsUpdate = () => {\n const ref = useRef(false);\n useEffect(() => {\n ref.current = true;\n }, []);\n return ref.current;\n};\nconst useDevice = (deviceFromProps) => {\n const deviceFromContext = useContext(Context);\n const getDevice = () => hyphenateKeys(deviceFromProps) || hyphenateKeys(deviceFromContext);\n const [device, setDevice] = useState(getDevice);\n useEffect(() => {\n const newDevice = getDevice();\n if (!shallowEqualObjects(device, newDevice)) {\n setDevice(newDevice);\n }\n }, [deviceFromProps, deviceFromContext]);\n return device;\n};\nconst useQuery = (settings) => {\n const getQuery = () => makeQuery(settings);\n const [query, setQuery] = useState(getQuery);\n useEffect(() => {\n const newQuery = getQuery();\n if (query !== newQuery) {\n setQuery(newQuery);\n }\n }, [settings]);\n return query;\n};\nconst useMatchMedia = (query, device) => {\n const getMatchMedia = () => matchMedia(query, device || {}, !!device);\n const [mq, setMq] = useState(getMatchMedia);\n const isUpdate = useIsUpdate();\n useEffect(() => {\n if (isUpdate) {\n // skip on mounting, it has already been set\n const newMq = getMatchMedia();\n setMq(newMq);\n return () => {\n if (newMq) {\n newMq.dispose();\n }\n };\n }\n }, [query, device]);\n return mq;\n};\nconst useMatches = (mediaQuery) => {\n const [matches, setMatches] = useState(mediaQuery.matches);\n useEffect(() => {\n const updateMatches = (ev) => {\n setMatches(ev.matches);\n };\n mediaQuery.addListener(updateMatches);\n setMatches(mediaQuery.matches);\n return () => {\n mediaQuery.removeListener(updateMatches);\n };\n }, [mediaQuery]);\n return matches;\n};\nconst useMediaQuery = (settings, device, onChange) => {\n const deviceSettings = useDevice(device);\n const query = useQuery(settings);\n if (!query)\n throw new Error('Invalid or missing MediaQuery!');\n const mq = useMatchMedia(query, deviceSettings);\n const matches = useMatches(mq);\n const isUpdate = useIsUpdate();\n useEffect(() => {\n if (isUpdate && onChange) {\n onChange(matches);\n }\n }, [matches]);\n useEffect(() => () => {\n if (mq) {\n mq.dispose();\n }\n }, []);\n return matches;\n};\n\n// ReactNode and ReactElement typings are a little funky for functional components, so the ReactElement cast is needed on the return\nconst MediaQuery = ({ children, device, onChange, ...settings }) => {\n const matches = useMediaQuery(settings, device, onChange);\n if (typeof children === 'function') {\n return children(matches);\n }\n return matches ? children : null;\n};\n\nexport { Context, MediaQuery, MediaQuery as default, toQuery, useMediaQuery };\n//# sourceMappingURL=index.js.map\n","function shallowEqualArrays(arrA, arrB) {\n if (arrA === arrB) {\n return true;\n }\n if (!arrA || !arrB) {\n return false;\n }\n const len = arrA.length;\n if (arrB.length !== len) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n if (arrA[i] !== arrB[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction shallowEqualObjects(objA, objB) {\n if (objA === objB) {\n return true;\n }\n if (!objA || !objB) {\n return false;\n }\n const aKeys = Object.keys(objA);\n const bKeys = Object.keys(objB);\n const len = aKeys.length;\n if (bKeys.length !== len) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n const key = aKeys[i];\n if (objA[key] !== objB[key] || !Object.prototype.hasOwnProperty.call(objB, key)) {\n return false;\n }\n }\n return true;\n}\n\nfunction shallowEqual(a, b) {\n const aIsArr = Array.isArray(a);\n const bIsArr = Array.isArray(b);\n if (aIsArr !== bIsArr) {\n return false;\n }\n if (aIsArr && bIsArr) {\n return shallowEqualArrays(a, b);\n }\n return shallowEqualObjects(a, b);\n}\n\nexport { shallowEqual, shallowEqualArrays, shallowEqualObjects };\n//# sourceMappingURL=index.modern.mjs.map\n","/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__6243__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5053__;","module.exports = __WEBPACK_EXTERNAL_MODULE__338__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4456__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4883__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5953__;","module.exports = __WEBPACK_EXTERNAL_MODULE__2148__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4442__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1954__;","module.exports = __WEBPACK_EXTERNAL_MODULE__2247__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import React from \"react\";\nimport { Routes, Route, useLocation, useNavigate } from \"react-router-dom\";\nimport { Navigate } from \"react-router-dom\";\nimport { lazyWithFallback } from \"@egovernments/digit-ui-components\";\n\n// Create lazy components with fallbacks using the utility\nconst CitizenApp = lazyWithFallback(\n () => import(/* webpackChunkName: \"citizen-app\" */ \"./pages/citizen\"),\n () => require(\"./pages/citizen\").default,\n { loaderText: \"CORE_LOADING_CITIZEN_APP\" }\n);\n\nconst EmployeeApp = lazyWithFallback(\n () => import(/* webpackChunkName: \"employee-app\" */ \"./pages/employee\"),\n () => require(\"./pages/employee\").default,\n { loaderText: \"CORE_LOADING_EMPLOYEE_APP\" }\n);\n\nconst SignUp = lazyWithFallback(\n () => import(/* webpackChunkName: \"sign-up\" */ \"./pages/employee/SignUp\"),\n () => require(\"./pages/employee/SignUp\").default,\n { loaderText: \"CORE_LOADING_SIGN_UP\" }\n);\n\nconst Otp = lazyWithFallback(\n () => import(/* webpackChunkName: \"otp\" */ \"./pages/employee/Otp\"),\n () => require(\"./pages/employee/Otp\").default,\n { loaderText: \"CORE_LOADING_OTP\" }\n);\n\nconst ViewUrl = lazyWithFallback(\n () => import(/* webpackChunkName: \"view-url\" */ \"./pages/employee/ViewUrl\"),\n () => require(\"./pages/employee/ViewUrl\").default,\n { loaderText: \"CORE_LOADING_VIEW_URL\" }\n);\n\nconst CustomErrorComponent = lazyWithFallback(\n () => import(/* webpackChunkName: \"custom-error\" */ \"./components/CustomErrorComponent\"),\n () => require(\"./components/CustomErrorComponent\").default,\n { loaderText: \"CORE_LOADING_ERROR_COMPONENT\" }\n);\n\nconst DummyLoaderScreen = lazyWithFallback(\n () => import(/* webpackChunkName: \"dummy-loader\" */ \"./components/DummyLoader\"),\n () => require(\"./components/DummyLoader\").default,\n { loaderText: \"CORE_LOADING\" }\n);\n\nexport const DigitApp = ({ stateCode, modules, appTenants, logoUrl, logoUrlWhite, initData, defaultLanding = \"citizen\", allowedUserTypes = [\"citizen\", \"employee\"] }) => {\n const navigate = useNavigate();\n const { pathname } = useLocation();\n const innerWidth = window.innerWidth;\n const cityDetails = Digit.ULBService.getCurrentUlb();\n const userDetails = Digit.UserService.getUser();\n const { data: storeData } = Digit.Hooks.useStore.getInitData();\n const { stateInfo } = storeData || {};\n\n const DSO = Digit.UserService.hasAccess([\"FSM_DSO\"]);\n let CITIZEN = userDetails?.info?.type === \"CITIZEN\" || !window.location.pathname.split(\"/\").includes(\"employee\") ? true : false;\n\n if (window.location.pathname.split(\"/\").includes(\"employee\")) CITIZEN = false;\n\n const handleUserDropdownSelection = (option) => {\n option.func();\n };\n\n const mobileView = innerWidth <= 640;\n let sourceUrl = `${window.location.origin}/citizen`;\n const commonProps = {\n stateInfo,\n userDetails,\n CITIZEN,\n cityDetails,\n mobileView,\n handleUserDropdownSelection,\n logoUrl,\n logoUrlWhite,\n DSO,\n stateCode,\n modules,\n appTenants,\n sourceUrl,\n pathname,\n initData,\n };\n\n return (\n <Routes>\n {allowedUserTypes?.includes(\"employee\") && (\n <Route path={`/${window?.contextPath}/employee/*`} element={<EmployeeApp {...commonProps} />} />\n )}\n {allowedUserTypes?.includes(\"citizen\") && (\n <Route path={`/${window?.contextPath}/citizen/*`} element={<CitizenApp {...commonProps} />} />\n )}\n {allowedUserTypes?.includes(\"employee\") && (\n <Route path={`/${window?.contextPath}/no-top-bar/employee`} element={<EmployeeApp {...commonProps} noTopBar />} />\n )}\n <Route path=\"*\" element={<Navigate to={`/${window?.contextPath}/${defaultLanding}`} />} />\n </Routes>\n );\n};\n\nexport const DigitAppWrapper = ({ stateCode, modules, appTenants, logoUrl, logoUrlWhite, initData, defaultLanding = \"citizen\" ,allowedUserTypes}) => {\n // const globalPath = window?.globalConfigs?.getConfig(\"CONTEXT_PATH\") || \"digit-ui\";\n const { data: storeData } = Digit.Hooks.useStore.getInitData();\n const { stateInfo } = storeData || {};\n const userScreensExempted = [\"user/error\"];\n const isUserProfile = userScreensExempted.some((url) => location?.pathname?.includes(url));\n const userDetails = Digit.UserService.getUser();\n let CITIZEN = userDetails?.info?.type === \"CITIZEN\" || !window.location.pathname.split(\"/\").includes(\"employee\") ? true : false;\n const innerWidth = window.innerWidth;\n const mobileView = innerWidth <= 640;\n\n return (\n <div\n className={isUserProfile ? \"grounded-container\" : \"loginContainer\"}\n style={\n isUserProfile ? { padding: 0, paddingTop: CITIZEN ? \"0\" : mobileView && !CITIZEN ? \"3rem\" : \"80px\", marginLeft: CITIZEN || mobileView ? \"0\" : \"40px\" } : { \"--banner-url\": `url(${stateInfo?.bannerUrl})`, padding: \"0px\" }\n }\n >\n <Routes>\n <Route path={`/${window?.globalPath}/user/invalid-url`} element={<CustomErrorComponent />} />\n <Route path={`/${window?.globalPath}/user/sign-up`} element={<SignUp stateCode={stateCode} />} />\n <Route path={`/${window?.globalPath}/user/otp`} element={<Otp />} />\n <Route path={`/${window?.globalPath}/user/setup`} element={<DummyLoaderScreen />} />\n <Route path={`/${window?.globalPath}/user/url`} element={<ViewUrl />} />\n {window?.globalPath !== window?.contextPath && (\n <Route\n path={`/${window?.contextPath}/*`}\n element={\n <DigitApp\n stateCode={stateCode}\n modules={modules}\n appTenants={appTenants}\n logoUrl={logoUrl}\n logoUrlWhite={logoUrlWhite}\n initData={initData}\n defaultLanding={defaultLanding}\n allowedUserTypes={allowedUserTypes}\n />\n }\n />\n )}\n <Route path=\"*\" element={<Navigate to={`/${window?.globalPath}/user/sign-up`} />} />\n </Routes>\n </div>\n );\n};","import { applyMiddleware, combineReducers, compose, createStore } from \"redux\";\nimport thunk from \"redux-thunk\";\nimport { commonReducer } from \"./reducers\";\n\nconst getRootReducer = (defaultStore, moduleReducers) =>\n combineReducers({\n common: commonReducer(defaultStore),\n ...moduleReducers,\n });\n\nconst middleware = [thunk];\n\nconst composeEnhancers =\n process.env.NODE_ENV === 'development' && typeof window === \"object\" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ \n ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({}) \n : compose;\n\nconst enhancer = composeEnhancers(\n applyMiddleware(...middleware)\n // other store enhancers if any\n);\n\nconst getStore = (defaultStore, moduleReducers = {}) => {\n return createStore(getRootReducer(defaultStore, moduleReducers), enhancer);\n};\nexport default getStore;\n","export const commonReducer = (defaultData) => (state = defaultData, action) => {\n switch (action.type) {\n case \"LANGUAGE_SELECT\":\n return { ...state, selectedLanguage: action.payload };\n default:\n return state;\n }\n};\n","import React, { useState, useEffect, Fragment } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { CheckBox, PopUp, Button, HeaderComponent } from \"@egovernments/digit-ui-components\";\nimport { LinkButton } from \"@egovernments/digit-ui-react-components\";\n\nconst PrivacyComponent = ({ onSelect, formData, control, formState, ...props }) => {\n const { t } = useTranslation();\n const tenantId = Digit.ULBService.getCurrentTenantId();\n const [isChecked, setIsChecked] = useState(false);\n const [showPopUp, setShowPopUp] = useState(false);\n const moduleName=Digit.Utils.getConfigModuleName();\n \n const { data: privacy } = Digit.Hooks.useCustomMDMS(tenantId, moduleName, [{ name: \"PrivacyPolicy\" }], {\n select: (data) => {\n const filteredPrivacyPolicy = data?.[moduleName]?.PrivacyPolicy?.find(policy => policy.module === props?.props?.module);\n return filteredPrivacyPolicy;\n },\n });\n const handleCheckboxChange = (event) => {\n setIsChecked(event.target.checked);\n };\n useEffect(() => {\n onSelect(\"check\", isChecked);\n }, [isChecked]);\n const onButtonClick = () => {\n setShowPopUp(true);\n };\n\n const handleScrollToElement = (id) => {\n const element = document.getElementById(id);\n if (element) {\n element.scrollIntoView({ behavior: \"smooth\" });\n }\n };\n\n return (\n <React.Fragment>\n <div className=\"digit-privacy-checkbox digit-privacy-checkbox-align\">\n <CheckBox label={t(\"ES_BY_CLICKING\")} checked={isChecked} onChange={handleCheckboxChange} id={\"privacy-component-check\"}></CheckBox>\n <Button\n label={t(`ES_PRIVACY_POLICY`)}\n variation={\"link\"}\n size={\"small\"}\n onClick={onButtonClick}\n // isSuffix={true}\n style={{ marginBottom: \"1rem\", paddingLeft: \"0.2rem\" }}\n ></Button>\n </div>\n {showPopUp && (\n <PopUp\n type={\"default\"}\n className={\"privacy-popUpClass\"}\n footerclassName={\"popUpFooter\"}\n heading={t(privacy?.header)}\n onOverlayClick={() => {\n setShowPopUp(false);\n }}\n footerChildren={[\n <Button\n type={\"button\"}\n size={\"large\"}\n variation={\"secondary\"}\n label={t(\"DIGIT_I_DO_NOT_ACCEPT\")}\n onClick={() => {\n setIsChecked(false), setShowPopUp(false);\n }}\n />,\n <Button\n type={\"button\"}\n size={\"large\"}\n variation={\"primary\"}\n label={t(\"DIGIT_I_ACCEPT\")}\n className={\"accept-class\"}\n onClick={() => {\n setIsChecked(true), setShowPopUp(false);\n }}\n />,\n ]}\n sortFooterChildren={true}\n onClose={() => {\n setShowPopUp(false);\n }}\n >\n <div>\n <div className=\"privacy-table\">{t(\"DIGIT_TABLE_OF_CONTENTS\")}</div>\n <ul>\n {privacy?.contents.map((content, index) => (\n <li key={index} style={{ display: \"flex\", alignItems: \"center\" }}>\n <span style={{ marginRight: \"0.5rem\" }}>{index + 1}. </span>\n <Button\n label={t(content.header)}\n variation={\"link\"}\n size={\"medium\"}\n onClick={(e) => {\n e.preventDefault();\n handleScrollToElement(content?.header);\n }}\n style={{justifyContent: \"flex-start\"}}\n ></Button>\n </li>\n ))}\n </ul>\n </div>\n {privacy?.contents.map((content, index) => (\n <div key={index} id={content?.header}>\n <div\n style={{\n fontWeight: 'bold',\n paddingLeft: content?.isSpaceRequired ? \"1rem\" : \"0\",\n }}\n >\n {t(content.header)}\n </div>\n {content.descriptions.map((description, subIndex) => (\n <div key={subIndex} style={{ paddingLeft: description.isSpaceRequired ? \"1rem\" : \"0\" , marginBottom: '0.5rem'}}>\n <div\n style={{\n fontWeight: description?.isBold ? 700 : 400,\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n {description.type === 'points' && (\n <span style={{ marginRight: '0.5rem', listStyleType: 'disc' }}>•</span>\n )}\n {description.type === 'step' && (\n <span style={{ marginRight: '0.5rem', listStyleType: 'decimal' }}>{subIndex + 1}. </span>\n )}\n {t(description.text)}\n </div>\n {description?.subDescriptions && description?.subDescriptions.length > 0 && (\n <div className=\"policy-subdescription\">\n {description.subDescriptions.map((subDesc, subSubIndex) => (\n <div key={subSubIndex} className=\"policy-subdescription-points\">\n {subDesc.type === 'points' && (\n <span style={{ marginRight: '0.5rem', listStyleType: 'disc' , paddingLeft: '1rem'}}>•</span>\n )}\n {subDesc.type === 'step' && (\n <span style={{ marginRight: '0.5rem', listStyleType: 'decimal' , paddingLeft: '1rem'}}>{subSubIndex + 1}. </span>\n )}\n {subDesc.type === null && (\n <span style={{ marginRight: '0.5rem', paddingLeft: '1rem'}}> </span>\n )}\n {t(subDesc.text)}\n </div>\n ))}\n </div>\n )}\n </div>\n ))}\n </div>\n ))}\n </PopUp>\n )}\n </React.Fragment>\n );\n};\n\nexport default PrivacyComponent;\n","import React, { useState, useEffect, useRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Button } from \"@egovernments/digit-ui-components\";\n\nconst ForgotOrganizationTooltip = ({ onSelect }) => {\n const { t } = useTranslation();\n const [showTip, setShowTip] = useState(false);\n const wrapperRef = useRef(null);\n\n useEffect(() => {\n const handleClickOutside = (event) => {\n if (wrapperRef.current && !wrapperRef.current.contains(event.target)) {\n setShowTip(false);\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n return (\n <div ref={wrapperRef} className=\"loginSignUpSelector\" style={{ position: \"relative\", marginTop: \"-2rem\" }}>\n <Button\n label={t(`SB_FORGOTORGANIZATION_TOOLTIP`)}\n variation={\"link\"}\n size={\"small\"}\n onClick={() => setShowTip((prev) => !prev)}\n // isSuffix={true}\n style={{ marginBottom: \"0.5rem\", paddingLeft: \"0.2rem\" }}\n ></Button>\n {showTip && (\n <div\n style={{\n position: \"absolute\",\n bottom: \"100%\",\n left: \"50%\",\n transform: \"translateY(-4px)\",\n backgroundColor: \"#0b4b66\",\n color: \"white\",\n padding: \"6px 10px\",\n borderRadius: \"4px\",\n whiteSpace: \"normal\",\n wordBreak: \"break-word\",\n maxWidth: \"20rem\",\n zIndex: 1000,\n fontSize: \"0.875rem\"\n }}\n >\n {t(\"SB_FORGOTORGANIZATION_TOOLTIP_TEXT\")}\n </div>\n )}\n </div>\n );\n};\n\nexport default ForgotOrganizationTooltip;\n","import React from \"react\";\nimport { Button } from \"@egovernments/digit-ui-components\";\n\nconst EmployeeSSOLoginOptions = ({ t, props }) => {\n const { ssoConfigs = [] } = props || {};\n\n if (!ssoConfigs?.length) {\n return null;\n }\n\n const hasMultipleOptions = ssoConfigs.length > 1;\n\n return (\n <div className=\"employee-login-sso\">\n <div className=\"employee-login-sso-divider\">\n <span>{hasMultipleOptions ? t(\"CORE_COMMON_OR_SIGN_IN_WITH\") : t(\"CORE_COMMON_OR\")}</span>\n </div>\n {hasMultipleOptions ? (\n <div className=\"employee-login-sso-icons\">\n {ssoConfigs.map((sso, index) => (\n <Button\n key={sso.id || sso.provider || index}\n label=\"\"\n variation=\"secondary\"\n size=\"large\"\n icon={sso.icon}\n className={`employee-login-sso-icon ${sso.provider?.toLowerCase() || \"provider\"}-login-icon`}\n onClick={() => sso.onLogin?.(sso)}\n title={t(sso.label)}\n ariaLabel={t(sso.label)}\n style={{width:\"100%\"}}\n />\n ))}\n </div>\n ) : (\n ssoConfigs.map((sso, index) => (\n <Button\n key={sso.id || sso.provider || index}\n label={t(sso.label)}\n variation=\"primary\"\n size=\"large\"\n icon={sso.icon}\n className={`employee-login-sso-button ${sso.provider?.toLowerCase() || \"provider\"}-login-btn`}\n onClick={() => sso.onLogin?.(sso)}\n style={{width:\"100%\"}}\n />\n ))\n )}\n </div>\n );\n};\n\nexport default EmployeeSSOLoginOptions;\n","import { BodyContainer } from \"@egovernments/digit-ui-components\";\nimport { Loader } from \"@egovernments/digit-ui-components\";\nimport React from \"react\";\nimport { getI18n } from \"react-i18next\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport { Provider } from \"react-redux\";\nimport { BrowserRouter as Router } from \"react-router-dom\";\nimport { DigitApp, DigitAppWrapper } from \"./App\";\nimport SelectOtp from \"./pages/citizen/Login/SelectOtp\";\nimport ChangeCity from \"./components/ChangeCity\";\nimport ChangeLanguage from \"./components/ChangeLanguage\";\nimport { useState, useMemo, useCallback } from \"react\";\nimport ErrorBoundary from \"./components/ErrorBoundaries\";\nimport getStore from \"./redux/store\";\nimport PrivacyComponent from \"./components/PrivacyComponent\";\nimport OtpComponent from \"./pages/employee/Otp/OtpCustomComponent\";\nimport LoginSignupSelector from \"./components/LoginSignupSelector\";\nimport ForgotOrganizationTooltip from \"./components/ForgotOrganizationTooltip\";\nimport EmployeeSSOLoginOptions from \"./components/EmployeeSSOLoginOptions\";\n\n// Create QueryClient instance outside component to prevent recreation\nconst createQueryClient = () => new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: 15 * 60 * 1000,\n gcTime: 50 * 60 * 1000,\n retry: false,\n retryDelay: (attemptIndex) => Infinity,\n /*\n enable this to have auto retry incase of failure\n retryDelay: attemptIndex => Math.min(1000 * 3 ** attemptIndex, 60000)\n */\n },\n },\n});\n\nconst DigitUIWrapper = ({ stateCode, enabledModules, defaultLanding,allowedUserTypes }) => {\n const { isLoading, data: initData={} } = Digit.Hooks.useInitStore(stateCode, enabledModules);\n if (isLoading) {\n return <Loader page={true} variant={\"PageLoader\"} />;\n }\n const data=getStore(initData) || {};\n const i18n = getI18n();\n if(!Digit.ComponentRegistryService.getComponent(\"PrivacyComponent\")){\n Digit.ComponentRegistryService.setComponent(\"PrivacyComponent\", PrivacyComponent);\n }\n if(!Digit.ComponentRegistryService.getComponent(\"EmployeeSSOLoginOptions\")){\n Digit.ComponentRegistryService.setComponent(\"EmployeeSSOLoginOptions\", EmployeeSSOLoginOptions);\n }\n return (\n <Provider store={data}>\n <Router>\n <BodyContainer>\n {Digit.Utils.getMultiRootTenant() ? (\n <DigitAppWrapper\n initData={initData}\n stateCode={stateCode}\n modules={initData?.modules}\n appTenants={initData.tenants}\n logoUrl={initData?.stateInfo?.logoUrl}\n logoUrlWhite={initData?.stateInfo?.logoUrlWhite}\n defaultLanding={defaultLanding}\n allowedUserTypes={allowedUserTypes}\n />\n ) : (\n <DigitApp\n initData={initData}\n stateCode={stateCode}\n modules={initData?.modules}\n appTenants={initData.tenants}\n logoUrl={initData?.stateInfo?.logoUrl}\n defaultLanding={defaultLanding}\n allowedUserTypes={allowedUserTypes}\n />\n )}\n </BodyContainer>\n </Router>\n </Provider>\n );\n};\n\n/**\n * DigitUI Component - The main entry point for the UI.\n *\n * @param {Object} props - The properties passed to the component.\n * @param {string} props.stateCode - The state code for the application.\n * @param {Object} props.registry - The registry object containing components registrations.\n * @param {Array<string>} props.enabledModules - A list of enabled modules, if any modules to be disabled due to some condition.\n * @param {Object} props.moduleReducers - Reducers associated with enabled modules.\n * @param {string} props.defaultLanding - The default landing page (e.g., \"employee\", \"citizen\"), default is citizen.\n * @param {Array<string>} props.allowedUserTypes - A list of allowed user types (e.g., [\"employee\", \"citizen\"]) if any restriction to be applied, and default is both employee & citizen.\n * \n * @author jagankumar-egov\n *\n * @example\n * <DigitUI\n * stateCode=\"pg\"\n * registry={registry}\n * enabledModules={[\"Workbench\", \"PGR\"]}\n * defaultLanding=\"employee\"\n * allowedUserTypes={[\"employee\", \"citizen\"]}\n * moduleReducers={moduleReducers}\n * />\n */\nexport const DigitUI = ({ stateCode, registry, enabledModules, defaultLanding,allowedUserTypes }) => {\n // Memoize initial privacy state to prevent unnecessary re-renders\n const initialPrivacy = useMemo(() => Digit.Utils.getPrivacyObject() || {}, []);\n const [privacy, setPrivacy] = useState(initialPrivacy);\n \n const userType = Digit.UserService.getType();\n \n // Use memoized QueryClient to prevent recreation on every render\n const queryClient = useMemo(() => createQueryClient(), []);\n\n const ComponentProvider = Digit.Contexts.ComponentProvider;\n const PrivacyProvider = Digit.Contexts.PrivacyProvider;\n\n const DSO = Digit.UserService.hasAccess([\"FSM_DSO\"]);\n\n // Memoize privacy context methods to prevent unnecessary re-renders\n const resetPrivacy = useCallback((_data) => {\n Digit.Utils.setPrivacyObject({});\n setPrivacy({});\n }, []);\n\n const getPrivacy = useCallback(() => {\n const privacyObj = Digit.Utils.getPrivacyObject();\n setPrivacy(privacyObj);\n return privacyObj;\n }, []);\n\n const updatePrivacyDescoped = useCallback((_data) => {\n const privacyObj = Digit.Utils.getAllPrivacyObject();\n // Safely access pathname with fallback\n const pathname = typeof window !== 'undefined' ? window.location.pathname : '';\n const newObj = { ...privacyObj, [pathname]: _data };\n Digit.Utils.setPrivacyObject({ ...newObj });\n setPrivacy(privacyObj?.[pathname] || {});\n }, []);\n\n const updatePrivacy = useCallback((uuid, fieldName) => {\n setPrivacy(Digit.Utils.updatePrivacy(uuid, fieldName) || {});\n }, []);\n\n // Memoize privacy context value to prevent unnecessary re-renders\n const privacyContextValue = useMemo(() => ({\n privacy: typeof window !== 'undefined' ? privacy?.[window.location.pathname] : privacy,\n resetPrivacy,\n getPrivacy,\n updatePrivacyDescoped,\n updatePrivacy,\n }), [privacy, resetPrivacy, getPrivacy, updatePrivacyDescoped, updatePrivacy]);\n\n return (\n <div>\n <ErrorBoundary>\n <QueryClientProvider client={queryClient}>\n <ComponentProvider.Provider value={registry}>\n <PrivacyProvider.Provider value={privacyContextValue}>\n <DigitUIWrapper stateCode={stateCode} enabledModules={enabledModules} defaultLanding={defaultLanding} allowedUserTypes={allowedUserTypes} />\n </PrivacyProvider.Provider>\n </ComponentProvider.Provider>\n </QueryClientProvider>\n </ErrorBoundary>\n </div>\n );\n};\n\nconst componentsToRegister = {\n SelectOtp,\n ChangeCity,\n ChangeLanguage,\n PrivacyComponent,\n OtpComponent,\n ForgotOrganizationTooltip,\n LoginSignupSelector,\n EmployeeSSOLoginOptions\n};\n\nexport const initCoreComponents = () => {\n // Ensure hooks introduced in newer libraries versions are always available.\n // Old deployments (e.g. digit-ui-libraries@1.8.8) won't have useSSOConfig,\n // so we register a no-op fallback so login.js never crashes with \"not a function\".\n if (!Digit.Hooks.useSSOConfig) {\n Digit.Hooks.useSSOConfig = () => ({ data: [], isLoading: false });\n }\n Object.entries(componentsToRegister).forEach(([key, value]) => {\n Digit.ComponentRegistryService.setComponent(key, value);\n });\n};\n","import React, { Fragment, useState } from \"react\";\nimport { CardText, CardLabelError, Toast, CardLabel } from \"@egovernments/digit-ui-components\";\nimport { OTPInput } from \"@egovernments/digit-ui-react-components\";\nimport { useTranslation } from \"react-i18next\";\nimport { useLocation } from \"react-router-dom\";\nimport useInterval from \"../../../hooks/useInterval\";\nimport Background from \"../../../components/Background\";\nimport { useEffect } from \"react\";\n\nconst OtpComponent = ({ onSelect, formData, control, formState, ...props }) => {\n const { t } = useTranslation();\n const location = useLocation();\n const [showToast, setShowToast] = useState(null);\n const [params, setParams] = useState({});\n const [isOtpValid, setIsOtpValid] = useState(true);\n const [timeLeft, setTimeLeft] = useState(30);\n\n const closeToast = () => {\n setShowToast(null);\n };\n\n useInterval(\n () => {\n setTimeLeft(timeLeft - 1);\n },\n timeLeft > 0 ? 1000 : null\n );\n\n const handleOtpChange = (otp) => {\n setParams({ ...params, otp });\n };\n\n useEffect(() => {\n onSelect(\"OtpComponent\", params);\n }, [params]);\n\n const reqCreate = {\n url: `/user-otp/v1/_send`,\n params: { tenantId: props?.props?.code },\n body: {},\n config: {\n enable: false,\n },\n };\n const mutation = Digit.Hooks.useCustomAPIMutationHook(reqCreate);\n\n const resendOtp = async () => {\n setTimeLeft(30);\n await mutation.mutate(\n {\n body: {\n \"otp\": {\n \"userName\": props?.props?.email,\n \"type\": \"login\",\n \"tenantId\": props?.props?.tenant,\n \"userType\": \"EMPLOYEE\"\n }\n },\n config: {\n enable: true,\n },\n },\n {\n onError: (error, variables) => {\n setShowToast({\n key: \"error\",\n label: error?.response?.data?.Errors?.[0].code\n ? `SANDBOX_RESEND_OTP${error?.response?.data?.Errors?.[0]?.code}`\n : `SANDBOX_RESEND_OTP_ERROR`,\n });\n setTimeout(closeToast, 5000);\n },\n onSuccess: async (data) => {\n setShowToast({ key: \"info\", label: t(\"OTP_RESNED_SUCCESFULL\") });\n setTimeout(closeToast, 5000);\n },\n }\n );\n };\n\n return (\n <>\n <CardLabel className={\"sandbox-custom-otp-subheader\"}>{t(\"SANDBOX_ENTER_OTP\")}</CardLabel>\n <CardLabel className={\"sandbox-custom-otp-header\"} >{t(\"CS_OTP_EMAIL\")}</CardLabel>\n <CardLabel className={\"sandbox-custom-otp-email\"} style={{fontWeight: 'bold'}}>{props?.props?.email}</CardLabel>\n <OTPInput className={\"sandbox-otp-input\"} length={6} onChange={handleOtpChange} value={params?.otp} />\n {timeLeft > 0 ? (\n <CardText className={\"sandbox-resend-otp\"}>{`${t(\"CS_RESEND_ANOTHER_OTP\")} ${timeLeft} ${t(\"CS_RESEND_SECONDS\")}`}</CardText>\n ) : (\n <p className=\"card-text-button sandbox-otp-input\" onClick={resendOtp}>\n {t(\"CS_RESEND_OTP\")}\n </p>\n )}\n {!isOtpValid && <CardLabelError>{t(\"CS_INVALID_OTP\")}</CardLabelError>}\n {showToast && <Toast type={showToast?.key} label={t(showToast?.label)} onClose={closeToast} />}\n </>\n );\n};\n\nexport default OtpComponent;\n","import React, { useState, useEffect, Fragment } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { CheckBox, PopUp, Button, HeaderComponent } from \"@egovernments/digit-ui-components\";\nconst LoginSignupSelector = ({ onSelect, formData, control, formState, ...props }) => {\n const { t } = useTranslation();\n const [isChecked, setIsChecked] = useState(true);\n\n\n useEffect(() => {\n onSelect(\"check\", isChecked);\n }, [isChecked]);\n const onButtonClickLogin = () => {\n window.location.replace(`/${window?.contextPath}/user/login`);\n };\n\n const onButtonClickSignUP = () => {\n window.location.replace(`/${window?.contextPath}/user/sign-up`);\n };\n\n const isSignupPage = window.location.href.includes(\"sandbox-ui/user/sign-up\");\n return (\n <React.Fragment>\n <div className=\"loginSignUpSelector\" style={{ marginTop: '-2rem' }}>\n {\n isSignupPage ?\n <Button\n label={t(`SB_ALREADY_HAVE_ACCOUNT`)}\n variation={\"link\"}\n size={\"small\"}\n onClick={onButtonClickLogin}\n // isSuffix={true}\n style={{ marginBottom: \"0.5rem\", paddingLeft: \"0.2rem\" }}\n ></Button> :\n <Button\n label={t(`SB_DONT_HAVE_ACCOUNT`)}\n variation={\"link\"}\n size={\"small\"}\n onClick={onButtonClickSignUP}\n // isSuffix={true}\n style={{ marginBottom: \"0.5rem\", paddingLeft: \"0.2rem\" }}\n ></Button>\n\n }\n\n </div>\n </React.Fragment>\n );\n};\n\nexport default LoginSignupSelector;\n"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE__6243__","__WEBPACK_EXTERNAL_MODULE__4883__","__WEBPACK_EXTERNAL_MODULE__5953__","__WEBPACK_EXTERNAL_MODULE__4456__","__WEBPACK_EXTERNAL_MODULE__2148__","__WEBPACK_EXTERNAL_MODULE__4442__","__WEBPACK_EXTERNAL_MODULE__338__","__WEBPACK_EXTERNAL_MODULE__5053__","__WEBPACK_EXTERNAL_MODULE__1954__","__WEBPACK_EXTERNAL_MODULE__2247__","__WEBPACK_DEFAULT_EXPORT__","_ref","children","_jsx","className","stringReplaceAll","str","arguments","length","undefined","searcher","replaceWith","_str","includes","_str2","replace","prop","_selectCityData$","_stringReplaceAll2","_useState2","_slicedToArray","useState","dropDownData","setDropDownData","_useState4","selectCityData","setSelectCityData","_useState6","navigate","useNavigate","isMultiRootTenant","dropdown","Digit","Utils","getMultiRootTenant","useEffect","_userloggedValues$inf","userloggedValues","SessionStorage","get","teantsArray","filteredArray","info","roles","forEach","role","push","tenantId","unique","filter","item","i","ar","indexOf","uniCode","_stringReplaceAll","label","concat","toUpperCase","value","select","style","mobileView","color","CardText","Dropdown","t","option","selected","find","cityValue","optionKey","city","_Digit$SessionStorage","_window$location","_window","loggedInData","filteredRoles","set","UserService","setUser","window","location","href","contextPath","_location$state","_window2","redirectPath","state","from","reload","error","console","warn","freeze","customSelector","_languages$find","isDropdown","_Digit$Hooks$useStore","Hooks","useStore","getInitData","storeData","data","isLoading","languages","stateInfo","useTranslation","selectedLanguage","StoreData","getCurrentLanguage","setselected","handleChangeLanguage","language","LocalizationService","changeLanguage","code","_jsxs","React","marginBottom","map","index","Button","onClick","variation","props","useLocation","config","imgUrl","infoHeader","infoMessage","buttonInfo","action","globalPath","Background","Card","Header","showTenant","CardHeader","isSuffix","e","preventDefault","onSelect","onCancel","onDismiss","PopupStyles","isDisabled","hideSubmit","footer","type","size","formId","footerWithoutSubmit","PopUp","heading","footerChildren","sortFooterButtons","onClose","onOverlayClick","equalWidthButtons","DummyLoaderScreen","currentStep","setCurrentStep","tenant","steps","stepInterval","setInterval","prev","clearInterval","navigateTimeout","setTimeout","_window3","roleForLandingPage","getUserRoles","MdmsRes","pathname","RoleLandingUrl","clearTimeout","useRef","setButtonDisabled","useCustomMDMS","name","enabled","staleTime","cacheTime","_data$SandBoxLanding","url","_getUserRoles$","some","page","rolesForLandingPage","step","CheckCircle","fill","moduleCode","stateCode","userType","tenants","_ref$maxRetries","maxRetries","_ref$retryDelay","retryDelay","_ref$initialDelay","initialDelay","loading","retryCount","initialDelayComplete","moduleState","setModuleState","retryTimeout","initialTimeout","loadModule","_ref2","Module","ComponentRegistryService","getComponent","_objectSpread","delay","Math","pow","message","apply","loadingText","defaultValue","Loader","variant","loaderText","textAlign","marginTop","Navigate","to","encodeURIComponent","Redircter","getType","path","currentHref","navigationError","replaceError","ErrorBoundary","constructor","super","errorStack","hasError","getDerivedStateFromError","stack","componentDidCatch","errorInfo","setState","render","ErrorComponent","initData","errorData","goToHome","_Digit","_Digit$getType","call","ErrorConfig","maintenance","notfound","ModuleBasedErrorConfig","sandbox","_props$errorData","_Digit$Hooks$useQuery2","useQueryParams","ImageComponent","src","alt","_props$errorData2","_props$goToHome","_stateInfo$code","_ref$showTenant","headerSvgSecondaryUrl","globalConfigs","getConfig","logoUrl","borderRight","fontSize","Components","RoleBasedEmployeeHome","modules","additionalComponent","_Object$keys","sortedConfigEmployeesSidebar","_Digit$Hooks$useAcces","useAccessControl","ULBService","getStateId","mdmsOrderData","setMdmsOrderData","_Digit$Hooks$useCusto","_data$HomeScreenOrder","_Digit$Hooks$useCusto2","moduleConfigData","getLinkByType","moduleData","moduleConfig","moduleName","linkKey","links","displayName","getFilteredLinks","_moduleData$links","isNotConfigureMaster","isNotHowItWorks","howItWorksLink","isNotUserManual","userManualLink","configEmployeeSideBar","actions","parentModule","reduce","acc","kpis","icon","leftIcon","iconRender","iconName","iconFill","CustomSVG","digit_ui_components_","locale","getTransformedLocale","linkUrl","_url","transformURL","navigationURL","queryParamIndex","link","queryParams","substring","Object","keys","sort","a","b","_mdmsOrderData$find","_mdmsOrderData$find2","moduleType","order","_configEmployeeSideBa","sortedLinks","linkA","linkB","_mdmsOrderData$find3","_mdmsOrderData$find4","labelA","labelB","sortCardAndLink","current","_sortedConfigEmployee","_moduleData$links2","configureData","howItWorks","userManual","propsForModuleCard","metrics","centreChildren","open","padding","endChildren","LandingPageCard","buttonSize","_Fragment","LandingPageWrapper","child","FaqComponent","question","isLabelLink","answer","content","lastIndex","isOpen","toggleOpen","ListTag","justifyContent","display","float","ArrowForward","CardSectionSubText","listStyleType","margin","fulllink","baseURL","hostname","description","CardC","title","CardSectionHeader","FAQ","key","faqs","width","faq","QuickStart_QuickSetup","_ref3","cardConfig","height","overflowY","flexWrap","id","BreakLine","border","Config","formData","control","formState","_objectWithoutProperties","_excluded","QuickSetup","processLinkData","newData","obj","i18nKey","newObj","reverse","header","dashoardLink","loginLink","_newObj$links","_newObj$links2","hasAccess","iconSelector","PTIcon","WSICon","FSMIcon","MCollectIcon","PGRIcon","TLIcon","OBPSIcon","BillsIcon","CitizenHome","getCitizenMenu","fetchedCitizen","isMobile","browser","parentModules","isApplyLink","toLowerCase","_mdmsDataObj$links","_mdmsDataObj$links2","mdmsDataObj","seenLinks","Set","dedupedLinks","ele","x","y","orderNumber","has","add","borderRadius","Devices","Divider","LinkIcon","handleNavigate","SVG","AddExpense","ListAlt","Boolean","BackLink","history","back","_mdmsDataObj$links3","_mdmsDataObj$links4","handleLinkClick","EmployeeHome","_ref4","Component","AppHome","_ref5","isSuperUserWithMultipleRootTenant","getRoleBasedHomeCard","QuickSetupConfigComponent","_ref$alt","_ref$decorative","decorative","_ref$ariaLabel","ariaLabel","_ref$ariaLabelledby","ariaLabelledby","accessibilityProps","tabIndex","onKeyDown","_window$getConfig","focus","propTypes","PropTypes","isRequired","TopBarSideBar_TopBar","_userDetails$info2","_Digit$ComponentRegis","_userDetails$info3","_userDetails$info4","_window4","_cityDetails$city","_cityDetails$city2","toggleSidebar","isSidebarOpen","handleLogout","userDetails","CITIZEN","cityDetails","userOptions","handleUserDropdownSelection","logoUrlWhite","_ref$showLanguageChan","showLanguageChange","_React$useState2","profilePic","setProfilePic","app","_userDetails$info","getCurrentTenantId","uuid","usersResponse","userSearch","user","_userDetails$photo","thumbs","photo","split","at","_Digit$UserService","_Digit$UserService2","CitizenHomePageTenantId","getCitizenCurrentTenant","_Digit$Hooks$useNotif","useNotificationCount","getUser","_Digit$Hooks$useNotif2","unreadNotificationCount","unreadCount","notificationCountLoaded","isSuccess","TopBarComponent","img","updateSidebar","clikOusideFired","onLogout","notificationCount","cityOfCitizenShownBesideLogo","onNotificationIconClick","hideNotificationIconOnSomeUrlsWhenNotLoggedIn","_Digit$UserService3","access_token","urlsToDisableNotificationIcon","ChangeLanguage","loggedin","CustomEmployeeTopBar","TopBarComponentMain","actionFields","ChangeCity","userInfo","showArrow","menuStyles","theme","onHamburgerClick","logoWidth","logoHeight","logo","logoId","statelogo","onImageClick","onLogoClick","showDeafultImg","ulb","ulbGrade","defaultImage","sidebar_menu","SideBarMenu","closeSidebar","redirectToLoginPage","isEmployee","element","text","LogoutIcon","populators","Profile","stateName","mobileNumber","emailId","IconsObject","CommonPTIcon","propertyIcon","PropertyHouse","CaseIcon","WSIcon","CollectionIcon","BirthIcon","DeathIcon","FirenocIcon","HomeIcon","EditPencilIcon","Phone","SideBar_StaticCitizenSideBar","_user$info","_menuItems","linkData","islinkDataLoading","isFetched","showDialog","setShowDialog","handleOnCancel","showProfilePage","menuItems","profileItem","_window5","_window6","_storeData$tenants","_storeData$tenants$fi","_storeData$tenants$","_storeData$tenants$fi2","_storeData$tenants$2","MenuItem","_item$icon","itemComponent","leftIconArray","Item","Link","contactNumber","localeCompare","_linkData$key$","_linkData$key$2","_window7","_linkData$key$3","_linkData$key$4","sidebar","splice","sidebarURL","top","backgroundColor","pointerzevents","flexDirection","zIndex","LogoutDialog","handleOnSubmit","logout","CitizenSideBar","_menuItems2","_menuItems3","_user$info2","_user$info3","_user$info4","_ref3$isMobile","_ref3$isEmployee","userProfile","search","_useState8","_useState0","_useState10","fetchUserProfile","_asyncToGenerator","_usersResponse$user2","_usersResponse$user3","userData","currentUser","_userDetails$photo2","handleModuleClick","updatedUrl","_item$displayName","_loop","_keys$i","_configEmployeeSideBa2","_configEmployeeSideBa3","_configEmployeeSideBa5","_configEmployeeSideBa6","getSingleDisplayName","getParentDisplayName","_configEmployeeSideBa4","ob","_ob$displayName","indx","findIndex","home","comp","part","c1","c2","transformedMenuItems","_item$links","transformedSelectedCityData","transformedLanguageData","hamburgerItems","Hamburger","items","profileName","profileNumber","transitionDuration","styles","hideUserManuals","profile","isSearchable","_ref7","_ref6","_window8","_window9","parentIndex","handleChangeCity","onItemSelect","StaticCitizenSideBar","SideBar_EmployeeSideBar","EmployeeSideBar","extractLeftIcon","Array","isArray","subResult","mergeObjects","obj1","obj2","hasOwnProperty","_item$path","_item$path2","hierarchicalMap","sortDataByOrderNumber","Infinity","transformedData","transformItem","navigationUrl","childKey","iconKey","transformData","objectArray","entries","fromEntries","splitKeyValue","sortedTransformedData","MediaQuery","minWidth","SideNav","hideAccessbilityTools","test","hostUrl","origin","fallbackError","navigateToRespectiveURL","expandedWidth","collapsedWidth","onBottomItemClick","TopBarSideBar_SideBar","components_TopBarSideBar","_ref$showSidebar","showSidebar","handleSSOLogout","provider","localStorage","getItem","normalizedProvider","logoutUrlFromConfig","redirectParamName","token","_window$google","google","accounts","disableAutoSelect","fetch","method","headers","removeItem","postLogoutRedirectUri","URL","searchParams","toString","handleSidebar","func","TopBar","SideBar","WrappedComponent","mainSelector","handleFirstTab","main","document","querySelector","setAttribute","outline","removeEventListener","addEventListener","callback","savedCallback","timer","useLoginConfig","getConfigModuleName","useCommonMDMS","_data$moduleName","LoginConfig","retry","FAQs_FaqComponent","FAQs","_data$MdmsRes$common","_Digit$Hooks$useGetFA","useGetFAQsJSON","moduleFaqs","Fragment","BackButton","marginLeft","HeaderComponent","paddingTop","LanguageSelection","_Digit$Hooks$useStore2","_Digit$Hooks$useStore3","texts","useMemo","submitBarLabel","RadioButtonProps","options","optionsKey","additionalWrapperClass","selectedOption","PageBasedInput","onSubmit","RadioButtons","LocationSelection","uiHomePage","redirectURL","_Digit$Hooks$useTenan","useTenants","cities","selectedCity","setSelectedCity","showError","setShowError","selectCity","redirectBackTo","SearchOnRadioButtons","placeholder","CardLabelError","ImageUpload_UploadDrawer","closeDrawer","removeProfilePic","showToast","setUploadedFile","file","setFile","setError","_response$data","response","UploadServices","Filestorage","files","_response$data2","fileStoreId","err","position","left","right","bottom","onOverlayBodyClick","alignItems","flex","gap","for","cursor","GalleryIcon","accept","onChange","target","removeimg","RemoveIcon","DEFAULT_TENANT","_Digit$getStateId","defaultValidationConfig","UserProfileValidationConfig","password","Home_IndividualUserProfile","_Digit$UserService$ge","_mdmsValidationData$U2","_defaultValidationCon","_errors$userName","_errors$emailAddress","_mdmsValidationData$U3","_defaultValidationCon2","_errors$userName2","_mdmsValidationData$U4","_defaultValidationCon3","_errors$mobileNumber","_errors$emailAddress2","_mdmsValidationData$U5","_defaultValidationCon4","_errors$currentPasswo","_mdmsValidationData$U6","_defaultValidationCon5","_errors$newPassword","_mdmsValidationData$U7","_defaultValidationCon6","_errors$confirmPasswo","stateId","setUserDetails","setName","email","setEmail","gender","setGender","permanentCity","setCity","setMobileNo","_useState12","_useState14","profileImg","setProfileImg","_useState16","openUploadSlide","setOpenUploadSide","_useState18","changepassword","setChangepassword","_useState20","currentPassword","setCurrentPassword","_useState22","newPassword","setNewPassword","_useState24","confirmPassword","setConfirmPassword","_useState26","toast","setToast","_useState28","setLoading","innerWidth","windowWidth","setWindowWidth","_React$useState4","errors","setErrors","individualServicePath","mapConfigToRegExp","_config$UserProfileVa","startsWith","lastIndexOf","lastSlashIndex","pattern","slice","flags","RegExp","_useState30","validationConfig","setValidationConfig","commonUiConfig","mdmsValidationData","isValidationConfigLoading","_mdmsValidationData$U","updatedValidationConfig","getUserInfo","_response$Individual","CustomService","getResponse","useCache","userService","params","limit","offset","body","Individual","userUuid","editScreen","setGenderName","closeFileUploadDrawer","setUserName","_validationConfig$nam","userName","setUserEmailAddress","emailAddress","duration","updateProfile","_userDetails$name","_userDetails$name2","_responseInfo","trim","JSON","stringify","responseInfo","trimmedCurrentPassword","trimmedNewPassword","trimmedConfirmPassword","individualPayload","givenName","familyName","otherNames","isDeleted","isSystemUser","isSystemUserActive","status","requestData","existingPassword","username","changePasswordResponseInfo","changePassword","_error$Errors","Errors","errorObj","parse","_error$response","menu","Menu","useGenderMDMS","genderDetails","setFileStoreId","thumbnails","getThumbnails","_x","ids","res","Filefetch","fileStoreIds","o","images","getFileUrl","_x2","_x3","BreadCrumb","crumbs","internalLink","show","boxShadow","background","maxWidth","transform","onClickAddPic","CameraIcon","paddingBottom","LabelFieldPair","CardLabel","TextInput","isMandatory","disable","ErrorMessage","truncateMessage","maxLength","wrapperClassName","showIcon","disabled","borderBottom","MobileNumber","_validationConfig$mob","setUserMobileNumber","required","getOTPBasedLogin","TogleforPassword","paddingLeft","_e$target","_e$target2","_e$target3","fontWeight","Footer","SubmitBar","setactionFieldsToRight","Toast","UploadDrawer","Home_UserProfile","useAnIndividual","IndividualUserProfile","handleResize","_yield$Digit$UserServ","updateUser","Home","_window3$includes","_window4$includes","_citizenServicesObj$s","_citizenServicesObj$p","_citizenServicesObj$p3","_citizenServicesObj$p5","_citizenServicesObj$p7","_infoAndUpdatesObj$si","_infoAndUpdatesObj$pr","_infoAndUpdatesObj$pr3","_infoAndUpdatesObj$pr5","_infoAndUpdatesObj$pr7","_whatsNewSectionObj$s2","conditionsToDisableNotificationCountTrigger","_Digit$Hooks$useEvent","useEvents","EventsData","EventsDataLoading","appBannerWebObj","appBannerDesktop","appBannerMobObj","appBannerMobile","citizenServicesObj","citizenServicesCard","infoAndUpdatesObj","informationAndUpdatesCard","whatsAppBannerWebObj","whatsAppBannerDesktop","whatsAppBannerMobObj","whatsAppBannerMobile","whatsNewSectionObj","whatsNewSection","handleClickOnWhatsAppBanner","allCitizenServicesProps","headerLabel","sideOption","_citizenServicesObj$s2","Icon","ComplaintIcon","_citizenServicesObj$p2","_citizenServicesObj$p4","_citizenServicesObj$p6","_citizenServicesObj$p8","allInfoAndUpdatesProps","_infoAndUpdatesObj$si2","_infoAndUpdatesObj$pr2","Calender","_infoAndUpdatesObj$pr4","DocumentIcon","_infoAndUpdatesObj$pr6","_infoAndUpdatesObj$pr8","bannerUrl","CardBasedOptions","_whatsNewSectionObj$s","WhatsNewCard","videoPlay","setVideoPlay","vidSrc","setVidSrc","ViDSvg","viewBox","xmlns","d","_Digit$Hooks$useGetHo","useGetHowItWorksJSON","mdmsConfigResult","screenHeader","CustomButton","videosJson","videos","onClickVideo","vidObj","pdfHeader","pdfDesc","PDFSvg","DownloadImgIcon","CloseSvg","controls","autoPlay","otp","onOtpChange","onResend","_ref$userType","canSubmit","timeLeft","setTimeLeft","useInterval","handleResendOtp","OTPInput","FormStep","loginSteps","cardText","nextText","inputs","validation","minlength","maxlength","Login_SelectMobileNumber","onMobileChange","onEmailChange","isEmail","setIsEmail","core_mobile_config","EMAIL_REGEX","rawPattern","mobileNumberPattern","isEmailValid","isMobileValid","linkLabel","InputCard","submit","onNext","handleSubmit","isDisable","FieldV1","withoutLabel","charCount","prefix","mobilePrefix","mobileNumberLength","fieldStyle","LinkLabel","userSelect","textDecoration","switchMode","Login_SelectName","TYPE_LOGIN","DEFAULT_REDIRECT_URL","getFromLocation","Login_IndividualLogin","_ref$isUserRegistered","isUserRegistered","isOtpValid","setIsOtpValid","setParams","errorTO","setErrorTO","canSubmitName","setCanSubmitName","canSubmitOtp","setCanSubmitOtp","canSubmitNo","setCanSubmitNo","errorTimeout","_location$state2","setCitizenDetail","userObject","_JSON$parse","sessionStorage","setItem","stepItems","selectMobileNumber","_yield$sendOtp2","sendOtp","selectName","registerURL","IndividualRegister","requestType","auth","Error","selectOtp","authenticate","ResponseInfo","UserRequest","tokens","resendOtp","_yield$sendOtp4","AppContainer","Routes","Route","SelectMobileNumber","event","showRegisterLink","SelectOtp","SelectName","TYPE_REGISTER","citizen_Login","_location$state7","IndividualLogin","_location$state4","_location$state3","_location$state5","_yield$sendOtp6","_location$state6","roleInfo","userRole","otpReference","_yield$Digit$UserServ2","registerUser","_excluded2","_yield$sendOtp0","_yield$sendOtp8","isCitizenDesktop","isCheckBoxInput","isDateObject","Date","isNullOrUndefined","isObjectType","isObject","getEventValue","checked","isNameInFieldArray","names","getNodeParentName","isWeb","HTMLElement","cloneObject","copy","Blob","FileList","tempObject","prototypeCopy","prototype","isPlainObject","compact","isUndefined","val","object","result","isBoolean","isKey","stringToPath","input","tempPath","newValue","objValue","isNaN","EVENTS","VALIDATION_MODE","INPUT_VALIDATION_RULES","HookFormContext","external_React_","createContext","useFormContext","useContext","getProxyFormState","localProxyFormState","isRoot","defaultValues","_defaultValues","defineProperty","_key","_proxyFormState","isEmptyObject","shouldRenderFormState","formStateData","updateFormState","convertToArrayPayload","shouldSubscribeByName","signalName","exact","currentName","useSubscribe","_props","subscription","subject","subscribe","next","unsubscribe","isString","generateWatchOutput","_names","formValues","isGlobal","watch","fieldName","watchAll","Controller","methods","shouldUnregister","isArrayField","array","_name","_subjects","values","updateValue","_formValues","_getWatch","_removeUnmounted","useWatch","_formState","_mounted","_localProxyFormState","isDirty","dirtyFields","touchedFields","validatingFields","isValidating","isValid","_updateFormState","_updateValid","useFormState","_registerProps","register","rules","_shouldUnregisterField","_options","updateMounted","field","_fields","_f","mount","_state","unregister","_updateDisabledField","fields","useCallback","onBlur","ref","elm","setCustomValidity","reportValidity","fieldState","defineProperties","invalid","enumerable","isTouched","useController","appendErrors","validateAllFieldCriteria","types","getValidationModes","mode","isOnSubmit","isOnBlur","isOnChange","isOnAll","isOnTouch","isWatched","isBlurEvent","watchName","iterateFieldsByAction","fieldsNames","abortEarly","currentField","refs","updateFieldArrayRootError","fieldArrayErrors","isFileInput","isFunction","isHTMLElement","owner","ownerDocument","defaultView","isMessage","isRadioInput","isRegex","defaultResult","validResult","getCheckboxValue","attributes","defaultReturn","getRadioValue","previous","getValidateError","every","getValueAndMessage","validationData","validateField","async","shouldUseNativeValidation","isFieldArray","minLength","min","max","validate","valueAsNumber","inputValue","inputRef","isRadio","isCheckBox","isRadioOrCheckbox","isEmpty","appendErrorsCurry","bind","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","exceedMin","maxOutput","minOutput","valueDate","valueAsDate","convertTimeToDate","time","toDateString","isTime","isWeek","valueNumber","maxLengthOutput","minLengthOutput","patternValue","match","validateError","validationResult","unset","paths","childObject","updatePath","baseGet","isEmptyArray","createSubject","_observers","observers","observer","isPrimitive","deepEqual","object1","object2","getTime","keys1","keys2","val1","val2","isMultipleSelect","live","isConnected","objectHasFunction","markFieldsDirty","isParentNodeArray","getDirtyFieldsFromDefaultValues","dirtyFieldsFromValues","getDirtyFields","getFieldValueAs","setValueAs","NaN","getFieldValue","selectedOptions","getRuleValue","rule","source","schemaErrorLookup","join","foundError","pop","defaultOptions","reValidateMode","shouldFocusError","createFormControl","delayErrorCallback","submitCount","isSubmitted","isSubmitting","isSubmitSuccessful","unMount","validationModeBeforeSubmit","validationModeAfterSubmit","shouldDisplayAllAssociatedErrors","criteriaMode","shouldUpdateValid","resolver","_executeSchema","executeBuiltInValidation","_updateIsValidating","updateValidAndValue","shouldSkipSetValueAs","defaultChecked","setFieldValue","updateTouchAndDirty","fieldValue","shouldDirty","shouldRender","shouldUpdateField","isPreviousDirty","output","disabledField","_getDirty","isCurrentFieldPristine","isPreviousFieldTouched","context","getResolverOptions","shouldOnlyCheckValid","valid","isFieldArrayRoot","fieldError","getValues","fieldReference","optionRef","checkboxRef","radioRef","shouldTouch","shouldValidate","trigger","setValues","fieldKey","setValue","cloneValue","isFieldValueUpdated","_updateIsFieldValueUpdated","Number","shouldSkipValidation","deps","skipValidation","watched","previousErrorLookupResult","errorLookupResult","previousFieldError","delayError","updateErrors","wait","updatedFormState","shouldRenderByError","_focusInput","fieldNames","executeSchemaAndUpdateState","Promise","all","shouldFocus","getFieldState","currentError","currentRef","restOfErrorTree","delete","keepValue","keepError","keepDirty","keepTouched","keepIsValidating","keepDefaultValue","keepIsValid","disabledIsDefined","progressive","fieldRef","querySelectorAll","radioOrCheckbox","_focusError","onValid","onInvalid","onValidError","persist","fieldValues","_reset","keepStateOptions","updatedValues","cloneUpdatedValues","isEmptyResetValues","keepDefaultValues","keepValues","keepDirtyValues","form","closest","reset","keepSubmitCount","keepIsSubmitted","keepErrors","keepIsSubmitSuccessful","_updateFieldArray","args","shouldSetValues","shouldUpdateFieldsAndState","argA","argB","unsetEmptyArray","_getFieldArray","_resetDefaultValues","then","resetOptions","_disableForm","_setErrors","payload","resetField","clearErrors","inputName","setFocus","shouldSelect","Search_SearchFields","previousPage","SearchField","DatePicker","date","Search_MobileSearchApplication","_data$roles","tabledata","settabledata","DownloadBtn","DownloadBtnCommon","returnObject","convertEpochToDate","timestamp","convertEpochToTimeInHours","dataView","dataViewedBy","dateEpoch","dateFromApi","month","getMonth","day","getDate","year","getFullYear","hour","getHours","getMinutes","period","_useReducer2","useReducer","currentlyActiveMobileModal","setActiveMobileModal","closeMobilePopupModal","MobilePopUpCloseButton","searchFormFieldsComponentProps","CurrentMobileModalComponent","SearchForm","SearchFormFields","MobileComponentDirectory","propsMobileInboxCards","_data$roles$slice","tabData","Download","Excel","handleExcelDownload","SearchAction","handleActionClick","DetailsCard","Search","count","_useForm","_formControl","_values","useForm","sortOrder","onSort","desc","MobileSearchApplication","GetCell","columns","disableSortBy","accessor","row","_row$roles$slice","marginRight","SearchFields","Table","totalRecords","getCellProps","cellInfo","column","onPageSizeChange","currentPage","onNextPage","onPrevPage","manualPagination","pageSizeLimit","disableSort","sortParams","SearchApp","_data$ElasticSearchDa","_data$ElasticSearchDa2","setPayload","convertDateToEpoch","dateString","dayStartOrEnd","parts","DateObj","UTC","setMinutes","getTimezoneOffset","setHours","setSeconds","getSeconds","storedPayload","k","_Digit$Hooks$useAudit","useAudit","filters","AuditSearchApplication","_data","sortBy","fromDate","toDate","ElasticSearchData","_mdmsData$MdmsRes$com","_mdmsConfigResult$hel","_mdmsConfigResult$hel2","_mdmsConfigResult$hel3","_mdmsConfigResult$hel4","_mdmsConfigResult$hel5","_mdmsConfigResult$hel6","_staticData","_staticData2","_staticData3","_staticData4","_staticData5","_staticContent","_staticContent2","_staticContent3","_Digit$Hooks$useStati","useStaticData","isMdmsLoading","mdmsData","_Digit$Hooks$useDynam","useDynamicData","isSearchLoading","dynamicData","IconComponent","StaticData","StaticDataIconComponentOne","TimerIcon","StaticDataIconComponentTwo","RupeeSymbol","staticContent","staticCommonContent","validity","staticData","staticDataOne","staticDataOneHeader","staticDataTwo","staticDataTwoHeader","payViaWhatsApp","handleClickOnWhatsApp","WhatsappIconGreen","helpline","HelpLineIcon","contactOne","contactTwo","serviceCenter","ServiceCenterIcon","viewMapLocation","dynamicDataOne","dynamicDataTwo","ValidityTimeIcon","SideBar_CitizenSideNav","isLoggedIn","handleLogoutCancel","buildItems","isDigitStudio","orderCounter","_moduleEntries$","moduleEntries","entry","_entry$sidebar","endsWith","rawIcon","seen","navigateToUrl","enableSearch","handleLogoutSubmit","lazyWithFallback","resolve","__webpack_require__","FAQsSection","UserProfile","HowItWorks","Login","StaticDynamicCard","sidebarHiddenFor","getTenants","codes","citizen","_window7$getConfig","DSO","appTenants","sourceUrl","_data$ACCESSCONTROLA","el","_a$b$parentModule","isLinkDataFetched","classname","useRouteSubscription","hideSidebar","appRoutes","DynamicModuleLoader","ModuleLevelLinkHomePages","bannerImage","CitizenHomeCard","Info","CitizenInfoLabel","isInfo","TopBarSideBar","CitizenSideNav","_window8$getConfig","ChangePasswordComponent","_window3$getConfig","propsConfig","_Digit$Hooks$useQuery","mobile_number","setOtp","setShowToast","getUserType","setType","closeToast","onResendOTP","_err$response","error_description","onChangePassword","navigateToLogin","_err$response2","_propsConfig$inputs","FormComposer","noBoxShadow","inline","submitInForm","submitButtonLabel","cardStyle","CardSubHeader","_window4$getConfig","loginParams","defaultProps","ChangePassword","EmployeeChangePassword","loginConfig","ForgotPassword","_window6$getConfig","_mdmsData$config$","bannerImages","onForgotPassword","alert","Carousel","FormComposerV2","secondaryActionLabel","secondaryButtonLabel","onSecondayActionClick","headingStyle","descriptionStyles","secondaryActionId","_window5$getConfig","forgotPassword","employee_ForgotPassword","ForgotPasswordComponent","defaultLanguage","_Digit$getDefaultLang","getDefaultLanguage","_defaultLanguages","_window2$getConfig","defaultLanguages","hasMultipleLanguages","now","_loginConfig$","_ref$bannerImages","currentSlide","setCurrentSlide","carouselItems","nextSlide","interval","backgroundImage","image","prevSlide","_","goToSlide","mdmsConfig","masterName","localePrefix","component","customProps","LoginOtpConfig","_Digit2","_config$","_config$2","loginOTPBased","isStoreLoading","_Digit$Hooks$useSSOCo","useSSOConfig","_data$MdmsRes","_data$SSO","IdentityProviders","ssoMDMSData","setDisable","loginLoader","setLoginLoader","DynamicLoginComponent","hashParams","URLSearchParams","hash","idToken","accessToken","errorDescription","handleDigitLogin","microsoftAuthenticate","catch","_user$info5","_user$info6","setEmployeeDetail","decodeURIComponent","Authorization","grant_type","scope","assertion","ok","_parsed","_parsed2","_parsed3","_parsed4","parsed","raw","json","replaceState","onSSOLogin","ssoConfig","ui","hasOidcConfig","authorizeUrl","clientId","authStrategy","onOIDCLogin","resource","logoutUrl","logoutRedirectParam","authority","uiConfig","_ref5$scopes","scopes","_ref5$responseType","responseType","_ref5$responseMode","responseMode","_ref5$nonceRequired","nonceRequired","_ref5$redirectPath","prompt","nonce","random","redirectUri","forcePromptLogin","buildOIDCAuthorizeUrl","onLogin","_ref8","_requestData$city","_excluded3","_x4","reqCreate","enable","mutation","useCustomAPIMutationHook","onOtpLogin","_ref9","_Digit3","_onSuccess","inputEmail","mutate","onError","variables","_error$response2","onSuccess","_Digit4","_x6","_x5","_window0","defaultTenant","ssoConfigs","sso","_sso$ui","_sso$ui2","_sso$ui3","_sso$ui4","_sso$ui5","_sso$ui6","_field$populators","_field$populators2","onFormValueChange","hasEmptyFields","renderLoginForm","_propsConfig$texts","_propsConfig$texts2","_propsConfig$texts3","extraClasses","cardClassName","wrapperClass","cardSubHeaderClassName","buttonClassName","renderFooter","footerClassName","_window1","_window1$getConfig","_window10","_window10$getConfig","login","withAutoFocusMain","employee_Login","defaultLoginConfig","setloginConfig","defaultLoginOtpConfig","loginOtpConfig","loginType","_useLoginConfig","Services","modulePrefix","loginOtpParams","LoginComponent","_ref$isLogin","isLogin","OtpConfig","redirectPathOtpLogin","getRedirectPathOtpLogin","locationPathname","_MdmsRes$","isSuperUser","_formData$OtpComponen","OtpComponent","formValue","_otpValue$otp","otpValue","SignUpConfig","accountName","_data$Tenants$","_data$Tenants$2","Tenants","signUp","employee_SignUp","defaultSignUpConfig","setSignUpConfig","_Digit$Hooks$useCommo","_data$commonUiConfig","SignUpParams","ViewUrl","buttonDisabled","gcTime","TickMark","nonEditable","host","navigator","clipboard","writeText","onButtonClick","default","_codes$map","AppModules","EmployeeLogin","Otp","userScreensExempted","employee","_location$pathname","_initData$modules","_ref$noTopBar","noTopBar","isUserProfile","_location$pathname2","Y","mediaQuery","query","captures","RE_MEDIA_QUERY","modifier","expressions","inverse","expression","RE_MQ_EXPRESSION","feature","RE_MQ_FEATURE","parseQuery","typeMatch","expressionsMatch","expValue","toPx","toDpi","toDecimal","parseInt","RE_LENGTH_UNIT","RE_RESOLUTION_UNIT","ratio","numbers","decimal","resolution","parseFloat","String","staticMatch","dynamicMatch","matchMedia","Mql","forceStatic","mql","self","update","evt","matches","media","addListener","listener","removeListener","dispose","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","ReactPropTypes","bigint","bool","number","string","symbol","any","arrayOf","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","checkPropTypes","uppercasePattern","msPattern","cache","toHyphenLower","hyphenate_style_name","hName","stringOrNumber","prop_types_default","grid","aural","braille","handheld","print","projection","screen","tty","tv","embossed","matchers","orientation","scan","aspectRatio","deviceAspectRatio","deviceHeight","deviceWidth","colorIndex","monochrome","featureMatchers","features","minAspectRatio","maxAspectRatio","minDeviceAspectRatio","maxDeviceAspectRatio","minHeight","maxHeight","minDeviceHeight","maxDeviceHeight","minDeviceWidth","maxDeviceWidth","minColor","maxColor","minColorIndex","maxColorIndex","minMonochrome","maxMonochrome","minResolution","maxResolution","mq","Context","hyphenateKeys","useIsUpdate","useQuery","settings","getQuery","v","realKey","keyVal","toQuery","makeQuery","setQuery","newQuery","useMediaQuery","device","deviceSettings","deviceFromProps","deviceFromContext","getDevice","setDevice","newDevice","objA","objB","aKeys","bKeys","len","shallowEqualObjects","useDevice","getMatchMedia","matchmediaquery_default","setMq","isUpdate","newMq","useMatchMedia","setMatches","updateMatches","ev","useMatches","REACT_ELEMENT_TYPE","Symbol","REACT_FRAGMENT_TYPE","jsxProd","maybeKey","$$typeof","jsx","jsxs","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","definition","r","toStringTag","CitizenApp","EmployeeApp","SignUp","CustomErrorComponent","DigitApp","_ref$defaultLanding","defaultLanding","_ref$allowedUserTypes","allowedUserTypes","getCurrentUlb","commonProps","DigitAppWrapper","_window11","_ref3$defaultLanding","_location","middleware","thunk","enhancer","composeEnhancers","compose","applyMiddleware","store","defaultStore","moduleReducers","createStore","getRootReducer","combineReducers","common","defaultData","components_PrivacyComponent","isChecked","setIsChecked","showPopUp","setShowPopUp","privacy","PrivacyPolicy","policy","_props$props","CheckBox","footerclassName","sortFooterChildren","contents","getElementById","scrollIntoView","behavior","isSpaceRequired","descriptions","subIndex","isBold","subDescriptions","subDesc","subSubIndex","components_EmployeeSSOLoginOptions","_ref2$ssoConfigs","hasMultipleOptions","_sso$provider","_sso$onLogin","_sso$provider2","_sso$onLogin2","DigitUIWrapper","_initData$stateInfo","_initData$stateInfo2","_initData$stateInfo3","enabledModules","_Digit$Hooks$useInitS","useInitStore","_Digit$Hooks$useInitS2","getStore","getI18n","setComponent","PrivacyComponent","EmployeeSSOLoginOptions","Provider","Router","BodyContainer","DigitUI","registry","initialPrivacy","getPrivacyObject","setPrivacy","queryClient","QueryClient","queries","attemptIndex","ComponentProvider","Contexts","PrivacyProvider","resetPrivacy","setPrivacyObject","getPrivacy","privacyObj","updatePrivacyDescoped","getAllPrivacyObject","updatePrivacy","privacyContextValue","QueryClientProvider","client","componentsToRegister","A","_props$props4","_props$props2","_props$props3","ForgotOrganizationTooltip","showTip","setShowTip","wrapperRef","handleClickOutside","contains","whiteSpace","wordBreak","LoginSignupSelector","isSignupPage","onButtonClickLogin","onButtonClickSignUP","initCoreComponents"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"main.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC5JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACjmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACXA;;;;;;;;;;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC1iFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACpLA;AACA;AACA;AAAA;AAGA;AACA;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC/oBA;AACA;AACA;AAAA;AAGA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC3MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtDA;AACA;AACA;AACA;;AAEA;AAAA;AACA;AAGA;AAAA;AAGA;AAGA;AAAA;AAGA;AAGA;AAAA;AAGA;AAGA;AAAA;AAGA;AAGA;AAAA;AAGA;AAGA;AAAA;AAGA;AAGA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAGA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;;AAEA;AACA;AAEA;AACA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AC7LA;AACA;AACA;AACA;;AAEA;AAAA;AACA;AAGA;AAAA;AAGA;AAGA;AAAA;AAGA;AACA;AAAA;AAEA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAGA;AAEA;AACA;AAAA;AACA;AAGA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAEA;AACA;AACA;AAGA;;;;;;;;;;;;;;;;;ACrFA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;ACxGA;AACA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAEA;AACA;AACA;AAAA;AACA;AAEA;AACA;AAGA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;AChDA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AC9DA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAWA;AACA;AACA;AACA;AACA;AACA;;AAEA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAKA;AACA;AAGA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjHA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAHA;AAIA;AAQA;AAPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AA/CA;AAAA;AAAA;;AAiDA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAGA;;AAEA;AACA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAGA;;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;AClJA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAGA;AAAA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAGA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AAGA;AAEA;;;;;;;;;;;;;;;;;;ACpDA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAIA;;AAEA;AACA;AAKA;AACA;AACA;;AAEA;AACA;AAUA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AASA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;AChHA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AAAA;AAEA;AACA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;ACtDA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAEA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;ACvDA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AACA;AAGA;;AAEA;AACA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjDA;AAMA;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAIA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;;AAGA;AACA;AACA;AAAA;AACA;AAEA;AAEA;AACA;AAIA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AAGA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAGA;AAAA;AAGA;AAEA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAGA;;AAEA;AACA;AACA;AAAA;AAIA;AAAA;AAEA;AAAA;AACA;AACA;AAEA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAEA;AAAA;AAKA;AAAA;AAEA;AACA;AAAA;AAEA;AACA;AAEA;AACA;AAGA;AACA;AACA;AAAA;AACA;AAGA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AAGA;AACA;AAAA;AACA;AAOA;AAIA;AACA;AAAA;AACA;AAGA;AAAA;AAGA;AAEA;AAOA;AANA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAGA;AAAA;AAAA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7RA;AACA;AAAA;AAEA;AAOA;AANA;AACA;AACA;AACA;AACA;AAEA;AADA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAGA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAGA;AAEA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;ACrDA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAAA;AACA;AACA;AAEA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAIA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;ACjDA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAGA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AAGA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAGA;AAAA;AAEA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9JA;AACA;AACA;AACA;AACA;AAGA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAKA;AACA;AAGA;AAAA;AACA;AACA;AACA;AAKA;AAAA;AAAA;AAAA;AAKA;AACA;AAIA;AAAA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AAGA;AACA;AAEA;AAEA;AAAA;AAGA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAKA;AAEA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjOA;AAWA;AAOA;AACA;AAAA;AAEA;AAYA;AAAA;AAXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAGA;AAGA;AAEA;AACA;AAGA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AAAA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAKA;AAJA;AACA;AACA;AAEA;AADA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AADA;AAAA;AAGA;AACA;AACA;AAAA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAIA;AAAA;AACA;AAEA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AACA;AAEA;AAAA;AACA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAGA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AAMA;AAAA;AAEA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;AC7PA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAGA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AAIA;AAMA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAGA;AAGA;AAEA;AACA;AAGA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAIA;AACA;AACA;AAEA;AACA;AACA;AACA;AAIA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AAKA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAKA;AAAA;AAAA;AAAA;AACA;AAEA;AAIA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAIA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAIA;AAAA;AAAA;AAAA;AAGA;;AAEA;AACA;AACA;AACA;AASA;AAAA;AARA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAnBA;AAAA;AAAA;AAoBA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AACA;AA/BA;AAAA;AAAA;AAgCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AAEA;AAEA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;ACrcA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAIA;AACA;AACA;AAAA;AAEA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;AC5LA;AACA;AACA;AACA;AACA;AAAA;AAKA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7MA;AACA;AAoBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AAFA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AAAA;AACA;AACA;AAEA;AAAA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAAA;AACA;AAGA;AAEA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AAIA;AAGA;AACA;AAEA;AACA;AAGA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;ACxQA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAGA;AAeA;AAAA;AAdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAXA;AAAA;AAAA;AAYA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;;AAEA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AAGA;AAAA;AAAA;AAAA;AAGA;AACA;AAGA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;ACtLA;AACA;AACA;AACA;AACA;AAAA;AACA;AAcA;AAbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAlDA;AAAA;AAAA;AAoDA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AANA;AAAA;AAAA;AAOA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAGA;AACA;;;;;;;;;;;;;;ACtKA;;;;;;;;;;;;;;;;;;;;ACAA;AACA;AACA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;;;;;;;;;;;;;;;ACtBA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;ACzBA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;ACnBA;AACA;AAEA;AAKA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;ACdA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;ACtCA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/FA;AAiBA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAEA;AAuBA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;AAEA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AAGA;AAAA;AAEA;AACA;AACA;AACA;AAGA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AA3BA;AAAA;AAAA;AA6BA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;;AAGA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAzKA;AAAA;AAAA;AA2KA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAEA;AAEA;AAEA;AACA;AAAA;AARA;AAAA;AAAA;AAUA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAVA;AAAA;AAAA;AAYA;;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAUA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAEA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAGA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAGA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAGA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAGA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAIA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAGA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAIA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAGA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAIA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AAIA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAEA;AAEA;AACA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAMA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACz/BA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AAIA;AAAA;AACA;AACA;AAEA;AAGA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AAIA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7EA;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAEA;AAuBA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAAA;AAAA;AAGA;AAAA;AAEA;AACA;AACA;AACA;AAGA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AANA;AAAA;AAAA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAjIA;AAAA;AAAA;AAmIA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAEA;AAEA;AAEA;AACA;AAAA;AARA;AAAA;AAAA;AAUA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAVA;AAAA;AAAA;AAYA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAUA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAEA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAGA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAGA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAGA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAGA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAIA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAGA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAIA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAGA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAIA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AAIA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAEA;AAEA;AACA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAMA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACp8BA;AAYA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AAAA;AAIA;AAAA;AAEA;AAAA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAKA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAKA;AAAA;AAGA;AACA;AACA;AAAA;AAIA;AACA;AACA;AAAA;AAEA;AAQA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAGA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;ACrNA;AAQA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAIA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AAKA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAEA;AACA;AACA;AAAA;AACA;AAEA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAIA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAKA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AA7BA;AAAA;AAAA;AA+BA;AAAA;AACA;AAEA;AAKA;;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AApDA;AAAA;AAAA;AAsDA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AA3BA;AAAA;AAAA;AA6BA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAlBA;AAAA;AAAA;AAoBA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAPA;AAAA;AAAA;AASA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAGA;AACA;AAEA;AAEA;AAEA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAGA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;AC9TA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;AC/GA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AAIA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAEA;AAAA;AAAA;AACA;AAGA;AAAA;AAAA;AAGA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAEA;AAAA;AAAA;AACA;AAGA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;ACnDA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAIA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAnCA;AAAA;AAAA;AAqCA;AAAA;AACA;AAEA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAhBA;AAAA;AAAA;AAkBA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAhDA;AAAA;AAAA;AAkDA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAZA;AAAA;AAAA;AAcA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAPA;AAAA;AAAA;AASA;AAEA;AACA;AAAA;AACA;AAEA;AAAA;AACA;AAGA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAGA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAGA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;ACzSA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAGA;AAGA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAIA;AAGA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAIA;AAAA;AAGA;AAAA;AAGA;AACA;;;;;;;;;;;;;;;;;;;;;;ACvFA;AAcA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAGA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AAEA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAEA;AAAA;AACA;AACA;AAEA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AACA;AAIA;AAAA;AACA;AAAA;AACA;AACA;AAEA;AACA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAEA;AAAA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AACA;AACA;AAGA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AAQA;AAAA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AAIA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AAIA;AAAA;AAEA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAMA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAMA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAEA;AAAA;AACA;AAAA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAWA;AAAA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AACA;AAGA;AAAA;AACA;AAAA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AAKA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5WA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AAAA;AACA;AAGA;AAAA;AAGA;AAGA;AAAA;AAGA;AAGA;AAAA;AAGA;AAGA;AAAA;AAGA;AAGA;AAAA;AAGA;AAGA;AAAA;AAGA;AAGA;AAAA;AAGA;AAGA;AAAA;AAGA;AAGA;AAAA;AAGA;AAGA;AAAA;AAGA;AAQA;AACA;AACA;AAEA;AAeA;AAAA;AAdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AAGA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAEA;;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAGA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAIA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAKA;AAAA;AAEA;AAEA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAIA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AAEA;AAEA;AAAA;AAEA;AACA;AAAA;AACA;AACA;AAAA;AAEA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AAAA;AAAA;AAIA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAjBA;AAAA;AAAA;AAmBA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAlBA;AAAA;AAAA;AAoBA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAGA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;ACxKA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AAEA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAIA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AAEA;;;;;;;;;;;;;;AC/BA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AApBA;AAAA;AAAA;AAsBA;AAAA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAGA;AACA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAGA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtLA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAIA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAEA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAEA;AACA;AACA;AAAA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;AC/EA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAIA;AAAA;AAIA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAKA;AAAA;AACA;AAAA;AAAA;AAEA;AAEA;AAAA;AAIA;AACA;AAAA;AAEA;AAGA;AAAA;AAAA;AAEA;AAAA;AACA;AACA;AAGA;AAEA;;;;;;;;;;;;;;AC1EA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;ACpCA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAKA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAKA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAEA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAKA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AAAA;AACA;AACA;;AAEA;AACA;AAGA;AACA;AACA;;AAEA;AACA;AAGA;AACA;AACA;AAEA;AAAA;AAAA;AACA;;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AAAA;;AAGA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AApEA;AAAA;AAAA;AAsEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAAA;AAZA;AAAA;AAAA;AAcA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AArCA;AAAA;AAAA;AAuCA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAKA;AACA;AACA;AACA;AACA;AAAA;AAnCA;AAAA;AAAA;AAqCA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAKA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAPA;AAAA;AAAA;AAAA;AAQA;AAEA;AAAA;AAnCA;AAAA;AAAA;AAqCA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AAGA;AAEA;AAIA;AAEA;AAAA;AACA;AAIA;AAGA;AAAA;AAAA;AACA;AAKA;AACA;AACA;AACA;AAEA;AAKA;AAAA;AACA;AAUA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AACA;AAGA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAGA;AAAA;AACA;AAAA;AAAA;AAQA;AAAA;AAAA;AAAA;AACA;AAIA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAIA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAHA;AAAA;AAAA;AAAA;AAIA;AAEA;AAAA;AAhCA;AAAA;AAAA;AAkCA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAGA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAKA;AACA;AAGA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAGA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAKA;AACA;AACA;AAAA;AAnBA;AAAA;AAAA;AAqBA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;AC1MA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AAGA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;;AAGA;AACA;AAAA;AAAA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;ACjSA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAEA;AAEA;AAEA;AACA;AAEA;AAAA;AAAA;AAGA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAEA;AACA;AAGA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;AChJA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AAAA;AAEA;AAAA;AAGA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAEA;AAEA;AAEA;AAGA;AAEA;;;;;;;;;;;;;;ACnCA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1FA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAIA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AALA;AAAA;AAAA;AAAA;AAMA;AAEA;AAAA;AA5BA;AAAA;AAAA;AA8BA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AAEA;AAGA;AACA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAGA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnIA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAKA;AACA;AAGA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AAAA;AACA;AAGA;AAAA;AAGA;AAGA;AAAA;AAGA;AAGA;AAAA;AAGA;AAGA;AAAA;AAGA;AAGA;AAAA;AAGA;AAGA;AAAA;AAGA;AAGA;AAAA;AAGA;AAEA;AAgBA;AAAA;AAfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAEA;AACA;AAAA;AACA;AACA;AAAA;AAEA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAGA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;;;;AC5LA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AAEA;AAEA;AAAA;AAIA;AAEA;AAKA;AAEA;AACA;AAEA;AAAA;AACA;AACA;AACA;;;;;;;;;;;ACzBA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACPA;AACA;AACA;AACA;AACA;;;;;ACJA;;;;;ACAA;;;;;ACAA;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC9YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AErgBA;AACA;AACA;AACA","sources":["webpack://@egovernments/digit-ui-module-core/webpack/universalModuleDefinition","webpack://@egovernments/digit-ui-module-core/../../../node_modules/css-mediaquery/index.js","webpack://@egovernments/digit-ui-module-core/../../../node_modules/hyphenate-style-name/index.js","webpack://@egovernments/digit-ui-module-core/../../../node_modules/matchmediaquery/index.js","webpack://@egovernments/digit-ui-module-core/../../../node_modules/object-assign/index.js","webpack://@egovernments/digit-ui-module-core/../../../node_modules/prop-types/checkPropTypes.js","webpack://@egovernments/digit-ui-module-core/../../../node_modules/prop-types/factoryWithTypeCheckers.js","webpack://@egovernments/digit-ui-module-core/../../../node_modules/prop-types/index.js","webpack://@egovernments/digit-ui-module-core/../../../node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://@egovernments/digit-ui-module-core/../../../node_modules/prop-types/lib/has.js","webpack://@egovernments/digit-ui-module-core/../../../node_modules/react-hook-form/dist/index.esm.mjs","webpack://@egovernments/digit-ui-module-core/../../../node_modules/react-is/cjs/react-is.development.js","webpack://@egovernments/digit-ui-module-core/../../../node_modules/react-is/index.js","webpack://@egovernments/digit-ui-module-core/../../../node_modules/react/cjs/react-jsx-runtime.development.js","webpack://@egovernments/digit-ui-module-core/../../../node_modules/react/jsx-runtime.js","webpack://@egovernments/digit-ui-module-core/./node_modules/react-responsive/dist/esm/index.js","webpack://@egovernments/digit-ui-module-core/./node_modules/shallow-equal/dist/index.modern.mjs","webpack://@egovernments/digit-ui-module-core/./src/App.js","webpack://@egovernments/digit-ui-module-core/./src/Module.js","webpack://@egovernments/digit-ui-module-core/./src/components/AppModules.js","webpack://@egovernments/digit-ui-module-core/./src/components/Background.js","webpack://@egovernments/digit-ui-module-core/./src/components/ChangeCity.js","webpack://@egovernments/digit-ui-module-core/./src/components/ChangeLanguage.js","webpack://@egovernments/digit-ui-module-core/./src/components/CustomErrorComponent.js","webpack://@egovernments/digit-ui-module-core/./src/components/Dialog/LogoutDialog.js","webpack://@egovernments/digit-ui-module-core/./src/components/DummyLoader.js","webpack://@egovernments/digit-ui-module-core/./src/components/DynamicModuleLoader.js","webpack://@egovernments/digit-ui-module-core/./src/components/EmployeeSSOLoginOptions.js","webpack://@egovernments/digit-ui-module-core/./src/components/ErrorBoundaries.js","webpack://@egovernments/digit-ui-module-core/./src/components/ErrorComponent.js","webpack://@egovernments/digit-ui-module-core/./src/components/ForgotOrganizationTooltip.js","webpack://@egovernments/digit-ui-module-core/./src/components/Header.js","webpack://@egovernments/digit-ui-module-core/./src/components/Home.js","webpack://@egovernments/digit-ui-module-core/./src/components/ImageComponent.js","webpack://@egovernments/digit-ui-module-core/./src/components/LoginSignupSelector.js","webpack://@egovernments/digit-ui-module-core/./src/components/PrivacyComponent.js","webpack://@egovernments/digit-ui-module-core/./src/components/RoleBasedEmployeeHome.js","webpack://@egovernments/digit-ui-module-core/./src/components/Search/MobileSearchApplication.js","webpack://@egovernments/digit-ui-module-core/./src/components/Search/SearchFields.js","webpack://@egovernments/digit-ui-module-core/./src/components/Search/index.js","webpack://@egovernments/digit-ui-module-core/./src/components/TopBarSideBar/SideBar/CitizenSideBar.js","webpack://@egovernments/digit-ui-module-core/./src/components/TopBarSideBar/SideBar/CitizenSideNav.js","webpack://@egovernments/digit-ui-module-core/./src/components/TopBarSideBar/SideBar/EmployeeSideBar.js","webpack://@egovernments/digit-ui-module-core/./src/components/TopBarSideBar/SideBar/StaticCitizenSideBar.js","webpack://@egovernments/digit-ui-module-core/./src/components/TopBarSideBar/SideBar/index.js","webpack://@egovernments/digit-ui-module-core/./src/components/TopBarSideBar/TopBar.js","webpack://@egovernments/digit-ui-module-core/./src/components/TopBarSideBar/index.js","webpack://@egovernments/digit-ui-module-core/./src/components/utils.js","webpack://@egovernments/digit-ui-module-core/./src/config/sidebar-menu.js","webpack://@egovernments/digit-ui-module-core/./src/hoc/withAutoFocusMain.js","webpack://@egovernments/digit-ui-module-core/./src/hooks/useInterval.js","webpack://@egovernments/digit-ui-module-core/./src/hooks/useLoginConfig.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/FAQs/FAQs.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/FAQs/FaqComponent.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Home/ImageUpload/UploadDrawer.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Home/IndividualUserProfile.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Home/LanguageSelection.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Home/LocationSelection.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Home/UserProfile.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Home/index.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/HowItWorks/howItWorks.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Login/IndividualLogin.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Login/SelectMobileNumber.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Login/SelectName.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Login/SelectOtp.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Login/config.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/Login/index.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/SearchApp.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/StaticDynamicComponent/StaticDynamicCard.js","webpack://@egovernments/digit-ui-module-core/./src/pages/citizen/index.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/ChangePassword/changePassword.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/ChangePassword/config.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/ChangePassword/index.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/ForgotPassword/config.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/ForgotPassword/forgotPassword.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/ForgotPassword/index.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/LanguageSelection/index.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/Login/Carousel/Carousel.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/Login/ConfigOtp.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/Login/config.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/Login/index.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/Login/login.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/Otp/OtpCustomComponent.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/Otp/index.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/QuickStart/Config.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/QuickStart/QuickSetup.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/QuickStart/index.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/SignUp/config.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/SignUp/index.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/SignUp/signUp.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/ViewUrl/index.js","webpack://@egovernments/digit-ui-module-core/./src/pages/employee/index.js","webpack://@egovernments/digit-ui-module-core/./src/redux/reducers/index.js","webpack://@egovernments/digit-ui-module-core/./src/redux/store.js","webpack://@egovernments/digit-ui-module-core/external umd \"@egovernments/digit-ui-components\"","webpack://@egovernments/digit-ui-module-core/external umd \"@egovernments/digit-ui-react-components\"","webpack://@egovernments/digit-ui-module-core/external umd \"@egovernments/digit-ui-svg-components\"","webpack://@egovernments/digit-ui-module-core/external umd \"@tanstack/react-query\"","webpack://@egovernments/digit-ui-module-core/external umd \"React\"","webpack://@egovernments/digit-ui-module-core/external umd \"react-i18next\"","webpack://@egovernments/digit-ui-module-core/external umd \"react-redux\"","webpack://@egovernments/digit-ui-module-core/external umd \"react-router-dom\"","webpack://@egovernments/digit-ui-module-core/external umd \"redux\"","webpack://@egovernments/digit-ui-module-core/external umd \"redux-thunk\"","webpack://@egovernments/digit-ui-module-core/webpack/bootstrap","webpack://@egovernments/digit-ui-module-core/webpack/runtime/compat get default export","webpack://@egovernments/digit-ui-module-core/webpack/runtime/define property getters","webpack://@egovernments/digit-ui-module-core/webpack/runtime/get javascript update chunk filename","webpack://@egovernments/digit-ui-module-core/webpack/runtime/get update manifest filename","webpack://@egovernments/digit-ui-module-core/webpack/runtime/getFullHash","webpack://@egovernments/digit-ui-module-core/webpack/runtime/hasOwnProperty shorthand","webpack://@egovernments/digit-ui-module-core/webpack/runtime/load script","webpack://@egovernments/digit-ui-module-core/webpack/runtime/make namespace object","webpack://@egovernments/digit-ui-module-core/webpack/runtime/hot module replacement","webpack://@egovernments/digit-ui-module-core/webpack/runtime/publicPath","webpack://@egovernments/digit-ui-module-core/webpack/runtime/jsonp chunk loading","webpack://@egovernments/digit-ui-module-core/webpack/before-startup","webpack://@egovernments/digit-ui-module-core/webpack/startup","webpack://@egovernments/digit-ui-module-core/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@egovernments/digit-ui-components\"), require(\"React\"), require(\"react-i18next\"), require(\"@tanstack/react-query\"), require(\"react-redux\"), require(\"react-router-dom\"), require(\"@egovernments/digit-ui-svg-components\"), require(\"@egovernments/digit-ui-react-components\"), require(\"redux\"), require(\"redux-thunk\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@egovernments/digit-ui-components\", \"React\", \"react-i18next\", \"@tanstack/react-query\", \"react-redux\", \"react-router-dom\", \"@egovernments/digit-ui-svg-components\", \"@egovernments/digit-ui-react-components\", \"redux\", \"redux-thunk\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@egovernments/digit-ui-module-core\"] = factory(require(\"@egovernments/digit-ui-components\"), require(\"React\"), require(\"react-i18next\"), require(\"@tanstack/react-query\"), require(\"react-redux\"), require(\"react-router-dom\"), require(\"@egovernments/digit-ui-svg-components\"), require(\"@egovernments/digit-ui-react-components\"), require(\"redux\"), require(\"redux-thunk\"));\n\telse\n\t\troot[\"@egovernments/digit-ui-module-core\"] = factory(root[\"@egovernments/digit-ui-components\"], root[\"React\"], root[\"react-i18next\"], root[\"@tanstack/react-query\"], root[\"react-redux\"], root[\"react-router-dom\"], root[\"@egovernments/digit-ui-svg-components\"], root[\"@egovernments/digit-ui-react-components\"], root[\"redux\"], root[\"redux-thunk\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE__egovernments_digit_ui_components__, __WEBPACK_EXTERNAL_MODULE_react__, __WEBPACK_EXTERNAL_MODULE_react_i18next__, __WEBPACK_EXTERNAL_MODULE__tanstack_react_query__, __WEBPACK_EXTERNAL_MODULE_react_redux__, __WEBPACK_EXTERNAL_MODULE_react_router_dom__, __WEBPACK_EXTERNAL_MODULE__egovernments_digit_ui_svg_components__, __WEBPACK_EXTERNAL_MODULE__egovernments_digit_ui_react_components__, __WEBPACK_EXTERNAL_MODULE_redux__, __WEBPACK_EXTERNAL_MODULE_redux_thunk__) => {\nreturn ","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n'use strict';\n\nexports.match = matchQuery;\nexports.parse = parseQuery;\n\n// -----------------------------------------------------------------------------\n\nvar RE_MEDIA_QUERY = /(?:(only|not)?\\s*([^\\s\\(\\)]+)(?:\\s*and)?\\s*)?(.+)?/i,\n RE_MQ_EXPRESSION = /\\(\\s*([^\\s\\:\\)]+)\\s*(?:\\:\\s*([^\\s\\)]+))?\\s*\\)/,\n RE_MQ_FEATURE = /^(?:(min|max)-)?(.+)/,\n RE_LENGTH_UNIT = /(em|rem|px|cm|mm|in|pt|pc)?$/,\n RE_RESOLUTION_UNIT = /(dpi|dpcm|dppx)?$/;\n\nfunction matchQuery(mediaQuery, values) {\n return parseQuery(mediaQuery).some(function (query) {\n var inverse = query.inverse;\n\n // Either the parsed or specified `type` is \"all\", or the types must be\n // equal for a match.\n var typeMatch = query.type === 'all' || values.type === query.type;\n\n // Quit early when `type` doesn't match, but take \"not\" into account.\n if ((typeMatch && inverse) || !(typeMatch || inverse)) {\n return false;\n }\n\n var expressionsMatch = query.expressions.every(function (expression) {\n var feature = expression.feature,\n modifier = expression.modifier,\n expValue = expression.value,\n value = values[feature];\n\n // Missing or falsy values don't match.\n if (!value) { return false; }\n\n switch (feature) {\n case 'orientation':\n case 'scan':\n return value.toLowerCase() === expValue.toLowerCase();\n\n case 'width':\n case 'height':\n case 'device-width':\n case 'device-height':\n expValue = toPx(expValue);\n value = toPx(value);\n break;\n\n case 'resolution':\n expValue = toDpi(expValue);\n value = toDpi(value);\n break;\n\n case 'aspect-ratio':\n case 'device-aspect-ratio':\n case /* Deprecated */ 'device-pixel-ratio':\n expValue = toDecimal(expValue);\n value = toDecimal(value);\n break;\n\n case 'grid':\n case 'color':\n case 'color-index':\n case 'monochrome':\n expValue = parseInt(expValue, 10) || 1;\n value = parseInt(value, 10) || 0;\n break;\n }\n\n switch (modifier) {\n case 'min': return value >= expValue;\n case 'max': return value <= expValue;\n default : return value === expValue;\n }\n });\n\n return (expressionsMatch && !inverse) || (!expressionsMatch && inverse);\n });\n}\n\nfunction parseQuery(mediaQuery) {\n return mediaQuery.split(',').map(function (query) {\n query = query.trim();\n\n var captures = query.match(RE_MEDIA_QUERY),\n modifier = captures[1],\n type = captures[2],\n expressions = captures[3] || '',\n parsed = {};\n\n parsed.inverse = !!modifier && modifier.toLowerCase() === 'not';\n parsed.type = type ? type.toLowerCase() : 'all';\n\n // Split expressions into a list.\n expressions = expressions.match(/\\([^\\)]+\\)/g) || [];\n\n parsed.expressions = expressions.map(function (expression) {\n var captures = expression.match(RE_MQ_EXPRESSION),\n feature = captures[1].toLowerCase().match(RE_MQ_FEATURE);\n\n return {\n modifier: feature[1],\n feature : feature[2],\n value : captures[2]\n };\n });\n\n return parsed;\n });\n}\n\n// -- Utilities ----------------------------------------------------------------\n\nfunction toDecimal(ratio) {\n var decimal = Number(ratio),\n numbers;\n\n if (!decimal) {\n numbers = ratio.match(/^(\\d+)\\s*\\/\\s*(\\d+)$/);\n decimal = numbers[1] / numbers[2];\n }\n\n return decimal;\n}\n\nfunction toDpi(resolution) {\n var value = parseFloat(resolution),\n units = String(resolution).match(RE_RESOLUTION_UNIT)[1];\n\n switch (units) {\n case 'dpcm': return value / 2.54;\n case 'dppx': return value * 96;\n default : return value;\n }\n}\n\nfunction toPx(length) {\n var value = parseFloat(length),\n units = String(length).match(RE_LENGTH_UNIT)[1];\n\n switch (units) {\n case 'em' : return value * 16;\n case 'rem': return value * 16;\n case 'cm' : return value * 96 / 2.54;\n case 'mm' : return value * 96 / 2.54 / 10;\n case 'in' : return value * 96;\n case 'pt' : return value * 72;\n case 'pc' : return value * 72 / 12;\n default : return value;\n }\n}\n","/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\nexport default hyphenateStyleName\n","'use strict';\n\nvar staticMatch = require('css-mediaquery').match;\nvar dynamicMatch = typeof window !== 'undefined' ? window.matchMedia : null;\n\n// our fake MediaQueryList\nfunction Mql(query, values, forceStatic){\n var self = this;\n var mql;\n\n // matchMedia will return null in FF when it's called in a hidden iframe\n // ref: https://stackoverflow.com/a/12330568\n if(dynamicMatch && !forceStatic) mql = dynamicMatch.call(window, query);\n\n if (mql) {\n this.matches = mql.matches;\n this.media = mql.media;\n // TODO: is there a time it makes sense to remove this listener?\n mql.addListener(update);\n } else {\n this.matches = staticMatch(query, values);\n this.media = query;\n }\n\n this.addListener = addListener;\n this.removeListener = removeListener;\n this.dispose = dispose;\n\n function addListener(listener){\n if(mql){\n mql.addListener(listener);\n }\n }\n\n function removeListener(listener){\n if(mql){\n mql.removeListener(listener);\n }\n }\n\n // update ourselves!\n function update(evt){\n self.matches = evt.matches;\n self.media = evt.media;\n }\n\n function dispose(){\n if(mql){\n mql.removeListener(update);\n }\n }\n}\n\nfunction matchMedia(query, values, forceStatic){\n return new Mql(query, values, forceStatic);\n}\n\nmodule.exports = matchMedia;\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","/**\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\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 * 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","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","import React from 'react';\n\nvar isCheckBoxInput = (element) => element.type === 'checkbox';\n\nvar isDateObject = (value) => value instanceof Date;\n\nvar isNullOrUndefined = (value) => value == null;\n\nconst isObjectType = (value) => typeof value === 'object';\nvar isObject = (value) => !isNullOrUndefined(value) &&\n !Array.isArray(value) &&\n isObjectType(value) &&\n !isDateObject(value);\n\nvar getEventValue = (event) => isObject(event) && event.target\n ? isCheckBoxInput(event.target)\n ? event.target.checked\n : event.target.value\n : event;\n\nvar getNodeParentName = (name) => name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\n\nvar isNameInFieldArray = (names, name) => names.has(getNodeParentName(name));\n\nvar isPlainObject = (tempObject) => {\n const prototypeCopy = tempObject.constructor && tempObject.constructor.prototype;\n return (isObject(prototypeCopy) && prototypeCopy.hasOwnProperty('isPrototypeOf'));\n};\n\nvar isWeb = typeof window !== 'undefined' &&\n typeof window.HTMLElement !== 'undefined' &&\n typeof document !== 'undefined';\n\nfunction cloneObject(data) {\n let copy;\n const isArray = Array.isArray(data);\n if (data instanceof Date) {\n copy = new Date(data);\n }\n else if (data instanceof Set) {\n copy = new Set(data);\n }\n else if (!(isWeb && (data instanceof Blob || data instanceof FileList)) &&\n (isArray || isObject(data))) {\n copy = isArray ? [] : {};\n if (!isArray && !isPlainObject(data)) {\n copy = data;\n }\n else {\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n copy[key] = cloneObject(data[key]);\n }\n }\n }\n }\n else {\n return data;\n }\n return copy;\n}\n\nvar compact = (value) => Array.isArray(value) ? value.filter(Boolean) : [];\n\nvar isUndefined = (val) => val === undefined;\n\nvar get = (object, path, defaultValue) => {\n if (!path || !isObject(object)) {\n return defaultValue;\n }\n const result = compact(path.split(/[,[\\].]+?/)).reduce((result, key) => isNullOrUndefined(result) ? result : result[key], object);\n return isUndefined(result) || result === object\n ? isUndefined(object[path])\n ? defaultValue\n : object[path]\n : result;\n};\n\nvar isBoolean = (value) => typeof value === 'boolean';\n\nvar isKey = (value) => /^\\w*$/.test(value);\n\nvar stringToPath = (input) => compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n\nvar set = (object, path, value) => {\n let index = -1;\n const tempPath = isKey(path) ? [path] : stringToPath(path);\n const length = tempPath.length;\n const lastIndex = length - 1;\n while (++index < length) {\n const key = tempPath[index];\n let newValue = value;\n if (index !== lastIndex) {\n const objValue = object[key];\n newValue =\n isObject(objValue) || Array.isArray(objValue)\n ? objValue\n : !isNaN(+tempPath[index + 1])\n ? []\n : {};\n }\n if (key === '__proto__') {\n return;\n }\n object[key] = newValue;\n object = object[key];\n }\n return object;\n};\n\nconst EVENTS = {\n BLUR: 'blur',\n FOCUS_OUT: 'focusout',\n CHANGE: 'change',\n};\nconst VALIDATION_MODE = {\n onBlur: 'onBlur',\n onChange: 'onChange',\n onSubmit: 'onSubmit',\n onTouched: 'onTouched',\n all: 'all',\n};\nconst INPUT_VALIDATION_RULES = {\n max: 'max',\n min: 'min',\n maxLength: 'maxLength',\n minLength: 'minLength',\n pattern: 'pattern',\n required: 'required',\n validate: 'validate',\n};\n\nconst HookFormContext = React.createContext(null);\n/**\n * This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @returns return all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst useFormContext = () => React.useContext(HookFormContext);\n/**\n * A provider component that propagates the `useForm` methods to all children components via [React Context](https://reactjs.org/docs/context.html) API. To be used with {@link useFormContext}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @param props - all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst FormProvider = (props) => {\n const { children, ...data } = props;\n return (React.createElement(HookFormContext.Provider, { value: data }, children));\n};\n\nvar getProxyFormState = (formState, control, localProxyFormState, isRoot = true) => {\n const result = {\n defaultValues: control._defaultValues,\n };\n for (const key in formState) {\n Object.defineProperty(result, key, {\n get: () => {\n const _key = key;\n if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\n control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n }\n localProxyFormState && (localProxyFormState[_key] = true);\n return formState[_key];\n },\n });\n }\n return result;\n};\n\nvar isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;\n\nvar shouldRenderFormState = (formStateData, _proxyFormState, updateFormState, isRoot) => {\n updateFormState(formStateData);\n const { name, ...formState } = formStateData;\n return (isEmptyObject(formState) ||\n Object.keys(formState).length >= Object.keys(_proxyFormState).length ||\n Object.keys(formState).find((key) => _proxyFormState[key] ===\n (!isRoot || VALIDATION_MODE.all)));\n};\n\nvar convertToArrayPayload = (value) => (Array.isArray(value) ? value : [value]);\n\nvar shouldSubscribeByName = (name, signalName, exact) => !name ||\n !signalName ||\n name === signalName ||\n convertToArrayPayload(name).some((currentName) => currentName &&\n (exact\n ? currentName === signalName\n : currentName.startsWith(signalName) ||\n signalName.startsWith(currentName)));\n\nfunction useSubscribe(props) {\n const _props = React.useRef(props);\n _props.current = props;\n React.useEffect(() => {\n const subscription = !props.disabled &&\n _props.current.subject &&\n _props.current.subject.subscribe({\n next: _props.current.next,\n });\n return () => {\n subscription && subscription.unsubscribe();\n };\n }, [props.disabled]);\n}\n\n/**\n * This custom hook allows you to subscribe to each form state, and isolate the re-render at the custom hook level. It has its scope in terms of form state subscription, so it would not affect other useFormState and useForm. Using this hook can reduce the re-render impact on large and complex form application.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformstate) • [Demo](https://codesandbox.io/s/useformstate-75xly)\n *\n * @param props - include options on specify fields to subscribe. {@link UseFormStateReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, control } = useForm({\n * defaultValues: {\n * firstName: \"firstName\"\n * }});\n * const { dirtyFields } = useFormState({\n * control\n * });\n * const onSubmit = (data) => console.log(data);\n *\n * return (\n * <form onSubmit={handleSubmit(onSubmit)}>\n * <input {...register(\"firstName\")} placeholder=\"First Name\" />\n * {dirtyFields.firstName && <p>Field is dirty.</p>}\n * <input type=\"submit\" />\n * </form>\n * );\n * }\n * ```\n */\nfunction useFormState(props) {\n const methods = useFormContext();\n const { control = methods.control, disabled, name, exact } = props || {};\n const [formState, updateFormState] = React.useState(control._formState);\n const _mounted = React.useRef(true);\n const _localProxyFormState = React.useRef({\n isDirty: false,\n isLoading: false,\n dirtyFields: false,\n touchedFields: false,\n validatingFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n });\n const _name = React.useRef(name);\n _name.current = name;\n useSubscribe({\n disabled,\n next: (value) => _mounted.current &&\n shouldSubscribeByName(_name.current, value.name, exact) &&\n shouldRenderFormState(value, _localProxyFormState.current, control._updateFormState) &&\n updateFormState({\n ...control._formState,\n ...value,\n }),\n subject: control._subjects.state,\n });\n React.useEffect(() => {\n _mounted.current = true;\n _localProxyFormState.current.isValid && control._updateValid(true);\n return () => {\n _mounted.current = false;\n };\n }, [control]);\n return getProxyFormState(formState, control, _localProxyFormState.current, false);\n}\n\nvar isString = (value) => typeof value === 'string';\n\nvar generateWatchOutput = (names, _names, formValues, isGlobal, defaultValue) => {\n if (isString(names)) {\n isGlobal && _names.watch.add(names);\n return get(formValues, names, defaultValue);\n }\n if (Array.isArray(names)) {\n return names.map((fieldName) => (isGlobal && _names.watch.add(fieldName), get(formValues, fieldName)));\n }\n isGlobal && (_names.watchAll = true);\n return formValues;\n};\n\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n * name: \"fieldName\"\n * control,\n * })\n * ```\n */\nfunction useWatch(props) {\n const methods = useFormContext();\n const { control = methods.control, name, defaultValue, disabled, exact, } = props || {};\n const _name = React.useRef(name);\n _name.current = name;\n useSubscribe({\n disabled,\n subject: control._subjects.values,\n next: (formState) => {\n if (shouldSubscribeByName(_name.current, formState.name, exact)) {\n updateValue(cloneObject(generateWatchOutput(_name.current, control._names, formState.values || control._formValues, false, defaultValue)));\n }\n },\n });\n const [value, updateValue] = React.useState(control._getWatch(name, defaultValue));\n React.useEffect(() => control._removeUnmounted());\n return value;\n}\n\n/**\n * Custom hook to work with controlled component, this function provide you with both form and field level state. Re-render is isolated at the hook level.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns field properties, field and form state. {@link UseControllerReturn}\n *\n * @example\n * ```tsx\n * function Input(props) {\n * const { field, fieldState, formState } = useController(props);\n * return (\n * <div>\n * <input {...field} placeholder={props.name} />\n * <p>{fieldState.isTouched && \"Touched\"}</p>\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n * </div>\n * );\n * }\n * ```\n */\nfunction useController(props) {\n const methods = useFormContext();\n const { name, disabled, control = methods.control, shouldUnregister } = props;\n const isArrayField = isNameInFieldArray(control._names.array, name);\n const value = useWatch({\n control,\n name,\n defaultValue: get(control._formValues, name, get(control._defaultValues, name, props.defaultValue)),\n exact: true,\n });\n const formState = useFormState({\n control,\n name,\n exact: true,\n });\n const _registerProps = React.useRef(control.register(name, {\n ...props.rules,\n value,\n ...(isBoolean(props.disabled) ? { disabled: props.disabled } : {}),\n }));\n React.useEffect(() => {\n const _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;\n const updateMounted = (name, value) => {\n const field = get(control._fields, name);\n if (field && field._f) {\n field._f.mount = value;\n }\n };\n updateMounted(name, true);\n if (_shouldUnregisterField) {\n const value = cloneObject(get(control._options.defaultValues, name));\n set(control._defaultValues, name, value);\n if (isUndefined(get(control._formValues, name))) {\n set(control._formValues, name, value);\n }\n }\n return () => {\n (isArrayField\n ? _shouldUnregisterField && !control._state.action\n : _shouldUnregisterField)\n ? control.unregister(name)\n : updateMounted(name, false);\n };\n }, [name, control, isArrayField, shouldUnregister]);\n React.useEffect(() => {\n if (get(control._fields, name)) {\n control._updateDisabledField({\n disabled,\n fields: control._fields,\n name,\n value: get(control._fields, name)._f.value,\n });\n }\n }, [disabled, name, control]);\n return {\n field: {\n name,\n value,\n ...(isBoolean(disabled) || formState.disabled\n ? { disabled: formState.disabled || disabled }\n : {}),\n onChange: React.useCallback((event) => _registerProps.current.onChange({\n target: {\n value: getEventValue(event),\n name: name,\n },\n type: EVENTS.CHANGE,\n }), [name]),\n onBlur: React.useCallback(() => _registerProps.current.onBlur({\n target: {\n value: get(control._formValues, name),\n name: name,\n },\n type: EVENTS.BLUR,\n }), [name, control]),\n ref: React.useCallback((elm) => {\n const field = get(control._fields, name);\n if (field && elm) {\n field._f.ref = {\n focus: () => elm.focus(),\n select: () => elm.select(),\n setCustomValidity: (message) => elm.setCustomValidity(message),\n reportValidity: () => elm.reportValidity(),\n };\n }\n }, [control._fields, name]),\n },\n formState,\n fieldState: Object.defineProperties({}, {\n invalid: {\n enumerable: true,\n get: () => !!get(formState.errors, name),\n },\n isDirty: {\n enumerable: true,\n get: () => !!get(formState.dirtyFields, name),\n },\n isTouched: {\n enumerable: true,\n get: () => !!get(formState.touchedFields, name),\n },\n isValidating: {\n enumerable: true,\n get: () => !!get(formState.validatingFields, name),\n },\n error: {\n enumerable: true,\n get: () => get(formState.errors, name),\n },\n }),\n };\n}\n\n/**\n * Component based on `useController` hook to work with controlled component.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller/controller) • [Demo](https://codesandbox.io/s/react-hook-form-v6-controller-ts-jwyzw) • [Video](https://www.youtube.com/watch?v=N2UNk_UCVyA)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns provide field handler functions, field and form state.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control } = useForm<FormValues>({\n * defaultValues: {\n * test: \"\"\n * }\n * });\n *\n * return (\n * <form>\n * <Controller\n * control={control}\n * name=\"test\"\n * render={({ field: { onChange, onBlur, value, ref }, formState, fieldState }) => (\n * <>\n * <input\n * onChange={onChange} // send value to hook form\n * onBlur={onBlur} // notify when input is touched\n * value={value} // return updated value\n * ref={ref} // set ref for focus management\n * />\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n * <p>{fieldState.isTouched ? \"touched\" : \"\"}</p>\n * </>\n * )}\n * />\n * </form>\n * );\n * }\n * ```\n */\nconst Controller = (props) => props.render(useController(props));\n\nconst POST_REQUEST = 'post';\n/**\n * Form component to manage submission.\n *\n * @param props - to setup submission detail. {@link FormProps}\n *\n * @returns form component or headless render prop.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control, formState: { errors } } = useForm();\n *\n * return (\n * <Form action=\"/api\" control={control}>\n * <input {...register(\"name\")} />\n * <p>{errors?.root?.server && 'Server error'}</p>\n * <button>Submit</button>\n * </Form>\n * );\n * }\n * ```\n */\nfunction Form(props) {\n const methods = useFormContext();\n const [mounted, setMounted] = React.useState(false);\n const { control = methods.control, onSubmit, children, action, method = POST_REQUEST, headers, encType, onError, render, onSuccess, validateStatus, ...rest } = props;\n const submit = async (event) => {\n let hasError = false;\n let type = '';\n await control.handleSubmit(async (data) => {\n const formData = new FormData();\n let formDataJson = '';\n try {\n formDataJson = JSON.stringify(data);\n }\n catch (_a) { }\n for (const name of control._names.mount) {\n formData.append(name, get(data, name));\n }\n if (onSubmit) {\n await onSubmit({\n data,\n event,\n method,\n formData,\n formDataJson,\n });\n }\n if (action) {\n try {\n const shouldStringifySubmissionData = [\n headers && headers['Content-Type'],\n encType,\n ].some((value) => value && value.includes('json'));\n const response = await fetch(action, {\n method,\n headers: {\n ...headers,\n ...(encType ? { 'Content-Type': encType } : {}),\n },\n body: shouldStringifySubmissionData ? formDataJson : formData,\n });\n if (response &&\n (validateStatus\n ? !validateStatus(response.status)\n : response.status < 200 || response.status >= 300)) {\n hasError = true;\n onError && onError({ response });\n type = String(response.status);\n }\n else {\n onSuccess && onSuccess({ response });\n }\n }\n catch (error) {\n hasError = true;\n onError && onError({ error });\n }\n }\n })(event);\n if (hasError && props.control) {\n props.control._subjects.state.next({\n isSubmitSuccessful: false,\n });\n props.control.setError('root.server', {\n type,\n });\n }\n };\n React.useEffect(() => {\n setMounted(true);\n }, []);\n return render ? (React.createElement(React.Fragment, null, render({\n submit,\n }))) : (React.createElement(\"form\", { noValidate: mounted, action: action, method: method, encType: encType, onSubmit: submit, ...rest }, children));\n}\n\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria\n ? {\n ...errors[name],\n types: {\n ...(errors[name] && errors[name].types ? errors[name].types : {}),\n [type]: message || true,\n },\n }\n : {};\n\nvar generateId = () => {\n const d = typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16 + d) % 16 | 0;\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n};\n\nvar getFocusFieldName = (name, index, options = {}) => options.shouldFocus || isUndefined(options.shouldFocus)\n ? options.focusName ||\n `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.`\n : '';\n\nvar getValidationModes = (mode) => ({\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n isOnBlur: mode === VALIDATION_MODE.onBlur,\n isOnChange: mode === VALIDATION_MODE.onChange,\n isOnAll: mode === VALIDATION_MODE.all,\n isOnTouch: mode === VALIDATION_MODE.onTouched,\n});\n\nvar isWatched = (name, _names, isBlurEvent) => !isBlurEvent &&\n (_names.watchAll ||\n _names.watch.has(name) ||\n [..._names.watch].some((watchName) => name.startsWith(watchName) &&\n /^\\.\\w+/.test(name.slice(watchName.length))));\n\nconst iterateFieldsByAction = (fields, action, fieldsNames, abortEarly) => {\n for (const key of fieldsNames || Object.keys(fields)) {\n const field = get(fields, key);\n if (field) {\n const { _f, ...currentField } = field;\n if (_f) {\n if (_f.refs && _f.refs[0] && action(_f.refs[0], key) && !abortEarly) {\n break;\n }\n else if (_f.ref && action(_f.ref, _f.name) && !abortEarly) {\n break;\n }\n else {\n iterateFieldsByAction(currentField, action);\n }\n }\n else if (isObject(currentField)) {\n iterateFieldsByAction(currentField, action);\n }\n }\n }\n};\n\nvar updateFieldArrayRootError = (errors, error, name) => {\n const fieldArrayErrors = convertToArrayPayload(get(errors, name));\n set(fieldArrayErrors, 'root', error[name]);\n set(errors, name, fieldArrayErrors);\n return errors;\n};\n\nvar isFileInput = (element) => element.type === 'file';\n\nvar isFunction = (value) => typeof value === 'function';\n\nvar isHTMLElement = (value) => {\n if (!isWeb) {\n return false;\n }\n const owner = value ? value.ownerDocument : 0;\n return (value instanceof\n (owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement));\n};\n\nvar isMessage = (value) => isString(value);\n\nvar isRadioInput = (element) => element.type === 'radio';\n\nvar isRegex = (value) => value instanceof RegExp;\n\nconst defaultResult = {\n value: false,\n isValid: false,\n};\nconst validResult = { value: true, isValid: true };\nvar getCheckboxValue = (options) => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options\n .filter((option) => option && option.checked && !option.disabled)\n .map((option) => option.value);\n return { value: values, isValid: !!values.length };\n }\n return options[0].checked && !options[0].disabled\n ? // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value)\n ? isUndefined(options[0].value) || options[0].value === ''\n ? validResult\n : { value: options[0].value, isValid: true }\n : validResult\n : defaultResult;\n }\n return defaultResult;\n};\n\nconst defaultReturn = {\n isValid: false,\n value: null,\n};\nvar getRadioValue = (options) => Array.isArray(options)\n ? options.reduce((previous, option) => option && option.checked && !option.disabled\n ? {\n isValid: true,\n value: option.value,\n }\n : previous, defaultReturn)\n : defaultReturn;\n\nfunction getValidateError(result, ref, type = 'validate') {\n if (isMessage(result) ||\n (Array.isArray(result) && result.every(isMessage)) ||\n (isBoolean(result) && !result)) {\n return {\n type,\n message: isMessage(result) ? result : '',\n ref,\n };\n }\n}\n\nvar getValueAndMessage = (validationData) => isObject(validationData) && !isRegex(validationData)\n ? validationData\n : {\n value: validationData,\n message: '',\n };\n\nvar validateField = async (field, formValues, validateAllFieldCriteria, shouldUseNativeValidation, isFieldArray) => {\n const { ref, refs, required, maxLength, minLength, min, max, pattern, validate, name, valueAsNumber, mount, disabled, } = field._f;\n const inputValue = get(formValues, name);\n if (!mount || disabled) {\n return {};\n }\n const inputRef = refs ? refs[0] : ref;\n const setCustomValidity = (message) => {\n if (shouldUseNativeValidation && inputRef.reportValidity) {\n inputRef.setCustomValidity(isBoolean(message) ? '' : message || '');\n inputRef.reportValidity();\n }\n };\n const error = {};\n const isRadio = isRadioInput(ref);\n const isCheckBox = isCheckBoxInput(ref);\n const isRadioOrCheckbox = isRadio || isCheckBox;\n const isEmpty = ((valueAsNumber || isFileInput(ref)) &&\n isUndefined(ref.value) &&\n isUndefined(inputValue)) ||\n (isHTMLElement(ref) && ref.value === '') ||\n inputValue === '' ||\n (Array.isArray(inputValue) && !inputValue.length);\n const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\n const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\n error[name] = {\n type: exceedMax ? maxType : minType,\n message,\n ref,\n ...appendErrorsCurry(exceedMax ? maxType : minType, message),\n };\n };\n if (isFieldArray\n ? !Array.isArray(inputValue) || !inputValue.length\n : required &&\n ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\n (isBoolean(inputValue) && !inputValue) ||\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\n (isRadio && !getRadioValue(refs).isValid))) {\n const { value, message } = isMessage(required)\n ? { value: !!required, message: required }\n : getValueAndMessage(required);\n if (value) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.required,\n message,\n ref: inputRef,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\n let exceedMax;\n let exceedMin;\n const maxOutput = getValueAndMessage(max);\n const minOutput = getValueAndMessage(min);\n if (!isNullOrUndefined(inputValue) && !isNaN(inputValue)) {\n const valueNumber = ref.valueAsNumber ||\n (inputValue ? +inputValue : inputValue);\n if (!isNullOrUndefined(maxOutput.value)) {\n exceedMax = valueNumber > maxOutput.value;\n }\n if (!isNullOrUndefined(minOutput.value)) {\n exceedMin = valueNumber < minOutput.value;\n }\n }\n else {\n const valueDate = ref.valueAsDate || new Date(inputValue);\n const convertTimeToDate = (time) => new Date(new Date().toDateString() + ' ' + time);\n const isTime = ref.type == 'time';\n const isWeek = ref.type == 'week';\n if (isString(maxOutput.value) && inputValue) {\n exceedMax = isTime\n ? convertTimeToDate(inputValue) > convertTimeToDate(maxOutput.value)\n : isWeek\n ? inputValue > maxOutput.value\n : valueDate > new Date(maxOutput.value);\n }\n if (isString(minOutput.value) && inputValue) {\n exceedMin = isTime\n ? convertTimeToDate(inputValue) < convertTimeToDate(minOutput.value)\n : isWeek\n ? inputValue < minOutput.value\n : valueDate < new Date(minOutput.value);\n }\n }\n if (exceedMax || exceedMin) {\n getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name].message);\n return error;\n }\n }\n }\n if ((maxLength || minLength) &&\n !isEmpty &&\n (isString(inputValue) || (isFieldArray && Array.isArray(inputValue)))) {\n const maxLengthOutput = getValueAndMessage(maxLength);\n const minLengthOutput = getValueAndMessage(minLength);\n const exceedMax = !isNullOrUndefined(maxLengthOutput.value) &&\n inputValue.length > +maxLengthOutput.value;\n const exceedMin = !isNullOrUndefined(minLengthOutput.value) &&\n inputValue.length < +minLengthOutput.value;\n if (exceedMax || exceedMin) {\n getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name].message);\n return error;\n }\n }\n }\n if (pattern && !isEmpty && isString(inputValue)) {\n const { value: patternValue, message } = getValueAndMessage(pattern);\n if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.pattern,\n message,\n ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n if (validate) {\n if (isFunction(validate)) {\n const result = await validate(inputValue, formValues);\n const validateError = getValidateError(result, inputRef);\n if (validateError) {\n error[name] = {\n ...validateError,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(validateError.message);\n return error;\n }\n }\n }\n else if (isObject(validate)) {\n let validationResult = {};\n for (const key in validate) {\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n break;\n }\n const validateError = getValidateError(await validate[key](inputValue, formValues), inputRef, key);\n if (validateError) {\n validationResult = {\n ...validateError,\n ...appendErrorsCurry(key, validateError.message),\n };\n setCustomValidity(validateError.message);\n if (validateAllFieldCriteria) {\n error[name] = validationResult;\n }\n }\n }\n if (!isEmptyObject(validationResult)) {\n error[name] = {\n ref: inputRef,\n ...validationResult,\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n }\n setCustomValidity(true);\n return error;\n};\n\nvar appendAt = (data, value) => [\n ...data,\n ...convertToArrayPayload(value),\n];\n\nvar fillEmptyArray = (value) => Array.isArray(value) ? value.map(() => undefined) : undefined;\n\nfunction insert(data, index, value) {\n return [\n ...data.slice(0, index),\n ...convertToArrayPayload(value),\n ...data.slice(index),\n ];\n}\n\nvar moveArrayAt = (data, from, to) => {\n if (!Array.isArray(data)) {\n return [];\n }\n if (isUndefined(data[to])) {\n data[to] = undefined;\n }\n data.splice(to, 0, data.splice(from, 1)[0]);\n return data;\n};\n\nvar prependAt = (data, value) => [\n ...convertToArrayPayload(value),\n ...convertToArrayPayload(data),\n];\n\nfunction removeAtIndexes(data, indexes) {\n let i = 0;\n const temp = [...data];\n for (const index of indexes) {\n temp.splice(index - i, 1);\n i++;\n }\n return compact(temp).length ? temp : [];\n}\nvar removeArrayAt = (data, index) => isUndefined(index)\n ? []\n : removeAtIndexes(data, convertToArrayPayload(index).sort((a, b) => a - b));\n\nvar swapArrayAt = (data, indexA, indexB) => {\n [data[indexA], data[indexB]] = [data[indexB], data[indexA]];\n};\n\nfunction baseGet(object, updatePath) {\n const length = updatePath.slice(0, -1).length;\n let index = 0;\n while (index < length) {\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\n }\n return object;\n}\nfunction isEmptyArray(obj) {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && !isUndefined(obj[key])) {\n return false;\n }\n }\n return true;\n}\nfunction unset(object, path) {\n const paths = Array.isArray(path)\n ? path\n : isKey(path)\n ? [path]\n : stringToPath(path);\n const childObject = paths.length === 1 ? object : baseGet(object, paths);\n const index = paths.length - 1;\n const key = paths[index];\n if (childObject) {\n delete childObject[key];\n }\n if (index !== 0 &&\n ((isObject(childObject) && isEmptyObject(childObject)) ||\n (Array.isArray(childObject) && isEmptyArray(childObject)))) {\n unset(object, paths.slice(0, -1));\n }\n return object;\n}\n\nvar updateAt = (fieldValues, index, value) => {\n fieldValues[index] = value;\n return fieldValues;\n};\n\n/**\n * A custom hook that exposes convenient methods to perform operations with a list of dynamic inputs that need to be appended, updated, removed etc. • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn) • [Video](https://youtu.be/4MrbfGSFY2A)\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)\n *\n * @param props - useFieldArray props\n *\n * @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, control, handleSubmit, reset, trigger, setError } = useForm({\n * defaultValues: {\n * test: []\n * }\n * });\n * const { fields, append } = useFieldArray({\n * control,\n * name: \"test\"\n * });\n *\n * return (\n * <form onSubmit={handleSubmit(data => console.log(data))}>\n * {fields.map((item, index) => (\n * <input key={item.id} {...register(`test.${index}.firstName`)} />\n * ))}\n * <button type=\"button\" onClick={() => append({ firstName: \"bill\" })}>\n * append\n * </button>\n * <input type=\"submit\" />\n * </form>\n * );\n * }\n * ```\n */\nfunction useFieldArray(props) {\n const methods = useFormContext();\n const { control = methods.control, name, keyName = 'id', shouldUnregister, } = props;\n const [fields, setFields] = React.useState(control._getFieldArray(name));\n const ids = React.useRef(control._getFieldArray(name).map(generateId));\n const _fieldIds = React.useRef(fields);\n const _name = React.useRef(name);\n const _actioned = React.useRef(false);\n _name.current = name;\n _fieldIds.current = fields;\n control._names.array.add(name);\n props.rules &&\n control.register(name, props.rules);\n useSubscribe({\n next: ({ values, name: fieldArrayName, }) => {\n if (fieldArrayName === _name.current || !fieldArrayName) {\n const fieldValues = get(values, _name.current);\n if (Array.isArray(fieldValues)) {\n setFields(fieldValues);\n ids.current = fieldValues.map(generateId);\n }\n }\n },\n subject: control._subjects.array,\n });\n const updateValues = React.useCallback((updatedFieldArrayValues) => {\n _actioned.current = true;\n control._updateFieldArray(name, updatedFieldArrayValues);\n }, [control, name]);\n const append = (value, options) => {\n const appendValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = appendAt(control._getFieldArray(name), appendValue);\n control._names.focus = getFocusFieldName(name, updatedFieldArrayValues.length - 1, options);\n ids.current = appendAt(ids.current, appendValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, appendAt, {\n argA: fillEmptyArray(value),\n });\n };\n const prepend = (value, options) => {\n const prependValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = prependAt(control._getFieldArray(name), prependValue);\n control._names.focus = getFocusFieldName(name, 0, options);\n ids.current = prependAt(ids.current, prependValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, prependAt, {\n argA: fillEmptyArray(value),\n });\n };\n const remove = (index) => {\n const updatedFieldArrayValues = removeArrayAt(control._getFieldArray(name), index);\n ids.current = removeArrayAt(ids.current, index);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\n argA: index,\n });\n };\n const insert$1 = (index, value, options) => {\n const insertValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = insert(control._getFieldArray(name), index, insertValue);\n control._names.focus = getFocusFieldName(name, index, options);\n ids.current = insert(ids.current, index, insertValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, insert, {\n argA: index,\n argB: fillEmptyArray(value),\n });\n };\n const swap = (indexA, indexB) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n swapArrayAt(updatedFieldArrayValues, indexA, indexB);\n swapArrayAt(ids.current, indexA, indexB);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, swapArrayAt, {\n argA: indexA,\n argB: indexB,\n }, false);\n };\n const move = (from, to) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n moveArrayAt(updatedFieldArrayValues, from, to);\n moveArrayAt(ids.current, from, to);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._updateFieldArray(name, updatedFieldArrayValues, moveArrayAt, {\n argA: from,\n argB: to,\n }, false);\n };\n const update = (index, value) => {\n const updateValue = cloneObject(value);\n const updatedFieldArrayValues = updateAt(control._getFieldArray(name), index, updateValue);\n ids.current = [...updatedFieldArrayValues].map((item, i) => !item || i === index ? generateId() : ids.current[i]);\n updateValues(updatedFieldArrayValues);\n setFields([...updatedFieldArrayValues]);\n control._updateFieldArray(name, updatedFieldArrayValues, updateAt, {\n argA: index,\n argB: updateValue,\n }, true, false);\n };\n const replace = (value) => {\n const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\n ids.current = updatedFieldArrayValues.map(generateId);\n updateValues([...updatedFieldArrayValues]);\n setFields([...updatedFieldArrayValues]);\n control._updateFieldArray(name, [...updatedFieldArrayValues], (data) => data, {}, true, false);\n };\n React.useEffect(() => {\n control._state.action = false;\n isWatched(name, control._names) &&\n control._subjects.state.next({\n ...control._formState,\n });\n if (_actioned.current &&\n (!getValidationModes(control._options.mode).isOnSubmit ||\n control._formState.isSubmitted)) {\n if (control._options.resolver) {\n control._executeSchema([name]).then((result) => {\n const error = get(result.errors, name);\n const existingError = get(control._formState.errors, name);\n if (existingError\n ? (!error && existingError.type) ||\n (error &&\n (existingError.type !== error.type ||\n existingError.message !== error.message))\n : error && error.type) {\n error\n ? set(control._formState.errors, name, error)\n : unset(control._formState.errors, name);\n control._subjects.state.next({\n errors: control._formState.errors,\n });\n }\n });\n }\n else {\n const field = get(control._fields, name);\n if (field &&\n field._f &&\n !(getValidationModes(control._options.reValidateMode).isOnSubmit &&\n getValidationModes(control._options.mode).isOnSubmit)) {\n validateField(field, control._formValues, control._options.criteriaMode === VALIDATION_MODE.all, control._options.shouldUseNativeValidation, true).then((error) => !isEmptyObject(error) &&\n control._subjects.state.next({\n errors: updateFieldArrayRootError(control._formState.errors, error, name),\n }));\n }\n }\n }\n control._subjects.values.next({\n name,\n values: { ...control._formValues },\n });\n control._names.focus &&\n iterateFieldsByAction(control._fields, (ref, key) => {\n if (control._names.focus &&\n key.startsWith(control._names.focus) &&\n ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n });\n control._names.focus = '';\n control._updateValid();\n _actioned.current = false;\n }, [fields, name, control]);\n React.useEffect(() => {\n !get(control._formValues, name) && control._updateFieldArray(name);\n return () => {\n (control._options.shouldUnregister || shouldUnregister) &&\n control.unregister(name);\n };\n }, [name, control, keyName, shouldUnregister]);\n return {\n swap: React.useCallback(swap, [updateValues, name, control]),\n move: React.useCallback(move, [updateValues, name, control]),\n prepend: React.useCallback(prepend, [updateValues, name, control]),\n append: React.useCallback(append, [updateValues, name, control]),\n remove: React.useCallback(remove, [updateValues, name, control]),\n insert: React.useCallback(insert$1, [updateValues, name, control]),\n update: React.useCallback(update, [updateValues, name, control]),\n replace: React.useCallback(replace, [updateValues, name, control]),\n fields: React.useMemo(() => fields.map((field, index) => ({\n ...field,\n [keyName]: ids.current[index] || generateId(),\n })), [fields, keyName]),\n };\n}\n\nvar createSubject = () => {\n let _observers = [];\n const next = (value) => {\n for (const observer of _observers) {\n observer.next && observer.next(value);\n }\n };\n const subscribe = (observer) => {\n _observers.push(observer);\n return {\n unsubscribe: () => {\n _observers = _observers.filter((o) => o !== observer);\n },\n };\n };\n const unsubscribe = () => {\n _observers = [];\n };\n return {\n get observers() {\n return _observers;\n },\n next,\n subscribe,\n unsubscribe,\n };\n};\n\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\n\nfunction deepEqual(object1, object2) {\n if (isPrimitive(object1) || isPrimitive(object2)) {\n return object1 === object2;\n }\n if (isDateObject(object1) && isDateObject(object2)) {\n return object1.getTime() === object2.getTime();\n }\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (const key of keys1) {\n const val1 = object1[key];\n if (!keys2.includes(key)) {\n return false;\n }\n if (key !== 'ref') {\n const val2 = object2[key];\n if ((isDateObject(val1) && isDateObject(val2)) ||\n (isObject(val1) && isObject(val2)) ||\n (Array.isArray(val1) && Array.isArray(val2))\n ? !deepEqual(val1, val2)\n : val1 !== val2) {\n return false;\n }\n }\n }\n return true;\n}\n\nvar isMultipleSelect = (element) => element.type === `select-multiple`;\n\nvar isRadioOrCheckbox = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\n\nvar live = (ref) => isHTMLElement(ref) && ref.isConnected;\n\nvar objectHasFunction = (data) => {\n for (const key in data) {\n if (isFunction(data[key])) {\n return true;\n }\n }\n return false;\n};\n\nfunction markFieldsDirty(data, fields = {}) {\n const isParentNodeArray = Array.isArray(data);\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (Array.isArray(data[key]) ||\n (isObject(data[key]) && !objectHasFunction(data[key]))) {\n fields[key] = Array.isArray(data[key]) ? [] : {};\n markFieldsDirty(data[key], fields[key]);\n }\n else if (!isNullOrUndefined(data[key])) {\n fields[key] = true;\n }\n }\n }\n return fields;\n}\nfunction getDirtyFieldsFromDefaultValues(data, formValues, dirtyFieldsFromValues) {\n const isParentNodeArray = Array.isArray(data);\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (Array.isArray(data[key]) ||\n (isObject(data[key]) && !objectHasFunction(data[key]))) {\n if (isUndefined(formValues) ||\n isPrimitive(dirtyFieldsFromValues[key])) {\n dirtyFieldsFromValues[key] = Array.isArray(data[key])\n ? markFieldsDirty(data[key], [])\n : { ...markFieldsDirty(data[key]) };\n }\n else {\n getDirtyFieldsFromDefaultValues(data[key], isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key]);\n }\n }\n else {\n dirtyFieldsFromValues[key] = !deepEqual(data[key], formValues[key]);\n }\n }\n }\n return dirtyFieldsFromValues;\n}\nvar getDirtyFields = (defaultValues, formValues) => getDirtyFieldsFromDefaultValues(defaultValues, formValues, markFieldsDirty(formValues));\n\nvar getFieldValueAs = (value, { valueAsNumber, valueAsDate, setValueAs }) => isUndefined(value)\n ? value\n : valueAsNumber\n ? value === ''\n ? NaN\n : value\n ? +value\n : value\n : valueAsDate && isString(value)\n ? new Date(value)\n : setValueAs\n ? setValueAs(value)\n : value;\n\nfunction getFieldValue(_f) {\n const ref = _f.ref;\n if (_f.refs ? _f.refs.every((ref) => ref.disabled) : ref.disabled) {\n return;\n }\n if (isFileInput(ref)) {\n return ref.files;\n }\n if (isRadioInput(ref)) {\n return getRadioValue(_f.refs).value;\n }\n if (isMultipleSelect(ref)) {\n return [...ref.selectedOptions].map(({ value }) => value);\n }\n if (isCheckBoxInput(ref)) {\n return getCheckboxValue(_f.refs).value;\n }\n return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\n}\n\nvar getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {\n const fields = {};\n for (const name of fieldsNames) {\n const field = get(_fields, name);\n field && set(fields, name, field._f);\n }\n return {\n criteriaMode,\n names: [...fieldsNames],\n fields,\n shouldUseNativeValidation,\n };\n};\n\nvar getRuleValue = (rule) => isUndefined(rule)\n ? rule\n : isRegex(rule)\n ? rule.source\n : isObject(rule)\n ? isRegex(rule.value)\n ? rule.value.source\n : rule.value\n : rule;\n\nvar hasValidation = (options) => options.mount &&\n (options.required ||\n options.min ||\n options.max ||\n options.maxLength ||\n options.minLength ||\n options.pattern ||\n options.validate);\n\nfunction schemaErrorLookup(errors, _fields, name) {\n const error = get(errors, name);\n if (error || isKey(name)) {\n return {\n error,\n name,\n };\n }\n const names = name.split('.');\n while (names.length) {\n const fieldName = names.join('.');\n const field = get(_fields, fieldName);\n const foundError = get(errors, fieldName);\n if (field && !Array.isArray(field) && name !== fieldName) {\n return { name };\n }\n if (foundError && foundError.type) {\n return {\n name: fieldName,\n error: foundError,\n };\n }\n names.pop();\n }\n return {\n name,\n };\n}\n\nvar skipValidation = (isBlurEvent, isTouched, isSubmitted, reValidateMode, mode) => {\n if (mode.isOnAll) {\n return false;\n }\n else if (!isSubmitted && mode.isOnTouch) {\n return !(isTouched || isBlurEvent);\n }\n else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n return !isBlurEvent;\n }\n else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n return isBlurEvent;\n }\n return true;\n};\n\nvar unsetEmptyArray = (ref, name) => !compact(get(ref, name)).length && unset(ref, name);\n\nconst defaultOptions = {\n mode: VALIDATION_MODE.onSubmit,\n reValidateMode: VALIDATION_MODE.onChange,\n shouldFocusError: true,\n};\nfunction createFormControl(props = {}) {\n let _options = {\n ...defaultOptions,\n ...props,\n };\n let _formState = {\n submitCount: 0,\n isDirty: false,\n isLoading: isFunction(_options.defaultValues),\n isValidating: false,\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n touchedFields: {},\n dirtyFields: {},\n validatingFields: {},\n errors: _options.errors || {},\n disabled: _options.disabled || false,\n };\n let _fields = {};\n let _defaultValues = isObject(_options.defaultValues) || isObject(_options.values)\n ? cloneObject(_options.defaultValues || _options.values) || {}\n : {};\n let _formValues = _options.shouldUnregister\n ? {}\n : cloneObject(_defaultValues);\n let _state = {\n action: false,\n mount: false,\n watch: false,\n };\n let _names = {\n mount: new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set(),\n };\n let delayErrorCallback;\n let timer = 0;\n const _proxyFormState = {\n isDirty: false,\n dirtyFields: false,\n validatingFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n };\n const _subjects = {\n values: createSubject(),\n array: createSubject(),\n state: createSubject(),\n };\n const validationModeBeforeSubmit = getValidationModes(_options.mode);\n const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n const shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;\n const debounce = (callback) => (wait) => {\n clearTimeout(timer);\n timer = setTimeout(callback, wait);\n };\n const _updateValid = async (shouldUpdateValid) => {\n if (_proxyFormState.isValid || shouldUpdateValid) {\n const isValid = _options.resolver\n ? isEmptyObject((await _executeSchema()).errors)\n : await executeBuiltInValidation(_fields, true);\n if (isValid !== _formState.isValid) {\n _subjects.state.next({\n isValid,\n });\n }\n }\n };\n const _updateIsValidating = (names, isValidating) => {\n if (_proxyFormState.isValidating || _proxyFormState.validatingFields) {\n (names || Array.from(_names.mount)).forEach((name) => {\n if (name) {\n isValidating\n ? set(_formState.validatingFields, name, isValidating)\n : unset(_formState.validatingFields, name);\n }\n });\n _subjects.state.next({\n validatingFields: _formState.validatingFields,\n isValidating: !isEmptyObject(_formState.validatingFields),\n });\n }\n };\n const _updateFieldArray = (name, values = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndState = true) => {\n if (args && method) {\n _state.action = true;\n if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\n const fieldValues = method(get(_fields, name), args.argA, args.argB);\n shouldSetValues && set(_fields, name, fieldValues);\n }\n if (shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.errors, name))) {\n const errors = method(get(_formState.errors, name), args.argA, args.argB);\n shouldSetValues && set(_formState.errors, name, errors);\n unsetEmptyArray(_formState.errors, name);\n }\n if (_proxyFormState.touchedFields &&\n shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.touchedFields, name))) {\n const touchedFields = method(get(_formState.touchedFields, name), args.argA, args.argB);\n shouldSetValues && set(_formState.touchedFields, name, touchedFields);\n }\n if (_proxyFormState.dirtyFields) {\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n }\n _subjects.state.next({\n name,\n isDirty: _getDirty(name, values),\n dirtyFields: _formState.dirtyFields,\n errors: _formState.errors,\n isValid: _formState.isValid,\n });\n }\n else {\n set(_formValues, name, values);\n }\n };\n const updateErrors = (name, error) => {\n set(_formState.errors, name, error);\n _subjects.state.next({\n errors: _formState.errors,\n });\n };\n const _setErrors = (errors) => {\n _formState.errors = errors;\n _subjects.state.next({\n errors: _formState.errors,\n isValid: false,\n });\n };\n const updateValidAndValue = (name, shouldSkipSetValueAs, value, ref) => {\n const field = get(_fields, name);\n if (field) {\n const defaultValue = get(_formValues, name, isUndefined(value) ? get(_defaultValues, name) : value);\n isUndefined(defaultValue) ||\n (ref && ref.defaultChecked) ||\n shouldSkipSetValueAs\n ? set(_formValues, name, shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f))\n : setFieldValue(name, defaultValue);\n _state.mount && _updateValid();\n }\n };\n const updateTouchAndDirty = (name, fieldValue, isBlurEvent, shouldDirty, shouldRender) => {\n let shouldUpdateField = false;\n let isPreviousDirty = false;\n const output = {\n name,\n };\n const disabledField = !!(get(_fields, name) &&\n get(_fields, name)._f &&\n get(_fields, name)._f.disabled);\n if (!isBlurEvent || shouldDirty) {\n if (_proxyFormState.isDirty) {\n isPreviousDirty = _formState.isDirty;\n _formState.isDirty = output.isDirty = _getDirty();\n shouldUpdateField = isPreviousDirty !== output.isDirty;\n }\n const isCurrentFieldPristine = disabledField || deepEqual(get(_defaultValues, name), fieldValue);\n isPreviousDirty = !!(!disabledField && get(_formState.dirtyFields, name));\n isCurrentFieldPristine || disabledField\n ? unset(_formState.dirtyFields, name)\n : set(_formState.dirtyFields, name, true);\n output.dirtyFields = _formState.dirtyFields;\n shouldUpdateField =\n shouldUpdateField ||\n (_proxyFormState.dirtyFields &&\n isPreviousDirty !== !isCurrentFieldPristine);\n }\n if (isBlurEvent) {\n const isPreviousFieldTouched = get(_formState.touchedFields, name);\n if (!isPreviousFieldTouched) {\n set(_formState.touchedFields, name, isBlurEvent);\n output.touchedFields = _formState.touchedFields;\n shouldUpdateField =\n shouldUpdateField ||\n (_proxyFormState.touchedFields &&\n isPreviousFieldTouched !== isBlurEvent);\n }\n }\n shouldUpdateField && shouldRender && _subjects.state.next(output);\n return shouldUpdateField ? output : {};\n };\n const shouldRenderByError = (name, isValid, error, fieldState) => {\n const previousFieldError = get(_formState.errors, name);\n const shouldUpdateValid = _proxyFormState.isValid &&\n isBoolean(isValid) &&\n _formState.isValid !== isValid;\n if (props.delayError && error) {\n delayErrorCallback = debounce(() => updateErrors(name, error));\n delayErrorCallback(props.delayError);\n }\n else {\n clearTimeout(timer);\n delayErrorCallback = null;\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n if ((error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\n !isEmptyObject(fieldState) ||\n shouldUpdateValid) {\n const updatedFormState = {\n ...fieldState,\n ...(shouldUpdateValid && isBoolean(isValid) ? { isValid } : {}),\n errors: _formState.errors,\n name,\n };\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n _subjects.state.next(updatedFormState);\n }\n };\n const _executeSchema = async (name) => {\n _updateIsValidating(name, true);\n const result = await _options.resolver(_formValues, _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation));\n _updateIsValidating(name);\n return result;\n };\n const executeSchemaAndUpdateState = async (names) => {\n const { errors } = await _executeSchema(names);\n if (names) {\n for (const name of names) {\n const error = get(errors, name);\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n }\n else {\n _formState.errors = errors;\n }\n return errors;\n };\n const executeBuiltInValidation = async (fields, shouldOnlyCheckValid, context = {\n valid: true,\n }) => {\n for (const name in fields) {\n const field = fields[name];\n if (field) {\n const { _f, ...fieldValue } = field;\n if (_f) {\n const isFieldArrayRoot = _names.array.has(_f.name);\n _updateIsValidating([name], true);\n const fieldError = await validateField(field, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation && !shouldOnlyCheckValid, isFieldArrayRoot);\n _updateIsValidating([name]);\n if (fieldError[_f.name]) {\n context.valid = false;\n if (shouldOnlyCheckValid) {\n break;\n }\n }\n !shouldOnlyCheckValid &&\n (get(fieldError, _f.name)\n ? isFieldArrayRoot\n ? updateFieldArrayRootError(_formState.errors, fieldError, _f.name)\n : set(_formState.errors, _f.name, fieldError[_f.name])\n : unset(_formState.errors, _f.name));\n }\n !isEmptyObject(fieldValue) &&\n (await executeBuiltInValidation(fieldValue, shouldOnlyCheckValid, context));\n }\n }\n return context.valid;\n };\n const _removeUnmounted = () => {\n for (const name of _names.unMount) {\n const field = get(_fields, name);\n field &&\n (field._f.refs\n ? field._f.refs.every((ref) => !live(ref))\n : !live(field._f.ref)) &&\n unregister(name);\n }\n _names.unMount = new Set();\n };\n const _getDirty = (name, data) => (name && data && set(_formValues, name, data),\n !deepEqual(getValues(), _defaultValues));\n const _getWatch = (names, defaultValue, isGlobal) => generateWatchOutput(names, _names, {\n ...(_state.mount\n ? _formValues\n : isUndefined(defaultValue)\n ? _defaultValues\n : isString(names)\n ? { [names]: defaultValue }\n : defaultValue),\n }, isGlobal, defaultValue);\n const _getFieldArray = (name) => compact(get(_state.mount ? _formValues : _defaultValues, name, props.shouldUnregister ? get(_defaultValues, name, []) : []));\n const setFieldValue = (name, value, options = {}) => {\n const field = get(_fields, name);\n let fieldValue = value;\n if (field) {\n const fieldReference = field._f;\n if (fieldReference) {\n !fieldReference.disabled &&\n set(_formValues, name, getFieldValueAs(value, fieldReference));\n fieldValue =\n isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\n ? ''\n : value;\n if (isMultipleSelect(fieldReference.ref)) {\n [...fieldReference.ref.options].forEach((optionRef) => (optionRef.selected = fieldValue.includes(optionRef.value)));\n }\n else if (fieldReference.refs) {\n if (isCheckBoxInput(fieldReference.ref)) {\n fieldReference.refs.length > 1\n ? fieldReference.refs.forEach((checkboxRef) => (!checkboxRef.defaultChecked || !checkboxRef.disabled) &&\n (checkboxRef.checked = Array.isArray(fieldValue)\n ? !!fieldValue.find((data) => data === checkboxRef.value)\n : fieldValue === checkboxRef.value))\n : fieldReference.refs[0] &&\n (fieldReference.refs[0].checked = !!fieldValue);\n }\n else {\n fieldReference.refs.forEach((radioRef) => (radioRef.checked = radioRef.value === fieldValue));\n }\n }\n else if (isFileInput(fieldReference.ref)) {\n fieldReference.ref.value = '';\n }\n else {\n fieldReference.ref.value = fieldValue;\n if (!fieldReference.ref.type) {\n _subjects.values.next({\n name,\n values: { ..._formValues },\n });\n }\n }\n }\n }\n (options.shouldDirty || options.shouldTouch) &&\n updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty, true);\n options.shouldValidate && trigger(name);\n };\n const setValues = (name, value, options) => {\n for (const fieldKey in value) {\n const fieldValue = value[fieldKey];\n const fieldName = `${name}.${fieldKey}`;\n const field = get(_fields, fieldName);\n (_names.array.has(name) ||\n !isPrimitive(fieldValue) ||\n (field && !field._f)) &&\n !isDateObject(fieldValue)\n ? setValues(fieldName, fieldValue, options)\n : setFieldValue(fieldName, fieldValue, options);\n }\n };\n const setValue = (name, value, options = {}) => {\n const field = get(_fields, name);\n const isFieldArray = _names.array.has(name);\n const cloneValue = cloneObject(value);\n set(_formValues, name, cloneValue);\n if (isFieldArray) {\n _subjects.array.next({\n name,\n values: { ..._formValues },\n });\n if ((_proxyFormState.isDirty || _proxyFormState.dirtyFields) &&\n options.shouldDirty) {\n _subjects.state.next({\n name,\n dirtyFields: getDirtyFields(_defaultValues, _formValues),\n isDirty: _getDirty(name, cloneValue),\n });\n }\n }\n else {\n field && !field._f && !isNullOrUndefined(cloneValue)\n ? setValues(name, cloneValue, options)\n : setFieldValue(name, cloneValue, options);\n }\n isWatched(name, _names) && _subjects.state.next({ ..._formState });\n _subjects.values.next({\n name: _state.mount ? name : undefined,\n values: { ..._formValues },\n });\n };\n const onChange = async (event) => {\n _state.mount = true;\n const target = event.target;\n let name = target.name;\n let isFieldValueUpdated = true;\n const field = get(_fields, name);\n const getCurrentFieldValue = () => target.type ? getFieldValue(field._f) : getEventValue(event);\n const _updateIsFieldValueUpdated = (fieldValue) => {\n isFieldValueUpdated =\n Number.isNaN(fieldValue) ||\n fieldValue === get(_formValues, name, fieldValue);\n };\n if (field) {\n let error;\n let isValid;\n const fieldValue = getCurrentFieldValue();\n const isBlurEvent = event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n const shouldSkipValidation = (!hasValidation(field._f) &&\n !_options.resolver &&\n !get(_formState.errors, name) &&\n !field._f.deps) ||\n skipValidation(isBlurEvent, get(_formState.touchedFields, name), _formState.isSubmitted, validationModeAfterSubmit, validationModeBeforeSubmit);\n const watched = isWatched(name, _names, isBlurEvent);\n set(_formValues, name, fieldValue);\n if (isBlurEvent) {\n field._f.onBlur && field._f.onBlur(event);\n delayErrorCallback && delayErrorCallback(0);\n }\n else if (field._f.onChange) {\n field._f.onChange(event);\n }\n const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent, false);\n const shouldRender = !isEmptyObject(fieldState) || watched;\n !isBlurEvent &&\n _subjects.values.next({\n name,\n type: event.type,\n values: { ..._formValues },\n });\n if (shouldSkipValidation) {\n _proxyFormState.isValid && _updateValid();\n return (shouldRender &&\n _subjects.state.next({ name, ...(watched ? {} : fieldState) }));\n }\n !isBlurEvent && watched && _subjects.state.next({ ..._formState });\n if (_options.resolver) {\n const { errors } = await _executeSchema([name]);\n _updateIsFieldValueUpdated(fieldValue);\n if (isFieldValueUpdated) {\n const previousErrorLookupResult = schemaErrorLookup(_formState.errors, _fields, name);\n const errorLookupResult = schemaErrorLookup(errors, _fields, previousErrorLookupResult.name || name);\n error = errorLookupResult.error;\n name = errorLookupResult.name;\n isValid = isEmptyObject(errors);\n }\n }\n else {\n _updateIsValidating([name], true);\n error = (await validateField(field, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation))[name];\n _updateIsValidating([name]);\n _updateIsFieldValueUpdated(fieldValue);\n if (isFieldValueUpdated) {\n if (error) {\n isValid = false;\n }\n else if (_proxyFormState.isValid) {\n isValid = await executeBuiltInValidation(_fields, true);\n }\n }\n }\n if (isFieldValueUpdated) {\n field._f.deps &&\n trigger(field._f.deps);\n shouldRenderByError(name, isValid, error, fieldState);\n }\n }\n };\n const _focusInput = (ref, key) => {\n if (get(_formState.errors, key) && ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n };\n const trigger = async (name, options = {}) => {\n let isValid;\n let validationResult;\n const fieldNames = convertToArrayPayload(name);\n if (_options.resolver) {\n const errors = await executeSchemaAndUpdateState(isUndefined(name) ? name : fieldNames);\n isValid = isEmptyObject(errors);\n validationResult = name\n ? !fieldNames.some((name) => get(errors, name))\n : isValid;\n }\n else if (name) {\n validationResult = (await Promise.all(fieldNames.map(async (fieldName) => {\n const field = get(_fields, fieldName);\n return await executeBuiltInValidation(field && field._f ? { [fieldName]: field } : field);\n }))).every(Boolean);\n !(!validationResult && !_formState.isValid) && _updateValid();\n }\n else {\n validationResult = isValid = await executeBuiltInValidation(_fields);\n }\n _subjects.state.next({\n ...(!isString(name) ||\n (_proxyFormState.isValid && isValid !== _formState.isValid)\n ? {}\n : { name }),\n ...(_options.resolver || !name ? { isValid } : {}),\n errors: _formState.errors,\n });\n options.shouldFocus &&\n !validationResult &&\n iterateFieldsByAction(_fields, _focusInput, name ? fieldNames : _names.mount);\n return validationResult;\n };\n const getValues = (fieldNames) => {\n const values = {\n ...(_state.mount ? _formValues : _defaultValues),\n };\n return isUndefined(fieldNames)\n ? values\n : isString(fieldNames)\n ? get(values, fieldNames)\n : fieldNames.map((name) => get(values, name));\n };\n const getFieldState = (name, formState) => ({\n invalid: !!get((formState || _formState).errors, name),\n isDirty: !!get((formState || _formState).dirtyFields, name),\n error: get((formState || _formState).errors, name),\n isValidating: !!get(_formState.validatingFields, name),\n isTouched: !!get((formState || _formState).touchedFields, name),\n });\n const clearErrors = (name) => {\n name &&\n convertToArrayPayload(name).forEach((inputName) => unset(_formState.errors, inputName));\n _subjects.state.next({\n errors: name ? _formState.errors : {},\n });\n };\n const setError = (name, error, options) => {\n const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\n const currentError = get(_formState.errors, name) || {};\n // Don't override existing error messages elsewhere in the object tree.\n const { ref: currentRef, message, type, ...restOfErrorTree } = currentError;\n set(_formState.errors, name, {\n ...restOfErrorTree,\n ...error,\n ref,\n });\n _subjects.state.next({\n name,\n errors: _formState.errors,\n isValid: false,\n });\n options && options.shouldFocus && ref && ref.focus && ref.focus();\n };\n const watch = (name, defaultValue) => isFunction(name)\n ? _subjects.values.subscribe({\n next: (payload) => name(_getWatch(undefined, defaultValue), payload),\n })\n : _getWatch(name, defaultValue, true);\n const unregister = (name, options = {}) => {\n for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n _names.mount.delete(fieldName);\n _names.array.delete(fieldName);\n if (!options.keepValue) {\n unset(_fields, fieldName);\n unset(_formValues, fieldName);\n }\n !options.keepError && unset(_formState.errors, fieldName);\n !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n !options.keepTouched && unset(_formState.touchedFields, fieldName);\n !options.keepIsValidating &&\n unset(_formState.validatingFields, fieldName);\n !_options.shouldUnregister &&\n !options.keepDefaultValue &&\n unset(_defaultValues, fieldName);\n }\n _subjects.values.next({\n values: { ..._formValues },\n });\n _subjects.state.next({\n ..._formState,\n ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\n });\n !options.keepIsValid && _updateValid();\n };\n const _updateDisabledField = ({ disabled, name, field, fields, value, }) => {\n if ((isBoolean(disabled) && _state.mount) || !!disabled) {\n const inputValue = disabled\n ? undefined\n : isUndefined(value)\n ? getFieldValue(field ? field._f : get(fields, name)._f)\n : value;\n set(_formValues, name, inputValue);\n updateTouchAndDirty(name, inputValue, false, false, true);\n }\n };\n const register = (name, options = {}) => {\n let field = get(_fields, name);\n const disabledIsDefined = isBoolean(options.disabled);\n set(_fields, name, {\n ...(field || {}),\n _f: {\n ...(field && field._f ? field._f : { ref: { name } }),\n name,\n mount: true,\n ...options,\n },\n });\n _names.mount.add(name);\n if (field) {\n _updateDisabledField({\n field,\n disabled: options.disabled,\n name,\n value: options.value,\n });\n }\n else {\n updateValidAndValue(name, true, options.value);\n }\n return {\n ...(disabledIsDefined ? { disabled: options.disabled } : {}),\n ...(_options.progressive\n ? {\n required: !!options.required,\n min: getRuleValue(options.min),\n max: getRuleValue(options.max),\n minLength: getRuleValue(options.minLength),\n maxLength: getRuleValue(options.maxLength),\n pattern: getRuleValue(options.pattern),\n }\n : {}),\n name,\n onChange,\n onBlur: onChange,\n ref: (ref) => {\n if (ref) {\n register(name, options);\n field = get(_fields, name);\n const fieldRef = isUndefined(ref.value)\n ? ref.querySelectorAll\n ? ref.querySelectorAll('input,select,textarea')[0] || ref\n : ref\n : ref;\n const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n const refs = field._f.refs || [];\n if (radioOrCheckbox\n ? refs.find((option) => option === fieldRef)\n : fieldRef === field._f.ref) {\n return;\n }\n set(_fields, name, {\n _f: {\n ...field._f,\n ...(radioOrCheckbox\n ? {\n refs: [\n ...refs.filter(live),\n fieldRef,\n ...(Array.isArray(get(_defaultValues, name)) ? [{}] : []),\n ],\n ref: { type: fieldRef.type, name },\n }\n : { ref: fieldRef }),\n },\n });\n updateValidAndValue(name, false, undefined, fieldRef);\n }\n else {\n field = get(_fields, name, {});\n if (field._f) {\n field._f.mount = false;\n }\n (_options.shouldUnregister || options.shouldUnregister) &&\n !(isNameInFieldArray(_names.array, name) && _state.action) &&\n _names.unMount.add(name);\n }\n },\n };\n };\n const _focusError = () => _options.shouldFocusError &&\n iterateFieldsByAction(_fields, _focusInput, _names.mount);\n const _disableForm = (disabled) => {\n if (isBoolean(disabled)) {\n _subjects.state.next({ disabled });\n iterateFieldsByAction(_fields, (ref, name) => {\n const currentField = get(_fields, name);\n if (currentField) {\n ref.disabled = currentField._f.disabled || disabled;\n if (Array.isArray(currentField._f.refs)) {\n currentField._f.refs.forEach((inputRef) => {\n inputRef.disabled = currentField._f.disabled || disabled;\n });\n }\n }\n }, 0, false);\n }\n };\n const handleSubmit = (onValid, onInvalid) => async (e) => {\n let onValidError = undefined;\n if (e) {\n e.preventDefault && e.preventDefault();\n e.persist && e.persist();\n }\n let fieldValues = cloneObject(_formValues);\n _subjects.state.next({\n isSubmitting: true,\n });\n if (_options.resolver) {\n const { errors, values } = await _executeSchema();\n _formState.errors = errors;\n fieldValues = values;\n }\n else {\n await executeBuiltInValidation(_fields);\n }\n unset(_formState.errors, 'root');\n if (isEmptyObject(_formState.errors)) {\n _subjects.state.next({\n errors: {},\n });\n try {\n await onValid(fieldValues, e);\n }\n catch (error) {\n onValidError = error;\n }\n }\n else {\n if (onInvalid) {\n await onInvalid({ ..._formState.errors }, e);\n }\n _focusError();\n setTimeout(_focusError);\n }\n _subjects.state.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful: isEmptyObject(_formState.errors) && !onValidError,\n submitCount: _formState.submitCount + 1,\n errors: _formState.errors,\n });\n if (onValidError) {\n throw onValidError;\n }\n };\n const resetField = (name, options = {}) => {\n if (get(_fields, name)) {\n if (isUndefined(options.defaultValue)) {\n setValue(name, cloneObject(get(_defaultValues, name)));\n }\n else {\n setValue(name, options.defaultValue);\n set(_defaultValues, name, cloneObject(options.defaultValue));\n }\n if (!options.keepTouched) {\n unset(_formState.touchedFields, name);\n }\n if (!options.keepDirty) {\n unset(_formState.dirtyFields, name);\n _formState.isDirty = options.defaultValue\n ? _getDirty(name, cloneObject(get(_defaultValues, name)))\n : _getDirty();\n }\n if (!options.keepError) {\n unset(_formState.errors, name);\n _proxyFormState.isValid && _updateValid();\n }\n _subjects.state.next({ ..._formState });\n }\n };\n const _reset = (formValues, keepStateOptions = {}) => {\n const updatedValues = formValues ? cloneObject(formValues) : _defaultValues;\n const cloneUpdatedValues = cloneObject(updatedValues);\n const isEmptyResetValues = isEmptyObject(formValues);\n const values = isEmptyResetValues ? _defaultValues : cloneUpdatedValues;\n if (!keepStateOptions.keepDefaultValues) {\n _defaultValues = updatedValues;\n }\n if (!keepStateOptions.keepValues) {\n if (keepStateOptions.keepDirtyValues) {\n for (const fieldName of _names.mount) {\n get(_formState.dirtyFields, fieldName)\n ? set(values, fieldName, get(_formValues, fieldName))\n : setValue(fieldName, get(values, fieldName));\n }\n }\n else {\n if (isWeb && isUndefined(formValues)) {\n for (const name of _names.mount) {\n const field = get(_fields, name);\n if (field && field._f) {\n const fieldReference = Array.isArray(field._f.refs)\n ? field._f.refs[0]\n : field._f.ref;\n if (isHTMLElement(fieldReference)) {\n const form = fieldReference.closest('form');\n if (form) {\n form.reset();\n break;\n }\n }\n }\n }\n }\n _fields = {};\n }\n _formValues = props.shouldUnregister\n ? keepStateOptions.keepDefaultValues\n ? cloneObject(_defaultValues)\n : {}\n : cloneObject(values);\n _subjects.array.next({\n values: { ...values },\n });\n _subjects.values.next({\n values: { ...values },\n });\n }\n _names = {\n mount: keepStateOptions.keepDirtyValues ? _names.mount : new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set(),\n watchAll: false,\n focus: '',\n };\n _state.mount =\n !_proxyFormState.isValid ||\n !!keepStateOptions.keepIsValid ||\n !!keepStateOptions.keepDirtyValues;\n _state.watch = !!props.shouldUnregister;\n _subjects.state.next({\n submitCount: keepStateOptions.keepSubmitCount\n ? _formState.submitCount\n : 0,\n isDirty: isEmptyResetValues\n ? false\n : keepStateOptions.keepDirty\n ? _formState.isDirty\n : !!(keepStateOptions.keepDefaultValues &&\n !deepEqual(formValues, _defaultValues)),\n isSubmitted: keepStateOptions.keepIsSubmitted\n ? _formState.isSubmitted\n : false,\n dirtyFields: isEmptyResetValues\n ? {}\n : keepStateOptions.keepDirtyValues\n ? keepStateOptions.keepDefaultValues && _formValues\n ? getDirtyFields(_defaultValues, _formValues)\n : _formState.dirtyFields\n : keepStateOptions.keepDefaultValues && formValues\n ? getDirtyFields(_defaultValues, formValues)\n : keepStateOptions.keepDirty\n ? _formState.dirtyFields\n : {},\n touchedFields: keepStateOptions.keepTouched\n ? _formState.touchedFields\n : {},\n errors: keepStateOptions.keepErrors ? _formState.errors : {},\n isSubmitSuccessful: keepStateOptions.keepIsSubmitSuccessful\n ? _formState.isSubmitSuccessful\n : false,\n isSubmitting: false,\n });\n };\n const reset = (formValues, keepStateOptions) => _reset(isFunction(formValues)\n ? formValues(_formValues)\n : formValues, keepStateOptions);\n const setFocus = (name, options = {}) => {\n const field = get(_fields, name);\n const fieldReference = field && field._f;\n if (fieldReference) {\n const fieldRef = fieldReference.refs\n ? fieldReference.refs[0]\n : fieldReference.ref;\n if (fieldRef.focus) {\n fieldRef.focus();\n options.shouldSelect && fieldRef.select();\n }\n }\n };\n const _updateFormState = (updatedFormState) => {\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n };\n const _resetDefaultValues = () => isFunction(_options.defaultValues) &&\n _options.defaultValues().then((values) => {\n reset(values, _options.resetOptions);\n _subjects.state.next({\n isLoading: false,\n });\n });\n return {\n control: {\n register,\n unregister,\n getFieldState,\n handleSubmit,\n setError,\n _executeSchema,\n _getWatch,\n _getDirty,\n _updateValid,\n _removeUnmounted,\n _updateFieldArray,\n _updateDisabledField,\n _getFieldArray,\n _reset,\n _resetDefaultValues,\n _updateFormState,\n _disableForm,\n _subjects,\n _proxyFormState,\n _setErrors,\n get _fields() {\n return _fields;\n },\n get _formValues() {\n return _formValues;\n },\n get _state() {\n return _state;\n },\n set _state(value) {\n _state = value;\n },\n get _defaultValues() {\n return _defaultValues;\n },\n get _names() {\n return _names;\n },\n set _names(value) {\n _names = value;\n },\n get _formState() {\n return _formState;\n },\n set _formState(value) {\n _formState = value;\n },\n get _options() {\n return _options;\n },\n set _options(value) {\n _options = {\n ..._options,\n ...value,\n };\n },\n },\n trigger,\n register,\n handleSubmit,\n watch,\n setValue,\n getValues,\n reset,\n resetField,\n clearErrors,\n unregister,\n setError,\n setFocus,\n getFieldState,\n };\n}\n\n/**\n * Custom hook to manage the entire form.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\n *\n * @param props - form configuration and validation parameters.\n *\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, watch, formState: { errors } } = useForm();\n * const onSubmit = data => console.log(data);\n *\n * console.log(watch(\"example\"));\n *\n * return (\n * <form onSubmit={handleSubmit(onSubmit)}>\n * <input defaultValue=\"test\" {...register(\"example\")} />\n * <input {...register(\"exampleRequired\", { required: true })} />\n * {errors.exampleRequired && <span>This field is required</span>}\n * <button>Submit</button>\n * </form>\n * );\n * }\n * ```\n */\nfunction useForm(props = {}) {\n const _formControl = React.useRef();\n const _values = React.useRef();\n const [formState, updateFormState] = React.useState({\n isDirty: false,\n isValidating: false,\n isLoading: isFunction(props.defaultValues),\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n submitCount: 0,\n dirtyFields: {},\n touchedFields: {},\n validatingFields: {},\n errors: props.errors || {},\n disabled: props.disabled || false,\n defaultValues: isFunction(props.defaultValues)\n ? undefined\n : props.defaultValues,\n });\n if (!_formControl.current) {\n _formControl.current = {\n ...createFormControl(props),\n formState,\n };\n }\n const control = _formControl.current.control;\n control._options = props;\n useSubscribe({\n subject: control._subjects.state,\n next: (value) => {\n if (shouldRenderFormState(value, control._proxyFormState, control._updateFormState, true)) {\n updateFormState({ ...control._formState });\n }\n },\n });\n React.useEffect(() => control._disableForm(props.disabled), [control, props.disabled]);\n React.useEffect(() => {\n if (control._proxyFormState.isDirty) {\n const isDirty = control._getDirty();\n if (isDirty !== formState.isDirty) {\n control._subjects.state.next({\n isDirty,\n });\n }\n }\n }, [control, formState.isDirty]);\n React.useEffect(() => {\n if (props.values && !deepEqual(props.values, _values.current)) {\n control._reset(props.values, control._options.resetOptions);\n _values.current = props.values;\n updateFormState((state) => ({ ...state }));\n }\n else {\n control._resetDefaultValues();\n }\n }, [props.values, control]);\n React.useEffect(() => {\n if (props.errors) {\n control._setErrors(props.errors);\n }\n }, [props.errors, control]);\n React.useEffect(() => {\n if (!control._state.mount) {\n control._updateValid();\n control._state.mount = true;\n }\n if (control._state.watch) {\n control._state.watch = false;\n control._subjects.state.next({ ...control._formState });\n }\n control._removeUnmounted();\n });\n React.useEffect(() => {\n props.shouldUnregister &&\n control._subjects.values.next({\n values: control._getWatch(),\n });\n }, [props.shouldUnregister, control]);\n _formControl.current.formState = getProxyFormState(formState, control);\n return _formControl.current;\n}\n\nexport { Controller, Form, FormProvider, appendErrors, get, set, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };\n//# sourceMappingURL=index.esm.mjs.map\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","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE$2\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_CONTEXT_TYPE:\n return (type.displayName || \"Context\") + \".Provider\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function disabledLog() {}\n function disableLogs() {\n if (0 === disabledDepth) {\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd;\n var props = {\n configurable: !0,\n enumerable: !0,\n value: disabledLog,\n writable: !0\n };\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n }\n disabledDepth++;\n }\n function reenableLogs() {\n disabledDepth--;\n if (0 === disabledDepth) {\n var props = { configurable: !0, enumerable: !0, writable: !0 };\n Object.defineProperties(console, {\n log: assign({}, props, { value: prevLog }),\n info: assign({}, props, { value: prevInfo }),\n warn: assign({}, props, { value: prevWarn }),\n error: assign({}, props, { value: prevError }),\n group: assign({}, props, { value: prevGroup }),\n groupCollapsed: assign({}, props, { value: prevGroupCollapsed }),\n groupEnd: assign({}, props, { value: prevGroupEnd })\n });\n }\n 0 > disabledDepth &&\n console.error(\n \"disabledDepth fell below zero. This is a bug in React. Please file an issue.\"\n );\n }\n function describeBuiltInComponentFrame(name) {\n if (void 0 === prefix)\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = (match && match[1]) || \"\";\n suffix =\n -1 < x.stack.indexOf(\"\\n at\")\n ? \" (<anonymous>)\"\n : -1 < x.stack.indexOf(\"@\")\n ? \"@unknown:0:0\"\n : \"\";\n }\n return \"\\n\" + prefix + name + suffix;\n }\n function describeNativeComponentFrame(fn, construct) {\n if (!fn || reentry) return \"\";\n var frame = componentFrameCache.get(fn);\n if (void 0 !== frame) return frame;\n reentry = !0;\n frame = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n var previousDispatcher = null;\n previousDispatcher = ReactSharedInternals.H;\n ReactSharedInternals.H = null;\n disableLogs();\n try {\n var RunInRootFrame = {\n DetermineComponentFrameRoot: function () {\n try {\n if (construct) {\n var Fake = function () {\n throw Error();\n };\n Object.defineProperty(Fake.prototype, \"props\", {\n set: function () {\n throw Error();\n }\n });\n if (\"object\" === typeof Reflect && Reflect.construct) {\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n var control = x;\n }\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x$0) {\n control = x$0;\n }\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x$1) {\n control = x$1;\n }\n (Fake = fn()) &&\n \"function\" === typeof Fake.catch &&\n Fake.catch(function () {});\n }\n } catch (sample) {\n if (sample && control && \"string\" === typeof sample.stack)\n return [sample.stack, control.stack];\n }\n return [null, null];\n }\n };\n RunInRootFrame.DetermineComponentFrameRoot.displayName =\n \"DetermineComponentFrameRoot\";\n var namePropDescriptor = Object.getOwnPropertyDescriptor(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\"\n );\n namePropDescriptor &&\n namePropDescriptor.configurable &&\n Object.defineProperty(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\",\n { value: \"DetermineComponentFrameRoot\" }\n );\n var _RunInRootFrame$Deter =\n RunInRootFrame.DetermineComponentFrameRoot(),\n sampleStack = _RunInRootFrame$Deter[0],\n controlStack = _RunInRootFrame$Deter[1];\n if (sampleStack && controlStack) {\n var sampleLines = sampleStack.split(\"\\n\"),\n controlLines = controlStack.split(\"\\n\");\n for (\n _RunInRootFrame$Deter = namePropDescriptor = 0;\n namePropDescriptor < sampleLines.length &&\n !sampleLines[namePropDescriptor].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n namePropDescriptor++;\n for (\n ;\n _RunInRootFrame$Deter < controlLines.length &&\n !controlLines[_RunInRootFrame$Deter].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n _RunInRootFrame$Deter++;\n if (\n namePropDescriptor === sampleLines.length ||\n _RunInRootFrame$Deter === controlLines.length\n )\n for (\n namePropDescriptor = sampleLines.length - 1,\n _RunInRootFrame$Deter = controlLines.length - 1;\n 1 <= namePropDescriptor &&\n 0 <= _RunInRootFrame$Deter &&\n sampleLines[namePropDescriptor] !==\n controlLines[_RunInRootFrame$Deter];\n\n )\n _RunInRootFrame$Deter--;\n for (\n ;\n 1 <= namePropDescriptor && 0 <= _RunInRootFrame$Deter;\n namePropDescriptor--, _RunInRootFrame$Deter--\n )\n if (\n sampleLines[namePropDescriptor] !==\n controlLines[_RunInRootFrame$Deter]\n ) {\n if (1 !== namePropDescriptor || 1 !== _RunInRootFrame$Deter) {\n do\n if (\n (namePropDescriptor--,\n _RunInRootFrame$Deter--,\n 0 > _RunInRootFrame$Deter ||\n sampleLines[namePropDescriptor] !==\n controlLines[_RunInRootFrame$Deter])\n ) {\n var _frame =\n \"\\n\" +\n sampleLines[namePropDescriptor].replace(\n \" at new \",\n \" at \"\n );\n fn.displayName &&\n _frame.includes(\"<anonymous>\") &&\n (_frame = _frame.replace(\"<anonymous>\", fn.displayName));\n \"function\" === typeof fn &&\n componentFrameCache.set(fn, _frame);\n return _frame;\n }\n while (1 <= namePropDescriptor && 0 <= _RunInRootFrame$Deter);\n }\n break;\n }\n }\n } finally {\n (reentry = !1),\n (ReactSharedInternals.H = previousDispatcher),\n reenableLogs(),\n (Error.prepareStackTrace = frame);\n }\n sampleLines = (sampleLines = fn ? fn.displayName || fn.name : \"\")\n ? describeBuiltInComponentFrame(sampleLines)\n : \"\";\n \"function\" === typeof fn && componentFrameCache.set(fn, sampleLines);\n return sampleLines;\n }\n function describeUnknownElementTypeFrameInDEV(type) {\n if (null == type) return \"\";\n if (\"function\" === typeof type) {\n var prototype = type.prototype;\n return describeNativeComponentFrame(\n type,\n !(!prototype || !prototype.isReactComponent)\n );\n }\n if (\"string\" === typeof type) return describeBuiltInComponentFrame(type);\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame(\"Suspense\");\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame(\"SuspenseList\");\n }\n if (\"object\" === typeof type)\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return (type = describeNativeComponentFrame(type.render, !1)), type;\n case REACT_MEMO_TYPE:\n return describeUnknownElementTypeFrameInDEV(type.type);\n case REACT_LAZY_TYPE:\n prototype = type._payload;\n type = type._init;\n try {\n return describeUnknownElementTypeFrameInDEV(type(prototype));\n } catch (x) {}\n }\n return \"\";\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, self, source, owner, props) {\n self = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== self ? self : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n source,\n self\n ) {\n if (\n \"string\" === typeof type ||\n \"function\" === typeof type ||\n type === REACT_FRAGMENT_TYPE ||\n type === REACT_PROFILER_TYPE ||\n type === REACT_STRICT_MODE_TYPE ||\n type === REACT_SUSPENSE_TYPE ||\n type === REACT_SUSPENSE_LIST_TYPE ||\n type === REACT_OFFSCREEN_TYPE ||\n (\"object\" === typeof type &&\n null !== type &&\n (type.$$typeof === REACT_LAZY_TYPE ||\n type.$$typeof === REACT_MEMO_TYPE ||\n type.$$typeof === REACT_CONTEXT_TYPE ||\n type.$$typeof === REACT_CONSUMER_TYPE ||\n type.$$typeof === REACT_FORWARD_REF_TYPE ||\n type.$$typeof === REACT_CLIENT_REFERENCE$1 ||\n void 0 !== type.getModuleId))\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren], type);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children, type);\n } else {\n children = \"\";\n if (\n void 0 === type ||\n (\"object\" === typeof type &&\n null !== type &&\n 0 === Object.keys(type).length)\n )\n children +=\n \" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.\";\n null === type\n ? (isStaticChildren = \"null\")\n : isArrayImpl(type)\n ? (isStaticChildren = \"array\")\n : void 0 !== type && type.$$typeof === REACT_ELEMENT_TYPE\n ? ((isStaticChildren =\n \"<\" +\n (getComponentNameFromType(type.type) || \"Unknown\") +\n \" />\"),\n (children =\n \" Did you accidentally export a JSX literal instead of a component?\"))\n : (isStaticChildren = typeof type);\n console.error(\n \"React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s\",\n isStaticChildren,\n children\n );\n }\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(type, children, self, source, getOwner(), maybeKey);\n }\n function validateChildKeys(node, parentType) {\n if (\n \"object\" === typeof node &&\n node &&\n node.$$typeof !== REACT_CLIENT_REFERENCE\n )\n if (isArrayImpl(node))\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n isValidElement(child) && validateExplicitKey(child, parentType);\n }\n else if (isValidElement(node))\n node._store && (node._store.validated = 1);\n else if (\n (null === node || \"object\" !== typeof node\n ? (i = null)\n : ((i =\n (MAYBE_ITERATOR_SYMBOL && node[MAYBE_ITERATOR_SYMBOL]) ||\n node[\"@@iterator\"]),\n (i = \"function\" === typeof i ? i : null)),\n \"function\" === typeof i &&\n i !== node.entries &&\n ((i = i.call(node)), i !== node))\n )\n for (; !(node = i.next()).done; )\n isValidElement(node.value) &&\n validateExplicitKey(node.value, parentType);\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n function validateExplicitKey(element, parentType) {\n if (\n element._store &&\n !element._store.validated &&\n null == element.key &&\n ((element._store.validated = 1),\n (parentType = getCurrentComponentErrorInfo(parentType)),\n !ownerHasKeyUseWarning[parentType])\n ) {\n ownerHasKeyUseWarning[parentType] = !0;\n var childOwner = \"\";\n element &&\n null != element._owner &&\n element._owner !== getOwner() &&\n ((childOwner = null),\n \"number\" === typeof element._owner.tag\n ? (childOwner = getComponentNameFromType(element._owner.type))\n : \"string\" === typeof element._owner.name &&\n (childOwner = element._owner.name),\n (childOwner = \" It was passed a child from \" + childOwner + \".\"));\n var prevGetCurrentStack = ReactSharedInternals.getCurrentStack;\n ReactSharedInternals.getCurrentStack = function () {\n var stack = describeUnknownElementTypeFrameInDEV(element.type);\n prevGetCurrentStack && (stack += prevGetCurrentStack() || \"\");\n return stack;\n };\n console.error(\n 'Each child in a list should have a unique \"key\" prop.%s%s See https://react.dev/link/warning-keys for more information.',\n parentType,\n childOwner\n );\n ReactSharedInternals.getCurrentStack = prevGetCurrentStack;\n }\n }\n function getCurrentComponentErrorInfo(parentType) {\n var info = \"\",\n owner = getOwner();\n owner &&\n (owner = getComponentNameFromType(owner.type)) &&\n (info = \"\\n\\nCheck the render method of `\" + owner + \"`.\");\n info ||\n ((parentType = getComponentNameFromType(parentType)) &&\n (info =\n \"\\n\\nCheck the top-level render call using <\" + parentType + \">.\"));\n return info;\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n Symbol.for(\"react.provider\");\n var REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_OFFSCREEN_TYPE = Symbol.for(\"react.offscreen\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator,\n REACT_CLIENT_REFERENCE$2 = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n assign = Object.assign,\n REACT_CLIENT_REFERENCE$1 = Symbol.for(\"react.client.reference\"),\n isArrayImpl = Array.isArray,\n disabledDepth = 0,\n prevLog,\n prevInfo,\n prevWarn,\n prevError,\n prevGroup,\n prevGroupCollapsed,\n prevGroupEnd;\n disabledLog.__reactDisabledLog = !0;\n var prefix,\n suffix,\n reentry = !1;\n var componentFrameCache = new (\n \"function\" === typeof WeakMap ? WeakMap : Map\n )();\n var REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var didWarnAboutKeySpread = {},\n ownerHasKeyUseWarning = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey, source, self) {\n return jsxDEVImpl(type, config, maybeKey, !1, source, self);\n };\n exports.jsxs = function (type, config, maybeKey, source, self) {\n return jsxDEVImpl(type, config, maybeKey, !0, source, self);\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import { createContext, useRef, useEffect, useContext, useState } from 'react';\nimport matchMedia from 'matchmediaquery';\nimport hyphenate from 'hyphenate-style-name';\nimport { shallowEqualObjects } from 'shallow-equal';\nimport PropTypes from 'prop-types';\n\nconst stringOrNumber = PropTypes.oneOfType([PropTypes.string, PropTypes.number]);\n// media types\nconst types = {\n all: PropTypes.bool,\n grid: PropTypes.bool,\n aural: PropTypes.bool,\n braille: PropTypes.bool,\n handheld: PropTypes.bool,\n print: PropTypes.bool,\n projection: PropTypes.bool,\n screen: PropTypes.bool,\n tty: PropTypes.bool,\n tv: PropTypes.bool,\n embossed: PropTypes.bool\n};\n// properties that match media queries\nconst matchers = {\n orientation: PropTypes.oneOf(['portrait', 'landscape']),\n scan: PropTypes.oneOf(['progressive', 'interlace']),\n aspectRatio: PropTypes.string,\n deviceAspectRatio: PropTypes.string,\n height: stringOrNumber,\n deviceHeight: stringOrNumber,\n width: stringOrNumber,\n deviceWidth: stringOrNumber,\n color: PropTypes.bool,\n colorIndex: PropTypes.bool,\n monochrome: PropTypes.bool,\n resolution: stringOrNumber,\n type: Object.keys(types)\n};\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst { type, ...featureMatchers } = matchers;\n// media features\nconst features = {\n minAspectRatio: PropTypes.string,\n maxAspectRatio: PropTypes.string,\n minDeviceAspectRatio: PropTypes.string,\n maxDeviceAspectRatio: PropTypes.string,\n minHeight: stringOrNumber,\n maxHeight: stringOrNumber,\n minDeviceHeight: stringOrNumber,\n maxDeviceHeight: stringOrNumber,\n minWidth: stringOrNumber,\n maxWidth: stringOrNumber,\n minDeviceWidth: stringOrNumber,\n maxDeviceWidth: stringOrNumber,\n minColor: PropTypes.number,\n maxColor: PropTypes.number,\n minColorIndex: PropTypes.number,\n maxColorIndex: PropTypes.number,\n minMonochrome: PropTypes.number,\n maxMonochrome: PropTypes.number,\n minResolution: stringOrNumber,\n maxResolution: stringOrNumber,\n ...featureMatchers\n};\nconst all = { ...types, ...features };\nvar mq = {\n all: all,\n types: types,\n matchers: matchers,\n features: features\n};\n\nconst negate = (cond) => `not ${cond}`;\nconst keyVal = (k, v) => {\n const realKey = hyphenate(k);\n // px shorthand\n if (typeof v === 'number') {\n v = `${v}px`;\n }\n if (v === true) {\n return realKey;\n }\n if (v === false) {\n return negate(realKey);\n }\n return `(${realKey}: ${v})`;\n};\nconst join = (conds) => conds.join(' and ');\nconst toQuery = (obj) => {\n const rules = [];\n Object.keys(mq.all).forEach((k) => {\n const v = obj[k];\n if (v != null) {\n rules.push(keyVal(k, v));\n }\n });\n return join(rules);\n};\n\nconst Context = createContext(undefined);\n\nconst makeQuery = (settings) => settings.query || toQuery(settings);\nconst hyphenateKeys = (obj) => {\n if (!obj)\n return undefined;\n const keys = Object.keys(obj);\n return keys.reduce((result, key) => {\n result[hyphenate(key)] = obj[key];\n return result;\n }, {});\n};\nconst useIsUpdate = () => {\n const ref = useRef(false);\n useEffect(() => {\n ref.current = true;\n }, []);\n return ref.current;\n};\nconst useDevice = (deviceFromProps) => {\n const deviceFromContext = useContext(Context);\n const getDevice = () => hyphenateKeys(deviceFromProps) || hyphenateKeys(deviceFromContext);\n const [device, setDevice] = useState(getDevice);\n useEffect(() => {\n const newDevice = getDevice();\n if (!shallowEqualObjects(device, newDevice)) {\n setDevice(newDevice);\n }\n }, [deviceFromProps, deviceFromContext]);\n return device;\n};\nconst useQuery = (settings) => {\n const getQuery = () => makeQuery(settings);\n const [query, setQuery] = useState(getQuery);\n useEffect(() => {\n const newQuery = getQuery();\n if (query !== newQuery) {\n setQuery(newQuery);\n }\n }, [settings]);\n return query;\n};\nconst useMatchMedia = (query, device) => {\n const getMatchMedia = () => matchMedia(query, device || {}, !!device);\n const [mq, setMq] = useState(getMatchMedia);\n const isUpdate = useIsUpdate();\n useEffect(() => {\n if (isUpdate) {\n // skip on mounting, it has already been set\n const newMq = getMatchMedia();\n setMq(newMq);\n return () => {\n if (newMq) {\n newMq.dispose();\n }\n };\n }\n }, [query, device]);\n return mq;\n};\nconst useMatches = (mediaQuery) => {\n const [matches, setMatches] = useState(mediaQuery.matches);\n useEffect(() => {\n const updateMatches = (ev) => {\n setMatches(ev.matches);\n };\n mediaQuery.addListener(updateMatches);\n setMatches(mediaQuery.matches);\n return () => {\n mediaQuery.removeListener(updateMatches);\n };\n }, [mediaQuery]);\n return matches;\n};\nconst useMediaQuery = (settings, device, onChange) => {\n const deviceSettings = useDevice(device);\n const query = useQuery(settings);\n if (!query)\n throw new Error('Invalid or missing MediaQuery!');\n const mq = useMatchMedia(query, deviceSettings);\n const matches = useMatches(mq);\n const isUpdate = useIsUpdate();\n useEffect(() => {\n if (isUpdate && onChange) {\n onChange(matches);\n }\n }, [matches]);\n useEffect(() => () => {\n if (mq) {\n mq.dispose();\n }\n }, []);\n return matches;\n};\n\n// ReactNode and ReactElement typings are a little funky for functional components, so the ReactElement cast is needed on the return\nconst MediaQuery = ({ children, device, onChange, ...settings }) => {\n const matches = useMediaQuery(settings, device, onChange);\n if (typeof children === 'function') {\n return children(matches);\n }\n return matches ? children : null;\n};\n\nexport { Context, MediaQuery, MediaQuery as default, toQuery, useMediaQuery };\n//# sourceMappingURL=index.js.map\n","function shallowEqualArrays(arrA, arrB) {\n if (arrA === arrB) {\n return true;\n }\n if (!arrA || !arrB) {\n return false;\n }\n const len = arrA.length;\n if (arrB.length !== len) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n if (arrA[i] !== arrB[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction shallowEqualObjects(objA, objB) {\n if (objA === objB) {\n return true;\n }\n if (!objA || !objB) {\n return false;\n }\n const aKeys = Object.keys(objA);\n const bKeys = Object.keys(objB);\n const len = aKeys.length;\n if (bKeys.length !== len) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n const key = aKeys[i];\n if (objA[key] !== objB[key] || !Object.prototype.hasOwnProperty.call(objB, key)) {\n return false;\n }\n }\n return true;\n}\n\nfunction shallowEqual(a, b) {\n const aIsArr = Array.isArray(a);\n const bIsArr = Array.isArray(b);\n if (aIsArr !== bIsArr) {\n return false;\n }\n if (aIsArr && bIsArr) {\n return shallowEqualArrays(a, b);\n }\n return shallowEqualObjects(a, b);\n}\n\nexport { shallowEqual, shallowEqualArrays, shallowEqualObjects };\n//# sourceMappingURL=index.modern.mjs.map\n","import React from \"react\";\nimport { Routes, Route, useLocation, useNavigate } from \"react-router-dom\";\nimport { Navigate } from \"react-router-dom\";\nimport { lazyWithFallback } from \"@egovernments/digit-ui-components\";\n\n// Create lazy components with fallbacks using the utility\nconst CitizenApp = lazyWithFallback(\n () => import(/* webpackChunkName: \"citizen-app\" */ \"./pages/citizen\"),\n () => require(\"./pages/citizen\").default,\n { loaderText: \"CORE_LOADING_CITIZEN_APP\" }\n);\n\nconst EmployeeApp = lazyWithFallback(\n () => import(/* webpackChunkName: \"employee-app\" */ \"./pages/employee\"),\n () => require(\"./pages/employee\").default,\n { loaderText: \"CORE_LOADING_EMPLOYEE_APP\" }\n);\n\nconst SignUp = lazyWithFallback(\n () => import(/* webpackChunkName: \"sign-up\" */ \"./pages/employee/SignUp\"),\n () => require(\"./pages/employee/SignUp\").default,\n { loaderText: \"CORE_LOADING_SIGN_UP\" }\n);\n\nconst Otp = lazyWithFallback(\n () => import(/* webpackChunkName: \"otp\" */ \"./pages/employee/Otp\"),\n () => require(\"./pages/employee/Otp\").default,\n { loaderText: \"CORE_LOADING_OTP\" }\n);\n\nconst ViewUrl = lazyWithFallback(\n () => import(/* webpackChunkName: \"view-url\" */ \"./pages/employee/ViewUrl\"),\n () => require(\"./pages/employee/ViewUrl\").default,\n { loaderText: \"CORE_LOADING_VIEW_URL\" }\n);\n\nconst CustomErrorComponent = lazyWithFallback(\n () => import(/* webpackChunkName: \"custom-error\" */ \"./components/CustomErrorComponent\"),\n () => require(\"./components/CustomErrorComponent\").default,\n { loaderText: \"CORE_LOADING_ERROR_COMPONENT\" }\n);\n\nconst DummyLoaderScreen = lazyWithFallback(\n () => import(/* webpackChunkName: \"dummy-loader\" */ \"./components/DummyLoader\"),\n () => require(\"./components/DummyLoader\").default,\n { loaderText: \"CORE_LOADING\" }\n);\n\nexport const DigitApp = ({ stateCode, modules, appTenants, logoUrl, logoUrlWhite, initData, defaultLanding = \"citizen\", allowedUserTypes = [\"citizen\", \"employee\"] }) => {\n const navigate = useNavigate();\n const { pathname } = useLocation();\n const innerWidth = window.innerWidth;\n const cityDetails = Digit.ULBService.getCurrentUlb();\n const userDetails = Digit.UserService.getUser();\n const { data: storeData } = Digit.Hooks.useStore.getInitData();\n const { stateInfo } = storeData || {};\n\n const DSO = Digit.UserService.hasAccess([\"FSM_DSO\"]);\n let CITIZEN = userDetails?.info?.type === \"CITIZEN\" || !window.location.pathname.split(\"/\").includes(\"employee\") ? true : false;\n\n if (window.location.pathname.split(\"/\").includes(\"employee\")) CITIZEN = false;\n\n const handleUserDropdownSelection = (option) => {\n option.func();\n };\n\n const mobileView = innerWidth <= 640;\n let sourceUrl = `${window.location.origin}/citizen`;\n const commonProps = {\n stateInfo,\n userDetails,\n CITIZEN,\n cityDetails,\n mobileView,\n handleUserDropdownSelection,\n logoUrl,\n logoUrlWhite,\n DSO,\n stateCode,\n modules,\n appTenants,\n sourceUrl,\n pathname,\n initData,\n };\n\n return (\n <Routes>\n {allowedUserTypes?.includes(\"employee\") && (\n <Route path={`/${window?.contextPath}/employee/*`} element={<EmployeeApp {...commonProps} />} />\n )}\n {allowedUserTypes?.includes(\"citizen\") && (\n <Route path={`/${window?.contextPath}/citizen/*`} element={<CitizenApp {...commonProps} />} />\n )}\n {allowedUserTypes?.includes(\"employee\") && (\n <Route path={`/${window?.contextPath}/no-top-bar/employee`} element={<EmployeeApp {...commonProps} noTopBar />} />\n )}\n <Route path=\"*\" element={<Navigate to={`/${window?.contextPath}/${defaultLanding}`} />} />\n </Routes>\n );\n};\n\nexport const DigitAppWrapper = ({ stateCode, modules, appTenants, logoUrl, logoUrlWhite, initData, defaultLanding = \"citizen\" ,allowedUserTypes}) => {\n // const globalPath = window?.globalConfigs?.getConfig(\"CONTEXT_PATH\") || \"digit-ui\";\n const { data: storeData } = Digit.Hooks.useStore.getInitData();\n const { stateInfo } = storeData || {};\n const userScreensExempted = [\"user/error\"];\n const isUserProfile = userScreensExempted.some((url) => location?.pathname?.includes(url));\n const userDetails = Digit.UserService.getUser();\n let CITIZEN = userDetails?.info?.type === \"CITIZEN\" || !window.location.pathname.split(\"/\").includes(\"employee\") ? true : false;\n const innerWidth = window.innerWidth;\n const mobileView = innerWidth <= 640;\n\n return (\n <div\n className={isUserProfile ? \"grounded-container\" : \"loginContainer\"}\n style={\n isUserProfile ? { padding: 0, paddingTop: CITIZEN ? \"0\" : mobileView && !CITIZEN ? \"3rem\" : \"80px\", marginLeft: CITIZEN || mobileView ? \"0\" : \"40px\" } : { \"--banner-url\": `url(${stateInfo?.bannerUrl})`, padding: \"0px\" }\n }\n >\n <Routes>\n <Route path={`/${window?.globalPath}/user/invalid-url`} element={<CustomErrorComponent />} />\n <Route path={`/${window?.globalPath}/user/sign-up`} element={<SignUp stateCode={stateCode} />} />\n <Route path={`/${window?.globalPath}/user/otp`} element={<Otp />} />\n <Route path={`/${window?.globalPath}/user/setup`} element={<DummyLoaderScreen />} />\n <Route path={`/${window?.globalPath}/user/url`} element={<ViewUrl />} />\n {window?.globalPath !== window?.contextPath && (\n <Route\n path={`/${window?.contextPath}/*`}\n element={\n <DigitApp\n stateCode={stateCode}\n modules={modules}\n appTenants={appTenants}\n logoUrl={logoUrl}\n logoUrlWhite={logoUrlWhite}\n initData={initData}\n defaultLanding={defaultLanding}\n allowedUserTypes={allowedUserTypes}\n />\n }\n />\n )}\n <Route path=\"*\" element={<Navigate to={`/${window?.globalPath}/user/sign-up`} />} />\n </Routes>\n </div>\n );\n};","import { BodyContainer } from \"@egovernments/digit-ui-components\";\nimport { Loader } from \"@egovernments/digit-ui-components\";\nimport React from \"react\";\nimport { getI18n } from \"react-i18next\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport { Provider } from \"react-redux\";\nimport { BrowserRouter as Router } from \"react-router-dom\";\nimport { DigitApp, DigitAppWrapper } from \"./App\";\nimport SelectOtp from \"./pages/citizen/Login/SelectOtp\";\nimport ChangeCity from \"./components/ChangeCity\";\nimport ChangeLanguage from \"./components/ChangeLanguage\";\nimport { useState, useMemo, useCallback } from \"react\";\nimport ErrorBoundary from \"./components/ErrorBoundaries\";\nimport getStore from \"./redux/store\";\nimport PrivacyComponent from \"./components/PrivacyComponent\";\nimport OtpComponent from \"./pages/employee/Otp/OtpCustomComponent\";\nimport LoginSignupSelector from \"./components/LoginSignupSelector\";\nimport ForgotOrganizationTooltip from \"./components/ForgotOrganizationTooltip\";\nimport EmployeeSSOLoginOptions from \"./components/EmployeeSSOLoginOptions\";\n\n// Create QueryClient instance outside component to prevent recreation\nconst createQueryClient = () => new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: 15 * 60 * 1000,\n gcTime: 50 * 60 * 1000,\n retry: false,\n retryDelay: (attemptIndex) => Infinity,\n /*\n enable this to have auto retry incase of failure\n retryDelay: attemptIndex => Math.min(1000 * 3 ** attemptIndex, 60000)\n */\n },\n },\n});\n\nconst DigitUIWrapper = ({ stateCode, enabledModules, defaultLanding,allowedUserTypes }) => {\n const { isLoading, data: initData={} } = Digit.Hooks.useInitStore(stateCode, enabledModules);\n if (isLoading) {\n return <Loader page={true} variant={\"PageLoader\"} />;\n }\n const data=getStore(initData) || {};\n const i18n = getI18n();\n if(!Digit.ComponentRegistryService.getComponent(\"PrivacyComponent\")){\n Digit.ComponentRegistryService.setComponent(\"PrivacyComponent\", PrivacyComponent);\n }\n if(!Digit.ComponentRegistryService.getComponent(\"EmployeeSSOLoginOptions\")){\n Digit.ComponentRegistryService.setComponent(\"EmployeeSSOLoginOptions\", EmployeeSSOLoginOptions);\n }\n return (\n <Provider store={data}>\n <Router>\n <BodyContainer>\n {Digit.Utils.getMultiRootTenant() ? (\n <DigitAppWrapper\n initData={initData}\n stateCode={stateCode}\n modules={initData?.modules}\n appTenants={initData.tenants}\n logoUrl={initData?.stateInfo?.logoUrl}\n logoUrlWhite={initData?.stateInfo?.logoUrlWhite}\n defaultLanding={defaultLanding}\n allowedUserTypes={allowedUserTypes}\n />\n ) : (\n <DigitApp\n initData={initData}\n stateCode={stateCode}\n modules={initData?.modules}\n appTenants={initData.tenants}\n logoUrl={initData?.stateInfo?.logoUrl}\n defaultLanding={defaultLanding}\n allowedUserTypes={allowedUserTypes}\n />\n )}\n </BodyContainer>\n </Router>\n </Provider>\n );\n};\n\n/**\n * DigitUI Component - The main entry point for the UI.\n *\n * @param {Object} props - The properties passed to the component.\n * @param {string} props.stateCode - The state code for the application.\n * @param {Object} props.registry - The registry object containing components registrations.\n * @param {Array<string>} props.enabledModules - A list of enabled modules, if any modules to be disabled due to some condition.\n * @param {Object} props.moduleReducers - Reducers associated with enabled modules.\n * @param {string} props.defaultLanding - The default landing page (e.g., \"employee\", \"citizen\"), default is citizen.\n * @param {Array<string>} props.allowedUserTypes - A list of allowed user types (e.g., [\"employee\", \"citizen\"]) if any restriction to be applied, and default is both employee & citizen.\n * \n * @author jagankumar-egov\n *\n * @example\n * <DigitUI\n * stateCode=\"pg\"\n * registry={registry}\n * enabledModules={[\"Workbench\", \"PGR\"]}\n * defaultLanding=\"employee\"\n * allowedUserTypes={[\"employee\", \"citizen\"]}\n * moduleReducers={moduleReducers}\n * />\n */\nexport const DigitUI = ({ stateCode, registry, enabledModules, defaultLanding,allowedUserTypes }) => {\n // Memoize initial privacy state to prevent unnecessary re-renders\n const initialPrivacy = useMemo(() => Digit.Utils.getPrivacyObject() || {}, []);\n const [privacy, setPrivacy] = useState(initialPrivacy);\n \n const userType = Digit.UserService.getType();\n \n // Use memoized QueryClient to prevent recreation on every render\n const queryClient = useMemo(() => createQueryClient(), []);\n\n const ComponentProvider = Digit.Contexts.ComponentProvider;\n const PrivacyProvider = Digit.Contexts.PrivacyProvider;\n\n const DSO = Digit.UserService.hasAccess([\"FSM_DSO\"]);\n\n // Memoize privacy context methods to prevent unnecessary re-renders\n const resetPrivacy = useCallback((_data) => {\n Digit.Utils.setPrivacyObject({});\n setPrivacy({});\n }, []);\n\n const getPrivacy = useCallback(() => {\n const privacyObj = Digit.Utils.getPrivacyObject();\n setPrivacy(privacyObj);\n return privacyObj;\n }, []);\n\n const updatePrivacyDescoped = useCallback((_data) => {\n const privacyObj = Digit.Utils.getAllPrivacyObject();\n // Safely access pathname with fallback\n const pathname = typeof window !== 'undefined' ? window.location.pathname : '';\n const newObj = { ...privacyObj, [pathname]: _data };\n Digit.Utils.setPrivacyObject({ ...newObj });\n setPrivacy(privacyObj?.[pathname] || {});\n }, []);\n\n const updatePrivacy = useCallback((uuid, fieldName) => {\n setPrivacy(Digit.Utils.updatePrivacy(uuid, fieldName) || {});\n }, []);\n\n // Memoize privacy context value to prevent unnecessary re-renders\n const privacyContextValue = useMemo(() => ({\n privacy: typeof window !== 'undefined' ? privacy?.[window.location.pathname] : privacy,\n resetPrivacy,\n getPrivacy,\n updatePrivacyDescoped,\n updatePrivacy,\n }), [privacy, resetPrivacy, getPrivacy, updatePrivacyDescoped, updatePrivacy]);\n\n return (\n <div>\n <ErrorBoundary>\n <QueryClientProvider client={queryClient}>\n <ComponentProvider.Provider value={registry}>\n <PrivacyProvider.Provider value={privacyContextValue}>\n <DigitUIWrapper stateCode={stateCode} enabledModules={enabledModules} defaultLanding={defaultLanding} allowedUserTypes={allowedUserTypes} />\n </PrivacyProvider.Provider>\n </ComponentProvider.Provider>\n </QueryClientProvider>\n </ErrorBoundary>\n </div>\n );\n};\n\nconst componentsToRegister = {\n SelectOtp,\n ChangeCity,\n ChangeLanguage,\n PrivacyComponent,\n OtpComponent,\n ForgotOrganizationTooltip,\n LoginSignupSelector,\n EmployeeSSOLoginOptions\n};\n\nexport const initCoreComponents = () => {\n // Ensure hooks introduced in newer libraries versions are always available.\n // Old deployments (e.g. digit-ui-libraries@1.8.8) won't have useSSOConfig,\n // so we register a no-op fallback so login.js never crashes with \"not a function\".\n if (!Digit.Hooks.useSSOConfig) {\n Digit.Hooks.useSSOConfig = () => ({ data: [], isLoading: false });\n }\n Object.entries(componentsToRegister).forEach(([key, value]) => {\n Digit.ComponentRegistryService.setComponent(key, value);\n });\n};\n","import React from \"react\";\nimport { Routes, Route, Navigate, useLocation } from \"react-router-dom\";\nimport { lazyWithFallback } from \"@egovernments/digit-ui-components\";\nimport DynamicModuleLoader from \"./DynamicModuleLoader\";\n\n// Create lazy components with fallbacks using the utility\nconst ChangePassword = lazyWithFallback(\n () => import(/* webpackChunkName: \"app-change-password\" */ \"../pages/employee/ChangePassword/index\"),\n () => require(\"../pages/employee/ChangePassword/index\").default,\n { loaderText: \"CORE_LOADING_CHANGE_PASSWORD\" }\n);\n\nconst ForgotPassword = lazyWithFallback(\n () => import(/* webpackChunkName: \"app-forgot-password\" */ \"../pages/employee/ForgotPassword/index\"),\n () => require(\"../pages/employee/ForgotPassword/index\").default,\n { loaderText: \"CORE_LOADING_FORGOT_PASSWORD\" }\n);\n\nconst AppHome = lazyWithFallback(\n () => import(/* webpackChunkName: \"app-home\" */ \"./Home\").then(module => ({ default: module.AppHome })),\n () => require(\"./Home\").AppHome,\n { loaderText: \"CORE_LOADING_HOME\" }\n);\n\nconst getTenants = (codes, tenants) => {\n return tenants.filter((tenant) => codes?.map?.((item) => item.code).includes(tenant.code));\n};\n\nexport const AppModules = ({ stateCode, userType, modules, appTenants, additionalComponent }) => {\n const location = useLocation();\n const user = Digit.UserService.getUser();\n\n if (!user || !user?.access_token || !user?.info) {\n return <Navigate to={{ pathname: `/${window?.contextPath}/${userType}/user/login`, state: { from: location.pathname + location.search } }} replace />;\n }\n\n // Create app routes with dynamic module loading and loading states\n const appRoutes = modules?.map(({ code, tenants }, index) => {\n return (\n <Route\n key={index}\n path={`${code.toLowerCase()}/*`}\n element={\n <DynamicModuleLoader\n moduleCode={code}\n stateCode={stateCode}\n userType={userType}\n tenants={getTenants(tenants, appTenants)}\n maxRetries={3}\n retryDelay={1000}\n initialDelay={800}\n />\n }\n />\n );\n });\n\n return (\n <div className=\"ground-container digit-home-ground\">\n <Routes>\n {appRoutes}\n <Route\n path=\"login\"\n element={\n <Navigate\n to={{ pathname: `/${window?.contextPath}/${userType}/user/login`, state: { from: location.pathname + location.search } }}\n replace\n />\n }\n />\n <Route path=\"forgot-password\" element={<ForgotPassword />} />\n <Route path=\"change-password\" element={<ChangePassword />} />\n <Route\n path=\"*\"\n element={\n <AppHome\n userType={userType}\n modules={modules}\n additionalComponent={additionalComponent}\n />\n }\n />\n </Routes>\n </div>\n );\n};","import React from \"react\";\n\nconst Background = ({ children }) => {\n return <div className=\"banner banner-container\">{children}</div>;\n};\n\nexport default Background;\n","import { CardText, Dropdown } from \"@egovernments/digit-ui-components\";\nimport React, { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\n\nconst stringReplaceAll = (str = \"\", searcher = \"\", replaceWith = \"\") => {\n if (searcher == \"\") return str;\n while (str?.includes(searcher)) {\n str = str?.replace(searcher, replaceWith);\n }\n return str;\n};\n\nconst ChangeCity = (prop) => {\n const [dropDownData, setDropDownData] = useState(null);\n const [selectCityData, setSelectCityData] = useState([]);\n const [selectedCity, setSelectedCity] = useState([]); \n const navigate = useNavigate();\n const isDropdown = prop.dropdown || false;\n let selectedCities = [];\n const isMultiRootTenant = Digit.Utils.getMultiRootTenant();\n\n const handleChangeCity = (city) => {\n const loggedInData = Digit.SessionStorage.get(\"citizen.userRequestObject\");\n const filteredRoles = Digit.SessionStorage.get(\"citizen.userRequestObject\")?.info?.roles?.filter((role) => role.tenantId === city.value);\n if (filteredRoles?.length > 0) {\n loggedInData.info.roles = filteredRoles;\n loggedInData.info.tenantId = city?.value;\n }\n Digit.SessionStorage.set(\"Employee.tenantId\", city?.value);\n Digit.UserService.setUser(loggedInData);\n setDropDownData(city);\n if (typeof window !== 'undefined' && window.location?.href?.includes(`/${window?.contextPath}/employee/`)) {\n const redirectPath = location.state?.from || `/${window?.contextPath}/employee`;\n navigate(redirectPath, { replace: true });\n }\n // Safe reload with error handling\n try {\n if (typeof window !== 'undefined') {\n window.location.reload();\n }\n } catch (error) {\n console.warn('Failed to reload page:', error);\n }\n };\n\n useEffect(() => {\n const userloggedValues = Digit.SessionStorage.get(\"citizen.userRequestObject\");\n let teantsArray = [],\n filteredArray = [];\n userloggedValues?.info?.roles?.forEach((role) => teantsArray.push(role.tenantId));\n let unique = teantsArray.filter((item, i, ar) => ar.indexOf(item) === i);\n unique?.forEach((uniCode) => {\n filteredArray.push({\n label: `TENANT_TENANTS_${stringReplaceAll(uniCode, \".\", \"_\")?.toUpperCase()}`,\n value: uniCode,\n });\n });\n selectedCities = filteredArray?.filter((select) => select.value == Digit.SessionStorage.get(\"Employee.tenantId\"));\n setSelectCityData(filteredArray);\n }, [dropDownData]);\n\n // if (isDropdown) {\n return (\n <div style={prop?.mobileView ? { color: \"#767676\" } : {}}>\n {\n (isMultiRootTenant && selectCityData.length==1) ? \n <CardText style={{color:\"#363636\"}}>{selectCityData?.[0]?.value}</CardText>\n :\n <Dropdown\n t={prop?.t}\n option={selectCityData}\n selected={selectCityData.find((cityValue) => cityValue.value === dropDownData?.value)}\n optionKey={\"label\"}\n select={handleChangeCity}\n freeze={true}\n customSelector={\n <label className=\"cp\">\n {prop?.t(`TENANT_TENANTS_${stringReplaceAll(Digit.SessionStorage.get(\"Employee.tenantId\"), \".\", \"_\")?.toUpperCase()}`)}\n </label>\n }\n />\n}\n </div>\n );\n // } else {\n // return (\n // <React.Fragment>\n // <div style={{ marginBottom: \"5px\" }}>City</div>\n // <div className=\"language-selector\" style={{display: \"flex\", flexWrap: \"wrap\"}}>\n // {selectCityData?.map((city, index) => (\n // <div className=\"language-button-container\" key={index}>\n // <CustomButton\n // selected={city.value === Digit.SessionStorage.get(\"Employee.tenantId\")}\n // text={city.label}\n // onClick={() => handleChangeCity(city)}\n // ></CustomButton>\n // </div>\n // ))}\n // </div>\n // </React.Fragment>\n // );\n // }\n};\n\nexport default ChangeCity;\n","import { Button, Dropdown } from \"@egovernments/digit-ui-components\";\nimport React, { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nconst ChangeLanguage = (prop) => {\n const isDropdown = prop.dropdown || false;\n const { data: storeData, isLoading } = Digit.Hooks.useStore.getInitData();\n const { languages, stateInfo } = storeData || {};\n const { t } = useTranslation();\n const selectedLanguage = Digit.StoreData.getCurrentLanguage();\n const [selected, setselected] = useState(selectedLanguage);\n const handleChangeLanguage = (language) => {\n setselected(language.value);\n Digit.LocalizationService.changeLanguage(language.value, stateInfo.code);\n };\n\n if (isLoading) return null;\n\n if (isDropdown) {\n return (\n <div>\n <Dropdown\n className={\"language-dropdown\"}\n option={languages}\n selected={languages?.find((language) => language?.value === selectedLanguage)}\n optionKey={\"label\"}\n select={handleChangeLanguage}\n freeze={true}\n customSelector={<label className=\"cp\">{t(languages?.find((language) => language?.value === selected)?.label)}</label>}\n />\n </div>\n );\n } else {\n return (\n <React.Fragment>\n <div style={{ marginBottom: \"5px\" }}>Language</div>\n <div className=\"language-selector\">\n {languages.map((language, index) => (\n <div className=\"language-button-container\" key={index}>\n <Button\n label={language.label}\n onClick={() => handleChangeLanguage(language)}\n variation={language.value === selected ? \"primary\" : \"\"}\n />\n </div>\n ))}\n </div>\n </React.Fragment>\n );\n }\n};\n\nexport default ChangeLanguage;\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport Background from \"./Background\";\nimport { Button, Card, CardHeader, CardText } from \"@egovernments/digit-ui-components\";\nimport Header from \"./Header\";\n\nconst CustomErrorComponent = (props) => {\n const { state = {} } = useLocation();\n // const module = state?.module;\n const { t } = useTranslation();\n const stateInfo = props.stateInfo;\n\n const navigate = useNavigate();\n const ModuleBasedErrorConfig = {\n sandbox: {\n imgUrl: `https://s3.ap-south-1.amazonaws.com/egov-qa-assets/error-image.png`,\n infoHeader: \"WRONG_TENANT_SIGN_UP\",\n infoMessage: \"WRONG_TENANT_SIGN_UP_MESSAGE\",\n buttonInfo: \"WRONG_TENANT_SIGN_UP_BUTTON\",\n action: () => {\n navigate(`/${window.globalPath}/`);\n },\n },\n };\n const config = ModuleBasedErrorConfig[\"sandbox\"];\n\n return (\n <Background>\n <Card className={`digit-employee-card customError`}>\n <Header showTenant={false} />\n <CardHeader className={\"center\"}>{t(config.infoHeader)}</CardHeader>\n <CardText className={\"center\"}>{t(config.infoMessage)}</CardText>\n <Button\n className=\"customErrorButton\"\n label={t(config?.buttonInfo)}\n variation={\"primary\"}\n isSuffix={true}\n onClick={(e) => {\n e.preventDefault();\n config?.action();\n }}\n />\n </Card>\n </Background>\n );\n};\n\nexport default CustomErrorComponent;\n","import { CardText, PopUp, Button } from \"@egovernments/digit-ui-components\";\nimport React from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nconst LogoutDialog = ({ onSelect, onCancel, onDismiss, PopupStyles, isDisabled, hideSubmit }) => {\n const { t } = useTranslation();\n\n const children = [\n <div>\n <CardText>\n {t(\"CORE_LOGOUT_WEB_CONFIRMATION_MESSAGE\") + \" \"}\n <strong>{t(\"CORE_LOGOUT_MESSAGE\")}</strong>\n </CardText>\n </div>,\n ];\n\n const footer = [\n <Button\n type={\"button\"}\n size={\"large\"}\n variation={\"secondary\"}\n label={t(\"CORE_LOGOUT_CANCEL\")}\n className={\"logout-cancel-button\"}\n onClick={onCancel}\n />,\n <Button\n type={\"button\"}\n size={\"large\"}\n variation={\"primary\"}\n label={t(\"CORE_LOGOUT_WEB_YES\")}\n formId={\"modal-action\"}\n onClick={onSelect}\n isDisabled={isDisabled}\n />\n ];\n\n const footerWithoutSubmit = [\n <Button\n type={\"button\"}\n size={\"large\"}\n variation={\"digit-action-cancel\"}\n label={t(\"CORE_LOGOUT_CANCEL\")}\n className={\"logout-cancel-button\"}\n onClick={onCancel}\n />,\n ];\n\n return (\n <PopUp\n type=\"default\"\n children={children}\n heading={t(\"CORE_LOGOUT_WEB_HEADER\")}\n footerChildren={hideSubmit ? footerWithoutSubmit : footer}\n sortFooterButtons={true}\n onClose={onDismiss}\n className={\"digit-logout-popup-wrapper\"}\n onOverlayClick={onDismiss}\n equalWidthButtons={true}\n style={PopupStyles}\n ></PopUp>\n );\n};\nexport default LogoutDialog;","import React, {useRef, useEffect, useState } from \"react\";\nimport { CheckCircle } from \"@egovernments/digit-ui-svg-components\";\nimport { useNavigate, useLocation } from \"react-router-dom\";\nimport { useTranslation } from \"react-i18next\";\n\nconst DummyLoaderScreen = () => {\n const [currentStep, setCurrentStep] = useState(0);\n const navigate = useNavigate();\n const location = useLocation();\n const { t } = useTranslation();\n const { tenant } = location.state || {};\n const steps = [\n \"SANDBOX_GUIDE_SETUP_ACCOUNT\",\n \"SANDBOX_GUIDE_DEFAULT_MASTER_DATA\",\n \"SANDBOX_GUIDE_CONFIGURING_COMPLAINTS\",\n \"SANDBOX_GUIDE_CONFIGURING_EMPLOYEE_MANAGEMENT\",\n \"SANDBOX_GUIDE_SETTING_UP_CITIZEN_PORTAL\",\n \"SANDBOX_GUIDE_SETTING_UP_EMPLOYEE_PORTAL\",\n \"SANDBOX_GUIDE_LOADING_CONFIGURATION_INTERFACE\",\n \"SANDBOX_GUIDE_CREATING_DASHBOARD\",\n \"SANDBOX_GUIDE_ALL_SETUP_DONE\",\n ];\n useEffect(() => {\n const stepInterval = setInterval(() => {\n if (currentStep < steps.length) {\n setCurrentStep((prev) => prev + 1);\n }\n }, 2000); // 1 second delay for each step\n\n if (currentStep === steps.length) {\n clearInterval(stepInterval); // Clear the interval to stop further updates\n const globalPath = typeof window !== 'undefined' ? window?.globalPath : '';\n\n const navigateTimeout = setTimeout(() => {\n if (roleForLandingPage(getUserRoles, MdmsRes)) {\n navigate({\n pathname: `/${window?.globalPath}/${tenant}${RoleLandingUrl}`,\n state: { tenant: tenant },\n });\n\n } else {\n navigate({\n pathname: `/${window?.globalPath}/${tenant}/employee`,\n state: { tenant: tenant },\n });\n }\n }, 1000);\n\n return () => clearTimeout(navigateTimeout); // Cleanup timeout\n }\n\n return () => {\n clearInterval(stepInterval);\n };\n }, [currentStep]);\n\n const ref = useRef(null);\n const getUserRoles = Digit.SessionStorage.get(\"User\")?.info?.roles;\n const [buttonDisabled, setButtonDisabled] = useState(true);\n const { data: MdmsRes } = Digit.Hooks.useCustomMDMS(\n tenant,\n \"SandBoxLanding\",\n [\n {\n name: \"LandingPageRoles\",\n },\n ],\n {\n enabled: true,\n staleTime: 0,\n cacheTime: 0,\n select: (data) => {\n return data?.[\"SandBoxLanding\"]?.[\"LandingPageRoles\"];\n },\n }\n );\n\n useEffect(() => {\n if (MdmsRes?.[0].url) {\n setButtonDisabled(false);\n }\n }, [MdmsRes]);\n\n const RoleLandingUrl = MdmsRes?.[0].url;\n\n const roleForLandingPage = (getUserRoles, MdmsRes) => {\n const userRole = getUserRoles?.[0]?.code;\n return userRole === \"SUPERUSER\" && MdmsRes.some((page) => page.rolesForLandingPage.includes(\"SUPERUSER\"));\n };\n\n const onButtonClick = () => {\n if (roleForLandingPage(getUserRoles, MdmsRes)) {\n window.location.href = `/${window?.globalPath}/${tenant}${RoleLandingUrl}`;\n } else {\n window.location.href = `/${window?.globalPath}/${tenant}/employee`;\n }\n };\n\n return (\n <div className=\"sandbox-loader-screen\">\n <div className=\"sandbox-loader\"></div>\n <ul className=\"sandbox-installation-steps\">\n {steps.map((step, index) => (\n <li key={index} className={`sandbox-step ${index < currentStep ? \"sandbox-visible\" : \"\"}`}>\n <span className=\"sandbox-step-text\">{t(step)}</span>\n {index < currentStep && <CheckCircle fill=\"#00703C\" />}\n </li>\n ))}\n </ul>\n </div>\n );\n};\n\nexport default DummyLoaderScreen;\n","import React, { useState, useEffect } from \"react\";\nimport { Navigate } from \"react-router-dom\";\nimport { Loader } from \"@egovernments/digit-ui-components\";\nimport { useTranslation } from \"react-i18next\";\n\n/**\n * DynamicModuleLoader handles loading of modules from the ComponentRegistryService\n * with loading states, retries, and graceful error handling\n */\nconst DynamicModuleLoader = ({ \n moduleCode, \n stateCode, \n userType, \n tenants, \n maxRetries = 5, \n retryDelay = 1500,\n initialDelay = 100 // Initial delay before first check to allow modules to register\n}) => {\n const [moduleState, setModuleState] = useState({\n module: null,\n loading: true,\n error: null,\n retryCount: 0,\n initialDelayComplete: false\n });\n const { t } = useTranslation();\n\n useEffect(() => {\n let retryTimeout;\n let initialTimeout;\n\n const loadModule = async () => {\n try {\n // Check if module is available in ComponentRegistryService\n const Module = Digit.ComponentRegistryService.getComponent(`${moduleCode}Module`);\n \n if (Module) {\n setModuleState({\n module: Module,\n loading: false,\n error: null,\n retryCount: 0,\n initialDelayComplete: true\n });\n } else {\n // Module not found, check if we should retry\n if (moduleState.retryCount < maxRetries) {\n setModuleState(prev => ({\n ...prev,\n retryCount: prev.retryCount + 1\n }));\n \n // Retry after delay (exponential backoff)\n const delay = retryDelay * Math.pow(1.5, moduleState.retryCount);\n retryTimeout = setTimeout(() => {\n loadModule();\n }, delay);\n } else {\n // Max retries reached\n setModuleState({\n module: null,\n loading: false,\n error: `Module \"${moduleCode}\" not found after ${maxRetries} attempts`,\n retryCount: moduleState.retryCount,\n initialDelayComplete: true\n });\n }\n }\n } catch (error) {\n console.error(`Error loading module ${moduleCode}:`, error);\n setModuleState({\n module: null,\n loading: false,\n error: error.message,\n retryCount: moduleState.retryCount,\n initialDelayComplete: true\n });\n }\n };\n\n // Start with initial delay to allow modules to register\n if (!moduleState.initialDelayComplete) {\n initialTimeout = setTimeout(() => {\n setModuleState(prev => ({ ...prev, initialDelayComplete: true }));\n loadModule();\n }, initialDelay);\n } else {\n loadModule();\n }\n\n // Cleanup timeouts on unmount\n return () => {\n if (retryTimeout) {\n clearTimeout(retryTimeout);\n }\n if (initialTimeout) {\n clearTimeout(initialTimeout);\n }\n };\n }, [moduleCode, moduleState.retryCount, moduleState.initialDelayComplete, maxRetries, retryDelay, initialDelay]);\n\n // Show loading state\n if (moduleState.loading) {\n const loadingText = !moduleState.initialDelayComplete\n ? t(\"CORE_INITIALIZING_MODULE\", { moduleCode, defaultValue: \"Initializing {{moduleCode}} module...\" })\n : t(\"CORE_LOADING_MODULE\", { moduleCode, defaultValue: \"Loading {{moduleCode}} module...\" });\n\n return (\n <div className=\"module-loading-container\">\n <Loader \n page={true} \n variant=\"PageLoader\" \n loaderText={loadingText}\n />\n {moduleState.retryCount > 0 && moduleState.initialDelayComplete && (\n <div className=\"retry-info\" style={{ textAlign: 'center', marginTop: '1rem', color: '#666' }}>\n {t(\"CORE_MODULE_RETRY_ATTEMPT\", { retryCount: moduleState.retryCount, maxRetries, defaultValue: \"Retry attempt {{retryCount}}/{{maxRetries}}\" })}\n </div>\n )}\n </div>\n );\n }\n\n // Show error state and redirect\n if (moduleState.error || !moduleState.module) {\n console.warn(`Module loading failed for ${moduleCode}:`, moduleState.error);\n return (\n <Navigate\n to={`/${window?.contextPath}/employee/user/error?type=notfound&module=${moduleCode}&reason=${encodeURIComponent(moduleState.error || 'Module not found')}`}\n replace\n />\n );\n }\n\n // Render the loaded module\n const Module = moduleState.module;\n return (\n <Module \n stateCode={stateCode} \n moduleCode={moduleCode} \n userType={userType} \n tenants={tenants} \n />\n );\n};\n\nexport default DynamicModuleLoader;","import React from \"react\";\nimport { Button } from \"@egovernments/digit-ui-components\";\n\nconst EmployeeSSOLoginOptions = ({ t, props }) => {\n const { ssoConfigs = [] } = props || {};\n\n if (!ssoConfigs?.length) {\n return null;\n }\n\n const hasMultipleOptions = ssoConfigs.length > 1;\n\n return (\n <div className=\"employee-login-sso\">\n <div className=\"employee-login-sso-divider\">\n <span>{hasMultipleOptions ? t(\"CORE_COMMON_OR_SIGN_IN_WITH\") : t(\"CORE_COMMON_OR\")}</span>\n </div>\n {hasMultipleOptions ? (\n <div className=\"employee-login-sso-icons\">\n {ssoConfigs.map((sso, index) => (\n <Button\n key={sso.id || sso.provider || index}\n label=\"\"\n variation=\"secondary\"\n size=\"large\"\n icon={sso.icon}\n className={`employee-login-sso-icon ${sso.provider?.toLowerCase() || \"provider\"}-login-icon`}\n onClick={() => sso.onLogin?.(sso)}\n title={t(sso.label)}\n ariaLabel={t(sso.label)}\n style={{width:\"100%\"}}\n />\n ))}\n </div>\n ) : (\n ssoConfigs.map((sso, index) => (\n <Button\n key={sso.id || sso.provider || index}\n label={t(sso.label)}\n variation=\"primary\"\n size=\"large\"\n icon={sso.icon}\n className={`employee-login-sso-button ${sso.provider?.toLowerCase() || \"provider\"}-login-btn`}\n onClick={() => sso.onLogin?.(sso)}\n style={{width:\"100%\"}}\n />\n ))\n )}\n </div>\n );\n};\n\nexport default EmployeeSSOLoginOptions;\n","import React from \"react\";\nimport ErrorComponent from \"./ErrorComponent\";\n\nconst Redircter = () => {\n // Add safety checks for window object\n if (typeof window === 'undefined') {\n return <span></span>;\n }\n\n try {\n const contextPath = window?.contextPath || '';\n const userType = Digit.UserService.getType();\n const path = userType === \"employee\" \n ? `/${contextPath}/employee/user/error` \n : `/${contextPath}/citizen/error`;\n \n const currentHref = window.location.href;\n \n // Check if we're already on an error page or in development\n if (\n currentHref.includes(\"employee/user/error\") ||\n currentHref.includes(\"citizen/error\") ||\n process.env.NODE_ENV === \"development\"\n ) {\n // Do nothing - already on error page or in development\n return <span></span>;\n }\n \n // Safe navigation with error handling\n try {\n window.location.href = path;\n } catch (navigationError) {\n console.warn('Navigation failed in error boundary:', navigationError);\n // Fallback: try using replace instead\n try {\n window.location.replace(path);\n } catch (replaceError) {\n console.error('Both href and replace failed:', replaceError);\n }\n }\n } catch (error) {\n console.error('Error in Redircter component:', error);\n }\n\n return <span></span>;\n};\n\nclass ErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = { error: null, errorStack: null, hasError: false, module: null, action: null, info: null };\n }\n\n static getDerivedStateFromError(error) {\n // Update state so the next render will show the fallback UI.\n return { error: error?.message, hasError: true, errorStack: error?.stack, module: error?.module, action: error?.action, info: error?.info };\n }\n\n componentDidCatch(error, errorInfo) {\n // Catch errors in any components below and re-render with error message\n this.setState({ \n error: error?.message, \n hasError: true, \n errorStack: error?.stack,\n module: error?.module,\n action: error?.action,\n info: errorInfo\n });\n \n // Enhanced error logging with safety checks\n try {\n // Log to console in development\n if (process.env.NODE_ENV === 'development') {\n console.group('🚨 Error Boundary Caught Error');\n console.error('Error:', error);\n console.error('Error Info:', errorInfo);\n console.error('Component Stack:', errorInfo?.componentStack);\n console.groupEnd();\n }\n \n // You can also log error messages to an error reporting service here\n // Example: errorReportingService.captureException(error, { extra: errorInfo });\n \n } catch (loggingError) {\n console.warn('Failed to log error in ErrorBoundary:', loggingError);\n }\n }\n\n render() {\n if (this.state.hasError) {\n // (\"UI-errorInfo\", this.state?.errorStack);\n // (\"UI-component-details\", this.props);\n // You can render any custom fallback UI\n return (\n <div className=\"error-boundary\">\n <Redircter />\n <ErrorComponent initData={this.props.initData} errorData={this.state} goToHome={() => {\n window.location.href = `/${window?.contextPath}/${Digit?.UserService?.getType?.()}`; // Use navigate\n }}/>\n\n {/* <summary>Something went wrong</summary>\n <details style={{ whiteSpace: \"pre-wrap\" }}>\n {this.state?.errorStack && this.state.errorStack.toString().substring(0, 600)}\n {this.state?.error}\n </details> */}\n </div>\n );\n }\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport ImageComponent from \"./ImageComponent\";\n\nconst ErrorConfig = {\n error: {\n imgUrl: `https://digit-ui-assets.s3.ap-south-1.amazonaws.com/error-image.png`,\n infoMessage: \"CORE_SOMETHING_WENT_WRONG\",\n buttonInfo: \"ACTION_TEST_HOME\",\n },\n maintenance: {\n imgUrl: `https://digit-ui-assets.s3.ap-south-1.amazonaws.com/maintainence-image.png`,\n infoMessage: \"CORE_UNDER_MAINTENANCE\",\n buttonInfo: \"ACTION_TEST_HOME\",\n },\n notfound: {\n imgUrl: `https://digit-ui-assets.s3.ap-south-1.amazonaws.com/PageNotFound.png`,\n infoMessage: \"MODULE_NOT_FOUND\",\n buttonInfo: \"ACTION_TEST_HOME\",\n },\n};\n\nconst ModuleBasedErrorConfig = {\n sandbox: {\n imgUrl: `https://digit-ui-assets.s3.ap-south-1.amazonaws.com/error-image.png`,\n infoMessage: \"WRONG_TENANT_SIGN_UP\",\n buttonInfo: \"CREATE_TENANT_ERROR_BUTTON\",\n },\n};\n\nconst ErrorComponent = (props) => {\n const { type = \"error\" } = Digit.Hooks.useQueryParams();\n const module = props?.errorData?.module;\n const { t } = useTranslation();\n const config = module ? ModuleBasedErrorConfig[module] : ErrorConfig[type];\n const stateInfo = props.stateInfo;\n\n return (\n <div className=\"error-boundary\">\n <div className=\"error-container\">\n <ImageComponent src={config.imgUrl} alt=\"error\" />\n <h1>{t(config.infoMessage)}</h1>\n <button\n onClick={() => {\n module ? props?.errorData?.action() : props?.goToHome?.();\n }}\n >\n {t(config.buttonInfo)}\n </button>\n </div>\n </div>\n );\n};\n\nexport default ErrorComponent;\n","import React, { useState, useEffect, useRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Button } from \"@egovernments/digit-ui-components\";\n\nconst ForgotOrganizationTooltip = ({ onSelect }) => {\n const { t } = useTranslation();\n const [showTip, setShowTip] = useState(false);\n const wrapperRef = useRef(null);\n\n useEffect(() => {\n const handleClickOutside = (event) => {\n if (wrapperRef.current && !wrapperRef.current.contains(event.target)) {\n setShowTip(false);\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n return (\n <div ref={wrapperRef} className=\"loginSignUpSelector\" style={{ position: \"relative\", marginTop: \"-2rem\" }}>\n <Button\n label={t(`SB_FORGOTORGANIZATION_TOOLTIP`)}\n variation={\"link\"}\n size={\"small\"}\n onClick={() => setShowTip((prev) => !prev)}\n // isSuffix={true}\n style={{ marginBottom: \"0.5rem\", paddingLeft: \"0.2rem\" }}\n ></Button>\n {showTip && (\n <div\n style={{\n position: \"absolute\",\n bottom: \"100%\",\n left: \"50%\",\n transform: \"translateY(-4px)\",\n backgroundColor: \"#0b4b66\",\n color: \"white\",\n padding: \"6px 10px\",\n borderRadius: \"4px\",\n whiteSpace: \"normal\",\n wordBreak: \"break-word\",\n maxWidth: \"20rem\",\n zIndex: 1000,\n fontSize: \"0.875rem\"\n }}\n >\n {t(\"SB_FORGOTORGANIZATION_TOOLTIP_TEXT\")}\n </div>\n )}\n </div>\n );\n};\n\nexport default ForgotOrganizationTooltip;\n","import { Loader } from \"@egovernments/digit-ui-components\";\nimport React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport ImageComponent from \"./ImageComponent\";\n\nconst Header = ({ showTenant = true }) => {\n const { data: storeData, isLoading } = Digit.Hooks.useStore.getInitData();\n const { stateInfo } = storeData || {};\n const { t } = useTranslation();\n\n if (isLoading) return <Loader />;\n\n //If HEADER_SVG config exists, return the custom block\n const headerSvgSecondaryUrl = window?.globalConfigs?.getConfig(\"SVG_HEADER_SECONDARY_LOGO_URL\");\n if (headerSvgSecondaryUrl) {\n return (\n <div className=\"bannerHeader secondaryBannerHeader\">\n <ImageComponent\n className=\"bannerLogo\"\n src={stateInfo?.logoUrl}\n style={!showTenant ? { borderRight: \"unset\" } : {}}\n alt=\"Digit Banner\"\n />\n <span style={{fontSize: \"xx-large\"}}>|</span>\n <ImageComponent\n className=\"svgHeaderLogo\"\n src={headerSvgSecondaryUrl}\n alt=\"DIGIT Logo\"\n />\n </div>\n );\n }\n\n // Default logic\n return (\n <div className=\"bannerHeader\">\n <ImageComponent\n className=\"bannerLogo\"\n src={stateInfo?.logoUrl}\n style={!showTenant ? { borderRight: \"unset\" } : {}}\n alt=\"Digit Banner\"\n />\n {showTenant && stateInfo?.code && (\n <p>{t(`TENANT_TENANTS_${stateInfo?.code?.toUpperCase()}`)}</p>\n )}\n </div>\n );\n};\n\nexport default Header;","import {\n CitizenHomeCard,\n CitizenInfoLabel,\n Loader,\n} from \"@egovernments/digit-ui-react-components\";\n\nimport { BackLink, CustomSVG, SVG, LandingPageWrapper, Card, Divider } from \"@egovernments/digit-ui-components\";\n\nimport React, { Fragment } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { RoleBasedEmployeeHome } from \"./RoleBasedEmployeeHome\";\nimport QuickSetupConfigComponent from \"../pages/employee/QuickStart/Config\";\n\n/* \nFeature :: Citizen All service screen cards\n*/\nexport const processLinkData = (newData, code, t) => {\n const obj = newData?.[`${code}`];\n if (obj) {\n obj.map((link) => {\n if (Digit.Utils.getMultiRootTenant()) {\n link[\"navigationURL\"] = link[\"navigationURL\"].replace(\"/sandbox-ui/citizen\", `/sandbox-ui/${Digit.ULBService.getStateId()}/citizen`);\n }\n link.link = link[\"navigationURL\"];\n link.i18nKey = t(link[\"name\"]);\n\n });\n }\n const newObj = {\n links: obj?.reverse(),\n header: Digit.Utils.locale.getTransformedLocale(`ACTION_TEST_${code}`),\n iconName: `CITIZEN_${code}_ICON`,\n };\n if (code === \"FSM\") {\n const roleBasedLoginRoutes = [\n {\n role: \"FSM_DSO\",\n from: `/${window?.contextPath}/citizen/fsm/dso-dashboard`,\n dashoardLink: \"CS_LINK_DSO_DASHBOARD\",\n loginLink: \"CS_LINK_LOGIN_DSO\",\n },\n ];\n //RAIN-7297\n roleBasedLoginRoutes.map(({ role, from, loginLink, dashoardLink }) => {\n if (Digit.UserService.hasAccess(role))\n newObj?.links?.push({\n link: from,\n i18nKey: t(dashoardLink),\n });\n else\n newObj?.links?.push({\n link: `/${window?.contextPath}/citizen/login`,\n state: { role: \"FSM_DSO\", from },\n i18nKey: t(loginLink),\n });\n });\n }\n\n return newObj;\n};\nconst iconSelector = (code) => {\n switch (code) {\n case \"PT\":\n return <CustomSVG.PTIcon className=\"fill-path-primary-main\" />;\n case \"WS\":\n return <CustomSVG.WSICon className=\"fill-path-primary-main\" />;\n case \"FSM\":\n return <CustomSVG.FSMIcon className=\"fill-path-primary-main\" />;\n case \"MCollect\":\n return <CustomSVG.MCollectIcon className=\"fill-path-primary-main\" />;\n case \"PGR\":\n return <CustomSVG.PGRIcon className=\"fill-path-primary-main\" />;\n case \"TL\":\n return <CustomSVG.TLIcon className=\"fill-path-primary-main\" />;\n case \"OBPS\":\n return <CustomSVG.OBPSIcon className=\"fill-path-primary-main\" />;\n case \"Bills\":\n return <CustomSVG.BillsIcon className=\"fill-path-primary-main\" />;\n default:\n return <CustomSVG.PTIcon className=\"fill-path-primary-main\" />;\n }\n};\nimport { useNavigate } from \"react-router-dom\";\n\n// Inside CitizenHome component\nconst CitizenHome = ({ getCitizenMenu, fetchedCitizen, isLoading }) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const isMobile = window.Digit.Utils.browser.isMobile();\n\n if (isLoading || !fetchedCitizen || !getCitizenMenu) {\n return <Loader />;\n }\n\n const parentModules = Object.keys(getCitizenMenu);\n\n const handleLinkClick = (e, link) => {\n e.preventDefault();\n navigate(link);\n };\n\n \n\n const handleNavigate = (link) => {\n if (!link) return;\n link?.includes(`${window?.contextPath}/`) ? navigate(link) : (window.location.href = link);\n };\n\n const renderApplyIcon = () => (\n <SVG.AddExpense fill=\"#C84C0E\" width=\"1.25rem\" height=\"1.25rem\" className=\"digit-button-customIcon medium teritiary\" />\n );\n\n const renderMyAppIcon = () => (\n <SVG.ListAlt fill=\"#C84C0E\" width=\"1.25rem\" height=\"1.25rem\" className=\"digit-button-customIcon medium teritiary\" />\n );\n\n const isApplyLink = (link) => {\n const name = (link.name || link.displayName || \"\").toLowerCase();\n return name.includes(\"apply\") || name.includes(\"_apply\");\n };\n \n\n // Desktop: LandingPageWrapper + custom cards with icons (same grid as employee)\n if (!isMobile) {\n const children = parentModules.map((code) => {\n const mdmsDataObj = processLinkData(getCitizenMenu, code, t);\n\n if (!mdmsDataObj?.links?.length) return null;\n\n const seenLinks = new Set();\n const dedupedLinks = mdmsDataObj.links\n ?.filter((ele) => ele?.link)\n ?.sort((x, y) => x?.orderNumber - y?.orderNumber)\n .filter((link) => {\n const key = link.link;\n if (seenLinks.has(key)) return false;\n seenLinks.add(key);\n return true;\n });\n\n return (\n <Card key={code} className=\"digit-landing-page-card\" style={{ borderRadius: \"1rem\" }}>\n <div className=\"icon-module-header\">\n <div className=\"digit-landingpagecard-icon\">\n <CustomSVG.Devices fill=\"#C84C0E\" width=\"1rem\" height=\"1rem\" />\n </div>\n <div className=\"ladingcard-moduleName\" role=\"heading\" aria-level=\"2\">\n {t(mdmsDataObj?.header)}\n </div>\n </div>\n <Divider className=\"digit-landingpage-divider\" variant=\"small\" />\n {dedupedLinks.map((link, i) => {\n const LinkIcon = link.leftIcon && link.leftIcon !== \"TLIcon\" && CustomSVG[link.leftIcon] ? CustomSVG[link.leftIcon] : null;\n return (\n <button\n key={i}\n className=\"digit-button-teritiary medium\"\n type=\"button\"\n style={{ padding: \"0px\" }}\n onClick={() => handleNavigate(link.link)}\n >\n <div className=\"icon-label-container teritiary medium\">\n {LinkIcon ? <LinkIcon fill=\"#C84C0E\" width=\"1.25rem\" height=\"1.25rem\" className=\"digit-button-customIcon medium teritiary\" /> : (isApplyLink(link) ? renderApplyIcon() : renderMyAppIcon())}\n <h2 className=\"digit-button-label\">{link.i18nKey}</h2>\n </div>\n </button>\n );\n })}\n </Card>\n );\n }).filter(Boolean);\n\n return (\n <div className=\"citizen-all-services-wrapper\">\n <div className=\"employee-app-container digit-home-employee-app\">\n <LandingPageWrapper>{children}</LandingPageWrapper>\n </div>\n </div>\n );\n }\n\n // Mobile: Original vertical card layout\n return (\n <div className=\"citizen-all-services-wrapper\">\n {location.pathname.includes(\n \"sanitation-ui/citizen/all-services\"\n ) || (location.pathname.includes(\"sandbox-ui\") && location.pathname.includes(\"all-services\")) ? null : (\n <BackLink onClick={() => window.history.back()}/>\n )}\n <div className=\"citizenAllServiceGrid\">\n {parentModules.map((code) => {\n const mdmsDataObj = processLinkData(getCitizenMenu, code, t);\n\n if (mdmsDataObj?.links?.length > 0) {\n return (\n <div className=\"CitizenHomeCard\" key={code}>\n <div className=\"header\">\n <h2>{t(mdmsDataObj?.header)}</h2>\n {iconSelector(code)}\n </div>\n <div className=\"links\">\n {mdmsDataObj?.links\n ?.filter((ele) => ele?.link)\n ?.sort((x, y) => x?.orderNumber - y?.orderNumber)\n .map((link, i) => (\n <div className=\"linksWrapper\" key={i}>\n <a\n href={link.link}\n onClick={(e) => handleLinkClick(e, link.link)}\n >\n {link.i18nKey}\n </a>\n </div>\n ))}\n </div>\n </div>\n );\n }\n return null;\n })}\n </div>\n </div>\n );\n};\n\nconst EmployeeHome = ({ modules, additionalComponent }) => {\n return (\n <>\n <div className=\"employee-app-container digit-home-employee-app\">\n {/* <div className=\"ground-container moduleCardWrapper gridModuleWrapper digit-home-moduleCardWrapper\"> */}\n <LandingPageWrapper>\n {modules?.map(({ code }, index) => {\n const Card =\n Digit.ComponentRegistryService.getComponent(`${code}Card`) ||\n (() => <React.Fragment />);\n return <Card key={index} />;\n })}\n </LandingPageWrapper>\n {/* </div> */}\n </div>\n\n {additionalComponent &&\n additionalComponent?.length > 0 &&\n additionalComponent.map((i) => {\n const Component =\n typeof i === \"string\"\n ? Digit.ComponentRegistryService.getComponent(i)\n : null;\n return Component ? (\n <div className=\"additional-component-wrapper\">\n <Component />\n </div>\n ) : null;\n })}\n </>\n );\n};\n\nexport const AppHome = ({\n userType,\n modules,\n getCitizenMenu,\n fetchedCitizen,\n isLoading,\n additionalComponent,\n}) => {\n if (userType === \"citizen\") {\n return (\n <CitizenHome\n modules={modules}\n getCitizenMenu={getCitizenMenu}\n fetchedCitizen={fetchedCitizen}\n isLoading={isLoading}\n />\n );\n }\n const isSuperUserWithMultipleRootTenant = Digit.UserService.hasAccess(\"SUPERUSER\") && Digit.Utils.getMultiRootTenant()\n return Digit.Utils.getRoleBasedHomeCard() ? (\n <div className={isSuperUserWithMultipleRootTenant ? \"homeWrapper\" : \"\"}>\n <RoleBasedEmployeeHome modules={modules} additionalComponent={additionalComponent} />\n {isSuperUserWithMultipleRootTenant && !window.Digit.Utils.browser.isMobile() ? <QuickSetupConfigComponent /> : null}\n </div>\n ) : (\n <EmployeeHome modules={modules} additionalComponent={additionalComponent} />\n );\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst ImageComponent = ({\n src,\n alt = \"Image not found\",\n decorative = false,\n ariaLabel = \"No Image description set\",\n ariaLabelledby = \"no-image-description\",\n ...props\n}) => {\n // Determine the appropriate attributes based on the props\n const accessibilityProps = {};\n\n if (decorative) {\n // For decorative images\n accessibilityProps.alt = \"\";\n } else if (alt) {\n // Provide meaningful alt text if available\n accessibilityProps.alt = alt;\n } else if (ariaLabel) {\n // Use aria-label if alt is not provided\n accessibilityProps[\"aria-label\"] = ariaLabel;\n } else if (ariaLabelledby) {\n // Use aria-labelledby for descriptive associations\n accessibilityProps[\"aria-labelledby\"] = ariaLabelledby;\n } else {\n console.warn(\"AccessibleImage: Missing alt, aria-label, or aria-labelledby for non-decorative image.\");\n }\n\n return (\n <img\n src={src}\n {...accessibilityProps}\n {...props}\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n window.open(window?.globalConfigs?.getConfig?.(\"DIGIT_HOME_URL\"), \"_blank\").focus();\n }\n }}\n />\n );\n};\n\nImageComponent.propTypes = {\n src: PropTypes.string.isRequired, // The source URL for the image\n alt: PropTypes.string, // Alternative text for the image\n decorative: PropTypes.bool, // If true, image is decorative\n ariaLabel: PropTypes.string, // Custom label for screen readers\n ariaLabelledby: PropTypes.string, // Association with another descriptive element\n};\n\nexport default ImageComponent;\n","import React, { useState, useEffect, Fragment } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { CheckBox, PopUp, Button, HeaderComponent } from \"@egovernments/digit-ui-components\";\nconst LoginSignupSelector = ({ onSelect, formData, control, formState, ...props }) => {\n const { t } = useTranslation();\n const [isChecked, setIsChecked] = useState(true);\n\n\n useEffect(() => {\n onSelect(\"check\", isChecked);\n }, [isChecked]);\n const onButtonClickLogin = () => {\n window.location.replace(`/${window?.contextPath}/user/login`);\n };\n\n const onButtonClickSignUP = () => {\n window.location.replace(`/${window?.contextPath}/user/sign-up`);\n };\n\n const isSignupPage = window.location.href.includes(\"sandbox-ui/user/sign-up\");\n return (\n <React.Fragment>\n <div className=\"loginSignUpSelector\" style={{ marginTop: '-2rem' }}>\n {\n isSignupPage ?\n <Button\n label={t(`SB_ALREADY_HAVE_ACCOUNT`)}\n variation={\"link\"}\n size={\"small\"}\n onClick={onButtonClickLogin}\n // isSuffix={true}\n style={{ marginBottom: \"0.5rem\", paddingLeft: \"0.2rem\" }}\n ></Button> :\n <Button\n label={t(`SB_DONT_HAVE_ACCOUNT`)}\n variation={\"link\"}\n size={\"small\"}\n onClick={onButtonClickSignUP}\n // isSuffix={true}\n style={{ marginBottom: \"0.5rem\", paddingLeft: \"0.2rem\" }}\n ></Button>\n\n }\n\n </div>\n </React.Fragment>\n );\n};\n\nexport default LoginSignupSelector;\n","import React, { useState, useEffect, Fragment } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { CheckBox, PopUp, Button, HeaderComponent } from \"@egovernments/digit-ui-components\";\nimport { LinkButton } from \"@egovernments/digit-ui-react-components\";\n\nconst PrivacyComponent = ({ onSelect, formData, control, formState, ...props }) => {\n const { t } = useTranslation();\n const tenantId = Digit.ULBService.getCurrentTenantId();\n const [isChecked, setIsChecked] = useState(false);\n const [showPopUp, setShowPopUp] = useState(false);\n const moduleName=Digit.Utils.getConfigModuleName();\n \n const { data: privacy } = Digit.Hooks.useCustomMDMS(tenantId, moduleName, [{ name: \"PrivacyPolicy\" }], {\n select: (data) => {\n const filteredPrivacyPolicy = data?.[moduleName]?.PrivacyPolicy?.find(policy => policy.module === props?.props?.module);\n return filteredPrivacyPolicy;\n },\n });\n const handleCheckboxChange = (event) => {\n setIsChecked(event.target.checked);\n };\n useEffect(() => {\n onSelect(\"check\", isChecked);\n }, [isChecked]);\n const onButtonClick = () => {\n setShowPopUp(true);\n };\n\n const handleScrollToElement = (id) => {\n const element = document.getElementById(id);\n if (element) {\n element.scrollIntoView({ behavior: \"smooth\" });\n }\n };\n\n return (\n <React.Fragment>\n <div className=\"digit-privacy-checkbox digit-privacy-checkbox-align\">\n <CheckBox label={t(\"ES_BY_CLICKING\")} checked={isChecked} onChange={handleCheckboxChange} id={\"privacy-component-check\"}></CheckBox>\n <Button\n label={t(`ES_PRIVACY_POLICY`)}\n variation={\"link\"}\n size={\"small\"}\n onClick={onButtonClick}\n // isSuffix={true}\n style={{ marginBottom: \"1rem\", paddingLeft: \"0.2rem\" }}\n ></Button>\n </div>\n {showPopUp && (\n <PopUp\n type={\"default\"}\n className={\"privacy-popUpClass\"}\n footerclassName={\"popUpFooter\"}\n heading={t(privacy?.header)}\n onOverlayClick={() => {\n setShowPopUp(false);\n }}\n footerChildren={[\n <Button\n type={\"button\"}\n size={\"large\"}\n variation={\"secondary\"}\n label={t(\"DIGIT_I_DO_NOT_ACCEPT\")}\n onClick={() => {\n setIsChecked(false), setShowPopUp(false);\n }}\n />,\n <Button\n type={\"button\"}\n size={\"large\"}\n variation={\"primary\"}\n label={t(\"DIGIT_I_ACCEPT\")}\n className={\"accept-class\"}\n onClick={() => {\n setIsChecked(true), setShowPopUp(false);\n }}\n />,\n ]}\n sortFooterChildren={true}\n onClose={() => {\n setShowPopUp(false);\n }}\n >\n <div>\n <div className=\"privacy-table\">{t(\"DIGIT_TABLE_OF_CONTENTS\")}</div>\n <ul>\n {privacy?.contents.map((content, index) => (\n <li key={index} style={{ display: \"flex\", alignItems: \"center\" }}>\n <span style={{ marginRight: \"0.5rem\" }}>{index + 1}. </span>\n <Button\n label={t(content.header)}\n variation={\"link\"}\n size={\"medium\"}\n onClick={(e) => {\n e.preventDefault();\n handleScrollToElement(content?.header);\n }}\n style={{justifyContent: \"flex-start\"}}\n ></Button>\n </li>\n ))}\n </ul>\n </div>\n {privacy?.contents.map((content, index) => (\n <div key={index} id={content?.header}>\n <div\n style={{\n fontWeight: 'bold',\n paddingLeft: content?.isSpaceRequired ? \"1rem\" : \"0\",\n }}\n >\n {t(content.header)}\n </div>\n {content.descriptions.map((description, subIndex) => (\n <div key={subIndex} style={{ paddingLeft: description.isSpaceRequired ? \"1rem\" : \"0\" , marginBottom: '0.5rem'}}>\n <div\n style={{\n fontWeight: description?.isBold ? 700 : 400,\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n {description.type === 'points' && (\n <span style={{ marginRight: '0.5rem', listStyleType: 'disc' }}>•</span>\n )}\n {description.type === 'step' && (\n <span style={{ marginRight: '0.5rem', listStyleType: 'decimal' }}>{subIndex + 1}. </span>\n )}\n {t(description.text)}\n </div>\n {description?.subDescriptions && description?.subDescriptions.length > 0 && (\n <div className=\"policy-subdescription\">\n {description.subDescriptions.map((subDesc, subSubIndex) => (\n <div key={subSubIndex} className=\"policy-subdescription-points\">\n {subDesc.type === 'points' && (\n <span style={{ marginRight: '0.5rem', listStyleType: 'disc' , paddingLeft: '1rem'}}>•</span>\n )}\n {subDesc.type === 'step' && (\n <span style={{ marginRight: '0.5rem', listStyleType: 'decimal' , paddingLeft: '1rem'}}>{subSubIndex + 1}. </span>\n )}\n {subDesc.type === null && (\n <span style={{ marginRight: '0.5rem', paddingLeft: '1rem'}}> </span>\n )}\n {t(subDesc.text)}\n </div>\n ))}\n </div>\n )}\n </div>\n ))}\n </div>\n ))}\n </PopUp>\n )}\n </React.Fragment>\n );\n};\n\nexport default PrivacyComponent;\n","import React, { Fragment, useState, useEffect } from \"react\";\nimport { Button, LandingPageCard, LandingPageWrapper } from \"@egovernments/digit-ui-components\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Loader } from \"@egovernments/digit-ui-components\";\n\n\nimport { CustomSVG } from \"@egovernments/digit-ui-components\";\nconst Components = require(\"@egovernments/digit-ui-svg-components\");\n\nexport const RoleBasedEmployeeHome = ({ modules, additionalComponent }) => {\n const { isLoading, data } = Digit.Hooks.useAccessControl();\n const isMultiRootTenant = Digit.Utils.getMultiRootTenant();\n const { t } = useTranslation();\n const navigate= useNavigate();\n const tenantId = Digit?.ULBService?.getStateId();\n let sortedConfigEmployeesSidebar = null;\n const [mdmsOrderData, setMdmsOrderData] = useState([{}]);\n\n const { data: MdmsRes } = Digit.Hooks.useCustomMDMS(\n tenantId,\n \"HomeScreenOrder\",\n [\n {\n name: \"CardsAndLinksOrder\",\n },\n ],\n {\n select: (data) => {\n return data?.[\"HomeScreenOrder\"]?.[\"CardsAndLinksOrder\"];\n },\n }\n );\n\n\n\n const { data: moduleConfigData, isLoading: isModuleConfigLoading } = Digit.Hooks.useCustomMDMS(\n tenantId,\n \"SandBoxLanding\",\n [\n {\n name: \"AdditionalModuleLinks\",\n },\n ],\n {\n \n select: (data) => {\n return data?.[\"SandBoxLanding\"]?.[\"AdditionalModuleLinks\"];\n },\n }\n );\n \n useEffect(() => {\n setMdmsOrderData(MdmsRes);\n }, [MdmsRes]);\n\n const transformURL = (url = \"\") => {\n if (url == \"/\") {\n return;\n }\n if (url?.indexOf(`/${window?.contextPath}`) === -1) {\n let updatedUrl = null;\n if (isMultiRootTenant) {\n url = url.replace(\"/sandbox-ui/employee\", `/sandbox-ui/${tenantId}/employee`);\n updatedUrl = url;\n } else {\n updatedUrl = url;\n }\n return updatedUrl;\n } else {\n return url;\n }\n };\n\n const getLinkByType = (moduleData, type) => {\n if (!moduleData || !type) return null;\n const moduleConfig = moduleConfigData?.find((config) => config.moduleName === moduleData.module);\n const linkKey = moduleConfig?.[type];\n const links = moduleData?.links;\n return links?.find((item) => item?.displayName === linkKey) || null;\n };\n\n // Function to filter links dynamically based on module config\n const getFilteredLinks = (moduleData) => {\n const moduleConfig = moduleConfigData?.find((config) => config.moduleName === moduleData.module);\n return moduleData?.links?.filter((item) => {\n const displayName = item.displayName;\n const isNotConfigureMaster = displayName !== \"Configure_master\";\n const isNotHowItWorks = displayName !== moduleConfig?.howItWorksLink;\n const isNotUserManual = displayName !== moduleConfig?.userManualLink;\n\n return isNotConfigureMaster && isNotHowItWorks && isNotUserManual;\n });\n };\n\n const configEmployeeSideBar = data?.actions\n .filter((e) => e.url === \"card\" && e.parentModule)\n .reduce((acc, item) => {\n const module = item.parentModule;\n if (!acc[module]) {\n acc[module] = {\n module: module,\n kpis: [],\n icon: item.leftIcon ? Digit.Utils.iconRender({iconName: item.leftIcon, iconFill: \"white\",CustomSVG,Components}) : \"\",\n label: Digit.Utils.locale.getTransformedLocale(`${module}_CARD_HEADER`),\n links: [],\n };\n }\n const linkUrl = transformURL(item.navigationURL);\n const queryParamIndex = linkUrl.indexOf(\"?\");\n acc[module].links.push({\n link: linkUrl,\n icon: item.leftIcon,\n queryParams: queryParamIndex === -1 ? null : linkUrl.substring(queryParamIndex),\n label: t(Digit.Utils.locale.getTransformedLocale(`${module}_LINK_${item.displayName}`)),\n displayName: item.displayName,\n });\n return acc;\n }, {});\n\n if (isLoading) {\n return <Loader page={false} variant={\"PageLoader\"} />;\n }\n\n if (!configEmployeeSideBar) {\n return \"\";\n }\n\n const sortCardAndLink = (configEmployeeSideBar) => {\n const sortedModules = Object.keys(configEmployeeSideBar)\n .sort((a, b) => {\n const cardOrderA = mdmsOrderData?.find((item) => item.moduleType === \"card\" && item.name === a)?.order || null;\n const cardOrderB = mdmsOrderData?.find((item) => item.moduleType === \"card\" && item.name === b)?.order || null;\n return cardOrderA - cardOrderB;\n })\n .reduce((acc, module) => {\n const sortedLinks = configEmployeeSideBar?.[module]?.links?.sort((linkA, linkB) => {\n const labelA = linkA?.displayName;\n const labelB = linkB?.displayName;\n const orderA =\n mdmsOrderData?.find((item) => item.moduleType === \"link\" && item.name === `${module}.${labelA.replace(/\\s+/g, \"_\")}`)?.order || null;\n const orderB =\n mdmsOrderData?.find((item) => item.moduleType === \"link\" && item.name === `${module}.${labelB.replace(/\\s+/g, \"_\")}`)?.order || null;\n\n return orderA - orderB;\n });\n\n acc[module] = {\n ...configEmployeeSideBar[module],\n links: sortedLinks,\n };\n\n return acc;\n }, {});\n\n return sortedModules;\n };\n\n if (isMultiRootTenant) {\n sortedConfigEmployeesSidebar = sortCardAndLink(configEmployeeSideBar);\n } else {\n sortedConfigEmployeesSidebar = configEmployeeSideBar;\n }\n\n const children = Object.keys(sortedConfigEmployeesSidebar)?.map((current, index) => {\n const moduleData = sortedConfigEmployeesSidebar?.[current];\n const configureData = moduleData?.links?.find((item) => item?.displayName === \"Configure_master\");\n const howItWorks = getLinkByType(moduleData, \"howItWorksLink\");\n const userManual = getLinkByType(moduleData, \"userManualLink\");\n\n const propsForModuleCard = {\n icon: \"SupervisorAccount\",\n moduleName: t(moduleData?.label),\n metrics: [],\n links: Digit.Utils.getMultiRootTenant() ? getFilteredLinks(moduleData) : moduleData?.links,\n centreChildren: [\n <div>{t(Digit.Utils.locale.getTransformedLocale(`MODULE_CARD_DESC_${current}`))}</div>,\n howItWorks && (\n <Button\n variation=\"teritiary\"\n label={howItWorks?.label}\n icon={howItWorks?.icon}\n type=\"button\"\n size={\"medium\"}\n onClick={() => window.open(howItWorks?.link, \"_blank\")}\n style={{ padding: \"0px\" }}\n />\n ),\n ],\n endChildren: Digit.Utils.getMultiRootTenant()\n ? [\n configureData && (\n <Button\n variation=\"teritiary\"\n label={configureData?.label}\n icon={configureData?.icon}\n type=\"button\"\n size={\"medium\"}\n onClick={() => navigate(configureData?.link)}\n style={{ padding: \"0px\" }}\n />\n ),\n userManual && (\n <Button\n variation=\"teritiary\"\n label={userManual?.label}\n icon={userManual?.icon}\n type=\"button\"\n size={\"medium\"}\n onClick={() => window.open(userManual?.link, \"_blank\")}\n style={{ padding: \"0px\" }}\n />\n ),\n ]\n : null,\n };\n\n return <LandingPageCard buttonSize={\"medium\"} {...propsForModuleCard} />;\n });\n\n return (\n <>\n <LandingPageWrapper>{React.Children.map(children, (child) => React.cloneElement(child))}</LandingPageWrapper>\n </>\n );\n};","import {\n BackButton,\n DetailsCard,\n HeaderComponent,\n Loader,\n PopUp,\n SearchAction,\n SearchForm,\n CloseSvg,\n DownloadBtnCommon,\n} from \"@egovernments/digit-ui-components\";\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useState,\n} from \"react\";\nimport SearchFormFields from \"./SearchFields\";\n// import { convertEpochToDateDMY } from \"../../utils\";\n\nconst MobileSearchApplication = ({\n Controller,\n register,\n control,\n t,\n reset,\n previousPage,\n handleSubmit,\n tenantId,\n data,\n onSubmit,\n isLoading,\n}) => {\n function activateModal(state, action) {\n switch (action.type) {\n case \"set\":\n return action.payload;\n case \"remove\":\n return false;\n default:\n break;\n }\n }\n const [tabledata, settabledata] = useState([]);\n const DownloadBtn = (props) => {\n return (\n <div onClick={props.onClick}>\n <DownloadBtnCommon />\n </div>\n );\n };\n const handleExcelDownload = (tabData) => {\n if (tabData?.[0] !== undefined) {\n return Digit.Download.Excel(tabData?.[0], \"AuditReport\");\n }\n };\n useEffect(() => {\n if (data?.length > 0) {\n settabledata([\n data?.map((obj) => {\n let returnObject = {};\n returnObject[t(\"AUDIT_DATE_LABEL\")] = convertEpochToDate(\n obj?.timestamp\n );\n returnObject[t(\"AUDIT_TIME_LABEL\")] = convertEpochToTimeInHours(\n obj?.timestamp\n );\n returnObject[t(\"AUDIT_DATAVIEWED_LABEL\")] =\n obj?.dataView[0] + \",\" + obj?.dataView[1];\n returnObject[t(\"AUDIT_DATAVIEWED_BY_LABEL\")] = obj?.dataViewedBy;\n returnObject[t(\"AUDIT_ROLE_LABEL\")] = obj?.roles\n .map((obj) => obj.name)\n .join(\",\");\n return {\n ...returnObject,\n };\n }),\n ]);\n }\n }, [data]);\n const convertEpochToDate = (dateEpoch) => {\n if (dateEpoch == null || dateEpoch == undefined || dateEpoch == \"\") {\n return \"NA\";\n }\n const dateFromApi = new Date(dateEpoch);\n let month = dateFromApi.getMonth() + 1;\n let day = dateFromApi.getDate();\n let year = dateFromApi.getFullYear();\n month = (month > 9 ? \"\" : \"0\") + month;\n day = (day > 9 ? \"\" : \"0\") + day;\n return `${day}/${month}/${year}`;\n };\n const convertEpochToTimeInHours = (dateEpoch) => {\n if (dateEpoch == null || dateEpoch == undefined || dateEpoch == \"\") {\n return \"NA\";\n }\n const dateFromApi = new Date(dateEpoch);\n let hour = dateFromApi.getHours();\n let min = dateFromApi.getMinutes();\n let period = hour > 12 ? \"PM\" : \"AM\";\n hour = hour > 12 ? hour - 12 : hour;\n hour = (hour > 9 ? \"\" : \"0\") + hour;\n min = (min > 9 ? \"\" : \"0\") + min;\n return `${hour}:${min} ${period}`;\n };\n const [currentlyActiveMobileModal, setActiveMobileModal] = useReducer(\n activateModal,\n false\n );\n\n const closeMobilePopupModal = () => {\n setActiveMobileModal({ type: \"remove\" });\n };\n\n const MobilePopUpCloseButton = () => (\n <div\n className=\"InboxMobilePopupCloseButtonWrapper\"\n onClick={closeMobilePopupModal}\n >\n <CloseSvg />\n </div>\n );\n const searchFormFieldsComponentProps = {\n Controller,\n register,\n control,\n t,\n reset,\n previousPage,\n };\n\n const MobileComponentDirectory = ({\n currentlyActiveMobileModal,\n searchFormFieldsComponentProps,\n tenantId,\n ...props\n }) => {\n const { closeMobilePopupModal } = props;\n switch (currentlyActiveMobileModal) {\n case \"SearchFormComponent\":\n return (\n <SearchForm {...props}>\n <MobilePopUpCloseButton />\n <div className=\"MobilePopupHeadingWrapper\">\n <h2>{t(\"PRIVACY_AUDIT_REPORT\")}:</h2>\n </div>\n <SearchFormFields\n {...searchFormFieldsComponentProps}\n {...{ closeMobilePopupModal, tenantId, t }}\n />\n {/* <SearchField className=\"submit\">\n <SubmitBar label={t(\"ES_COMMON_SEARCH\")} submit form=\"search-form\"/>\n <p onClick={onResetSearchForm}>{t(`ES_COMMON_CLEAR_ALL`)}</p>\n </SearchField> */}\n </SearchForm>\n );\n default:\n return <span></span>;\n }\n };\n const CurrentMobileModalComponent = useCallback(\n ({\n currentlyActiveMobileModal,\n searchFormFieldsComponentProps,\n tenantId,\n ...props\n }) =>\n MobileComponentDirectory({\n currentlyActiveMobileModal,\n searchFormFieldsComponentProps,\n tenantId,\n ...props,\n }),\n [currentlyActiveMobileModal]\n );\n let roles = [];\n data?.roles?.forEach((item) => {\n roles.push(item?.name);\n });\n const propsMobileInboxCards = useMemo(() => {\n if (data?.display) {\n return [];\n }\n if (data === \"\") {\n return [];\n }\n return data?.map((data) => ({\n [t(\"AUDIT_DATE_LABEL\")]: convertEpochToDate(data.timestamp),\n [t(\"AUDIT_TIME_LABEL\")]: convertEpochToTimeInHours(data.timestamp),\n [t(\"AUDIT_DATAVIEWED_LABEL\")]: data.dataView[0] + \",\" + data.dataView[1],\n [t(\"AUDIT_DATAVIEWED_BY_LABEL\")]: data.dataViewedBy,\n [t(\"AUDIT_ROLE_LABEL\")]: data.roles\n .slice(0, 3)\n ?.map((e) => e.name)\n .join(\",\"),\n }));\n }, [data]);\n\n return (\n <React.Fragment>\n <BackButton />\n <div\n className=\"sideContent\"\n style={{ marginLeft: \"70%\", marginTop: \"-12%\" }}\n >\n <DownloadBtn\n className=\"mrlg cursorPointer\"\n onClick={() => handleExcelDownload(tabledata)}\n />\n </div>\n <HeaderComponent>{t(\"PRIVACY_AUDIT_REPORT\")}:</HeaderComponent>\n <div className=\"digit-search-box\">\n <SearchAction\n text={t(\"ES_COMMON_SEARCH\")}\n handleActionClick={() =>\n setActiveMobileModal({\n type: \"set\",\n payload: \"SearchFormComponent\",\n })\n }\n {...{ tenantId, t }}\n />\n </div>\n {currentlyActiveMobileModal ? (\n <PopUp>\n <CurrentMobileModalComponent\n onSubmit={(data) => {\n setActiveMobileModal({ type: \"remove\" });\n onSubmit(data);\n }}\n handleSubmit={handleSubmit}\n id=\"search-form\"\n className=\"rm-mb form-field-flex-one inboxPopupMobileWrapper\"\n {...{\n searchFormFieldsComponentProps,\n currentlyActiveMobileModal,\n closeMobilePopupModal,\n tenantId,\n }}\n />\n </PopUp>\n ) : null}\n {isLoading && <Loader />}\n <DetailsCard\n {...{\n data: propsMobileInboxCards,\n }}\n />\n </React.Fragment>\n );\n};\n\nexport default MobileSearchApplication;\n","import { DatePicker, SearchField, Button } from \"@egovernments/digit-ui-components\";\nimport React from \"react\";\nimport { Controller } from \"react-hook-form\";\nconst SearchFields = ({ register, control, reset, tenantId, t, previousPage, formState, isLoading }) => {\n const isMobile = window.Digit.Utils.browser.isMobile();\n\n return (\n <>\n <SearchField className=\"pt-form-field\">\n <label>{t(\"AUDIT_FROM_DATE_LABEL\")}</label>\n <Controller render={(props) => <DatePicker date={props.value} onChange={props.onChange} />} name=\"fromDate\" control={control} />\n </SearchField>\n <SearchField className=\"pt-form-field\">\n <label>{t(\"AUDIT_TO_DATE_LABEL\")}</label>\n <Controller render={(props) => <DatePicker date={props.value} onChange={props.onChange} />} name=\"toDate\" control={control} />\n </SearchField>\n <SearchField className=\"pt-search-action-submit\">\n <Button\n style={{ marginTop: isMobile ? \"510px\" : \"25px\", marginLeft: isMobile ? \"0\" : \"-30px\", maxWidth: isMobile ? \"100%\" : \"240px\" }}\n label={t(\"ES_COMMON_APPLY\")}\n submit\n />\n </SearchField>\n </>\n );\n};\nexport default SearchFields;\n","import {\n DownloadBtnCommon,\n Table,\n} from \"@egovernments/digit-ui-react-components\";\nimport {\n BackButton,\n Loader,\n SearchForm,\n HeaderComponent\n} from \"@egovernments/digit-ui-components\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport MobileSearchApplication from \"./MobileSearchApplication\";\nimport SearchFields from \"./SearchFields\";\n\nconst SearchApplication = ({ tenantId, t, onSubmit, data, count }) => {\n const initialValues = Digit.SessionStorage.get(\n \"AUDIT_APPLICATION_DETAIL\"\n ) || {\n offset: 0,\n limit: 5,\n sortOrder: \"DESC\",\n };\n const {\n register,\n control,\n handleSubmit,\n setValue,\n getValues,\n reset,\n } = useForm({\n defaultValues: initialValues,\n });\n const convertEpochToDate = (dateEpoch) => {\n if (dateEpoch == null || dateEpoch == undefined || dateEpoch == \"\") {\n return \"NA\";\n }\n const dateFromApi = new Date(dateEpoch);\n let month = dateFromApi.getMonth() + 1;\n let day = dateFromApi.getDate();\n let year = dateFromApi.getFullYear();\n month = (month > 9 ? \"\" : \"0\") + month;\n day = (day > 9 ? \"\" : \"0\") + day;\n return `${day}/${month}/${year}`;\n };\n const convertEpochToTimeInHours = (dateEpoch) => {\n if (dateEpoch == null || dateEpoch == undefined || dateEpoch == \"\") {\n return \"NA\";\n }\n const dateFromApi = new Date(dateEpoch);\n let hour = dateFromApi.getHours();\n let min = dateFromApi.getMinutes();\n let period = hour > 12 ? \"PM\" : \"AM\";\n hour = hour > 12 ? hour - 12 : hour;\n hour = (hour > 9 ? \"\" : \"0\") + hour;\n min = (min > 9 ? \"\" : \"0\") + min;\n return `${hour}:${min} ${period}`;\n };\n const [tabledata, settabledata] = useState([]);\n const DownloadBtn = (props) => {\n return (\n <div onClick={props.onClick}>\n <DownloadBtnCommon />\n </div>\n );\n };\n const handleExcelDownload = (tabData) => {\n if (tabData?.[0] !== undefined) {\n return Digit.Download.Excel(tabData?.[0], \"AuditReport\");\n }\n };\n useEffect(() => {\n register(\"offset\", 0);\n register(\"limit\", 5);\n register(\"sortOrder\", \"DESC\");\n }, [register]);\n useEffect(() => {\n if (data?.length > 0) {\n settabledata([\n data?.map((obj) => {\n let returnObject = {};\n returnObject[t(\"AUDIT_DATE_LABEL\")] = convertEpochToDate(\n obj?.timestamp\n );\n returnObject[t(\"AUDIT_TIME_LABEL\")] = convertEpochToTimeInHours(\n obj?.timestamp\n );\n returnObject[t(\"AUDIT_DATAVIEWED_LABEL\")] =\n obj?.dataView[0] + \",\" + obj?.dataView[1];\n returnObject[t(\"AUDIT_DATAVIEWED_BY_LABEL\")] = obj?.dataViewedBy;\n returnObject[t(\"AUDIT_ROLE_LABEL\")] = obj?.roles\n .map((obj) => obj.name)\n .join(\",\");\n return {\n ...returnObject,\n };\n }),\n ]);\n }\n }, [data]);\n const onSort = useCallback((args) => {\n if (args.length === 0) return;\n setValue(\"sortBy\", args.id);\n setValue(\"sortOrder\", args.desc ? \"DESC\" : \"ASC\");\n }, []);\n\n function onPageSizeChange(e) {\n setValue(\"limit\", Number(e.target.value));\n handleSubmit(onSubmit)();\n }\n\n function nextPage() {\n setValue(\"offset\", getValues(\"offset\") + getValues(\"limit\"));\n handleSubmit(onSubmit)();\n }\n function previousPage() {\n setValue(\"offset\", getValues(\"offset\") - getValues(\"limit\"));\n handleSubmit(onSubmit)();\n }\n const isMobile = window.Digit.Utils.browser.isMobile();\n\n if (isMobile) {\n return (\n <MobileSearchApplication\n {...{\n Controller,\n register,\n control,\n t,\n reset,\n previousPage,\n handleSubmit,\n tenantId,\n data,\n onSubmit,\n }}\n />\n );\n }\n\n //need to get from workflow\n const GetCell = (value) => <span className=\"cell-text\">{value}</span>;\n const columns = useMemo(\n () => [\n {\n Header: t(\"AUDIT_DATE_LABEL\"),\n disableSortBy: true,\n accessor: (row) => {\n const timestamp =\n row.timestamp === \"NA\"\n ? t(\"WS_NA\")\n : convertEpochToDate(row.timestamp);\n return GetCell(`${timestamp}`);\n },\n },\n {\n Header: t(\"AUDIT_TIME_LABEL\"),\n disableSortBy: true,\n accessor: (row) => {\n const timestamp =\n row.timestamp === \"NA\"\n ? t(\"WS_NA\")\n : convertEpochToTimeInHours(row.timestamp);\n return GetCell(`${timestamp}`);\n },\n },\n {\n Header: isMobile\n ? t(\"AUDIT_DATAVIEWED_LABEL\")\n : t(\"AUDIT_DATAVIEWED_PRIVACY\"),\n disableSortBy: true,\n accessor: (row) => {\n return GetCell(`${row?.dataView}`);\n },\n },\n {\n Header: isMobile\n ? t(\"AUDIT_DATAVIEWED_BY_LABEL\")\n : t(\"AUDIT_DATAVIEWED_BY_PRIVACY\"),\n disableSortBy: true,\n accessor: (row) => {\n return GetCell(`${row?.dataViewedBy}`);\n },\n },\n {\n Header: t(\"AUDIT_ROLE_LABEL\"),\n disableSortBy: true,\n accessor: (row) => {\n return GetCell(`${row?.roles.slice(0, 3)?.map((e) => e.name)}`);\n },\n },\n ],\n []\n );\n\n return (\n <React.Fragment>\n <div style={{ marginRight: \"-70px\" }}>\n {\" \"}\n <BackButton />{\" \"}\n </div>\n <div style={{ marginTop: \"30px\", marginLeft: \"30px\" }}>\n {\" \"}\n <HeaderComponent>{t(\"PRIVACY_AUDIT_REPORT\")}</HeaderComponent>{\" \"}\n </div>\n <SearchForm\n className=\"audit-card\"\n onSubmit={onSubmit}\n handleSubmit={handleSubmit}\n >\n <SearchFields\n {...{ register, control, reset, tenantId, t, previousPage }}\n />\n </SearchForm>\n <div\n style={{\n marginTop: \"240px\",\n marginLeft: \"-55%\",\n maxWidth: \"80%\",\n marginRight: \"52px\",\n }}\n >\n {data?.display ? (\n <div\n style={{\n marginTop: \"20x\",\n width: \"1025px\",\n marginLeft: \"25px\",\n backgroundColor: \"white\",\n height: \"60px\",\n }}\n >\n {t(data.display)\n .split(\"\\\\n\")\n .map((text, index) => (\n <p key={index} style={{ textAlign: \"center\" }}>\n {text}\n </p>\n ))}\n </div>\n ) : data !== \"\" ? (\n <div\n style={{\n backgroundColor: \"white\",\n marginRight: \"-30px\",\n marginLeft: \"30px\",\n }}\n >\n <div\n className=\"sideContent\"\n style={{ float: \"right\", padding: \"10px 30px\" }}\n >\n <DownloadBtn\n className=\"mrlg cursorPointer\"\n onClick={() => handleExcelDownload(tabledata)}\n />\n </div>\n <Table\n t={t}\n data={data}\n totalRecords={count}\n columns={columns}\n getCellProps={(cellInfo) => {\n return {\n style: {\n minWidth:\n cellInfo.column.Header === t(\"ES_INBOX_APPLICATION_NO\")\n ? \"240px\"\n : \"\",\n padding: \"20px 18px\",\n fontSize: \"16px\",\n },\n };\n }}\n onPageSizeChange={onPageSizeChange}\n currentPage={getValues(\"offset\") / getValues(\"limit\")}\n onNextPage={nextPage}\n onPrevPage={previousPage}\n manualPagination={false}\n pageSizeLimit={getValues(\"limit\")}\n onSort={onSort}\n disableSort={false}\n sortParams={[\n {\n id: getValues(\"sortBy\"),\n desc: getValues(\"sortOrder\") === \"DESC\" ? true : false,\n },\n ]}\n />\n </div>\n ) : (\n <Loader />\n )}\n </div>\n </React.Fragment>\n );\n};\n\nexport default SearchApplication;\n","// import { NavBar } from \"@egovernments/digit-ui-react-components\";\nimport { Loader } from \"@egovernments/digit-ui-components\";\nimport React, { useState, Fragment, useEffect } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate, useLocation } from \"react-router-dom\";\nimport ChangeCity from \"../../ChangeCity\";\nimport { defaultImage } from \"../../utils\";\nimport StaticCitizenSideBar from \"./StaticCitizenSideBar\";\nimport { Hamburger } from \"@egovernments/digit-ui-components\";\nimport { LogoutIcon } from \"@egovernments/digit-ui-react-components\";\nimport ImageComponent from \"../../ImageComponent\";\n\nconst Profile = ({ info, stateName, t }) => {\n const [profilePic, setProfilePic] = React.useState(null);\n React.useEffect(async () => {\n const tenant = Digit.ULBService.getCurrentTenantId();\n const uuid = info?.uuid;\n if (uuid) {\n const usersResponse = await Digit.UserService.userSearch(tenant, { uuid: [uuid] }, {});\n if (usersResponse && usersResponse.user && usersResponse?.user?.length) {\n const userDetails = usersResponse.user[0];\n const thumbs = userDetails?.photo?.split(\",\");\n setProfilePic(thumbs?.at(0));\n }\n }\n }, [profilePic !== null]);\n\n const CustomEmployeeTopBar = Digit.ComponentRegistryService?.getComponent(\"CustomEmployeeTopBar\");\n\n return (\n <div className=\"profile-section\">\n <div className=\"imageloader imageloader-loaded\">\n <ImageComponent\n className=\"img-responsive img-circle img-Profile\"\n src={profilePic ? profilePic : defaultImage}\n style={{ objectFit: \"cover\", objectPosition: \"center\" }}\n alt=\"Profile Image\"\n />\n </div>\n <div id=\"profile-name\" className=\"label-container name-Profile\">\n <div className=\"label-text\"> {info?.name} </div>\n </div>\n <div id=\"profile-location\" className=\"label-container loc-Profile\">\n <div className=\"label-text\"> {info?.mobileNumber} </div>\n </div>\n {info?.emailId && (\n <div id=\"profile-emailid\" className=\"label-container loc-Profile\">\n <div className=\"label-text\"> {info.emailId} </div>\n </div>\n )}\n <div className=\"profile-divider\"></div>\n {window.location.href.includes(\"/employee\") &&\n !window.location.href.includes(\"/employee/user/login\") &&\n !window.location.href.includes(\"employee/user/language-selection\") &&\n !CustomEmployeeTopBar && <ChangeCity t={t} mobileView={true} />}\n </div>\n );\n};\n\n/* \nFeature :: Citizen Webview sidebar\n*/\nexport const CitizenSideBar = ({\n isOpen,\n isMobile = false,\n toggleSidebar,\n onLogout,\n isEmployee = false,\n linkData,\n islinkDataLoading,\n userProfile,\n}) => {\n const isMultiRootTenant = Digit.Utils.getMultiRootTenant();\n const { data: storeData, isFetched } = Digit.Hooks.useStore.getInitData();\n const selectedLanguage = Digit.StoreData.getCurrentLanguage();\n const [profilePic, setProfilePic] = useState(null);\n const { languages, stateInfo } = storeData || {};\n const user = Digit.UserService.getUser();\n const [search, setSearch] = useState(\"\");\n const [dropDownData, setDropDownData] = useState(null);\n const [selectCityData, setSelectCityData] = useState([]);\n const [selectedCity, setSelectedCity] = useState([]); //selectedCities?.[0]?.value\n const [selected, setselected] = useState(selectedLanguage);\n let selectedCities = [];\n const { isLoading, data } = Digit.Hooks.useAccessControl();\n const tenantId = Digit.ULBService.getCurrentTenantId();\n const { t } = useTranslation();\n \n // React Router v6: useNavigate replaces useHistory\n const navigate = useNavigate();\n // React Router v6: useLocation for accessing location object\n const location = useLocation();\n\n const stringReplaceAll = (str = \"\", searcher = \"\", replaceWith = \"\") => {\n if (searcher == \"\") return str;\n while (str?.includes(searcher)) {\n str = str?.replace(searcher, replaceWith);\n }\n return str;\n };\n\n useEffect(() => {\n const userloggedValues = Digit.SessionStorage.get(\"citizen.userRequestObject\");\n let teantsArray = [],\n filteredArray = [];\n userloggedValues?.info?.roles?.forEach((role) => teantsArray.push(role.tenantId));\n let unique = teantsArray.filter((item, i, ar) => ar.indexOf(item) === i);\n unique?.forEach((uniCode) => {\n filteredArray.push({\n label: t(`TENANT_TENANTS_${stringReplaceAll(uniCode, \".\", \"_\")?.toUpperCase()}`),\n value: uniCode,\n });\n });\n selectedCities = filteredArray?.filter((select) => select.value == Digit.SessionStorage.get(\"Employee.tenantId\"));\n setSelectCityData(filteredArray);\n }, [dropDownData]);\n\n const closeSidebar = () => {\n Digit.clikOusideFired = true;\n toggleSidebar(false);\n };\n\n useEffect(() => {\n const fetchUserProfile = async () => {\n const tenant = Digit.ULBService.getCurrentTenantId();\n const uuid = user?.info?.uuid;\n if (uuid) {\n const usersResponse = await Digit.UserService.userSearch(tenant, { uuid: [uuid] }, {});\n const userData = usersResponse?.user?.[0];\n if (userData) {\n const currentUser = Digit.UserService.getUser();\n Digit.UserService.setUser({\n ...currentUser,\n info: userData\n });\n }\n if (usersResponse && usersResponse.user && usersResponse?.user?.length) {\n const userDetails = usersResponse.user[0];\n const thumbs = userDetails?.photo?.split(\",\");\n setProfilePic(thumbs?.at(0));\n }\n }\n };\n if (!profilePic) {\n fetchUserProfile();\n }\n }, [profilePic]);\n\n const handleChangeCity = (city) => {\n const loggedInData = Digit.SessionStorage.get(\"citizen.userRequestObject\");\n const filteredRoles = Digit.SessionStorage.get(\"citizen.userRequestObject\")?.info?.roles?.filter((role) => role.tenantId === city.value);\n if (filteredRoles?.length > 0) {\n loggedInData.info.roles = filteredRoles;\n loggedInData.info.tenantId = city?.value;\n }\n Digit.SessionStorage.set(\"Employee.tenantId\", city?.value);\n Digit.UserService.setUser(loggedInData);\n setDropDownData(city);\n if (typeof window !== 'undefined' && window.location?.href?.includes(`/${window?.contextPath}/employee/`)) {\n\n // React Router v6: navigate with { replace: true } instead of history.replace()\n const redirectPath = location.state?.from || `/${window?.contextPath}/employee`;\n navigate(redirectPath, { replace: true });\n }\n // Safe reload with error handling\n try {\n if (typeof window !== 'undefined') {\n window.location.reload();\n }\n } catch (error) {\n console.warn('Failed to reload page:', error);\n }\n };\n\n const handleChangeLanguage = (language) => {\n setselected(language.value);\n Digit.LocalizationService.changeLanguage(language.value, stateInfo.code);\n };\n\n const handleModuleClick = (url) => {\n let updatedUrl = null;\n if (Digit.Utils.getMultiRootTenant()) {\n updatedUrl = isEmployee\n ? url.replace(\"/sandbox-ui/employee\", `/sandbox-ui/${tenantId}/employee`)\n : url.replace(\"/sandbox-ui/citizen\", `/sandbox-ui/${tenantId}/citizen`);\n // React Router v6: navigate() instead of history.push()\n navigate(updatedUrl);\n toggleSidebar();\n } else {\n url[0] === \"/\"\n ? navigate(`/${window?.contextPath}/${isEmployee ? \"employee\" : \"citizen\"}${url}`)\n : navigate(`/${window?.contextPath}/${isEmployee ? \"employee\" : \"citizen\"}/${url}`);\n toggleSidebar();\n }\n };\n\n const redirectToLoginPage = () => {\n if (isEmployee) {\n // React Router v6: navigate() instead of history.push()\n navigate(`/${window?.contextPath}/employee/user/language-selection`);\n } else {\n navigate(`/${window?.contextPath}/citizen/login`);\n }\n closeSidebar();\n };\n\n if (islinkDataLoading || isLoading) {\n return <Loader />;\n }\n\n let menuItems = [\n {\n id: \"login-btn\",\n element: \"LOGIN\",\n text: t(\"CORE_COMMON_LOGIN\"),\n icon: <LogoutIcon className=\"icon\" />,\n populators: {\n onClick: redirectToLoginPage,\n },\n },\n ];\n\n let profileItem;\n if (isFetched && user && user.access_token) {\n profileItem = <Profile info={user?.info} stateName={stateInfo?.name} t={t} />;\n menuItems = menuItems.filter((item) => item?.id !== \"login-btn\");\n }\n\n let configEmployeeSideBar = {};\n\n if (!isEmployee) {\n Object.keys(linkData)\n ?.sort((x, y) => y.localeCompare(x))\n ?.map((key) => {\n if (linkData[key][0]?.sidebar === \"digit-ui-links\")\n menuItems.splice(1, 0, {\n type: linkData[key][0]?.sidebarURL?.includes(window?.contextPath) ? \"link\" : \"external-link\",\n text: t(`ACTION_TEST_${Digit.Utils.locale.getTransformedLocale(key)}`),\n links: linkData[key],\n icon: linkData[key][0]?.leftIcon,\n link: linkData[key][0]?.sidebarURL,\n });\n });\n } else {\n data?.actions\n .filter((e) => e.url === \"url\" && e.displayName !== \"Home\")\n .forEach((item) => {\n if (search == \"\" && item.path !== \"\") {\n let index = item.path.split(\".\")[0];\n if (index === \"TradeLicense\") index = \"Trade License\";\n if (!configEmployeeSideBar[index]) {\n configEmployeeSideBar[index] = [item];\n } else {\n configEmployeeSideBar[index].push(item);\n }\n } else if (item.path !== \"\" && item?.displayName?.toLowerCase().includes(search.toLowerCase())) {\n let index = item.path.split(\".\")[0];\n if (index === \"TradeLicense\") index = \"Trade License\";\n if (!configEmployeeSideBar[index]) {\n configEmployeeSideBar[index] = [item];\n } else {\n configEmployeeSideBar[index].push(item);\n }\n }\n });\n const keys = Object.keys(configEmployeeSideBar);\n for (let i = 0; i < keys?.length; i++) {\n const getSingleDisplayName = configEmployeeSideBar[keys[i]][0]?.displayName?.toUpperCase()?.replace(/[ -]/g, \"_\");\n const getParentDisplayName = keys[i]?.toUpperCase()?.replace(/[ -]/g, \"_\");\n\n if (configEmployeeSideBar[keys[i]][0].path.indexOf(\".\") === -1) {\n menuItems.splice(1, 0, {\n type: \"link\",\n text: t(`ACTION_TEST_${getSingleDisplayName}`),\n link: configEmployeeSideBar[keys[i]][0]?.navigationURL,\n icon: configEmployeeSideBar[keys[i]][0]?.leftIcon,\n populators: {\n onClick: () => {\n // React Router v6: navigate() instead of history.push()\n navigate(configEmployeeSideBar[keys[i]][0]?.navigationURL);\n closeSidebar();\n },\n },\n });\n } else {\n menuItems.splice(1, 0, {\n type: \"dynamic\",\n moduleName: t(`ACTION_TEST_${getParentDisplayName}`),\n links: configEmployeeSideBar[keys[i]]?.map((ob) => {\n return {\n ...ob,\n displayName: t(`ACTION_TEST_${ob?.displayName?.toUpperCase()?.replace(/[ -]/g, \"_\")}`),\n };\n }),\n icon: configEmployeeSideBar[keys[i]][1]?.leftIcon,\n });\n }\n }\n const indx = menuItems.findIndex((a) => a.element === \"HOME\");\n const home = menuItems.splice(indx, 1);\n const comp = menuItems.findIndex((a) => a.element === \"LANGUAGE\");\n const part = menuItems.splice(comp, menuItems?.length - comp);\n menuItems.sort((a, b) => {\n let c1 = a?.type === \"dynamic\" ? a?.moduleName : a?.text;\n let c2 = b?.type === \"dynamic\" ? b?.moduleName : b?.text;\n return c1.localeCompare(c2);\n });\n home?.[0] && menuItems.splice(0, 0, home[0]);\n menuItems = part?.length > 0 ? menuItems.concat(part) : menuItems;\n }\n\n /* URL with openlink wont have sidebar and actions */\n // React Router v6: location.pathname instead of history.location.pathname\n if (location.pathname.includes(\"/openlink\")) {\n profileItem = <span></span>;\n menuItems = menuItems.filter((ele) => ele.element === \"LANGUAGE\");\n }\n\n menuItems = menuItems?.map((item) => ({\n ...item,\n label: item?.text || item?.moduleName || \"\",\n icon: item?.icon ? item?.icon : undefined,\n }));\n\n let city = \"\";\n if (Digit.Utils.getMultiRootTenant()) {\n city = t(`TENANT_TENANTS_${tenantId}`);\n } else {\n city = t(`TENANT_TENANTS_${stringReplaceAll(Digit.ULBService.getCurrentTenantId(), \".\", \"_\")?.toUpperCase()}`);\n // city = \"TEST\";\n }\n const goToHome = () => {\n if (isEmployee) {\n // React Router v6: navigate() instead of history.push()\n navigate(`/${window?.contextPath}/employee`);\n } else {\n navigate(`/${window?.contextPath}/citizen`);\n }\n };\n const onItemSelect = ({ item, index, parentIndex }) => {\n if (item?.navigationURL) {\n handleModuleClick(item?.navigationURL);\n } else if (item?.link) {\n handleModuleClick(item?.link);\n } else if (item?.type === \"custom\") {\n switch (item?.key) {\n case \"home\":\n goToHome();\n toggleSidebar();\n break;\n case \"editProfile\":\n userProfile();\n toggleSidebar();\n break;\n case \"language\":\n handleChangeLanguage(item);\n toggleSidebar();\n break;\n case \"city\":\n handleChangeCity(item);\n toggleSidebar();\n break;\n }\n } else {\n return;\n }\n };\n\n const transformedMenuItems = menuItems?.map((item) => {\n if (item?.type === \"dynamic\") {\n return {\n ...item,\n children: item?.links?.map((link) => ({\n ...link,\n label: link?.displayName,\n icon: link?.leftIcon,\n })),\n };\n } else {\n return item;\n }\n });\n\n const transformedSelectedCityData = selectCityData?.map((city) => ({\n ...city,\n type: \"custom\",\n key: \"city\",\n }));\n\n const transformedLanguageData = languages?.map((language) => ({\n ...language,\n type: \"custom\",\n key: \"language\",\n icon: \"Language\",\n }));\n\n const hamburgerItems = [\n {\n label: \"HOME\",\n value: \"HOME\",\n icon: \"Home\",\n // children: transformedSelectedCityData?.length>0 ? transformedSelectedCityData : undefined,\n type: \"custom\",\n key: \"home\",\n },\n {\n label: city,\n value: city,\n children: transformedSelectedCityData?.length > 0 ? transformedSelectedCityData : undefined,\n type: \"custom\",\n icon: \"LocationCity\",\n key: \"city\",\n },\n {\n label: t(\"Language\"),\n children: transformedLanguageData?.length > 0 ? transformedLanguageData : undefined,\n type: \"custom\",\n icon: \"Language\",\n key: \"language\",\n },\n ...(user && user.access_token\n ? [\n {\n label: t(\"EDIT_PROFILE\"),\n type: \"custom\",\n icon: \"Edit\",\n key: \"editProfile\",\n },\n ]\n : []),\n {\n label: t(\"Modules\"),\n icon: \"DriveFileMove\",\n children: transformedMenuItems,\n },\n ];\n return isMobile ? (\n <Hamburger\n items={hamburgerItems}\n profileName={user?.info?.name}\n profileNumber={user?.info?.mobileNumber || user?.info?.emailId}\n theme=\"dark\"\n transitionDuration={0.3}\n styles={{ marginTop: \"64px\", height: \"93%\" }}\n onLogout={onLogout}\n hideUserManuals={true}\n profile={profilePic ? profilePic : undefined}\n isSearchable={true}\n onSelect={({ item, index, parentIndex }) => onItemSelect({ item, index, parentIndex })}\n />\n ) : (\n <StaticCitizenSideBar logout={onLogout} />\n );\n};","import React, { useState } from \"react\";\nimport { SideNav, Loader } from \"@egovernments/digit-ui-components\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport MediaQuery from \"react-responsive\";\nimport LogoutDialog from \"../../Dialog/LogoutDialog\";\n\nconst CitizenSideNav = ({ linkData, islinkDataLoading }) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const isMultiRootTenant = Digit.Utils.getMultiRootTenant();\n const tenantId = Digit?.ULBService?.getStateId();\n const user = Digit.UserService.getUser();\n const isLoggedIn = user && user.access_token && user?.info?.type === \"CITIZEN\";\n\n const [showDialog, setShowDialog] = useState(false);\n\n const handleLogoutSubmit = () => {\n Digit.UserService.logout();\n setShowDialog(false);\n window.location.href = `/${window?.contextPath}/citizen/login`;\n };\n\n const handleLogoutCancel = () => {\n setShowDialog(false);\n };\n\n const navigateToUrl = (url) => {\n if (!url || url === \"/\") return;\n\n const isExternal = /^https?:\\/\\//i.test(url);\n if (isExternal) {\n window.open(url, \"_blank\", \"noopener,noreferrer\");\n return;\n }\n\n if (!url.includes(`/${window?.contextPath}`)) {\n const hostUrl = window.location.origin;\n if (isMultiRootTenant) {\n const contextPath = window?.contextPath || \"sandbox-ui\";\n url = url.replace(`/${contextPath}/citizen`, `/${contextPath}/${tenantId}/citizen`);\n navigate(url);\n } else {\n const updatedUrl = hostUrl + url;\n try {\n window.location.href = updatedUrl;\n } catch (error) {\n console.warn(\"Navigation failed, attempting fallback:\", error);\n window.location.replace(updatedUrl);\n }\n }\n } else {\n navigate(url);\n }\n };\n\n const onItemSelect = ({ item }) => {\n if (item?.navigationUrl) {\n navigateToUrl(item.navigationUrl);\n }\n };\n\n const onBottomItemClick = (item) => {\n if (item === \"Logout\") {\n setShowDialog(true);\n }\n };\n\n const buildItems = () => {\n const isDigitStudio = window.location.href.includes(\"digit-studio\");\n const items = [];\n let orderCounter = 1;\n\n if (isLoggedIn) {\n items.push({\n label: t(\"COMMON_BOTTOM_NAVIGATION_HOME\"),\n icon: { icon: \"Home\", width: \"1.5rem\", height: \"1.5rem\" },\n navigationUrl: `/${window?.contextPath}/citizen`,\n orderNumber: orderCounter++,\n });\n\n items.push({\n label: t(\"EDIT_PROFILE\"),\n icon: { icon: \"Edit\", width: \"1.5rem\", height: \"1.5rem\" },\n navigationUrl: `/${window?.contextPath}/citizen/user/profile`,\n orderNumber: orderCounter++,\n });\n }\n\n Object.keys(linkData || {})\n ?.sort((x, y) => x.localeCompare(y))\n ?.forEach((key) => {\n const moduleEntries = linkData[key];\n if (!moduleEntries || moduleEntries.length === 0) return;\n\n // Check if any entry in this module has a sidebar value ending with \"-links\"\n const hasSidebarLink = moduleEntries.some((entry) => entry.sidebar?.endsWith(\"-links\"));\n if (!hasSidebarLink) return;\n\n const rawIcon = moduleEntries[0]?.leftIcon;\n const leftIcon = isDigitStudio && (!rawIcon || rawIcon === \"TLIcon\") ? \"Devices\" : (rawIcon || \"ViewModule\");\n\n // Deduplicate entries by name to avoid duplicate children\n const seen = new Set();\n const uniqueEntries = moduleEntries.filter((entry) => {\n if (seen.has(entry.name)) return false;\n seen.add(entry.name);\n return true;\n });\n\n // Build children from all entries (Apply, My Applications, etc.)\n const children = uniqueEntries.map((entry) => ({\n label: t(entry.displayName || entry.i18nKey),\n icon: { icon: isDigitStudio && (!entry.leftIcon || entry.leftIcon === \"TLIcon\") ? \"Devices\" : (entry.leftIcon || \"ViewModule\"), width: \"1.5rem\", height: \"1.5rem\" },\n navigationUrl: entry.navigationURL || entry.link,\n orderNumber: entry.orderNumber,\n }));\n\n // Sort children by orderNumber\n children.sort((a, b) => {\n const aOrder = a.orderNumber !== undefined ? a.orderNumber : Infinity;\n const bOrder = b.orderNumber !== undefined ? b.orderNumber : Infinity;\n return aOrder - bOrder;\n });\n\n if (children.length === 1) {\n // Single entry — render as flat item (no parent/child nesting)\n items.push({\n label: t(`ACTION_TEST_${Digit.Utils.locale.getTransformedLocale(key)}`),\n icon: { icon: leftIcon, width: \"1.5rem\", height: \"1.5rem\" },\n navigationUrl: children[0].navigationUrl,\n orderNumber: orderCounter++,\n });\n } else {\n // Multiple entries — render as parent with children\n items.push({\n label: t(`ACTION_TEST_${Digit.Utils.locale.getTransformedLocale(key)}`),\n icon: { icon: leftIcon, width: \"1.5rem\", height: \"1.5rem\" },\n children: children,\n orderNumber: orderCounter++,\n });\n }\n });\n\n items.sort((a, b) => {\n const aOrder = a.orderNumber !== undefined ? a.orderNumber : Infinity;\n const bOrder = b.orderNumber !== undefined ? b.orderNumber : Infinity;\n return aOrder - bOrder;\n });\n\n return items;\n };\n\n if (islinkDataLoading) {\n return <Loader />;\n }\n\n const items = buildItems();\n\n return (\n <React.Fragment>\n <MediaQuery minWidth={768}>\n <SideNav\n items={items}\n hideAccessbilityTools={!isLoggedIn}\n onSelect={onItemSelect}\n theme={window?.globalConfigs?.getConfig(\"SIDENAV_THEME\") || \"light\"}\n enableSearch={true}\n variant={window?.globalConfigs?.getConfig(\"SIDENAV_VARIANT\") || \"primary\"}\n transitionDuration={\"\"}\n className=\"\"\n styles={{ position : \"unset\"}}\n expandedWidth=\"\"\n collapsedWidth=\"\"\n onBottomItemClick={onBottomItemClick}\n />\n </MediaQuery>\n {showDialog && (\n <LogoutDialog\n onSelect={handleLogoutSubmit}\n onCancel={handleLogoutCancel}\n onDismiss={handleLogoutCancel}\n />\n )}\n </React.Fragment>\n );\n};\n\nexport default CitizenSideNav;\n","import React, { useRef, useEffect, useState } from \"react\";\nimport { SideNav, Loader } from \"@egovernments/digit-ui-components\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport MediaQuery from 'react-responsive';\n\n\n\n\nconst EmployeeSideBar = () => {\n const { isLoading, data } = Digit.Hooks.useAccessControl();\n const isMultiRootTenant = Digit.Utils.getMultiRootTenant();\n const { t } = useTranslation();\n const navigate = useNavigate();\n const tenantId = Digit?.ULBService?.getStateId();\n\n function extractLeftIcon(data = {}) {\n for (const key in data) {\n const item = data[key];\n if (key === \"item\" && item?.leftIcon !== \"\") {\n return item?.leftIcon;\n }\n if (typeof data[key] === \"object\" && !Array.isArray(data[key])) {\n const subResult = extractLeftIcon(data[key]);\n if (subResult) {\n return subResult;\n }\n }\n }\n return null;\n }\n\n function mergeObjects(obj1, obj2) {\n for (const key in obj2) {\n if (obj2.hasOwnProperty(key)) {\n if (typeof obj2[key] === \"object\" && !Array.isArray(obj2[key])) {\n if (!obj1[key]) {\n obj1[key] = {};\n }\n mergeObjects(obj1[key], obj2[key]);\n } else {\n if (!obj1[key]) {\n obj1[key] = obj2[key];\n }\n }\n }\n }\n }\n\n const configEmployeeSideBar = {};\n data?.actions\n .filter((e) => e.url === \"url\")\n .forEach((item) => {\n let index = item?.path?.split(\".\")?.[0] || \"\";\n if (item?.path !== \"\") {\n const keys = item?.path?.split(\".\");\n let hierarchicalMap = {};\n\n keys.reduce((acc, key, index) => {\n if (index === keys.length - 1) {\n acc[key] = { item };\n } else {\n acc[key] = {};\n return acc[key];\n }\n }, hierarchicalMap);\n mergeObjects(configEmployeeSideBar, hierarchicalMap);\n }\n });\n\n const splitKeyValue = (configEmployeeSideBar) => {\n const objectArray = Object.entries(configEmployeeSideBar);\n objectArray.sort((a, b) => {\n if (a[0] < b[0]) {\n return -1;\n }\n if (a[0] > b[0]) {\n return 1;\n }\n return 0;\n });\n const sortedObject = Object.fromEntries(objectArray);\n configEmployeeSideBar = sortedObject;\n return configEmployeeSideBar;\n };\n\n const navigateToRespectiveURL = (navigate = {}, url = \"\") => {\n if (!url || url === \"/\") return;\n\n //Detect if it's an external link (starts with http or https)\n const isExternal = /^https?:\\/\\//i.test(url);\n\n if (isExternal) {\n //Open external links in a new tab\n window.open(url, \"_blank\", \"noopener,noreferrer\");\n return;\n }\n\n //Internal navigation logic\n if (!url.includes(`/${window?.contextPath}`)) {\n const hostUrl = window.location.origin;\n let updatedUrl;\n\n if (isMultiRootTenant) {\n const contextPath = window?.contextPath || \"sandbox-ui\";\n url = url.replace(`/${contextPath}/employee`, `/${contextPath}/${tenantId}/employee`);\n updatedUrl = url;\n navigate(updatedUrl);\n }\n else{\n updatedUrl = hostUrl + url;\n try {\n if (typeof window !== 'undefined') {\n window.location.href = updatedUrl;\n }\n } catch (error) {\n console.warn('Navigation failed, attempting fallback:', error);\n try {\n window.location.replace(updatedUrl);\n } catch (fallbackError) {\n console.error('All navigation methods failed:', fallbackError);\n }\n }\n }\n } else {\n navigate(url);\n }\n};\n\n const onItemSelect = ({ item, index, parentIndex }) => {\n if (item?.navigationUrl) {\n navigateToRespectiveURL(navigate, item?.navigationUrl);\n } else {\n return;\n } \n };\n\n function transformData(data) {\n const transformItem = (key, value) => {\n if (value.item) {\n return {\n label: t(value.item.displayName),\n icon: { icon: value.item.leftIcon, width: \"1.5rem\", height: \"1.5rem\" },\n navigationUrl: value.item.navigationURL,\n orderNumber:value.item.orderNumber,\n };\n }\n const children = Object.keys(value).map((childKey) => transformItem(childKey, value[childKey]));\n const iconKey = extractLeftIcon(value);\n return {\n label: t(key),\n icon: { icon: iconKey, width: \"1.5rem\", height: \"1.5rem\" },\n children: children,\n };\n };\n return Object.keys(data).map((key) => transformItem(key, data[key]));\n }\n\n const sortDataByOrderNumber = (data) => {\n // Sort the current level of data by orderNumber, handling cases where orderNumber might be missing\n data.sort((a, b) => {\n const aOrder = a.orderNumber !== undefined ? a.orderNumber : Infinity; // Use Infinity if orderNumber is missing\n const bOrder = b.orderNumber !== undefined ? b.orderNumber : Infinity; // Use Infinity if orderNumber is missing\n return aOrder - bOrder;\n });\n \n // Recursively sort the children if they exist\n data.forEach((item) => {\n if (item.children && item.children.length > 0) {\n sortDataByOrderNumber(item.children);\n }\n });\n \n return data;\n };\n\n const transformedData = transformData(splitKeyValue(configEmployeeSideBar));\n const sortedTransformedData= sortDataByOrderNumber(transformedData);\n if (isLoading) {\n return <Loader />;\n }\n\n if (!configEmployeeSideBar) {\n return \"\";\n }\n \n return (\n <MediaQuery minWidth={768}>\n <SideNav\n items={sortedTransformedData}\n hideAccessbilityTools={true}\n onSelect={({ item, index, parentIndex }) => onItemSelect({ item, index, parentIndex })}\n theme={window?.globalConfigs?.getConfig(\"SIDENAV_THEME\") || \"dark\"}\n variant={window?.globalConfigs?.getConfig(\"SIDENAV_VARIANT\") || \"primary\"}\n transitionDuration={\"\"}\n className=\"\"\n styles={{}}\n expandedWidth=\"\"\n collapsedWidth=\"\"\n onBottomItemClick={() => { }}\n />\n </MediaQuery>\n );\n};\n\nexport default EmployeeSideBar;\n\n\n\n\n\n","import React, { useEffect, useState } from \"react\";\nimport {\n HomeIcon,\n EditPencilIcon,\n LogoutIcon,\n AddressBookIcon,\n PropertyHouse,\n CaseIcon,\n CollectionIcon,\n PTIcon,\n OBPSIcon,\n PGRIcon,\n FSMIcon,\n WSICon,\n MCollectIcon,\n Phone,\n BirthIcon,\n DeathIcon,\n FirenocIcon,\n Loader,\n} from \"@egovernments/digit-ui-react-components\";\nimport { Link, useLocation } from \"react-router-dom\";\nimport SideBarMenu from \"../../../config/sidebar-menu\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport LogoutDialog from \"../../Dialog/LogoutDialog\";\nimport ChangeCity from \"../../ChangeCity\";\nimport { defaultImage } from \"../../utils\";\nimport ImageComponent from \"../../ImageComponent\";\n\n/* \nFeature :: Citizen Webview sidebar\n*/\nconst Profile = ({ info, stateName, t }) => (\n <div className=\"profile-section\">\n <div className=\"imageloader imageloader-loaded\">\n <ImageComponent className=\"img-responsive img-circle img-Profile\" src={defaultImage} alt=\"Profile Logo\" />\n </div>\n <div id=\"profile-name\" className=\"label-container name-Profile\">\n <div className=\"label-text\"> {info?.name} </div>\n </div>\n <div id=\"profile-location\" className=\"label-container loc-Profile\">\n <div className=\"label-text\"> {info?.mobileNumber} </div>\n </div>\n {info?.emailId && (\n <div id=\"profile-emailid\" className=\"label-container loc-Profile\">\n <div className=\"label-text\"> {info.emailId} </div>\n </div>\n )}\n <div className=\"profile-divider\"></div>\n {window.location.href.includes(\"/employee\") &&\n !window.location.href.includes(\"/employee/user/login\") &&\n !window.location.href.includes(\"employee/user/language-selection\") && <ChangeCity t={t} mobileView={true} />}\n </div>\n);\nconst IconsObject = {\n CommonPTIcon: <PTIcon className=\"icon\" />,\n OBPSIcon: <OBPSIcon className=\"icon\" />,\n propertyIcon: <PropertyHouse className=\"icon\" />,\n TLIcon: <CaseIcon className=\"icon\" />,\n PGRIcon: <PGRIcon className=\"icon\" />,\n FSMIcon: <FSMIcon className=\"icon\" />,\n WSIcon: <WSICon className=\"icon\" />,\n MCollectIcon: <MCollectIcon className=\"icon\" />,\n BillsIcon: <CollectionIcon className=\"icon\" />,\n BirthIcon: <BirthIcon className=\"icon\" />,\n DeathIcon: <DeathIcon className=\"icon\" />,\n FirenocIcon: <FirenocIcon className=\"icon\" />,\n HomeIcon: <HomeIcon className=\"icon\" />,\n EditPencilIcon: <EditPencilIcon className=\"icon\" />,\n LogoutIcon: <LogoutIcon className=\"icon\" />,\n Phone: <Phone className=\"icon\" />,\n};\nconst StaticCitizenSideBar = ({ linkData, islinkDataLoading }) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const location = useLocation();\n const { pathname } = location;\n const { data: storeData, isFetched } = Digit.Hooks.useStore.getInitData();\n const { stateInfo } = storeData || {};\n const user = Digit.UserService.getUser();\n let isMobile = window.Digit.Utils.browser.isMobile();\n\n const [isEmployee, setisEmployee] = useState(false);\n const [isSidebarOpen, toggleSidebar] = useState(false);\n const [showDialog, setShowDialog] = useState(false);\n\n const handleLogout = () => {\n toggleSidebar(false);\n setShowDialog(true);\n };\n const handleOnSubmit = () => {\n if (Digit.Utils.getMultiRootTenant()) {\n Digit.UserService.logout();\n setShowDialog(false);\n window.location.href = `/${window?.contextPath}/citizen/login`;\n } else {\n Digit.UserService.logout();\n setShowDialog(false);\n }\n };\n const handleOnCancel = () => {\n setShowDialog(false);\n };\n\n if (islinkDataLoading) {\n return <Loader />;\n }\n\n const redirectToLoginPage = () => {\n \n navigate(`/${window?.contextPath}/citizen/login`);\n };\n const showProfilePage = () => {\n navigate(`/${window?.contextPath}/citizen/user/profile`);\n };\n\n const closeSidebar = () => {\n navigate(`/${window?.contextPath}/citizen/all-services`);\n };\n\n let menuItems = [...SideBarMenu(t, showProfilePage, redirectToLoginPage, isEmployee)];\n\n menuItems = menuItems.filter((item) => item.element !== \"LANGUAGE\");\n\n const tenantId = Digit.ULBService.getCurrentTenantId();\n const MenuItem = ({ item }) => {\n const leftIconArray = item?.icon || item.icon?.type?.name;\n const leftIcon = leftIconArray ? IconsObject[leftIconArray] : IconsObject.BillsIcon;\n let itemComponent;\n if (item.type === \"component\") {\n itemComponent = item.action;\n } else {\n itemComponent = item.text;\n }\n const Item = () => (\n <span className=\"menu-item\" {...item.populators}>\n {leftIcon}\n <div className=\"menu-label\">{itemComponent}</div>\n </span>\n );\n if (item.type === \"external-link\") {\n return (\n <a href={item.link}>\n <Item />\n </a>\n );\n }\n if (item.type === \"link\") {\n return (\n <Link to={item?.link}>\n <Item />\n </Link>\n );\n }\n\n return <Item />;\n };\n let profileItem;\n\n if (isFetched && user && user.access_token && user?.info?.type === \"CITIZEN\") {\n profileItem = <Profile info={user?.info} stateName={stateInfo?.name} t={t} />;\n menuItems = menuItems.filter((item) => item?.id !== \"login-btn\");\n menuItems = [\n ...menuItems,\n {\n type: \"link\",\n icon: \"HomeIcon\",\n element: \"HOME\",\n text: t(\"COMMON_BOTTOM_NAVIGATION_HOME\"),\n link: isEmployee ? `/${window?.contextPath}/employee` : `/${window?.contextPath}/citizen`,\n populators: {\n onClick: closeSidebar,\n },\n },\n {\n text: t(\"EDIT_PROFILE\"),\n element: \"PROFILE\",\n icon: \"EditPencilIcon\",\n populators: {\n onClick: showProfilePage,\n },\n },\n {\n text: t(\"CORE_COMMON_LOGOUT\"),\n element: \"LOGOUT\",\n icon: \"LogoutIcon\",\n populators: { onClick: handleLogout },\n },\n {\n text: (\n <React.Fragment>\n {t(\"CS_COMMON_HELPLINE\")}\n <div className=\"telephone\" style={{ marginTop: \"-10%\" }}>\n {storeData?.tenants?.length > 0 && (\n <div className=\"link\">\n <a href={`tel:${\n storeData.tenants.find((tenant) => tenant.code === tenantId)?.contactNumber \n || storeData.tenants[0]?.contactNumber \n || ''\n }`}>\n {storeData.tenants.find((tenant) => tenant.code === tenantId)?.contactNumber \n || storeData.tenants[0]?.contactNumber \n || t(\"CS_NA\")}\n </a>\n </div>\n )}\n </div>\n </React.Fragment>\n ),\n element: \"Helpline\",\n icon: \"Phone\",\n}\n ];\n }\n Object.keys(linkData || {})\n ?.sort((x, y) => y.localeCompare(x))\n ?.map((key) => {\n if (linkData[key][0]?.sidebar === `${window.contextPath}-links`) {\n menuItems.splice(1, 0, {\n type: linkData[key][0]?.sidebarURL?.includes(window?.contextPath) ? \"link\" : \"external-link\",\n text: t(`ACTION_TEST_${Digit.Utils.locale.getTransformedLocale(key)}`),\n links: linkData[key],\n icon: linkData[key][0]?.leftIcon,\n link: linkData[key][0]?.sidebarURL,\n });\n }\n });\n\n return (\n <React.Fragment>\n <div>\n <div\n style={{\n height: \"100%\",\n width: \"100%\",\n top: \"0px\",\n backgroundColor: \"rgba(0, 0, 0, 0.54)\",\n pointerzevents: \"auto\",\n }}\n ></div>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n height: isMobile ? \"calc(100vh - 56px)\" : \"auto\",\n zIndex: \"99\",\n }}\n >\n {profileItem}\n <div className=\"drawer-desktop\">\n {menuItems?.map((item, index) => (\n <div className={`sidebar-list ${pathname === item?.link || pathname === item?.sidebarURL ? \"active\" : \"\"}`} key={index}>\n <MenuItem item={item} />\n </div>\n ))}\n </div>\n </div>\n <div>{showDialog && <LogoutDialog onSelect={handleOnSubmit} onCancel={handleOnCancel} onDismiss={handleOnCancel}></LogoutDialog>}</div>\n </div>\n </React.Fragment>\n );\n};\n\nexport default StaticCitizenSideBar;\n","import React from \"react\";\nimport { CitizenSideBar } from \"./CitizenSideBar\";\nimport EmployeeSideBar from \"./EmployeeSideBar\";\n\nconst SideBar = ({ t, CITIZEN, isSidebarOpen, toggleSidebar, handleLogout, mobileView, userDetails, modules, linkData, islinkDataLoading,userProfile}) => {\n if (CITIZEN)\n return (\n <CitizenSideBar\n isOpen={isSidebarOpen}\n isMobile={true}\n toggleSidebar={toggleSidebar}\n onLogout={handleLogout}\n linkData={linkData}\n islinkDataLoading={islinkDataLoading}\n userProfile={userProfile}\n isEmployee={false}\n />\n );\n else {\n return !isSidebarOpen && userDetails?.access_token ? (\n <div className=\"digit-employeeSidebar\">\n <EmployeeSideBar {...{ mobileView, userDetails, modules }} />\n </div>\n ) : (\n <div className=\"digit-citizenSidebar\">\n <CitizenSideBar\n isOpen={isSidebarOpen}\n isMobile={true}\n toggleSidebar={toggleSidebar}\n onLogout={handleLogout}\n isEmployee={true}\n userProfile={userProfile}\n />\n </div>\n );\n }\n};\n\nexport default SideBar;\n","import { Hamburger, TopBar as TopBarComponent } from \"@egovernments/digit-ui-react-components\";\nimport { Dropdown } from \"@egovernments/digit-ui-components\";\nimport React,{Fragment} from \"react\";\nimport {useNavigate, useLocation } from \"react-router-dom\";\nimport ChangeCity from \"../ChangeCity\";\nimport ChangeLanguage from \"../ChangeLanguage\";\nimport { Header as TopBarComponentMain } from \"@egovernments/digit-ui-components\";\nimport ImageComponent from \"../ImageComponent\";\n\nconst DEFAULT_EGOV_LOGO =\"https://egov-dev-assets.s3.ap-south-1.amazonaws.com/egov-logo-2025.png\";\n\n\nconst TopBar = ({\n t,\n stateInfo,\n toggleSidebar,\n isSidebarOpen,\n handleLogout,\n userDetails,\n CITIZEN,\n cityDetails,\n mobileView,\n userOptions,\n handleUserDropdownSelection,\n logoUrl,\n logoUrlWhite,\n showLanguageChange = true,\n}) => {\n const [profilePic, setProfilePic] = React.useState(null);\n\n React.useEffect( () => {\n const app=async ()=>{\n const tenant = Digit.Utils.getMultiRootTenant() ? Digit.ULBService.getStateId() : Digit.ULBService.getCurrentTenantId();\n const uuid = userDetails?.info?.uuid;\n if (uuid) {\n const usersResponse = await Digit.UserService.userSearch(tenant, { uuid: [uuid] }, {});\n if (usersResponse && usersResponse.user && usersResponse.user.length) {\n const userDetails = usersResponse.user[0];\n const thumbs = userDetails?.photo?.split(\",\");\n setProfilePic(thumbs?.at(0));\n }\n }\n }\n app()\n }, [profilePic !== null, userDetails?.info?.uuid]);\n\n const CitizenHomePageTenantId = Digit.ULBService.getCitizenCurrentTenant(true);\n\n let navigate = useNavigate();\n const { pathname } = useLocation();\n\n const conditionsToDisableNotificationCountTrigger = () => {\n if (Digit.UserService?.getUser()?.info?.type === \"EMPLOYEE\") return false;\n if (Digit.UserService?.getUser()?.info?.type === \"CITIZEN\") {\n if (!CitizenHomePageTenantId) return false;\n else return true;\n }\n return false;\n };\n\n const { data: { unreadCount: unreadNotificationCount } = {}, isSuccess: notificationCountLoaded } = Digit.Hooks.useNotificationCount({\n tenantId: CitizenHomePageTenantId,\n config: {\n enabled: conditionsToDisableNotificationCountTrigger(),\n },\n });\n\n const updateSidebar = () => {\n if (!Digit.clikOusideFired) {\n toggleSidebar(true);\n } else {\n Digit.clikOusideFired = false;\n }\n };\n\n function onNotificationIconClick() {\n navigate(`/${window?.contextPath}/citizen/engagement/notifications`);\n }\n\n const urlsToDisableNotificationIcon = (pathname) =>\n !!Digit.UserService?.getUser()?.access_token\n ? false\n : [`/${window?.contextPath}/citizen/select-language`, `/${window?.contextPath}/citizen/select-location`].includes(pathname);\n\n if (CITIZEN) {\n return (\n <div>\n <TopBarComponent\n img={stateInfo?.logoUrlWhite}\n isMobile={true}\n toggleSidebar={updateSidebar}\n logoUrl={stateInfo?.logoUrlWhite}\n onLogout={handleLogout}\n userDetails={userDetails}\n notificationCount={unreadNotificationCount < 99 ? unreadNotificationCount : 99}\n notificationCountLoaded={notificationCountLoaded}\n cityOfCitizenShownBesideLogo={t(CitizenHomePageTenantId)}\n onNotificationIconClick={onNotificationIconClick}\n hideNotificationIconOnSomeUrlsWhenNotLoggedIn={urlsToDisableNotificationIcon(pathname)}\n changeLanguage={!mobileView ? <ChangeLanguage dropdown={true} /> : null}\n />\n </div>\n );\n }\n const loggedin = userDetails?.access_token ? true : false;\n\n //checking for custom topbar components\n const CustomEmployeeTopBar = Digit.ComponentRegistryService?.getComponent(\"CustomEmployeeTopBar\");\n\n if (CustomEmployeeTopBar) {\n return (\n <CustomEmployeeTopBar\n {...{\n t,\n stateInfo,\n toggleSidebar,\n isSidebarOpen,\n handleLogout,\n userDetails,\n CITIZEN,\n cityDetails,\n mobileView,\n userOptions,\n handleUserDropdownSelection,\n logoUrl,\n showLanguageChange,\n loggedin,\n }}\n />\n );\n }\n return (\n <TopBarComponentMain\n actionFields={[\n <ChangeCity dropdown={true} t={t} />,\n showLanguageChange && <ChangeLanguage dropdown={true} />,\n userDetails?.access_token && (\n <Dropdown\n option={userOptions}\n optionKey=\"name\"\n profilePic={profilePic ? profilePic : userDetails?.info?.name || userDetails?.info?.userInfo?.name || \"Employee\"}\n select={handleUserDropdownSelection}\n showArrow={true}\n menuStyles={{ marginTop: \"1rem\" }}\n theme=\"light\"\n />\n ),\n ]}\n onHamburgerClick={() => {\n toggleSidebar();\n }}\n className=\"digit-employee-header\"\n img={logoUrl}\n logoWidth={\"64px\"}\n logoHeight={\"48px\"}\n logo={(loggedin ? cityDetails?.logoId : stateInfo?.statelogo)||DEFAULT_EGOV_LOGO}\n onImageClick={() => {}}\n onLogoClick={() => {}}\n props={{}}\n showDeafultImg\n style={{}}\n theme={window?.globalConfigs?.getConfig(\"HEADER_THEME\") || \"light\"}\n ulb={\n loggedin ? (\n cityDetails?.city?.ulbGrade ? (\n <>\n {t(cityDetails?.i18nKey).toUpperCase()}{\" \"}\n {t(`ULBGRADE_${cityDetails?.city?.ulbGrade.toUpperCase().replace(\" \", \"_\").replace(\".\", \"_\")}`).toUpperCase()}\n </>\n ) : (\n <ImageComponent className=\"state\" src={logoUrlWhite} alt=\"State Logo\" />\n )\n ) : (\n <>\n {t(`MYCITY_${stateInfo?.code?.toUpperCase()}_LABEL`)} {t(`MYCITY_STATECODE_LABEL`)}\n </>\n )\n }\n />\n );\n};\n\nexport default TopBar;\n","import React, { useState } from \"react\";\nimport TopBar from \"./TopBar\";\nimport { useNavigate } from \"react-router-dom\";\nimport SideBar from \"./SideBar\";\nimport LogoutDialog from \"../Dialog/LogoutDialog\";\nconst TopBarSideBar = ({\n t,\n stateInfo,\n userDetails,\n CITIZEN,\n cityDetails,\n mobileView,\n handleUserDropdownSelection,\n logoUrl,\n logoUrlWhite,\n showSidebar = true,\n showLanguageChange,\n linkData,\n islinkDataLoading,\n}) => {\n const [isSidebarOpen, toggleSidebar] = useState(false);\n const navigate = useNavigate()\n const [showDialog, setShowDialog] = useState(false);\n const handleLogout = () => {\n toggleSidebar(false);\n setShowDialog(true);\n };\n\n const clearSSOLogoutMarkers = () => {\n localStorage.removeItem(\"sso-provider\");\n localStorage.removeItem(\"sso-client-id\");\n localStorage.removeItem(\"sso-tenant-id\");\n localStorage.removeItem(\"sso-authority\");\n localStorage.removeItem(\"sso-logout-url\");\n localStorage.removeItem(\"sso-logout-redirect-param\");\n };\n\n const getSSOPostLogoutRedirectUri = () => `${window.location.origin}/${window?.contextPath || \"\"}/employee`;\n\n const handleSSOLogout = async () => {\n const provider = localStorage.getItem(\"sso-provider\");\n const normalizedProvider = provider?.toUpperCase();\n const logoutUrlFromConfig = localStorage.getItem(\"sso-logout-url\");\n const redirectParamName = localStorage.getItem(\"sso-logout-redirect-param\") || \"post_logout_redirect_uri\";\n\n // Perform provider-specific cleanup before logout\n if (normalizedProvider === \"GOOGLE\") {\n const token = localStorage.getItem(\"google_access_token\");\n\n try {\n if (window.google?.accounts?.id) {\n window.google.accounts.id.disableAutoSelect();\n }\n\n if (token) {\n await fetch(`https://oauth2.googleapis.com/revoke?token=${encodeURIComponent(token)}`, {\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/x-www-form-urlencoded\",\n },\n });\n localStorage.removeItem(\"google_access_token\");\n }\n } catch (error) {\n console.error(\"Provider cleanup error\", error);\n }\n }\n\n // Generic SSO logout handler\n if (logoutUrlFromConfig) {\n const postLogoutRedirectUri = getSSOPostLogoutRedirectUri();\n clearSSOLogoutMarkers();\n\n try {\n await Digit.UserService.logout();\n } finally {\n try {\n const url = new URL(logoutUrlFromConfig);\n url.searchParams.set(redirectParamName, postLogoutRedirectUri);\n window.location.href = url.toString();\n } catch (error) {\n window.location.href = `${logoutUrlFromConfig}?${redirectParamName}=${encodeURIComponent(postLogoutRedirectUri)}`;\n }\n }\n\n return true;\n }\n\n return false;\n };\n\n const handleOnSubmit = async () => {\n const handledBySSO = await handleSSOLogout();\n if (!handledBySSO) {\n Digit.UserService.logout();\n }\n setShowDialog(false);\n };\n const handleOnCancel = () => {\n setShowDialog(false);\n };\n\n const handleSidebar = () => {\n toggleSidebar(!isSidebarOpen);\n };\n const userProfile = () => {\n CITIZEN ? navigate(`/${window?.contextPath}/citizen/user/profile`) : navigate(`/${window?.contextPath}/employee/user/profile`);\n };\n const userOptions = [\n { name: t(\"EDIT_PROFILE\"), icon: \"Edit\", func: userProfile },\n { name: t(\"CORE_COMMON_LOGOUT\"), icon: \"Logout\", func: handleLogout },\n ];\n\n return (\n <React.Fragment>\n <TopBar\n t={t}\n stateInfo={stateInfo}\n toggleSidebar={handleSidebar}\n isSidebarOpen={isSidebarOpen}\n handleLogout={handleLogout}\n userDetails={userDetails}\n CITIZEN={CITIZEN}\n cityDetails={cityDetails}\n mobileView={mobileView}\n userOptions={userOptions}\n handleUserDropdownSelection={handleUserDropdownSelection}\n logoUrl={logoUrl}\n logoUrlWhite={logoUrlWhite}\n showLanguageChange={showLanguageChange}\n />\n {showDialog && <LogoutDialog onSelect={handleOnSubmit} onCancel={handleOnCancel} onDismiss={handleOnCancel}></LogoutDialog>}\n {!CITIZEN\n ? showSidebar && (\n <SideBar\n t={t}\n CITIZEN={CITIZEN}\n isSidebarOpen={isSidebarOpen}\n toggleSidebar={handleSidebar}\n handleLogout={handleLogout}\n mobileView={mobileView}\n userDetails={userDetails}\n linkData={linkData}\n userProfile={userProfile}\n islinkDataLoading={islinkDataLoading}\n />\n )\n : CITIZEN\n ? showSidebar && isSidebarOpen && (\n <SideBar\n t={t}\n CITIZEN={CITIZEN}\n isSidebarOpen={isSidebarOpen}\n toggleSidebar={handleSidebar}\n handleLogout={handleLogout}\n mobileView={mobileView}\n userDetails={userDetails}\n linkData={linkData}\n userProfile={userProfile}\n islinkDataLoading={islinkDataLoading}\n />\n )\n : null}\n </React.Fragment>\n );\n};\nexport default TopBarSideBar;\n","export const defaultImage =\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAO4AAADUCAMAAACs0e/bAAAAM1BMVEXK0eL\" +\n \"/\" +\n \"/\" +\n \"/\" +\n \"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\";","import React from \"react\";\nimport { LanguageIcon, LogoutIcon, AddressBookIcon, LocationIcon } from \"@egovernments/digit-ui-react-components\";\nimport ChangeLanguage from \"../components/ChangeLanguage\";\n\nconst SideBarMenu = (t, closeSidebar, redirectToLoginPage, isEmployee) => [\n {\n type: \"component\",\n element: \"LANGUAGE\",\n action: <ChangeLanguage />,\n icon: \"LanguageIcon\",\n },\n {\n id: \"login-btn\",\n element: \"LOGIN\",\n text: t(\"CORE_COMMON_LOGIN\"),\n icon: <LogoutIcon className=\"icon\" />,\n populators: {\n onClick: redirectToLoginPage,\n },\n },\n];\n\nexport default SideBarMenu;\n","import React, { useEffect } from 'react';\n\nconst withAutoFocusMain = (WrappedComponent, mainSelector = '.digit-home-main') => {\n return function WithAutoFocusWrapper(props) {\n useEffect(() => {\n const handleFirstTab = (e) => {\n if (e.key === 'Tab') {\n const main = document.querySelector(mainSelector);\n if (main) {\n main.setAttribute('tabindex', '-1');\n main.style.outline = 'none';\n main.focus();\n }\n window.removeEventListener('keydown', handleFirstTab);\n }\n };\n\n window.addEventListener('keydown', handleFirstTab);\n return () => window.removeEventListener('keydown', handleFirstTab);\n }, []);\n\n return <WrappedComponent {...props} />;\n };\n};\n\nexport default withAutoFocusMain;","import React, { useEffect, useRef } from \"react\";\n\nfunction useInterval(callback, delay) {\n const savedCallback = useRef();\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n const timer = setInterval(tick, delay);\n return () => clearInterval(timer);\n }\n }, [delay]);\n}\n\nexport default useInterval;\n","export const useLoginConfig = (stateCode) => {\n const moduleName = Digit.Utils.getConfigModuleName();\n\n return Digit.Hooks.useCommonMDMS(\n stateCode,\n moduleName,\n [\"LoginConfig\"],\n {\n select: (data) => ({\n config: data?.[moduleName]?.LoginConfig,\n }),\n retry: false,\n }\n );\n};\n","import { BackButton, HeaderComponent, Loader ,SearchIconSvg} from \"@egovernments/digit-ui-components\";\nimport React, { Fragment } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport FaqComponent from \"./FaqComponent\";\n\nconst FAQsSection = ({ module }) => {\n const user = Digit.UserService.getUser();\n const tenantId = user?.info?.tenantId || Digit.ULBService.getCurrentTenantId();\n const { t } = useTranslation();\n\n const SearchImg = () => {\n return <SearchIconSvg className=\"signature-img\" />;\n };\n\n const { isLoading, data } = Digit.Hooks.useGetFAQsJSON(Digit.ULBService.getStateId());\n\n const moduleFaqs = data?.MdmsRes[\"common-masters\"]?.faqs[0]?.[`${module}`].faqs;\n\n if (isLoading) {\n return <Loader />;\n }\n return (\n <Fragment>\n <div className=\"faq-page\">\n <BackButton style={{ marginLeft: \"unset\" }}></BackButton>\n <div style={{ marginBottom: \"15px\" }}>\n <HeaderComponent styles={{ marginLeft: \"0px\", paddingTop: \"10px\", fontSize: \"32px\" }}>{t(\"FAQ_S\")}</HeaderComponent>\n </div>\n <div className=\"faq-list\">\n {moduleFaqs.map((faq, i) => (\n <FaqComponent key={\"faq_\" + i} question={faq.question} answer={faq.answer} lastIndex={i === moduleFaqs?.length - 1} />\n ))}\n </div>\n </div>\n </Fragment>\n );\n};\n\nexport default FAQsSection;\n","import { ArrowForward } from \"@egovernments/digit-ui-svg-components\";\nimport React, { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nconst FaqComponent = (props) => {\n const { question, answer, lastIndex } = props;\n const [isOpen, toggleOpen] = useState(false);\n const { t } = useTranslation();\n\n return (\n <div className=\"faqs border-none\" onClick={() => toggleOpen(!isOpen)}>\n <div className=\"faq-question\" style={{ justifyContent: \"space-between\", display: \"flex\" }}>\n <span>{t(question)}</span>\n <span className={isOpen ? \"faqicon rotate\" : \"faqicon\"} style={{ float: \"right\" }}>\n <ArrowForward />\n </span>\n </div>\n\n <div className=\"faq-answer\" style={isOpen ? { display: \"block\" } : { display: \"none\" }}>\n <span>{t(answer)}</span>\n </div>\n {!lastIndex ? <div className=\"cs-box-border\" /> : null}\n </div>\n );\n};\n\nexport default FaqComponent;\n","import React, { useState, useEffect } from \"react\";\nimport { GalleryIcon, RemoveIcon } from \"@egovernments/digit-ui-react-components\";\nimport { useTranslation } from \"react-i18next\";\n\nfunction UploadDrawer({ setProfilePic, closeDrawer, userType, removeProfilePic ,showToast}) {\n const [uploadedFile, setUploadedFile] = useState(null);\n const [file, setFile] = useState(\"\");\n const [error, setError] = useState(null);\n const { t } = useTranslation();\n const selectfile = (e) => setFile(e.target.files[0]);\n const removeimg = () => {removeProfilePic(); closeDrawer()};\n const onOverlayBodyClick = () => closeDrawer();\n\n useEffect(() => {\n (async () => {\n setError(null);\n if (file) {\n if (file.size >= 1000000) {\n showToast(\"error\", t(\"CORE_COMMON_PROFILE_MAXIMUM_UPLOAD_SIZE_EXCEEDED\"))\n setError(t(\"CORE_COMMON_PROFILE_MAXIMUM_UPLOAD_SIZE_EXCEEDED\"));\n } else {\n try {\n const response = await Digit.UploadServices.Filestorage(`${userType}-profile`, file, Digit.ULBService.getStateId());\n if (response?.data?.files?.length > 0) {\n const fileStoreId = response?.data?.files[0]?.fileStoreId;\n setUploadedFile(fileStoreId);\n setProfilePic(fileStoreId);\n } else {\n showToast(\"error\", t(\"CORE_COMMON_PROFILE_FILE_UPLOAD_ERROR\"))\n setError(t(\"CORE_COMMON_PROFILE_FILE_UPLOAD_ERROR\"));\n }\n } catch (err) {\n showToast(\"error\",t(\"CORE_COMMON_PROFILE_INVALID_FILE_INPUT\"))\n // setError(t(\"PT_FILE_UPLOAD_ERROR\"));\n }\n }\n }\n })();\n }, [file]);\n\n return (\n <React.Fragment>\n <div\n style={{\n position: \"fixed\",\n top: \"0\",\n left: \"0\",\n right: \"0\",\n bottom: \"0\",\n width: \"100%\",\n height: \"100vh\",\n backgroundColor: \"rgba(0,0,0,.5)\",\n // zIndex: \"9998\",\n }}\n onClick={onOverlayBodyClick}\n ></div>\n <div\n style={{\n width: \"100%\",\n justifyContent: \"space-between\",\n display: \"flex\",\n backgroundColor: \"white\",\n alignItems: \"center\",\n position: \"fixed\",\n left: \"0\",\n right: \"0\",\n height: \"20%\",\n bottom: userType === \"citizen\" ? \"2.5rem\" : \"0\",\n zIndex: \"1000\",\n }}\n >\n <div\n style={{ display: \"flex\", flex: \"1\", flexDirection: \"column\", width: \"100%\", justifyContent: \"center\", alignItems: \"center\", gap: \"8px 0\" }}\n >\n <label for=\"file\" style={{ cursor: \"pointer\" }}>\n {\" \"}\n <GalleryIcon />\n </label>\n <label style={{ cursor: \"pointer\" }}> Gallery</label>\n <input type=\"file\" id=\"file\" accept=\"image/*, .png, .jpeg, .jpg\" onChange={selectfile} style={{ display: \"none\" }} />\n </div>\n\n <div\n style={{ display: \"flex\", flex: \"1\", width: \"100%\", justifyContent: \"center\", alignItems: \"center\", flexDirection: \"column\", gap: \"8px 0\" }}\n >\n <button onClick={removeimg}>\n <RemoveIcon />\n </button>\n <label style={{ cursor: \"pointer\" }}>Remove</label>\n </div>\n </div>\n </React.Fragment>\n );\n}\n\nexport default UploadDrawer;\n","import {\n SVG,\n Dropdown,\n LabelFieldPair,\n MobileNumber,\n TextInput,\n CardLabelError,\n BackLink,\n Loader,\n Button,\n SubmitBar,\n Footer,\n CardLabel,\n BreadCrumb,\n Toast,\n ErrorMessage,\n} from \"@egovernments/digit-ui-components\";\nimport { CameraIcon } from \"@egovernments/digit-ui-react-components\";\nimport React, { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport UploadDrawer from \"./ImageUpload/UploadDrawer\";\nimport ImageComponent from \"../../../components/ImageComponent\";\n\nconst DEFAULT_TENANT = Digit?.ULBService?.getStateId?.();\n\nconst defaultImage =\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAO4AAADUCAMAAACs0e/bAAAAM1BMVEXK0eL\" +\n \"/\" +\n \"/\" +\n \"/\" +\n \"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\";\n\nconst defaultValidationConfig = {\n tenantId: `${DEFAULT_TENANT}`,\n UserProfileValidationConfig: [\n {\n name: \"/^[a-zA-Z ]+$/i\",\n mobileNumber: \"/^[6-9]{1}[0-9]{9}$/\",\n password: \"/^([a-zA-Z0-9@#$%]{8,15})$/i\",\n },\n ],\n};\n\nconst IndividualUserProfile = ({ stateCode, userType, cityDetails }) => {\n const navigate = useNavigate();\n const { t } = useTranslation();\n const url = window.location.href;\n const stateId = Digit.ULBService.getStateId();\n const tenant = Digit.ULBService.getCurrentTenantId();\n const userInfo = Digit.UserService.getUser()?.info || {};\n const [userDetails, setUserDetails] = useState(null);\n const [name, setName] = useState(userInfo?.name ? userInfo.name : \"\");\n const [email, setEmail] = useState(userInfo?.emailId ? userInfo.emailId : \"\");\n const [gender, setGender] = useState(userDetails?.gender);\n const [city, setCity] = useState(userInfo?.permanentCity ? userInfo.permanentCity : cityDetails.name);\n const [mobileNumber, setMobileNo] = useState(userInfo?.mobileNumber ? userInfo.mobileNumber : \"\");\n const [profilePic, setProfilePic] = useState(null);\n const [profileImg, setProfileImg] = useState(\"\");\n const [openUploadSlide, setOpenUploadSide] = useState(false);\n const [changepassword, setChangepassword] = useState(false);\n const [currentPassword, setCurrentPassword] = useState(\"\");\n const [newPassword, setNewPassword] = useState(\"\");\n const [confirmPassword, setConfirmPassword] = useState(\"\");\n const [toast, setToast] = useState(null);\n const [loading, setLoading] = useState(false);\n const [windowWidth, setWindowWidth] = React.useState(window.innerWidth);\n const [errors, setErrors] = React.useState({});\n const isMobile = window.Digit.Utils.browser.isMobile();\n const isMultiRootTenant = Digit.Utils.getMultiRootTenant();\n\n const individualServicePath = window?.globalConfigs?.getConfig(\"INDIVIDUAL_SERVICE_CONTEXT_PATH\");\n // const useAnIndividual = window?.globalConfigs?.getConfig(\"USE_INDIVIDUAL_MODEL\"); // Handled in parent\n\n const mapConfigToRegExp = (config) => {\n return (\n config?.UserProfileValidationConfig?.[0] &&\n Object.entries(config?.UserProfileValidationConfig[0]).reduce((acc, [key, value]) => {\n if (typeof value === \"string\") {\n try {\n // Checking if value looks like a regex (starts with \"/\" and ends with \"/flags\")\n if (value.startsWith(\"/\") && value.lastIndexOf(\"/\") > 0) {\n const lastSlashIndex = value.lastIndexOf(\"/\");\n const pattern = value.slice(1, lastSlashIndex); // Extracting regex pattern\n const flags = value.slice(lastSlashIndex + 1); // Extracting regex flags\n\n acc[key] = new RegExp(pattern, flags); // Converting properly\n } else {\n acc[key] = new RegExp(value); // Treating it as a normal regex pattern (no flags)\n }\n } catch (error) {\n console.error(`Error parsing regex for key \"${key}\":`, error);\n acc[key] = value; // Keeping as string if invalid regex\n }\n } else {\n acc[key] = value; // Keeping non-string values as it is\n }\n return acc;\n }, {})\n );\n };\n\n const [validationConfig, setValidationConfig] = useState(mapConfigToRegExp(defaultValidationConfig) || {});\n\n const { data: mdmsValidationData, isValidationConfigLoading } = Digit.Hooks.useCustomMDMS(\n stateCode,\n \"commonUiConfig\",\n [{ name: \"UserProfileValidationConfig\" }],\n {\n select: (data) => {\n return data?.commonUiConfig;\n },\n }\n );\n\n useEffect(() => {\n if (mdmsValidationData && mdmsValidationData?.UserProfileValidationConfig?.[0]) {\n const updatedValidationConfig = mapConfigToRegExp(mdmsValidationData);\n setValidationConfig(updatedValidationConfig);\n }\n }, [mdmsValidationData]);\n\n const getUserInfo = async () => {\n const uuid = userInfo?.uuid;\n\n if (uuid) {\n // New API using health-individual\n const response = await Digit.CustomService.getResponse({\n url: `${individualServicePath}/v1/_search`,\n useCache: false,\n method: \"POST\",\n userService: true,\n params: {\n limit: 1000,\n offset: 0,\n tenantId: tenant,\n },\n body: {\n Individual: {\n userUuid: [uuid],\n tenantId: tenant,\n },\n },\n });\n\n if (response?.Individual?.length) {\n setUserDetails(response.Individual[0]);\n }\n }\n };\n\n React.useEffect(() => {\n window.addEventListener(\"resize\", () => setWindowWidth(window.innerWidth));\n return () => {\n window.removeEventListener(\"resize\", () => setWindowWidth(window.innerWidth));\n };\n });\n\n useEffect(() => {\n setLoading(true);\n\n getUserInfo();\n\n setGender({\n i18nKey: undefined,\n code: userDetails?.gender,\n value: userDetails?.gender,\n });\n\n const thumbs = userDetails?.photo?.split(\",\");\n setProfileImg(thumbs?.at(0));\n\n setLoading(false);\n }, [userDetails !== null]);\n\n let validation = {};\n const editScreen = false; // To-do: Deubug and make me dynamic or remove if not needed\n const onClickAddPic = () => setOpenUploadSide(!openUploadSlide);\n const TogleforPassword = () => setChangepassword(!changepassword);\n const setGenderName = (value) => setGender(value);\n const closeFileUploadDrawer = () => setOpenUploadSide(false);\n\n const setUserName = (value) => {\n setName(value);\n\n if (!validationConfig?.name?.test(value) || value.length === 0 || value.length > 50) {\n setErrors({\n ...errors,\n userName: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_NAME_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, userName: null });\n }\n };\n\n const setUserEmailAddress = (value) => {\n if (userInfo?.userName !== value) {\n setEmail(value);\n\n if (value.length && !(value.includes(\"@\") && value.includes(\".\"))) {\n setErrors({\n ...errors,\n emailAddress: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_EMAIL_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, emailAddress: null });\n }\n } else {\n setErrors({ ...errors, emailAddress: null });\n }\n };\n\n const setUserMobileNumber = (value) => {\n setMobileNo(value);\n\n if (userType === \"employee\" && !validationConfig?.mobileNumber?.test(value)) {\n setErrors({\n ...errors,\n mobileNumber: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_MOBILE_NUMBER_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, mobileNumber: null });\n }\n };\n\n const setUserCurrentPassword = (value) => {\n if (!validationConfig?.password.test(value)) {\n setErrors({\n ...errors,\n currentPassword: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_PASSWORD_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, currentPassword: null });\n }\n };\n\n const setUserNewPassword = (value) => {\n setNewPassword(value);\n if (!validationConfig?.password.test(value)) {\n setErrors({\n ...errors,\n newPassword: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_PASSWORD_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, newPassword: null });\n }\n };\n\n const setUserConfirmPassword = (value) => {\n setConfirmPassword(value);\n\n if (!validationConfig?.password.test(value)) {\n setErrors({\n ...errors,\n confirmPassword: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_PASSWORD_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, confirmPassword: null });\n }\n };\n\n const removeProfilePic = () => {\n setProfilePic(null);\n setProfileImg(null);\n };\n\n const showToast = (type, message, duration = 5000) => {\n setToast({ key: type, action: message });\n setTimeout(() => {\n setToast(null);\n }, duration);\n };\n\n const updateProfile = async () => {\n setLoading(true);\n try {\n if (name) {\n setName((prev) => prev.trim());\n }\n\n if (!validationConfig?.name.test(name) || name === \"\" || name.length > 50 || name.length < 1) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_NAME_INVALID\"),\n });\n }\n\n if (userType === \"employee\" && !validationConfig?.mobileNumber.test(mobileNumber)) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_MOBILE_NUMBER_INVALID\"),\n });\n }\n\n if (email.length && !(email.includes(\"@\") && email.includes(\".\"))) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_EMAIL_INVALID\"),\n });\n }\n\n const trimmedCurrentPassword = currentPassword.trim();\n const trimmedNewPassword = newPassword.trim();\n const trimmedConfirmPassword = confirmPassword.trim();\n\n setCurrentPassword(trimmedCurrentPassword);\n setNewPassword(trimmedNewPassword);\n setConfirmPassword(trimmedConfirmPassword);\n\n if (changepassword && (trimmedCurrentPassword && trimmedNewPassword && trimmedConfirmPassword)) {\n if (trimmedNewPassword !== trimmedConfirmPassword) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_PASSWORD_MISMATCH\"),\n });\n }\n\n if (!(trimmedCurrentPassword.length && trimmedNewPassword.length && trimmedConfirmPassword.length)) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_PASSWORD_INVALID\"),\n });\n }\n\n if (!validationConfig?.password.test(trimmedNewPassword) && !validationConfig?.password.test(trimmedConfirmPassword)) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_PASSWORD_INVALID\"),\n });\n }\n }\n\n let responseInfo;\n\n // Build Individual object dynamically\n const individualPayload = {\n ...userDetails,\n tenantId: tenant,\n name: {\n givenName: name.trim(),\n familyName: userDetails?.name?.familyName,\n otherNames: userDetails?.name?.otherNames,\n },\n mobileNumber: mobileNumber,\n isDeleted: false,\n isSystemUser: true,\n isSystemUserActive: true,\n };\n\n // Only add optional fields if they have values\n if (gender?.value) {\n individualPayload.gender = gender.value;\n }\n\n if (email) {\n individualPayload.email = email;\n }\n\n if (profilePic) {\n individualPayload.photo = profilePic;\n }\n\n const response = await Digit.CustomService.getResponse({\n url: `${individualServicePath}/v1/_update`,\n useCache: false,\n method: \"POST\",\n userService: true,\n body: {\n Individual: individualPayload,\n },\n });\n responseInfo = response?.responseInfo;\n \n\n\n if (responseInfo && responseInfo.status === \"200\") {\n const user = Digit.UserService.getUser();\n\n if (user) {\n Digit.UserService.setUser({\n ...user,\n info: {\n ...user.info,\n name,\n mobileNumber,\n emailId: email,\n permanentCity: city,\n },\n });\n }\n }\n\n if (currentPassword.length && newPassword.length && confirmPassword.length) {\n const requestData = {\n existingPassword: currentPassword,\n newPassword: newPassword,\n tenantId: tenant,\n type: \"EMPLOYEE\",\n username: userInfo?.userName,\n confirmPassword: confirmPassword,\n };\n\n if (newPassword === confirmPassword) {\n try {\n const res = await Digit.UserService.changePassword(requestData, tenant);\n\n const { responseInfo: changePasswordResponseInfo } = res;\n if (changePasswordResponseInfo?.status && changePasswordResponseInfo.status === \"200\") {\n showToast(\"success\", t(\"CORE_COMMON_PROFILE_UPDATE_SUCCESS_WITH_PASSWORD\"), 5000);\n setTimeout(() => Digit.UserService.logout(), 2000);\n } else {\n throw \"\";\n }\n } catch (error) {\n throw JSON.stringify({\n type: \"error\",\n message: error.Errors?.at(0)?.description ? error.Errors.at(0).description : \"CORE_COMMON_PROFILE_UPDATE_ERROR_WITH_PASSWORD\",\n });\n }\n } else {\n throw JSON.stringify({\n type: \"error\",\n message: \"CORE_COMMON_PROFILE_ERROR_PASSWORD_NOT_MATCH\",\n });\n }\n } else if (responseInfo?.status && responseInfo.status === \"200\") {\n showToast(\"success\", t(\"CORE_COMMON_PROFILE_UPDATE_SUCCESS\"), 5000);\n }\n } catch (error) {\n let errorObj;\n try {\n errorObj = JSON.parse(error);\n } catch (e) {\n errorObj = {\n type: \"error\",\n message: error?.response?.data?.Errors?.[0]?.description || \"CORE_COMMON_PROFILE_UPDATE_ERROR\",\n };\n }\n showToast(errorObj.type, t(errorObj.message), 5000);\n }\n\n setLoading(false);\n };\n\n let menu = [];\n const { data: Menu } = Digit.Hooks.useGenderMDMS(stateId, \"common-masters\", \"GenderType\");\n Menu &&\n Menu.map((genderDetails) => {\n menu.push({\n i18nKey: `PT_COMMON_GENDER_${genderDetails.code}`,\n code: `${genderDetails.code}`,\n value: `${genderDetails.code}`,\n });\n });\n\n const setFileStoreId = async (fileStoreId) => {\n setProfilePic(fileStoreId);\n\n const thumbnails = fileStoreId ? await getThumbnails([fileStoreId], stateId) : null;\n\n setProfileImg(thumbnails?.thumbs[0]);\n\n closeFileUploadDrawer();\n };\n\n const getThumbnails = async (ids, tenantId) => {\n const res = await Digit.UploadServices.Filefetch(ids, tenantId);\n if (res.data.fileStoreIds && res.data.fileStoreIds.length !== 0) {\n return {\n thumbs: res.data.fileStoreIds.map((o) => o.url.split(\",\")[3]),\n images: res.data.fileStoreIds.map((o) => Digit.Utils.getFileUrl(o.url)),\n };\n } else {\n return null;\n }\n };\n\n if (loading || isValidationConfigLoading) return <Loader></Loader>;\n\n // ... (RENDER JSX FROM NEW FILE) ...\n return (\n <div className={`user-profile ${userType === \"citizen\" ? \"citizen\" : \"employee\"}`}>\n <section style={{ margin: userType === \"citizen\" || isMobile ? \"8px\" : \"0px\" }}>\n {userType === \"citizen\" || isMobile ? (\n <BackLink onClick={() => navigate(-1)} />\n ) : (\n <BreadCrumb\n style={{ marginTop: \"0rem\", marginBottom: \"1.5rem\" }}\n crumbs={[\n {\n internalLink: isMultiRootTenant ? `/${window?.contextPath}/employee/sandbox/landing` : `/${window?.contextPath}/employee`,\n content: t(\"ES_COMMON_HOME\"),\n show: true,\n },\n {\n internalLink: `/${window?.contextPath}/employee/user/profile`,\n content: t(\"ES_COMMON_PAGE_1\"),\n show: url.includes(\"/user/profile\"),\n },\n ]}\n />\n )}\n </section>\n <div\n style={{\n display: \"flex\",\n flex: 1,\n flexDirection: windowWidth < 768 || userType === \"citizen\" ? \"column\" : \"row\",\n margin: userType === \"citizen\" ? \"8px\" : \"0px\",\n gap: userType === \"citizen\" ? \"\" : \"0 24px\",\n boxShadow: userType === \"citizen\" ? \"1px 1px 4px 0px rgba(0,0,0,0.2)\" : \"\",\n background: userType === \"citizen\" ? \"white\" : \"\",\n borderRadius: userType === \"citizen\" ? \"4px\" : \"\",\n maxWidth: userType === \"citizen\" ? \"960px\" : \"\",\n }}\n >\n <section\n style={{\n position: \"relative\",\n display: \"flex\",\n flex: userType === \"citizen\" ? 1 : 2.5,\n justifyContent: \"center\",\n alignItems: \"center\",\n maxWidth: \"100%\",\n // height: \"376px\",\n borderRadius: \"4px\",\n boxShadow: userType === \"citizen\" ? \"\" : \"1px 1px 4px 0px rgba(0,0,0,0.2)\",\n border: `${userType === \"citizen\" ? \"8px\" : \"24px\"} solid #fff`,\n background: \"#EEEEEE\",\n padding: userType === \"citizen\" ? \"8px\" : \"16px\",\n }}\n >\n <div\n style={{\n position: \"relative\",\n height: userType === \"citizen\" ? \"114px\" : \"150px\",\n width: userType === \"citizen\" ? \"114px\" : \"150px\",\n margin: \"16px\",\n }}\n >\n <ImageComponent\n style={{\n margin: \"auto\",\n borderRadius: \"300px\",\n justifyContent: \"center\",\n height: \"100%\",\n width: \"100%\",\n }}\n src={!profileImg || profileImg === \"\" ? defaultImage : profileImg}\n alt=\"Profile Image\"\n />\n\n <button\n style={{\n position: \"absolute\",\n left: \"50%\",\n bottom: \"-24px\",\n transform: \"translateX(-50%)\",\n }}\n onClick={onClickAddPic}\n >\n <CameraIcon />\n </button>\n </div>\n </section>\n <section\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n flex: userType === \"citizen\" ? 1 : 7.5,\n width: \"100%\",\n borderRadius: \"4px\",\n height: \"fit-content\",\n boxShadow: userType === \"citizen\" ? \"\" : \"1px 1px 4px 0px rgba(0,0,0,0.2)\",\n background: \"white\",\n padding: userType === \"citizen\" ? \"8px\" : \"24px\",\n paddingBottom: \"20px\",\n }}\n >\n {userType === \"citizen\" ? (\n <React.Fragment>\n <LabelFieldPair>\n <CardLabel className=\"user-profile\" style={editScreen ? { color: \"#B1B4B6\" } : {}}>\n {`${t(\"CORE_COMMON_PROFILE_NAME\")}`}*\n </CardLabel>\n <div style={{ width: \"100%\", maxWidth: \"960px\" }}>\n <TextInput\n t={t}\n style={{ width: \"100%\" }}\n type={\"text\"}\n isMandatory={false}\n name=\"name\"\n value={name}\n onChange={(e) => setUserName(e.target.value)}\n {...(validation = {\n isRequired: true,\n pattern:\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.name || defaultValidationConfig?.UserProfileValidationConfig?.[0]?.name,\n type: \"tel\",\n title: t(\"CORE_COMMON_PROFILE_NAME_ERROR_MESSAGE\"),\n })}\n disable={editScreen}\n />\n {/* {errors?.userName && (\n <CardLabelError>\n {\" \"}\n {t(errors?.userName?.message)}{\" \"}\n </CardLabelError>\n )} */}\n {errors?.userName && (\n <ErrorMessage\n message={t(errors?.userName?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair>\n <CardLabel className=\"user-profile\" style={editScreen ? { color: \"#B1B4B6\" } : {}}>{`${t(\"CORE_COMMON_PROFILE_GENDER\")}`}</CardLabel>\n <Dropdown\n style={{ width: \"100%\", fontSize: \"1rem\" }}\n className=\"form-field profileDropdown\"\n selected={gender?.length === 1 ? gender[0] : gender}\n disable={gender?.length === 1 || editScreen}\n option={menu}\n select={setGenderName}\n value={gender}\n optionKey=\"code\"\n t={t}\n name=\"gender\"\n />\n </LabelFieldPair>\n\n <LabelFieldPair>\n <CardLabel className=\"user-profile\" style={editScreen ? { color: \"#B1B4B6\" } : {}}>{`${t(\"CORE_COMMON_PROFILE_EMAIL\")}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n style={{ width: \"100%\" }}\n type={\"email\"}\n isMandatory={false}\n optionKey=\"i18nKey\"\n name=\"email\"\n value={email}\n onChange={(e) => setUserEmailAddress(e.target.value)}\n disabled={editScreen}\n />\n {errors?.emailAddress && (\n <ErrorMessage\n message={t(errors?.emailAddress?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <button\n onClick={updateProfile}\n style={{\n marginTop: \"24px\",\n backgroundColor: \"#c84c0e\",\n width: \"100%\",\n height: \"40px\",\n color: \"white\",\n\n maxWidth: isMobile ? \"100%\" : \"240px\",\n borderBottom: \"1px solid black\",\n }}\n >\n {t(\"CORE_COMMON_SAVE\")}\n </button>\n </React.Fragment>\n ) : (\n <React.Fragment>\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel className=\"profile-label-margin\" style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}>\n {`${t(\"CORE_COMMON_PROFILE_NAME\")}`}*\n </CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"text\"}\n isMandatory={false}\n name=\"name\"\n value={name}\n onChange={(e) => setUserName(e.target.value)}\n placeholder=\"Enter Your Name\"\n {...(validation = {\n isRequired: true,\n pattern:\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.name || defaultValidationConfig?.UserProfileValidationConfig?.[0]?.name,\n type: \"text\",\n title: t(\"CORE_COMMON_PROFILE_NAME_ERROR_MESSAGE\"),\n })}\n disabled={editScreen}\n />\n {errors?.userName && (\n <ErrorMessage\n message={t(errors?.userName?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel className=\"profile-label-margin\" style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}>{`${t(\n \"CORE_COMMON_PROFILE_GENDER\"\n )}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <Dropdown\n className=\"profileDropdown\"\n selected={gender?.length === 1 ? gender[0] : gender}\n disable={gender?.length === 1 || editScreen}\n option={menu}\n select={setGenderName}\n value={gender}\n optionKey=\"code\"\n t={t}\n name=\"gender\"\n />\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel className=\"profile-label-margin\" style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}>{`${t(\n \"CORE_COMMON_PROFILE_CITY\"\n )}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"text\"}\n isMandatory={false}\n name=\"city\"\n value={t(Digit.Utils.locale.getTransformedLocale(`TENANT_TENANTS_${tenant}`))}\n onChange={(e) => setCity(e.target.value)}\n placeholder=\"Enter Your City Name\"\n {...(validation = {\n isRequired: true,\n // pattern: \"^[a-zA-Z-.`' ]*$\",\n type: \"text\",\n title: t(\"CORE_COMMON_PROFILE_CITY_ERROR_MESSAGE\"),\n })}\n disabled={true}\n />\n <ErrorMessage />\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel className=\"profile-label-margin\" style={{ width: \"300px\" }}>{`${t(\"CORE_COMMON_PROFILE_MOBILE_NUMBER\")}*`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <MobileNumber\n value={mobileNumber}\n style={{ width: \"100%\" }}\n name=\"mobileNumber\"\n placeholder=\"Enter a valid Mobile No.\"\n onChange={(value) => setUserMobileNumber(value)}\n disable={Digit.Utils.getMultiRootTenant() ? false : true}\n {...{\n required: true,\n pattern:\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.mobileNumber ||\n defaultValidationConfig?.UserProfileValidationConfig?.[0]?.mobileNumber,\n type: \"tel\",\n title: t(\"CORE_COMMON_PROFILE_MOBILE_NUMBER_INVALID\"),\n }}\n />\n {errors?.mobileNumber && (\n <ErrorMessage\n message={t(errors?.mobileNumber?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel className=\"profile-label-margin\" style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}>{`${t(\n \"CORE_COMMON_PROFILE_EMAIL\"\n )}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"email\"}\n isMandatory={false}\n placeholder={t(\"EMAIL_VALIDATION\")}\n optionKey=\"i18nKey\"\n name=\"email\"\n value={email}\n onChange={(e) => setUserEmailAddress(e.target.value)}\n disabled={Digit.Utils.getMultiRootTenant() ? true : editScreen}\n />\n {errors?.emailAddress && (\n <ErrorMessage\n message={t(errors?.emailAddress?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair>\n <div style={{ width: \"100%\" }}>\n {changepassword == false && !Digit.Utils.getOTPBasedLogin() ? (\n <Button\n label={t(\"CORE_COMMON_CHANGE_PASSWORD\")}\n variation={\"teritiary\"}\n onClick={TogleforPassword}\n style={{ paddingLeft: \"20rem\" }}\n ></Button>\n ) : null}\n {changepassword ? (\n <div style={{ marginTop: \"10px\" }}>\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel\n className=\"profile-label-margin\"\n style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}\n >{`${t(\"CORE_COMMON_PROFILE_CURRENT_PASSWORD\")}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"password\"}\n isMandatory={false}\n name=\"name\"\n pattern={\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.password ||\n defaultValidationConfig?.UserProfileValidationConfig?.[0]?.password\n }\n onChange={(e) => setUserCurrentPassword(e?.target?.value)}\n disabled={editScreen}\n />\n {errors?.currentPassword && (\n <ErrorMessage\n message={t(errors?.currentPassword?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel\n className=\"profile-label-margin\"\n style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}\n >{`${t(\"CORE_COMMON_PROFILE_NEW_PASSWORD\")}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"password\"}\n isMandatory={false}\n name=\"name\"\n pattern={\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.password ||\n defaultValidationConfig?.UserProfileValidationConfig?.[0]?.password\n }\n onChange={(e) => setUserNewPassword(e?.target?.value)}\n disabled={editScreen}\n />\n {errors?.newPassword && (\n <ErrorMessage\n message={t(errors?.newPassword?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel\n className=\"profile-label-margin\"\n style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}\n >{`${t(\"CORE_COMMON_PROFILE_CONFIRM_PASSWORD\")}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"password\"}\n isMandatory={false}\n name=\"name\"\n pattern={\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.password ||\n defaultValidationConfig?.UserProfileValidationConfig?.[0]?.password\n }\n onChange={(e) => setUserConfirmPassword(e?.target?.value)}\n disabled={editScreen}\n />\n {errors?.confirmPassword && (\n <ErrorMessage\n message={t(errors?.confirmPassword?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n </div>\n ) : (\n \"\"\n )}\n </div>\n </LabelFieldPair>\n {userType === \"employee\" && isMobile ? (\n <button\n onClick={updateProfile}\n style={{\n marginTop: \"24px\",\n backgroundColor: \"#c84c0e\",\n width: \"100%\",\n height: \"40px\",\n color: \"white\",\n maxWidth: isMobile ? \"100%\" : \"240px\",\n borderBottom: \"1px solid black\",\n fontWeight: \"700\",\n fontSize: \"17px\",\n }}\n >\n {t(\"CORE_COMMON_SAVE\")}\n </button>\n ) : null}\n </React.Fragment>\n )}\n </section>\n </div>\n\n {userType === \"employee\" && !isMobile ? (\n <Footer actionFields={[<SubmitBar t={t} label={t(\"CORE_COMMON_SAVE\")} onSubmit={updateProfile} />]} className=\"\" setactionFieldsToRight />\n ) : null}\n {toast && (\n <Toast\n type={toast.key}\n label={t(toast.key === \"success\" ? `CORE_COMMON_PROFILE_UPDATE_SUCCESS` : toast.action)}\n onClose={() => setToast(null)}\n style={{ maxWidth: \"670px\" }}\n />\n )}\n\n {openUploadSlide == true ? (\n <UploadDrawer\n setProfilePic={setFileStoreId}\n closeDrawer={closeFileUploadDrawer}\n userType={userType}\n removeProfilePic={removeProfilePic}\n showToast={showToast}\n />\n ) : (\n \"\"\n )}\n </div>\n );\n};\n\nexport default IndividualUserProfile;","import { PageBasedInput, Loader, RadioButtons, CardHeader } from \"@egovernments/digit-ui-components\";\nimport React, { useMemo } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\n\nconst LanguageSelection = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n\n const { data: { languages, stateInfo } = {}, isLoading } = Digit.Hooks.useStore.getInitData();\n const selectedLanguage = Digit.StoreData.getCurrentLanguage();\n\n const texts = useMemo(\n () => ({\n header: t(\"CS_COMMON_CHOOSE_LANGUAGE\"),\n submitBarLabel: t(\"CORE_COMMON_CONTINUE\"),\n }),\n [t]\n );\n\n const RadioButtonProps = useMemo(\n () => ({\n options: languages,\n optionsKey: \"label\",\n additionalWrapperClass: \"digit-reverse-radio-selection-wrapper\",\n onSelect: (language) => Digit.LocalizationService.changeLanguage(language.value, stateInfo.code),\n selectedOption: languages?.filter((i) => i.value === selectedLanguage)[0],\n }),\n [selectedLanguage, languages]\n );\n\n function onSubmit() {\n navigate(`/${window?.contextPath}/citizen/select-location`);\n }\n\n return isLoading ? (\n <Loader />\n ) : (\n <div className=\"selection-card-wrapper\">\n <PageBasedInput texts={texts} onSubmit={onSubmit}>\n <CardHeader>{t(\"CS_COMMON_CHOOSE_LANGUAGE\")}</CardHeader>\n <RadioButtons {...RadioButtonProps} />\n </PageBasedInput>\n </div>\n );\n};\n\nexport default LanguageSelection;\n","import { BackLink } from \"@egovernments/digit-ui-components\";\nimport { CardHeader, CardLabelError, PageBasedInput, SearchOnRadioButtons } from \"@egovernments/digit-ui-react-components\";\nimport React, { useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate, useLocation } from \"react-router-dom\";\n\nconst LocationSelection = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const location = useLocation();\nconst {\n data: { stateInfo, uiHomePage } = {},\n isLoading: initisLoading,\n} = Digit.Hooks.useStore.getInitData();\n\nconst redirectURL = uiHomePage?.redirectURL;\n\nconst { data: cities, isLoading } = Digit.Hooks.useTenants();\n\n\n const [selectedCity, setSelectedCity] = useState(() => ({ code: Digit.ULBService.getCitizenCurrentTenant(true) }));\n const [showError, setShowError] = useState(false);\n\n const texts = useMemo(\n () => ({\n header: t(\"CS_COMMON_CHOOSE_LOCATION\"),\n submitBarLabel: t(\"CORE_COMMON_CONTINUE\"),\n }),\n [t]\n );\n\n function selectCity(city) {\n setSelectedCity(city);\n setShowError(false);\n }\n\n const RadioButtonProps = useMemo(() => {\n return {\n options: cities,\n optionsKey:\"i18nKey\",\n additionalWrapperClass: \"digit-reverse-radio-selection-wrapper\",\n onSelect: selectCity,\n selectedOption: selectedCity,\n };\n }, [cities, t, selectedCity]);\n\n function onSubmit() {\n if (selectedCity) {\n Digit.SessionStorage.set(\"CITIZEN.COMMON.HOME.CITY\", selectedCity);\n const redirectBackTo = location.state?.redirectBackTo;\n if(redirectURL){\n navigate(`/${window?.contextPath}/citizen/${redirectURL}`);\n }\n else{\n if (redirectBackTo) {\n navigate(redirectBackTo, {replace:true});\n } else navigate(`/${window?.contextPath}/citizen`);\n }\n } else {\n setShowError(true);\n }\n }\n\n return isLoading ? (\n <loader />\n ) : (\n <div>\n <BackLink onClick={() => window.history.back()}/>\n <PageBasedInput texts={texts} onSubmit={onSubmit} className=\"location-selection-container\">\n <CardHeader>{t(\"CS_COMMON_CHOOSE_LOCATION\")}</CardHeader>\n <SearchOnRadioButtons {...RadioButtonProps} placeholder={t(\"COMMON_TABLE_SEARCH\")} />\n {showError ? <CardLabelError>{t(\"CS_COMMON_LOCATION_SELECTION_ERROR\")}</CardLabelError> : null}\n </PageBasedInput>\n </div>\n );\n};\n\nexport default LocationSelection;\n","import {\n SVG,\n Dropdown,\n LabelFieldPair,\n MobileNumber,\n TextInput,\n CardLabelError,\n BackLink,\n Loader,\n Button,\n SubmitBar,\n Footer,\n CardLabel,\n BreadCrumb,\n Toast,\n ErrorMessage,\n} from \"@egovernments/digit-ui-components\";\nimport { CameraIcon } from \"@egovernments/digit-ui-react-components\";\nimport React, { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport UploadDrawer from \"./ImageUpload/UploadDrawer\";\nimport ImageComponent from \"../../../components/ImageComponent\";\nimport IndividualUserProfile from \"./IndividualUserProfile\";\n\nconst DEFAULT_TENANT=Digit?.ULBService?.getStateId?.();\n\nconst defaultImage =\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAO4AAADUCAMAAACs0e/bAAAAM1BMVEXK0eL\" +\n \"/\" +\n \"/\" +\n \"/\" +\n \"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\";\n\nconst defaultValidationConfig = {\n tenantId: `${DEFAULT_TENANT}`,\n UserProfileValidationConfig: [\n {\n name: \"/^[a-zA-Z ]+$/i\",\n mobileNumber: \"/^[6-9]{1}[0-9]{9}$/\",\n password: \"/^([a-zA-Z0-9@#$%]{8,15})$/i\",\n },\n ],\n};\n\nconst UserProfile = ({ stateCode, userType, cityDetails }) => {\n\n // Check if individual should be used for login\n const useAnIndividual = window?.globalConfigs?.getConfig(\"USE_INDIVIDUAL_MODEL\");\n const individualServicePath = window?.globalConfigs?.getConfig(\"INDIVIDUAL_SERVICE_CONTEXT_PATH\");\n\n // If useAnIndividual exists, use IndividualLogin component\n if (useAnIndividual && individualServicePath) {\n return <IndividualUserProfile stateCode={stateCode} userType={userType} cityDetails={cityDetails} />;\n }\n \n const navigate = useNavigate();\n const { t } = useTranslation();\n const url = window.location.href;\n const stateId = Digit.ULBService.getStateId();\n const tenant = Digit.ULBService.getCurrentTenantId();\n const userInfo = Digit.UserService.getUser()?.info || {};\n const [userDetails, setUserDetails] = useState(null);\n const [name, setName] = useState(userInfo?.name ? userInfo.name : \"\");\n const [email, setEmail] = useState(userInfo?.emailId ? userInfo.emailId : \"\");\n const [gender, setGender] = useState(userDetails?.gender);\n const [city, setCity] = useState(userInfo?.permanentCity ? userInfo.permanentCity : cityDetails.name);\n const [mobileNumber, setMobileNo] = useState(userInfo?.mobileNumber ? userInfo.mobileNumber : \"\");\n const [profilePic, setProfilePic] = useState(null);\n const [profileImg, setProfileImg] = useState(\"\");\n const [openUploadSlide, setOpenUploadSide] = useState(false);\n const [changepassword, setChangepassword] = useState(false);\n const [currentPassword, setCurrentPassword] = useState(\"\");\n const [newPassword, setNewPassword] = useState(\"\");\n const [confirmPassword, setConfirmPassword] = useState(\"\");\n const [toast, setToast] = useState(null);\n const [loading, setLoading] = useState(false);\n const [windowWidth, setWindowWidth] = React.useState(window.innerWidth);\n const [errors, setErrors] = React.useState({});\n const isMobile = window.Digit.Utils.browser.isMobile();\n const isMultiRootTenant = Digit.Utils.getMultiRootTenant();\n\n const mapConfigToRegExp = (config) => {\n return (\n config?.UserProfileValidationConfig?.[0] &&\n Object.entries(config?.UserProfileValidationConfig[0]).reduce((acc, [key, value]) => {\n if (typeof value === \"string\") {\n try {\n // Checking if value looks like a regex (starts with \"/\" and ends with \"/flags\")\n if (value.startsWith(\"/\") && value.lastIndexOf(\"/\") > 0) {\n const lastSlashIndex = value.lastIndexOf(\"/\");\n const pattern = value.slice(1, lastSlashIndex); // Extracting regex pattern\n const flags = value.slice(lastSlashIndex + 1); // Extracting regex flags\n \n acc[key] = new RegExp(pattern, flags); // Converting properly\n } else {\n acc[key] = new RegExp(value); // Treating it as a normal regex pattern (no flags)\n }\n } catch (error) {\n console.error(`Error parsing regex for key \"${key}\":`, error);\n acc[key] = value; // Keeping as string if invalid regex\n }\n } else {\n acc[key] = value; // Keeping non-string values as it is\n }\n return acc;\n }, {})\n );\n };\n\n const [validationConfig, setValidationConfig] = useState(mapConfigToRegExp(defaultValidationConfig) || {});\n\n const { data: mdmsValidationData, isValidationConfigLoading } = Digit.Hooks.useCustomMDMS(\n stateCode,\n \"commonUiConfig\",\n [{ name: \"UserProfileValidationConfig\" }],\n {\n select: (data) => {\n return data?.commonUiConfig;\n },\n }\n );\n\n useEffect(() => {\n if (mdmsValidationData && mdmsValidationData?.UserProfileValidationConfig?.[0]) {\n const updatedValidationConfig = mapConfigToRegExp(mdmsValidationData);\n setValidationConfig(updatedValidationConfig);\n }\n }, [mdmsValidationData]);\n\n const getUserInfo = async () => {\n const uuid = userInfo?.uuid;\n if (uuid) {\n const usersResponse = await Digit.UserService.userSearch(tenant, { uuid: [uuid] }, {});\n usersResponse && usersResponse.user && usersResponse.user.length && setUserDetails(usersResponse.user[0]);\n }\n };\n\n React.useEffect(() => {\n const handleResize = () => setWindowWidth(window.innerWidth);\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n\n useEffect(() => {\n setLoading(true);\n\n getUserInfo();\n\n setGender({\n i18nKey: undefined,\n code: userDetails?.gender,\n value: userDetails?.gender,\n });\n\n const thumbs = userDetails?.photo?.split(\",\");\n setProfileImg(thumbs?.at(0));\n\n setLoading(false);\n }, [userDetails !== null]);\n\n let validation = {};\n const editScreen = false; // To-do: Deubug and make me dynamic or remove if not needed\n const onClickAddPic = () => setOpenUploadSide(!openUploadSlide);\n const TogleforPassword = () => setChangepassword(!changepassword);\n const setGenderName = (value) => setGender(value);\n const closeFileUploadDrawer = () => setOpenUploadSide(false);\n\n const setUserName = (value) => {\n setName(value);\n\n if (!validationConfig?.name?.test(value) || value.length === 0 || value.length > 50) {\n setErrors({\n ...errors,\n userName: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_NAME_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, userName: null });\n }\n };\n\n const setUserEmailAddress = (value) => {\n if (userInfo?.userName !== value) {\n setEmail(value);\n\n if (value.length && !(value.includes(\"@\") && value.includes(\".\"))) {\n setErrors({\n ...errors,\n emailAddress: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_EMAIL_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, emailAddress: null });\n }\n } else {\n setErrors({ ...errors, emailAddress: null });\n }\n };\n\n const setUserMobileNumber = (value) => {\n setMobileNo(value);\n\n if (userType === \"employee\" && !validationConfig?.mobileNumber?.test(value)) {\n setErrors({\n ...errors,\n mobileNumber: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_MOBILE_NUMBER_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, mobileNumber: null });\n }\n };\n\n const setUserCurrentPassword = (value) => {\n if (!validationConfig?.password.test(value)) {\n setErrors({\n ...errors,\n currentPassword: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_PASSWORD_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, currentPassword: null });\n }\n };\n\n const setUserNewPassword = (value) => {\n setNewPassword(value);\n if (!validationConfig?.password.test(value)) {\n setErrors({\n ...errors,\n newPassword: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_PASSWORD_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, newPassword: null });\n }\n };\n\n const setUserConfirmPassword = (value) => {\n setConfirmPassword(value);\n\n if (!validationConfig?.password.test(value)) {\n setErrors({\n ...errors,\n confirmPassword: {\n type: \"pattern\",\n message: \"CORE_COMMON_PROFILE_PASSWORD_INVALID\",\n },\n });\n } else {\n setErrors({ ...errors, confirmPassword: null });\n }\n };\n\n const removeProfilePic = () => {\n setProfilePic(null);\n setProfileImg(null);\n };\n\n const showToast = (type, message, duration = 5000) => {\n setToast({ key: type, action: message });\n setTimeout(() => {\n setToast(null);\n }, duration);\n };\n\n const updateProfile = async () => {\n setLoading(true);\n try {\n const requestData = {\n ...userInfo,\n name,\n gender: gender?.value,\n emailId: email,\n photo: profilePic,\n };\n\n if(name){\n setName((prev)=>prev.trim());\n }\n\n if (!validationConfig?.name.test(name) || name === \"\" || name.length > 50 || name.length < 1) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_NAME_INVALID\"),\n });\n }\n\n if (userType === \"employee\" && !validationConfig?.mobileNumber.test(mobileNumber)) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_MOBILE_NUMBER_INVALID\"),\n });\n }\n\n if (email.length && !(email.includes(\"@\") && email.includes(\".\"))) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_EMAIL_INVALID\"),\n });\n }\n const trimmedCurrentPassword = currentPassword.trim();\n const trimmedNewPassword = newPassword.trim();\n const trimmedConfirmPassword = confirmPassword.trim();\n\n // Updating state with trimmed values\n setCurrentPassword(trimmedCurrentPassword);\n setNewPassword(trimmedNewPassword);\n setConfirmPassword(trimmedConfirmPassword);\n \n\n if (changepassword && (trimmedCurrentPassword && trimmedNewPassword && trimmedConfirmPassword)) {\n if (trimmedNewPassword !== trimmedConfirmPassword) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_PASSWORD_MISMATCH\"),\n });\n }\n\n if (!(trimmedCurrentPassword.length && trimmedNewPassword.length && trimmedConfirmPassword.length)) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_PASSWORD_INVALID\"),\n });\n }\n\n if (!validationConfig?.password.test(trimmedNewPassword) && !validationConfig?.password.test(trimmedConfirmPassword)) {\n throw JSON.stringify({\n type: \"error\",\n message: t(\"CORE_COMMON_PROFILE_PASSWORD_INVALID\"),\n });\n }\n }\n\n const { responseInfo, user } = await Digit.UserService.updateUser(requestData, stateCode);\n\n if (responseInfo && responseInfo.status === \"200\") {\n const user = Digit.UserService.getUser();\n\n if (user) {\n Digit.UserService.setUser({\n ...user,\n info: {\n ...user.info,\n name,\n mobileNumber,\n emailId: email,\n permanentCity: city,\n },\n });\n }\n }\n\n if (currentPassword.length && newPassword.length && confirmPassword.length) {\n const requestData = {\n existingPassword: currentPassword,\n newPassword: newPassword,\n tenantId: tenant,\n type: \"EMPLOYEE\",\n username: userInfo?.userName,\n confirmPassword: confirmPassword,\n };\n\n if (newPassword === confirmPassword) {\n try {\n const res = await Digit.UserService.changePassword(requestData, tenant);\n\n const { responseInfo: changePasswordResponseInfo } = res;\n if (changePasswordResponseInfo?.status && changePasswordResponseInfo.status === \"200\") {\n showToast(\"success\", t(\"CORE_COMMON_PROFILE_UPDATE_SUCCESS_WITH_PASSWORD\"), 5000);\n setTimeout(() => Digit.UserService.logout(), 2000);\n } else {\n throw \"\";\n }\n } catch (error) {\n throw JSON.stringify({\n type: \"error\",\n message: error.Errors?.at(0)?.description ? error.Errors.at(0).description : \"CORE_COMMON_PROFILE_UPDATE_ERROR_WITH_PASSWORD\",\n });\n }\n } else {\n throw JSON.stringify({\n type: \"error\",\n message: \"CORE_COMMON_PROFILE_ERROR_PASSWORD_NOT_MATCH\",\n });\n }\n } else if (responseInfo?.status && responseInfo.status === \"200\") {\n showToast(\"success\", t(\"CORE_COMMON_PROFILE_UPDATE_SUCCESS\"), 5000);\n }\n } catch (error) {\n const errorObj = JSON.parse(error);\n showToast(errorObj.type, t(errorObj.message), 5000);\n }\n\n setLoading(false);\n };\n\n let menu = [];\n const { data: Menu } = Digit.Hooks.useGenderMDMS(stateId, \"common-masters\", \"GenderType\");\n Menu &&\n Menu.map((genderDetails) => {\n menu.push({\n i18nKey: `PT_COMMON_GENDER_${genderDetails.code}`,\n code: `${genderDetails.code}`,\n value: `${genderDetails.code}`,\n });\n });\n\n const setFileStoreId = async (fileStoreId) => {\n setProfilePic(fileStoreId);\n\n const thumbnails = fileStoreId ? await getThumbnails([fileStoreId], stateId) : null;\n\n setProfileImg(thumbnails?.thumbs[0]);\n\n closeFileUploadDrawer();\n };\n\n const getThumbnails = async (ids, tenantId) => {\n const res = await Digit.UploadServices.Filefetch(ids, tenantId);\n if (res.data.fileStoreIds && res.data.fileStoreIds.length !== 0) {\n return {\n thumbs: res.data.fileStoreIds.map((o) => o.url.split(\",\")[3]),\n images: res.data.fileStoreIds.map((o) => Digit.Utils.getFileUrl(o.url)),\n };\n } else {\n return null;\n }\n };\n\n if (loading || isValidationConfigLoading) return <Loader></Loader>;\n\n return (\n <div className={`user-profile ${userType === \"citizen\" ? \"citizen\" : \"employee\"}`}>\n <section style={{ margin: userType === \"citizen\" || isMobile ? \"8px\" : \"0px\" }}>\n {userType === \"citizen\" || isMobile ? (\n <BackLink onClick={() => navigate(\"/\")} />\n ) : (\n <BreadCrumb\n style={{ marginTop: \"0rem\", marginBottom: \"1.5rem\" }}\n crumbs={[\n {\n internalLink: isMultiRootTenant ? `/${window?.contextPath}/employee/sandbox/landing` : `/${window?.contextPath}/employee`,\n content: t(\"ES_COMMON_HOME\"),\n show: true,\n },\n {\n internalLink: `/${window?.contextPath}/employee/user/profile`,\n content: t(\"ES_COMMON_PAGE_1\"),\n show: url.includes(\"/user/profile\"),\n },\n ]}\n />\n )}\n </section>\n <div\n style={{\n display: \"flex\",\n flex: 1,\n flexDirection: windowWidth < 768 || userType === \"citizen\" ? \"column\" : \"row\",\n margin: userType === \"citizen\" ? \"8px\" : \"0px\",\n gap: userType === \"citizen\" ? \"\" : \"0 24px\",\n boxShadow: userType === \"citizen\" ? \"1px 1px 4px 0px rgba(0,0,0,0.2)\" : \"\",\n background: userType === \"citizen\" ? \"white\" : \"\",\n borderRadius: userType === \"citizen\" ? \"4px\" : \"\",\n maxWidth: userType === \"citizen\" ? \"960px\" : \"\",\n }}\n >\n <section\n style={{\n position: \"relative\",\n display: \"flex\",\n flex: userType === \"citizen\" ? 1 : 2.5,\n justifyContent: \"center\",\n alignItems: \"center\",\n maxWidth: \"100%\",\n // height: \"376px\",\n borderRadius: \"4px\",\n boxShadow: userType === \"citizen\" ? \"\" : \"1px 1px 4px 0px rgba(0,0,0,0.2)\",\n border: `${userType === \"citizen\" ? \"8px\" : \"24px\"} solid #fff`,\n background: \"#EEEEEE\",\n padding: userType === \"citizen\" ? \"8px\" : \"16px\",\n }}\n >\n <div\n style={{\n position: \"relative\",\n height: userType === \"citizen\" ? \"114px\" : \"150px\",\n width: userType === \"citizen\" ? \"114px\" : \"150px\",\n margin: \"16px\",\n }}\n >\n <ImageComponent\n style={{\n margin: \"auto\",\n borderRadius: \"300px\",\n justifyContent: \"center\",\n height: \"100%\",\n width: \"100%\",\n }}\n src={!profileImg || profileImg === \"\" ? defaultImage : profileImg}\n alt=\"Profile Image\"\n />\n\n <button\n style={{\n position: \"absolute\",\n left: \"50%\",\n bottom: \"-24px\",\n transform: \"translateX(-50%)\",\n }}\n onClick={onClickAddPic}\n >\n <CameraIcon />\n </button>\n </div>\n </section>\n <section\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n flex: userType === \"citizen\" ? 1 : 7.5,\n width: \"100%\",\n borderRadius: \"4px\",\n height: \"fit-content\",\n boxShadow: userType === \"citizen\" ? \"\" : \"1px 1px 4px 0px rgba(0,0,0,0.2)\",\n background: \"white\",\n padding: userType === \"citizen\" ? \"8px\" : \"24px\",\n paddingBottom: \"20px\",\n }}\n >\n {userType === \"citizen\" ? (\n <React.Fragment>\n <LabelFieldPair>\n <CardLabel className=\"user-profile\" style={editScreen ? { color: \"#B1B4B6\" } : {}}>\n {`${t(\"CORE_COMMON_PROFILE_NAME\")}`}*\n </CardLabel>\n <div style={{ width: \"40rem\", maxWidth: \"960px\" }}>\n <TextInput\n t={t}\n style={{ width: \"100%\" }}\n type={\"text\"}\n isMandatory={false}\n name=\"name\"\n value={name}\n onChange={(e) => setUserName(e.target.value)}\n {...(validation = {\n isRequired: true,\n pattern:\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.name || defaultValidationConfig?.UserProfileValidationConfig?.[0]?.name,\n type: \"tel\",\n title: t(\"CORE_COMMON_PROFILE_NAME_ERROR_MESSAGE\"),\n })}\n disable={editScreen}\n />\n {/* {errors?.userName && (\n <CardLabelError>\n {\" \"}\n {t(errors?.userName?.message)}{\" \"}\n </CardLabelError>\n )} */}\n {errors?.userName && (\n <ErrorMessage\n message={t(errors?.userName?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair>\n <CardLabel className=\"user-profile\" style={editScreen ? { color: \"#B1B4B6\" } : {}}>{`${t(\"CORE_COMMON_PROFILE_GENDER\")}`}</CardLabel>\n <Dropdown\n style={{ width: \"40rem\", fontSize: \"1rem\" }}\n className=\"form-field profileDropdown\"\n selected={gender?.length === 1 ? gender[0] : gender}\n disable={gender?.length === 1 || editScreen}\n option={menu}\n select={setGenderName}\n value={gender}\n optionKey=\"code\"\n t={t}\n name=\"gender\"\n />\n </LabelFieldPair>\n\n <LabelFieldPair>\n <CardLabel className=\"user-profile\" style={editScreen ? { color: \"#B1B4B6\" } : {}}>{`${t(\"CORE_COMMON_PROFILE_EMAIL\")}`}</CardLabel>\n <div style={{ width: \"40rem\" }}>\n <TextInput\n t={t}\n style={{ width: \"100%\" }}\n type={\"email\"}\n isMandatory={false}\n optionKey=\"i18nKey\"\n name=\"email\"\n value={email}\n onChange={(e) => setUserEmailAddress(e.target.value)}\n disabled={editScreen}\n />\n {errors?.emailAddress && (\n <ErrorMessage\n message={t(errors?.emailAddress?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <button\n onClick={updateProfile}\n style={{\n marginTop: \"24px\",\n backgroundColor: \"#c84c0e\",\n width: \"100%\",\n height: \"40px\",\n color: \"white\",\n\n maxWidth: isMobile ? \"100%\" : \"240px\",\n borderBottom: \"1px solid black\",\n }}\n >\n {t(\"CORE_COMMON_SAVE\")}\n </button>\n </React.Fragment>\n ) : (\n <React.Fragment>\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel className=\"profile-label-margin\" style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}>\n {`${t(\"CORE_COMMON_PROFILE_NAME\")}`}*\n </CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"text\"}\n isMandatory={false}\n name=\"name\"\n value={name}\n onChange={(e) => setUserName(e.target.value)}\n placeholder=\"Enter Your Name\"\n {...(validation = {\n isRequired: true,\n pattern:\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.name || defaultValidationConfig?.UserProfileValidationConfig?.[0]?.name,\n type: \"text\",\n title: t(\"CORE_COMMON_PROFILE_NAME_ERROR_MESSAGE\"),\n })}\n disabled={editScreen}\n />\n {errors?.userName && (\n <ErrorMessage\n message={t(errors?.userName?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel className=\"profile-label-margin\" style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}>{`${t(\n \"CORE_COMMON_PROFILE_GENDER\"\n )}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <Dropdown\n className=\"profileDropdown\"\n selected={gender?.length === 1 ? gender[0] : gender}\n disable={gender?.length === 1 || editScreen}\n option={menu}\n select={setGenderName}\n value={gender}\n optionKey=\"code\"\n t={t}\n name=\"gender\"\n />\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel className=\"profile-label-margin\" style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}>{`${t(\n \"CORE_COMMON_PROFILE_CITY\"\n )}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"text\"}\n isMandatory={false}\n name=\"city\"\n value={t(Digit.Utils.locale.getTransformedLocale(`TENANT_TENANTS_${tenant}`))}\n onChange={(e) => setCity(e.target.value)}\n placeholder=\"Enter Your City Name\"\n {...(validation = {\n isRequired: true,\n // pattern: \"^[a-zA-Z-.`' ]*$\",\n type: \"text\",\n title: t(\"CORE_COMMON_PROFILE_CITY_ERROR_MESSAGE\"),\n })}\n disabled={true}\n />\n <ErrorMessage />\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel className=\"profile-label-margin\" style={{ width: \"300px\" }}>{`${t(\"CORE_COMMON_PROFILE_MOBILE_NUMBER\")}*`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <MobileNumber\n value={mobileNumber}\n style={{ width: \"100%\" }}\n name=\"mobileNumber\"\n placeholder=\"Enter a valid Mobile No.\"\n onChange={(value) => setUserMobileNumber(value)}\n disable={Digit.Utils.getMultiRootTenant() ? false : true}\n {...{\n required: true,\n pattern:\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.mobileNumber ||\n defaultValidationConfig?.UserProfileValidationConfig?.[0]?.mobileNumber,\n type: \"tel\",\n title: t(\"CORE_COMMON_PROFILE_MOBILE_NUMBER_INVALID\"),\n }}\n />\n {errors?.mobileNumber && (\n <ErrorMessage\n message={t(errors?.mobileNumber?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel className=\"profile-label-margin\" style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}>{`${t(\n \"CORE_COMMON_PROFILE_EMAIL\"\n )}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"email\"}\n isMandatory={false}\n placeholder={t(\"EMAIL_VALIDATION\")}\n optionKey=\"i18nKey\"\n name=\"email\"\n value={email}\n onChange={(e) => setUserEmailAddress(e.target.value)}\n disabled={Digit.Utils.getMultiRootTenant() ? true : editScreen}\n />\n {errors?.emailAddress && (\n <ErrorMessage\n message={t(errors?.emailAddress?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair>\n <div style={{ width: \"100%\" }}>\n {changepassword == false && !Digit.Utils.getOTPBasedLogin() ? (\n <Button\n label={t(\"CORE_COMMON_CHANGE_PASSWORD\")}\n variation={\"teritiary\"}\n onClick={TogleforPassword}\n style={{ paddingLeft: \"0rem\" }}\n ></Button>\n ) : null}\n {changepassword ? (\n <div style={{ marginTop: \"10px\" }}>\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel\n className=\"profile-label-margin\"\n style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}\n >{`${t(\"CORE_COMMON_PROFILE_CURRENT_PASSWORD\")}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"password\"}\n isMandatory={false}\n name=\"name\"\n pattern={\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.password ||\n defaultValidationConfig?.UserProfileValidationConfig?.[0]?.password\n }\n onChange={(e) => setUserCurrentPassword(e?.target?.value)}\n disabled={editScreen}\n />\n {errors?.currentPassword && (\n <ErrorMessage\n message={t(errors?.currentPassword?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel\n className=\"profile-label-margin\"\n style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}\n >{`${t(\"CORE_COMMON_PROFILE_NEW_PASSWORD\")}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"password\"}\n isMandatory={false}\n name=\"name\"\n pattern={\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.password ||\n defaultValidationConfig?.UserProfileValidationConfig?.[0]?.password\n }\n onChange={(e) => setUserNewPassword(e?.target?.value)}\n disabled={editScreen}\n />\n {errors?.newPassword && (\n <ErrorMessage\n message={t(errors?.newPassword?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n\n <LabelFieldPair style={{ display: \"flex\" }}>\n <CardLabel\n className=\"profile-label-margin\"\n style={editScreen ? { color: \"#B1B4B6\", width: \"300px\" } : { width: \"300px\" }}\n >{`${t(\"CORE_COMMON_PROFILE_CONFIRM_PASSWORD\")}`}</CardLabel>\n <div style={{ width: \"100%\" }}>\n <TextInput\n t={t}\n type={\"password\"}\n isMandatory={false}\n name=\"name\"\n pattern={\n mdmsValidationData?.UserProfileValidationConfig?.[0]?.password ||\n defaultValidationConfig?.UserProfileValidationConfig?.[0]?.password\n }\n onChange={(e) => setUserConfirmPassword(e?.target?.value)}\n disabled={editScreen}\n />\n {errors?.confirmPassword && (\n <ErrorMessage\n message={t(errors?.confirmPassword?.message)}\n truncateMessage={true}\n maxLength={256}\n className=\"\"\n wrapperClassName=\"\"\n showIcon={true}\n />\n )}\n </div>\n </LabelFieldPair>\n </div>\n ) : (\n \"\"\n )}\n </div>\n </LabelFieldPair>\n {userType === \"employee\" && isMobile ? (\n <button\n onClick={updateProfile}\n style={{\n marginTop: \"24px\",\n backgroundColor: \"#c84c0e\",\n width: \"100%\",\n height: \"40px\",\n color: \"white\",\n maxWidth: isMobile ? \"100%\" : \"240px\",\n borderBottom: \"1px solid black\",\n fontWeight: \"700\",\n fontSize: \"17px\",\n }}\n >\n {t(\"CORE_COMMON_SAVE\")}\n </button>\n ) : null}\n </React.Fragment>\n )}\n </section>\n </div>\n\n {userType === \"employee\" && !isMobile ? (\n <Footer actionFields={[<SubmitBar t={t} label={t(\"CORE_COMMON_SAVE\")} onSubmit={updateProfile} />]} className=\"\" setactionFieldsToRight />\n ) : null}\n {toast && (\n <Toast\n type={toast.key}\n label={t(toast.key === \"success\" ? `CORE_COMMON_PROFILE_UPDATE_SUCCESS` : toast.action)}\n onClose={() => setToast(null)}\n style={{ maxWidth: \"670px\" }}\n />\n )}\n\n {openUploadSlide == true ? (\n <UploadDrawer\n setProfilePic={setFileStoreId}\n closeDrawer={closeFileUploadDrawer}\n userType={userType}\n removeProfilePic={removeProfilePic}\n showToast={showToast}\n />\n ) : (\n \"\"\n )}\n </div>\n );\n};\n\nexport default UserProfile;","import {\n Calender,\n CardBasedOptions,\n CaseIcon,\n ComplaintIcon,\n DocumentIcon,\n HomeIcon,\n OBPSIcon,\n PTIcon,\n Loader,\n WhatsNewCard,\n} from \"@egovernments/digit-ui-react-components\";\nimport React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport ImageComponent from \"../../../components/ImageComponent\";\n\nconst Home = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const tenantId = Digit.Utils.getMultiRootTenant() ? Digit.ULBService.getStateId() : Digit.ULBService.getCitizenCurrentTenant(true);\n const { data: { stateInfo, uiHomePage } = {}, isLoading } = Digit.Hooks.useStore.getInitData();\n let isMobile = window.Digit.Utils.browser.isMobile();\n\n const conditionsToDisableNotificationCountTrigger = () => {\n if (Digit.UserService?.getUser()?.info?.type === \"EMPLOYEE\") return false;\n if (!Digit.UserService?.getUser()?.access_token) return false;\n return true;\n };\n\n const { data: EventsData, isLoading: EventsDataLoading } = Digit.Hooks.useEvents({\n tenantId,\n variant: \"whats-new\",\n config: {\n enabled: conditionsToDisableNotificationCountTrigger(),\n },\n });\n\n if (!tenantId) {\n navigate(`/${window?.contextPath}/citizen/select-language`);\n }\n\n const appBannerWebObj = uiHomePage?.appBannerDesktop;\n const appBannerMobObj = uiHomePage?.appBannerMobile;\n const citizenServicesObj = uiHomePage?.citizenServicesCard;\n const infoAndUpdatesObj = uiHomePage?.informationAndUpdatesCard;\n const whatsAppBannerWebObj = uiHomePage?.whatsAppBannerDesktop;\n const whatsAppBannerMobObj = uiHomePage?.whatsAppBannerMobile;\n const whatsNewSectionObj = uiHomePage?.whatsNewSection;\n const redirectURL = uiHomePage?.redirectURL;\n /* configure redirect URL only if it is required to overide the default citizen home screen */\n if (redirectURL) {\n navigate(`/${window?.contextPath}/citizen/${redirectURL}`);\n }\n /* fix for sanitation ui & sandbox*/\n if (window?.location?.href?.includes?.(\"sanitation-ui\") || window?.location?.href?.includes?.(\"sandbox-ui\")) {\n navigate(`/${window?.contextPath}/citizen/all-services`);\n }\n\n const handleClickOnWhatsAppBanner = (obj) => {\n window.open(obj?.navigationUrl);\n };\n\n const allCitizenServicesProps = {\n header: t(citizenServicesObj?.headerLabel),\n sideOption: {\n name: t(citizenServicesObj?.sideOption?.name),\n onClick: () =>\n navigate(citizenServicesObj?.sideOption?.navigationUrl),\n },\n options: [\n {\n name: t(citizenServicesObj?.props?.[0]?.label),\n Icon: <ComplaintIcon />,\n onClick: () =>\n navigate(citizenServicesObj?.props?.[0]?.navigationUrl),\n },\n {\n name: t(citizenServicesObj?.props?.[1]?.label),\n Icon: <PTIcon className=\"fill-path-primary-main\" />,\n onClick: () =>\n navigate(citizenServicesObj?.props?.[1]?.navigationUrl),\n },\n {\n name: t(citizenServicesObj?.props?.[2]?.label),\n Icon: <CaseIcon className=\"fill-path-primary-main\" />,\n onClick: () =>\n navigate(citizenServicesObj?.props?.[2]?.navigationUrl),\n },\n // {\n // name: t(\"ACTION_TEST_WATER_AND_SEWERAGE\"),\n // Icon: <DropIcon/>,\n // onClick: () => history.push(`/${window?.contextPath}/citizen`)\n // },\n {\n name: t(citizenServicesObj?.props?.[3]?.label),\n Icon: <OBPSIcon />,\n onClick: () =>\n navigate(citizenServicesObj?.props?.[3]?.navigationUrl),\n },\n ],\n styles: {\n display: \"flex\",\n flexWrap: \"wrap\",\n justifyContent: \"flex-start\",\n width: \"100%\",\n },\n };\n const allInfoAndUpdatesProps = {\n header: t(infoAndUpdatesObj?.headerLabel),\n sideOption: {\n name: t(infoAndUpdatesObj?.sideOption?.name),\n onClick: () => navigate(infoAndUpdatesObj?.sideOption?.navigationUrl),\n },\n options: [\n {\n name: t(infoAndUpdatesObj?.props?.[0]?.label),\n Icon: <HomeIcon />,\n onClick: () =>\n navigate(infoAndUpdatesObj?.props?.[0]?.navigationUrl),\n },\n {\n name: t(infoAndUpdatesObj?.props?.[1]?.label),\n Icon: <Calender />,\n onClick: () =>\n navigate(infoAndUpdatesObj?.props?.[1]?.navigationUrl),\n },\n {\n name: t(infoAndUpdatesObj?.props?.[2]?.label),\n Icon: <DocumentIcon />,\n onClick: () =>\n navigate(infoAndUpdatesObj?.props?.[2]?.navigationUrl),\n },\n {\n name: t(infoAndUpdatesObj?.props?.[3]?.label),\n Icon: <DocumentIcon />,\n onClick: () =>\n navigate(infoAndUpdatesObj?.props?.[3]?.navigationUrl),\n },\n // {\n // name: t(\"CS_COMMON_HELP\"),\n // Icon: <HelpIcon/>\n // }\n ],\n styles: {\n display: \"flex\",\n flexWrap: \"wrap\",\n justifyContent: \"flex-start\",\n width: \"100%\",\n },\n };\n\n return isLoading ? (\n <Loader />\n ) : (\n <div className=\"HomePageContainer\">\n {/* <div className=\"SideBarStatic\">\n <StaticCitizenSideBar />\n </div> */}\n <div className=\"HomePageWrapper\">\n {\n <div className=\"BannerWithSearch\">\n {isMobile ? (\n <ImageComponent src={appBannerMobObj?.bannerUrl} alt=\"Banner Image\" />\n ) : (\n <ImageComponent src={appBannerWebObj?.bannerUrl} alt=\"Banner Image\" />\n )}\n {/* <div className=\"Search\">\n <StandaloneSearchBar placeholder={t(\"CS_COMMON_SEARCH_PLACEHOLDER\")} />\n </div> */}\n <div className=\"ServicesSection\">\n <CardBasedOptions style={{ marginTop: \"-30px\" }} {...allCitizenServicesProps} />\n <CardBasedOptions style={isMobile ? {} : { marginTop: \"-30px\" }} {...allInfoAndUpdatesProps} />\n </div>\n </div>\n }\n\n {(whatsAppBannerMobObj || whatsAppBannerWebObj) && (\n <div className=\"WhatsAppBanner\">\n {isMobile ? (\n <ImageComponent\n src={whatsAppBannerMobObj?.bannerUrl}\n onClick={() => handleClickOnWhatsAppBanner(whatsAppBannerMobObj)}\n alt=\"Whatsapp Banner\"\n />\n ) : (\n <ImageComponent\n src={whatsAppBannerWebObj?.bannerUrl}\n onClick={() => handleClickOnWhatsAppBanner(whatsAppBannerWebObj)}\n alt=\"Whatsapp Banner\"\n />\n )}\n </div>\n )}\n\n {conditionsToDisableNotificationCountTrigger() ? (\n EventsDataLoading ? (\n <Loader />\n ) : (\n <div className=\"WhatsNewSection\">\n <div className=\"headSection\">\n <h2>{t(whatsNewSectionObj?.headerLabel)}</h2>\n <p onClick={() => navigate(whatsNewSectionObj?.sideOption?.navigationUrl)}>{t(whatsNewSectionObj?.sideOption?.name)}</p>\n </div>\n <WhatsNewCard {...EventsData?.[0]} />\n </div>\n )\n ) : null}\n </div>\n </div>\n );\n};\n\nexport default Home;\n","import {\n BackButton,\n HeaderComponent,\n Loader,\n CloseSvg,\n DownloadImgIcon,\n PDFSvg,\n} from \"@egovernments/digit-ui-components\";\nimport { CustomButton } from \"@egovernments/digit-ui-react-components\";\nimport React, { Fragment, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nconst HowItWorks = ({ module }) => {\n const user = Digit.UserService.getUser();\n const tenantId =\n user?.info?.tenantId || Digit.ULBService.getCurrentTenantId();\n const { t } = useTranslation();\n const storeData = Digit.SessionStorage.get(\"initData\");\n const stateInfo = storeData.stateInfo;\n const selectedLanguage = Digit.StoreData.getCurrentLanguage();\n const [selected, setselected] = useState(selectedLanguage);\n const handleChangeLanguage = (language) => {\n setselected(language.value);\n Digit.LocalizationService.changeLanguage(language.value, stateInfo.code);\n };\n const [videoPlay, setVideoPlay] = useState(false);\n const [vidSrc, setVidSrc] = useState(\"\");\n\n const ViDSvg = () => (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 24C5.38053 24 0 18.6143 0 12C0 5.38054 5.38053 1.90735e-06 12 1.90735e-06C18.6143 1.90735e-06 24 5.38054 24 12C24 18.6143 18.6143 24 12 24ZM16.3488 10.7852L11.3855 7.25251C11.1263 7.0701 10.8238 6.97889 10.5214 6.97889C10.291 6.97889 10.0557 7.03172 9.83976 7.14202C9.34054 7.40118 9.02857 7.91006 9.02857 8.46694L9.02877 15.5323C9.02877 16.0892 9.34076 16.5979 9.83996 16.8572C10.3344 17.1116 10.9296 17.0732 11.3857 16.7467L16.349 13.214C16.7426 12.9356 16.9778 12.4795 16.9778 11.9996C16.9776 11.5197 16.7426 11.0636 16.3489 10.7852L16.3488 10.7852Z\"\n fill=\"white\"\n />\n </svg>\n );\n const onClickVideo = (vidObj) => {\n if (selected === \"hi_IN\") {\n setVidSrc(vidObj[\"hi_IN\"]);\n } else {\n setVidSrc(vidObj[\"en_IN\"]);\n }\n setVideoPlay(true);\n };\n const onClose = () => {\n setVideoPlay(false);\n };\n\n const { isLoading, data } = Digit.Hooks.useGetHowItWorksJSON(\n Digit.ULBService.getStateId()\n );\n\n const mdmsConfigResult =\n data?.MdmsRes[\"common-masters\"]?.howItWorks[0]?.[`${module}`];\n const languages = [\n {\n label: \"ENGLISH\",\n value: \"en_IN\",\n },\n {\n label: \"हिंदी\",\n value: \"hi_IN\",\n },\n ];\n\n if (isLoading) {\n return <Loader />;\n }\n return (\n <Fragment>\n <div className=\"how-it-works-page\">\n <BackButton></BackButton>\n <div className=\"how-it-works-page-header\">\n <HeaderComponent>\n {t(\n mdmsConfigResult.screenHeader\n ? mdmsConfigResult.screenHeader\n : \"HOW_IT_WORKS\"\n )}\n </HeaderComponent>\n </div>\n <div className=\"language-selector\" style={{ margin: \"10px\" }}>\n {languages.map((language, index) => (\n <div className=\"language-button-container\" key={index}>\n <CustomButton\n selected={language.value === selected}\n text={language.label}\n onClick={() => handleChangeLanguage(language)}\n ></CustomButton>\n </div>\n ))}\n </div>\n {mdmsConfigResult.videosJson.map((videos, index) => (\n <div>\n <div\n className=\"WhatsNewCard\"\n style={{\n float: \"left\",\n position: \"relative\",\n width: \"100%\",\n marginBottom: 10,\n }}\n >\n <div className=\"video-icon\" onClick={() => onClickVideo(videos)}>\n <div className=\"vid-svg\">\n <ViDSvg></ViDSvg>\n </div>\n </div>\n <div className=\"how-it-works-header-description\">\n <h2>{t(videos.headerLabel)}</h2>\n <p>{t(videos.description)}</p>\n </div>\n </div>\n </div>\n ))}\n {mdmsConfigResult.pdfHeader && mdmsConfigResult.pdfDesc && (\n <div\n className=\"WhatsNewCard\"\n style={{\n position: \"relative\",\n width: \"100%\",\n marginBottom: 10,\n display: \"inline-block\",\n }}\n >\n <div className=\"how-it-works-pdf-section\">\n <div className=\"pdf-icon-header-desc\">\n <div className=\"pdf-icon\">\n <PDFSvg></PDFSvg>\n </div>\n <div className=\"pdf-header-desc\">\n <h2>{t(mdmsConfigResult.pdfHeader)}</h2>\n <p>{t(mdmsConfigResult.pdfDesc)}</p>\n </div>\n </div>\n <div className=\"download-icon\">\n <DownloadImgIcon />\n </div>\n </div>\n </div>\n )}\n {videoPlay && (\n <div className=\"how-it-works-video-play\">\n <div className=\"close-button\">\n <CloseSvg onClick={onClose}></CloseSvg>\n </div>\n <video width={500} height={500} controls autoPlay>\n <source src={vidSrc} type=\"video/mp4\"></source>\n </video>\n </div>\n )}\n </div>\n </Fragment>\n );\n};\n\nexport default HowItWorks;\n","import { AppContainer, BackLink, Toast } from \"@egovernments/digit-ui-components\";\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Routes, Route, useLocation, useNavigate } from \"react-router-dom\";\nimport { loginSteps } from \"./config\";\nimport SelectMobileNumber from \"./SelectMobileNumber\";\nimport SelectName from \"./SelectName\";\nimport SelectOtp from \"./SelectOtp\";\n\nconst TYPE_REGISTER = { type: \"register\" };\nconst TYPE_LOGIN = { type: \"login\" };\nconst DEFAULT_USER = \"digit-user\";\nlet DEFAULT_REDIRECT_URL = `/${window?.contextPath || window?.globalConfigs?.getConfig(\"CONTEXT_PATH\")}/citizen`;\n\n/* set citizen details to enable backward compatible */\nconst setCitizenDetail = (userObject, token, tenantId) => {\n if (Digit.Utils.getMultiRootTenant()) {\n return;\n }\n let locale = JSON.parse(sessionStorage.getItem(\"Digit.initData\"))?.value?.selectedLanguage;\n localStorage.setItem(\"Citizen.tenant-id\", tenantId);\n localStorage.setItem(\"tenant-id\", tenantId);\n localStorage.setItem(\"citizen.userRequestObject\", JSON.stringify(userObject));\n localStorage.setItem(\"locale\", locale);\n localStorage.setItem(\"Citizen.locale\", locale);\n localStorage.setItem(\"token\", token);\n localStorage.setItem(\"Citizen.token\", token);\n localStorage.setItem(\"user-info\", JSON.stringify(userObject));\n localStorage.setItem(\"Citizen.user-info\", JSON.stringify(userObject));\n};\n\nconst getFromLocation = (state, searchParams) => {\n return state?.from || searchParams?.from || DEFAULT_REDIRECT_URL;\n};\n\nconst IndividualLogin = ({ stateCode, isUserRegistered = false }) => {\n const { t } = useTranslation();\n const location = useLocation();\n const navigate = useNavigate();\n const [user, setUser] = useState(null);\n const [error, setError] = useState(null);\n const [isOtpValid, setIsOtpValid] = useState(true);\n const [params, setParams] = useState(isUserRegistered ? {} : location?.state?.data);\n const [errorTO, setErrorTO] = useState(null);\n const searchParams = Digit.Hooks.useQueryParams();\n const [canSubmitName, setCanSubmitName] = useState(false);\n const [canSubmitOtp, setCanSubmitOtp] = useState(true);\n const [canSubmitNo, setCanSubmitNo] = useState(true);\n\n const individualServicePath = window?.globalConfigs?.getConfig(\"INDIVIDUAL_SERVICE_CONTEXT_PATH\");\n\n useEffect(() => {\n let errorTimeout;\n if (error) {\n if (errorTO) {\n clearTimeout(errorTO);\n setErrorTO(null);\n }\n errorTimeout = setTimeout(() => {\n setError(\"\");\n }, 5000);\n setErrorTO(errorTimeout);\n }\n return () => {\n errorTimeout && clearTimeout(errorTimeout);\n };\n }, [error]);\n\n useEffect(() => {\n if (!user) {\n return;\n }\n Digit.SessionStorage.set(\"citizen.userRequestObject\", user);\n Digit.UserService.setUser(user);\n setCitizenDetail(user?.info, user?.access_token, stateCode);\n const redirectPath = location.state?.from || DEFAULT_REDIRECT_URL;\n if (!Digit.ULBService.getCitizenCurrentTenant(true)) {\n navigate(\n `/${window?.contextPath}/citizen/select-location`,\n { state: { redirectBackTo: redirectPath }, replace: true }\n );\n } else {\n navigate(redirectPath, { replace: true });\n }\n }, [user]);\n\n const stepItems = useMemo(() =>\n loginSteps.map(\n (step) => {\n const texts = {};\n for (const key in step.texts) {\n texts[key] = t(step.texts[key]);\n }\n return { ...step, texts };\n },\n \n ), [loginSteps]\n );\n\n const getUserType = () => \"citizen\" || Digit.UserService.getType();\n\n const handleOtpChange = (otp) => {\n setParams({ ...params, otp });\n };\n\n const handleMobileChange = (event) => {\n const { value } = event.target;\n setParams({ ...params, mobileNumber: value });\n };\n\n const handleEmailChange = (event) => {\n const { value } = event.target;\n setParams({ ...params, userName: value });\n };\n\n const selectMobileNumber = async (mobileNumber) => {\n setCanSubmitNo(false);\n setParams({ ...params, ...mobileNumber });\n const data = {\n ...mobileNumber,\n tenantId: stateCode,\n userType: getUserType(),\n };\n\n const [res, err] = await sendOtp({ otp: { ...data, ...TYPE_LOGIN } });\n if (!err) {\n setCanSubmitNo(true);\n navigate(`otp`, { \n state: { \n from: getFromLocation(location.state, searchParams) \n }, \n replace: true \n });\n return;\n } else {\n setCanSubmitNo(true);\n navigate(`name`, {\n state: {\n from: getFromLocation(location.state, searchParams),\n data: data\n },\n replace: true\n });\n }\n };\n\n const selectName = async (name) => {\n setCanSubmitName(true);\n\n const userData = {\n ...params,\n ...name,\n };\n\n setParams(userData);\n\n // Call the Individual service registration API\n const registerURL = `${individualServicePath}/v1/_register`;\n\n const requestData = {\n IndividualRegister: {\n tenantId: stateCode,\n name: userData.name,\n emailId: userData.userName || \"\",\n mobileNumber: userData.mobileNumber || \"\",\n requestType: \"Register\"\n }\n };\n\n try {\n const registerResponse = await Digit.CustomService.getResponse({\n url: registerURL,\n body: requestData,\n useCache: false,\n method: \"POST\",\n userService: false,\n auth: false,\n params: {}\n });\n\n if (!registerResponse) {\n throw new Error(\"Registration API failed\");\n }\n\n setCanSubmitName(false);\n // After registration, go to OTP screen\n navigate(`otp`, {\n state: {\n from: getFromLocation(location.state, searchParams)\n },\n replace: true\n });\n\n } catch (err) {\n console.error(\"Registration error:\", err);\n setCanSubmitName(false);\n setError(t(\"REGISTRATION_FAILED\") || \"Registration failed. Please try again.\");\n }\n };\n\n const selectOtp = async () => {\n try {\n setIsOtpValid(true);\n setCanSubmitOtp(false);\n const { mobileNumber, otp, userName } = params;\n\n // Authenticate with OTP\n const requestData = {\n username: mobileNumber || userName,\n password: otp,\n tenantId: stateCode,\n userType: getUserType(),\n };\n\n const { ResponseInfo, UserRequest: info, ...tokens } = await Digit.UserService.authenticate(requestData);\n\n if (window?.globalConfigs?.getConfig(\"ENABLE_SINGLEINSTANCE\")) {\n info.tenantId = Digit.ULBService.getStateId();\n }\n\n setUser({ info, ...tokens });\n\n } catch (err) {\n setCanSubmitOtp(true);\n setIsOtpValid(false);\n setError(t(\"INVALID_OTP\") || \"Invalid OTP\");\n }\n };\n\n const resendOtp = async () => {\n if (!isUserRegistered) {\n // For registration flow, user needs to complete registration first\n setError(t(\"PLEASE_COMPLETE_REGISTRATION\") || \"Please enter the OTP sent during registration.\");\n } else {\n // For login flow, resend OTP\n const { mobileNumber, userName } = params;\n const data = {\n mobileNumber,\n userName,\n tenantId: stateCode,\n userType: getUserType(),\n };\n const [res, err] = await sendOtp({ otp: { ...data, ...TYPE_LOGIN } });\n if (err) {\n setError(t(\"OTP_RESEND_ERROR\") || \"Failed to resend OTP\");\n }\n }\n };\n\n const sendOtp = async (data) => {\n try {\n const res = await Digit.UserService.sendOtp(data, stateCode);\n return [res, null];\n } catch (err) {\n return [null, err];\n }\n };\n\n return (\n <div className=\"citizen-form-wrapper citizen-form-center\">\n <AppContainer>\n {location.pathname.includes(\"login\") ? null : <BackLink onClick={() => window.history.back()} />}\n <Routes>\n <Route\n path=\"/\" \n element={\n <SelectMobileNumber\n onSelect={selectMobileNumber}\n config={stepItems[0]}\n mobileNumber={params.mobileNumber || \"\"}\n emailId={params.userName || \"\"}\n onMobileChange={handleMobileChange}\n onEmailChange={handleEmailChange}\n canSubmit={canSubmitNo}\n showRegisterLink={isUserRegistered}\n t={t}\n />\n } \n />\n <Route \n path=\"otp\" \n element={\n <SelectOtp\n config={{ \n ...stepItems[1], \n texts: { \n ...stepItems[1].texts, \n cardText: `${stepItems[1].texts.cardText} ${params.mobileNumber || params.userName || \"\"}` \n } \n }}\n onOtpChange={handleOtpChange}\n onResend={resendOtp}\n onSelect={selectOtp}\n otp={params.otp}\n error={isOtpValid}\n canSubmit={canSubmitOtp}\n t={t}\n />\n } \n />\n <Route \n path=\"name\" \n element={\n <SelectName \n config={stepItems[2]} \n onSelect={selectName} \n t={t} \n isDisabled={canSubmitName} \n />\n } \n />\n </Routes>\n {error && <Toast type={\"error\"} label={error} onClose={() => setError(null)} />}\n </AppContainer>\n </div>\n );\n};\n\nexport default IndividualLogin;","import { InputCard, TextBlock, FieldV1, LinkLabel } from \"@egovernments/digit-ui-components\";\nimport React, { useMemo, useState } from \"react\";\n\nconst SelectMobileNumber = ({ t, onSelect, mobileNumber,emailId, onMobileChange,onEmailChange, config, canSubmit }) => {\n const [isEmail, setIsEmail] = useState(emailId? true : false);\n const [error, setError] = useState(\"\");\n\n const core_mobile_config = window?.globalConfigs?.getConfig(\"CORE_MOBILE_CONFIGS\") || {};\n const EMAIL_REGEX = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n const rawPattern = core_mobile_config?.mobileNumberPattern || \"^\\\\d+$\";\n const mobileNumberPattern = new RegExp(rawPattern);\n\n const isEmailValid = useMemo(() => EMAIL_REGEX.test(emailId), [emailId]);\n const isMobileValid = useMemo(() => mobileNumberPattern.test(mobileNumber || \"\"), [mobileNumber, mobileNumberPattern]);\n\n const handleSubmit = () => {\n if (isEmail) {\n if (!isEmailValid) {\n setError(t(\"ERR_INVALID_EMAIL\"));\n return;\n }\n onSelect({ userName: emailId });\n } else {\n if (!isMobileValid) {\n setError(t(\"ERR_INVALID_MOBILE_NUMBER\"));\n return;\n }\n onSelect({ mobileNumber });\n }\n };\n\n const handleChange = (e) => {\n const value = e.target.value;\n setError(\"\");\n if (isEmail) {\n onEmailChange(e)\n if (value && !EMAIL_REGEX.test(value)) setError(t(\"ERR_INVALID_EMAIL\"));\n } else {\n onMobileChange(e);\n if (value && !mobileNumberPattern.test(value)) setError(t(\"ERR_INVALID_MOBILE_NUMBER\"));\n }\n };\n\n const switchMode = () => {\n setIsEmail(!isEmail);\n setError(\"\");\n if(isEmail)\n onEmailChange({ target: { value: \"\" } });\n else\n onMobileChange({ target: { value: \"\" } }); // clear mobile input\n };\n\n const isDisabled = useMemo(() => {\n return isEmail ? !(isEmailValid && canSubmit) : !(isMobileValid && canSubmit);\n }, [isEmail, isEmailValid, isMobileValid, canSubmit]);\n\n const mobileViewStyles = {\n marginLeft:\"0px\",\n userSelect: \"none\",\n color: \"inherit\", \n cursor: \"pointer\", // keeps it clickable\n textDecoration: \"underline\",\n };\n\n // Responsive label\n const linkLabel = useMemo(() => {\n if (window.innerWidth <= 768) {\n return isEmail ? t(\"LOGIN_WITH_MOBILE\") : t(\"LOGIN_WITH_EMAIL\");\n }\n return isEmail ? t(\"CS_USE_MOBILE_INSTEAD\") : t(\"CS_LOGIN_REGISTER_WITH_EMAIL\");\n }, [isEmail, t]);\n\n return (\n <InputCard\n t={t}\n texts={config?.texts}\n submit\n onNext={handleSubmit}\n isDisable={isDisabled}\n >\n <div>\n <FieldV1\n key={isEmail ? \"email\" : \"mobile\"}\n withoutLabel\n charCount\n error={error}\n onChange={handleChange}\n placeholder={isEmail ? t(\"ENTER_EMAIL_PLACEHOLDER\") : t(\"ENTER_MOBILE_PLACEHOLDER\")}\n populators={{\n name: isEmail ? \"userName\" : \"mobileNumber\",\n prefix: isEmail ? \"\" : core_mobile_config?.mobilePrefix,\n validation: {\n maxlength: isEmail ? 256 : (core_mobile_config?.mobileNumberLength || 10),\n pattern: isEmail ? EMAIL_REGEX : mobileNumberPattern,\n },\n }}\n props={{ fieldStyle: { width: \"100%\" } }}\n type=\"text\"\n value={isEmail ? emailId : mobileNumber}\n />\n </div>\n\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"1rem\", marginBottom: \"1.5rem\", marginTop: \"-24px\" }}>\n <LinkLabel style={{ display: \"inline\", ...mobileViewStyles }} onClick={switchMode}>\n {linkLabel}\n </LinkLabel>\n </div>\n </InputCard>\n );\n};\n\nexport default SelectMobileNumber;","import { FormStep } from \"@egovernments/digit-ui-components\";\nimport React from \"react\";\n\nconst SelectName = ({ config, onSelect, t, isDisabled }) => {\n return <FormStep config={config} onSelect={onSelect} t={t} isDisabled={isDisabled}></FormStep>;\n};\n\nexport default SelectName;\n","import { CardText, CardLabelError, FormStep } from \"@egovernments/digit-ui-components\";\nimport React, { Fragment, useState } from \"react\";\nimport useInterval from \"../../../hooks/useInterval\";\nimport { OTPInput } from \"@egovernments/digit-ui-react-components\";\n\nconst SelectOtp = ({ config, otp, onOtpChange, onResend, onSelect, t, error, userType = \"citizen\", canSubmit }) => {\n const [timeLeft, setTimeLeft] = useState(30);\n\n useInterval(\n () => {\n setTimeLeft(timeLeft - 1);\n },\n timeLeft > 0 ? 1000 : null\n );\n\n const handleResendOtp = () => {\n onResend();\n setTimeLeft(2);\n };\n\n if (userType === \"employee\") {\n return (\n <Fragment>\n <OTPInput length={6} onChange={onOtpChange} value={otp} />\n {timeLeft > 0 ? (\n <CardText>{`${t(\"CS_RESEND_ANOTHER_OTP\")} ${timeLeft} ${t(\"CS_RESEND_SECONDS\")}`}</CardText>\n ) : (\n <p className=\"card-text-button resend-otp\" onClick={handleResendOtp}>\n {t(\"CS_RESEND_OTP\")}\n </p>\n )}\n {!error && <CardLabelError>{t(\"CS_INVALID_OTP\")}</CardLabelError>}\n </Fragment>\n );\n }\n\n return (\n <FormStep onSelect={onSelect} config={config} t={t} isDisabled={!(otp?.length === 6 && canSubmit)}>\n <OTPInput length={6} onChange={onOtpChange} value={otp} />\n {timeLeft > 0 ? (\n <CardText>{`${t(\"CS_RESEND_ANOTHER_OTP\")} ${timeLeft} ${t(\"CS_RESEND_SECONDS\")}`}</CardText>\n ) : (\n <p className=\"card-text-button\" onClick={handleResendOtp}>\n {t(\"CS_RESEND_OTP\")}\n </p>\n )}\n {!error && <CardLabelError>{t(\"CS_INVALID_OTP\")}</CardLabelError>}\n </FormStep>\n );\n};\n\nexport default SelectOtp;\n","export const loginSteps = [\n {\n texts: {\n header: \"CS_LOGIN_PROVIDE_MOBILE_NUMBER\",\n cardText: \"CS_LOGIN_TEXT\",\n nextText: \"CS_COMMONS_NEXT\",\n submitBarLabel: \"CS_COMMONS_NEXT\",\n },\n inputs: [\n {\n label: \"CORE_COMMON_MOBILE_NUMBER\",\n type: \"text\",\n name: \"mobileNumber\",\n error: \"ERR_HRMS_INVALID_MOB_NO\",\n validation: {\n required: true,\n minlength: 10,\n maxlength: 10,\n },\n },\n ],\n },\n {\n texts: {\n header: \"CS_LOGIN_OTP\",\n cardText: \"CS_LOGIN_OTP_TEXT\",\n nextText: \"CS_COMMONS_NEXT\",\n submitBarLabel: \"CS_COMMONS_NEXT\",\n },\n },\n {\n texts: {\n header: \"CS_LOGIN_PROVIDE_NAME\",\n cardText: \"CS_LOGIN_NAME_TEXT\",\n nextText: \"CS_COMMONS_NEXT\",\n submitBarLabel: \"CS_COMMONS_NEXT\",\n },\n inputs: [\n {\n label: \"CORE_COMMON_NAME\",\n type: \"text\",\n name: \"name\",\n error: \"CORE_COMMON_NAME_VALIDMSG\",\n validation: {\n required: true,\n minlength: 1,\n maxlength: 50,\n // pattern: /^[^{0-9}^\\$\\\"<>?\\\\\\\\~!@#$%^()+={}\\[\\]*,/_:;“”‘’]{1,50}$/i,\n // pattern: /^(?!\\s)[^{0-9}^\\$\\\"<>?\\\\\\\\~!@#$%^()+={}\\[\\]*,/_:;“”‘’]{1,50}(?!\\s)$/i\n pattern: \"^[A-Za-z]+( [A-Za-z]+)*$\",\n },\n },\n ],\n },\n];\n","import { AppContainer, BackLink, Toast } from \"@egovernments/digit-ui-components\";\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Routes, Route, useLocation, useNavigate } from \"react-router-dom\";\nimport { loginSteps } from \"./config\";\nimport SelectMobileNumber from \"./SelectMobileNumber\";\nimport SelectName from \"./SelectName\";\nimport SelectOtp from \"./SelectOtp\";\nimport IndividualLogin from \"./IndividualLogin\";\n\nconst TYPE_REGISTER = { type: \"register\" };\nconst TYPE_LOGIN = { type: \"login\" };\nconst DEFAULT_USER = \"digit-user\";\nconst DEFAULT_REDIRECT_URL = `/${window?.contextPath}/citizen`;\n\n/* set citizen details to enable backward compatible */\nconst setCitizenDetail = (userObject, token, tenantId) => {\n if (Digit.Utils.getMultiRootTenant()) {\n return;\n }\n let locale = JSON.parse(sessionStorage.getItem(\"Digit.initData\"))?.value?.selectedLanguage;\n localStorage.setItem(\"Citizen.tenant-id\", tenantId);\n localStorage.setItem(\"tenant-id\", tenantId);\n localStorage.setItem(\"citizen.userRequestObject\", JSON.stringify(userObject));\n localStorage.setItem(\"locale\", locale);\n localStorage.setItem(\"Citizen.locale\", locale);\n localStorage.setItem(\"token\", token);\n localStorage.setItem(\"Citizen.token\", token);\n localStorage.setItem(\"user-info\", JSON.stringify(userObject));\n localStorage.setItem(\"Citizen.user-info\", JSON.stringify(userObject));\n};\n\nconst getFromLocation = (state, searchParams) => {\n return state?.from || searchParams?.from || DEFAULT_REDIRECT_URL;\n};\n\nconst Login = ({ stateCode, isUserRegistered = true }) => {\n // Check if individual should be used for login\n const useAnIndividual = window?.globalConfigs?.getConfig(\"USE_INDIVIDUAL_MODEL\");\n const individualServicePath = window?.globalConfigs?.getConfig(\"INDIVIDUAL_SERVICE_CONTEXT_PATH\");\n\n // If useAnIndividual exists, use IndividualLogin component\n if (useAnIndividual && individualServicePath) {\n return <IndividualLogin stateCode={stateCode} isUserRegistered={isUserRegistered} />;\n }\n\n // Otherwise, continue with standard login flow\n const { t } = useTranslation();\n const location = useLocation();\n const navigate = useNavigate(); // Replaced useHistory with useNavigate\n // useRouteMatch is removed in v6. Path matching is handled by Routes/Route.\n // `path` and `url` were used for constructing sub-routes. In v6, paths are often relative.\n const [user, setUser] = useState(null);\n const [error, setError] = useState(null);\n const [isOtpValid, setIsOtpValid] = useState(true);\n const [params, setParams] = useState(isUserRegistered ? {} : location?.state?.data);\n const [errorTO, setErrorTO] = useState(null);\n const searchParams = Digit.Hooks.useQueryParams();\n const [canSubmitName, setCanSubmitName] = useState(false);\n const [canSubmitOtp, setCanSubmitOtp] = useState(true);\n const [canSubmitNo, setCanSubmitNo] = useState(true);\n\n useEffect(() => {\n let errorTimeout;\n if (error) {\n if (errorTO) {\n clearTimeout(errorTO);\n setErrorTO(null);\n }\n errorTimeout = setTimeout(() => {\n setError(\"\");\n }, 5000);\n setErrorTO(errorTimeout);\n }\n return () => {\n errorTimeout && clearTimeout(errorTimeout);\n };\n }, [error]);\n\n useEffect(() => {\n if (!user) {\n return;\n }\n Digit.SessionStorage.set(\"citizen.userRequestObject\", user);\n Digit.UserService.setUser(user);\n setCitizenDetail(user?.info, user?.access_token, stateCode);\n const redirectPath = location.state?.from || DEFAULT_REDIRECT_URL;\n if (!Digit.ULBService.getCitizenCurrentTenant(true)) {\n navigate(\n `/${window?.contextPath}/citizen/select-location`,\n { state: { redirectBackTo: redirectPath }, replace: true }\n );\n } else {\n navigate(redirectPath, { replace: true });\n }\n }, [user]);\n\n const stepItems = useMemo(\n () =>\n loginSteps.map((step) => {\n const texts = {};\n for (const key in step.texts) {\n texts[key] = t(step.texts[key]);\n }\n return { ...step, texts };\n }),\n [loginSteps]\n );\n\n const getUserType = () => \"citizen\" || Digit.UserService.getType();\n\n const handleOtpChange = (otp) => {\n setParams({ ...params, otp });\n };\n\n const handleMobileChange = (event) => {\n const { value } = event.target;\n setParams({ ...params, mobileNumber: value });\n };\n\n const selectMobileNumber = async (mobileNumber) => {\n setCanSubmitNo(false);\n setParams({ ...params, ...mobileNumber });\n const data = {\n ...mobileNumber,\n tenantId: stateCode,\n userType: getUserType(),\n };\n if (isUserRegistered) {\n const [res, err] = await sendOtp({ otp: { ...data, ...TYPE_LOGIN } });\n if (!err) {\n setCanSubmitNo(true);\n // Use relative path for navigation, `.` means current base path\n navigate(`otp`, { state: { from: getFromLocation(location.state, searchParams), role: location.state?.role }, replace: true });\n return;\n } else {\n setCanSubmitNo(true);\n if (!(location.state && location.state.role === \"FSM_DSO\")) {\n // Use absolute path if navigating outside the current route's scope, or relative if it's a sibling route\n navigate(`/${window?.contextPath}/citizen/register/name`, { state: { from: getFromLocation(location.state, searchParams), data: data } });\n }\n }\n if (location.state?.role) {\n setCanSubmitNo(true);\n setError(location.state?.role === \"FSM_DSO\" ? t(\"ES_ERROR_DSO_LOGIN\") : \"User not registered.\");\n }\n } else {\n const [res, err] = await sendOtp({ otp: { ...data, ...TYPE_REGISTER } });\n if (!err) {\n setCanSubmitNo(true);\n navigate(`otp`, { state: { from: getFromLocation(location.state, searchParams) }, replace: true });\n return;\n }\n setCanSubmitNo(true);\n }\n };\n\n const selectName = async (name) => {\n const data = {\n ...params,\n tenantId: stateCode,\n userType: getUserType(),\n ...name,\n };\n setParams({ ...params, ...name });\n setCanSubmitName(true);\n const [res, err] = await sendOtp({ otp: { ...data, ...TYPE_REGISTER } });\n if (res) {\n setCanSubmitName(false);\n navigate(`otp`, { state: { from: getFromLocation(location.state, searchParams) }, replace: true });\n } else {\n setCanSubmitName(false);\n }\n };\n\n const selectOtp = async () => {\n try {\n setIsOtpValid(true);\n setCanSubmitOtp(false);\n const { mobileNumber, otp, name } = params;\n if (isUserRegistered) {\n const requestData = {\n username: mobileNumber,\n password: otp,\n tenantId: stateCode,\n userType: getUserType(),\n };\n const { ResponseInfo, UserRequest: info, ...tokens } = await Digit.UserService.authenticate(requestData);\n\n if (location.state?.role) {\n const roleInfo = info.roles.find((userRole) => userRole.code === location.state.role);\n if (!roleInfo || !roleInfo.code) {\n setError(t(\"ES_ERROR_USER_NOT_PERMITTED\"));\n // navigate also handles timeouts for redirects\n setTimeout(() => navigate(DEFAULT_REDIRECT_URL, { replace: true }), 5000);\n return;\n }\n }\n if (window?.globalConfigs?.getConfig(\"ENABLE_SINGLEINSTANCE\")) {\n info.tenantId = Digit.ULBService.getStateId();\n }\n\n setUser({ info, ...tokens });\n } else if (!isUserRegistered) {\n const requestData = {\n name,\n username: mobileNumber,\n otpReference: otp,\n tenantId: stateCode,\n };\n\n const { ResponseInfo, UserRequest: info, ...tokens } = await Digit.UserService.registerUser(requestData, stateCode);\n\n if (window?.globalConfigs?.getConfig(\"ENABLE_SINGLEINSTANCE\")) {\n info.tenantId = Digit.ULBService.getStateId();\n }\n\n setUser({ info, ...tokens });\n }\n } catch (err) {\n setCanSubmitOtp(true);\n setIsOtpValid(false);\n }\n };\n\n const resendOtp = async () => {\n const { mobileNumber } = params;\n const data = {\n mobileNumber,\n tenantId: stateCode,\n userType: getUserType(),\n };\n if (!isUserRegistered) {\n const [res, err] = await sendOtp({ otp: { ...data, ...TYPE_REGISTER } });\n } else if (isUserRegistered) {\n const [res, err] = await sendOtp({ otp: { ...data, ...TYPE_LOGIN } });\n }\n };\n\n const sendOtp = async (data) => {\n try {\n const res = await Digit.UserService.sendOtp(data, stateCode);\n return [res, null];\n } catch (err) {\n return [null, err];\n }\n };\n\n const isCitizenDesktop = window.location.href.includes(\"citizen\") && !window.Digit.Utils.browser.isMobile();\n\n return (\n <div className={`citizen-form-wrapper${isCitizenDesktop ? ' citizen-form-center' : ''}`}>\n <AppContainer>\n {/* BackLink now uses navigate(-1) for going back */}\n {location.pathname.includes(\"login\") ? null : <BackLink onClick={() => navigate(-1)} />}\n <Routes> {/* Replaced Switch with Routes */}\n {/* Route path is now relative to the parent <Routes> */}\n <Route\n path=\"/\" // This will match the base path where this component is rendered (e.g., /citizen/login if mounted there)\n element={\n <SelectMobileNumber\n onSelect={selectMobileNumber}\n config={stepItems[0]}\n mobileNumber={params.mobileNumber || \"\"}\n onMobileChange={handleMobileChange}\n canSubmit={canSubmitNo}\n showRegisterLink={isUserRegistered && !location.state?.role}\n t={t}\n />\n }\n />\n <Route\n path=\"otp\" // This will match /path/to/current/route/otp\n element={\n <SelectOtp\n config={{ ...stepItems[1], texts: { ...stepItems[1].texts, cardText: `${stepItems[1].texts.cardText} ${params.mobileNumber || \"\"}` } }}\n onOtpChange={handleOtpChange}\n onResend={resendOtp}\n onSelect={selectOtp}\n otp={params.otp}\n error={isOtpValid}\n canSubmit={canSubmitOtp}\n t={t}\n />\n }\n />\n <Route\n path=\"name\" // This will match /path/to/current/route/name\n element={<SelectName config={stepItems[2]} onSelect={selectName} t={t} isDisabled={canSubmitName} />}\n />\n {error && <Toast type={\"error\"} label={error} onClose={() => setError(null)} />}\n </Routes>\n </AppContainer>\n </div>\n );\n};\n\nexport default Login;","import React, { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport AuditSearchApplication from \"../../components/Search\";\nconst Search = ({ path }) => {\n const { t } = useTranslation();\n const tenantId = Digit.ULBService.getCitizenCurrentTenant()\n const [payload, setPayload] = useState({});\n const convertDateToEpoch = (dateString, dayStartOrEnd = \"dayend\") => {\n //example input format : \"2018-10-02\"\n try {\n const parts = dateString.match(/(\\d{4})-(\\d{1,2})-(\\d{1,2})/);\n const DateObj = new Date(Date.UTC(parts[1], parts[2] - 1, parts[3]));\n DateObj.setMinutes(DateObj.getMinutes() + DateObj.getTimezoneOffset());\n if (dayStartOrEnd === \"dayend\") {\n DateObj.setHours(DateObj.getHours() + 24);\n DateObj.setSeconds(DateObj.getSeconds() - 1);\n }\n return DateObj.getTime();\n } catch (e) {\n return dateString;\n }\n };\n function onSubmit(_data) {\n Digit.SessionStorage.set(\"AUDIT_APPLICATION_DETAIL\", {\n offset: 0,\n limit: 5,\n sortBy: \"commencementDate\",\n sortOrder: \"DESC\",\n });\n const data = {\n ..._data,\n fromDate: convertDateToEpoch(_data?.fromDate),\n toDate: convertDateToEpoch(_data?.toDate),\n };\n \n setPayload(\n Object.keys(data)\n .filter((k) => data[k])\n .reduce((acc, key) => ({ ...acc, [key]: typeof data[key] === \"object\" ? data[key] : data[key] }), {})\n );\n }\n useEffect(() => {\n const storedPayload = Digit.SessionStorage.get(\"AUDIT_APPLICATION_DETAIL\") || {};\n if (storedPayload) {\n const data = {\n ...storedPayload,\n };\n \n setPayload(\n Object.keys(data)\n .filter((k) => data[k])\n .reduce((acc, key) => ({ ...acc, [key]: typeof data[key] === \"object\" ? data[key].code : data[key] }), {})\n );\n }\n }, []);\n const config = {\n enabled: !!(payload && Object.keys(payload).length > 0),\n };\n const newObj = { ...payload };\n \n const {\n isLoading,\n data,\n} = Digit.Hooks.useAudit({\n tenantId,\n filters: {\n ...newObj,\n },\n config,\n });\n\n return (\n <AuditSearchApplication\n t={t}\n tenantId={tenantId}\n onSubmit={onSubmit}\n data={\n !isLoading\n ? data?.ElasticSearchData?.length > 0\n ? data?.ElasticSearchData\n : { display: \"ES_COMMON_NO_DATA\" }\n : \"\"\n }\n count={data?.ElasticSearchData?.length}\n />\n );\n };\n export default Search;","import {\n Card,\n Loader,\n CaseIcon,\n ComplaintIcon,\n HelpLineIcon,\n MCollectIcon,\n PTIcon,\n RupeeSymbol,\n ServiceCenterIcon,\n TimerIcon,\n ValidityTimeIcon,\n WhatsappIconGreen,\n} from \"@egovernments/digit-ui-components\";\nimport React from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nconst StaticDynamicCard = ({ moduleCode }) => {\n const { t } = useTranslation();\n const tenantId = Digit.ULBService.getCitizenCurrentTenant();\n const {\n isLoading: isMdmsLoading,\n data: mdmsData,\n } = Digit.Hooks.useStaticData(Digit.ULBService.getStateId());\n const {\n isLoading: isSearchLoading,\n error,\n data: dynamicData,\n isSuccess,\n } = Digit.Hooks.useDynamicData({\n moduleCode,\n tenantId: tenantId,\n filters: {},\n t,\n });\n const handleClickOnWhatsApp = (obj) => {\n window.open(obj);\n };\n\n const IconComponent = ({ module, styles }) => {\n switch (module) {\n case \"TL\":\n return <CaseIcon className=\"fill-path-primary-main\" styles={styles} />;\n case \"PT\":\n return <PTIcon className=\"fill-path-primary-main\" styles={styles} />;\n case \"MCOLLECT\":\n return (\n <MCollectIcon className=\"fill-path-primary-main\" styles={styles} />\n );\n case \"PGR\":\n return (\n <ComplaintIcon className=\"fill-path-primary-main\" styles={styles} />\n );\n default:\n return <CaseIcon className=\"fill-path-primary-main\" styles={styles} />;\n }\n };\n const mdmsConfigResult =\n mdmsData?.MdmsRes[\"common-masters\"]?.StaticData[0]?.[`${moduleCode}`];\n\n const StaticDataIconComponentOne = ({ module }) => {\n switch (module) {\n case \"PT\":\n case \"WS\":\n return (\n <span className=\"timerIcon\">\n <TimerIcon />\n </span>\n );\n default:\n return null;\n }\n };\n const StaticDataIconComponentTwo = ({ module }) => {\n switch (module) {\n case \"PT\":\n return (\n <span className=\"rupeeSymbol\">\n <RupeeSymbol />\n </span>\n );\n case \"WS\":\n return (\n <span className=\"timerIcon\">\n <TimerIcon />\n </span>\n );\n default:\n return null;\n }\n };\n const staticContent = (module) => {\n switch (module) {\n case \"TL\":\n case \"PT\":\n case \"MCOLLECT\":\n return {\n staticCommonContent: t(\"COMMON_VALIDITY\"),\n validity:\n mdmsConfigResult?.validity +\n (mdmsConfigResult?.validity === \"1\"\n ? t(\"COMMON_DAY\")\n : t(\"COMMON_DAYS\")),\n };\n case \"PGR\":\n return {\n staticCommonContent: t(\"ACTION_TEST_COMPLAINT_TYPES\"),\n };\n case \"OBPS\":\n return {\n staticCommonContent: t(\"BUILDING_PLAN_PERMIT_VALIDITY\"),\n validity:\n mdmsConfigResult?.validity +\n \" \" +\n (mdmsConfigResult?.validity === \"1\"\n ? t(\"COMMON_DAY\")\n : t(\"COMMON_DAYS\")),\n };\n default:\n return {\n staticCommonContent: \"\",\n };\n }\n };\n\n const staticData = (module) => {\n switch (module) {\n case \"PT\":\n return {\n staticDataOne:\n mdmsConfigResult?.staticDataOne + \" \" + t(\"COMMON_DAYS\"),\n staticDataOneHeader: t(\"APPLICATION_PROCESSING_TIME\"),\n staticDataTwo: mdmsConfigResult?.staticDataTwo,\n staticDataTwoHeader: t(\"APPLICATION_PROCESSING_FEE\"),\n };\n case \"WS\":\n return {\n staticDataOne: \"\",\n staticDataOneHeader:\n t(\"PAY_WATER_CHARGES_BY\") +\n \" \" +\n mdmsConfigResult?.staticDataOne +\n \" \" +\n t(\"COMMON_DAYS\") +\n \" \" +\n t(\"OF_BILL_GEN_TO_AVOID_LATE_FEE\"),\n staticDataTwo:\n mdmsConfigResult?.staticDataTwo + \" \" + t(\"COMMON_DAYS\"),\n staticDataTwoHeader: t(\"APPLICATION_PROCESSING_TIME\"),\n };\n default:\n return {};\n }\n };\n\n if (isMdmsLoading || isSearchLoading) {\n return <Loader />;\n }\n return mdmsConfigResult ? (\n <React.Fragment>\n {mdmsConfigResult && mdmsConfigResult?.payViaWhatsApp ? (\n <Card style={{ margin: \"16px\", padding: \"16px\", maxWidth: \"unset\" }}>\n <div\n className=\"pay-whatsapp-card\"\n onClick={() =>\n handleClickOnWhatsApp(mdmsConfigResult?.payViaWhatsApp)\n }\n >\n <div className=\"pay-whatsapp-text\">{t(\"PAY_VIA_WHATSAPP\")}</div>\n <div className=\"whatsAppIconG\">\n <WhatsappIconGreen />\n </div>\n </div>\n </Card>\n ) : null}\n {mdmsConfigResult && mdmsConfigResult?.helpline ? (\n <Card style={{ margin: \"16px\", padding: \"16px\", maxWidth: \"unset\" }}>\n <div className=\"static-home-Card\">\n <div className=\"static-home-Card-header\">\n {t(\"CALL_CENTER_HELPLINE\")}\n </div>\n <div className=\"helplineIcon\">\n <HelpLineIcon />\n </div>\n </div>\n <div className=\"call-center-card-text\">\n {mdmsConfigResult?.helpline?.contactOne ? (\n <div className=\"call-center-card-content\">\n <a href={`tel:${mdmsConfigResult?.helpline?.contactOne}`}>\n {mdmsConfigResult?.helpline?.contactOne}\n </a>\n </div>\n ) : null}\n {mdmsConfigResult?.helpline?.contactTwo ? (\n <div className=\"call-center-card-content\">\n <a href={`tel:${mdmsConfigResult?.helpline?.contactTwo}`}>\n {mdmsConfigResult?.helpline?.contactTwo}\n </a>\n </div>\n ) : null}\n </div>\n </Card>\n ) : null}\n {mdmsConfigResult && mdmsConfigResult?.serviceCenter ? (\n <Card style={{ margin: \"16px\", padding: \"16px\", maxWidth: \"unset\" }}>\n <div className=\"static-home-Card\">\n <div className=\"static-home-Card-header\">\n {t(\"CITIZEN_SERVICE_CENTER\")}\n </div>\n <div className=\"serviceCentrIcon\">\n <ServiceCenterIcon />\n </div>\n </div>\n <div className=\"service-center-details-card\">\n <div className=\"service-center-details-text\">\n {mdmsConfigResult?.serviceCenter}\n </div>\n </div>\n {mdmsConfigResult?.viewMapLocation ? (\n <div className=\"link\">\n <a href={mdmsConfigResult?.viewMapLocation}>{t(\"VIEW_ON_MAP\")}</a>\n </div>\n ) : null}\n </Card>\n ) : (\n <div />\n )}\n <Card style={{ margin: \"16px\", padding: \"16px\", maxWidth: \"unset\" }}>\n {error ||\n dynamicData == null ||\n dynamicData?.dynamicDataOne === null ? (\n <div />\n ) : (\n <div className=\"dynamicDataCard\">\n <div className=\"dynamicData\">\n <IconComponent\n module={moduleCode}\n styles={{ width: \"24px\", height: \"24px\" }}\n />\n <span className=\"dynamicData-content\">\n {dynamicData?.dynamicDataOne}\n </span>\n </div>\n </div>\n )}\n {error ||\n dynamicData == null ||\n dynamicData?.dynamicDataTwo === null ? (\n <div />\n ) : (\n <div className=\"dynamicDataCard\">\n <div className=\"dynamicData\">\n <IconComponent\n module={moduleCode}\n styles={{ width: \"24px\", height: \"24px\" }}\n />\n <span className=\"dynamicData-content\">\n {dynamicData?.dynamicDataTwo}\n </span>\n </div>\n </div>\n )}\n {mdmsConfigResult && mdmsConfigResult?.staticDataOne ? (\n <div className=\"staticDataCard\">\n <div className=\"staticData\">\n <StaticDataIconComponentOne module={moduleCode} />\n <span className=\"static-data-content\">\n <span\n className=\"static-data-content-first\"\n style={{\n marginTop:\n staticData(moduleCode)?.staticDataOne === \"\"\n ? \"8px\"\n : \"unset\",\n }}\n >\n {staticData(moduleCode)?.staticDataOneHeader}\n </span>\n <span className=\"static-data-content-second\">{`${\n staticData(moduleCode)?.staticDataOne\n }`}</span>\n </span>\n </div>\n </div>\n ) : (\n <div />\n )}\n {mdmsConfigResult && mdmsConfigResult?.staticDataTwo ? (\n <div className=\"staticDataCard\">\n <div className=\"staticData\">\n <StaticDataIconComponentTwo module={moduleCode} />\n <span className=\"static-data-content\">\n <span className=\"static-data-content-first\">\n {staticData(moduleCode)?.staticDataTwoHeader}\n </span>\n <span className=\"static-data-content-second\">\n {staticData(moduleCode)?.staticDataTwo}\n </span>\n </span>\n </div>\n </div>\n ) : (\n <div />\n )}\n {mdmsConfigResult && mdmsConfigResult?.validity ? (\n <div className=\"staticDataCard\">\n <div className=\"staticData\">\n <span className=\"validityIcon\">\n <ValidityTimeIcon />\n </span>\n <span className=\"static-data-content\">\n <span className=\"static-data-content-first\">\n {staticContent(moduleCode)?.staticCommonContent}\n </span>\n <span className=\"static-data-content-second\">\n {staticContent(moduleCode)?.validity}\n </span>\n </span>\n </div>\n </div>\n ) : (\n <div />\n )}\n {error ||\n dynamicData == null ||\n !dynamicData?.staticData ||\n dynamicData?.staticData === null ? (\n <div />\n ) : (\n <div className=\"staticDataCard\">\n <div className=\"staticData\">\n {moduleCode === \"PGR\" ? (\n <IconComponent\n module={moduleCode}\n styles={{\n width: \"24px\",\n height: \"24px\",\n marginLeft: \"13px\",\n marginTop: \"12px\",\n }}\n />\n ) : (\n <span className=\"validityIcon\">\n <ValidityTimeIcon />\n </span>\n )}\n <span className=\"static-data-content\">\n <span className=\"static-data-content-first\">\n {staticContent(moduleCode)?.staticCommonContent}\n </span>\n <span className=\"static-data-content-second\">\n {dynamicData?.staticData}\n </span>\n </span>\n </div>\n </div>\n )}\n </Card>\n </React.Fragment>\n ) : (\n <React.Fragment />\n );\n};\n\nexport default StaticDynamicCard;\n","import { BackLink, CitizenHomeCard, CitizenInfoLabel } from \"@egovernments/digit-ui-components\";\nimport React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Routes, Route, useNavigate, useLocation } from \"react-router-dom\";\nimport ErrorBoundary from \"../../components/ErrorBoundaries\";\nimport { AppHome, processLinkData } from \"../../components/Home\";\nimport TopBarSideBar from \"../../components/TopBarSideBar\";\nimport CitizenSideNav from \"../../components/TopBarSideBar/SideBar/CitizenSideNav\";\nimport ImageComponent from \"../../components/ImageComponent\";\nimport { lazyWithFallback } from \"@egovernments/digit-ui-components\";\nimport DynamicModuleLoader from \"../../components/DynamicModuleLoader\";\n\n// Create lazy components with fallbacks using the utility\nconst ErrorComponent = lazyWithFallback(\n () => import(/* webpackChunkName: \"citizen-error-component\" */ \"../../components/ErrorComponent\"),\n () => require(\"../../components/ErrorComponent\").default,\n { loaderText: \"CORE_LOADING_ERROR_COMPONENT\" }\n);\n\nconst FAQsSection = lazyWithFallback(\n () => import(/* webpackChunkName: \"citizen-faqs\" */ \"./FAQs/FAQs\"),\n () => require(\"./FAQs/FAQs\").default,\n { loaderText: \"CORE_LOADING_FAQS\" }\n);\n\nconst CitizenHome = lazyWithFallback(\n () => import(/* webpackChunkName: \"citizen-home\" */ \"./Home\"),\n () => require(\"./Home\").default,\n { loaderText: \"CORE_LOADING_HOME\" }\n);\n\nconst LanguageSelection = lazyWithFallback(\n () => import(/* webpackChunkName: \"citizen-language-selection\" */ \"./Home/LanguageSelection\"),\n () => require(\"./Home/LanguageSelection\").default,\n { loaderText: \"CORE_LOADING_LANGUAGE_SELECTION\" }\n);\n\nconst LocationSelection = lazyWithFallback(\n () => import(/* webpackChunkName: \"citizen-location-selection\" */ \"./Home/LocationSelection\"),\n () => require(\"./Home/LocationSelection\").default,\n { loaderText: \"CORE_LOADING_LOCATION_SELECTION\" }\n);\n\nconst UserProfile = lazyWithFallback(\n () => import(/* webpackChunkName: \"citizen-user-profile\" */ \"./Home/UserProfile\"),\n () => require(\"./Home/UserProfile\").default,\n { loaderText: \"CORE_LOADING_USER_PROFILE\" }\n);\n\nconst HowItWorks = lazyWithFallback(\n () => import(/* webpackChunkName: \"citizen-how-it-works\" */ \"./HowItWorks/howItWorks\"),\n () => require(\"./HowItWorks/howItWorks\").default,\n { loaderText: \"CORE_LOADING_HOW_IT_WORKS\" }\n);\n\nconst Login = lazyWithFallback(\n () => import(/* webpackChunkName: \"citizen-login\" */ \"./Login\"),\n () => require(\"./Login\").default,\n { loaderText: \"CORE_LOADING_LOGIN\" }\n);\n\nconst Search = lazyWithFallback(\n () => import(/* webpackChunkName: \"citizen-search\" */ \"./SearchApp\"),\n () => require(\"./SearchApp\").default,\n { loaderText: \"CORE_LOADING_SEARCH\" }\n);\n\nconst StaticDynamicCard = lazyWithFallback(\n () => import(/* webpackChunkName: \"citizen-static-dynamic-card\" */ \"./StaticDynamicComponent/StaticDynamicCard\"),\n () => require(\"./StaticDynamicComponent/StaticDynamicCard\").default,\n { loaderText: \"CORE_LOADING_DYNAMIC_CONTENT\" }\n);\n\nconst sidebarHiddenFor = [\n `${window?.contextPath}/citizen/register/name`,\n `/${window?.contextPath}/citizen/select-language`,\n `/${window?.contextPath}/citizen/select-location`,\n `/${window?.contextPath}/citizen/login`,\n `/${window?.contextPath}/citizen/register/otp`,\n];\n\nconst getTenants = (codes, tenants) => {\n return tenants.filter((tenant) => codes.map((item) => item.code).includes(tenant.code));\n};\n\nconst Home = ({\n stateInfo,\n userDetails,\n CITIZEN,\n cityDetails,\n mobileView,\n handleUserDropdownSelection,\n logoUrl,\n DSO,\n stateCode,\n modules,\n appTenants,\n sourceUrl, // This prop seems unused, consider removing\n pathname, // This prop seems unused, `useLocation().pathname` is used directly\n initData,\n}) => {\n const { isLoading: islinkDataLoading, data: linkData, isFetched: isLinkDataFetched } = Digit.Hooks.useCustomMDMS(\n Digit.ULBService.getStateId(),\n \"ACCESSCONTROL-ACTIONS-TEST\",\n [\n {\n name: \"actions-test\",\n filter: `[?(@.url == '${Digit.Utils.getMultiRootTenant() ? window.globalPath : window.contextPath}-card')]`,\n },\n ],\n {\n select: (data) => {\n const formattedData = data?.[\"ACCESSCONTROL-ACTIONS-TEST\"]?.[\"actions-test\"]\n ?.filter((el) => el.enabled === true)\n .reduce((a, b) => {\n a[b.parentModule] = a[b.parentModule]?.length > 0 ? [b, ...a[b.parentModule]] : [b];\n return a;\n }, {});\n return formattedData;\n },\n }\n );\n const classname = Digit.Hooks.useRouteSubscription(pathname);\n const { t } = useTranslation();\n const navigate = useNavigate();\n const location = useLocation();\n\n const handleClickOnWhatsApp = (obj) => {\n window.open(obj);\n };\n\n const hideSidebar = sidebarHiddenFor.some((e) => window.location.href.includes(e));\n\n // Create app routes with dynamic module loading and loading states for citizen modules\n const appRoutes = modules.map(({ code, tenants }, index) => {\n return (\n <Route\n key={index}\n path={`${code.toLowerCase()}/*`}\n element={\n <DynamicModuleLoader\n moduleCode={code}\n stateCode={stateCode}\n userType=\"citizen\"\n tenants={getTenants(tenants, appTenants)}\n maxRetries={3}\n retryDelay={1000}\n initialDelay={800}\n />\n }\n />\n );\n });\n\n const ModuleLevelLinkHomePages = modules.map(({ code, bannerImage }, index) => {\n let Links = Digit.ComponentRegistryService.getComponent(`${code}Links`) || (() => <React.Fragment />);\n let mdmsDataObj = isLinkDataFetched ? processLinkData(linkData, code, t) : undefined;\n\n if (mdmsDataObj?.header === \"ACTION_TEST_WS\") {\n mdmsDataObj?.links.sort((a, b) => {\n return b.orderNumber - a.orderNumber;\n });\n }\n return (\n <React.Fragment key={code + \"-routes\"}>\n <Route path={`${code.toLowerCase()}-home`} element={\n <div className=\"moduleLinkHomePage\">\n <ImageComponent src={bannerImage || stateInfo?.bannerUrl} alt=\"noimagefound\" />\n <BackLink className=\"moduleLinkHomePageBackButton\" onClick={() => navigate(-1)} />\n <h1>{t(\"MODULE_\" + code.toUpperCase())}</h1>\n <div className=\"moduleLinkHomePageModuleLinks\">\n {mdmsDataObj && (\n <CitizenHomeCard\n header={t(mdmsDataObj?.header)}\n links={mdmsDataObj?.links}\n Icon={() => <span />}\n Info={\n code === \"OBPS\"\n ? () => (\n <CitizenInfoLabel\n style={{ margin: \"0px\", padding: \"10px\" }}\n info={t(\"CS_FILE_APPLICATION_INFO_LABEL\")}\n text={t(`BPA_CITIZEN_HOME_STAKEHOLDER_INCLUDES_INFO_LABEL`)}\n />\n )\n : null\n }\n isInfo={code === \"OBPS\" ? true : false}\n />\n )}\n </div>\n <StaticDynamicCard moduleCode={code?.toUpperCase()} />\n </div>\n } />\n <Route path={`${code.toLowerCase()}-faq`} element={<FAQsSection module={code?.toUpperCase()} />} />\n <Route path={`${code.toLowerCase()}-how-it-works`} element={<HowItWorks module={code?.toUpperCase()} />} />\n </React.Fragment>\n );\n });\n\n return (\n <div className={classname}>\n <TopBarSideBar\n t={t}\n stateInfo={stateInfo}\n userDetails={userDetails}\n CITIZEN={CITIZEN}\n cityDetails={cityDetails}\n mobileView={mobileView}\n handleUserDropdownSelection={handleUserDropdownSelection}\n logoUrl={logoUrl}\n showSidebar={CITIZEN ? true : false}\n linkData={linkData}\n islinkDataLoading={islinkDataLoading}\n />\n\n <div className={`main center-container citizen-home-container mb-25`}>\n {hideSidebar ? null : (\n <div>\n <CitizenSideNav linkData={linkData} islinkDataLoading={islinkDataLoading} />\n </div>\n )}\n\n <Routes>\n <Route path=\"/\" element={<CitizenHome />} />\n\n <Route path=\"select-language\" element={<LanguageSelection />} />\n\n <Route path=\"select-location\" element={\n <div className=\"citizen-location-selection-wrapper\">\n <LocationSelection />\n </div>\n } />\n\n <Route path=\"error\" element={\n <ErrorComponent\n initData={initData}\n goToHome={() => {\n navigate(`/${window?.contextPath}/${Digit?.UserService?.getType?.()}`);\n }}\n />\n } />\n\n <Route path=\"all-services\" element={\n <AppHome\n userType=\"citizen\"\n modules={modules}\n getCitizenMenu={linkData}\n fetchedCitizen={isLinkDataFetched}\n isLoading={islinkDataLoading}\n />\n } />\n\n <Route path=\"login/*\" element={<Login stateCode={stateCode} />} />\n\n <Route path=\"register/*\" element={<Login stateCode={stateCode} isUserRegistered={false} />} />\n\n <Route path=\"user/profile\" element={\n <div className=\"citizen-user-profile-wrapper\">\n <UserProfile stateCode={stateCode} userType={\"citizen\"} cityDetails={cityDetails} />\n </div>\n } />\n\n <Route path=\"Audit\" element={<Search />} />\n\n {/* Dynamic App Routes and Module Level Link Home Pages */}\n {appRoutes}\n {ModuleLevelLinkHomePages}\n </Routes>\n </div>\n <div className=\"citizen-home-footer\" style={window.location.href.includes(\"citizen/obps\") ? { zIndex: \"-1\" } : {}}>\n <ImageComponent\n alt=\"Powered by DIGIT\"\n src={window?.globalConfigs?.getConfig?.(\"DIGIT_FOOTER\")}\n style={{ height: \"1.2em\", cursor: \"pointer\" }}\n onClick={() => {\n window.open(window?.globalConfigs?.getConfig?.(\"DIGIT_HOME_URL\"), \"_blank\").focus();\n }}\n />\n </div>\n </div>\n );\n};\n\nexport default Home;","import { CardSubHeader, FormComposer,CardText} from \"@egovernments/digit-ui-react-components\";\nimport { BackLink,Toast} from \"@egovernments/digit-ui-components\";\nimport PropTypes from \"prop-types\";\nimport React, { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport Background from \"../../../components/Background\";\nimport Header from \"../../../components/Header\";\nimport SelectOtp from \"../../citizen/Login/SelectOtp\";\nimport ImageComponent from \"../../../components/ImageComponent\";\n\nconst ChangePasswordComponent = ({ config: propsConfig, t }) => {\n const [user, setUser] = useState(null);\n const { mobile_number: mobileNumber, tenantId } = Digit.Hooks.useQueryParams();\n const navigate = useNavigate();\n const [otp, setOtp] = useState(\"\");\n const [isOtpValid, setIsOtpValid] = useState(true);\n const [showToast, setShowToast] = useState(null);\n const getUserType = () => Digit.UserService.getType();\n useEffect(() => {\n if (!user) {\n Digit.UserService.setType(\"employee\");\n return;\n }\n Digit.UserService.setUser(user);\n const redirectPath = location.state?.from || `/${window?.contextPath}/employee`;\n navigate(redirectPath, {replace:true});\n }, [user]);\n\n const closeToast = () => {\n setShowToast(null);\n };\n\n const onResendOTP = async () => {\n const requestData = {\n otp: {\n mobileNumber,\n userType: getUserType().toUpperCase(),\n type: \"passwordreset\",\n tenantId,\n },\n };\n\n try {\n await Digit.UserService.sendOtp(requestData, tenantId);\n setShowToast(t(\"ES_OTP_RESEND\"));\n } catch (err) {\n setShowToast(err?.response?.data?.error_description || t(\"ES_INVALID_LOGIN_CREDENTIALS\"));\n }\n setTimeout(closeToast, 5000);\n };\n\n const onChangePassword = async (data) => {\n try {\n if (data.newPassword !== data.confirmPassword) {\n return setShowToast(t(\"ERR_PASSWORD_DO_NOT_MATCH\"));\n }\n const requestData = {\n ...data,\n otpReference: otp,\n tenantId,\n type: getUserType().toUpperCase(),\n };\n\n const response = await Digit.UserService.changePassword(requestData, tenantId);\n navigateToLogin();\n } catch (err) {\n setShowToast(err?.response?.data?.error?.fields?.[0]?.message || t(\"ES_SOMETHING_WRONG\"));\n setTimeout(closeToast, 5000);\n }\n };\n\n const navigateToLogin = () => {\n navigate(`/${window?.contextPath}/employee/user/login`, {replace:true});\n };\n\n const [username, password, confirmPassword] = propsConfig.inputs;\n const config = [\n {\n body: [\n {\n label: t(username.label),\n type: username.type,\n populators: {\n name: username.name,\n },\n isMandatory: true,\n },\n {\n label: t(password.label),\n type: password.type,\n populators: {\n name: password.name,\n },\n isMandatory: true,\n },\n {\n label: t(confirmPassword.label),\n type: confirmPassword.type,\n populators: {\n name: confirmPassword.name,\n },\n isMandatory: true,\n },\n ],\n },\n ];\n\n return (\n <Background>\n <div className=\"employeeBackbuttonAlign\">\n <BackLink variant=\"primary\" style={{ borderBottom: \"none\" }} />\n </div>\n <FormComposer\n onSubmit={onChangePassword}\n noBoxShadow\n inline\n submitInForm\n config={config}\n label={propsConfig.texts.submitButtonLabel}\n cardStyle={{ maxWidth: \"408px\", margin: \"auto\" }}\n className=\"employeeChangePassword\"\n >\n <Header />\n <CardSubHeader style={{ textAlign: \"center\" }}> {propsConfig.texts.header} </CardSubHeader>\n <CardText>\n {`${t(`CS_LOGIN_OTP_TEXT`)} `}\n <b>\n {\" \"}\n {`${t(`+ 91 - `)}`} {mobileNumber}\n </b>\n </CardText>\n <SelectOtp t={t} userType=\"employee\" otp={otp} onOtpChange={setOtp} error={isOtpValid} onResend={onResendOTP} />\n {/* <div>\n <CardLabel style={{ marginBottom: \"8px\" }}>{t(\"CORE_OTP_SENT_MESSAGE\")}</CardLabel>\n <CardLabelDesc style={{ marginBottom: \"0px\" }}> {mobileNumber} </CardLabelDesc>\n <CardLabelDesc style={{ marginBottom: \"8px\" }}> {t(\"CORE_EMPLOYEE_OTP_CHECK_MESSAGE\")}</CardLabelDesc>\n </div>\n <CardLabel style={{ marginBottom: \"8px\" }}>{t(\"CORE_OTP_OTP\")} *</CardLabel>\n <TextInput className=\"field\" name={otpReference} isRequired={true} onChange={updateOtp} type={\"text\"} style={{ marginBottom: \"10px\" }} />\n <div className=\"flex-right\">\n <div className=\"primary-label-btn\" onClick={onResendOTP}>\n {t(\"CORE_OTP_RESEND\")}\n </div>\n </div> */}\n </FormComposer>\n {showToast && <Toast type={\"error\"} label={t(showToast)} onClose={closeToast} />}\n <div className=\"EmployeeLoginFooter\">\n <ImageComponent\n alt=\"Powered by DIGIT\"\n src={window?.globalConfigs?.getConfig?.(\"DIGIT_FOOTER_BW\")}\n style={{ cursor: \"pointer\" }}\n onClick={() => {\n window.open(window?.globalConfigs?.getConfig?.(\"DIGIT_HOME_URL\"), \"_blank\").focus();\n }}\n />{\" \"}\n </div>\n </Background>\n );\n};\n\nChangePasswordComponent.propTypes = {\n loginParams: PropTypes.any,\n};\n\nChangePasswordComponent.defaultProps = {\n loginParams: null,\n};\n\nexport default ChangePasswordComponent;\n","export const config = [\n {\n texts: {\n header: \"CORE_COMMON_RESET_PASSWORD_LABEL\",\n submitButtonLabel: \"CORE_COMMON_CHANGE_PASSWORD\",\n },\n inputs: [\n {\n label: \"CORE_LOGIN_USERNAME\",\n type: \"text\",\n name: \"userName\",\n error: \"ERR_HRMS_INVALID_USERNAME\",\n },\n {\n label: \"CORE_LOGIN_NEW_PASSWORD\",\n type: \"password\",\n name: \"newPassword\",\n error: \"CORE_COMMON_REQUIRED_ERRMSG\",\n },\n {\n label: \"CORE_LOGIN_CONFIRM_NEW_PASSWORD\",\n type: \"password\",\n name: \"confirmPassword\",\n error: \"CORE_COMMON_REQUIRED_ERRMSG\",\n },\n ],\n },\n];\n","import React, { useMemo } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Routes, Route } from \"react-router-dom\";\nimport ChangePasswordComponent from \"./changePassword\";\nimport { config } from \"./config\";\n\nconst EmployeeChangePassword = () => {\n const { t } = useTranslation();\n\n const params = useMemo(\n () =>\n config.map((step) => {\n const texts = {};\n for (const key in step.texts) {\n texts[key] = t(step.texts[key]);\n }\n return { ...step, texts };\n }),\n [config]\n );\n\n return (\n <Routes>\n <Route\n path=\"\"\n element={<ChangePasswordComponent config={params[0]} t={t} />}\n />\n </Routes>\n );\n};\n\nexport default EmployeeChangePassword;\n","export const loginConfig = [\n {\n texts: {\n header: \"CORE_COMMON_FORGOT_PASSWORD_LABEL\",\n description: \"ES_FORGOT_PASSWORD_DESC\",\n submitButtonLabel: \"CORE_COMMON_CONTINUE\",\n },\n inputs: [\n {\n label: \"CORE_COMMON_MOBILE_NUMBER\",\n type: \"mobileNumber\",\n name: \"mobileNumber\",\n error: \"ERR_HRMS_INVALID_MOBILE_NUMBER\",\n },\n {\n label: \"CORE_COMMON_CITY\",\n type: \"dropdown\",\n name: \"city\",\n error: \"ERR_HRMS_INVALID_CITY\",\n },\n ]\n },\n];\n","// import { FormComposer } from \"@egovernments/digit-ui-react-components\";\nimport { BackLink, Dropdown, Loader, Toast, FormComposerV2 } from \"@egovernments/digit-ui-components\";\nimport PropTypes from \"prop-types\";\nimport React, { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport Background from \"../../../components/Background\";\nimport Header from \"../../../components/Header\";\nimport ImageComponent from \"../../../components/ImageComponent\";\nimport Carousel from \"../Login/Carousel/Carousel\";\nimport { useLoginConfig } from \"../../../hooks/useLoginConfig\";\n\nconst ForgotPassword = ({ config: propsConfig, t, stateCode }) => {\n const { data: cities, isLoading } = Digit.Hooks.useTenants();\n const [user, setUser] = useState(null);\n const navigate = useNavigate();\n const [showToast, setShowToast] = useState(null);\n const getUserType = () => Digit.UserService.getType();\n \n const { data : mdmsData } = useLoginConfig(stateCode);\n \n if(mdmsData?.config){\n const bannerImages = mdmsData?.config[0]?.bannerImages;\n propsConfig.bannerImages = bannerImages;\n }\n\n useEffect(() => {\n if (!user) {\n Digit.UserService.setType(\"employee\");\n return;\n }\n Digit.UserService.setUser(user);\n const redirectPath = location.state?.from || `/${window?.contextPath}/employee`;\n navigate(redirectPath, {replace:true});\n }, [user]);\n\n const closeToast = () => {\n setShowToast(null);\n };\n\n const onForgotPassword = async (data) => {\n if (!data.city) {\n alert(\"Please Select City!\");\n return;\n }\n const requestData = {\n otp: {\n userName: data.username,\n userType: getUserType().toUpperCase(),\n type: \"passwordreset\",\n tenantId: data.city.code,\n },\n };\n try {\n await Digit.UserService.sendOtp(requestData, data.city.code);\n navigate(`/${window?.contextPath}/employee/user/change-password?USERNAME=${data.username}&tenantId=${data.city.code}`);\n } catch (err) {\n setShowToast(err?.response?.data?.error?.fields?.[0]?.message || \"Invalid login credentials!\");\n setTimeout(closeToast, 5000);\n }\n };\n\n const navigateToLogin = () => {\n navigate(`/${window?.contextPath}/employee/login`);\n };\n\n const [userId, city] = propsConfig.inputs;\n const config = [\n {\n body: [\n {\n label: t(\"USERNAME\"),\n type: \"text\",\n populators: {\n name: \"username\",\n },\n isMandatory: true,\n },\n {\n label: t(city.label),\n type: city.type,\n populators: {\n name: city.name,\n optionsKey: \"name\",\n required: true,\n options: cities,\n },\n isMandatory: true,\n },\n ],\n },\n ];\n\n if (isLoading) {\n return <Loader page={true} variant=\"PageLoader\" />\n }\n\n return (\n propsConfig?.bannerImages ? (\n <React.Fragment>\n <div className=\"login-container\">\n <Carousel bannerImages={propsConfig?.bannerImages} />\n <div className=\"login-form-container\">\n <FormComposerV2\n onSubmit={onForgotPassword}\n noBoxShadow\n inline\n submitInForm\n config={config}\n label={propsConfig.texts.submitButtonLabel}\n secondaryActionLabel={propsConfig.texts.secondaryButtonLabel}\n onSecondayActionClick={navigateToLogin}\n heading={propsConfig.texts.header}\n description={propsConfig.texts.description}\n headingStyle={{ textAlign: \"center\", fontWeight: \"bold\", color: \"#363636\" }}\n descriptionStyles={{ color: \"#787878\", textAlign: \"center\" }}\n cardStyle={{ maxWidth: \"408px\", margin: \"auto\" }}\n className=\"employeeForgotPassword\"\n secondaryActionId={\"employeeForgotPassword\"}\n >\n <Header />\n </FormComposerV2>\n {showToast && <Toast type={\"error\"} label={t(showToast)} onClose={closeToast} />}\n <div className=\"EmployeeLoginFooter\">\n <ImageComponent\n alt=\"Powered by DIGIT\"\n src={window?.globalConfigs?.getConfig?.(\"DIGIT_FOOTER_BW\")}\n style={{ cursor: \"pointer\" }}\n onClick={() => {\n window.open(window?.globalConfigs?.getConfig?.(\"DIGIT_HOME_URL\"), \"_blank\").focus();\n }}\n />{\" \"}\n </div>\n </div>\n </div>\n </React.Fragment>\n ) :\n <Background>\n <div className=\"employeeBackbuttonAlign\">\n <BackLink onClick={() => window.history.back()} />\n </div>\n <FormComposerV2\n onSubmit={onForgotPassword}\n noBoxShadow\n inline\n submitInForm\n config={config}\n label={propsConfig.texts.submitButtonLabel}\n secondaryActionLabel={propsConfig.texts.secondaryButtonLabel}\n onSecondayActionClick={navigateToLogin}\n heading={propsConfig.texts.header}\n description={propsConfig.texts.description}\n headingStyle={{ textAlign: \"center\", fontWeight: \"bold\", color: \"#363636\" }}\n descriptionStyles={{ color: \"#787878\", textAlign: \"center\" }}\n cardStyle={{ maxWidth: \"408px\", margin: \"auto\" }}\n className=\"employeeForgotPassword\"\n secondaryActionId={\"employeeForgotPassword\"}\n >\n <Header />\n </FormComposerV2>\n {showToast && <Toast type={\"error\"} label={t(showToast)} onClose={closeToast} />}\n <div className=\"EmployeeLoginFooter\">\n <ImageComponent\n alt=\"Powered by DIGIT\"\n src={window?.globalConfigs?.getConfig?.(\"DIGIT_FOOTER_BW\")}\n style={{ cursor: \"pointer\" }}\n onClick={() => {\n window.open(window?.globalConfigs?.getConfig?.(\"DIGIT_HOME_URL\"), \"_blank\").focus();\n }}\n />{\" \"}\n </div>\n </Background>\n );\n};\n\nForgotPassword.propTypes = {\n loginParams: PropTypes.any,\n};\n\nForgotPassword.defaultProps = {\n loginParams: null,\n};\n\nexport default ForgotPassword;","import React, { useMemo } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Routes, Route } from \"react-router-dom\";\nimport { loginConfig } from \"./config\";\nimport ForgotPasswordComponent from \"./forgotPassword\";\n\nconst EmployeeForgotPassword = ({ stateCode }) => {\n const { t } = useTranslation();\n\n const params = useMemo(\n () =>\n loginConfig.map((step) => {\n const texts = {};\n for (const key in step.texts) {\n texts[key] = t(step.texts[key]);\n }\n return { ...step, texts };\n }),\n [loginConfig]\n );\n\n return (\n <Routes>\n <Route\n path=\"\"\n element={<ForgotPasswordComponent config={params[0]} t={t} stateCode={stateCode} />}\n />\n </Routes>\n );\n};\n\nexport default EmployeeForgotPassword;\n","import { Button, Card, SubmitBar, Loader } from \"@egovernments/digit-ui-components\";\nimport { CustomButton } from \"@egovernments/digit-ui-react-components\";\nimport React, { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Navigate, useNavigate } from \"react-router-dom\";\nimport Background from \"../../../components/Background\";\nimport ImageComponent from \"../../../components/ImageComponent\";\n\nconst DEFAULT_LOCALE=Digit?.Utils?.getDefaultLanguage?.();\n\nconst defaultLanguage = { label: \"English\", value: DEFAULT_LOCALE};\n\nconst LanguageSelection = () => {\n const { data: storeData, isLoading } = Digit.Hooks.useStore.getInitData();\n const { t } = useTranslation();\n const navigate = useNavigate();\n const { languages, stateInfo } = storeData || {};\n let defaultLanguages = languages;\n if (!defaultLanguages || defaultLanguages?.length == 0) {\n defaultLanguages = [defaultLanguage];\n }\n const selectedLanguage = Digit.StoreData.getCurrentLanguage();\n const [selected, setselected] = useState(selectedLanguage);\n const handleChangeLanguage = (language) => {\n setselected(language.value);\n Digit.LocalizationService.changeLanguage(language.value, stateInfo.code);\n };\n function getContextPath(contextPath) {\n if (!contextPath || typeof contextPath !== \"string\") return \"\";\n return contextPath.split(\"/\")[0];\n }\n \n const hasMultipleLanguages = languages?.length > 1;\n\n const handleSubmit = (event) => {\n navigate(`/${getContextPath(window.contextPath)}/user/login?ts=${Date.now()}`);\n };\n\n if (isLoading) return <Loader />;\n\n if (!hasMultipleLanguages) {\n return <Navigate to={`/${window?.contextPath}/employee/user/login`} replace />;\n }\n\n return (\n <Background>\n <Card className={\"bannerCard removeBottomMargin languageSelection\"}>\n <div className=\"bannerHeader\">\n <ImageComponent className=\"bannerLogo\" src={stateInfo?.logoUrl} alt=\"Digit Banner Image\" />\n\n <p>{t(`TENANT_TENANTS_${stateInfo?.code?.toUpperCase()}`)}</p>\n </div>\n <div className=\"language-selector\" style={{ justifyContent: \"space-around\", marginBottom: \"24px\", padding: \"0 5%\" }}>\n {defaultLanguages.map((language, index) => (\n <div className=\"language-button-container\" key={index}>\n <CustomButton\n selected={language.value === selected}\n text={t(language.label)}\n onClick={() => handleChangeLanguage(language)}\n ></CustomButton>\n </div>\n ))}\n </div>\n <SubmitBar style={{ width: \"100%\" }} label={t(`CORE_COMMON_CONTINUE`)} onSubmit={handleSubmit} />\n </Card>\n <div className=\"EmployeeLoginFooter\">\n <ImageComponent\n alt=\"Powered by DIGIT\"\n src={window?.globalConfigs?.getConfig?.(\"DIGIT_FOOTER_BW\")}\n style={{ cursor: \"pointer\" }}\n onClick={() => {\n window.open(window?.globalConfigs?.getConfig?.(\"DIGIT_HOME_URL\"), \"_blank\").focus();\n }}\n />{\" \"}\n </div>\n </Background>\n );\n};\n\nexport default LanguageSelection;\n","import React, { useState, useEffect, Fragment } from 'react';\nimport { loginConfig } from '../config';\nimport { useTranslation } from \"react-i18next\";\n\nconst Carousel = ({bannerImages=[]}) => {\n const [currentSlide, setCurrentSlide] = useState(0);\n const { t } = useTranslation();\n\n const carouselItems = bannerImages|| loginConfig[0]?.bannerImages || [];\n\n const nextSlide = () => {\n setCurrentSlide(prev => (prev === carouselItems.length - 1 ? 0 : prev + 1));\n };\n\n const prevSlide = () => {\n setCurrentSlide(prev => (prev === 0 ? carouselItems.length - 1 : prev - 1));\n };\n\n const goToSlide = (index) => {\n setCurrentSlide(index);\n };\n\n // Auto-rotate carousel every 5 seconds\n useEffect(() => {\n const interval = setInterval(() => {\n nextSlide();\n }, 5000);\n return () => clearInterval(interval);\n }, [carouselItems.length]);\n\n return (\n <Fragment>\n\n {/* Carousel Background (70% width) */}\n\n <div className=\"carousel-container\">\n {carouselItems.sort((x,y)=>x?.id-y?.id).map((item, index) => (\n <div\n key={item.id}\n className={`carousel-slide ${index === currentSlide ? 'active' : ''}`}\n style={{ backgroundImage: `url(${item.image})` }}\n >\n <div className=\"carousel-content\">\n <h2>{t(item.title)}</h2>\n <p>{t(item.description)}</p>\n </div>\n </div>\n ))}\n\n {/* Combined Navigation and Indicators (Bottom Center) */}\n <div className=\"carousel-controls\">\n <button className=\"carousel-nav\" onClick={prevSlide}>\n <\n </button>\n\n <div className=\"carousel-indicators\">\n {carouselItems.map((_, index) => (\n <button\n key={index}\n className={`indicator ${index === currentSlide ? 'active' : ''}`}\n onClick={() => goToSlide(index)}\n />\n ))}\n </div>\n\n <button className=\"carousel-nav\" onClick={nextSlide}>\n >\n </button>\n </div>\n </div>\n </Fragment>\n );\n};\n\nexport default Carousel;","export const LoginOtpConfig = [\n {\n texts: {\n header: \"CORE_COMMON_LOGIN\",\n submitButtonLabel: \"CORE_COMMON_CONTINUE\",\n },\n inputs: [\n {\n label: \"CORE_SIGNUP_EMAILID\",\n type: \"text\",\n key: \"email\",\n isMandatory: true,\n populators: {\n name: \"email\",\n validation: {\n required: true,\n pattern: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/,\n },\n error: \"ERR_EMAIL_REQUIRED\",\n },\n },\n {\n isMandatory: true,\n key: \"check\",\n type: \"component\",\n component: \"PrivacyComponent\",\n withoutLabel: true,\n disable: false,\n customProps: {\n module: \"Sandbox\",\n },\n populators: {\n name: \"check\",\n },\n },\n ],\n },\n];\n","export const loginConfig = [\n {\n texts: {\n header: \"CORE_COMMON_LOGIN\",\n submitButtonLabel: \"CORE_COMMON_LOGIN\",\n secondaryButtonLabel: \"CORE_COMMON_FORGOT_PASSWORD\",\n },\n inputs: [\n {\n label: \"CORE_LOGIN_USERNAME\",\n type: \"text\",\n key: \"username\",\n isMandatory: true,\n populators: {\n name: \"username\",\n validation: {\n required: true,\n },\n error: \"ERR_USERNAME_REQUIRED\",\n },\n },\n {\n label: \"CORE_LOGIN_PASSWORD\",\n type: \"password\",\n key: \"password\",\n isMandatory: true,\n populators: {\n name: \"password\",\n validation: {\n required: true,\n },\n error: \"ERR_PASSWORD_REQUIRED\",\n },\n },\n {\n isMandatory: true,\n type: \"dropdown\",\n key: \"city\",\n label: \"CORE_COMMON_CITY\",\n disable: false,\n populators: {\n name: \"city\",\n optionsKey: \"name\",\n error: \"ERR_HRMS_INVALID_CITY\",\n mdmsConfig: {\n masterName: \"tenants\",\n moduleName: \"tenant\",\n localePrefix: \"TENANT_TENANTS\",\n select:\n \"(data)=>{ return Array.isArray(data['tenant'].tenants) && Digit.Utils.getUnique(data['tenant'].tenants).map(ele=>({code:ele.code,name:Digit.Utils.locale.getTransformedLocale('TENANT_TENANTS_'+ele.code)}))}\",\n },\n },\n },\n {\n key: \"check\",\n type: \"component\",\n disable: false,\n component: \"PrivacyComponent\",\n populators: {\n name: \"check\"\n },\n customProps: {\n module: \"HCM\"\n },\n isMandatory: false,\n withoutLabel: true\n },\n {\n key: \"employeeSsoLoginOptions\",\n type: \"component\",\n disable: false,\n component: \"EmployeeSSOLoginOptions\",\n populators: {\n name: \"employeeSsoLoginOptions\"\n },\n isMandatory: false,\n withoutLabel: true,\n renderAfterSubmit:true\n },\n ],\n },\n];\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Routes, Route } from \"react-router-dom\"; // Updated imports for v6\nimport { loginConfig as defaultLoginConfig } from \"./config\";\nimport { LoginOtpConfig as defaultLoginOtpConfig } from \"./ConfigOtp\";\nimport LoginComponent from \"./login\";\nimport { useLoginConfig } from \"../../../hooks/useLoginConfig\";\nimport { Loader } from \"@egovernments/digit-ui-components\";\n\nconst EmployeeLogin = ({ stateCode }) => {\n const { t } = useTranslation();\n const [loginConfig, setloginConfig] = useState(defaultLoginConfig);\n const [loginOtpConfig, setloginOtpConfig] = useState(defaultLoginOtpConfig);\n const moduleCode = [\"privacy-policy\"];\n const language = Digit.StoreData.getCurrentLanguage();\n const modulePrefix = \"digit\";\n const loginType = window?.globalConfigs?.getConfig(\"OTP_BASED_LOGIN\") || false;\n const { data: mdmsData, isLoading } = useLoginConfig(stateCode);\n const { data: store } = Digit.Services.useStore({\n stateCode,\n moduleCode,\n language,\n modulePrefix,\n });\n\n useEffect(() => {\n if (!isLoading && mdmsData?.config) { \n setloginConfig(mdmsData?.config);\n } else {\n setloginConfig(defaultLoginConfig);\n }\n }, [mdmsData, isLoading]); \n\n const loginParams = useMemo(\n () =>\n loginConfig.map((step) => {\n const texts = {};\n for (const key in step.texts) {\n texts[key] = t(step.texts[key]);\n }\n return { ...step, texts };\n },\n [loginConfig]\n )\n );\n\n const loginOtpParams = useMemo(\n () =>\n loginOtpConfig.map((step) => {\n const texts = {};\n for (const key in step.texts) {\n texts[key] = t(step.texts[key]);\n }\n return { ...step, texts };\n },\n [loginOtpConfig]\n )\n );\n\n if (isLoading) {\n return <Loader page={false} variant={\"PageLoader\"} />;\n }\n\n return (\n <Routes> {/* Replaced Switch with Routes */}\n <Route\n path=\"/\" \n element={ \n loginType ? (\n <LoginComponent config={loginOtpParams[0]} t={t} loginOTPBased={loginType} />\n ) : (\n <LoginComponent config={loginParams[0]} t={t} />\n )\n }\n />\n </Routes>\n );\n};\n\nexport default EmployeeLogin;","import { BackLink, Loader, FormComposerV2, Toast } from \"@egovernments/digit-ui-components\";\nimport PropTypes from \"prop-types\";\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport Background from \"../../../components/Background\";\nimport Header from \"../../../components/Header\";\nimport Carousel from \"./Carousel/Carousel\";\nimport ImageComponent from \"../../../components/ImageComponent\";\n// import SkipToMainContent from \"../SkipToMainContent/SkipToMainContent\";\nimport withAutoFocusMain from \"../../../hoc/withAutoFocusMain\";\n\nconst setEmployeeDetail = (userObject, token) => {\n if (Digit.Utils.getMultiRootTenant() && process.env.NODE_ENV !== \"development\") {\n return;\n }\n let locale = JSON.parse(sessionStorage.getItem(\"Digit.locale\"))?.value || Digit.Utils.getDefaultLanguage();\n localStorage.setItem(\"Employee.tenant-id\", userObject?.tenantId);\n localStorage.setItem(\"tenant-id\", userObject?.tenantId);\n localStorage.setItem(\"citizen.userRequestObject\", JSON.stringify(userObject));\n localStorage.setItem(\"locale\", locale);\n localStorage.setItem(\"Employee.locale\", locale);\n localStorage.setItem(\"token\", token);\n localStorage.setItem(\"Employee.token\", token);\n localStorage.setItem(\"user-info\", JSON.stringify(userObject));\n localStorage.setItem(\"Employee.user-info\", JSON.stringify(userObject));\n};\n\nconst Login = ({ config: propsConfig, t, isDisabled, loginOTPBased }) => {\n const { data: cities, isLoading } = Digit.Hooks.useTenants();\n const {\n data: storeData,\n isLoading: isStoreLoading,\n } = Digit.Hooks.useStore.getInitData();\n const {\n data: ssoMDMSData,\n isLoading: isSSOMDMSLoading,\n } = Digit.Hooks.useSSOConfig(Digit.ULBService.getStateId(), {\n select: (data) => {\n const config =\n data?.MdmsRes?.[\"SSO\"]?.IdentityProviders ||\n data?.[\"SSO\"]?.IdentityProviders ||\n data?.[\"IdentityProviders\"] ||\n [];\n return Array.isArray(config) ? config : [];\n },\n });\n const { stateInfo } = storeData || {};\n const [user, setUser] = useState(null);\n const [showToast, setShowToast] = useState(null);\n const [disable, setDisable] = useState(false);\n const [loginLoader, setLoginLoader] = useState(false);\n const navigate = useNavigate();\n const DynamicLoginComponent = Digit.ComponentRegistryService?.getComponent(\n \"DynamicLoginComponent\",\n );\n\n /* Generic SSO Callback Handler - runs on mount / when disable/user/stateInfo change */\n useEffect(() => {\n const hashParams = new URLSearchParams(window.location.hash.slice(1));\n const searchParams = new URLSearchParams(window.location.search);\n const idToken = hashParams.get(\"id_token\") || searchParams.get(\"id_token\");\n const accessToken =\n hashParams.get(\"access_token\") || searchParams.get(\"access_token\");\n const code = searchParams.get(\"code\");\n\n const error = searchParams.get(\"error\") || hashParams.get(\"error\");\n const errorDescription =\n searchParams.get(\"error_description\") ||\n hashParams.get(\"error_description\") ||\n searchParams.get(\"errorDescription\") ||\n hashParams.get(\"errorDescription\");\n\n // If we are not on an SSO callback URL, never keep the SSO overlay loader.\n // Important: we intentionally don't set the loader before redirecting to the provider,\n // so browser back (including bfcache restores) won't get stuck with a stale loader.\n // Note: do NOT reset `disable` here — it is also used for form-validation gating and\n // resetting it would fight FormComposerV2's onFormValueChange, causing an infinite loop.\n if (!idToken && !code && !error) {\n if (loginLoader) setLoginLoader(false);\n return;\n }\n\n if (error && !showToast) {\n setShowToast(errorDescription || \"SSO Login Failed!\");\n setTimeout(closeToast, 5000);\n setLoginLoader(false);\n setDisable(false);\n return;\n }\n\n if (!stateInfo?.code) {\n // Tenant/state not ready yet; wait and retry when stateInfo arrives.\n return;\n }\n\n if ((idToken || code) && !user && !disable) {\n if (idToken) {\n handleDigitLogin(idToken, accessToken);\n } else if (code) {\n setDisable(true);\n setLoginLoader(true);\n Digit.UserService.microsoftAuthenticate({ code })\n .then(({ UserRequest: info, ...tokens }) => {\n Digit.SessionStorage.set(\"Employee.tenantId\", info?.tenantId);\n setUser({ info, ...tokens });\n setDisable(false);\n setLoginLoader(false);\n })\n .catch((err) => {\n setShowToast(\n err?.response?.data?.error_description || \"Login Failed!\",\n );\n setTimeout(closeToast, 5000);\n setDisable(false);\n setLoginLoader(false);\n });\n }\n }\n\n }, [user, disable, stateInfo, loginLoader, showToast]);\n\n /* Post-login redirect and user setup */\n useEffect(() => {\n if (!user) {\n return;\n }\n Digit.SessionStorage.set(\"citizen.userRequestObject\", user);\n const filteredRoles = user?.info?.roles?.filter((role) => role.tenantId === Digit.SessionStorage.get(\"Employee.tenantId\"));\n if (user?.info?.roles?.length > 0) user.info.roles = filteredRoles;\n Digit.UserService.setUser(user);\n setEmployeeDetail(user?.info, user?.access_token);\n let redirectPath = `/${window?.contextPath}/employee`;\n\n /* logic to redirect back to same screen where we left off */\n if (window?.location?.href?.includes(\"from=\")) {\n redirectPath = decodeURIComponent(window?.location?.href?.split(\"from=\")?.[1]) || `/${window?.contextPath}/employee`;\n }\n\n /* RAIN-6489 Logic to navigate to National DSS home in case user has only one role [NATADMIN]*/\n if (\n user?.info?.roles &&\n user?.info?.roles?.every((e) => e.code === \"NATADMIN\")\n ) {\n redirectPath = `/${window?.contextPath}/employee/dss/landing/NURT_DASHBOARD`;\n }\n\n /* RAIN-6489 Logic to navigate to National DSS home incase user has only one role [NATADMIN]*/\n if (\n user?.info?.roles &&\n user?.info?.roles?.every((e) => e.code === \"STADMIN\")\n ) {\n redirectPath = `/${window?.contextPath}/employee/dss/landing/home`;\n }\n\n navigate(redirectPath, { replace: true });\n }, [user]);\n\n /* Generic Token Exchange with DIGIT Backend */\n const handleDigitLogin = async (idToken, accessToken = null) => {\n setDisable(true);\n setLoginLoader(true);\n try {\n const response = await fetch(\"/user/oauth/token\", {\n method: \"POST\",\n headers: {\n Authorization: `Basic ${\n window?.globalConfigs?.getConfig(\"JWT_TOKEN\") ||\n \"ZWdvdi11c2VyLWNsaWVudDo=\"\n }`,\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n body: new URLSearchParams({\n grant_type: \"jwt_exchange\",\n scope: \"read\",\n userType: \"EMPLOYEE\",\n assertion: idToken,\n ...(accessToken && { access_token: accessToken }),\n tenantId: stateInfo?.code,\n }),\n });\n\n if (!response.ok) {\n const raw = await response.text();\n let parsed;\n try {\n parsed = raw ? JSON.parse(raw) : null;\n } catch (e) {\n parsed = null;\n }\n const message =\n parsed?.error_description ||\n parsed?.errorDescription ||\n parsed?.message ||\n parsed?.error ||\n raw ||\n \"DIGIT Login Failed\";\n throw new Error(message);\n }\n\n const data = await response.json();\n const { UserRequest: info, ...tokens } = data;\n\n Digit.SessionStorage.set(\"Employee.tenantId\", info?.tenantId);\n setUser({ info, ...tokens });\n } catch (error) {\n console.error(\"DIGIT Login Error:\", error);\n setShowToast(error?.message || \"DIGIT Login Failed\");\n setTimeout(closeToast, 5000);\n\n\n // If token exchange fails, force Microsoft to prompt credentials on next SSO click.\n try {\n window.sessionStorage.setItem(\"sso.force.prompt.login\", \"true\");\n } catch (e) {\n // no-op\n }\n\n // Prevent retry loop: clear `id_token`/`code` from URL (stay on same page).\n try {\n window.history.replaceState({}, document.title, window.location.pathname);\n } catch (e) {\n // no-op\n }\n }\n setDisable(false);\n setLoginLoader(false);\n };\n\n const buildOIDCAuthorizeUrl = (uiConfig) => {\n const {\n authorizeUrl,\n clientId,\n scopes = [\"openid\", \"profile\", \"email\"],\n responseType = \"id_token\",\n responseMode = \"fragment\",\n nonceRequired = true,\n redirectPath = \"employee/user/login\",\n resource,\n provider,\n prompt,\n } = uiConfig || {};\n\n if (!authorizeUrl || !clientId) {\n throw new Error(\"Missing authorizeUrl or clientId for OIDC login\");\n }\n\n const nonce = nonceRequired\n ? Math.random().toString(36).substring(2)\n : undefined;\n const redirectUri = `${window.location.origin}/${window?.contextPath}/${redirectPath}`;\n\n const params = new URLSearchParams();\n params.set(\"client_id\", clientId);\n params.set(\"response_type\", responseType);\n params.set(\"redirect_uri\", redirectUri);\n if (nonce) params.set(\"nonce\", nonce);\n if (responseMode) params.set(\"response_mode\", responseMode);\n if (scopes && scopes.length) params.set(\"scope\", scopes.join(\" \"));\n if (resource) params.set(\"resource\", resource);\n\n // Handle prompt parameter with priority:\n // 1. Use configured prompt from SSO config (respects admin configuration)\n // 2. Fall back to forced login only if no prompt is configured AND a previous login failed\n try {\n const forcePromptLogin = window.sessionStorage.getItem(\"sso.force.prompt.login\") === \"true\";\n\n if (prompt) {\n // Respect configured prompt (e.g., \"select_account\", \"consent\")\n params.set(\"prompt\", prompt);\n // Clear the force flag since we're using configured prompt\n if (forcePromptLogin) {\n window.sessionStorage.removeItem(\"sso.force.prompt.login\");\n }\n } else if (forcePromptLogin) {\n // Only force login if no prompt is configured\n params.set(\"prompt\", \"login\");\n window.sessionStorage.removeItem(\"sso.force.prompt.login\");\n }\n } catch (e) {\n // If prompt is configured, still set it even if sessionStorage fails\n if (prompt) {\n params.set(\"prompt\", prompt);\n }\n }\n\n return `${authorizeUrl}?${params.toString()}`;\n };\n\n const onSSOLogin = async (ssoConfig) => {\n // For OIDC-like providers (MICROSOFT, GOOGLE, etc.), use generic OIDC login\n const ui = ssoConfig?.ui || {};\n const hasOidcConfig = Boolean((ui.authorizeUrl || ssoConfig?.authorizeUrl) && ui.clientId);\n\n if (ui.authStrategy === \"OIDC_POPUP\" || ui.provider === \"MICROSOFT\" || hasOidcConfig) {\n return onOIDCLogin(ssoConfig);\n }\n\n // If the config doesn't match any known SSO strategy, don't leave the overlay loader stuck.\n setShowToast(\"SSO configuration is invalid or unsupported\");\n setTimeout(closeToast, 5000);\n };\n\n const onOIDCLogin = async (ssoConfig) => {\n try {\n const ui = { ...(ssoConfig?.ui || {}) };\n // Backward-compatibility for older configs where authorizeUrl/resource\n // might be on the top level instead of inside ui.\n ui.authorizeUrl = ui.authorizeUrl || ssoConfig?.authorizeUrl;\n ui.resource = ui.resource || ssoConfig?.resource;\n // For Microsoft, if resource is not explicitly provided, default it to clientId (v1 behavior).\n if (ui.provider === \"MICROSOFT\" && !ui.resource) {\n ui.resource = ui.clientId;\n }\n // Persist provider + logout-relevant info for later use during logout\n if (ui.provider) {\n localStorage.setItem(\"sso-provider\", ui.provider);\n }\n if (ui.logoutUrl) {\n localStorage.setItem(\"sso-logout-url\", ui.logoutUrl);\n }\n if (ui.logoutRedirectParam) {\n localStorage.setItem(\"sso-logout-redirect-param\", ui.logoutRedirectParam);\n }\n if (ui.tenantId) {\n localStorage.setItem(\"sso-tenant-id\", ui.tenantId);\n }\n if (ui.authority) {\n localStorage.setItem(\"sso-authority\", ui.authority);\n }\n const url = buildOIDCAuthorizeUrl(ui);\n // Simple implementation: redirect for OIDC if no library is present\n // For a better experience, a popup and message bridge should be used\n window.location.href = url;\n } catch (error) {\n console.error(\"OIDC Login Error:\", error);\n setShowToast(error.message || \"OIDC Login Failed\");\n setTimeout(closeToast, 5000);\n setLoginLoader(false);\n }\n };\n\n const onLogin = async (data) => {\n // if (!data.city) {\n // alert(\"Please Select City!\");\n // return;\n // }\n if (data?.username) {\n data.username = data.username.trim();\n }\n if (data?.password) {\n data.password = data.password.trim();\n }\n\n setDisable(true);\n setLoginLoader(true);\n const requestData = {\n ...data,\n ...defaultValues,\n userType: \"EMPLOYEE\",\n };\n requestData.tenantId = requestData?.city?.code || Digit?.ULBService?.getStateId();\n delete requestData.city;\n try {\n const { UserRequest: info, ...tokens } = await Digit.UserService.authenticate(requestData);\n Digit.SessionStorage.set(\"Employee.tenantId\", info?.tenantId);\n setUser({ info, ...tokens });\n } catch (err) {\n setShowToast(\n err?.response?.data?.error_description ||\n (err?.message == \"ES_ERROR_USER_NOT_PERMITTED\" && t(\"ES_ERROR_USER_NOT_PERMITTED\")) ||\n t(\"INVALID_LOGIN_CREDENTIALS\")\n );\n setTimeout(closeToast, 5000);\n }\n setDisable(false);\n setLoginLoader(false);\n };\n\n const reqCreate = {\n url: `/user-otp/v1/_send`,\n params: { tenantId: Digit?.ULBService?.getStateId() },\n body: {},\n config: {\n enable: false,\n },\n };\n const mutation = Digit.Hooks.useCustomAPIMutationHook(reqCreate);\n\n const onOtpLogin = async (data) => {\n const inputEmail = data.email;\n await mutation.mutate(\n {\n body: {\n otp: {\n userName: data.email,\n type: \"login\",\n tenantId: Digit?.ULBService?.getStateId(),\n userType: \"EMPLOYEE\",\n },\n },\n config: {\n enable: true,\n },\n },\n {\n onError: (error, variables) => {\n setShowToast(\n error?.response?.data?.Errors?.[0].code\n ? `SANDBOX_RESEND_OTP${error?.response?.data?.Errors?.[0]?.code}`\n : `SANDBOX_RESEND_OTP_ERROR`,\n );\n setTimeout(closeToast, 5000);\n },\n onSuccess: async (data) => {\n navigate(`/${window?.contextPath}/employee/user/login/otp`, {\n state: {\n email: inputEmail,\n tenant: Digit?.ULBService?.getStateId(),\n },\n });\n },\n },\n );\n };\n\n const closeToast = () => {\n setShowToast(null);\n };\n\n const onForgotPassword = () => {\n navigate(`/${window?.contextPath}/employee/user/forgot-password`);\n };\n const defaultTenant = Digit.ULBService.getStateId();\n\n const defaultValue = {\n code: defaultTenant,\n name: Digit.Utils.locale.getTransformedLocale(\n `TENANT_TENANTS_${defaultTenant}`,\n ),\n };\n\n const ssoConfigs = ssoMDMSData?.map((sso) => ({\n ...sso,\n provider: sso.ui?.provider || sso.provider || \"sso\",\n label: t(`SSO_PROVIDER_${sso.ui?.name || sso.id}`),\n icon: sso.ui?.logo ? (\n <img\n src={sso.ui.logo}\n alt={sso.ui?.name}\n className=\"employee-login-sso-logo\"\n />\n ) : sso.ui?.provider === \"MICROSOFT\" ? \"Microsoft\" : sso.ui?.icon,\n onLogin: (ssoConfig) => {\n onSSOLogin(ssoConfig);\n },\n }));\n\n let config = [\n {\n body: propsConfig?.inputs?.map((field) =>\n field?.component === \"EmployeeSSOLoginOptions\"\n ? {\n ...field,\n customProps: {\n ...field.customProps,\n ssoConfigs,\n },\n }\n : field,\n ),\n },\n ];\n\n const { mode } = Digit.Hooks.useQueryParams();\n if (\n mode === \"admin\" &&\n config?.[0]?.body?.[2]?.disable == false &&\n config?.[0]?.body?.[2]?.populators?.defaultValue == undefined\n ) {\n config[0].body[2].disable = true;\n config[0].body[2].isMandatory = false;\n config[0].body[2].populators.defaultValue = defaultValue;\n }\n\n const defaultValues = useMemo(\n () =>\n Object.fromEntries(\n config[0].body\n .filter(\n (field) =>\n field?.populators?.defaultValue && field?.populators?.name,\n )\n .map((field) => [\n field.populators.name,\n field.populators.defaultValue,\n ]),\n ),\n [],\n );\n\n const onFormValueChange = (setValue, formData, formState) => {\n\n // Extract keys from the config \n const keys = config[0].body.filter(field => field?.isMandatory).map((field) => field?.key);\n\n const hasEmptyFields = keys.some((key) => {\n const value = formData[key];\n return value == null || value === \"\" || value === false;\n });\n\n setDisable(hasEmptyFields);\n };\n\n const renderLoginForm = (extraClasses = \"\", cardClassName = \"\", wrapperClass = \"\") => (\n <FormComposerV2\n onSubmit={loginOTPBased ? onOtpLogin : onLogin}\n isDisabled={isDisabled || disable}\n noBoxShadow\n inline\n submitInForm\n config={config}\n label={propsConfig?.texts?.submitButtonLabel}\n secondaryActionLabel={\n propsConfig?.texts?.secondaryButtonLabel +\n (extraClasses.includes(\"login-form-container\") ? \"?\" : \"\")\n }\n onSecondayActionClick={onForgotPassword}\n onFormValueChange={onFormValueChange}\n heading={propsConfig?.texts?.header}\n className={`${wrapperClass}`}\n cardSubHeaderClassName=\"loginCardSubHeaderClassName\"\n cardClassName={cardClassName}\n buttonClassName=\"buttonClassName\"\n defaultValues={defaultValues}\n >\n {stateInfo?.code ? <Header /> : <Header showTenant={false} />}\n </FormComposerV2>\n );\n \n const renderFooter = (footerClassName) => (\n <div className={footerClassName} style={{ backgroundColor: \"unset\" }}>\n <ImageComponent\n alt=\"Powered by DIGIT\"\n src={window?.globalConfigs?.getConfig?.(\"DIGIT_FOOTER_BW\")}\n style={{ cursor: \"pointer\" }}\n onClick={() => {\n window.open(window?.globalConfigs?.getConfig?.(\"DIGIT_HOME_URL\"), \"_blank\").focus();\n }}\n />\n </div>\n );\n\n if (isLoading || isStoreLoading) {\n return <Loader page={true} variant=\"PageLoader\" />;\n }\n return propsConfig?.bannerImages ? (\n <div className=\"login-container\">\n {/* <SkipToMainContent class_name={\".login-form-container\"}/> */}\n <Carousel bannerImages={propsConfig?.bannerImages} />\n <div className=\"login-form-container\">\n {renderLoginForm(\"login-form-container\", \"\", loginOTPBased ? \"sandbox-onboarding-wrapper\" : \"\")}\n {DynamicLoginComponent && <DynamicLoginComponent />} \n {showToast && <Toast type=\"error\" label={t(showToast)} onClose={closeToast} />}\n {renderFooter(\"EmployeeLoginFooter\")}\n </div>\n </div>\n ) : (\n <Background>\n {loginLoader && (\n <div\n style={{\n position: \"fixed\",\n top: 0,\n left: 0,\n width: \"100vw\",\n height: \"100vh\",\n background: \"rgba(0,0,0,0.35)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n zIndex: 9999,\n }}\n >\n <Loader />\n </div>\n )}\n <div className=\"employeeBackbuttonAlign\">\n <BackLink onClick={() => window.history.back()} />\n </div>\n {renderLoginForm(\n \"loginFormStyleEmployee\",\n \"loginCardClassName\",\n loginOTPBased ? \"sandbox-onboarding-wrapper\" : \"\",\n )}\n {DynamicLoginComponent && <DynamicLoginComponent />}\n {showToast && <Toast type=\"error\" label={t(showToast)} onClose={closeToast} />}\n {renderFooter(\"employee-login-home-footer\")}\n </Background>\n );\n \n};\n\nLogin.propTypes = {\n loginParams: PropTypes.any,\n};\n\nLogin.defaultProps = {\n loginParams: null,\n};\n\nexport default withAutoFocusMain(Login, \".login-form-container\");\n","import React, { Fragment, useState } from \"react\";\nimport { CardText, CardLabelError, Toast, CardLabel } from \"@egovernments/digit-ui-components\";\nimport { OTPInput } from \"@egovernments/digit-ui-react-components\";\nimport { useTranslation } from \"react-i18next\";\nimport { useLocation } from \"react-router-dom\";\nimport useInterval from \"../../../hooks/useInterval\";\nimport Background from \"../../../components/Background\";\nimport { useEffect } from \"react\";\n\nconst OtpComponent = ({ onSelect, formData, control, formState, ...props }) => {\n const { t } = useTranslation();\n const location = useLocation();\n const [showToast, setShowToast] = useState(null);\n const [params, setParams] = useState({});\n const [isOtpValid, setIsOtpValid] = useState(true);\n const [timeLeft, setTimeLeft] = useState(30);\n\n const closeToast = () => {\n setShowToast(null);\n };\n\n useInterval(\n () => {\n setTimeLeft(timeLeft - 1);\n },\n timeLeft > 0 ? 1000 : null\n );\n\n const handleOtpChange = (otp) => {\n setParams({ ...params, otp });\n };\n\n useEffect(() => {\n onSelect(\"OtpComponent\", params);\n }, [params]);\n\n const reqCreate = {\n url: `/user-otp/v1/_send`,\n params: { tenantId: props?.props?.code },\n body: {},\n config: {\n enable: false,\n },\n };\n const mutation = Digit.Hooks.useCustomAPIMutationHook(reqCreate);\n\n const resendOtp = async () => {\n setTimeLeft(30);\n await mutation.mutate(\n {\n body: {\n \"otp\": {\n \"userName\": props?.props?.email,\n \"type\": \"login\",\n \"tenantId\": props?.props?.tenant,\n \"userType\": \"EMPLOYEE\"\n }\n },\n config: {\n enable: true,\n },\n },\n {\n onError: (error, variables) => {\n setShowToast({\n key: \"error\",\n label: error?.response?.data?.Errors?.[0].code\n ? `SANDBOX_RESEND_OTP${error?.response?.data?.Errors?.[0]?.code}`\n : `SANDBOX_RESEND_OTP_ERROR`,\n });\n setTimeout(closeToast, 5000);\n },\n onSuccess: async (data) => {\n setShowToast({ key: \"info\", label: t(\"OTP_RESNED_SUCCESFULL\") });\n setTimeout(closeToast, 5000);\n },\n }\n );\n };\n\n return (\n <>\n <CardLabel className={\"sandbox-custom-otp-subheader\"}>{t(\"SANDBOX_ENTER_OTP\")}</CardLabel>\n <CardLabel className={\"sandbox-custom-otp-header\"} >{t(\"CS_OTP_EMAIL\")}</CardLabel>\n <CardLabel className={\"sandbox-custom-otp-email\"} style={{fontWeight: 'bold'}}>{props?.props?.email}</CardLabel>\n <OTPInput className={\"sandbox-otp-input\"} length={6} onChange={handleOtpChange} value={params?.otp} />\n {timeLeft > 0 ? (\n <CardText className={\"sandbox-resend-otp\"}>{`${t(\"CS_RESEND_ANOTHER_OTP\")} ${timeLeft} ${t(\"CS_RESEND_SECONDS\")}`}</CardText>\n ) : (\n <p className=\"card-text-button sandbox-otp-input\" onClick={resendOtp}>\n {t(\"CS_RESEND_OTP\")}\n </p>\n )}\n {!isOtpValid && <CardLabelError>{t(\"CS_INVALID_OTP\")}</CardLabelError>}\n {showToast && <Toast type={showToast?.key} label={t(showToast?.label)} onClose={closeToast} />}\n </>\n );\n};\n\nexport default OtpComponent;\n","import React, { useState, useEffect } from \"react\";\nimport { BackLink, CardLabel, Loader, Toast } from \"@egovernments/digit-ui-components\";\nimport { FormComposerV2 } from \"@egovernments/digit-ui-react-components\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate, useLocation } from \"react-router-dom\"; // Updated imports for v6\nimport Background from \"../../../components/Background\";\nimport Header from \"../../../components/Header\";\nimport ImageComponent from \"../../../components/ImageComponent\";\n\n/* set employee details to enable backward compatible */\nconst setEmployeeDetail = (userObject, token) => {\n if (Digit.Utils.getMultiRootTenant()) {\n return;\n }\n let locale = JSON.parse(sessionStorage.getItem(\"Digit.locale\"))?.value || Digit.Utils.getDefaultLanguage();\n localStorage.setItem(\"Employee.tenant-id\", userObject?.tenantId);\n localStorage.setItem(\"tenant-id\", userObject?.tenantId);\n localStorage.setItem(\"citizen.userRequestObject\", JSON.stringify(userObject));\n localStorage.setItem(\"locale\", locale);\n localStorage.setItem(\"Employee.locale\", locale);\n localStorage.setItem(\"token\", token);\n localStorage.setItem(\"Employee.token\", token);\n localStorage.setItem(\"user-info\", JSON.stringify(userObject));\n localStorage.setItem(\"Employee.user-info\", JSON.stringify(userObject));\n};\n\nconst Otp = ({ isLogin = false }) => {\n const { t } = useTranslation();\n const navigate = useNavigate(); // Replaced useHistory with useNavigate\n const location = useLocation();\n const [showToast, setShowToast] = useState(null);\n const [isOtpValid, setIsOtpValid] = useState(false);\n const [user, setUser] = useState(null);\n const [params, setParams] = useState(location?.state?.data || {});\n const [ifSuperUserExists, setIfSuperUserExist] = useState(false);\n // In v6, location.state is directly available, no need for destructuring within another object\n const { email, tenant } = location.state || {}; \n\n const { data: MdmsRes } = Digit.Hooks.useCustomMDMS(\n tenant,\n \"SandBoxLanding\",\n [\n {\n name: \"LandingPageRoles\",\n },\n ],\n {\n enabled: true,\n staleTime: 0,\n cacheTime: 0,\n select: (data) => {\n return data?.[\"SandBoxLanding\"]?.[\"LandingPageRoles\"];\n },\n }\n );\n\n const RoleLandingUrl = MdmsRes?.[0].url;\n\n const config = [\n {\n body: [\n {\n type: \"component\",\n component: \"OtpComponent\",\n key: \"OtpComponent\",\n withoutLabel: true,\n isMandatory: false,\n customProps: {\n email: email,\n tenant: tenant,\n },\n populators: {\n required: true,\n },\n },\n ],\n },\n ];\n\n const OtpConfig = [\n {\n texts: {\n // header: t(\"CORE_COMMON_OTP_LABEL\"),\n header: t(\"SANDBOX_OTP_VERIFICATION\"),\n submitButtonLabel: \"CORE_COMMON_SUBMIT\",\n },\n },\n ];\n\n const closeToast = () => {\n setShowToast(null);\n };\n\n useEffect(() => {\n if (!user) {\n return;\n }\n Digit.SessionStorage.set(\"citizen.userRequestObject\", user);\n const filteredRoles = user?.info?.roles?.filter((role) => role.tenantId === Digit.SessionStorage.get(\"Employee.tenantId\"));\n if (user?.info?.roles?.length > 0) user.info.roles = filteredRoles;\n Digit.UserService.setUser(user);\n setEmployeeDetail(user?.info, user?.access_token);\n let redirectPath = `/${window?.globalPath}/user/setup`;\n\n const getRedirectPathOtpLogin = (locationPathname, user, MdmsRes, RoleLandingUrl) => {\n const userRole = user?.info?.roles?.[0]?.code;\n const isSuperUser = userRole === \"SUPERUSER\";\n const contextPath = window?.contextPath;\n\n switch (true) {\n case locationPathname === \"/sandbox-ui/user/otp\" && isSuperUser:\n return `/${contextPath}/employee/sandbox/landing`;\n\n case isSuperUser && MdmsRes?.[0]?.rolesForLandingPage?.includes(\"SUPERUSER\"):\n return `/${contextPath}${RoleLandingUrl}`;\n\n default:\n return `/${contextPath}/employee`;\n }\n };\n\n // Usage\n const redirectPathOtpLogin = getRedirectPathOtpLogin(location.pathname, user, MdmsRes, RoleLandingUrl);\n\n if (isLogin) {\n navigate(redirectPathOtpLogin); // Replaced history.push with navigate\n return;\n } else {\n navigate(\n {\n pathname: redirectPath,\n },\n { state: { tenant: tenant } } // Pass state as a separate options object\n );\n return;\n }\n }, [user]);\n\n const onSubmit = async (formData) => {\n const requestData = {\n username: email,\n password: formData?.OtpComponent?.otp,\n tenantId: tenant,\n userType: \"EMPLOYEE\",\n };\n try {\n const { UserRequest: info, ...tokens } = await Digit.UserService.authenticate(requestData);\n Digit.SessionStorage.set(\"Employee.tenantId\", info?.tenantId);\n setUser({ info, ...tokens });\n } catch (err) {\n setShowToast(\n err?.response?.data?.error_description ||\n (err?.message == \"ES_ERROR_USER_NOT_PERMITTED\" && t(\"ES_ERROR_USER_NOT_PERMITTED\")) ||\n t(\"INVALID_LOGIN_CREDENTIALS\")\n );\n setTimeout(closeToast, 5000);\n }\n };\n\n return (\n <Background>\n <div className=\"employeeBackbuttonAlign\">\n <BackLink onClick={() => navigate(-1)} /> {/* navigate(-1) for going back */}\n </div>\n <FormComposerV2\n onSubmit={onSubmit}\n noBoxShadow\n inline\n submitInForm\n onFormValueChange={(setValue, formValue) => {\n const otpValue = formValue[\"OtpComponent\"];\n if (otpValue?.otp?.length === 6) {\n setIsOtpValid(true);\n } else {\n setIsOtpValid(false);\n }\n }}\n isDisabled={!isOtpValid}\n config={config}\n label={OtpConfig[0].texts.submitButtonLabel}\n heading={OtpConfig[0].texts.header}\n headingStyle={{ textAlign: \"center\" }}\n cardStyle={{ maxWidth: \"408px\", margin: \"auto\" }}\n className=\"sandbox-onboarding-wrapper\"\n >\n <Header showTenant={false} />\n </FormComposerV2>\n {showToast && <Toast type={\"error\"} label={t(showToast)} onClose={closeToast} />}\n <div className=\"EmployeeLoginFooter\">\n <ImageComponent\n alt=\"Powered by DIGIT\"\n src={window?.globalConfigs?.getConfig?.(\"DIGIT_FOOTER_BW\")}\n style={{ cursor: \"pointer\" }}\n onClick={() => {\n window.open(window?.globalConfigs?.getConfig?.(\"DIGIT_HOME_URL\"), \"_blank\").focus();\n }}\n />{\" \"}\n </div>\n </Background>\n );\n};\n\nexport default Otp;","import React, { Fragment, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { CardText, CardLabelError, Toast, CardLabel, Card, CardHeader, LinkLabel, Loader } from \"@egovernments/digit-ui-components\";\nimport QuickSetupComponent from \".\";\nimport QuickSetup from \"./QuickSetup\";\n\nconst QuickSetupConfigComponent = ({ onSelect, formData, control, formState, ...props }) => {\n const { t } = useTranslation();\n const { isLoading, data } = Digit.Hooks.useAccessControl();\n const isMultiRootTenant = Digit.Utils.getMultiRootTenant();\n const tenantId = Digit.ULBService.getStateId();\n\n // const transformURL = (url = \"\") => {\n // if (url == \"/\") {\n // return;\n // }\n // if (Digit.Utils.isContextPathMissing(url)) {\n // let updatedUrl = null;\n // if (isMultiRootTenant) {\n // url = url.replace(\"/sandbox-ui/employee\", `/sandbox-ui/${tenantId}/employee`);\n // updatedUrl = url;\n // } else {\n // updatedUrl = DIGIT_UI_CONTEXTS?.every((e) => url?.indexOf(`/${e}`) === -1) ? \"/employee/\" + url : url;\n // }\n // return updatedUrl;\n // } else {\n // return url;\n // }\n // };\n\n const configEmployeeSideBar = data?.actions\n .filter((e) => e.url === \"card\" && e.parentModule)\n .reduce((acc, item) => {\n const module = item.parentModule;\n if (!acc[module]) {\n acc[module] = {\n module: module,\n label: Digit.Utils.locale.getTransformedLocale(`${module}_CARD_HEADER`),\n links: [],\n };\n }\n const linkUrl = Digit.Utils.transformURL(item.navigationURL, tenantId);\n const queryParamIndex = linkUrl.indexOf(\"?\");\n acc[module].links.push({\n link: queryParamIndex === -1 ? linkUrl : linkUrl.substring(0, queryParamIndex),\n label: t(Digit.Utils.locale.getTransformedLocale(`${module}_LINK_${item.displayName}`)),\n queryParams: queryParamIndex === -1 ? null : linkUrl.substring(queryParamIndex),\n description: t(Digit.Utils.locale.getTransformedLocale(`${module}_LINK_${item.displayName}_DESCRIPTION`)),\n });\n return acc;\n }, {});\n\n if (!configEmployeeSideBar) {\n return \"\";\n }\n const QuickSetupConfig = [\n {\n sectionHeader: \"WELCOME_TO_SANDBOX\",\n sections: [\n {\n label: \"SANDBOX_DESCRIPTION_1\",\n },\n {\n label: \"SANDBOX_DESCRIPTION_2\",\n },\n {\n label: \"SANDBOX_DESCRIPTION_3\",\n },\n ],\n },\n {\n sectionHeader: \"QUICK_SETUP\",\n links: configEmployeeSideBar,\n },\n ];\n\n const cardConfig = [\n {\n id: 1,\n type: \"faqs\",\n actions: [\n {\n question: \"SANDBOX_FAQ_QUES_14\",\n isLabelLink: true,\n answer: [\n {\n label: \"SANDBOX_FAQ_ANS_14_LABEL_1\",\n fulllink:true,\n link:\"https://egov-digit.gitbook.io/digit-sandbox/specifications/user-manual/walkthrough-videos\",\n }\n ]\n },\n {\n question: \"SANDBOX_FAQ_QUES_1\",\n content: \"SANDBOX_FAQ_CONTENT_1\",\n isLabelLink: true,\n answer: [\n {\n label: \"SANDBOX_FAQ_ANS_1_LABEL_1\",\n link:\"citizen/login\",\n description: \"SANDBOX_FAQ_ANS_1_DESCRIPTION_1\",\n },\n {\n label: \"SANDBOX_FAQ_ANS_1_LABEL_2\",\n link: \"employee/user/login\",\n description: \"SANDBOX_FAQ_ANS_1_DESCRIPTION_2\",\n }\n ]\n },\n {\n question: \"SANDBOX_FAQ_QUES_2\",\n content: \"SANDBOX_FAQ_CONTENT_2\",\n answer: [\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_2_DESCRIPTION_1\",\n },\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_2_DESCRIPTION_2\",\n },\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_2_DESCRIPTION_3\",\n },\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_2_DESCRIPTION_4\",\n }\n ]\n },\n {\n question: \"SANDBOX_FAQ_QUES_3\",\n content: \"SANDBOX_FAQ_CONTENT_3\",\n answer: [\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_3_DESCRIPTION_1\",\n },\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_3_DESCRIPTION_2\",\n },\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_3_DESCRIPTION_3\",\n },\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_3_DESCRIPTION_4\",\n }\n ]\n },\n {\n question: \"SANDBOX_FAQ_QUES_4\",\n content: \"SANDBOX_FAQ_CONTENT_4\",\n answer: [\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_4_DESCRIPTION_1\",\n },\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_4_DESCRIPTION_2\",\n }\n ]\n },\n {\n question: \"SANDBOX_FAQ_QUES_5\",\n content: \"SANDBOX_FAQ_CONTENT_5\",\n answer: [\n {\n label: \"SANDBOX_FAQ_ANS_5_LABEL_1\",\n description: \"SANDBOX_FAQ_ANS_5_DESCRIPTION_1\",\n },\n {\n label: \"SANDBOX_FAQ_ANS_5_LABEL_2\",\n description: \"SANDBOX_FAQ_ANS_5_DESCRIPTION_2\",\n },\n {\n label: \"SANDBOX_FAQ_ANS_5_LABEL_3\",\n description: \"SANDBOX_FAQ_ANS_5_DESCRIPTION_3\",\n },\n {\n label: \"SANDBOX_FAQ_ANS_5_LABEL_4\",\n description: \"SANDBOX_FAQ_ANS_5_DESCRIPTION_4\",\n },\n {\n label: \"SANDBOX_FAQ_ANS_5_LABEL_5\",\n description: \"SANDBOX_FAQ_ANS_5_DESCRIPTION_5\",\n }\n ]\n },\n {\n question: \"SANDBOX_FAQ_QUES_6\",\n content: \"SANDBOX_FAQ_CONTENT_6\",\n },\n {\n question: \"SANDBOX_FAQ_QUES_7\",\n content: \"SANDBOX_FAQ_CONTENT_7\",\n answer: [\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_7_DESCRIPTION_1\",\n },\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_7_DESCRIPTION_2\",\n }\n ]\n },\n {\n question: \"SANDBOX_FAQ_QUES_8\",\n content: \"SANDBOX_FAQ_CONTENT_8\",\n answer: [\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_8_DESCRIPTION_1\",\n },\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_8_DESCRIPTION_2\",\n },\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_8_DESCRIPTION_3\",\n },\n {\n label: null,\n description: \"SANDBOX_FAQ_ANS_8_DESCRIPTION_4\",\n },\n ]\n },\n {\n question: \"SANDBOX_FAQ_QUES_9\",\n content: \"SANDBOX_FAQ_CONTENT_9\",\n answer: [\n {\n label: \"SANDBOX_FAQ_ANS_9_LABEL_1\",\n description: \"SANDBOX_FAQ_ANS_9_DESCRIPTION_1\",\n },\n {\n label: \"SANDBOX_FAQ_ANS_9_LABEL_2\",\n description: \"SANDBOX_FAQ_ANS_9_DESCRIPTION_2\",\n }\n ]\n },\n {\n question: \"SANDBOX_FAQ_QUES_10\",\n content: \"SANDBOX_FAQ_CONTENT_10\",\n answer: [\n {\n label: \"SANDBOX_FAQ_ANS_10_LABEL_1\",\n description: \"SANDBOX_FAQ_ANS_10_DESCRIPTION_1\",\n },\n {\n label: \"SANDBOX_FAQ_ANS_10_LABEL_2\",\n description: \"SANDBOX_FAQ_ANS_10_DESCRIPTION_2\",\n },\n {\n label: \"SANDBOX_FAQ_ANS_10_LABEL_3\",\n description: \"SANDBOX_FAQ_ANS_10_DESCRIPTION_3\",\n },\n {\n label: \"SANDBOX_FAQ_ANS_10_LABEL_4\",\n description: \"SANDBOX_FAQ_ANS_10_DESCRIPTION_4\",\n }\n ]\n },\n {\n question: \"SANDBOX_FAQ_QUES_11\",\n content: \"SANDBOX_FAQ_CONTENT_11\",\n },\n {\n question: \"SANDBOX_FAQ_QUES_12\",\n content: \"SANDBOX_FAQ_CONTENT_12\",\n },\n {\n question: \"SANDBOX_FAQ_QUES_13\",\n content: \"SANDBOX_FAQ_CONTENT_13\",\n } \n ],\n },\n ];\n\n // return <QuickSetupComponent config={QuickSetupConfig}></QuickSetupComponent>;\n return <QuickSetup cardConfig={cardConfig}></QuickSetup>;\n};\n\nexport default QuickSetupConfigComponent;\n","import React from \"react\";\nimport{ useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { CardText, CardHeader, LinkLabel, Card, Button } from \"@egovernments/digit-ui-components\";\nimport { ArrowForward } from \"@egovernments/digit-ui-svg-components\";\nimport { CardSubHeader, CardSectionHeader, BreakLine, CardSectionSubText } from \"@egovernments/digit-ui-react-components\";\n\nconst FaqComponent = (props) => {\n const { question,isLabelLink, answer,type,actions,content, lastIndex } = props;\n const [isOpen, toggleOpen] = useState(false);\n const { t } = useTranslation();\n const tenantId = Digit.ULBService.getStateId();\n const ListTag = type === \"number\" ? \"ol\" : \"ul\";\n return (\n <div className=\"faqs border-none\" onClick={() => toggleOpen(!isOpen)}>\n <div className=\"faq-question\" style={{ justifyContent: \"space-between\", display: \"flex\" }}>\n <span>{t(question)}</span>\n <span className={isOpen ? \"faqicon rotate\" : \"faqicon\"} style={{ float: \"right\" }}>\n <ArrowForward />\n </span>\n </div>\n <div className=\"faq-answer\" style={isOpen ? { display: \"block\" } : { display: \"none\" }}>\n <CardSectionSubText style={{ marginTop: \"1rem\" }}>{t(content)}</CardSectionSubText>\n <div style={{ marginTop: \"1rem\" }}>\n {actions && (\n <ListTag>\n {actions.map((action, index) => (\n <li key={index} style={{ listStyleType: ListTag === \"ul\" ? \"disc\" : \"auto\", margin: \"8px 0\" }}>\n {isLabelLink ? (\n action?.label ? (\n <Button\n variation=\"teritiary\"\n label={t(action?.label)} \n type=\"button\"\n size={\"medium\"}\n onClick={() => {\n if (action?.fulllink) {\n window.open(action?.link, \"_blank\");\n } else {\n const baseURL = `https://${window.location.hostname}/${window?.globalPath}/${tenantId}`;\n window.open(`${baseURL}/${action?.link}`, \"_blank\");\n }\n }}\n style={{ padding: \"0px\" }}\n />\n ) : null\n ) : (\n action?.label ? <strong>{t(action?.label)}:</strong> : null\n )} \n {t(action?.description)}\n </li>\n ))}\n </ListTag>\n )}\n </div>\n </div>\n {!lastIndex ? <div className=\"cs-box-border\" /> : null}\n </div>\n );\n};\n\nconst CardC = ({ type, title, content, actions, style }) => {\n const { t } = useTranslation();\n const ListTag = type === \"number\" ? \"ol\" : \"ul\";\n return (\n <div>\n {/* <div style={{ border: \"1px solid #ccc\", borderRadius: \"8px\", padding: \"16px\", margin: \"16px\", ...style }}> */}\n <CardSectionHeader>{t(title)}</CardSectionHeader>\n <CardSectionSubText style={{ marginTop: \"1rem\" }}>{t(content)}</CardSectionSubText>\n <div style={{ marginTop: \"1rem\" }}>\n {actions && (\n <ListTag>\n {actions.map((action, index) => (\n <li key={index} style={{ listStyleType: ListTag === \"ul\" ? \"disc\" : \"auto\", margin: \"8px 0\" }}>\n {action?.label ? <strong>{t(action?.label)}:</strong> : null} {t(action?.description)}\n </li>\n ))}\n </ListTag>\n )}\n </div>\n </div>\n );\n};\n\nconst FAQ = ({ key, title, content, faqs ,type}) => {\n const { t } = useTranslation();\n return (\n <div style={{ width: \"100%\" }}>\n <div style={{ width: \"100%\" }}>\n {faqs.map((faq, i) => (\n <FaqComponent key={\"faq_\" + i} question={faq.question} answer={faq.answer} isLabelLink={faq.isLabelLink} type ={type} actions={faq.answer} content ={faq.content}lastIndex={i === faqs?.length - 1} />\n ))}\n </div>\n </div>\n );\n};\nconst QuickSetup = ({ cardConfig }) => {\n const { t } = useTranslation();\n\n const moduleFaqs = [\n {\n question: \"SANDBOX_FAQ_QUES_ONE\",\n answer: \"SANDBOX_FAQ_ANS_ONE\",\n },\n {\n question: \"SANDBOX_FAQ_QUES_TWO\",\n answer: \"SANDBOX_FAQ_ANS_TWO\",\n },\n {\n question: \"SANDBOX_FAQ_QUES_THREE\",\n answer: \"SANDBOX_FAQ_ANS_THREE\",\n },\n {\n question: \"SANDBOX_FAQ_QUES_FOUR\",\n answer: \"SANDBOX_FAQ_ANS_FOUR\",\n },\n ];\n return (\n <Card className={\"sandbox-guide\"} style={{ width: \"25rem\", height: \"47rem\", overflowY: \"scroll\" }}>\n {/* <Card style={{ height: \"47rem\", overflowY: \"scroll\" }}> */}\n <CardHeader>{t(\"GUIDE_TO_SETUP\")}</CardHeader>\n <div style={{ display: \"flex\", flexWrap: \"wrap\" }}>\n {cardConfig.map((config, index) => {\n return config?.type === \"faqs\" ? (\n <FAQ key={config.id} title={config.title} type = {config?.type} content={config.content} faqs={config.actions} />\n ) : (\n <React.Fragment>\n <CardC\n type={config?.type}\n key={config.id}\n title={config.title}\n content={config.content}\n actions={config.actions}\n style={config.style}\n />\n {index !== cardConfig?.length - 1 && <BreakLine style={{ width: \"100%\", border: \"1px solid #d6d5d4\" }} />}\n </React.Fragment>\n );\n })}\n </div>\n </Card>\n );\n};\n\nexport default QuickSetup;","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { CardText, Card, CardHeader, LinkLabel } from \"@egovernments/digit-ui-components\";\nimport { Link } from \"react-router-dom\";\n\nconst QuickSetupComponent = ({ config }) => {\n const { t } = useTranslation();\n\n return (\n <Card>\n {config.map((section, sectionIndex) => (\n <React.Fragment key={sectionIndex}>\n <CardHeader>{t(section.sectionHeader)}</CardHeader>\n {section.sections && section.sections.map((item, itemIndex) => (\n <CardText key={itemIndex}>{t(item.label)}</CardText>\n ))}\n {section.links && Object.values(section.links).map((linkGroup, linkIndex) => (\n <div key={linkIndex}>\n <CardText>{t(linkGroup.description)}</CardText>\n {linkGroup.links.map((link, linkItemIndex) => (\n <div key={linkItemIndex}>\n <Link to={{ pathname: link.link, search: link.queryParams }} className=\"quickLink\">\n {t(link.label)}\n </Link>\n <CardText>{t(link.description)}</CardText>\n </div>\n ))}\n </div>\n ))}\n </React.Fragment>\n ))}\n </Card>\n );\n};\n\nexport default QuickSetupComponent;\n","export const SignUpConfig = [\n {\n texts: {\n header: \"CORE_COMMON_SIGN_UP\",\n submitButtonLabel: \"CORE_COMMON_SIGN_UP_BUTTON\",\n },\n inputs: [\n {\n label: \"CORE_SIGNUP_EMAILID\",\n type: \"text\",\n key: \"email\",\n isMandatory: true,\n populators: {\n name: \"email\",\n validation: {\n required: true,\n pattern: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/,\n maxLength: 64,\n },\n error: \"ERR_EMAIL_REQUIRED\",\n },\n },\n {\n label: \"CORE_SIGNUP_ACCOUNT_NAME\",\n type: \"text\",\n key: \"accountName\",\n isMandatory: true,\n populators: {\n name: \"accountName\",\n validation: {\n required: true,\n pattern: /^[A-Za-z]+( [A-Za-z]+)*$/,\n maxLength: 50,\n },\n error: \"ERR_ACCOUNT_NAME_REQUIRED\",\n },\n infoMessage:\"SANDBOX_SIGNUP_ACCOUNT_NAME_TOOLTIP\"\n },\n {\n isMandatory: false,\n key: \"check\",\n type: \"component\",\n component: \"PrivacyComponent\",\n withoutLabel: true,\n disable: false,\n customProps: {\n module: \"SandboxSignUp\",\n },\n populators: {\n name: \"check\",\n },\n },\n ],\n bannerImages: [{\n id: 1,\n image: 'https://images.unsplash.com/photo-1746277121508-f44615ff09bb',\n title: 'A digital partner for frontline workers',\n description: \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Distinctio nobis temporibus provident expedita consequuntur, repudiandae pariatur! Deleniti molestias vero, cumque vel error labore ipsam totam?\"\n },\n {\n id: 2,\n image: 'https://images.unsplash.com/photo-1581094271901-8022df4466f9',\n title: 'Feature 2 Title',\n description: \"Lorem, ipsum dolor sit amet consectetur adipisicing elit. Exercitationem esse doloribus molestiae fugiat eos adipisci sequi cumque sit, laboriosam dolores blanditiis nobis assumenda quasi nemo consectetur. Officia nesciunt quibusdam molestiae.\"\n },\n {\n id: 3,\n image: 'https://images.unsplash.com/photo-1624555130581-1d9cca783bc0',\n title: 'Feature 3 Title',\n description: \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Cupiditate aut autem aperiam et modi saepe obcaecati doloremque voluptatem iusto quidem!\"\n },\n {\n id: 4,\n image: 'https://images.unsplash.com/photo-1547481887-a26e2cacb5b2',\n title: 'Feature 4 Title',\n description: \"Lorem, ipsum dolor sit amet consectetur adipisicing elit. Exercitationem esse doloribus molestiae fugiat eos adipisci sequi cumque sit, laboriosam dolores blanditiis nobis assumenda quasi nemo consectetur. Officia nesciunt quibusdam molestiae.\"\n },\n {\n id: 5,\n image: 'https://images.unsplash.com/photo-1536782376847-5c9d14d97cc0',\n title: 'Feature 5 Title',\n description: \"Lorem, ipsum dolor sit amet consectetur adipisicing elit. Exercitationem esse doloribus molestiae fugiat eos adipisci sequi cumque sit, laboriosam dolores blanditiis nobis assumenda quasi nemo consectetur. Officia nesciunt quibusdam molestiae.\"\n },\n {\n id: 6,\n image: 'https://images.unsplash.com/photo-1490730141103-6cac27aaab94',\n title: 'Feature 6 Title',\n description: \"Lorem, ipsum dolor sit amet consectetur adipisicing elit. Exercitationem esse doloribus molestiae fugiat eos adipisci sequi cumque sit, laboriosam dolores blanditiis nobis assumenda quasi nemo consectetur. Officia nesciunt quibusdam molestiae.\"\n },\n ],\n },\n];\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Routes, Route, useLocation } from \"react-router-dom\";\nimport { SignUpConfig as defaultSignUpConfig } from \"./config\";\nimport Login from \"./signUp\";\n\nconst SignUp = ({ stateCode }) => {\n const { t } = useTranslation();\n const [SignUpConfig, setSignUpConfig] = useState(defaultSignUpConfig);\n\n const moduleCode = [\"privacy-policy\"];\n const language = Digit.StoreData.getCurrentLanguage();\n const modulePrefix = \"digit\";\n\n const { data: store } = Digit.Services.useStore({\n stateCode,\n moduleCode,\n language,\n modulePrefix\n });\n\n const { data: mdmsData, isLoading } = Digit.Hooks.useCommonMDMS(\n stateCode,\n \"commonUiConfig\",\n [\"SignUpConfig\"],\n {\n select: (data) => ({\n config: data?.commonUiConfig?.SignUpConfig\n }),\n retry: false\n }\n );\n\n useEffect(() => {\n if (!isLoading && mdmsData?.config) {\n setSignUpConfig(mdmsData.config);\n } else {\n setSignUpConfig(defaultSignUpConfig);\n }\n }, [mdmsData, isLoading]);\n\n const SignUpParams = useMemo(\n () =>\n SignUpConfig.map((step) => {\n const texts = {};\n for (const key in step.texts) {\n texts[key] = t(step.texts[key]);\n }\n return { ...step, texts };\n }),\n [SignUpConfig]\n );\n\n return (\n <Routes>\n <Route\n path=\"\"\n element={<Login config={SignUpParams[0]} t={t} />}\n />\n </Routes>\n );\n};\n\nexport default SignUp;\n","import { BackLink, Loader, FormComposerV2, Toast, useCustomAPIMutationHook } from \"@egovernments/digit-ui-components\";\nimport PropTypes from \"prop-types\";\nimport React, { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport Background from \"../../../components/Background\";\nimport Header from \"../../../components/Header\";\nimport ImageComponent from \"../../../components/ImageComponent\";\n\nconst Login = ({ config: propsConfig, t, isDisabled }) => {\n const { data: cities, isLoading } = Digit.Hooks.useTenants();\n const { data: storeData, isLoading: isStoreLoading } = Digit.Hooks.useStore.getInitData();\n const { stateInfo } = storeData || {};\n const [showToast, setShowToast] = useState(null);\n const [disable, setDisable] = useState(false);\n\n const navigate = useNavigate();\n\n const reqCreate = {\n url: `/tenant-management/tenant/_create`,\n params: {},\n body: {},\n config: {\n enable: false,\n },\n };\n const mutation = Digit.Hooks.useCustomAPIMutationHook(reqCreate);\n\n const onLogin = async (data) => {\n await mutation.mutate(\n {\n body: {\n tenant: {\n name: data.accountName,\n email: data.email,\n },\n },\n config: {\n enable: true,\n },\n },\n {\n onError: (error, variables) => {\n setShowToast({\n key: \"error\",\n label: error?.response?.data?.Errors?.[0]?.code ? `SANDBOX_SIGNUP_${error?.response?.data?.Errors?.[0]?.code}` : `SANDBOX_SIGNUP_ERROR`,\n });\n },\n onSuccess: async (data) => {\n navigate({\n pathname: `/${window?.globalPath}/user/otp`,\n state: { email: data?.Tenants[0]?.email, tenant: data?.Tenants[0]?.code },\n });\n },\n }\n );\n };\n\n const closeToast = () => {\n setShowToast(null);\n };\n\n let config = [{ body: propsConfig?.inputs }];\n\n const { mode } = Digit.Hooks.useQueryParams();\n if (mode === \"admin\" && config?.[0]?.body?.[2]?.disable == false && config?.[0]?.body?.[2]?.populators?.defaultValue == undefined) {\n config[0].body[2].disable = true;\n config[0].body[2].isMandatory = false;\n config[0].body[2].populators.defaultValue = defaultValue;\n }\n\n const onFormValueChange = (setValue, formData, formState) => {\n // Extract keys from the config\n const keys = config[0].body.map((field) => field.key);\n\n const hasEmptyFields = keys.some((key) => {\n const value = formData[key];\n return value == null || value === \"\" || (key === \"check\" && value === false) || (key === \"captcha\" && value === false);\n });\n\n // Set disable based on the check\n setDisable(hasEmptyFields);\n };\n\n return isLoading || isStoreLoading ? (\n <Loader />\n ) : (\n <Background>\n <div className=\"employeeBackbuttonAlign\">\n <BackLink onClick={() => window.history.back()} />\n </div>\n <FormComposerV2\n onSubmit={onLogin}\n isDisabled={isDisabled || disable}\n noBoxShadow\n inline\n submitInForm\n config={config}\n label={propsConfig?.texts?.submitButtonLabel}\n secondaryActionLabel={propsConfig?.texts?.secondaryButtonLabel}\n onFormValueChange={onFormValueChange}\n heading={propsConfig?.texts?.header}\n className=\"sandbox-signup-form\"\n cardSubHeaderClassName=\"signupCardSubHeaderClassName\"\n cardClassName=\"signupCardClassName sandbox-onboarding-wrapper\"\n buttonClassName=\"buttonClassName\"\n >\n <Header showTenant={false} />\n </FormComposerV2>\n {showToast && <Toast type={\"error\"} label={t(showToast?.label)} onClose={closeToast} />}\n <div className=\"employee-login-home-footer\" style={{ backgroundColor: \"unset\" }}>\n <img\n alt=\"Powered by DIGIT\"\n src={window?.globalConfigs?.getConfig?.(\"DIGIT_FOOTER_BW\")}\n style={{ cursor: \"pointer\" }}\n onClick={() => {\n window.open(window?.globalConfigs?.getConfig?.(\"DIGIT_HOME_URL\"), \"_blank\").focus();\n }}\n />\n </div>\n </Background>\n );\n};\n\nLogin.propTypes = {\n loginParams: PropTypes.any,\n};\n\nLogin.defaultProps = {\n loginParams: null,\n};\n\nexport default Login;\n","import React, { useRef, useState, useEffect } from \"react\";\nimport { BackLink, Button, Card, CardHeader, CardLabel, CardText, FieldV1, SVG, TextInput } from \"@egovernments/digit-ui-components\";\nimport { useTranslation } from \"react-i18next\";\nimport { useLocation } from \"react-router-dom\";\nimport Background from \"../../../components/Background\";\nimport Header from \"../../../components/Header\";\nimport ImageComponent from \"../../../components/ImageComponent\";\n\nconst ViewUrl = () => {\n const { t } = useTranslation();\n const location = useLocation();\n const { tenant } = location.state || {};\n const ref = useRef(null);\n const getUserRoles = Digit.SessionStorage.get(\"User\")?.info?.roles;\n const [buttonDisabled, setButtonDisabled] = useState(true);\n const { data: MdmsRes } = Digit.Hooks.useCustomMDMS(\n tenant,\n \"SandBoxLanding\",\n [\n {\n name: \"LandingPageRoles\",\n },\n ],\n {\n enabled: true,\n staleTime:0,\n gcTime:0,\n select: (data) => {\n return data?.[\"SandBoxLanding\"]?.[\"LandingPageRoles\"];\n },\n }\n );\n\n useEffect(() => {\n if (MdmsRes?.[0].url) {\n setButtonDisabled(false);\n }\n }, [MdmsRes]);\n\n const RoleLandingUrl = MdmsRes?.[0].url;\n\n const roleForLandingPage = (getUserRoles, MdmsRes) => {\n const userRole = getUserRoles?.[0]?.code;\n return userRole === \"SUPERUSER\" && MdmsRes.some((page) => page.rolesForLandingPage.includes(\"SUPERUSER\"));\n };\n\n const onButtonClick = () => {\n if (roleForLandingPage(getUserRoles, MdmsRes)) {\n window.location.href = `/${window?.globalPath}/${tenant}${RoleLandingUrl}`;\n } else {\n window.location.href = `/${window?.globalPath}/${tenant}/employee`;\n }\n };\n\n const handleCopyUrl = () => {\n navigator.clipboard.writeText(ref.current.value);\n };\n\n return (\n <Background>\n <div className=\"employeeBackbuttonAlign\">\n <BackLink onClick={() => window.history.back()} />\n </div>\n <Card className=\"card-sandbox\">\n <Header showTenant={false} />\n <div className=\"sandbox-success-signup\">\n <SVG.TickMark fill={\"#fff\"} height={30} width={70} />\n </div>\n <CardHeader className=\"cardHeader-sandbox\" styles={{ color: \"#00703c\" }}>\n {t(\"SANDBOX_HEADER\")}\n </CardHeader>\n <CardText className=\"cardText-sandbox\">{t(\"SAMDBOX_URL_SUB\")}</CardText>\n <CardLabel> {t(\"SANDBOX_URL\")} </CardLabel>\n <div className=\"sandbox-url-wrapper\">\n <TextInput\n inputRef={ref}\n className={\"urlInputText\"}\n onChange={() => {}}\n nonEditable={true}\n value={`${window.location.host}/${window?.globalPath}/${tenant}/employee`}\n />\n <Button className=\"copyButton\" variation={\"secondary\"} onClick={() => handleCopyUrl()} label={t(\"COPY_URL\")}></Button>\n </div>\n <div className=\"sandbox-url-footer\">{t(\"SANDBOX_URL_FOOT\")}</div>\n <Button isDisabled={buttonDisabled} onClick={onButtonClick} label={t(\"SIGN_IN\")}></Button>\n </Card>\n <div className=\"EmployeeLoginFooter\">\n <ImageComponent\n alt=\"Powered by DIGIT\"\n src={window?.globalConfigs?.getConfig?.(\"DIGIT_FOOTER_BW\")}\n style={{ cursor: \"pointer\" }}\n onClick={() => {\n window.open(window?.globalConfigs?.getConfig?.(\"DIGIT_HOME_URL\"), \"_blank\").focus();\n }}\n />\n </div>\n </Background>\n );\n};\n\nexport default ViewUrl;\n","import React, { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Routes, Route, useLocation, useNavigate, Navigate } from \"react-router-dom\";\nimport { AppModules } from \"../../components/AppModules\";\nimport ErrorBoundary from \"../../components/ErrorBoundaries\";\nimport TopBarSideBar from \"../../components/TopBarSideBar\";\nimport { PrivateRoute } from \"@egovernments/digit-ui-components\";\nimport ImageComponent from \"../../components/ImageComponent\";\nimport withAutoFocusMain from \"../../hoc/withAutoFocusMain\";\nimport { lazyWithFallback } from \"@egovernments/digit-ui-components\";\n\n// Create lazy components with fallbacks using the utility\nconst ChangePassword = lazyWithFallback(\n () => import(/* webpackChunkName: \"employee-change-password\" */ \"./ChangePassword\"),\n () => require(\"./ChangePassword\").default,\n { loaderText: \"CORE_LOADING_CHANGE_PASSWORD\" }\n);\n\nconst ForgotPassword = lazyWithFallback(\n () => import(/* webpackChunkName: \"employee-forgot-password\" */ \"./ForgotPassword\"),\n () => require(\"./ForgotPassword\").default,\n { loaderText: \"CORE_LOADING_FORGOT_PASSWORD\" }\n);\n\nconst LanguageSelection = lazyWithFallback(\n () => import(/* webpackChunkName: \"employee-language-selection\" */ \"./LanguageSelection\"),\n () => require(\"./LanguageSelection\").default,\n { loaderText: \"CORE_LOADING_LANGUAGE_SELECTION\" }\n);\n\nconst EmployeeLogin = lazyWithFallback(\n () => import(/* webpackChunkName: \"employee-login\" */ \"./Login\"),\n () => require(\"./Login\").default,\n { loaderText: \"CORE_LOADING_LOGIN\" }\n);\n\nconst Otp = lazyWithFallback(\n () => import(/* webpackChunkName: \"employee-otp\" */ \"./Otp\"),\n () => require(\"./Otp\").default,\n { loaderText: \"CORE_LOADING_OTP\" }\n);\n\nconst UserProfile = lazyWithFallback(\n () => import(/* webpackChunkName: \"user-profile\" */ \"../citizen/Home/UserProfile\"),\n () => require(\"../citizen/Home/UserProfile\").default,\n { loaderText: \"CORE_LOADING_USER_PROFILE\" }\n);\n\nconst ErrorComponent = lazyWithFallback(\n () => import(/* webpackChunkName: \"error-component\" */ \"../../components/ErrorComponent\"),\n () => require(\"../../components/ErrorComponent\").default,\n { loaderText: \"CORE_LOADING_ERROR_COMPONENT\" }\n);\n\nconst userScreensExempted = [\"user/landing\", \"user/profile\", \"user/error\", \"user/productPage\"];\n\nconst EmployeeApp = ({\n stateInfo,\n userDetails,\n CITIZEN,\n cityDetails,\n mobileView,\n handleUserDropdownSelection,\n logoUrl,\n logoUrlWhite,\n stateCode,\n modules,\n appTenants,\n sourceUrl,\n pathname, // This prop seems unused, consider removing\n initData,\n noTopBar = false,\n}) => {\n const navigate = useNavigate();\n const { t } = useTranslation();\n const location = useLocation();\n const showLanguageChange = location?.pathname?.includes(\"language-selection\");\n const isUserProfile = userScreensExempted.some((url) => location?.pathname?.includes(url));\n\n useEffect(() => {\n Digit.UserService.setType(\"employee\");\n }, []);\n\n const additionalComponent = initData?.modules?.filter((i) => i?.additionalComponent)?.map((i) => i?.additionalComponent);\n\n return (\n <div className=\"employee\">\n <Routes>\n <Route path=\"user/*\" element={\n <>\n {isUserProfile && (\n <TopBarSideBar\n t={t}\n stateInfo={stateInfo}\n userDetails={userDetails}\n CITIZEN={CITIZEN}\n cityDetails={cityDetails}\n mobileView={mobileView}\n handleUserDropdownSelection={handleUserDropdownSelection}\n logoUrl={logoUrl}\n logoUrlWhite={logoUrlWhite}\n showSidebar={isUserProfile ? true : false}\n showLanguageChange={!showLanguageChange}\n />\n )}\n <div\n className={isUserProfile ? \"grounded-container\" : \"loginContainer\"}\n style={\n isUserProfile\n ? { padding: 0, paddingTop: \"0\", marginLeft: mobileView ? \"0\" : \"0\" }\n : { \"--banner-url\": `url(${stateInfo?.bannerUrl})`, padding: \"0px\" }\n }\n >\n <Routes>\n <Route path=\"login\" element={<EmployeeLogin stateCode={stateCode} />} />\n <Route path=\"login/otp\" element={<Otp isLogin={true} />} />\n <Route path=\"forgot-password\" element={<ForgotPassword stateCode={stateCode} />} />\n <Route path=\"change-password\" element={<ChangePassword />} />\n <Route\n path=\"profile\"\n element={ <UserProfile stateCode={stateCode} userType={\"employee\"} cityDetails={cityDetails} />}\n />\n <Route\n path=\"error\"\n element={\n <ErrorComponent\n initData={initData}\n goToHome={() => {\n navigate(`/${window?.contextPath}/${Digit?.UserService?.getType?.()}`);\n }}\n />\n }\n />\n <Route path=\"language-selection\" element={<LanguageSelection />} />\n <Route path=\"*\" element={<Navigate to=\"language-selection\" replace />} />\n </Routes>\n </div>\n </>}\n />\n\n <Route path=\"*\" element={\n <>\n {!noTopBar && (\n <TopBarSideBar\n t={t}\n stateInfo={stateInfo}\n userDetails={userDetails}\n CITIZEN={CITIZEN}\n cityDetails={cityDetails}\n mobileView={mobileView}\n handleUserDropdownSelection={handleUserDropdownSelection}\n logoUrl={logoUrl}\n logoUrlWhite={logoUrlWhite}\n modules={modules}\n />\n )}\n <div className={!noTopBar ? `main digit-home-main` : \"\"}>\n <div className=\"employee-app-wrapper digit-home-app-wrapper\">\n <ErrorBoundary initData={initData}>\n <AppModules\n stateCode={stateCode}\n userType=\"employee\"\n modules={modules}\n appTenants={appTenants}\n additionalComponent={additionalComponent}\n />\n </ErrorBoundary>\n </div>\n <div className=\"employee-home-footer\">\n <ImageComponent\n alt=\"Powered by DIGIT\"\n src={window?.globalConfigs?.getConfig?.(\"DIGIT_FOOTER\")}\n style={{ height: \"1.1em\", cursor: \"pointer\" }}\n onClick={() => {\n window.open(window?.globalConfigs?.getConfig?.(\"DIGIT_HOME_URL\"), \"_blank\").focus();\n }}\n />\n </div>\n </div>\n </>\n }/>\n\n <Route path=\"*\" element={<Navigate to={`user/language-selection`} replace />} />\n </Routes>\n </div>\n );\n};\n\nexport default withAutoFocusMain(EmployeeApp, \".digit-home-main\");","export const commonReducer = (defaultData) => (state = defaultData, action) => {\n switch (action.type) {\n case \"LANGUAGE_SELECT\":\n return { ...state, selectedLanguage: action.payload };\n default:\n return state;\n }\n};\n","import { applyMiddleware, combineReducers, compose, createStore } from \"redux\";\nimport thunk from \"redux-thunk\";\nimport { commonReducer } from \"./reducers\";\n\nconst getRootReducer = (defaultStore, moduleReducers) =>\n combineReducers({\n common: commonReducer(defaultStore),\n ...moduleReducers,\n });\n\nconst middleware = [thunk];\n\nconst composeEnhancers =\n process.env.NODE_ENV === 'development' && typeof window === \"object\" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ \n ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({}) \n : compose;\n\nconst enhancer = composeEnhancers(\n applyMiddleware(...middleware)\n // other store enhancers if any\n);\n\nconst getStore = (defaultStore, moduleReducers = {}) => {\n return createStore(getRootReducer(defaultStore, moduleReducers), enhancer);\n};\nexport default getStore;\n","module.exports = __WEBPACK_EXTERNAL_MODULE__egovernments_digit_ui_components__;","module.exports = __WEBPACK_EXTERNAL_MODULE__egovernments_digit_ui_react_components__;","module.exports = __WEBPACK_EXTERNAL_MODULE__egovernments_digit_ui_svg_components__;","module.exports = __WEBPACK_EXTERNAL_MODULE__tanstack_react_query__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_i18next__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_redux__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_router_dom__;","module.exports = __WEBPACK_EXTERNAL_MODULE_redux__;","module.exports = __WEBPACK_EXTERNAL_MODULE_redux_thunk__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\tif (cachedModule.error !== undefined) throw cachedModule.error;\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\ttry {\n\t\tvar execOptions = { id: moduleId, module: module, factory: __webpack_modules__[moduleId], require: __webpack_require__ };\n\t\t__webpack_require__.i.forEach(function(handler) { handler(execOptions); });\n\t\tmodule = execOptions.module;\n\t\texecOptions.factory.call(module.exports, module, module.exports, execOptions.require);\n\t} catch(e) {\n\t\tmodule.error = e;\n\t\tthrow e;\n\t}\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n// expose the module cache\n__webpack_require__.c = __webpack_module_cache__;\n\n// expose the module execution interceptor\n__webpack_require__.i = [];\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// This function allow to reference all chunks\n__webpack_require__.hu = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".\" + __webpack_require__.h() + \".hot-update.js\";\n};","__webpack_require__.hmrF = () => (\"main.\" + __webpack_require__.h() + \".hot-update.json\");","__webpack_require__.h = () => (\"5a340d1659238e20c0b3\")","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"@egovernments/digit-ui-module-core:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var currentModuleData = {};\nvar installedModules = __webpack_require__.c;\n\n// module and require creation\nvar currentChildModule;\nvar currentParents = [];\n\n// status\nvar registeredStatusHandlers = [];\nvar currentStatus = \"idle\";\n\n// while downloading\nvar blockingPromises = 0;\nvar blockingPromisesWaiting = [];\n\n// The update info\nvar currentUpdateApplyHandlers;\nvar queuedInvalidatedModules;\n\n__webpack_require__.hmrD = currentModuleData;\n\n__webpack_require__.i.push(function (options) {\n\tvar module = options.module;\n\tvar require = createRequire(options.require, options.id);\n\tmodule.hot = createModuleHotObject(options.id, module);\n\tmodule.parents = currentParents;\n\tmodule.children = [];\n\tcurrentParents = [];\n\toptions.require = require;\n});\n\n__webpack_require__.hmrC = {};\n__webpack_require__.hmrI = {};\n\nfunction createRequire(require, moduleId) {\n\tvar me = installedModules[moduleId];\n\tif (!me) return require;\n\tvar fn = function (request) {\n\t\tif (me.hot.active) {\n\t\t\tif (installedModules[request]) {\n\t\t\t\tvar parents = installedModules[request].parents;\n\t\t\t\tif (parents.indexOf(moduleId) === -1) {\n\t\t\t\t\tparents.push(moduleId);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcurrentParents = [moduleId];\n\t\t\t\tcurrentChildModule = request;\n\t\t\t}\n\t\t\tif (me.children.indexOf(request) === -1) {\n\t\t\t\tme.children.push(request);\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.warn(\n\t\t\t\t\"[HMR] unexpected require(\" +\n\t\t\t\t\trequest +\n\t\t\t\t\t\") from disposed module \" +\n\t\t\t\t\tmoduleId\n\t\t\t);\n\t\t\tcurrentParents = [];\n\t\t}\n\t\treturn require(request);\n\t};\n\tvar createPropertyDescriptor = function (name) {\n\t\treturn {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn require[name];\n\t\t\t},\n\t\t\tset: function (value) {\n\t\t\t\trequire[name] = value;\n\t\t\t}\n\t\t};\n\t};\n\tfor (var name in require) {\n\t\tif (Object.prototype.hasOwnProperty.call(require, name) && name !== \"e\") {\n\t\t\tObject.defineProperty(fn, name, createPropertyDescriptor(name));\n\t\t}\n\t}\n\tfn.e = function (chunkId, fetchPriority) {\n\t\treturn trackBlockingPromise(require.e(chunkId, fetchPriority));\n\t};\n\treturn fn;\n}\n\nfunction createModuleHotObject(moduleId, me) {\n\tvar _main = currentChildModule !== moduleId;\n\tvar hot = {\n\t\t// private stuff\n\t\t_acceptedDependencies: {},\n\t\t_acceptedErrorHandlers: {},\n\t\t_declinedDependencies: {},\n\t\t_selfAccepted: false,\n\t\t_selfDeclined: false,\n\t\t_selfInvalidated: false,\n\t\t_disposeHandlers: [],\n\t\t_main: _main,\n\t\t_requireSelf: function () {\n\t\t\tcurrentParents = me.parents.slice();\n\t\t\tcurrentChildModule = _main ? undefined : moduleId;\n\t\t\t__webpack_require__(moduleId);\n\t\t},\n\n\t\t// Module API\n\t\tactive: true,\n\t\taccept: function (dep, callback, errorHandler) {\n\t\t\tif (dep === undefined) hot._selfAccepted = true;\n\t\t\telse if (typeof dep === \"function\") hot._selfAccepted = dep;\n\t\t\telse if (typeof dep === \"object\" && dep !== null) {\n\t\t\t\tfor (var i = 0; i < dep.length; i++) {\n\t\t\t\t\thot._acceptedDependencies[dep[i]] = callback || function () {};\n\t\t\t\t\thot._acceptedErrorHandlers[dep[i]] = errorHandler;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\thot._acceptedDependencies[dep] = callback || function () {};\n\t\t\t\thot._acceptedErrorHandlers[dep] = errorHandler;\n\t\t\t}\n\t\t},\n\t\tdecline: function (dep) {\n\t\t\tif (dep === undefined) hot._selfDeclined = true;\n\t\t\telse if (typeof dep === \"object\" && dep !== null)\n\t\t\t\tfor (var i = 0; i < dep.length; i++)\n\t\t\t\t\thot._declinedDependencies[dep[i]] = true;\n\t\t\telse hot._declinedDependencies[dep] = true;\n\t\t},\n\t\tdispose: function (callback) {\n\t\t\thot._disposeHandlers.push(callback);\n\t\t},\n\t\taddDisposeHandler: function (callback) {\n\t\t\thot._disposeHandlers.push(callback);\n\t\t},\n\t\tremoveDisposeHandler: function (callback) {\n\t\t\tvar idx = hot._disposeHandlers.indexOf(callback);\n\t\t\tif (idx >= 0) hot._disposeHandlers.splice(idx, 1);\n\t\t},\n\t\tinvalidate: function () {\n\t\t\tthis._selfInvalidated = true;\n\t\t\tswitch (currentStatus) {\n\t\t\t\tcase \"idle\":\n\t\t\t\t\tcurrentUpdateApplyHandlers = [];\n\t\t\t\t\tObject.keys(__webpack_require__.hmrI).forEach(function (key) {\n\t\t\t\t\t\t__webpack_require__.hmrI[key](\n\t\t\t\t\t\t\tmoduleId,\n\t\t\t\t\t\t\tcurrentUpdateApplyHandlers\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t\tsetStatus(\"ready\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"ready\":\n\t\t\t\t\tObject.keys(__webpack_require__.hmrI).forEach(function (key) {\n\t\t\t\t\t\t__webpack_require__.hmrI[key](\n\t\t\t\t\t\t\tmoduleId,\n\t\t\t\t\t\t\tcurrentUpdateApplyHandlers\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"prepare\":\n\t\t\t\tcase \"check\":\n\t\t\t\tcase \"dispose\":\n\t\t\t\tcase \"apply\":\n\t\t\t\t\t(queuedInvalidatedModules = queuedInvalidatedModules || []).push(\n\t\t\t\t\t\tmoduleId\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\t// ignore requests in error states\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\n\t\t// Management API\n\t\tcheck: hotCheck,\n\t\tapply: hotApply,\n\t\tstatus: function (l) {\n\t\t\tif (!l) return currentStatus;\n\t\t\tregisteredStatusHandlers.push(l);\n\t\t},\n\t\taddStatusHandler: function (l) {\n\t\t\tregisteredStatusHandlers.push(l);\n\t\t},\n\t\tremoveStatusHandler: function (l) {\n\t\t\tvar idx = registeredStatusHandlers.indexOf(l);\n\t\t\tif (idx >= 0) registeredStatusHandlers.splice(idx, 1);\n\t\t},\n\n\t\t// inherit from previous dispose call\n\t\tdata: currentModuleData[moduleId]\n\t};\n\tcurrentChildModule = undefined;\n\treturn hot;\n}\n\nfunction setStatus(newStatus) {\n\tcurrentStatus = newStatus;\n\tvar results = [];\n\n\tfor (var i = 0; i < registeredStatusHandlers.length; i++)\n\t\tresults[i] = registeredStatusHandlers[i].call(null, newStatus);\n\n\treturn Promise.all(results).then(function () {});\n}\n\nfunction unblock() {\n\tif (--blockingPromises === 0) {\n\t\tsetStatus(\"ready\").then(function () {\n\t\t\tif (blockingPromises === 0) {\n\t\t\t\tvar list = blockingPromisesWaiting;\n\t\t\t\tblockingPromisesWaiting = [];\n\t\t\t\tfor (var i = 0; i < list.length; i++) {\n\t\t\t\t\tlist[i]();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\nfunction trackBlockingPromise(promise) {\n\tswitch (currentStatus) {\n\t\tcase \"ready\":\n\t\t\tsetStatus(\"prepare\");\n\t\t/* fallthrough */\n\t\tcase \"prepare\":\n\t\t\tblockingPromises++;\n\t\t\tpromise.then(unblock, unblock);\n\t\t\treturn promise;\n\t\tdefault:\n\t\t\treturn promise;\n\t}\n}\n\nfunction waitForBlockingPromises(fn) {\n\tif (blockingPromises === 0) return fn();\n\treturn new Promise(function (resolve) {\n\t\tblockingPromisesWaiting.push(function () {\n\t\t\tresolve(fn());\n\t\t});\n\t});\n}\n\nfunction hotCheck(applyOnUpdate) {\n\tif (currentStatus !== \"idle\") {\n\t\tthrow new Error(\"check() is only allowed in idle status\");\n\t}\n\treturn setStatus(\"check\")\n\t\t.then(__webpack_require__.hmrM)\n\t\t.then(function (update) {\n\t\t\tif (!update) {\n\t\t\t\treturn setStatus(applyInvalidatedModules() ? \"ready\" : \"idle\").then(\n\t\t\t\t\tfunction () {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn setStatus(\"prepare\").then(function () {\n\t\t\t\tvar updatedModules = [];\n\t\t\t\tcurrentUpdateApplyHandlers = [];\n\n\t\t\t\treturn Promise.all(\n\t\t\t\t\tObject.keys(__webpack_require__.hmrC).reduce(function (\n\t\t\t\t\t\tpromises,\n\t\t\t\t\t\tkey\n\t\t\t\t\t) {\n\t\t\t\t\t\t__webpack_require__.hmrC[key](\n\t\t\t\t\t\t\tupdate.c,\n\t\t\t\t\t\t\tupdate.r,\n\t\t\t\t\t\t\tupdate.m,\n\t\t\t\t\t\t\tpromises,\n\t\t\t\t\t\t\tcurrentUpdateApplyHandlers,\n\t\t\t\t\t\t\tupdatedModules\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn promises;\n\t\t\t\t\t}, [])\n\t\t\t\t).then(function () {\n\t\t\t\t\treturn waitForBlockingPromises(function () {\n\t\t\t\t\t\tif (applyOnUpdate) {\n\t\t\t\t\t\t\treturn internalApply(applyOnUpdate);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn setStatus(\"ready\").then(function () {\n\t\t\t\t\t\t\treturn updatedModules;\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t});\n}\n\nfunction hotApply(options) {\n\tif (currentStatus !== \"ready\") {\n\t\treturn Promise.resolve().then(function () {\n\t\t\tthrow new Error(\n\t\t\t\t\"apply() is only allowed in ready status (state: \" +\n\t\t\t\t\tcurrentStatus +\n\t\t\t\t\t\")\"\n\t\t\t);\n\t\t});\n\t}\n\treturn internalApply(options);\n}\n\nfunction internalApply(options) {\n\toptions = options || {};\n\n\tapplyInvalidatedModules();\n\n\tvar results = currentUpdateApplyHandlers.map(function (handler) {\n\t\treturn handler(options);\n\t});\n\tcurrentUpdateApplyHandlers = undefined;\n\n\tvar errors = results\n\t\t.map(function (r) {\n\t\t\treturn r.error;\n\t\t})\n\t\t.filter(Boolean);\n\n\tif (errors.length > 0) {\n\t\treturn setStatus(\"abort\").then(function () {\n\t\t\tthrow errors[0];\n\t\t});\n\t}\n\n\t// Now in \"dispose\" phase\n\tvar disposePromise = setStatus(\"dispose\");\n\n\tresults.forEach(function (result) {\n\t\tif (result.dispose) result.dispose();\n\t});\n\n\t// Now in \"apply\" phase\n\tvar applyPromise = setStatus(\"apply\");\n\n\tvar error;\n\tvar reportError = function (err) {\n\t\tif (!error) error = err;\n\t};\n\n\tvar outdatedModules = [];\n\n\tvar onAccepted = function () {\n\t\treturn Promise.all([disposePromise, applyPromise]).then(function () {\n\t\t\t// handle errors in accept handlers and self accepted module load\n\t\t\tif (error) {\n\t\t\t\treturn setStatus(\"fail\").then(function () {\n\t\t\t\t\tthrow error;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (queuedInvalidatedModules) {\n\t\t\t\treturn internalApply(options).then(function (list) {\n\t\t\t\t\toutdatedModules.forEach(function (moduleId) {\n\t\t\t\t\t\tif (list.indexOf(moduleId) < 0) list.push(moduleId);\n\t\t\t\t\t});\n\t\t\t\t\treturn list;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn setStatus(\"idle\").then(function () {\n\t\t\t\treturn outdatedModules;\n\t\t\t});\n\t\t});\n\t};\n\n\treturn Promise.all(\n\t\tresults\n\t\t\t.filter(function (result) {\n\t\t\t\treturn result.apply;\n\t\t\t})\n\t\t\t.map(function (result) {\n\t\t\t\treturn result.apply(reportError);\n\t\t\t})\n\t)\n\t\t.then(function (applyResults) {\n\t\t\tapplyResults.forEach(function (modules) {\n\t\t\t\tif (modules) {\n\t\t\t\t\tfor (var i = 0; i < modules.length; i++) {\n\t\t\t\t\t\toutdatedModules.push(modules[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t})\n\t\t.then(onAccepted);\n}\n\nfunction applyInvalidatedModules() {\n\tif (queuedInvalidatedModules) {\n\t\tif (!currentUpdateApplyHandlers) currentUpdateApplyHandlers = [];\n\t\tObject.keys(__webpack_require__.hmrI).forEach(function (key) {\n\t\t\tqueuedInvalidatedModules.forEach(function (moduleId) {\n\t\t\t\t__webpack_require__.hmrI[key](\n\t\t\t\t\tmoduleId,\n\t\t\t\t\tcurrentUpdateApplyHandlers\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\t\tqueuedInvalidatedModules = undefined;\n\t\treturn true;\n\t}\n}","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = __webpack_require__.hmrS_jsonp = __webpack_require__.hmrS_jsonp || {\n\t\"main\": 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\nvar currentUpdatedModulesList;\nvar waitingUpdateResolves = {};\nfunction loadUpdateChunk(chunkId, updatedModulesList) {\n\tcurrentUpdatedModulesList = updatedModulesList;\n\treturn new Promise((resolve, reject) => {\n\t\twaitingUpdateResolves[chunkId] = resolve;\n\t\t// start update chunk loading\n\t\tvar url = __webpack_require__.p + __webpack_require__.hu(chunkId);\n\t\t// create error before stack unwound to get useful stacktrace later\n\t\tvar error = new Error();\n\t\tvar loadingEnded = (event) => {\n\t\t\tif(waitingUpdateResolves[chunkId]) {\n\t\t\t\twaitingUpdateResolves[chunkId] = undefined\n\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\terror.message = 'Loading hot update chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\terror.type = errorType;\n\t\t\t\terror.request = realSrc;\n\t\t\t\treject(error);\n\t\t\t}\n\t\t};\n\t\t__webpack_require__.l(url, loadingEnded);\n\t});\n}\n\nthis[\"webpackHotUpdate_egovernments_digit_ui_module_core\"] = (chunkId, moreModules, runtime) => {\n\tfor(var moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\tcurrentUpdate[moduleId] = moreModules[moduleId];\n\t\t\tif(currentUpdatedModulesList) currentUpdatedModulesList.push(moduleId);\n\t\t}\n\t}\n\tif(runtime) currentUpdateRuntime.push(runtime);\n\tif(waitingUpdateResolves[chunkId]) {\n\t\twaitingUpdateResolves[chunkId]();\n\t\twaitingUpdateResolves[chunkId] = undefined;\n\t}\n};\n\nvar currentUpdateChunks;\nvar currentUpdate;\nvar currentUpdateRemovedChunks;\nvar currentUpdateRuntime;\nfunction applyHandler(options) {\n\tif (__webpack_require__.f) delete __webpack_require__.f.jsonpHmr;\n\tcurrentUpdateChunks = undefined;\n\tfunction getAffectedModuleEffects(updateModuleId) {\n\t\tvar outdatedModules = [updateModuleId];\n\t\tvar outdatedDependencies = {};\n\n\t\tvar queue = outdatedModules.map(function (id) {\n\t\t\treturn {\n\t\t\t\tchain: [id],\n\t\t\t\tid: id\n\t\t\t};\n\t\t});\n\t\twhile (queue.length > 0) {\n\t\t\tvar queueItem = queue.pop();\n\t\t\tvar moduleId = queueItem.id;\n\t\t\tvar chain = queueItem.chain;\n\t\t\tvar module = __webpack_require__.c[moduleId];\n\t\t\tif (\n\t\t\t\t!module ||\n\t\t\t\t(module.hot._selfAccepted && !module.hot._selfInvalidated)\n\t\t\t)\n\t\t\t\tcontinue;\n\t\t\tif (module.hot._selfDeclined) {\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"self-declined\",\n\t\t\t\t\tchain: chain,\n\t\t\t\t\tmoduleId: moduleId\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (module.hot._main) {\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"unaccepted\",\n\t\t\t\t\tchain: chain,\n\t\t\t\t\tmoduleId: moduleId\n\t\t\t\t};\n\t\t\t}\n\t\t\tfor (var i = 0; i < module.parents.length; i++) {\n\t\t\t\tvar parentId = module.parents[i];\n\t\t\t\tvar parent = __webpack_require__.c[parentId];\n\t\t\t\tif (!parent) continue;\n\t\t\t\tif (parent.hot._declinedDependencies[moduleId]) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: \"declined\",\n\t\t\t\t\t\tchain: chain.concat([parentId]),\n\t\t\t\t\t\tmoduleId: moduleId,\n\t\t\t\t\t\tparentId: parentId\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (outdatedModules.indexOf(parentId) !== -1) continue;\n\t\t\t\tif (parent.hot._acceptedDependencies[moduleId]) {\n\t\t\t\t\tif (!outdatedDependencies[parentId])\n\t\t\t\t\t\toutdatedDependencies[parentId] = [];\n\t\t\t\t\taddAllToSet(outdatedDependencies[parentId], [moduleId]);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tdelete outdatedDependencies[parentId];\n\t\t\t\toutdatedModules.push(parentId);\n\t\t\t\tqueue.push({\n\t\t\t\t\tchain: chain.concat([parentId]),\n\t\t\t\t\tid: parentId\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\ttype: \"accepted\",\n\t\t\tmoduleId: updateModuleId,\n\t\t\toutdatedModules: outdatedModules,\n\t\t\toutdatedDependencies: outdatedDependencies\n\t\t};\n\t}\n\n\tfunction addAllToSet(a, b) {\n\t\tfor (var i = 0; i < b.length; i++) {\n\t\t\tvar item = b[i];\n\t\t\tif (a.indexOf(item) === -1) a.push(item);\n\t\t}\n\t}\n\n\t// at begin all updates modules are outdated\n\t// the \"outdated\" status can propagate to parents if they don't accept the children\n\tvar outdatedDependencies = {};\n\tvar outdatedModules = [];\n\tvar appliedUpdate = {};\n\n\tvar warnUnexpectedRequire = function warnUnexpectedRequire(module) {\n\t\tconsole.warn(\n\t\t\t\"[HMR] unexpected require(\" + module.id + \") to disposed module\"\n\t\t);\n\t};\n\n\tfor (var moduleId in currentUpdate) {\n\t\tif (__webpack_require__.o(currentUpdate, moduleId)) {\n\t\t\tvar newModuleFactory = currentUpdate[moduleId];\n\t\t\tvar result = newModuleFactory\n\t\t\t\t? getAffectedModuleEffects(moduleId)\n\t\t\t\t: {\n\t\t\t\t\t\ttype: \"disposed\",\n\t\t\t\t\t\tmoduleId: moduleId\n\t\t\t\t\t};\n\t\t\t/** @type {Error|false} */\n\t\t\tvar abortError = false;\n\t\t\tvar doApply = false;\n\t\t\tvar doDispose = false;\n\t\t\tvar chainInfo = \"\";\n\t\t\tif (result.chain) {\n\t\t\t\tchainInfo = \"\\nUpdate propagation: \" + result.chain.join(\" -> \");\n\t\t\t}\n\t\t\tswitch (result.type) {\n\t\t\t\tcase \"self-declined\":\n\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n\t\t\t\t\tif (!options.ignoreDeclined)\n\t\t\t\t\t\tabortError = new Error(\n\t\t\t\t\t\t\t\"Aborted because of self decline: \" +\n\t\t\t\t\t\t\t\tresult.moduleId +\n\t\t\t\t\t\t\t\tchainInfo\n\t\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"declined\":\n\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n\t\t\t\t\tif (!options.ignoreDeclined)\n\t\t\t\t\t\tabortError = new Error(\n\t\t\t\t\t\t\t\"Aborted because of declined dependency: \" +\n\t\t\t\t\t\t\t\tresult.moduleId +\n\t\t\t\t\t\t\t\t\" in \" +\n\t\t\t\t\t\t\t\tresult.parentId +\n\t\t\t\t\t\t\t\tchainInfo\n\t\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"unaccepted\":\n\t\t\t\t\tif (options.onUnaccepted) options.onUnaccepted(result);\n\t\t\t\t\tif (!options.ignoreUnaccepted)\n\t\t\t\t\t\tabortError = new Error(\n\t\t\t\t\t\t\t\"Aborted because \" + moduleId + \" is not accepted\" + chainInfo\n\t\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"accepted\":\n\t\t\t\t\tif (options.onAccepted) options.onAccepted(result);\n\t\t\t\t\tdoApply = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"disposed\":\n\t\t\t\t\tif (options.onDisposed) options.onDisposed(result);\n\t\t\t\t\tdoDispose = true;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(\"Unexception type \" + result.type);\n\t\t\t}\n\t\t\tif (abortError) {\n\t\t\t\treturn {\n\t\t\t\t\terror: abortError\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (doApply) {\n\t\t\t\tappliedUpdate[moduleId] = newModuleFactory;\n\t\t\t\taddAllToSet(outdatedModules, result.outdatedModules);\n\t\t\t\tfor (moduleId in result.outdatedDependencies) {\n\t\t\t\t\tif (__webpack_require__.o(result.outdatedDependencies, moduleId)) {\n\t\t\t\t\t\tif (!outdatedDependencies[moduleId])\n\t\t\t\t\t\t\toutdatedDependencies[moduleId] = [];\n\t\t\t\t\t\taddAllToSet(\n\t\t\t\t\t\t\toutdatedDependencies[moduleId],\n\t\t\t\t\t\t\tresult.outdatedDependencies[moduleId]\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (doDispose) {\n\t\t\t\taddAllToSet(outdatedModules, [result.moduleId]);\n\t\t\t\tappliedUpdate[moduleId] = warnUnexpectedRequire;\n\t\t\t}\n\t\t}\n\t}\n\tcurrentUpdate = undefined;\n\n\t// Store self accepted outdated modules to require them later by the module system\n\tvar outdatedSelfAcceptedModules = [];\n\tfor (var j = 0; j < outdatedModules.length; j++) {\n\t\tvar outdatedModuleId = outdatedModules[j];\n\t\tvar module = __webpack_require__.c[outdatedModuleId];\n\t\tif (\n\t\t\tmodule &&\n\t\t\t(module.hot._selfAccepted || module.hot._main) &&\n\t\t\t// removed self-accepted modules should not be required\n\t\t\tappliedUpdate[outdatedModuleId] !== warnUnexpectedRequire &&\n\t\t\t// when called invalidate self-accepting is not possible\n\t\t\t!module.hot._selfInvalidated\n\t\t) {\n\t\t\toutdatedSelfAcceptedModules.push({\n\t\t\t\tmodule: outdatedModuleId,\n\t\t\t\trequire: module.hot._requireSelf,\n\t\t\t\terrorHandler: module.hot._selfAccepted\n\t\t\t});\n\t\t}\n\t}\n\n\tvar moduleOutdatedDependencies;\n\n\treturn {\n\t\tdispose: function () {\n\t\t\tcurrentUpdateRemovedChunks.forEach(function (chunkId) {\n\t\t\t\tdelete installedChunks[chunkId];\n\t\t\t});\n\t\t\tcurrentUpdateRemovedChunks = undefined;\n\n\t\t\tvar idx;\n\t\t\tvar queue = outdatedModules.slice();\n\t\t\twhile (queue.length > 0) {\n\t\t\t\tvar moduleId = queue.pop();\n\t\t\t\tvar module = __webpack_require__.c[moduleId];\n\t\t\t\tif (!module) continue;\n\n\t\t\t\tvar data = {};\n\n\t\t\t\t// Call dispose handlers\n\t\t\t\tvar disposeHandlers = module.hot._disposeHandlers;\n\t\t\t\tfor (j = 0; j < disposeHandlers.length; j++) {\n\t\t\t\t\tdisposeHandlers[j].call(null, data);\n\t\t\t\t}\n\t\t\t\t__webpack_require__.hmrD[moduleId] = data;\n\n\t\t\t\t// disable module (this disables requires from this module)\n\t\t\t\tmodule.hot.active = false;\n\n\t\t\t\t// remove module from cache\n\t\t\t\tdelete __webpack_require__.c[moduleId];\n\n\t\t\t\t// when disposing there is no need to call dispose handler\n\t\t\t\tdelete outdatedDependencies[moduleId];\n\n\t\t\t\t// remove \"parents\" references from all children\n\t\t\t\tfor (j = 0; j < module.children.length; j++) {\n\t\t\t\t\tvar child = __webpack_require__.c[module.children[j]];\n\t\t\t\t\tif (!child) continue;\n\t\t\t\t\tidx = child.parents.indexOf(moduleId);\n\t\t\t\t\tif (idx >= 0) {\n\t\t\t\t\t\tchild.parents.splice(idx, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove outdated dependency from module children\n\t\t\tvar dependency;\n\t\t\tfor (var outdatedModuleId in outdatedDependencies) {\n\t\t\t\tif (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {\n\t\t\t\t\tmodule = __webpack_require__.c[outdatedModuleId];\n\t\t\t\t\tif (module) {\n\t\t\t\t\t\tmoduleOutdatedDependencies =\n\t\t\t\t\t\t\toutdatedDependencies[outdatedModuleId];\n\t\t\t\t\t\tfor (j = 0; j < moduleOutdatedDependencies.length; j++) {\n\t\t\t\t\t\t\tdependency = moduleOutdatedDependencies[j];\n\t\t\t\t\t\t\tidx = module.children.indexOf(dependency);\n\t\t\t\t\t\t\tif (idx >= 0) module.children.splice(idx, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tapply: function (reportError) {\n\t\t\tvar acceptPromises = [];\n\t\t\t// insert new code\n\t\t\tfor (var updateModuleId in appliedUpdate) {\n\t\t\t\tif (__webpack_require__.o(appliedUpdate, updateModuleId)) {\n\t\t\t\t\t__webpack_require__.m[updateModuleId] = appliedUpdate[updateModuleId];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// run new runtime modules\n\t\t\tfor (var i = 0; i < currentUpdateRuntime.length; i++) {\n\t\t\t\tcurrentUpdateRuntime[i](__webpack_require__);\n\t\t\t}\n\n\t\t\t// call accept handlers\n\t\t\tfor (var outdatedModuleId in outdatedDependencies) {\n\t\t\t\tif (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {\n\t\t\t\t\tvar module = __webpack_require__.c[outdatedModuleId];\n\t\t\t\t\tif (module) {\n\t\t\t\t\t\tmoduleOutdatedDependencies =\n\t\t\t\t\t\t\toutdatedDependencies[outdatedModuleId];\n\t\t\t\t\t\tvar callbacks = [];\n\t\t\t\t\t\tvar errorHandlers = [];\n\t\t\t\t\t\tvar dependenciesForCallbacks = [];\n\t\t\t\t\t\tfor (var j = 0; j < moduleOutdatedDependencies.length; j++) {\n\t\t\t\t\t\t\tvar dependency = moduleOutdatedDependencies[j];\n\t\t\t\t\t\t\tvar acceptCallback =\n\t\t\t\t\t\t\t\tmodule.hot._acceptedDependencies[dependency];\n\t\t\t\t\t\t\tvar errorHandler =\n\t\t\t\t\t\t\t\tmodule.hot._acceptedErrorHandlers[dependency];\n\t\t\t\t\t\t\tif (acceptCallback) {\n\t\t\t\t\t\t\t\tif (callbacks.indexOf(acceptCallback) !== -1) continue;\n\t\t\t\t\t\t\t\tcallbacks.push(acceptCallback);\n\t\t\t\t\t\t\t\terrorHandlers.push(errorHandler);\n\t\t\t\t\t\t\t\tdependenciesForCallbacks.push(dependency);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (var k = 0; k < callbacks.length; k++) {\n\t\t\t\t\t\t\tvar result;\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tresult = callbacks[k].call(null, moduleOutdatedDependencies);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\tif (typeof errorHandlers[k] === \"function\") {\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\terrorHandlers[k](err, {\n\t\t\t\t\t\t\t\t\t\t\tmoduleId: outdatedModuleId,\n\t\t\t\t\t\t\t\t\t\t\tdependencyId: dependenciesForCallbacks[k]\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} catch (err2) {\n\t\t\t\t\t\t\t\t\t\tif (options.onErrored) {\n\t\t\t\t\t\t\t\t\t\t\toptions.onErrored({\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"accept-error-handler-errored\",\n\t\t\t\t\t\t\t\t\t\t\t\tmoduleId: outdatedModuleId,\n\t\t\t\t\t\t\t\t\t\t\t\tdependencyId: dependenciesForCallbacks[k],\n\t\t\t\t\t\t\t\t\t\t\t\terror: err2,\n\t\t\t\t\t\t\t\t\t\t\t\toriginalError: err\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (!options.ignoreErrored) {\n\t\t\t\t\t\t\t\t\t\t\treportError(err2);\n\t\t\t\t\t\t\t\t\t\t\treportError(err);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (options.onErrored) {\n\t\t\t\t\t\t\t\t\t\toptions.onErrored({\n\t\t\t\t\t\t\t\t\t\t\ttype: \"accept-errored\",\n\t\t\t\t\t\t\t\t\t\t\tmoduleId: outdatedModuleId,\n\t\t\t\t\t\t\t\t\t\t\tdependencyId: dependenciesForCallbacks[k],\n\t\t\t\t\t\t\t\t\t\t\terror: err\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (!options.ignoreErrored) {\n\t\t\t\t\t\t\t\t\t\treportError(err);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (result && typeof result.then === \"function\") {\n\t\t\t\t\t\t\t\tacceptPromises.push(result);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar onAccepted = function () {\n\t\t\t\t// Load self accepted modules\n\t\t\t\tfor (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {\n\t\t\t\t\tvar item = outdatedSelfAcceptedModules[o];\n\t\t\t\t\tvar moduleId = item.module;\n\t\t\t\t\ttry {\n\t\t\t\t\t\titem.require(moduleId);\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tif (typeof item.errorHandler === \"function\") {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\titem.errorHandler(err, {\n\t\t\t\t\t\t\t\t\tmoduleId: moduleId,\n\t\t\t\t\t\t\t\t\tmodule: __webpack_require__.c[moduleId]\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} catch (err1) {\n\t\t\t\t\t\t\t\tif (options.onErrored) {\n\t\t\t\t\t\t\t\t\toptions.onErrored({\n\t\t\t\t\t\t\t\t\t\ttype: \"self-accept-error-handler-errored\",\n\t\t\t\t\t\t\t\t\t\tmoduleId: moduleId,\n\t\t\t\t\t\t\t\t\t\terror: err1,\n\t\t\t\t\t\t\t\t\t\toriginalError: err\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!options.ignoreErrored) {\n\t\t\t\t\t\t\t\t\treportError(err1);\n\t\t\t\t\t\t\t\t\treportError(err);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (options.onErrored) {\n\t\t\t\t\t\t\t\toptions.onErrored({\n\t\t\t\t\t\t\t\t\ttype: \"self-accept-errored\",\n\t\t\t\t\t\t\t\t\tmoduleId: moduleId,\n\t\t\t\t\t\t\t\t\terror: err\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!options.ignoreErrored) {\n\t\t\t\t\t\t\t\treportError(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\treturn Promise.all(acceptPromises)\n\t\t\t\t.then(onAccepted)\n\t\t\t\t.then(function () {\n\t\t\t\t\treturn outdatedModules;\n\t\t\t\t});\n\t\t}\n\t};\n}\n__webpack_require__.hmrI.jsonp = function (moduleId, applyHandlers) {\n\tif (!currentUpdate) {\n\t\tcurrentUpdate = {};\n\t\tcurrentUpdateRuntime = [];\n\t\tcurrentUpdateRemovedChunks = [];\n\t\tapplyHandlers.push(applyHandler);\n\t}\n\tif (!__webpack_require__.o(currentUpdate, moduleId)) {\n\t\tcurrentUpdate[moduleId] = __webpack_require__.m[moduleId];\n\t}\n};\n__webpack_require__.hmrC.jsonp = function (\n\tchunkIds,\n\tremovedChunks,\n\tremovedModules,\n\tpromises,\n\tapplyHandlers,\n\tupdatedModulesList\n) {\n\tapplyHandlers.push(applyHandler);\n\tcurrentUpdateChunks = {};\n\tcurrentUpdateRemovedChunks = removedChunks;\n\tcurrentUpdate = removedModules.reduce(function (obj, key) {\n\t\tobj[key] = false;\n\t\treturn obj;\n\t}, {});\n\tcurrentUpdateRuntime = [];\n\tchunkIds.forEach(function (chunkId) {\n\t\tif (\n\t\t\t__webpack_require__.o(installedChunks, chunkId) &&\n\t\t\tinstalledChunks[chunkId] !== undefined\n\t\t) {\n\t\t\tpromises.push(loadUpdateChunk(chunkId, updatedModulesList));\n\t\t\tcurrentUpdateChunks[chunkId] = true;\n\t\t} else {\n\t\t\tcurrentUpdateChunks[chunkId] = false;\n\t\t}\n\t});\n\tif (__webpack_require__.f) {\n\t\t__webpack_require__.f.jsonpHmr = function (chunkId, promises) {\n\t\t\tif (\n\t\t\t\tcurrentUpdateChunks &&\n\t\t\t\t__webpack_require__.o(currentUpdateChunks, chunkId) &&\n\t\t\t\t!currentUpdateChunks[chunkId]\n\t\t\t) {\n\t\t\t\tpromises.push(loadUpdateChunk(chunkId));\n\t\t\t\tcurrentUpdateChunks[chunkId] = true;\n\t\t\t}\n\t\t};\n\t}\n};\n\n__webpack_require__.hmrM = () => {\n\tif (typeof fetch === \"undefined\") throw new Error(\"No browser support: need fetch API\");\n\treturn fetch(__webpack_require__.p + __webpack_require__.hmrF()).then((response) => {\n\t\tif(response.status === 404) return; // no update available\n\t\tif(!response.ok) throw new Error(\"Failed to fetch update manifest \" + response.statusText);\n\t\treturn response.json();\n\t});\n};\n\n// no on chunks loaded\n\n// no jsonp function","","// module cache are used so entry inlining is disabled\n// startup\n// Load entry module and return exports\nvar __webpack_exports__ = __webpack_require__(\"./src/Module.js\");\n",""],"names":[],"ignoreList":[],"sourceRoot":""}
|