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:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./packages/actions/delete/src/components/Delete/Delete.js","webpack:///./packages/actions/delete/src/components/Delete/DeleteContainer.js","webpack:///./packages/actions/delete/src/components/DeleteProgress/DeleteProgress.js","webpack:///./packages/actions/delete/src/components/DeleteProgress/DeleteProgressContainer.js","webpack:///./packages/actions/delete/src/components/DeleteProgress/StyledComponents.js","webpack:///./packages/actions/delete/src/components/DeleteProgress/index.js","webpack:///./packages/actions/delete/src/components/Dialog/Dialog.js","webpack:///./packages/actions/delete/src/components/Dialog/DialogContainer.js","webpack:///./packages/actions/delete/src/components/Dialog/StyledComponents.js","webpack:///./packages/actions/delete/src/components/InfoPart/InfoPart.js","webpack:///./packages/actions/delete/src/components/InfoPart/LinkPopOver.js","webpack:///./packages/core/app-extensions/src/selection/selectionTypes.js","webpack:///./packages/core/app-extensions/src/selection/proptype.js","webpack:///./packages/core/app-extensions/src/selection/selection.js","webpack:///./packages/core/app-extensions/src/selection/index.js","webpack:///./packages/actions/delete/src/components/Delete/index.js","webpack:///./packages/actions/delete/src/modules/delete/reducer.js","webpack:///./packages/actions/delete/src/utils/deleteRequestParser.js","webpack:///./packages/actions/delete/src/modules/delete/sagas.js","webpack:///./packages/actions/delete/src/modules/reducers.js","webpack:///./packages/actions/delete/src/main.js","webpack:///./packages/actions/delete/src/modules/delete/actions.js","webpack:///./packages/core/entity-list/src/util/selectionStyles.js","webpack:///./packages/core/tocco-ui/src/CodeEditor/requestHelper.js","webpack:///./packages/core/tocco-ui/src/CodeEditor/TqlConstants.js","webpack:///./packages/core/tocco-ui/src/CodeEditor/TqlHighlighter.js","webpack:///./packages/core/tocco-ui/src/CodeEditor/FtlHighlighter.js","webpack:///./packages/core/tocco-ui/src/CodeEditor/TqlAutoCompleter.js","webpack:///./packages/core/tocco-ui/src/CodeEditor/ToccoFtlMode.js","webpack:///./packages/core/tocco-ui/src/CodeEditor/TqlMode.js","webpack:///./packages/core/tocco-ui/src/CodeEditor/AceEditor.js","webpack:///./packages/core/tocco-ui/src/DatePicker/useDatePickr.js","webpack:///./packages/core/tocco-ui/src/EditableValue/editors/StyledDatePicker.js","webpack:///./packages/core/tocco-ui/src/EditableValue/editors/DatePicker.js","webpack:///./packages/core/tocco-ui/src/Link/RouterLink.js","webpack:///./packages/core/tocco-ui/src/LoadingSpinner/LoadingSpinner.js","webpack:///./packages/core/tocco-ui/src/SignalBox/StyledSignalBox.js","webpack:///./packages/core/tocco-ui/src/SignalBox/SignalBox.js","webpack:///./packages/core/tocco-ui/src/Table/propTypes.js","webpack:///./packages/core/tocco-ui/src/Table/scrollBehaviour.js","webpack:///./packages/core/tocco-util/src/queryString/queryString.js","webpack:///./packages/core/tocco-util/src/queryString/index.js","webpack:///./packages/core/tocco-util/src/validation/validation.js","webpack:///./packages/core/tocco-util/src/validation/index.js","webpack:///./packages/core/tocco-util/src/viewPersistor/viewPersistor.js","webpack:///./packages/core/tocco-util/src/viewPersistor/index.js","webpack:///./packages/widgets/entity-browser/src/components/ActionView/ActionView.js","webpack:///./packages/widgets/entity-browser/src/components/ActionView/ActionViewContainer.js","webpack:///./packages/widgets/entity-browser/src/components/EntityBrowser/EntityBrowser.js","webpack:///./packages/widgets/entity-browser/src/components/EntityBrowser/StyledEntityBrowser.js","webpack:///./packages/widgets/entity-browser/src/components/EntityBrowser/index.js","webpack:///./packages/widgets/entity-browser/src/components/EntityDetail/DetailLinkRelative.js","webpack:///./packages/widgets/entity-browser/src/components/EntityDetail/EntityDetail.js","webpack:///./packages/widgets/entity-browser/src/components/EntityDetail/EntityDetailContainer.js","webpack:///./packages/widgets/entity-browser/src/components/EntityDetail/StyledEntityDetail.js","webpack:///./packages/widgets/entity-browser/src/components/EntityDetail/index.js","webpack:///./packages/widgets/entity-browser/src/components/LazyAction/LazyAction.js","webpack:///./packages/widgets/entity-browser/src/components/ListView/ListView.js","webpack:///./packages/widgets/entity-browser/src/components/ListView/ListViewContainer.js","webpack:///./packages/widgets/entity-browser/src/components/ListView/index.js","webpack:///./node_modules/lodash/isEqualWith.js","webpack:///./node_modules/lodash/isNil.js","webpack:///./node_modules/lodash/toPath.js","webpack:///./node_modules/redux-form/es/actionTypes.js","webpack:///./node_modules/redux-form/es/deleteInWithCleanUp.js","webpack:///./node_modules/redux-form/es/createReducer.js","webpack:///./node_modules/redux-form/es/reducer.js","webpack:///./node_modules/redux-form/es/structure/plain/splice.js","webpack:///./node_modules/redux-form/es/structure/plain/getIn.js","webpack:///./node_modules/redux-form/es/structure/plain/setIn.js","webpack:///./node_modules/redux-form/es/structure/plain/deepEqual.js","webpack:///./node_modules/redux-form/es/structure/plain/deleteIn.js","webpack:///./node_modules/redux-form/es/structure/plain/index.js","webpack:///./node_modules/redux-form/es/structure/plain/keys.js"],"names":["_extends","module","exports","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","loadDialogInfo","dialogInfo","deletingInProgress","intl","useEffect","id","DeleteProgress","LoadMask","required","loadingText","formatMessage","mapActionCreators","connect","state","props","del","injectIntl","Delete","navigationStrategy","size","Typography","InfoPart","rootEntities","rootEntitiesDeletable","relatedEntities","relatedDeletable","maxCountLink","doDelete","input","StyledIconWrapper","styled","scale","rootEntitiesNotDeletable","relatedNotDeletable","hasUnreadableEntities","onCancel","keys","SignalBox","condition","Button","onClick","disabled","every","entity","ink","Dialog","StyledSectionWrapper","StyledButtonsWrapper","StyledButton","NonBreakingText","entries","map","rootEntityName","rootEntity","entityLabel","ListLink","entityName","entityKeys","reduce","prev","curr","relatedEntity","linkText","keysOtherBu","Count","slice","Content","LinkPopOver","children","content","values","count","placement","ID","QUERY","PropTypes","ids","propName","componentName","selection","type","selectionTypes","Error","query","isRequired","getEntities","limit","fetchEntities","entities","consoleLogger","e","getSingleKey","expectedEntityName","propType","ACTION_HANDLERS","actions","reducerUtil","initialState","entitiesToDelete","deleteStatus","transformRootEntity","applyKeys","includes","split","entityNameReal","keyReal","_get","isEntityDeletable","entityToDelete","affectedEntities","find","affectedEntity","getDialogInfo","response","currentBuId","acc","deletable","relatedAttr","businessUnitId","Array","from","Set","transformRelatedEntities","unreadableEntities","getEntitiesToDelete","deleteEntityPropType","getDeleteBodyFromSelection","getDeleteEndpoint","mainSagas","inputSelector","textResourceSelector","messages","entitiesToDeleteSelector","select","selectionUtil","rest","entityModel","customDeleteEndpoint","body","deleteEndpoint","all","method","deleteResponse","principal","currentBusinessUnit","put","acceptedStatusCodes","textResources","ok","deletedEntities","remoteEvents","payload","externalEvents","message","status","information","takeLatest","action","handler","sagas","deleteSagas","packageName","EXTERNAL_EVENTS","initApp","events","publicPath","store","appFactory","reducers","actionEmitter","emitAction","handleNotifications","notification","textResourceModules","DeleteApp","component","propTypes","LOAD_DIALOG_INFO","SET_DIALOG_INFO","DO_DELETE","SET_DELETING_IN_PROGRESS","ON_CANCEL","SET_ENTITIES_TO_DELETE","setDeleteDialogInfo","setDeletingInProgress","setEntitiesToDelete","selectionStyles","SINGLE","MULTI","MULTI_EXPLICIT","NONE","selectionStylePropType","sendRequest","endpoint","request","extractBody","json","operators","atoms","types","placeholders","functions","implicitModel","commonWhere","token","regex","caseInsensitive","push","customRules","start","next","model","rootwhere","comparison","value","exists","existswhere","countwhere","order","$rules","_mergeWith","objValue","srcValue","_isArray","concat","undefined","normalizeRules","ace","TextHighlightRules","ToccoFtlLangHighlightRules","match","qstring","defaultToken","ToccoFtlHighlightRules","tqlDirectives","startRules","join","unshift","embedRules","addRules","tqlEndRules","TqlHighlighter","mergingRules","HtmlHighlightRules","TokenIterator","getTokenType","substring","lastIndexOf","isCurrentTokenOfType","iterator","getCurrentToken","findLastPathStep","stepBackward","modelToken","trim","stepBackUntilToken","handleParentheses","parenCount","findLastModelScope","findCurrentPath","stepForward","backtrack","stepBack","steps","lastStep","isArray","forEach","step","findCurrentModelScope","defaultScore","determineAvailablePaths","createIterator","callback","baseModel","modelScope","determineModelScope","currentPath","relationSteps","sourceModel","resolvePart","buildResolveUrl","then","fields","relations","f","label","field","fieldName","meta","r","relation","relationName","targetEntity","resolvePath","paths","pathCompletions","path","caption","score","errors","buildModelLabel","modelName","loadAllAvailableModels","models","metaData","modelCompletions","getAvailableFunctions","toUpperCase","getCompletions","editor","session","pos","prefix","createIteratorAtCurrentPosition","row","column","currentToken","previousToken","placeholder","ToccoFtlMode","HighlightRules","completer","TqlAutoCompleter","Mode","TqlMode","implicitModelName","snippedIdField","StyledEditor","modeMappings","groovy","GroovyMode","html","HtmlMode","xml","XmlMode","properties","PropertiesMode","JsonMode","htmlmixed","freemarkermixed","ftl","tql","less","LessMode","drools","DroolsMode","text","TextMode","setEditorConfiguration","mode","theme","showGutter","editorOptions","_isString","Promise","resolve","_isObject","moduleEntity","loadImplicitModel","getMode","editorMode","getSession","setMode","setTheme","k","v","setOption","renderer","setShowGutter","resize","onChange","containerReference","useRef","editorReference","editorConfig","useMemo","aceEditor","current","setValue","on","getValue","destroy","_isNil","ref","localeMap","German","de","fr","French","it","Italian","handleOnChange","selectedDates","toISOString","useDatePickr","element","config","locale","flatpickrOptions","flatpickr","prevFlatpickrOptions","react","setDate","redraw","JSON","stringify","calendarLocale","l10ns","en","localize","set","optionsDiff","js","shouldAppend","fontFamily","options","wrap","altInput","enableTime","defaultDate","appendTo","static","flatpickrInstance","calendarContainer","style","initializeFlatPickr","StyledDatePickerInput","StyledInputCss","StyledDatePickerValue","hasValue","colorizeText","StyledDatePickerOuterWrapper","immutable","StyledDatePickerWrapper","StyledEditableWrapperCss","focusFlatpickrInput","wrapper","inputElement","querySelector","focus","withTheme","formatDate","useState","initialized","setInitialized","altInputClass","clickOpens","val","focusInput","classList","add","addEventListener","handleConfirmKey","setTimeout","contains","shiftKey","close","preventDefault","stopPropagation","tabIndex","onFocus","open","onKeyDown","className","Ball","icon","msg","onMouseDown","Link","declareFont","neutral","shadeColor","fontSize","spin","faCircleNotch","ALLOWED_CONDITIONS","design","COLORS","StyledSignalBox","getColor","StyledSignalListItem","title","React","child","defaultProps","keyPropType","rowDataPropType","__key","scrollBehaviourPropType","ScrollBehaviour","columnPropType","sorting","sortable","sortRank","resizable","width","HeaderRenderer","CellRenderer","rightAligned","INLINE","hasJsonStructure","str","parsed","parse","toString","err","fromQueryString","queryString","obj","queryStringUtil","_mapValues","toQueryString","stringifiedValues","getFirstElement","getErrorCompact","error","entityValidatorErrors","persistedViews","persistViewInfo","location","info","level","viewInfoSelector","clearPersistedViews","persistedView","appId","router","params","LazyAction","queryParams","search","actionProperties","ActionView","EntityBrowser","exact","render","StyledEntityBrowser","DetailLinkRelative","currentKey","entityKey","to","loadDetailParams","setFormTouched","clearDetailParams","detailParams","dispatchEmittedAction","formTouched","modifyFormDefinition","url","handleSubGridRowClick","gridName","history","navigateToCreate","replace","a","handleEntityCreated","substr","navigateToAction","definition","pathname","handleTouchedChange","touched","handleGoBack","parentUrl","when","showBackButton","StyledEntityDetail","look","entityId","formName","navigateToCreateRelative","navigateToActionRelative","onSubGridRowClick","onEntityCreated","onEntityDeleted","onTouchedChange","getApp","entityBrowser","detail","actionAppComponent","Action","EntityDetail","StyledEntityDetailBackButton","EntityDetailContainer","lazy","delete","ActionComponent","Suspense","fallback","RouterLink","storeId","onRowClick","showLink","searchFormPosition","viewPersistor","onStoreCreate","formBase","scrollBehaviour","searchFormType","searchFilters","preselectedSearchFields","simpleSearchFields","dispatch","ListView","ListViewContainer","baseIsEqual","other","customizer","result","arrayMap","copyArray","isSymbol","stringToPath","toKey","ARRAY_INSERT","ARRAY_MOVE","ARRAY_POP","ARRAY_PUSH","ARRAY_REMOVE","ARRAY_REMOVE_ALL","ARRAY_SHIFT","ARRAY_SPLICE","ARRAY_UNSHIFT","ARRAY_SWAP","AUTOFILL","BLUR","CHANGE","CLEAR_FIELDS","CLEAR_SUBMIT","CLEAR_SUBMIT_ERRORS","CLEAR_ASYNC_ERROR","DESTROY","FOCUS","INITIALIZE","REGISTER_FIELD","RESET","RESET_SECTION","SET_SUBMIT_FAILED","SET_SUBMIT_SUCCEEDED","START_ASYNC_VALIDATION","START_SUBMIT","STOP_ASYNC_VALIDATION","STOP_SUBMIT","SUBMIT","TOUCH","UNREGISTER_FIELD","UNTOUCH","UPDATE_SYNC_ERRORS","UPDATE_SYNC_WARNINGS","structure","shouldDeleteDefault","getIn","deepEqual","empty","deleteIn","setIn","shouldDelete","deleteInWithCleanUp","pathTokens","pop","dotIndex","parentPath","_parent","_ref","initialValuesPath","test","initialValueComparison","_behaviors","fromJS","some","splice","plainDeleteInWithCleanUp","plain","doSplice","index","removeNum","force","existing","doPlainSplice","rootKeys","arraySplice","nonValuesValue","behaviors","_ref2","_ref2$meta","_ref3","_ref3$meta","array","_ref4","_ref5","_ref6","_ref6$meta","_ref7","_ref8","_ref9","_ref9$meta","_ref10","_ref10$meta","indexA","indexB","valueA","valueB","_ref11","_ref12","_ref13","_ref13$meta","touch","_ref14","_ref14$meta","persistentSubmitErrors","fieldCurrentValue","_ref15","_ref16","_ref16$meta","keepTouched","anyTouched","_ref17","previouslyActive","_ref18","_ref18$meta","keepDirty","keepSubmitSucceeded","updateUnregisteredFields","keepValues","mapData","warning","syncWarnings","syncErrors","registeredFields","previousValues","previousInitialValues","newInitialValues","newValues","overwritePristineValue","name","previousInitialValue","previousValue","newInitialValue","_ref19","_ref19$payload","_ref20","sections","section","_ref21","_ref22","_error","fieldErrors","_ref23","_ref24","_ref25","_ref26","_ref26$payload","destroyOnUnmount","_ref27","_ref28","_ref28$payload","_ref29","_ref29$payload","decorate","plugin","_this","callPlugin","processed","previousState","nextState","form","receiveAllFormActions","reducer","isReduxFormAction","formState","byForm","behavior","_copy2","_copy3","_copy","copy","setInWithPath","pathIndex","_extends2","first","Number","isNaN","parseInt","isEmpty","_warning","deleteInWithPath","_len","_key","String","firstIndex","_result","_firstIndex","allowsArrayErrors","emptyList","b","items","equals","indexOf","orderChanged","toJS"],"mappings":"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","file":"chunk-code-editor.94e2130398d65f73a599.js","sourcesContent":["function _extends() {\n module.exports = _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}\n\nmodule.exports = _extends;","import PropTypes from 'prop-types'\nimport {useEffect} from 'react'\nimport {LoadMask} from 'tocco-ui'\n\nimport {deleteInfoPropType} from '../../utils/deleteRequestParser'\nimport DeleteProgress from '../DeleteProgress'\nimport Dialog from '../Dialog'\n\nconst Delete = ({loadDialogInfo, dialogInfo, deletingInProgress, intl}) => {\n useEffect(() => {\n loadDialogInfo()\n }, [loadDialogInfo])\n\n const msg = id => intl.formatMessage({id})\n\n if (deletingInProgress) {\n return <DeleteProgress />\n }\n\n return (\n <LoadMask required={[dialogInfo]} loadingText={msg('client.delete.loadingText')}>\n {dialogInfo && <Dialog />}\n </LoadMask>\n )\n}\n\nDelete.propTypes = {\n loadDialogInfo: PropTypes.func.isRequired,\n dialogInfo: deleteInfoPropType,\n deletingInProgress: PropTypes.bool,\n intl: PropTypes.object.isRequired\n}\n\nexport default Delete\n","import {injectIntl} from 'react-intl'\nimport {connect} from 'react-redux'\n\nimport {loadDialogInfo} from '../../modules/delete/actions'\nimport Delete from './Delete'\n\nconst mapActionCreators = {\n loadDialogInfo\n}\n\nconst mapStateToProps = (state, props) => ({\n dialogInfo: state.del.dialogInfo,\n deletingInProgress: state.del.deletingInProgress\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(Delete))\n","import PropTypes from 'prop-types'\nimport {FormattedMessage} from 'react-intl'\nimport {LoadingSpinner, Typography} from 'tocco-ui'\nimport {navigationStrategy} from 'tocco-util'\n\nimport {deleteInfoPropType} from '../../utils/deleteRequestParser'\nimport InfoPart from '../InfoPart'\nimport {StyledIconWrapper} from './StyledComponents'\n\nconst DeleteProgress = ({dialogInfo, navigationStrategy}) => {\n return (\n <>\n <StyledIconWrapper>\n <LoadingSpinner size=\"30px\" />\n </StyledIconWrapper>\n <Typography.P>\n <FormattedMessage id=\"client.delete.deleteInProgress\" />\n </Typography.P>\n <InfoPart\n key=\"infopart-deletable\"\n rootEntities={dialogInfo.rootEntitiesDeletable}\n relatedEntities={dialogInfo.relatedDeletable}\n maxCountLink={100}\n navigationStrategy={navigationStrategy}\n />\n </>\n )\n}\n\nDeleteProgress.propTypes = {\n dialogInfo: deleteInfoPropType.isRequired,\n intl: PropTypes.object.isRequired,\n navigationStrategy: navigationStrategy.propTypes\n}\n\nexport default DeleteProgress\n","import {injectIntl} from 'react-intl'\nimport {connect} from 'react-redux'\n\nimport {doDelete} from '../../modules/delete/actions'\nimport DeleteProgress from './DeleteProgress'\n\nconst mapActionCreators = {\n doDelete\n}\n\nconst mapStateToProps = (state, props) => ({\n dialogInfo: state.del.dialogInfo,\n navigationStrategy: state.input.navigationStrategy\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(DeleteProgress))\n","import styled from 'styled-components'\nimport {scale} from 'tocco-ui'\n\nexport const StyledIconWrapper = styled.div`\n margin-bottom: ${scale.space(0.2)};\n`\n","import DeleteProgress from './DeleteProgressContainer'\n\nexport default DeleteProgress\n","import PropTypes from 'prop-types'\nimport {FormattedMessage} from 'react-intl'\nimport {Button, Typography, SignalBox} from 'tocco-ui'\nimport {navigationStrategy} from 'tocco-util'\n\nimport {deleteInfoPropType} from '../../utils/deleteRequestParser'\nimport InfoPart from '../InfoPart'\nimport {StyledSectionWrapper, StyledButtonsWrapper} from './StyledComponents'\n\nconst Dialog = ({\n dialogInfo: {\n rootEntitiesDeletable,\n rootEntitiesNotDeletable,\n relatedDeletable,\n relatedNotDeletable,\n hasUnreadableEntities\n },\n doDelete,\n onCancel,\n navigationStrategy\n}) => (\n <>\n <Typography.P>\n <FormattedMessage id=\"client.delete.confirmText\" />\n </Typography.P>\n <InfoPart\n key=\"infopart-deletable\"\n rootEntities={rootEntitiesDeletable}\n relatedEntities={relatedDeletable}\n maxCountLink={100}\n navigationStrategy={navigationStrategy}\n />\n {Object.keys(rootEntitiesNotDeletable).length > 0 && (\n <StyledSectionWrapper>\n <Typography.P>\n <FormattedMessage id=\"client.delete.textNotDeletable\" />\n </Typography.P>\n <InfoPart\n key=\"infopart-notdeletable\"\n rootEntities={rootEntitiesNotDeletable}\n relatedEntities={relatedNotDeletable}\n maxCountLink={100}\n navigationStrategy={navigationStrategy}\n />\n </StyledSectionWrapper>\n )}\n {hasUnreadableEntities && (\n <StyledSectionWrapper>\n <SignalBox condition=\"warning\">\n <Typography.Span>\n <FormattedMessage id=\"client.delete.unreadableEntities\" />\n </Typography.Span>\n </SignalBox>\n </StyledSectionWrapper>\n )}\n <StyledSectionWrapper>\n <StyledButtonsWrapper>\n <Button\n onClick={doDelete}\n disabled={Object.keys(rootEntitiesDeletable).every(entity => rootEntitiesDeletable[entity].keys.length === 0)}\n >\n <FormattedMessage id=\"client.delete.deleteButton\" />\n </Button>\n <Button ink=\"primary\" onClick={onCancel}>\n <FormattedMessage id=\"client.delete.cancelButton\" />\n </Button>\n </StyledButtonsWrapper>\n </StyledSectionWrapper>\n </>\n)\n\nDialog.propTypes = {\n onCancel: PropTypes.func.isRequired,\n doDelete: PropTypes.func.isRequired,\n dialogInfo: deleteInfoPropType.isRequired,\n navigationStrategy: navigationStrategy.propTypes\n}\n\nexport default Dialog\n","import {injectIntl} from 'react-intl'\nimport {connect} from 'react-redux'\n\nimport {doDelete, onCancel} from '../../modules/delete/actions'\nimport Dialog from './Dialog'\n\nconst mapActionCreators = {\n doDelete,\n onCancel\n}\n\nconst mapStateToProps = (state, props) => ({\n dialogInfo: state.del.dialogInfo,\n navigationStrategy: state.input.navigationStrategy\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(Dialog))\n","import styled from 'styled-components'\nimport {StyledButton, scale} from 'tocco-ui'\n\nexport const StyledSectionWrapper = styled.div`\n padding-top: ${scale.space(0.6)};\n`\n\nexport const StyledButtonsWrapper = styled.div`\n display: flex;\n justify-content: flex-end;\n\n ${StyledButton} {\n margin-right: 0;\n }\n`\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport styled from 'styled-components'\nimport {Typography} from 'tocco-ui'\nimport {navigationStrategy} from 'tocco-util'\n\nimport {deleteEntityPropType} from '../../utils/deleteRequestParser'\nimport LinkPopOver from './LinkPopOver'\n\nconst NonBreakingText = styled.span`\n white-space: nowrap;\n`\n\nconst InfoPart = ({rootEntities, relatedEntities, maxCountLink, navigationStrategy}) => (\n <Typography.Span>\n <Typography.B>\n {Object.entries(rootEntities)\n .map(([rootEntityName, rootEntity]) => (\n <span key={`root-entity-${rootEntityName}`}>\n {rootEntity.entityLabel} (\n {rootEntity.keys.length > 0 && navigationStrategy.ListLink ? (\n <navigationStrategy.ListLink entityName={rootEntityName} entityKeys={rootEntity.keys}>\n {rootEntity.keys.length}\n </navigationStrategy.ListLink>\n ) : (\n <Typography.Span>{rootEntity.keys.length}</Typography.Span>\n )}\n )\n </span>\n ))\n .reduce((prev, curr) => [prev, ', ', curr])}\n </Typography.B>\n {Object.keys(relatedEntities).length > 0 && (\n <>\n <span> / </span>\n {Object.keys(relatedEntities)\n .map(entityName => {\n const relatedEntity = relatedEntities[entityName]\n const linkText = [...relatedEntity.keys, ...relatedEntity.keysOtherBu].length\n\n const Count =\n relatedEntity.keys.length > 0 && navigationStrategy.ListLink ? (\n <navigationStrategy.ListLink\n entityName={entityName}\n entityKeys={relatedEntity.keys.slice(0, maxCountLink)}\n >\n {linkText}\n </navigationStrategy.ListLink>\n ) : (\n <Typography.Span>{linkText}</Typography.Span>\n )\n\n const Content = (\n <LinkPopOver relatedEntity={relatedEntity} maxCountLink={maxCountLink}>\n {Count}\n </LinkPopOver>\n )\n\n return (\n <React.Fragment key={'entity-info-' + entityName}>\n <NonBreakingText>\n {relatedEntity.entityLabel} ({Content})\n </NonBreakingText>\n </React.Fragment>\n )\n })\n .reduce((prev, curr) => [prev, ', ', curr])}\n </>\n )}\n </Typography.Span>\n)\n\nInfoPart.propTypes = {\n rootEntities: PropTypes.objectOf(\n PropTypes.shape({\n entityLabel: PropTypes.string.isRequired,\n keys: PropTypes.arrayOf(PropTypes.string).isRequired\n })\n ).isRequired,\n relatedEntities: PropTypes.objectOf(deleteEntityPropType).isRequired,\n maxCountLink: PropTypes.number,\n navigationStrategy: navigationStrategy.propTypes\n}\n\nexport default InfoPart\n","import PropTypes from 'prop-types'\nimport {FormattedMessage} from 'react-intl'\nimport {Popover, Typography} from 'tocco-ui'\n\nimport {deleteEntityPropType} from '../../utils/deleteRequestParser'\n\nconst LinkPopOver = ({relatedEntity, children, maxCountLink}) => {\n if (relatedEntity.keys.length < maxCountLink && relatedEntity.keysOtherBu.length === 0) {\n return children\n }\n\n const content = (\n <>\n {relatedEntity.keys.length > maxCountLink && (\n <Typography.P>\n <FormattedMessage id=\"client.delete.tooManyRecords\" />\n </Typography.P>\n )}\n {relatedEntity.keysOtherBu.length > 0 && (\n <Typography.P>\n <FormattedMessage id=\"client.delete.recordInOtherBU\" values={{count: relatedEntity.keysOtherBu.length}} />\n </Typography.P>\n )}\n </>\n )\n\n return (\n <Popover content={content} placement=\"top\">\n {children}\n </Popover>\n )\n}\n\nLinkPopOver.propTypes = {\n relatedEntity: deleteEntityPropType.isRequired,\n maxCountLink: PropTypes.number.isRequired,\n children: PropTypes.element\n}\n\nexport default LinkPopOver\n","export default {\n ID: 'ID',\n QUERY: 'QUERY'\n}\n","import PropTypes from 'prop-types'\n\nimport selectionTypes from './selectionTypes'\n\nexport default PropTypes.shape({\n entityName: PropTypes.string.isRequired,\n ids: (props, propName, componentName) => {\n if (props.selection && props.selection.type === selectionTypes.ID && !props.selection[propName]) {\n return new Error(`Selection.ids prop not defined. Component: ${componentName}'.`)\n }\n },\n query: (props, propName, componentName) => {\n if (props.selection && props.selection.type === selectionTypes.QUERY && !props.selection[propName]) {\n return new Error(`Selection.query prop not defined. Component: ${componentName}'.`)\n }\n },\n type: PropTypes.oneOf(Object.keys(selectionTypes)).isRequired,\n count: PropTypes.number\n})\n","import {call} from 'redux-saga/effects'\nimport {consoleLogger} from 'tocco-util'\n\nimport selectionTypes from './selectionTypes'\n\nconst limit = 100000\n/**\n * Helper to get all entitiy keys of a selection.\n * @param {object} selection - selection object\n * @param {function} fetchEntities - rest helper function\n * @returns {object} Object containing entityName and an array of keys (limited if selection is query)\n */\nexport function* getEntities(selection, fetchEntities) {\n const {entityName} = selection\n if (selection.type === selectionTypes.QUERY) {\n const entities = yield call(fetchEntities, selection.entityName, {...selection.query, limit})\n\n if (entities.length > limit) {\n yield call(consoleLogger.logError, `Selected records exceed limit of ${limit}`)\n }\n\n return {\n entityName,\n keys: entities.map(e => e.key)\n }\n }\n\n return {\n entityName,\n keys: selection.ids\n }\n}\n\n/**\n * Helper to get single entity key of a seletion.\n * Throws error\n * - if wront entity is selected\n * - if `selection.type` is not `ID`\n * - if none or more than one entity is selected\n * @param {object} selection - selection object\n * @param {string} expectedEntityName - selected entityName\n * @returns {string} ID of single selected entity\n */\nexport const getSingleKey = (selection, expectedEntityName) => {\n if (selection.entityName !== expectedEntityName) {\n throw new Error(`Only selection of ${expectedEntityName} supported`)\n }\n if (selection.type !== 'ID') {\n throw new Error('Only ID selection type supported')\n }\n if (!selection.ids || selection.ids.length !== 1) {\n throw new Error(`Exactly one ${expectedEntityName} must be selected`)\n }\n return selection.ids[0]\n}\n","import propType from './proptype'\nimport {getEntities, getSingleKey} from './selection'\nimport selectionTypes from './selectionTypes'\nexport default {\n getEntities,\n getSingleKey,\n propType,\n selectionTypes\n}\n","import Delete from './DeleteContainer'\n\nexport default Delete\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport * as actions from './actions'\n\nconst ACTION_HANDLERS = {\n [actions.SET_DIALOG_INFO]: reducerUtil.singleTransferReducer('dialogInfo'),\n [actions.SET_ENTITIES_TO_DELETE]: reducerUtil.singleTransferReducer('entitiesToDelete'),\n [actions.SET_DELETING_IN_PROGRESS]: reducerUtil.singleTransferReducer('deletingInProgress')\n}\n\nconst initialState = {\n dialogInfo: null,\n entitiesToDelete: null,\n deletingInProgress: false\n}\n\nexport default function reducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type]\n return handler ? handler(state, action) : state\n}\n","import _get from 'lodash/get'\nimport PropTypes from 'prop-types'\n\nconst deleteStatus = {\n DELETABLE: 'DELETABLE',\n DENIED_BY_CASCADE: 'DENIED_BY_CASCADE',\n NO_DELETE_PERMISSION: 'NO_DELETE_PERMISSION'\n}\n\nconst transformRelatedEntities = (relatedEntities, entityToDelete, deletable, currentBuId) => ({\n ...entityToDelete.affectedEntities.reduce(\n (acc, affectedEntity) => ({\n ...acc,\n ...(deletable || affectedEntity.deleteStatus !== deleteStatus.DELETABLE\n ? {\n [affectedEntity.entityName]: {\n ..._get(acc, affectedEntity.entityName, {\n keys: [],\n keysOtherBu: [],\n entityLabel: affectedEntity.entityLabel\n }),\n ...(affectedEntity.businessUnitId === null || affectedEntity.businessUnitId === currentBuId\n ? {\n keys: Array.from(\n new Set([..._get(acc, [affectedEntity.entityName, 'keys'], []), affectedEntity.key])\n )\n }\n : {\n keysOtherBu: Array.from(\n new Set([..._get(acc, [affectedEntity.entityName, 'keysOtherBu'], []), affectedEntity.key])\n )\n })\n }\n }\n : {})\n }),\n {...relatedEntities}\n )\n})\n\nconst transformRootEntity = (rootEntities, entity, applyKeys = true) => {\n const {entityName, entityLabel, key} = entity.rootEntity\n if (key.includes('/')) {\n const [entityNameReal, keyReal] = key.split('/')\n return {\n ...rootEntities,\n [entityNameReal]: {\n entityLabel,\n keys: [..._get(rootEntities, [entityNameReal, 'keys'], []), ...(applyKeys ? [keyReal] : [])]\n }\n }\n } else {\n return {\n ...rootEntities,\n [entityName]: {\n entityLabel,\n keys: [..._get(rootEntities, [entityName, 'keys'], []), ...(applyKeys ? [key] : [])]\n }\n }\n }\n}\n\nconst isEntityDeletable = entityToDelete =>\n entityToDelete.rootEntity.deleteStatus === deleteStatus.DELETABLE &&\n !entityToDelete.affectedEntities.find(affectedEntity => affectedEntity.deleteStatus !== deleteStatus.DELETABLE)\n\nexport const getDialogInfo = (response, currentBuId) => {\n const {entitiesToDelete} = response\n\n return entitiesToDelete.reduce(\n (acc, entityToDelete) => {\n const deletable = isEntityDeletable(entityToDelete)\n const relatedAttr = deletable ? 'relatedDeletable' : 'relatedNotDeletable'\n return {\n ...acc,\n rootEntitiesDeletable: transformRootEntity(acc.rootEntitiesDeletable, entityToDelete, deletable),\n ...(!deletable && {\n rootEntitiesNotDeletable: transformRootEntity(acc.rootEntitiesNotDeletable, entityToDelete)\n }),\n [relatedAttr]: transformRelatedEntities(acc[relatedAttr], entityToDelete, deletable, currentBuId)\n }\n },\n {\n rootEntitiesDeletable: {},\n rootEntitiesNotDeletable: {},\n relatedDeletable: {},\n relatedNotDeletable: {},\n hasUnreadableEntities: !!entitiesToDelete.find(e => e.unreadableEntities)\n }\n )\n}\n\nexport const getEntitiesToDelete = ({entitiesToDelete}) => ({\n entityName: _get(entitiesToDelete, '[0].rootEntity.entityName'),\n keys: entitiesToDelete.reduce(\n (acc, entityToDelete) => [...acc, ...(isEntityDeletable(entityToDelete) ? [entityToDelete.rootEntity.key] : [])],\n []\n )\n})\n\nexport const deleteEntityPropType = PropTypes.shape({\n entityLabel: PropTypes.string,\n keys: PropTypes.arrayOf(PropTypes.string),\n keysOtherBu: PropTypes.arrayOf(PropTypes.string)\n})\n\nexport const deleteInfoPropType = PropTypes.shape({\n rootEntitiesDeletable: PropTypes.objectOf(deleteEntityPropType).isRequired,\n rootEntitiesNotDeletable: PropTypes.objectOf(deleteEntityPropType).isRequired,\n relatedDeletable: PropTypes.objectOf(deleteEntityPropType).isRequired,\n relatedNotDeletable: PropTypes.objectOf(deleteEntityPropType).isRequired,\n hasUnreadableEntities: PropTypes.bool\n})\n","import {takeLatest, all, call, put, select} from 'redux-saga/effects'\nimport {rest, externalEvents, selection as selectionUtil} from 'tocco-app-extensions'\n\nimport {getDialogInfo, getEntitiesToDelete} from '../../utils/deleteRequestParser'\nimport * as actions from './actions'\n\nexport const inputSelector = state => state.input\nexport const textResourceSelector = state => state.intl.messages\nexport const entitiesToDeleteSelector = state => state.del.entitiesToDelete\n\nexport function* getDeleteBodyFromSelection() {\n const {selection} = yield select(inputSelector)\n\n const entities = yield call(selectionUtil.getEntities, selection, rest.fetchEntities)\n\n return {\n entityModel: entities.entityName,\n keys: entities.keys\n }\n}\n\nexport function* getDeleteEndpoint() {\n const {customDeleteEndpoint} = yield select(inputSelector)\n return customDeleteEndpoint || 'client/delete'\n}\n\nexport function* loadDialogInfo() {\n const body = yield call(getDeleteBodyFromSelection)\n const deleteEndpoint = yield call(getDeleteEndpoint)\n\n const [deleteResponse, principal] = yield all([\n call(rest.requestSaga, `${deleteEndpoint}/dialog`, {method: 'POST', body}),\n call(rest.fetchPrincipal)\n ])\n\n const dialogInfo = yield call(getDialogInfo, deleteResponse.body, principal.currentBusinessUnit.id)\n yield put(actions.setDeleteDialogInfo(dialogInfo))\n\n const entitiesToDelete = yield call(getEntitiesToDelete, deleteResponse.body)\n yield put(actions.setEntitiesToDelete(entitiesToDelete))\n}\n\nexport function* doDelete() {\n const entitiesToDelete = yield select(entitiesToDeleteSelector)\n\n yield put(actions.setDeletingInProgress(true))\n const body = {\n entityModel: entitiesToDelete.entityName,\n keys: entitiesToDelete.keys\n }\n\n const deleteEndpoint = yield call(getDeleteEndpoint)\n\n const response = yield call(rest.requestSaga, deleteEndpoint, {\n method: 'POST',\n body,\n acceptedStatusCodes: [409]\n })\n\n const textResources = yield select(textResourceSelector)\n if (response.ok) {\n const {body} = response\n\n const entities = Object.keys(body.deletedEntities).reduce((acc, entityName) => {\n return [...acc, ...body.deletedEntities[entityName].map(key => ({entityName, key}))]\n }, [])\n\n const remoteEvents = [\n {\n type: 'entity-delete-event',\n payload: {\n entities\n }\n }\n ]\n\n yield put(\n externalEvents.fireExternalEvent('onSuccess', {\n message: textResources['client.delete.successfullyMessage'],\n remoteEvents\n })\n )\n } else {\n if (response.status === 409 && response.body.information) {\n yield put(externalEvents.fireExternalEvent('onError', {message: response.body.information}))\n } else {\n yield put(externalEvents.fireExternalEvent('onError', {message: textResources['client.delete.errorMessage']}))\n }\n }\n}\n\nexport function* onCancel() {\n yield put(externalEvents.fireExternalEvent('onCancel'))\n}\n\nexport default function* mainSagas() {\n yield all([\n takeLatest(actions.LOAD_DIALOG_INFO, loadDialogInfo),\n takeLatest(actions.DO_DELETE, doDelete),\n takeLatest(actions.ON_CANCEL, onCancel)\n ])\n}\n","import del, {sagas as deleteSagas} from './delete'\n\nexport default {\n del\n}\n\nexport const sagas = [deleteSagas]\n","import PropTypes from 'prop-types'\nimport {actionEmitter, appFactory, externalEvents, notification, selection} from 'tocco-app-extensions'\nimport {reducer as reducerUtil} from 'tocco-util'\n\nimport Delete from './components/Delete'\nimport reducers, {sagas} from './modules/reducers'\n\nconst packageName = 'delete'\n\nconst EXTERNAL_EVENTS = ['onSuccess', 'onCancel', 'onError', 'emitAction']\n\nconst initApp = (id, input, events, publicPath) => {\n const content = <Delete />\n\n const store = appFactory.createStore(reducers, sagas, input, packageName)\n actionEmitter.addToStore(store, events.emitAction)\n const handleNotifications = !events.emitAction\n notification.addToStore(store, handleNotifications)\n externalEvents.addToStore(store, events)\n\n return appFactory.createApp(packageName, content, store, {\n input,\n events,\n actions: [],\n publicPath,\n textResourceModules: ['component', 'common', packageName]\n })\n}\n\n;(() => {\n if (__DEV__ && __PACKAGE_NAME__ === packageName) {\n const input = require('./dev/input.json')\n\n if (!__NO_MOCK__) {\n const fetchMock = require('fetch-mock').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 } else {\n appFactory.registerAppInRegistry(packageName, initApp)\n }\n})()\n\nconst DeleteApp = props => {\n const {component} = appFactory.useApp({initApp, props, packageName, externalEvents: EXTERNAL_EVENTS})\n return component\n}\n\nDeleteApp.propTypes = {\n selection: selection.propType.isRequired,\n customDeleteEndpoint: PropTypes.string\n}\n\nexport default DeleteApp\n","export const LOAD_DIALOG_INFO = 'root/LOAD_DIALOG_INFO'\nexport const SET_DIALOG_INFO = 'delete/SET_DELETE_DIALOG_INFO'\nexport const DO_DELETE = 'delete/DO_DELETE'\nexport const SET_DELETING_IN_PROGRESS = 'delete/SET_DELETING_IN_PROGRESS'\nexport const ON_CANCEL = 'delete/ON_CANCEL'\nexport const SET_ENTITIES_TO_DELETE = 'delete/SET_ENTITIES_TO_DELETE'\n\nexport const loadDialogInfo = () => ({\n type: LOAD_DIALOG_INFO\n})\n\nexport const setDeleteDialogInfo = dialogInfo => ({\n type: SET_DIALOG_INFO,\n payload: {\n dialogInfo\n }\n})\n\nexport const doDelete = () => ({\n type: DO_DELETE\n})\n\nexport const setDeletingInProgress = deletingInProgress => ({\n type: SET_DELETING_IN_PROGRESS,\n payload: {\n deletingInProgress\n }\n})\n\nexport const onCancel = () => ({\n type: ON_CANCEL\n})\n\nexport const setEntitiesToDelete = entitiesToDelete => ({\n type: SET_ENTITIES_TO_DELETE,\n payload: {\n entitiesToDelete\n }\n})\n","import PropTypes from 'prop-types'\n\nconst selectionStyles = {\n SINGLE: 'single',\n MULTI: 'multi',\n MULTI_EXPLICIT: 'multi_explicit',\n NONE: 'none'\n}\n\nconst selectionStylePropType = PropTypes.oneOf(Object.keys(selectionStyles).map(key => selectionStyles[key]))\n\nexport {selectionStyles as default, selectionStylePropType}\n","import {request} from 'tocco-util'\n\nexport const sendRequest = endpoint => request.executeRequest(`rest/${endpoint}`)\n\nexport const extractBody = response => (response.status === 200 ? response.json() : null)\n","export const operators = ['==', '!=', '<=', '>=', '<', '>', '~=']\nexport const atoms = ['true', 'false', 'null']\nexport const types = [\n 'string',\n 'long',\n 'serial',\n 'bool',\n 'boolean',\n 'double',\n 'float',\n 'time',\n 'timestamp',\n 'char',\n 'varchar',\n 'date',\n 'datetime'\n]\nexport const placeholders = [\n 'now_date',\n 'yesterday_date',\n 'tomorrow_date',\n 'today_date',\n 'now_start',\n 'yesterday_start',\n 'tomorrow_start',\n 'today_start',\n 'now',\n 'yesterday',\n 'tomorrow',\n 'today',\n 'currentUsername',\n 'currentUser',\n 'currentBu'\n]\nexport const functions = [\n 'in',\n 'dateadd',\n 'datetimeadd',\n 'duedate',\n 'birthdayin',\n 'fulltext',\n 'likeall',\n 'distance',\n 'inboundingbox'\n]\n","import ace from 'ace-builds/src-min-noconflict/ace'\nimport 'ace-builds/src-min-noconflict/mode-text'\nimport _isArray from 'lodash/isArray'\nimport _mergeWith from 'lodash/mergeWith'\n\nimport {atoms, functions, operators, placeholders, types} from './TqlConstants'\n\nexport default implicitModel =>\n class TqlHighlightRules extends ace.require('ace/mode/text_highlight_rules').TextHighlightRules {\n constructor() {\n super()\n\n const commonWhere = [\n {\n token: 'keyword.operator.conjunction',\n regex: /(\\s*)(and|or|not)($|\\s+)/,\n caseInsensitive: true\n },\n {\n token: 'support.class.relation',\n regex: /rel/,\n push: 'model'\n },\n {\n token: 'keyword.exists',\n regex: /exists\\s*/,\n push: 'exists',\n caseInsensitive: true\n },\n {\n token: 'keyword.count',\n regex: /count\\s*/,\n push: 'count',\n caseInsensitive: true\n },\n {\n token: [\n 'keyword.function.nice_function',\n 'paren.lparen.function_arguments',\n 'text.function_arguments',\n 'paren.rparen',\n 'text.whitespace'\n ],\n regex: `((?:${functions.join('|')})\\\\s*)(\\\\()(.*?)(\\\\))($|\\\\s+)`,\n caseInsensitive: true\n },\n {\n token: 'keyword.other.chaining',\n regex: /\\./\n },\n {\n token: 'support.function.field',\n regex: /([a-z_]+)($|\\s+)/,\n push: 'comparison'\n }\n ]\n\n const customRules = {\n start: implicitModel\n ? [\n {\n token: 'keyword.where',\n regex: /\\s*/,\n next: 'rootwhere',\n caseInsensitive: true\n }\n ]\n : [\n {\n token: 'keyword.find',\n regex: /find($|\\s+)/,\n push: 'model',\n caseInsensitive: true\n },\n {\n token: 'keyword.where',\n regex: /where($|\\s+)/,\n next: 'rootwhere',\n caseInsensitive: true\n }\n ],\n model: [\n {\n token: 'support.class.model',\n regex: /[A-Z][a-z_0-9]*\\s*/,\n next: 'pop'\n }\n ],\n rootwhere: [\n {\n token: 'keyword.order_by',\n regex: /order by($|\\s+)/,\n next: 'order',\n caseInsensitive: true\n },\n ...commonWhere\n ],\n comparison: [\n {\n token: 'keyword.operator.comparison',\n regex: `(${operators.join('|')})\\\\s*`,\n next: 'value'\n }\n ],\n value: [\n {\n token: 'string',\n regex: /\".*?\"\\s*/,\n next: 'pop'\n },\n {\n token: 'constant.numeric',\n regex: /\\d+(.\\d+)?\\s*/,\n next: 'pop'\n },\n {\n token: 'constant.language.tocco_placeholder',\n regex: `\\\\:(${placeholders.join('|')})\\\\s*`,\n next: 'pop',\n caseInsensitive: true\n },\n {\n token: 'constant.language',\n regex: `(${atoms.join('|')})\\\\s*`,\n next: 'pop',\n caseInsensitive: true\n },\n {\n token: 'support.type',\n regex: `(${types.join('|')}):\\\\s*`,\n caseInsensitive: true\n }\n ],\n exists: [\n {\n token: 'paren.lparen',\n regex: /\\(\\s*/\n },\n {\n token: 'support.class.relation',\n regex: /rel/,\n push: 'model'\n },\n {\n token: 'keyword.other.chaining',\n regex: /\\./\n },\n {\n token: 'keyword.where',\n regex: /where($|\\s+)/,\n next: 'existswhere',\n caseInsensitive: true\n },\n {\n token: 'paren.rparen',\n regex: /\\)\\s*/,\n next: 'pop'\n }\n ],\n existswhere: [\n ...commonWhere,\n {\n token: 'paren.rparen',\n regex: /\\)\\s*/,\n next: 'pop'\n }\n ],\n count: [\n {\n token: 'paren.lparen',\n regex: /\\(\\s*/\n },\n {\n token: 'support.class.relation',\n regex: /rel/,\n push: 'model'\n },\n {\n token: 'keyword.other.chaining',\n regex: /\\./\n },\n {\n token: 'keyword.where',\n regex: /where($|\\s+)/,\n next: 'countwhere',\n caseInsensitive: true\n },\n {\n token: 'paren.rparen',\n regex: /\\)\\s*/,\n next: 'comparison'\n }\n ],\n countwhere: [\n ...commonWhere,\n {\n token: 'paren.rparen',\n regex: /\\)\\s*/,\n next: 'comparison'\n }\n ],\n order: [\n {\n token: 'support.class.relation',\n regex: /rel/,\n push: 'model'\n },\n {\n token: 'keyword.other.chaining',\n regex: /\\./\n },\n {\n token: ['support.function.field', 'keyword.direction', 'separator'],\n regex: /([a-z_]+\\s*)(asc|desc)?($|,|\\s+)/\n }\n ]\n }\n this.$rules = _mergeWith(this.$rules, customRules, (objValue, srcValue) =>\n _isArray(objValue) ? objValue.concat(srcValue) : undefined\n )\n\n this.normalizeRules()\n }\n }\n","import ace from 'ace-builds/src-min-noconflict/ace'\nimport 'ace-builds/src-min-noconflict/mode-text'\nimport 'ace-builds/src-min-noconflict/mode-html'\nimport _isArray from 'lodash/isArray'\nimport _mergeWith from 'lodash/mergeWith'\n\nimport TqlHighlighter from './TqlHighlighter'\n\n/** this is a copy from https://github.com/ajaxorg/ace/blob/master/lib/ace/mode/ftl_highlight_rules.js but with angled\n * brackets replaced with square brackets as described in\n * https://freemarker.apache.org/docs/dgui_misc_alternativesyntax.html\n *\n * TODO add auto-complete? only for tocco functions? TOCDEV-4496\n * TODO implement possibility to switch between the two and open PR with ACE repository? TOCDEV-4495\n **/\nexport class ToccoFtlLangHighlightRules extends ace.require('ace/mode/text_highlight_rules').TextHighlightRules {\n constructor() {\n super()\n\n const stringBuiltIns =\n '\\\\?|substring|cap_first|uncap_first|capitalize|chop_linebreak|date|time|datetime|' +\n 'ends_with|html|groups|index_of|j_string|js_string|json_string|last_index_of|length|lower_case|' +\n 'left_pad|right_pad|contains|matches|number|replace|rtf|url|split|starts_with|string|trim|' +\n 'upper_case|word_list|xhtml|xml'\n const numberBuiltIns = 'c|round|floor|ceiling'\n const dateBuiltIns = 'iso_[a-z_]+'\n const seqBuiltIns = 'first|last|seq_contains|seq_index_of|seq_last_index_of|reverse|size|sort|sort_by|chunk'\n const hashBuiltIns = 'keys|values'\n const xmlBuiltIns = 'children|parent|root|ancestors|node_name|node_type|node_namespace'\n const expertBuiltIns =\n 'byte|double|float|int|long|short|number_to_date|number_to_time|number_to_datetime|' +\n 'eval|has_content|interpret|is_[a-z_]+|namespacenew'\n const allBuiltIns =\n stringBuiltIns + numberBuiltIns + dateBuiltIns + seqBuiltIns + hashBuiltIns + xmlBuiltIns + expertBuiltIns\n\n const deprecatedBuiltIns = 'default|exists|if_exists|web_safe'\n\n const variables =\n 'data_model|error|globals|lang|locale|locals|main|namespace|node|current_node|' +\n 'now|output_encoding|template_name|url_escaping_charset|vars|version'\n\n const operators = 'gt|gte|lt|lte|as|in|using'\n\n const reserved = 'true|false'\n\n const attributes =\n 'encoding|parse|locale|number_format|date_format|time_format|datetime_format|time_zone|' +\n 'url_escaping_charset|classic_compatible|strip_whitespace|strip_text|strict_syntax|ns_prefixes|' +\n 'attributes'\n\n this.$rules = {\n start: [\n {\n token: 'constant.character.entity',\n regex: /&[^;]+;/\n },\n {\n token: 'support.function',\n regex: '\\\\?(' + allBuiltIns + ')'\n },\n {\n token: 'support.function.deprecated',\n regex: '\\\\?(' + deprecatedBuiltIns + ')'\n },\n {\n token: 'language.variable',\n regex: '\\\\.(?:' + variables + ')'\n },\n {\n token: 'constant.language',\n regex: '\\\\b(' + reserved + ')\\\\b'\n },\n {\n token: 'keyword.operator',\n regex: '\\\\b(?:' + operators + ')\\\\b'\n },\n {\n token: 'entity.other.attribute-name',\n regex: attributes\n },\n {\n token: 'string', //\n regex: /['\"]/,\n next: 'qstring'\n },\n {\n // Deal with variable names that contains number\n // e.g. <#if var42 == 42 >\n token: function (value) {\n if (value.match('^[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?$')) {\n return 'constant.numeric'\n } else {\n return 'variable'\n }\n },\n regex: /[\\w.+-]+/\n },\n {\n token: 'keyword.operator',\n regex:\n '!|\\\\.|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|&&|\\\\|\\\\||\\\\?\\\\:' +\n '|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^='\n },\n {\n token: 'paren.lparen',\n regex: '[[({]'\n },\n {\n token: 'paren.rparen',\n regex: '[\\\\])}]'\n },\n {\n token: 'text',\n regex: '\\\\s+'\n }\n ],\n\n qstring: [\n {\n token: 'constant.character.escape',\n regex: '\\\\\\\\[nrtvef\\\\\\\\\"$]'\n },\n {\n token: 'string',\n regex: /['\"]/,\n next: 'start'\n },\n {\n defaultToken: 'string'\n }\n ]\n }\n }\n}\n\nexport default class ToccoFtlHighlightRules extends ace.require('ace/mode/html_highlight_rules').HtmlHighlightRules {\n constructor() {\n super()\n\n const directives =\n 'assign|attempt|break|case|compress|default|elseif|else|escape|fallback|function|flush|' +\n 'ftl|global|if|import|include|list|local|lt|macro|nested|noescape|noparse|nt|recover|recurse|return|rt|' +\n 'setting|stop|switch|t|visit'\n\n const tqlDirectives = ['query', 'queryCount']\n\n const startRules = [\n {\n token: 'keyword.function',\n regex: `\\\\[@(${tqlDirectives.join('|')}).*?]`,\n push: 'tql-start'\n },\n {\n token: 'comment',\n regex: '\\\\[#--',\n next: 'ftl-dcomment'\n },\n {\n token: 'string.interpolated',\n regex: '\\\\${',\n push: 'ftl-start'\n },\n {\n token: 'keyword.function',\n regex: '\\\\[/?#(' + directives + ')',\n push: 'ftl-start'\n },\n {\n token: 'keyword.other',\n regex: '\\\\[/?@[a-zA-Z\\\\.]+',\n push: 'ftl-start'\n }\n ]\n\n const endRules = [\n {\n token: 'keyword',\n regex: '/?\\\\]',\n next: 'pop'\n },\n {\n token: 'string.interpolated',\n regex: '}',\n next: 'pop'\n }\n ]\n\n for (const key in this.$rules) {\n this.$rules[key].unshift.apply(this.$rules[key], startRules)\n }\n\n this.embedRules(ToccoFtlLangHighlightRules, 'ftl-', endRules, ['start'])\n\n this.addRules({\n 'ftl-dcomment': [\n {\n token: 'comment',\n regex: '--\\\\]',\n next: 'pop'\n },\n {\n defaultToken: 'comment'\n }\n ]\n })\n\n const tqlEndRules = [\n {\n token: 'keyword.function',\n regex: `\\\\[/@(${tqlDirectives.join('|')})]`,\n next: 'pop'\n }\n ]\n\n this.embedRules(TqlHighlighter(), 'tql-', tqlEndRules, ['start'])\n\n const mergingRules = {\n 'tql-rootwhere': [\n {\n token: 'keyword.function',\n regex: `\\\\[/@(${tqlDirectives.join('|')})]`,\n next: 'pop'\n }\n ],\n 'tql-order': [\n {\n token: 'keyword.function',\n regex: `\\\\[/@(${tqlDirectives.join('|')})]`,\n next: 'pop'\n }\n ]\n }\n this.$rules = _mergeWith(this.$rules, mergingRules, (objValue, srcValue) =>\n _isArray(objValue) ? objValue.concat(srcValue) : undefined\n )\n\n this.normalizeRules()\n }\n}\n","import ace from 'ace-builds/src-min-noconflict/ace'\n\nimport {extractBody, sendRequest} from './requestHelper'\nimport {functions, placeholders, types} from './TqlConstants'\n\nconst TokenIterator = ace.require('ace/token_iterator').TokenIterator\nconst getTokenType = token => (token ? token.type.substring(token.type.lastIndexOf('.') + 1) : null)\n\nconst isCurrentTokenOfType = (iterator, type) => getTokenType(iterator.getCurrentToken()) === type\n\nconst findLastPathStep = iterator => {\n if (isCurrentTokenOfType(iterator, 'model')) {\n iterator.stepBackward()\n }\n if (isCurrentTokenOfType(iterator, 'field') || isCurrentTokenOfType(iterator, 'relation')) {\n iterator.stepBackward()\n }\n if (isCurrentTokenOfType(iterator, 'chaining')) {\n iterator.stepBackward()\n } else {\n return null\n }\n\n if (isCurrentTokenOfType(iterator, 'model')) {\n const modelToken = iterator.getCurrentToken()\n iterator.stepBackward()\n iterator.stepBackward()\n return modelToken ? modelToken.value.trim() : null\n } else {\n return null\n }\n}\n\nconst stepBackUntilToken = (iterator, type) => {\n while (!isCurrentTokenOfType(iterator, type)) {\n if (!iterator.stepBackward()) {\n return false\n }\n }\n return true\n}\n\nconst handleParentheses = (iterator, parenCount) => {\n if (isCurrentTokenOfType(iterator, 'rparen')) {\n return 1\n } else if (parenCount > 0 && isCurrentTokenOfType(iterator, 'lparen')) {\n iterator.stepBackward()\n return -1\n } else {\n return 0\n }\n}\n\nconst findLastModelScope = iterator => {\n let parenCount = 0\n while (iterator.getCurrentToken()) {\n if (parenCount === 0 && isCurrentTokenOfType(iterator, 'where')) {\n const modelToken = iterator.stepBackward()\n return modelToken ? [modelToken.value.trim(), ...findCurrentPath(iterator)] : []\n }\n if (isCurrentTokenOfType(iterator, 'order_by')) {\n if (stepBackUntilToken(iterator, 'find')) {\n const modelToken = iterator.stepForward()\n return modelToken ? modelToken.value.trim() : []\n } else {\n return []\n }\n }\n parenCount += handleParentheses(iterator, parenCount)\n if (!iterator.stepBackward()) {\n return null\n }\n }\n return null\n}\n\nconst backtrack = (iterator, stepBack) => {\n const steps = []\n let lastStep = stepBack(iterator)\n while (lastStep) {\n if (Array.isArray(lastStep)) {\n lastStep.forEach(step => steps.unshift(step))\n } else {\n steps.unshift(lastStep)\n }\n lastStep = stepBack(iterator)\n }\n return steps\n}\n\nexport const findCurrentPath = iterator => backtrack(iterator, findLastPathStep)\nexport const findCurrentModelScope = iterator => backtrack(iterator, findLastModelScope)\n\n/**\n * built-in language completions use 1000000, which also seems to just be some magic number\n * keyword and local completions seem to be somewhere around 100 based on some experiments with ordering\n **/\nconst defaultScore = 1000\n\nconst loadModels = () =>\n sendRequest('entities')\n .then(extractBody)\n .then(body => (body ? body.entities : {}))\n .then(entities => (entities ? Object.values(entities) : []))\n .then(models => models.map(({metaData}) => metaData))\n\nconst buildFieldLabel = field => (field.label ? `${field.fieldName} (${field.label})` : field.fieldName)\n\nconst buildRelationLabel = relation =>\n relation.label ? `${relation.relationName} (${relation.label})` : relation.relationName\n\nconst buildResolveUrl = (sourceModel, relationSteps) => {\n const resolvePart = relationSteps.length > 0 ? '/resolve?path=' + relationSteps.join('.') : ''\n return `entities/${sourceModel}/model${resolvePart}`\n}\n\nconst resolvePath = ([sourceModel, ...relationSteps]) =>\n sendRequest(buildResolveUrl(sourceModel, relationSteps))\n .then(extractBody)\n .then(body => {\n if (!body) {\n return []\n }\n const fields = body.fields || []\n const relations = body.relations || []\n return [\n ...fields.map(f => ({\n label: buildFieldLabel(f),\n value: f.fieldName,\n meta: f.type\n })),\n ...relations.map(r => ({\n label: buildRelationLabel(r),\n value: r.relationName,\n meta: r.targetEntity\n }))\n ]\n })\n\nconst determineModelScope = (createIterator, implicitModel) => {\n if (implicitModel) {\n const [...modelScope] = findCurrentModelScope(createIterator())\n return {baseModel: implicitModel, modelScope}\n } else {\n const [baseModel, ...modelScope] = findCurrentModelScope(createIterator())\n return {baseModel, modelScope}\n }\n}\n\nconst determineAvailablePaths = (createIterator, callback, implicitModel) => {\n const {baseModel, modelScope} = determineModelScope(createIterator, implicitModel)\n if (!baseModel) {\n return\n }\n const currentPath = findCurrentPath(createIterator())\n const relationSteps = [...modelScope, ...currentPath].map(model => `rel${model}`)\n const fullPath = [baseModel, ...relationSteps]\n resolvePath(fullPath)\n .then(paths => {\n const pathCompletions = paths.map(path => ({\n caption: path.label,\n value: path.value,\n meta: path.meta,\n score: defaultScore\n }))\n callback(null, pathCompletions)\n })\n .catch(errors => callback(errors))\n}\n\nconst buildModelLabel = (modelName, label) => (label ? `${modelName} (${label})` : modelName)\n\nconst loadAllAvailableModels = callback =>\n loadModels()\n .then(models => {\n const modelCompletions = models.map(({modelName, label}) => ({\n caption: buildModelLabel(modelName, label),\n value: modelName,\n score: defaultScore\n }))\n callback(null, modelCompletions)\n })\n .catch(errors => callback(errors))\n\nconst getAvailableFunctions = () =>\n functions\n .map(f => f.toUpperCase())\n .map(f => ({\n caption: f,\n value: `${f}()`,\n meta: 'function',\n score: defaultScore - 30\n }))\n\nconst getAvailableTypes = () =>\n types.map(type => ({\n caption: type,\n value: `${type}:`,\n meta: 'type',\n score: defaultScore - 20\n }))\n\nconst getAvailablePlaceholders = () =>\n placeholders.map(placeholder => ({\n caption: placeholder,\n value: `:${placeholder}`,\n meta: 'placeholder',\n score: defaultScore - 10\n }))\n\nexport default implicitModel => ({\n getCompletions: (editor, session, pos, prefix, callback) => {\n const createIteratorAtCurrentPosition = () => new TokenIterator(session, pos.row, pos.column)\n\n const iterator = createIteratorAtCurrentPosition()\n const currentToken = iterator.getCurrentToken()\n const previousToken = iterator.stepBackward() ? iterator.getCurrentToken() : null\n switch (getTokenType(currentToken)) {\n case 'chaining':\n case 'relation':\n case 'separator':\n case 'order_by':\n case 'count':\n case 'exists':\n case 'field':\n case 'function_arguments':\n determineAvailablePaths(createIteratorAtCurrentPosition, callback, implicitModel)\n break\n case 'where':\n case 'conjunction':\n determineAvailablePaths(createIteratorAtCurrentPosition, callback, implicitModel)\n callback(null, getAvailableFunctions())\n break\n case 'nice_function':\n callback(null, getAvailableFunctions())\n break\n case 'find':\n loadAllAvailableModels(callback)\n break\n case 'type':\n case 'tocco_placeholder':\n case 'comparison':\n callback(null, getAvailableTypes())\n callback(null, getAvailablePlaceholders())\n break\n case 'model':\n determineAvailablePaths(createIteratorAtCurrentPosition, callback, implicitModel)\n if (previousToken && getTokenType(previousToken) !== 'relation') {\n loadAllAvailableModels(callback)\n }\n break\n case null:\n // this happens when nothing has been entered, which is a valid start with an implicit model, treat like where\n if (implicitModel) {\n determineAvailablePaths(createIteratorAtCurrentPosition, callback, implicitModel)\n }\n callback(null, getAvailableFunctions())\n break\n }\n }\n})\n","import ace from 'ace-builds/src-min-noconflict/ace'\nimport 'ace-builds/src-min-noconflict/mode-ftl'\n\nimport ToccoFtlHighlightRules from './FtlHighlighter'\nimport TqlAutoCompleter from './TqlAutoCompleter'\n\nexport default class ToccoFtlMode extends ace.require('ace/mode/ftl').Mode {\n constructor() {\n super()\n this.HighlightRules = ToccoFtlHighlightRules\n this.completer = TqlAutoCompleter()\n }\n}\n","import ace from 'ace-builds/src-min-noconflict/ace'\nimport 'ace-builds/src-min-noconflict/mode-text'\n\nimport TqlAutoCompleter from './TqlAutoCompleter'\nimport TqlHighlighter from './TqlHighlighter'\n\nexport default class TqlMode extends ace.require('ace/mode/text').Mode {\n constructor({implicitModelName}) {\n super()\n this.HighlightRules = TqlHighlighter(implicitModelName)\n this.completer = TqlAutoCompleter(implicitModelName)\n this.snippedIdField = null // TODO implement? TOCDEV-4499\n }\n}\n","import ace from 'ace-builds/src-min-noconflict/ace'\nimport 'ace-builds/webpack-resolver'\nimport {Mode as DroolsMode} from 'ace-builds/src-min-noconflict/mode-drools'\nimport {Mode as GroovyMode} from 'ace-builds/src-min-noconflict/mode-groovy'\nimport {Mode as HtmlMode} from 'ace-builds/src-min-noconflict/mode-html'\nimport {Mode as JsonMode} from 'ace-builds/src-min-noconflict/mode-json'\nimport {Mode as LessMode} from 'ace-builds/src-min-noconflict/mode-less'\nimport {Mode as PropertiesMode} from 'ace-builds/src-min-noconflict/mode-properties'\nimport {Mode as TextMode} from 'ace-builds/src-min-noconflict/mode-text'\nimport {Mode as XmlMode} from 'ace-builds/src-min-noconflict/mode-xml'\nimport _get from 'lodash/get'\nimport _isNil from 'lodash/isNil'\nimport _isObject from 'lodash/isObject'\nimport _isString from 'lodash/isString'\nimport {useEffect, useMemo, useRef} from 'react'\nimport styled from 'styled-components'\n\nimport AceEditorPropTypes from './AceEditorPropTypes'\nimport 'ace-builds/src-min-noconflict/snippets/ftl'\nimport 'ace-builds/src-min-noconflict/snippets/groovy'\nimport 'ace-builds/src-min-noconflict/snippets/html'\nimport 'ace-builds/src-min-noconflict/snippets/less'\nimport 'ace-builds/src-min-noconflict/snippets/xml'\nimport 'ace-builds/src-min-noconflict/snippets/properties'\nimport 'ace-builds/src-min-noconflict/snippets/json'\nimport 'ace-builds/src-min-noconflict/snippets/drools'\nimport 'ace-builds/src-min-noconflict/theme-textmate'\nimport 'ace-builds/src-min-noconflict/ext-language_tools'\nimport {extractBody, sendRequest} from './requestHelper'\nimport ToccoFtlMode from './ToccoFtlMode'\nimport TqlMode from './TqlMode'\n\nconst StyledEditor = styled.div`\n width: 100%;\n z-index: 0; /* gutter lays over menu otherwise */\n`\n\nconst modeMappings = {\n groovy: () => new GroovyMode(),\n html: () => new HtmlMode(),\n xml: () => new XmlMode(),\n properties: () => new PropertiesMode(),\n json: () => new JsonMode(),\n htmlmixed: () => new ToccoFtlMode(),\n freemarkermixed: () => new ToccoFtlMode(),\n ftl: () => new ToccoFtlMode(),\n tql: props => new TqlMode(props),\n less: () => new LessMode(),\n drools: () => new DroolsMode(),\n text: () => new TextMode()\n}\n\nconst getMode = (mode, props) => _get(modeMappings, mode, mode)(props)\n\nconst loadImplicitModel = implicitModel => {\n if (_isString(implicitModel)) {\n return Promise.resolve(implicitModel)\n } else if (_isObject(implicitModel)) {\n return sendRequest(`entities/2.0/${implicitModel.entityModel}/${implicitModel.key}?_paths=${implicitModel.field}`)\n .then(extractBody)\n .then(moduleEntity => _get(moduleEntity, ['paths', 'entity_name', 'value'], null))\n } else {\n return Promise.resolve(null)\n }\n}\n\nconst setEditorConfiguration = (editor, {mode, theme, showGutter, editorOptions = {}, implicitModel}) => {\n loadImplicitModel(implicitModel)\n .then(implicitModelName => getMode(mode, {implicitModelName}))\n .then(editorMode => editor.getSession().setMode(editorMode))\n editor.setTheme(`ace/theme/${theme}`)\n Object.entries(editorOptions).forEach(([k, v]) => {\n editor.setOption(k, v)\n })\n editor.renderer.setShowGutter(showGutter)\n editor.resize()\n}\n\nconst AceEditor = props => {\n const {mode, theme = 'textmate', value, onChange, showGutter = true, editorOptions = {}, implicitModel} = props\n const containerReference = useRef(null)\n const editorReference = useRef(null)\n\n const editorConfig = useMemo(\n () => ({mode, theme, showGutter, editorOptions, implicitModel}),\n [mode, theme, showGutter, editorOptions, implicitModel]\n )\n\n // only on mount\n useEffect(() => {\n const aceEditor = ace.edit(containerReference.current)\n aceEditor.getSession().setValue(value || '')\n aceEditor.on('change', () => onChange(aceEditor.getValue()))\n setEditorConfiguration(aceEditor, editorConfig)\n editorReference.current = aceEditor\n\n return () => aceEditor.destroy()\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n if (editorReference.current) {\n setEditorConfiguration(editorReference.current, editorConfig)\n }\n }, [editorConfig])\n useEffect(() => {\n /* ace handles its state internally, always resetting the value confuses it.\n * this way we only set the value when it is different from the current state, i.e. when it is overwritten through\n * code. feel free to rewrite this with better ideas.\n */\n if (editorReference.current && !_isNil(value) && value !== editorReference.current.getValue()) {\n editorReference.current.getSession().setValue(value)\n }\n }, [value])\n\n return <StyledEditor ref={containerReference} />\n}\n\nAceEditor.propTypes = AceEditorPropTypes\n\nexport default AceEditor\n","import '!style-loader!css-loader!flatpickr/dist/themes/light.css'\nimport flatpickr from 'flatpickr'\nimport {German} from 'flatpickr/dist/l10n/de.js'\nimport {French} from 'flatpickr/dist/l10n/fr.js'\nimport {Italian} from 'flatpickr/dist/l10n/it.js'\nimport {useEffect, useRef} from 'react'\nimport {react, js} from 'tocco-util'\n\nconst localeMap = {\n 'de-CH': German,\n de: German,\n fr: French,\n it: Italian\n}\n\nconst handleOnChange = onChange => selectedDates => {\n if (selectedDates && selectedDates.length > 0) {\n onChange(selectedDates[0].toISOString())\n } else {\n onChange(null)\n }\n}\n\nconst initializeFlatPickr = (element, {shouldAppend, onChange, value, fontFamily, locale, flatpickrOptions}) => {\n const calendarLocale = localeMap[locale]\n\n const options = {\n wrap: true,\n onChange: handleOnChange(onChange),\n altInput: false,\n enableTime: false,\n defaultDate: value,\n\n ...(shouldAppend ? {appendTo: element.current, static: true} : {}),\n ...(calendarLocale ? {locale: calendarLocale} : {}),\n ...flatpickrOptions\n }\n\n const flatpickrInstance = flatpickr(element.current, options)\n\n if (fontFamily) {\n flatpickrInstance.calendarContainer.style.fontFamily = fontFamily\n }\n\n return flatpickrInstance\n}\n\nexport const useDatePickr = (element, config) => {\n const {value, locale, flatpickrOptions} = config\n const flatpickr = useRef(null)\n\n const prevFlatpickrOptions = react.usePrevious(flatpickrOptions)\n\n const init = () => {\n flatpickr.current = initializeFlatPickr(element, config)\n return flatpickr.current\n }\n\n useEffect(() => {\n return () => {\n if (flatpickr.current) {\n flatpickr.current.destroy()\n }\n }\n }, []) // only on unmount\n\n // only trigger useEffect when value array changed (deep comparison workaround)\n useEffect(() => {\n if (flatpickr.current) {\n flatpickr.current.setDate(value, false)\n flatpickr.current.redraw()\n }\n }, [JSON.stringify(value)]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n const calendarLocale = localeMap[locale] || flatpickr.current?.l10ns?.en // fallback to english\n if (flatpickr.current && calendarLocale) {\n flatpickr.current.localize(calendarLocale)\n flatpickr.current.set('locale', calendarLocale)\n flatpickr.current.redraw()\n }\n }, [locale])\n\n // prevFlatpickrOptions can be ignored\n useEffect(() => {\n if (flatpickr.current) {\n const optionsDiff = js.difference(flatpickrOptions, prevFlatpickrOptions)\n if (Object.keys(optionsDiff).length > 0) {\n Object.entries(optionsDiff).forEach(([key, value]) => {\n flatpickr.current.set(key, value)\n })\n flatpickr.current.redraw()\n }\n }\n }, [flatpickrOptions]) // eslint-disable-line react-hooks/exhaustive-deps\n\n return init\n}\n","import styled from 'styled-components'\n\nimport {colorizeText} from '../../utilStyles'\nimport {StyledEditableWrapperCss, StyledInputCss} from '../StyledEditableValue'\n\nexport const StyledDatePickerInput = styled.input`\n &&& {\n ${StyledInputCss}\n margin: 0;\n }\n`\n\nexport const StyledDatePickerValue = styled.div`\n && {\n ${StyledInputCss}\n display: flex;\n align-items: center;\n ${props =>\n !props.hasValue &&\n `\n justify-content: center;\n color: ${colorizeText.shade1(props)};\n `}\n }\n`\n\nexport const StyledDatePickerOuterWrapper = styled.div`\n outline: ${({immutable}) => (immutable ? 0 : 'initial')};\n`\n\nexport const StyledDatePickerWrapper = styled.div`\n && {\n ${StyledEditableWrapperCss}\n\n input {\n display: ${({immutable}) => (immutable ? 'none' : 'block')};\n\n &:last-of-type {\n display: ${({immutable}) => (immutable ? 'block' : 'none')};\n }\n }\n }\n`\n","import PropTypes from 'prop-types'\nimport {useRef, useState} from 'react'\nimport {injectIntl} from 'react-intl'\nimport {withTheme} from 'styled-components'\n\nimport Ball from '../../Ball'\nimport {useDatePickr} from '../../DatePicker/useDatePickr'\nimport {theme} from '../../utilStyles'\nimport {\n StyledDatePickerInput,\n StyledDatePickerWrapper,\n StyledDatePickerOuterWrapper,\n StyledDatePickerValue\n} from './StyledDatePicker'\n\nconst focusFlatpickrInput = wrapper => {\n // flatpickr add two input in the DOM. One for the actual value (hidden) and one for the altInput\n const inputElement = wrapper.querySelector('input.flatpickr-input:not([type=\"hidden\"])')\n if (inputElement) {\n inputElement.focus()\n }\n}\n\nconst DatePicker = props => {\n const {immutable, id, options, value, onChange, formatDate, intl, placeholder} = props\n const [initialized, setInitialized] = useState(false)\n const flatpickr = useRef(null)\n const wrapper = useRef(null)\n const locale = intl.locale\n const msg = id => intl.formatMessage({id})\n\n const fontFamily = theme.fontFamily('regular')(props)\n\n const handleOnChange = val => {\n if (val) {\n onChange([val])\n }\n }\n\n const flatpickrOptions = {\n altInput: true,\n altInputClass: '',\n clickOpens: !immutable,\n ...(options ? options.flatpickrOptions : {})\n }\n const initializeFlatPickr = useDatePickr(wrapper, {\n value,\n onChange: handleOnChange,\n fontFamily,\n locale,\n flatpickrOptions\n })\n\n const init = () => {\n flatpickr.current = initializeFlatPickr()\n\n flatpickr.current.calendarContainer.classList.add('tocco-ui-theme')\n flatpickr.current.calendarContainer.addEventListener('keydown', handleConfirmKey)\n setInitialized(true)\n }\n\n const altInput = flatpickr.current?.altInput?.value || ''\n\n const focusInput = () => {\n if (!initialized) {\n init()\n\n /**\n * Workaround:\n * To be sure that the initialized state has been updated\n * before we change the focus we delay this to the next tick.\n */\n setTimeout(() => {\n focusFlatpickrInput(wrapper.current)\n })\n } else {\n focusFlatpickrInput(wrapper.current)\n }\n }\n\n const handleConfirmKey = e => {\n if ((!e.target.classList.contains('flatpickr-hour') && e.key === 'Tab' && !e.shiftKey) || e.key === 'Enter') {\n setTimeout(() => {\n flatpickr.current.close()\n })\n }\n if (e.key === 'Enter') {\n e.preventDefault()\n e.stopPropagation()\n }\n }\n\n const hasValue = value && value.length > 0 && value.every(v => v)\n\n return (\n <>\n <StyledDatePickerOuterWrapper\n immutable={immutable}\n id={id}\n tabIndex=\"-1\"\n onFocus={() => {\n focusInput()\n\n if (flatpickr.current) {\n flatpickr.current.open()\n }\n }}\n onKeyDown={handleConfirmKey}\n >\n <StyledDatePickerWrapper data-wrap immutable={immutable} ref={wrapper}>\n <StyledDatePickerInput\n {...(immutable ? {disabled: 'disabled'} : {})}\n type=\"hidden\"\n data-input\n immutable={immutable}\n className=\"flatpickr-input\"\n placeholder={placeholder}\n />\n {!initialized && (\n <StyledDatePickerValue tabIndex={0} hasValue={hasValue}>\n {hasValue ? formatDate(value[0]) : placeholder}\n </StyledDatePickerValue>\n )}\n <StyledDatePickerInput disabled immutable={immutable} value={altInput} placeholder={placeholder} />\n {!immutable && hasValue && (\n <Ball\n icon=\"times\"\n tabIndex={-1}\n aria-label={msg('client.component.dateAbstract.clearDateLabel')}\n onMouseDown={e => {\n e.preventDefault()\n onChange(null)\n }}\n />\n )}\n </StyledDatePickerWrapper>\n </StyledDatePickerOuterWrapper>\n </>\n )\n}\n\nDatePicker.propTypes = {\n id: PropTypes.string,\n intl: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n value: PropTypes.arrayOf(PropTypes.string),\n options: PropTypes.shape({\n flatpickrOptions: PropTypes.object\n }),\n placeholder: PropTypes.string,\n parseDate: PropTypes.func,\n formatDate: PropTypes.func,\n immutable: PropTypes.bool,\n initialized: PropTypes.func,\n events: PropTypes.shape({\n onFocus: PropTypes.func\n })\n}\n\nexport default withTheme(injectIntl(DatePicker))\n","import _get from 'lodash/get'\nimport {Link} from 'react-router-dom'\nimport styled from 'styled-components'\n\nimport {declareFont, shadeColor, theme} from '../utilStyles'\n\n/**\n * A styled version of https://reactrouter.com/web/api/Link\n */\nexport default styled(Link)`\n ${declareFont()}\n text-decoration: none;\n color: ${theme.color('secondary')};\n\n * {\n color: ${theme.color('text')};\n text-decoration: none;\n }\n\n &:hover,\n &:hover *,\n &:focus,\n &:focus * {\n color: ${theme.color('secondaryLight')};\n text-decoration: ${({neutral}) => (neutral ? 'none' : 'underline')};\n }\n\n &:active,\n &:active * {\n color: ${({neutral, theme}) =>\n neutral ? shadeColor(_get(theme, 'colors.text'), 2) : shadeColor(_get(theme, 'colors.secondary'), 2)};\n text-decoration: ${({neutral}) => (neutral ? 'none' : 'underline')};\n }\n`\n","import {faCircleNotch} from '@fortawesome/pro-solid-svg-icons'\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome'\nimport PropTypes from 'prop-types'\n\n/**\n * Spinner that indicates a loading process\n */\nconst LoadingSpinner = ({size, style}) => (\n <FontAwesomeIcon {...style} style={{fontSize: size}} spin icon={faCircleNotch} />\n)\n\nLoadingSpinner.propTypes = {\n /**\n * Specify width and height.\n */\n size: PropTypes.string,\n /**\n * css properties object. color can be used to set the color of the spinner\n */\n style: PropTypes.object\n}\n\nexport default LoadingSpinner\n","import _get from 'lodash/get'\nimport styled from 'styled-components'\n\nimport {StyledSignalListItem} from '../SignalList'\nimport {design, scale, shadeColor, theme} from '../utilStyles'\n\nconst ALLOWED_CONDITIONS = [\n design.condition.BASE,\n design.condition.DANGER,\n design.condition.SUCCESS,\n design.condition.WARNING\n]\n\nconst COLORS = {\n [design.condition.DANGER]: theme.color('signal.danger.paper'),\n [design.condition.SUCCESS]: theme.color('signal.success.paper'),\n [design.condition.WARNING]: theme.color('signal.warning.paper'),\n [design.condition.BASE]: props => shadeColor(_get(props.theme, 'colors.paper'), 1)\n}\n\nconst getColor = props => {\n const color = COLORS[props.condition]\n return color || shadeColor(_get(props.theme, 'colors.paper'), 1)\n}\n\nconst StyledSignalBox = styled.div`\n && {\n background-color: ${props => getColor(props)};\n padding: ${scale.space(-1)};\n margin-bottom: ${scale.space(-1)};\n border-radius: ${theme.radii('radii.regular')};\n\n &:last-child {\n margin-bottom: 0;\n }\n\n ${StyledSignalListItem} {\n color: inherit;\n }\n }\n`\n\nStyledSignalBox.propTypes = {\n condition: design.oneOfPropTypeAndCompletelyMapped(ALLOWED_CONDITIONS, COLORS)\n}\n\nexport {ALLOWED_CONDITIONS, StyledSignalBox as default}\n","import PropTypes from 'prop-types'\nimport React from 'react'\n\nimport Typography from '../Typography'\nimport {design} from '../utilStyles'\nimport StyledSignalBox, {ALLOWED_CONDITIONS} from './StyledSignalBox'\n\n/**\n * Emphasize important information by context. Group them by utilizing several instances of <SignalBox/>.\n */\nconst SignalBox = props => (\n <StyledSignalBox condition={props.condition}>\n {props.title && <Typography.H5>{props.title}</Typography.H5>}\n {React.Children.map(props.children, child => React.cloneElement(child))}\n {props.meta && <Typography.Small>{props.meta}</Typography.Small>}\n </StyledSignalBox>\n)\n\nSignalBox.defaultProps = {\n condition: design.condition.BASE\n}\n\nSignalBox.propTypes = {\n /**\n * Prefer <SignalList.List/> and <SignalList.Item/> to list items over any other typographic component.\n */\n children: PropTypes.node,\n /**\n * Background is colorized according condition. Default value is 'base'.\n * Possible values: base|danger|success|warning\n */\n condition: PropTypes.oneOf(ALLOWED_CONDITIONS),\n /**\n * Add loosely related but still important information as meta text (e.g. date, id, type).\n */\n meta: PropTypes.string,\n /**\n * Summarize information from whole signal box concise.\n */\n title: PropTypes.string\n}\n\nexport default SignalBox\n","import PropTypes from 'prop-types'\n\nimport {ScrollBehaviour} from './scrollBehaviour'\n\nexport const keyPropType = PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n\nexport const rowDataPropType = PropTypes.shape({\n __key: keyPropType\n})\n\nexport const dataPropType = PropTypes.arrayOf(rowDataPropType)\n\nexport const scrollBehaviourPropType = PropTypes.oneOf(Object.keys(ScrollBehaviour).map(key => ScrollBehaviour[key]))\n\nexport const columnPropType = PropTypes.shape({\n id: PropTypes.string.isRequired,\n label: PropTypes.string,\n sorting: PropTypes.shape({\n sortable: PropTypes.bool,\n sortRank: PropTypes.number,\n order: PropTypes.oneOf(['asc', 'desc'])\n }),\n resizable: PropTypes.bool,\n width: PropTypes.number,\n HeaderRenderer: PropTypes.elementType,\n CellRenderer: PropTypes.elementType,\n rightAligned: PropTypes.bool\n})\n","export const ScrollBehaviour = {\n INLINE: 'inline',\n NONE: 'none'\n}\n","import _isObject from 'lodash/isObject'\nimport _mapValues from 'lodash/mapValues'\nimport queryStringUtil from 'query-string'\n\n/**\n * Build query string from params map object.\n *\n * Note: object values will be JSON-stringified\n *\n * @param obj The params map.\n * @returns the params map as query string.\n */\nexport const toQueryString = obj => {\n const stringifiedValues = _mapValues(obj, value => (_isObject(value) ? JSON.stringify(value) : value))\n return queryStringUtil.stringify(stringifiedValues)\n}\n\n/**\n * Get params map object from query string.\n *\n * Note: param values that represent a JSON string will be parsed and returned as object.\n *\n * @param queryString The query string to parse.\n * @returns the query string as parsed object.\n */\nexport const fromQueryString = queryString => {\n const obj = queryStringUtil.parse(queryString)\n return _mapValues(obj, value => (hasJsonStructure(value) ? JSON.parse(value) : value))\n}\n\nexport const hasJsonStructure = str => {\n if (typeof str !== 'string') {\n return false\n }\n try {\n const parsed = JSON.parse(str)\n const type = Object.prototype.toString.call(parsed)\n return type === '[object Object]'\n } catch (err) {\n return false\n }\n}\n","import {fromQueryString, toQueryString} from './queryString'\nexport default {\n fromQueryString,\n toQueryString\n}\n","/**\n * extracts the first error message of a validation failed response object\n */\nexport const getErrorCompact = errors => {\n for (const error of errors) {\n if (error.entityValidatorErrors) {\n return getFirstElement(error.entityValidatorErrors)[0]\n }\n\n if (error.paths) {\n return getFirstElement(getFirstElement(error.paths))[0]\n }\n }\n\n return null\n}\n\nconst getFirstElement = obj => (Object.keys(obj).length >= 1 ? obj[Object.keys(obj)[0]] : undefined)\n","import {getErrorCompact} from './validation'\n\nexport default {getErrorCompact}\n","import _get from 'lodash/get'\n\nlet persistedViews = {}\n\nexport const viewInfoSelector = location => _get(persistedViews, [location, 'info'], {})\n\nexport const persistViewInfo = (location, info, level = 0) => {\n persistedViews = {\n ...persistedViews,\n [location]: {\n level,\n info: {..._get(persistedViews, [location, 'info'], {}), ...info}\n }\n }\n}\n\nexport const clearPersistedViews = (level = 0) => {\n persistedViews = {\n ...Object.keys(persistedViews).reduce((acc, key) => {\n const persistedView = persistedViews[key]\n return {...acc, ...(persistedView.level < level && {[key]: persistedView})}\n }, {})\n }\n}\n","import {viewInfoSelector, persistViewInfo, clearPersistedViews} from './viewPersistor'\n\nexport default {persistViewInfo, viewInfoSelector, clearPersistedViews}\n","import PropTypes from 'prop-types'\n\nimport LazyAction from '../LazyAction'\n\nconst ActionView = props => {\n const {appId} = props.router.match.params\n\n return <LazyAction appId={appId} {...props} />\n}\n\nActionView.propTypes = {\n router: PropTypes.shape({\n match: PropTypes.object.isRequired,\n location: PropTypes.object.isRequired\n }).isRequired\n}\n\nexport default ActionView\n","import _get from 'lodash/get'\nimport {injectIntl} from 'react-intl'\nimport {connect} from 'react-redux'\nimport {queryString as queryStringUtil} from 'tocco-util'\n\nimport ActionView from './ActionView'\n\nconst mapStateToProps = (state, props) => {\n const queryParams = queryStringUtil.fromQueryString(location.search)\n const selection = _get(props.router.location, 'state.selection', queryParams.actionProperties)\n const actionProperties = _get(props.router.location, 'state.definition.properties', queryParams.actionProperties)\n\n return {\n selection,\n actionProperties,\n locale: state.intl.locale\n }\n}\n\nexport default connect(mapStateToProps, null)(injectIntl(ActionView))\n","import {Route, Switch} from 'react-router-dom'\nimport {notification} from 'tocco-app-extensions'\n\nimport ActionView from '../ActionView'\nimport EntityDetail from '../EntityDetail'\nimport ListView from '../ListView'\nimport StyledEntityBrowser from './StyledEntityBrowser'\n\nconst EntityBrowser = () => (\n <StyledEntityBrowser>\n <notification.Notifications />\n <Switch>\n <Route path=\"/\" exact render={router => <ListView router={router} />} />\n <Route path=\"/detail/:entityId*\" render={router => <EntityDetail router={router} />} />\n <Route path=\"/action/:appId*\" render={router => <ActionView router={router} />} />\n </Switch>\n </StyledEntityBrowser>\n)\n\nEntityBrowser.propTypes = {}\n\nexport default EntityBrowser\n","import styled from 'styled-components'\nimport {theme, scale} from 'tocco-ui'\n\nconst StyledEntityBrowser = styled.div`\n && {\n background-color: ${theme.color('paper')};\n padding: ${scale.space(0)};\n display: flex;\n flex-direction: column;\n flex: 1;\n }\n`\n\nexport default StyledEntityBrowser\n","import EntityBrowser from './EntityBrowser'\n\nexport default EntityBrowser\n","import PropTypes from 'prop-types'\nimport {RouterLink} from 'tocco-ui'\n\nexport const DetailLinkRelative = ({currentKey, entityKey, children, relation}) => (\n <RouterLink to={`${currentKey}/${relation}/${entityKey}`}>{children}</RouterLink>\n)\n\nDetailLinkRelative.propTypes = {\n currentKey: PropTypes.string.isRequired,\n entityKey: PropTypes.string.isRequired,\n children: PropTypes.element.isRequired,\n relation: PropTypes.string.isRequired\n}\n","import PropTypes from 'prop-types'\nimport {useEffect} from 'react'\nimport {Prompt} from 'react-router-dom'\nimport EntityDetailApp from 'tocco-entity-detail/src/main'\nimport {Button} from 'tocco-ui'\nimport {queryString as queryStringUtil} from 'tocco-util'\n\nimport {DetailLinkRelative} from './DetailLinkRelative'\nimport {StyledEntityDetailBackButton} from './StyledEntityDetail'\n\nconst EntityDetail = ({\n loadDetailParams,\n router,\n setFormTouched,\n clearDetailParams,\n detailParams,\n appId,\n intl,\n dispatchEmittedAction,\n formTouched,\n locale,\n modifyFormDefinition\n}) => {\n useEffect(() => {\n loadDetailParams(router.match.url)\n setFormTouched(false)\n\n return () => {\n clearDetailParams()\n }\n }, [clearDetailParams, loadDetailParams, router.match.url, setFormTouched])\n\n const handleSubGridRowClick = ({id, gridName, relationName}) => {\n router.history.push(`${router.match.url}/${relationName}/${id}`)\n }\n\n const navigateToCreate = relationName => {\n if (relationName) {\n router.history.push(`${router.match.url}/${relationName}/`)\n } else {\n const url = router.match.url.replace(/\\/$/, '')\n const a = url.substring(0, url.lastIndexOf('/') + 1)\n router.history.push(a)\n }\n }\n\n const handleEntityCreated = ({id}) => {\n setFormTouched(false)\n let url = router.match.url\n url = url.substr(-1) !== '/' ? (url += '/') : url\n router.history.push(`${url}${id}`)\n }\n\n const navigateToAction = (definition, selection) => {\n const search = queryStringUtil.toQueryString({\n selection,\n actionProperties: definition.properties\n })\n router.history.push({\n pathname: '/action/' + definition.appId,\n state: {definition, selection},\n search\n })\n }\n\n const handleTouchedChange = ({touched}) => {\n setFormTouched(touched)\n }\n\n const handleGoBack = () => {\n router.history.push(detailParams.parentUrl)\n }\n\n const getApp = ({entityName, entityId, formName, mode}, locale) => (\n <EntityDetailApp\n id={`${appId}_detail_${formName}_${entityId}`}\n entityName={entityName}\n entityId={entityId}\n formName={formName}\n mode={mode}\n navigationStrategy={{\n DetailLinkRelative: props => <DetailLinkRelative {...props} currentKey={entityId} />,\n navigateToCreateRelative: navigateToCreate,\n navigateToActionRelative: navigateToAction\n }}\n onSubGridRowClick={handleSubGridRowClick}\n onEntityCreated={handleEntityCreated}\n onEntityDeleted={handleGoBack}\n onTouchedChange={handleTouchedChange}\n emitAction={action => {\n dispatchEmittedAction(action)\n }}\n theme={{}}\n locale={locale}\n modifyFormDefinition={modifyFormDefinition}\n />\n )\n\n const msg = id => intl.formatMessage({id})\n\n return (\n <>\n <Prompt when={formTouched} message={msg('client.entity-browser.detail.confirmTouchedFormLeave')} />\n {detailParams && (\n <>\n {detailParams.showBackButton && (\n <StyledEntityDetailBackButton>\n <Button\n data-cy=\"entity-detail_back-button\"\n icon=\"chevron-left\"\n label={msg('client.entity-browser.back')}\n look=\"raised\"\n onClick={handleGoBack}\n />\n </StyledEntityDetailBackButton>\n )}\n {getApp(detailParams, locale)}\n </>\n )}\n </>\n )\n}\n\nEntityDetail.propTypes = {\n intl: PropTypes.object.isRequired,\n locale: PropTypes.string.isRequired,\n dispatchEmittedAction: PropTypes.func.isRequired,\n loadDetailParams: PropTypes.func.isRequired,\n clearDetailParams: PropTypes.func.isRequired,\n setFormTouched: PropTypes.func.isRequired,\n router: PropTypes.object.isRequired,\n detailParams: PropTypes.object,\n formTouched: PropTypes.bool,\n showSubGridsCreateButton: PropTypes.bool,\n appId: PropTypes.string,\n modifyFormDefinition: PropTypes.func\n}\n\nexport default EntityDetail\n","import {injectIntl} from 'react-intl'\nimport {connect} from 'react-redux'\nimport {actionEmitter} from 'tocco-app-extensions'\n\nimport {loadDetailParams, clearDetailParams, setFormTouched} from '../../modules/detail/actions'\nimport Action from '../LazyAction'\nimport EntityDetail from './EntityDetail'\n\nconst mapActionCreators = {\n loadDetailParams,\n clearDetailParams,\n setFormTouched,\n dispatchEmittedAction: actionEmitter.dispatchEmittedAction\n}\n\nconst mapStateToProps = (state, props) => {\n return {\n appId: state.entityBrowser.appId,\n detailParams: state.detail.detailParams,\n formTouched: state.detail.formTouched,\n locale: state.intl.locale,\n actionAppComponent: Action,\n modifyFormDefinition: state.input.modifyFormDefinition\n }\n}\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(EntityDetail))\n","import styled from 'styled-components'\nimport {scale} from 'tocco-ui'\n\nexport const StyledEntityDetailBackButton = styled.div`\n margin-bottom: ${scale.space(-1)};\n`\n","import EntityDetailContainer from './EntityDetailContainer'\n\nexport default EntityDetailContainer\n","import PropTypes from 'prop-types'\nimport {lazy, Suspense} from 'react'\nimport {connect} from 'react-redux'\nimport {actionEmitter} from 'tocco-app-extensions'\nimport {LoadMask} from 'tocco-ui'\nimport {consoleLogger} from 'tocco-util'\n\nconst actions = {\n 'input-edit': lazy(() => import(/* webpackChunkName: \"actions\" */ './actions/InputEdit')),\n delete: lazy(() => import(/* webpackChunkName: \"actions\" */ './actions/Delete'))\n}\n\nconst renderLoader = () => <LoadMask />\n\nconst LazyAction = props => {\n const {appId} = props\n const LazyAction = actions[appId]\n\n if (!LazyAction) {\n consoleLogger.logError(`no action found with id: ${appId}`)\n return null\n }\n\n const ActionComponent = connect(null, {\n emitAction: action => actionEmitter.dispatchEmittedAction(action)\n })(LazyAction)\n\n return (\n <Suspense fallback={renderLoader()}>\n <ActionComponent {...props} />\n </Suspense>\n )\n}\n\nLazyAction.propTypes = {\n appId: PropTypes.string.isRequired\n}\n\nexport default LazyAction\n","import PropTypes from 'prop-types'\nimport EntityListApp from 'tocco-entity-list/src/main'\nimport {RouterLink, scrollBehaviourPropType} from 'tocco-ui'\nimport {queryString as queryStringUtil, viewPersistor} from 'tocco-util'\n\nimport Action from '../LazyAction'\n\nconst DetailLinkRelative = ({entityKey, children, relation}) => (\n <RouterLink to={`${relation ? relation + '/' : ''}detail/${entityKey}`}>{children}</RouterLink>\n)\n\nDetailLinkRelative.propTypes = {\n entityKey: PropTypes.string.isRequired,\n children: PropTypes.element.isRequired,\n relation: PropTypes.string\n}\n\nconst ListView = ({storeId, router, modifyFormDefinition, ...props}) => {\n const navigateToCreate = ({history, match, relationName}) => {\n if (relationName) {\n history.push(`${match}/${relationName}/`)\n } else {\n history.push('/detail')\n }\n }\n\n const navigateToAction = (history, definition, selection) => {\n const search = queryStringUtil.toQueryString({\n selection,\n actionProperties: definition.properties\n })\n history.push({\n pathname: '/action/' + definition.appId,\n state: {definition, selection},\n search\n })\n }\n\n const handleRowClick = e => {\n router.history.push(`/detail/${e.id}`)\n }\n\n return (\n <EntityListApp\n {...props}\n onRowClick={handleRowClick}\n showLink\n navigationStrategy={{\n DetailLinkRelative,\n navigateToActionRelative: (definition, selection) => navigateToAction(router.history, definition, selection),\n navigateToCreateRelative: relationName =>\n navigateToCreate({relationName, history: router.history, match: router.match})\n }}\n searchFormPosition=\"top\"\n actionAppComponent={Action}\n store={viewPersistor.viewInfoSelector(storeId).store}\n onStoreCreate={store => {\n viewPersistor.persistViewInfo(storeId, {store}, 0)\n }}\n modifyFormDefinition={modifyFormDefinition}\n />\n )\n}\n\nListView.propTypes = {\n id: PropTypes.string.isRequired,\n storeId: PropTypes.string.isRequired,\n locale: PropTypes.string.isRequired,\n entityName: PropTypes.string.isRequired,\n formName: PropTypes.string.isRequired,\n scrollBehaviour: scrollBehaviourPropType,\n searchFormType: PropTypes.string.isRequired,\n limit: PropTypes.number,\n searchFitlers: PropTypes.array,\n preselectedSearchFields: PropTypes.array,\n simpleSearchFields: PropTypes.string,\n router: PropTypes.object.isRequired,\n modifyFormDefinition: PropTypes.func\n}\n\nexport default ListView\n","import {connect} from 'react-redux'\nimport {actionEmitter} from 'tocco-app-extensions'\n\nimport ListView from './ListView'\n\nconst mapDispatchToProps = dispatch => ({\n emitAction: action => {\n dispatch(actionEmitter.dispatchEmittedAction(action))\n }\n})\n\nconst mapStateToProps = (state, props) => {\n const id = `${state.entityBrowser.appId}_entity-browser-list`\n const storeId = `${id}_${props.router.history.location.pathname}`\n return {\n id,\n storeId,\n locale: state.intl.locale,\n entityName: state.entityBrowser.entityName,\n formName: state.entityBrowser.formBase,\n scrollBehaviour: state.entityBrowser.scrollBehaviour,\n searchFormType: state.input.searchFormType || 'simple_advanced',\n limit: state.input.limit,\n searchFilters: state.input.searchFilters,\n preselectedSearchFields: state.input.preselectedSearchFields,\n simpleSearchFields: state.input.simpleSearchFields,\n modifyFormDefinition: state.input.modifyFormDefinition\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ListView)\n","import ListViewContainer from './ListViewContainer'\n\nexport default ListViewContainer\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\nfunction isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n}\n\nmodule.exports = isEqualWith;\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\n\nmodule.exports = isNil;\n","var arrayMap = require('./_arrayMap'),\n copyArray = require('./_copyArray'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol'),\n stringToPath = require('./_stringToPath'),\n toKey = require('./_toKey'),\n toString = require('./toString');\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nmodule.exports = toPath;\n","export var prefix = '@@redux-form/';\nexport var ARRAY_INSERT = prefix + \"ARRAY_INSERT\";\nexport var ARRAY_MOVE = prefix + \"ARRAY_MOVE\";\nexport var ARRAY_POP = prefix + \"ARRAY_POP\";\nexport var ARRAY_PUSH = prefix + \"ARRAY_PUSH\";\nexport var ARRAY_REMOVE = prefix + \"ARRAY_REMOVE\";\nexport var ARRAY_REMOVE_ALL = prefix + \"ARRAY_REMOVE_ALL\";\nexport var ARRAY_SHIFT = prefix + \"ARRAY_SHIFT\";\nexport var ARRAY_SPLICE = prefix + \"ARRAY_SPLICE\";\nexport var ARRAY_UNSHIFT = prefix + \"ARRAY_UNSHIFT\";\nexport var ARRAY_SWAP = prefix + \"ARRAY_SWAP\";\nexport var AUTOFILL = prefix + \"AUTOFILL\";\nexport var BLUR = prefix + \"BLUR\";\nexport var CHANGE = prefix + \"CHANGE\";\nexport var CLEAR_FIELDS = prefix + \"CLEAR_FIELDS\";\nexport var CLEAR_SUBMIT = prefix + \"CLEAR_SUBMIT\";\nexport var CLEAR_SUBMIT_ERRORS = prefix + \"CLEAR_SUBMIT_ERRORS\";\nexport var CLEAR_ASYNC_ERROR = prefix + \"CLEAR_ASYNC_ERROR\";\nexport var DESTROY = prefix + \"DESTROY\";\nexport var FOCUS = prefix + \"FOCUS\";\nexport var INITIALIZE = prefix + \"INITIALIZE\";\nexport var REGISTER_FIELD = prefix + \"REGISTER_FIELD\";\nexport var RESET = prefix + \"RESET\";\nexport var RESET_SECTION = prefix + \"RESET_SECTION\";\nexport var SET_SUBMIT_FAILED = prefix + \"SET_SUBMIT_FAILED\";\nexport var SET_SUBMIT_SUCCEEDED = prefix + \"SET_SUBMIT_SUCCEEDED\";\nexport var START_ASYNC_VALIDATION = prefix + \"START_ASYNC_VALIDATION\";\nexport var START_SUBMIT = prefix + \"START_SUBMIT\";\nexport var STOP_ASYNC_VALIDATION = prefix + \"STOP_ASYNC_VALIDATION\";\nexport var STOP_SUBMIT = prefix + \"STOP_SUBMIT\";\nexport var SUBMIT = prefix + \"SUBMIT\";\nexport var TOUCH = prefix + \"TOUCH\";\nexport var UNREGISTER_FIELD = prefix + \"UNREGISTER_FIELD\";\nexport var UNTOUCH = prefix + \"UNTOUCH\";\nexport var UPDATE_SYNC_ERRORS = prefix + \"UPDATE_SYNC_ERRORS\";\nexport var UPDATE_SYNC_WARNINGS = prefix + \"UPDATE_SYNC_WARNINGS\";\nexport default {\n ARRAY_INSERT: ARRAY_INSERT,\n ARRAY_MOVE: ARRAY_MOVE,\n ARRAY_POP: ARRAY_POP,\n ARRAY_PUSH: ARRAY_PUSH,\n ARRAY_REMOVE: ARRAY_REMOVE,\n ARRAY_REMOVE_ALL: ARRAY_REMOVE_ALL,\n ARRAY_SHIFT: ARRAY_SHIFT,\n ARRAY_SPLICE: ARRAY_SPLICE,\n ARRAY_UNSHIFT: ARRAY_UNSHIFT,\n ARRAY_SWAP: ARRAY_SWAP,\n AUTOFILL: AUTOFILL,\n BLUR: BLUR,\n CHANGE: CHANGE,\n CLEAR_FIELDS: CLEAR_FIELDS,\n CLEAR_SUBMIT: CLEAR_SUBMIT,\n CLEAR_SUBMIT_ERRORS: CLEAR_SUBMIT_ERRORS,\n CLEAR_ASYNC_ERROR: CLEAR_ASYNC_ERROR,\n DESTROY: DESTROY,\n FOCUS: FOCUS,\n INITIALIZE: INITIALIZE,\n REGISTER_FIELD: REGISTER_FIELD,\n RESET: RESET,\n RESET_SECTION: RESET_SECTION,\n SET_SUBMIT_FAILED: SET_SUBMIT_FAILED,\n SET_SUBMIT_SUCCEEDED: SET_SUBMIT_SUCCEEDED,\n START_ASYNC_VALIDATION: START_ASYNC_VALIDATION,\n START_SUBMIT: START_SUBMIT,\n STOP_ASYNC_VALIDATION: STOP_ASYNC_VALIDATION,\n STOP_SUBMIT: STOP_SUBMIT,\n SUBMIT: SUBMIT,\n TOUCH: TOUCH,\n UNREGISTER_FIELD: UNREGISTER_FIELD,\n UNTOUCH: UNTOUCH,\n UPDATE_SYNC_ERRORS: UPDATE_SYNC_ERRORS,\n UPDATE_SYNC_WARNINGS: UPDATE_SYNC_WARNINGS\n};","import _toPath from \"lodash/toPath\";\n\nfunction createDeleteInWithCleanUp(structure) {\n var shouldDeleteDefault = function shouldDeleteDefault(structure) {\n return function (state, path) {\n return structure.getIn(state, path) !== undefined;\n };\n };\n\n var deepEqual = structure.deepEqual,\n empty = structure.empty,\n getIn = structure.getIn,\n deleteIn = structure.deleteIn,\n setIn = structure.setIn;\n return function (shouldDelete) {\n if (shouldDelete === void 0) {\n shouldDelete = shouldDeleteDefault;\n }\n\n var deleteInWithCleanUp = function deleteInWithCleanUp(state, path) {\n if (path[path.length - 1] === ']') {\n // array path\n var pathTokens = _toPath(path);\n\n pathTokens.pop();\n var parent = getIn(state, pathTokens.join('.'));\n return parent ? setIn(state, path) : state;\n }\n\n var result = state;\n\n if (shouldDelete(structure)(state, path)) {\n result = deleteIn(state, path);\n }\n\n var dotIndex = path.lastIndexOf('.');\n\n if (dotIndex > 0) {\n var parentPath = path.substring(0, dotIndex);\n\n if (parentPath[parentPath.length - 1] !== ']') {\n var _parent = getIn(result, parentPath);\n\n if (deepEqual(_parent, empty)) {\n return deleteInWithCleanUp(result, parentPath);\n }\n }\n }\n\n return result;\n };\n\n return deleteInWithCleanUp;\n };\n}\n\nexport default createDeleteInWithCleanUp;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _isFunction from \"lodash/isFunction\";\nimport { ARRAY_INSERT, ARRAY_MOVE, ARRAY_POP, ARRAY_PUSH, ARRAY_REMOVE, ARRAY_REMOVE_ALL, ARRAY_SHIFT, ARRAY_SPLICE, ARRAY_SWAP, ARRAY_UNSHIFT, AUTOFILL, BLUR, CHANGE, CLEAR_ASYNC_ERROR, CLEAR_SUBMIT, CLEAR_SUBMIT_ERRORS, DESTROY, FOCUS, INITIALIZE, prefix, REGISTER_FIELD, RESET, RESET_SECTION, SET_SUBMIT_FAILED, SET_SUBMIT_SUCCEEDED, START_ASYNC_VALIDATION, START_SUBMIT, STOP_ASYNC_VALIDATION, STOP_SUBMIT, SUBMIT, TOUCH, UNREGISTER_FIELD, UNTOUCH, UPDATE_SYNC_ERRORS, CLEAR_FIELDS, UPDATE_SYNC_WARNINGS } from './actionTypes';\nimport createDeleteInWithCleanUp from './deleteInWithCleanUp';\nimport plain from './structure/plain';\n\nvar shouldDelete = function shouldDelete(_ref) {\n var getIn = _ref.getIn;\n return function (state, path) {\n var initialValuesPath = null;\n\n if (/^values/.test(path)) {\n initialValuesPath = path.replace('values', 'initial');\n }\n\n var initialValueComparison = initialValuesPath ? getIn(state, initialValuesPath) === undefined : true;\n return getIn(state, path) !== undefined && initialValueComparison;\n };\n};\n\nvar isReduxFormAction = function isReduxFormAction(action) {\n return action && action.type && action.type.length > prefix.length && action.type.substring(0, prefix.length) === prefix;\n};\n\nfunction createReducer(structure) {\n var _behaviors;\n\n var deepEqual = structure.deepEqual,\n empty = structure.empty,\n forEach = structure.forEach,\n getIn = structure.getIn,\n setIn = structure.setIn,\n deleteIn = structure.deleteIn,\n fromJS = structure.fromJS,\n keys = structure.keys,\n size = structure.size,\n some = structure.some,\n splice = structure.splice;\n var deleteInWithCleanUp = createDeleteInWithCleanUp(structure)(shouldDelete);\n var plainDeleteInWithCleanUp = createDeleteInWithCleanUp(plain)(shouldDelete);\n\n var doSplice = function doSplice(state, key, field, index, removeNum, value, force) {\n var existing = getIn(state, key + \".\" + field);\n return existing || force ? setIn(state, key + \".\" + field, splice(existing, index, removeNum, value)) : state;\n };\n\n var doPlainSplice = function doPlainSplice(state, key, field, index, removeNum, value, force) {\n var slice = getIn(state, key);\n var existing = plain.getIn(slice, field);\n return existing || force ? setIn(state, key, plain.setIn(slice, field, plain.splice(existing, index, removeNum, value))) : state;\n };\n\n var rootKeys = ['values', 'fields', 'submitErrors', 'asyncErrors'];\n\n var arraySplice = function arraySplice(state, field, index, removeNum, value) {\n var result = state;\n var nonValuesValue = value != null ? empty : undefined;\n result = doSplice(result, 'values', field, index, removeNum, value, true);\n result = doSplice(result, 'fields', field, index, removeNum, nonValuesValue);\n result = doPlainSplice(result, 'syncErrors', field, index, removeNum, undefined);\n result = doPlainSplice(result, 'syncWarnings', field, index, removeNum, undefined);\n result = doSplice(result, 'submitErrors', field, index, removeNum, undefined);\n result = doSplice(result, 'asyncErrors', field, index, removeNum, undefined);\n return result;\n };\n\n var behaviors = (_behaviors = {}, _behaviors[ARRAY_INSERT] = function (state, _ref2) {\n var _ref2$meta = _ref2.meta,\n field = _ref2$meta.field,\n index = _ref2$meta.index,\n payload = _ref2.payload;\n return arraySplice(state, field, index, 0, payload);\n }, _behaviors[ARRAY_MOVE] = function (state, _ref3) {\n var _ref3$meta = _ref3.meta,\n field = _ref3$meta.field,\n from = _ref3$meta.from,\n to = _ref3$meta.to;\n var array = getIn(state, \"values.\" + field);\n var length = array ? size(array) : 0;\n var result = state;\n\n if (length) {\n rootKeys.forEach(function (key) {\n var path = key + \".\" + field;\n\n if (getIn(result, path)) {\n var value = getIn(result, path + \"[\" + from + \"]\");\n result = setIn(result, path, splice(getIn(result, path), from, 1)); // remove\n\n result = setIn(result, path, splice(getIn(result, path), to, 0, value)); // insert\n }\n });\n }\n\n return result;\n }, _behaviors[ARRAY_POP] = function (state, _ref4) {\n var field = _ref4.meta.field;\n var array = getIn(state, \"values.\" + field);\n var length = array ? size(array) : 0;\n return length ? arraySplice(state, field, length - 1, 1) : state;\n }, _behaviors[ARRAY_PUSH] = function (state, _ref5) {\n var field = _ref5.meta.field,\n payload = _ref5.payload;\n var array = getIn(state, \"values.\" + field);\n var length = array ? size(array) : 0;\n return arraySplice(state, field, length, 0, payload);\n }, _behaviors[ARRAY_REMOVE] = function (state, _ref6) {\n var _ref6$meta = _ref6.meta,\n field = _ref6$meta.field,\n index = _ref6$meta.index;\n return arraySplice(state, field, index, 1);\n }, _behaviors[ARRAY_REMOVE_ALL] = function (state, _ref7) {\n var field = _ref7.meta.field;\n var array = getIn(state, \"values.\" + field);\n var length = array ? size(array) : 0;\n return length ? arraySplice(state, field, 0, length) : state;\n }, _behaviors[ARRAY_SHIFT] = function (state, _ref8) {\n var field = _ref8.meta.field;\n return arraySplice(state, field, 0, 1);\n }, _behaviors[ARRAY_SPLICE] = function (state, _ref9) {\n var _ref9$meta = _ref9.meta,\n field = _ref9$meta.field,\n index = _ref9$meta.index,\n removeNum = _ref9$meta.removeNum,\n payload = _ref9.payload;\n return arraySplice(state, field, index, removeNum, payload);\n }, _behaviors[ARRAY_SWAP] = function (state, _ref10) {\n var _ref10$meta = _ref10.meta,\n field = _ref10$meta.field,\n indexA = _ref10$meta.indexA,\n indexB = _ref10$meta.indexB;\n var result = state;\n rootKeys.forEach(function (key) {\n var valueA = getIn(result, key + \".\" + field + \"[\" + indexA + \"]\");\n var valueB = getIn(result, key + \".\" + field + \"[\" + indexB + \"]\");\n\n if (valueA !== undefined || valueB !== undefined) {\n result = setIn(result, key + \".\" + field + \"[\" + indexA + \"]\", valueB);\n result = setIn(result, key + \".\" + field + \"[\" + indexB + \"]\", valueA);\n }\n });\n return result;\n }, _behaviors[ARRAY_UNSHIFT] = function (state, _ref11) {\n var field = _ref11.meta.field,\n payload = _ref11.payload;\n return arraySplice(state, field, 0, 0, payload);\n }, _behaviors[AUTOFILL] = function (state, _ref12) {\n var field = _ref12.meta.field,\n payload = _ref12.payload;\n var result = state;\n result = deleteInWithCleanUp(result, \"asyncErrors.\" + field);\n result = deleteInWithCleanUp(result, \"submitErrors.\" + field);\n result = setIn(result, \"fields.\" + field + \".autofilled\", true);\n result = setIn(result, \"values.\" + field, payload);\n return result;\n }, _behaviors[BLUR] = function (state, _ref13) {\n var _ref13$meta = _ref13.meta,\n field = _ref13$meta.field,\n touch = _ref13$meta.touch,\n payload = _ref13.payload;\n var result = state;\n var initial = getIn(result, \"initial.\" + field);\n\n if (initial === undefined && payload === '') {\n result = deleteInWithCleanUp(result, \"values.\" + field);\n } else if (payload !== undefined) {\n result = setIn(result, \"values.\" + field, payload);\n }\n\n if (field === getIn(result, 'active')) {\n result = deleteIn(result, 'active');\n }\n\n result = deleteIn(result, \"fields.\" + field + \".active\");\n\n if (touch) {\n result = setIn(result, \"fields.\" + field + \".touched\", true);\n result = setIn(result, 'anyTouched', true);\n }\n\n return result;\n }, _behaviors[CHANGE] = function (state, _ref14) {\n var _ref14$meta = _ref14.meta,\n field = _ref14$meta.field,\n touch = _ref14$meta.touch,\n persistentSubmitErrors = _ref14$meta.persistentSubmitErrors,\n payload = _ref14.payload;\n var result = state;\n var initial = getIn(result, \"initial.\" + field);\n\n if (initial === undefined && payload === '' || payload === undefined) {\n result = deleteInWithCleanUp(result, \"values.\" + field);\n } else if (_isFunction(payload)) {\n var fieldCurrentValue = getIn(state, \"values.\" + field);\n result = setIn(result, \"values.\" + field, payload(fieldCurrentValue, state.values));\n } else {\n result = setIn(result, \"values.\" + field, payload);\n }\n\n result = deleteInWithCleanUp(result, \"asyncErrors.\" + field);\n\n if (!persistentSubmitErrors) {\n result = deleteInWithCleanUp(result, \"submitErrors.\" + field);\n }\n\n result = deleteInWithCleanUp(result, \"fields.\" + field + \".autofilled\");\n\n if (touch) {\n result = setIn(result, \"fields.\" + field + \".touched\", true);\n result = setIn(result, 'anyTouched', true);\n }\n\n return result;\n }, _behaviors[CLEAR_SUBMIT] = function (state) {\n return deleteIn(state, 'triggerSubmit');\n }, _behaviors[CLEAR_SUBMIT_ERRORS] = function (state) {\n var result = state;\n result = deleteInWithCleanUp(result, 'submitErrors');\n result = deleteIn(result, 'error');\n return result;\n }, _behaviors[CLEAR_ASYNC_ERROR] = function (state, _ref15) {\n var field = _ref15.meta.field;\n return deleteIn(state, \"asyncErrors.\" + field);\n }, _behaviors[CLEAR_FIELDS] = function (state, _ref16) {\n var _ref16$meta = _ref16.meta,\n keepTouched = _ref16$meta.keepTouched,\n persistentSubmitErrors = _ref16$meta.persistentSubmitErrors,\n fields = _ref16$meta.fields;\n var result = state;\n fields.forEach(function (field) {\n result = deleteInWithCleanUp(result, \"asyncErrors.\" + field);\n\n if (!persistentSubmitErrors) {\n result = deleteInWithCleanUp(result, \"submitErrors.\" + field);\n }\n\n result = deleteInWithCleanUp(result, \"fields.\" + field + \".autofilled\");\n\n if (!keepTouched) {\n result = deleteIn(result, \"fields.\" + field + \".touched\");\n }\n\n var values = getIn(state, \"initial.\" + field);\n result = values ? setIn(result, \"values.\" + field, values) : deleteInWithCleanUp(result, \"values.\" + field);\n });\n var anyTouched = some(keys(getIn(result, 'registeredFields')), function (key) {\n return getIn(result, \"fields.\" + key + \".touched\");\n });\n result = anyTouched ? setIn(result, 'anyTouched', true) : deleteIn(result, 'anyTouched');\n return result;\n }, _behaviors[FOCUS] = function (state, _ref17) {\n var field = _ref17.meta.field;\n var result = state;\n var previouslyActive = getIn(state, 'active');\n result = deleteIn(result, \"fields.\" + previouslyActive + \".active\");\n result = setIn(result, \"fields.\" + field + \".visited\", true);\n result = setIn(result, \"fields.\" + field + \".active\", true);\n result = setIn(result, 'active', field);\n return result;\n }, _behaviors[INITIALIZE] = function (state, _ref18) {\n var payload = _ref18.payload,\n _ref18$meta = _ref18.meta,\n keepDirty = _ref18$meta.keepDirty,\n keepSubmitSucceeded = _ref18$meta.keepSubmitSucceeded,\n updateUnregisteredFields = _ref18$meta.updateUnregisteredFields,\n keepValues = _ref18$meta.keepValues;\n var mapData = fromJS(payload);\n var result = empty; // clean all field state\n // persist old warnings, they will get recalculated if the new form values are different from the old values\n\n var warning = getIn(state, 'warning');\n\n if (warning) {\n result = setIn(result, 'warning', warning);\n }\n\n var syncWarnings = getIn(state, 'syncWarnings');\n\n if (syncWarnings) {\n result = setIn(result, 'syncWarnings', syncWarnings);\n } // persist old errors, they will get recalculated if the new form values are different from the old values\n\n\n var error = getIn(state, 'error');\n\n if (error) {\n result = setIn(result, 'error', error);\n }\n\n var syncErrors = getIn(state, 'syncErrors');\n\n if (syncErrors) {\n result = setIn(result, 'syncErrors', syncErrors);\n }\n\n var registeredFields = getIn(state, 'registeredFields');\n\n if (registeredFields) {\n result = setIn(result, 'registeredFields', registeredFields);\n }\n\n var previousValues = getIn(state, 'values');\n var previousInitialValues = getIn(state, 'initial');\n var newInitialValues = mapData;\n var newValues = previousValues;\n\n if (keepDirty && registeredFields) {\n if (!deepEqual(newInitialValues, previousInitialValues)) {\n //\n // Keep the value of dirty fields while updating the value of\n // pristine fields. This way, apps can reinitialize forms while\n // avoiding stomping on user edits.\n //\n // Note 1: The initialize action replaces all initial values\n // regardless of keepDirty.\n //\n // Note 2: When a field is dirty, keepDirty is enabled, and the field\n // value is the same as the new initial value for the field, the\n // initialize action causes the field to become pristine. That effect\n // is what we want.\n //\n var overwritePristineValue = function overwritePristineValue(name) {\n var previousInitialValue = getIn(previousInitialValues, name);\n var previousValue = getIn(previousValues, name);\n\n if (deepEqual(previousValue, previousInitialValue)) {\n // Overwrite the old pristine value with the new pristine value\n var newInitialValue = getIn(newInitialValues, name); // This check prevents any 'setIn' call that would create useless\n // nested objects, since the path to the new field value would\n // evaluate to the same (especially for undefined values)\n\n if (getIn(newValues, name) !== newInitialValue) {\n newValues = setIn(newValues, name, newInitialValue);\n }\n }\n };\n\n if (!updateUnregisteredFields) {\n forEach(keys(registeredFields), function (name) {\n return overwritePristineValue(name);\n });\n }\n\n forEach(keys(newInitialValues), function (name) {\n var previousInitialValue = getIn(previousInitialValues, name);\n\n if (typeof previousInitialValue === 'undefined') {\n // Add new values at the root level.\n var newInitialValue = getIn(newInitialValues, name);\n newValues = setIn(newValues, name, newInitialValue);\n }\n\n if (updateUnregisteredFields) {\n overwritePristineValue(name);\n }\n });\n }\n } else {\n newValues = newInitialValues;\n }\n\n if (keepValues) {\n forEach(keys(previousValues), function (name) {\n var previousValue = getIn(previousValues, name);\n newValues = setIn(newValues, name, previousValue);\n });\n forEach(keys(previousInitialValues), function (name) {\n var previousInitialValue = getIn(previousInitialValues, name);\n newInitialValues = setIn(newInitialValues, name, previousInitialValue);\n });\n }\n\n if (keepSubmitSucceeded && getIn(state, 'submitSucceeded')) {\n result = setIn(result, 'submitSucceeded', true);\n }\n\n result = setIn(result, 'values', newValues);\n result = setIn(result, 'initial', newInitialValues);\n return result;\n }, _behaviors[REGISTER_FIELD] = function (state, _ref19) {\n var _ref19$payload = _ref19.payload,\n name = _ref19$payload.name,\n type = _ref19$payload.type;\n var key = \"registeredFields['\" + name + \"']\";\n var field = getIn(state, key);\n\n if (field) {\n var count = getIn(field, 'count') + 1;\n field = setIn(field, 'count', count);\n } else {\n field = fromJS({\n name: name,\n type: type,\n count: 1\n });\n }\n\n return setIn(state, key, field);\n }, _behaviors[RESET] = function (state) {\n var result = empty;\n var registeredFields = getIn(state, 'registeredFields');\n\n if (registeredFields) {\n result = setIn(result, 'registeredFields', registeredFields);\n }\n\n var values = getIn(state, 'initial');\n\n if (values) {\n result = setIn(result, 'values', values);\n result = setIn(result, 'initial', values);\n }\n\n return result;\n }, _behaviors[RESET_SECTION] = function (state, _ref20) {\n var sections = _ref20.meta.sections;\n var result = state;\n sections.forEach(function (section) {\n result = deleteInWithCleanUp(result, \"asyncErrors.\" + section);\n result = deleteInWithCleanUp(result, \"submitErrors.\" + section);\n result = deleteInWithCleanUp(result, \"fields.\" + section);\n var values = getIn(state, \"initial.\" + section);\n result = values ? setIn(result, \"values.\" + section, values) : deleteInWithCleanUp(result, \"values.\" + section);\n });\n var anyTouched = some(keys(getIn(result, 'registeredFields')), function (key) {\n return getIn(result, \"fields.\" + key + \".touched\");\n });\n result = anyTouched ? setIn(result, 'anyTouched', true) : deleteIn(result, 'anyTouched');\n return result;\n }, _behaviors[SUBMIT] = function (state) {\n return setIn(state, 'triggerSubmit', true);\n }, _behaviors[START_ASYNC_VALIDATION] = function (state, _ref21) {\n var field = _ref21.meta.field;\n return setIn(state, 'asyncValidating', field || true);\n }, _behaviors[START_SUBMIT] = function (state) {\n return setIn(state, 'submitting', true);\n }, _behaviors[STOP_ASYNC_VALIDATION] = function (state, _ref22) {\n var payload = _ref22.payload;\n var result = state;\n result = deleteIn(result, 'asyncValidating');\n\n if (payload && Object.keys(payload).length) {\n var _error = payload._error,\n fieldErrors = _objectWithoutPropertiesLoose(payload, [\"_error\"]);\n\n if (_error) {\n result = setIn(result, 'error', _error);\n }\n\n if (Object.keys(fieldErrors).length) {\n result = setIn(result, 'asyncErrors', fromJS(fieldErrors));\n }\n } else {\n result = deleteIn(result, 'error');\n result = deleteIn(result, 'asyncErrors');\n }\n\n return result;\n }, _behaviors[STOP_SUBMIT] = function (state, _ref23) {\n var payload = _ref23.payload;\n var result = state;\n result = deleteIn(result, 'submitting');\n result = deleteIn(result, 'submitFailed');\n result = deleteIn(result, 'submitSucceeded');\n\n if (payload && Object.keys(payload).length) {\n var _error = payload._error,\n fieldErrors = _objectWithoutPropertiesLoose(payload, [\"_error\"]);\n\n if (_error) {\n result = setIn(result, 'error', _error);\n } else {\n result = deleteIn(result, 'error');\n }\n\n if (Object.keys(fieldErrors).length) {\n result = setIn(result, 'submitErrors', fromJS(fieldErrors));\n } else {\n result = deleteIn(result, 'submitErrors');\n }\n\n result = setIn(result, 'submitFailed', true);\n } else {\n result = deleteIn(result, 'error');\n result = deleteIn(result, 'submitErrors');\n }\n\n return result;\n }, _behaviors[SET_SUBMIT_FAILED] = function (state, _ref24) {\n var fields = _ref24.meta.fields;\n var result = state;\n result = setIn(result, 'submitFailed', true);\n result = deleteIn(result, 'submitSucceeded');\n result = deleteIn(result, 'submitting');\n fields.forEach(function (field) {\n return result = setIn(result, \"fields.\" + field + \".touched\", true);\n });\n\n if (fields.length) {\n result = setIn(result, 'anyTouched', true);\n }\n\n return result;\n }, _behaviors[SET_SUBMIT_SUCCEEDED] = function (state) {\n var result = state;\n result = deleteIn(result, 'submitFailed');\n result = setIn(result, 'submitSucceeded', true);\n return result;\n }, _behaviors[TOUCH] = function (state, _ref25) {\n var fields = _ref25.meta.fields;\n var result = state;\n fields.forEach(function (field) {\n return result = setIn(result, \"fields.\" + field + \".touched\", true);\n });\n result = setIn(result, 'anyTouched', true);\n return result;\n }, _behaviors[UNREGISTER_FIELD] = function (state, _ref26) {\n var _ref26$payload = _ref26.payload,\n name = _ref26$payload.name,\n destroyOnUnmount = _ref26$payload.destroyOnUnmount;\n var result = state;\n var key = \"registeredFields['\" + name + \"']\";\n var field = getIn(result, key);\n\n if (!field) {\n return result;\n }\n\n var count = getIn(field, 'count') - 1;\n\n if (count <= 0 && destroyOnUnmount) {\n // Note: Cannot use deleteWithCleanUp here because of the flat nature of registeredFields\n result = deleteIn(result, key);\n\n if (deepEqual(getIn(result, 'registeredFields'), empty)) {\n result = deleteIn(result, 'registeredFields');\n }\n\n var syncErrors = getIn(result, 'syncErrors');\n\n if (syncErrors) {\n syncErrors = plainDeleteInWithCleanUp(syncErrors, name);\n\n if (plain.deepEqual(syncErrors, plain.empty)) {\n result = deleteIn(result, 'syncErrors');\n } else {\n result = setIn(result, 'syncErrors', syncErrors);\n }\n }\n\n var syncWarnings = getIn(result, 'syncWarnings');\n\n if (syncWarnings) {\n syncWarnings = plainDeleteInWithCleanUp(syncWarnings, name);\n\n if (plain.deepEqual(syncWarnings, plain.empty)) {\n result = deleteIn(result, 'syncWarnings');\n } else {\n result = setIn(result, 'syncWarnings', syncWarnings);\n }\n }\n\n result = deleteInWithCleanUp(result, \"submitErrors.\" + name);\n result = deleteInWithCleanUp(result, \"asyncErrors.\" + name);\n } else {\n field = setIn(field, 'count', count);\n result = setIn(result, key, field);\n }\n\n return result;\n }, _behaviors[UNTOUCH] = function (state, _ref27) {\n var fields = _ref27.meta.fields;\n var result = state;\n fields.forEach(function (field) {\n return result = deleteIn(result, \"fields.\" + field + \".touched\");\n });\n var anyTouched = some(keys(getIn(result, 'registeredFields')), function (key) {\n return getIn(result, \"fields.\" + key + \".touched\");\n });\n result = anyTouched ? setIn(result, 'anyTouched', true) : deleteIn(result, 'anyTouched');\n return result;\n }, _behaviors[UPDATE_SYNC_ERRORS] = function (state, _ref28) {\n var _ref28$payload = _ref28.payload,\n syncErrors = _ref28$payload.syncErrors,\n error = _ref28$payload.error;\n var result = state;\n\n if (error) {\n result = setIn(result, 'error', error);\n result = setIn(result, 'syncError', true);\n } else {\n result = deleteIn(result, 'error');\n result = deleteIn(result, 'syncError');\n }\n\n if (Object.keys(syncErrors).length) {\n result = setIn(result, 'syncErrors', syncErrors);\n } else {\n result = deleteIn(result, 'syncErrors');\n }\n\n return result;\n }, _behaviors[UPDATE_SYNC_WARNINGS] = function (state, _ref29) {\n var _ref29$payload = _ref29.payload,\n syncWarnings = _ref29$payload.syncWarnings,\n warning = _ref29$payload.warning;\n var result = state;\n\n if (warning) {\n result = setIn(result, 'warning', warning);\n } else {\n result = deleteIn(result, 'warning');\n }\n\n if (Object.keys(syncWarnings).length) {\n result = setIn(result, 'syncWarnings', syncWarnings);\n } else {\n result = deleteIn(result, 'syncWarnings');\n }\n\n return result;\n }, _behaviors);\n\n var reducer = function reducer(state, action) {\n if (state === void 0) {\n state = empty;\n }\n\n var behavior = behaviors[action.type];\n return behavior ? behavior(state, action) : state;\n };\n\n var byForm = function byForm(reducer) {\n return function (state, action) {\n if (state === void 0) {\n state = empty;\n }\n\n if (action === void 0) {\n action = {\n type: 'NONE'\n };\n }\n\n var form = action && action.meta && action.meta.form;\n\n if (!form || !isReduxFormAction(action)) {\n return state;\n }\n\n if (action.type === DESTROY && action.meta && action.meta.form) {\n return action.meta.form.reduce(function (result, form) {\n return deleteInWithCleanUp(result, form);\n }, state);\n }\n\n var formState = getIn(state, form);\n var result = reducer(formState, action);\n return result === formState ? state : setIn(state, form, result);\n };\n };\n /**\n * Adds additional functionality to the reducer\n */\n\n\n function decorate(target) {\n target.plugin = function (reducers, config) {\n var _this = this;\n\n if (config === void 0) {\n config = {};\n }\n\n // use 'function' keyword to enable 'this'\n return decorate(function (state, action) {\n if (state === void 0) {\n state = empty;\n }\n\n if (action === void 0) {\n action = {\n type: 'NONE'\n };\n }\n\n var callPlugin = function callPlugin(processed, key) {\n var previousState = getIn(processed, key);\n var nextState = reducers[key](previousState, action, getIn(state, key));\n return nextState !== previousState ? setIn(processed, key, nextState) : processed;\n };\n\n var processed = _this(state, action); // run through redux-form reducer\n\n\n var form = action && action.meta && action.meta.form;\n\n if (form && !config.receiveAllFormActions) {\n // this is an action aimed at forms, so only give it to the specified form's plugin\n return reducers[form] ? callPlugin(processed, form) : processed;\n } else {\n // this is not a form-specific action, so send it to all the plugins\n return Object.keys(reducers).reduce(callPlugin, processed);\n }\n });\n };\n\n return target;\n }\n\n return decorate(byForm(reducer));\n}\n\nexport default createReducer;","import createReducer from './createReducer';\nimport plain from './structure/plain';\nexport default createReducer(plain);","var splice = function splice(array, index, removeNum, value) {\n array = array || [];\n\n if (index < array.length) {\n if (value === undefined && !removeNum) {\n // inserting undefined\n var _copy2 = [].concat(array);\n\n _copy2.splice(index, 0, true); // temporary placeholder\n\n\n _copy2[index] = undefined; // set to undefined\n\n return _copy2;\n }\n\n if (value != null) {\n var _copy3 = [].concat(array);\n\n _copy3.splice(index, removeNum, value); // removing and adding\n\n\n return _copy3;\n }\n\n var _copy = [].concat(array);\n\n _copy.splice(index, removeNum); // removing\n\n\n return _copy;\n }\n\n if (removeNum) {\n // trying to remove non-existant item: return original array\n return array;\n } // trying to add outside of range: just set value\n\n\n var copy = [].concat(array);\n copy[index] = value;\n return copy;\n};\n\nexport default splice;","import _toPath from \"lodash/toPath\";\n\nvar getIn = function getIn(state, field) {\n if (!state) {\n return state;\n }\n\n var path = _toPath(field);\n\n var length = path.length;\n\n if (!length) {\n return undefined;\n }\n\n var result = state;\n\n for (var i = 0; i < length && result; ++i) {\n result = result[path[i]];\n }\n\n return result;\n};\n\nexport default getIn;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _toPath from \"lodash/toPath\";\n\nvar setInWithPath = function setInWithPath(state, value, path, pathIndex) {\n var _extends2;\n\n if (pathIndex >= path.length) {\n return value;\n }\n\n var first = path[pathIndex];\n var firstState = state && (Array.isArray(state) ? state[Number(first)] : state[first]);\n var next = setInWithPath(firstState, value, path, pathIndex + 1);\n\n if (!state) {\n if (isNaN(first)) {\n var _ref;\n\n return _ref = {}, _ref[first] = next, _ref;\n }\n\n var initialized = [];\n initialized[parseInt(first, 10)] = next;\n return initialized;\n }\n\n if (Array.isArray(state)) {\n var copy = [].concat(state);\n copy[parseInt(first, 10)] = next;\n return copy;\n }\n\n return _extends({}, state, (_extends2 = {}, _extends2[first] = next, _extends2));\n};\n\nvar setIn = function setIn(state, field, value) {\n return setInWithPath(state, value, _toPath(field), 0);\n};\n\nexport default setIn;","import _isNil from \"lodash/isNil\";\nimport _isEqualWith from \"lodash/isEqualWith\";\nimport React from 'react';\n\nvar isEmpty = function isEmpty(obj) {\n return _isNil(obj) || obj === '' || isNaN(obj);\n};\n\nvar customizer = function customizer(obj, other) {\n if (obj === other) return true;\n\n if (!obj && !other) {\n return isEmpty(obj) === isEmpty(other);\n }\n\n if (obj && other && obj._error !== other._error) return false;\n if (obj && other && obj._warning !== other._warning) return false;\n if (React.isValidElement(obj) || React.isValidElement(other)) return false;\n};\n\nvar deepEqual = function deepEqual(a, b) {\n return _isEqualWith(a, b, customizer);\n};\n\nexport default deepEqual;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _toPath from \"lodash/toPath\";\n\nfunction deleteInWithPath(state, first) {\n if (state === undefined || state === null || first === undefined || first === null) {\n return state;\n }\n\n for (var _len = arguments.length, rest = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n rest[_key - 2] = arguments[_key];\n }\n\n if (rest.length) {\n if (Array.isArray(state)) {\n if (isNaN(first)) {\n throw new Error(\"Must access array elements with a number, not \\\"\" + String(first) + \"\\\".\");\n }\n\n var firstIndex = Number(first);\n\n if (firstIndex < state.length) {\n var result = deleteInWithPath.apply(void 0, [state && state[firstIndex]].concat(rest));\n\n if (result !== state[firstIndex]) {\n var copy = [].concat(state);\n copy[firstIndex] = result;\n return copy;\n }\n }\n\n return state;\n }\n\n if (first in state) {\n var _extends2;\n\n var _result = deleteInWithPath.apply(void 0, [state && state[first]].concat(rest));\n\n return state[first] === _result ? state : _extends({}, state, (_extends2 = {}, _extends2[first] = _result, _extends2));\n }\n\n return state;\n }\n\n if (Array.isArray(state)) {\n if (isNaN(first)) {\n throw new Error(\"Cannot delete non-numerical index from an array. Given: \\\"\" + String(first));\n }\n\n var _firstIndex = Number(first);\n\n if (_firstIndex < state.length) {\n var _copy = [].concat(state);\n\n _copy.splice(_firstIndex, 1);\n\n return _copy;\n }\n\n return state;\n }\n\n if (first in state) {\n var _copy2 = _extends({}, state);\n\n delete _copy2[first];\n return _copy2;\n }\n\n return state;\n}\n\nvar deleteIn = function deleteIn(state, field) {\n return deleteInWithPath.apply(void 0, [state].concat(_toPath(field)));\n};\n\nexport default deleteIn;","import splice from './splice';\nimport getIn from './getIn';\nimport setIn from './setIn';\nimport deepEqual from './deepEqual';\nimport deleteIn from './deleteIn';\nimport keys from './keys';\nvar structure = {\n allowsArrayErrors: true,\n empty: {},\n emptyList: [],\n getIn: getIn,\n setIn: setIn,\n deepEqual: deepEqual,\n deleteIn: deleteIn,\n forEach: function forEach(items, callback) {\n return items.forEach(callback);\n },\n fromJS: function fromJS(value) {\n return value;\n },\n keys: keys,\n size: function size(array) {\n return array ? array.length : 0;\n },\n some: function some(items, callback) {\n return items.some(callback);\n },\n splice: splice,\n equals: function equals(a, b) {\n return b.every(function (val) {\n return ~a.indexOf(val);\n });\n },\n orderChanged: function orderChanged(a, b) {\n return b.some(function (val, index) {\n return val !== a[index];\n });\n },\n toJS: function toJS(value) {\n return value;\n }\n};\nexport default structure;","function keys(value) {\n if (!value) {\n return [];\n }\n\n if (Array.isArray(value)) {\n return value.map(function (i) {\n return i.name;\n });\n }\n\n return Object.keys(value);\n}\n\nexport default keys;"],"sourceRoot":""}