tocco-widget-bundle 0.1.0 → 0.1.1

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.
Files changed (31) hide show
  1. package/changelog.md +5 -0
  2. package/dist/address-update.js +9 -10
  3. package/dist/{chunk-399.9182df3bb892f13484b2.js → chunk-399.bad7b02cbb49e96d1286.js} +1 -2
  4. package/dist/{chunk-44.d042d05c0b3942ad51b9.js → chunk-44.a579e5ce342676801bba.js} +1 -2
  5. package/dist/{chunk-611.7e0decee0192d6ac9b25.js → chunk-611.baffe880b59110d7742b.js} +1 -2
  6. package/dist/{chunk-701.530b3acc8448d8796923.js → chunk-701.5e8a965f3e9dc4843428.js} +1 -2
  7. package/dist/{chunk-949.29569c779650f944909d.js → chunk-949.8c0d29e1b6afde6f6eb4.js} +1 -2
  8. package/dist/chunk-actions.58166f7d32fe4b06bd82.js +1 -0
  9. package/dist/chunk-code-editor.5e38f3dbfece8c20ec8f.js +1 -0
  10. package/dist/chunk-phone-formatter.0852c8914fe87542435b.js +1 -0
  11. package/dist/chunk-vendor-icons.bf27febcb5a94cde696a.js +1 -0
  12. package/dist/docs-browser.js +9 -10
  13. package/dist/entity-browser.js +3 -4
  14. package/dist/wage-view.js +3 -4
  15. package/package.json +3 -3
  16. package/dist/address-update.js.map +0 -1
  17. package/dist/chunk-399.9182df3bb892f13484b2.js.map +0 -1
  18. package/dist/chunk-44.d042d05c0b3942ad51b9.js.map +0 -1
  19. package/dist/chunk-611.7e0decee0192d6ac9b25.js.map +0 -1
  20. package/dist/chunk-701.530b3acc8448d8796923.js.map +0 -1
  21. package/dist/chunk-949.29569c779650f944909d.js.map +0 -1
  22. package/dist/chunk-actions.56145089dcd7229dcab0.js +0 -2
  23. package/dist/chunk-actions.56145089dcd7229dcab0.js.map +0 -1
  24. package/dist/chunk-code-editor.94e2130398d65f73a599.js +0 -2
  25. package/dist/chunk-code-editor.94e2130398d65f73a599.js.map +0 -1
  26. package/dist/chunk-phone-formatter.84b8503ce1658081ed4c.js +0 -2
  27. package/dist/chunk-phone-formatter.84b8503ce1658081ed4c.js.map +0 -1
  28. package/dist/chunk-vendor-icons.01790747a8c2df65999e.js +0 -1
  29. package/dist/docs-browser.js.map +0 -1
  30. package/dist/entity-browser.js.map +0 -1
  31. package/dist/wage-view.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///./packages/actions/input-edit/src/components/InputEdit/StyledInputEdit.js","webpack:///./packages/actions/input-edit/src/components/InputEditInformation/InputEditInformation.js","webpack:///./packages/actions/input-edit/src/components/InputEditInformation/InputEditInformationContainer.js","webpack:///./packages/actions/input-edit/src/components/InputEditInformation/StyledInputEditInformation.js","webpack:///./packages/actions/input-edit/src/components/InputEditSearch/InputEditSearch.js","webpack:///./packages/actions/input-edit/src/components/InputEditSearch/InputEditSearchContainer.js","webpack:///./packages/actions/input-edit/src/components/InputEditTable/InputEditTable.js","webpack:///./packages/actions/input-edit/src/components/InputEditTable/InputEditTableContainer.js","webpack:///./packages/actions/input-edit/src/components/InputEditTable/StyledComponents.js","webpack:///./packages/actions/input-edit/src/components/InputEditTable/keyHandler.js","webpack:///./packages/actions/input-edit/src/components/InputEdit/InputEdit.js","webpack:///./packages/actions/input-edit/src/components/InputEdit/InputEditContainer.js","webpack:///./packages/actions/input-edit/src/modules/inputEdit/index.js","webpack:///./packages/actions/input-edit/src/modules/inputEdit/sagas.js","webpack:///./packages/actions/input-edit/src/modules/inputEditInformation/index.js","webpack:///./packages/actions/input-edit/src/modules/inputEditInformation/sagas.js","webpack:///./packages/actions/input-edit/src/modules/inputEditPagination/index.js","webpack:///./packages/actions/input-edit/src/modules/inputEditTable/utils.js","webpack:///./packages/actions/input-edit/src/modules/inputEditTable/sagas.js","webpack:///./packages/actions/input-edit/src/modules/inputEditPagination/sagas.js","webpack:///./packages/actions/input-edit/src/modules/inputEditSearch/index.js","webpack:///./packages/actions/input-edit/src/modules/inputEditSearch/sagas.js","webpack:///./packages/actions/input-edit/src/modules/inputEditTable/index.js","webpack:///./packages/actions/input-edit/src/modules/reducers.js","webpack:///./packages/actions/input-edit/src/main.js","webpack:///./packages/actions/input-edit/src/modules/inputEdit/actions.js","webpack:///./packages/actions/input-edit/src/modules/inputEdit/reducer.js","webpack:///./packages/actions/input-edit/src/modules/inputEditInformation/actions.js","webpack:///./packages/actions/input-edit/src/modules/inputEditInformation/reducer.js","webpack:///./packages/actions/input-edit/src/modules/inputEditPagination/actions.js","webpack:///./packages/actions/input-edit/src/modules/inputEditPagination/reducer.js","webpack:///./packages/actions/input-edit/src/modules/inputEditSearch/actions.js","webpack:///./packages/actions/input-edit/src/modules/inputEditSearch/reducer.js","webpack:///./packages/actions/input-edit/src/modules/inputEditTable/actions.js","webpack:///./packages/actions/input-edit/src/modules/inputEditTable/reducer.js","webpack:///./packages/widgets/docs-browser/src/components/Action/actions/CreateDomain.js","webpack:///./packages/widgets/docs-browser/src/components/Action/actions/CreateFolder.js","webpack:///./packages/widgets/docs-browser/src/components/Action/actions/Delete.js","webpack:///./packages/widgets/docs-browser/src/components/Action/actions/Edit.js","webpack:///./packages/widgets/docs-browser/src/components/Action/actions/Move.js","webpack:///./packages/widgets/docs-browser/src/components/Action/actions/MoveContainer.js","webpack:///./packages/widgets/docs-browser/src/utils/getDetailFormName.js","webpack:///./node_modules/decode-uri-component/index.js","webpack:///./node_modules/filter-obj/index.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./node_modules/query-string/index.js","webpack:///./node_modules/react-router-dom/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/react-router-dom/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/react-router-dom/node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/react-router-dom/node_modules/resolve-pathname/esm/resolve-pathname.js","webpack:///./node_modules/react-router-dom/node_modules/history/esm/history.js","webpack:///./node_modules/react-router-dom/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./node_modules/react-router-dom/esm/react-router-dom.js","webpack:///./node_modules/react-router-dom/node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/react-router-dom/node_modules/prop-types/index.js","webpack:///./node_modules/react-router-dom/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/redux-form/es/getFormInitialValues.js","webpack:///./node_modules/redux-form/es/selectors/getFormInitialValues.js","webpack:///./node_modules/split-on-first/index.js","webpack:///./node_modules/strict-uri-encode/index.js","webpack:///./packages/core/tocco-ui/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./packages/core/tocco-ui/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./packages/core/tocco-ui/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./packages/core/tocco-ui/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js"],"names":["StyledPaneWrapper","styled","sharedSplitPaneStyles","css","theme","scale","StyledScrollbar","StyledPanelWrapperLeft","isCollapsed","StyledPanelWrapperRight","StyledInputEditSearchWrapper","StyledLeftPane","StyledActionsWrapper","StyledToggleCollapse","StyledPlaceHolder","StyledToggleCollapseButton","Button","StyledStatedValueWrapper","information","StyledInputEditInformation","map","info","Field","field","type","StatedValue","label","immutable","hasValue","formField","dataType","value","id","connect","state","inputEditInformation","InputEditInformation","handleChange","form","setSearchFields","values","Object","keys","length","tql","transformFormValuesToTql","entries","path","fieldType","getFieldType","filter","Array","isArray","tqlBuilder","container","children","find","child","onChange","_debounce","noButtons","validate","mappingType","mode","mapActionCreators","setSearchQueries","inputEditSearch","InputEditSearch","dataCellRenderer","fieldDefinition","data","breakWords","dataFormColumns","inputEditForm","updateValue","sorting","setSorting","dataLoadingInProgress","totalCount","currentPage","recordsPerPage","setCurrentPage","useState","columns","setColumns","columnPosition","setColumnPosition","useEffect","dataColumns","api","inputColumns","c","idx","sortable","definition","resizable","dynamic","CellRenderer","rowData","column","rowIdx","row","readonly","options","pk","FormattedValue","EditableValue","events","changedValue","onFocus","target","select","inputCellRenderer","cc","sort","a","b","findIndex","e","embedType","env","onKeyDown","arrowKeyHandler","Table","onSortingChange","onColumnPositionChange","dragColumn","dropColumn","reduce","acc","paginationInfo","onPageChange","scrollBehaviour","inputEditTable","inputEditPagination","InputEditTable","borderColor","shadeColor","_get","baseSpace","StyledTableWrapper","StyledCell","declareFocus","lighten","colors","secondaryLight","declareFont","fontWeight","event","includes","document","activeElement","tagName","key","preventDefault","split","rowIndex","columnIndex","currentIndex","Number","parseInt","indexDiff","idToFocus","elementToFocus","getElementById","focusElement","findHorizontalElementToFocus","adjustedIndex","disabled","setTimeout","focus","selection","handleNotifications","updateSelection","initializeTable","initializeSearch","initializeInformation","actionDefinitions","setIsCollapsed","toggleCollapse","Actions","actions","GlobalStyles","notification","onClick","icon","StyledInputEdit","notify","inputEdit","InputEdit","sagas","emit","reload","updateInputDatas","inputEditSelector","all","takeEvery","takeLatest","UPDATE_SELECTION","action","put","actionEmitter","inputEditTableActions","inputEditAction","call","rest","method","body","initialize","transformResponseData","response","dataRecord","splitObj","isInputField","isNaN","inputFields","entityFields","__key","processDataForm","loadData","handleResponse","inputSelector","input","inputEditTableSelector","inputEditSearchSelector","searchQueriesSelector","searchQueries","inputEditPaginationSelector","dataForm","readonlyActions","componentType","scope","actionProperties","inputEditDataForm","editFormDefinition","editColumns","forEach","title","initialized","take","searchFormActions","updateInProgress","payload","inputEditActions","newSorting","newSearchQueries","newPage","paths","getPathsFromTable","searchBean","limit","page","where","join","transformedData","setTotalCount","count","flatMap","inputDataKey","node","calculatedValues","actionsToPut","inputEditReducer","inputEditSearchReducer","inputEditPaginationReducer","inputEditInformationReducer","inputEditSagas","inputEditTableSagas","inputEditSearchSagas","inputEditPaginationSagas","inputEditInformationSagas","packageName","EXTERNAL_EVENTS","initApp","publicPath","content","store","appFactory","reducers","emitAction","errorLogging","cache","setHandleNotifications","setSelection","textResourceModules","InputEditApp","props","externalEvents","component","propTypes","PropTypes","SET_SELECTION","SET_HANDLE_NOTIFICATIONS","SET_UPDATE_IN_PROGRESS","setSelectionUpdateInProgress","initialState","ACTION_HANDLERS","reducerUtil","reducer","handler","INITIALIZE_INFORMATION","SET_INFORMATION","setInformation","SET_CURRENT_PAGE","SET_TOTAL_COUNT","INITIALIZE_SEARCH","SET_FORM","SET_SEARCH_QUERIES","SET_INITIALIZED","setForm","setInitialized","INITIALIZE_TABLE","LOAD_DATA","SET_DATA","SET_EDIT_FORM","UPDATE_VALUE","SET_VALUE","SET_SORTING","SET_DATA_FORM_COLUMNS","SET_ACTION_DEFINITIONS","SET_DATA_LOADING_IN_PROGRESS","setData","setEditForm","setValue","add","setDataFormColumns","setActionDefinitions","setDataLoadingInProgress","getOpposite","order","val","contains","s","currentSorting","withRouterTypeCompProvider","injectIntl","context","onSuccess","intl","locale","parent","getNode","defaultValues","model","formName","getDetailFormName","entityName","onEntityCreated","remoteEvents","entities","formatMessage","toaster","isActionBlocked","customDeleteEndpoint","onCancel","navigate","ids","entityKey","entityId","onEntityUpdated","onEntityDeleted","StyledButtonsWrapper","StyledButton","StyledLoadMask","LoadMask","moveElements","isWaiting","docs","move","domainTypes","rootNodes","businessUnit","onError","initialNode","initialParent","setParent","getCustomLocation","Error","required","routerType","initialLocation","getInitialLocation","listLimit","selectionStyle","searchFormType","disableViewPersistor","getListFormName","onListParentChange","navigationStrategy","embedded","noLeftPadding","look","ink","_isEqual","detailFormNames","token","singleMatcher","RegExp","multiMatcher","decodeComponents","components","decodeURIComponent","err","left","slice","right","prototype","concat","decode","tokens","match","i","module","exports","encodedURI","TypeError","replace","replaceMap","exec","result","customDecodeURIComponent","obj","predicate","ret","isArr","indexOf","isObject","now","toNumber","nativeMax","Math","max","nativeMin","min","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","args","thisArg","undefined","apply","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","arguments","this","clearTimeout","cancel","flush","root","Date","strictUriEncode","decodeComponent","splitOnFirst","filterObject","encodeFragmentIdentifier","Symbol","validateArrayFormatSeparator","encode","strict","encodeURIComponent","keysSorter","removeHash","hashStart","extract","queryStart","parseValue","parseNumbers","trim","parseBooleans","toLowerCase","parse","query","assign","arrayFormat","arrayFormatSeparator","formatter","accumulator","isEncodedArray","newValue","item","test","arrayValue","parserForArrayFormat","create","param","k","Boolean","stringify","object","shouldFilter","skipNull","skipEmptyString","index","keyValueSep","encoderForArrayFormat","objectCopy","x","parseUrl","url","url_","hash","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","queryString","getHash","pick","exclude","exclusionFilter","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_inheritsLoose","subClass","superClass","constructor","source","hasOwnProperty","isAbsolute","pathname","charAt","spliceOne","list","n","pop","to","from","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","last","up","part","unshift","substr","addLeadingSlash","stripLeadingSlash","stripBasename","prefix","hasBasename","stripTrailingSlash","createPath","location","search","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","callback","appendListener","fn","isActive","listener","push","notifyListeners","_len","_key","canUseDOM","window","createElement","getConfirmation","message","confirm","PopStateEvent","HashChangeEvent","getHistoryState","history","createBrowserHistory","ua","globalHistory","canUseHistory","navigator","userAgent","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_ref","_window$location","createKey","random","toString","transitionManager","setState","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toLocation","toIndex","allKeys","fromIndex","delta","go","revertPop","createHref","listenerCount","checkDOMListeners","addEventListener","removeEventListener","isBlocked","href","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","substring","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","lastIndexOf","baseTag","querySelector","getAttribute","pushHashPath","nextPaths","_objectWithoutPropertiesLoose","excluded","sourceKeys","resolveToLocation","normalizeToLocation","forwardRefShim","C","forwardRef","LinkAnchor","forwardedRef","innerRef","_onClick","ex","defaultPrevented","button","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","ref","Link","_ref2","_ref2$component","isDuplicateNavigation","forwardRefShim$1","forwardRef$1","_ref$ariaCurrent","ariaCurrent","_ref$activeClassName","activeClassName","activeStyle","classNameProp","className","exact","isActiveProp","locationProp","sensitive","styleProp","style","escapedPath","classnames","joinClassnames","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","name","getShim","isRequired","ReactPropTypes","array","bool","number","string","symbol","any","arrayOf","element","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","checkPropTypes","plain","getIn","getFormState","nonNullGetFormState","separator","separatorIndex","str","charCodeAt","toUpperCase","_iterableToArray","iter","iterator","_toConsumableArray","arr","arrayLikeToArray","iterableToArray","unsupportedIterableToArray"],"mappings":"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","file":"chunk-actions.56145089dcd7229dcab0.js","sourcesContent":["import styled, {css} from 'styled-components'\nimport {Button, scale, StyledScrollbar, theme} from 'tocco-ui'\n\nexport const StyledPaneWrapper = styled.div`\n display: flex;\n height: 100%;\n`\n\nconst sharedSplitPaneStyles = css`\n background-color: ${theme.color('paper')};\n padding-top: ${scale.space(-0.53)};\n ${StyledScrollbar}\n`\n\nexport const StyledPanelWrapperLeft = styled.div`\n && {\n display: ${({isCollapsed}) => (isCollapsed ? 'none' : 'block')};\n min-width: 265px;\n width: 16%;\n margin-right: 1rem;\n ${sharedSplitPaneStyles}\n }\n`\n\nexport const StyledPanelWrapperRight = styled.div`\n && {\n width: 100%;\n display: flex;\n flex-direction: column;\n ${sharedSplitPaneStyles}\n }\n`\n\nexport const StyledInputEditSearchWrapper = styled.div`\n margin-bottom: ${scale.space(0)};\n`\n\nexport const StyledLeftPane = styled.div`\n padding: 0 ${scale.space(-1)};\n`\n\nexport const StyledActionsWrapper = styled.div`\n border-bottom: 3px solid ${theme.color('backgroundBody')};\n padding: 0 8px 8px;\n`\n\nexport const StyledToggleCollapse = styled.div`\n display: flex;\n background-color: ${theme.color('paper')};\n padding: 0 ${scale.space(-0.53)} ${scale.space(-0.53)} ${scale.space(-1.7)};\n`\n\nexport const StyledPlaceHolder = styled.div`\n display: ${({isCollapsed}) => (isCollapsed ? 'flex' : 'none')};\n flex: 1;\n height: 100%;\n width: 25px;\n margin-right: ${scale.space(-0.375)};\n background: ${theme.color('paper')};\n padding-top: ${scale.space(-0.53)};\n align-items: flex-start;\n\n &:hover {\n cursor: pointer;\n }\n\n ${StyledToggleCollapse} {\n padding: 0 0 ${scale.space(-0.53)} ${scale.space(-1.7)};\n }\n`\n\nexport const StyledToggleCollapseButton = styled(Button)`\n font-size: ${scale.font(0)};\n padding: 0;\n\n &:hover,\n &:focus,\n ${/* sc-selector */ StyledPlaceHolder}:hover & {\n background-color: transparent;\n color: ${theme.color('secondaryLight')};\n }\n`\n","import PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport {field} from 'tocco-app-extensions'\nimport {StatedValue} from 'tocco-ui'\n\nimport {StyledInputEditInformation} from './StyledInputEditInformation'\n\nconst StyledStatedValueWrapper = styled.div`\n & > div > div > span {\n display: inline-block;\n margin-top: 5px;\n padding-bottom: 3px;\n }\n`\n\nconst InputEditInformation = ({information}) => (\n <StyledInputEditInformation>\n {information.map(info => {\n const Field = field.factory('readOnly', info.type)\n return (\n <StyledStatedValueWrapper key={info.id}>\n <StatedValue key={info.id} label={info.label} immutable={true} hasValue={true}>\n <Field\n formField={{\n dataType: info.type\n }}\n value={info.value}\n />\n </StatedValue>\n </StyledStatedValueWrapper>\n )\n })}\n </StyledInputEditInformation>\n)\n\nInputEditInformation.propTypes = {\n information: PropTypes.array.isRequired\n}\n\nexport default InputEditInformation\n","import {connect} from 'react-redux'\n\nimport InputEditInformation from './InputEditInformation'\n\nconst mapStateToProps = state => ({\n information: state.inputEditInformation.information\n})\n\nexport default connect(mapStateToProps)(InputEditInformation)\n","import styled from 'styled-components'\n\nexport const StyledInputEditInformation = styled.div``\n","import _debounce from 'lodash/debounce'\nimport PropTypes from 'prop-types'\nimport SimpleFormApp from 'tocco-simple-form/src/main'\nimport {tqlBuilder} from 'tocco-util'\n\nconst InputEditSearch = ({form, setSearchFields}) => {\n return form.children ? (\n <SimpleFormApp\n form={form}\n onChange={_debounce(handleChange(form, setSearchFields), 500)}\n noButtons={true}\n validate={false}\n mappingType=\"search\"\n mode=\"search\"\n />\n ) : null\n}\n\nconst handleChange =\n (form, setSearchFields) =>\n ({values}) => {\n if (Object.keys(values).length > 0) {\n const tql = transformFormValuesToTql(values, form)\n setSearchFields(tql)\n } else {\n setSearchFields([])\n }\n }\n\nconst transformFormValuesToTql = (values, form) =>\n Object.entries(values)\n .map(([path, value]) => ({\n path,\n fieldType: getFieldType(path, form),\n value\n }))\n .filter(({path, fieldType, value}) => value && (!Array.isArray(value) || value.length > 0))\n .map(({path, fieldType, value}) => tqlBuilder.getTql(path, value, fieldType))\n .filter(tql => tql.length > 0)\n\nconst getFieldType = (path, form) => {\n const container = form.children.find(child => child.children.length > 0)\n if (container) {\n const field = container.children.find(child => child.id === path)\n\n return field.children.length > 0 ? field.children[0].dataType : field.dataType\n }\n}\n\nInputEditSearch.propTypes = {\n form: PropTypes.object.isRequired,\n setSearchFields: PropTypes.func.isRequired\n}\n\nexport default InputEditSearch\n","import {connect} from 'react-redux'\n\nimport {setSearchQueries} from '../../modules/inputEditSearch/actions'\nimport InputEditSearch from './InputEditSearch'\n\nconst mapActionCreators = {\n setSearchFields: setSearchQueries\n}\n\nconst mapStateToProps = state => ({\n form: state.inputEditSearch.form\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(InputEditSearch)\n","import PropTypes from 'prop-types'\nimport {useEffect, useState} from 'react'\nimport {field} from 'tocco-app-extensions'\nimport {Table, EditableValue, FormattedValue} from 'tocco-ui'\nimport {api, env} from 'tocco-util'\n\nimport {arrowKeyHandler} from './keyHandler'\nimport {StyledCell, StyledTableWrapper} from './StyledComponents'\n\nconst dataCellRenderer = (fieldDefinition, data) => {\n const {path, dataType} = fieldDefinition\n const Field = field.factory('list', dataType)\n const value = data[path]\n\n return (\n <StyledCell key={path}>\n <Field type={dataType} formField={fieldDefinition} value={value} breakWords={false} />\n </StyledCell>\n )\n}\n\nconst keyBuilder = (row, column) => `${row}:${column}`\n\nconst inputCellRenderer = (fieldDefinition, data, updateValue, rowIdx) => {\n const {readonly, id, dataType, options} = fieldDefinition.definition\n\n const pk = data.pk\n const value = data[id]\n\n if (readonly) {\n return (\n <StyledCell key={id}>\n <FormattedValue id={id} type={dataType} value={value} options={options} />\n </StyledCell>\n )\n } else {\n return (\n <StyledCell key={id}>\n <EditableValue\n id={keyBuilder(rowIdx, fieldDefinition.idx)}\n type={dataType}\n value={value}\n options={options}\n events={{\n onChange: changedValue => {\n updateValue(pk, id, changedValue)\n },\n onFocus: ({target}) => target.select()\n }}\n />\n </StyledCell>\n )\n }\n}\n\nconst InputEditTable = ({\n data,\n dataFormColumns,\n inputEditForm,\n updateValue,\n sorting,\n setSorting,\n dataLoadingInProgress,\n totalCount,\n currentPage,\n recordsPerPage,\n setCurrentPage\n}) => {\n const [columns, setColumns] = useState([])\n const [columnPosition, setColumnPosition] = useState([])\n\n useEffect(() => {\n const dataColumns = api.getColumnDefinition(dataFormColumns, sorting, dataCellRenderer)\n\n const inputColumns = inputEditForm.map((c, idx) => ({\n idx,\n id: c.id,\n label: c.label,\n sorting: {\n sortable: false\n },\n definition: c,\n resizable: true,\n dynamic: true,\n CellRenderer: ({rowData, column, rowIdx}) => inputCellRenderer(column, rowData, updateValue, rowIdx)\n }))\n\n const cc = [...dataColumns, ...inputColumns].sort(\n (a, b) => columnPosition.findIndex(e => e === a.id) - columnPosition.findIndex(e => e === b.id)\n )\n setColumns(cc)\n }, [columnPosition, dataFormColumns, inputEditForm, sorting, updateValue])\n\n const onColumnPositionChange = (dragColumn, dropColumn) => {\n setColumnPosition(\n columns.reduce(\n (acc, c) => [\n ...acc,\n ...(c.id === dropColumn ? [c.id, dragColumn] : []),\n ...(c.id === dragColumn ? [] : [c.id])\n ],\n []\n )\n )\n }\n\n if (columns.length === 0) {\n return null\n }\n\n const embedType = env.getEmbedType()\n\n return (\n <StyledTableWrapper onKeyDown={arrowKeyHandler}>\n <Table\n dataLoadingInProgress={dataLoadingInProgress}\n columns={columns}\n data={data}\n onSortingChange={setSorting}\n onColumnPositionChange={onColumnPositionChange}\n paginationInfo={{\n currentPage,\n recordsPerPage,\n totalCount\n }}\n onPageChange={setCurrentPage}\n scrollBehaviour={embedType === 'admin' ? 'inline' : 'none'}\n />\n </StyledTableWrapper>\n )\n}\n\nInputEditTable.propTypes = {\n data: PropTypes.array.isRequired,\n dataFormColumns: PropTypes.arrayOf(PropTypes.shape({id: PropTypes.string})),\n sorting: PropTypes.arrayOf(\n PropTypes.shape({\n field: PropTypes.string,\n order: PropTypes.string\n })\n ),\n inputEditForm: PropTypes.array.isRequired,\n updateValue: PropTypes.func.isRequired,\n setSorting: PropTypes.func.isRequired,\n dataLoadingInProgress: PropTypes.bool,\n totalCount: PropTypes.number,\n currentPage: PropTypes.number.isRequired,\n recordsPerPage: PropTypes.number.isRequired,\n setCurrentPage: PropTypes.func.isRequired\n}\n\nexport default InputEditTable\n","import {connect} from 'react-redux'\n\nimport {setCurrentPage} from '../../modules/inputEditPagination/actions'\nimport {updateValue, setSorting} from '../../modules/inputEditTable/actions'\nimport InputEditTable from './InputEditTable'\n\nconst mapActionCreators = {\n updateValue,\n setSorting,\n setCurrentPage\n}\n\nconst mapStateToProps = state => {\n return {\n data: state.inputEditTable.data,\n dataFormColumns: state.inputEditTable.dataFormColumns,\n inputEditForm: state.inputEditTable.inputEditForm,\n sorting: state.inputEditTable.sorting,\n dataLoadingInProgress: state.inputEditTable.dataLoadingInProgress,\n totalCount: state.inputEditPagination.totalCount,\n currentPage: state.inputEditPagination.currentPage,\n recordsPerPage: state.inputEditPagination.recordsPerPage\n }\n}\n\nexport default connect(mapStateToProps, mapActionCreators)(InputEditTable)\n","import _get from 'lodash/get'\nimport {lighten} from 'polished'\nimport styled from 'styled-components'\nimport {scale, shadeColor, theme, declareFont, declareFocus} from 'tocco-ui'\n\nconst borderColor = ({theme}) => shadeColor(_get(theme, 'colors.paper'), 3)\nconst baseSpace = scale.space(-1)\n\nexport const StyledTable = styled.table`\n background-color: ${theme.color('paper')};\n border-collapse: collapse;\n border-spacing: 0;\n width: 100%;\n margin-top: ${baseSpace};\n margin-bottom: ${baseSpace};\n table-layout: fixed;\n min-width: 900px;\n`\n\nexport const StyledTableWrapper = styled.div`\n width: 100%;\n height: 100%;\n overflow: auto;\n`\n\nexport const StyledCell = styled.div`\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 ${borderColor};\n padding-left: ${baseSpace};\n\n &:not([disabled]):hover {\n cursor: pointer;\n }\n ${declareFocus}\n }\n\n &.single-select > span {\n display: inline-block;\n width: 100%;\n margin-left: 5px;\n margin-bottom: 5px;\n background-color: ${theme.color('paper')};\n }\n\n &.single-select button {\n margin-bottom: 2px;\n margin-right: 2px;\n }\n }\n`\n\nexport const StyledTableRow = styled.tr`\n &:hover {\n ${StyledCell} {\n background-color: ${({theme}) => lighten(0.25, theme.colors.secondaryLight)};\n }\n }\n`\n\nexport const StyledHeader = styled.th`\n padding: ${baseSpace};\n background-color: ${theme.color('paper')};\n text-align: left;\n border-bottom: 2px solid ${borderColor};\n ${declareFont({fontWeight: theme.fontWeight('bold')})};\n user-select: none;\n text-overflow: ellipsis;\n\n &:hover {\n background-color: ${({theme}) => lighten(0.25, theme.colors.secondaryLight)};\n }\n`\n","export const arrowKeyHandler = event => {\n if (\n ['INPUT', 'TEXTAREA'].includes(document.activeElement.tagName) &&\n ['ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowUp'].includes(event.key)\n ) {\n event.preventDefault()\n const [rowIndex, columnIndex] = document.activeElement.id.split(':')\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n const currentIndex = Number.parseInt(rowIndex)\n const indexDiff = event.key === 'ArrowUp' ? -1 : 1\n const idToFocus = `${currentIndex + indexDiff}:${columnIndex}`\n const elementToFocus = document.getElementById(idToFocus)\n focusElement(elementToFocus)\n } else if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\n const currentIndex = Number.parseInt(columnIndex)\n const indexDiff = event.key === 'ArrowLeft' ? -1 : 1\n const elementToFocus = findHorizontalElementToFocus(rowIndex, currentIndex, indexDiff)\n focusElement(elementToFocus)\n }\n }\n}\n\n/**\n * there might be readonly fields mixed in, so we need to check the rest of the fields\n * @param rowIndex which row to navigate in\n * @param currentIndex last checked cell index\n * @param indexDiff which direction to move in\n * @returns {HTMLElement}\n */\nconst findHorizontalElementToFocus = (rowIndex, currentIndex, indexDiff) => {\n const adjustedIndex = currentIndex + indexDiff\n const idToFocus = `${rowIndex}:${adjustedIndex}`\n const elementToFocus = document.getElementById(idToFocus)\n if (elementToFocus) {\n if (['INPUT', 'TEXTAREA'].includes(elementToFocus.tagName) && !elementToFocus.disabled) {\n return elementToFocus\n } else {\n return findHorizontalElementToFocus(rowIndex, adjustedIndex, indexDiff)\n }\n } else {\n return elementToFocus\n }\n}\n\nconst focusElement = elementToFocus => {\n if (elementToFocus) {\n // Reacts NumberFormat is clingy and steals focus when using left and right arrow keys, so we steal it back\n setTimeout(() => {\n elementToFocus.focus()\n }, 0)\n }\n}\n","import PropTypes from 'prop-types'\nimport {useEffect, useState} from 'react'\nimport {actions, notification, selection as selectionPropType} from 'tocco-app-extensions'\nimport {GlobalStyles} from 'tocco-ui'\n\nimport InputEditInformation from '../InputEditInformation'\nimport InputEditSearch from '../InputEditSearch'\nimport InputEditTable from '../InputEditTable/InputEditTableContainer'\nimport {\n StyledPanelWrapperLeft,\n StyledPanelWrapperRight,\n StyledLeftPane,\n StyledActionsWrapper,\n StyledInputEditSearchWrapper,\n StyledPaneWrapper,\n StyledToggleCollapse,\n StyledToggleCollapseButton,\n StyledPlaceHolder\n} from './StyledInputEdit'\n\nconst InputEdit = ({\n selection,\n handleNotifications,\n updateSelection,\n initializeTable,\n initializeSearch,\n initializeInformation,\n actionDefinitions\n}) => {\n useEffect(() => {\n updateSelection()\n }, [selection, updateSelection])\n\n useEffect(() => {\n initializeTable()\n initializeSearch()\n initializeInformation()\n }, [selection, initializeTable, initializeSearch, initializeInformation])\n\n const [isCollapsed, setIsCollapsed] = useState(false)\n const toggleCollapse = () => {\n setIsCollapsed(!isCollapsed)\n }\n\n const Actions = actionDefinitions.map(definition => (\n <actions.Action key={definition.id} definition={definition} selection={selection} />\n ))\n\n return (\n <>\n <GlobalStyles />\n {handleNotifications && <notification.Notifications />}\n <StyledPaneWrapper>\n <StyledPlaceHolder onClick={toggleCollapse} isCollapsed={isCollapsed}>\n <StyledToggleCollapse isCollapsed={isCollapsed}>\n <StyledToggleCollapseButton icon=\"chevron-right\" isCollapsed={isCollapsed} />\n </StyledToggleCollapse>\n </StyledPlaceHolder>\n <StyledPanelWrapperLeft isCollapsed={isCollapsed}>\n <StyledToggleCollapse>\n <StyledToggleCollapseButton icon=\"chevron-left\" onClick={toggleCollapse} />\n </StyledToggleCollapse>\n <StyledLeftPane>\n <StyledInputEditSearchWrapper>\n <InputEditSearch />\n </StyledInputEditSearchWrapper>\n <InputEditInformation />\n </StyledLeftPane>\n </StyledPanelWrapperLeft>\n <StyledPanelWrapperRight>\n <StyledActionsWrapper>{Actions}</StyledActionsWrapper>\n <InputEditTable />\n </StyledPanelWrapperRight>\n </StyledPaneWrapper>\n </>\n )\n}\n\nInputEdit.propTypes = {\n selection: selectionPropType.propType.isRequired,\n handleNotifications: PropTypes.bool,\n updateSelection: PropTypes.func.isRequired,\n initializeTable: PropTypes.func.isRequired,\n initializeSearch: PropTypes.func.isRequired,\n initializeInformation: PropTypes.func.isRequired,\n actionDefinitions: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired\n })\n ),\n notify: PropTypes.func.isRequired\n}\n\nexport default InputEdit\n","import {connect} from 'react-redux'\nimport {notification} from 'tocco-app-extensions'\n\nimport {updateSelection} from '../../modules/inputEdit/actions'\nimport {initializeInformation} from '../../modules/inputEditInformation/actions'\nimport {initializeSearch} from '../../modules/inputEditSearch/actions'\nimport {initializeTable} from '../../modules/inputEditTable/actions'\nimport InputEdit from './InputEdit'\n\nconst mapActionCreators = {\n updateSelection,\n initializeTable,\n initializeSearch,\n initializeInformation,\n notify: notification.toaster\n}\n\nconst mapStateToProps = state => ({\n selection: state.inputEdit.selection,\n actionDefinitions: state.inputEditTable.actionDefinitions,\n handleNotifications: state.inputEdit.handleNotifications\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(InputEdit)\n","import reducer from './reducer'\nimport sagas from './sagas'\n\nexport {sagas}\nexport default reducer\n","import {all, call, put, select, takeEvery, takeLatest} from 'redux-saga/effects'\nimport {actionEmitter, actions, rest} from 'tocco-app-extensions'\n\nimport * as inputEditTableActions from '../inputEditTable/actions'\nimport * as inputEditAction from './actions'\nimport {UPDATE_SELECTION} from './actions'\n\nconst inputEditSelector = state => state.inputEdit\n\nexport default function* sagas() {\n yield all([\n takeEvery(actions.actions.ACTION_INVOKE, emit),\n takeLatest(UPDATE_SELECTION, updateInputDatas),\n takeLatest(actions.actions.ACTION_INVOKED, reload)\n ])\n}\n\nexport function* emit(action) {\n yield put(actionEmitter.emitAction(action))\n}\n\nexport function* reload() {\n yield put(inputEditTableActions.initializeTable())\n}\n\nexport function* updateInputDatas() {\n yield put(inputEditAction.setSelectionUpdateInProgress(true))\n const {selection} = yield select(inputEditSelector)\n yield call(rest.requestSaga, 'inputEdit/update-input-datas', {method: 'POST', body: selection})\n yield put(inputEditAction.setSelectionUpdateInProgress(false))\n}\n","import reducer from './reducer'\nimport sagas from './sagas'\n\nexport {sagas}\nexport default reducer\n","import {all, takeLatest, call, put, select} from 'redux-saga/effects'\nimport {rest} from 'tocco-app-extensions'\n\nimport * as actions from '../inputEditInformation/actions'\n\nconst inputEditSelector = state => state.inputEdit\n\nexport default function* sagas() {\n yield all([takeLatest(actions.INITIALIZE_INFORMATION, initialize)])\n}\n\nexport function* initialize() {\n const {selection} = yield select(inputEditSelector)\n const {body} = yield call(rest.requestSaga, 'inputEdit/information', {method: 'POST', body: selection})\n yield put(actions.setInformation(body))\n}\n","import reducer from './reducer'\nimport sagas from './sagas'\n\nexport {sagas}\nexport default reducer\n","import {api} from 'tocco-util'\n\nexport const transformResponseData = response =>\n response.body.data\n .map(dataRecord => {\n const splitObj = Object.keys(dataRecord).reduce(\n (acc, key) => {\n const isInputField = !isNaN(parseInt(key)) || key === 'rating' // textchoice has no exams but is an input\n return {\n ...acc,\n ...(isInputField\n ? {\n inputFields: {\n ...acc.inputFields,\n [key]: dataRecord[key]\n }\n }\n : {\n entityFields: {\n ...acc.entityFields,\n [key]: dataRecord[key]\n }\n })\n }\n },\n {\n inputFields: {},\n entityFields: {}\n }\n )\n\n return {...splitObj.inputFields, ...api.flattenPaths(splitObj.entityFields)}\n })\n .map(dataRecord => ({...dataRecord, __key: dataRecord.pk}))\n","import {all, call, put, select, take, takeEvery, takeLatest} from 'redux-saga/effects'\nimport {notification, rest} from 'tocco-app-extensions'\n\nimport * as inputEditActions from '../inputEdit/actions'\nimport {setTotalCount} from '../inputEditPagination/actions'\nimport * as searchFormActions from '../inputEditSearch/actions'\nimport * as actions from './actions'\nimport {transformResponseData} from './utils'\n\nexport const inputSelector = state => state.input\nexport const inputEditSelector = state => state.inputEdit\nexport const inputEditTableSelector = state => state.inputEditTable\nexport const inputEditSearchSelector = state => state.inputEditSearch\nexport const searchQueriesSelector = state => state.inputEditSearch.searchQueries\nexport const inputEditPaginationSelector = state => state.inputEditPagination\n\nexport default function* sagas() {\n yield all([\n takeLatest(actions.INITIALIZE_TABLE, initialize),\n takeLatest(actions.LOAD_DATA, loadData),\n takeEvery(actions.UPDATE_VALUE, updateValue),\n takeLatest(actions.SET_SORTING, loadData)\n ])\n}\n\nexport function* processDataForm(dataForm, readonly, readonlyActions = []) {\n const actionDefinitions = dataForm.children\n .find(child => child.id === 'main-action-bar')\n .children.filter(child => child.componentType === 'action')\n .filter(child => !readonly || readonlyActions.includes(child.id))\n .map(child => ({\n ...child,\n scope: 'detail'\n }))\n\n yield put(actions.setActionDefinitions(actionDefinitions))\n\n const dataFormColumns = dataForm.children.find(child => child.componentType === 'table').children\n\n yield put(actions.setDataFormColumns(dataFormColumns))\n}\n\nexport function* initialize() {\n yield put(actions.setDataLoadingInProgress(true))\n const {selection} = yield select(inputEditSelector)\n const {actionProperties} = yield select(inputSelector)\n const inputEditDataForm =\n actionProperties && actionProperties.inputEditDataForm ? actionProperties.inputEditDataForm : 'Input_edit_data'\n const [editFormDefinition, dataForm] = yield all([\n call(rest.requestSaga, 'inputEdit/form', {method: 'POST', body: selection}),\n call(rest.fetchForm, inputEditDataForm, 'list')\n ])\n const {editColumns, readonly, readonlyActions} = editFormDefinition.body\n if (readonly) {\n editColumns.forEach(c => (c.readonly = true))\n yield put(\n notification.toaster({\n type: 'info',\n title: 'client.actions.InputEdit.input_closed'\n })\n )\n }\n yield put(actions.setEditForm({inputEditForm: editColumns}))\n yield call(processDataForm, dataForm, readonly, readonlyActions)\n\n const {initialized: searchFormInitialized} = yield select(inputEditSearchSelector)\n if (!searchFormInitialized) {\n yield take(searchFormActions.SET_INITIALIZED)\n }\n const {updateInProgress} = yield select(inputEditSelector)\n if (updateInProgress) {\n yield take(({payload, type}) => type === inputEditActions.SET_UPDATE_IN_PROGRESS && !payload.updateInProgress)\n }\n yield call(loadData, {})\n}\n\nexport function* loadData({newSorting, newSearchQueries, newPage}) {\n yield put(actions.setDataLoadingInProgress(true))\n const {selection} = yield select(inputEditSelector)\n const sorting = newSorting || (yield select(inputEditTableSelector)).sorting\n const searchQueries = newSearchQueries || (yield select(searchQueriesSelector))\n const currentPage = newPage || (yield select(inputEditPaginationSelector)).currentPage\n const {recordsPerPage} = yield select(inputEditPaginationSelector)\n const dataFormColumns = (yield select(inputEditTableSelector)).dataFormColumns\n const paths = getPathsFromTable(dataFormColumns)\n const searchBean = rest.buildRequestQuery({\n limit: recordsPerPage,\n sorting,\n page: currentPage,\n where: searchQueries.join(' and '),\n paths\n })\n const response = yield call(rest.requestSaga, 'inputEdit/data/search', {\n method: 'POST',\n body: {\n selection,\n searchBean\n }\n })\n\n const transformedData = yield call(transformResponseData, response)\n yield put(actions.setData(transformedData))\n yield put(setTotalCount(response.body.count))\n yield put(actions.setDataLoadingInProgress(false))\n}\n\nconst getPathsFromTable = dataFormColumns => [\n 'pk',\n ...dataFormColumns.flatMap(column => column.children.map(field => field.path))\n]\n\nexport function* updateValue({payload: {inputDataKey, node, value}}) {\n yield put(actions.setValue(inputDataKey, node, value))\n\n const response = yield call(rest.requestSaga, 'inputEdit/data', {\n method: 'POST',\n body: {\n inputDataKey,\n node,\n value\n }\n })\n yield handleResponse(response)\n}\n\nfunction* handleResponse(response) {\n const values = response.body.calculatedValues\n if (values) {\n const actionsToPut = values.map(value => actions.setValue(value.inputDataKey, value.node, value.value))\n yield all(actionsToPut.map(action => put(action)))\n }\n}\n","import {all, takeLatest, call} from 'redux-saga/effects'\n\nimport * as actions from '../inputEditPagination/actions'\nimport {loadData} from '../inputEditTable/sagas'\n\nexport default function* sagas() {\n yield all([takeLatest(actions.SET_CURRENT_PAGE, setCurrentPage)])\n}\n\nexport function* setCurrentPage({payload: {currentPage}}) {\n yield call(loadData, {newPage: currentPage})\n}\n","import reducer from './reducer'\nimport sagas from './sagas'\n\nexport {sagas}\nexport default reducer\n","import {all, takeLatest, call, put, select} from 'redux-saga/effects'\nimport {rest} from 'tocco-app-extensions'\n\nimport * as actions from '../inputEditSearch/actions'\nimport {loadData} from '../inputEditTable/sagas'\n\nexport const inputEditSelector = state => state.inputEdit\nexport const inputEditSearchSelector = state => state.inputEditSearch\n\nexport default function* sagas() {\n yield all([\n takeLatest(actions.INITIALIZE_SEARCH, initialize),\n takeLatest(actions.SET_SEARCH_QUERIES, setSearchQueries)\n ])\n}\n\nexport function* initialize() {\n const form = yield call(rest.fetchForm, 'Input_edit_data', 'search')\n yield put(actions.setForm(form))\n}\n\nexport function* setSearchQueries({payload}) {\n const {initialized} = yield select(inputEditSearchSelector)\n if (initialized) {\n yield call(loadData, {newSearchQueries: payload.searchQueries})\n } else {\n yield put(actions.setInitialized(true))\n }\n}\n","import reducer from './reducer'\nimport sagas from './sagas'\n\nexport {sagas}\nexport default reducer\n","import inputEditReducer, {sagas as inputEditSagas} from './inputEdit'\nimport inputEditInformationReducer, {sagas as inputEditInformationSagas} from './inputEditInformation'\nimport inputEditPaginationReducer, {sagas as inputEditPaginationSagas} from './inputEditPagination'\nimport inputEditSearchReducer, {sagas as inputEditSearchSagas} from './inputEditSearch'\nimport inputEditTableReducer, {sagas as inputEditTableSagas} from './inputEditTable'\n\nexport default {\n inputEdit: inputEditReducer,\n inputEditTable: inputEditTableReducer,\n inputEditSearch: inputEditSearchReducer,\n inputEditPagination: inputEditPaginationReducer,\n inputEditInformation: inputEditInformationReducer\n}\n\nexport const sagas = [\n inputEditSagas,\n inputEditTableSagas,\n inputEditSearchSagas,\n inputEditPaginationSagas,\n inputEditInformationSagas\n]\n","import PropTypes from 'prop-types'\nimport {actionEmitter, actions, appFactory, cache, errorLogging, notification} from 'tocco-app-extensions'\nimport {reducer as reducerUtil} from 'tocco-util'\n\nimport InputEdit from './components/InputEdit/InputEditContainer'\nimport {setHandleNotifications, setSelection} from './modules/inputEdit/actions'\nimport reducers, {sagas} from './modules/reducers'\n\nconst packageName = 'input-edit'\n\nconst EXTERNAL_EVENTS = ['emitAction']\n\nconst initApp = (id, input, events = {}, publicPath) => {\n const content = <InputEdit />\n\n const store = appFactory.createStore(reducers, sagas, input, packageName)\n actionEmitter.addToStore(store, events.emitAction)\n actions.addToStore(store)\n const handleNotifications = !events.emitAction\n notification.addToStore(store, handleNotifications)\n errorLogging.addToStore(store, handleNotifications)\n cache.addToStore(store)\n\n return appFactory.createApp(packageName, content, store, {\n input,\n events,\n actions: [setHandleNotifications(handleNotifications), setSelection(input.selection)],\n publicPath,\n textResourceModules: ['component', 'common', packageName]\n })\n}\n\n;(() => {\n if (__PACKAGE_NAME__ === packageName) {\n appFactory.registerAppInRegistry(packageName, initApp)\n\n if (__DEV__) {\n const input = require('./dev/input.json')\n\n if (!__NO_MOCK__) {\n const fetchMock = require('fetch-mock').default\n fetchMock.config.overwriteRoutes = false\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/reducers', () => {\n const reducers = require('./modules/reducers').default\n reducerUtil.hotReloadReducers(app.store, reducers)\n })\n }\n\n appFactory.renderApp(app.component)\n }\n }\n})()\n\nconst InputEditApp = props => {\n const {component} = appFactory.useApp({initApp, props, packageName, externalEvents: EXTERNAL_EVENTS})\n return component\n}\n\nInputEditApp.propTypes = {\n selection: PropTypes.object,\n ...EXTERNAL_EVENTS.reduce((propTypes, event) => {\n propTypes[event] = PropTypes.func\n return propTypes\n }, {})\n}\n\nexport default InputEditApp\n","export const SET_SELECTION = 'inputEdit/SET_SELECTION'\nexport const UPDATE_SELECTION = 'inputEdit/UPDATE_SELECTION'\nexport const SET_HANDLE_NOTIFICATIONS = 'inputEdit/SET_HANDLE_NOTIFICATIONS'\nexport const SET_UPDATE_IN_PROGRESS = 'inputEdit/SET_UPDATE_IN_PROGRESS'\n\nexport const setSelection = selection => ({\n type: SET_SELECTION,\n payload: {selection}\n})\n\nexport const updateSelection = () => ({\n type: UPDATE_SELECTION,\n payload: {}\n})\n\nexport const setHandleNotifications = handleNotifications => ({\n type: SET_HANDLE_NOTIFICATIONS,\n payload: {\n handleNotifications\n }\n})\n\nexport const setSelectionUpdateInProgress = updateInProgress => ({\n type: SET_UPDATE_IN_PROGRESS,\n payload: {\n updateInProgress\n }\n})\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport {SET_SELECTION, SET_HANDLE_NOTIFICATIONS, SET_UPDATE_IN_PROGRESS} from './actions'\n\nconst initialState = {\n selection: null,\n handleNotifications: false,\n updateInProgress: false\n}\n\nconst ACTION_HANDLERS = {\n [SET_SELECTION]: reducerUtil.singleTransferReducer('selection'),\n [SET_HANDLE_NOTIFICATIONS]: reducerUtil.singleTransferReducer('handleNotifications'),\n [SET_UPDATE_IN_PROGRESS]: reducerUtil.singleTransferReducer('updateInProgress')\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","export const INITIALIZE_INFORMATION = 'inputEditInformation/INITIALIZE_INFORMATION'\nexport const SET_INFORMATION = 'inputEditInformation/SET_INFORMATION'\n\nexport const initializeInformation = () => ({\n type: INITIALIZE_INFORMATION\n})\n\nexport const setInformation = information => ({\n type: SET_INFORMATION,\n payload: {information}\n})\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport * as actions from './actions'\n\nconst initialState = {\n information: []\n}\n\nconst ACTION_HANDLERS = {\n [actions.SET_INFORMATION]: reducerUtil.singleTransferReducer('information')\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","export const SET_CURRENT_PAGE = 'inputEditPagination/SET_CURRENT_PAGE'\nexport const SET_TOTAL_COUNT = 'inputEditPagination/SET_TOTAL_COUNT'\n\nexport const setCurrentPage = currentPage => ({\n type: SET_CURRENT_PAGE,\n payload: {currentPage}\n})\n\nexport const setTotalCount = totalCount => ({\n type: SET_TOTAL_COUNT,\n payload: {\n totalCount\n }\n})\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport {SET_CURRENT_PAGE, SET_TOTAL_COUNT} from './actions'\n\nconst initialState = {\n totalCount: 0,\n currentPage: 1,\n recordsPerPage: 25\n}\n\nconst ACTION_HANDLERS = {\n [SET_TOTAL_COUNT]: reducerUtil.singleTransferReducer('totalCount'),\n [SET_CURRENT_PAGE]: reducerUtil.singleTransferReducer('currentPage')\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","export const INITIALIZE_SEARCH = 'inputEditSearch/INITIALIZE_SEARCH'\nexport const SET_FORM = 'inputEditSearch/SET_FORM'\nexport const SET_SEARCH_QUERIES = 'inputEditSearch/SET_SEARCH_QUERIES'\nexport const SET_INITIALIZED = 'inputEditSearch/SET_INITIALIZED'\n\nexport const initializeSearch = () => ({\n type: INITIALIZE_SEARCH\n})\n\nexport const setForm = form => ({\n type: SET_FORM,\n payload: {form}\n})\n\nexport const setSearchQueries = searchQueries => ({\n type: SET_SEARCH_QUERIES,\n payload: {searchQueries}\n})\n\nexport const setInitialized = initialized => ({\n type: SET_INITIALIZED,\n payload: {\n initialized\n }\n})\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport * as actions from './actions'\n\nconst initialState = {\n form: {},\n initialized: false,\n searchQueries: []\n}\n\nconst ACTION_HANDLERS = {\n [actions.SET_FORM]: reducerUtil.singleTransferReducer('form'),\n [actions.SET_SEARCH_QUERIES]: reducerUtil.singleTransferReducer('searchQueries'),\n [actions.SET_INITIALIZED]: reducerUtil.singleTransferReducer('initialized')\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","export const INITIALIZE_TABLE = 'inputEditTable/INITIALIZE_TABLE'\nexport const LOAD_DATA = 'inputEditTable/LOAD_DATA'\nexport const SET_DATA = 'inputEditTable/SET_DATA'\nexport const SET_EDIT_FORM = 'inputEditTable/SET_EDIT_FORM'\nexport const UPDATE_VALUE = 'inputEditTable/UPDATE_VALUE'\nexport const SET_VALUE = 'inputEditTable/SET_VALUE'\nexport const SET_SORTING = 'inputEditTable/SET_SORTING'\nexport const SET_DATA_FORM_COLUMNS = 'inputEditTable/SET_DATA_FORM_COLUMNS'\nexport const SET_ACTION_DEFINITIONS = 'inputEditTable/SET_ACTION_DEFINITIONS'\nexport const SET_DATA_LOADING_IN_PROGRESS = 'inputEditTable/SET_DATA_LOADING_IN_PROGRESS'\n\nexport const initializeTable = () => ({\n type: INITIALIZE_TABLE\n})\n\nexport const loadData = () => ({\n type: LOAD_DATA\n})\n\nexport const setData = data => ({\n type: SET_DATA,\n payload: {data}\n})\n\nexport const setEditForm = form => ({\n type: SET_EDIT_FORM,\n payload: form\n})\n\nexport const updateValue = (inputDataKey, node, value) => ({\n type: UPDATE_VALUE,\n payload: {\n inputDataKey,\n node,\n value\n }\n})\n\nexport const setValue = (inputDataKey, node, value) => ({\n type: SET_VALUE,\n payload: {\n inputDataKey,\n node,\n value\n }\n})\n\nexport const setSorting = (field, add) => ({\n type: SET_SORTING,\n payload: {\n field,\n add\n }\n})\n\nexport const setDataFormColumns = dataFormColumns => ({\n type: SET_DATA_FORM_COLUMNS,\n payload: {\n dataFormColumns\n }\n})\n\nexport const setActionDefinitions = actionDefinitions => ({\n type: SET_ACTION_DEFINITIONS,\n payload: {\n actionDefinitions\n }\n})\n\nexport const setDataLoadingInProgress = dataLoadingInProgress => ({\n type: SET_DATA_LOADING_IN_PROGRESS,\n payload: {\n dataLoadingInProgress\n }\n})\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport * as actions from './actions'\n\nconst initialState = {\n actionDefinitions: [],\n dataFormColumns: [],\n data: [],\n inputEditForm: [],\n sorting: [],\n dataLoadingInProgress: false\n}\n\nconst setValue = (state, action) => {\n const {inputDataKey, node, value} = action.payload\n return {\n ...state,\n data: state.data.reduce((acc, val) => {\n if (val.pk === inputDataKey) {\n return [\n ...acc,\n {\n ...val,\n [node]: value\n }\n ]\n }\n return [...acc, val]\n }, [])\n }\n}\n\nconst defaultOrder = 'asc'\nconst getOpposite = order => (order === 'asc' ? 'desc' : 'asc')\nconst setSorting = (state, {payload: {field, add}}) => {\n if (!add) {\n const currentSorting = state.sorting\n const order =\n currentSorting.length > 0 && currentSorting[0].field === field\n ? getOpposite(currentSorting[0].order)\n : defaultOrder\n return {\n ...state,\n sorting: [{field, order}]\n }\n } else {\n const contains = state.sorting.filter(s => s.field === field)\n const order = contains.length > 0 ? getOpposite(contains[0].order) : defaultOrder\n\n return {\n ...state,\n sorting: [...state.sorting.filter(s => s.field !== field), {field, order}]\n }\n }\n}\n\nconst ACTION_HANDLERS = {\n [actions.SET_DATA_FORM_COLUMNS]: reducerUtil.singleTransferReducer('dataFormColumns'),\n [actions.SET_ACTION_DEFINITIONS]: reducerUtil.singleTransferReducer('actionDefinitions'),\n [actions.SET_EDIT_FORM]: reducerUtil.singleTransferReducer('inputEditForm'),\n [actions.SET_DATA]: reducerUtil.singleTransferReducer('data'),\n [actions.SET_DATA_LOADING_IN_PROGRESS]: reducerUtil.singleTransferReducer('dataLoadingInProgress'),\n [actions.SET_VALUE]: setValue,\n [actions.SET_SORTING]: setSorting\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 PropTypes from 'prop-types'\nimport {injectIntl} from 'react-intl'\nimport EntityDetailApp from 'tocco-entity-detail/src/main'\n\nimport getDetailFormName from '../../../utils/getDetailFormName'\nimport getNode from '../../../utils/getNode'\nimport {withRouterTypeCompProvider} from '../../../utils/withRouterTypeCompProvider'\n\nconst CreateDomain = ({path, context, onSuccess, intl, locale, emitAction}) => {\n const isActionBlocked = action => action.payload?.toaster?.title === 'client.entity-detail.createSuccessfulTitle'\n\n const emitActionBarrier = action => {\n if (!isActionBlocked(action)) {\n emitAction(action)\n }\n }\n\n const handleEntityCreated = ({id}) => {\n const remoteEvents = [\n {\n type: 'entity-create-event',\n payload: {\n entities: [\n {\n entityName: 'Docs_list_item',\n key: `Domain/${id}`\n }\n ]\n }\n }\n ]\n\n onSuccess({\n title: intl.formatMessage({id: 'client.docs-browser.createDomainSuccessful'}),\n remoteEvents\n })\n }\n\n const parent = getNode(path)\n const defaultValues = parent ? [{id: `rel${parent.model}`, value: parent.key}] : []\n\n const formName = getDetailFormName(context, 'Domain')\n\n return (\n <EntityDetailApp\n entityName=\"Domain\"\n formName={formName}\n mode=\"create\"\n defaultValues={defaultValues}\n locale={locale}\n onEntityCreated={handleEntityCreated}\n emitAction={emitActionBarrier}\n />\n )\n}\n\nCreateDomain.propTypes = {\n path: PropTypes.string.isRequired,\n context: PropTypes.shape({\n detailFormNames: PropTypes.object.isRequired\n }).isRequired,\n onSuccess: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n locale: PropTypes.string,\n emitAction: PropTypes.func.isRequired\n}\n\nexport default withRouterTypeCompProvider(injectIntl(CreateDomain))\n","import PropTypes from 'prop-types'\nimport {injectIntl} from 'react-intl'\nimport EntityDetailApp from 'tocco-entity-detail/src/main'\n\nimport getDetailFormName from '../../../utils/getDetailFormName'\nimport getNode from '../../../utils/getNode'\nimport {withRouterTypeCompProvider} from '../../../utils/withRouterTypeCompProvider'\n\nconst CreateFolder = ({context, path, onSuccess, intl, locale, emitAction}) => {\n const isActionBlocked = action => action.payload?.toaster?.title === 'client.entity-detail.createSuccessfulTitle'\n\n const emitActionBarrier = action => {\n if (!isActionBlocked(action)) {\n emitAction(action)\n }\n }\n\n const handleEntityCreated = ({id}) => {\n const remoteEvents = [\n {\n type: 'entity-create-event',\n payload: {\n entities: [\n {\n entityName: 'Docs_list_item',\n key: `Folder/${id}`\n }\n ]\n }\n }\n ]\n\n onSuccess({\n title: intl.formatMessage({id: 'client.docs-browser.createFolderSuccessful'}),\n remoteEvents\n })\n }\n\n const parent = getNode(path)\n const defaultValues = parent ? [{id: `rel${parent.model}`, value: parent.key}] : []\n\n const formName = getDetailFormName(context, 'Folder')\n\n return (\n <EntityDetailApp\n entityName=\"Folder\"\n formName={formName}\n mode=\"create\"\n defaultValues={defaultValues}\n locale={locale}\n onEntityCreated={handleEntityCreated}\n emitAction={emitActionBarrier}\n />\n )\n}\n\nCreateFolder.propTypes = {\n path: PropTypes.string.isRequired,\n context: PropTypes.shape({\n detailFormNames: PropTypes.object.isRequired\n }).isRequired,\n onSuccess: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n locale: PropTypes.string,\n emitAction: PropTypes.func.isRequired\n}\n\nexport default withRouterTypeCompProvider(injectIntl(CreateFolder))\n","import DeleteApp from 'tocco-delete/src/main'\n\nexport default props => <DeleteApp {...props} customDeleteEndpoint={'documents/delete'} />\n","import PropTypes from 'prop-types'\nimport {selection} from 'tocco-app-extensions'\nimport EntityDetailApp from 'tocco-entity-detail/src/main'\n\nimport getDetailFormName from '../../../utils/getDetailFormName'\nimport {withRouterTypeCompProvider} from '../../../utils/withRouterTypeCompProvider'\n\nconst EditAction = ({selection, onSuccess, onCancel, locale, context, emitAction, navigate}) => {\n const isActionBlocked = action => action.payload?.toaster?.title === 'client.entity-detail.createSuccessfulTitle'\n\n const emitActionBarrier = action => {\n if (!isActionBlocked(action)) {\n emitAction(action)\n }\n }\n\n const [entityName, entityKey] = selection.ids[0].split('/')\n\n if (entityName === 'Resource') {\n navigate(`/docs/doc/${entityKey}/detail`)\n onCancel()\n }\n\n const handleEntityUpdated = () => {\n const remoteEvents = [\n {\n type: 'entity-update-event',\n payload: {\n entities: [\n {\n entityName: 'Docs_list_item',\n key: selection.ids[0]\n }\n ]\n }\n }\n ]\n\n onSuccess({\n title: null,\n remoteEvents\n })\n }\n\n const handleEntityDeleted = () => {\n const remoteEvents = [\n {\n type: 'entity-delete-event',\n payload: {\n entities: [\n {\n entityName: 'Docs_list_item',\n key: selection.ids[0]\n }\n ]\n }\n }\n ]\n\n onSuccess({\n title: null,\n remoteEvents\n })\n }\n\n const formName = getDetailFormName(context, entityName)\n\n return (\n <EntityDetailApp\n entityName={entityName}\n formName={formName}\n entityId={entityKey}\n mode=\"update\"\n locale={locale}\n onEntityUpdated={handleEntityUpdated}\n onEntityDeleted={handleEntityDeleted}\n emitAction={emitActionBarrier}\n />\n )\n}\n\nEditAction.propTypes = {\n selection: selection.propType,\n context: PropTypes.object.isRequired,\n onSuccess: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n locale: PropTypes.string,\n emitAction: PropTypes.func.isRequired,\n navigate: PropTypes.func.isRequired\n}\n\nexport default withRouterTypeCompProvider(EditAction)\n","import _isEqual from 'lodash/isEqual'\nimport PropTypes from 'prop-types'\nimport {useEffect, useState} from 'react'\nimport {FormattedMessage} from 'react-intl'\nimport styled from 'styled-components'\nimport {selection} from 'tocco-app-extensions'\nimport {Button, LoadMask, StyledButton} from 'tocco-ui'\n\nimport DocsBrowser from '../../../main'\nimport getNode from '../../../utils/getNode'\n\nconst StyledButtonsWrapper = styled.div`\n display: flex;\n justify-content: flex-end;\n\n ${StyledButton} {\n margin-right: 0;\n }\n`\n\n/* for being able to scroll whole modal content on smaller screens */\nconst StyledLoadMask = styled(LoadMask)`\n height: auto;\n`\n\nexport const MoveAction = ({\n selection,\n onSuccess,\n onError,\n path,\n initialize,\n moveElements,\n isWaiting,\n domainTypes,\n rootNodes,\n businessUnit,\n locale,\n emitAction\n}) => {\n const initialNode = getNode(path)\n const initialParent = {model: 'Docs_list_item', key: `${initialNode.model}/${initialNode.key}`}\n const [parent, setParent] = useState(initialParent)\n\n // call only on mount\n useEffect(() => {\n initialize(selection, onSuccess, onError)\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n const getCustomLocation = (model, key) => {\n switch (model) {\n case 'Domain':\n return `/docs/domain/${key}/list`\n case 'Folder':\n return `/docs/folder/${key}/list`\n case 'Resource':\n return\n default:\n throw new Error(`Unexpected model: ${model}`)\n }\n }\n\n const getInitialLocation = () => {\n if (parent === null) {\n return null\n }\n const [model, key] = parent.key.split('/')\n return getCustomLocation(model, key)\n }\n\n return (\n <StyledLoadMask required={[!isWaiting]}>\n <DocsBrowser\n routerType=\"routerless\"\n initialLocation={getInitialLocation()}\n listLimit={10}\n selectionStyle=\"none\"\n searchFormType=\"none\"\n disableViewPersistor={true}\n getListFormName={parent => (parent === null ? 'Move_root_docs_list_item' : 'Move_docs_list_item')}\n onListParentChange={parent => setParent(parent)}\n getCustomLocation={getCustomLocation}\n navigationStrategy={{}}\n embedded={true}\n emitAction={emitAction}\n noLeftPadding={true}\n domainTypes={domainTypes}\n rootNodes={rootNodes}\n businessUnit={businessUnit}\n sortable={false}\n scrollBehaviour=\"none\"\n locale={locale}\n />\n <StyledButtonsWrapper>\n <Button\n onClick={() => moveElements(parent.key, selection.ids)}\n look=\"raised\"\n ink=\"primary\"\n disabled={parent === null || _isEqual(parent, initialParent)}\n >\n <FormattedMessage id=\"client.actions.dms-move.button\" />\n </Button>\n </StyledButtonsWrapper>\n </StyledLoadMask>\n )\n}\n\nMoveAction.propTypes = {\n selection: selection.propType,\n onSuccess: PropTypes.func.isRequired,\n onError: PropTypes.func.isRequired,\n path: PropTypes.string.isRequired,\n initialize: PropTypes.func.isRequired,\n moveElements: PropTypes.func.isRequired,\n isWaiting: PropTypes.bool.isRequired,\n domainTypes: PropTypes.arrayOf(PropTypes.string),\n rootNodes: PropTypes.arrayOf(\n PropTypes.shape({\n entityName: PropTypes.string,\n key: PropTypes.string\n })\n ),\n businessUnit: PropTypes.string,\n locale: PropTypes.string,\n emitAction: PropTypes.func.isRequired\n}\n","import {injectIntl} from 'react-intl'\nimport {connect} from 'react-redux'\n\nimport {initialize, moveElements} from '../../../modules/move/actions'\nimport {withRouterTypeCompProvider} from '../../../utils/withRouterTypeCompProvider'\nimport {MoveAction} from './Move'\n\nconst mapActionCreators = {\n initialize,\n moveElements\n}\n\nconst mapStateToProps = state => ({\n isWaiting: state.docs.move.isWaiting,\n domainTypes: state.input.domainTypes,\n rootNodes: state.input.rootNodes,\n businessUnit: state.input.businessUnit,\n locale: state.intl.locale\n})\n\nexport default withRouterTypeCompProvider(connect(mapStateToProps, mapActionCreators)(injectIntl(MoveAction)))\n","const getDetailFormName = (context, entityName) =>\n context.detailFormNames && context.detailFormNames[entityName]\n ? context.detailFormNames[entityName]\n : `Dms${entityName}`\n\nexport default getDetailFormName\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import { Router, __RouterContext, matchPath } from 'react-router';\nexport { MemoryRouter, Prompt, Redirect, Route, Router, StaticRouter, Switch, generatePath, matchPath, useHistory, useLocation, useParams, useRouteMatch, withRouter } from 'react-router';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport React from 'react';\nimport { createBrowserHistory, createHashHistory, createLocation, createPath } from 'history';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport invariant from 'tiny-invariant';\n\n/**\n * The public API for a <Router> that uses HTML5 history.\n */\n\nvar BrowserRouter = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(BrowserRouter, _React$Component);\n\n function BrowserRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.history = createBrowserHistory(_this.props);\n return _this;\n }\n\n var _proto = BrowserRouter.prototype;\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return BrowserRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \"<BrowserRouter> ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\") : void 0;\n };\n}\n\n/**\n * The public API for a <Router> that uses window.location.hash.\n */\n\nvar HashRouter = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(HashRouter, _React$Component);\n\n function HashRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.history = createHashHistory(_this.props);\n return _this;\n }\n\n var _proto = HashRouter.prototype;\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return HashRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \"<HashRouter> ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { HashRouter as Router }`.\") : void 0;\n };\n}\n\nvar resolveToLocation = function resolveToLocation(to, currentLocation) {\n return typeof to === \"function\" ? to(currentLocation) : to;\n};\nvar normalizeToLocation = function normalizeToLocation(to, currentLocation) {\n return typeof to === \"string\" ? createLocation(to, null, null, currentLocation) : to;\n};\n\nvar forwardRefShim = function forwardRefShim(C) {\n return C;\n};\n\nvar forwardRef = React.forwardRef;\n\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nvar LinkAnchor = forwardRef(function (_ref, forwardedRef) {\n var innerRef = _ref.innerRef,\n navigate = _ref.navigate,\n _onClick = _ref.onClick,\n rest = _objectWithoutPropertiesLoose(_ref, [\"innerRef\", \"navigate\", \"onClick\"]);\n\n var target = rest.target;\n\n var props = _extends({}, rest, {\n onClick: function onClick(event) {\n try {\n if (_onClick) _onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (!event.defaultPrevented && // onClick prevented default\n event.button === 0 && ( // ignore everything but left clicks\n !target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n }); // React 15 compat\n\n\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n\n\n return /*#__PURE__*/React.createElement(\"a\", props);\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n/**\n * The public API for rendering a history-aware <a>.\n */\n\n\nvar Link = forwardRef(function (_ref2, forwardedRef) {\n var _ref2$component = _ref2.component,\n component = _ref2$component === void 0 ? LinkAnchor : _ref2$component,\n replace = _ref2.replace,\n to = _ref2.to,\n innerRef = _ref2.innerRef,\n rest = _objectWithoutPropertiesLoose(_ref2, [\"component\", \"replace\", \"to\", \"innerRef\"]);\n\n return /*#__PURE__*/React.createElement(__RouterContext.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <Link> outside a <Router>\") : invariant(false) : void 0;\n var history = context.history;\n var location = normalizeToLocation(resolveToLocation(to, context.location), context.location);\n var href = location ? history.createHref(location) : \"\";\n\n var props = _extends({}, rest, {\n href: href,\n navigate: function navigate() {\n var location = resolveToLocation(to, context.location);\n var isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n var method = replace || isDuplicateNavigation ? history.replace : history.push;\n method(location);\n }\n }); // React 15 compat\n\n\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return /*#__PURE__*/React.createElement(component, props);\n });\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n var toType = PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.func]);\n var refType = PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.shape({\n current: PropTypes.any\n })]);\n Link.displayName = \"Link\";\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nvar forwardRefShim$1 = function forwardRefShim(C) {\n return C;\n};\n\nvar forwardRef$1 = React.forwardRef;\n\nif (typeof forwardRef$1 === \"undefined\") {\n forwardRef$1 = forwardRefShim$1;\n}\n\nfunction joinClassnames() {\n for (var _len = arguments.length, classnames = new Array(_len), _key = 0; _key < _len; _key++) {\n classnames[_key] = arguments[_key];\n }\n\n return classnames.filter(function (i) {\n return i;\n }).join(\" \");\n}\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\n\n\nvar NavLink = forwardRef$1(function (_ref, forwardedRef) {\n var _ref$ariaCurrent = _ref[\"aria-current\"],\n ariaCurrent = _ref$ariaCurrent === void 0 ? \"page\" : _ref$ariaCurrent,\n _ref$activeClassName = _ref.activeClassName,\n activeClassName = _ref$activeClassName === void 0 ? \"active\" : _ref$activeClassName,\n activeStyle = _ref.activeStyle,\n classNameProp = _ref.className,\n exact = _ref.exact,\n isActiveProp = _ref.isActive,\n locationProp = _ref.location,\n sensitive = _ref.sensitive,\n strict = _ref.strict,\n styleProp = _ref.style,\n to = _ref.to,\n innerRef = _ref.innerRef,\n rest = _objectWithoutPropertiesLoose(_ref, [\"aria-current\", \"activeClassName\", \"activeStyle\", \"className\", \"exact\", \"isActive\", \"location\", \"sensitive\", \"strict\", \"style\", \"to\", \"innerRef\"]);\n\n return /*#__PURE__*/React.createElement(__RouterContext.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <NavLink> outside a <Router>\") : invariant(false) : void 0;\n var currentLocation = locationProp || context.location;\n var toLocation = normalizeToLocation(resolveToLocation(to, currentLocation), currentLocation);\n var path = toLocation.pathname; // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n\n var escapedPath = path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n var match = escapedPath ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact: exact,\n sensitive: sensitive,\n strict: strict\n }) : null;\n var isActive = !!(isActiveProp ? isActiveProp(match, currentLocation) : match);\n var className = typeof classNameProp === \"function\" ? classNameProp(isActive) : classNameProp;\n var style = typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = _extends({}, style, activeStyle);\n }\n\n var props = _extends({\n \"aria-current\": isActive && ariaCurrent || null,\n className: className,\n style: style,\n to: toLocation\n }, rest); // React 15 compat\n\n\n if (forwardRefShim$1 !== forwardRef$1) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return /*#__PURE__*/React.createElement(Link, props);\n });\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n NavLink.displayName = \"NavLink\";\n var ariaCurrentType = PropTypes.oneOf([\"page\", \"step\", \"location\", \"date\", \"time\", \"true\", \"false\"]);\n NavLink.propTypes = _extends({}, Link.propTypes, {\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n });\n}\n\nexport { BrowserRouter, HashRouter, Link, NavLink };\n//# sourceMappingURL=react-router-dom.js.map\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","import createGetFormInitialValues from './selectors/getFormInitialValues';\nimport plain from './structure/plain';\nexport default createGetFormInitialValues(plain);","export default function createGetFormInitialValues(_ref) {\n var getIn = _ref.getIn;\n return function (form, getFormState) {\n return function (state) {\n var nonNullGetFormState = getFormState || function (state) {\n return getIn(state, 'form');\n };\n\n return getIn(nonNullGetFormState(state), form + \".initial\");\n };\n };\n}","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}"],"sourceRoot":""}