tocco-admin 0.3.29 → 0.3.30-hotfix227.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/changelog.md +21 -0
- package/dist/{1-chunk-796b5d.js → 1-chunk-c4ec4f.js} +1 -2
- package/dist/10-chunk-cfa27b.js +1 -0
- package/dist/{14-chunk-89abff.js → 14-chunk-3ac0b4.js} +1 -2
- package/dist/15-chunk-72ed2f.js +1 -0
- package/dist/{7-chunk-a2ff23.js → 7-chunk-c15594.js} +4 -5
- package/dist/8-chunk-c9a515.js +1 -0
- package/dist/{8-chunk-f59d64.js → 9-chunk-d34475.js} +1 -2
- package/dist/actions-chunk-bb07dc.js +1 -0
- package/dist/{icons-chunk-e6d666.js → icons-chunk-9db2b5.js} +1 -2
- package/dist/index.js +5 -6
- package/dist/{vendors~actions-chunk-91cb58.js → vendors~actions-chunk-99d13a.js} +7 -7
- package/dist/{vendors~flatpickr~icons-chunk-beee50.js → vendors~flatpickr~icons-chunk-2d2c62.js} +2 -2
- package/dist/{vendors~fontawesome-chunk-01d8d7.js → vendors~fontawesome-chunk-17113f.js} +1 -1
- package/dist/{vendors~icons-chunk-18d429.js → vendors~icons-chunk-560138.js} +1 -1
- package/dist/{vendors~libphonenumber-js-chunk-d2a574.js → vendors~libphonenumber-js-chunk-3d5efd.js} +1 -1
- package/dist/{vendors~quill-chunk-dbb538.js → vendors~quill-chunk-723db0.js} +6 -6
- package/package.json +1 -1
- package/dist/1-chunk-796b5d.js.map +0 -1
- package/dist/10-chunk-714f9d.js +0 -2
- package/dist/10-chunk-714f9d.js.map +0 -1
- package/dist/14-chunk-89abff.js.map +0 -1
- package/dist/15-chunk-e4f10b.js +0 -2
- package/dist/15-chunk-e4f10b.js.map +0 -1
- package/dist/7-chunk-a2ff23.js.map +0 -1
- package/dist/8-chunk-f59d64.js.map +0 -1
- package/dist/9-chunk-0fc57a.js +0 -2
- package/dist/9-chunk-0fc57a.js.map +0 -1
- package/dist/actions-chunk-46d61a.js +0 -2
- package/dist/actions-chunk-46d61a.js.map +0 -1
- package/dist/icons-chunk-e6d666.js.map +0 -1
- package/dist/index.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///./packages/admin/src/assets/tocco-circle.svg","webpack:///./packages/admin/src/assets/tocco_red.svg","webpack:///./packages/admin/src/assets/tocco_white.svg","webpack:///./packages/admin/src/components/LoginGuard/favicon.ico","webpack:///./packages/login/src/modules/passwordUpdate/dialog/actions.js","webpack:///./packages/login/src/modules/passwordRequest/actions.js","webpack:///./packages/login/src/modules/login/actions.js","webpack:///./packages/login/src/types/Pages.js","webpack:///./packages/login/src/components/StyledLoginForm.js","webpack:///./packages/login/src/components/LoginForm/LoginForm.js","webpack:///./packages/login/src/components/LoginForm/index.js","webpack:///./packages/login/src/modules/actions.js","webpack:///./packages/login/src/containers/LoginFormContainer.js","webpack:///./packages/login/src/components/passwordUpdate/PasswordUpdateDialog/StyledPasswordInput.js","webpack:///./packages/login/src/components/passwordUpdate/PasswordUpdateDialog/PasswordInput.js","webpack:///./packages/login/src/components/passwordUpdate/PasswordUpdateDialog/StyledPasswordUpdateDialog.js","webpack:///./packages/login/src/components/passwordUpdate/ValidationRules/index.js","webpack:///./packages/login/src/components/passwordUpdate/ValidationRules/ValidationRules.js","webpack:///./packages/login/src/components/passwordUpdate/FailureMessage/messages.js","webpack:///./packages/login/src/components/passwordUpdate/FailureMessage/FailureMessage.js","webpack:///./packages/login/src/components/passwordUpdate/FailureMessage/index.js","webpack:///./packages/login/src/components/passwordUpdate/PasswordUpdateDialog/PasswordUpdateDialog.js","webpack:///./packages/login/src/components/passwordUpdate/PasswordUpdateDialog/index.js","webpack:///./packages/login/src/modules/passwordUpdate/actions.js","webpack:///./packages/login/src/modules/passwordUpdate/password/actions.js","webpack:///./packages/login/src/modules/passwordUpdate/password/validate.js","webpack:///./packages/login/src/modules/passwordUpdate/password/utils.js","webpack:///./packages/login/src/modules/loginForm/actions.js","webpack:///./packages/login/src/modules/sagas.js","webpack:///./packages/login/src/modules/passwordUpdate/password/sagas.js","webpack:///./packages/login/src/modules/passwordUpdate/password/reducer.js","webpack:///./packages/login/src/modules/passwordUpdate/password/index.js","webpack:///./packages/login/src/modules/passwordUpdate/validationRules/actions.js","webpack:///./packages/login/src/modules/passwordUpdate/validationRules/sagas.js","webpack:///./packages/login/src/modules/passwordUpdate/validationRules/reducer.js","webpack:///./packages/login/src/modules/passwordUpdate/validationRules/index.js","webpack:///./packages/login/src/containers/PasswordUpdateDialogContainer.js","webpack:///./packages/login/src/components/PasswordRequest/PasswordRequest.js","webpack:///./packages/login/src/components/PasswordRequest/index.js","webpack:///./packages/login/src/containers/PasswordRequestContainer.js","webpack:///./packages/login/src/components/TwoStepLoginForm/StyledTwoStepLoginForm.js","webpack:///./packages/login/src/components/TwoStepLoginForm/TwoStepLoginForm.js","webpack:///./packages/login/src/components/TwoStepLoginForm/index.js","webpack:///./packages/login/src/modules/twoStepLogin/actions.js","webpack:///./packages/login/src/containers/TwoStepLoginContainer.js","webpack:///./packages/login/src/components/Login/Login.js","webpack:///./packages/login/src/components/Login/index.js","webpack:///./packages/login/src/containers/LoginContainer.js","webpack:///./packages/login/src/modules/passwordUpdate/sagas.js","webpack:///./packages/login/src/modules/passwordUpdate/dialog/reducer.js","webpack:///./packages/login/src/modules/passwordUpdate/dialog/index.js","webpack:///./packages/login/src/modules/passwordUpdate/reducers.js","webpack:///./packages/login/src/modules/login/reducer.js","webpack:///./packages/login/src/modules/login/index.js","webpack:///./packages/login/src/modules/loginForm/reducer.js","webpack:///./packages/login/src/modules/loginForm/index.js","webpack:///./packages/login/src/modules/twoStepLogin/sagas.js","webpack:///./packages/login/src/modules/twoStepLogin/index.js","webpack:///./packages/login/src/modules/passwordRequest/sagas.js","webpack:///./packages/login/src/modules/passwordRequest/reducer.js","webpack:///./packages/login/src/modules/passwordRequest/index.js","webpack:///./packages/login/src/modules/reducers.js","webpack:///./packages/login/src/main.js","webpack:///./packages/sso-login/src/utils/providers.js","webpack:///./packages/sso-login/src/modules/actions.js","webpack:///./packages/sso-login/src/modules/sagas.js","webpack:///./packages/sso-login/src/modules/reducer.js","webpack:///./packages/sso-login/src/modules/index.js","webpack:///./packages/sso-login/src/utils/loginWindow.js","webpack:///./packages/sso-login/src/utils/popUp.js","webpack:///./packages/sso-login/src/components/ProviderButton/StyledProviderButton.js","webpack:///./packages/sso-login/src/components/ProviderButton/ProviderButton.js","webpack:///./packages/sso-login/src/components/LoginBox/LoginBox.js","webpack:///./packages/sso-login/src/components/LoginBox/index.js","webpack:///./packages/sso-login/src/containers/LoginBoxContainer.js","webpack:///./packages/sso-login/src/main.js","webpack:///./packages/admin/src/components/Login/Login.js","webpack:///./packages/admin/src/components/Login/LoginContainer.js","webpack:///./packages/admin/src/components/MenuTree/MenuTree.js","webpack:///./packages/admin/src/components/MenuTree/index.js","webpack:///./packages/admin/src/components/Navigation/StyledComponents.js","webpack:///./packages/admin/src/components/Navigation/Navigation.js","webpack:///./packages/admin/src/components/Navigation/NavigationContainer.js","webpack:///./packages/admin/src/components/Navigation/index.js","webpack:///./packages/admin/src/routes/dashboard/components/Dashboard/Dashboard.js","webpack:///./packages/admin/src/routes/dashboard/components/Dashboard/index.js","webpack:///./packages/tocco-util/src/route/input.js","webpack:///./packages/tocco-util/src/route/index.js","webpack:///./packages/tocco-util/src/route/route.js","webpack:///./packages/tocco-util/src/route/asyncRoute.js","webpack:///./packages/admin/src/routes/entities/index.js","webpack:///./packages/admin/src/routes/settings/components/Settings/Settings.js","webpack:///./packages/admin/src/routes/settings/components/Settings/index.js","webpack:///./packages/admin/src/components/Header/StyledComponents.js","webpack:///./packages/admin/src/components/AboutTocco/AboutTocco.js","webpack:///./packages/admin/src/components/AboutTocco/AboutToccoContainer.js","webpack:///./packages/admin/src/components/Header/Header.js","webpack:///./packages/admin/src/components/Header/HeaderContainer.js","webpack:///./packages/admin/src/components/Admin/StyledComponents.js","webpack:///./packages/admin/src/components/Admin/Admin.js","webpack:///./packages/admin/src/components/Admin/AdminContainer.js","webpack:///./packages/admin/src/components/LoginGuard/LoginGuard.js","webpack:///./packages/admin/src/components/LoginGuard/LoginGuardContainer.js","webpack:///./packages/admin/src/components/LoginGuard/index.js"],"names":["module","exports","setShowOldPasswordField","showOldPasswordField","type","payload","setForcedUpdate","forcedUpdate","setUsername","username","REQUEST_PASSWORD","PASSWORD_REQUEST","setPasswordRequest","passwordRequest","changePage","page","setPassword","password","setCaptchaKey","captchaKey","Pages","LOGIN_FORM","TWOSTEPLOGIN","PASSWORD_UPDATE","StyledLoginFormInput","styled","input","StyledInputCss","StyledLoginFormInputWrapper","div","StyledEditableWrapperCss","StyledLoginButton","Button","scale","font","theme","radii","StyledTransparentButton","color","StyledLoginFormWrapper","StyledButtonGroup","StyledButton","Fragment","H5","id","P","LoginForm","intl","login","loginPending","message","recaptchaActivated","showTitle","useState","autoFill","setAutoFill","recaptchaRef","useRef","msg","formatMessage","useEffect","handleSubmit","e","a","preventDefault","recaptchaToken","current","executeAsync","reset","handleAutoFill","animationName","passwordFocus","usernameFocus","onSubmit","hasValue","label","autoFocus","name","data-cy","onChange","target","value","required","onAnimationStart","onFocus","select","text","List","Item","condition","negative","ref","badge","size","sitekey","hl","locale","disabled","ink","look","pending","onClick","INITIALIZE","LOGIN","mapActionCreators","captchaToken","connect","state","loginForm","injectIntl","StyledPasswordInput","attrs","props","StyledPasswordInputWrapper","PasswordInput","getSignal","undefined","valid","design","SUCCESS","DANGER","immutable","readOnly","signal","onKeyDown","ValidationRules","rules","map","rule","index","errors","error","key","DEFAULT","messages","INVALID_CREDENTIALS","UNEXPECTED_ERROR","FailureMessage","errorCode","DEFAULT_MESSAGE","StyledValidationRulesWrapper","PasswordUpdateDialog","fetchValidationRules","initialized","savePassword","updateNewPassword","updateNewPasswordRepeat","updateOldPassword","validationRules","isSubmittable","newPasswordRepeat","newPassword","passwordUpdatePending","oldPasswordReadOnly","newPasswordReadOnly","oldPassword","newPasswordRepeatReadOnly","newPasswordValidationErrors","Object","keys","length","StyledPasswordUpdateDialog","tabIndex","passwordUpdateFailed","passwordUpdateErrorCode","rulesNeutral","INITIALIZED","UPDATE_OLD_PASSWORD","UPDATE_NEW_PASSWORD","UPDATE_NEW_PASSWORD_REPEAT","SAVE_PASSWORD","VALIDATE","setNewPassword","setNewPasswordValidationErrors","savePasswordSuccess","savePasswordFailure","validationMessages","validate","resetPasswordUpdateFailed","validateCharacterRule","regex","min","max","specificCharsCount","replace","VALIDATORS","params","forEach","validator","validationMessagesToErrorMap","ruleName","setMessage","setPending","activateRecaptcha","doLoginRequest","doSessionRequest","handleTwoStepLoginResponse","handlePasswordUpdateResponse","handleBlockResponse","handleFailedResponse","handleSuccessfulLogin","loginSaga","checkSessionSaga","loadSettings","initialize","mainSagas","DEFAULT_TIMEOUT","textResourceSelector","loginSelector","doRequest","url","options","Promise","resolve","fetch","then","resp","json","consoleLogger","logError","success","data","call","__BACKEND_URL__","getOptions","method","headers","Headers","credentials","body","filter","k","sort","encodeURIComponent","join","put","response","timeout","externalEvents","fireExternalEvent","cache","clear","userCode","loginData","CAPTCHA","RESET_PASSWORD_REQUIRED","LOGIN_BLOCKED","rest","fetchServerSettings","settings","loginActions","all","takeLatest","actions","storePassword","remoteValidate","getData","getLoginData","formChanged","sagas","validationRulesSelector","passwordUpdate","inputSelector","usernameSelector","dialog","passwordSelector","standaloneSelector","standalone","intlSelector","acceptedStatusCodes","requestSaga","ok","exception","queryParams","action","localValidate","object","constructor","result","initialState","ACTION_HANDLERS","reducer","handler","FETCH_VALIDATION_RULES","setValidationRules","loadValidationRules","resource","validationResponse","hot","PasswordRequest","this","requestPassword","setState","bind","handleUsernameChange","React","Component","StyledTwoStepLogin","StyledEditableValue","TwoStepLoginForm","twoStepLogin","setUserCode","formEl","useLayoutEffect","querySelector","focus","events","format","toString","GlobalRecaptchaBadgeStyle","createGlobalStyle","Login","currentPage","PasswordRequestContainer","TwoStepLoginContainer","LoginFormContainer","resizeWatcher","singleTransferReducer","attributeName","val","passwordSagas","validationRulesSagas","reducerUtil","twoStepSaga","rootSaga","args","fork","moduleSagas","requestPasswordSaga","passwordRequestSaga","saga","textResourcesState","combineReducers","passwordUpdateReducers","passwordRequestSagas","twoStepLoginSagas","passwordUpdateSagas","EXTERNAL_EVENTS","initLoginApp","publicPath","customTheme","content","LoginContainer","store","appFactory","createStore","loginReducers","addToStore","errorLogging","createApp","textResourceModules","initPasswordUpdateApp","push","registerAppInRegistry","LoginApp","reduce","event","app","component","transformProviderEntities","provider","_reduce","paths","LOAD_PROVIDERS","LOGIN_COMPLETED","setProviders","providers","loadProviders","loginCompleted","entityName","query","conditions","active","fetchEntities","entities","ssoLogin","openLoginWindow","loginEndpoint","encodedWindowUrl","window","location","href","unique_id","popUp","open","height","width","features","left","screen","top","resizable","scrollbars","status","getPopUpFeatures","ssoPopUpCallback","close","declareInteractionColors","generateInteractionColors","bg","primaryColor","fg","secondaryColor","_get","ProviderButton","StyledProviderButton","button_primary_color","button_secondary_color","button_icon","position","icon","button_label","StyledButtonContainer","LoginBox","prevProps","prevState","snapshot","autoLogin","autoLoginProvider","find","entity","idx","ssoLoginEndpoint","LoginBoxContainer","initApp","reducers","SsoLoginApp","StyledLogin","ToccoLogo","StyledHeadingLogin","StyledH1","StyledSpanLogin","StyledSpan","LoginWrapper","SloganImg","img","StyledImg","StyledSsoMsg","fontWeight","StyledSsoError","breakWords","src","ToccoSlogan","ssoAvailable","loginSuccessful","checkSsoAvailable","showError","setShowError","showRegistrationText","setShowRegistrationText","Cookies","get","successful","registration","set","expires","loginSuccess","session","StyledMenuEntry","declareFont","level","lineHeight","StyledMenuEntryWrapper","space","MenuItem","item","typeMapping","mappedType","menuType","children","child","prepareTree","searchFilter","matchingAttribute","c","filterAttributes","filterAttribute","toLowerCase","includes","MenuTree","memo","items","secondary","secondaryLight","StyledNav","nav","StyledMenuWrapper","StyledScrollbar","span","StyledMenuLink","Link","StyledTabsContainer","StyledNavButton","StyledSearchBoxWrapper","MenuMenuEntry","EntityExplorerMenuEntry","entityNameDisplay","to","ActionMenuEntry","tabs","Navigation","modulesMenuTree","settingsMenuTree","menuOpen","activeMenuTab","setActiveMenuTab","inputEl","navigationEl","setFilter","useMemo","focusableElements","currentIndex","querySelectorAll","findIndex","el","document","activeElement","isEqualNode","SearchBox","minInputLength","onSearch","placeholder","NavigationContainer","navigation","StyledDashBoardWrapper","StyledSlogan","StyledTitle","StyledH3","alt","Dashboard","packageJson","require","version","importRouteDependencies","getComponent","imported","route","injectReducers","sagaUtil","injectSaga","inputDispatches","inputDispatch","actionCreator","mandatory","defaultValue","logger","prototype","hasOwnProperty","dispatch","dispatchInput","container","AsyncComponent","mounted","ignoredAttributes","Consumer","nextProps","diff","js","difference","clean","_omitBy","_omit","v","entries","H2","Settings","StyledHeader","StyledConfig","StyledBackgroundLogo","runEnv","colors","primary","StyledFormattedMessageWrapper","StyledBlockWrapper","AboutTocco","niceVersion","niceRevision","Span","dangerouslySetInnerHTML","__html","neutral","serverSettings","StyledBallMenuWrapper","StyledBall","Header","currentBusinessUnit","businessUnits","loadBusinessUnits","changeBusinessUnit","doLogout","openModalComponent","onOpen","bU","buttonProps","notifier","modalComponent","calcViewportHeight","vh","innerHeight","documentElement","style","setProperty","addEventListener","StyledWrapper","StyledContent","StyledMenu","SlideMenu","burgerMenuStyles","bmBurgerButton","outline","bmBurgerBarsHover","background","bmMenuWrap","minWidth","bmMenu","padding","fontSize","overflow","bmMorphShape","fill","bmItemList","bmItem","display","bmOverlay","Notifier","exact","path","DashboardRoute","EntitiesRoute","withTheme","initializeNavigation","setMenuOpen","baseRoute","confirm","loadPrincipal","clearPersistedViews","loadServerSettings","history","setHistory","initializeHistory","browserHistory","createBrowserHistory","basename","getUserConfirmation","callback","isOpen","onStateChange","customCrossIcon","customBurgerIcon","paper","styles","pageWrapId","outerContainerId","render","match","viewPersistor","Admin","Helmet","defer","rel","fav","sizes","LoginGuard","doSessionCheck","loggedIn","loadingText"],"mappings":"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","file":"9-chunk-0fc57a.js","sourcesContent":["module.exports = __webpack_public_path__ + \"imgs/tocco-circle.svg\";","module.exports = __webpack_public_path__ + \"imgs/tocco_red.svg\";","module.exports = __webpack_public_path__ + \"imgs/tocco_white.svg\";","module.exports = __webpack_public_path__ + \"imgs/favicon.ico\";","export const SET_SHOW_OLD_PASSWORD = 'PasswordUpdateDialog/SET_SHOW_OLD_PASSWORD'\nexport const SET_STANDALONE = 'PasswordUpdateDialog/SET_STANDALONE'\nexport const SET_FORCED_UPDATE = 'PasswordUpdateDialog/SET_FORCED_UPDATE'\nexport const SET_USERNAME = 'PasswordUpdateDialog/SET_USERNAME'\n\nexport const setShowOldPasswordField = showOldPasswordField => ({\n type: SET_SHOW_OLD_PASSWORD,\n payload: {\n showOldPasswordField\n }\n})\n\nexport const setForcedUpdate = forcedUpdate => ({\n type: SET_FORCED_UPDATE,\n payload: {\n forcedUpdate\n }\n})\n\nexport const setStandalone = standalone => ({\n type: SET_STANDALONE,\n payload: {\n standalone\n }\n})\n\nexport const setUsername = username => ({\n type: SET_USERNAME,\n payload: {\n username\n }\n})\n","export const REQUEST_PASSWORD = 'Login/REQUEST_PASSWORD'\nexport const PASSWORD_REQUEST = 'Login/PASSWORD_REQUEST'\nexport const SET_USERNAME = 'Login/SET_USERNAME'\n\nexport const requestPassword = username => ({\n type: REQUEST_PASSWORD,\n payload: {\n username\n }\n})\n\nexport const setPasswordRequest = passwordRequest => ({\n type: PASSWORD_REQUEST,\n payload: {\n passwordRequest\n }\n})\n\nexport const setUsername = username => ({\n type: SET_USERNAME,\n payload: {\n username\n }\n})\n","export const CHANGE_PAGE = 'Login/CHANGE_PAGE'\nexport const SET_USERNAME = 'Login/SET_USERNAME'\nexport const SET_PASSWORD = 'Login/SET_PASSWORD'\nexport const SET_CAPTCHA_KEY = 'login/SET_CAPTCHA_KEY'\n\nexport const changePage = page => ({\n type: CHANGE_PAGE,\n payload: {\n page\n }\n})\n\nexport const setUsername = username => ({\n type: SET_USERNAME,\n payload: {\n username\n }\n})\n\nexport const setPassword = password => ({\n type: SET_PASSWORD,\n payload: {\n password\n }\n})\n\nexport const setCaptchaKey = captchaKey => ({\n type: SET_CAPTCHA_KEY,\n payload: {\n captchaKey\n }\n})\n","export const Pages = {\n LOGIN_FORM: 'LOGIN_FORM',\n PASSWORD_REQUEST: 'PASSWORD_REQUEST',\n TWOSTEPLOGIN: 'TWOSTEPLOGIN',\n PASSWORD_UPDATE: 'PASSWORD_UPDATE'\n}\n","import styled from 'styled-components'\nimport {\n StyledInputCss,\n StyledEditableWrapperCss,\n Button,\n theme,\n scale\n} from 'tocco-ui'\nimport {StyledButton} from 'tocco-ui/src/Button'\nimport {StyledButtonGroup} from 'tocco-ui/src/ButtonGroup'\n\nexport const StyledLoginFormInput = styled.input`\n /* stylelint-disable-next-line block-no-empty */\n @keyframes onAutoFillStart {\n from {}\n }\n\n && {\n transition: background-color 50000s, color 50000s, filter 50000s;\n\n &:-webkit-autofill {\n animation-duration: 50000s;\n animation-name: onAutoFillStart;\n }\n padding-top: .7rem;\n padding-bottom: .7rem;\n }\n ${StyledInputCss}\n`\n\nexport const StyledLoginFormInputWrapper = styled.div`\n && {\n ${StyledEditableWrapperCss}\n }\n`\n\nexport const StyledLoginButton = styled(Button)`\n &&& {\n font-size: ${scale.font(1.3)};\n border-radius: ${theme.radii('large')};\n display: flex;\n justify-content: center;\n padding: 1.25rem 0;\n width: 100%;\n margin-top: 20px;\n margin-bottom: 10px;\n\n &:not(:last-child) {\n margin-right: 0;\n }\n }\n`\n\nexport const StyledTransparentButton = styled(Button)`\n &&& {\n margin-right: 0;\n background-color: transparent;\n color: ${theme.color('primary')};\n padding: 1.25rem 0;\n width: 100%;\n justify-content: center;\n\n &:hover {\n background-color: transparent;\n }\n }\n`\n\nexport const StyledLoginFormWrapper = styled.div`\n ${StyledButtonGroup} {\n margin-top: 1.8rem;\n width: auto;\n flex-direction: column;\n\n ${StyledButton} {\n flex-grow: 1;\n }\n }\n`\n","import PropTypes from 'prop-types'\nimport React, {useEffect, useState, useRef} from 'react'\nimport {FormattedMessage, intlShape} from 'react-intl'\nimport {\n SignalList,\n StatedValue,\n Typography\n} from 'tocco-ui'\nimport ReCAPTCHA from 'react-google-recaptcha'\n\nimport {\n StyledLoginFormInput,\n StyledLoginFormInputWrapper,\n StyledLoginFormWrapper,\n StyledTransparentButton,\n StyledLoginButton\n} from '../StyledLoginForm'\nimport {Pages} from '../../types/Pages'\n\nconst LoginForm = ({\n captchaKey,\n changePage,\n intl,\n login,\n loginPending,\n message,\n password,\n recaptchaActivated,\n setPassword,\n setUsername,\n showTitle,\n username\n}) => {\n const [autoFill, setAutoFill] = useState(false)\n const recaptchaRef = useRef()\n\n const msg = id => intl.formatMessage({id})\n\n useEffect(() => {\n if (recaptchaActivated) {\n handleSubmit()\n }\n }, [recaptchaActivated])\n\n const handleSubmit = async e => {\n if (e) {\n e.preventDefault()\n }\n\n let recaptchaToken = null\n if (recaptchaActivated) {\n recaptchaToken = await recaptchaRef.current.executeAsync()\n recaptchaRef.current.reset()\n }\n\n login(username, password, recaptchaToken)\n }\n\n const handleUsernameChange = e => {\n setUsername(e.target.value)\n setAutoFill(false)\n }\n\n const handlePasswordChange = e => {\n setPassword(e.target.value)\n setAutoFill(false)\n }\n\n const handleAutoFill = e => {\n if (e.animationName === 'onAutoFillStart') {\n setAutoFill(true)\n }\n }\n\n const passwordFocus = !!username\n const usernameFocus = !passwordFocus\n\n return <StyledLoginFormWrapper>\n {showTitle\n && <React.Fragment>\n <Typography.H5><FormattedMessage id=\"client.login.form.title\"/></Typography.H5>\n <Typography.P><FormattedMessage id=\"client.login.form.introduction\"/></Typography.P>\n </React.Fragment>}\n <form onSubmit={handleSubmit}>\n <StatedValue\n hasValue={!!username || autoFill}\n id=\"login-username\"\n label={msg('client.login.form.userPlaceholder')}\n >\n <StyledLoginFormInputWrapper>\n <StyledLoginFormInput\n autoFocus={usernameFocus}\n name=\"user\"\n data-cy=\"login-form_user-input\"\n onChange={handleUsernameChange}\n required\n type=\"text\"\n value={username}\n onAnimationStart={handleAutoFill}\n onFocus={e => e.target.select()}\n />\n </StyledLoginFormInputWrapper>\n </StatedValue>\n\n <StatedValue\n hasValue={!!password || autoFill}\n id=\"login-password\"\n label={msg('client.login.form.passwordPlaceholder')}\n >\n <StyledLoginFormInputWrapper>\n <StyledLoginFormInput\n autoFocus={passwordFocus}\n name=\"password\"\n data-cy=\"login-form_password-input\"\n onChange={handlePasswordChange}\n required\n type=\"password\"\n value={password}\n onAnimationStart={handleAutoFill}\n onFocus={e => e.target.select()}\n />\n </StyledLoginFormInputWrapper>\n </StatedValue>\n\n {\n message && message.text\n && <SignalList.List>\n <SignalList.Item\n condition={message.negative ? 'danger' : 'base'}\n label={message.text}\n />\n </SignalList.List>\n }\n {captchaKey && recaptchaActivated && <ReCAPTCHA\n ref={recaptchaRef}\n badge=\"bottomright\"\n size=\"invisible\"\n sitekey={captchaKey}\n hl={intl.locale}\n />}\n <StyledLoginButton\n disabled={!autoFill && (loginPending || username === '' || password === '')}\n ink=\"primary\"\n look=\"raised\"\n label={msg('client.login.form.button')}\n pending={loginPending}\n type=\"submit\"\n data-cy=\"login-form_login-button\"\n />\n <StyledTransparentButton\n label={msg('client.login.form.forgotLink')}\n onClick={() => changePage(Pages.PASSWORD_REQUEST)}\n data-cy=\"login-form_request-button\"\n />\n </form>\n </StyledLoginFormWrapper>\n}\n\nLoginForm.propTypes = {\n captchaKey: PropTypes.string,\n changePage: PropTypes.func.isRequired,\n intl: intlShape.isRequired,\n login: PropTypes.func.isRequired,\n loginPending: PropTypes.bool.isRequired,\n message: PropTypes.shape({\n negative: PropTypes.bool,\n text: PropTypes.string\n }),\n password: PropTypes.string,\n recaptchaActivated: PropTypes.bool,\n setPassword: PropTypes.func.isRequired,\n setUsername: PropTypes.func.isRequired,\n showTitle: PropTypes.bool,\n username: PropTypes.string\n}\n\nexport default LoginForm\n","import LoginForm from './LoginForm'\n\nexport default LoginForm\n","export const INITIALIZE = 'login/INITIALIZE'\nexport const INITIALIZED = 'Login/INITIALIZED'\nexport const LOGIN = 'Login/LOGIN'\n\nexport const initialized = () => ({\n type: INITIALIZED\n})\n\nexport const login = (username, password, captchaToken) => ({\n type: LOGIN,\n payload: {\n username,\n password,\n captchaToken\n }\n})\n\nexport const initialize = () => ({\n type: INITIALIZE\n})\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\n\nimport LoginForm from '../components/LoginForm'\nimport {changePage, setUsername, setPassword} from '../modules/login/actions'\nimport {login} from '../modules/actions'\n\nconst mapActionCreators = {\n changePage,\n setUsername,\n setPassword,\n login\n}\n\nconst mapStateToProps = state => ({\n username: state.login.username,\n password: state.login.password,\n message: state.loginForm.message,\n loginPending: state.loginForm.loginPending,\n captchaKey: state.login.captchaKey,\n recaptchaActivated: state.loginForm.recaptchaActivated\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(LoginForm))\n","import styled from 'styled-components'\nimport {\n StyledInputCss,\n StyledEditableWrapperCss\n} from 'tocco-ui'\n\nexport const StyledPasswordInput = styled.input.attrs(props => ({\n type: 'password'\n}))`\n && {\n ${StyledInputCss}\n }\n`\n\nexport const StyledPasswordInputWrapper = styled.div`\n && {\n ${StyledEditableWrapperCss}\n }\n`\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport {design, StatedValue} from 'tocco-ui'\n\nimport {StyledPasswordInput, StyledPasswordInputWrapper} from './StyledPasswordInput'\n\nconst PasswordInput = props => {\n const getSignal = props.value\n ? props.valid === undefined\n ? null\n : props.valid\n ? design.condition.SUCCESS\n : design.condition.DANGER\n : null\n\n return (\n <StatedValue\n hasValue={!!props.value}\n id={`${props.name}-input`}\n immutable={props.readOnly === true}\n label={props.label}\n signal={getSignal}\n >\n <StyledPasswordInputWrapper immutable={props.readOnly === true}>\n <StyledPasswordInput\n id={`${props.name}-input`}\n value={props.value}\n onChange={e => props.onChange(e.target.value)}\n disabled={props.readOnly === true}\n immutable={props.readOnly === true}\n onKeyDown={props.onKeyDown}\n autoFocus={props.autoFocus}\n />\n </StyledPasswordInputWrapper>\n </StatedValue>\n )\n}\n\nPasswordInput.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n value: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n readOnly: PropTypes.bool,\n onKeyDown: PropTypes.func,\n autoFocus: PropTypes.bool,\n valid: PropTypes.bool\n}\n\nexport default PasswordInput\n","import styled from 'styled-components'\nimport {StyledButton} from 'tocco-ui/src/Button'\n\nexport default styled.div`\n ${StyledButton} {\n width: 100%;\n }\n`\n","import ValidationRules from './ValidationRules'\n\nexport default ValidationRules\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport {design, SignalList} from 'tocco-ui'\n\nconst ValidationRules = props => (\n <SignalList.List>\n {props.rules.map((rule, index) => {\n let condition = null\n\n let message = rule.message\n\n if (props.errors) {\n const error = props.errors[rule.name]\n if (error === true) {\n condition = design.condition.DANGER\n } else if (typeof error === 'string') {\n condition = design.condition.DANGER\n message = error\n } else {\n condition = design.condition.SUCCESS\n }\n }\n\n return (\n <SignalList.Item\n condition={condition}\n key={index}\n label={message}\n />\n )\n })}\n </SignalList.List>\n)\n\nValidationRules.propTypes = {\n errors: PropTypes.object,\n rules: PropTypes.array.isRequired,\n rulesNeutral: PropTypes.bool\n}\n\nexport default ValidationRules\n","export const DEFAULT = 'client.login.passwordUpdate.failure'\n\nexport const messages = {\n INVALID_CREDENTIALS: 'client.login.passwordUpdate.invalidCredentials',\n UNEXPECTED_ERROR: 'client.login.passwordUpdate.unexpectedError'\n}\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport {FormattedMessage} from 'react-intl'\nimport {design, SignalList} from 'tocco-ui'\n\nimport {messages, DEFAULT as DEFAULT_MESSAGE} from './messages'\n\nfunction getMessage(errorCode) {\n return messages[errorCode] || DEFAULT_MESSAGE\n}\n\nconst FailureMessage = props => (\n <SignalList.List>\n <SignalList.Item condition={design.condition.DANGER}>\n <FormattedMessage id={getMessage(props.errorCode)}/>\n </SignalList.Item>\n </SignalList.List>\n)\n\nFailureMessage.propTypes = {\n errorCode: PropTypes.string\n}\n\nexport default FailureMessage\n","import FailureMessage from './FailureMessage'\n\nexport default FailureMessage\n","import PropTypes from 'prop-types'\nimport React, {useRef, useEffect} from 'react'\nimport {FormattedMessage, intlShape} from 'react-intl'\nimport {LoadMask, SignalList, Typography} from 'tocco-ui'\nimport styled from 'styled-components'\nimport ReCAPTCHA from 'react-google-recaptcha'\n\nimport PasswordInput from './PasswordInput'\nimport StyledPasswordUpdateDialog from './StyledPasswordUpdateDialog'\nimport ValidationRules from '../ValidationRules'\nimport FailureMessage from '../FailureMessage'\nimport {StyledLoginButton} from '../../StyledLoginForm'\n\nconst StyledValidationRulesWrapper = styled.div`\n margin: 1rem;\n`\n\nconst PasswordUpdateDialog = ({\n captchaKey,\n fetchValidationRules,\n forcedUpdate,\n initialized,\n intl,\n password,\n savePassword,\n showOldPasswordField,\n showTitle,\n updateNewPassword,\n updateNewPasswordRepeat,\n updateOldPassword,\n validationRules\n}) => {\n const recaptchaRef = useRef()\n\n useEffect(() => {\n fetchValidationRules()\n }, [])\n\n useEffect(() => {\n if (validationRules) {\n initialized()\n }\n }, [validationRules])\n\n const handleSubmit = async e => {\n e.preventDefault()\n\n if (isSubmittable() === true) {\n const recaptchaToken = await recaptchaRef.current.executeAsync()\n recaptchaRef.current.reset()\n savePassword(recaptchaToken)\n }\n }\n\n const isSubmittable = () => {\n if (!password.newPasswordRepeat) {\n return false\n }\n if (password.newPassword !== password.newPasswordRepeat) {\n return false\n }\n if (password.passwordUpdatePending) {\n return false\n }\n return true\n }\n\n const msg = id => intl.formatMessage({id})\n\n if (!validationRules) {\n return <LoadMask/>\n }\n\n const oldPasswordReadOnly = password.passwordUpdatePending\n const newPasswordReadOnly = (!password.oldPassword && showOldPasswordField)\n || password.passwordUpdatePending\n const newPasswordRepeatReadOnly = !password.newPassword\n || password.passwordUpdatePending\n || (password.newPasswordValidationErrors && Object.keys(password.newPasswordValidationErrors).length > 0)\n\n return <StyledPasswordUpdateDialog>\n {showTitle\n && <Typography.H5><FormattedMessage id=\"client.login.passwordUpdate.title\"/></Typography.H5>}\n {forcedUpdate\n && <Typography.P><FormattedMessage id=\"client.login.passwordUpdate.introduction\"/></Typography.P>}\n <form onSubmit={handleSubmit}>\n {showOldPasswordField === true\n && <PasswordInput\n tabIndex={1}\n label={msg('client.login.passwordUpdate.oldPassword')}\n name=\"oldPassword\"\n value={password.oldPassword}\n onChange={updateOldPassword}\n readOnly={oldPasswordReadOnly}\n autoFocus\n {...(password.passwordUpdateFailed && password.passwordUpdateErrorCode === 'INVALID_CREDENTIALS'\n && {valid: false})\n }\n />}\n <PasswordInput\n tabIndex={2}\n label={msg('client.login.passwordUpdate.newPassword')}\n name=\"newPassword\"\n value={password.newPassword}\n onChange={updateNewPassword}\n readOnly={newPasswordReadOnly}\n autoFocus={showOldPasswordField !== true}\n valid={!newPasswordRepeatReadOnly}\n />\n <StyledValidationRulesWrapper>\n <ValidationRules\n rules={validationRules}\n errors={password.newPasswordValidationErrors}\n rulesNeutral={!password.newPassword}\n />\n </StyledValidationRulesWrapper>\n <PasswordInput\n tabIndex={3}\n label={msg('client.login.passwordUpdate.newPasswordRepeat')}\n name=\"newPasswordRepeat\"\n value={password.newPasswordRepeat}\n onChange={updateNewPasswordRepeat}\n readOnly={newPasswordRepeatReadOnly}\n valid={isSubmittable()}\n />\n\n {\n password.newPasswordRepeat\n && password.newPassword !== password.newPasswordRepeat\n && <SignalList.List>\n <SignalList.Item condition=\"danger\" label={<FormattedMessage id=\"client.login.passwordUpdate.noMatch\"/>}/>\n </SignalList.List>\n }\n\n {password.passwordUpdateFailed === true && <FailureMessage errorCode={password.passwordUpdateErrorCode}/>}\n <StyledLoginButton\n pending={password.passwordUpdatePending}\n disabled={isSubmittable() === false}\n ink=\"primary\"\n label={msg('client.login.passwordUpdate.saveButton')}\n look=\"raised\"\n type=\"submit\"\n />\n {captchaKey && <ReCAPTCHA\n ref={recaptchaRef}\n badge=\"bottomright\"\n size=\"invisible\"\n sitekey={captchaKey}\n hl={intl.locale}\n />}\n </form>\n </StyledPasswordUpdateDialog>\n}\n\nPasswordUpdateDialog.propTypes = {\n captchaKey: PropTypes.string,\n fetchValidationRules: PropTypes.func.isRequired,\n forcedUpdate: PropTypes.bool,\n initialized: PropTypes.func.isRequired,\n intl: intlShape.isRequired,\n password: PropTypes.shape({\n newPassword: PropTypes.string.isRequired,\n newPasswordRepeat: PropTypes.string.isRequired,\n newPasswordValidationErrors: PropTypes.object,\n oldPassword: PropTypes.string.isRequired,\n passwordUpdateErrorCode: PropTypes.string,\n passwordUpdateFailed: PropTypes.bool,\n passwordUpdatePending: PropTypes.bool.isRequired\n }).isRequired,\n savePassword: PropTypes.func.isRequired,\n showOldPasswordField: PropTypes.bool,\n showTitle: PropTypes.bool,\n updateNewPassword: PropTypes.func.isRequired,\n updateNewPasswordRepeat: PropTypes.func.isRequired,\n updateOldPassword: PropTypes.func.isRequired,\n validationRules: PropTypes.array\n}\n\nexport default PasswordUpdateDialog\n","import PasswordUpdateDialog from './PasswordUpdateDialog'\n\nexport default PasswordUpdateDialog\n","export const INITIALIZED = 'INITIALIZED'\n\nexport const initialized = () => ({\n type: INITIALIZED\n})\n","export const UPDATE_OLD_PASSWORD = 'PasswordUpdateDialog/UPDATE_OLD_PASSWORD'\nexport const UPDATE_NEW_PASSWORD = 'PasswordUpdateDialog/UPDATE_NEW_PASSWORD'\nexport const SET_NEW_PASSWORD = 'PasswordUpdateDialog/SET_NEW_PASSWORD'\nexport const SET_NEW_PASSWORD_VALIDATION_ERRORS = 'PasswordUpdateDialog/SET_NEW_PASSWORD_VALIDATION_ERRORS'\nexport const UPDATE_NEW_PASSWORD_REPEAT = 'PasswordUpdateDialog/UPDATE_NEW_PASSWORD_REPEAT'\nexport const SAVE_PASSWORD = 'PasswordUpdateDialog/SAVE_PASSWORD'\nexport const SAVE_PASSWORD_SUCCESS = 'PasswordUpdateDialog/SAVE_PASSWORD_SUCCESS'\nexport const SAVE_PASSWORD_FAILURE = 'PasswordUpdateDialog/SAVE_PASSWORD_FAILURE'\nexport const VALIDATE = 'PasswordUpdateDialog/VALIDATE'\nexport const RESET_PASSWORD_UPDATED_FAILED = 'PasswordUpdateDialog/RESET_PASSWORD_UPDATED_FAILED'\n\nexport const updateOldPassword = oldPassword => ({\n type: UPDATE_OLD_PASSWORD,\n payload: {\n oldPassword\n }\n})\n\nexport const updateNewPassword = newPassword => ({\n type: UPDATE_NEW_PASSWORD,\n payload: {\n newPassword\n }\n})\n\nexport const setNewPassword = newPassword => ({\n type: SET_NEW_PASSWORD,\n payload: {\n newPassword\n }\n})\n\nexport const setNewPasswordValidationErrors = errors => ({\n type: SET_NEW_PASSWORD_VALIDATION_ERRORS,\n payload: {\n errors\n }\n})\n\nexport const updateNewPasswordRepeat = newPasswordRepeat => ({\n type: UPDATE_NEW_PASSWORD_REPEAT,\n payload: {\n newPasswordRepeat\n }\n})\n\nexport const savePassword = captchaToken => ({\n type: SAVE_PASSWORD,\n payload: {\n captchaToken\n }\n})\n\nexport const savePasswordSuccess = () => ({\n type: SAVE_PASSWORD_SUCCESS\n})\n\nexport const savePasswordFailure = (errorCode, validationMessages) => ({\n type: SAVE_PASSWORD_FAILURE,\n payload: {\n errorCode,\n validationMessages\n }\n})\n\nexport const validate = () => ({\n type: VALIDATE\n})\n\nexport const resetPasswordUpdateFailed = () => ({\n type: RESET_PASSWORD_UPDATED_FAILED\n})\n","export const RULE_PASSWORD_NOT_CHANGED = 'PASSWORD_NOT_CHANGED'\nexport const RULE_LENGTH = 'LENGTH'\nexport const RULE_CHARACTER_INSUFFICIENT_LOWERCASE = 'CHARACTER_INSUFFICIENT_LOWERCASE'\nexport const RULE_CHARACTER_INSUFFICIENT_UPPERCASE = 'CHARACTER_INSUFFICIENT_UPPERCASE'\nexport const RULE_CHARACTER_INSUFFICIENT_DIGIT = 'CHARACTER_INSUFFICIENT_DIGIT'\n\nfunction validateCharacterRule(password, regex, min, max) {\n if (typeof password !== 'string') {\n return false\n }\n\n const initialLength = password.length\n const lengthWithoutSpecificChars = password.replace(regex, '').length\n const specificCharsCount = initialLength - lengthWithoutSpecificChars\n\n return (min === undefined || min === null || specificCharsCount >= min)\n && (max === undefined || max === null || specificCharsCount <= max)\n}\n\nconst VALIDATORS = {\n [RULE_PASSWORD_NOT_CHANGED]: (newPassword, oldPassword) =>\n typeof newPassword === 'string' && typeof oldPassword === 'string' && newPassword !== oldPassword,\n [RULE_LENGTH]: (newPassword, oldPassword, rule) =>\n typeof newPassword === 'string'\n && (rule.params.min === undefined || rule.params.min === null || newPassword.length >= rule.params.min)\n && (rule.params.max === undefined || rule.params.max === null || newPassword.length <= rule.params.max),\n [RULE_CHARACTER_INSUFFICIENT_LOWERCASE]: (newPassword, oldPassword, rule) =>\n validateCharacterRule(newPassword, /[a-z]/g, rule.params.min, rule.params.max),\n [RULE_CHARACTER_INSUFFICIENT_UPPERCASE]: (newPassword, oldPassword, rule) =>\n validateCharacterRule(newPassword, /[A-Z]/g, rule.params.min, rule.params.max),\n [RULE_CHARACTER_INSUFFICIENT_DIGIT]: (newPassword, oldPassword, rule) =>\n validateCharacterRule(newPassword, /[0-9]/g, rule.params.min, rule.params.max)\n}\n\nfunction validate(newPassword, oldPassword, validationRules) {\n const errors = {}\n\n if (validationRules) {\n validationRules.forEach(rule => {\n const validator = VALIDATORS[rule.name]\n if (validator) {\n const valid = validator(newPassword, oldPassword, rule)\n if (valid !== true) {\n errors[rule.name] = true\n }\n }\n })\n }\n\n return errors\n}\n\nexport default validate\n","export function isEmptyObject(object) {\n // http://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object\n return Object.keys(object).length === 0 && object.constructor === Object\n}\n\nexport function validationMessagesToErrorMap(messages) {\n const errors = {}\n messages.forEach(message => {\n errors[message.ruleName] = message.message\n })\n return errors\n}\n","export const SET_MESSAGE = 'Login/SET_MESSAGE'\nexport const SET_PENDING = 'Login/SET_PENDING'\nexport const ACTIVATE_RECAPTCHA = 'loginForm/ACTIVATE_RECAPTCHA'\r\n\nexport const setMessage = (text, negative = false) => ({\n type: SET_MESSAGE,\n payload: {\n text,\n negative\n }\n})\n\nexport const setPending = (pending = false) => ({\n type: SET_PENDING,\n payload: {\n pending\n }\n})\n\nexport const activateRecaptcha = () => ({\n type: ACTIVATE_RECAPTCHA\n})\n","import {consoleLogger, cache} from 'tocco-util'\nimport {externalEvents, rest} from 'tocco-app-extensions'\nimport {takeLatest, put, select, call, all} from 'redux-saga/effects'\n\nimport * as actions from './actions'\nimport * as loginActions from './login/actions'\nimport {setMessage, setPending, activateRecaptcha} from './loginForm/actions'\nimport {updateOldPassword} from './passwordUpdate/password/actions'\nimport {setUsername, setForcedUpdate} from './passwordUpdate/dialog/actions'\nimport {changePage, setPassword} from './login/actions'\nimport {Pages} from '../types/Pages'\n\nexport const DEFAULT_TIMEOUT = 30\n\nexport const textResourceSelector = (state, key) => state.intl.messages[key] || key\nexport const loginSelector = state => state.login\n\nexport function doRequest(url, options) {\n return new Promise(resolve => {\n fetch(url, options)\n .then(resp => resp.json().then(json => resolve(json)))\n .catch(e => {\n consoleLogger.logError('Failed to execute request', e)\n resolve({success: false})\n })\n })\n}\n\nexport function* doLoginRequest(data) {\n return yield call(doRequest, `${__BACKEND_URL__}/nice2/login`, getOptions(data))\n}\n\nexport function* doSessionRequest() {\n return yield call(doRequest, `${__BACKEND_URL__}/nice2/session`, getOptions())\n}\n\nfunction getOptions(data = {}) {\n return {\n method: 'POST',\n headers: new Headers({\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'\n }),\n credentials: 'include',\n body: Object.keys(data)\n .filter(k => !!data[k])\n .sort()\n .map(k => `${encodeURIComponent(k)}=${encodeURIComponent(data[k])}`).join('&')\n }\n}\n\nexport function* handleTwoStepLoginResponse() {\n yield put(changePage(Pages.TWOSTEPLOGIN))\n}\n\nexport function* handlePasswordUpdateResponse() {\n const login = yield select(loginSelector)\n yield put(updateOldPassword(login.password))\n yield put(setUsername(login.username))\n yield put(setForcedUpdate(true))\n yield put(changePage(Pages.PASSWORD_UPDATE))\n}\n\nexport function* handleBlockResponse() {\n const text = yield select(textResourceSelector, 'client.login.form.blocked')\n yield put(setMessage(text, true))\n}\n\nexport function* handleFailedResponse() {\n const text = yield select(textResourceSelector, 'client.login.form.failed')\n yield put(setMessage(text, true))\n}\n\nexport function* handleSuccessfulLogin(response) {\n const timeout = response.timeout || DEFAULT_TIMEOUT\n yield put(externalEvents.fireExternalEvent('loginSuccess', {timeout}))\n yield call(cache.clear)\n yield put(setPassword(''))\n}\n\nexport function* loginSaga({payload}) {\n const {username, password, captchaToken, userCode} = payload\n const loginData = {\n username,\n password,\n ...(captchaToken && {captchaToken}),\n ...(userCode && {userCode})\n }\n yield put(setPending(true))\n\n const response = yield call(doLoginRequest, loginData)\n if (response.success) {\n yield call(handleSuccessfulLogin, response)\n } else {\n yield put(changePage(Pages.LOGIN_FORM)) // in order to display possible error message\n if (response.CAPTCHA) {\n yield put(activateRecaptcha())\n } else if (response.TWOSTEPLOGIN) {\n yield call(handleTwoStepLoginResponse, response)\n } else if (response.RESET_PASSWORD_REQUIRED) {\n yield call(handlePasswordUpdateResponse)\n } else if (response.LOGIN_BLOCKED) {\n yield call(handleBlockResponse)\n } else {\n yield call(handleFailedResponse)\n }\n yield put(setPending(false))\n }\n}\n\nexport function* checkSessionSaga() {\n const response = yield call(doSessionRequest)\n\n if (response.success) {\n yield call(handleSuccessfulLogin, response)\n }\n}\n\nexport function* loadSettings() {\n const settings = yield call(rest.fetchServerSettings)\n yield put(loginActions.setCaptchaKey(settings.captchaKey))\n}\n\nexport function* initialize() {\n yield call(checkSessionSaga)\n yield call(loadSettings)\n}\n\nexport default function* mainSagas() {\n yield all([\n takeLatest(actions.LOGIN, loginSaga),\n takeLatest(actions.INITIALIZE, initialize)\n ])\n}\n","import {externalEvents, rest} from 'tocco-app-extensions'\nimport {takeLatest, call, select, put, all} from 'redux-saga/effects'\n\nimport * as actions from './actions'\nimport localValidate from './validate'\nimport {isEmptyObject, validationMessagesToErrorMap} from './utils'\nimport {loginSaga} from '../../sagas'\nimport {setPassword} from '../../login/actions'\n\nexport const validationRulesSelector = state => state.passwordUpdate.validationRules\nexport const inputSelector = state => state.input\nexport const usernameSelector = state => state.passwordUpdate.dialog.username\nexport const passwordSelector = state => state.passwordUpdate.password\nexport const standaloneSelector = state => state.passwordUpdate.dialog.standalone\nexport const intlSelector = state => state.intl\n\nexport function* storePassword(username, data, captchaToken) {\n const options = {\n method: 'POST',\n acceptedStatusCodes: [400],\n body: {\n ...data,\n captchaToken\n }\n }\n\n try {\n const resp = yield call(rest.requestSaga, `principals/${username}/password-update`, options)\n return resp.ok ? {error: null} : {error: resp.body}\n } catch (exception) {\n return {error: {errorCode: 'UNEXPECTED_ERROR', exception}}\n }\n}\n\nexport function* remoteValidate(username, data) {\n const {locale} = yield select(intlSelector)\n\n const options = {\n method: 'POST',\n body: data,\n queryParams: {locale}\n }\n\n try {\n const resp = yield call(rest.requestSaga, `principals/${username}/password-validation`, options)\n return resp.body\n } catch (exception) {\n // validation request failed for some reason. we ignore that.\n // (validation takes place on actual update request again)\n return {valid: true, exception}\n }\n}\n\nexport function* updateNewPassword(action) {\n yield put(actions.setNewPassword(action.payload.newPassword))\n yield put(actions.validate())\n}\n\nexport function* validate() {\n const validationRules = yield select(validationRulesSelector)\n const password = yield select(passwordSelector)\n\n const errors = localValidate(password.newPassword, password.oldPassword, validationRules)\n\n if (!isEmptyObject(errors)) {\n yield put(actions.setNewPasswordValidationErrors(errors))\n } else {\n const username = yield select(usernameSelector)\n const data = yield call(getData)\n const result = yield call(remoteValidate, username, data)\n if (result.valid === true) {\n yield put(actions.setNewPasswordValidationErrors({}))\n } else {\n const errors = validationMessagesToErrorMap(result.validationMessages)\n yield put(actions.setNewPasswordValidationErrors(errors))\n }\n }\n}\n\nexport function* savePassword({payload: {captchaToken}}) {\n const username = yield select(usernameSelector)\n const data = yield call(getData)\n const result = yield call(storePassword, username, data, captchaToken)\n\n if (result.error) {\n if (result.error.valid === false) {\n yield put(actions.savePasswordFailure(null, result.error.validationMessages))\n } else {\n yield put(actions.savePasswordFailure(result.error.errorCode))\n }\n } else {\n const standalone = yield select(standaloneSelector)\n if (standalone) {\n yield put(externalEvents.fireExternalEvent('success', {\n newPassword: data.newPassword\n }))\n } else {\n const loginData = yield call(getLoginData)\n yield put(setPassword(loginData.payload.password))\n yield call(loginSaga, loginData)\n }\n\n yield put(actions.savePasswordSuccess())\n }\n}\n\nexport function* getData() {\n const input = yield select(inputSelector)\n const password = yield select(passwordSelector)\n\n return {\n oldPassword: input.oldPassword ? input.oldPassword : password.oldPassword,\n newPassword: password.newPassword\n }\n}\n\nexport function* getLoginData() {\n const password = yield select(passwordSelector)\n const username = yield select(usernameSelector)\n\n return {\n payload: {\n username,\n password: password.newPasswordRepeat\n }\n }\n}\n\nexport function* formChanged() {\n yield put(actions.resetPasswordUpdateFailed())\n}\n\nexport default function* sagas() {\n yield all([\n takeLatest(actions.UPDATE_NEW_PASSWORD, updateNewPassword),\n takeLatest(actions.VALIDATE, validate),\n takeLatest(actions.SAVE_PASSWORD, savePassword),\n takeLatest(actions.UPDATE_NEW_PASSWORD, formChanged),\n takeLatest(actions.UPDATE_OLD_PASSWORD, formChanged),\n takeLatest(actions.UPDATE_NEW_PASSWORD_REPEAT, formChanged)\n ])\n}\n","import * as actions from './actions'\nimport {validationMessagesToErrorMap} from './utils'\n\nconst initialState = {\n oldPassword: '',\n newPassword: '',\n newPasswordRepeat: '',\n newPasswordValidationErrors: null,\n passwordUpdatePending: false,\n passwordUpdateFailed: false,\n passwordUpdateErrorCode: null\n}\n\nconst updateOldPassword = (state, {payload}) => ({\n ...state,\n oldPassword: payload.oldPassword\n})\n\nconst setNewPassword = (state, {payload}) => ({\n ...state,\n newPassword: payload.newPassword\n})\n\nconst setNewPasswordValidationErrors = (state, {payload}) => ({\n ...state,\n newPasswordValidationErrors: payload.errors\n})\n\nconst updateNewPasswordRepeat = (state, {payload}) => ({\n ...state,\n newPasswordRepeat: payload.newPasswordRepeat\n})\n\nconst savePassword = state => ({\n ...state,\n passwordUpdatePending: true,\n passwordUpdateFailed: false\n})\n\nconst savePasswordSuccess = state => (\n initialState\n)\n\nconst savePasswordFailure = (state, {payload}) => {\n if (payload.validationMessages) {\n const errors = validationMessagesToErrorMap(payload.validationMessages)\n return {\n ...state,\n passwordUpdatePending: false,\n newPasswordValidationErrors: errors\n }\n } else {\n return {\n ...state,\n passwordUpdatePending: false,\n passwordUpdateFailed: true,\n passwordUpdateErrorCode: payload.errorCode\n }\n }\n}\n\nconst resetPasswordUpdateFailed = (state, {payload}) => ({\n ...state,\n passwordUpdateFailed: false\n})\n\nconst ACTION_HANDLERS = {\n [actions.UPDATE_OLD_PASSWORD]: updateOldPassword,\n [actions.SET_NEW_PASSWORD]: setNewPassword,\n [actions.SET_NEW_PASSWORD_VALIDATION_ERRORS]: setNewPasswordValidationErrors,\n [actions.UPDATE_NEW_PASSWORD_REPEAT]: updateNewPasswordRepeat,\n [actions.SAVE_PASSWORD]: savePassword,\n [actions.SAVE_PASSWORD_SUCCESS]: savePasswordSuccess,\n [actions.SAVE_PASSWORD_FAILURE]: savePasswordFailure,\n [actions.RESET_PASSWORD_UPDATED_FAILED]: resetPasswordUpdateFailed\n}\n\nexport default function reducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type]\n return handler ? handler(state, action) : state\n}\n","import {updateOldPassword, updateNewPassword, updateNewPasswordRepeat, savePassword} from './actions'\nimport sagas from './sagas'\nimport reducer from './reducer'\n\nexport {updateOldPassword, updateNewPassword, updateNewPasswordRepeat, savePassword}\n\nexport {sagas}\n\nexport default reducer\n","export const FETCH_VALIDATION_RULES = 'PasswordUpdateDialog/FETCH_VALIDATION_RULES'\nexport const SET_VALIDATION_RULES = 'PasswordUpdateDialog/SET_VALIDATION_RULES'\n\nexport const fetchValidationRules = () => ({\n type: FETCH_VALIDATION_RULES\n})\n\nexport const setValidationRules = rules => ({\n type: SET_VALIDATION_RULES,\n payload: {\n rules\n }\n})\n","import {rest} from 'tocco-app-extensions'\nimport {takeLatest, call, put, select, all} from 'redux-saga/effects'\n\nimport * as actions from './actions'\n\nexport const usernameSelector = state => state.passwordUpdate.dialog.username\nexport const intlSelector = state => state.intl\n\nexport function* loadValidationRules(username, locale = '') {\n const resource = `principals/${username}/password-rules`\n\n const validationResponse = yield call(rest.requestSaga, resource, {queryParams: {locale}})\n return validationResponse.body\n}\n\nexport function* fetchValidationRules() {\n const username = yield select(usernameSelector)\n const {locale} = yield select(intlSelector)\n\n const response = yield call(loadValidationRules, username, locale)\n yield put(actions.setValidationRules(response.rules))\n}\n\nexport default function* sagas() {\n yield all([\n takeLatest(actions.FETCH_VALIDATION_RULES, fetchValidationRules)\n ])\n}\n","import * as actions from './actions'\n\nconst ACTION_HANDLERS = {\n [actions.SET_VALIDATION_RULES]: (state, action) => action.payload.rules\n}\n\nconst initialState = null\n\nexport default function reducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type]\n return handler ? handler(state, action) : state\n}\n","import {fetchValidationRules} from './actions'\nimport sagas from './sagas'\nimport reducer from './reducer'\n\nexport {fetchValidationRules}\n\nexport {sagas}\n\nexport default reducer\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\nimport {hot} from 'react-hot-loader/root'\n\nimport PasswordUpdateDialog from '../components/passwordUpdate/PasswordUpdateDialog'\nimport {initialized} from '../modules/passwordUpdate/actions'\nimport {\n updateOldPassword, updateNewPassword, updateNewPasswordRepeat, savePassword\n} from '../modules/passwordUpdate/password'\nimport {fetchValidationRules} from '../modules/passwordUpdate/validationRules'\n\nconst mapActionCreators = {\n updateOldPassword,\n updateNewPassword,\n updateNewPasswordRepeat,\n fetchValidationRules,\n savePassword,\n initialized\n}\n\nconst mapStateToProps = state => ({\n password: state.passwordUpdate.password,\n validationRules: state.passwordUpdate.validationRules,\n showOldPasswordField: state.passwordUpdate.dialog.showOldPasswordField,\n forcedUpdate: state.passwordUpdate.dialog.forcedUpdate,\n captchaKey: state.login.captchaKey\n})\n\nexport default hot(connect(mapStateToProps, mapActionCreators)(injectIntl(PasswordUpdateDialog)))\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport {FormattedMessage, intlShape} from 'react-intl'\nimport {\n StatedValue,\n Typography\n} from 'tocco-ui'\n\nimport {\n StyledLoginFormInput,\n StyledLoginFormInputWrapper,\n StyledLoginFormWrapper,\n StyledTransparentButton,\n StyledLoginButton\n} from '../StyledLoginForm'\nimport {Pages} from '../../types/Pages'\n\nexport class PasswordRequest extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n username: this.props.username || ''\n }\n }\n\n handleSubmit(e) {\n e.preventDefault()\n this.props.requestPassword(this.state.username)\n }\n\n handleUsernameChange(e) {\n this.setState({\n username: e.target.value\n })\n }\n\n render() {\n return (\n <StyledLoginFormWrapper>\n {this.props.showTitle\n && <Typography.H5><FormattedMessage id=\"client.login.passwordRequest.title\"/></Typography.H5>}\n <Typography.P><FormattedMessage id=\"client.login.passwordRequest.introduction\"/></Typography.P>\n <form onSubmit={this.handleSubmit.bind(this)}>\n <StatedValue\n hasValue={!!this.state.username}\n id=\"login-username\"\n label={this.msg('client.login.form.userPlaceholder')}\n >\n <StyledLoginFormInputWrapper>\n <StyledLoginFormInput\n name=\"user\"\n onChange={this.handleUsernameChange.bind(this)}\n required\n type=\"text\"\n value={this.state.username}\n data-cy=\"password-request_input\"\n />\n </StyledLoginFormInputWrapper>\n </StatedValue>\n\n <StyledLoginButton\n look=\"raised\"\n disabled={!this.state.username || this.props.pending}\n ink=\"primary\"\n label={this.msg('client.login.passwordRequest.button')}\n pending={this.props.pending}\n type=\"submit\"\n data-cy=\"password-request_submit-button\"\n />\n <StyledTransparentButton\n disabled={this.props.pending}\n label={this.msg('client.login.passwordRequest.abortButton')}\n name=\"abort\"\n onClick={() => this.props.changePage(Pages.LOGIN_FORM)}\n data-cy=\"password-request_abort-button\"\n />\n </form>\n </StyledLoginFormWrapper>\n )\n }\n\n msg(id) {\n return this.props.intl.formatMessage({\n id\n })\n }\n}\n\nPasswordRequest.propTypes = {\n intl: intlShape.isRequired,\n changePage: PropTypes.func.isRequired,\n requestPassword: PropTypes.func.isRequired,\n showTitle: PropTypes.bool,\n pending: PropTypes.bool,\n username: PropTypes.string\n}\n","import {PasswordRequest} from './PasswordRequest'\n\nexport default PasswordRequest\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\n\nimport PasswordRequest from '../components/PasswordRequest'\nimport {changePage} from '../modules/login/actions'\nimport {requestPassword} from '../modules/passwordRequest/actions'\n\nconst mapActionCreators = {\n changePage,\n requestPassword\n}\n\nconst mapStateToProps = state => ({\n username: state.login.username,\n pending: state.loginForm.loginPending\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(PasswordRequest))\n","import styled from 'styled-components'\nimport {StyledButton} from 'tocco-ui/src/Button'\nimport {StyledEditableValue, StyledInputCss} from 'tocco-ui/src/EditableValue/StyledEditableValue'\n\nexport const StyledTwoStepLogin = styled.div`\n ${StyledButton} {\n width: 100%;\n }\n\n ${StyledEditableValue} {\n ${StyledInputCss}\n padding-top: .7rem;\n padding-bottom: .7rem;\n }\n`\n","import PropTypes from 'prop-types'\nimport React, {useState, useLayoutEffect, useRef} from 'react'\nimport {FormattedMessage, intlShape} from 'react-intl'\nimport {\n StatedValue,\n Typography,\n EditableValue\n} from 'tocco-ui'\n\nimport {\n StyledTwoStepLogin\n} from './StyledTwoStepLoginForm'\nimport {StyledLoginButton, StyledLoginFormInputWrapper} from '../StyledLoginForm'\n\nconst TwoStepLoginForm = ({username, password, showTitle, loginPending, twoStepLogin, intl}) => {\n const [userCode, setUserCode] = useState(null)\n const formEl = useRef()\n\n useLayoutEffect(() => {\n const firstInput = formEl.current.querySelector('input')\n firstInput.focus()\n }, [])\n\n const handleSubmit = e => {\n e.preventDefault()\n twoStepLogin(username, password, userCode)\n }\n\n const msg = id => intl.formatMessage({id})\n return <StyledTwoStepLogin>\n {showTitle && <Typography.H5><FormattedMessage id=\"client.login.form.title\"/></Typography.H5>}\n <form onSubmit={handleSubmit} ref={formEl}>\n <Typography.P><FormattedMessage id=\"client.login.twoStepLogin.introduction\"/></Typography.P>\n <StatedValue\n hasValue={!!userCode}\n id=\"twoFactorCode-label\"\n label={msg('client.login.twoStepLogin.codePlaceholder')}\n >\n <StyledLoginFormInputWrapper>\n <EditableValue\n type=\"number\"\n value={userCode}\n events={{onChange: setUserCode}}\n options={{format: '### ###'}}\n />\n </StyledLoginFormInputWrapper>\n </StatedValue>\n <StyledLoginButton\n disabled={!userCode || userCode.toString().length < 6 || loginPending}\n ink=\"primary\"\n label={msg('client.login.form.button')}\n look=\"raised\"\n name=\"submit\"\n pending={loginPending}\n type=\"submit\"\n />\n </form>\n </StyledTwoStepLogin>\n}\n\nTwoStepLoginForm.propTypes = {\n intl: intlShape.isRequired,\n twoStepLogin: PropTypes.func.isRequired,\n username: PropTypes.string.isRequired,\n password: PropTypes.string.isRequired,\n showTitle: PropTypes.bool,\n loginPending: PropTypes.bool\n}\n\nexport default TwoStepLoginForm\n","import TwoStepLoginForm from './TwoStepLoginForm'\n\nexport default TwoStepLoginForm\n","export const TWOSTEPLOGIN = 'Login/TWOSTEPLOGIN'\n\nexport const twoStepLogin = (username, password, userCode) => ({\n type: TWOSTEPLOGIN,\n payload: {\n username,\n password,\n userCode\n }\n})\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\n\nimport TwoStepLoginForm from '../components/TwoStepLoginForm'\nimport {twoStepLogin} from '../modules/twoStepLogin/actions'\n\nconst mapActionCreators = {\n twoStepLogin\n}\n\nconst mapStateToProps = state => ({\n username: state.login.username,\n password: state.login.password,\n loginPending: state.loginForm.loginPending\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(TwoStepLoginForm))\n","import PropTypes from 'prop-types'\nimport React, {useEffect} from 'react'\nimport {createGlobalStyle} from 'styled-components'\n\nimport {Pages} from '../../types/Pages'\nimport LoginFormContainer from '../../containers/LoginFormContainer'\nimport PasswordUpdateContainer from '../../containers/PasswordUpdateDialogContainer'\nimport PasswordRequestContainer from '../../containers/PasswordRequestContainer'\nimport TwoStepLoginContainer from '../../containers/TwoStepLoginContainer'\n\nconst GlobalRecaptchaBadgeStyle = createGlobalStyle`\n .grecaptcha-badge {\n z-index: 9999999;\n opacity: .8;\n }\n`\n\nconst Login = props => {\n useEffect(() => {\n props.initialize()\n }, [])\n\n return <>\n <GlobalRecaptchaBadgeStyle/>\n {(() => {\n switch (props.currentPage) {\n case Pages.PASSWORD_UPDATE:\n return <PasswordUpdateContainer showTitle={props.showTitle}/>\n case Pages.PASSWORD_REQUEST:\n return <PasswordRequestContainer showTitle={props.showTitle}/>\n case Pages.TWOSTEPLOGIN:\n return <TwoStepLoginContainer showTitle={props.showTitle}/>\n default:\n return <LoginFormContainer showTitle={props.showTitle}/>\n }\n })()}\n </>\n}\n\nLogin.propTypes = {\n initialize: PropTypes.func.isRequired,\n currentPage: PropTypes.string,\n showTitle: PropTypes.bool\n}\n\nexport default Login\n","import Login from './Login'\n\nexport default Login\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\nimport {hot} from 'react-hot-loader/root'\n\nimport Login from '../components/Login'\nimport {initialize} from '../modules/actions'\n\nconst mapActionCreators = {\n initialize\n}\n\nconst mapStateToProps = (state, props) => ({\n currentPage: props.currentPage || state.login.currentPage,\n showTitle: props.showTitle\n})\n\nexport default hot(connect(mapStateToProps, mapActionCreators)(injectIntl(Login)))\n","import {externalEvents} from 'tocco-app-extensions'\nimport {put, takeLatest, all} from 'redux-saga/effects'\n\nimport * as actions from './actions'\n\nexport function* resizeWatcher() {\n yield put(externalEvents.fireExternalEvent('resize'))\n}\n\nexport default function* sagas() {\n yield all([\n takeLatest(actions.INITIALIZED, resizeWatcher)\n ])\n}\n","import * as actions from './actions'\n\nconst initialState = {\n showOldPasswordField: true,\n forcedUpdate: false,\n standalone: true,\n username: ''\n}\n\nconst singleTransferReducer = attributeName => {\n return (state, {payload}) => {\n const val = payload[attributeName]\n return {\n ...state,\n [attributeName]: val\n }\n }\n}\n\nconst ACTION_HANDLERS = {\n [actions.SET_SHOW_OLD_PASSWORD]: singleTransferReducer('showOldPasswordField'),\n [actions.SET_FORCED_UPDATE]: singleTransferReducer('forcedUpdate'),\n [actions.SET_STANDALONE]: singleTransferReducer('standalone'),\n [actions.SET_USERNAME]: singleTransferReducer('username')\n}\n\nexport default function reducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type]\n return handler ? handler(state, action) : state\n}\n","import reducer from './reducer'\n\nexport default reducer\n","import mainSagas from './sagas'\nimport password, {sagas as passwordSagas} from './password'\nimport dialog from './dialog'\nimport validationRules, {sagas as validationRulesSagas} from './validationRules'\n\nexport default {\n dialog,\n password,\n validationRules\n}\n\nexport const sagas = [\n mainSagas,\n passwordSagas,\n validationRulesSagas\n]\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport * as actions from './actions'\nimport {Pages} from './../../types/Pages'\n\nconst changePage = (state, {payload}) => {\n const {page} = payload\n return {\n ...state,\n currentPage: page\n }\n}\n\nconst setUsername = (state, {payload}) => {\n const {username} = payload\n return {\n ...state,\n username\n }\n}\n\nconst setPassword = (state, {payload}) => {\n const {password} = payload\n return {\n ...state,\n password\n }\n}\n\nconst ACTION_HANDLERS = {\n [actions.CHANGE_PAGE]: changePage,\n [actions.SET_USERNAME]: setUsername,\n [actions.SET_PASSWORD]: setPassword,\n [actions.SET_CAPTCHA_KEY]: reducerUtil.singleTransferReducer('captchaKey')\n}\n\nconst initialState = {\n currentPage: Pages.LOGIN_FORM,\n username: '',\n password: '',\n captchaKey: null\n}\n\nexport default function reducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type]\n return handler ? handler(state, action) : state\n}\n","import reducer from './reducer'\n\nexport default reducer\n","import {SET_MESSAGE, SET_PENDING, ACTIVATE_RECAPTCHA} from './actions'\n\nconst setMessage = (state, {payload}) => {\n const {text, negative} = payload\n return {\n ...state,\n message: {\n text,\n negative\n }\n }\n}\n\nconst setPending = (state, {payload}) => ({\n ...state,\n loginPending: payload.pending\n})\n\nconst activateRecaptcha = state => ({\n ...state,\n recaptchaActivated: true\n})\n\nconst ACTION_HANDLERS = {\n [SET_MESSAGE]: setMessage,\n [SET_PENDING]: setPending,\n [ACTIVATE_RECAPTCHA]: activateRecaptcha\n}\n\nconst initialState = {\n message: {},\n loginPending: false,\n recaptchaActivated: false\n}\n\nexport default function reducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type]\n return handler ? handler(state, action) : state\n}\n","import reducer from './reducer'\n\nexport default reducer\n","import {takeLatest, call, put, all} from 'redux-saga/effects'\n\nimport {loginSaga} from '../sagas'\nimport {setPending} from '../loginForm/actions'\nimport * as actions from './actions'\n\nexport function* twoStepSaga(args) {\n yield put(setPending(true))\n yield call(loginSaga, args)\n}\n\nexport default function* rootSaga() {\n yield all([\n takeLatest(actions.TWOSTEPLOGIN, twoStepSaga)\n ])\n}\n","import {fork, all} from 'redux-saga/effects'\n\nimport moduleSagas from './sagas'\n\nexport function* sagas() {\n yield all([\n fork(moduleSagas)\n ])\n}\n","import {rest} from 'tocco-app-extensions'\nimport {put, call, select, takeLatest, all} from 'redux-saga/effects'\n\nimport * as actions from './actions'\nimport {changePage, setUsername} from '../login/actions'\nimport {setMessage, setPending} from '../loginForm/actions'\nimport {Pages} from '../../types/Pages'\n\nexport const textResourceSelector = state => state.intl.messages\n\nexport function* requestPasswordSaga({payload}) {\n yield put(setPending(true))\n yield call(rest.requestSaga, `principals/${payload.username}/password-reset`, {method: 'POST'})\n yield put(setUsername(payload.username))\n const textResourcesState = yield select(textResourceSelector)\n yield put(setMessage(textResourcesState['client.login.from.passwordRequested']))\n yield put(changePage(Pages.LOGIN_FORM))\n yield put(setPending(false))\n}\n\nexport function* passwordRequestSaga({payload}) {\n if (payload.passwordRequest === true) {\n yield put(changePage(Pages.PASSWORD_REQUEST))\n }\n}\n\nexport default function* saga() {\n yield all([\n takeLatest(actions.REQUEST_PASSWORD, requestPasswordSaga),\n takeLatest(actions.PASSWORD_REQUEST, passwordRequestSaga)\n ])\n}\n","import * as actions from './actions'\n\nconst setUsername = (state, {payload}) => {\n const {username} = payload\n return {\n ...state,\n username\n }\n}\n\nconst ACTION_HANDLERS = {\n [actions.SET_USERNAME]: setUsername\n}\n\nconst initialState = {\n username: ''\n}\n\nexport default function reducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type]\n return handler ? handler(state, action) : state\n}\n","import {fork, all} from 'redux-saga/effects'\n\nimport moduleSagas from './sagas'\nimport reducer from './reducer'\n\nexport function* sagas() {\n yield all([\n fork(moduleSagas)\n ])\n}\n\nexport default reducer\n","import {combineReducers} from 'redux'\n\nimport passwordUpdateReducers, {sagas as passwordUpdateSagas} from './passwordUpdate/reducers'\nimport login from './login'\nimport loginForm from './loginForm'\nimport {sagas as twoStepLoginSagas} from './twoStepLogin'\nimport mainSagas from './sagas'\nimport passwordRequest, {sagas as passwordRequestSagas} from './passwordRequest'\n\nexport default {\n login,\n loginForm,\n passwordRequest,\n passwordUpdate: combineReducers(passwordUpdateReducers)\n}\n\nexport const sagas = [\n mainSagas,\n passwordRequestSagas,\n twoStepLoginSagas,\n ...passwordUpdateSagas\n]\n","import React from 'react'\nimport {consoleLogger, reducer as reducerUtil} from 'tocco-util'\nimport {appFactory, errorLogging, externalEvents} from 'tocco-app-extensions'\nimport PropTypes from 'prop-types'\nimport {hot} from 'react-hot-loader/root'\n\nimport * as passwordUpdate from './modules/passwordUpdate/dialog/actions'\nimport * as passwordRequest from './modules/passwordRequest/actions'\nimport * as login from './modules/login/actions'\nimport LoginContainer from './containers/LoginContainer'\nimport loginReducers, {sagas} from './modules/reducers'\n\nconst packageName = 'login'\n\nconst EXTERNAL_EVENTS = [\n 'loginSuccess',\n 'resize'\n]\n\nconst initLoginApp = (id, input, events, publicPath, customTheme) => {\n const actions = [\n passwordUpdate.setShowOldPasswordField(false),\n passwordUpdate.setStandalone(false),\n passwordRequest.setPasswordRequest(!!input.passwordRequest),\n login.setUsername(input.username)\n ]\n\n const showTitle = !!input.showTitle\n const content = <LoginContainer showTitle={showTitle}/>\n\n const store = appFactory.createStore(loginReducers, sagas, input, packageName)\n externalEvents.addToStore(store, events)\n errorLogging.addToStore(store, true, ['console', 'remote'])\n\n return appFactory.createApp(\n packageName,\n content,\n store,\n {\n input,\n actions,\n publicPath,\n textResourceModules: ['login'],\n customTheme\n }\n )\n}\n\nconst initPasswordUpdateApp = (id, input, events, publicPath, customTheme) => {\n const showTitle = !!input.showTitle\n const forcedUpdate = !!input.forcedUpdate\n\n const content = <LoginContainer currentPage=\"PASSWORD_UPDATE\" showTitle={showTitle}/>\n\n if (typeof input.username !== 'string' || input.username.length === 0) {\n consoleLogger.logError('Mandatory input \"username\" is not set on password-update')\n return\n }\n\n const actions = [\n passwordUpdate.setUsername(input.username),\n passwordUpdate.setForcedUpdate(forcedUpdate)\n ]\n\n if (typeof input.showOldPasswordField === 'boolean') {\n actions.push(passwordUpdate.setShowOldPasswordField(input.showOldPasswordField))\n }\n\n const store = appFactory.createStore(loginReducers, sagas, input, packageName)\n externalEvents.addToStore(store, events)\n errorLogging.addToStore(store, true, ['console', 'remote'])\n\n return appFactory.createApp(\n `${packageName}.passwordUpdate`,\n content,\n store,\n {\n input,\n actions,\n publicPath,\n textResourceModules: ['login'],\n customTheme\n }\n )\n}\n\n(() => {\n if (__DEV__ && __PACKAGE_NAME__ === packageName) {\n if (!__NO_MOCK__) {\n const fetchMock = require('fetch-mock')\n const setupFetchMocks = require('./dev/fetchMocks').default\n setupFetchMocks(packageName, fetchMock)\n }\n\n const app = initLoginApp('id', require('./dev/login_input.json'))\n // uncomment to develop passwordUpdate App\n // const app = initPasswordUpdateApp('id', require('./dev/password_update_input.json'))\n\n if (module.hot) {\n module.hot.accept('./modules/reducers', () => {\n const reducers = require('./modules/reducers').default\n reducerUtil.hotReloadReducers(app.store, reducers)\n })\n }\n\n appFactory.renderApp(app.component)\n } else {\n appFactory.registerAppInRegistry(packageName, initLoginApp)\n appFactory.registerAppInRegistry('password-update', initPasswordUpdateApp)\n }\n})()\n\nclass LoginApp extends React.Component {\n constructor(props) {\n super(props)\n this.input = {\n showTitle: props.showTitle,\n locale: props.locale,\n passwordRequest: props.passwordRequest,\n username: props.username || ''\n }\n\n const events = EXTERNAL_EVENTS.reduce((events, event) => {\n if (props[event]) {\n events[event] = props[event]\n }\n return events\n }, {})\n\n this.app = initLoginApp('id', this.input, events)\n }\n\n render() {\n return this.app.component\n }\n}\n\nLoginApp.propTypes = {\n showTitle: PropTypes.bool,\n locale: PropTypes.string,\n passwordRequest: PropTypes.bool,\n username: PropTypes.string,\n setLocale: PropTypes.func,\n ...EXTERNAL_EVENTS.reduce((propTypes, event) => {\n propTypes[event] = PropTypes.func\n return propTypes\n }, {})\n}\n\nexport default hot(LoginApp)\n","import _reduce from 'lodash/reduce'\n\nexport const transformProviderEntities = response =>\n response.data.map(provider => _reduce(provider.paths, (result, value, key) => {\n return {...result, [key]: value.value}\n }, {})\n )\n","export const LOAD_PROVIDERS = 'root/LOAD_PROVIDERS'\nexport const SET_PROVIDERS = 'root/SET_PROVIDERS'\nexport const LOGIN_COMPLETED = 'root/LOGIN_COMPLETED'\n\nexport const loadProviders = () => ({\n type: LOAD_PROVIDERS\n})\n\nexport const setProviders = providers => ({\n type: SET_PROVIDERS,\n payload: {\n providers\n }\n})\n\nexport const loginCompleted = result => ({\n type: LOGIN_COMPLETED,\n payload: {\n result\n }\n})\n","import {externalEvents, rest} from 'tocco-app-extensions'\nimport {takeLatest, all, call, put, select} from 'redux-saga/effects'\n\nimport {transformProviderEntities} from '../utils/providers'\nimport * as actions from './actions'\n\nconst entityName = 'Openid_provider'\n\nexport const intlSelector = state => state.intl\n\nexport function* loadProviders() {\n const intl = yield select(intlSelector)\n\n const query = {\n paths: ['unique_id', 'label', 'button_primary_color', 'button_secondary_color', 'button_icon', 'button_label'],\n conditions: {locale: intl.locale, active: true}\n }\n\n const entities = yield call(rest.fetchEntities, entityName, query, {method: 'GET'}, transformProviderEntities)\n yield put(actions.setProviders(entities))\n}\n\nexport function* loginCompleted({payload: {result}}) {\n yield put(externalEvents.fireExternalEvent('loginCompleted', result))\n}\n\nexport default function* mainSagas() {\n yield all([\n takeLatest(actions.LOAD_PROVIDERS, loadProviders),\n takeLatest(actions.LOGIN_COMPLETED, loginCompleted)\n ])\n}\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport * as actions from './actions'\n\nconst ACTION_HANDLERS = {\n [actions.SET_PROVIDERS]: reducerUtil.singleTransferReducer('providers')\n}\n\nconst initialState = {\n providers: []\n}\n\nexport default function reducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type]\n return handler ? handler(state, action) : state\n}\n","import rootSaga from './sagas'\nimport ssoLogin from './reducer'\n\nexport default {\n ssoLogin\n}\n\nexport const sagas = [rootSaga]\n","import {getPopUpFeatures} from './popUp'\n\nexport const openLoginWindow = (loginEndpoint, loginCompleted, provider) => {\n const baseUrl = __DEV__ ? '' : __BACKEND_URL__\n const encodedWindowUrl = encodeURIComponent(window.location.href)\n const url = `${baseUrl}${loginEndpoint}?provider=${provider.unique_id}&sourceUri=${encodedWindowUrl}`\n\n const popUp = window.open(url, provider.label, getPopUpFeatures(650, 500))\n\n window.ssoPopUpCallback = result => {\n popUp.close()\n loginCompleted(result)\n }\n}\n","import _reduce from 'lodash/reduce'\n\nexport const getPopUpFeatures = (height = 200, width = 200) => {\n const features = {\n height,\n width,\n left: (window.screen.width / 2) - (width / 2),\n top: (window.screen.height / 2) - (height / 2),\n resizable: 1,\n scrollbars: 1,\n status: 1\n }\n\n return _reduce(features, (result, value, key) => [...result, `${key}=${value}`], [])\n .join(',')\n}\n","import styled from 'styled-components'\nimport _get from 'lodash/get'\nimport {StyledButton} from 'tocco-ui/src/Button'\nimport {\n declareInteractionColors,\n generateInteractionColors,\n theme,\n scale\n} from 'tocco-ui/src/utilStyles'\n\nexport default styled(StyledButton)`\n && {\n margin-right: 0;\n flex: 1;\n font-size: ${scale.font(1.3)};\n justify-content: center;\n border-radius: ${theme.radii('large')};\n ${props => declareInteractionColors(\n generateInteractionColors(props, {\n bg: props.primaryColor,\n fg: props.secondaryColor || `${_get(props.theme, 'colors.paper')}, ${_get(props.theme, 'colors.text')}`\n }))}\n span {\n margin-left: .5em;\n padding: .9rem 0;\n }\n }\n`\n","import React from 'react'\nimport {Icon} from 'tocco-ui'\nimport PropTypes from 'prop-types'\n\nimport {openLoginWindow} from '../../utils/loginWindow'\nimport StyledProviderButton from './StyledProviderButton'\n\nconst ProviderButton = ({provider, loginCompleted, loginEndpoint}) => {\n const clickHandler = () => {\n openLoginWindow(loginEndpoint, loginCompleted, provider)\n }\n\n return (\n <StyledProviderButton\n primaryColor={provider.button_primary_color}\n secondaryColor={provider.button_secondary_color}\n onClick={clickHandler}\n >\n {provider.button_icon && <Icon position=\"prepend\" icon={provider.button_icon}/>}\n <span>{provider.button_label}</span>\n </StyledProviderButton>\n )\n}\n\nProviderButton.propTypes = {\n provider: PropTypes.shape({\n button_primary_color: PropTypes.string,\n button_secondary_color: PropTypes.string,\n button_icon: PropTypes.string,\n button_label: PropTypes.string\n }),\n loginEndpoint: PropTypes.string.isRequired,\n loginCompleted: PropTypes.func.isRequired\n}\n\nexport default ProviderButton\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\nimport {openLoginWindow} from '../../utils/loginWindow'\nimport ProviderButton from '../ProviderButton/ProviderButton'\n\nconst StyledButtonContainer = styled.div`\n width: 100%;\n margin-top: 3rem;\n display: grid;\n grid-gap: 1rem;\n grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));\n\n @media (max-width: 1024px) {\n margin-top: 1.5rem;\n }\n`\n\nclass LoginBox extends React.Component {\n constructor(props) {\n super(props)\n props.loadProviders()\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (this.props.autoLogin && prevProps.providers.length === 0 && this.props.providers.length > 0) {\n const autoLoginProvider = this.props.providers.find(entity => entity.unique_id === this.props.autoLogin)\n if (autoLoginProvider) {\n openLoginWindow(this.props.loginEndpoint, this.props.loginCompleted, autoLoginProvider)\n }\n }\n }\n\n render() {\n return <StyledButtonContainer>\n {\n this.props.providers\n .map((provider, idx) => (\n <ProviderButton\n key={idx}\n provider={provider}\n loginEndpoint={this.props.loginEndpoint}\n loginCompleted={this.props.loginCompleted}\n />\n ))\n }\n </StyledButtonContainer>\n }\n}\n\nLoginBox.propTypes = {\n loginEndpoint: PropTypes.string,\n loginCompleted: PropTypes.func.isRequired,\n loadProviders: PropTypes.func.isRequired,\n providers: PropTypes.array,\n autoLogin: PropTypes.string\n}\n\nexport default LoginBox\n","import LoginBox from './LoginBox'\n\nexport default LoginBox\n","import {connect} from 'react-redux'\n\nimport LoginBox from '../components/LoginBox'\nimport * as actions from '../modules/actions'\n\nconst mapActionCreators = {\n loadProviders: actions.loadProviders,\n loginCompleted: actions.loginCompleted\n}\n\nconst mapStateToProps = state => {\n return {\n providers: state.ssoLogin.providers,\n loginEndpoint: state.input.ssoLoginEndpoint,\n autoLogin: state.input.autoLogin\n }\n}\n\nexport default connect(mapStateToProps, mapActionCreators)(LoginBox)\n","import React from 'react'\nimport {reducer as reducerUtil} from 'tocco-util'\nimport {appFactory, externalEvents} from 'tocco-app-extensions'\nimport PropTypes from 'prop-types'\nimport {hot} from 'react-hot-loader/root'\n\nimport reducers, {sagas} from './modules'\nimport LoginBoxContainer from './containers/LoginBoxContainer'\n\nconst packageName = 'sso-login'\n\nconst EXTERNAL_EVENTS = [\n 'loginCompleted'\n]\n\nconst initApp = (id, input, events, publicPath) => {\n const content = <LoginBoxContainer/>\n\n const store = appFactory.createStore(reducers, sagas, input, packageName)\n externalEvents.addToStore(store, events)\n\n return appFactory.createApp(\n packageName,\n content,\n store,\n {\n input,\n events,\n actions: [],\n publicPath,\n textResourceModules: ['component', 'common', packageName]\n }\n )\n}\n\n(() => {\n if (__DEV__ && __PACKAGE_NAME__ === packageName) {\n const input = require('./dev/input.json')\n\n if (!__NO_MOCK__) {\n const fetchMock = require('fetch-mock')\n const setupFetchMocks = require('./dev/fetchMocks').default\n setupFetchMocks(packageName, fetchMock)\n fetchMock.spy()\n }\n\n const app = initApp(packageName, input)\n\n if (module.hot) {\n module.hot.accept('./modules/index', () => {\n const reducers = require('./modules').default\n reducerUtil.hotReloadReducers(app.store, reducers)\n })\n }\n\n appFactory.renderApp(app.component)\n } else {\n appFactory.registerAppInRegistry(packageName, initApp)\n }\n})()\n\nclass SsoLoginApp extends React.Component {\n constructor(props) {\n super(props)\n\n const events = EXTERNAL_EVENTS.reduce((events, event) => {\n if (props[event]) {\n events[event] = props[event]\n }\n return events\n }, {})\n\n this.app = initApp('id', props, events)\n }\n\n render() {\n return this.app.component\n }\n}\n\nSsoLoginApp.propTypes = {\n ssoLoginEndpoint: PropTypes.string.isRequired,\n locale: PropTypes.string,\n autoLogin: PropTypes.bool\n}\n\nexport default hot(SsoLoginApp)\n","import React, {useState, useEffect} from 'react'\nimport PropTypes from 'prop-types'\nimport ToccoLogin from 'tocco-login/src/main'\nimport SsoLogin from 'tocco-sso-login/src/main'\nimport styled from 'styled-components'\nimport {StyledH1, StyledSpan, scale, theme} from 'tocco-ui'\nimport {FormattedMessage} from 'react-intl'\nimport Cookies from 'js-cookie'\n\nimport ToccoLogo from '../../assets/tocco-circle.svg'\nimport ToccoSlogan from '../../assets/tocco_white.svg'\n\nconst StyledLogin = styled.div`\n height: 100%;\n width: 100vw;\n position: absolute;\n background-image: url(${ToccoLogo});\n background-repeat: no-repeat;\n background-size: 61vw;\n background-position-y: -25vw;\n background-position-x: -41vw;\n\n .tocco-sso-login {\n display: flex;\n justify-content: space-between;\n margin-bottom: 1.8rem;\n }\n\n @media (max-width: 1024px) {\n background-size: 2000px;\n background-position: 50% -1850px;\n }\n\n @media (max-width: 425px) {\n background-position: 50% -1890px;\n }\n`\n\nconst StyledHeadingLogin = styled(StyledH1)`\n && {\n font-size: ${scale.font(11)};\n }\n`\nconst StyledSpanLogin = styled(StyledSpan)`\n && {\n text-align: center;\n font-size: ${scale.font(1.3)};\n display: inline-block;\n width: 100%;\n margin: 1rem 0 1.8rem;\n }\n`\n\nconst LoginWrapper = styled.div`\n max-width: 410px;\n margin: 6% 5% 0 28%;\n\n && {\n .tocco-login * {\n font-size: ${scale.font(1.3)};\n }\n\n @media (max-width: 1024px) {\n margin: 14rem auto 0;\n padding-left: 2rem;\n padding-right: 2rem;\n }\n\n @media (max-width: 425px) {\n margin-top: 8rem;\n }\n }\n`\n\nconst SloganImg = styled.img`\n transform: rotate(270deg);\n position: relative;\n top: 12.5vw;\n left: -8%;\n width: 25vw;\n\n @media (max-width: 1024px) {\n display: none;\n }\n`\n\nconst StyledImg = styled.img`\n display: none;\n max-width: 400px;\n width: 95%;\n height: auto;\n margin: 45px auto 0;\n\n @media (max-width: 1024px) {\n display: block;\n }\n\n @media (max-width: 425px) {\n max-width: 280px;\n margin-top: 40px;\n }\n`\n\nconst StyledSsoMsg = styled(StyledSpan)`\n && {\n display: inline-block;\n text-align: center;\n font-weight: ${theme.fontWeight('bold')};\n width: 100%;\n color: ${theme.color('signal.info.text')};\n }\n`\n\nconst StyledSsoError = styled(StyledSsoMsg)`\n && {\n color: ${theme.color('signal.danger.text')};\n }\n`\n\nconst Login = ({ssoAvailable, loginSuccessful, checkSsoAvailable}) => {\n const [showError, setShowError] = useState(false)\n const [showRegistrationText, setShowRegistrationText] = useState(false)\n const autoLogin = Cookies.get('sso-autologin')\n\n useEffect(() => {\n checkSsoAvailable()\n }, [])\n\n const loginSuccess = ({timeout}) => {\n loginSuccessful(timeout)\n }\n\n const ssoLoginCompleted = ({successful, provider, registration}) => {\n if (successful) {\n Cookies.set('sso-autologin', provider, {expires: 365})\n loginSuccessful(30)\n } else if (!successful && registration) {\n setShowRegistrationText(true)\n } else {\n setShowError(true)\n }\n }\n\n const SsoLoginPart = () => <div>\n <SsoLogin\n ssoLoginEndpoint=\"/sso\"\n loginCompleted={ssoLoginCompleted}\n autoLogin={autoLogin}\n />\n {showRegistrationText\n && <StyledSsoMsg breakWords={true}><FormattedMessage id=\"client.sso-login.registration\"/></StyledSsoMsg>\n }\n {showError\n && <StyledSsoError breakWords={true}><FormattedMessage id=\"client.sso-login.error\"/></StyledSsoError>\n }\n <StyledSpanLogin><FormattedMessage id=\"client.admin.loginChoice\"/></StyledSpanLogin>\n </div>\n\n return <StyledLogin>\n <StyledImg src={ToccoSlogan}/>\n <SloganImg src={ToccoSlogan}/>\n <LoginWrapper>\n <StyledHeadingLogin><FormattedMessage id=\"client.admin.welcomeTitle\"/></StyledHeadingLogin>\n {ssoAvailable && <SsoLoginPart/>}\n <ToccoLogin\n loginSuccess={loginSuccess}\n showTitle={false}\n />\n </LoginWrapper>\n </StyledLogin>\n}\n\nLogin.propTypes = {\n ssoAvailable: PropTypes.bool,\n loginSuccessful: PropTypes.func.isRequired,\n checkSsoAvailable: PropTypes.func.isRequired\n}\n\nexport default Login\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\n\nimport Login from './Login'\nimport {loginSuccessful, checkSsoAvailable} from '../../modules/session/actions'\n\nconst mapActionCreators = {\n loginSuccessful,\n checkSsoAvailable\n}\n\nconst mapStateToProps = (state, props) => ({\n ssoAvailable: state.session.ssoAvailable\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(Login))\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {declareFont, theme, scale} from 'tocco-ui'\nimport styled from 'styled-components'\n\nconst StyledMenuEntry = styled.div`\n ${declareFont()}\n\n && {\n padding-left: ${({level}) => level * 7}px;\n line-height: ${theme.lineHeight('light')};\n }\n`\n\nconst StyledMenuEntryWrapper = styled.div`\n margin-bottom: ${scale.space(0.6)};\n\n > div {\n margin-bottom: ${scale.space(0)};\n }\n`\n\nconst MenuItem = ({item, typeMapping}) => {\n if (!item) {\n return null\n }\n\n const mappedType = typeMapping[item.menuType]\n if (!mappedType) {\n return null\n }\n\n const Component = mappedType.component\n return <StyledMenuEntry {...item}>\n <Component item={item} {...mappedType.props}/>\n {item.children && item.children.map(child => <MenuItem key={child.name} item={child} typeMapping={typeMapping} />)}\n </StyledMenuEntry>\n}\n\nMenuItem.propTypes = {\n item: PropTypes.shape({\n menuType: PropTypes.string,\n children: PropTypes.array\n }),\n typeMapping: PropTypes.objectOf(\n PropTypes.shape({\n component: PropTypes.func,\n filterAttribute: PropTypes.arrayOf(PropTypes.string)\n })\n )\n}\n\nconst prepareTree = (item, searchFilter, typeMapping, level = 0) => {\n const mappedType = typeMapping[item.menuType]\n\n if (!mappedType) {\n return null\n }\n\n const children = (item.children || [])\n .map(child => prepareTree(child, searchFilter, typeMapping, level + 1))\n .filter(c => (c !== null))\n\n let matchingAttribute\n if (children.length === 0 && searchFilter) {\n matchingAttribute = mappedType.filterAttributes\n .find(filterAttribute =>\n item[filterAttribute]\n && item[filterAttribute].toLowerCase().includes(searchFilter.toLowerCase())\n )\n if (!matchingAttribute) {\n return null\n }\n }\n\n return {...item, level, children, matchingAttribute}\n}\n\nconst MenuTree = ({items, searchFilter, typeMapping}) => {\n if (!items || items.length === 0) {\n return null\n }\n\n return (\n <StyledMenuEntryWrapper>\n {items.map(item => (\n <MenuItem\n key={item.name}\n item={prepareTree(item, searchFilter, typeMapping)}\n typeMapping={typeMapping}/>\n ))}\n </StyledMenuEntryWrapper>\n )\n}\n\nMenuTree.propTypes = {\n items: PropTypes.array,\n searchFilter: PropTypes.string,\n typeMapping: PropTypes.objectOf(\n PropTypes.shape({\n component: PropTypes.func,\n filterAttribute: PropTypes.arrayOf(PropTypes.string)\n })\n )\n}\n\nexport default React.memo(MenuTree)\n","import MenuTree from './MenuTree'\n\nexport default MenuTree\n","import styled from 'styled-components'\nimport {Link} from 'react-router-dom'\nimport {Button, theme, StyledScrollbar, scale} from 'tocco-ui'\n\nconst secondary = theme.color('secondary')\nconst secondaryLight = theme.color('secondaryLight')\n\nexport const StyledNav = styled.nav`\n height: 100%;\n display: flex;\n flex-direction: column;\n\n .StyledSearchBox {\n margin: 1.5rem 3rem 1.8rem 1.8rem;\n }\n`\n\nexport const StyledMenuWrapper = styled.div`\n height: 100%;\n overflow: auto;\n padding: ${scale.space(0.6)} 0 0 ${scale.space(0.6)};\n ${StyledScrollbar}\n`\n\nexport const StyledMenuEntry = styled.span`\n color: ${theme.color('text')};\n font-weight: ${theme.fontWeight('bold')};\n`\n\nexport const StyledMenuLink = styled(Link)`\n color: ${theme.color('text')};\n text-decoration: none;\n\n &:hover {\n color: ${theme.color('secondaryLight')};\n }\n\n &:focus {\n outline: none;\n font-weight: ${theme.fontWeight('bold')};\n color: ${secondaryLight};\n }\n\n &.active {\n text-decoration: underline;\n }\n`\n\nexport const StyledTabsContainer = styled.div`\n display: flex;\n justify-content: space-evenly;\n align-items: center;\n margin-bottom: 10px;\n border-bottom: 3px solid ${theme.color('backgroundBody')};\n\n &:focus {\n background-color: transparent;\n }\n\n span {\n padding-top: .4rem;\n padding-bottom: .4rem;\n }\n`\n\nexport const StyledNavButton = styled(Button)`\n flex: 1;\n justify-content: center;\n border-radius: 0;\n margin: 5px;\n border-top: 5px solid ${({active}) => active ? secondary : 'transparent'};\n color: ${({active}) => active ? secondary : secondaryLight};\n font-weight: ${theme.fontWeight('bold')};\n\n &:hover {\n border-color: ${({active}) => active ? secondary : secondaryLight};\n background-color: transparent;\n color: ${({active}) => active ? secondary : secondaryLight};\n }\n\n &:focus {\n background-color: transparent;\n }\n`\n\nexport const StyledSearchBoxWrapper = styled.div`\n height: 50px;\n padding-bottom: ${scale.space(-0.5)};\n`\n","import React, {useRef, useState, useEffect, useMemo} from 'react'\nimport PropTypes from 'prop-types'\nimport SearchBox from 'tocco-ui/src/SearchBox'\nimport {intlShape} from 'react-intl'\n\nimport MenuTree from '../MenuTree'\nimport {\n StyledTabsContainer,\n StyledMenuEntry,\n StyledMenuLink,\n StyledNav,\n StyledMenuWrapper,\n StyledNavButton,\n StyledSearchBoxWrapper\n}\n from './StyledComponents'\n\nconst MenuMenuEntry = ({item}) => <StyledMenuEntry>\n {item.label}\n</StyledMenuEntry>\n\nMenuMenuEntry.propTypes = {\n item: PropTypes.shape({\n label: PropTypes.string\n })\n}\n\nconst EntityExplorerMenuEntry = ({onClick, item}) => {\n const entityNameDisplay = item.matchingAttribute === 'entity' ? <React.Fragment> ({item.entity})</React.Fragment> : ''\n\n return <StyledMenuLink onClick={onClick}\n to={`/e/${item.entity}`}>{item.label}{entityNameDisplay}\n </StyledMenuLink>\n}\n\nEntityExplorerMenuEntry.propTypes = {\n item: PropTypes.shape({\n entity: PropTypes.string,\n label: PropTypes.string,\n matchingAttribute: PropTypes.string\n }),\n onClick: PropTypes.func\n}\n\nconst ActionMenuEntry = ({onClick, item}) => <StyledMenuLink\n onClick={onClick}\n to={`/e/action/${item.name}`}>\n {item.label}\n</StyledMenuLink>\n\nActionMenuEntry.propTypes = {\n item: PropTypes.shape({\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired\n }).isRequired,\n onClick: PropTypes.func\n}\n\nconst tabs = {\n MODULES: 'modules',\n SETTINGS: 'settings'\n}\n\nconst Navigation = ({\n modulesMenuTree,\n settingsMenuTree,\n menuOpen,\n onClick,\n activeMenuTab,\n setActiveMenuTab,\n intl\n}) => {\n const inputEl = useRef(null)\n const navigationEl = useRef(null)\n const [filter, setFilter] = useState('')\n\n const map = useMemo(() => ({\n 'menu': {\n component: MenuMenuEntry,\n filterAttributes: []\n },\n 'entity-explorer': {\n component: EntityExplorerMenuEntry,\n props: {\n onClick\n },\n filterAttributes: ['label', 'entity']\n },\n 'action': {\n component: ActionMenuEntry,\n props: {\n onClick\n },\n filterAttributes: ['label']\n }\n }), [])\n\n useEffect(() => {\n if (menuOpen) {\n if (!activeMenuTab) {\n setActiveMenuTab(tabs.MODULES)\n }\n inputEl.current.select()\n inputEl.current.focus()\n }\n }, [menuOpen])\n\n const msg = id => intl.formatMessage({id})\n\n const handleCursorNavigation = key => {\n const focusableElements = navigationEl.current.querySelectorAll('a, input')\n const currentIndex = [...focusableElements].findIndex(el => document.activeElement.isEqualNode(el))\n if (currentIndex !== -1) {\n const indexDiff = key === 'ArrowDown' ? 1 : focusableElements.length - 1\n const targetIndex = (currentIndex + indexDiff) % focusableElements.length\n focusableElements[targetIndex].focus()\n }\n }\n\n const onKeyDown = e => {\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n e.preventDefault()\n handleCursorNavigation(e.key)\n }\n }\n\n return <StyledNav ref={navigationEl} onKeyDown={onKeyDown}>\n <StyledTabsContainer>\n <StyledNavButton\n active={activeMenuTab === tabs.MODULES}\n onClick={() => setActiveMenuTab(tabs.MODULES)}\n label={msg('client.admin.navigation.modules')}\n />\n <StyledNavButton\n active={activeMenuTab === tabs.SETTINGS}\n onClick={() => setActiveMenuTab(tabs.SETTINGS)}\n label={msg('client.admin.navigation.settings')}\n />\n </StyledTabsContainer>\n <StyledSearchBoxWrapper>\n <SearchBox\n minInputLength={2}\n onSearch={setFilter}\n ref={inputEl}\n placeholder={msg('client.admin.navigation.searchBoxPlaceHolder')}\n />\n </StyledSearchBoxWrapper>\n {activeMenuTab === tabs.MODULES\n && <StyledMenuWrapper>\n <MenuTree items={modulesMenuTree} searchFilter={filter} typeMapping={map}/>\n </StyledMenuWrapper>}\n {activeMenuTab === tabs.SETTINGS\n && <StyledMenuWrapper>\n <MenuTree items={settingsMenuTree} searchFilter={filter} typeMapping={map}/>\n </StyledMenuWrapper>}\n </StyledNav>\n}\n\nNavigation.propTypes = {\n intl: intlShape.isRequired,\n activeMenuTab: PropTypes.string.isRequired,\n settingsMenuTree: PropTypes.array,\n modulesMenuTree: PropTypes.array,\n onClick: PropTypes.func,\n setActiveMenuTab: PropTypes.func,\n menuOpen: PropTypes.bool\n}\n\nexport default Navigation\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\n\nimport Navigation from './Navigation'\nimport {setActiveMenuTab} from '../../modules/navigation/actions'\nconst mapActionCreators = {\n setActiveMenuTab\n}\n\nconst mapStateToProps = (state, props) => ({\n settingsMenuTree: state.navigation.settingsMenuTree,\n modulesMenuTree: state.navigation.modulesMenuTree,\n menuOpen: state.navigation.menuOpen,\n activeMenuTab: state.navigation.activeMenuTab\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(Navigation))\n","import NavigationContainer from './NavigationContainer'\n\nexport default NavigationContainer\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {StyledH3, theme} from 'tocco-ui'\nimport styled from 'styled-components'\n\nimport ToccoLogo from '../../../../assets/tocco_red.svg'\n\nconst StyledDashBoardWrapper = styled.div`\n width: 100%;\n height: 100%;\n background-color: ${theme.color('backgroundBody')};\n display: flex;\n justify-content: flex-end;\n align-items: flex-end;\n\n @media (max-width: 568px) {\n justify-content: center;\n align-items: center;\n }\n`\n\nconst StyledSlogan = styled.div`\n max-width: 900px;\n width: 100%;\n height: 100px;\n text-align: right;\n margin-bottom: 150px;\n margin-right: 100px;\n margin-left: 100px;\n\n @media (max-width: 568px) {\n margin-right: 25px;\n margin-left: 25px;\n margin-bottom: 0;\n }\n`\n\nconst StyledTitle = styled(StyledH3)`\n && {\n font-size: 3rem;\n color: ${theme.color('primary')};\n }\n`\n\nconst Dashboard = () => {\n const packageJson = require('../../../../../package')\n return <StyledDashBoardWrapper>\n <StyledSlogan>\n <img src={ToccoLogo} alt=\"tocco-logo\"/>\n <StyledTitle>beta v{packageJson.version}</StyledTitle>\n </StyledSlogan>\n </StyledDashBoardWrapper>\n}\n\nDashboard.propTypes = {\n match: PropTypes.object\n}\n\nexport default React.memo(Dashboard, () => true)\n","import Dashboard from './Dashboard'\n\nexport default Dashboard\n","import consoleLogger from '../consoleLogger'\n\nexport const dispatchInput = (store,\n input,\n {key, actionCreator, mandatory = false, defaultValue},\n logger = consoleLogger.logError) => {\n if (Object.prototype.hasOwnProperty.call(input, key) || defaultValue) {\n const action = actionCreator(input[key] || defaultValue)\n store.dispatch(action)\n } else if (mandatory === true) {\n logger(`EntityBrowser: Mandatory field '${key}' not set in input`)\n }\n}\n","import {loadRoute} from './route'\n\nexport default {loadRoute}\n","import React from 'react'\n\nimport reducerUtil from '../reducer'\nimport sagaUtil from '../saga'\nimport asyncRoute from './asyncRoute'\nimport {dispatchInput} from './input'\n\nexport const loadRoute = (store, input, importRouteDependencies) => props => {\n const Component = asyncRoute(() =>\n new Promise(resolve => {\n importRouteDependencies().then(imported => {\n const route = imported.default\n\n if (route.reducers) {\n reducerUtil.injectReducers(store, route.reducers)\n }\n\n if (route.sagas) {\n route.sagas.forEach(saga => {\n sagaUtil.injectSaga(store, saga)\n })\n }\n\n if (route.inputDispatches) {\n route.inputDispatches.forEach(inputDispatch => {\n dispatchInput(\n store,\n input,\n inputDispatch\n )\n })\n }\n\n resolve(route.container)\n })\n })\n )\n\n return <Component {...props}/>\n}\n","import React from 'react'\n\nexport default function asyncRoute(getComponent) {\n return class AsyncComponent extends React.Component {\n static Component = null\n mounted = false\n\n state = {\n Component: AsyncComponent.Component\n }\n\n componentDidMount() {\n this.mounted = true\n if (this.state.Component === null) {\n getComponent().then(Component => {\n AsyncComponent.Component = Component\n if (this.mounted) {\n this.setState({Component})\n }\n })\n }\n }\n\n componentWillUnmount() {\n this.mounted = false\n }\n\n render() {\n const {Component} = this.state\n\n if (Component !== null) {\n return <Component {...this.props}/>\n }\n\n return null\n }\n }\n}\n","import {route, js} from 'tocco-util'\nimport React, {memo} from 'react'\nimport {ReactReduxContext} from 'react-redux'\nimport _omit from 'lodash/omit'\nimport _omitBy from 'lodash/omitBy'\n\nconst ignoredAttributes = ['location.key', 'location.search']\n\nfunction areEqual(prevProps, nextProps) {\n const diff = js.difference(prevProps, nextProps)\n const clean = _omitBy(_omit(diff, ignoredAttributes), v => Object.keys(v).length === 0)\n return Object.entries(clean).length === 0\n}\n\nexport default memo(\n props => (\n <ReactReduxContext.Consumer>\n {({store}) => {\n const Component = route.loadRoute(store, {}, () => (import('./route')))\n return <Component {...props}/>\n }}\n </ReactReduxContext.Consumer>\n ),\n areEqual\n)\n","import React from 'react'\nimport {Typography} from 'tocco-ui'\n\nconst Settings = props => <Typography.H2>Settings</Typography.H2>\n\nSettings.propTypes = {\n}\n\nexport default Settings\n","import Settings from './Settings'\n\nexport default Settings\n","import styled from 'styled-components'\n\nimport ToccoLogo from '../../assets/tocco-circle.svg'\n\nexport const StyledHeader = styled.div`\n grid-area: header;\n display: flex;\n height: 40px;\n padding-right: 10px;\n padding-left: 40px;\n`\n\nexport const StyledConfig = styled.div`\n flex: 1;\n z-index: 2;\n display: flex;\n justify-content: flex-end;\n padding: 7px;\n`\nexport const StyledBackgroundLogo = styled.div`\n position: absolute;\n z-index: 1;\n height: 40px;\n width: 100%;\n background-color: ${({runEnv, theme}) => runEnv === 'TEST' ? theme.colors.primary : theme.colors.secondary};\n mask-image: url(${ToccoLogo});\n mask-repeat: no-repeat;\n mask-position: -300px -900px;\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Typography, scale, Link} from 'tocco-ui'\nimport {FormattedMessage, intlShape} from 'react-intl'\nimport styled from 'styled-components'\n\nimport ToccoLogo from '../../assets/tocco_red.svg'\n\nconst StyledFormattedMessageWrapper = styled.div`\n font-size: ${scale.font(-1.5)};\n margin-top: ${scale.space(0.5)};\n`\n\nconst StyledBlockWrapper = styled.div`\n margin-top: ${scale.space(0.5)};\n`\n\nconst AboutTocco = ({niceVersion, niceRevision, intl}) => {\n const msg = id => intl.formatMessage({id})\n\n return <Typography.Span>\n <img width=\"80%\" src={ToccoLogo}/>\n <div dangerouslySetInnerHTML={{__html: msg('client.admin.tocco.address')}}/>\n <Typography.P>\n <Link\n href={msg('client.admin.tocco.homepage')}\n neutral\n target=\"_blank\"\n >\n <FormattedMessage id=\"client.admin.tocco.homepage\"/>\n </Link><br/>\n <Link\n href={'mailto:' + msg('client.admin.tocco.email')}\n neutral\n target=\"_blank\"\n >\n <FormattedMessage id=\"client.admin.tocco.email\"/>\n </Link><br/>\n <Link\n href={'tel:' + msg('client.admin.tocco.phone')}\n neutral\n target=\"_blank\"\n >\n <FormattedMessage id=\"client.admin.tocco.phone\"/>\n </Link>\n </Typography.P>\n <StyledBlockWrapper>\n <Typography.P>\n <FormattedMessage id=\"client.admin.about.versionLabel\"/>: {niceVersion}<br/>\n <FormattedMessage id=\"client.admin.about.revisionLabel\"/>: {niceRevision}\n </Typography.P>\n </StyledBlockWrapper>\n <StyledFormattedMessageWrapper>\n <FormattedMessage id=\"client.admin.copyright\"/>\n </StyledFormattedMessageWrapper>\n </Typography.Span>\n}\n\nAboutTocco.propTypes = {\n intl: intlShape,\n niceVersion: PropTypes.string,\n niceRevision: PropTypes.string\n}\n\nexport default AboutTocco\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\n\nimport AboutTocco from './AboutTocco'\n\nconst mapStateToProps = state => ({\n niceVersion: state.session.serverSettings.niceVersion,\n niceRevision: state.session.serverSettings.niceRevision\n})\n\nexport default connect(mapStateToProps, null)(injectIntl(AboutTocco))\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport {MenuItem, ButtonMenu, BallMenu, StyledBall, scale} from 'tocco-ui'\nimport {FormattedMessage} from 'react-intl'\nimport styled from 'styled-components'\n\nimport {\n StyledHeader,\n StyledConfig,\n StyledBackgroundLogo\n} from './StyledComponents'\nimport AboutTocco from '../AboutTocco'\n\nconst StyledBallMenuWrapper = styled.span`\n margin-top: 2px;\n\n ${StyledBall} {\n font-size: ${scale.font(1)};\n }\n`\n\nconst Header = ({\n username,\n currentBusinessUnit,\n businessUnits,\n loadBusinessUnits,\n changeBusinessUnit,\n doLogout,\n runEnv,\n niceVersion,\n openModalComponent\n}) => {\n const handleBusinessUnitOpen = () => {\n if (businessUnits.length === 0) {\n loadBusinessUnits()\n }\n }\n\n return <>\n <StyledBackgroundLogo runEnv={runEnv}/>\n <StyledHeader>\n <StyledConfig>\n <ButtonMenu label={currentBusinessUnit.label} onOpen={handleBusinessUnitOpen}>\n {\n businessUnits.map(bU =>\n <MenuItem\n key={`buMenu-${bU.id}`}\n disabled={bU.id === currentBusinessUnit.id}\n onClick={() => {\n changeBusinessUnit(bU.id)\n }}\n >\n {bU.label}\n </MenuItem>\n )\n }\n </ButtonMenu>\n <ButtonMenu label={username}>\n <MenuItem onClick={doLogout}><FormattedMessage id=\"client.admin.menu.logout\"/></MenuItem>\n </ButtonMenu>\n <StyledBallMenuWrapper>\n <BallMenu buttonProps={{icon: 'question-circle'}}>\n {niceVersion && <MenuItem onClick={() => {\n window.open(\n `https://${niceVersion.replace('.', '')}.docs.tocco.ch/de/`,\n '_blank'\n )\n }}>\n <FormattedMessage id=\"client.admin.menu.doc\"/>\n </MenuItem>}\n <MenuItem onClick={() => {\n window.open(\n '/nice2/swagger',\n '_blank'\n )\n }}>\n <FormattedMessage id=\"client.admin.menu.restDoc\"/>\n </MenuItem>\n <MenuItem onClick={() => {\n openModalComponent('about', null, null, () => <AboutTocco/>, true)\n }}>\n <FormattedMessage id=\"client.admin.menu.aboutToccoTitle\"/>\n </MenuItem>\n </BallMenu>\n </StyledBallMenuWrapper>\n </StyledConfig>\n </StyledHeader>\n </>\n}\n\nconst bUPropType = PropTypes.shape({\n id: PropTypes.string,\n label: PropTypes.string\n})\n\nHeader.propTypes = {\n username: PropTypes.string,\n currentBusinessUnit: bUPropType,\n businessUnits: PropTypes.arrayOf(bUPropType),\n doLogout: PropTypes.func.isRequired,\n changeBusinessUnit: PropTypes.func.isRequired,\n loadBusinessUnits: PropTypes.func.isRequired,\n runEnv: PropTypes.string,\n niceVersion: PropTypes.string,\n openModalComponent: PropTypes.func.isRequired\n}\n\nexport default Header\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\nimport {notifier} from 'tocco-app-extensions'\n\nimport {doLogout, loadBusinessUnits, changeBusinessUnit} from '../../modules/session/actions'\nimport Header from './Header'\n\nconst mapActionCreators = {\n doLogout,\n loadBusinessUnits,\n changeBusinessUnit,\n openModalComponent: notifier.modalComponent\n}\n\nconst mapStateToProps = (state, props) => ({\n username: state.session.username,\n currentBusinessUnit: state.session.currentBusinessUnit,\n businessUnits: state.session.businessUnits,\n runEnv: state.session.serverSettings.runEnv,\n niceVersion: state.session.serverSettings.niceVersion\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(Header))\n","import styled from 'styled-components'\nimport SlideMenu from 'react-burger-menu/lib/menus/slide'\nimport {theme} from 'tocco-ui'\n\nconst calcViewportHeight = () => {\n const vh = window.innerHeight * 0.01\n document.documentElement.style.setProperty('--vh', `${vh}px`)\n}\n\ncalcViewportHeight()\n\nwindow.addEventListener('resize', () => calcViewportHeight())\nwindow.addEventListener('orientationchange', () => calcViewportHeight())\n\nexport const StyledWrapper = styled.div`\n display: grid;\n grid-template:\n 'header header' auto\n 'menu content' 1fr / auto 1fr;\n background-color: #fff;\n height: calc(var(--vh, 1vh) * 100);\n\n .bm-burger-button button:focus {\n outline: 0;\n }\n`\n\nexport const StyledContent = styled.div`\n grid-area: content;\n background-color: ${theme.color('backgroundBody')};\n overflow: hidden;\n display: flex;\n`\nexport const StyledMenu = styled(SlideMenu)`\n grid-area: menu;\n`\n\nexport const burgerMenuStyles = {\n bmBurgerButton: {\n position: 'absolute',\n outline: '0',\n width: '24px',\n height: '24px',\n left: '17px',\n top: '10px'\n },\n bmBurgerBarsHover: {\n background: '#a90000'\n },\n bmMenuWrap: {\n position: 'fixed',\n height: '100%',\n width: '16%',\n minWidth: '350px'\n },\n bmMenu: {\n background: '#fff',\n padding: '0 0 3rem 0',\n fontSize: '1.15em',\n overflow: 'hidden'\n },\n bmMorphShape: {\n fill: '#373a47'\n },\n bmItemList: {\n color: '#b8b7ad',\n height: '100%'\n },\n bmItem: {\n display: 'inline-block'\n },\n bmOverlay: {\n background: 'rgba(0, 0, 0, 0.3)'\n }\n}\n","import React, {useState, useEffect} from 'react'\nimport PropTypes from 'prop-types'\nimport {Router, Route, Redirect, Switch} from 'react-router-dom'\nimport {createBrowserHistory} from 'history'\nimport {BurgerButton, LoadMask} from 'tocco-ui'\nimport {FormattedMessage} from 'react-intl'\nimport {withTheme} from 'styled-components'\nimport {notifier} from 'tocco-app-extensions'\n\nimport Navigation from '../Navigation'\nimport DashboardRoute from '../../routes/dashboard'\nimport EntitiesRoute from '../../routes/entities'\nimport Settings from '../../routes/settings'\nimport Header from '../Header'\nimport {\n StyledWrapper,\n StyledContent,\n StyledMenu,\n burgerMenuStyles\n} from './StyledComponents'\n\nconst Admin = ({\n initializeNavigation,\n setMenuOpen,\n menuOpen,\n baseRoute,\n confirm,\n loadPrincipal,\n clearPersistedViews,\n loadServerSettings,\n theme\n}) => {\n const [history, setHistory] = useState(null)\n\n useEffect(() => {\n initializeHistory()\n initializeNavigation()\n loadPrincipal()\n loadServerSettings()\n }, [])\n\n const initializeHistory = () => {\n const browserHistory = createBrowserHistory({\n ...baseRoute && {basename: baseRoute},\n getUserConfirmation: (message, callback) => {\n confirm(\n '',\n message,\n <FormattedMessage id=\"client.common.ok\"/>,\n <FormattedMessage id=\"client.common.cancel\"/>,\n () => callback(true), // eslint-disable-line standard/no-callback-literal\n () => callback(false) // eslint-disable-line standard/no-callback-literal\n )\n }\n })\n setHistory(browserHistory)\n }\n\n const isMenuOpen = state => {\n if (state.isOpen !== menuOpen) {\n setMenuOpen(state.isOpen)\n }\n }\n\n return <LoadMask required={[history !== null]}>\n <Router history={history || {}}>\n <notifier.Notifier/>\n <StyledWrapper id=\"outer-container\">\n <Header/>\n <StyledMenu\n isOpen={menuOpen}\n onStateChange={isMenuOpen}\n customCrossIcon={false}\n customBurgerIcon={<BurgerButton isOpen={menuOpen} size=\"20\" color={theme.colors.paper}/>}\n styles={burgerMenuStyles}\n pageWrapId={'page-wrap'}\n outerContainerId={'outer-container'}>\n <Navigation onClick={() => {\n setMenuOpen(false)\n clearPersistedViews()\n }}/>\n </StyledMenu>\n <StyledContent id=\"page-wrap\">\n <Switch>\n <Route exact path=\"/\"\n render={({match}) => <Redirect to={`${match.url.replace(/\\/$/, '')}/dashboard`}/>}/>\n <Route exact={true} path=\"/dashboard\" component={DashboardRoute}/>\n <Route path=\"/e\" component={EntitiesRoute}/>\n <Route path=\"/s\" component={Settings}/>\n <Route render={({match}) => <Redirect to={`${match.url.replace(/\\/$/, '')}/dashboard`}/>}/>\n </Switch>\n </StyledContent>\n </StyledWrapper>\n </Router>\n </LoadMask>\n}\n\nAdmin.propTypes = {\n baseRoute: PropTypes.string,\n loggedIn: PropTypes.bool,\n menuOpen: PropTypes.bool,\n loadPrincipal: PropTypes.func.isRequired,\n clearPersistedViews: PropTypes.func.isRequired,\n setMenuOpen: PropTypes.func.isRequired,\n confirm: PropTypes.func.isRequired,\n initializeNavigation: PropTypes.func.isRequired,\n loadServerSettings: PropTypes.func.isRequired,\n theme: PropTypes.object.isRequired\n}\n\nexport default withTheme(Admin)\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\nimport {notifier, viewPersistor} from 'tocco-app-extensions'\n\nimport {loadPrincipal, loadServerSettings} from '../../modules/session/actions'\nimport {initializeNavigation, setMenuOpen} from '../../modules/navigation/actions'\nimport Admin from './Admin'\n\nconst mapActionCreators = {\n loadPrincipal,\n confirm: notifier.confirm,\n initializeNavigation,\n setMenuOpen,\n clearPersistedViews: viewPersistor.clearPersistedViews,\n loadServerSettings\n}\n\nconst mapStateToProps = (state, props) => ({\n baseRoute: state.input.baseRoute,\n menuOpen: state.navigation.menuOpen\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(Admin))\n","import React, {useEffect} from 'react'\nimport PropTypes from 'prop-types'\nimport {LoadMask} from 'tocco-ui'\nimport {Helmet} from 'react-helmet'\n\nimport Login from '../../components/Login'\nimport fav from './favicon.ico'\nimport Admin from '../Admin'\n\nconst LoginGuard = ({doSessionCheck, loggedIn}) => {\n useEffect(() => { doSessionCheck() }, [])\n\n return (\n <div>\n <Helmet defer={false}>\n <title>Tocco</title>\n <link rel=\"icon\" type=\"image/png\" href={fav} sizes=\"16x16\"/>\n </Helmet>\n <LoadMask required={[loggedIn !== undefined]} loadingText=\"Logging in...\">\n <div>\n {!loggedIn ? <Login/> : <Admin/>}\n </div>\n </LoadMask>\n </div>\n )\n}\n\nLoginGuard.propTypes = {\n loggedIn: PropTypes.bool,\n doSessionCheck: PropTypes.func.isRequired\n}\n\nexport default LoginGuard\n","import {connect} from 'react-redux'\nimport {injectIntl} from 'react-intl'\nimport {notifier} from 'tocco-app-extensions'\nimport {hot} from 'react-hot-loader/root'\n\nimport {doSessionCheck} from '../../modules/session/actions'\nimport LoginGuard from './LoginGuard'\n\nconst mapActionCreators = {\n doSessionCheck,\n confirm: notifier.confirm\n}\n\nconst mapStateToProps = (state, props) => ({\n loggedIn: state.session.loggedIn\n})\n\nexport default hot(connect(mapStateToProps, mapActionCreators)(injectIntl(LoginGuard)))\n","export {default} from './LoginGuardContainer'\n"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
(window.adminjsonp=window.adminjsonp||[]).push([[11],{510:function(e,t,n){"use strict";var r=n(6),a=n.n(r),c=n(12),o=n.n(c),i=n(5),u=n(50),l={ID:"ID",QUERY:"QUERY"},s=a.a.mark(m);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function p(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?d(n,!0).forEach(function(t){o()(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(n).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var f=1e5;function m(e,t){var n,r;return a.a.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:if(n=e.entityName,e.type!==l.QUERY){a.next=9;break}return a.next=4,Object(i.b)(t,e.entityName,p({},e.query,{limit:f}));case 4:if(!((r=a.sent).length>f)){a.next=8;break}return a.next=8,Object(i.b)(u.a.logError,"Selected records exceed limit of ".concat(f));case 8:return a.abrupt("return",{entityName:n,keys:r.map(function(e){return e.key})});case 9:return a.abrupt("return",{entityName:n,keys:e.ids});case 10:case"end":return a.stop()}},s)}var b=n(17),y=n.n(b),g=y.a.shape({entityName:y.a.string.isRequired,ids:function(e,t,n){if(e.selection&&e.selection.type===l.ID&&!e.selection[t])return new Error("Selection.ids prop not defined. Component: ".concat(n,"'."))},query:function(e,t,n){if(e.selection&&e.selection.type===l.QUERY&&!e.selection[t])return new Error("Selection.query prop not defined. Component: ".concat(n,"'."))},type:y.a.oneOf(Object.keys(l)).isRequired,count:y.a.number});t.a={getEntities:m,propType:g,selectionTypes:l}},699:function(e,t,n){"use strict";n.r(t);var r=n(0),a=n.n(r),c=n(64),o=(n(263),n(504));t.default=function(e){var t=Object(o.a)(e.match.url,2);return a.a.createElement(c.b,{to:t+"/Cash_management_import/list?formName=Cash_management_import_action"})}},700:function(e,t,n){"use strict";n.r(t);var r=n(0),a=n.n(r),c=n(64);n(263);t.default=function(e){return a.a.createElement(c.b,{to:{pathname:"/e/Output_job/list",search:"tql=".concat(encodeURIComponent('entity=="'.concat(e.selection.entityName,'"')))}})}},705:function(e,t,n){"use strict";n.r(t);var r,a=n(12),c=n.n(a),o=n(0),i=n.n(o),u=n(33),l=n(95),s=n(499),d=n(73),p=n(66),f=n(75),m=n(150),b=n(17),y=n.n(b),g=n(54),h=n.n(g),E="inputEditTable/INITIALIZE_TABLE",v="inputEditTable/LOAD_DATA",O="inputEditTable/UPDATE_VALUE",j="inputEditTable/SET_SORTING",w=function(e){return{type:"inputEditTable/SET_DATA",payload:{data:e}}},x=function(e){return{type:"inputEditTable/SET_EDIT_FORM",payload:e}},T=function(e,t,n){return{type:"inputEditTable/SET_VALUE",payload:{inputDataKey:e,node:t,value:n}}},k=function(e){return{type:"inputEditTable/SET_DATA_FORM_COLUMNS",payload:{dataFormColumns:e}}},S=function(e){return{type:"inputEditTable/SET_ACTION_DEFINITIONS",payload:{actionDefinitions:e}}},P=function(e){return{type:"inputEditTable/SET_DATA_LOADING_IN_PROGRESS",payload:{dataLoadingInProgress:e}}};function D(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function A(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?D(n,!0).forEach(function(t){c()(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):D(n).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var N={actionDefinitions:[],dataFormColumns:[],data:[],inputEditForm:[],sorting:[],dataLoadingInProgress:!1},I=function(e){return"asc"===e?"desc":"asc"},C=(r={},c()(r,"inputEditTable/SET_DATA_FORM_COLUMNS",u.a.singleTransferReducer("dataFormColumns")),c()(r,"inputEditTable/SET_ACTION_DEFINITIONS",u.a.singleTransferReducer("actionDefinitions")),c()(r,"inputEditTable/SET_EDIT_FORM",u.a.singleTransferReducer("inputEditForm")),c()(r,"inputEditTable/SET_DATA",u.a.singleTransferReducer("data")),c()(r,"inputEditTable/SET_DATA_LOADING_IN_PROGRESS",u.a.singleTransferReducer("dataLoadingInProgress")),c()(r,"inputEditTable/SET_VALUE",function(e,t){var n=t.payload,r=n.inputDataKey,a=n.node,o=n.value;return A({},e,{data:e.data.reduce(function(e,t){return t.pk===r?[].concat(h()(e),[A({},t,c()({},a,o))]):[].concat(h()(e),[t])},[])})}),c()(r,j,function(e,t){var n=t.payload,r=n.field;if(n.add){var a=e.sorting.filter(function(e){return e.field===r}),c=a.length>0?I(a[0].order):"asc";return A({},e,{sorting:[].concat(h()(e.sorting.filter(function(e){return e.field!==r})),[{field:r,order:c}])})}var o=e.sorting,i=o.length>0&&o[0].field===r?I(o[0].order):"asc";return A({},e,{sorting:[{field:r,order:i}]})}),r);var R=n(49),_=n.n(R),L=n(6),F=n.n(L),M=n(5),q=n(56),U="inputEditPagination/SET_CURRENT_PAGE",V=function(e){return{type:"inputEditPagination/SET_TOTAL_COUNT",payload:{totalCount:e}}},G="inputEditSearch/INITIALIZE_SEARCH",B="inputEditSearch/SET_SEARCH_QUERIES",z="inputEditSearch/SET_INITIALIZED",K=function(e){return{type:"inputEditSearch/SET_FORM",payload:{form:e}}},J=function(e){return{type:z,payload:{initialized:e}}},Q=n(497);function W(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Y(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?W(n,!0).forEach(function(t){c()(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):W(n).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var H=function(e){return e.body.data.map(function(e){var t=Object.keys(e).reduce(function(t,n){return Y({},t,{},!isNaN(parseInt(n))?{inputFields:Y({},t.inputFields,c()({},n,e[n]))}:{entityFields:Y({},t.entityFields,c()({},n,e[n]))})},{inputFields:{},entityFields:{}});return Y({},t.inputFields,{},Q.a.flattenPaths(t.entityFields))}).map(function(e){return Y({},e,{__key:e.pk})})};function Z(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function X(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Z(n,!0).forEach(function(t){c()(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Z(n).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var $=F.a.mark(de),ee=F.a.mark(pe),te=F.a.mark(fe),ne=F.a.mark(me),re=F.a.mark(ye),ae=F.a.mark(ge),ce=function(e){return e.input},oe=function(e){return e.inputEdit},ie=function(e){return e.inputEditTable},ue=function(e){return e.inputEditSearch},le=function(e){return e.inputEditSearch.searchQueries},se=function(e){return e.inputEditPagination};function de(){return F.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(M.a)([Object(M.j)(E,fe),Object(M.j)(v,me),Object(M.i)(O,ye),Object(M.j)(j,me)]);case 2:case"end":return e.stop()}},$)}function pe(e){var t,n;return F.a.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=e.children.find(function(e){return"main-action-bar"===e.id}).children.filter(function(e){return"action"===e.componentType}).map(function(e){return X({},e,{scope:"detail"})}),r.next=3,Object(M.e)(S(t));case 3:return n=e.children.find(function(e){return"table"===e.componentType}).children,r.next=6,Object(M.e)(k(n));case 6:case"end":return r.stop()}},ee)}function fe(){var e,t,n,r,a,c,o,i,u,l;return F.a.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return s.next=2,Object(M.e)(P(!0));case 2:return s.next=4,Object(M.f)(oe);case 4:return e=s.sent,t=e.selection,s.next=8,Object(M.f)(ce);case 8:return n=s.sent,r=n.actionProperties,a=r&&r.inputEditDataForm?r.inputEditDataForm:"Input_edit_data",s.next=13,Object(M.a)([Object(M.b)(q.a.requestSaga,"inputEdit/form",{method:"POST",body:t}),Object(M.b)(q.a.fetchForm,a,"list")]);case 13:return c=s.sent,o=_()(c,2),i=o[0],u=o[1],s.next=19,Object(M.e)(x({inputEditForm:i.body}));case 19:return s.next=21,Object(M.b)(pe,u);case 21:return s.next=23,Object(M.f)(ue);case 23:if(l=s.sent,l.initialized){s.next=28;break}return s.next=28,Object(M.h)(z);case 28:return s.next=30,Object(M.b)(me,{});case 30:case"end":return s.stop()}},te)}function me(e){var t,n,r,a,c,o,i,u,l,s,d,p,f,m,b;return F.a.wrap(function(y){for(;;)switch(y.prev=y.next){case 0:return t=e.newSorting,n=e.newSearchQueries,r=e.newPage,y.next=3,Object(M.e)(P(!0));case 3:return y.next=5,Object(M.f)(oe);case 5:if(a=y.sent,c=a.selection,y.t0=t,y.t0){y.next=12;break}return y.next=11,Object(M.f)(ie);case 11:y.t0=y.sent.sorting;case 12:if(o=y.t0,y.t1=n,y.t1){y.next=18;break}return y.next=17,Object(M.f)(le);case 17:y.t1=y.sent;case 18:if(i=y.t1,y.t2=r,y.t2){y.next=24;break}return y.next=23,Object(M.f)(se);case 23:y.t2=y.sent.currentPage;case 24:return u=y.t2,y.next=27,Object(M.f)(se);case 27:return l=y.sent,s=l.recordsPerPage,y.next=31,Object(M.f)(ie);case 31:return d=y.sent.dataFormColumns,p=be(d),f=q.a.buildRequestQuery({limit:s,sorting:o,page:u,where:i.join(" and "),paths:p}),y.next=36,Object(M.b)(q.a.requestSaga,"inputEdit/data/search",{method:"POST",body:{selection:c,searchBean:f}});case 36:return m=y.sent,y.next=39,Object(M.b)(H,m);case 39:return b=y.sent,y.next=42,Object(M.e)(w(b));case 42:return y.next=44,Object(M.e)(V(m.body.count));case 44:return y.next=46,Object(M.e)(P(!1));case 46:case"end":return y.stop()}},ne)}var be=function(e){return["pk"].concat(h()(e.flatMap(function(e){return e.children.map(function(e){return e.path})})))};function ye(e){var t,n,r,a,c;return F.a.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,n=t.inputDataKey,r=t.node,a=t.value,o.next=3,Object(M.e)(T(n,r,a));case 3:return o.next=5,Object(M.b)(q.a.requestSaga,"inputEdit/data",{method:"POST",body:{inputDataKey:n,node:r,value:a}});case 5:return c=o.sent,o.next=8,ge(c);case 8:case"end":return o.stop()}},re)}function ge(e){var t,n;return F.a.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:if(!(t=e.body.calculatedValues)){r.next=5;break}return n=t.map(function(e){return T(e.inputDataKey,e.node,e.value)}),r.next=5,Object(M.a)(n.map(function(e){return Object(M.e)(e)}));case 5:case"end":return r.stop()}},ae)}var he,Ee=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:N,t=arguments.length>1?arguments[1]:void 0,n=C[t.type];return n?n(e,t):e},ve={form:{},initialized:!1,searchQueries:[]},Oe=(he={},c()(he,"inputEditSearch/SET_FORM",u.a.singleTransferReducer("form")),c()(he,B,u.a.singleTransferReducer("searchQueries")),c()(he,z,u.a.singleTransferReducer("initialized")),he);var je=F.a.mark(ke),we=F.a.mark(Se),xe=F.a.mark(Pe),Te=function(e){return e.inputEditSearch};function ke(){return F.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(M.a)([Object(M.j)(G,Se),Object(M.j)(B,Pe)]);case 2:case"end":return e.stop()}},je)}function Se(){var e;return F.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Object(M.b)(q.a.fetchForm,"Input_edit_data","search");case 2:return e=t.sent,t.next=5,Object(M.e)(K(e));case 5:case"end":return t.stop()}},we)}function Pe(e){var t,n;return F.a.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=e.payload,r.next=3,Object(M.f)(Te);case 3:if(n=r.sent,!n.initialized){r.next=10;break}return r.next=8,Object(M.b)(me,{newSearchQueries:t.searchQueries});case 8:r.next=12;break;case 10:return r.next=12,Object(M.e)(J(!0));case 12:case"end":return r.stop()}},xe)}var De,Ae=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ve,t=arguments.length>1?arguments[1]:void 0,n=Oe[t.type];return n?n(e,t):e},Ne={totalCount:0,currentPage:1,recordsPerPage:25},Ie=(De={},c()(De,"inputEditPagination/SET_TOTAL_COUNT",u.a.singleTransferReducer("totalCount")),c()(De,U,u.a.singleTransferReducer("currentPage")),De);var Ce=F.a.mark(_e),Re=F.a.mark(Le);function _e(){return F.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(M.a)([Object(M.j)(U,Le)]);case 2:case"end":return e.stop()}},Ce)}function Le(e){var t;return F.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return t=e.payload.currentPage,n.next=3,Object(M.b)(me,{newPage:t});case 3:case"end":return n.stop()}},Re)}var Fe,Me=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Ne,t=arguments.length>1?arguments[1]:void 0,n=Ie[t.type];return n?n(e,t):e},qe="inputEdit/UPDATE_SELECTION",Ue=function(e){return{type:"inputEdit/SET_SELECTION",payload:{selection:e}}},Ve=function(e){return{type:"inputEdit/SET_HANDLE_NOTIFICATIONS",payload:{handleNotifications:e}}},Ge={selection:null,handleNotifications:!1},Be=(Fe={},c()(Fe,"inputEdit/SET_SELECTION",u.a.singleTransferReducer("selection")),c()(Fe,"inputEdit/SET_HANDLE_NOTIFICATIONS",u.a.singleTransferReducer("handleNotifications")),Fe);var ze=F.a.mark(We),Ke=F.a.mark(Ye),Je=F.a.mark(He),Qe=function(e){return e.inputEdit};function We(){return F.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(M.a)([Object(M.i)(s.a.actions.ACTION_INVOKE,Ye),Object(M.j)(qe,He)]);case 2:case"end":return e.stop()}},ze)}function Ye(e){return F.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Object(M.e)(d.a.emitAction(e));case 2:case"end":return t.stop()}},Ke)}function He(){var e,t;return F.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,Object(M.f)(Qe);case 2:return e=n.sent,t=e.selection,n.next=6,Object(M.b)(q.a.requestSaga,"inputEdit/update-input-datas",{method:"POST",body:t});case 6:case"end":return n.stop()}},Je)}var Ze=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Ge,t=arguments.length>1?arguments[1]:void 0,n=Be[t.type];return n?n(e,t):e},Xe="inputEditInformation/INITIALIZE_INFORMATION",$e=function(e){return{type:"inputEditInformation/SET_INFORMATION",payload:{information:e}}},et={information:[]},tt=c()({},"inputEditInformation/SET_INFORMATION",u.a.singleTransferReducer("information"));var nt=F.a.mark(ct),rt=F.a.mark(ot),at=function(e){return e.inputEdit};function ct(){return F.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(M.a)([Object(M.j)(Xe,ot)]);case 2:case"end":return e.stop()}},nt)}function ot(){var e,t,n,r;return F.a.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,Object(M.f)(at);case 2:return e=a.sent,t=e.selection,a.next=6,Object(M.b)(q.a.requestSaga,"inputEdit/information",{method:"POST",body:t});case 6:return n=a.sent,r=n.body,a.next=10,Object(M.e)($e(r));case 10:case"end":return a.stop()}},rt)}var it={inputEdit:Ze,inputEditTable:Ee,inputEditSearch:Ae,inputEditPagination:Me,inputEditInformation:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:et,t=arguments.length>1?arguments[1]:void 0,n=tt[t.type];return n?n(e,t):e}},ut=[We,de,ke,_e,ct],lt=n(45),st=(n(510),n(18)),dt=n(517),pt=n(35),ft=n.n(pt),mt=n(2),bt=n(43),yt=n.n(bt),gt=n(28);function ht(){var e=ft()(["\n padding: ",";\n background-color: ",";\n text-align: left;\n border-bottom: 2px solid ",";\n ",";\n user-select: none;\n text-overflow: ellipsis;\n\n &:hover {\n background-color: ",";\n }\n"]);return ht=function(){return e},e}function Et(){var e=ft()(["\n &:hover {\n "," {\n background-color: ",";\n }\n }\n"]);return Et=function(){return e},e}function vt(){var e=ft()(["\n display: flex;\n align-items: center;\n width: 100%;\n\n && {\n input,\n textarea,\n &.single-select > span > div {\n border: 1px solid transparent;\n padding-left: ",";\n\n &:not([disabled]):hover {\n cursor: pointer;\n border-color: ",";\n }\n\n &:not([disabled]):focus {\n border-color: ",";\n }\n }\n\n &.single-select > span {\n display: inline-block;\n width: 100%;\n margin-left: 5px;\n margin-bottom: 5px;\n background-color: ",";\n }\n\n &.single-select button {\n margin-bottom: 2px;\n margin-right: 2px;\n }\n }\n"]);return vt=function(){return e},e}function Ot(){var e=ft()(["\n width: 100%;\n height: 100%;\n overflow: auto;\n"]);return Ot=function(){return e},e}function jt(){var e=ft()(["\n background-color: ",";\n border-collapse: collapse;\n border-spacing: 0;\n width: 100%;\n margin-top: ",";\n margin-bottom: ",";\n table-layout: fixed;\n min-width: 900px;\n"]);return jt=function(){return e},e}var wt=function(e){var t=e.theme;return Object(st.O)(yt()(t,"colors.paper"),2)},xt=st.N.space(-1),Tt=(mt.e.table(jt(),st.P.color("paper"),xt,xt),mt.e.div(Ot())),kt=mt.e.div(vt(),xt,wt,wt,st.P.color("paper")),St=(mt.e.tr(Et(),kt,function(e){var t=e.theme;return Object(gt.c)(.25,t.colors.secondaryLight)}),mt.e.th(ht(),xt,st.P.color("paper"),wt,Object(st.L)({fontWeight:st.P.fontWeight("bold")}),function(e){var t=e.theme;return Object(gt.c)(.25,t.colors.secondaryLight)}),function(e){if(["INPUT","TEXTAREA"].includes(document.activeElement.tagName)&&["ArrowDown","ArrowLeft","ArrowRight","ArrowUp"].includes(e.key)){e.preventDefault();var t=document.activeElement.id.split(":"),n=_()(t,2),r=n[0],a=n[1];if("ArrowUp"===e.key||"ArrowDown"===e.key){var c=Number.parseInt(r),o="ArrowUp"===e.key?-1:1,i="".concat(c+o,":").concat(a),u=document.getElementById(i);Dt(u)}else if("ArrowLeft"===e.key||"ArrowRight"===e.key){var l=Number.parseInt(a),s="ArrowLeft"===e.key?-1:1,d=Pt(r,l,s);Dt(d)}}}),Pt=function e(t,n,r){var a=n+r,c="".concat(t,":").concat(a),o=document.getElementById(c);return o?["INPUT","TEXTAREA"].includes(o.tagName)&&!o.disabled?o:e(t,a,r):o},Dt=function(e){e&&setTimeout(function(){e.focus()},0)},At=function(e,t){var n=e.path,r=e.dataType,a=dt.a.factory("list",r),c=t[n];return i.a.createElement(kt,{key:n},i.a.createElement(a,{type:r,formField:e,value:c,breakWords:!1}))},Nt=function(e){var t=e.data,n=e.dataFormColumns,r=e.inputEditForm,a=e.updateValue,c=e.sorting,u=e.setSorting,l=e.dataLoadingInProgress,s=e.totalCount,d=e.currentPage,p=e.recordsPerPage,f=e.setCurrentPage,m=Object(o.useState)([]),b=_()(m,2),y=b[0],g=b[1],E=Object(o.useState)([]),v=_()(E,2),O=v[0],j=v[1];Object(o.useEffect)(function(){var e=Q.a.getColumnDefinition(n,c,At),t=r.map(function(e,t){return{idx:t,id:e.id,label:e.label,sorting:{sortable:!1},definition:e,resizable:!0,dynamic:!0,CellRenderer:function(e){var t=e.rowData,n=e.column,r=e.rowIdx;return function(e,t,n,r){var a,c,o=e.definition,u=o.readonly,l=o.id,s=o.dataType,d=o.options,p=t.pk,f=t[l];return u?i.a.createElement(kt,{key:l},i.a.createElement(st.i,{id:l,type:s,value:f,options:d})):i.a.createElement(kt,{key:l},i.a.createElement(st.h,{id:(a=r,c=e.idx,"".concat(a,":").concat(c)),type:s,value:f,options:d,events:{onChange:function(e){n(p,l,e)},onFocus:function(e){return e.target.select()}}}))}(n,t,a,r)}}}),o=[].concat(h()(e),h()(t)).sort(function(e,t){return O.findIndex(function(t){return t===e.id})-O.findIndex(function(e){return e===t.id})});g(o)},[O,n,r,c]);return 0===y.length?null:i.a.createElement(Tt,{onKeyDown:St},i.a.createElement(st.I,{dataLoadingInProgress:l,columns:y,data:t,onSortingChange:u,onColumnPositionChange:function(e,t,n){j(n.reduce(function(n,r){return[].concat(h()(n),h()(r.id===t?[r.id,e]:[]),h()(r.id===e?[]:[r.id]))},[]))},paginationInfo:{currentPage:d,recordsPerPage:p,totalCount:s},onPageChange:f}))},It={updateValue:function(e,t,n){return{type:O,payload:{inputDataKey:e,node:t,value:n}}},setSorting:function(e,t){return{type:j,payload:{field:e,add:t}}},setCurrentPage:function(e){return{type:U,payload:{currentPage:e}}}},Ct=Object(lt.connect)(function(e){return{data:e.inputEditTable.data,dataFormColumns:e.inputEditTable.dataFormColumns,inputEditForm:e.inputEditTable.inputEditForm,sorting:e.inputEditTable.sorting,dataLoadingInProgress:e.inputEditTable.dataLoadingInProgress,totalCount:e.inputEditPagination.totalCount,currentPage:e.inputEditPagination.currentPage,recordsPerPage:e.inputEditPagination.recordsPerPage}},It)(Nt),Rt=n(533),_t=n(230),Lt=n.n(_t),Ft=n(567),Mt=function(e,t){return function(n){var r=n.values;if(Object.keys(r).length>0){var a=qt(r,e);t(a)}else t([])}},qt=function(e,t){return Object.entries(e).map(function(e){var n=_()(e,2),r=n[0],a=n[1];return{path:r,fieldType:Ut(r,t),value:a}}).filter(function(e){e.path,e.fieldType;var t=e.value;return t&&(!Array.isArray(t)||t.length>0)}).map(function(e){var t=e.path,n=e.fieldType,r=e.value;return Ft.a.getTql(t,r,n)})},Ut=function(e,t){var n=t.children.find(function(e){return e.children.length>0});if(n){var r=n.children.find(function(t){return t.id===e});return r.children.length>0?r.children[0].dataType:r.dataType}},Vt=function(e){var t=e.form,n=e.setSearchFields;return t.children?i.a.createElement(Rt.a,{form:t,onChange:Lt()(Mt(t,n),500),noButtons:!0,validate:!1,mappingType:"search"}):null},Gt={setSearchFields:function(e){return{type:B,payload:{searchQueries:e}}}},Bt=Object(lt.connect)(function(e){return{form:e.inputEditSearch.form}},Gt)(Vt);function zt(){var e=ft()(["\n border-bottom: 3px solid ",";\n padding: 0 8px 8px;\n"]);return zt=function(){return e},e}function Kt(){var e=ft()(["\n padding: 0 ",";\n"]);return Kt=function(){return e},e}function Jt(){var e=ft()(["\n margin-bottom: ",";\n"]);return Jt=function(){return e},e}function Qt(){var e=ft()(["\n && {\n width: calc(84% - 1rem);\n display: flex;\n flex-direction: column;\n ","\n }\n"]);return Qt=function(){return e},e}function Wt(){var e=ft()(["\n && {\n min-width: 265px;\n width: 16%;\n margin-right: 1rem;\n ","\n }\n"]);return Wt=function(){return e},e}function Yt(){var e=ft()(["\n height: calc(100% - ","); //remove top padding from total height\n background-color: ",";\n padding-top: ",";\n ","\n"]);return Yt=function(){return e},e}function Ht(){var e=ft()(["\n display: flex;\n height: 100%;\n"]);return Ht=function(){return e},e}var Zt=mt.e.div(Ht()),Xt=Object(mt.d)(Yt(),st.N.space(-1),st.P.color("paper"),st.N.space(-1),st.G),$t=mt.e.div(Wt(),Xt),en=mt.e.div(Qt(),Xt),tn=mt.e.div(Jt(),st.N.space(0)),nn=mt.e.div(Kt(),st.N.space(-1)),rn=mt.e.div(zt(),st.P.color("backgroundBody"));function an(){var e=ft()(["\n"]);return an=function(){return e},e}var cn=mt.e.div(an());function on(){var e=ft()(["\n & > div > div > span {\n display: inline-block;\n margin-top: 5px;\n padding-bottom: 3px;\n }\n"]);return on=function(){return e},e}var un=mt.e.div(on()),ln=function(e){var t=e.information;return i.a.createElement(cn,null,t.map(function(e){var t=dt.a.factory("readOnly",e.type);return i.a.createElement(un,{key:e.id},i.a.createElement(st.A,{key:e.id,label:e.label,immutable:!0,hasValue:!0},i.a.createElement(t,{formField:{dataType:e.type},value:e.value})))}))},sn=Object(lt.connect)(function(e){return{information:e.inputEditInformation.information}})(ln),dn=i.a.createElement(p.a.Notifier,null),pn=i.a.createElement($t,null,i.a.createElement(nn,null,i.a.createElement(tn,null,i.a.createElement(Bt,null)),i.a.createElement(sn,null))),fn=i.a.createElement(Ct,null),mn=function(e){var t=e.selection,n=e.handleNotifications,r=e.updateSelection,a=e.initializeTable,c=e.initializeSearch,u=e.initializeInformation,l=e.actionDefinitions;return Object(o.useEffect)(function(){r()},[t]),Object(o.useEffect)(function(){a(),c(),u()},[t]),i.a.createElement(i.a.Fragment,null,n&&dn,i.a.createElement(Zt,null,pn,i.a.createElement(en,null,i.a.createElement(rn,null,l.map(function(e){return i.a.createElement(s.a.Action,{key:e.id,definition:e,selection:t})})),fn)))},bn={updateSelection:function(){return{type:qe,payload:{}}},initializeTable:function(){return{type:E}},initializeSearch:function(){return{type:G}},initializeInformation:function(){return{type:Xe}},notify:p.a.info},yn=Object(lt.connect)(function(e){return{selection:e.inputEdit.selection,actionDefinitions:e.inputEditTable.actionDefinitions,handleNotifications:e.inputEdit.handleNotifications}},bn)(mn);function gn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}var hn=["emitAction"],En=i.a.createElement(yn,null),vn=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3?arguments[3]:void 0,a=En,c=l.a.createStore(it,ut,t,"input-edit");d.a.addToStore(c,n.emitAction),s.a.addToStore(c);var o=!n.emitAction;return p.a.addToStore(c,o),f.a.addToStore(c,o),l.a.createApp("input-edit",a,c,{input:t,events:n,actions:[Ve(o),Ue(t.selection)],publicPath:r,textResourceModules:["component","common","input-edit"]})};l.a.registerAppInRegistry("input-edit",vn);var On=function(e){var t=hn.reduce(function(t,n){return e[n]&&(t[n]=e[n]),t},{});return vn("input-edit",e,t).component};On.propTypes=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?gn(n,!0).forEach(function(t){c()(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):gn(n).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({selection:y.a.object},hn.reduce(function(e,t){return e[t]=y.a.func,e},{}));var jn=Object(m.hot)(On);n.d(t,"default",function(){return jn})},706:function(e,t,n){"use strict";n.r(t);var r,a=n(0),c=n.n(a),o=n(57),i=n.n(o),u=n(72),l=n.n(u),s=n(58),d=n.n(s),p=n(59),f=n.n(p),m=n(60),b=n.n(m),y=n(54),g=n.n(y),h=(n(505),n(33)),E=(n(510),n(95)),v=n(149),O=n(150),j=n(12),w=n.n(j),x=n(154),T=n.n(x),k="resourceScheduler/INITIALIZE",S="resourceScheduler/UPDATE_REQUESTED_CALENDARS",P="resourceScheduler/SET_DATE_RANGE",D="resourceScheduler/REMOVE_REQUESTED_CALENDAR",A="resourceScheduler/ON_EVENT_CLICK",N="resourceScheduler/ON_REFRESH",I=function(e){return{type:"resourceScheduler/SET_CALENDAR_TYPES",payload:{calendarTypes:e}}},C=function(e,t){return{type:S,payload:{calendarType:e,ids:t}}},R=function(e){return{type:"resourceScheduler/SET_CALENDARS",payload:{calendars:e}}},_=function(e){return{type:P,payload:{dateRange:e}}},L=function(e,t){return{type:D,payload:{entityModel:e,id:t}}};function F(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function M(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?F(n,!0).forEach(function(t){w()(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):F(n).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var q=(r={},w()(r,"resourceScheduler/SET_CALENDAR_TYPES",h.a.singleTransferReducer("calendarTypes")),w()(r,"resourceScheduler/SET_CALENDARS",h.a.singleTransferReducer("calendars")),w()(r,P,h.a.singleTransferReducer("dateRange")),w()(r,S,function(e,t){var n=t.payload,r=n.ids,a=n.calendarType;return M({},e,{requestedCalendars:M({},T()(e.requestedCalendars,[a]),{},r.length>0?w()({},a,r):{})})}),w()(r,D,function(e,t){var n=t.payload,r=n.id,a=n.entityModel,c=e.calendarTypes.filter(function(e){return e.targetEntity===a}).map(function(e){return e.name});return M({},e,{requestedCalendars:M({},Object.keys(e.requestedCalendars).reduce(function(t,n){var a=e.requestedCalendars[n].filter(function(e){return!c.includes(n)||e!==r});return M({},t,{},a.length>0&&w()({},n,a))},{}))})}),w()(r,"resourceScheduler/REMOVE_ALL_CALENDARS",function(e){return M({},e,{requestedCalendars:{},calendars:[]})}),r),U={calendarTypes:[],requestedCalendars:{},calendars:[],dateRange:{}};var V=n(6),G=n.n(V),B=n(56),z=n(5),K=n(118),J=n.n(K),Q=function(e){return J()(e,function(e,t,n){return[].concat(g()(e),[{calendarTypeId:n,keys:t}])},[])},W=G.a.mark(ee),Y=G.a.mark(te),H=G.a.mark(ne),Z=G.a.mark(re),X=G.a.mark(ae),$=function(e){return e.resourceScheduler};function ee(){return G.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(z.a)([Object(z.j)(k,te),Object(z.j)(S,re),Object(z.j)(P,re),Object(z.j)(D,re),Object(z.j)(A,ae),Object(z.j)(N,re)]);case 2:case"end":return e.stop()}},W)}function te(){return G.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(z.b)(ne);case 2:case"end":return e.stop()}},Y)}function ne(){var e;return G.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Object(z.b)(B.a.requestSaga,"calendar/types");case 2:return e=t.sent,t.next=5,Object(z.e)(I(e.body.data||[]));case 5:case"end":return t.stop()}},H)}function re(){var e,t,n,r,a;return G.a.wrap(function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,Object(z.f)($);case 2:if(e=c.sent,t=e.requestedCalendars,n=e.dateRange,!(Object.keys(t).length>0&&n.startDate&&n.endDate)){c.next=16;break}return c.next=8,Object(z.b)(Q,t);case 8:return r=c.sent,c.next=11,Object(z.b)(B.a.requestSaga,"calendar/events",{method:"POST",body:{calendars:r,start:n.startDate.getTime(),end:n.endDate.getTime()}});case 11:return a=c.sent,c.next=14,Object(z.e)(R(a.body.data));case 14:c.next=18;break;case 16:return c.next=18,Object(z.e)(R([]));case 18:case"end":return c.stop()}},Z)}function ae(e){var t;return G.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return t=e.payload,n.next=3,Object(z.e)(v.a.fireExternalEvent("onEventClick",t));case 3:case"end":return n.stop()}},X)}var ce={resourceScheduler:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:U,t=arguments.length>1?arguments[1]:void 0,n=q[t.type];return n?n(e,t):e}},oe=[ee],ie=n(45),ue=n(19),le=n(96),se=n.n(le),de=n(35),pe=n.n(de),fe=n(644),me=n(2),be=n(18),ye=n(508);function ge(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function he(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ge(n,!0).forEach(function(t){w()(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ge(n).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var Ee,ve=function(e){var t=e.color,n=e.label;return c.a.createElement(be.J.Span,null,c.a.createElement(be.j,{icon:t?"square":["far","square"],"aria-hidden":"true",style:he({},t?{color:t}:{}),position:be.M.position.PREPEND})," ",n)},Oe=function(e){function t(){var e;return i()(this,t),e=d()(this,f()(t).call(this)),w()(se()(e),"handleSelect",function(t){return function(n){e.props.updateRequestedCalendars(t,n)}}),w()(se()(e),"getSearchLists",function(t){return t.map(function(t){return c.a.createElement(be.s.Wrapper,{key:t.name},c.a.createElement(be.s.Header,null,c.a.createElement(ve,{color:t.color,label:t.label})),c.a.createElement(be.s.Body,null,c.a.createElement(ye.a,{locale:e.props.locale,id:"search-panel-".concat(t.name),entityName:t.targetEntity,formName:t.formBase,limit:15,showSearchForm:!0,selectable:!0,selection:e.props.requestedCalendars&&e.props.requestedCalendars[t.name]||[],onSelectChange:e.handleSelect(t.name),simpleSearchFields:"txtFulltext, searchFilter",disableSelectionController:!0,showActions:!1})))})}),w()(se()(e),"render",function(){return c.a.createElement(be.s.Group,null,e.getSearchLists(e.props.calendarTypes))}),e.state={activeKey:-1},e}return b()(t,e),t}(c.a.PureComponent),je=(n(17),"scheduler/SET_CALENDARS"),we="scheduler/ON_DATE_RANGE_CHANGE",xe="scheduler/ON_CALENDAR_REMOVE",Te="scheduler/ON_CALENDARS_REMOVE_ALL",ke="scheduler/ON_EVENT_CLICK",Se="scheduler/ON_REFRESH",Pe=function(){return{type:"scheduler/REMOVE_EVENTS"}},De=function(e){return{type:"scheduler/SET_IS_LOADING",payload:{isLoading:e}}};function Ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Ne(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ae(n,!0).forEach(function(t){w()(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ae(n).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var Ie=(Ee={},w()(Ee,je,h.a.singleTransferReducer("calendars")),w()(Ee,"scheduler/SET_IS_LOADING",h.a.singleTransferReducer("isLoading")),w()(Ee,"scheduler/REMOVE_EVENTS",function(e){return Ne({},e,{calendars:e.calendars.map(function(e){return Ne({},e,{events:[]})})})}),Ee),Ce={calendars:[],isLoading:!0};var Re=G.a.mark(Ve),_e=G.a.mark(Ge),Le=G.a.mark(Be),Fe=G.a.mark(ze),Me=G.a.mark(Ke),qe=G.a.mark(Je),Ue=G.a.mark(Qe);function Ve(){return G.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(z.a)([Object(z.j)(we,Ge),Object(z.j)(xe,Be),Object(z.j)(Te,ze),Object(z.j)(ke,Ke),Object(z.j)(Se,Je),Object(z.j)(je,Qe)]);case 2:case"end":return e.stop()}},Re)}function Ge(e){var t,n;return G.a.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=e.payload,r.next=3,Object(z.e)(De(!0));case 3:return r.next=5,Object(z.e)(Pe());case 5:return n=t.dateRange,r.next=8,Object(z.e)(v.a.fireExternalEvent("onDateRangeChange",{dateRange:n}));case 8:case"end":return r.stop()}},_e)}function Be(e){var t;return G.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return t=e.payload,n.next=3,Object(z.e)(De(!0));case 3:return n.next=5,Object(z.e)(v.a.fireExternalEvent("onCalendarRemove",{id:t.id,entityModel:t.entityModel}));case 5:case"end":return n.stop()}},Le)}function ze(){return G.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(z.e)(De(!0));case 2:return e.next=4,Object(z.e)(v.a.fireExternalEvent("onCalendarRemoveAll"));case 4:case"end":return e.stop()}},Fe)}function Ke(e){var t,n;return G.a.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:if(t=e.payload,!(n=t.event.extendedProps.entity)){r.next=5;break}return r.next=5,Object(z.e)(v.a.fireExternalEvent("onEventClick",n));case 5:case"end":return r.stop()}},Me)}function Je(){return G.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(z.e)(De(!0));case 2:return e.next=4,Object(z.e)(Pe());case 4:return e.next=6,Object(z.e)(v.a.fireExternalEvent("onRefresh"));case 6:case"end":return e.stop()}},qe)}function Qe(){return G.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(z.e)(De(!1));case 2:case"end":return e.stop()}},Ue)}var We={scheduler:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Ce,t=arguments.length>1?arguments[1]:void 0,n=Ie[t.type];return n?n(e,t):e}},Ye=[Ve],He=n(524),Ze=n.n(He),Xe=n(679),$e=n(692),et=n(22),tt=n.n(et),nt=(n(681),n(682),n(684),n(686),n(50),n(689)),rt=n(688),at=n(94),ct=n.n(at);function ot(){var e=pe()(["\n display: flex;\n justify-content: space-between;\n margin: "," ",";\n\n > div {\n display: flex;\n align-items: center;\n\n > * {\n margin-left: ",";\n }\n }\n"]);return ot=function(){return e},e}var it=me.e.div(ot(),be.N.space(-1),be.N.space(-2),be.N.space(-2)),ut=function(e,t){return e===t?{ink:"primary"}:{}},lt=function(e,t){return t.formatMessage({id:e})},st=c.a.createElement(ue.FormattedMessage,{id:"client.scheduler.today"}),dt=c.a.createElement(ue.FormattedMessage,{id:"client.scheduler.day"}),pt=c.a.createElement(ue.FormattedMessage,{id:"client.scheduler.week"}),ft=c.a.createElement(ue.FormattedMessage,{id:"client.scheduler.month"}),mt=Object(ue.injectIntl)(function(e){var t=e.date,n=e.changeRange,r=e.changeView,a=e.chooseNext,o=e.choosePrev,i=e.chooseToday,u=e.goToDate,l=e.intl,s=e.isLoading,d=e.refresh,p=e.title,f=e.type;return c.a.createElement(it,null,c.a.createElement("div",null,c.a.createElement(be.d,{look:"raised",onClick:function(){i(),n()}},st),c.a.createElement(be.e,null,c.a.createElement(be.d,{look:"raised",onClick:function(){o(),n()},icon:"angle-left",title:lt("client.scheduler.previous",l)}),c.a.createElement(be.d,{look:"raised",onClick:function(){a(),n()},icon:"angle-right",title:lt("client.scheduler.next",l)})),c.a.createElement(be.g,{value:t,onChange:function(e){u(e),n()}},c.a.createElement(be.J.Span,null,p),c.a.createElement(be.j,{style:{marginLeft:"5px"},icon:"chevron-down"}))),c.a.createElement("div",null,c.a.createElement(be.e,null,c.a.createElement(be.d,ct()({look:"raised"},ut("dayView",f),{onClick:function(){return r("dayView")}}),dt),c.a.createElement(be.d,ct()({look:"raised"},ut("weekView",f),ut("weekViewSimple",f),{onClick:function(){r("weekViewSimple"!==f?"weekViewSimple":"weekView")}}),pt),c.a.createElement(be.d,ct()({look:"raised"},ut("monthView",f),{onClick:function(){return r("monthView")}}),ft)),c.a.createElement(be.d,{icon:s?"":"sync",onClick:function(){s||d()},pending:s,title:lt("client.scheduler.reload",l)})))});function bt(){var e=pe()(["\n && {\n .fc{\n h2{\n margin: 0;\n }\n\n .remove-all-checkbox{\n margin-left: 7px;\n margin-top: 4px;\n }\n\n .remove-resource-checkbox{\n margin-left: 3px;\n }\n\n .fc-cell-content {\n ","\n }\n\n .fc-event{\n ","\n cursor: pointer;\n border: none;\n border-radius: 2px;\n background-color: #1287de;\n\n &.dark {\n color: ",";\n }\n\n &.bright {\n color: #fff;\n }\n\n &.conflict {\n border: 3px dashed #8b0000;\n border-radius: ",";\n }\n\n .fc-bg{\n opacity: 0;\n }\n\n .fc-time{\n font-weight: ",";\n }\n }\n\n .fc-timeline-event .fc-content{\n text-overflow: ellipsis;\n }\n }\n\n .na-tooltip {\n display: flex;\n flex-flow: column nowrap;\n z-index: 1060;\n width: 300px;\n\n .na-tooltip-inner{\n ","\n background-color: ",";\n border: 1px solid ",";\n border-radius: ",";\n padding: 10px;\n\n b {\n font-weight: ",";\n font-size: ",";\n display: inline-block;\n margin-bottom: 5px;\n }\n }\n\n .na-tooltip-arrow {\n width: 0;\n height: 0;\n margin-left: calc(50% - 5px);\n border-left: 5px solid transparent;\n border-right: 5px solid transparent;\n }\n\n &[x-placement^='bottom'] {\n .na-tooltip-arrow {\n border-bottom: 10px solid ",";\n }\n }\n\n &[x-placement^='top'] {\n .na-tooltip-arrow {\n order: 2;\n border-top: 10px solid ",";\n }\n }\n }\n }\n"]);return bt=function(){return e},e}var yt=me.e.div(bt(),Object(be.L)({fontSize:be.N.font(-2)}),Object(be.L)(),be.P.color("text"),be.P.radii("regular"),be.P.fontWeight("normal"),Object(be.L)(),be.P.color("paper"),function(e){return be.K.shade2(e)},be.P.radii("regular"),be.P.fontWeight("bold"),be.N.font(1),function(e){return be.K.shade2(e)},function(e){return be.K.shade2(e)}),gt=Object.freeze({EXISTING:"existing",ACCEPTED:"accepted",NONE:"none"}),ht=function(e){var t=e.conflictStatus,n=e.intl;if(t!==gt.ACCEPTED&&t!==gt.EXISTING)return null;var r=t===gt.ACCEPTED,a="client.scheduler.conflict".concat(r?"Accepted":"Existing"),o=r?"✓":"✕";return c.a.createElement("span",null,o," ",n.formatMessage({id:a}))},Et=function(e){return e.format("LT").replace(/(:|\.|e)[0-9]{2}/,"")},vt=function(e){var t=e.resources,n=e.events,r=e.onDateRangeChange,o=e.isLoading,i=e.onRefresh,u=e.onCalendarRemove,l=e.onCalendarRemoveAll,s=e.locale,d=e.onEventClick,p=e.intl,f=Object(a.useRef)(null),m=Object(a.useRef)(null);Object(a.useEffect)(function(){tt.a.locale(s),y()},[]),Object(a.useEffect)(function(){b()}),Object(a.useEffect)(function(){var e=f.current.calendar;e.batchRendering(function(){e.getEventSources().forEach(function(e){return e.remove()}),e.addEventSource(n)})},[JSON.stringify(n)]),Object(a.useEffect)(function(){var e=f.current.calendar;e.batchRendering(function(){var n=e.getResources();n.forEach(function(e){t.find(function(t){return e.id===t.id})||e.remove()}),t.forEach(function(t){n.find(function(e){return e.id===t.id})||e.addResource(t)})})},[JSON.stringify(t)]);var b=function(){var e=document.querySelectorAll(".fc-widget-header")[0];if(e){var n=document.createElement("INPUT");n.type="checkbox",t.length>0&&(n.checked="checked"),n.className="remove-all-checkbox",n.style.visibility=t.length>0?"visible":"hidden",n.onclick=l,e.innerHTML="",e.appendChild(n)}},y=function(){var e=f.current.calendar.view;r&&r({startDate:e.activeStart,endDate:e.activeEnd})},g=function(e){var t=e.el.getElementsByClassName("fc-cell-content")[0],n=document.createElement("INPUT");n.type="checkbox",n.checked="checked",n.className="remove-resource-checkbox",n.onclick=function(){u(e.resource.extendedProps.entityKey,e.resource.extendedProps.entityModel)},t.prepend(n)},h=function(e){var t=e.event,n=e.el,r=tt()(t.start).twix(tt()(t.end)).format({monthFormat:"MMMM",dayFormat:"Do"}),a=c.a.createElement("div",null,c.a.createElement(be.i,{type:"html",value:t.extendedProps.description}),c.a.createElement("p",null,r),c.a.createElement("p",null,c.a.createElement(ht,{conflictStatus:t.extendedProps.conflict,intl:p}))),o=Ze.a.renderToString(a);new nt.a(n,{title:o,placement:"bottom",trigger:"hover",container:m.current,html:!0,boundariesElement:"body",innerSelector:".na-tooltip-inner",arrowSelector:".na-tooltip-arrow",template:'<div class="na-tooltip" role="tooltip"><div class="na-tooltip-arrow">\n </div><div class="na-tooltip-inner"></div></div>\n '})},E=Object(a.useMemo)(function(){return c.a.createElement(Xe.a,{locale:s,plugins:[$e.a,rt.a],ref:f,schedulerLicenseKey:(e="0614140722-fcs-1571655471",e),defaultView:"dayView",header:!1,height:"auto",resourceAreaWidth:"15%",resourceColumns:[{labelText:""}],resourceRender:g,eventRender:h,eventClick:function(e){d(e.event)},firstDay:1,minTime:"06:00:00",maxTime:"23:00:00",views:{dayView:{type:"resourceTimelineDay",slotLabelFormat:function(e){return Et(tt()(e.date).locale(s))}},weekView:{type:"resourceTimelineWeek",slotLabelFormat:[{weekday:"short",month:"numeric",day:"numeric"},function(e){return Et(tt()(e.date).locale(s))}]},weekViewSimple:{type:"resourceTimelineWeek",slotDuration:{day:1},slotLabelFormat:[{weekday:"short",month:"numeric",day:"numeric"}]},monthView:{type:"resourceTimelineMonth",slotLabelFormat:{weekday:"short",month:"numeric",day:"numeric",omitCommas:!0}}}});var e},[]);return c.a.createElement(yt,null,c.a.createElement("div",{ref:m},f.current&&c.a.createElement(mt,{changeRange:y,changeView:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"timelineDay";f.current.calendar.changeView(e),y()},chooseNext:function(){return f.current.calendar.next()},choosePrev:function(){return f.current.calendar.prev()},chooseToday:function(){return f.current.calendar.today()},goToDate:function(e){return f.current.calendar.gotoDate(e)},date:f.current.calendar.getDate(),isLoading:o,refresh:i,title:f.current.calendar.view.title,type:f.current.calendar.view.type}),E))};vt.defaultProps={locale:"en"};var Ot=Object(ue.injectIntl)(vt),jt=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!e)return t;e=wt(e);var n=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return n?{r:parseInt(n[1],16),g:parseInt(n[2],16),b:parseInt(n[3],16)}:t},wt=function(e){return e.startsWith("#")||(e="#"+e),e.padEnd(7,"0")},xt=function(e){var t=e/255;return t<=.03928?t/=12.92:t=Math.pow((t+.055)/1.055,2.4),t},Tt=function(e){return.2126*xt(e.r)+.7152*xt(e.g)+.0722*xt(e.b)},kt=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"#FFFFFF",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"#000000",r=jt(e);return r&&Tt(r)>.25?n:t};function St(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}var Pt=function(e,t){return e+t},Dt=function(e){return e.reduce(function(e,t){return[].concat(g()(e),g()(t.events.map(function(e){return function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?St(n,!0).forEach(function(t){w()(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):St(n).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({entity:e.source,resourceId:Pt(t.key,t.model),title:e.label,start:e.start,end:e.end,description:e.description,conflict:e.conflict},e.color?{backgroundColor:e.color}:{},{className:[].concat(g()(e.conflict===gt.EXISTING?["conflict"]:[]),[(n=e.color,kt(n,"bright","dark"))])});var n})))},[])},At=function(e){function t(){return i()(this,t),d()(this,f()(t).apply(this,arguments))}return b()(t,e),l()(t,[{key:"render",value:function(){return c.a.createElement("div",null,c.a.createElement(Ot,{events:Dt(this.props.calendars),resources:(e=this.props.calendars,e.map(function(e){return{title:e.label,id:Pt(e.key,e.model),entityKey:e.key,calendarType:e.calendarType,entityModel:e.model}})),onDateRangeChange:this.props.onDateRangeChange,onCalendarRemove:this.props.onCalendarRemove,onCalendarRemoveAll:this.props.onCalendarRemoveAll,onEventClick:this.props.onEventClick,onRefresh:this.props.onRefresh,locale:this.props.locale,isLoading:this.props.isLoading}));var e}}]),t}(c.a.Component),Nt={onDateRangeChange:function(e){return{type:we,payload:{dateRange:e}}},onCalendarRemove:function(e,t){return{type:xe,payload:{id:e,entityModel:t}}},onCalendarRemoveAll:function(){return{type:Te}},onEventClick:function(e){return{type:ke,payload:{event:e}}},onRefresh:function(){return{type:Se}}},It=Object(O.hot)(Object(ie.connect)(function(e,t){return{calendars:e.scheduler.calendars,locale:e.intl.locale,isLoading:e.scheduler.isLoading}},Nt)(Object(ue.injectIntl)(At))),Ct=function(e){var t,n=[];return e.calendars&&n.push((t=e.calendars,{type:je,payload:{calendars:t}})),n},Rt=["onDateRangeChange","onCalendarRemove","onCalendarRemoveAll","onEventClick","onRefresh"],_t=c.a.createElement(It,null),Lt=function(e,t,n){var r=_t,a=E.a.createStore(We,Ye,e,"scheduler");return v.a.addToStore(a,t),E.a.createApp("scheduler",r,a,{input:e,events:t,actions:Ct(e),publicPath:n,textResourceModules:["component","common","scheduler"]})};E.a.registerAppInRegistry("scheduler",Lt);var Ft=function(e){function t(e){var n;i()(this,t),n=d()(this,f()(t).call(this,e)),w()(se()(n),"render",function(){return n.app.component});var r=Rt.reduce(function(t,n){return e[n]&&(t[n]=e[n]),t},{});return n.app=Lt(e,r),n}return b()(t,e),l()(t,[{key:"componentDidUpdate",value:function(e){var t=this;Ct(this.props).forEach(function(e){t.app.store.dispatch(e)})}}]),t}(c.a.Component),Mt=Object(O.hot)(Ft),qt={onDateRangeChange:function(e){var t=e.dateRange;return _(t)},onCalendarRemove:function(e){var t=e.entityModel,n=e.id;return L(t,n)},onCalendarRemoveAll:function(){return{type:"resourceScheduler/REMOVE_ALL_CALENDARS"}},onEventClick:function(e){return function(e,t){return{type:A,payload:{model:e,key:t}}}(e.model,e.key)},onRefresh:function(){return{type:N}}},Ut=Object(ie.connect)(function(e,t){return{calendars:e.resourceScheduler.calendars,locale:e.intl.locale}},qt)(Object(ue.injectIntl)(Mt));function Vt(){var e=pe()(["\n && {\n background-color: ",";\n height: 100%;\n overflow: auto;\n padding-left: ",";\n padding-right: ",";\n ","\n }\n"]);return Vt=function(){return e},e}function Gt(){var e=pe()(["\n && {\n background-color: ",";\n height: 100%;\n overflow: auto;\n padding-right: ",";\n padding-left: ",";\n padding-top: ",";\n ","\n }\n"]);return Gt=function(){return e},e}var Bt={background:"transparent url(".concat("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==",") 50% no-repeat"),width:"11px",cursor:"col-resize"},zt=me.e.div(Gt(),be.P.color("paper"),be.N.space(-1),be.N.space(-1),be.N.space(-1),be.G),Kt=me.e.div(Vt(),be.P.color("paper"),be.N.space(-1),be.N.space(-1),be.G);function Jt(){var e=pe()(["\n position: static !important;\n\n .react-bs-container-body {\n height: auto !important;\n margin-bottom: ",";\n }\n"]);return Jt=function(){return e},e}var Qt=Object(me.e)(fe.a)(Jt(),be.N.space(0)),Wt=c.a.createElement(Kt,null,c.a.createElement(Ut,null)),Yt=function(e){function t(e){var n;return i()(this,t),n=d()(this,f()(t).call(this,e)),w()(se()(n),"paneWidth",325),n.props.initialize(),n}return b()(t,e),l()(t,[{key:"render",value:function(){var e=this.props;return c.a.createElement(Qt,{defaultSize:this.paneWidth,minSize:325,resizerStyle:Bt,split:"vertical"},c.a.createElement(zt,null,c.a.createElement(Oe,{locale:e.locale,calendarTypes:e.calendarTypes,updateRequestedCalendars:e.updateRequestedCalendars,requestedCalendars:this.props.requestedCalendars})),Wt)}}]),t}(c.a.Component),Ht={initialize:function(){return{type:k}},updateRequestedCalendars:C,setDateRange:_,removeRequestedCalendar:L},Zt=Object(ie.connect)(function(e){return{calendars:e.resourceScheduler.calendars,calendarTypes:e.resourceScheduler.calendarTypes,requestedCalendars:e.resourceScheduler.requestedCalendars,locale:e.intl.locale}},Ht)(Object(ue.injectIntl)(Yt)),Xt=["onEventClick"],$t=c.a.createElement(Zt,null),en=function(e,t,n,r){var a=$t,c=E.a.createStore(ce,oe,t,"resource-scheduler");v.a.addToStore(c,n);var o=g()(t.selection&&"ID"===t.selection.type&&t.actionProperties&&t.actionProperties.calendarType?[C(t.actionProperties.calendarType,t.selection.ids)]:[]);return E.a.createApp("resource-scheduler",a,c,{input:t,events:n,actions:o,publicPath:r,textResourceModules:["component","common","resource-scheduler"]})};E.a.registerAppInRegistry("resource-scheduler",en);var tn=function(e){function t(e){var n;i()(this,t),n=d()(this,f()(t).call(this,e));var r=Xt.reduce(function(t,n){return e[n]&&(t[n]=e[n]),t},{});return n.app=en(e.id,e,r),n}return b()(t,e),l()(t,[{key:"render",value:function(){return this.app.component}}]),t}(c.a.Component),nn=Object(O.hot)(tn),rn=(n(263),n(504));t.default=function(e){var t=e.match,n=e.selection,r=e.actionProperties,a=e.history,o=Object(rn.a)(t.url,2);return c.a.createElement(nn,{onEventClick:function(e){var t=e.model,n=e.key,r=a.createHref({pathname:"".concat(o,"/").concat(t,"/").concat(n)});window.open(r,"_blank")},selection:n,actionProperties:r})}},707:function(e,t,n){"use strict";n.r(t);var r,a=n(12),c=n.n(a),o=n(0),i=n.n(o),u=n(33),l=n(510),s=n(95),d=n(149),p=n(150),f="root/LOAD_DIALOG_INFO",m="delete/DO_DELETE",b="delete/ON_CANCEL",y=function(e){return{type:"delete/SET_DELETE_DIALOG_INFO",payload:{dialogInfo:e}}},g=function(){return{type:m}},h=function(e){return{type:"delete/SET_DELETING_IN_PROGRESS",payload:{deletingInProgress:e}}},E=(r={},c()(r,"delete/SET_DELETE_DIALOG_INFO",u.a.singleTransferReducer("dialogInfo")),c()(r,"delete/SET_DELETING_IN_PROGRESS",u.a.singleTransferReducer("deletingInProgress")),r),v={dialogInfo:null,deletingInProgress:!1};var O=n(54),j=n.n(O),w=n(49),x=n.n(w),T=n(6),k=n.n(T),S=n(5),P=n(56),D=n(43),A=n.n(D),N=n(17),I=n.n(N);function C(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function R(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?C(n,!0).forEach(function(t){c()(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):C(n).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var _="DELETABLE",L=function(e,t){var n=e.entitiesToDelete;return n.reduce(function(e,n){var r,a=function(e){return e.rootEntity.deleteStatus===_&&!e.affectedEntities.find(function(e){return e.deleteStatus!==_})}(n),o=a?"keysDeletable":"keysNotDeletable",i=a?"relatedDeletable":"relatedNotDeletable";return R({},e,(r={},c()(r,o,[].concat(j()(e[o]),[n.rootEntity.key])),c()(r,i,function(e,t,n,r){return R({},t.affectedEntities.reduce(function(e,t){return R({},e,{},n||t.deleteStatus!==_?c()({},t.entityName,R({},A()(e,t.entityName,{keys:[],keysOtherBu:[],entityLabel:t.entityLabel}),{},null===t.businessUnitId||t.businessUnitId===r?{keys:Array.from(new Set([].concat(j()(A()(e,[t.entityName,"keys"],[])),[t.key])))}:{keysOtherBu:Array.from(new Set([].concat(j()(A()(e,[t.entityName,"keysOtherBu"],[])),[t.key])))})):{})},R({},e)))}(e[i],n,a,t)),r))},{entityName:A()(n,"[0].rootEntity.entityName"),entityLabel:A()(n,"[0].rootEntity.entityLabel"),keysDeletable:[],keysNotDeletable:[],relatedDeletable:{},relatedNotDeletable:{},hasUnreadableEntities:!!n.find(function(e){return e.unreadableEntities})})},F=I.a.shape({entityLabel:I.a.string,keys:I.a.arrayOf(I.a.string),keysOtherBu:I.a.arrayOf(I.a.string)}),M=(I.a.shape({entityName:I.a.string.isRequired,entityLabel:I.a.string.isRequired,keysDeletable:I.a.arrayOf(I.a.string).isRequired,keysNotDeletable:I.a.arrayOf(I.a.string).isRequired,relatedDeletable:I.a.objectOf(F).isRequired,relatedNotDeletable:I.a.objectOf(F).isRequired,hasUnreadableEntities:I.a.bool}),k.a.mark(J)),q=k.a.mark(W),U=k.a.mark(H),V=k.a.mark(Z),G=k.a.mark(X),B=function(e){return e.input},z=function(e){return e.intl.messages},K=function(e){return e.del.dialogInfo};function J(){var e,t,n;return k.a.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,Object(S.f)(B);case 2:return e=r.sent,t=e.selection,r.next=6,Object(S.b)(l.a.getEntities,t,P.a.fetchEntities);case 6:return n=r.sent,r.abrupt("return",{entityModel:n.entityName,keys:n.keys});case 8:case"end":return r.stop()}},M)}var Q="client/delete/dialog";function W(){var e,t,n,r,a,c;return k.a.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,Object(S.b)(J);case 2:return e=o.sent,o.next=5,Object(S.a)([Object(S.b)(P.a.requestSaga,Q,{method:"POST",body:e}),Object(S.b)(P.a.fetchPrincipal)]);case 5:return t=o.sent,n=x()(t,2),r=n[0],a=n[1],c=L(r.body,a.currentBusinessUnit.id),o.next=12,Object(S.e)(y(c));case 12:case"end":return o.stop()}},q)}var Y="client/delete";function H(){var e,t,n,r,a,c,o,i,u;return k.a.wrap(function(l){for(;;)switch(l.prev=l.next){case 0:return l.next=2,Object(S.f)(K);case 2:return e=l.sent,t=e.keysDeletable,n=e.entityName,l.next=7,Object(S.e)(h(!0));case 7:return r={entityModel:n,keys:t},l.next=10,Object(S.b)(P.a.requestSaga,Y,{method:"POST",body:r});case 10:return a=l.sent,l.next=13,Object(S.f)(z);case 13:if(c=l.sent,!a.ok){l.next=22;break}return o=a.body,i=Object.keys(o.deletedEntities).reduce(function(e,t){return[].concat(j()(e),j()(o.deletedEntities[t].map(function(e){return{entityName:t,key:e}})))},[]),u=[{type:"entity-delete-event",payload:{entities:i}}],l.next=20,Object(S.e)(d.a.fireExternalEvent("onSuccess",{message:c["client.delete.successfullyMessage"],remoteEvents:u}));case 20:l.next=24;break;case 22:return l.next=24,Object(S.e)(d.a.fireExternalEvent("onError",{message:c["client.delete.errorMessage"]}));case 24:case"end":return l.stop()}},U)}function Z(){return k.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(S.e)(d.a.fireExternalEvent("onCancel"));case 2:case"end":return e.stop()}},V)}function X(){return k.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(S.a)([Object(S.j)(f,W),Object(S.j)(m,H),Object(S.j)(b,Z)]);case 2:case"end":return e.stop()}},G)}var $={del:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:v,t=arguments.length>1?arguments[1]:void 0,n=E[t.type];return n?n(e,t):e}},ee=[X],te=n(45),ne=n(19),re=n(18),ae=n(35),ce=n.n(ae),oe=n(2),ie=i.a.createElement(re.J.P,null,i.a.createElement(ne.FormattedMessage,{id:"client.delete.tooManyRecords"})),ue=function(e){var t=e.relatedEntity,n=e.children,r=e.maxCountLink;if(t.keys.length<r&&0===t.keysOtherBu.length)return n;var a=i.a.createElement(i.a.Fragment,null,t.keys.length>r&&ie,t.keysOtherBu.length>0&&i.a.createElement(re.J.P,null,i.a.createElement(ne.FormattedMessage,{id:"client.delete.recordInOtherBU",values:{count:t.keysOtherBu.length}})));return i.a.createElement(re.t,{content:a,placement:"top",spacer:10},n)};function le(){var e=ce()(["\n white-space: nowrap;\n"]);return le=function(){return e},e}var se=oe.e.span(le()),de=i.a.createElement("span",null," / "),pe=function(e){var t=e.entityName,n=e.entityLabel,r=e.keys,a=e.relatedEntities,c=e.maxCountLink,o="KEYS("+r.join(",")+")";return i.a.createElement(re.J.Span,null,i.a.createElement(re.J.B,null,n," (",r.length>0?i.a.createElement(re.w,{to:"/e/".concat(t,"/list?tql=").concat(o),target:"_blank"},r.length):i.a.createElement(re.J.Span,null,r.length),")"),Object.keys(a).length>0&&i.a.createElement(i.a.Fragment,null,de,Object.keys(a).map(function(e){var t=a[e],n="KEYS("+t.keys.slice(0,c).join(",")+")",r=[].concat(j()(t.keys),j()(t.keysOtherBu)).length,o=t.keys.length>0?i.a.createElement(re.w,{to:"/e/".concat(e,"/list?tql=").concat(n),target:"_blank"},r):i.a.createElement(re.J.Span,null,r),u=i.a.createElement(ue,{relatedEntity:t,maxCountLink:c},o);return i.a.createElement(i.a.Fragment,{key:"entity-info-"+e},i.a.createElement(se,null,t.entityLabel," (",u,")"))}).reduce(function(e,t){return[e,", ",t]})))},fe=i.a.createElement(re.J.P,null,i.a.createElement(ne.FormattedMessage,{id:"client.delete.confirmText"})),me=i.a.createElement(re.J.P,null,i.a.createElement(ne.FormattedMessage,{id:"client.delete.textNotDeletable"})),be=i.a.createElement(re.y,{condition:"warning"},i.a.createElement(re.J.Span,null,i.a.createElement(ne.FormattedMessage,{id:"client.delete.unreadableEntities"}))),ye=i.a.createElement(ne.FormattedMessage,{id:"client.delete.deleteButton"}),ge=i.a.createElement(ne.FormattedMessage,{id:"client.delete.cancelButton"}),he=function(e){var t=e.dialogInfo,n=e.doDelete,r=e.onCancel;return i.a.createElement(i.a.Fragment,null,fe,i.a.createElement(pe,{key:"infopart-deletable",entityName:t.entityName,entityLabel:t.entityLabel,keys:t.keysDeletable,relatedEntities:t.relatedDeletable,maxCountLink:100}),t.keysNotDeletable.length>0&&i.a.createElement("div",{style:{paddingTop:"20px"}},me,i.a.createElement(pe,{key:"infopart-notdeletable",entityName:t.entityName,entityLabel:t.entityLabel,keys:t.keysNotDeletable,relatedEntities:t.relatedNotDeletable,maxCountLink:100})),t.hasUnreadableEntities&&i.a.createElement("div",{style:{paddingTop:"20px"}},be),i.a.createElement("div",{style:{paddingTop:"20px"}},i.a.createElement(re.d,{onClick:n,disabled:0===t.keysDeletable.length},ye),i.a.createElement(re.d,{ink:"primary",onClick:r},ge)))},Ee={doDelete:g,onCancel:function(){return{type:b}}},ve=Object(te.connect)(function(e,t){return{dialogInfo:e.del.dialogInfo}},Ee)(Object(ne.injectIntl)(he)),Oe=i.a.createElement(re.n,{size:"30px"}),je=i.a.createElement(re.J.P,null,i.a.createElement(ne.FormattedMessage,{id:"client.delete.deleteInProgress"})),we=function(e){var t=e.dialogInfo;e.intl;return i.a.createElement(i.a.Fragment,null,Oe,je,i.a.createElement(pe,{key:"infopart-deletable",entityName:t.entityName,entityLabel:t.entityLabel,keys:t.keysDeletable,relatedEntities:t.relatedDeletable,maxCountLink:100}))},xe={doDelete:g},Te=Object(te.connect)(function(e,t){return{dialogInfo:e.del.dialogInfo}},xe)(Object(ne.injectIntl)(we)),ke=i.a.createElement(Te,null),Se=i.a.createElement(ve,null),Pe=function(e){var t=e.loadDialogInfo,n=e.dialogInfo,r=e.deletingInProgress,a=e.intl;Object(o.useEffect)(function(){t()},[]);var c;return r?ke:i.a.createElement(re.m,{required:[n],loadingText:(c="client.delete.loadingText",a.formatMessage({id:c}))},n&&Se)},De={loadDialogInfo:function(){return{type:f}}},Ae=Object(te.connect)(function(e,t){return{dialogInfo:e.del.dialogInfo,deletingInProgress:e.del.deletingInProgress}},De)(Object(ne.injectIntl)(Pe));function Ne(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}var Ie=["onSuccess","onCancel","onError"],Ce=i.a.createElement(Ae,null),Re=function(e,t,n,r){var a=Ce,c=s.a.createStore($,ee,t,"delete");return d.a.addToStore(c,n),s.a.createApp("delete",a,c,{input:t,events:n,actions:[],publicPath:r,textResourceModules:["component","common","delete"]})};s.a.registerAppInRegistry("delete",Re);var _e=function(e){var t=Ie.reduce(function(t,n){return function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ne(n,!0).forEach(function(t){c()(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ne(n).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({},t,{},e[n]?c()({},n,e[n]):{})},{});return Re(0,e,t).component};_e.propTypes={selection:l.a.propType.isRequired};var Le=Object(p.hot)(_e);n.d(t,"default",function(){return Le})},708:function(e,t,n){"use strict";n.r(t);var r=n(0),a=n.n(r),c=n(33),o=n(95),i=n(17),u=n.n(i),l=n(150),s="qrCode/FETCH_DATA",d=function(e){return{type:"qrCode/SET_DATA",payload:{data:e}}},p=n(12),f=n.n(p)()({},"qrCode/SET_DATA",c.a.singleTransferReducer("data")),m={data:void 0};var b=n(49),y=n.n(b),g=n(6),h=n.n(g),E=n(5),v=n(56),O=n(50),j=h.a.mark(T),w=h.a.mark(k),x=function(e){return e.input};function T(){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(E.a)([Object(E.i)(s,k)]);case 2:case"end":return e.stop()}},j)}function k(){var e,t,n,r,a,c;return h.a.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,Object(E.f)(x);case 2:return e=o.sent,t=e.selection,n=S(t),r={paths:["firstname","lastname","c_address","phone_mobile","phone_company","phone_private","email","email_alternative","birthdate"]},o.prev=6,o.next=9,Object(E.b)(v.a.fetchEntity,"User",n,r);case 9:return a=o.sent,c=null,a&&(c={},Object.entries(a.paths).forEach(function(e){var t=y()(e,2),n=t[0],r=t[1];r&&r.value&&(c[n]=r.value)})),o.next=14,Object(E.e)(d(c));case 14:o.next=21;break;case 16:return o.prev=16,o.t0=o.catch(6),O.a.logError("Failed to fetch data",o.t0),o.next=21,Object(E.e)(d(null));case 21:case"end":return o.stop()}},w,null,[[6,16]])}var S=function(e){if("User"!==e.entityName)throw new Error("Only selection of User supported");if("ID"!==e.type)throw new Error("Only ID selection type supported");if(!e.ids||1!==e.ids.length)throw new Error("Exactly one user must be selected");return e.ids[0]},P={qrCode:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m,t=arguments.length>1?arguments[1]:void 0,n=f[t.type];return n?n(e,t):e}},D=[T],A=n(45),N=n(35),I=n.n(N),C=n(18),R=n(2),_=n(19),L=function(e,t,n,r){var a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:function(e){return e};return e[t]&&e[t].length>0&&(r+="".concat(n,":").concat(a(e[t]),";")),r};function F(){var e=I()(["\n margin: 0;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n"]);return F=function(){return e},e}function M(){var e=I()(["\n width: 148px;\n height: 148px;\n position: relative;\n align-self: center;\n"]);return M=function(){return e},e}var q=R.e.div(M()),U=R.e.div(F()),V=a.a.createElement(C.n,null),G=a.a.createElement(C.J.P,null,a.a.createElement(_.FormattedMessage,{id:"client.user-qr-action.fetchFailed"})),B=function(e){var t,n=e.data,c=e.fetchData;if(Object(r.useEffect)(function(){c()},[]),void 0===n)t=V;else if(null===n)t=G;else{var o=function(e){var t="MECARD:N:".concat(e.lastname,",").concat(e.firstname,";");return t=L(e,"c_address","ADR",t,function(e){return e.replace(/\s*<br\s?\/?>\s*/gi,",")}),t=L(e,"phone_mobile","TEL",t),t=L(e,"phone_company","TEL",t),t=L(e,"phone_private","TEL",t),t=L(e,"email","EMAIL",t),t=L(e,"email_alternative","EMAIL",t),t=L(e,"birthdate","BDAY",t,function(e){return e.replace(/-/gi,"")})}(n);t=a.a.createElement(C.u,{value:o})}return a.a.createElement(q,null,a.a.createElement(U,null,t))},z={fetchData:function(){return{type:s}}},K=Object(l.hot)(Object(A.connect)(function(e){return{data:e.qrCode.data}},z)(B)),J=function(e,t,n,r){var c=a.a.createElement(K,{selection:t.selection}),i=o.a.createStore(P,D,t,"user-qr-action");return o.a.createApp("user-qr-action",c,i,{input:t,events:n,actions:[],publicPath:r,textResourceModules:["component","common","user-qr-action"]})};o.a.registerAppInRegistry("user-qr-action",J);var Q=function(e){return J(0,e).component};Q.propTypes={selection:u.a.object};var W=Object(l.hot)(Q);n.d(t,"default",function(){return W})}}]);
|
|
2
|
-
//# sourceMappingURL=actions-chunk-46d61a.js.map
|