{"version":3,"file":"js/198-2d053157d003b6efbcd8.js","mappings":"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","sources":["webpack:///./app/javascript/CustomConfigurator.js","webpack:///./app/javascript/helpers/actions/index.js","webpack:///./app/javascript/actions/administration/widgetbar.js","webpack:///./app/javascript/actions/appCreator/index.js","webpack:///./app/javascript/actions/helpers.js","webpack:///./app/javascript/actions/files.js","webpack:///./app/javascript/actions/groups.js","webpack:///./app/javascript/actions/invites.js","webpack:///./app/javascript/actions/memberships.js","webpack:///./app/javascript/actions/participations.js","webpack:///./app/javascript/components/activitystreams/composer/defaultEntryComponent.tsx","webpack:///./app/javascript/components/activitystreams/composer/inlineMentionPlugin.tsx","webpack:///./app/javascript/components/administration/designManager/defaultThemes.ts","webpack:///./app/javascript/components/administration/designManager/themeSlice.ts","webpack:///./app/javascript/components/administration/designManager/functions.ts","webpack:///./app/javascript/components/administration/designManager/rules.ts","webpack:///./app/javascript/components/administration/designManager/useTheme.ts","webpack:///./app/javascript/components/administration/designManager/deriveColors.ts","webpack:///./app/javascript/components/administration/designManagerLight/groupCategoryThemeSlice.ts","webpack:///./app/javascript/components/administration/designManagerLight/groupThemeSlice.ts","webpack:///./app/javascript/components/appCreator/api.tsx","webpack:///./app/javascript/components/appCreator/items/form/BasicItemForm.js","webpack:///./app/javascript/components/appCreator/items/form/FieldError.js","webpack:///./app/javascript/components/appCreator/properties/edit/ImageField.js","webpack:///./app/javascript/components/appCreator/properties/edit/MembershipField.js","webpack:///./app/javascript/components/appCreator/properties/edit/UrlField.js","webpack:///./app/javascript/components/appCreator/properties/edit/DateField.tsx","webpack:///./app/javascript/components/appCreator/properties/edit/HtmlField.js","webpack:///./app/javascript/components/appCreator/properties/edit/RelationField.js","webpack:///./app/javascript/components/appCreator/properties/PropertyEdit.js","webpack:///./app/javascript/components/appCreator/items/form/Fields.js","webpack:///./app/javascript/components/appCreator/items/form/SimpleInput.js","webpack:///./app/javascript/components/appCreator/properties/show/Email.js","webpack:///./app/javascript/components/appCreator/properties/show/Image.js","webpack:///./app/javascript/components/appCreator/properties/show/Url.js","webpack:///./app/javascript/components/appCreator/properties/show/File.js","webpack:///./app/javascript/components/appCreator/properties/show/Relation.js","webpack:///./app/javascript/components/appCreator/properties/show/MembershipRelation.js","webpack:///./app/javascript/components/appCreator/properties/show/DateView.js","webpack:///./app/javascript/components/appCreator/properties/show/Statistics.js","webpack:///./app/javascript/components/appCreator/properties/show/Address.js","webpack:///./app/javascript/components/appCreator/properties/show/Html.js","webpack:///./app/javascript/components/appCreator/properties/PropertyShow.js","webpack:///./app/javascript/components/appCreator/properties/edit/AddressField.js","webpack:///./app/javascript/components/appCreator/properties/edit/EmailField.js","webpack:///./app/javascript/components/appCreator/properties/edit/FileField.js","webpack:///./app/javascript/components/appCreator/properties/edit/NumberField.js","webpack:///./app/javascript/components/appCreator/properties/edit/SelectionField.js","webpack:///./app/javascript/actions/tags.js","webpack:///./app/javascript/components/appCreator/properties/edit/TagField.js","webpack:///./app/javascript/components/appCreator/properties/edit/TextField.js","webpack:///./app/javascript/components/appCreator/properties/helpers.js","webpack:///./app/javascript/components/appCreator/properties/show/Headline.js","webpack:///./app/javascript/components/appCreator/properties/show/Selection.js","webpack:///./app/javascript/components/appCreator/properties/show/Tag.js","webpack:///./app/javascript/components/appCreator/properties/show/Text.js","webpack:///./app/javascript/components/appCreator/properties/show/helpers/GenericValueList.js","webpack:///./app/javascript/components/files/Breadcrumb.js","webpack:///./app/javascript/components/files/api.tsx","webpack:///./app/javascript/components/files/composer/FileSelectModal.js","webpack:///./app/javascript/components/files/composer/FileSelector.js","webpack:///./app/javascript/components/files/hooks/useFolderResource.js","webpack:///./app/javascript/components/files/table/FileInfo.js","webpack:///./app/javascript/helpers/files/humanizeFileSize.js","webpack:///./app/javascript/components/files/table/FileRow.js","webpack:///./app/javascript/components/files/table/withExtraColumns.js","webpack:///./app/javascript/components/files/table/FolderContentsTable.js","webpack:///./app/javascript/components/files/table/FolderIcon.js","webpack:///./app/javascript/components/files/table/FolderInfo.js","webpack:///./app/javascript/components/files/table/FolderRow.js","webpack:///./app/javascript/components/files/table/SelectableFileRow.js","webpack:///./app/javascript/components/files/table/SelectableFolderRow.js","webpack:///./app/javascript/components/shared/ToggleGroupFavoriteButton.tsx","webpack:///./app/javascript/components/shared/ToggleGroupSubscribeButton.tsx","webpack:///./app/javascript/components/shared/GroupLeaveOption.tsx","webpack:///./app/javascript/components/layout/PageTitle.tsx","webpack:///./app/javascript/components/memberships/MemberNameWithAdditions.js","webpack:///./app/javascript/components/memberships/MembershipForm.js","webpack:///./app/javascript/components/shared/FileIcon.js","webpack:///./app/javascript/components/shared/MarkdownTranslation.tsx","webpack:///./app/javascript/components/shared/modal/ModalActions.tsx","webpack:///./app/javascript/components/shared/Modal.tsx","webpack:///./app/javascript/components/shared/Tag.tsx","webpack:///./app/javascript/components/shared/fields/ControlGroup.tsx","webpack:///./app/javascript/components/shared/withDragDropContext.js","webpack:///./app/javascript/components/shared/fields/fileUploadField/ImagePreview.tsx","webpack:///./app/javascript/components/shared/fields/fileUploadField/FileInput.tsx","webpack:///./app/javascript/components/shared/fields/fileUploadField/UploadBar.tsx","webpack:///./app/javascript/components/shared/fields/fileUploadField/UploadedFile.tsx","webpack:///./app/javascript/components/shared/fields/FileUploadField.js","webpack:///./app/javascript/components/shared/fields/Hint.tsx","webpack:///./app/javascript/components/shared/hooks/useItemBatchSelection.js","webpack:///./app/javascript/components/shared/hooks/useWindowEvent.js","webpack:///./app/javascript/components/shared/markdownEditor/editorPlugins/buttons/FontColorsButton.tsx","webpack:///./app/javascript/components/shared/markdownEditor/editorPlugins/buttons/Separator.tsx","webpack:///./app/javascript/components/shared/markdownEditor/editorPlugins/buttons/ToolbarButton.tsx","webpack:///./app/javascript/components/shared/markdownEditor/editorPlugins/buttons/createInlineStyleButton.js","webpack:///./app/javascript/components/shared/markdownEditor/editorPlugins/buttons/createPickerButton.js","webpack:///./app/javascript/components/shared/markdownEditor/editorPlugins/buttons/theme.js","webpack:///./app/javascript/components/shared/markdownEditor/CodeBlockLanguageSelect.js","webpack:///./app/javascript/components/shared/markdownEditor/editorPlugins/markdownPlugin.tsx","webpack:///./app/javascript/components/shared/markdownEditor/editorPlugins/shortcutsPlugin.js","webpack:///./app/javascript/components/shared/markdownEditor/editorPlugins/buttons/inlineStyleButtons.tsx","webpack:///./app/javascript/components/shared/markdownEditor/editorPlugins/buttons/createBlockStyleButton.js","webpack:///./app/javascript/components/shared/markdownEditor/editorPlugins/buttons/blockStyleButtons.tsx","webpack:///./app/javascript/components/shared/markdownEditor/editorPlugins/buttons/HeadlinesButton.tsx","webpack:///./app/javascript/components/shared/markdownEditor/editorPlugins/toolbarPlugin.tsx","webpack:///./app/javascript/components/shared/markdownEditor/editorPlugins/buttons/LinkButton.tsx","webpack:///./app/javascript/components/shared/markdownEditor/editorPlugins/undoPlugin.tsx","webpack:///./app/javascript/components/shared/markdownEditor/configure.js","webpack:///./app/javascript/components/shared/markdownEditor/withBasicMarkdownPlugins.tsx","webpack:///./app/javascript/components/shared/markdownEditor/index.js","webpack:///./app/javascript/components/shared/markdownEditor/styleMap.js","webpack:///./app/javascript/components/shared/markdownEditor/parserPlugins/customizedTextParser.js","webpack:///./app/javascript/components/shared/markdownEditor/parserPlugins/helpers.js","webpack:///./app/javascript/components/shared/markdownEditor/parserPlugins/customizedEmphasisParser.js","webpack:///./app/javascript/components/shared/markdownEditor/parserPlugins/markdownMentionsParser.js","webpack:///./app/javascript/components/shared/markdownEditor/parserPlugins/underlineParser.js","webpack:///./app/javascript/components/shared/markdownEditor/parserPlugins/cssStyleParser.js","webpack:///./app/javascript/components/shared/markdownEditor/utils/editorStateByMarkdown.js","webpack:///./app/javascript/components/shared/markdownEditor/utils/markdownByEditorState.js","webpack:///./app/javascript/components/shared/propertySets/api.tsx","webpack:///./app/javascript/components/shared/reduxForm/reduxForm.module.css?bc55","webpack:///./app/javascript/components/shared/reduxForm/FormActions.tsx","webpack:///./app/javascript/components/shared/reduxForm/index.tsx","webpack:///./app/javascript/components/shared/tables/tables.module.css?994c","webpack:///./app/javascript/components/shared/tables/Sorter.tsx","webpack:///./app/javascript/helpers/Datepicker.ts","webpack:///./app/javascript/helpers/api/bustCache.js","webpack:///./app/javascript/helpers/api/parseHeader.js","webpack:///./app/javascript/helpers/api/transformLinkHeader.js","webpack:///./app/javascript/helpers/api.js","webpack:///./app/javascript/helpers/ckeditor/loadAndConfigureCKEditor.js","webpack:///./app/javascript/helpers/components/preventDefault.js","webpack:///./app/javascript/helpers/documentReady.ts","webpack:///./app/javascript/helpers/files/publishAllVolatile.js","webpack:///./app/javascript/helpers/indexBy.ts","webpack:///./app/javascript/helpers/items/handleItemApiError.js","webpack:///./app/javascript/helpers/items/persistItem.js","webpack:///./app/javascript/helpers/reactQueryApi.js","webpack:///./app/javascript/helpers/extractUrl.ts","webpack:///./app/javascript/helpers/setApplication.js","webpack:///./app/javascript/hooks/useTooltip.ts","webpack:///./app/javascript/reducers/app.ts","webpack:///./app/javascript/reducers/groups.ts","webpack:///./app/javascript/sagas/files.js","webpack:///./app/javascript/selectors/appCreator.js","webpack:///./app/javascript/selectors/environment.ts","webpack:///./app/javascript/selectors/folders.js","webpack:///./app/javascript/selectors/navigation.js","webpack:///./app/javascript/selectors/propertySets.js","webpack:///./app/javascript/reducers/invites.js","webpack:///./app/javascript/reducers/participations.js","webpack:///./app/javascript/reducers/participantsRequests.js","webpack:///./app/javascript/actions/navigation.js","webpack:///./app/javascript/reducers/navigation.js","webpack:///./app/javascript/actions/administration/appCreator.js","webpack:///./app/javascript/reducers/appCreator/items.js","webpack:///./app/javascript/reducers/appCreator/index.js","webpack:///./app/javascript/reducers/memberships.js","webpack:///./app/javascript/reducers/folders.js","webpack:///./app/javascript/actions/meetingRooms.js","webpack:///./app/javascript/reducers/meetingRooms.js","webpack:///./app/javascript/reducers/administration/widgetbar/edit.js","webpack:///./app/javascript/reducers/administration/widgetbar/errors.js","webpack:///./app/javascript/reducers/administration/widgetbar/index.js","webpack:///./app/javascript/reducers/administration/widgetbar.js","webpack:///./app/javascript/actions/administration/legalTexts.js","webpack:///./app/javascript/reducers/administration/legalText.js","webpack:///./app/javascript/store.js","webpack:///./app/javascript/reducers/currentMember.ts","webpack:///./app/javascript/sagas/index.js","webpack:///./app/javascript/components/appCreator/properties/edit/editFields.module.css?235b","webpack:///./app/javascript/components/appCreator/properties/show/showFields.module.css?2641","webpack:///./app/javascript/components/shared/propertySets/propertySets.module.css?d9f5","webpack:///./node_modules/moment/locale/ sync ("],"sourcesContent":["import { get as getPath, set as setPath, isNil } from \"lodash\";\n\n// This object stores static configuration and allow overrides for customers\n// Can be used for all static configurations, used i.e. for:\n// - MarkdownComposer: colors and toolbar buttons\n// - AppointmentInvites: component lookup tables\nclass CustomConfigurator {\n // Constructor with singleton pattern\n constructor() {\n if (!CustomConfigurator.instance) {\n this._defaults = {};\n this._config = {};\n CustomConfigurator.instance = this;\n }\n\n return CustomConfigurator.instance;\n }\n\n // Get a config key from the internally stored config\n // @param [String,Array] path - see lodash docs for get\n get(path) {\n return getPath(this._config, path, getPath(this._defaults, path));\n }\n\n // Set a config key to the internally stored config\n // @param [String,Array] path - see lodash docs for set\n // @param [any] value - value that should be set\n set(path, value) {\n setPath(this._config, path, value);\n }\n\n // Set a config key as default value for the internally stored config\n // @param [String,Array] path - see lodash docs for set\n // @param [any] value - default value that should be set\n setDefault(path, value) {\n setPath(this._defaults, path, value);\n }\n\n // Check if something exists (!isEmpty) for the given configuration key\n // @param [String,Array] path - see lodash docs for get\n exists(path) {\n return !isNil(getPath(this._config, path));\n }\n\n // Check if some defaults exists (!isEmpty) for the given configuration key\n // @param [String,Array] path - see lodash docs for get\n existsDefault(path) {\n return !isNil(getPath(this._defaults, path));\n }\n}\n\n// Create instance, freeze it and export it\nif (!window.CustomConfigurator) {\n window.CustomConfigurator = new CustomConfigurator();\n Object.freeze(window.CustomConfigurator);\n}\n\nexport default window.CustomConfigurator;\n","export const action = (type, payload = {}) => ({\n type,\n ...payload,\n});\n","import { createApiAction } from \"helpers/api\";\nimport { action } from \"helpers/actions\";\n\nconst NAMESPACE = \"administration/widgetbar\";\n\nexport const ADD_OR_MOVE_WIDGET = NAMESPACE + \"/ADD_WIDGET\";\nexport const REMOVE_WIDGET = NAMESPACE + \"/REMOVE_WIDGET\";\nexport const CHANGE_WIDGET_VALUE = NAMESPACE + \"/CHANGE_VALUE\";\nexport const SELECT_WIDGET = NAMESPACE + \"/SELECT_WIDGET\";\nexport const FETCH_WIDGETBAR = NAMESPACE + \"/FETCH_WIDGETBAR\";\nexport const UPDATE_WIDGETBAR = NAMESPACE + \"/UPDATE_WIDGETBAR\";\nexport const SET_GROUP_ID = NAMESPACE + \"/SET_GROUP_ID\";\nexport const RESET_SUCCESSFUL_SAVE = NAMESPACE + \"/RESET_SUCCESSFUL_SAVE\";\nexport const RESET_ERRORS = NAMESPACE + \"/RESET_ERRORS\";\nexport const FETCH_WIDGETBARS = NAMESPACE + \"/FETCH_WIDGETBARS\";\nexport const FETCH_CALENDARS = NAMESPACE + \"/FETCH_CALENDARS\";\nexport const SET_IDENTIFIER = NAMESPACE + \"/SET_IDENTIFIER\";\n\nexport const addOrMoveWidget = (data, index) =>\n action(ADD_OR_MOVE_WIDGET, { data, index });\nexport const removeWidget = () => action(REMOVE_WIDGET);\nexport const selectWidget = (data) => action(SELECT_WIDGET, { data });\nexport const setGroupId = (data) => action(SET_GROUP_ID, { data });\nexport const resetErrors = (data) => action(RESET_ERRORS, { data });\nexport const resetSuccessfulSave = (data) =>\n action(RESET_SUCCESSFUL_SAVE, { data });\nexport const changeValue = (propertyKey, data) =>\n action(CHANGE_WIDGET_VALUE, { propertyKey, data });\nexport const setIdentifier = (data) => action(SET_IDENTIFIER, { data: data });\n\nexport const fetchWidgetbar = createApiAction({\n method: \"GET\",\n endpoint: ({ groupId, identifier }) => {\n const context = groupId ? `/groups/${groupId}` : \"\";\n\n return `${context}/administration/widgetbars/${identifier}.json`;\n },\n baseType: FETCH_WIDGETBAR,\n});\n\nexport const updateWidgetbar = createApiAction({\n method: \"PUT\",\n endpoint: ({ groupId, identifier }) => {\n const context = groupId ? `/groups/${groupId}` : \"\";\n\n return `${context}/administration/widgetbars/${identifier}.json`;\n },\n baseType: UPDATE_WIDGETBAR,\n});\n\nexport const fetchWidgetbars = createApiAction({\n method: \"GET\",\n endpoint: ({ groupId }) => {\n const context = groupId ? `/groups/${groupId}` : \"\";\n\n return `${context}/administration/widgetbars.json`;\n },\n baseType: FETCH_WIDGETBARS,\n});\n\nexport const fetchCalendars = createApiAction({\n method: \"GET\",\n endpoint: ({ groupId }) => {\n const context = groupId ? `/groups/${groupId}` : \"\";\n\n return `${context}/administration/widgetbars/calendars.json`;\n },\n baseType: FETCH_CALENDARS,\n});\n","import { createApiAction, parseHeader } from \"helpers/api\";\nimport { stringify } from \"query-string\";\nimport { each, get } from \"lodash\";\nimport { createFormAction } from \"redux-form-saga\";\n\nimport { appSelector } from \"selectors/appCreator\";\nimport { appUrl, itemUrl } from \"components/appCreator/api\";\n\nconst parseArchivedPerColumn = (header) => {\n const archivedPerColumn = {};\n each(header.split(\",\"), (item) => {\n const info = item.split(\"=\");\n archivedPerColumn[info[0]] = info[1];\n });\n return archivedPerColumn;\n};\n\nexport const NAMESPACE = \"appCreator\";\n\nconst transformHeaders = (_action, state, res) =>\n res.json().then((json) => {\n if (get(appSelector(state), \"collection_layout.layout\") === \"wall\") {\n let payload = { data: json };\n\n if (res.headers && res.headers.get(\"Link\")) {\n payload[\"loadMoreUrls\"] = parseHeader(res.headers.get(\"Link\"));\n }\n\n if (res.headers && res.headers.get(\"X-Total-Archived-Per-Column\")) {\n payload[\"totalArchivedItems\"] = parseArchivedPerColumn(\n res.headers.get(\"X-Total-Archived-Per-Column\"),\n );\n }\n\n return payload;\n } else {\n return {\n data: json,\n pagination: {\n nextPage: res.headers.get(\"X-Next-Page\"),\n page: res.headers.get(\"X-Page\"),\n perPage: res.headers.get(\"X-Per-Page\"),\n prevPage: res.headers.get(\"X-Prev-Page\"),\n total: res.headers.get(\"X-Total\"),\n totalPages: res.headers.get(\"X-Total-Pages\"),\n },\n totalArchivedItems: res.headers.get(\"X-Total-Archived\"),\n };\n }\n });\n\nexport const fetchAppLink = createApiAction({\n method: \"GET\",\n endpoint: ({ appSlug, groupSlug }) =>\n `/${groupSlug ? `groups/${groupSlug}/` : \"\"}apps/${appSlug}`,\n baseType: `${NAMESPACE}/APP_LINK`,\n});\n\nexport const fetchApp = createApiAction({\n method: \"GET\",\n endpoint: appUrl,\n baseType: `${NAMESPACE}/APP`,\n});\n\nexport const subscribeApp = createApiAction({\n method: \"PUT\",\n endpoint: ({ appId, externalAppId }) =>\n `${appUrl({ appId, externalAppId })}/subscription`,\n baseType: `${NAMESPACE}/SUBSCRIBE`,\n});\n\nexport const unsubscribeApp = createApiAction({\n method: \"DELETE\",\n endpoint: ({ appId, externalAppId }) =>\n `${appUrl({ appId, externalAppId })}/subscription`,\n baseType: `${NAMESPACE}/UNSUBSCRIBE`,\n});\n\nexport const fetchItem = createApiAction({\n method: \"GET\",\n endpoint: itemUrl,\n baseType: `${NAMESPACE}/ITEM`,\n});\n\nexport const archiveItem = createApiAction({\n method: \"POST\",\n endpoint: ({ appId, itemId, externalAppId }) =>\n `${appUrl({ appId, externalAppId })}/items/${itemId}/archive`,\n baseType: `${NAMESPACE}/ITEM/ARCHIVE`,\n});\n\nexport const unarchiveItem = createApiAction({\n method: \"POST\",\n endpoint: ({ appId, itemId, externalAppId }) =>\n `${appUrl({ appId, externalAppId })}/items/${itemId}/unarchive`,\n baseType: `${NAMESPACE}/ITEM/UNARCHIVE`,\n});\n\nexport const deleteItem = createApiAction({\n method: \"DELETE\",\n endpoint: ({ appId, itemId, externalAppId }) =>\n `${appUrl({ appId, externalAppId })}/items/${itemId}`,\n baseType: `${NAMESPACE}/ITEM/DELETE`,\n});\n\nexport const fetchItems = createApiAction({\n method: \"GET\",\n endpoint: ({\n appId,\n view = \"default\",\n archived = false,\n tag,\n assignee_id,\n page,\n q,\n filters,\n externalAppId,\n }) => {\n let endpointUrl = `${appUrl({ appId, externalAppId })}/items?`;\n let queryParamsObject = {\n view: view,\n archived: archived,\n filters: filters,\n tag: tag,\n assignee_id: assignee_id,\n page: page,\n q: q,\n };\n\n return (\n endpointUrl +\n stringify(queryParamsObject, { skipNull: true, skipEmptyString: true })\n );\n },\n baseType: `${NAMESPACE}/ITEMS`,\n transformPayload: transformHeaders,\n});\n\nexport const loadMoreItemsByColumn = createApiAction({\n method: \"GET\",\n endpoint: ({ url }) => `${url}`,\n baseType: `${NAMESPACE}/MORE_ITEMS`,\n transformPayload: transformHeaders,\n});\n\nexport const createItem = createApiAction({\n method: \"POST\",\n endpoint: ({ appId, externalAppId }) =>\n `${appUrl({ appId, externalAppId })}/items`,\n baseType: `${NAMESPACE}/ITEM/CREATE`,\n});\n\nexport const updateItem = createApiAction({\n method: \"PUT\",\n endpoint: itemUrl,\n baseType: `${NAMESPACE}/ITEM/UPDATE`,\n});\n\nexport const saveItem = createFormAction(`${NAMESPACE}/ITEM/SAVE`);\nexport const saveItem2 = createApiAction({\n method: \"PUT\",\n endpoint: itemUrl,\n baseType: `${NAMESPACE}/MOVE_ITEM`,\n});\n\nexport const moveItem = createApiAction({\n method: \"PUT\",\n endpoint: ({ appId, externalAppId, itemId, externalItemId }) =>\n `${itemUrl({ appId, externalAppId, itemId, externalItemId })}`,\n baseType: `${NAMESPACE}/MOVE_ITEM`,\n});\n\nexport const exportItems = createApiAction({\n method: \"POST\",\n endpoint: ({ appSlug, groupSlug }) =>\n `/${groupSlug ? `groups/${groupSlug}/` : \"\"}apps/${appSlug}/items/exports`,\n baseType: `${NAMESPACE}/EXPORT_ITEMS`,\n});\n\nexport const exportItemsGetLast = createApiAction({\n method: \"GET\",\n endpoint: ({ appSlug, groupSlug }) =>\n `/${\n groupSlug ? `groups/${groupSlug}/` : \"\"\n }apps/${appSlug}/items/exports/last`,\n baseType: `${NAMESPACE}/EXPORT_ITEMS_GET_LAST`,\n});\n\nexport const fetchRelationOptions = createApiAction({\n method: \"GET\",\n endpoint: ({ appId, externalAppId, propertyName, q }) =>\n `${appUrl({ appId, externalAppId })}/options/${propertyName}?${stringify({\n q: `${q}*`,\n })}`,\n baseType: `${NAMESPACE}/APP/OPTIONS`,\n});\n","export const REQUEST = \"REQUEST\";\nexport const SUCCESS = \"SUCCESS\";\nexport const FAILURE = \"FAILURE\";\nexport const PROGRESS = \"PROGRESS\";\n\nexport function createRequestTypes(base) {\n return {\n REQUEST: `${base}/${REQUEST}`,\n SUCCESS: `${base}/${SUCCESS}`,\n FAILURE: `${base}/${FAILURE}`,\n PROGRESS: `${base}/${PROGRESS}`,\n };\n}\n\nexport function action(type, payload = {}) {\n return { ...payload, type };\n}\n\n// Creates action with included REQUEST supertype\nexport function requestAction(type, payload = {}) {\n return action(type.REQUEST, { ...payload, superType: REQUEST });\n}\n\n// Creates action with included SUCCESS supertype\nexport function successAction(type, payload = {}) {\n return action(type.SUCCESS, { ...payload, superType: SUCCESS });\n}\n\n// Creates action with included FAILURE supertype\nexport function failureAction(type, payload = {}) {\n return action(type.FAILURE, { ...payload, superType: FAILURE });\n}\n\n// Creates action with included PROGRESS supertype\nexport function progressAction(type, payload = {}) {\n return action(type.PROGRESS, { ...payload, superType: PROGRESS });\n}\n","import { createApiAction } from \"helpers/api\";\nimport { createRequestTypes, requestAction, action } from \"./helpers\";\n\nexport const FILE = {\n PUBLISH: \"/FILE/PUBLISH\",\n REMOVE: \"/FILE/REMOVE\",\n UPLOAD: createRequestTypes(\"/FILE/UPLOAD\"),\n};\n\nexport const FILES = {\n SET_UPLOAD_IDS: \"/FILES/SET_UPLOAD_IDS\",\n ADD_UPLOAD_ID: \"FILES/ADD_UPLOAD_ID\",\n UPLOAD: createRequestTypes(\"/FILES/UPLOAD\"),\n PUBLISH: \"/FILES/PUBLISH\",\n DESTROY: \"/FILES/DESTROY\",\n MOVE: \"FILES/MOVE\",\n DELETE: \"/FILES/DELETE\",\n};\n\nexport const FOLDERS = {\n MOVE: \"FOLDERS/MOVE\",\n DELETE: \"FOLDERS/DELETE\",\n SELECT: \"FOLDERS/SELECT\",\n};\n\nexport const FOLDER = {\n SELECT: \"FOLDER/SELECT\",\n};\n\nexport const publishFiles = createApiAction({\n method: \"POST\",\n endpoint: ({ storageDirectory = \"files\" }) =>\n `/api/storage/${storageDirectory}/publish`,\n baseType: FILES.PUBLISH,\n});\n\nexport const uploadFile = (payload) => {\n return requestAction(FILES.UPLOAD, payload);\n};\n\nexport const destroyFile = createApiAction({\n method: \"DELETE\",\n endpoint: ({ storageDirectory, id }) =>\n `/api/storage/${storageDirectory}/${id}`,\n baseType: FILES.DESTROY,\n});\n\nexport const assetsUploadFile = createApiAction({\n method: \"POST\",\n endpoint: () => \"/api/storage/assets\",\n baseType: \"ASSETS/UPLOAD\",\n});\n\nexport const moveFiles = createApiAction({\n method: \"POST\",\n endpoint: () => \"/api/storage/files/move\",\n baseType: FILES.MOVE,\n});\n\nexport const moveFolders = createApiAction({\n method: \"POST\",\n endpoint: () => \"/api/storage/folders/move\",\n baseType: FOLDERS.MOVE,\n});\nexport const removeFiles = createApiAction({\n method: \"DELETE\",\n endpoint: () => \"/api/storage/files\",\n baseType: FILES.DELETE,\n});\n\nexport const removeFolders = createApiAction({\n method: \"DELETE\",\n endpoint: () => \"/api/storage/folders\",\n baseType: FOLDERS.DELETE,\n});\n\nexport const fetchFolder = createApiAction({\n method: \"GET\",\n endpoint: ({ id, namespace = \"folders\" }) =>\n `/api/storage/${namespace}/${id}?limit=1000`,\n baseType: \"FOLDER\",\n});\n\nexport const selectFolder = ({ id, namespace }) =>\n action(FOLDER.SELECT, { meta: { id, namespace } });\n","import { createApiAction } from \"helpers/api\";\n\nexport const fetchGroup = createApiAction({\n method: \"GET\",\n endpoint: ({ groupSlug }) => `/api/v1/groups/${groupSlug}`,\n baseType: \"GROUP\",\n});\n\nexport const fetchGroupDefaults = createApiAction({\n method: \"GET\",\n endpoint: ({ groupCategorySlug }) =>\n `/api/v1/groups/new?group_category_slug=${groupCategorySlug}`,\n baseType: \"GROUP_DEFAULTS\",\n});\n\nexport const createGroup = createApiAction({\n method: \"POST\",\n endpoint: () => `/groups`,\n baseType: \"GROUP_CREATE\",\n});\n\nexport const updateGroup = createApiAction({\n method: \"PUT\",\n endpoint: ({ groupSlug }) => `/groups/${groupSlug}`,\n baseType: \"GROUP_UPDATE\",\n});\n","import { createApiAction, transformLinkHeader } from \"helpers/api\";\n\nexport const fetchInvites = createApiAction({\n method: \"GET\",\n endpoint: ({ filter, status }) =>\n `/api/v1/invites?filter=${filter}&status=${status}&limit=50`,\n baseType: `/INVITES`,\n transformPayload: transformLinkHeader,\n});\n\nexport const loadMoreInvites = createApiAction({\n method: \"GET\",\n endpoint: ({ url }) => url,\n baseType: `/INVITES_MORE`,\n transformPayload: transformLinkHeader,\n});\n\nexport const declineInvite = createApiAction({\n method: \"POST\",\n endpoint: ({ inviteId }) => `/api/v1/invites/${inviteId}/reject`,\n baseType: `/INVITE_DECLINE`,\n});\n\nexport const acceptInvite = createApiAction({\n method: \"POST\",\n endpoint: ({ inviteId }) => `/api/v1/invites/${inviteId}/accept`,\n baseType: `/INVITE_ACCEPT`,\n});\n","import { stringify } from \"query-string\";\nimport { omitBy, isNil, isEmpty } from \"lodash\";\nimport { createApiAction } from \"helpers/api\";\nimport { useQuery } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\n\nexport const fetchMembersAndGroups = createApiAction({\n method: \"GET\",\n baseType: \"FETCH_MEMBERS_AND_GROUPS\",\n endpoint: (input) => `/directory?${stringify(input)}`,\n});\n\nexport const fetchMemberships = createApiAction({\n baseType: \"MEMBERS\",\n endpoint: ({ groupSlug, includeConsumers, q, excludeGroupMembersOf }) => {\n const params = omitBy(\n {\n q: isEmpty(q) ? null : q + \"*\",\n include_consumers: includeConsumers,\n exclude_group_members_of: excludeGroupMembersOf,\n },\n isNil,\n );\n\n return [\n groupSlug ? `/groups/${groupSlug}` : null,\n `/members?`,\n stringify(params),\n ].join(\"\");\n },\n});\n\nexport const fetchMembership = createApiAction({\n method: \"GET\",\n endpoint: ({ membershipId }) => `/api/v1/profiles/${membershipId}`,\n baseType: `MEMBER`,\n});\n\nexport const updateMembership = createApiAction({\n method: \"PUT\",\n endpoint: ({ membershipId }) => `/members/${membershipId}`,\n baseType: \"MEMBER/UPDATE\",\n});\n\nexport const fetchMembershipSettings = createApiAction({\n method: \"GET\",\n endpoint: ({ membershipId }) => `/members/${membershipId}/settings`,\n baseType: `MEMBER/SETTINGS`,\n});\n\nexport const updateMembershipSettings = createApiAction({\n method: \"PUT\",\n endpoint: ({ membershipId }) => `/members/${membershipId}/settings`,\n baseType: `MEMBER/SETTINGS/UPDATE`,\n});\n\n// For messages module\nexport function useFetchBaseMembershipData(membershipId, options = {}) {\n return useQuery(\n [\"memberships\", membershipId],\n () => (membershipId ? fetchApi(`/members/${membershipId}`) : null),\n options,\n );\n}\n","import { createApiAction, transformLinkHeader } from \"helpers/api\";\n\nexport const fetchParticipations = createApiAction({\n method: \"GET\",\n endpoint: ({ status }) => `/api/v1/participations?status=${status}&limit=20`,\n baseType: `/PARTICIPATIONS`,\n transformPayload: transformLinkHeader,\n});\n\nexport const loadMoreParticipations = createApiAction({\n method: \"GET\",\n endpoint: ({ url }) => url,\n baseType: `/PARTICIPATIONS_MORE`,\n transformPayload: transformLinkHeader,\n});\n\nexport const changeParticipantStatus = createApiAction({\n method: \"PUT\",\n endpoint: ({ appointmentId, id }) =>\n `/appointments/${appointmentId}/participants/${id}`,\n baseType: `/APPOINTMENT/PARTICIPANTS/CHANGE_STATUS`,\n});\n\nexport const addParticipations = createApiAction({\n method: \"POST\",\n endpoint: ({ appointmentId }) =>\n `/appointments/${appointmentId}/participants`,\n baseType: `/APPOINTMENT/PARTICIPANTS/ADD`,\n});\n\nexport const removeParticipation = createApiAction({\n method: \"DELETE\",\n endpoint: ({ appointmentId, id }) =>\n `/appointments/${appointmentId}/participants/${id}`,\n baseType: `/APPOINTMENT/PARTICIPANTS/REMOVE`,\n});\n","import React from \"react\";\nimport { omit } from \"lodash\";\n\ninterface DefaultEntryComponentTypes {\n className: string;\n mention?: {\n avatar?: string;\n name: string;\n };\n theme?: {\n mentionSuggestionsEntryAvatar: string;\n mentionSuggestionsEntryText: string;\n };\n}\n\nfunction Avatar({\n mention,\n theme,\n}: Omit) {\n if (!mention?.avatar) {\n return null;\n }\n\n return (\n \n );\n}\n\nfunction DefaultEntryComponent(props: DefaultEntryComponentTypes) {\n const { mention, theme, ...rest } = props;\n const parentProps = omit(rest, [\"isFocused\", \"searchValue\"]);\n\n return (\n
\n \n {mention?.name ? (\n \n {mention.name}\n \n ) : null}\n
\n );\n}\n\nexport default DefaultEntryComponent;\n","import React, { useState, useCallback } from \"react\";\nimport createMentionPlugin from \"@draft-js-plugins/mention\";\nimport { showNameWithProfileField } from \"components/memberships/MemberNameWithAdditions\";\nimport DefaultEntryComponent from \"./defaultEntryComponent\";\n\ninterface MentionTypes {\n className: string;\n children: React.ReactNode;\n}\n\nfunction Mention({ className, children }: MentionTypes) {\n return (\n
@{children}
\n );\n}\n\ninterface MentionEntryTypes {\n className?: string;\n}\n\nfunction MentionEntry({ className, ...props }: MentionEntryTypes) {\n return (\n \n );\n}\n\nconst inlineMentionPlugin = createMentionPlugin({\n mentionTrigger: \"@\",\n entityMutability: \"IMMUTABLE\",\n mentionComponent: Mention,\n supportWhitespace: true,\n});\n\nfunction InlineMentionSuggestions() {\n const [open, setOpen] = useState(false);\n const [suggestions, setSuggestions] = useState([]);\n\n const onOpenChange = useCallback((_open) => {\n setOpen(_open);\n }, []);\n\n return (\n \n );\n\n async function search({ value }) {\n const response = await $.ajax({\n url: `${Tixxt.currentNetwork.get(\"url\")}/members`,\n type: \"get\",\n dataType: \"json\",\n data: {\n q: `${value}*`,\n },\n contentType: \"application/json; charset=utf-8\",\n });\n\n setSuggestions(\n response.map((m) => ({\n id: m.id,\n name: showNameWithProfileField({\n name: m.displayName,\n detectionProfileField: m.detection_profile_field,\n isExternal: m.is_external,\n }),\n avatar: m.images.small,\n })),\n );\n }\n}\n\nexport default function createInlineMentionPlugin() {\n return { inlineMentionPlugin, InlineMentionSuggestions };\n}\n","import { Theme } from \"./types\";\n\n/*\nDo not forget to `npm run design:export` after making changes here.\n */\n\nconst tixxt: Theme = {\n id: \"tixxt\",\n name: \"tixxt Standard\",\n isPreset: true,\n colors: {\n primary: { color: \"#99BEDA\" },\n secondary: { color: \"#412C7C\" },\n white: { color: \"#FFFFFF\" },\n favorite: { color: \"#FCD34D\" }, // amber-300\n info: { color: \"#0284C7\" }, // sky-600\n success: { color: \"#22C55E\" }, // green-500\n warning: { color: \"#FACC15\" }, // yellow-400\n danger: { color: \"#DC2626\" }, // red-600\n\n // \"gray\" palette\n \"gray-50\": { color: \"#FAFAFA\" },\n \"gray-100\": { color: \"#F4F4F5\" },\n \"gray-200\": { color: \"#E4E4E7\" },\n \"gray-300\": { color: \"#D4D4D8\" },\n \"gray-400\": { color: \"#A1A1AA\" },\n \"gray-500\": { color: \"#71717A\" },\n \"gray-600\": { color: \"#52525B\" },\n \"gray-700\": { color: \"#3F3F46\" },\n \"gray-800\": { color: \"#27272A\" },\n \"gray-900\": { color: \"#18181B\" },\n },\n userbarIconType: \"light\",\n logoType: \"hidden\",\n bannerType: \"hidden\",\n bannerImage: null,\n logoImage: null,\n faviconImage: null,\n emailLogoImage: null,\n fullWidth: false,\n};\n\nexport { tixxt as defaultTheme };\n\nexport default [tixxt];\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport {\n ColorObject,\n Theme,\n} from \"components/administration/designManager/types\";\nimport { defaultTheme } from \"components/administration/designManager/defaultThemes\";\nimport { loadOverrideTheme } from \"components/administration/designManager/useTheme\";\n\nexport type ThemeState = Theme;\n\nconst initialState: ThemeState =\n loadOverrideTheme() || window.Preload?.theme || defaultTheme;\n\nexport const reducers = ({ override }: { override: boolean }) => ({\n setTheme(state, action: PayloadAction) {\n return { ...action.payload, override };\n },\n setUserbarIconType(state, action: PayloadAction) {\n state.userbarIconType = action.payload;\n state.override = override;\n },\n setBannerImage(state, action: PayloadAction) {\n state.bannerImage = action.payload;\n state.override = override;\n },\n setLogoImage(state, action: PayloadAction) {\n state.logoImage = action.payload;\n state.override = override;\n },\n setFaviconImage(state, action: PayloadAction) {\n state.faviconImage = action.payload;\n state.override = override;\n },\n setEmailLogoImage(state, action: PayloadAction) {\n state.emailLogoImage = action.payload;\n state.override = override;\n },\n changeColor(state, action: PayloadAction<[string, ColorObject | null]>) {\n const [name, colorObj] = action.payload;\n if (!state.colors) state.colors = {};\n if (colorObj) state.colors[name] = colorObj;\n else delete state.colors[name];\n state.override = override;\n },\n mergeColors(state, action: PayloadAction>) {\n state.colors = { ...state.colors, ...action.payload };\n state.override = override;\n },\n setHeaderVariant(\n state,\n action: PayloadAction>,\n ) {\n state.logoType = action.payload.logoType;\n state.bannerType = action.payload.bannerType;\n state.override = override;\n },\n setCustomCss(state, action: PayloadAction) {\n state.customCss = action.payload;\n state.override = override;\n },\n setFullWidth(state, action: PayloadAction) {\n state.fullWidth = action.payload;\n state.override = override;\n },\n});\n\nconst themeSlice = createSlice({\n name: \"theme\",\n initialState,\n reducers: {\n ...reducers({ override: true }),\n resetTheme() {\n return window.Preload?.theme || defaultTheme;\n },\n },\n});\n\nexport const {\n setTheme,\n resetTheme,\n setUserbarIconType,\n setBannerImage,\n setLogoImage,\n setFaviconImage,\n setEmailLogoImage,\n changeColor,\n mergeColors,\n setHeaderVariant,\n setCustomCss,\n setFullWidth,\n} = themeSlice.actions;\nexport default themeSlice.reducer;\n","import { DeriveFnEnv, DeriveFnResult } from \"./types\";\nimport {\n TinyColor,\n mostReadable as tcMostReadable,\n isReadable,\n} from \"@ctrl/tinycolor\";\nimport { isEmpty, map } from \"lodash\";\nimport { generate as generateColors } from \"@k-vyn/coloralgorithm\";\n\nfunction getColor({ colors, scope }: DeriveFnEnv, name: string) {\n let color;\n if (scope) color = colors[`${scope}-${name}`]?.color;\n if (!color) color = colors[name]?.color;\n\n if (!color)\n throw `Color with name \"${name}\" not found! (scope=${scope} theme=${JSON.stringify(\n colors,\n )})`;\n return color;\n}\n\nexport function val(this: DeriveFnEnv, c: string): DeriveFnResult {\n const color = getColor(this, c);\n\n return { color, debug: `val(${c})` };\n}\n\nexport function mix(\n this: DeriveFnEnv,\n c1: string,\n c2: string,\n amount: number,\n): DeriveFnResult {\n const color1 = getColor(this, c1);\n const color2 = getColor(this, c2);\n\n return {\n color: new TinyColor(color1)\n .mix(new TinyColor(color2), amount)\n .toHexString(),\n debug: `mix(${c1}, ${c2}, ${amount})`,\n };\n}\n\nexport function mostReadable(\n this: DeriveFnEnv,\n c: string,\n ...candidateNames: string[]\n): DeriveFnResult {\n const color = getColor(this, c);\n const candidates = map(candidateNames, (c) => getColor(this, c));\n if (isEmpty(candidates)) candidates.push(\"white\", \"black\");\n\n return {\n color:\n tcMostReadable(color, candidates, {\n includeFallbackColors: true,\n })?.toHexString() || color,\n debug: `mostReadable(${c}, ${candidateNames.join(\", \")})`,\n };\n}\n\nexport function shade(\n this: DeriveFnEnv,\n c: string,\n amount: number,\n): DeriveFnResult {\n const color = getColor(this, c);\n\n return {\n color: new TinyColor(color).shade(amount).toHexString(),\n debug: `shade(${c}, ${amount})`,\n };\n}\n\nexport function shadeOrTint(\n this: DeriveFnEnv,\n c: string,\n amount: number,\n): DeriveFnResult {\n const color = getColor(this, c);\n const tColor = new TinyColor(color);\n let result;\n if (tColor.isLight()) result = tColor.shade(amount);\n else result = tColor.tint(amount);\n\n return {\n color: result.toHexString(),\n debug: `shadeOrTint(${c}, ${amount})`,\n };\n}\n\nexport function lighten(\n this: DeriveFnEnv,\n c: string,\n amount: number,\n): DeriveFnResult {\n const color = getColor(this, c);\n\n return {\n color: new TinyColor(color).lighten(amount).toHexString(),\n debug: `lighten(${c}, ${amount})`,\n };\n}\n\nexport function makeReadable(this: DeriveFnEnv, c: string): DeriveFnResult {\n let color = getColor(this, c);\n\n while (!isReadable(color, \"white\", { level: \"AAA\", size: \"small\" })) {\n color = new TinyColor(color).shade(5).toHexString();\n }\n\n return {\n color,\n debug: `makeReadable(${c})`,\n };\n}\n\nexport function variant(\n this: DeriveFnEnv,\n c: string,\n variant: number,\n): DeriveFnResult {\n if (!(variant >= 0 && variant <= 9))\n throw \"variant must be in the range of 0-9\";\n\n const { h: hue } = new TinyColor(getColor(this, c)).toHsv();\n\n const [{ colors }] = generateColors(\n // Play around with this at https://colorbox.io/\n {\n steps: 10,\n hue: { start: hue, end: hue, curve: \"easeInQuad\" },\n saturation: { start: 0.08, end: 1, curve: \"easeInSine\", rate: 1 },\n brightness: { start: 1, end: 0.2, curve: \"easeInSine\" },\n },\n );\n\n return {\n color: map(colors, \"hex\")[variant],\n debug: `variant(${c}, ${variant})`,\n };\n}\n\nexport type DeriveExp =\n | [\"val\", ...Parameters]\n | [\"mix\", ...Parameters]\n | [\"mostReadable\", ...Parameters]\n | [\"shade\", ...Parameters]\n | [\"shadeOrTint\", ...Parameters]\n | [\"lighten\", ...Parameters]\n | [\"makeReadable\", ...Parameters]\n | [\"variant\", ...Parameters];\n","import { ColorRule } from \"./types\";\nimport { flatMap } from \"lodash\";\n\n/*\nDo not forget to `npm run design:export` after making changes here.\n */\n\nconst abstract = true;\nconst tailwind = true;\n\n/* Global */\nlet colorRules: ColorRule[] = [\n { name: \"primary\", abstract, tailwind },\n { name: \"secondary\", abstract, tailwind },\n { name: \"white\", abstract, tailwind },\n { name: \"neutral\", derive: [\"val\", \"gray-300\"], abstract, tailwind },\n { name: \"favorite\", abstract, tailwind },\n { name: \"info\", abstract, tailwind },\n { name: \"success\", abstract, tailwind },\n { name: \"warning\", abstract, tailwind },\n { name: \"danger\", abstract, tailwind },\n { name: \"normal-text\", derive: [\"val\", \"gray-800\"], tailwind },\n { name: \"link-text\", derive: [\"variant\", \"primary\", 7] },\n { name: \"link--hover-text\", derive: [\"variant\", \"primary\", 8] },\n { name: \"unread__content-background\", derive: [\"variant\", \"secondary\", 0] },\n { name: \"banner-background\", abstract, derive: [\"val\", \"secondary\"] },\n];\n\n/* Buttons */\ncolorRules = colorRules\n .concat(\n scoped(\"btn-primary\", [\n { name: \"background\", derive: [\"val\", \"primary\"] },\n { name: \"text\", derive: [\"mostReadable\", \"background\", \"normal-text\"] },\n { name: \"border\", derive: [\"val\", \"background\"] },\n { name: \"-hover-background\", derive: [\"shade\", \"background\", 15] },\n { name: \"-hover-border\", derive: [\"shade\", \"border\", 25] },\n {\n name: \"-hover-text\",\n derive: [\"mostReadable\", \"-hover-background\", \"normal-text\"],\n },\n ]),\n )\n .concat(\n scoped(\"btn-light\", [\n { name: \"background\", derive: [\"val\", \"white\"] },\n { name: \"text\", derive: [\"mostReadable\", \"background\", \"normal-text\"] },\n { name: \"border\", derive: [\"val\", \"gray-300\"] },\n { name: \"-hover-background\", derive: [\"val\", \"gray-100\"] },\n { name: \"-hover-border\", derive: [\"val\", \"gray-400\"] },\n {\n name: \"-hover-text\",\n derive: [\"mostReadable\", \"-hover-background\", \"normal-text\"],\n },\n ]),\n )\n .concat(\n flatMap([\"danger\"], (name) =>\n scoped(`btn-${name}`, [\n { name: \"background\", derive: [\"val\", name] },\n { name: \"text\", derive: [\"mostReadable\", \"background\", \"normal-text\"] },\n { name: \"border\", derive: [\"val\", \"background\"] },\n { name: \"-hover-background\", derive: [\"shade\", \"background\", 15] },\n { name: \"-hover-border\", derive: [\"shade\", \"border\", 25] },\n {\n name: \"-hover-text\",\n derive: [\"mostReadable\", \"-hover-background\", \"normal-text\"],\n },\n ]),\n ),\n );\n\n/* Alerts */\ncolorRules = colorRules.concat(\n flatMap([\"info\", \"success\", \"warning\", \"danger\"], (name) =>\n scoped(`alert-${name}`, [\n { name: \"background\", derive: [\"variant\", name, 2] },\n { name: \"border\", derive: [\"variant\", name, 4] },\n { name: \"text\", derive: [\"variant\", name, 9] },\n ]),\n ),\n);\n\n/* Tags */\ncolorRules = colorRules.concat(\n scoped(\"tag\", [\n { name: \"background\", derive: [\"variant\", \"primary\", 2] },\n { name: \"text\", derive: [\"variant\", \"primary\", 8] },\n { name: \"-reader-background\", derive: [\"variant\", \"secondary\", 2] },\n {\n name: \"-reader-text\",\n derive: [\"variant\", \"secondary\", 8],\n },\n ]),\n);\n\n/* ModuleSwitcher */\ncolorRules = colorRules.concat(\n scoped(\"module-switcher\", [\n { name: \"accent\", derive: [\"val\", \"primary\"], abstract },\n { name: \"background\", derive: [\"val\", \"gray-200\"] },\n { name: \"text\", derive: [\"val\", \"gray-500\"] },\n { name: \"-hover-background\", derive: [\"mix\", \"background\", \"accent\", 5] },\n { name: \"-hover-text\", derive: [\"mix\", \"text\", \"accent\", 50] },\n { name: \"-active-background\", derive: [\"val\", \"accent\"] },\n {\n name: \"-active-text\",\n derive: [\"mostReadable\", \"-active-background\", \"text\"],\n },\n ]),\n);\n\n/* UnreadCounter */\ncolorRules = colorRules.concat(\n scoped(\"unread-counter\", [\n { name: \"background\", derive: [\"val\", \"secondary\"] },\n { name: \"text\", derive: [\"mostReadable\", \"background\", \"normal-text\"] },\n ]),\n);\n\n/* Userbar */\ncolorRules = colorRules.concat(\n scoped(\"userbar\", [\n { name: \"accent\", derive: [\"val\", \"primary\"], abstract },\n { name: \"background\", derive: [\"val\", \"gray-100\"] },\n { name: \"section-background\", derive: [\"val\", \"white\"] },\n { name: \"section__title-text\", derive: [\"val\", \"gray-800\"] },\n { name: \"section__indicator-color\", derive: [\"val\", \"gray-500\"] },\n { name: \"link-text\", derive: [\"val\", \"gray-800\"] },\n {\n name: \"link--hover-background\",\n derive: [\"mix\", \"section-background\", \"accent\", 5],\n },\n { name: \"link--hover-text\", derive: [\"mix\", \"link-text\", \"accent\", 50] },\n { name: \"link--active-background\", derive: [\"val\", \"accent\"] },\n {\n name: \"link--active-text\",\n derive: [\"mostReadable\", \"link--active-background\", \"link-text\"],\n },\n ]),\n);\n\n/* Chat */\ncolorRules = colorRules.concat(\n scoped(\"chat\", [\n { name: \"accent\", derive: [\"val\", \"primary\"] },\n { name: \"accent-contrast\", derive: [\"mostReadable\", \"accent\", \"gray-800\"] },\n { name: \"background\", derive: [\"val\", \"gray-100\"] },\n {\n name: \"text\",\n derive: [\"mostReadable\", \"background\", \"normal-text\"],\n tailwind,\n },\n { name: \"header-background\", derive: [\"val\", \"gray-200\"] },\n {\n name: \"header-text\",\n derive: [\"mostReadable\", \"header-background\", \"normal-text\"],\n tailwind,\n },\n {\n name: \"list--hover-background\",\n derive: [\"mix\", \"background\", \"accent\", 5],\n },\n { name: \"message-background\", derive: [\"val\", \"white\"] },\n {\n name: \"message-text\",\n derive: [\"mostReadable\", \"message-background\", \"normal-text\"],\n tailwind,\n },\n { name: \"message--my-background\", derive: [\"variant\", \"accent\", 1] },\n {\n name: \"message--my-text\",\n derive: [\"mostReadable\", \"message--my-background\", \"normal-text\"],\n tailwind,\n },\n { name: \"composer-background\", derive: [\"val\", \"white\"] },\n {\n name: \"composer-text\",\n derive: [\"mostReadable\", \"composer-background\", \"normal-text\"],\n tailwind,\n },\n ]),\n);\n\n/* Chat */\ncolorRules = colorRules.concat(\n scoped(\"calendar\", [\n { name: \"today-background\", derive: [\"variant\", \"primary\", 1] },\n ]),\n);\n\n/* Header & Topbar */\ncolorRules = colorRules.concat(\n scoped(\"header\", [\n { name: \"topbar-background\", derive: [\"val\", \"gray-800\"] },\n {\n name: \"topbar-contrast\",\n derive: [\"mostReadable\", \"topbar-background\", \"white\", \"gray-800\"],\n },\n {\n name: \"topbar-contrast--hover\",\n derive: [\"shadeOrTint\", \"header-topbar-contrast\", 25],\n },\n { name: \"logo-background\", derive: [\"val\", \"white\"] },\n ]),\n);\n\n/* SearchBar */\ncolorRules = colorRules.concat(\n scoped(\"search-bar__input\", [\n { name: \"background\", derive: [\"val\", \"header-topbar-background\"] },\n { name: \"color\", derive: [\"val\", \"header-topbar-contrast\"] },\n { name: \"border-color\", derive: [\"val\", \"header-topbar-contrast--hover\"] },\n { name: \"-hover-border\", derive: [\"val\", \"header-topbar-contrast--hover\"] },\n { name: \"-focus-background\", derive: [\"val\", \"white\"] },\n {\n name: \"-focus-color\",\n derive: [\"val\", \"gray-800\"],\n },\n { name: \"-focus-border-color\", derive: [\"val\", \"header-topbar-contrast\"] },\n ]),\n);\n\n/* Navigation */\ncolorRules = colorRules.concat(\n scoped(\"navigation\", [\n { name: \"background\", derive: [\"val\", \"gray-50\"] },\n { name: \"text\", derive: [\"val\", \"gray-500\"] },\n { name: \"-hover-text\", derive: [\"mix\", \"text\", \"background\", 25] },\n ]),\n);\n\n/* BorderBox */\ncolorRules = colorRules.concat(\n scoped(\"border-box\", [\n { name: \"background\", derive: [\"val\", \"white\"] },\n { name: \"border\", derive: [\"val\", \"gray-300\"] },\n ]),\n);\n\ncolorRules = colorRules.concat(\n scoped(\"question\", [\n { name: \"accent\", derive: [\"val\", \"secondary\"] },\n { name: \"background\", derive: [\"variant\", \"accent\", 1] },\n { name: \"border\", derive: [\"variant\", \"accent\", 3] },\n { name: \"text\", derive: [\"variant\", \"accent\", 9] },\n { name: \"-question-mark\", derive: [\"variant\", \"accent\", 5] },\n { name: \"answer-background\", derive: [\"val\", \"background\"] },\n { name: \"answer-text\", derive: [\"variant\", \"accent\", 9] },\n ]),\n);\n\n/* Mobile App */\ncolorRules = colorRules.concat(\n scoped(\"mobile-app\", [\n { name: \"tab-bar\", derive: [\"val\", \"module-switcher-background\"] },\n { name: \"tab-bar-item\", derive: [\"val\", \"module-switcher-text\"] },\n {\n name: \"tab-bar-item-active\",\n derive: [\"val\", \"module-switcher--active-text\"],\n },\n {\n name: \"tab-bar-item-active-bg\",\n derive: [\"val\", \"module-switcher--active-background\"],\n },\n { name: \"navigation-bar\", derive: [\"val\", \"header-topbar-background\"] },\n { name: \"navigation-bar-text\", derive: [\"val\", \"header-topbar-contrast\"] },\n ]),\n);\n\nexport { colorRules };\n\nfunction scoped(scope: string, rules: ColorRule[]): ColorRule[] {\n return rules.map((r) => ({ ...r, scope }));\n}\n","import {\n DerivedTheme,\n ModifiedTheme,\n Theme,\n} from \"components/administration/designManager/types\";\nimport { useSelector } from \"react-redux\";\nimport { State } from \"../../../@types\";\nimport { defaultTheme } from \"components/administration/designManager/defaultThemes\";\nimport { omit, pickBy } from \"lodash\";\nimport { useMemo } from \"react\";\nimport deriveColors from \"components/administration/designManager/deriveColors\";\nimport { colorRules } from \"components/administration/designManager/rules\";\nimport { ThemeType } from \"components/administration/designManager/api\";\n\nexport function loadOverrideTheme(): Theme | null {\n const themeRaw = localStorage.getItem(\"overrideTheme\");\n let theme = null;\n if (themeRaw) theme = JSON.parse(themeRaw);\n return theme;\n}\n\n// If the possibility of a test drive is desired, context_slug and theme_type must be included here\nexport function storeOverrideTheme(theme: Theme | null) {\n if (theme) localStorage.setItem(\"overrideTheme\", JSON.stringify(theme));\n else localStorage.removeItem(\"overrideTheme\");\n}\n\ntype UseThemeOptions = {\n baseTheme?: ModifiedTheme | Theme;\n derive?: \"always\" | \"onOverride\";\n themeType?: ThemeType;\n};\n\nexport function useTheme({\n baseTheme,\n derive,\n themeType,\n}: UseThemeOptions = {}): DerivedTheme {\n if (!derive) derive = \"onOverride\";\n\n // Select theme from state\n const themeFromState = useSelector((state: State) => {\n switch (themeType) {\n case \"network\":\n return state.theme;\n case \"groupCategory\":\n return state.groupCategoryTheme;\n case \"group\":\n return state.groupTheme;\n default:\n return state.theme;\n }\n });\n\n // Determine if deriveColors should happen\n const shouldDerive =\n derive === \"onOverride\" ? themeFromState?.override : derive === \"always\";\n\n const [derivedColors, themeWithDefaults] = useMemo(() => {\n if (!baseTheme) baseTheme = defaultTheme;\n\n // Add everything from default theme that might be missing in themeFromState\n const themeWithDefaults = {\n ...omit(baseTheme, [\"isPreset\"]),\n ...themeFromState,\n colors: {\n ...(\"base\" in baseTheme ? baseTheme.base.colors : {}),\n ...baseTheme.colors,\n ...pickBy(themeFromState?.colors, \"color\"),\n },\n };\n\n const derivedColors = shouldDerive\n ? deriveColors(themeWithDefaults.colors, colorRules)\n : null;\n\n return [derivedColors, themeWithDefaults];\n }, [shouldDerive, baseTheme, themeFromState]);\n\n return { ...themeWithDefaults, derivedColors };\n}\n","import { cloneDeep } from \"lodash\";\nimport { ColorRule, DeriveFnEnv, ColorObject } from \"./types\";\nimport * as functions from \"./functions\";\n\nexport default function deriveColors(\n colors: Record,\n colorRules: ColorRule[],\n) {\n const result = cloneDeep(colors);\n\n colorRules.forEach(({ scope, name, derive, abstract, tailwind }) => {\n const variableName = scope ? `${scope}-${name}` : name;\n const env: DeriveFnEnv = { colors: result, scope };\n\n if (derive && !result[variableName]) {\n const [fnName, ...args] = derive;\n const fn = functions[fnName];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n result[variableName] = fn.apply(env, args);\n }\n\n const singleResult = result[variableName];\n if (singleResult) {\n if (abstract) singleResult.abstract = true;\n if (tailwind) singleResult.tailwind = true;\n }\n });\n\n return result;\n}\n","import { reducers } from \"components/administration/designManager/themeSlice\";\nimport { createSlice } from \"@reduxjs/toolkit\";\n\nconst groupCategoryThemeSlice = createSlice({\n name: \"groupCategoryTheme\",\n initialState: {},\n reducers: {\n ...reducers({ override: false }),\n resetTheme() {\n return {};\n },\n },\n});\n\nexport const {\n setTheme,\n resetTheme,\n setBannerImage,\n setLogoImage,\n changeColor,\n setHeaderVariant,\n} = groupCategoryThemeSlice.actions;\nexport default groupCategoryThemeSlice.reducer;\n","import { reducers } from \"components/administration/designManager/themeSlice\";\nimport { createSlice } from \"@reduxjs/toolkit\";\n\nconst groupThemeSlice = createSlice({\n name: \"groupTheme\",\n initialState: {},\n reducers: {\n ...reducers({ override: false }),\n resetTheme() {\n return {};\n },\n },\n});\n\nexport const {\n setTheme,\n resetTheme,\n setBannerImage,\n setLogoImage,\n changeColor,\n setHeaderVariant,\n} = groupThemeSlice.actions;\nexport default groupThemeSlice.reducer;\n","import { useQuery } from \"react-query\";\nimport { isEmpty } from \"lodash\";\n\nexport const appsApiBaseUrl = () => \"/api/apps\";\nexport const appUrl = ({ externalAppId, appId }) => {\n if (isEmpty(externalAppId) && isEmpty(appId))\n throw new Error(\"appId or externalAppId required to build appUrl\");\n\n return [\n appsApiBaseUrl(),\n \"apps\",\n externalAppId ? `external/${externalAppId}` : appId,\n ].join(\"/\");\n};\n\nexport const itemUrl = ({ appId, externalAppId, itemId, externalItemId }) => {\n if (isEmpty(itemId) && isEmpty(externalItemId))\n throw new Error(\"itemId or externalItemId required to build itemUrl\");\n\n return [\n appUrl({ appId, externalAppId }),\n \"items\",\n externalItemId ? `external/${externalItemId}` : itemId,\n ].join(\"/\");\n};\n\ntype Property = {\n type: string;\n name: string;\n};\n\ntype AppPayload = {\n collection_layout: {\n layout: \"table\" | \"list\" | \"wall\";\n options: {\n table: { stage: boolean };\n list: {\n stage: boolean;\n teaser: {\n body_template: string | undefined;\n };\n };\n wall: { stage: boolean };\n };\n };\n id: string;\n name: string;\n title_property: string;\n properties: Property[];\n};\n\nexport const useLoadApp = ({ appId, externalAppId }, options?) =>\n useQuery(appUrl({ appId, externalAppId }), options);\n\ntype ItemPayload = {\n id: string;\n values: {\n [key: string]: undefined | string | { url: string } | { url: string }[];\n };\n display_values: object;\n};\n\nexport const useLoadItem = ({ appId, externalAppId, itemId, externalItemId }) =>\n useQuery(\n itemUrl({ appId, externalAppId, itemId, externalItemId }),\n );\n","import React, { useLayoutEffect, useState, Fragment } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty, pick, get } from \"lodash\";\n\nimport Fields from \"./Fields\";\nimport Hint from \"../../../shared/fields/Hint\";\nimport { useLoadApp, useLoadItem } from \"../../api\";\n\n// Switches between NewItemForm and EditItemForm depending\n// if any item identifier was given\nfunction BasicItemForm(props) {\n const appIds = pick(props, [\"appId\", \"externalAppId\"]);\n\n const { isLoading: appLoading, data: app } = useLoadApp(appIds);\n\n if (!app) return ;\n\n const noItem = isEmpty(props.itemId) && isEmpty(props.externalItemId);\n const FormComponent = noItem ? NewItemForm : EditItemForm;\n\n return (\n \n {!isEmpty(get(app, \"hint\")) ? (\n \n ) : null}\n \n \n );\n}\n\nBasicItemForm.propTypes = {\n appId: PropTypes.string,\n externalAppId: PropTypes.string,\n itemId: PropTypes.string,\n externalItemId: PropTypes.string,\n // Callback to initialize the form with the items values\n // Make sure this only sets section values if embedding this component\n initialize: PropTypes.func,\n filterProperties: PropTypes.func,\n mapProperties: PropTypes.func,\n transformItem: PropTypes.func,\n};\n\nfunction Loading() {\n return (\n \n {I18n.t(\"js.groups.loading\")}\n \n );\n}\n\nexport function NewItemForm({\n app,\n appLoading,\n filterProperties,\n mapProperties,\n}) {\n if (appLoading || isEmpty(app)) return ;\n\n let properties = app.properties;\n if (filterProperties) properties = properties.filter(filterProperties);\n if (mapProperties) properties = properties.map(mapProperties);\n\n return ;\n}\n\nNewItemForm.propTypes = {\n app: PropTypes.shape({ properties: PropTypes.array }),\n appLoading: PropTypes.bool,\n};\n\nfunction useInitialize({ initialize, appLoading, itemLoading, item }) {\n // workaround for tixxt composer firing changes on mount which override initial values\n const [initialized, setInitialized] = useState(false);\n\n useLayoutEffect(() => {\n if (!appLoading && !itemLoading) {\n if (!isEmpty(item))\n initialize(item.values, { updateUnregisteredFields: true });\n\n // workaround\n setInitialized(true);\n }\n }, [appLoading, itemLoading]);\n\n return initialized;\n}\n\nexport function EditItemForm({\n app,\n appLoading,\n itemId,\n externalItemId,\n appId,\n externalAppId,\n initialize,\n filterProperties,\n mapProperties,\n transformItem,\n}) {\n let { isLoading: itemLoading, data: item } = useLoadItem({\n appId,\n externalAppId,\n itemId,\n externalItemId,\n });\n\n const initialized = useInitialize({\n initialize,\n appLoading,\n itemLoading,\n item,\n });\n\n if (appLoading || itemLoading || !initialized) return ;\n\n let properties = app.properties;\n if (filterProperties) properties = properties.filter(filterProperties);\n if (mapProperties) properties = properties.map(mapProperties);\n if (transformItem) item = transformItem(item);\n\n return ;\n}\n\nEditItemForm.propTypes = {\n ...BasicItemForm.propTypes,\n ...NewItemForm.propTypes,\n};\n\nexport default BasicItemForm;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nfunction FieldError({ error }) {\n return {error};\n}\nFieldError.propTypes = {\n error: PropTypes.string,\n};\n\nexport default FieldError;\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { Field } from \"redux-form\";\n\nimport FileUploadField from \"../../../shared/fields/FileUploadField\";\n\nfunction ImageField({ name, required, multiple, disabled }) {\n return (\n \n );\n}\nImageField.propTypes = {\n name: PropTypes.string.isRequired,\n required: PropTypes.bool,\n multiple: PropTypes.bool,\n disabled: PropTypes.bool,\n};\n\nexport default ImageField;\n","import React, { Fragment, useMemo } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useDispatch } from \"react-redux\";\nimport { map, castArray, isArray, compact, debounce } from \"lodash\";\nimport { Field } from \"redux-form\";\nimport AsyncSelect from \"react-select/async\";\n\nimport styles from \"./editFields.module.css\";\nimport { fetchMemberships } from \"actions/memberships\";\nimport FieldError from \"components/appCreator/items/form/FieldError\";\n\nconst normalizeValue = (value) => {\n if (value === null) return null; // When nothing is selected\n if (isArray(value)) return map(value, normalizeValue);\n\n return {\n id: value.value,\n displayValue: value.label,\n };\n};\n\nconst formatValue = (state) =>\n map(compact(castArray(state)), ({ id, displayName, displayValue }) => ({\n value: id,\n label: displayName || displayValue,\n }));\n\nfunction SelectAdapter({\n input,\n required,\n id,\n disabled,\n className,\n multiple,\n meta: { error },\n}) {\n const dispatch = useDispatch();\n const loadOptions = useMemo(\n () =>\n debounce(async (value, callback) => {\n const { payload } = await dispatch(fetchMemberships({ q: value }));\n callback(formatValue(payload));\n }, 375),\n [],\n );\n\n let props = {\n ...input,\n // workaround for mobile,\n // see ticket #9930 or issue https://github.com/JedWatson/react-select/issues/2692#issuecomment-395743446\n onBlur: (e) => e.preventDefault(),\n isClearable: !required,\n isDisabled: disabled,\n inputId: id,\n placeholder: I18n.t(\"js.member_select.placeholder\"),\n noOptionsMessage: () => I18n.t(\"plugins.select2.no_match\"),\n className,\n loadOptions: (value, callback) => {\n loadOptions(value, callback);\n },\n isMulti: multiple,\n styles: { menu: (base) => ({ ...base, zIndex: 999 }) },\n };\n\n return (\n \n \n {error && }\n \n );\n}\nSelectAdapter.propTypes = {\n input: PropTypes.object,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n value: PropTypes.string,\n label: PropTypes.string,\n }),\n ),\n multiple: PropTypes.bool,\n required: PropTypes.bool,\n id: PropTypes.string,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n meta: PropTypes.shape({ error: FieldError.propTypes.error }),\n};\n\nfunction MembershipField({ name, required, disabled, id, multiple }) {\n return (\n \n );\n}\nMembershipField.propTypes = {\n name: PropTypes.string.isRequired,\n multiple: PropTypes.bool,\n ...SelectAdapter.propTypes,\n};\n\nexport default MembershipField;\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { Field } from \"redux-form\";\nimport { get } from \"lodash\";\n\nimport styles from \"./editFields.module.css\";\nimport SimpleInput from \"components/appCreator/items/form/SimpleInput\";\n\nconst extractUrl = (value) => get(value, \"url\") || \"\";\nconst normalizeValue = (value) => ({ url: value });\n\nfunction UrlField({ name, required, disabled, id }) {\n return (\n \n );\n}\nUrlField.propTypes = {\n name: PropTypes.string.isRequired,\n required: PropTypes.bool,\n disabled: PropTypes.bool,\n id: PropTypes.string,\n};\n\nexport default UrlField;\n","import React, { useRef, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Field } from \"redux-form\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { solid } from \"@fortawesome/fontawesome-svg-core/import.macro\";\nimport moment from \"moment\";\nimport { isEmpty } from \"lodash\";\nimport Datepicker from \"helpers/Datepicker\";\nimport \"../../../../../../node_modules/vanillajs-datepicker/dist/css/datepicker-bs5\";\n\nimport styles from \"./editFields.module.css\";\nimport FieldError from \"components/appCreator/items/form/FieldError\";\n\ntype PropTypes = {\n input: {\n name: string;\n value: string;\n onChange: (value: string | null) => void;\n };\n meta: {\n error?: string;\n };\n};\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noop() {}\n\nfunction DatePickerAdapter({ input, meta }: PropTypes) {\n const elemRef = useRef(null);\n useEffect(() => {\n const datepicker = new Datepicker(elemRef.current);\n elemRef.current?.addEventListener(\n \"changeDate\",\n function (e: CustomEventInit) {\n input.onChange(\n e.detail.date\n ? moment(\n e.detail.date,\n I18n.t(\"js.plugins.Locale.Formats.valid_date\"),\n ).format(\"YYYY-MM-DD\")\n : null,\n );\n },\n );\n\n return () => {\n datepicker.destroy();\n };\n });\n\n return (\n <>\n
\n \n {\n e.preventDefault();\n elemRef.current?.focus();\n }}\n >\n \n \n
\n {meta?.error && }\n \n );\n}\n\nfunction DateField({ required, id, disabled, name }) {\n return (\n \n );\n}\n\nDateField.propTypes = {\n name: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n required: PropTypes.bool,\n id: PropTypes.string,\n};\n\nexport default DateField;\n","import React, { Component, Fragment, createRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Field } from \"redux-form\";\nimport { get } from \"lodash\";\n\nimport styles from \"./editFields.module.css\";\nimport FieldError from \"components/appCreator/items/form/FieldError\";\nimport loadAndConfigureCKEditor from \"../../../../helpers/ckeditor/loadAndConfigureCKEditor\";\n\nclass CKEditorAdpater extends Component {\n constructor(props) {\n super(props);\n this.ref = createRef();\n }\n\n async componentDidMount() {\n const CKEDITOR = await loadAndConfigureCKEditor();\n\n this.lastValue = this.props.input.value;\n this.editor = CKEDITOR.replace(this.ref.current, {\n codeSnippet_theme: \"github\",\n bodyClass: styles.Html,\n });\n\n this.editor.on(\"change\", () => {\n this.editor.updateElement();\n this.lastValue = this.ref.current.value;\n this.props.input.onChange(this.lastValue);\n });\n }\n\n componentDidUpdate() {\n if (!this.editor) return;\n\n const newValue = this.props.input.value;\n\n if (newValue !== this.lastValue) {\n this.lastValue = newValue;\n this.editor.setData(newValue);\n }\n }\n\n componentWillUnmount() {\n if (!this.editor) return;\n\n this.editor.destroy();\n }\n\n render() {\n const error = get(this.props, [\"meta\", \"error\"]);\n return (\n \n \n {error && }\n \n );\n }\n}\nCKEditorAdpater.propTypes = {\n input: PropTypes.shape({\n value: PropTypes.string,\n onChange: PropTypes.func,\n }),\n id: PropTypes.string,\n meta: PropTypes.shape({ error: FieldError.propTypes.error }),\n};\n\nfunction HtmlField({ name, required, disabled, id }) {\n return (\n \n );\n}\nHtmlField.propTypes = {\n name: PropTypes.string.isRequired,\n required: PropTypes.bool,\n content: PropTypes.string,\n disabled: PropTypes.bool,\n id: PropTypes.string,\n};\n\nexport default HtmlField;\n","import React, { Fragment, useMemo } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useDispatch } from \"react-redux\";\nimport {\n map,\n castArray,\n isArray,\n compact,\n debounce,\n groupBy,\n sortBy,\n} from \"lodash\";\nimport { Field } from \"redux-form\";\nimport Select from \"react-select\";\nimport CreatableSelect from \"react-select/creatable\";\nimport AsyncSelect from \"react-select/async\";\nimport AsyncCreatableSelect from \"react-select/async-creatable\";\n\nimport styles from \"./editFields.module.css\";\nimport { fetchRelationOptions } from \"actions/appCreator\";\nimport FieldError from \"components/appCreator/items/form/FieldError\";\nimport indexBy from \"../../../../helpers/indexBy\";\n\nconst normalizeValue = (value) => {\n if (value === null) return null; // When nothing is selected\n if (isArray(value)) return map(value, normalizeValue);\n\n return {\n id: value.value,\n displayValue: value.label,\n values: value.values,\n isNew: value.isNew,\n };\n};\n\nconst formatValue = (state) =>\n map(compactArray(state), ({ id, displayValue, values, isNew }) => ({\n value: id,\n label: displayValue,\n values,\n isNew,\n }));\n\nconst compactArray = (arr) => compact(castArray(arr));\n\nconst formatOptionsBasedOnApps = (options, relatedApps) => {\n options = compactArray(options);\n const appDetailsById = indexBy(relatedApps, \"id\");\n const optionsGroupedByAppId = groupBy(options, \"app_id\");\n return map(optionsGroupedByAppId, (optionsInApp, app_id) => ({\n label: appDetailsById[app_id]?.name,\n options: formatValue(optionsInApp),\n }));\n};\n\nfunction formatCreateLabel(label) {\n return (\n \n {label}\n \n );\n}\n\nfunction SelectAdapter({\n input,\n options,\n multiple,\n required,\n id,\n disabled,\n allow_create_related,\n async,\n appId,\n className,\n meta: { error },\n}) {\n const dispatch = useDispatch();\n const loadOptions = useMemo(\n () =>\n debounce(async (value, callback) => {\n const { payload } = await dispatch(\n fetchRelationOptions({ appId, propertyName: input.name, q: value }),\n );\n callback(formatValue(payload));\n }, 375),\n [appId, input.name],\n );\n\n let props = {\n ...input,\n // workaround for mobile,\n // see ticket #9930 or issue https://github.com/JedWatson/react-select/issues/2692#issuecomment-395743446\n onBlur: (e) => e.preventDefault(),\n options,\n isMulti: multiple,\n isClearable: !required,\n isDisabled: disabled,\n inputId: id,\n placeholder: I18n.t(\"js.apps.properties.relation.placeholder\"),\n noOptionsMessage: () => I18n.t(\"plugins.select2.no_match\"),\n className,\n styles: { menu: (base) => ({ ...base, zIndex: 999 }) },\n };\n\n if (allow_create_related) {\n props.onCreateOption = (value) => {\n const newValue = {\n label: value,\n isNew: true,\n value: `new_${value}`,\n values: { name: value },\n };\n input.onChange(multiple ? [...input.value, newValue] : newValue);\n };\n props.formatCreateLabel = formatCreateLabel;\n }\n if (async) {\n props.loadOptions = (value, callback) => {\n loadOptions(value, callback);\n };\n }\n\n let Component;\n\n if (async && allow_create_related) {\n Component = AsyncCreatableSelect;\n } else if (async && !allow_create_related) {\n Component = AsyncSelect;\n } else if (!async && allow_create_related) {\n Component = CreatableSelect;\n } else {\n Component = Select;\n }\n\n return (\n \n \n {error && }\n \n );\n}\nSelectAdapter.propTypes = {\n input: PropTypes.object,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n value: PropTypes.string,\n label: PropTypes.string,\n app_id: PropTypes.string,\n }),\n ),\n related_apps: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n }),\n ),\n multiple: PropTypes.bool,\n required: PropTypes.bool,\n id: PropTypes.string,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n allow_create_related: PropTypes.bool,\n async: PropTypes.bool,\n polymorphic: PropTypes.bool,\n loadOptions: PropTypes.func,\n meta: PropTypes.shape({ error: FieldError.propTypes.error }),\n};\n\nfunction RelationField({\n name,\n required,\n options,\n multiple,\n disabled,\n id,\n allow_create_related,\n async,\n appId,\n polymorphic,\n related_apps,\n}) {\n const sortedOptions = sortBy(options, [\"displayValue\"]);\n return (\n \n );\n}\nRelationField.propTypes = {\n name: PropTypes.string.isRequired,\n ...SelectAdapter.propTypes,\n};\n\nexport default RelationField;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport Address from \"components/appCreator/properties/edit/AddressField\";\nimport Email from \"components/appCreator/properties/edit/EmailField\";\nimport Image from \"components/appCreator/properties/edit/ImageField\";\nimport MembershipRelation from \"components/appCreator/properties/edit/MembershipField\";\nimport Number from \"components/appCreator/properties/edit/NumberField\";\nimport Selection from \"components/appCreator/properties/edit/SelectionField\";\nimport Text from \"components/appCreator/properties/edit/TextField\";\nimport Url from \"components/appCreator/properties/edit/UrlField\";\nimport Tag from \"components/appCreator/properties/edit/TagField\";\nimport DatePicker from \"components/appCreator/properties/edit/DateField\";\nimport Html from \"components/appCreator/properties/edit/HtmlField\";\nimport File from \"components/appCreator/properties/edit/FileField\";\nimport RelationField from \"components/appCreator/properties/edit/RelationField\";\n\nconst PROPERTIES = {\n address: Address,\n email: Email,\n image: Image,\n membership: MembershipRelation,\n selection: Selection,\n text: Text,\n url: Url,\n number: Number,\n tag: Tag,\n file: File,\n date: DatePicker,\n html: Html,\n relation: RelationField,\n};\n\nexport function isManualFocusHandlingRequired(prop) {\n return prop.type === \"text\" && prop.multiline;\n}\n\nfunction canUpdate(property, item) {\n const can = item?.can || property.can || {};\n\n if (`update[${property.name}]` in can) return can[`update[${property.name}]`];\n if (\"update\" in can) return can.update;\n\n return true;\n}\n\nfunction PropertyEdit({ property, id, appId, inputRef, item }) {\n const { name, type } = property;\n const Component = PROPERTIES[type];\n\n if (Component) {\n return (\n \n );\n } else {\n return (\n

\n Unsupported field type "{type}" for property "{name}\n "\n

\n );\n }\n}\n\nPropertyEdit.propTypes = {\n property: PropTypes.object.isRequired,\n value: PropTypes.any,\n appId: PropTypes.string,\n id: PropTypes.string,\n inputRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]),\n};\n\nexport default PropertyEdit;\n","import PropTypes from \"prop-types\";\nimport React, { useRef, useState } from \"react\";\nimport { map, isPlainObject, isArray, each, set, isEmpty, get } from \"lodash\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport ControlGroup from \"components/shared/fields/ControlGroup\";\nimport Hint from \"components/shared/fields/Hint\";\nimport PropertyEdit, {\n isManualFocusHandlingRequired,\n} from \"components/appCreator/properties/PropertyEdit\";\nimport { isPropRequired } from \"components/appCreator/properties/helpers\";\nimport Headline from \"components/appCreator/properties/show/Headline\";\n\nfunction Fields({ properties, fieldErrors, appId, item }) {\n const [fieldIdBase] = useState(appId || uuidv4());\n const focusHandlers = useRef({});\n const handleNewInputRef = (name) => (newRef) => {\n focusHandlers.current[name] = () => newRef.focus();\n };\n const handleLabelClick = (e) => {\n const name = e.currentTarget.dataset.propertyName;\n if (focusHandlers.current[name]) focusHandlers.current[name]();\n };\n\n const errors = {};\n each(fieldErrors, (error, key) => {\n set(errors, key, error);\n });\n\n return map(properties, (prop, i) => {\n const fieldId = `${fieldIdBase}-${prop.name}`;\n const name = get(prop, \"name\");\n const propErrors = get(errors, [name, prop.name]) || get(errors, prop.name);\n const propHasErrors = !isEmpty(propErrors);\n\n if (prop.type === \"statistics\") return null;\n if (prop.type === \"headline\")\n return (\n <>\n \n \n \n );\n\n return (\n \n \n \n {map(\n isPlainObject(propErrors) || isArray(propErrors)\n ? propErrors\n : [propErrors],\n (error, i) => (\n \n {error}\n \n ),\n )}\n \n );\n });\n}\n\nFields.propTypes = {\n properties: PropTypes.array,\n fieldErrors: PropTypes.object,\n name: PropTypes.string,\n appId: PropTypes.string,\n options: PropTypes.object,\n};\n\nexport default Fields;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport FieldError from \"./FieldError\";\nimport styles from \"../../properties/edit/editFields.module.css\";\nimport classNames from \"classnames\";\n\nfunction SimpleInput({\n input,\n meta: { error },\n wrapperClassName,\n prefix,\n postfix,\n ...otherProps\n}) {\n let inputElement = ;\n\n if (prefix || postfix)\n inputElement = (\n
\n {prefix && {prefix}}\n {inputElement}\n {postfix && {postfix}}\n
\n );\n\n return (\n
\n {inputElement}\n {error && }\n
\n );\n}\n\nSimpleInput.propTypes = {\n meta: PropTypes.shape({ error: FieldError.propTypes.error }),\n input: PropTypes.object,\n};\n\nexport default SimpleInput;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty } from \"lodash\";\n\nimport styles from \"./showFields.module.css\";\n\nfunction Email({ value }) {\n return !isEmpty(value) ? (\n \n {value}\n \n ) : (\n \n );\n}\nEmail.propTypes = {\n value: PropTypes.string,\n};\n\nexport default Email;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { castArray, map, compact } from \"lodash\";\n\nimport styles from \"./showFields.module.css\";\n\nexport const defaultImageUrl = (id, size) =>\n `/api/storage/images/${id}/get/${size}`;\n\nfunction Image({ value }) {\n return (\n
\n {map(\n compact(castArray(value)),\n ({ id, name, imageUrl, thumbnailUrl }) => (\n \n \n \n ),\n )}\n
\n );\n}\nconst imageShape = PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string,\n imageUrl: PropTypes.string, // for storybook\n thumbnailUrl: PropTypes.string, // for storybook\n});\nImage.propTypes = {\n value: PropTypes.oneOfType([PropTypes.arrayOf(imageShape), imageShape]),\n};\n\nexport default Image;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty } from \"lodash\";\n\nfunction Url({ value }) {\n return !isEmpty(value) ? (\n \n {value.text || value.url}\n \n ) : null;\n}\nUrl.propTypes = {\n value: PropTypes.shape({\n url: PropTypes.string.isRequired,\n text: PropTypes.string,\n }),\n};\n\nexport default Url;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport GenericValueList from \"./helpers/GenericValueList\";\n\nfunction File({ value }) {\n return (\n (\n \n \n {file.extension}\n \n {file.name}\n \n )}\n />\n );\n}\nFile.propTypes = {\n value: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string,\n id: PropTypes.string,\n extension: PropTypes.string,\n }),\n ),\n};\n\nexport default File;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport GenericValueList from \"./helpers/GenericValueList\";\n\nimport styles from \"./showFields.module.css\";\n\nfunction Relation({ value, property }) {\n return (\n (\n \n {displayValue}\n \n )}\n />\n );\n}\nconst relationPropType = PropTypes.shape({\n id: PropTypes.string,\n displayValue: PropTypes.string,\n});\nRelation.propTypes = {\n value: PropTypes.oneOfType([\n PropTypes.arrayOf(relationPropType),\n relationPropType,\n ]),\n property: PropTypes.shape({\n related_app_id: PropTypes.string,\n }),\n};\n\nexport default Relation;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty } from \"lodash\";\n\nimport { defaultImageUrl } from \"./Image\";\nimport GenericValueList from \"./helpers/GenericValueList\";\n\nconst fallbackImageUrl = `https://${location.host}/assets/misc/profile_50x50.jpg`;\n\nfunction imageLoadingError({ currentTarget }) {\n currentTarget.onerror = null; // prevents looping\n if (currentTarget.src !== fallbackImageUrl)\n currentTarget.src = fallbackImageUrl;\n}\n\nfunction MemberLink({ id, imageId, displayValue, thumbnailUrl }) {\n const image = (\n \n );\n\n return (\n <>\n {id ? (\n \n {image}\n {displayValue}\n \n ) : (\n \n {image}\n \n {window.Preload.current_network.config.anonymize_membership ===\n \"disabled\"\n ? displayValue\n : window.Preload.current_network.config.anonymize_membership_name}\n \n \n )}\n \n );\n}\n// id is null if the underlying Membership is deleted\nMemberLink.propTypes = {\n id: PropTypes.string,\n displayValue: PropTypes.string,\n imageId: PropTypes.string,\n thumbnailUrl: PropTypes.string, // for storybook\n};\n\nfunction MembershipRelation({ value, options }) {\n return (\n \n );\n}\nMembershipRelation.propTypes = {\n value: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.shape(MemberLink.propTypes)),\n PropTypes.shape(MemberLink.propTypes),\n ]),\n};\n\nexport default MembershipRelation;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { get } from \"lodash\";\n\nimport styles from \"./showFields.module.css\";\n\nfunction DateView({ value, displayValue }) {\n return (\n \n );\n}\nDateView.propTypes = {\n value: PropTypes.string,\n displayValue: PropTypes.string,\n};\n\nexport default DateView;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty } from \"lodash\";\n\nimport styles from \"./showFields.module.css\";\n\nfunction Statistics({ value }) {\n return !isEmpty(value) ? (\n \n \n {value.view_count}\n
\n ) : null;\n}\nStatistics.propTypes = {\n value: PropTypes.shape({\n view_count: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n }),\n};\n\nexport default Statistics;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty, compact } from \"lodash\";\n\nimport styles from \"./showFields.module.css\";\n// TODO: optional show map\nfunction Address({ value = {}, property = {} }) {\n return (\n
\n {property.with_name && !isEmpty(value.name) ? (\n {value.name}\n ) : null}\n \n {compact([value.street, value.number]).join(\" \")}\n \n \n {compact([value.zip, value.city]).join(\" \")}\n \n {!isEmpty(value.country) ? (\n {value.country}\n ) : null}\n
\n );\n}\nAddress.propTypes = {\n value: PropTypes.shape({\n name: PropTypes.string,\n street: PropTypes.string,\n number: PropTypes.string,\n zip: PropTypes.string,\n city: PropTypes.string,\n country: PropTypes.string,\n }),\n property: PropTypes.shape({\n with_name: PropTypes.bool,\n }),\n};\n\nexport default Address;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { unescape } from \"lodash\";\n\nimport styles from \"./showFields.module.css\";\n\nfunction Html({ value }) {\n return (\n \n );\n}\n\nHtml.propTypes = {\n value: PropTypes.string,\n};\n\nexport default Html;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { get, isEmpty } from \"lodash\";\n\nimport Text from \"../properties/show/Text\";\nimport Email from \"../properties/show/Email\";\nimport Image from \"../properties/show/Image\";\nimport Url from \"../properties/show/Url\";\nimport File from \"../properties/show/File\";\nimport Selection from \"../properties/show/Selection\";\nimport Relation from \"../properties/show/Relation\";\nimport MembershipRelation from \"../properties/show/MembershipRelation\";\nimport DateView from \"../properties/show/DateView\";\nimport Statistics from \"../properties/show/Statistics\";\nimport Address from \"../properties/show/Address\";\nimport Tag from \"../properties/show/Tag\";\nimport Html from \"../properties/show/Html\";\nimport Headline from \"../properties/show/Headline\";\n\nconst PROPERTIES = {\n address: Address,\n email: Email,\n image: Image,\n membership: MembershipRelation,\n selection: Selection,\n text: Text,\n url: Url,\n number: Text,\n tag: Tag,\n file: File,\n date: DateView,\n statistics: Statistics,\n html: Html,\n relation: Relation,\n headline: Headline,\n};\n\nfunction PropertyShow({ property, options, item }) {\n const type = get(property, \"type\");\n const name = get(property, \"name\");\n const value = get(item, [\"values\", name]);\n const displayValue =\n get(item, [\"values\", \"$_displayValues_\", name]) ||\n get(item, [\"display_values\", name]);\n\n const Component = PROPERTIES[type];\n if (Component) {\n if (isEmpty(value) && isEmpty(displayValue)) return null;\n\n return (\n \n );\n } else {\n return
Unknown property type
;\n }\n}\nPropertyShow.propTypes = {\n property: PropTypes.shape({\n type: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n }),\n item: PropTypes.shape({\n values: PropTypes.shape({\n $_displayValues_: PropTypes.object,\n // this includes all plain values under the name as key\n }).isRequired,\n display_values: PropTypes.object,\n }),\n options: PropTypes.object,\n};\n\nexport default PropertyShow;\n","import React, { Fragment } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Field, FormSection } from \"redux-form\";\nimport { map } from \"lodash\";\nimport classnames from \"classnames\";\n\nimport styles from \"./editFields.module.css\";\nimport SimpleInput from \"components/appCreator/items/form/SimpleInput\";\nimport SelectionField from \"./SelectionField\";\nimport FieldError from \"components/appCreator/items/form/FieldError\";\n\nconst STATES = {\n Deutschland: [\n \"Baden-Württemberg\",\n \"Bayern\",\n \"Berlin\",\n \"Brandenburg\",\n \"Bremen\",\n \"Hamburg\",\n \"Hessen\",\n \"Mecklenburg-Vorpommern\",\n \"Niedersachsen\",\n \"Nordrhein-Westfalen\",\n \"Rheinland-Pfalz\",\n \"Saarland\",\n \"Sachsen\",\n \"Sachsen-Anhalt\",\n \"Schleswig-Holstein\",\n \"Thüringen\",\n ],\n};\n\nfunction createCountrySelectorFor(country) {\n function Select({\n className,\n id,\n required,\n input,\n meta: { error },\n placeholder,\n }) {\n return (\n \n ({\n value: state,\n label: state,\n }))}\n id={id}\n />\n {error && }\n \n );\n }\n\n Select.propTypes = {\n className: PropTypes.string,\n id: PropTypes.string,\n placeholder: PropTypes.string,\n required: PropTypes.bool,\n input: PropTypes.object,\n meta: PropTypes.shape({ error: FieldError.propTypes.error }),\n };\n\n return Select;\n}\n\nconst DEFAULT_LABELS = {\n name: \"Name\",\n street: \"Straße\",\n number: \"Nr.\",\n zip: \"PLZ\",\n city: \"Stadt\",\n state: \"Bundesland\",\n country: \"Land\",\n};\n\nfunction AddressField({\n name,\n disabled,\n required = {},\n with_name,\n labels = DEFAULT_LABELS,\n force_country,\n id,\n}) {\n const placeholder = (name) =>\n required[name] ? `${labels[name]} *` : labels[name];\n\n function fieldFor(fieldName, { className, ...remainingProps } = {}) {\n return (\n \n );\n }\n\n return (\n \n {with_name ? (\n
\n {fieldFor(\"name\", { id: id, wrapperClassName: \"flex-1\" })}\n
\n ) : null}\n
\n {fieldFor(\"street\", {\n id: with_name ? null : id,\n wrapperClassName: \"flex-1\",\n })}\n {fieldFor(\"number\", { wrapperClassName: \"w-24\" })}\n
\n
\n {fieldFor(\"zip\", { wrapperClassName: \"w-36\" })}\n {fieldFor(\"city\", { wrapperClassName: \"flex-1\" })}\n
\n \n {fieldFor(\"state\", {\n wrapperClassName: \"flex-1\",\n component: STATES[force_country]\n ? createCountrySelectorFor(force_country)\n : SimpleInput,\n })}\n \n
\n {fieldFor(\"country\", {\n className: classnames(`property-${name}-name form-input`),\n placeholder: force_country || placeholder(\"country\"),\n disabled: !!force_country || disabled,\n wrapperClassName: \"flex-1\",\n })}\n
\n
\n );\n}\n\nAddressField.propTypes = {\n name: PropTypes.string.isRequired,\n required: PropTypes.objectOf(PropTypes.bool),\n force_country: PropTypes.string,\n labels: PropTypes.objectOf(PropTypes.string),\n with_name: PropTypes.bool,\n id: PropTypes.string,\n disabled: PropTypes.bool,\n};\n\nexport default AddressField;\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { Field } from \"redux-form\";\n\nimport styles from \"./editFields.module.css\";\nimport SimpleInput from \"components/appCreator/items/form/SimpleInput\";\n\nfunction EmailField({ name, required, id, disabled }) {\n return (\n \n );\n}\nEmailField.propTypes = {\n name: PropTypes.string.isRequired,\n required: PropTypes.bool,\n id: PropTypes.string,\n disabled: PropTypes.bool,\n};\n\nexport default EmailField;\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { Field } from \"redux-form\";\n\nimport FileUploadField from \"components/shared/fields/FileUploadField\";\nimport styles from \"./editFields.module.css\";\n\nfunction FileField({ name, required, multiple, disabled }) {\n return (\n \n );\n}\nFileField.propTypes = {\n name: PropTypes.string.isRequired,\n required: PropTypes.bool,\n multiple: PropTypes.bool,\n disabled: PropTypes.bool,\n};\n\nexport default FileField;\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { Field } from \"redux-form\";\nimport { isString, isNumber } from \"lodash\";\n\nimport styles from \"./editFields.module.css\";\nimport SimpleInput from \"components/appCreator/items/form/SimpleInput\";\n\nconst round = (value, precision = 0) => {\n if (isNumber(value)) return value.toFixed(precision);\n if (isString(value)) return Number.parseFloat(value).toFixed(precision);\n\n return value;\n};\n\nfunction NumberInput({ input, precision, ...otherProps }) {\n return (\n {\n input.onChange(round(e.target.value, precision) * 1);\n input.onBlur(e);\n }}\n />\n );\n}\n\nNumberInput.propTypes = {\n precision: PropTypes.number,\n input: PropTypes.shape({\n onChange: PropTypes.func,\n onBlur: PropTypes.func,\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n }),\n};\n\nfunction NumberField({\n name,\n required,\n id,\n prefix,\n postfix,\n precision,\n disabled,\n max,\n min,\n}) {\n return (\n \n );\n}\n\nNumberField.propTypes = {\n name: PropTypes.string.isRequired,\n required: PropTypes.bool,\n id: PropTypes.string,\n prefix: PropTypes.string,\n postfix: PropTypes.string,\n precision: PropTypes.number,\n disabled: PropTypes.bool,\n max: PropTypes.number,\n min: PropTypes.number,\n};\n\nexport default NumberField;\n","import React, { Fragment } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Field } from \"redux-form\";\nimport {\n map,\n get,\n find,\n isArray,\n isNil,\n castArray,\n flatMap,\n isEmpty,\n reject,\n includes,\n without,\n uniq,\n} from \"lodash\";\nimport Select from \"react-select\";\n\nimport styles from \"./editFields.module.css\";\nimport FieldError from \"components/appCreator/items/form/FieldError\";\n\n// Extract the value prop from the selected react-select value\n// { value: \"dr\", label: \"Dr.\" } => \"dr\"\n// [{ value: \"dr\", label: \"Dr.\" }] => [\"dr\"]\nconst normalizeValue = (value, multiple) => {\n if (value === null) return [];\n if (isArray(value)) return flatMap(value, normalizeValue);\n return multiple ? [get(value, \"value\")] : get(value, \"value\");\n};\n\nconst createFormatValue = (options) =>\n // Map option identifiers, like [\"dr\"], to their options\n // used in react-select, like [{ value: \"dr\", label: \"Dr.\" }]\n function formatValue(value) {\n if (value === null) return [];\n if (isArray(value)) return map(value, formatValue);\n\n return find(options, { value });\n };\n\nexport function SelectAdapter({\n input,\n meta: { error },\n options,\n multiple,\n required,\n id,\n disabled,\n className,\n placeholder,\n}) {\n return (\n \n e.preventDefault()}\n className={className}\n options={reject(options, (option) => isEmpty(option.value))}\n isMulti={multiple}\n isClearable={!required}\n isDisabled={disabled}\n inputId={id}\n placeholder={\n placeholder || I18n.t(\"js.apps.properties.relation.placeholder\")\n }\n noOptionsMessage={() => I18n.t(\"plugins.select2.no_match\")}\n classNamePrefix={\"Select\"}\n styles={{ menu: (base) => ({ ...base, zIndex: 999 }) }}\n />\n {error && }\n \n );\n}\n\nSelectAdapter.propTypes = {\n input: PropTypes.object,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n value: PropTypes.string,\n label: PropTypes.string,\n }),\n ),\n multiple: PropTypes.bool,\n required: PropTypes.bool,\n id: PropTypes.string,\n placeholder: PropTypes.string,\n disabled: PropTypes.bool,\n meta: PropTypes.shape({ error: FieldError.propTypes.error }),\n};\n\nfunction CheckboxRadioAdapter({\n input,\n meta: { error },\n options,\n multiple,\n disabled,\n required,\n}) {\n const type = multiple ? \"checkbox\" : \"radio\";\n const value = castArray(input.value);\n\n const onChange = (e) => {\n if (!multiple) return input.onChange(e.target.dataset.value);\n\n if (e.target.checked) {\n input.onChange(uniq([...value, e.target.dataset.value]));\n } else {\n input.onChange(without(value, e.target.dataset.value));\n }\n };\n\n const finalOptions =\n !multiple && !required\n ? [\n {\n value: \"-1\",\n label: I18n.t(\"js.apps.properties.selection.no_selection\"),\n },\n ...options,\n ]\n : options;\n\n return map(finalOptions, (option, i) => (\n \n {isEmpty(option.value) ? (\n
{option.label}
\n ) : (\n \n )}\n {error && }\n
\n ));\n}\n\nCheckboxRadioAdapter.propTypes = SelectAdapter.propTypes;\n\nfunction SelectionField({\n name,\n required,\n options,\n multiple,\n disabled,\n select: rawSelect,\n id,\n placeholder,\n}) {\n // select is default true\n const select = isNil(rawSelect) ? true : rawSelect;\n\n return (\n (select ? normalizeValue(value, multiple) : value)}\n format={select ? createFormatValue(options) : null}\n id={id}\n props={{ className: `${styles.Selection} property-${name} flex-1` }}\n />\n );\n}\n\nSelectionField.propTypes = {\n name: PropTypes.string.isRequired,\n select: PropTypes.bool,\n ...SelectAdapter.propTypes,\n};\n\nexport default SelectionField;\n","import { createApiAction } from \"helpers/api\";\nimport { stringify } from \"query-string\";\nimport { isNil, omitBy } from \"lodash\";\n\nexport const NAMESPACE = \"tags\";\n\nexport const fetchTags = createApiAction({\n method: \"GET\",\n endpoint: ({ q, tagParents, excludeNew }) =>\n `/tags/find?${stringify(\n omitBy({ q, tag_parents: tagParents, exclude_new: excludeNew }, isNil),\n )}`,\n baseType: `${NAMESPACE}/SEARCH`,\n});\n","import React, { createContext, Fragment, useContext, useMemo } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useDispatch } from \"react-redux\";\nimport {\n map,\n castArray,\n isArray,\n compact,\n debounce,\n startsWith,\n isEmpty,\n} from \"lodash\";\nimport { Field } from \"redux-form\";\nimport AsyncSelect from \"react-select/async\";\nimport AsyncCreatableSelect from \"react-select/async-creatable\";\n\nimport styles from \"./editFields.module.css\";\nimport { fetchTags } from \"actions/tags\";\nimport FieldError from \"components/appCreator/items/form/FieldError\";\n\nconst normalizeValue = (value) => {\n if (value === null) return null; // When nothing is selected\n if (isArray(value)) return map(value, normalizeValue);\n\n return {\n id: value.value,\n name: value.label,\n };\n};\n\nconst formatValue = (state) =>\n map(compact(castArray(state)), ({ id, name }) => ({\n value: id,\n label: name,\n }));\n\nfunction formatCreateLabel(label) {\n return (\n \n {label}\n \n );\n}\n\nfunction SelectAdapter({\n input,\n meta: { error },\n required,\n id,\n disabled,\n className,\n internal,\n multiple,\n allowCreate,\n}) {\n const tagParentsFromContext = useContext(TagParentsContext);\n if (internal && isEmpty(tagParentsFromContext))\n console.error(\n \"TagField is supposed to be internal, but no tag parents were provided via TagParentsContext\",\n );\n const tagParents =\n internal && !isEmpty(tagParentsFromContext)\n ? tagParentsFromContext.join(\",\")\n : null;\n\n const dispatch = useDispatch();\n const loadOptions = useMemo(\n () =>\n debounce(async (value, callback) => {\n const { payload } = await dispatch(\n fetchTags({\n q: value,\n tagParents,\n excludeNew: true,\n }),\n );\n callback(formatValue(payload));\n }, 375),\n [tagParents, input.name],\n );\n\n let props = {\n ...input,\n // workaround for mobile,\n // see ticket #9930 or issue https://github.com/JedWatson/react-select/issues/2692#issuecomment-395743446\n onBlur: (e) => e.preventDefault(),\n isClearable: !required,\n isDisabled: disabled,\n inputId: id,\n placeholder: I18n.t(\"js.tag_select.placeholder\"),\n noOptionsMessage: ({ inputValue }) =>\n isEmpty(inputValue)\n ? I18n.t(\"plugins.select2.enter_more_characters\", { count: 1 })\n : I18n.t(\"plugins.select2.no_match\"),\n className,\n loadOptions: (value, callback) => {\n loadOptions(value, callback);\n },\n formatOptionLabel: ({ value, label }) =>\n startsWith(value, \"new\") ? formatCreateLabel(label) : label,\n styles: { menu: (base) => ({ ...base, zIndex: 999 }) },\n isMulti: multiple,\n // creation props\n formatCreateLabel: formatCreateLabel,\n createOptionPosition: \"first\",\n onCreateOption: (value) => {\n const newValue = {\n label: value,\n value: `new_${value}`,\n new: true,\n };\n input.onChange([...input.value, newValue]);\n },\n };\n\n const SelectComponent = allowCreate ? AsyncCreatableSelect : AsyncSelect;\n\n return (\n \n \n {error && }\n \n );\n}\nSelectAdapter.propTypes = {\n input: PropTypes.object,\n required: PropTypes.bool,\n id: PropTypes.string,\n disabled: PropTypes.bool,\n multiple: PropTypes.bool,\n allowCreate: PropTypes.bool,\n className: PropTypes.string,\n meta: PropTypes.shape({ error: FieldError.propTypes.error }),\n};\n\nexport const TagParentsContext = createContext(null);\n\nfunction TagField({\n name,\n required,\n internal,\n disabled,\n id,\n appId,\n allowCreate = true,\n multiple = true,\n tagParents,\n}) {\n const field = (\n \n );\n if (appId) {\n console.warn(\n \"TagField appId prop is deprecated, \" +\n \"please use tagParents prop or TagParentsContext.Provider instead\",\n );\n return (\n \n {field}\n \n );\n }\n\n if (tagParents) {\n return (\n \n {field}\n \n );\n }\n\n return field;\n}\nTagField.propTypes = {\n name: PropTypes.string.isRequired,\n tagParents: PropTypes.arrayOf(PropTypes.string),\n ...SelectAdapter.propTypes,\n};\n\nexport default TagField;\n","import React, { useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Field } from \"redux-form\";\n\nimport FieldError from \"components/appCreator/items/form/FieldError\";\nimport SimpleInput from \"components/appCreator/items/form/SimpleInput\";\nimport MarkdownEditor from \"components/shared/markdownEditor\";\n\nimport styles from \"./editFields.module.css\";\nimport { isPlainObject, isFunction } from \"lodash\";\n\nfunction MarkdownEditorAdapter({ input, meta, disabled, inputRef }) {\n const setComposerRefCallback = useCallback(\n (newRef) => {\n if (isFunction(inputRef)) inputRef(newRef);\n else if (isPlainObject(inputRef)) inputRef.current = newRef;\n },\n [inputRef],\n );\n\n return (\n
\n \n {meta.error && }\n
\n );\n}\n\nMarkdownEditorAdapter.propTypes = {\n input: PropTypes.shape({\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n value: PropTypes.string,\n name: PropTypes.string,\n }),\n meta: PropTypes.shape(FieldError.propTypes),\n disabled: PropTypes.bool,\n id: PropTypes.string,\n inputRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]),\n};\n\nfunction TextField({\n name,\n required,\n multiline,\n disabled,\n id,\n autoFocus,\n inputRef,\n maxlength,\n}) {\n const props = multiline\n ? {\n component: MarkdownEditorAdapter,\n inputRef: inputRef,\n }\n : { component: SimpleInput, ref: inputRef };\n\n return (\n \n );\n}\n\nTextField.propTypes = {\n name: PropTypes.string.isRequired,\n required: PropTypes.bool,\n multiline: PropTypes.bool,\n disabled: PropTypes.bool,\n id: PropTypes.string,\n autoFocus: PropTypes.bool,\n inputRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]),\n maxlength: PropTypes.number,\n};\n\nexport default TextField;\n","import {\n isPlainObject,\n some,\n each,\n get,\n map,\n find,\n isEmpty,\n isArray,\n compact,\n split,\n flatten,\n values,\n} from \"lodash\";\n\nexport const isPropRequired = (prop) =>\n isPlainObject(get(prop, \"required\"))\n ? some(values(prop.required))\n : !!get(prop, \"required\");\n\n// TODO maybe remove?\nexport const transformPropsForReduxForm = (item, properties) => {\n let values = {};\n each(get(item, \"values\"), (value, key) => {\n const prop = find(properties, (prop) => prop.name === key);\n values[key] = transformProp(\n get(prop, \"type\"),\n get(item, [\"display_values\", key])\n ? get(item, [\"display_values\", key])\n : value,\n );\n });\n return values;\n};\n\n// TODO maybe remove?\nexport const transformPropsFromReduxForm = (propType, properties, values) => {\n const propsForType = getPropsForType(propType, properties);\n let transformedValues = {};\n\n each(propsForType, (prop) => {\n const value = get(values, get(prop, \"name\"));\n if (!isEmpty(value)) {\n transformedValues[get(prop, \"name\")] = isArray(value)\n ? flatten(map(value, (val) => transformValue(propType, val)))\n : transformValue(propType, value);\n }\n });\n\n return transformedValues;\n};\n\nexport const getPropsForType = (type, properties) =>\n compact(\n map(properties, (prop) => {\n if (get(prop, \"type\") === type) {\n return prop;\n }\n }),\n );\n\nexport const transformValue = (type, value) => {\n switch (type) {\n case \"image\":\n return [\n {\n id: get(value, \"id\"),\n state: get(value, \"state\"),\n },\n ];\n case \"file\":\n return {\n id: get(value, \"id\"),\n state: get(value, \"state\"),\n };\n case \"tag\": {\n let isNew = split(get(value, \"value\"), \"_\")[0] === \"new\";\n\n const name = isNew ? get(value, \"label\")[2] : get(value, \"label\");\n\n isNew = isNew ? { new: true } : {};\n\n return { id: get(value, \"value\"), name, ...isNew };\n }\n case \"selection\":\n return get(value, \"value\");\n case \"html\":\n return value;\n case \"relation\":\n case \"membership\":\n return {\n id: get(value, \"value\"),\n displayValue: get(value, \"label\"),\n };\n }\n};\n\nexport const transformProp = (type, value) => {\n switch (type) {\n case \"url\":\n return get(value, \"url\");\n case \"tag\":\n return map(value, (tag) => ({ value: tag.id, label: tag.name }));\n case \"selection\":\n case \"relation\":\n case \"membership\":\n return isArray(value)\n ? map(value, (v) => ({\n value: v.id,\n label: v.displayValue,\n }))\n : {\n value: value.id,\n label: value.displayValue,\n };\n default:\n return value;\n }\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport styles from \"./showFields.module.css\";\n\nfunction Headline({ property }) {\n return (\n
\n {React.createElement(`h${property.size || \"3\"}`, null, property.label)}\n
\n );\n}\nHeadline.propTypes = {\n property: PropTypes.shape({\n label: PropTypes.string,\n size: PropTypes.number,\n }),\n};\n\nexport default Headline;\n","import React, { createContext, useContext } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { get } from \"lodash\";\n\nimport GenericValueList from \"./helpers/GenericValueList\";\n\n// Don't link selection values by default\n// Provide url function via SelectionUrlContext if you want to link them\nexport function selectionFilterUrl() {\n return null;\n}\nexport const SelectionUrlContext = createContext(selectionFilterUrl);\n\nfunction MaybeLink({ href, children }) {\n return href ? {children} : children;\n}\nMaybeLink.propTypes = {\n href: PropTypes.string,\n children: PropTypes.node.isRequired,\n};\n\nfunction Selection({ displayValue, property }) {\n const selectionFilterUrl = useContext(SelectionUrlContext);\n\n return (\n (\n \n {get(value, [\"displayValue\"]) || get(value, [\"label\"]) || value}\n \n )}\n />\n );\n}\nSelection.propTypes = {\n displayValue: PropTypes.oneOfType([\n PropTypes.arrayOf(\n PropTypes.shape({ label: PropTypes.string, value: PropTypes.string }),\n ),\n PropTypes.arrayOf(PropTypes.string),\n ]),\n property: PropTypes.shape({\n name: PropTypes.string.isRequired,\n }),\n};\n\nexport default Selection;\n","import React, { createContext, useContext } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { get } from \"lodash\";\nimport classnames from \"classnames\";\n\nimport { currentAppUrlSelector } from \"selectors/navigation\";\nimport GenericValueList from \"./helpers/GenericValueList\";\nimport { stringify } from \"query-string\";\nimport SharedTag from \"components/shared/Tag\";\n\nexport const tagFilterUrl = ({ name: q }) => `/search?${stringify({ q })}`;\nexport const TagUrlContext = createContext(tagFilterUrl);\n\nfunction Tag({ value, options, property }) {\n const tagUrl = useContext(TagUrlContext);\n const showAsLink = get(options, \"showAsLink\") || false;\n\n return (\n \n showAsLink ? (\n #{tag.name}\n ) : (\n \n )\n }\n />\n );\n}\n\nTag.propTypes = {\n value: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string,\n id: PropTypes.string,\n }),\n ),\n appUrl: PropTypes.string,\n options: PropTypes.shape({ showAsLink: PropTypes.bool }),\n property: PropTypes.shape({\n name: PropTypes.string.isRequired,\n }),\n};\n\nexport default connect((state) => ({\n appUrl: currentAppUrlSelector(state),\n}))(Tag);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\n// TODO Application.markdown escapes colored text\nfunction Text({ value, property = {} }) {\n return property.multiline ? (\n \n ) : (\n
{value}
\n );\n}\n\nText.propTypes = {\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n property: PropTypes.shape({ multiline: PropTypes.bool }),\n};\nexport default Text;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { map, castArray, compact, isEmpty } from \"lodash\";\nimport classnames from \"classnames\";\n\nfunction GenericValueList({ values, component, listItemStyle, listStyle }) {\n return (\n \n {map(compact(castArray(values)), (val, i) => (\n
  • \n {component(val)}\n
  • \n ))}\n \n );\n}\n\nGenericValueList.propTypes = {\n values: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n component: PropTypes.func.isRequired,\n listItemStyle: PropTypes.string,\n listStyle: PropTypes.string,\n};\n\nexport default GenericValueList;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { get, isEmpty, map } from \"lodash\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { solid } from \"@fortawesome/fontawesome-svg-core/import.macro\";\n\nexport default function Breadcrumb({ folder, handleNavigate }) {\n return (\n
      \n {map(get(folder, [\"folder_path\"], []), (parentFolder, i) => (\n
    • \n {\n e.preventDefault();\n handleNavigate({ id: parentFolder.id });\n }\n : null\n }\n className={\"mr-3\"}\n >\n {i === 0 ? (\n \n ) : (\n parentFolder.name\n )}\n \n \n
    • \n ))}\n {folder ? (\n
    • \n {isEmpty(get(folder, [\"folder_path\"])) ? (\n \n ) : null}\n {folder.name}\n
    • \n ) : (\n
    • \n \n
    • \n )}\n
    \n );\n}\nBreadcrumb.propTypes = {\n folder: PropTypes.shape({\n name: PropTypes.string.isRequired,\n folder_path: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n }),\n ),\n }),\n handleNavigate: PropTypes.func,\n};\n","import { useQuery } from \"react-query\";\n\nexport const useFetchFolder = (id, namespace = \"folders\") => {\n return useQuery(`/api/storage/${namespace}/${id}?limit=1000`);\n};\n","import React, { useState, useEffect, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport {\n get,\n isEmpty,\n difference,\n map,\n includes,\n endsWith,\n split,\n orderBy,\n compact,\n} from \"lodash\";\n\nimport Modal from \"components/shared/Modal\";\nimport useItemBatchSelection from \"components/shared/hooks/useItemBatchSelection\";\nimport useFolderResource from \"../hooks/useFolderResource\";\nimport FolderContentsTable from \"../table/FolderContentsTable\";\nimport SelectableFolderRow from \"../table/SelectableFolderRow\";\nimport SelectableFileRow from \"../table/SelectableFileRow\";\n\nfunction FileSelectModal({ closeModal, currentRootFolder, onSelectFiles }) {\n const { loading, currentFolder, handleNavigate, breadcrumb } =\n useFolderResource({ currentRootFolder });\n\n const headerRef = useRef(null);\n const [isHoveringHeader, setIsHoveringHeader] = useState(false);\n const [sortDirection, setSortDirection] = useState(1);\n\n useEffect(() => {\n if (headerRef.current !== null) {\n headerRef.current.onmouseover = () => setIsHoveringHeader(true);\n headerRef.current.onmouseleave = () => setIsHoveringHeader(false);\n }\n }, [headerRef.current]);\n const files = get(currentFolder, \"files\");\n const ids = map(files, \"id\");\n\n const [selectedIds, selectIds] = useState([]);\n\n const onSelectItem = useItemBatchSelection(ids, selectedIds, selectIds);\n\n const allSelected = difference(ids, selectedIds).length === 0;\n\n const selectAll = (e) => {\n if (!e.target.checked) {\n selectIds([]);\n } else {\n selectIds(ids);\n }\n };\n\n const handleSort = () => {\n setSortDirection(sortDirection === 1 ? -1 : 1);\n };\n\n const contents = !isEmpty(currentFolder)\n ? [\n ...map(\n orderBy(\n get(currentFolder, \"subfolders\"),\n [\"name\"],\n [{ 1: \"asc\", [-1]: \"desc\" }[sortDirection]],\n ),\n (folder) => ({\n ...folder,\n type: split(folder.i18n_type, \".\")[0],\n }),\n ),\n ...map(\n orderBy(\n get(currentFolder, \"files\"),\n [\"name\"],\n [{ 1: \"asc\", [-1]: \"desc\" }[sortDirection]],\n ),\n (file) => ({\n ...file,\n type: \"file\",\n }),\n ),\n ]\n : null;\n\n const rowProps = (item) => {\n if (endsWith(item.type, \"folder\")) {\n return {\n disableSelection: true,\n handleNavigate: () =>\n handleNavigate({ id: item.id, namespace: item.namespace }),\n };\n } else {\n return {\n onSelectFile: onSelectItem,\n isSelected: includes(selectedIds, item.id),\n showCheckbox: !isEmpty(selectedIds),\n navigateDisabled: true,\n };\n }\n };\n\n const selectAllCheckbox = (\n \n {(isHoveringHeader || !isEmpty(selectedIds)) && !isEmpty(ids) ? (\n \n ) : null}\n \n );\n\n const selectedFiles = compact(\n map(files, (file) => (includes(selectedIds, file.id) ? file : null)),\n );\n\n return (\n {\n e.preventDefault();\n onSelectFiles(selectedFiles);\n closeModal();\n },\n closeModal: (e) => {\n e.preventDefault();\n closeModal();\n },\n }}\n >\n {breadcrumb}\n
    \n \n
    \n \n );\n}\nFileSelectModal.propTypes = {\n closeModal: PropTypes.func,\n onSelectFiles: PropTypes.func,\n currentRootFolder: PropTypes.object,\n};\n\nexport default FileSelectModal;\n","import React, { Fragment, useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport preventDefault from \"../../../helpers/components/preventDefault\";\nimport FileSelectModal from \"./FileSelectModal\";\n\nfunction FilesEditorView({ currentRootFolder, onSelectFiles }) {\n const [showModal, setShowModal] = useState(false);\n const closeModal = () => setShowModal(false);\n\n return (\n \n {\" \"}\n {I18n.t(\"js.or\")} \n setShowModal(true))}\n >\n \n {I18n.t(\"js.files.file_selector.select\")}\n \n {showModal ? (\n \n ) : null}\n \n );\n}\n\nFilesEditorView.propTypes = {\n currentRootFolder: PropTypes.object,\n onSelectFiles: PropTypes.func,\n};\n\nexport default FilesEditorView;\n","import React, { useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { get } from \"lodash\";\n\nimport { selectFolder } from \"actions/files\";\nimport { currentFolderMetaSelector } from \"selectors/folders\";\nimport Breadcrumb from \"../Breadcrumb\";\nimport { useFetchFolder } from \"../api\";\n\nfunction useFolderResource({ currentRootFolder }) {\n useEffect(() => {\n dispatch(\n selectFolder({\n id: currentFolderId,\n namespace: currentFolderNamespace,\n }),\n );\n }, [currentRootFolder.id]);\n\n const { id: currentRootFolderId, namespace: currentRootFolderNamespace } =\n currentRootFolder;\n const currentFolderMeta = useSelector(currentFolderMetaSelector);\n const currentFolderId = get(currentFolderMeta, [\"id\"], currentRootFolderId);\n const currentFolderNamespace = get(\n currentFolderMeta,\n [\"namespace\"],\n currentRootFolderNamespace,\n );\n\n const { data: currentFolder, isLoading: loading } = useFetchFolder(\n currentFolderId,\n currentFolderNamespace,\n );\n\n const dispatch = useDispatch();\n\n const handleNavigate = ({ id, namespace }) => {\n dispatch(selectFolder({ id, namespace }));\n };\n\n const breadcrumb = (\n \n );\n\n return { loading, currentFolder, handleNavigate, breadcrumb };\n}\n\nexport default useFolderResource;\n","import React, { Fragment } from \"react\";\nimport PropTypes from \"prop-types\";\nimport moment from \"moment-timezone\";\nimport { get, map } from \"lodash\";\n\nimport humanizeFileSize from \"../../../helpers/files/humanizeFileSize\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { regular } from \"@fortawesome/fontawesome-svg-core/import.macro\";\n\nconst isImage = (contentType) =>\n contentType && contentType.indexOf(\"image/\") === 0;\nconst isPDF = (contentType) => contentType === \"application/pdf\";\nconst isOpenable = (contentType) => isImage(contentType) || isPDF(contentType);\n\nexport function FileName({\n id,\n handleNavigate,\n name,\n version,\n navigateDisabled,\n}) {\n let displayName = name;\n if (name.length > 71) {\n const firstHalf = name.slice(0, 35);\n const secondHalf = name.slice(-35, name.length);\n displayName = (\n <>\n {firstHalf}\n …\n {secondHalf}\n \n );\n }\n return (\n \n {navigateDisabled ? (\n \n {displayName}\n \n ) : (\n \n {displayName}\n \n )}\n {version && version.major ? (\n v{version.major}\n ) : null}\n \n );\n}\nFileName.propTypes = {\n id: PropTypes.string,\n handleNavigate: PropTypes.func,\n name: PropTypes.string,\n version: PropTypes.shape({ major: PropTypes.number }),\n navigateDisabled: PropTypes.bool,\n};\n\nfunction FileInfo({\n id,\n name,\n handleNavigate,\n version,\n size,\n author,\n updatedAt,\n extraColumns,\n profile,\n contentType,\n navigateDisabled,\n}) {\n const openUrl = `/api/storage/files/${id}/get/${name}?_=v${get(\n version,\n \"major\",\n \"0\",\n )}`;\n const downloadUrl = `${openUrl}&download`;\n\n return (\n \n \n {map(extraColumns, ({ Data }, i) => (\n \n ))}\n {humanizeFileSize(size)}\n \n {get(author, \"deleted\")\n ? get(author, \"displayName\") ||\n window.Preload.current_network.config.anonymize_membership_name\n : get(author, \"displayName\") || get(author, \"name\") || null}\n \n \n {moment(updatedAt).calendar()}\n \n \n {isOpenable(contentType) ? (\n \n \n \n ) : null}\n \n \n \n \n \n );\n}\nFileInfo.propTypes = {\n ...FileName.propTypes,\n size: PropTypes.number,\n author: PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n displayName: PropTypes.string,\n }),\n updatedAt: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.instanceOf(Date),\n ]),\n extraColumns: PropTypes.arrayOf(\n PropTypes.shape({\n Header: PropTypes.func.isRequired,\n Data: PropTypes.func.isRequired,\n }),\n ),\n profile: PropTypes.object,\n contentType: PropTypes.string,\n};\n\nexport default FileInfo;\n","export default function humanizeFileSize(size) {\n if (!size) return \"0 B\";\n const i = Math.floor(Math.log(size) / Math.log(1024));\n return (\n (size / Math.pow(1024, i)).toFixed(i > 0 ? 2 : 0) +\n \" \" +\n [\"B\", \"kB\", \"MB\", \"GB\", \"TB\"][i]\n );\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport classNames from \"classnames\";\n\nimport FileIcon from \"../../shared/FileIcon\";\nimport FileInfo from \"./FileInfo\";\n\nconst FileRow = React.memo(function FileRow({\n id,\n name,\n extension,\n handleNavigate,\n version,\n size,\n author,\n updated_at,\n extraColumns,\n profile = {},\n className,\n content_type,\n}) {\n return (\n \n \n \n \n \n \n );\n});\n\nFileRow.propTypes = {\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n extension: PropTypes.string.isRequired,\n handleNavigate: PropTypes.func,\n version: PropTypes.shape({ major: PropTypes.number }),\n size: PropTypes.number,\n author: PropTypes.shape({\n id: PropTypes.string,\n displayName: PropTypes.string,\n }),\n updated_at: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.instanceOf(Date),\n ]),\n extraColumns: PropTypes.arrayOf(\n PropTypes.shape({\n Header: PropTypes.func.isRequired,\n Data: PropTypes.func.isRequired,\n }),\n ),\n profile: PropTypes.object,\n className: PropTypes.string,\n striped: PropTypes.bool,\n content_type: PropTypes.string,\n};\n\nexport default FileRow;\nexport const FileRowPropTypes = FileRow.propTypes;\n","import React, { useMemo } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useSelector } from \"react-redux\";\nimport { compact, find, get, map, includes } from \"lodash\";\nimport { selectFileProfileColumnFields } from \"../../../selectors/propertySets\";\nimport propertySetStyles from \"../../shared/propertySets/propertySets.module.css\";\nimport PropertyShow from \"../../appCreator/properties/PropertyShow\";\nimport Sorter from \"../../shared/tables/Sorter\";\nimport { usePropertySet } from \"../../shared/propertySets/api\";\n\nconst isSortable = (property) =>\n includes([\"date\", \"text\", \"selection\"], property.type);\n\n// Hook to build extra columns for file profile property set\n// identified by given contextId and contextType\nconst withExtraColumns = ({ contextId, contextType }) => {\n const columnFields = useSelector(selectFileProfileColumnFields);\n\n const { isLoading: fileLoading, data: fileProfilePropertySet } =\n usePropertySet({\n name: \"file_profile\",\n contextId,\n contextType,\n });\n const { isLoading: folderLoading, data: folderProfilePropertySet } =\n usePropertySet({\n name: \"folder_profile\",\n contextId,\n contextType,\n });\n\n return useMemo(() => {\n const properties = (get(fileProfilePropertySet, \"properties\") || []).concat(\n get(folderProfilePropertySet, \"properties\"),\n );\n const columnProperties = compact(\n map(columnFields, (name) => find(properties, { name })),\n );\n\n const extraColumns = map(columnProperties, (property) => {\n function Header({ handleSort, sortBy }) {\n return (\n \n \n \n );\n }\n function Data({ profile }) {\n return (\n \n {profile ? (\n \n ) : null}\n \n );\n }\n Data.propTypes = { profile: PropTypes.object };\n return { Header, Data };\n });\n\n return { extraColumns, loading: folderLoading || fileLoading };\n }, [\n columnFields,\n fileProfilePropertySet,\n folderProfilePropertySet,\n folderLoading,\n fileLoading,\n ]);\n};\n\nexport default withExtraColumns;\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport Sorter from \"../../shared/tables/Sorter\";\nimport { map, isEmpty, isNumber, filter } from \"lodash\";\nimport DefaultFileRow from \"./FileRow\";\nimport DefaultFolderRow from \"./FolderRow\";\nimport withExtraColumns from \"./withExtraColumns\";\n\nfunction Status({ t, colSpan, count, total }) {\n return (\n \n \n {I18n.t(`js.files.folder.${t}`)}\n {count !== undefined && count > 0\n ? ` (${count}${total !== undefined ? `/${total}` : \"\"})`\n : null}\n \n \n );\n}\n\nconst FolderContentsTable = React.memo(function FolderContentsTable({\n contents,\n total_files_count,\n total_subfolders_count,\n onNavigateItem,\n sortBy,\n handleSort,\n extraColumns = [],\n loading,\n error,\n FileRow = DefaultFileRow,\n FolderRow = DefaultFolderRow,\n extraPreColumn,\n headerRef,\n onlyShowName,\n skipFileAttributes,\n context,\n rowProps = () => null,\n}) {\n const filteredContents = filter(\n contents,\n (content) => content.id != undefined,\n );\n\n const handleNavigate = useCallback(\n (e) => {\n if (!onNavigateItem) return null;\n\n e.preventDefault();\n const { id, type } = e.currentTarget.dataset;\n onNavigateItem({ id, type });\n },\n [onNavigateItem],\n );\n\n const [renderTable, setRenderTable] = useState(contents?.length !== 0);\n useEffect(() => {\n if (!loading) {\n const timeoutID = setTimeout(() => {\n setRenderTable(true);\n }, 50);\n return () => clearTimeout(timeoutID);\n }\n }, [loading]);\n\n return (\n \n \n \n {extraPreColumn ? extraPreColumn : null}\n \n {!onlyShowName ? (\n <>\n {map(extraColumns, ({ Header }, i) => (\n
    \n ))}\n {!skipFileAttributes ? (\n <>\n
    \n \n \n \n \n \n {!renderTable && (\n \n )}\n {!loading && error ? (\n \n ) : null}\n {!loading && !error && isEmpty(filteredContents) ? (\n \n ) : null}\n {renderTable &&\n map(filteredContents, (item) =>\n item.type === \"file\" ? (\n \n ) : (\n \n ),\n )}\n \n
    \n \n \n \n \n \n \n \n \n \n \n ) : null}\n \n ) : null}\n
    \n );\n});\n\nFolderContentsTable.propTypes = {\n contents: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.shape(DefaultFolderRow.propTypes),\n PropTypes.shape(DefaultFileRow.propTypes),\n ]),\n ),\n total_files_count: PropTypes.number,\n total_subfolders_count: PropTypes.number,\n loading: PropTypes.bool,\n error: PropTypes.node,\n onNavigateItem: PropTypes.func,\n sortBy: PropTypes.any, // [string, number] tuple\n handleSort: PropTypes.func,\n extraColumns: PropTypes.arrayOf(\n PropTypes.shape({\n Header: PropTypes.func.isRequired,\n Data: PropTypes.func.isRequired,\n }),\n ),\n FileRow: PropTypes.elementType,\n FolderRow: PropTypes.elementType,\n extraPreColumn: PropTypes.node,\n rowProps: PropTypes.func,\n headerRef: PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\n onlyShowName: PropTypes.bool,\n skipFileAttributes: PropTypes.bool,\n};\n\nexport default FolderContentsTable;\n\nexport const FolderContentsTableWithProfile = React.memo(\n function FolderContentsTableWithProfile({\n contextId,\n contextType,\n ...tableProps\n }) {\n const { loading, extraColumns } = withExtraColumns({\n contextId,\n contextType,\n });\n\n if (loading)\n return (\n
    \n {I18n.t(\"js.files.folder.loading\")}\n
    \n );\n\n return ;\n },\n);\n\nFolderContentsTableWithProfile.propTypes = {\n contextId: PropTypes.string,\n contextType: PropTypes.string.isRequired,\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport classNames from \"classnames\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { regular } from \"@fortawesome/fontawesome-svg-core/import.macro\";\n\nconst FolderIcons = {\n folder: regular(\"folder\"),\n root_folder: regular(\"users\"),\n activitystream_folder: regular(\"earth-europe\"),\n};\n\nfunction FolderIcon({ type, muted }) {\n return (\n \n );\n}\nFolderIcon.propTypes = { type: PropTypes.string, muted: PropTypes.bool };\n\nexport default FolderIcon;\n","import React, { Fragment } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { map } from \"lodash\";\nimport preventDefault from \"helpers/components/preventDefault\";\n\nfunction FolderInfo({\n id,\n name,\n type,\n profile,\n navigateDisabled,\n handleNavigate,\n noExtraColspan,\n extraColumns,\n context,\n}) {\n return (\n \n \n {navigateDisabled ? (\n {name}\n ) : (\n handleNavigate())\n : handleNavigate\n }\n data-id={id}\n data-type={type}\n >\n {name}\n \n )}\n \n {map(extraColumns, ({ Data }, i) => (\n \n ))}\n {noExtraColspan ? null : }\n \n );\n}\n\nFolderInfo.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string,\n type: PropTypes.string,\n profile: PropTypes.object,\n navigateDisabled: PropTypes.bool,\n handleNavigate: PropTypes.func,\n noExtraColspan: PropTypes.bool,\n extraColumns: PropTypes.arrayOf(\n PropTypes.shape({\n Header: PropTypes.func.isRequired,\n Data: PropTypes.func.isRequired,\n }),\n ),\n};\n\nexport default FolderInfo;\n","import React from \"react\";\n\nimport FolderIcon from \"./FolderIcon\";\nimport PropTypes from \"prop-types\";\nimport classNames from \"classnames\";\n\nimport FolderInfo from \"./FolderInfo\";\n\nconst FolderRow = React.memo(function FolderRow({\n id,\n name,\n type,\n handleNavigate,\n extraColumns,\n profile = {},\n navigateDisabled,\n noExtraColspan,\n className,\n striped,\n context,\n}) {\n return (\n \n \n \n \n \n \n );\n});\n\nFolderRow.propTypes = {\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n handleNavigate: PropTypes.func,\n noExtraColspan: PropTypes.bool,\n extraColumns: PropTypes.arrayOf(\n PropTypes.shape({\n Header: PropTypes.func.isRequired,\n Data: PropTypes.func.isRequired,\n }),\n ),\n profile: PropTypes.object,\n navigateDisabled: PropTypes.bool,\n className: PropTypes.string,\n striped: PropTypes.bool,\n};\n\nexport const FolderRowPropTypes = FolderRow.propTypes;\nexport default FolderRow;\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport classNames from \"classnames\";\n\nimport FileIcon from \"../../shared/FileIcon\";\nimport FileInfo, { FileName } from \"./FileInfo\";\nimport { FileRowPropTypes } from \"./FileRow\";\n\nconst hiddenStyle = { opacity: 0, visibility: \"hidden\" };\n\nconst SelectableFileRow = React.memo(function SelectableFileRow({\n id,\n name,\n extension,\n handleNavigate,\n version,\n size,\n author,\n updated_at,\n extraColumns,\n profile = {},\n isSelected,\n onSelectFile,\n className,\n content_type,\n disableSelection,\n showCheckbox,\n onlyShowName,\n navigateDisabled,\n}) {\n const [hover, setHover] = useState(false);\n\n const active = hover || isSelected;\n const checkboxAvailable = (active || showCheckbox) && !disableSelection;\n\n return (\n setHover(true) : null}\n onMouseLeave={!disableSelection ? () => setHover(false) : null}\n onClick={\n !disableSelection\n ? () => {\n onSelectFile(id, true);\n }\n : null\n }\n >\n \n {\n onSelectFile(id);\n }\n : null\n }\n />\n \n \n \n \n {onlyShowName ? (\n \n ) : (\n \n )}\n \n );\n});\n\nSelectableFileRow.propTypes = {\n ...FileRowPropTypes,\n isSelected: PropTypes.bool,\n onSelectFile: PropTypes.func,\n disableSelection: PropTypes.bool,\n showCheckbox: PropTypes.bool,\n onlyShowName: PropTypes.bool,\n};\n\nexport default SelectableFileRow;\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport classNames from \"classnames\";\n\nimport FolderIcon from \"./FolderIcon\";\nimport FolderInfo from \"./FolderInfo\";\nimport { FolderRowPropTypes } from \"./FolderRow\";\n\nconst SelectableFolderRow = React.memo(function SelectableFolderRow({\n id,\n name,\n type,\n handleNavigate,\n extraColumns,\n profile = {},\n isSelected,\n onSelectFolder,\n disableSelection,\n navigateDisabled,\n noExtraColspan,\n className,\n showCheckbox,\n onlyShowName,\n context,\n}) {\n const [hover, setHover] = useState(false);\n const active = hover || isSelected;\n\n return (\n setHover(true) : null}\n onMouseLeave={!disableSelection ? () => setHover(false) : null}\n onClick={!disableSelection ? () => onSelectFolder(id, true) : null}\n >\n \n {(active || showCheckbox) && !disableSelection ? (\n onSelectFolder(id)}\n />\n ) : null}\n \n \n \n \n \n \n );\n});\n\nSelectableFolderRow.propTypes = {\n ...FolderRowPropTypes,\n isSelected: PropTypes.bool,\n onSelectFolder: PropTypes.func,\n enableSelection: PropTypes.bool,\n showCheckbox: PropTypes.bool,\n};\n\nexport default SelectableFolderRow;\n","import React, { useEffect } from \"react\";\nimport Tooltip from \"bootstrap/js/dist/tooltip\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { regular, solid } from \"@fortawesome/fontawesome-svg-core/import.macro\";\nimport { useMutation, UseMutationResult } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\nimport useTooltip from \"../../hooks/useTooltip\";\nimport classNames from \"classnames\";\nimport invariant from \"invariant\";\nimport { Group, State } from \"../../@types\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { toggleFavorited } from \"../../reducers/groups\";\n\ntype FavoriteStatus = {\n favorited: boolean;\n} | null;\ntype MutateVariables = {\n favorite: boolean /* Wether to set or unset favorite status */;\n};\n\nfunction useToggleGroupFavorite(\n groupSlug: string,\n): [\n Group,\n UseMutationResult,\n] {\n const group = useSelector((state: State) => state.groups.bySlug[groupSlug]);\n const dispatch = useDispatch();\n invariant(group, `Group ${groupSlug} not preloaded`);\n\n const mutation = useMutation({\n mutationFn({ favorite }) {\n return fetchApi(`/api/v1/groups/${groupSlug}/favorite`, {\n method: favorite ? \"POST\" : \"DELETE\",\n });\n },\n onSuccess(data) {\n dispatch(\n toggleFavorited({\n groupSlug,\n favorited: data?.favorited || false,\n }),\n );\n },\n });\n\n return [group, mutation];\n}\n\nexport default function ToggleGroupFavoriteButton({\n groupSlug,\n}: {\n groupSlug: string;\n}) {\n const [{ favorited }, { mutate, isLoading }] =\n useToggleGroupFavorite(groupSlug);\n const tooltipRef = useTooltip();\n const title = favorited\n ? I18n.t(\"js.page_title.remove_group_from_favorites\")\n : I18n.t(\"js.page_title.add_group_to_favorites\");\n\n useEffect(() => {\n if (tooltipRef.current) {\n const tooltipInstance = Tooltip.getInstance(tooltipRef.current);\n if (tooltipInstance) {\n tooltipInstance.setContent({\n \".tooltip-inner\": title,\n });\n }\n }\n }, [favorited, tooltipRef]);\n\n return (\n mutate({ favorite: !favorited })}\n >\n \n \n );\n}\n","import React from \"react\";\nimport { useMutation, UseMutationResult } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\nimport classNames from \"classnames\";\nimport invariant from \"invariant\";\nimport { Group, State } from \"../../@types\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { toggleSubscribed } from \"../../reducers/groups\";\n\ntype SubscriptionStatus = {\n subscription_status: boolean;\n} | null;\ntype MutateVariables = {\n subscription_status: boolean /* Wether to set or unset favorite status */;\n};\n\nfunction useToggleGroupSubscribe(\n groupSlug: string,\n): [\n Group,\n UseMutationResult,\n] {\n const group = useSelector((state: State) => state.groups.bySlug[groupSlug]);\n const dispatch = useDispatch();\n invariant(group, `Group ${groupSlug} not preloaded`);\n\n const mutation = useMutation({\n mutationFn({ subscription_status }) {\n return fetchApi(`/groups/${groupSlug}/subscribe`, {\n method: subscription_status ? \"POST\" : \"DELETE\",\n });\n },\n onSuccess(data) {\n dispatch(\n toggleSubscribed({\n groupSlug,\n subscription_status: data?.subscription_status || false,\n }),\n );\n },\n });\n\n return [group, mutation];\n}\n\nexport default function ToggleGroupSubscribe({\n groupSlug,\n}: {\n groupSlug: string;\n}) {\n const [{ subscription_status }, { mutate, isLoading }] =\n useToggleGroupSubscribe(groupSlug);\n\n return (\n ) => {\n e.preventDefault();\n e.stopPropagation();\n !isLoading && mutate({ subscription_status: !subscription_status });\n }}\n >\n \n {subscription_status\n ? I18n.t(\"js.groups.group.unsubscribe_group\")\n : I18n.t(\"js.groups.group.subscribe_group\")}\n \n \n );\n}\n","import React from \"react\";\n\nexport default function LeaveGroupOption({ groupSlug }: { groupSlug: string }) {\n return (\n
  • \n \n {I18n.t(\"js.directory.group_row.leave_group\")}\n \n
  • \n );\n}\n","import React, { useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport { State } from \"../../@types\";\nimport ToggleGroupFavoriteButton from \"components/shared/ToggleGroupFavoriteButton\";\n\nimport classNames from \"classnames\";\nimport ToggleGroupSubscribe from \"components/shared/ToggleGroupSubscribeButton\";\nimport LeaveGroupOption from \"components/shared/GroupLeaveOption\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { solid } from \"@fortawesome/fontawesome-svg-core/import.macro\";\n\ninterface PageTitleTypes {\n title: string;\n subtitle?: string;\n renderHeadlineTools?: (() => React.ReactNode | null) | null;\n children?: React.ReactNode;\n setDocumentTitle?: boolean;\n}\n\n/*\n * Main \"dumb\" PageTitle component\n * Styles are duplicated in app/views/layouts/_content.html.haml\n */\nexport default function PageTitle({\n title,\n subtitle,\n renderHeadlineTools,\n children,\n setDocumentTitle = true,\n}: PageTitleTypes) {\n if (renderHeadlineTools)\n console.warn(\"Prop renderHeadlineTools on PageTitle is deprecated\");\n\n useEffect(() => {\n if (setDocumentTitle && !window.isApp) {\n document.title = `${title} | ${Preload.current_network.name}`;\n }\n }, [title]);\n\n return (\n
    \n

    {title}

    \n {subtitle ? {subtitle} : null}\n {children}\n
    \n );\n}\n\n/*\n * Shows either the group name or the given title\n * Allows user to favorite the current group\n */\nexport function ContextPageTitle({\n groupSlug,\n title: titleProp,\n}: {\n groupSlug?: string;\n title?: string | null;\n}) {\n const group = useSelector((state: State) =>\n groupSlug ? state.groups.bySlug?.[groupSlug] : null,\n );\n const title = group?.name || titleProp;\n if (!title) return null;\n\n return (\n \n {groupSlug && group && !Preload?.page_title ? (\n <>\n
    \n \n \n \n \n
      \n {Preload?.current_member?.authentication_token ? (\n
    • \n \n {I18n.t(\"composer.editor.layout.abo\")}\n \n
    • \n ) : null}\n \n {group.can?.leave ? (\n <>\n
    • \n \n \n ) : null}\n
    \n
    \n \n
    \n \n ) : null}\n
    \n );\n}\n\nexport function Subtitle({\n className,\n children,\n}: {\n className?: string;\n children: React.ReactNode;\n}) {\n return (\n

    \n {children}\n

    \n );\n}\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { isEmpty } from \"lodash\";\n\nexport const profileFieldAvailable = ({ detectionProfileField }) =>\n !isEmpty(Tixxt.currentNetwork?.get(\"detection_profile_field\")) &&\n !isEmpty(detectionProfileField);\n\nexport const showNameWithProfileField = ({\n name,\n detectionProfileField,\n isExternal,\n}) => {\n let result = name;\n\n if (profileFieldAvailable({ detectionProfileField })) {\n result += ` (${detectionProfileField})`;\n }\n\n if (isExternal) {\n result += ` (${I18n.t(\"js.external_member.badge\")})`;\n }\n\n return result;\n};\n\nexport function ExternalMemberBadge() {\n return (\n <>\n \n {I18n.t(\"js.external_member.badge\")}\n \n \n );\n}\n\nexport function NameWithProfileField({\n name,\n detectionProfileField,\n isExternal,\n}) {\n return (\n <>\n {name}\n {profileFieldAvailable({ detectionProfileField }) ? (\n <>\n {\" \"}\n \n ({detectionProfileField})\n \n \n ) : null}\n {isExternal ? : null}\n \n );\n}\n\nNameWithProfileField.propTypes = {\n name: PropTypes.string,\n detectionProfileField: PropTypes.string,\n isExternal: PropTypes.bool,\n};\n","import React, { Fragment } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { noop } from \"lodash\";\n\nimport BasicItemForm from \"components/appCreator/items/form/BasicItemForm\";\nimport ReduxForm from \"components/shared/reduxForm\";\nimport PageTitle from \"components/layout/PageTitle\";\n\nfunction MembershipForm({\n externalAppId,\n externalItemId,\n onSubmit,\n onSubmitSuccess,\n title,\n renderExtraFields = noop,\n initialValues,\n allowSaveWithoutChange,\n filterProperties,\n mapProperties,\n transformItem,\n}) {\n return (\n \n \n (\n \n {renderExtraFields()}\n \n initialize({ ...initialValues, ...itemValues }, options)\n }\n filterProperties={filterProperties}\n mapProperties={mapProperties}\n transformItem={transformItem}\n />\n \n )}\n onSubmit={onSubmit}\n onSubmitSuccess={onSubmitSuccess}\n onSubmitFail={() => toastr.error(I18n.t(\"js.saving_failure\"))}\n onCancel={window.isApp ? () => window.bridge?.goBack() : null}\n allowSaveWithoutChange={allowSaveWithoutChange}\n />\n \n );\n}\n\nMembershipForm.propTypes = {\n externalAppId: PropTypes.string,\n externalItemId: PropTypes.string,\n onSubmit: PropTypes.func,\n onSubmitSuccess: PropTypes.func,\n title: PropTypes.string,\n renderExtraFields: PropTypes.func,\n initialValues: PropTypes.object,\n allowSaveWithoutChange: PropTypes.bool,\n filterProperties: PropTypes.func,\n mapProperties: PropTypes.func,\n transformItem: PropTypes.func,\n};\n\nexport default MembershipForm;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport classNames from \"classnames\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faFile,\n faFileImage,\n faFileAudio,\n faFileVideo,\n faFileLines,\n faFileCode,\n faFileCsv,\n faFilePdf,\n faFileZipper,\n faFileWord,\n faFilePowerpoint,\n faFileExcel,\n} from \"@fortawesome/pro-light-svg-icons\";\n\nfunction chooseFileIcon(extension) {\n const audioExtensions = [\n \"mp3\",\n \"aac\",\n \"flac\",\n \"ogg\",\n \"alac\",\n \"wav\",\n \"aiff\",\n \"dsd\",\n \"pcm\",\n \"aif\",\n \"mid\",\n \"midi\",\n \"map3\",\n \"wma\",\n ];\n const videoExtensions = [\n \"webm\",\n \"mkv\",\n \"flv\",\n \"vob\",\n \"ogv\",\n \"drc\",\n \"gifv\",\n \"avi\",\n \"mov\",\n \"mts\",\n \"wmv\",\n \"yuv\",\n \"amv\",\n \"mp4\",\n \"m4p\",\n \"m4v\",\n \"mpg\",\n \"mpeg\",\n \"m2v\",\n \"svi\",\n \"3gp\",\n \"flv\",\n \"f4v\",\n \"f4p\",\n \"f4a\",\n \"f4b\",\n \"3g2\",\n \"mk4v\",\n ];\n const pictureExtensions = [\n \"gif\",\n \"jpeg\",\n \"jpg\",\n \"png\",\n \"tiff\",\n \"tif\",\n \"psd\",\n \"ai\",\n \"indd\",\n \"raw\",\n \"eps\",\n \"cr2\",\n \"crw\",\n \"nef\",\n \"pef\",\n \"cdr\",\n \"xcf\",\n \"bmp\",\n ];\n const textExtensions = [\"odt\", \"rtf\", \"tex\", \"txt\", \"pages\"];\n const codeExtensions = [\n \"c\",\n \"cgi\",\n \"pl\",\n \"class\",\n \"cpp\",\n \"cs\",\n \"h\",\n \"java\",\n \"php\",\n \"py\",\n \"sh\",\n \"swift\",\n \"vb\",\n \"rb\",\n \"js\",\n \"haml\",\n \"hamlc\",\n \"coffee\",\n \"rs\",\n \"jsx\",\n \"tsx\",\n \"json\",\n \"yml\",\n \"html\",\n \"css\",\n \"scss\",\n ];\n const wordExtensions = [\"wpd\", \"doc\", \"docx\", \"docm\", \"dotx\"];\n const powerpointExtensions = [\n \"pps\",\n \"ppt\",\n \"pptx\",\n \"potm\",\n \"potx\",\n \"ppam\",\n \"ppsm\",\n \"ppsx\",\n \"pptm\",\n ];\n const excelExtensions = [\n \"xls\",\n \"xlsm\",\n \"xlsx\",\n \"xlam\",\n \"xlsb\",\n \"xltm\",\n \"xltx\",\n ];\n const zipExtensions = [\n \"7z\",\n \"arj\",\n \"deb\",\n \"pkg\",\n \"rar\",\n \"rpm\",\n \"tag.gz\",\n \"z\",\n \"zip\",\n ];\n\n if (audioExtensions.includes(extension)) {\n return faFileAudio; // audio\n } else if (videoExtensions.includes(extension)) {\n return faFileVideo; //video\n } else if (pictureExtensions.includes(extension)) {\n return faFileImage; // images\n } else if (textExtensions.includes(extension)) {\n return faFileLines; // text\n } else if (codeExtensions.includes(extension)) {\n return faFileCode; // code\n } else if (extension === \"csv\") {\n return faFileCsv; // csv\n } else if (extension === \"pdf\") {\n return faFilePdf; //pdf\n } else if (wordExtensions.includes(extension)) {\n return faFileWord; //word\n } else if (powerpointExtensions.includes(extension)) {\n return faFilePowerpoint; // powerpoint\n } else if (excelExtensions.includes(extension)) {\n return faFileExcel; // excel\n } else if (zipExtensions.includes(extension)) {\n return faFileZipper; // zip\n } else {\n return faFile; // everything else\n }\n}\n\nfunction FileIcon({ extension, muted, className }) {\n const icon = chooseFileIcon(extension);\n\n return (\n \n );\n}\n\nFileIcon.propTypes = {\n extension: PropTypes.string.isRequired,\n muted: PropTypes.bool,\n};\n\nexport default FileIcon;\n","import React from \"react\";\n\ninterface MarkdownTranslationTypes {\n translation: string;\n styles?: string;\n options?: Record;\n}\n\nfunction MarkdownTranslation({\n translation,\n styles,\n options = {},\n}: MarkdownTranslationTypes) {\n return (\n \n );\n}\n\nexport default MarkdownTranslation;\n","import React, { MouseEventHandler } from \"react\";\nimport classnames from \"classnames\";\n\nexport type ModalActionsProps = {\n closeModal?: MouseEventHandler;\n submitText?: string;\n submit?: MouseEventHandler;\n modalSubmitActionClassName?: string;\n};\n\nfunction ModalActions({\n closeModal,\n submitText,\n submit,\n modalSubmitActionClassName,\n}: ModalActionsProps) {\n return (\n
    \n \n {I18n.t(\"js.cancel\")}\n \n \n {submitText ? I18n.t(submitText) : \"\"}\n \n
    \n );\n}\n\nexport default ModalActions;\n","import type { ModalActionsProps } from \"./modal/ModalActions\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { isEmpty } from \"lodash\";\nimport classnames from \"classnames\";\nimport BootstrapModal from \"bootstrap/js/dist/modal\";\nimport ModalActions from \"./modal/ModalActions\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { solid } from \"@fortawesome/fontawesome-svg-core/import.macro\";\n\nlet id = 0;\n\ntype ModalProps = {\n title?: string;\n static?: boolean;\n fullscreen?: boolean;\n onClose?(...args: unknown[]): unknown;\n resizeCallback?(...args: unknown[]): unknown;\n modalClassName?: string;\n useMinHeightMax?: boolean;\n children?: React.ReactNode;\n modalActionProps?: ModalActionsProps;\n};\n\nclass Modal extends React.Component {\n el: HTMLDivElement;\n static Spinner: (args: SpinnerProps) => JSX.Element;\n shown: boolean | undefined;\n hiding: boolean | undefined;\n modal: BootstrapModal | undefined;\n private readonly id: string;\n private modalEl: Element | undefined;\n\n constructor(props: ModalProps) {\n super(props);\n this.id = `modal-${id++}`;\n // React renders into this el\n this.el = document.createElement(\"div\");\n this.el.id = this.id + \"-root\";\n }\n\n componentDidMount() {\n const backdropExists =\n document.body.getElementsByClassName(\"modal-backdrop\").length > 0;\n\n this.modalEl = this.el.children[0];\n this.modal = new BootstrapModal(this.modalEl, {\n backdrop: this.props.static ? \"static\" : !backdropExists,\n });\n this.modal.show();\n\n this.modalEl.addEventListener(\"shown.bs.modal\", () => (this.shown = true));\n this.modalEl.addEventListener(\"hide.bs.modal\", () => (this.hiding = true));\n this.modalEl.addEventListener(\"hidden.bs.modal\", (e) => {\n this.hiding = false;\n this.shown = false;\n this.props.onClose?.(e);\n });\n\n if (this.props.fullscreen) {\n window.addEventListener(\"resize\", this.onResize);\n this.onResize();\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.onResize);\n // This is critical because bootstrap ignores method calls during transitions\n // https://getbootstrap.com/docs/5.3/components/modal/#methods\n if (this.shown) {\n this.remove();\n } else {\n this.modalEl?.addEventListener(\"shown.bs.modal\", this.remove);\n }\n }\n\n remove = () => {\n if (!this.hiding) {\n this.hiding = true;\n this.modal?.hide();\n this.modalEl?.addEventListener(\"hidden.bs.modal\", () => {\n this.modal?.dispose();\n this.el.remove();\n });\n }\n };\n\n onResize = () => {\n const modalBodyHeight = ($(window).height() as number) - 161; // 60px margin, 71px header, 30px padding\n\n $(this.el)\n .find(\".modal-body\")\n .css({\n height: `${modalBodyHeight}px`,\n maxHeight: `${modalBodyHeight}px`,\n });\n\n if (this.props.resizeCallback) {\n this.props.resizeCallback($(this.el), modalBodyHeight);\n }\n };\n\n render() {\n const header: Array = [];\n if (!isEmpty(this.props.title))\n header.push(\n
    \n {this.props.title}\n
    ,\n );\n\n header.push(\n \n \n ,\n );\n\n const modal = (\n \n \n
    \n {!isEmpty(header) ? (\n
    {header}
    \n ) : null}\n \n {this.props.children}\n
    \n {!isEmpty(this.props.modalActionProps) ? (\n \n ) : null}\n \n \n \n );\n\n document.body.appendChild(this.el);\n return ReactDOM.createPortal(modal, this.el, this.id);\n }\n}\n\nModal.Spinner = Spinner;\n\ntype SpinnerProps = {\n label: string;\n};\n\nfunction Spinner({ label }: SpinnerProps) {\n return (\n \n \n {label || \"Loading\"}\n {label ?
    {label}
    : null}\n \n );\n}\n\nexport default Modal;\n","import classNames from \"classnames\";\nimport React from \"react\";\n\ntype Props = {\n name: string;\n href: string;\n isReaderTag?: boolean;\n};\nexport default function Tag({ name, href, isReaderTag }: Props) {\n return (\n \n {name}\n \n );\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\n\ninterface ControlsProps {\n wrapperClassName: string;\n children: React.ReactNode;\n label?: React.ReactNode;\n required?: boolean;\n htmlFor?: string;\n name?: string;\n className?: string;\n\n onLabelClick?(...args: unknown[]): unknown;\n}\n\nexport function Controls({\n wrapperClassName,\n children,\n label,\n required,\n htmlFor,\n name,\n onLabelClick,\n className,\n}: ControlsProps) {\n return (\n
    \n {label ? (\n \n {label}{\" \"}\n {required ? * : null}\n \n ) : null}\n
    {children}
    \n
    \n );\n}\n\ninterface ControlGroupProps {\n name?: string;\n label?: React.ReactNode | string;\n required?: boolean;\n children?: React.ReactNode;\n htmlFor?: string;\n className?: string;\n error?: boolean;\n onLabelClick?(...args: unknown[]): unknown;\n}\n\nfunction ControlGroup({\n name,\n label,\n required,\n children,\n htmlFor,\n className,\n error,\n onLabelClick,\n}: ControlGroupProps) {\n return (\n \n {children}\n \n );\n}\n\nexport default ControlGroup;\n","import { DragDropContext } from \"react-dnd\";\nimport HTML5Backend from \"react-dnd-html5-backend\";\n\nexport default DragDropContext(HTML5Backend);\n","import React from \"react\";\nimport { isEmpty } from \"lodash\";\n\ninterface ImagePreviewTypes {\n imageId: string;\n storageDirectory?: string;\n}\n\nfunction ImagePreview({\n imageId,\n storageDirectory = \"images\",\n}: ImagePreviewTypes) {\n return (\n
    \n {!isEmpty(imageId) ? (\n \n ) : (\n
    \n \n
    \n )}\n
    \n );\n}\n\nexport default ImagePreview;\n","import type { ComponentType } from \"react\";\nimport React from \"react\";\nimport { DropTarget } from \"react-dnd\";\nimport { NativeTypes } from \"react-dnd-html5-backend\";\nimport classNames from \"classnames\";\nimport FileSelector from \"../../../files/composer/FileSelector\";\n\ninterface FileInputTypes {\n connectDropTarget?(...args: unknown[]): unknown;\n\n onSelectFile(...args: unknown[]): unknown;\n\n multiple?: boolean;\n acceptedType: string;\n empty: boolean;\n isImage: boolean;\n isOver?: boolean;\n selectExisting?: boolean;\n\n onSelectExistingFile(...args: unknown[]): unknown;\n}\n\nfunction FileInput({\n connectDropTarget,\n onSelectFile,\n multiple,\n acceptedType,\n empty,\n isImage,\n isOver,\n selectExisting,\n onSelectExistingFile,\n}: FileInputTypes) {\n return multiple || (!multiple && empty) ? (\n connectDropTarget?.(\n
    \n \n

    \n {I18n.t(\n `js.files.uploader.drag_and_drop_${\n isImage ? (multiple ? \"images\" : \"image\") : \"files\"\n }`,\n )}\n

    \n \n {selectExisting ? (\n \n ) : null}\n
    \n ,\n )\n ) : (\n
    \n
    \n

    \n {I18n.t(\n `js.files.uploader.remove_${isImage ? \"image\" : \"file\"}_hint`,\n )}\n

    \n
    \n
    \n );\n}\n\nexport default DropTarget(\n [NativeTypes.FILE],\n {\n drop(props: { onDropFile(arg: unknown) }, monitor) {\n props.onDropFile(monitor.getItem());\n return props;\n },\n },\n (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n }),\n)(FileInput as ComponentType);\n","import React from \"react\";\nimport classNames from \"classnames\";\n\ninterface UploadBarTypes {\n state: \"uploading\" | \"volatile\" | \"published\" | \"failed\" | \"quarantine\";\n progress: number;\n}\n\nfunction UploadBar({ progress, state }: UploadBarTypes) {\n return (\n \n );\n}\n\nexport default UploadBar;\n","import React from \"react\";\nimport { get } from \"lodash\";\nimport FileIcon from \"components/shared/FileIcon\";\n\nimport UploadBar from \"./UploadBar\";\nimport MarkdownTranslation from \"../../MarkdownTranslation\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { solid, regular } from \"@fortawesome/fontawesome-svg-core/import.macro\";\n\ninterface UploadedFileTypes {\n file: {\n id: string;\n clientId: string;\n state: \"uploading\" | \"volatile\" | \"published\" | \"failed\" | \"quarantine\";\n name: string;\n progress: number;\n status: number;\n };\n\n remove(...args: unknown[]): unknown;\n}\n\nfunction UploadedFile({ file, remove }: UploadedFileTypes) {\n const handleRemoveClick = (e) => {\n e.preventDefault();\n const criteria = file.id ? { id: file.id } : { clientId: file.clientId };\n remove(criteria);\n };\n\n return (\n
    \n
    \n \n
    \n
    \n
    \n {file.state == \"quarantine\" ? (\n <>\n \n \n {I18n.t(\"js.files.uploader.error_quarantine\")}\n \n {file.name}\n \n ) : (\n <>\n \n {file.name}\n \n )}\n
    \n\n {file.status ? (\n \n ) : null}\n\n \n \n \n
    \n
    \n );\n}\n\nexport default UploadedFile;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useDispatch } from \"react-redux\";\nimport { change } from \"redux-form\";\nimport { compose, withHandlers } from \"recompose\";\nimport {\n isEmpty,\n map,\n each,\n castArray,\n compact,\n get,\n last,\n zip,\n isMatch,\n groupBy,\n sum,\n} from \"lodash\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport withDragDropContext from \"components/shared/withDragDropContext\";\nimport ImagePreview from \"./fileUploadField/ImagePreview\";\nimport FileInput from \"./fileUploadField/FileInput\";\nimport UploadedFile from \"./fileUploadField/UploadedFile\";\nimport FieldError from \"components/appCreator/items/form/FieldError\";\nimport { uploadFile } from \"actions/files\";\nimport UploadBar from \"./fileUploadField/UploadBar\";\n\nconst FileUploadField = ({\n multiple,\n onRemoveFile,\n storageDirectory = \"files\",\n input,\n meta,\n isImage,\n selectExisting,\n accept,\n}) => {\n const dispatch = useDispatch();\n const files = compact(castArray(input.value));\n\n // Queues given files for uploading.\n // Discards all but the first file if it is non-multiple\n // and displays warning to the user.\n const uploadFiles = (rawFiles) => {\n const filesData = map(rawFiles, (file) => ({\n name: file.name,\n type: file.type,\n extension: last(file.name.split(\".\")),\n clientId: uuidv4(),\n progress: 0,\n state: \"uploading\",\n }));\n dispatch(change(meta.form, input.name, [...files, ...filesData]));\n\n each(zip(rawFiles, filesData), ([file, { clientId }]) => {\n dispatch(\n uploadFile({\n form: meta.form,\n inputName: input.name,\n clientId,\n file,\n storageDirectory,\n }),\n );\n });\n };\n\n const onSelectExistingFile = (selectedFiles) => {\n dispatch(change(meta.form, input.name, [...files, ...selectedFiles]));\n };\n\n const filesByState = {\n published: [],\n volatile: [],\n uploading: [],\n failed: [],\n ...groupBy(files, \"state\"),\n };\n\n const availableFiles = [...filesByState.published, ...filesByState.volatile];\n const uploadingFiles = [...filesByState.volatile, ...filesByState.uploading];\n const nonRemovedFiles = [\n ...filesByState.published,\n ...filesByState.volatile,\n ...filesByState.failed,\n ...filesByState.uploading,\n ];\n\n return (\n <>\n
    \n {isImage && !multiple ? (\n \n ) : null}\n uploadFiles(e.target.files)}\n selectExisting={!isImage && selectExisting}\n onSelectExistingFile={onSelectExistingFile}\n onDropFile={({ files }) => uploadFiles(files)}\n {...input}\n />\n
    \n
    \n {uploadingFiles.length > 1 ? (\n
    \n
    \n \n
    \n
    \n
    \n \n {I18n.t(\"js.files.uploader.total_progress\", {\n completed: filesByState.volatile.length,\n total: uploadingFiles.length,\n })}\n \n
    \n
    \n
    \n ) : null}\n {map(nonRemovedFiles, (file, key) => (\n \n ))}\n
    \n {meta.submitFailed && meta.error && }\n \n );\n};\nconst valuePropType = PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n progress: PropTypes.number,\n state: PropTypes.string,\n external_id: PropTypes.string,\n type: PropTypes.string,\n});\nFileUploadField.propTypes = {\n multiple: PropTypes.bool,\n storageDirectory: PropTypes.string,\n isImage: PropTypes.bool,\n onSelectFile: PropTypes.func,\n onDropFile: PropTypes.func,\n onRemoveFile: PropTypes.func,\n selectExisting: PropTypes.bool,\n input: PropTypes.shape({\n name: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.arrayOf(valuePropType),\n valuePropType,\n PropTypes.any,\n ]),\n onChange: PropTypes.func,\n }),\n meta: PropTypes.shape({\n form: PropTypes.string,\n error: PropTypes.string,\n submitFailed: PropTypes.bool,\n }),\n className: PropTypes.string,\n};\n\nexport default compose(\n withDragDropContext,\n withHandlers({\n onRemoveFile:\n ({ input }) =>\n (criteria) => {\n window.bridge.confirm(I18n.t(\"js.files.file.delete_confirm\"), () => {\n const files = compact(castArray(input.value));\n input.onChange(\n // Marks files to be removed in publish phase\n // removes failed uploads immediately\n compact(\n map(files, (f) =>\n isMatch(f, criteria)\n ? f.state === \"failed\"\n ? null\n : { ...f, state: \"removed\" }\n : f,\n ),\n ),\n );\n });\n },\n }),\n)(FileUploadField);\n","import React from \"react\";\nimport { isEmpty } from \"lodash\";\n\ninterface HintProps {\n hint?: string;\n className?: string;\n}\n\nfunction Hint({ hint, className = \"\" }: HintProps) {\n return isEmpty(hint) ? null : (\n \n );\n}\n\nexport default Hint;\n","import { useMemo, useState } from \"react\";\nimport { includes, filter, uniq, map, findIndex, compact } from \"lodash\";\n\nimport useWindowEvent from \"./useWindowEvent\";\n\n// Hook to handle item batch selection (select multiple items with shift key pressed)\n//\n// @param [Array] itemIds the given item ids\n// @param [Array] selectedIds the selected item ids\n// @param [Function] selectIds function to select the ids (e.g. save in component state or whatever)\n//\n// @return [Function] onSelect returns the select function to pass to e.g. an item row or something (needs item id)\n//\n// @example\n// const onSelectFile = useItemBatchSelector(fileIds, selectedFileIds, selectFileIds);\n//\nconst useItemBatchSelection = (ids, selectedIds, selectIds) => {\n const [shiftIsPressed, setShiftIsPressed] = useState(false);\n const [metaIsPressed, setMetaPressed] = useState(false);\n const [firstIdSelected, setFirstIdSelected] = useState(null);\n\n // main select function\n //\n // @params [String] id\n //\n const { onSelect, onKeyDown, onKeyUp } = useMemo(() => {\n const onKeyDown = (e) => {\n switch (e.key) {\n case \"Shift\":\n setShiftIsPressed(true);\n break;\n case \"Meta\":\n setMetaPressed(true);\n break;\n default:\n break;\n }\n };\n\n const onKeyUp = (e) => {\n switch (e.key) {\n case \"Shift\":\n setShiftIsPressed(false);\n break;\n case \"Meta\":\n setMetaPressed(false);\n break;\n default:\n break;\n }\n };\n\n // adds item id to selected item ids\n const addItemId = (id) => {\n includes(selectedIds, id)\n ? selectIds(filter(selectedIds, (fileId) => fileId !== id))\n : selectIds([...selectedIds, id]);\n };\n\n const onSelect = (id, selectSingle = false) => {\n const itemIds = ids.current;\n // determine batch range if item is selected while shift key is pressed\n if (shiftIsPressed) {\n const firstIndex = findIndex(itemIds, (id) => id === firstIdSelected);\n const lastIndex = findIndex(itemIds, (itemId) => itemId === id);\n\n const newFileIds = map(itemIds, (itemId, i) =>\n (i >= firstIndex && i <= lastIndex) ||\n (i <= firstIndex && i >= lastIndex)\n ? itemId\n : null,\n );\n\n setFirstIdSelected(id);\n selectIds(uniq([...selectedIds, ...compact(newFileIds)]));\n } else {\n // select single item if only single item should be selected an meta key is not pressed\n // e.g. on row click instead of checkbox\n selectSingle && !metaIsPressed ? selectIds([id]) : addItemId(id);\n }\n\n setFirstIdSelected(id);\n };\n\n return { onSelect, onKeyDown, onKeyUp };\n }, [selectedIds.join(\",\"), shiftIsPressed, metaIsPressed, firstIdSelected]);\n\n useWindowEvent(\"keydown\", onKeyDown);\n useWindowEvent(\"keyup\", onKeyUp);\n\n return onSelect;\n};\n\nexport default useItemBatchSelection;\n","import { useEffect } from \"react\";\n\nconst useWindowEvent = (eventName, eventHandler) => {\n useEffect(() => {\n window.addEventListener(eventName, eventHandler);\n return () => window.removeEventListener(eventName, eventHandler);\n }, [eventName, eventHandler]);\n};\n\nexport default useWindowEvent;\n","import React from \"react\";\nimport { map, some, isFunction, reduce } from \"lodash\";\nimport { Modifier, EditorState, RichUtils } from \"draft-js\";\n\nimport Separator from \"components/shared/markdownEditor/editorPlugins/buttons/Separator\";\nimport createInlineStyleButton from \"components/shared/markdownEditor/editorPlugins/buttons/createInlineStyleButton\";\nimport createPickerButton from \"components/shared/markdownEditor/editorPlugins/buttons/createPickerButton\";\nimport CustomConfigurator from \"../../../../../CustomConfigurator\";\n\nexport const colorStyle = (style) => `COLOR-${style.toUpperCase()}`;\nexport const allColorStyles = () =>\n map(CustomConfigurator.get(\"markdownEditor.colors\"), ({ style }) =>\n colorStyle(style),\n );\n\nexport const clearColors = (editorState) => {\n const contentWithoutStyles = reduce(\n allColorStyles(),\n (newContentState, style) =>\n Modifier.removeInlineStyle(\n newContentState,\n editorState.getSelection(),\n style,\n ),\n editorState.getCurrentContent(),\n );\n\n return EditorState.push(\n editorState,\n contentWithoutStyles,\n \"change-inline-style\",\n );\n};\n\nexport const RemoveColorsButton = createInlineStyleButton({\n style: \"\",\n title: () => I18n.t(\"js.composer.editor.buttons.no_color\"),\n toggleStyle: ({ getEditorState, setEditorState }) => {\n setEditorState(clearColors(getEditorState()));\n },\n isActive: () => false,\n content: ,\n});\n\nexport const createColorButton = ({ label, style }) =>\n createInlineStyleButton({\n style: colorStyle(style),\n title: () =>\n I18n.t(\"js.composer.editor.buttons.color\", {\n color: isFunction(label) ? label() : label,\n }),\n content: ,\n toggleStyle: ({ getEditorState, setEditorState, style }) => {\n setEditorState(\n RichUtils.toggleInlineStyle(clearColors(getEditorState()), style),\n );\n },\n });\n\nexport const FontColorsButton = createPickerButton({\n pickerButtons: () =>\n [RemoveColorsButton, Separator].concat(\n map(CustomConfigurator.get(\"markdownEditor.colors\"), createColorButton),\n ),\n title: () => I18n.t(\"js.composer.editor.buttons.colors\"),\n content: ,\n isDisabled: ({ getEditorState }) =>\n getEditorState().getSelection().isCollapsed(),\n isActive: ({ getEditorState }) =>\n some(allColorStyles(), (s) =>\n getEditorState().getCurrentInlineStyle().has(s),\n ),\n});\nexport default FontColorsButton;\n","import React from \"react\";\n\nimport theme from \"components/shared/markdownEditor/editorPlugins/buttons/theme\";\n\nfunction Separator() {\n return
    ;\n}\n\nexport default Separator;\n","import React from \"react\";\nimport classnames from \"classnames\";\nimport { isFunction } from \"lodash\";\n\nimport theme from \"components/shared/markdownEditor/editorPlugins/buttons/theme\";\n\nconst preventDefault = (e) => e.preventDefault();\ninterface ToolbarButtonProps {\n isActive(): boolean;\n isDisabled(): boolean;\n onClick(...args: unknown[]): unknown;\n title: (() => string) | string;\n children: React.ReactNode;\n}\nfunction ToolbarButton({\n isActive,\n onClick,\n title,\n children,\n isDisabled,\n}: ToolbarButtonProps) {\n return (\n
    \n \n {children}\n \n
    \n );\n}\n\nexport default ToolbarButton;\n","import { compose, withHandlers, withProps } from \"recompose\";\nimport { RichUtils } from \"draft-js\";\n\nimport ToolbarButton from \"components/shared/markdownEditor/editorPlugins/buttons/ToolbarButton\";\n\nexport default ({ style, content, title, toggleStyle, isActive }) => {\n return compose(\n withProps(() => ({\n title,\n style,\n children: content,\n })),\n withHandlers({\n onClick: (props) => (e) => {\n e.preventDefault();\n if (toggleStyle) {\n toggleStyle(props);\n } else {\n props.setEditorState(\n RichUtils.toggleInlineStyle(props.getEditorState(), style),\n );\n }\n },\n isDisabled: () => () => !document.getSelection().toString(),\n isActive: (props) => () => {\n if (!props.getEditorState) {\n return false;\n }\n\n if (isActive) {\n return isActive(props);\n } else {\n return props.getEditorState().getCurrentInlineStyle().has(style);\n }\n },\n }),\n )(ToolbarButton);\n};\n","import React from \"react\";\nimport { compose, withHandlers, withProps } from \"recompose\";\nimport { isFunction, map } from \"lodash\";\n\nimport ToolbarButton from \"components/shared/markdownEditor/editorPlugins/buttons/ToolbarButton\";\nimport Separator from \"components/shared/markdownEditor/editorPlugins/buttons/Separator\";\n\nfunction Picker(props) {\n const buttons = [\n \n \n ,\n ,\n ];\n\n return buttons.concat(\n map(\n isFunction(props.pickerButtons)\n ? props.pickerButtons()\n : props.pickerButtons,\n (Button, i) =>
    \n );\n}\n\nMarkdownEditor.propTypes = {\n key: PropTypes.string,\n content: PropTypes.string,\n onEditorStateChange: PropTypes.func,\n placeholder: PropTypes.string,\n containerClasses: PropTypes.string,\n editorState: PropTypes.object,\n onSetEditorRef: PropTypes.func,\n plugins: PropTypes.array,\n pluginComponents: PropTypes.object,\n focusEditor: PropTypes.func,\n readOnly: PropTypes.bool,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n};\n\nexport default compose(\n withBasicMarkdownPlugins,\n withState(\"key\", \"setKey\", () => uuidv4()),\n withState(\"editorState\", \"setEditorState\", ({ content }) =>\n editorStateByMarkdown(content),\n ),\n withState(\"editorRef\", \"setEditorRef\", null),\n withHandlers({\n onEditorStateChange:\n ({ content, onChange, setEditorState, enableTixxtMentions }) =>\n (newEditorState) => {\n // Workaround for redux-form controlled markdown editor\n // only trigger change events when editor is focused\n const focused = newEditorState.getSelection().getHasFocus();\n\n // Be careful, you can either use the markown editor with redux-form XOR with tixxt mentions\n if (enableTixxtMentions || focused) {\n // Don't trigger change events to the outside if there is no content change\n const newContent = markdownByEditorState(newEditorState);\n if (content !== newContent) {\n setTimeout(() => onChange(newContent), 1);\n }\n setEditorState(newEditorState);\n }\n },\n onSetEditorRef:\n ({ setEditorRef, setComposerRefCallback }) =>\n (ref) => {\n if (setComposerRefCallback) {\n setComposerRefCallback(ref);\n }\n setEditorRef(ref);\n },\n focusEditor:\n ({ editorRef }) =>\n (e) => {\n e.preventDefault();\n if (editorRef) {\n setTimeout(() => editorRef.focus(), 1);\n }\n },\n }),\n)(MarkdownEditor);\n","import { reduce } from \"lodash\";\n\nimport { colorStyle } from \"components/shared/markdownEditor/editorPlugins/buttons/FontColorsButton\";\nimport CustomConfigurator from \"../../../CustomConfigurator\";\n\nconst calculateColorMap = () =>\n reduce(\n CustomConfigurator.get(\"markdownEditor.colors\"),\n (result, { style }) => {\n const styleEntity = colorStyle(style);\n result[styleEntity] = { color: style };\n return result;\n },\n {},\n );\n\nconst createStyleMap = () =>\n Object.assign(\n {\n CODE: {\n fontFamily: 'Monaco, Menlo, Consolas, \"Courier New\", monospac',\n fontSize: \"11px\",\n whiteSpace: \"pre-wrap\",\n wordWrap: \"break-word\",\n padding: \"2px 4px\",\n borderRadius: \"3px\",\n color: \"#d14\",\n backgroundColor: \"#f7f7f9\",\n border: \"1px solid #e1e1e8\",\n },\n SUPERSCRIPT: { fontSize: \"0.6em\", verticalAlign: \"super\" },\n MARK: { backgroundColor: \"yellow\" },\n },\n calculateColorMap(),\n );\n\nexport default createStyleMap;\n","// Copy from https://github.com/jonschlinkert/remarkable/blob/master/lib/rules_inline/text.js\n// to enable custom terminator chars like '#' for tixxt style hashtags\n\n// Skip text characters for text token, place those to pending buffer\n// and increment current pos\n//\n// Rule to skip pure text\n// '{}$%@~+=:#' reserved for extentions\n\nfunction isTerminatorChar(ch) {\n switch (ch) {\n case 0x0a /* \\n */:\n case 0x5c /* \\ */:\n case 0x60 /* ` */:\n case 0x2a /* * */:\n case 0x5f /* _ */:\n case 0x5e /* ^ */:\n case 0x5b /* [ */:\n case 0x5d /* ] */:\n case 0x21 /* ! */:\n case 0x26 /* & */:\n case 0x3c /* < */:\n case 0x3e /* > */:\n case 0x7b /* { */:\n case 0x7d /* } */:\n case 0x24 /* $ */:\n case 0x25 /* % */:\n case 0x40 /* @ */:\n case 0x7e /* ~ */:\n case 0x2b /* + */:\n case 0x3d /* = */:\n case 0x3a /* : */:\n case 0x23 /* # */:\n return true;\n default:\n return false;\n }\n}\n\nconst customText = (state, silent) => {\n let pos = state.pos;\n\n while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) {\n pos++;\n }\n\n if (pos === state.pos) {\n return false;\n }\n\n if (!silent) {\n state.pending += state.src.slice(state.pos, pos);\n }\n\n state.pos = pos;\n\n return true;\n};\n\nconst customizedTextParser = (md) => {\n md.inline.ruler.at(\"text\", customText);\n};\n\nexport default customizedTextParser;\n","export const isAlphaNum = (code) =>\n (code >= 0x30 /* 0 */ && code <= 0x39) /* 9 */ ||\n (code >= 0x41 /* A */ && code <= 0x5a) /* Z */ ||\n (code >= 0x61 /* a */ && code <= 0x7a); /* z */\n","// Customized parser for emphasis (bold / italic)\n// **this is bold**\n// *this is italic*\n\nimport { isAlphaNum } from \"components/shared/markdownEditor/parserPlugins/helpers\";\n\n// parse sequence of emphasis markers,\n// \"start\" should point at a valid marker\nconst scanDelimiters = (state, start) => {\n let pos = start;\n let lastChar, nextChar, count;\n let canOpen = true;\n let canClose = true;\n\n const max = state.posMax;\n const marker = state.src.charCodeAt(start);\n\n lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1;\n\n while (pos < max && state.src.charCodeAt(pos) === marker) {\n pos++;\n }\n if (pos >= max) {\n canOpen = false;\n }\n count = pos - start;\n\n if (count >= 4) {\n // sequence of four or more unescaped markers can't start/end an emphasis\n canOpen = canClose = false;\n } else {\n nextChar = pos < max ? state.src.charCodeAt(pos) : -1;\n\n // check whitespace conditions\n if (nextChar === 0x20 || nextChar === 0x0a) {\n canOpen = false;\n }\n if (lastChar === 0x20 || lastChar === 0x0a) {\n canClose = false;\n }\n\n if (marker === 0x2a /* * */) {\n // check if we aren't inside the word\n if (isAlphaNum(lastChar)) {\n canOpen = false;\n }\n if (isAlphaNum(nextChar)) {\n canClose = false;\n }\n }\n }\n\n return {\n canOpen: canOpen,\n canClose: canClose,\n delimiters: count,\n };\n};\n\nconst emphasis = (state, silent) => {\n let startCount, count, found, oldCount, newCount, stack, res;\n const max = state.posMax;\n const start = state.pos;\n const marker = state.src.charCodeAt(start);\n\n if (marker !== 0x2a /* * */) {\n return false;\n }\n if (silent) {\n return false;\n } // don't run any pairs in validation mode\n\n res = scanDelimiters(state, start);\n startCount = res.delimiters;\n if (!res.canOpen) {\n state.pos += startCount;\n if (!silent) {\n state.pending += state.src.slice(start, state.pos);\n }\n return true;\n }\n\n if (state.level >= state.options.maxNesting) {\n return false;\n }\n\n state.pos = start + startCount;\n stack = [startCount];\n\n while (state.pos < max) {\n if (state.src.charCodeAt(state.pos) === marker) {\n res = scanDelimiters(state, state.pos);\n count = res.delimiters;\n if (res.canClose) {\n oldCount = stack.pop();\n newCount = count;\n\n while (oldCount !== newCount) {\n if (newCount < oldCount) {\n stack.push(oldCount - newCount);\n break;\n }\n\n // assert(newCount > oldCount)\n newCount -= oldCount;\n\n if (stack.length === 0) {\n break;\n }\n state.pos += oldCount;\n oldCount = stack.pop();\n }\n\n if (stack.length === 0) {\n startCount = oldCount;\n found = true;\n break;\n }\n state.pos += count;\n continue;\n }\n\n if (res.canOpen) {\n stack.push(count);\n }\n state.pos += count;\n continue;\n }\n\n state.parser.skipToken(state);\n }\n\n if (!found) {\n // parser failed to find ending tag, so it's not valid emphasis\n state.pos = start;\n return false;\n }\n\n // found!\n state.posMax = state.pos;\n state.pos = start + startCount;\n\n if (!silent) {\n if (startCount === 2 || startCount === 3) {\n state.push({ type: \"strong_open\", level: state.level++ });\n }\n if (startCount === 1 || startCount === 3) {\n state.push({ type: \"em_open\", level: state.level++ });\n }\n\n state.parser.tokenize(state);\n\n if (startCount === 1 || startCount === 3) {\n state.push({ type: \"em_close\", level: --state.level });\n }\n if (startCount === 2 || startCount === 3) {\n state.push({ type: \"strong_close\", level: --state.level });\n }\n }\n\n state.pos = state.posMax + startCount;\n state.posMax = max;\n return true;\n};\n\nconst customizedEmphasisParser = (md) => {\n md.inline.ruler.at(\"emphasis\", emphasis);\n};\n\nexport default customizedEmphasisParser;\n","export const mentionRule = (state, silent) => {\n let mentionStart, mentionEnd, mentionSeparator;\n let oldPos = state.pos;\n let start = state.pos;\n let max = state.posMax;\n\n const mentionMarker = state.src.charCodeAt(start);\n\n if (mentionMarker !== 0x40 /* @ */ && mentionMarker !== 0x23 /* # */) {\n return false;\n }\n if (state.src.charCodeAt(start + 1) !== 0x5b /* [ */) {\n return false;\n }\n if (state.level >= state.options.maxNesting) {\n return false;\n }\n\n state.pos = start + 1;\n while (state.pos < max) {\n const marker = state.src.charCodeAt(state.pos);\n if (marker === 0x5b /* [ */) {\n mentionStart = state.pos + 1;\n } else if (marker === 0x3a /* : */) {\n mentionSeparator = state.pos;\n } else if (marker === 0x5d /* ] */) {\n mentionEnd = state.pos;\n break;\n }\n\n state.parser.skipToken(state);\n }\n\n state.pos = oldPos;\n\n // parser failed to find ']', so it's not a valid mention\n if (mentionEnd < 0) {\n return false;\n }\n\n // We found the end of the mention, and know for a fact it's a valid mention;\n // so all that's left to do is to call tokenizer.\n if (!silent) {\n state.pos = mentionStart;\n state.posMax = mentionEnd;\n\n const id = state.src.substr(mentionStart, mentionSeparator - mentionStart);\n const name = state.src.substr(\n mentionSeparator + 1,\n mentionEnd - mentionSeparator - 1,\n );\n\n state.pos = mentionSeparator + 1;\n state.posMax = mentionEnd;\n\n state.push({\n type: \"mention_open\",\n level: state.level++,\n marker: String.fromCharCode(mentionMarker),\n id,\n name,\n });\n state.parser.tokenize(state);\n state.push({\n type: \"mention_close\",\n level: state.level--,\n });\n }\n\n state.pos = mentionEnd + 1;\n state.posMax = max;\n\n return true;\n};\n\nconst markdownMentionsParser = (md) => {\n md.inline.ruler.push(\"mention\", mentionRule);\n};\n\nexport default markdownMentionsParser;\n","// Customized parser for underline\n// _this is underline_\n// Marker: 0x5f (_)\n\nimport { isAlphaNum } from \"components/shared/markdownEditor/parserPlugins/helpers\";\n\nconst underline = (state, silent) => {\n let found, stack, lastChar, nextChar;\n const max = state.posMax;\n const start = state.pos;\n\n if (state.src.charCodeAt(start) !== 0x5f /* _ */) {\n return false;\n }\n\n if (silent) {\n return false;\n }\n\n if (start + 2 >= max) {\n return false;\n }\n\n if (state.level >= state.options.maxNesting) {\n return false;\n }\n\n lastChar = start > 0 ? state.src.charCodeAt(start - 1) : -1;\n nextChar = state.src.charCodeAt(start + 1);\n\n if (isAlphaNum(lastChar)) {\n return false;\n }\n if (nextChar === 0x20 || nextChar === 0x0a) {\n return false;\n }\n\n state.pos = start + 1;\n stack = 1;\n\n while (state.pos < max) {\n if (state.src.charCodeAt(state.pos) === 0x5f /*_*/) {\n lastChar = state.src.charCodeAt(state.pos - 1);\n nextChar = state.pos + 1 < max ? state.src.charCodeAt(state.pos + 1) : -1;\n\n if (\n !isAlphaNum(nextChar) &&\n nextChar !== 0x5f &&\n lastChar !== 0x5f /*_*/\n ) {\n if (lastChar !== 0x20 /* SPACE */ && lastChar !== 0x0a /* \\n */) {\n // closing '_'\n stack--;\n } else if (\n nextChar !== 0x20 /* SPACE */ &&\n nextChar !== 0x0a /* \\n */\n ) {\n // opening '_'\n stack++;\n }\n if (stack <= 0) {\n found = true;\n break;\n } else {\n continue;\n }\n }\n }\n\n state.parser.skipToken(state);\n }\n\n if (!found) {\n // parser failed to find ending tag, so it's not valid underline\n state.pos = start;\n return false;\n }\n\n // found!\n state.posMax = state.pos;\n state.pos = start + 1;\n\n if (!silent) {\n state.push({ type: \"underline_open\", level: state.level++ });\n state.parser.tokenize(state);\n state.push({ type: \"underline_close\", level: --state.level });\n }\n\n state.pos = state.posMax + 1;\n state.posMax = max;\n\n return true;\n};\n\nconst underlineParser = (md) => {\n md.inline.ruler.push(\"underline\", underline);\n};\n\nexport default underlineParser;\n","import { trim, reduce } from \"lodash\";\n// Parser for custom text colors\n// Text\n\n// 0 => whole token\n// 1 => span open tag\n// 2 => style\n// 3 => text\n// 4 => span close tag\nconst regexp = /^()(.*?)(<\\/span>)/i;\n\nconst cssStyle = (state, silent) => {\n const start = state.pos;\n const posMax = state.posMax;\n\n const match = regexp.exec(state.src.slice(start));\n\n if (!match) return false;\n if (silent) return false;\n\n const styles = reduce(\n match[2].split(\";\"),\n (styles, style) => {\n const styleTuple = style.split(\":\");\n styles[trim(styleTuple[0])] = trim(styleTuple[1]);\n return styles;\n },\n {},\n );\n\n if (!styles.color) return false;\n\n // adjust state position to match text\n state.pos = start + match[1].length;\n state.posMax = state.pos + match[3].length;\n\n if (styles.color) {\n state.push({ type: `color_${styles.color}_open`, level: state.level++ });\n }\n\n state.parser.tokenize(state);\n\n if (styles.color) {\n state.push({ type: `color_${styles.color}_close`, level: --state.level });\n }\n\n // adjust state position after token\n state.pos = start + match[0].length;\n state.posMax = posMax;\n\n return true;\n};\n\nconst cssStyleParser = (md) => {\n md.inline.ruler.push(\"cssStyle\", cssStyle);\n};\n\nexport default cssStyleParser;\n","import { markdownToDraft } from \"markdown-draft-js\";\nimport { EditorState, convertFromRaw } from \"draft-js\";\nimport { reduce } from \"lodash\";\n\nimport customizedTextParser from \"components/shared/markdownEditor/parserPlugins/customizedTextParser\";\nimport customizedEmphasisParser from \"components/shared/markdownEditor/parserPlugins/customizedEmphasisParser\";\nimport markdownMentionsParser from \"components/shared/markdownEditor/parserPlugins/markdownMentionsParser\";\nimport underlineParser from \"components/shared/markdownEditor/parserPlugins/underlineParser\";\nimport cssStyleParser from \"components/shared/markdownEditor/parserPlugins/cssStyleParser\";\n\nimport { colorStyle } from \"components/shared/markdownEditor/editorPlugins/buttons/FontColorsButton\";\nimport CustomConfigurator from \"../../../../CustomConfigurator\";\n\nconst calculateColorStyles = () =>\n reduce(\n CustomConfigurator.get(\"markdownEditor.colors\"),\n (result, { style }) => {\n result[`color_${style}_open`] = colorStyle(style);\n return result;\n },\n {},\n );\n\nconst enableAllStyleRules = (md) => {\n md.inline.ruler.enable([\"mark\"]);\n md.block.ruler.disable([\"hr\", \"table\"]);\n};\n\nconst editorStateByMarkdown = (content) => {\n const newRawState = markdownToDraft(content, {\n preserveNewlines: true,\n remarkablePlugins: [\n enableAllStyleRules,\n customizedTextParser,\n customizedEmphasisParser,\n markdownMentionsParser,\n underlineParser,\n cssStyleParser,\n ],\n remarkableOptions: {\n html: false,\n },\n blockEntities: {\n mention_open: (item) => ({\n type: item.marker === \"#\" ? \"#mention\" : \"mention\",\n mutability: \"IMMUTABLE\",\n data: {\n mention: {\n id: item.id,\n name: item.name,\n },\n },\n }),\n image: (item) => ({\n type: \"IMAGE\",\n mutability: \"IMMUTABLE\",\n data: {\n alt: item.alt,\n src: item.src,\n },\n }),\n },\n blockStyles: Object.assign(\n {\n mark_open: \"MARK\",\n del_open: \"STRIKETHROUGH\",\n underline_open: \"UNDERLINE\",\n },\n calculateColorStyles(),\n ),\n });\n\n return EditorState.createWithContent(convertFromRaw(newRawState));\n};\n\nexport default editorStateByMarkdown;\n","import { draftToMarkdown } from \"markdown-draft-js\";\nimport { convertToRaw } from \"draft-js\";\nimport { reduce } from \"lodash\";\n\nimport { colorStyle } from \"components/shared/markdownEditor/editorPlugins/buttons/FontColorsButton\";\nimport CustomConfigurator from \"../../../../CustomConfigurator\";\n\nconst calculateColorStyles = () =>\n reduce(\n CustomConfigurator.get(\"markdownEditor.colors\"),\n (result, { style }) => {\n result[colorStyle(style)] = {\n open: () => ``,\n close: () => \"\",\n };\n return result;\n },\n {},\n );\n\nconst markdownByEditorState = (editorState) => {\n const currentContent = editorState.getCurrentContent();\n const rawContent = convertToRaw(currentContent);\n return draftToMarkdown(rawContent, {\n preserveNewlines: true,\n entityItems: {\n mention: {\n open: (entity) => `@[${entity.data.mention.id}:`,\n close: () => \"]\",\n },\n \"#mention\": {\n open: (entity) => `#[${entity.data.mention.id}:`,\n close: () => \"]\",\n },\n IMAGE: {\n open: (entity) => `![${entity.data.alt}](${entity.data.src})`,\n close: () => \"\",\n },\n },\n styleItems: Object.assign(\n {\n BOLD: {\n open: () => \"**\",\n close: () => \"**\",\n },\n ITALIC: {\n open: () => \"*\",\n close: () => \"*\",\n },\n UNDERLINE: {\n open: () => \"_\",\n close: () => \"_\",\n },\n STRIKETHROUGH: {\n open: () => \"~~\",\n close: () => \"~~\",\n },\n CODE: {\n open: () => \"`\",\n close: () => \"`\",\n },\n MARK: {\n open: () => \"==\",\n close: () => \"==\",\n },\n },\n calculateColorStyles(),\n ),\n });\n};\n\nexport default markdownByEditorState;\n","import { useMutation, useQuery } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\nimport { stringify } from \"query-string\";\nimport { isNull, omitBy } from \"lodash\";\n\ntype PropertySetParams = {\n name: \"file_profile\" | \"folder_profile\" | string;\n contextType: \"network\" | \"group\" | string;\n contextId?: string;\n inherit?: boolean;\n};\n\nexport const propertySetUrl = ({\n name,\n contextType,\n contextId,\n inherit,\n}: PropertySetParams) =>\n `/api/v1/property_sets/${name}?${stringify(\n omitBy(\n {\n context_type: contextType,\n context_id: contextId,\n inherit,\n },\n isNull,\n ),\n )}`;\n\ntype PropertySetPayload = {\n type: \"modified\" | \"basic\";\n properties: { type: \"string\"; name: \"string\"; label: \"string\" }[];\n};\n\nexport function usePropertySet(params: PropertySetParams, options?) {\n options = options || {};\n\n // Disable requests for file_ or folder_profile property_sets if they are disabled via network config\n if (\n (options.enabled === undefined && params.name === \"file_profile\") ||\n params.name == \"folder_profile\"\n ) {\n const profileConfig = Preload.current_network.config[`${params.name}s`];\n if (!profileConfig?.enabled) options.enabled = false;\n }\n\n return useQuery(propertySetUrl(params), {\n staleTime: Infinity,\n retry: false, // disable retry to enable fast rendering of folder listing in case something is misconfigured\n ...options,\n });\n}\n\nfunction persistPropertySet({\n body,\n ...params\n}: PropertySetParams & { body: any }) {\n return fetchApi(propertySetUrl(params), {\n method: \"PUT\",\n body,\n });\n}\n\nexport function usePersistPropertySet(options?) {\n return useMutation(persistPropertySet, options);\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"Form\":\"sJChuXXIHGwrK_sambDt\",\"FormActions\":\"vAr_njTkftt4_oNohBL1\"};","import React from \"react\";\nimport classnames from \"classnames\";\n\nimport styles from \"./reduxForm.module.css\";\n\ninterface FormActionsProps {\n pristine?: boolean;\n processing?: boolean;\n submitting: boolean;\n\n reset?(...args: unknown[]): unknown;\n\n submitText?: string;\n submitIcon?: string;\n\n onCancel?(...args: unknown[]): unknown;\n\n className?: string;\n}\n\nfunction FormActions({\n processing,\n pristine,\n submitting,\n reset,\n submitText,\n submitIcon,\n onCancel,\n className,\n}: FormActionsProps) {\n return (\n
    \n {\n e.preventDefault();\n onCancel(reset);\n }\n : (e) => {\n e.preventDefault();\n reset?.();\n history.back();\n }\n }\n >\n {I18n.t(\"js.cancel\")}\n \n \n {\" \"}\n {submitText ? submitText : I18n.t(\"js.save\")}\n \n
    \n );\n}\n\nexport default FormActions;\n","import type { SubmitHandler } from \"redux-form\";\nimport React from \"react\";\nimport { reduxForm } from \"redux-form\";\nimport classNames from \"classnames\";\nimport FormActions from \"./FormActions\";\n\nexport interface FormTypes {\n children?: React.ReactNode;\n handleSubmit?: SubmitHandler<\n Record,\n Record,\n string\n >;\n pristine?: boolean;\n submitting?: boolean;\n\n reset?(): void;\n\n initialValues?: Record;\n\n onSubmit(values: any, dispatch: any): unknown | Promise;\n\n onSubmitSuccess?(...args: unknown[]): unknown;\n\n onSubmitFail?(error: Error): unknown;\n\n enableReinitialize?: boolean;\n\n renderChildren?(...props: unknown[]): React.ReactNode;\n\n className?: string;\n processing?: boolean;\n classNameFormActions?: string;\n submitText?: string;\n submitIcon?: string;\n allowSaveWithoutChange?: boolean;\n\n onCancel?(...args: unknown[]): unknown;\n\n fullWidth?: boolean;\n noActions?: boolean;\n form?: string;\n}\n\nfunction Form({\n children,\n handleSubmit,\n pristine,\n submitting = false,\n reset,\n renderChildren,\n className,\n processing = false,\n classNameFormActions,\n submitText,\n submitIcon,\n allowSaveWithoutChange,\n onCancel,\n noActions = false,\n ...otherProps\n}: FormTypes) {\n return (\n \n {renderChildren ? renderChildren(otherProps) : children}\n {noActions ? null : (\n \n )}\n \n );\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n//@ts-ignore\nconst ReduxForm = reduxForm({})(Form);\n\nexport default ReduxForm as unknown as (props: FormTypes) => React.ReactElement;\n","// extracted by mini-css-extract-plugin\nexport default {\"Sorter\":\"gc7nD18MOo0nNWIiASbp\",\"SorterDisabled\":\"G3SH6NsDOumH4MWgumV5\"};","import React from \"react\";\nimport styles from \"./tables.module.css\";\n\nimport classNames from \"classnames\";\n\ninterface SorterProps {\n attribute: string;\n label: string;\n handleSort?(...args: unknown[]): unknown;\n // sortBy is expected to be a tuple of [attribute, direction]\n // @example Sort by name ascending\n // ['name', 1]\n sortBy: [string, number];\n disabled?: boolean;\n}\n\nfunction Sorter({\n attribute,\n label,\n sortBy,\n handleSort,\n disabled,\n}: SorterProps) {\n // Sort is disabled in file search results\n if (!handleSort || disabled)\n return (\n \n {label}\n \n );\n\n const active = sortBy && sortBy[0] === attribute;\n const reverse = sortBy && sortBy[1] === -1;\n const handleClick = (e) => {\n e.preventDefault();\n handleSort([attribute, active ? (reverse ? 1 : -1) : 1]);\n };\n\n return (\n \n \n {label}\n \n \n \n \n \n );\n}\n\nexport default Sorter;\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { Datepicker as OriginalDatepicker } from \"vanillajs-datepicker\";\n\nexport function getDefaultOptions() {\n OriginalDatepicker.locales[I18n.currentLocale()] = I18n.t(\n \"js.plugins.datepicker\",\n );\n\n return {\n weekStart: 1,\n buttonClass: \"btn\",\n format: I18n.t(\"js.plugins.Locale.Formats.datepicker_date\"),\n clearBtn: true,\n autohide: true,\n calendarWeeks: true,\n language: I18n.currentLocale(),\n };\n}\n\n// Auto apply our default options\nexport default function Datepicker(elem, options: object = {}): void {\n return new OriginalDatepicker(elem, { ...getDefaultOptions(), ...options });\n}\n","const reParamSearch = /([?&])_=[^&]*/;\nconst reQueryString = /\\?/;\nlet nonce = new Date().getTime();\n\n// Search for a '_' parameter in the query string\n// If it already exists then set the value with the current time\n// Otherwise add a new '_' parameter to the end with the current time\n//\n// Inspired by https://github.com/github/fetch/issues/629#issuecomment-581652775\nexport default function bustCache(url) {\n if (reParamSearch.test(url)) {\n return url.replace(reParamSearch, \"$1_=\" + nonce++);\n }\n return `${url}${(reQueryString.test(url) ? \"&\" : \"?\") + \"_=\" + nonce++}`;\n}\n","import { reduce, filter, map, isString } from \"lodash\";\n\nconst parserRegex = /\\s*(.+)\\s*=\\s*\"(.+)\"/;\n\nexport function parseLink(link) {\n const parts = link.split(\";\");\n const result = {\n url: parts\n .shift()\n .trim()\n .replace(/(^<|>$)/g, \"\"),\n };\n return parts.reduce((acc, part) => {\n const match = part.match(parserRegex);\n if (match) {\n return { ...acc, [match[1]]: match[2] };\n }\n return acc;\n }, result);\n}\n\nexport default function parseHeader(header) {\n if (!isString(header)) {\n return {};\n }\n return reduce(\n filter(map(header.split(\",\"), parseLink), (x) => x && x.rel),\n (acc, x) => ({ ...acc, [x.rel]: x.url }),\n {},\n );\n}\n","import parseHeader from \"./parseHeader\";\n\nconst transformLinkHeader = (action, state, res) =>\n res.json().then((json) => ({\n data: json,\n loadMoreUrl: parseHeader(res.headers.get(\"Link\")),\n }));\n\nexport default transformLinkHeader;\n","import { RSAA } from \"redux-api-middleware\";\nimport { isPlainObject, isEmpty, get, flow } from \"lodash\";\nimport { SubmissionError } from \"redux-form\";\nimport bustCache from \"./api/bustCache\";\n\nexport { default as parseHeader } from \"./api/parseHeader\";\nexport { default as transformLinkHeader } from \"./api/transformLinkHeader\";\nimport indexBy from \"./indexBy\";\n\nconst maybeSerializeBodyAsJson = ({ body }) =>\n isPlainObject(body) ? JSON.stringify(body) : body;\n\nexport const csrfTokenHeader = () => {\n const meta = document.querySelector('meta[name=\"csrf-token\"]');\n return { \"X-CSRF-Token\": meta ? meta.getAttribute(\"content\") : null };\n};\n\nexport const headers = (method, meta = {}) => {\n let h = { Accept: \"application/json\", \"Cache-Control\": \"no-store\" };\n\n if (method === \"POST\" || method === \"PUT\" || method === \"DELETE\") {\n h = { ...h, ...csrfTokenHeader() };\n }\n\n if (!isEmpty(meta.body)) {\n h[\"Content-Type\"] = \"application/json\";\n }\n\n if (isPlainObject(meta.headers)) {\n return h;\n } else {\n return { ...h, ...meta.headers };\n }\n};\n\nconst defaultTransformer = async (action, state, res) => {\n if (res.status == 204) {\n return null;\n }\n\n return res.json().then((json) => json);\n};\n\nconst createApiAction = ({\n baseType,\n endpoint,\n method = \"GET\",\n transformPayload = defaultTransformer,\n}) => {\n const types = [\"REQUEST\", \"SUCCESS\", \"FAILURE\"].map(\n (t) => `${baseType}/${t}`,\n );\n\n if (fetch.polyfill) {\n endpoint = flow(\n endpoint,\n // Appends cache busting param to polyfilled fetch requests for IE11 compat\n bustCache,\n );\n }\n\n const actionCreator = (meta) => {\n return {\n [RSAA]: {\n method,\n endpoint: endpoint(meta),\n types: [\n { type: `${baseType}/REQUEST`, meta },\n {\n type: `${baseType}/SUCCESS`,\n payload: transformPayload,\n meta: meta,\n },\n { type: `${baseType}/FAILURE`, meta },\n ],\n credentials: \"same-origin\",\n headers: headers(method, meta),\n body: maybeSerializeBodyAsJson(meta),\n },\n };\n };\n\n actionCreator.REQUEST = types[0];\n actionCreator.SUCCESS = types[1];\n actionCreator.FAILURE = types[2];\n\n return actionCreator;\n};\n\nconst createApiResultReducer = (\n { REQUEST, SUCCESS, FAILURE },\n options = {},\n) => {\n const defaultState = {\n data: options.defaultData || {},\n loading: false,\n error: null,\n pagination: options.pagination ? { page: 1 } : {},\n meta: {},\n };\n\n return (state = defaultState, action) => {\n switch (action.type) {\n case REQUEST: {\n return {\n ...state,\n data: options.resetOnRequest ? defaultState.data : state.data,\n loading: true,\n error: null,\n meta: action.meta,\n };\n }\n case SUCCESS: {\n let payload = options.nestedEntries\n ? get(action.payload, options.nestedEntries)\n : action.payload;\n\n const dataKey = options.dataKey || \"data\";\n const moreUrlKey = options.moreUrlKey || \"loadMoreUrl\";\n const loadMoreUrl = get(payload, moreUrlKey);\n\n if (get(payload, dataKey)) {\n payload = get(payload, dataKey);\n }\n const data = options.indexBy\n ? indexBy(payload, options.indexBy)\n : payload;\n\n return {\n ...state,\n data,\n loading: false,\n pagination: options.pagination\n ? {\n ...action.payload.pagination,\n limit: get(action, \"payload.limit\"),\n total: get(action, \"payload.total\"),\n offset: get(action, \"payload.offset\"),\n }\n : null,\n meta: action.meta,\n loadMoreUrl: loadMoreUrl,\n };\n }\n case FAILURE: {\n return {\n ...state,\n data: {},\n loading: false,\n error: action.payload,\n };\n }\n default:\n return state;\n }\n };\n};\n\n// Adapt redux-api-middleware action creators to be used as onSubmit in reduxForm\n// @example\n// submitApi((values, props) => ({ /* my payload */ }))(persistItem)\nconst submitApi =\n (valuesAndPropsToMeta, errorsTransformer = null) =>\n (actionCreator) =>\n async (values, dispatch, props) => {\n const response = await dispatch(\n actionCreator(valuesAndPropsToMeta(values, props)),\n );\n if (response.error) {\n const [errorMessage, errors] = errorsTransformer\n ? errorsTransformer(response.payload)\n : [I18n.t(\"js.generic_error\"), {}];\n\n throw new SubmissionError({\n originalError: response.payload,\n _error: errorMessage,\n ...errors,\n });\n }\n return response.payload;\n };\n\nexport { createApiAction, indexBy, createApiResultReducer, submitApi };\n","//= require ./version\nimport { memoize } from \"lodash\";\n\nwindow.CKEDITOR_BASEPATH = \"/static/ckeditor/\";\n\n// Loads CKEditor, but only once\nconst loadAndConfigureCKEditor = memoize(\n () =>\n new Promise((resolve) => {\n const script = document.createElement(\"script\");\n script.src = \"/static/ckeditor/ckeditor.js\";\n script.async = true;\n script.onload = () => {\n configure();\n resolve(window.CKEDITOR);\n };\n document.body.appendChild(script);\n }),\n);\n\nexport default loadAndConfigureCKEditor;\n\nfunction configure() {\n if (!window.CKEDITOR) return;\n\n // Define changes to default configuration here.\n // For complete reference see:\n // http://docs.ckeditor.com/#!/api/CKEDITOR.config\n CKEDITOR.disableAutoInline = true;\n const config = CKEDITOR.config;\n\n // don't load config file via ajax\n config.customConfig = \"\";\n config.language = I18n.locale.split(\"_\")[0];\n\n // Codesnippet config\n config.codeSnippet_theme = \"default\"; // doesn't work here, cause the plugin changes the default again\n config.codeSnippet_languages = {\n bash: \"Bash\",\n coffeescript: \"CoffeeScript\",\n cpp: \"C++\",\n cs: \"C#\",\n css: \"CSS\",\n html: \"HTML\",\n java: \"Java\",\n javascript: \"JavaScript\",\n json: \"JSON\",\n markdown: \"Markdown\",\n objectivec: \"Objective-C\",\n perl: \"Perl\",\n php: \"PHP\",\n python: \"Python\",\n ruby: \"Ruby\",\n sql: \"SQL\",\n vbscript: \"VBScript\",\n xml: \"XML\",\n };\n\n // The toolbar groups arrangement, optimized for two toolbar rows.\n config.toolbarGroups = [\n {\n name: \"clipboard\",\n groups: [\"clipboard\", \"undo\"],\n },\n {\n name: \"editing\",\n groups: [\"find\", \"selection\"],\n },\n {\n name: \"links\",\n },\n {\n name: \"insert\",\n },\n {\n name: \"forms\",\n },\n {\n name: \"tools\",\n },\n {\n name: \"document\",\n groups: [\"mode\", \"document\", \"doctools\"],\n },\n {\n name: \"others\",\n },\n \"/\",\n {\n name: \"basicstyles\",\n groups: [\"basicstyles\"],\n },\n {\n name: \"paragraph\",\n groups: [\"list\", \"indent\", \"align\", \"blocks\"],\n },\n {\n name: \"styles\",\n },\n {\n name: \"colors\",\n },\n {\n name: \"about\",\n },\n ];\n\n // No links with onclick please\n // Other Elements(+Attributes) can be added too\n // http://docs.ckeditor.com/#!/guide/dev_acf\n config.disallowedContent = \"a[onclick]\";\n config.allowedContent = true;\n\n // Remove some buttons provided by the standard plugins, which are\n // not needed in the Standard(s) toolbar.\n config.removeButtons = \"Subscript,Superscript\";\n\n // Set the most common block elements.\n config.format_tags = \"p;h1;h2;h3;pre\";\n\n // Simplify the dialog windows.\n config.removeDialogTabs = \"image:advanced;link:advanced\";\n config.extraPlugins =\n \"autogrow,colorbutton,colordialog,font,justify,find,codesnippet,iframe\";\n config.removePlugins = \"about,scayt,specialchar,stylescombo,wsc\";\n config.filebrowserImageBrowseUrl = \"/system/ckeditor/images\";\n config.filebrowserImageUploadUrl = \"/api/storage/assets/ckeditor/images\";\n\n // Add custom css to style content\n config.contentsCss = [\n CKEDITOR.getUrl(\"contents.css\"),\n window.Assets[\"ckeditor_override.css\"],\n ];\n\n // Modify Link Dialog to only allow null and _blank as targets\n // hook into dialogDefinition Event\n // http://ckeditor.com/latest/samples/plugins/dialog/dialog.html\n CKEDITOR.on(\"dialogDefinition\", function (ev) {\n var dialogDefinition, editor, targetTab, targetTypeSelect;\n // if this is the link dialog\n if (ev.data.name === \"link\") {\n dialogDefinition = ev.data.definition;\n editor = ev.editor;\n // override target select options\n targetTab = dialogDefinition.getContents(\"target\");\n targetTypeSelect = targetTab.get(\"linkTargetType\");\n return (targetTypeSelect.items = [\n [editor.lang.common.notSet, \"notSet\"],\n [editor.lang.common.targetNew, \"_blank\"],\n ]);\n }\n });\n}\n","// wraps a function thats used as event handler to always call\n// preventDefault on event object, i.e. for stuff\nconst preventDefault = (handler) => (e) => {\n e.preventDefault();\n return handler();\n};\n\nexport default preventDefault;\n","export default function documentReady(fn) {\n if (document.readyState !== \"loading\") {\n fn();\n } else {\n document.addEventListener(\"DOMContentLoaded\", fn);\n }\n}\n","import { map, partition, fromPairs, isEmpty } from \"lodash\";\n\nimport { publishFiles, destroyFile } from \"actions/files\";\n\n// Publishes all files or images with state 'volatile' which exist in values.\n// Used before saving items to apps api,before sending message with attachments,\n// etc.\n//\n// @example\n// const result = await publishAllVolatile({\n// dispatch,\n// values: { profile_image: [{ id: 123, state: \"volatile\", ... }] },\n// storageDirectory: 'images',\n// });\n//\n// console.log(result)\n// //=> { profile_image: [{ id: 123, state: \"published\", token: 456, ... }] }\nconst publishAllVolatile = async ({ dispatch, values, storageDirectory }) => {\n const pairs = await Promise.all(\n map(values, async (files, fieldName) => {\n const [volatile, nonVolatile] = partition(files, { state: \"volatile\" });\n const [remove, others] = partition(nonVolatile, { state: \"removed\" });\n\n if (isEmpty(volatile) && isEmpty(remove)) return [fieldName, files];\n\n const { payload: published } = await dispatch(\n publishFiles({\n body: { [storageDirectory]: volatile },\n storageDirectory,\n }),\n );\n\n await Promise.all(\n map(\n remove,\n async (file) =>\n await dispatch(\n destroyFile({\n id: file.id,\n storageDirectory,\n }),\n ),\n ),\n );\n\n return [fieldName, [...others, ...published]];\n }),\n );\n return fromPairs(pairs);\n};\n\nexport default publishAllVolatile;\n","import { reduce } from \"lodash\";\n\n// Turns given collection into lookup object using given key value\nexport default function indexBy(\n collection: T[] | undefined,\n key: string,\n): { [key: string]: T | undefined } {\n return reduce(\n collection,\n (obj, elem) => {\n obj[elem[key]] = elem;\n return obj;\n },\n {},\n );\n}\n","import { SubmissionError } from \"redux-form\";\nimport { compact, reduce } from \"lodash\";\n\n// formats the given api error and throws redux-form SubmissionError\n//\n// @prop responseErrors [Array] the given api errors\n// @prop options [Object] (optional) e.g. key_prefix to prefix a key\n// @throws [SubmissionError]\n//\n// @example\n// handleItemApiError([\n// {\n// property_name: \"first_name\",\n// t: [\"apps.value.cant_be_empty\", { property: \"Vorname\" }],\n// },\n// ]);\n// => {first_name: 'Dieses Feld muss ausgefüllt werden.'}\n//\nconst handleItemApiError = (responseErrors, options = {}) => {\n const { key_prefix } = options;\n\n const submitErrors = reduce(\n responseErrors,\n (errors, error) => {\n const key = compact([key_prefix, error[\"property_name\"]]).join(\".\");\n errors[key] = I18n.t.apply(I18n, error[\"t\"]);\n return errors;\n },\n {},\n );\n\n throw new SubmissionError(submitErrors);\n};\n\nexport default handleItemApiError;\n","import {\n isEmpty,\n map,\n filter,\n pick,\n mapValues,\n compact,\n castArray,\n get,\n} from \"lodash\";\n\nimport { updateItem, createItem } from \"actions/appCreator\";\nimport publishAllVolatile from \"helpers/files/publishAllVolatile\";\nimport handleItemApiError from \"./handleItemApiError\";\n\nconst pickFileValues = (values, fields) =>\n mapValues(pick(values, fields), (files) => compact(castArray(files)));\n\nconst persistItem = async (\n app,\n dispatch,\n { appId, externalAppId, itemId, externalItemId, values },\n) => {\n if (\n app.id !== appId &&\n (isEmpty(externalAppId) || app.external_id !== externalAppId)\n )\n throw \"Can't persist item for app which is not currently in state\";\n\n const fileFields = map(filter(app.properties, { type: \"file\" }), \"name\");\n const imageFields = map(filter(app.properties, { type: \"image\" }), \"name\");\n\n const publishedFiles = await publishAllVolatile({\n dispatch,\n values: pickFileValues(values, fileFields),\n storageDirectory: \"files\",\n });\n\n const publishedImages = await publishAllVolatile({\n dispatch,\n values: pickFileValues(values, imageFields),\n storageDirectory: \"images\",\n });\n\n const shouldCreateItem = isEmpty(externalItemId) && isEmpty(itemId);\n\n const createOrUpdate = shouldCreateItem ? createItem : updateItem;\n\n const itemResult = await dispatch(\n createOrUpdate({\n appId,\n externalAppId,\n itemId,\n externalItemId,\n body: { values: { ...values, ...publishedFiles, ...publishedImages } },\n }),\n );\n\n if (itemResult.error) {\n handleItemApiError(get(itemResult, [\"payload\", \"response\", \"errors\"]));\n }\n return itemResult.payload;\n};\n\nexport default persistItem;\n","import { isEmpty, isPlainObject } from \"lodash\";\n\nexport const csrfTokenHeader = () => {\n const meta = document.querySelector('meta[name=\"csrf-token\"]');\n return { \"X-CSRF-Token\": meta ? meta.getAttribute(\"content\") : null };\n};\n\nexport const buildHeaders = ({ method, body, headers }) => {\n let h = { Accept: \"application/json\", \"Cache-Control\": \"no-store\" };\n\n if (method === \"POST\" || method === \"PUT\" || method === \"DELETE\") {\n h = { ...h, ...csrfTokenHeader() };\n }\n\n if (!isEmpty(body)) {\n h[\"Content-Type\"] = \"application/json\";\n }\n\n if (isPlainObject(headers)) {\n return h;\n } else {\n return { ...h, ...headers };\n }\n};\n\nexport const okJson = async (response) => {\n if (response.status === 204) return null;\n\n if (response.ok) {\n return await response.json();\n } else {\n throw new Error(I18n.t(\"js.generic_error\"));\n }\n};\n\nexport async function fetchApi(url, options = {}) {\n const { method = \"GET\", body, headers = {} } = options;\n\n const response = await fetch(url, {\n method,\n headers: buildHeaders({ method, body, headers }),\n credentials: \"include\",\n body: body ? JSON.stringify(body) : null,\n });\n\n const payload = await okJson(response);\n if (options.parsePaginationHeaders) {\n return {\n payload,\n pagination: {\n totalPages: Number(response.headers.get(\"X-Total-Pages\")),\n },\n };\n } else {\n return payload;\n }\n}\n","export default function extractUrl(content: string) {\n const regex =\n /(?:^|\\s|[^\\w/])(?((https?:\\/\\/)|(www\\.))[\\w-]+(?:\\.[\\w-]+)+(?:[\\w.,@?^=%&:/~+#-]*[\\w/])?)/gi;\n const match = regex.exec(content);\n if (match) return match.groups?.url || null;\n return null;\n}\n","import { Remarkable } from \"remarkable\";\nimport { linkify } from \"remarkable/linkify\";\nimport { isString, memoize } from \"lodash\";\nimport extractUrl from \"./extractUrl\";\n\nexport const setApplication = () => ({\n ...window.Application,\n getNewMarkdownRenderer: (options = {}) =>\n new Remarkable(options).use(linkify),\n getMarkdownRenderer: memoize(() =>\n window.Application.getNewMarkdownRenderer(),\n ),\n markdown: (text) => {\n if (isString(text)) {\n return (\n window.Application.getMarkdownRenderer()\n .render(text)\n // convert

    to

    etc.\n .replace(\n /<(\\/?)h([1-5])>/g,\n (match, slash, number) => `<${slash}h${number * 1 + 1}>`,\n )\n );\n } else {\n return \"\";\n }\n },\n extractUrl,\n});\n","import { useEffect, useRef } from \"react\";\nimport Tooltip from \"bootstrap/js/dist/tooltip\";\n\nexport default function useTooltip() {\n const elemRef = useRef(null);\n\n useEffect(() => {\n if (elemRef.current) {\n Tooltip.getOrCreateInstance(elemRef.current);\n }\n\n return function () {\n if (elemRef.current) Tooltip.getInstance(elemRef.current)?.dispose();\n };\n }, [elemRef.current]);\n\n return elemRef;\n}\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\n\nexport type AppState = {\n title: string | null;\n};\n\nconst initialState: AppState = {\n title: null,\n};\n\nconst appSlice = createSlice({\n name: \"app\",\n initialState,\n reducers: {\n setTitle(state, action: PayloadAction) {\n state.title = action.payload;\n },\n },\n});\n\nexport const { setTitle } = appSlice.actions;\nexport default appSlice.reducer;\n","import { combineReducers } from \"redux\";\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\n\nimport { createApiResultReducer } from \"helpers/api\";\nimport { fetchGroup, fetchGroupDefaults } from \"actions/groups\";\nimport { Group } from \"../@types\";\n\ntype GroupsBySlugState = {\n [slug: string]: Group | undefined;\n};\n\nconst initialState: GroupsBySlugState = {};\n\nconst groupsBySlugSlice = createSlice({\n name: \"groupsBySlug\",\n initialState,\n reducers: {\n toggleFavorited(\n state,\n { payload }: PayloadAction<{ groupSlug: string; favorited: boolean }>,\n ) {\n const group = state[payload.groupSlug];\n if (group) group.favorited = payload.favorited;\n },\n toggleSubscribed(\n state,\n {\n payload,\n }: PayloadAction<{ groupSlug: string; subscription_status: boolean }>,\n ) {\n const group = state[payload.groupSlug];\n if (group) group.subscription_status = payload.subscription_status;\n },\n },\n});\n\nconst reducer = combineReducers({\n bySlug: groupsBySlugSlice.reducer,\n myGroupSlugs: (state = null) => state,\n fetchGroupRequest: createApiResultReducer(fetchGroup, {\n resetOnRequest: true,\n }),\n groupDefaults: createApiResultReducer(fetchGroupDefaults, {\n resetOnRequest: true,\n }),\n});\n\nexport default reducer;\nexport const { toggleFavorited, toggleSubscribed } = groupsBySlugSlice.actions;\n","import { put, take, call, select, actionChannel } from \"redux-saga/effects\";\nimport { END, eventChannel, buffers } from \"redux-saga\";\nimport { map, get, find } from \"lodash\";\nimport axios from \"axios\";\nimport { change, formValueSelector } from \"redux-form\";\n\nimport { FILES } from \"actions/files\";\n\n// Returns change action with updated file in value\nconst createUpdateFileValue =\n ({ form, inputName, clientId }) =>\n (value, file) => {\n const newFileValues = map(value, (fileValue) =>\n fileValue.clientId === clientId ? { ...fileValue, ...file } : fileValue,\n );\n return change(form, inputName, newFileValues);\n };\n\n// Returns true if file identified by given clientId is not present in value\nconst fileWasRemoved = (value, { clientId }) =>\n find(value, { clientId }) === undefined;\n\n/*\nManages the upload of a single file\n@param {function} postWithProgress - function which performs the upload, DI for storybook\n@param {File} file\n@param {storageDirectory} string - \"images\" or \"files\"\n@param {form} string - name of the form where we are uploading\n@param {inputName} string - name of the field where we are uploading\n */\nexport function* fileUploader(\n postWithProgress,\n { file, clientId, storageDirectory, form, inputName },\n) {\n const data = new FormData();\n data.append(\"file\", file);\n data.append(\"name\", file.name);\n data.append(\"type\", file.type);\n data.append(\"client_size\", file.size); // for debugging of #897\n data.append(\"external_id\", clientId);\n\n // This creates a upload channel which emits the different\n // callbacks and promises in an action like style.\n const channel = postWithProgress(`/api/storage/${storageDirectory}`, data);\n\n const updateFileValue = createUpdateFileValue({ form, inputName, clientId });\n\n while (true) {\n const emitterResult = yield take(channel);\n\n const value = yield select(formValueSelector(form), inputName);\n if (fileWasRemoved(value, { clientId })) {\n channel.close();\n return;\n }\n\n switch (emitterResult.type) {\n case \"PROGRESS\": {\n yield put(updateFileValue(value, { progress: emitterResult.progress }));\n break;\n }\n case \"SUCCESS\": {\n yield put(\n updateFileValue(value, {\n ...get(emitterResult, [\"result\", \"data\"]),\n progress: 100,\n }),\n );\n yield put({\n type: FILES.UPLOAD.SUCCESS,\n payload: get(emitterResult, [\"result\", \"data\"]),\n });\n break;\n }\n case \"FAILURE\": {\n yield put(\n updateFileValue(value, {\n state: \"failed\",\n status: emitterResult.error.response.status,\n }),\n );\n yield put({ type: FILES.UPLOAD.FAILURE, error: emitterResult.error });\n break;\n }\n }\n }\n}\n\n// Creates cancelable event channel where the following events are emitted:\n// - { type: \"PROGRESS\", progress: 96.2 }\n// - { type: \"SUCCESS\", result: { id: 123, ... } } // result = api response json\n// - { type: \"FAILURE\", error: ApiError }\nconst defaultPostWithProgress = (url, data) =>\n eventChannel((emit) => {\n const controller = new AbortController();\n const uploader = axios.post(url, data, {\n signal: controller.signal,\n onUploadProgress: ({ loaded, total }) => {\n emit({ type: \"PROGRESS\", progress: (loaded * 100) / total });\n },\n });\n\n uploader\n .then((result) => {\n emit({ type: \"SUCCESS\", result });\n emit(END);\n })\n .catch((e) => {\n emit({ type: \"FAILURE\", error: e });\n emit(END);\n });\n\n return () => {\n controller.abort();\n };\n });\n\n// Saga to manage file uploads\n// postWithProgress function is dependency injectable (i.e. for storybook)\n// and defaults to defaultPostWithProgress\nexport default function* filesSaga(options = {}) {\n const postWithProgress = options.postWithProgress || defaultPostWithProgress;\n\n const uploadRequestChannel = yield actionChannel(\n FILES.UPLOAD.REQUEST,\n buffers.expanding(10),\n );\n\n // can be replaced with takeLeading after upgrading redux-saga\n while (true) {\n const action = yield take(uploadRequestChannel);\n yield call(fileUploader, postWithProgress, action);\n }\n}\n","import { get } from \"lodash\";\nimport { createSelector } from \"reselect\";\nimport { currentRouteParamsSelector } from \"./navigation\";\n\nimport { transformPropsForReduxForm } from \"components/appCreator/properties/helpers\";\n\nexport const itemsInfoSelector = (state) => get(state, \"appCreator.items\");\n\nexport const itemsSelector = (state) =>\n get(state, [\"appCreator\", \"items\", \"data\"]);\n\nexport const selectItemResult = (state) => get(state, [\"appCreator\", \"item\"]);\nexport const itemSelector = (state) => get(state, \"appCreator.item.data\");\nexport const currentItemIdSelector = (state) => get(itemSelector(state), \"id\");\n\nexport const loadMoreUrlsSelector = (state) =>\n get(state, [\"appCreator\", \"items\", \"loadMoreUrls\"]);\n\nexport const totalArchivedItemsSelector = (state) =>\n get(state, [\"appCreator\", \"items\", \"totalArchivedItems\"]);\n\nexport const itemPaginationSelector = (state) =>\n get(itemsInfoSelector(state), \"pagination\");\n\nexport const appsInfoSelector = (state) => get(state, \"appCreator.apps\");\n\nexport const appsSelector = (state) => get(appsInfoSelector(state), \"data\");\n\nexport const selectAppResult = (state) => get(state, [\"appCreator\", \"app\"]);\nexport const appSelector = (state) => get(state, \"appCreator.app.data\");\n\nexport const appLinkSelector = (state) => get(state, \"appCreator.appLink\");\n\nexport const propertiesSelector = (state) =>\n get(appSelector(state), \"properties\");\n\nexport const itemsExportsSelector = (state) =>\n get(state, \"appCreator.exports.data\");\n\nexport const itemsLoadingSelector = (state) =>\n get(state, \"appCreator.items.loading\");\n\nexport const itemsErrorSelector = (state) =>\n get(state, \"appCreator.items.error\");\n\nexport const itemLoadingSelector = (state) =>\n get(state, \"appCreator.item.loading\");\n\n// item form\nexport const initialFormValuesSelector = createSelector(\n [itemSelector, appSelector],\n (item, app) => transformPropsForReduxForm(item, get(app, \"properties\")),\n);\n\nexport const appSlugSelector = (state) =>\n get(currentRouteParamsSelector(state), \"slug\");\n\nexport const relationOptionsSelector = (state) =>\n get(state, [\"appCreator\", \"relationOptions\"]);\n","import { createSelector } from \"reselect\";\nimport { get, mapValues, sortBy, orderBy, groupBy, pick, find } from \"lodash\";\nimport { Group, State } from \"../@types\";\n\nexport const networkSelector = (state: State) => state.network;\n\nexport const selectNetworkId = (state) => state.network.id;\n\nexport const networkNameSelector = (state) => get(state, \"network.name\");\nexport const selectNetworkMAUrlScheme = (state) =>\n get(networkSelector(state), [\"config\", \"mobile_app\", \"url_scheme\"]);\n\nexport const networkAdminSelector = (state) =>\n get(networkSelector(state), [\"can\", \"administrate\"]);\n\nexport const currentMemberSelector = (state: State) =>\n get(state, \"currentMember\");\n\nexport const groupCategoriesSelector = createSelector(\n [networkSelector],\n (network: State[\"network\"]) =>\n orderBy(get(network, \"group_categories\"), \"order\", \"asc\"),\n);\n\nexport const groupCategorySelector = (state, slug) => {\n const groupCategories = groupCategoriesSelector(state);\n return find(groupCategories, [\"slug\", slug]);\n};\nexport const groupCategoryFromIdSelector = (state, id) => {\n const groupCategories = groupCategoriesSelector(state);\n return find(groupCategories, [\"id\", id]);\n};\nconst groupSorter = (groups) =>\n sortBy(groups, [\n ({ active_main_group }) => (active_main_group ? 0 : 1),\n ({ name }) => name.toLowerCase(),\n ]);\n\ntype StateGroups = {\n bySlug: { [key: string]: Group[] };\n myGroupSlugs: string[];\n};\n\nexport const myGroupsByCategoryIdSelector = createSelector(\n (state: { groups: StateGroups }) => state.groups,\n (groups: StateGroups) => {\n const myGroups = pick(groups.bySlug, groups.myGroupSlugs);\n return mapValues(groupBy(myGroups, \"category_id\"), groupSorter);\n },\n);\n\nexport const groupSelector = (state, groupSlug) =>\n state.groups.bySlug[groupSlug];\n\nexport const fetchGroupRequestSelector = (state) =>\n state.groups.fetchGroupRequest;\n\nexport const groupDefaultsSelector = (state) => state.groups.groupDefaults;\n","import { get } from \"lodash\";\nimport { groupSelector, networkSelector } from \"./environment\";\n\n// Select the currentFolder from state\nexport const currentFolderMetaSelector = (state) =>\n get(state, [\"folders\", \"currentFolder\"]);\n// Select the currentFolderId from state\nexport const currentFolderIdSelector = (state) =>\n get(currentFolderMetaSelector(state), [\"id\"]);\n\n// Select all by id indexed folders\nexport const foldersByIdSelector = (state) => get(state, [\"folders\", \"byId\"]);\n\nexport const rootFolderIdSelector =\n ({ groupSlug }) =>\n (state) =>\n get(\n groupSlug ? groupSelector(state, groupSlug) : networkSelector(state),\n \"root_folder_id\",\n );\n","import { createSelector } from \"reselect\";\nimport { get } from \"lodash\";\n\nexport const currentRouteSelector = (state) =>\n get(state, \"navigation.currentRoute\");\n\nexport const currentRouteParamsSelector = (state) =>\n get(currentRouteSelector(state), \"params\");\n\nexport const currentGroupSlugSelector = (state) =>\n get(currentRouteParamsSelector(state), \"groupSlug\");\n\nexport const currentAppSlugSelector = (state) =>\n get(currentRouteParamsSelector(state), \"appSlug\");\n\nexport const currentPageSelector = (state) =>\n get(currentRouteParamsSelector(state), \"page\");\n\nexport const currentAppUrlSelector = createSelector(\n [currentGroupSlugSelector, currentAppSlugSelector],\n (groupSlug, appSlug) =>\n `/${groupSlug ? `groups/${groupSlug}/` : \"\"}apps/${appSlug}/items`,\n);\n","import { get } from \"lodash\";\n\nexport const selectFolderProfilesEnabled = (state) =>\n get(state, [\"network\", \"config\", \"folder_profiles\", \"enabled\"]);\n\nexport const selectFileProfilesEnabled = (state) =>\n get(state, [\"network\", \"config\", \"file_profiles\", \"enabled\"]);\n\nexport const selectFileProfileColumnFields = (state) =>\n get(state, [\"network\", \"config\", \"file_profiles\", \"column_fields\"]);\n","import { createApiResultReducer } from \"helpers/api\";\nimport { fetchInvites } from \"actions/invites\";\nimport { get, each, findIndex, map } from \"lodash\";\n\nconst apiReducer = createApiResultReducer(fetchInvites, {\n resetOnRequest: true,\n defaultData: [],\n});\n\nconst reducer = (state = {}, action) => {\n if (\n action.type !== fetchInvites.REQUEST &&\n action.type !== fetchInvites.SUCCESS\n ) {\n switch (action.type) {\n case \"/INVITE_ACCEPT/REQUEST\": {\n const acceptedInviteIndex = findIndex(\n state.data,\n (i) => i.id === get(action, [\"meta\", \"inviteId\"]),\n );\n return {\n ...state,\n data: map(state.data, (data, index) =>\n index === acceptedInviteIndex\n ? {\n ...state.data[acceptedInviteIndex],\n status: \"accepted\",\n }\n : data,\n ),\n };\n }\n case \"/INVITE_DECLINE/REQUEST\": {\n const declinedInviteIndex = findIndex(\n state.data,\n (i) => i.id === get(action, [\"meta\", \"inviteId\"]),\n );\n return {\n ...state,\n data: map(state.data, (data, index) =>\n index === declinedInviteIndex\n ? {\n ...state.data[declinedInviteIndex],\n status: \"declined\",\n }\n : data,\n ),\n };\n }\n case \"/INVITES_MORE/SUCCESS\": {\n let newData = state.data;\n each(get(action, [\"payload\", \"data\"]), (i) => newData.push(i));\n return {\n ...state,\n data: newData,\n loadMoreUrl: get(action, [\"payload\", \"loadMoreUrl\"]) || null,\n };\n }\n default:\n return state;\n }\n }\n return apiReducer(state, action);\n};\n\nexport default reducer;\n","import { createApiResultReducer } from \"helpers/api\";\nimport { fetchParticipations } from \"actions/participations\";\nimport { get, each } from \"lodash\";\n\nconst apiReducer = createApiResultReducer(fetchParticipations, {\n resetOnRequest: true,\n defaultData: [],\n moreUrlKey: \"loadMoreUrl.next\",\n});\n\nconst reducer = (state = {}, action) => {\n if (\n action.type !== \"/PARTICIPATIONS/REQUEST\" &&\n action.type !== \"/PARTICIPATIONS/SUCCESS\"\n ) {\n switch (action.type) {\n case \"/PARTICIPATIONS_MORE/SUCCESS\": {\n let newData = state.data;\n each(get(action, [\"payload\", \"data\"]), (p) => newData.push(p));\n return {\n ...state,\n data: newData,\n loadMoreUrl: get(action, [\"payload\", \"loadMoreUrl\", \"next\"]) || null,\n };\n }\n default:\n return state;\n }\n }\n return apiReducer(state, action);\n};\n\nexport default reducer;\n","import { createApiResultReducer } from \"helpers/api\";\nimport { addParticipations } from \"actions/participations\";\n\nexport default createApiResultReducer(addParticipations, {\n resetOnRequest: true,\n defaultData: [],\n});\n","import { createAction } from \"redux-actions\";\n\nexport const route = createAction(\"ROUTE\");\n","import { combineReducers } from \"redux\";\nimport { handleAction } from \"redux-actions\";\nimport { route } from \"actions/navigation\";\n\nexport default combineReducers({\n currentRoute: handleAction(route, (state, { payload }) => payload, null),\n});\n","import { createApiAction } from \"helpers/api\";\nimport { createFormAction } from \"redux-form-saga\";\n\nexport const NAMESPACE = \"administration/appCreator\";\n\nexport const fetchApps = createApiAction({\n method: \"GET\",\n endpoint: ({ url }) => url,\n baseType: `${NAMESPACE}/APPS`,\n});\n\nexport const saveApp = createFormAction(`${NAMESPACE}/APP/SAVE`);\n\nexport const createApp = createApiAction({\n method: \"POST\",\n endpoint: () => \"/api/apps/apps\",\n baseType: `${NAMESPACE}/APP/CREATE`,\n});\n\nexport const postAppId = createApiAction({\n method: \"POST\",\n endpoint: ({ groupSlug }) =>\n `${groupSlug ? `/groups/${groupSlug}` : \"\"}/administration/apps`,\n baseType: `${NAMESPACE}/APPS/POST_APP_ID`,\n});\n\nexport const updateApp = createApiAction({\n method: \"PUT\",\n endpoint: ({ appId }) => `/api/apps/apps/${appId}`,\n baseType: `${NAMESPACE}/APP/UPDATE`,\n});\n\nexport const deleteApp = createApiAction({\n method: \"DELETE\",\n endpoint: ({ appSlug }) => `apps/${appSlug}`,\n baseType: `${NAMESPACE}/APP/DELETE`,\n});\n","import {\n archiveItem,\n fetchItems,\n loadMoreItemsByColumn,\n moveItem,\n unarchiveItem,\n updateItem,\n} from \"../../actions/appCreator\";\nimport {\n concat,\n filter,\n findIndex,\n findKey,\n flatMap,\n get,\n isEmpty,\n omit,\n pull,\n toNumber,\n} from \"lodash\";\n\nconst defaultState = {\n data: [],\n loadMoreUrls: {},\n loading: false,\n error: null,\n meta: {},\n};\n\nconst itemsRequestReducer = (state = defaultState, action) => {\n let loadMoreUrls = get(action.payload, \"loadMoreUrls\");\n\n switch (action.type) {\n case fetchItems.REQUEST:\n case loadMoreItemsByColumn.REQUEST:\n return {\n ...state,\n loading: true,\n error: null,\n };\n case loadMoreItemsByColumn.SUCCESS:\n return {\n ...state,\n data: concat(state.data, get(action.payload, \"data\")),\n loadMoreUrls: !isEmpty(loadMoreUrls)\n ? { ...state.loadMoreUrls, ...loadMoreUrls }\n : omit(\n state.loadMoreUrls,\n findKey(\n state.loadMoreUrls,\n (url) => url === get(action, \"meta.url\"),\n ),\n ),\n loading: false,\n meta: action.meta,\n };\n case fetchItems.SUCCESS:\n return {\n ...state,\n data: get(action, \"payload.data\") || get(action, \"payload\"),\n pagination: get(action, \"payload.pagination\") || null,\n loadMoreUrls: {\n ...state.loadMoreUrls,\n ...loadMoreUrls,\n },\n totalArchivedItems: get(action.payload, \"totalArchivedItems\"),\n loading: false,\n meta: action.meta,\n };\n case fetchItems.FAILURE: {\n return {\n ...state,\n data: [],\n loading: false,\n error: action.payload,\n };\n }\n case archiveItem.REQUEST: {\n const column = get(action, \"meta.column\");\n const totalArchivedItems = column\n ? {\n ...state.totalArchivedItems,\n [column]: state.totalArchivedItems\n ? toNumber(state.totalArchivedItems[column]) + 1\n : 0 + 1,\n }\n : toNumber(state.totalArchivedItems) + 1;\n\n return {\n ...state,\n data: filter(state.data, (i) => i.id !== action.meta.itemId),\n totalArchivedItems,\n };\n }\n case unarchiveItem.REQUEST: {\n return {\n ...state,\n data: filter(state.data, (i) => i.id !== action.meta.itemId),\n };\n }\n default:\n return state;\n }\n};\n\nexport default (state, action) => {\n if (\n action.type === updateItem.REQUEST &&\n action.meta.optimistic &&\n action.meta.insertAfterCardId !== action.meta.itemId\n ) {\n const newItem =\n state.data[findIndex(state.data, (i) => i.id === action.meta.itemId)];\n const changedItem = {\n ...newItem,\n values: { ...newItem.values, ...get(action, \"meta.body.values\") },\n };\n const data = !isEmpty(action.meta.insertAfterCardId)\n ? flatMap(pull(state.data, newItem), (item) => {\n if (item.id === action.meta.insertAfterCardId) {\n return [item, changedItem];\n }\n return item;\n })\n : flatMap([changedItem, pull(state.data, newItem)]);\n return { ...state, data };\n }\n\n switch (action.type) {\n case moveItem.REQUEST: {\n const newItem = get(state, \"data\")[\n findIndex(\n get(state, \"data\"),\n (i) => i.id === get(action, \"meta.itemId\"),\n )\n ];\n const changedItem = {\n ...newItem,\n values: { ...newItem.values, ...get(action, \"meta.body.values\") },\n };\n const data = !isEmpty(action.meta.insertAfterCardId)\n ? flatMap(pull(state.data, newItem), (item) => {\n if (item.id === action.meta.insertAfterCardId) {\n return [item, changedItem];\n }\n return item;\n })\n : flatMap([changedItem, pull(state.data, newItem)]);\n return { ...state, data };\n }\n case moveItem.SUCCESS: {\n const newItem = get(state, \"data\")[\n findIndex(\n get(state, \"data\"),\n (i) => i.id === get(action, \"meta.itemId\"),\n )\n ];\n\n const data = !isEmpty(action.meta.insertAfterCardId)\n ? flatMap(pull(state.data, newItem), (item) => {\n if (item.id === action.meta.insertAfterCardId) {\n return [item, get(action, \"payload\")];\n }\n return item;\n })\n : flatMap([get(action, \"payload\"), pull(state.data, newItem)]);\n return { ...state, data };\n }\n }\n return itemsRequestReducer(state, action);\n};\n","import { combineReducers } from \"redux\";\nimport { createApiResultReducer } from \"helpers/api\";\nimport {\n fetchApp,\n fetchAppLink,\n fetchItem,\n exportItemsGetLast,\n} from \"actions/appCreator\";\nimport { fetchApps } from \"actions/administration/appCreator\";\nimport items from \"./items\";\n\nexport default combineReducers({\n item: createApiResultReducer(fetchItem, {\n resetOnRequest: true,\n }),\n items,\n app: createApiResultReducer(fetchApp, {\n resetOnRequest: true,\n }),\n appLink: createApiResultReducer(fetchAppLink),\n apps: createApiResultReducer(fetchApps, {\n defaultData: [],\n resetOnRequest: true,\n }),\n exports: createApiResultReducer(exportItemsGetLast),\n});\n","import { combineReducers } from \"redux\";\n\nimport { createApiResultReducer } from \"helpers/api\";\nimport { fetchMembership, fetchMembershipSettings } from \"actions/memberships\";\n\nconst reducer = combineReducers({\n membershipRequest: createApiResultReducer(fetchMembership, {\n resetOnRequest: true,\n }),\n membershipSettingsRequest: createApiResultReducer(fetchMembershipSettings, {\n resetOnRequest: true,\n }),\n});\n\nexport default reducer;\n","import { combineReducers } from \"redux\";\n\nimport { fetchFolder, FOLDER } from \"actions/files\";\n\nconst currentFolder = (state = null, action) => {\n switch (action.type) {\n case FOLDER.SELECT:\n return { id: action.meta.id, namespace: action.meta.namespace };\n default:\n return state;\n }\n};\n\nconst byId = (state = {}, action) => {\n switch (action.type) {\n case fetchFolder.REQUEST:\n return {\n ...state,\n [action.meta.id]: {\n ...state[action.meta.id],\n loading: true,\n error: null,\n meta: action.meta,\n },\n };\n case fetchFolder.SUCCESS:\n return {\n ...state,\n [action.meta.id]: {\n ...state[action.meta.id],\n data: action.payload,\n loading: false,\n meta: action.meta,\n },\n };\n case fetchFolder.FAILURE:\n return {\n ...state,\n [action.meta.id]: {\n ...state[action.meta.id],\n data: {},\n loading: false,\n error: action.payload,\n },\n };\n default:\n return state;\n }\n};\n\nconst reducer = combineReducers({\n byId,\n currentFolder,\n});\n\nexport default reducer;\n","import { stringify } from \"query-string\";\nimport { createApiAction } from \"helpers/api\";\nimport { isEmpty } from \"lodash\";\n\nexport const fetchReservableMeetingRooms = createApiAction({\n method: \"GET\",\n endpoint: ({ dateRange, roomId }) => {\n const query = {\n filter: \"reservable\",\n ...dateRange,\n room_id: !isEmpty(roomId) ? roomId : null,\n };\n\n return `/meeting_rooms?${stringify(query)}`;\n },\n baseType: `MEETING_ROOMS/RESERVABLE`,\n});\n","import { combineReducers } from \"redux\";\n\nimport { createApiResultReducer } from \"helpers/api\";\nimport { fetchReservableMeetingRooms } from \"actions/meetingRooms\";\n\nconst reducer = combineReducers({\n reservableMeetingRoomsRequest: createApiResultReducer(\n fetchReservableMeetingRooms,\n {\n resetOnRequest: true,\n },\n ),\n});\n\nexport default reducer;\n","import { map } from \"lodash\";\nimport {\n REMOVE_WIDGET,\n CHANGE_WIDGET_VALUE,\n SELECT_WIDGET,\n ADD_OR_MOVE_WIDGET,\n SET_GROUP_ID,\n RESET_SUCCESSFUL_SAVE,\n SET_IDENTIFIER,\n fetchWidgetbar,\n updateWidgetbar,\n fetchCalendars,\n} from \"actions/administration/widgetbar\";\n\nconst initialState = {\n widgets: [],\n selectedWidgetIndex: 0,\n identifier: \"\",\n groupId: \"\",\n successfulSave: false,\n calendars: [],\n};\n\nconst editWidgetbarReducer = (state = initialState, action) => {\n switch (action.type) {\n case fetchWidgetbar.SUCCESS: {\n const widgets = map(action.payload.widgets, (w) => {\n // radio buttons are needing the bool as a string\n if (w.properties.show_age) {\n return {\n ...w,\n properties: {\n ...w.properties,\n show_age: w.properties.show_age.toString(),\n },\n };\n }\n return w;\n });\n\n return {\n ...state,\n widgets: widgets,\n selectedWidgetIndex: 0,\n };\n }\n case fetchCalendars.SUCCESS: {\n return {\n ...state,\n calendars: action.payload.calendars,\n };\n }\n case fetchWidgetbar.FAILURE: {\n return {\n ...state,\n widgets: [],\n selectedWidgetIndex: 0,\n };\n }\n case updateWidgetbar.SUCCESS: {\n return {\n ...state,\n successfulSave: true,\n };\n }\n case updateWidgetbar.FAILURE: {\n return {\n ...state,\n successfulSave: false,\n };\n }\n case RESET_SUCCESSFUL_SAVE: {\n return {\n ...state,\n successfulSave: false,\n };\n }\n case ADD_OR_MOVE_WIDGET: {\n const widgets = [...state.widgets];\n const index = state.widgets.indexOf(action.data);\n let widget;\n\n // widget not found then it is new, if it is found then change position\n if (index === -1) {\n widget = {\n type: action.data.type,\n properties: {\n ...action.data.properties,\n },\n };\n } else {\n widget = widgets.splice(index, 1)[0];\n }\n widgets.splice(action.index, 0, widget);\n\n return {\n ...state,\n widgets: widgets,\n selectedWidgetIndex: action.index,\n };\n }\n case REMOVE_WIDGET: {\n return {\n ...state,\n widgets: [\n ...state.widgets.slice(0, state.selectedWidgetIndex),\n ...state.widgets.slice(\n state.selectedWidgetIndex + 1,\n state.widgets.length,\n ),\n ],\n selectedWidgetIndex: 0,\n };\n }\n case CHANGE_WIDGET_VALUE: {\n return {\n ...state,\n widgets: [\n ...state.widgets.slice(\n 0,\n state.selectedWidgetIndex === 0 ? 0 : state.selectedWidgetIndex,\n ),\n {\n ...state.widgets[state.selectedWidgetIndex],\n properties: {\n ...state.widgets[state.selectedWidgetIndex].properties,\n [action.propertyKey]: action.data,\n },\n },\n ...state.widgets.slice(\n state.selectedWidgetIndex + 1,\n state.widgets.length,\n ),\n ],\n };\n }\n case SELECT_WIDGET: {\n return {\n ...state,\n selectedWidgetIndex: action.data,\n };\n }\n case SET_GROUP_ID: {\n return {\n ...state,\n ...action.data,\n };\n }\n case SET_IDENTIFIER: {\n return {\n ...state,\n identifier: action.data,\n };\n }\n default:\n return state;\n }\n};\n\nexport default editWidgetbarReducer;\n","import {\n RESET_ERRORS,\n fetchWidgetbar,\n updateWidgetbar,\n fetchCalendars,\n} from \"actions/administration/widgetbar\";\n\nconst initialState = {\n updateWidgetbar: false,\n fetchWidgetbar: false,\n fetchCalendars: false,\n notFound: false,\n};\n\nconst errorsReducer = (state = initialState, action) => {\n switch (action.type) {\n case fetchWidgetbar.FAILURE: {\n return {\n ...state.errors,\n fetchWidgetbar: true,\n notFound: action.payload.status === 404,\n };\n }\n case fetchCalendars.FAILURE: {\n return {\n ...state.errors,\n fetchCalendars: true,\n };\n }\n case updateWidgetbar.FAILURE: {\n return {\n ...state,\n updateWidgetbar: true,\n };\n }\n case RESET_ERRORS: {\n return {};\n }\n default: {\n return state;\n }\n }\n};\n\nexport default errorsReducer;\n","import { fetchWidgetbars } from \"actions/administration/widgetbar\";\n\nconst initialState = {\n widgetbars: [],\n};\n\nconst indexReducer = (state = initialState, action) => {\n switch (action.type) {\n case fetchWidgetbars.FAILURE: {\n return {\n ...state,\n widgetbars: [],\n };\n }\n case fetchWidgetbars.SUCCESS: {\n return {\n ...state,\n widgetbars: action.payload.widgetbars,\n };\n }\n default: {\n return state;\n }\n }\n};\n\nexport default indexReducer;\n","import { fetchWidgetbar } from \"actions/administration/widgetbar\";\nimport { createApiResultReducer } from \"helpers/api\";\nimport { combineReducers } from \"redux\";\nimport editWidgetbarReducer from \"reducers/administration/widgetbar/edit\";\nimport errorsReducer from \"reducers/administration/widgetbar/errors\";\nimport indexReducer from \"reducers/administration/widgetbar/index\";\n\nexport default combineReducers({\n fetchWidgetbar: createApiResultReducer(fetchWidgetbar),\n edit: editWidgetbarReducer,\n errors: errorsReducer,\n index: indexReducer,\n});\n","import { createApiAction } from \"helpers/api\";\n\nexport const fetchLegalTexts = createApiAction({\n method: \"GET\",\n endpoint: () => `/administration/legal_texts`,\n baseType: `administration/FETCH_LEGAL_TEXTS`,\n});\n\nexport const fetchLegalText = createApiAction({\n method: \"GET\",\n endpoint: ({ legalTextId }) => `/administration/legal_texts/${legalTextId}`,\n baseType: `administration/FETCH_LEGAL_TEXT`,\n});\n\nexport const updateLegalText = createApiAction({\n method: \"PUT\",\n endpoint: ({ legalTextId }) => `/administration/legal_texts/${legalTextId}`,\n baseType: `administration/UPDATE_LEGAL_TEXT`,\n});\n\nexport const createLegalText = createApiAction({\n method: \"POST\",\n endpoint: () => `/administration/legal_texts`,\n baseType: `administration/CREATE_LEGAL_TEXT`,\n});\n\nexport const deleteLegalText = createApiAction({\n method: \"DELETE\",\n endpoint: ({ legalTextId }) => `/administration/legal_texts/${legalTextId}`,\n baseType: `administration/DELETE_LEGAL_TEXT`,\n});\n","import { combineReducers } from \"redux\";\nimport { filter } from \"lodash\";\n\nimport { createApiResultReducer } from \"helpers/api\";\nimport {\n fetchLegalTexts,\n fetchLegalText,\n deleteLegalText,\n} from \"actions/administration/legalTexts\";\n\nconst legalTextsRequestReducer = createApiResultReducer(fetchLegalTexts, {\n resetOnRequest: true,\n});\n\nconst reducer = combineReducers({\n legalTextsRequest: (state, action) => {\n if (action.type === deleteLegalText.SUCCESS) {\n console.log(\"DELETE\", state.data, action.meta.legalTextId);\n return {\n ...state,\n data: filter(state.data, ({ id }) => id !== action.meta.legalTextId),\n };\n }\n return legalTextsRequestReducer(state, action);\n },\n legalTextRequest: createApiResultReducer(fetchLegalText, {\n resetOnRequest: true,\n }),\n});\n\nexport default reducer;\n","import { createStore, applyMiddleware, combineReducers } from \"redux\";\nimport promiseMiddleware from \"redux-promise\";\nimport { createLogger } from \"redux-logger\";\nimport { apiMiddleware } from \"redux-api-middleware\";\nimport { reducer as formReducer } from \"redux-form\";\nimport createSagaMiddleware from \"redux-saga\";\nimport { map } from \"lodash\";\n\nimport app from \"reducers/app\";\nimport theme from \"components/administration/designManager/themeSlice\";\nimport groupCategoryTheme from \"components/administration/designManagerLight/groupCategoryThemeSlice\";\nimport groupTheme from \"components/administration/designManagerLight/groupThemeSlice\";\nimport invites from \"reducers/invites\";\nimport participations from \"reducers/participations\";\nimport participantsRequests from \"reducers/participantsRequests\";\nimport navigation from \"reducers/navigation\";\nimport groups from \"reducers/groups\";\nimport appCreator from \"reducers/appCreator\";\nimport memberships from \"reducers/memberships\";\nimport folders from \"reducers/folders\";\nimport meetingRooms from \"reducers/meetingRooms\";\nimport currentMember from \"reducers/currentMember\";\n\nimport administrationWidgetbarReducer from \"reducers/administration/widgetbar\";\nimport administrationLegalTextReducer from \"reducers/administration/legalText\";\nimport indexBy from \"helpers/indexBy\";\nimport rootSaga from \"./sagas\";\n\nconst defaultReducers = {\n app,\n theme,\n groupCategoryTheme,\n groupTheme,\n network: (state = null) => state, // from init\n groups,\n currentMember,\n memberships,\n form: formReducer,\n appCreator,\n navigation,\n invites,\n participations,\n folders,\n appointments: combineReducers({\n participantsRequests: participantsRequests,\n }),\n administration: combineReducers({\n widgetbar: administrationWidgetbarReducer,\n legalText: administrationLegalTextReducer,\n }),\n meetingRooms,\n};\n\n// Useful in storybook where there is no Preload\nconst Preload = window.Preload || {\n current_network: {},\n my_groups: [],\n current_member: {},\n};\n\nconst initialState = {\n network: Preload.current_network,\n groups: {\n bySlug: indexBy(Preload.my_groups, \"slug\"),\n myGroupSlugs: map(Preload.my_groups, \"slug\"),\n },\n currentMember: Preload.current_member,\n};\nconst sagaMiddleware = createSagaMiddleware();\nconst middlewares = [\n apiMiddleware,\n promiseMiddleware, // Deprecated! Dont use and remove when it is not required anymore\n sagaMiddleware,\n];\n\n/* Run sessionStorage.setItem('debug', true) to enable redux logger output */\nif (sessionStorage.getItem(\"debug\")) {\n const loggerMiddleware = createLogger({ collapsed: true });\n middlewares.push(loggerMiddleware);\n} else {\n console.log(\n \"redux-logger output is disabled, run `sessionStorage.setItem('debug', true)` to enable\",\n );\n}\nconst store = createStore(\n combineReducers(defaultReducers),\n initialState,\n applyMiddleware(...middlewares),\n);\n\n// Use this to run a saga from a custom pack or something optional (like the chat)\nstore.runSaga = sagaMiddleware.run;\nstore.runSaga(rootSaga);\n\n// Use this to add reducers from a custom pack or something optional (like the chat)\nstore.currentReducers = defaultReducers;\nstore.addReducers = (reducerMap) => {\n store.currentReducers = { ...store.currentReducers, ...reducerMap };\n store.replaceReducer(combineReducers(store.currentReducers));\n};\n\nexport default store;\n","export default function currentMember(\n state = {},\n action: { type: string; payload: string },\n) {\n switch (action.type) {\n case \"currentMember/LANGUAGE/SET_LAST_USED\": {\n return {\n ...state,\n last_used_translation_language: action.payload,\n };\n }\n default:\n return state;\n }\n}\n","import { fork, all } from \"redux-saga/effects\";\nimport formActionSaga from \"redux-form-saga\";\nimport filesSaga from \"./files\";\n\nexport default function* rootSaga() {\n yield all([fork(filesSaga), fork(formActionSaga)]);\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"Text\":\"z63zsfq_KSzcTO2SGLsY\",\"SimpleInput\":\"t5R5AKZFkWkaozIYri0y\",\"Date\":\"EpkbB7lShncM_4IXi5SS\",\"Address\":\"IPFRWL8jo7WSGBDDoyuQ\",\"AddressRow\":\"EvVYeQ1fpHlK_VQpoc3_\",\"CityRow\":\"kKwbSxQ2obcdfrsAzvhN EvVYeQ1fpHlK_VQpoc3_\",\"StreetRow\":\"zZrrcJ4lXpCHEfsp3RgX EvVYeQ1fpHlK_VQpoc3_\",\"AddressNumber\":\"t2gUytGHRMKc0xvHVgk7\",\"AddressZip\":\"cmbbRVhfPpA6LIK3wiVQ\",\"Email\":\"ssIOenP7KiAWpqAumeUT\",\"File\":\"vF45nkt0KGJ2Ckq1ntH0\",\"Html\":\"xsSOzvb37nqJ9X0qW7lI\",\"Image\":\"Wegzu2wZdwcvwAg8cHyS\",\"Number\":\"p_Z8ZDYPt80K8DdGhMyV\",\"Url\":\"i0PIRVIQoS7ipXf_WmXD\",\"StateRow\":\"owPGccUwFwc6vggiwTN_\",\"Selection\":\"ngajHMGP2a0i8Ci1bVGd\",\"Relation\":\"GVscBWYHxWNKtjMXHwMv ngajHMGP2a0i8Ci1bVGd\",\"Membership\":\"yHLOfuP2Ky3jV3Jhd8iQ ngajHMGP2a0i8Ci1bVGd\",\"Tag\":\"KpeLfIAxE6tanlooACtR ngajHMGP2a0i8Ci1bVGd\"};","// extracted by mini-css-extract-plugin\nexport default {\"Address\":\"RlTRDbuhXFVtJdOgt3CQ\",\"Date\":\"B_pdkknf9xOJVZ3384d9\",\"Email\":\"gQj2zWvB3WayBwppHzcW\",\"Html\":\"Ym_OsONhaqnGgTsK8hCb\",\"Image\":\"aIGB4S867sRyVG4UG0Yp\",\"Selection\":\"AZVMaE4xau_pvXr7E004\",\"Tag\":\"NUbQL3eZEit7cDkZolZ9\",\"Headline\":\"GyPcD5RuMnHh41yNPi23\",\"Relation\":\"oaMSYfUoM6rVtLyqW6CC\",\"Text\":\"KpDb3W4SM9NEPjNBuHE3\",\"GenericValueList\":\"ogcZx00a0lpX3AQbUdfw\",\"MembershipRelation\":\"oBquGMe8MlopgHEkxuiQ\",\"Statistics\":\"VW3S2H7nIKwkNQvCHPa_\"};","// extracted by mini-css-extract-plugin\nexport default {\"ValueSetTable\":\"v80inUU_hqP9o4gp7Fab\",\"value\":\"T2jS67UEXYfbM9sKUf5F\"};","var map = {\n\t\"./de.js\": 59740,\n\t\"./en-gb.js\": 22243,\n\t\"./es.js\": 55655\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 88257;"],"names":["CustomConfigurator","constructor","instance","this","_defaults","_config","get","path","getPath","set","value","setPath","setDefault","exists","isNil","existsDefault","window","Object","freeze","action","type","payload","NAMESPACE","ADD_OR_MOVE_WIDGET","REMOVE_WIDGET","CHANGE_WIDGET_VALUE","SELECT_WIDGET","FETCH_WIDGETBAR","UPDATE_WIDGETBAR","SET_GROUP_ID","RESET_SUCCESSFUL_SAVE","RESET_ERRORS","FETCH_WIDGETBARS","FETCH_CALENDARS","SET_IDENTIFIER","addOrMoveWidget","data","index","removeWidget","selectWidget","setGroupId","resetErrors","resetSuccessfulSave","changeValue","propertyKey","setIdentifier","fetchWidgetbar","createApiAction","method","endpoint","groupId","identifier","baseType","updateWidgetbar","fetchWidgetbars","fetchCalendars","transformHeaders","_action","state","res","json","then","appSelector","headers","parseHeader","header","archivedPerColumn","each","split","item","info","parseArchivedPerColumn","pagination","nextPage","page","perPage","prevPage","total","totalPages","totalArchivedItems","fetchAppLink","appSlug","groupSlug","fetchApp","appUrl","fetchItem","appId","externalAppId","itemUrl","archiveItem","itemId","unarchiveItem","fetchItems","view","archived","tag","assignee_id","q","filters","queryParamsObject","stringify","skipNull","skipEmptyString","transformPayload","loadMoreItemsByColumn","url","createItem","updateItem","moveItem","createFormAction","externalItemId","exportItemsGetLast","fetchRelationOptions","propertyName","REQUEST","SUCCESS","FAILURE","PROGRESS","createRequestTypes","base","FILES","SET_UPLOAD_IDS","ADD_UPLOAD_ID","UPLOAD","PUBLISH","DESTROY","MOVE","DELETE","FOLDERS","FOLDER","SELECT","publishFiles","storageDirectory","uploadFile","superType","requestAction","destroyFile","id","moveFiles","moveFolders","removeFiles","removeFolders","fetchFolder","namespace","selectFolder","meta","fetchGroup","fetchGroupDefaults","groupCategorySlug","createGroup","updateGroup","fetchInvites","filter","status","transformLinkHeader","loadMoreInvites","declineInvite","inviteId","acceptInvite","fetchMembersAndGroups","input","fetchMemberships","includeConsumers","excludeGroupMembersOf","params","omitBy","isEmpty","include_consumers","exclude_group_members_of","join","fetchMembership","membershipId","updateMembership","fetchMembershipSettings","updateMembershipSettings","useFetchBaseMembershipData","options","useQuery","fetchApi","fetchParticipations","loadMoreParticipations","addParticipations","appointmentId","Avatar","mention","theme","avatar","React","src","className","mentionSuggestionsEntryAvatar","role","props","rest","parentProps","omit","name","mentionSuggestionsEntryText","MentionEntry","DefaultEntryComponent","assign","inlineMentionPlugin","createMentionPlugin","mentionTrigger","entityMutability","mentionComponent","children","supportWhitespace","InlineMentionSuggestions","open","setOpen","useState","suggestions","setSuggestions","onOpenChange","useCallback","_open","MentionSuggestions","onSearchChange","async","response","$","ajax","Tixxt","currentNetwork","dataType","contentType","map","m","showNameWithProfileField","displayName","detectionProfileField","detection_profile_field","isExternal","is_external","images","small","entryComponent","createInlineMentionPlugin","tixxt","isPreset","colors","primary","color","secondary","white","favorite","success","warning","danger","userbarIconType","logoType","bannerType","bannerImage","logoImage","faviconImage","emailLogoImage","fullWidth","initialState","loadOverrideTheme","Preload","defaultTheme","reducers","override","setTheme","setUserbarIconType","setBannerImage","setLogoImage","setFaviconImage","setEmailLogoImage","changeColor","colorObj","mergeColors","setHeaderVariant","setCustomCss","customCss","setFullWidth","themeSlice","createSlice","resetTheme","actions","getColor","scope","JSON","val","c","debug","mix","c1","c2","amount","color1","color2","TinyColor","toHexString","mostReadable","candidateNames","candidates","push","tcMostReadable","includeFallbackColors","shade","shadeOrTint","tColor","result","isLight","tint","lighten","makeReadable","isReadable","level","size","variant","h","hue","toHsv","generateColors","steps","start","end","curve","saturation","rate","brightness","abstract","tailwind","colorRules","derive","scoped","rules","r","themeRaw","localStorage","getItem","parse","storeOverrideTheme","setItem","removeItem","useTheme","baseTheme","themeType","themeFromState","useSelector","groupCategoryTheme","groupTheme","shouldDerive","derivedColors","themeWithDefaults","useMemo","pickBy","cloneDeep","forEach","variableName","env","fnName","args","fn","functions","apply","singleResult","deriveColors","concat","flatMap","groupCategoryThemeSlice","groupThemeSlice","Error","useLoadApp","useLoadItem","Loading","Fragment","I18n","t","NewItemForm","app","appLoading","filterProperties","mapProperties","properties","Fields","EditItemForm","initialize","transformItem","isLoading","itemLoading","initialized","setInitialized","useLayoutEffect","values","updateUnregisteredFields","useInitialize","appIds","pick","FormComponent","Hint","hint","error","required","multiple","disabled","Field","component","FileUploadField","isImage","inputTitle","normalizeValue","isArray","displayValue","label","formatValue","compact","castArray","SelectAdapter","dispatch","useDispatch","loadOptions","debounce","callback","onBlur","e","preventDefault","isClearable","isDisabled","inputId","placeholder","noOptionsMessage","isMulti","styles","menu","zIndex","AsyncSelect","classNamePrefix","FieldError","normalize","format","Membership","extractUrl","SimpleInput","Url","noop","DatePickerAdapter","elemRef","useRef","useEffect","datepicker","Datepicker","current","addEventListener","onChange","detail","date","moment","destroy","Date","ref","onClick","focus","FontAwesomeIcon","icon","_faCalendar","CKEditorAdpater","Component","super","createRef","componentDidMount","CKEDITOR","loadAndConfigureCKEditor","lastValue","editor","replace","codeSnippet_theme","bodyClass","Html","on","updateElement","componentDidUpdate","newValue","setData","componentWillUnmount","render","isNew","compactArray","arr","formatOptionsBasedOnApps","relatedApps","appDetailsById","indexBy","optionsGroupedByAppId","groupBy","optionsInApp","app_id","formatCreateLabel","allow_create_related","onCreateOption","AsyncCreatableSelect","CreatableSelect","Select","polymorphic","related_apps","sortedOptions","sortBy","Relation","PROPERTIES","address","Address","email","Email","image","Image","membership","MembershipRelation","selection","Selection","text","Text","number","Number","Tag","file","File","DatePicker","html","relation","RelationField","isManualFocusHandlingRequired","prop","multiline","canUpdate","property","can","update","inputRef","fieldErrors","fieldIdBase","uuidv4","focusHandlers","handleNewInputRef","newRef","handleLabelClick","currentTarget","dataset","errors","key","i","fieldId","propErrors","propHasErrors","Headline","ControlGroup","isPropRequired","htmlFor","onLabelClick","PropertyEdit","isPlainObject","wrapperClassName","prefix","postfix","otherProps","inputElement","classNames","href","target","rel","defaultImageUrl","imageUrl","thumbnailUrl","alt","GenericValueList","title","extension","related_app_id","fallbackImageUrl","location","host","imageLoadingError","onerror","MemberLink","imageId","onError","current_network","config","anonymize_membership","anonymize_membership_name","dateTime","Statistics","view_count","with_name","street","zip","city","country","dangerouslySetInnerHTML","__html","unescape","DateView","statistics","headline","STATES","Deutschland","DEFAULT_LABELS","labels","force_country","fieldFor","fieldName","remainingProps","classnames","FormSection","StateRow","SelectionField","round","precision","isNumber","toFixed","isString","parseFloat","NumberInput","max","min","Numbe","createFormatValue","find","reject","option","CheckboxRadioAdapter","checked","uniq","without","finalOptions","includes","select","rawSelect","fetchTags","tagParents","excludeNew","tag_parents","exclude_new","internal","allowCreate","tagParentsFromContext","useContext","TagParentsContext","console","inputValue","count","formatOptionLabel","startsWith","createOptionPosition","new","SelectComponent","createContext","field","warn","Provider","MarkdownEditorAdapter","setComposerRefCallback","isFunction","MarkdownEditor","initial","content","onFocus","readOnly","autoFocus","maxlength","some","transformPropsForReduxForm","transformProp","v","selectionFilterUrl","SelectionUrlContext","MaybeLink","tagFilterUrl","TagUrlContext","connect","currentAppUrlSelector","tagUrl","showAsLink","listStyle","listItemStyle","link","SharedTag","Application","markdown","Breadcrumb","folder","handleNavigate","parentFolder","_faFolder","_faChevronRight","_faFolder2","useFetchFolder","closeModal","currentRootFolder","onSelectFiles","loading","currentFolder","breadcrumb","useFolderResource","headerRef","isHoveringHeader","setIsHoveringHeader","sortDirection","setSortDirection","onmouseover","onmouseleave","files","ids","selectedIds","selectIds","onSelectItem","useItemBatchSelection","allSelected","difference","length","contents","orderBy","i18n_type","selectAllCheckbox","selectedFiles","Modal","onClose","modalActionProps","submitText","submit","FolderContentsTable","extraColumns","extraPreColumn","FolderRow","SelectableFolderRow","FileRow","SelectableFileRow","rowProps","endsWith","disableSelection","onSelectFile","isSelected","showCheckbox","navigateDisabled","handleSort","context","onlyShowName","showModal","setShowModal","FileSelectModal","currentFolderId","currentFolderNamespace","currentRootFolderId","currentRootFolderNamespace","currentFolderMeta","currentFolderMetaSelector","FileName","version","firstHalf","slice","secondHalf","major","author","updatedAt","profile","openUrl","downloadUrl","Data","Math","floor","log","pow","humanizeFileSize","calendar","indexOf","isPDF","isOpenable","_faEye","_faCloudDownload","updated_at","content_type","width","FileIcon","FileInfo","propTypes","isSortable","withExtraColumns","contextId","contextType","columnFields","selectFileProfileColumnFields","fileLoading","fileProfilePropertySet","usePropertySet","folderLoading","folderProfilePropertySet","columnProperties","Header","Sorter","attribute","propertySetStyles","PropertyShow","Status","colSpan","undefined","total_files_count","total_subfolders_count","onNavigateItem","DefaultFileRow","DefaultFolderRow","skipFileAttributes","filteredContents","renderTable","setRenderTable","timeoutID","setTimeout","clearTimeout","folder_link_id","FolderContentsTableWithProfile","tableProps","FolderIcons","root_folder","_faUsers","activitystream_folder","_faEarthEurope","muted","noExtraColspan","striped","FolderIcon","FolderInfo","hiddenStyle","opacity","visibility","hover","setHover","active","checkboxAvailable","onMouseOver","onMouseLeave","style","onSelectFolder","ToggleGroupFavoriteButton","favorited","mutate","group","groups","bySlug","invariant","useMutation","mutationFn","onSuccess","toggleFavorited","useToggleGroupFavorite","tooltipRef","useTooltip","tooltipInstance","Tooltip","setContent","_faStar2","_faStar","ToggleGroupSubscribe","subscription_status","toggleSubscribed","useToggleGroupSubscribe","stopPropagation","LeaveGroupOption","PageTitle","subtitle","renderHeadlineTools","setDocumentTitle","isApp","document","ContextPageTitle","titleProp","page_title","_faEllipsisH","current_member","authentication_token","leave","Subtitle","profileFieldAvailable","ExternalMemberBadge","NameWithProfileField","onSubmit","onSubmitSuccess","renderExtraFields","initialValues","allowSaveWithoutChange","ReduxForm","form","renderChildren","BasicItemForm","itemValues","onSubmitFail","toastr","onCancel","bridge","goBack","faFileAudio","faFileVideo","faFileImage","faFileLines","faFileCode","faFileCsv","faFilePdf","faFileWord","faFilePowerpoint","faFileExcel","faFileZipper","faFile","chooseFileIcon","translation","modalSubmitActionClassName","el","shown","hiding","modal","modalEl","remove","hide","dispose","onResize","modalBodyHeight","height","css","maxHeight","resizeCallback","createElement","backdropExists","body","getElementsByClassName","BootstrapModal","backdrop","static","show","fullscreen","removeEventListener","_faXmark","modalClassName","tabIndex","useMinHeightMax","ModalActions","appendChild","ReactDOM","Spinner","minHeight","display","alignItems","justifyContent","flexDirection","marginTop","isReaderTag","Controls","DragDropContext","HTML5Backend","DropTarget","NativeTypes","FILE","drop","monitor","onDropFile","connectDropTarget","dropTarget","isOver","acceptedType","empty","selectExisting","onSelectExistingFile","accept","FileSelector","currentContext","rootFolder","toJSON","progress","UploadBar","_faVirus","MarkdownTranslation","criteria","clientId","_faCircleX","compose","withDragDropContext","withHandlers","onRemoveFile","confirm","f","isMatch","uploadFiles","rawFiles","filesData","last","change","inputName","filesByState","published","volatile","uploading","failed","availableFiles","uploadingFiles","nonRemovedFiles","ImagePreview","FileInput","sum","completed","UploadedFile","external_id","submitFailed","shiftIsPressed","setShiftIsPressed","metaIsPressed","setMetaPressed","firstIdSelected","setFirstIdSelected","onSelect","onKeyDown","onKeyUp","selectSingle","itemIds","firstIndex","findIndex","lastIndex","newFileIds","fileId","addItemId","useWindowEvent","eventName","eventHandler","colorStyle","toUpperCase","allColorStyles","clearColors","editorState","contentWithoutStyles","reduce","newContentState","Modifier","removeInlineStyle","getSelection","getCurrentContent","EditorState","RemoveColorsButton","createInlineStyleButton","toggleStyle","getEditorState","setEditorState","isActive","createColorButton","RichUtils","toggleInlineStyle","FontColorsButton","createPickerButton","pickerButtons","Separator","isCollapsed","s","getCurrentInlineStyle","has","seperator","buttonWrapper","onMouseDown","button","withProps","toString","ToolbarButton","Picker","onOverrideContent","Button","createChangeLanguageHandler","clickEvent","selectedValue","renderLanguageSelect","CodeBlockLanguageSelect","createCustomMarkdownPlugin","createMarkdownPlugin","languages","plain","bash","js","ruby","sql","customInlineMatchers","BOLD","ITALIC","UNDERLINE","MARK","CODE","STRIKETHROUGH","features","inline","block","entityType","IMAGE","createShortcutsPlugin","handleKeyCommand","command","_editorState","_","newEditorState","keyBindingFn","getDefaultKeyBinding","BoldButton","ItalicButton","UnderlineButton","StrikeButton","MarkButton","CodeButton","blockType","toggleBlockType","getBlockForKey","getStartKey","getType","UnorderedListButton","createBlockStyleButton","OrderedListButton","BlockquoteButton","CodeBlockButton","HEADLINES","headlineButtons","markdown_shortcut","padStart","RemoveHeadlineButton","AvailableButtons","LinkButton","currentContent","currentEntityKey","getSelectionEntity","getEntity","currentEntity","changeEditorState","trim","removeLinkEntity","entityRange","getEntityRange","entitySelection","SelectionState","createEmpty","getAnchorKey","merge","anchorOffset","focusOffset","applyEntity","updateLinkEntity","replaceEntityData","addLinkEntity","createEntity","entityKey","getLastCreatedEntityKey","forceSelection","prompt","exec","formatUrl","HeadlinesButton","createCustomToolbarPlugin","Plugin","createToolbarPlugin","setKey","random","composer","querySelector","click","Toolbar","externalProps","B","ButtonElem","customUndoPlugin","createUndoPlugin","undoContent","_faArrowRotateLeft","redoContent","_faArrowRotateRight","undo","redo","BaseComponent","HOC","plugins","pluginComponents","toolbarPlugin","markdownPlugin","undoPlugin","linkifyPlugin","createLinkifyPlugin","blockBreakoutPlugin","createBlockBreakoutPlugin","shortcutsPlugin","emojiPlugin","createEmojiPlugin","useNativeArt","selectButtonContent","_faFaceSmile","emojiSelectButton","emojiSelectButtonPressed","UndoButton","RedoButton","EmojiSuggestions","EmojiSelect","enableTixxtMentions","mentionPlugin","withBasicMarkdownPlugins","withState","editorStateByMarkdown","onEditorStateChange","focused","getHasFocus","newContent","markdownByEditorState","onSetEditorRef","setEditorRef","focusEditor","editorRef","containerClasses","Editor","customStyleMap","createStyleMap","spellCheck","stripPastedStyles","textAlign","fontFamily","fontSize","whiteSpace","wordWrap","padding","borderRadius","backgroundColor","border","SUPERSCRIPT","verticalAlign","isTerminatorChar","ch","customText","silent","pos","posMax","charCodeAt","pending","md","ruler","at","isAlphaNum","code","scanDelimiters","lastChar","nextChar","canOpen","canClose","marker","delimiters","emphasis","startCount","found","oldCount","newCount","stack","maxNesting","parser","skipToken","pop","tokenize","mentionRule","mentionStart","mentionEnd","mentionSeparator","oldPos","mentionMarker","substr","String","fromCharCode","underline","regexp","cssStyle","match","styleTuple","enableAllStyleRules","enable","disable","newRawState","markdownToDraft","preserveNewlines","remarkablePlugins","customizedTextParser","customizedEmphasisParser","markdownMentionsParser","underlineParser","cssStyleParser","remarkableOptions","blockEntities","mention_open","mutability","blockStyles","mark_open","del_open","underline_open","createWithContent","convertFromRaw","rawContent","convertToRaw","draftToMarkdown","entityItems","entity","close","styleItems","propertySetUrl","inherit","context_type","context_id","isNull","enabled","profileConfig","staleTime","Infinity","retry","persistPropertySet","usePersistPropertySet","processing","pristine","submitting","reset","submitIcon","history","back","reduxForm","handleSubmit","classNameFormActions","noActions","FormActions","reverse","hidden","elem","OriginalDatepicker","locales","currentLocale","weekStart","buttonClass","clearBtn","autohide","calendarWeeks","language","reParamSearch","reQueryString","nonce","getTime","bustCache","test","parserRegex","parseLink","parts","shift","acc","part","x","loadMoreUrl","maybeSerializeBodyAsJson","csrfTokenHeader","getAttribute","Accept","defaultTransformer","types","fetch","polyfill","flow","actionCreator","RSAA","credentials","createApiResultReducer","defaultState","defaultData","resetOnRequest","nestedEntries","dataKey","moreUrlKey","limit","offset","submitApi","valuesAndPropsToMeta","errorsTransformer","errorMessage","SubmissionError","originalError","_error","CKEDITOR_BASEPATH","memoize","Promise","resolve","script","onload","disableAutoInline","customConfig","locale","codeSnippet_languages","coffeescript","cpp","cs","java","javascript","objectivec","perl","php","python","vbscript","xml","toolbarGroups","disallowedContent","allowedContent","removeButtons","format_tags","removeDialogTabs","extraPlugins","removePlugins","filebrowserImageBrowseUrl","filebrowserImageUploadUrl","contentsCss","getUrl","Assets","ev","dialogDefinition","definition","getContents","items","lang","common","notSet","targetNew","configure","handler","documentReady","readyState","pairs","all","nonVolatile","partition","others","fromPairs","collection","obj","handleItemApiError","responseErrors","key_prefix","submitErrors","pickFileValues","fields","mapValues","fileFields","imageFields","publishedFiles","publishAllVolatile","publishedImages","createOrUpdate","itemResult","buildHeaders","okJson","ok","parsePaginationHeaders","setApplication","getNewMarkdownRenderer","Remarkable","use","linkify","getMarkdownRenderer","slash","appSlice","setTitle","groupsBySlugSlice","reducer","combineReducers","myGroupSlugs","fetchGroupRequest","groupDefaults","createUpdateFileValue","newFileValues","fileValue","fileWasRemoved","fileUploader","postWithProgress","FormData","append","channel","updateFileValue","emitterResult","take","formValueSelector","put","defaultPostWithProgress","eventChannel","emit","controller","AbortController","axios","post","signal","onUploadProgress","loaded","END","catch","abort","filesSaga","uploadRequestChannel","actionChannel","buffers","expanding","call","itemsSelector","itemSelector","loadMoreUrlsSelector","totalArchivedItemsSelector","createSelector","networkSelector","network","selectNetworkId","networkNameSelector","selectNetworkMAUrlScheme","networkAdminSelector","currentMemberSelector","groupCategoriesSelector","groupCategorySelector","slug","groupCategories","groupSorter","active_main_group","toLowerCase","myGroupsByCategoryIdSelector","myGroups","groupSelector","rootFolderIdSelector","currentRouteParamsSelector","currentRouteSelector","selectFolderProfilesEnabled","selectFileProfilesEnabled","apiReducer","acceptedInviteIndex","declinedInviteIndex","newData","p","route","createAction","currentRoute","handleAction","fetchApps","loadMoreUrls","optimistic","insertAfterCardId","newItem","changedItem","pull","itemsRequestReducer","findKey","column","toNumber","appLink","apps","exports","membershipRequest","membershipSettingsRequest","byId","fetchReservableMeetingRooms","dateRange","roomId","query","room_id","reservableMeetingRoomsRequest","widgets","selectedWidgetIndex","successfulSave","calendars","editWidgetbarReducer","w","show_age","widget","splice","notFound","errorsReducer","widgetbars","indexReducer","edit","fetchLegalTexts","fetchLegalText","legalTextId","deleteLegalText","legalTextsRequestReducer","legalTextsRequest","legalTextRequest","defaultReducers","currentMember","last_used_translation_language","memberships","formReducer","appCreator","navigation","invites","participations","folders","appointments","participantsRequests","administration","widgetbar","administrationWidgetbarReducer","legalText","administrationLegalTextReducer","meetingRooms","my_groups","sagaMiddleware","createSagaMiddleware","middlewares","apiMiddleware","promiseMiddleware","sessionStorage","loggerMiddleware","createLogger","collapsed","store","createStore","applyMiddleware","runSaga","run","fork","formActionSaga","currentReducers","addReducers","reducerMap","replaceReducer","webpackContext","req","webpackContextResolve","__webpack_require__","o","keys","module"],"sourceRoot":""}