{"version":3,"file":"js/application-8d7a72d1ac04a30149a2.js","mappings":"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f2D,MAAOA,EACP+C,SAAUA,EACVnB,QAAUC,GAAMA,EAAEm/C,mBAElB7nD,EAAAA,cAACuN,EAAAA,EAAe,CAACrN,UAAWugB,EAAejT,KAAMA,GAAQgqF,EAAAA,MACxDr2F,EAGP,EAKA,M,8FC7CA,IAvBA,UAAkB,UAChB0T,EAAS,MACTmmB,GAAQ,EAAK,UACb96B,IAMA,MAAMsN,EArKR,SAAwBqH,GAiItB,MAhIwB,CACtB,MACA,MACA,OACA,MACA,OACA,MACA,OACA,MACA,MACA,MACA,MACA,OACA,OACA,OAkHkB0D,SAAS1D,GACpBsrF,EAAAA,IAjHe,CACtB,OACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,QAsFyB5nF,SAAS1D,GAC3BurF,EAAAA,IArFiB,CACxB,MACA,OACA,MACA,MACA,OACA,MACA,MACA,KACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAoE2B7nF,SAAS1D,GAC7BwrF,EAAAA,IAnEc,CAAC,MAAO,MAAO,MAAO,MAAO,SAoE1B9nF,SAAS1D,GAC1ByrF,EAAAA,IApEc,CACrB,IACA,MACA,KACA,QACA,MACA,KACA,IACA,OACA,MACA,KACA,KACA,QACA,KACA,KACA,KACA,OACA,QACA,SACA,KACA,MACA,MACA,OACA,MACA,OACA,MACA,QA2CwB/nF,SAAS1D,GAC1B0rF,EAAAA,IACgB,QAAd1rF,EACF2rF,EAAAA,IACgB,QAAd3rF,EACF4rF,EAAAA,IA9Cc,CAAC,MAAO,MAAO,OAAQ,OAAQ,QA+C5BloF,SAAS1D,GAC1B6rF,EAAAA,IA/CoB,CAC3B,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,QAuC8BnoF,SAAS1D,GAChC8rF,EAAAA,IAtCe,CACtB,MACA,OACA,OACA,OACA,OACA,OACA,QAgCyBpoF,SAAS1D,GAC3B+rF,EAAAA,IA/Ba,CACpB,KACA,MACA,MACA,MACA,MA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","sources":["webpack:///./app/javascript/CustomConfigurator.js","webpack:///./app/javascript/actions/chat.js","webpack:///./app/javascript/api/unreads.ts","webpack:///./app/javascript/components/activitystreams/composer/defaultEntryComponent.tsx","webpack:///./app/javascript/components/activitystreams/composer/inlineMentionPlugin.tsx","webpack:///./app/javascript/components/administration/api.ts","webpack:///./app/javascript/components/administration/designManager/themeToCss.ts","webpack:///./app/javascript/components/administration/imprints/api.js","webpack:///./app/javascript/components/administration/imprints/ImprintEdit.tsx","webpack:///./app/javascript/components/administration/legalTexts/LegalTextIndex.tsx","webpack:///./app/javascript/components/administration/legalTexts/api.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/components/appCreator/properties/edit/TagField.js","webpack:///./app/javascript/components/appCreator/properties/edit/TextField.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/appointments/AppointmentInvite.tsx","webpack:///./app/javascript/components/appointments/AppointmentToolbar.tsx","webpack:///./app/javascript/components/appointments/calendarSheet/AppointmentLine.js","webpack:///./app/javascript/components/appointments/calendarSheet/CalendarSheetCell.js","webpack:///./app/javascript/components/shared/hooks/useHover.js","webpack:///./app/javascript/components/appointments/CalendarSheet.js","webpack:///./app/javascript/components/appointments/api.ts","webpack:///./app/javascript/components/appointments/details/AppointmentDate.tsx","webpack:///./app/javascript/components/appointments/details/AppointmentDescription.tsx","webpack:///./app/javascript/components/appointments/details/AppointmentLocation.tsx","webpack:///./app/javascript/components/appointments/details/AppointmentMeeting.tsx","webpack:///./app/javascript/components/appointments/details/Toolbar.tsx","webpack:///./app/javascript/components/appointments/helpers.ts","webpack:///./app/javascript/components/blogs/api.ts","webpack:///./app/javascript/components/channels/api.ts","webpack:///./app/javascript/components/channels/design/ApplyOverrideChannelTheme.tsx","webpack:///./app/javascript/components/channels/helpers.ts","webpack:///./app/javascript/components/channels/layout/api.ts","webpack:///./app/javascript/components/channels/widgets/smartChunk.ts","webpack:///./app/javascript/components/channels/widgets/PeopleWidget.tsx","webpack:///./app/javascript/components/channels/widgets/ImagesWidget.tsx","webpack:///./app/javascript/components/channels/widgets/BannerWidget.tsx","webpack:///./app/javascript/components/channels/widgets/TextWidget.tsx","webpack:///./app/javascript/components/channels/widgets/RssWidget.tsx","webpack:///./app/javascript/components/shared/ItemCarousel.tsx","webpack:///./app/javascript/components/shared/hooks/useContainerWidth.ts","webpack:///./app/javascript/components/channels/widgets/BlogWidget.tsx","webpack:///./app/javascript/components/channels/widgets/AppointmentsWidget.tsx","webpack:///./app/javascript/components/channels/widgets/SpotlightWidget.tsx","webpack:///./app/javascript/components/channels/widgets/widgetsFields/linkWidget/LinkView.tsx","webpack:///./app/javascript/components/channels/widgets/widgetsFields/linkWidget/EmbedLinkView.tsx","webpack:///./app/javascript/components/channels/widgets/LinkWidget.tsx","webpack:///./app/javascript/components/channels/widgets/WidgetByType.tsx","webpack:///./app/javascript/helpers/readableTextColor.ts","webpack:///./app/javascript/components/channels/widgets/WidgetContainer.tsx","webpack:///./app/javascript/components/chat/shared/Muted.tsx","webpack:///./app/javascript/components/chat/ChatList/Row.js","webpack:///./app/javascript/components/chat/ChatList/index.js","webpack:///./app/javascript/components/chat/shared/GroupedItems.js","webpack:///./app/javascript/components/chat/ChatNew/Tile.js","webpack:///./app/javascript/components/chat/ChatNew/index.js","webpack:///./app/javascript/components/chat/ChatRoom/QuickChatSelect.js","webpack:///./app/javascript/components/chat/ChatRoom/ChatRoomSettingsButton.js","webpack:///./app/javascript/components/chat/shared/ScrollContainer.js","webpack:///./app/javascript/components/chat/ChatRoom/ChatMessage/MessageAuthor.js","webpack:///./app/javascript/components/chat/ChatRoom/ChatMessage/MessageSettings.tsx","webpack:///./app/javascript/components/chat/utils/emojis.js","webpack:///./app/javascript/components/chat/utils/markdown.js","webpack:///./app/javascript/components/chat/ChatRoom/ChatMessage/MessageText.js","webpack:///./app/javascript/components/chat/ChatRoom/ChatMessage/QuotedMessage.js","webpack:///./app/javascript/components/chat/ChatRoom/ChatMessage/MessageDeliveryStatus.js","webpack:///./app/javascript/components/chat/ChatRoom/ChatMessage/index.js","webpack:///./app/javascript/components/chat/ChatRoom/DaySeparator.js","webpack:///./app/javascript/components/chat/ChatRoom/Chat.js","webpack:///./app/javascript/components/chat/ChatRoom/MessageComposer/MessageToQuote.js","webpack:///./app/javascript/components/chat/ChatRoom/MessageComposer/index.tsx","webpack:///./app/javascript/selectors/chat/composer.js","webpack:///./app/javascript/hooks/usePersistentSate.ts","webpack:///./app/javascript/components/chat/ChatRoom/index.js","webpack:///./app/javascript/components/chat/shared/BackButton.js","webpack:///./app/javascript/components/chat/shared/ChatHeader.tsx","webpack:///./app/javascript/components/chat/shared/OnlineStatus.js","webpack:///./app/javascript/components/chat/shared/ChatImage.js","webpack:///./app/javascript/components/chat/shared/Composing.tsx","webpack:///./app/javascript/components/chat/shared/Notification.js","webpack:///./app/javascript/components/directory/DirectoryActionButton.tsx","webpack:///./app/javascript/components/directory/DirectoryPagination.tsx","webpack:///./app/javascript/components/directory/DirectoryRow.tsx","webpack:///./app/javascript/components/directory/DirectoryRowBadge.tsx","webpack:///./app/javascript/components/shared/Glossary.tsx","webpack:///./app/javascript/components/directory/DirectoryToolbar.tsx","webpack:///./app/javascript/components/directory/channels/ToolBar.tsx","webpack:///./app/javascript/components/directory/channels/ChannelRow.tsx","webpack:///./app/javascript/components/directory/channels/ChannelListView.tsx","webpack:///./app/javascript/components/directory/hooks/useDirectoryFilter.ts","webpack:///./app/javascript/components/files/Breadcrumb.js","webpack:///./app/javascript/components/files/FolderSelectModal.tsx","webpack:///./app/javascript/components/files/FolderSelectionField.js","webpack:///./app/javascript/components/files/UrlContextProvider.js","webpack:///./app/javascript/components/files/api.tsx","webpack:///./app/javascript/components/files/composer/FileSelectModal.js","webpack:///./app/javascript/components/files/composer/FileSelector.tsx","webpack:///./app/javascript/components/files/documents/documents.module.css?6c7b","webpack:///./app/javascript/components/files/documents/DocumentAction.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/useExtraColumns.js","webpack:///./app/javascript/components/files/table/FolderContentsTable.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/helpers/pickImage.js","webpack:///./app/javascript/components/globalSearch/globalSearch.module.css?b83e","webpack:///./app/javascript/components/activitystreams/types/Note.tsx","webpack:///./app/javascript/components/activitystreams/types/Question.tsx","webpack:///./app/javascript/components/activitystreams/types/Survey.tsx","webpack:///./app/javascript/components/activitystreams/types/Appointment.tsx","webpack:///./app/javascript/components/activitystreams/activitystreams.module.css?cd01","webpack:///./app/javascript/components/activitystreams/attachments/ImageAttachments.tsx","webpack:///./app/javascript/components/activitystreams/attachments/FileAttachments.tsx","webpack:///./app/javascript/components/activitystreams/attachments/LinkAttachment.tsx","webpack:///./app/javascript/components/activitystreams/attachments/TagAttachments.tsx","webpack:///./app/javascript/components/activitystreams/attachments/MentionAttachments.tsx","webpack:///./app/javascript/components/activitystreams/ActivityAttachments.tsx","webpack:///./app/javascript/components/globalSearch/hits/ActivityHit.js","webpack:///./app/javascript/components/activitystreams/types/Article.tsx","webpack:///./app/javascript/components/globalSearch/hits/MessageHit.js","webpack:///./app/javascript/components/appointments/DateRange.js","webpack:///./app/javascript/components/appointments/CalendarList.js","webpack:///./app/javascript/components/globalSearch/hits/AppointmentHit.js","webpack:///./app/javascript/components/globalSearch/hits/RecurringAppointmentHit.js","webpack:///./app/javascript/components/globalSearch/hits/ModifiedRecurringAppointmentHit.js","webpack:///./app/javascript/components/globalSearch/hits/Highlights.js","webpack:///./app/javascript/components/globalSearch/SearchQueryPaginationContext.ts","webpack:///./app/javascript/components/globalSearch/hits/FileHits.js","webpack:///./app/javascript/components/globalSearch/hits/FolderHits.js","webpack:///./app/javascript/components/globalSearch/hits/MembershipHit.js","webpack:///./app/javascript/components/globalSearch/hits/GroupHit.js","webpack:///./app/javascript/components/globalSearch/hits/PageHit.js","webpack:///./app/javascript/components/globalSearch/hits/ItemHit.tsx","webpack:///./app/javascript/components/globalSearch/SearchResultPagination.tsx","webpack:///./app/javascript/components/globalSearch/SearchSortSelector.tsx","webpack:///./app/javascript/components/globalSearch/SearchQueryResult.tsx","webpack:///./app/javascript/components/globalSearch/FilterModule.tsx","webpack:///./app/javascript/components/globalSearch/SearchResults.js","webpack:///./app/javascript/components/globalSearch/api.ts","webpack:///./app/javascript/components/globalSearch/urls.js","webpack:///./app/javascript/components/invites/api.ts","webpack:///./app/javascript/components/layout/GroupNavigation.tsx","webpack:///./app/javascript/components/shared/favoriteButtons/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/hooks/useRecurringAppointment.ts","webpack:///./app/javascript/components/appointments/AppointmentPageTitle.tsx","webpack:///./app/javascript/components/tixxt/BackboneFeature.tsx","webpack:///./app/javascript/components/activitystreams/routes.tsx","webpack:///./app/javascript/components/appointments/appointmentsList/AllDayTag.tsx","webpack:///./app/javascript/components/appointments/appointmentsList/AppointmentItem.tsx","webpack:///./app/javascript/components/appointments/appointmentsList/CalendarDay.tsx","webpack:///./app/javascript/components/appointments/appointmentsList/CalendarWeek.tsx","webpack:///./app/javascript/components/appointments/appointmentsList/index.tsx","webpack:///./app/javascript/components/appointments/useAppointmentView.ts","webpack:///./app/javascript/components/appointments/AppointmentsPage.tsx","webpack:///./app/javascript/components/appointments/calendars/helpers.tsx","webpack:///./app/javascript/components/appointments/calendars/CalendarListItem.tsx","webpack:///./app/javascript/components/appointments/calendars/CalendarList.tsx","webpack:///./app/javascript/components/appointments/calendars/CalendarListView.tsx","webpack:///./app/javascript/components/appointments/calendars/ManageCalendarsPage.tsx","webpack:///./app/javascript/components/appointments/calendars/api.ts","webpack:///./app/javascript/components/appointments/calendars/CalendarSubscribeModal.tsx","webpack:///./app/javascript/components/appointments/calendars/SubscribeCalendarsPage.tsx","webpack:///./app/javascript/components/appointments/participants/AppointmentPreview.js","webpack:///./app/javascript/components/appointments/form/ParticipantsField.tsx","webpack:///./app/javascript/components/appointments/participants/NewParticipantForm.tsx","webpack:///./app/javascript/components/appointments/participants/api.ts","webpack:///./app/javascript/components/appointments/participants/StatusButton.tsx","webpack:///./app/javascript/components/shared/RecurringAppointmentDecisionModal.tsx","webpack:///./app/javascript/components/appointments/participants/ParticipantRow.tsx","webpack:///./app/javascript/components/appointments/participants/ParticipantsOverview.tsx","webpack:///./app/javascript/components/appointments/participants/ParticipantsView.tsx","webpack:///./app/javascript/components/appointments/calendars/CalendarForm.tsx","webpack:///./app/javascript/components/appointments/calendars/NewCalendarPage.tsx","webpack:///./app/javascript/components/appointments/calendars/EditCalendarPage.tsx","webpack:///./app/javascript/components/shared/form/fields/TextEditor.tsx","webpack:///./app/javascript/components/shared/form/fields/TimePicker.tsx","webpack:///./app/javascript/components/shared/form/fields/DateTimePicker.tsx","webpack:///./app/javascript/components/appointments/form/PartialToggle.tsx","webpack:///./app/javascript/components/appointments/form/RecurringSelectField.tsx","webpack:///./app/javascript/components/appointments/form/LocationField.tsx","webpack:///./app/javascript/components/appointments/form/TeamsConfigField.tsx","webpack:///./app/javascript/components/appointments/form/CategorySelectionField.tsx","webpack:///./app/javascript/components/appointments/form/ContactsField.tsx","webpack:///./app/javascript/components/appointments/form/AttendeeConfigurationField.tsx","webpack:///./app/javascript/components/appointments/form/ApplicationConfigurationField.tsx","webpack:///./app/javascript/components/appointments/form/EventSettings.tsx","webpack:///./app/javascript/components/appointments/form/ModifiedRecurringAppointmentHint.tsx","webpack:///./app/javascript/components/appointments/form/DateRangeSelectField.tsx","webpack:///./app/javascript/components/shared/MeetinRoomSelectField.tsx","webpack:///./app/javascript/components/appointments/form/AppointmentForm.tsx","webpack:///./app/javascript/components/appointments/AppointmentNewPage.tsx","webpack:///./app/javascript/components/appointments/AppointmentEditPage.tsx","webpack:///./app/javascript/components/appointments/details/AppointmentEventFiles.tsx","webpack:///./app/javascript/components/shared/Translation.tsx","webpack:///./app/javascript/components/appointments/details/AppointmentEventDetails.tsx","webpack:///./app/javascript/components/appointments/ParticipantsList.tsx","webpack:///./app/javascript/components/appointments/details/AppointmentParticipations.tsx","webpack:///./app/javascript/components/appointments/details/AppointmentDetails.tsx","webpack:///./app/javascript/components/appointments/AppointmentPage.tsx","webpack:///./app/javascript/components/appointments/Contact.tsx","webpack:///./app/javascript/components/appointments/AppointmentContactPage.tsx","webpack:///./app/javascript/components/appointments/RecurringAppointmentInvite.tsx","webpack:///./app/javascript/components/appointments/AppointmentParticipation.tsx","webpack:///./app/javascript/components/invites/InvitesList.tsx","webpack:///./app/javascript/components/appointments/InvitesPage.tsx","webpack:///./app/javascript/components/appointments/routes.tsx","webpack:///./app/javascript/components/messages/MessageRow.tsx","webpack:///./app/javascript/components/messages/InteractionsButton.tsx","webpack:///./app/javascript/components/messages/api.tsx","webpack:///./app/javascript/components/messages/MessagesInteractions.tsx","webpack:///./app/javascript/components/messages/MessagesList.tsx","webpack:///./app/javascript/components/messages/InboxPage.tsx","webpack:///./app/javascript/components/messages/SentPage.tsx","webpack:///./app/javascript/components/shared/BackButton.tsx","webpack:///./app/javascript/components/shared/fields/CheckboxField.tsx","webpack:///./app/javascript/components/shared/MembershipAndGroupField.tsx","webpack:///./app/javascript/components/messages/composer/MessageForm.tsx","webpack:///./app/javascript/components/messages/composer/index.tsx","webpack:///./app/javascript/actions/memberships.js","webpack:///./app/javascript/components/messages/NewMessagePage.tsx","webpack:///./app/javascript/components/messages/message/MessageInteractions.tsx","webpack:///./app/javascript/components/messages/message/MessageContainer.tsx","webpack:///./app/javascript/components/messages/message/index.tsx","webpack:///./app/javascript/components/messages/ShowMessagePage.tsx","webpack:///./app/javascript/components/messages/routes.tsx","webpack:///./app/javascript/components/files/NewFilesPage.js","webpack:///./app/javascript/components/files/approval/api.js","webpack:///./app/javascript/components/files/approval/VersionApproval.js","webpack:///./app/javascript/components/files/approval/ReviewStatus.js","webpack:///./app/javascript/components/files/approval/ApprovalPage.tsx","webpack:///./app/javascript/components/files/routes.tsx","webpack:///./app/javascript/components/tasks/routes.tsx","webpack:///./app/javascript/components/globalSearch/Content.js","webpack:///./app/javascript/components/globalSearch/routes.tsx","webpack:///./app/javascript/components/administration/networkSettings/api.js","webpack:///./app/javascript/components/administration/networkSettings/BasicSettings.tsx","webpack:///./app/javascript/components/shared/fields/GroupSelectField.tsx","webpack:///./app/javascript/components/administration/networkSettings/JoinSettings.tsx","webpack:///./app/javascript/components/administration/networkSettings/MemberSettings.tsx","webpack:///./app/javascript/components/administration/networkSettings/MailSettings.tsx","webpack:///./app/javascript/components/administration/networkSettings/NetworkSettingsForm.tsx","webpack:///./app/javascript/components/administration/networkSettings/index.tsx","webpack:///./app/javascript/components/administration/navigationManager/LinkForm.tsx","webpack:///./app/javascript/components/administration/navigationManager/SelectContent.tsx","webpack:///./app/javascript/components/administration/navigationManager/MainFields.tsx","webpack:///./app/javascript/components/administration/navigationManager/Checkboxes.tsx","webpack:///./app/javascript/components/administration/navigationManager/NavigationManagerForm.tsx","webpack:///./app/javascript/components/administration/navigationManager/ItemButton.tsx","webpack:///./app/javascript/components/administration/NavigationManager.tsx","webpack:///./app/javascript/components/administration/groupCategorySorter/Card.tsx","webpack:///./app/javascript/components/administration/GroupCategorySorter.tsx","webpack:///./app/javascript/components/appCreator/items/form/BasicItemForm.js","webpack:///./app/javascript/components/memberships/MembershipForm.js","webpack:///./app/javascript/helpers/items/persistItem.js","webpack:///./app/javascript/components/administration/MembershipEdit.tsx","webpack:///./app/javascript/components/administration/MembershipNew.tsx","webpack:///./app/javascript/components/administration/legalTexts/LegalTextForm.tsx","webpack:///./app/javascript/components/administration/legalTexts/LegalTextEdit.tsx","webpack:///./app/javascript/components/administration/legalTexts/LegalTextNew.tsx","webpack:///./app/javascript/components/administration/legalTexts/LegalTextVersion.tsx","webpack:///./app/javascript/components/administration/legalTexts/LegalTextVersions.tsx","webpack:///./app/javascript/actions/administration/appNavigation.ts","webpack:///./app/javascript/hooks/administration/appNavigation.ts","webpack:///./app/javascript/components/administration/appNavigationManager/form/types/Default.tsx","webpack:///./app/javascript/components/administration/appNavigationManager/form/types/Link.tsx","webpack:///./app/javascript/components/administration/appNavigationManager/iconSelection.module.css?7e78","webpack:///./app/javascript/components/administration/appNavigationManager/IconSelection.tsx","webpack:///./app/javascript/components/administration/appNavigationManager/form/TypeSelector.tsx","webpack:///./app/javascript/components/administration/appNavigationManager/ItemForm.tsx","webpack:///./app/javascript/components/administration/appNavigationManager/form/types/More.tsx","webpack:///./app/javascript/components/administration/appNavigationManager/form/types/Page.tsx","webpack:///./app/javascript/components/administration/appNavigationManager/form/types/Activitystream.tsx","webpack:///./app/javascript/api/activitystreams.ts","webpack:///./app/javascript/components/administration/appNavigationManager/NodeTitle.tsx","webpack:///./app/javascript/components/administration/appNavigationManager/index.tsx","webpack:///./app/javascript/components/administration/GroupAdministrationMainPage.tsx","webpack:///./app/javascript/components/administration/routes.tsx","webpack:///./app/javascript/components/directory/members/ToolBar.tsx","webpack:///./app/javascript/components/directory/members/MemberRow.tsx","webpack:///./app/javascript/components/directory/members/MemberListView.tsx","webpack:///./app/javascript/components/directory/groups/ToolBar.tsx","webpack:///./app/javascript/components/groups/api.ts","webpack:///./app/javascript/components/directory/groups/GroupRow.tsx","webpack:///./app/javascript/components/directory/groups/GroupListView.tsx","webpack:///./app/javascript/components/directory/DirectoryPage.tsx","webpack:///./app/javascript/components/directory/routes.tsx","webpack:///./app/javascript/components/memberships/EditMembership.js","webpack:///./app/javascript/components/memberships/NewChangeRequest.js","webpack:///./app/javascript/components/shared/fields/CheckboxFields.tsx","webpack:///./app/javascript/components/memberships/membershipSettings/DigestSettings.js","webpack:///./app/javascript/components/memberships/membershipSettings/EmailConfigList.js","webpack:///./app/javascript/components/memberships/PushNotificationSettingsForm.tsx","webpack:///./app/javascript/components/memberships/api.tsx","webpack:///./app/javascript/components/memberships/EditMembershipSettings.tsx","webpack:///./app/javascript/components/memberships/routes.tsx","webpack:///./app/javascript/components/groups/form/BasicSettings.js","webpack:///./app/javascript/components/groups/form/GroupAccess.js","webpack:///./app/javascript/components/groups/form/JoinSettings.js","webpack:///./app/javascript/components/groups/form/MiscSettings.tsx","webpack:///./app/javascript/components/groups/form/ChatSettings.tsx","webpack:///./app/javascript/components/groups/form/index.js","webpack:///./app/javascript/components/groups/EditGroupActions.js","webpack:///./app/javascript/components/groups/EditGroup.js","webpack:///./app/javascript/components/groups/NewGroup.js","webpack:///./app/javascript/components/groups/Invites.tsx","webpack:///./app/javascript/components/groups/routes.tsx","webpack:///./app/javascript/actions/onboarding.js","webpack:///./app/javascript/components/onboarding/ProfileOnboarding.js","webpack:///./app/javascript/components/onboarding/routes.tsx","webpack:///./app/javascript/components/invites/routes.tsx","webpack:///./app/javascript/components/memberMap/routes.tsx","webpack:///./app/javascript/components/chat/MobileAppChat.tsx","webpack:///./app/javascript/components/chat/routes.tsx","webpack:///./app/javascript/components/channels/ChannelsPage.tsx","webpack:///./app/javascript/components/shared/favoriteButtons/ToggleChannelFavoriteButton.tsx","webpack:///./app/javascript/components/channels/ChannelLayout.tsx","webpack:///./app/javascript/components/channels/ChannelPage.tsx","webpack:///./app/javascript/components/channels/widgets/ShowWidgetPage.tsx","webpack:///./app/javascript/components/channels/routes.tsx","webpack:///./app/javascript/components/blogs/form/BlogForm.tsx","webpack:///./app/javascript/components/blogs/BlogEditPage.tsx","webpack:///./app/javascript/components/blogs/routes.tsx","webpack:///./app/javascript/components/articles/routes.tsx","webpack:///./app/javascript/components/tixxt/RedirectToStartpage.tsx","webpack:///./app/javascript/routes.tsx","webpack:///./app/javascript/components/tixxt/BackboneHistoryShim.tsx","webpack:///./app/javascript/components/layout/TixxtContent.tsx","webpack:///./app/javascript/components/layout/TixxtGroupNavigation.tsx","webpack:///./app/javascript/components/layout/TixxtPageTitle.tsx","webpack:///./app/javascript/components/layout/portals.tsx","webpack:///./app/javascript/components/memberships/MemberNameWithAdditions.js","webpack:///./app/javascript/components/shared/DirectoryPicker/optionRendering.tsx","webpack:///./app/javascript/components/shared/DirectoryPicker/optionLoading.ts","webpack:///./app/javascript/components/shared/DirectoryPicker.tsx","webpack:///./app/javascript/components/directory/api.ts","webpack:///./app/javascript/components/shared/DropDown.tsx","webpack:///./app/javascript/components/shared/FileIcon.tsx","webpack:///./app/javascript/components/shared/FileRow.tsx","webpack:///./app/javascript/components/shared/Flash.tsx","webpack:///./app/javascript/components/shared/FolderIcon.tsx","webpack:///./app/javascript/components/shared/FullSizeContent.tsx","webpack:///./app/javascript/components/shared/GenericErrorBoundary.tsx","webpack:///./app/javascript/components/shared/InfoText.tsx","webpack:///./app/javascript/components/shared/Loading.tsx","webpack:///./app/javascript/components/shared/MarkdownTranslation.tsx","webpack:///./app/javascript/components/shared/MemberSelect.tsx","webpack:///./app/javascript/components/shared/modal/ModalActions.tsx","webpack:///./app/javascript/components/shared/Modal.tsx","webpack:///./app/javascript/components/shared/PageLoading.tsx","webpack:///./app/javascript/components/shared/Pagination.tsx","webpack:///./app/javascript/components/shared/PermissionPicker.tsx","webpack:///./app/javascript/components/shared/SimpleMembershipShow.tsx","webpack:///./app/javascript/components/shared/Spectrum.tsx","webpack:///./app/javascript/components/shared/TabBar.tsx","webpack:///./app/javascript/components/shared/Tag.tsx","webpack:///./app/javascript/components/shared/TranslationDropDown.tsx","webpack:///./app/javascript/components/shared/UnreadBadge.tsx","webpack:///./app/javascript/components/shared/favoriteButtons/ToggleFavoriteButton.tsx","webpack:///./app/javascript/components/shared/fields/ControlGroup.tsx","webpack:///./app/javascript/components/shared/fields/FileUploadField.js","webpack:///./app/javascript/components/shared/fields/Hint.tsx","webpack:///./app/javascript/components/shared/fields/TextField.tsx","webpack:///./app/javascript/components/shared/fields/fileUploadField/FileInput.tsx","webpack:///./app/javascript/components/shared/fields/fileUploadField/ImagePreview.tsx","webpack:///./app/javascript/components/shared/fields/fileUploadField/UploadBar.tsx","webpack:///./app/javascript/components/shared/fields/fileUploadField/UploadedFile.tsx","webpack:///./app/javascript/components/shared/form/DangerZone.tsx","webpack:///./app/javascript/components/shared/form/Label.tsx","webpack:///./app/javascript/components/shared/form/fields/Checkbox.tsx","webpack:///./app/javascript/components/shared/form/fields/DirectoryPickerInput.tsx","webpack:///./app/javascript/components/shared/form/fields/FileUpload.tsx","webpack:///./app/javascript/components/shared/form/fields/FileUploadField.tsx","webpack:///./app/javascript/components/shared/form/fields/FormActions.tsx","webpack:///./app/javascript/components/shared/form/fields/Hint.tsx","webpack:///./app/javascript/components/shared/form/fields/RadioButton.tsx","webpack:///./app/javascript/components/shared/form/fields/Select.tsx","webpack:///./app/javascript/components/shared/form/fields/TextInput.tsx","webpack:///./app/javascript/components/shared/form/fields/useRegisterPropOrFromContext.ts","webpack:///./app/javascript/components/shared/hooks/useChannelSubscriptionToggle.ts","webpack:///./app/javascript/components/shared/hooks/useFileProcessing.ts","webpack:///./app/javascript/components/shared/hooks/useItemBatchSelection.js","webpack:///./app/javascript/components/shared/hooks/useWindowEvent.js","webpack:///./app/javascript/components/shared/markdownEditor/MarkdownEditorAdapter.tsx","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/EmbeddedValueSetForm.tsx","webpack:///./app/javascript/components/shared/propertySets/api.tsx","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/components/shared/withDragDropContext.js","webpack:///./app/javascript/helpers/Datepicker.ts","webpack:///./app/javascript/helpers/api/fetchPaginatedData.ts","webpack:///./app/javascript/helpers/ckeditor/loadAndConfigureCKEditor.js","webpack:///./app/javascript/helpers/components/preventDefault.js","webpack:///./app/javascript/helpers/components/wrapProvider.js","webpack:///./app/javascript/helpers/files/publishAllVolatile.js","webpack:///./app/javascript/helpers/files/usePublishAllVolatile.ts","webpack:///./app/javascript/helpers/formValidations.ts","webpack:///./app/javascript/helpers/formatDate.ts","webpack:///./app/javascript/helpers/items/handleItemApiError.js","webpack:///./app/javascript/helpers/legacy/backbone/createAdaptBackboneView.js","webpack:///./app/javascript/helpers/legacy/backbone/connectBackbone.js","webpack:///./app/javascript/helpers/legacy/adaptBackboneView.js","webpack:///./app/javascript/helpers/queryClient.tsx","webpack:///./app/javascript/helpers/reactQueryApi.ts","webpack:///./app/javascript/helpers/tixxt-router/compilation.tsx","webpack:///./app/javascript/helpers/tixxt-router.tsx","webpack:///./app/javascript/helpers/tixxt-router/history-events.tsx","webpack:///./app/javascript/helpers/useQueryParams.ts","webpack:///./app/javascript/hooks/useFullWidthLayout.ts","webpack:///./app/javascript/hooks/useInterceptorPrompt.ts","webpack:///./app/javascript/hooks/useMaxHeight.ts","webpack:///./app/javascript/hooks/useTooltip.ts","webpack:///./app/javascript/layout/togglebar.ts","webpack:///./app/javascript/controllers/application.js","webpack:///./app/javascript/controllers/accordion_scroll_controller.js","webpack:///./app/javascript/controllers/administration/activitystream/close_activity_reply_month_controller.js","webpack:///./app/javascript/components/administration/appointments/categories/CategoryRow.tsx","webpack:///./app/javascript/components/administration/appointments/categories/CategoriesEditor.tsx","webpack:///./app/javascript/controllers/administration/edit_categories_controller.js","webpack:///./app/javascript/controllers/administration/groups/join_request_message_controller.jsx","webpack:///./app/javascript/controllers/administration/invites/send_batch_actions_controller.js","webpack:///./app/javascript/controllers/administration/invites/sent_controller.js","webpack:///./app/javascript/controllers/administration/invites/toggle_batch_actions_controller.js","webpack:///./app/javascript/controllers/administration/newsletter/drag_and_drop_controller.js","webpack:///./app/javascript/controllers/administration/newsletter/interval_controller.js","webpack:///./app/javascript/controllers/administration/newsletter/unlayer_form_controller.js","webpack:///./app/javascript/controllers/administration/role_assignments_controller.js","webpack:///./app/javascript/controllers/administration/teams/fallback_upn_assignments_controller.js","webpack:///./app/javascript/components/administration/channels/AssignChannelSubscriptionsForm.tsx","webpack:///./app/javascript/controllers/assign_channel_subscriptions_form_controller.js","webpack:///./app/javascript/controllers/clipboard_controller.js","webpack:///./app/javascript/controllers/external_activitystreams_controller.js","webpack:///./app/javascript/controllers/invites/handle_external_invite_controller.js","webpack:///./app/javascript/controllers/ministry_controller.js","webpack:///./app/javascript/controllers/permission_picker_controller.js","webpack:///./app/javascript/controllers/shared/go_back_button_controller.js","webpack:///./app/javascript/controllers/shared/password_toggle_controller.js","webpack:///./app/javascript/components/administration/propertySets/properties/selection/finalizeSelectionOptions.js","webpack:///./app/javascript/components/administration/propertySets/TabbableFields.tsx","webpack:///./app/javascript/components/administration/propertySets/properties/selection/SelectionOptionsFields.tsx","webpack:///./app/javascript/components/administration/propertySets/properties/PropertyForm.tsx","webpack:///./app/javascript/components/administration/propertySets/BasicPropertySetForm.tsx","webpack:///./app/javascript/components/administration/propertySets/modifications/AddOptions.tsx","webpack:///./app/javascript/components/administration/propertySets/modifications/ModificationForm.tsx","webpack:///./app/javascript/components/administration/propertySets/ModifiedPropertySetForm.tsx","webpack:///./app/javascript/components/administration/propertySets/Editor.tsx","webpack:///./app/javascript/components/administration/PropertySetEdit.tsx","webpack:///./app/javascript/components/administration/PropertySetEditWrapper.js","webpack:///./app/javascript/controllers/shared/property_set_edit_controller.jsx","webpack:///./app/javascript/controllers/shared/select_all_controller.js","webpack:///./app/javascript/controllers/shared/tabbar_controller.js","webpack:///./app/javascript/controllers/shared/toggle_controller.js","webpack:///./app/javascript/components/authentication/api.js","webpack:///./app/javascript/components/authentication/RouteContext.js","webpack:///./app/javascript/components/authentication/FactorActions.js","webpack:///./app/javascript/components/authentication/FactorsPage.js","webpack:///./app/javascript/components/authentication/AddTotpPage.js","webpack:///./app/javascript/components/authentication/DeleteFactorPage.js","webpack:///./app/javascript/components/authentication/ResetBackupCodesPage.js","webpack:///./app/javascript/components/authentication/AddEmailPage.js","webpack:///./app/javascript/components/authentication/FactorsWrapper.js","webpack:///./app/javascript/controllers/two_factor_authentications_controller.jsx","webpack:///./app/javascript/controllers/index.js","webpack:///./app/javascript/layout/bootstrap/index.js","webpack:///./app/javascript/layout/fontawesome.ts","webpack:///./app/javascript/components/activitystreams/composer/index.module.css?dec3","webpack:///./app/javascript/components/activitystreams/composer/inlineTagPlugin.tsx","webpack:///./app/javascript/components/activitystreams/composer/withPlugins.tsx","webpack:///./app/javascript/components/activitystreams/composer/index.js","webpack:///./app/javascript/components/activitystreams/composer/TixxtComposerAdapter.tsx","webpack:///./app/javascript/components/activitystreams/replyComposer/ReplyComposer.module.css?7fa1","webpack:///./app/javascript/components/activitystreams/replyComposer/Attachments.tsx","webpack:///./app/javascript/components/activitystreams/replyComposer/api.js","webpack:///./app/javascript/components/activitystreams/replyComposer/index.tsx","webpack:///./app/javascript/components/files/FolderForm.js","webpack:///./app/javascript/components/files/EditFileForm.js","webpack:///./app/javascript/components/shared/propertySets/ValueSetTable.tsx","webpack:///./app/javascript/components/files/BatchActions.js","webpack:///./app/javascript/components/globalSearch/EmbeddedSearchResults.js","webpack:///./app/javascript/components/files/search/mergeFileAndFolderProfiles.js","webpack:///./app/javascript/components/files/search/index.js","webpack:///./app/javascript/components/files/FolderActions.tsx","webpack:///./app/javascript/components/files/FolderListing.js","webpack:///./app/javascript/components/files/FileProfileRows.js","webpack:///./app/javascript/components/files/documents/DocumentActions.js","webpack:///./app/javascript/components/files/documents/WopiActions.js","webpack:///./app/javascript/components/files/documents/OnlyOfficeActions.js","webpack:///./app/javascript/components/files/adaptedFileComponents.js","webpack:///./app/javascript/components/shared/TimeAgo.tsx","webpack:///./app/javascript/components/shared/SimpleExporter.tsx","webpack:///./app/javascript/components/shared/MemberManagerDropDown.tsx","webpack:///./app/javascript/components/shared/adaptedSharedComponents.js","webpack:///./app/javascript/components/shared/TranslationControls.tsx","webpack:///./app/javascript/components/appCreatorTemporary/LayoutToggle.js","webpack:///./app/javascript/components/appCreatorTemporary/LayoutSelect.js","webpack:///./app/javascript/components/appCreatorTemporary/DragSourceProperty.js","webpack:///./app/javascript/components/appCreatorTemporary/DropTargetColumn.js","webpack:///./app/javascript/components/appCreatorTemporary/ColumnConfigurator.js","webpack:///./app/javascript/components/appCreatorTemporary/TabConfigurator.js","webpack:///./app/javascript/components/appCreatorTemporary/ItemLayoutEditor.js","webpack:///./app/javascript/components/appCreatorTemporary/IntegrationsEditor/PropertiesReference.js","webpack:///./app/javascript/components/appCreatorTemporary/IntegrationsEditor/ActivityIntegration.js","webpack:///./app/javascript/components/appCreatorTemporary/IntegrationsEditor/SingleEmailIntegration.js","webpack:///./app/javascript/components/appCreatorTemporary/IntegrationsEditor/EmailIntegration.js","webpack:///./app/javascript/components/appCreatorTemporary/IntegrationsEditor/index.js","webpack:///./app/javascript/components/appCreatorTemporary/wallView/details/AssignedMember.js","webpack:///./app/javascript/components/appCreatorTemporary/wallView/details/AssignedMembers.js","webpack:///./app/javascript/components/appCreatorTemporary/wallView/details/Tags.js","webpack:///./app/javascript/components/appCreatorTemporary/wallView/details/Info.js","webpack:///./app/javascript/components/appCreatorTemporary/wallView/details/FileCounter.js","webpack:///./app/javascript/components/appCreatorTemporary/wallView/details/Title.js","webpack:///./app/javascript/components/appCreatorTemporary/wallView/details/ArchiveInfo.js","webpack:///./app/javascript/components/appCreatorTemporary/wallView/Card.js","webpack:///./app/javascript/components/appCreatorTemporary/wallView/Column.js","webpack:///./app/javascript/components/appCreatorTemporary/wallView/HeaderButtons.js","webpack:///./app/javascript/components/appCreatorTemporary/wallView/AppStage.js","webpack:///./app/javascript/components/appCreatorTemporary/wallView/UnassignedItems.js","webpack:///./app/javascript/components/appCreatorTemporary/ItemsWallView.js","webpack:///./app/javascript/components/appCreatorTemporary/adaptedAppCreatorComponents.js","webpack:///./app/javascript/helpers/selectors/networkSelectors.js","webpack:///./app/javascript/helpers/selectors/widgetbarSelectors.js","webpack:///./app/javascript/components/administration/widgetbar/fields/MultiselectField.module.css?0018","webpack:///./app/javascript/components/administration/widgetbar/fields/MultiselectField.tsx","webpack:///./app/javascript/components/administration/widgetbar/fields/NumberField.tsx","webpack:///./app/javascript/components/administration/widgetbar/fields/RadioField.tsx","webpack:///./app/javascript/components/administration/widgetbar/fields/SelectField.tsx","webpack:///./app/javascript/components/administration/widgetbar/fields/TextareaField.tsx","webpack:///./app/javascript/components/administration/widgetbar/fields/TextField.tsx","webpack:///./app/javascript/helpers/widgets/widgets.js","webpack:///./app/javascript/components/administration/widgetbar/fields/AdditionalCalendarField.tsx","webpack:///./app/javascript/components/administration/widgetbar/Widget.tsx","webpack:///./app/javascript/components/administration/widgetbar/WidgetTypes.tsx","webpack:///./app/javascript/components/administration/widgetbar/WidgetbarLayout.js","webpack:///./app/javascript/components/administration/widgetbar/WidgetProperties.tsx","webpack:///./app/javascript/components/administration/widgetbar/WidgetPropertiesLayout.tsx","webpack:///./app/javascript/components/shared/errors/NotFound.tsx","webpack:///./app/javascript/components/administration/widgetbar/WidgetbarForm.tsx","webpack:///./app/javascript/components/administration/WidgetbarEdit.tsx","webpack:///./app/javascript/components/administration/widgetbar/WidgetbarSelection.tsx","webpack:///./app/javascript/components/administration/WidgetbarIndex.tsx","webpack:///./app/javascript/components/administration/MembershipRolesManager.tsx","webpack:///./app/javascript/components/administration/adaptedAdministrationComponents.js","webpack:///./app/javascript/components/rundschreiben/ExternalIdComponent.tsx","webpack:///./app/javascript/components/shared/GroupCategorySections.tsx","webpack:///./app/javascript/hooks/userbar.ts","webpack:///./app/javascript/components/layout/Userbar.tsx","webpack:///./app/javascript/components/layout/ModuleSwitcher.tsx","webpack:///./app/javascript/components/layout/TixxtModuleSwitcher.tsx","webpack:///./app/javascript/components/info/Userbar.tsx","webpack:///./app/javascript/components/shared/hooks/useOpenJoinRequests.ts","webpack:///./app/javascript/components/activitystreams/Userbar.tsx","webpack:///./app/javascript/components/messages/Userbar.tsx","webpack:///./app/javascript/components/appointments/Userbar.tsx","webpack:///./app/javascript/components/tasks/Userbar.tsx","webpack:///./app/javascript/components/files/Userbar.tsx","webpack:///./app/javascript/components/administration/Userbar.tsx","webpack:///./app/javascript/components/globalSearch/Userbar.tsx","webpack:///./app/javascript/components/memberships/Userbar.tsx","webpack:///./app/javascript/api/memberships.ts","webpack:///./app/javascript/components/directory/Userbar.tsx","webpack:///./app/javascript/components/pages/Userbar.tsx","webpack:///./app/javascript/components/appCreator/Userbar.tsx","webpack:///./app/javascript/components/channels/Userbar.tsx","webpack:///./app/javascript/components/administration/channels/Userbar.tsx","webpack:///./app/javascript/components/layout/TixxtUserbar.tsx","webpack:///./app/javascript/components/layout/TixxtChatbar.tsx","webpack:///./app/javascript/hooks/useSelectNavigation.ts","webpack:///./app/javascript/components/layout/searchBar/helpers.tsx","webpack:///./app/javascript/components/layout/SearchBar.tsx","webpack:///./app/javascript/components/layout/userCentral/ChatButton.tsx","webpack:///./app/javascript/components/layout/UserCentral.tsx","webpack:///./app/javascript/components/layout/useLogoScrollResize.ts","webpack:///./app/javascript/components/layout/CustomerCentralUpdateCheck.tsx","webpack:///./app/javascript/components/layout/TeamsRenewOAuthCredentialsCheck.tsx","webpack:///./app/javascript/components/layout/TixxtHeader.tsx","webpack:///./app/javascript/components/administration/designManager/ApplyOverrideTheme.tsx","webpack:///./app/javascript/components/administration/designManagerLight/functions.tsx","webpack:///./app/javascript/components/administration/designManagerLight/ApplyOverrideGroupTheme.tsx","webpack:///./app/javascript/components/administration/designManagerLight/ApplyOverrideGroupCategoryTheme.tsx","webpack:///./app/javascript/components/layout/AppSearchHeader.tsx","webpack:///./app/javascript/components/App.tsx","webpack:///./app/javascript/helpers/legacy/customLodashCompat.ts","webpack:///./app/javascript/turbo/bridge.tsx","webpack:///./app/javascript/components/widgetbars/shared/MemberRow.tsx","webpack:///./app/javascript/components/widgetbars/widgets/AdminMembersWidget.tsx","webpack:///./app/javascript/components/widgetbars/shared/AppointmentRow.tsx","webpack:///./app/javascript/components/widgetbars/widgets/AppointmentsWidget.tsx","webpack:///./app/javascript/components/widgetbars/widgets/BirthdayWidget.tsx","webpack:///./app/javascript/components/widgetbars/widgets/GroupInfoWidget.tsx","webpack:///./app/javascript/components/widgetbars/widgets/NewestMembersWidget.tsx","webpack:///./app/javascript/components/widgetbars/widgets/OnlineMembersWidget.tsx","webpack:///./app/javascript/components/widgetbars/widgets/RssWidget.tsx","webpack:///./app/javascript/components/widgetbars/widgets/SpeedDialWidget.tsx","webpack:///./app/javascript/components/widgetbars/widgets/TextWidget.tsx","webpack:///./app/javascript/components/widgetbars/ActivitystreamWidgetbar.tsx","webpack:///./app/javascript/components/widgetbars/api.ts","webpack:///./app/javascript/packs/application.js","webpack:///./app/javascript/components/activitystreams/composer/StreamTargeting.tsx","webpack:///./app/javascript/turbo/confirm_compat.js","webpack:///./app/javascript/helpers/showCookieModal.ts","webpack:///./app/javascript/reducers/chat/chatStateReducers.js","webpack:///./app/javascript/reducers/chat/chats.js","webpack:///./app/javascript/reducers/chat/messages.js","webpack:///./app/javascript/reducers/chat/composing.js","webpack:///./app/javascript/reducers/chat/homies.js","webpack:///./app/javascript/reducers/chat/index.js","webpack:///./app/javascript/reducers/chat/session.js","webpack:///./app/javascript/reducers/chat/composer.js","webpack:///./app/javascript/sagas/chat/helpers.js","webpack:///./app/javascript/sagas/chat/presence.js","webpack:///./app/javascript/sagas/chat/application.js","webpack:///./app/javascript/sagas/chat/channels.js","webpack:///./app/javascript/sagas/chat/notifications.js","webpack:///./app/javascript/sagas/chat/index.js","webpack:///./app/javascript/selectors/chat/application.js","webpack:///./app/javascript/selectors/chat/homies.js","webpack:///./app/javascript/selectors/chat/chat.js","webpack:///./app/javascript/selectors/chat/messages.js","webpack:///./app/javascript/selectors/chat/profile.js","webpack:///./app/javascript/selectors/environment.ts","webpack:///./app/javascript/selectors/folders.js","webpack:///./app/javascript/selectors/propertySets.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/files/files.module.css","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 IS_CHAT_QUERY = \"__IS_CHAT_QUERY__\";\nexport const IS_NETWORK_QUERY = \"__IS_NETWORK_QUERY__\";\n\n/**\n * All actions, for documentation:\n * - chat/CHAT/SCROLL_START_REACHED\n * - chat/CHAT/SCROLL_END_REACHED\n * - chat/CHAT/MARK_AS_READ/START_TIMER\n */\n\nexport const createChatQueryAction = (event) => {\n const type = `chat/${event.toUpperCase()}`;\n const actionCreator = (data) => ({\n ...data,\n type,\n [IS_CHAT_QUERY]: true,\n });\n\n actionCreator.type = type;\n actionCreator.replyType = `${type}/REPLY`;\n\n return actionCreator;\n};\nexport const createNetworkQueryAction = (event) => {\n const basicActionCreator = createChatQueryAction(event);\n return (data) => ({\n [IS_NETWORK_QUERY]: true,\n ...basicActionCreator(data),\n });\n};\n\n// Loads initial message history and other chat details, like permissions\nexport const loadChatDetails = createChatQueryAction(\"chat_details\");\nexport const loadMoreMessages = createChatQueryAction(\"more_messages\");\nexport const markAsRead = createChatQueryAction(\"mark_as_read\");\nexport const muteChat = createChatQueryAction(\"mute_chat\");\nexport const muteAppChat = createChatQueryAction(\"app_mute_chat\");\nexport const unmuteChat = createChatQueryAction(\"unmute_chat\");\nexport const unmuteAppChat = createChatQueryAction(\"app_unmute_chat\");\nexport const createChat = createNetworkQueryAction(\"create_chat\");\nexport const setChatStatus = createNetworkQueryAction(\"set_status\");\n","import { useQuery } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\nimport { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { currentMemberSelector } from \"selectors/environment\";\nimport { sum, values } from \"lodash\";\n\n/**\n * Features\n */\nconst unreadsQueryOptions = {\n refetchInterval: 60000,\n};\n\ntype FeaturesUnreadsPayload = {\n Activitystreams: number;\n Messages: number;\n Tasks: number;\n Files: number;\n Calendars: number;\n GroupInvites: number;\n Invites: number;\n Notifications: number;\n GroupJoinRequests: { group_slug: string; open_join_requests: number }[];\n};\n\nexport type AppUnreadsPayload = {\n total: number;\n activitystreams: number;\n appointments: number;\n messages: number;\n};\n\nconst convertPayload = (payload: FeaturesUnreadsPayload): AppUnreadsPayload => {\n const features = {\n activitystreams: payload.Activitystreams || 0,\n appointments: payload.Calendars || 0,\n messages: payload.Messages || 0,\n };\n\n return {\n total: sum(values(features)),\n ...features,\n };\n};\n\n/*\n * Unread counts by features\n *\n * Delayed by 250ms to prioritize other requests\n * Skipped if no member is signed in\n */\nexport function useFeaturesUnreads() {\n const currentMember = Preload.current_member;\n const [delayedEnabled, setDelayedEnabled] = useState(false);\n\n useEffect(() => {\n const timeout = setTimeout(() => setDelayedEnabled(true), 250);\n return () => clearTimeout(timeout);\n }, []);\n\n return useQuery(\n [\"unreads\", \"features\"],\n () => fetchApi(\"/unreads/features\"),\n {\n ...unreadsQueryOptions,\n enabled: currentMember !== null && delayedEnabled,\n onSuccess: (data) => {\n if (window.isApp) {\n const unreads: AppUnreadsPayload = convertPayload(data);\n window.bridge?.postMessage({ unreads });\n }\n },\n },\n );\n}\n\n/**\n * Unread counts by activitystreams\n *\n * Delayed by 500ms to prioritize other requests\n * Skipped if no member is signed in\n */\ntype ActivitiesUnreadsPayload = {\n activitystream_slug: string;\n unreads: number;\n sum: number;\n notifications: number;\n invites: number;\n group_slug: string | null;\n}[];\n\nexport function useActivitiesUnreads() {\n const currentMember = useSelector(currentMemberSelector);\n const [delayedEnabled, setDelayedEnabled] = useState(false);\n\n useEffect(() => {\n setTimeout(() => setDelayedEnabled(true), 500);\n }, []);\n\n return useQuery(\n [\"unreads\", \"activities\"],\n () => fetchApi(\"/unreads/activities\"),\n {\n ...unreadsQueryOptions,\n enabled: currentMember !== null && delayedEnabled,\n onSuccess: (data) => {\n Tixxt.Activitystreams.Activitystream.all().processUnreadCounts(data);\n },\n },\n );\n}\n\n/**\n * Folders\n */\ntype FoldersUnreadsPayload = {\n group_slug: string | null;\n pending_versions: number;\n reviewed_files: number;\n sum: number;\n}[];\n\nexport function useFoldersUnreads(options = {}) {\n return useQuery(\n [\"unreads\", \"folders\"],\n () => fetchApi(`/unreads/folders`),\n { ...unreadsQueryOptions, ...options },\n );\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 { useQuery } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\nimport { stringify } from \"query-string\";\n\ntype AdministrationUserbarResponse = {\n title: string;\n links: {\n label: string;\n path: string;\n unreads?: number;\n target?: \"_blank\" | \"_self\" | \"_parent\" | \"_top\";\n exact?: boolean;\n alternative_paths?: string[];\n }[];\n image?: {\n src: string;\n };\n}[];\n\nexport function useAdministrationUserbarLinks({\n groupSlug,\n groupCategorySlug,\n}: { groupSlug?: string; groupCategorySlug?: string } = {}) {\n const params = groupSlug\n ? { context_type: \"group\", context_id: groupSlug }\n : groupCategorySlug\n ? { context_type: \"group_category\", context_id: groupCategorySlug }\n : { context_type: \"network\" };\n\n return useQuery(\n [\"userbars\", \"administration\", params],\n () => fetchApi(`/api/v1/userbars/administration?${stringify(params)}`),\n { refetchOnWindowFocus: false },\n );\n}\n\n// Membership Api calls\nexport interface Membership {\n id: string;\n}\n\nexport function useMembershipProfile(membershipId: string | undefined) {\n return useQuery(`/api/v1/profiles/${membershipId}`, {\n enabled: !!membershipId,\n });\n}\n","import { TinyColor } from \"@ctrl/tinycolor\";\nimport { ColorObject, DerivedTheme, Theme } from \"./types\";\nimport { CSSProperties } from \"react\";\nimport { map } from \"lodash\";\n\n/*\n The logic of this function is duplicated in ruby\n Dont forget to update it as well: app/services/theme_service/theme_to_css.rb\n */\nexport function lightThemeToCss(theme: Theme) {\n const { bannerType, logoType } = theme;\n const cssContent: string[] = [];\n\n cssContent.push(LOGO_RULES[logoType]());\n cssContent.push(BANNER_RULES[bannerType](theme));\n\n return cssContent.join(\"\\n\");\n}\n\n/*\n The logic of this function is duplicated in ruby\n Dont forget to update it as well: app/services/theme_service/theme_to_css.rb\n */\nexport default function themeToCss(theme: DerivedTheme) {\n const { derivedColors, logoType, bannerType } = theme;\n const cssContent: string[] = [];\n\n cssContent.push(\":root {\");\n\n for (const variable in derivedColors) {\n const colorObj = derivedColors[variable];\n\n cssContent.push(\n map(\n colorObjToCSSProperties(variable, colorObj),\n (value, variable) => `${variable}: ${value};`,\n ).join(\" \"),\n );\n }\n\n cssContent.push(`}`);\n\n cssContent.push(LOGO_RULES[logoType]());\n cssContent.push(BANNER_RULES[bannerType](theme));\n\n return cssContent.join(\"\\n\");\n}\n\nexport function colorObjToCSSProperties(\n variable: string,\n colorObj: ColorObject | undefined,\n): CSSProperties {\n if (!colorObj) return {};\n\n const result = {};\n const { color, abstract, tailwind } = colorObj;\n\n if (!abstract) {\n result[`--${variable}`] = color;\n }\n if (tailwind) {\n const { r, g, b } = new TinyColor(color).toRgb();\n result[`--tailwind-${variable}`] = `${r} ${g} ${b}`;\n }\n\n return result;\n}\n\nconst LOGO_RULES = {\n default() {\n // This is exported to the defaultTheme\n return `:root {\n --header-logo-height: 60px;\n --header-logo-display: grid;\n --header-home-icon-display: none;\n --header-small-search-display: none;\n --header-small-grid: 'burger logo user-central';\n --navigation-offset: 60px;\n }`;\n },\n extended() {\n return `:root {\n --header-logo-height: 80px;\n --header-logo-display: grid;\n --header-home-icon-display: none;\n --header-small-search-display: none;\n --header-small-grid: 'burger logo user-central';\n --navigation-offset: 60px;\n }`;\n },\n hidden() {\n return `:root {\n --header-logo-height: 0px;\n --header-logo-display: none;\n --header-home-icon-display: grid;\n --header-small-search-display: flex;\n --header-small-grid: 'burger home-icon search user-central';\n --navigation-offset: 60px;\n }`;\n },\n};\n\nconst BANNER_RULES = {\n hidden() {\n // This is exported to the defaultTheme\n return `:root {\n --header-banner-height: 0;\n --header-banner-position: unset;\n --header-banner-background: transparent; \n }`;\n },\n color({ colors, derivedColors }: DerivedTheme) {\n const col =\n colors[\"banner-background\"] || derivedColors?.[\"banner-background\"];\n return `:root {\n --header-banner-height: 20px;\n --header-banner-position: fixed;\n --header-banner-background: ${col?.color || \"transparent\"};\n --navigation-offset: 80px;\n }`;\n },\n image({ override, bannerImage, bannerUrl, logoType }: Theme) {\n let url = override\n ? bannerImage\n ? `/api/storage/assets/${bannerImage.id}/preview`\n : null\n : bannerUrl;\n url = url ? `url(\"${url}\")` : \"none\";\n\n return `:root {\n --header-banner-height: 120px;\n --header-banner-position: unset;\n --header-banner-background: transparent ${url} 0 0 no-repeat;\n ${logoType == \"extended\" ? \"--header-logo-height: 120px;\" : \"\"}\n }`;\n },\n};\n","import { useQuery, useMutation } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\n\nexport function fetchImprint() {\n return fetchApi(\"/administration/imprint/edit\");\n}\nexport function useImprint() {\n return useQuery(\"imprint\", fetchImprint);\n}\n\nexport function updateImprint({ ...body }) {\n return fetchApi(`/administration/imprint/`, { method: \"PUT\", body });\n}\nexport function useUpdateImprint(options) {\n return useMutation(updateImprint, options);\n}\n","import React from \"react\";\nimport { isEmpty } from \"lodash\";\nimport { useUpdateImprint, useImprint } from \"./api\";\nimport PageTitle from \"../../layout/PageTitle\";\nimport MarkdownEditorAdapter from \"../../shared/markdownEditor/MarkdownEditorAdapter\";\nimport ControlGroup from \"../../shared/fields/ControlGroup\";\nimport { Field } from \"redux-form\";\nimport ReduxForm from \"../../shared/reduxForm\";\nimport InfoText from \"components/shared/InfoText\";\n\nfunction ImprintEdit() {\n const { isLoading: loading, data: imprints } = useImprint();\n const { mutate: updateImprint } = useUpdateImprint({\n onSuccess: () => {\n toastr.success(I18n.t(\"js.saving_successful\"));\n },\n });\n\n return (\n <>\n \n {loading || isEmpty(imprints) ? (\n
\n {I18n.t(\"js.loading\")}\n
\n ) : (\n <>\n updateImprint({ imprint: values })}\n onSubmitFail={() => toastr.error(I18n.t(\"js.saving_failure\"))}\n allowSaveWithoutChange={false}\n >\n \n \n \n\n \n \n {imprints.show_newsletter_info ? (\n \n ) : null}\n \n \n \n )}\n \n );\n}\n\nexport default ImprintEdit;\n","import React from \"react\";\nimport PageTitle from \"components/layout/PageTitle\";\nimport { get, isEmpty, map } from \"lodash\";\nimport moment from \"moment-timezone\";\nimport { useDeleteLegalText, useLegalTexts } from \"./api\";\nimport InfoText from \"components/shared/InfoText\";\n\ninterface LegalTextRowTypes {\n legalText: {\n id?: string;\n name?: string;\n handle?: string;\n update_at?: string;\n };\n\n onDeleteLegalText(...args: unknown[]): unknown;\n}\n\nfunction LegalTextRow({ legalText, onDeleteLegalText }: LegalTextRowTypes) {\n return (\n \n {get(legalText, \"name\")}\n \n \n /{get(legalText, \"handle\")}\n \n \n \n {moment(get(legalText, \"updated_at\")).format(\n I18n.t(\"plugins.Locale.Formats.valid_datetime\"),\n )}\n \n \n
\n \n \n \n \n
    \n {get(legalText, \"read_only\") ? null : (\n
  • \n \n \n {I18n.t(\"js.administration.legal_texts.edit.button\")}\n \n
  • \n )}\n
  • \n \n \n {I18n.t(\"js.administration.legal_texts.versions\")}\n \n
  • \n
  • \n {\n e.preventDefault();\n\n if (confirm(I18n.t(\"js.delete_confirmation\"))) {\n onDeleteLegalText(get(legalText, \"id\"));\n }\n }}\n >\n \n {I18n.t(\"js.administration.legal_texts.delete.button\")}\n \n
  • \n
\n
\n
\n \n \n );\n}\n\nfunction LegalTextIndex() {\n const {\n isLoading: loading,\n data: legalTexts,\n refetch: refetchLegalTexts,\n } = useLegalTexts();\n\n const { mutate: deleteLegalText } = useDeleteLegalText({\n onSuccess: () => {\n toastr.success(I18n.t(\"js.delete_successful\"));\n refetchLegalTexts();\n },\n });\n\n return (\n <>\n \n \n {loading ? (\n
\n {I18n.t(\"js.loading\")}\n
\n ) : (\n <>\n \n \n \n \n \n \n \n \n \n \n \n {isEmpty(legalTexts) ? (\n \n \n \n ) : (\n map(legalTexts, (legalText, index) => (\n \n ))\n )}\n \n
{I18n.t(\"js.administration.legal_texts.name\")}{I18n.t(\"js.administration.legal_texts.link\")}{I18n.t(\"js.administration.legal_texts.last_updated\")} 
\n {I18n.t(\"js.administration.legal_texts.no_entries\")}\n
\n \n )}\n \n );\n}\n\nexport default LegalTextIndex;\n","import { useQuery, useMutation } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\n\nexport function useLegalTexts() {\n return useQuery(\"legalTexts\", () => fetchApi(\"/administration/legal_texts\"));\n}\n\nexport function useLegalText(id) {\n return useQuery([\"legalText\", id], () =>\n fetchApi(`/administration/legal_texts/${id}`),\n );\n}\n\nexport function useCreateLegalText(options) {\n return useMutation(\n (body) => fetchApi(`/administration/legal_texts`, { method: \"POST\", body }),\n options,\n );\n}\n\nexport function useUpdateLegalText(options) {\n return useMutation(\n ({ id, ...body }) =>\n fetchApi(`/administration/legal_texts/${id}`, { method: \"PUT\", body }),\n options,\n );\n}\n\nexport function useDeleteLegalText(options) {\n return useMutation(\n (id) => fetchApi(`/administration/legal_texts/${id}`, { method: \"DELETE\" }),\n options,\n );\n}\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, useCallback } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { map, isArray, compact, debounce, castArray } from \"lodash\";\nimport { Field } from \"redux-form\";\nimport AsyncSelect from \"react-select/async\";\n\nimport styles from \"./editFields.module.css\";\nimport FieldError from \"components/appCreator/items/form/FieldError\";\nimport { useMutation } from \"react-query\";\nimport { stringify } from \"query-string\";\nimport { fetchApi } from \"../../../../helpers/reactQueryApi\";\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 return map(\n compact(castArray(state)),\n ({ id, displayName, displayValue }) => ({\n value: id,\n label: displayName || displayValue,\n }),\n );\n};\n\nfunction SelectAdapter({\n input,\n required,\n id,\n disabled,\n className,\n multiple,\n meta: { error },\n}) {\n const { mutate: loadOptions } = useMutation(\n ({ q }) => fetchApi(`/members?${stringify({ q })}`),\n {\n onSuccess: (data, variables) => {\n variables.callback(formatValue(data));\n },\n },\n );\n\n const debouncedLoadOptions = useCallback(\n debounce(\n (value, callback) => loadOptions({ q: value + \"*\", callback }),\n 375,\n ),\n [loadOptions],\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: debouncedLoadOptions,\n isMulti: multiple,\n styles: { menu: (base) => ({ ...base, zIndex: 999 }) },\n };\n\n return (\n \n
\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, useState } from \"react\";\nimport { Field } from \"redux-form\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCalendar } from \"@fortawesome/pro-solid-svg-icons\";\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 DatePickerAdapterArgs = {\n input: {\n name: string;\n value: string;\n onChange: (value: string | null) => void;\n };\n meta: {\n error?: string;\n };\n};\n\nfunction DatePickerAdapter({ input, meta }: DatePickerAdapterArgs) {\n const elemRef = useRef(null);\n const [displayValue, setDisplayValue] = useState(\n !isEmpty(input.value)\n ? moment(input.value).format(\n I18n.t(\"js.plugins.Locale.Formats.valid_date\"),\n )\n : \"\",\n );\n\n useEffect(() => {\n const datepicker = new Datepicker(elemRef.current);\n elemRef.current?.addEventListener(\n \"changeDate\",\n function (e: CustomEventInit) {\n const formattedDate = 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 setDisplayValue(\n formattedDate\n ? moment(formattedDate).format(\n I18n.t(\"js.plugins.Locale.Formats.valid_date\"),\n )\n : \"\",\n );\n\n input.onChange(formattedDate);\n },\n );\n\n return () => {\n datepicker.destroy();\n };\n });\n\n function onChange(e) {\n const rawValue = e.target.value;\n setDisplayValue(rawValue);\n\n const date = moment(\n rawValue,\n I18n.t(\"js.plugins.Locale.Formats.valid_date\"),\n true,\n );\n\n if (date.isValid()) {\n input.onChange(date.format(\"YYYY-MM-DD\"));\n } else {\n input.onChange(null);\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\ntype DateFieldArgs = {\n name: string;\n disabled: boolean;\n required: boolean;\n id: string;\n};\n\nfunction DateField({ required, id, disabled, name }: DateFieldArgs) {\n return (\n \n );\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\nfunction imageLoadingError({ currentTarget }) {\n currentTarget.onerror = null; // prevents looping\n if (currentTarget.src !== Assets[\"profile_50x50.jpg\"])\n currentTarget.src = Assets[\"profile_50x50.jpg\"];\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
\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=\"form-select\"\n unstyled\n />\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 React, { createContext, Fragment, useCallback, useContext } from \"react\";\nimport PropTypes from \"prop-types\";\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 FieldError from \"components/appCreator/items/form/FieldError\";\nimport { useMutation } from \"react-query\";\nimport { fetchApi } from \"../../../../helpers/reactQueryApi\";\nimport { stringify } from \"query-string\";\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 { mutate: loadOptions } = useMutation(\n ({ q }) =>\n fetchApi(\n `/tags/find?${stringify({\n q,\n tag_parents: tagParents,\n exclude_new: true,\n })}`,\n ),\n {\n onSuccess: (data, variables) => {\n variables.callback(formatValue(data));\n },\n },\n );\n\n const debouncedLoadOptions = useCallback(\n debounce(\n (value, callback) => loadOptions({ q: value + \"*\", callback }),\n 375,\n ),\n [loadOptions],\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: debouncedLoadOptions,\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 \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 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, { ReactNode } from \"react\";\nimport moment from \"moment\";\nimport { isEmpty, get } from \"lodash\";\n\nimport classnames from \"classnames\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCalendar, faRotate } from \"@fortawesome/pro-regular-svg-icons\";\nimport { useAcceptInvite, useDeclineInvite } from \"components/invites/api\";\n\ntype AppointmentInviteMetaArgs = {\n status: string;\n accept: () => void;\n decline: () => void;\n canOptRetroactively: boolean;\n totalAttendeesEnforcedAndExceeded: boolean;\n inviteStatus: string;\n participation_locked: boolean;\n};\n// Reused in bitkom custom\nexport function AppointmentInviteMeta({\n status,\n accept,\n decline,\n canOptRetroactively,\n inviteStatus,\n totalAttendeesEnforcedAndExceeded,\n participation_locked,\n}: AppointmentInviteMetaArgs) {\n const buttons = totalAttendeesEnforcedAndExceeded ? (\n
    \n {I18n.t(`js.calendars.appointment.total_attendees_exceeded`)}\n
    \n ) : participation_locked ? (\n
    \n {I18n.t(`js.calendars.appointment.participation_locked`)}\n
    \n ) : (\n
    \n \n \n {I18n.t(\"js.invites.actions.accept\")}\n \n \n
    \n );\n\n const hint = (\n
    \n {status !== \"open\"\n ? I18n.t(`js.calendars.appointments.invite.${status}`)\n : null}\n
    \n );\n\n switch (inviteStatus) {\n case \"open\":\n return status === inviteStatus ? buttons : hint;\n case \"accepted\":\n case \"declined\":\n return status === inviteStatus ? hint : null;\n case \"expired\":\n return status === \"open\" ? (canOptRetroactively ? buttons : null) : hint;\n case \"obsolete\":\n return status === inviteStatus ? hint : null;\n default:\n return null;\n }\n}\n\ntype AppointmentInviteDateArgs = {\n date: {\n all_day: boolean;\n end: string;\n same_day: boolean;\n start: string;\n id?: string;\n };\n frequency?: string;\n};\n// Reused in bitkom custom\nexport function AppointmentInviteDate({\n date,\n frequency,\n}: AppointmentInviteDateArgs) {\n return (\n
    \n {frequency\n ? I18n.t(`js.time.formats.frequencies.${frequency}`) + \" \"\n : null}\n \n {date.end ? (\n \n ) : null}\n
    \n );\n}\n\ntype Invitable = {\n calendar_ids?: string[];\n date: AppointmentInviteDateArgs[\"date\"];\n id: string;\n name: string;\n status: string;\n frequency?: string;\n total_attendees_enforced_and_exceeded?: number;\n participation_locked: boolean;\n};\n\ntype AppointmentInviteArgs = {\n id: string;\n status: string;\n inviteStatus: string;\n invitable_type: string;\n author: {\n id: string;\n name: string;\n } | null;\n invitable: Invitable;\n renderDate: (invitable: Invitable) => ReactNode;\n reloadInvites: () => void;\n renderMeta: (props: {\n inviteStatus: string;\n status: string;\n decline: () => void;\n accept: () => void;\n canOptRetroactively: boolean;\n totalAttendeesEnforcedAndExceeded?: number;\n participation_locked: boolean;\n }) => ReactNode;\n};\n\nexport default function AppointmentInvite({\n invitable,\n invitable_type,\n author,\n status,\n inviteStatus,\n id,\n renderDate,\n renderMeta,\n reloadInvites,\n}: AppointmentInviteArgs) {\n const network = Tixxt.currentNetwork;\n const { mutate: declineInvite } = useDeclineInvite({\n onSuccess: () => reloadInvites(),\n });\n\n const { mutate: acceptInvite } = useAcceptInvite({\n onSuccess: () => {\n reloadInvites();\n },\n });\n\n const canOptRetroactively = get(network, [\n \"config\",\n \"appointments\",\n \"opt_retroactively\",\n ]);\n\n return (\n
    \n {invitable_type === \"RecurringAppointment\" ? (\n \n ) : (\n \n )}\n\n
    \n {!isEmpty(invitable) ? (\n \n {renderDate(invitable)}\n
    \n ) : null}\n {!isEmpty(author) ? (\n
    \n {I18n.t(\"js.invites.invited_by\") + \" \"}\n {author.name}\n
    \n ) : null}\n
    \n \n {renderMeta({\n inviteStatus: inviteStatus,\n status: status,\n decline: () => declineInvite({ inviteId: id }),\n accept: () => acceptInvite({ inviteId: id }),\n canOptRetroactively: canOptRetroactively,\n totalAttendeesEnforcedAndExceeded:\n invitable.total_attendees_enforced_and_exceeded,\n participation_locked: invitable.participation_locked,\n })}\n \n \n );\n}\n","import React, { useEffect, useMemo, useRef } from \"react\";\nimport classNames from \"classnames\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faShare as faRegularShare,\n faSpinner as faRegularSpinner,\n faCalendarDay as faRegularCalendarDay,\n faFilter as faRegularFilter,\n faCircle as faRegularCircle,\n faTableCells as faRegularTableCells,\n faList as faRegularList,\n faCogs as faRegularCogs,\n} from \"@fortawesome/pro-regular-svg-icons\";\nimport {\n faCaretLeft as faSolidCaretLeft,\n faCaretRight as faSolidCaretRight,\n faCircle as faSolidCircle,\n} from \"@fortawesome/pro-solid-svg-icons\";\nimport DropDown from \"components/shared/DropDown\";\nimport { ViewType } from \"components/appointments/useAppointmentView\";\nimport moment from \"moment\";\nimport { groupBy, includes, isEmpty, map, sortBy, find, compact } from \"lodash\";\nimport { Calendar } from \"../../@types/appointments\";\nimport Datepicker from \"helpers/Datepicker\";\nimport { useParams } from \"helpers/tixxt-router\";\nimport { useSelector } from \"react-redux\";\nimport { State } from \"../../@types\";\n\ntype AppointmentToolbarArgs = {\n isLoading: boolean;\n view?: ViewType;\n setViewType?: (viewType: ViewType) => void;\n date: string;\n setDate: (date: string) => void;\n calendars?: Calendar[];\n toggleExcludedCalendarIds?: (calendarId: string) => void;\n excludedCalendarIds?: string[];\n scrollToToday?: () => void;\n canCreate?: boolean;\n hideActions?: boolean;\n};\n\nexport default function AppointmentToolbar({\n isLoading,\n view,\n setViewType,\n date,\n setDate,\n calendars,\n toggleExcludedCalendarIds,\n excludedCalendarIds,\n canCreate = false,\n scrollToToday,\n hideActions,\n}: AppointmentToolbarArgs) {\n const datePickerRef = useRef(null);\n\n const { groupSlug } = useParams();\n const group = useSelector((state: State) =>\n groupSlug ? state.groups.bySlug?.[groupSlug] : null,\n );\n const calendarId = !isEmpty(group)\n ? find(\n compact(calendars),\n (cal) =>\n cal.type === \"group\" &&\n cal.parent_id === group?.id &&\n cal.can.create_appointments,\n )?.id\n : undefined;\n\n useEffect(() => {\n const datepicker = new Datepicker(datePickerRef.current, {\n pickLevel: 1,\n });\n\n datepicker.element.addEventListener(\"changeDate\", (event) =>\n setDate(moment(event.detail.date).format()),\n );\n\n return () => datepicker.destroy();\n }, [date, datePickerRef]);\n\n return (\n
    \n
    \n {\n setDate(moment().format());\n scrollToToday?.();\n }}\n title={I18n.t(\"js.calendars.overview.today\")}\n >\n \n {I18n.t(\"js.calendars.overview.today\")}\n \n
    \n
    \n setDate(moment(date).subtract(1, \"month\").format())}\n title={I18n.t(\"js.calendars.overview.last_month\")}\n >\n \n \n datePickerRef.current?.focus()}\n >\n {isLoading ? (\n \n ) : (\n \n )}\n {moment(date).format(\"MMMM YYYY\")}\n \n \n setDate(moment(date).add(1, \"month\").format())}\n title={I18n.t(\"js.calendars.overview.next_month\")}\n >\n \n \n
    \n\n
    \n {toggleExcludedCalendarIds && (\n <>\n \n \n \n )}\n {setViewType && (\n
    \n setViewType(\"sheet\")}\n title={I18n.t(\"js.calendars.overview.view.calendar_sheet\")}\n >\n \n \n setViewType(\"list\")}\n title={I18n.t(\"js.calendars.overview.view.list\")}\n >\n \n \n
    \n )}\n {hideActions || (\n
    \n {canCreate && (\n \n {I18n.t(\"js.calendars.overview.headline.add_appointment\")}\n \n )}\n \n \n \n \n \n
    \n )}\n
    \n
    \n );\n}\n\nfunction CalendarFilterDropdown({\n calendars,\n excludedCalendarIds,\n toggleExcludedCalendarIds,\n}: {\n calendars: Calendar[];\n excludedCalendarIds: string[];\n toggleExcludedCalendarIds: (calendarId: string) => void;\n}) {\n const typeLabels = {\n network: I18n.t(\"js.calendars.types.network\"),\n personal: I18n.t(\"js.calendars.types.personal\"),\n };\n\n const sortedGroupedCalendars = useMemo(() => {\n const grouped = groupBy(calendars, \"type\");\n return [\n ...(!isEmpty(grouped[\"network\"] || [])\n ? [\n {\n type: \"network\",\n calendars: sortBy(grouped[\"network\"], \"name\"),\n },\n ]\n : []),\n ...(!isEmpty(grouped[\"personal\"] || [])\n ? [\n {\n type: \"personal\",\n calendars: sortBy(grouped[\"personal\"], \"name\"),\n },\n ]\n : []),\n ...Object.entries(groupBy(grouped[\"group\"] || [], \"category_name\")).map(\n ([categoryName, categoryCalendars]) => ({\n type: categoryName,\n calendars: sortBy(categoryCalendars, \"name\"),\n }),\n ),\n ];\n }, [calendars]);\n\n return (\n \n {\n e.preventDefault();\n toggleExcludedCalendarIds(\"all\");\n }}\n />\n {map(sortedGroupedCalendars, ({ type, calendars }) => (\n \n
  • {typeLabels[type] || type}
  • \n\n {map(calendars, (calendar) => (\n {\n e.preventDefault();\n toggleExcludedCalendarIds(calendar.id);\n }}\n />\n ))}\n
    \n ))}\n
    \n );\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { get, map, isNil } from \"lodash\";\nimport moment from \"moment\";\nimport classnames from \"classnames\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faComments } from \"@fortawesome/pro-regular-svg-icons\";\n\n// Helper to format a given momentDate with the localised time format\nconst formatTime = (momentDate) =>\n momentDate.format(I18n.t(\"js.time.formats.short_time\"));\n\nfunction FormattedTime({ start, end, allDay, day }) {\n if (allDay || day.isBetween(start, end, \"day\", \"()\")) {\n // allDay appointment or day is between start/end, check by day and exclude start/end days\n return null;\n }\n\n if (start.isSame(day, \"day\") && end.isSame(day, \"day\")) {\n // start and end on this day\n return (\n {`${formatTime(start)}-${formatTime(end)}`}\n );\n } else if (start.isSame(day, \"day\")) {\n // start on this day\n return {formatTime(start)};\n } else if (end.isSame(day, \"day\")) {\n // end on this day\n return {`>${formatTime(end)}`};\n }\n\n // default return, when the appointment doesn't match a criteria above\n return null;\n}\n\nfunction AppointmentLine({\n name,\n date,\n html_url,\n day,\n markers,\n canceled,\n has_meeting,\n className,\n}) {\n const start = moment(get(date, \"start\"));\n const end = isNil(get(date, \"end\")) ? moment(null) : moment(get(date, \"end\"));\n const allDay = get(date, \"all_day\");\n\n return (\n \n
    \n {map(markers, (markerColor, index) => (\n \n ))}\n
    \n \n {\" \"}\n \n {name}\n \n \n {has_meeting ? (\n \n ) : null}\n \n );\n}\n\nAppointmentLine.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string,\n canceled: PropTypes.bool,\n date: PropTypes.shape({\n start: PropTypes.string,\n end: PropTypes.string,\n all_day: PropTypes.bool,\n time_zone: PropTypes.string,\n }),\n markers: PropTypes.arrayOf(PropTypes.string),\n day: PropTypes.object,\n has_meeting: PropTypes.bool,\n};\n\nexport default AppointmentLine;\n","import React, { useLayoutEffect, useRef, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { map, get, find, compact, isEqual } from \"lodash\";\nimport moment from \"moment\";\nimport classNames from \"classnames\";\n\nimport \"../appointments.module.css\";\nimport AppointmentLine from \"./AppointmentLine\";\nimport useHover from \"../../shared/hooks/useHover\";\n\nfunction CalendarSheetCell({\n day,\n appointments,\n isFirst,\n weekNum,\n notActualMonth,\n calendars,\n className,\n maxHeight,\n columnNumber,\n lastRow,\n hideActions,\n}) {\n const momentDay = moment(day, \"YYYY-MM-DD\");\n const divRef = useRef(null);\n const appointmentHeight = 21; // h-5 + gap-px = 21px\n const headerHeight = 24; // h-5 + gap-1 = 24px\n let visibleAppointmentCount = Math.max(\n 4, // minimum appointment count\n Math.floor((maxHeight - headerHeight - 8) / appointmentHeight),\n );\n const height = visibleAppointmentCount * appointmentHeight + headerHeight;\n let hiddenAppointmentCount = 0;\n if (appointments.length > visibleAppointmentCount) {\n visibleAppointmentCount -= 1; // \"x more\" covers one line\n hiddenAppointmentCount = appointments.length - visibleAppointmentCount;\n }\n\n const hovered = useHover(divRef);\n\n const [initialDimensions, setInitialDimensions] = useState();\n useLayoutEffect(() => {\n if (!divRef.current) return;\n const newInitialDimensions = {\n width: divRef.current.clientWidth - 8, // subtract padding\n height: divRef.current.clientHeight - 8, // subtract padding\n };\n if (isEqual(initialDimensions, newInitialDimensions)) return;\n\n setInitialDimensions(newInitialDimensions);\n }, [divRef.current, maxHeight, window.innerWidth]);\n\n const style = divRef.current\n ? appointments.length > 0 && hovered && initialDimensions\n ? {\n width: initialDimensions.width * 2.25, // 2.25 width expansion on hover, neighboring cells are partly visible\n height: Math.max(\n initialDimensions.height,\n appointments.length * appointmentHeight + headerHeight,\n ),\n }\n : initialDimensions\n : null;\n\n const bg = momentDay.isSame(moment(), \"day\")\n ? \"bg-today\"\n : notActualMonth\n ? \"bg-gray-50\"\n : \"bg-white\";\n\n return (\n {\n if (hideActions) return;\n Backbone.history.navigate(`/appointments/new?date=${day}`, {\n trigger: true,\n });\n }}\n >\n {style ? (\n <>\n \n
    \n \n {isFirst || momentDay.format(\"DD\") === \"01\"\n ? ` ${momentDay.format(\"DD. MMM\")}`\n : momentDay.format(\"DD\")}{\" \"}\n \n {!hideActions && (\n
    \n {I18n.t(\n \"js.calendars.overview.sheet_cell_line.double_click_to_add\",\n )}\n
    \n )}\n {weekNum ? (\n \n {weekNum}\n \n ) : null}\n
    \n
    \n {map(appointments, (appointment, index) => {\n let markers = map(get(appointment, \"calendar_ids\"), (calId) =>\n get(\n find(\n calendars,\n (calendar) => get(calendar, \"id\") === calId,\n ),\n \"color\",\n ),\n );\n if (appointment.unknown_calendars) {\n markers = markers.concat(\n map(appointment.unknown_calendars, \"color\"),\n );\n }\n\n return (\n = visibleAppointmentCount\n ? \"hidden group-hover:flex\"\n : \"\"\n }\n />\n );\n })}\n
    \n \n {hiddenAppointmentCount > 0 ? (\n \n {hiddenAppointmentCount}{\" \"}\n {I18n.t(\"js.calendars.overview.sheet_cell_line.more\")}\n \n ) : null}\n \n ) : null}\n \n );\n}\n\nCalendarSheetCell.propTypes = {\n day: PropTypes.string,\n appointments: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n status: PropTypes.string,\n date: PropTypes.shape({\n start: PropTypes.string,\n end: PropTypes.string,\n all_day: PropTypes.bool,\n time_zone: PropTypes.string,\n }),\n calendar_ids: PropTypes.arrayOf(PropTypes.string),\n }),\n ),\n isFirst: PropTypes.bool,\n weekNum: PropTypes.oneOfType([PropTypes.number, PropTypes.bool]),\n notActualMonth: PropTypes.bool,\n calendars: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n color: PropTypes.string,\n }),\n ),\n};\n\nexport default CalendarSheetCell;\n","import { useState, useEffect } from \"react\";\n\n// Hook to set ref of a DOM element and return true if is hovered\n// @example\n// function HoveredDiv() {\n// const divRef = useRef();\n// const isHovered = useHover(divRef);\n// return
    {isHovered ? \"Hovered\" : \"Not hovered\"}
    ;\n// };\nexport default function useHover(ref) {\n const [hovered, setHovered] = useState(false);\n useEffect(() => {\n if (!ref.current) return;\n\n function handleHover(e) {\n setHovered(e.type === \"mouseenter\");\n }\n\n ref.current.addEventListener(\"mouseenter\", handleHover);\n ref.current.addEventListener(\"mouseleave\", handleHover);\n return () => {\n ref.current?.removeEventListener(\"mouseenter\", handleHover);\n ref.current?.removeEventListener(\"mouseleave\", handleHover);\n };\n }, [ref.current]);\n\n return hovered;\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { map, size, get, range, at, keys, find, concat, drop } from \"lodash\";\nimport moment from \"moment\";\nimport CalendarSheetCell from \"./calendarSheet/CalendarSheetCell\";\nimport FullSizeContent from \"../shared/FullSizeContent\";\nimport useFullWidthLayout from \"hooks/useFullWidthLayout\";\n\nfunction HeaderCell({ day }) {\n return
    {day}
    ;\n}\n\nHeaderCell.propTypes = {\n day: PropTypes.string,\n};\n\nfunction CalendarSheet({ appointmentsByDate, calendars, hideActions }) {\n useFullWidthLayout();\n\n const days = moment.weekdays();\n const weekCount = Math.ceil(size(appointmentsByDate) / 7);\n const dates = keys(appointmentsByDate);\n\n const startOfMonth = find(dates, (date) => !!date.match(/-01$/));\n const endOfMonth = moment(startOfMonth).endOf(\"month\").format(\"YYYY-MM-DD\");\n\n const rowStyle = {\n gridTemplateRows: `repeat(${weekCount}, 1fr)`,\n };\n\n return (\n \n {({ height }) => {\n const headerCellHeight = 24; // h-5 + gap-1 = 24px\n const maxCellHeight = (height - headerCellHeight) / weekCount;\n\n return (\n <>\n
    \n {map(concat(drop(days), days[0]), (day) => (\n \n ))}\n
    \n
    \n {map(range(0, weekCount), (i) => {\n const days = at(dates, range(7 * i, 7 * (i + 1)));\n const weekNum = moment(days[0], \"YYYY-MM-DD\").week();\n\n return map(days, (day, j) => (\n endOfMonth}\n calendars={calendars}\n className={\n \"border-r border-b \" +\n (i === 0 ? \"border-t \" : \"\") +\n (j === 0 ? \"border-l \" : \"\") +\n (i === 0\n ? j === 0\n ? \"rounded-tl \"\n : j === 6\n ? \"rounded-tr\"\n : \"\"\n : i === weekCount - 1\n ? j === 0\n ? \"rounded-bl\"\n : j === 6\n ? \"rounded-br\"\n : \"\"\n : \"\")\n }\n maxHeight={maxCellHeight}\n columnNumber={j}\n lastRow={i === weekCount - 1}\n hideActions={hideActions}\n />\n ));\n })}\n
    \n \n );\n }}\n
    \n );\n}\n\nCalendarSheet.propTypes = {\n appointmentsByDate: PropTypes.shape({\n [PropTypes.any]: CalendarSheetCell.propTypes.appointments,\n }),\n calendars: CalendarSheetCell.propTypes.calendars,\n};\n\nexport default CalendarSheet;\n","import { useMutation, useQuery } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\nimport { Appointment, Calendar } from \"../../@types/appointments\";\nimport { stringify } from \"query-string\";\n\nexport async function createAppointmentContact({ appointmentId, ...body }) {\n return fetchApi(`/appointments/${appointmentId}/contact`, {\n method: \"POST\",\n body,\n });\n}\n\nexport function useCreateAppointmentContact(options) {\n return useMutation(createAppointmentContact, options);\n}\n\ntype UseAppointmentArgs = {\n date: string;\n view: \"sheet\" | \"list\" | string;\n participating: boolean;\n options?: object;\n};\nexport function useAppointments({\n date,\n view,\n participating,\n options = { keepPreviousData: true },\n}: UseAppointmentArgs) {\n const isoDate = date.split(\"T\")[0];\n const params = {\n date: isoDate,\n view,\n type: \"month\",\n };\n\n return useQuery(\n `/appointments${participating ? \"/participating\" : \"\"}?${stringify(\n params,\n )}`,\n options,\n );\n}\n\nfunction useTranslation(\n targetLanguage: string | undefined,\n contentType: string,\n contentId: string | undefined,\n) {\n return useQuery(\n `/translations/${targetLanguage}/${contentType}/${contentId}`,\n {\n enabled: !!(targetLanguage && contentId),\n refetchOnWindowFocus: false,\n },\n );\n}\n\nexport function useAppointment(\n id?: string,\n translateTo?: string,\n) {\n const url = `/appointments/${id}`;\n\n const { data, ...rest } = useQuery(url, {\n enabled: !!id,\n refetchOnWindowFocus: false,\n });\n\n const { data: translated } = useTranslation(translateTo, \"appointment\", id);\n\n return {\n data: data && translated ? { ...data, ...translated } : data,\n ...rest,\n };\n}\n\nexport function useCalendars(groupSlug: string = \"\") {\n return useQuery(\n `${groupSlug ? `/groups/${groupSlug}` : \"\"}/calendars`,\n {\n refetchOnWindowFocus: false,\n },\n );\n}\n\nexport function createAppointment(body) {\n return fetchApi(`/appointments`, {\n method: \"POST\",\n body,\n });\n}\nexport function useCreateAppointment(options) {\n return useMutation(createAppointment, options);\n}\n\nexport function updateAppointment({ appointmentId, ...body }) {\n return fetchApi(`/appointments/${appointmentId}`, {\n method: \"PUT\",\n body,\n });\n}\nexport function useUpdateAppointment(options) {\n return useMutation(updateAppointment, options);\n}\n","import React from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowsRepeat, faClock } from \"@fortawesome/pro-regular-svg-icons\";\nimport { isSameDay } from \"date-fns\";\n\nimport {\n AppointmentDate as AppointmentDateType,\n Appointment,\n} from \"../../../@types/appointments\";\nimport formatDate from \"helpers/formatDate\";\nimport { TZDate } from \"@date-fns/tz\";\n\ntype AppointmentDateArgs = {\n date: AppointmentDateType;\n isRecurring?: boolean;\n recurrence_pattern?: Appointment[\"recurrence_pattern\"];\n next_occurrence_url?: string;\n next_occurrence_date?: string;\n};\n\nexport function useAppointmentDate(date: AppointmentDateType) {\n const appointmentStart = new Date(date.start);\n const appointmentEnd = date.end ? new Date(date.end) : null;\n const formattedStart = formatDate(\n appointmentStart,\n date.all_day ? \"PPPP\" : I18n.t(\"js.time.formats.date_fns.long_datetime\"),\n );\n\n const formattedEnd = appointmentEnd\n ? isSameDay(appointmentStart, appointmentEnd)\n ? formatDate(appointmentEnd, \"HH:mm\")\n : formatDate(\n appointmentEnd,\n date.all_day\n ? \"PPPP\"\n : I18n.t(\"js.time.formats.date_fns.long_datetime\"),\n )\n : null;\n\n return { appointmentStart, appointmentEnd, formattedStart, formattedEnd };\n}\n\nexport default function AppointmentDate({\n date,\n isRecurring = false,\n recurrence_pattern,\n next_occurrence_url,\n next_occurrence_date,\n}: AppointmentDateArgs) {\n const { appointmentStart, appointmentEnd, formattedStart, formattedEnd } =\n useAppointmentDate(date);\n\n function FormattedTimeZone() {\n return (\n
    \n {`${date.time_zone\n ?.replace(/\\//g, \", \")\n .replace(/_/g, \" \")} (${formatDate(\n appointmentStart,\n \"z\",\n )} UTC${formatDate(appointmentStart, \"xxxxx\")})`}\n
    \n );\n }\n\n return (\n <>\n {isRecurring && (\n
    \n \n
    \n
    \n {I18n.t(\"js.calendars.recurring_appointment.starts_at\") +\n \" \" +\n formatDate(appointmentStart, \"PPPP\")}\n
    \n
    \n {recurrence_pattern?.recurrence_end_time\n ? I18n.t(\"js.calendars.recurring_appointment.ends_at\") +\n \" \" +\n formatDate(\n new TZDate(\n recurrence_pattern.recurrence_end_time,\n date.time_zone,\n ),\n \"PPPP\",\n )\n : I18n.t(\"js.calendars.recurring_appointment.no_end\")}\n
    \n
    \n {I18n.t(\"js.calendars.recurring_appointment.frequency\") +\n \" \" +\n (recurrence_pattern?.recurrence_interval === 1\n ? I18n.t(\n `js.calendars.appointment.recurrence-pattern.frequency.${recurrence_pattern.recurrence_frequency}`,\n )\n : I18n.t(\n \"js.calendars.appointment.recurrence-pattern.custom.frequency.label\",\n {\n interval: recurrence_pattern?.recurrence_interval,\n frequency: I18n.t(\n `js.calendars.appointment.recurrence-pattern.custom_frequency.${recurrence_pattern?.recurrence_frequency}`,\n ),\n },\n ))}\n
    \n
    \n
    \n )}\n
    \n \n
    \n {isRecurring &&\n I18n.t(\"js.calendars.recurring_appointment.first_occurrence\")}\n {appointmentEnd && isSameDay(appointmentStart, appointmentEnd) ? (\n <>\n \n {!date.all_day && }\n \n ) : (\n
    \n {`${I18n.t(\"js.calendars.date_range.start\")}: `}\n \n {formattedEnd && (\n
    \n {`${I18n.t(\"js.calendars.date_range.end\")}: `}\n \n
    \n )}\n {!date.all_day && }\n {isRecurring && (\n

    \n \n {I18n.t(\n \"js.calendars.recurring_appointment.next_occurrence\",\n )}{\" \"}\n \n {next_occurrence_url && next_occurrence_date ? (\n \n {formatDate(\n new Date(next_occurrence_date),\n I18n.t(\"js.time.formats.date_fns.long_datetime\"),\n )}\n \n ) : (\n I18n.t(\n \"js.calendars.recurring_appointment.no_next_occurrence\",\n )\n )}\n

    \n )}\n
    \n )}\n
    \n
    \n \n );\n}\n","import { truncate } from \"lodash\";\nimport React, { useEffect, useState } from \"react\";\n\nexport default function AppointmentDescription({\n description,\n isRendered,\n translated,\n}: {\n description: string;\n isRendered: boolean;\n translated?: boolean;\n}) {\n const [truncateDescription, setTruncateDescription] = useState(true);\n\n const handleReadMore = (e) => {\n e.preventDefault();\n setTruncateDescription(false);\n };\n\n function truncateText(text: string) {\n return truncate(text, {\n length: 500,\n omission: `...${I18n.t(\n \"activitystreams.more\",\n )}`,\n });\n }\n\n useEffect(() => {\n if (truncateDescription) {\n const link = document.getElementById(\"read-more-link\");\n if (link) {\n link.addEventListener(\"click\", handleReadMore as EventListener);\n }\n return () => {\n if (link) {\n link.removeEventListener(\"click\", handleReadMore as EventListener);\n }\n };\n }\n }, [truncateDescription, description]);\n\n const maybeTruncatedDescription = truncateDescription\n ? truncateText(description)\n : description;\n\n return (\n <>\n {isRendered ? (\n \n ) : (\n

    \n {maybeTruncatedDescription}\n

    \n )}\n {translated && (\n (translated)\n )}\n \n );\n}\n","import { isEmpty, pick, some, truncate, values } from \"lodash\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faLocationDot } from \"@fortawesome/pro-regular-svg-icons\";\nimport React from \"react\";\nimport { Location } from \"../../../@types/appointments\";\n\nexport default function AppointmentLocation(\n location: Location & { showMap?: boolean },\n) {\n const locationIsExtended = some(\n [\"address1\", \"address2\", \"zip\", \"city\", \"link\", \"country\"],\n (key) => !isEmpty(location[key]),\n );\n\n function getLocationLinkText() {\n switch (location.meeting_link_type) {\n case \"ms_teams\":\n return \"Microsoft Teams Meeting\";\n case \"google_meet\":\n return \"Google Meet\";\n case \"zoom\":\n return \"Zoom Meeting\";\n default:\n return location.link && location.link?.length > 65\n ? truncate(location.link, { length: 65 })\n : location.link;\n }\n }\n\n const addressForUri = encodeURIComponent(\n values(\n pick(location, [\"address1\", \"address2\", \"zip\", \"city\", \"country\"]),\n ).join(\" \"),\n );\n\n return (\n <>\n {(!isEmpty(location.name) || locationIsExtended) && (\n
    \n \n
    \n <>\n {location.name && (\n
    {location.name}
    \n )}\n {locationIsExtended && (\n <>\n {location.address1 &&
    {location.address1}
    }\n {location.address2 &&
    {location.address2}
    }\n {(location.zip || location.city) && (\n
    {`${location.zip} ${location.city}`}
    \n )}\n {location.country &&
    {location.country}
    }\n {location.link && (\n
    \n \n {getLocationLinkText()}\n \n
    \n )}\n \n )}\n \n
    \n
    \n )}\n {location.maps_url && location.showMap && (\n
    \n \n \n \n
    \n )}\n \n );\n}\n","import React from \"react\";\nimport {\n AppointmentDate as AppointmentDateType,\n AppointmentMeeting as AppointmentMeetingType,\n} from \"../../../@types/appointments\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faComments,\n faClone,\n faDesktop,\n faPlayCircle,\n} from \"@fortawesome/pro-regular-svg-icons\";\nimport useTooltip from \"../../../hooks/useTooltip\";\nimport { useAppointmentDate } from \"components/appointments/details/AppointmentDate\";\n\ntype AppointmentMeetingArgs = {\n date: AppointmentDateType;\n meeting: AppointmentMeetingType;\n appointmentName: string;\n canStartMeeting: boolean;\n appointmentId: string;\n};\n\nexport default function AppointmentMeeting({\n date,\n meeting,\n appointmentName,\n canStartMeeting,\n appointmentId,\n}: AppointmentMeetingArgs) {\n const tooltipRef = useTooltip();\n\n const { formattedStart, formattedEnd } = useAppointmentDate(date);\n\n const dateStr = formattedEnd\n ? `${formattedStart} - ${formattedEnd}`\n : formattedStart;\n\n function copyToClipboard() {\n navigator.clipboard\n .writeText(\n `${appointmentName}\\n${dateStr}\\n\\n${I18n.t(\n \"js.calendars.appointment.meeting.dial_in_number\",\n )} ${meeting.conference_call_phone_number}\\n${I18n.t(\n \"js.calendars.appointment.meeting.access_code\",\n )} ${meeting.conference_call_access_code}\\n${I18n.t(\n \"js.calendars.appointment.meeting.join_link\",\n )} ${meeting.join_url}\\n\\n${I18n.t(\n \"js.calendars.appointment.meeting.app_url\",\n )} ${meeting.app_url}`,\n )\n .then(() => {\n toastr.success(I18n.t(\"js.calendars.appointment.meeting.copied\"));\n })\n .catch(() => {\n toastr.error(I18n.t(\"js.generic_error\"));\n });\n }\n\n return (\n
    \n
    \n
    \n \n {I18n.t(\"js.calendars.appointment.meeting.label\")}\n {meeting.room_name}\n
    \n {\n e.preventDefault();\n copyToClipboard();\n }}\n className=\"copy-to-clipboard text-xl\"\n title={I18n.t(\"js.calendars.appointment.meeting.copy\")}\n >\n \n \n
    \n
    \n
    \n

    \n \n \n {I18n.t(\"js.calendars.appointment.meeting.join\")}\n \n

    \n {canStartMeeting && (\n

    \n \n \n {I18n.t(\"js.calendars.appointment.meeting.start_link\")}\n \n

    \n )}\n
    \n
    \n

    \n {I18n.t(\"js.calendars.appointment.meeting.dial_in_number\")}\n
    \n {meeting.conference_call_phone_number}\n

    \n

    \n {I18n.t(\"js.calendars.appointment.meeting.access_code\")}\n
    \n {meeting.conference_call_access_code}\n

    \n
    \n
    \n
    \n );\n}\n","import React from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faArrowLeft as faRegularArrowLeft,\n faArrowsRepeat as faRegularArrowsRepeat,\n faPencil as faRegularPencil,\n faEnvelope as faRegularEnvelope,\n faUsers as faRegularUsers,\n faUnlock as faRegularUnlock,\n faLock as faRegularLock,\n faFileCsv as faRegularFileCsv,\n faFileExcel as faRegularFileExcel,\n faBan as faRegularBan,\n faTrash as faRegularTrash,\n} from \"@fortawesome/pro-regular-svg-icons\";\nimport {\n faCaretLeft as faSolidCaretLeft,\n faCaretRight as faSolidCaretRight,\n} from \"@fortawesome/pro-solid-svg-icons\";\nimport DropDown, { DropDownItem } from \"components/shared/DropDown\";\nimport { useMutation } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\nimport classNames from \"classnames\";\nimport { some } from \"lodash\";\nimport { useNavigate } from \"helpers/tixxt-router\";\n\ntype ToolbarArgs = {\n id: string;\n can: { [key: string]: boolean };\n participationLocked?: boolean;\n participantsEmpty?: boolean;\n isRecurring?: boolean;\n name: string;\n type: string;\n canceled?: boolean;\n refetch: () => void;\n isModifiedRecurring?: boolean;\n previousOccurrenceUrl?: string;\n recurringAppointmentUrl?: string;\n nextOccurrenceUrl?: string;\n cancelProhibitedReason?: string;\n};\n\nexport default function Toolbar({\n id,\n can,\n participationLocked,\n participantsEmpty,\n cancelProhibitedReason,\n isRecurring,\n name,\n isModifiedRecurring,\n previousOccurrenceUrl,\n recurringAppointmentUrl,\n nextOccurrenceUrl,\n refetch,\n type,\n canceled,\n}: ToolbarArgs) {\n const navigate = useNavigate();\n const { mutate: toggleLockParticipation } = useMutation(\n () =>\n fetchApi(`/appointments/${id}`, {\n method: \"PATCH\",\n body: {\n appointment: {\n attendee_configuration: {\n participation_locked: !participationLocked,\n },\n },\n },\n }),\n {\n onSuccess: () => {\n toastr.success(\n I18n.t(\n `js.calendars.appointment.attendee_configuration.request.${\n participationLocked ? \"unlocked\" : \"locked\"\n }.success`,\n ),\n );\n refetch();\n },\n onError: () => {\n toastr.error(\n I18n.t(\n \"js.calendars.appointment.attendee_configuration.request.failure\",\n ),\n );\n },\n },\n );\n\n const { mutate: cancel } = useMutation(() =>\n fetchApi(`/appointments/${id}/cancel`, {\n method: \"POST\",\n }),\n );\n\n const { mutate: destroy } = useMutation(\n () =>\n fetchApi(`/appointments/${id}`, {\n method: \"DELETE\",\n }),\n {\n onSuccess: () => {\n toastr.success(I18n.t(\"js.calendars.appointment.delete_success\"));\n navigate(\"/appointments\");\n },\n },\n );\n\n const showContextMenu = some(\n [\n \"update\",\n \"contact\",\n \"update_participants\",\n \"download_attendees\",\n \"update_participants\",\n \"destroy\",\n ],\n (key) => can[key],\n );\n\n return (\n
    \n {\n e.preventDefault();\n navigate(\"/appointments\");\n }}\n >\n \n \n {isModifiedRecurring && (\n
    \n {previousOccurrenceUrl && (\n \n \n \n )}\n {recurringAppointmentUrl && (\n \n \n {I18n.t(\n \"js.calendars.recurring_appointment.show_recurring_button\",\n )}\n \n )}\n {nextOccurrenceUrl && (\n \n \n \n )}\n
    \n )}\n
    \n \n {I18n.t(\"js.calendars.appointment.ical_download_button\")}\n \n {showContextMenu && }\n \n {can.update && (\n <>\n \n
  • \n \n )}\n {can.contact && (\n <>\n \n
  • \n \n )}\n {can.update_participants && (\n \n )}\n {can.update && type !== \"recurring_appointment\" && (\n {\n e.preventDefault();\n toggleLockParticipation();\n }}\n icon={participationLocked ? faRegularUnlock : faRegularLock}\n iconClassName=\"text-muted\"\n text={\n participationLocked\n ? I18n.t(\n \"js.calendars.appointment.attendee_configuration.participation_unlock\",\n )\n : I18n.t(\n \"js.calendars.appointment.attendee_configuration.participation_lock\",\n )\n }\n />\n )}\n {can.download_attendees && !participantsEmpty && (\n <>\n \n \n \n )}\n {can.update_participants && !participantsEmpty && (\n
  • \n )}\n {can.destroy && (\n <>\n {\n e.preventDefault();\n !canceled &&\n window.bridge?.confirm(\n I18n.t(\n isRecurring\n ? \"calendars.recurring_appointment.confirm_cancel\"\n : \"calendars.appointment.confirm_cancel\",\n { appointment_name: name },\n ),\n () => cancel(),\n );\n }}\n icon={faRegularBan}\n linkStyle={classNames({\n \"pointer-events-none disabled\": canceled,\n })}\n iconClassName=\"text-muted\"\n text={I18n.t(\"js.calendars.appointment.cancel\")}\n title={cancelProhibitedReason}\n />\n
  • \n \n )}\n {can.destroy && (\n {\n e.preventDefault();\n window.bridge?.confirm(\n I18n.t(\n isRecurring\n ? \"calendars.recurring_appointment.confirm_destroy\"\n : \"calendars.appointment.confirm_destroy\",\n { appointment_name: name },\n ),\n () => destroy(),\n );\n }}\n icon={faRegularTrash}\n linkStyle=\"!text-danger\"\n iconClassName=\"text-danger\"\n text={I18n.t(\"js.calendars.appointment.delete\")}\n />\n )}\n \n
  • \n
    \n );\n}\n","import moment, { Moment } from \"moment\";\nimport { filter, flatten, isEmpty, reduce } from \"lodash\";\nimport { Appointment, AppointmentDate } from \"../../@types/appointments\";\n\nconst DATE_FORMAT = \"YYYY-MM-DD\";\n\nexport function weeksInRange(rangeStart, rangeEnd) {\n const currentDate = moment(rangeStart);\n const weeks: string[][] = [];\n const days: string[] = [];\n\n while (currentDate <= rangeEnd) {\n days.push(currentDate.format(DATE_FORMAT));\n currentDate.add(1, \"days\");\n }\n\n let week: string[] = [];\n let i = moment(days[0]).weekday();\n\n for (const day of days) {\n week.push(day);\n\n if ((i + 1) % 7 === 0) {\n weeks.push(week);\n week = [];\n }\n\n i++;\n }\n\n if (week.length > 0) {\n weeks.push(week);\n }\n return weeks;\n}\n\nexport function datesInRange(date: string): string[] {\n const rangeStart = moment(date).startOf(\"month\").startOf(\"isoWeek\");\n const rangeEnd = moment(date).endOf(\"month\").endOf(\"isoWeek\");\n\n return flatten(weeksInRange(rangeStart, rangeEnd));\n}\n\nexport function appointmentsInDateRange(\n appointments: Appointment[],\n date: string,\n) {\n return filter(appointments, (appointment) => {\n let isInRange = false;\n\n if (appointment.date.end) {\n isInRange = moment(date).isBetween(\n moment(appointment.date.start).startOf(\"day\"),\n moment(appointment.date.end).endOf(\"day\"),\n null,\n \"[]\",\n );\n } else {\n isInRange = moment(date).isSame(moment(appointment.date.start), \"day\");\n }\n\n return isInRange;\n });\n}\n\nexport function collectAppointmentsByDate(\n appointments: Appointment[] | undefined,\n date: string,\n) {\n if (!appointments) return {};\n\n const range = datesInRange(date);\n\n return reduce(\n range,\n (result, date) => {\n result[date] = appointmentsInDateRange(appointments, date);\n return result;\n },\n {},\n );\n}\n\nexport function weeksInMonth(date: string) {\n const rangeStart = moment(date).startOf(\"month\");\n const rangeEnd = moment(date).endOf(\"month\");\n\n return weeksInRange(rangeStart, rangeEnd);\n}\n\nconst msToDayFactor = 1000 * 60 * 60 * 24; // ms to second to minute to day\n\nexport function dateStamp(date: Moment) {\n const offsetMinutes = date.utcOffset() || date.zone() * -1;\n\n if (date) {\n return Math.floor(\n date.valueOf() / msToDayFactor + offsetMinutes / (60 * 24),\n );\n } else {\n return 0;\n }\n}\n\nexport function dateStampsRange(appointmentDate: AppointmentDate) {\n const start = dateStamp(moment(appointmentDate.start));\n let end = start;\n\n if (!isEmpty(appointmentDate.end)) {\n end = dateStamp(moment(appointmentDate.end));\n }\n\n return [start, end];\n}\n\nexport function spansDate(date: Moment, appointmentDate: AppointmentDate) {\n const stamp = dateStamp(date);\n const range = dateStampsRange(appointmentDate);\n\n return range[0] < stamp && range[1] > stamp;\n}\n\nexport function spansMultipleDays(appointmentDate: AppointmentDate) {\n const range = dateStampsRange(appointmentDate);\n return range[0] != range[1];\n}\n","import {\n useQuery,\n UseQueryResult,\n useMutation,\n UseMutationOptions,\n} from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\nimport { Blog } from \"components/blogs/types\";\n\nexport function useBlog(id: string | undefined): UseQueryResult {\n return useQuery(`/blogs/${id}`, { enabled: !!id });\n}\n\nexport function useSaveBlog(\n blog: Blog,\n options:\n | Omit<\n UseMutationOptions,\n \"mutationFn\"\n >\n | undefined,\n) {\n return useMutation(\n (body: { blog: Blog }) =>\n fetchApi(`/blogs/${blog.id}`, { method: \"PUT\", body }),\n options,\n );\n}\n","import { useMutation, UseMutationOptions, useQuery } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\nimport queryClient from \"helpers/queryClient\";\nimport { SimpleMembership } from \"../../@types\";\nimport { ColorObject } from \"components/administration/designManager/types\";\nimport { stringify } from \"query-string\";\nimport { Article } from \"components/articles/types\";\n\ntype ChannelPayload = {\n id: string;\n slug: string;\n title: string;\n description: string;\n image: {\n id: string;\n name: string;\n content_type: string;\n image_url: string;\n small_thumb: string;\n large_thumb: string;\n size: number;\n extension: string;\n type: string;\n } | null;\n status: string;\n i: {\n can: { [rule: string]: boolean | undefined };\n subscribed: boolean;\n favorited: boolean;\n };\n blog_id: string;\n design: ChannelDesign | null;\n};\n\nexport type ChannelDesign = {\n colors: {\n [name: string]: ColorObject | undefined;\n };\n derivedColors?: {\n [name: string]: ColorObject | undefined;\n } | null;\n};\n\nexport function useChannels() {\n return useQuery<{\n start_page: ChannelPayload[];\n subscribed: ChannelPayload[];\n recent: ChannelPayload[];\n popular: ChannelPayload[];\n }>(\"/channels\", {\n refetchOnWindowFocus: false,\n initialData: { start_page: [], subscribed: [], recent: [], popular: [] },\n });\n}\n\nexport function useChannel(slug: string | undefined) {\n return useQuery(`/channels/${slug}`, {\n enabled: !!slug && slug !== \"new\",\n refetchOnWindowFocus: false,\n });\n}\n\nexport function updateChannelFavorited(slug, favorited) {\n const channel = queryClient.getQueryData(`/channels/${slug}`);\n if (!channel) return;\n\n queryClient.setQueryData(`/channels/${slug}`, {\n ...channel,\n i: { ...channel.i, favorited },\n });\n}\n\nexport function updateChannelSubscription(slug: string, subscribed: boolean) {\n const channel = queryClient.getQueryData(`/channels/${slug}`);\n if (!channel) return;\n\n queryClient.setQueryData(`/channels/${slug}`, {\n ...channel,\n i: { ...channel.i, subscribed },\n });\n}\n\ntype WidgetPayload = {\n type: string;\n name: string;\n title: string;\n title_background_override: null | string;\n label: null | \"current\" | \"spotlight\" | \"important\";\n hide_title?: boolean;\n};\n\nexport type LoadedWidgetPayload = WidgetPayload & {\n id: string;\n author: SimpleMembership;\n created_at: string;\n images?: { id: string }[];\n};\n\nexport const useWidgets = ({ channelSlug }: { channelSlug?: string }) =>\n useQuery(`/channels/${channelSlug}/widgets`, {\n refetchOnWindowFocus: false,\n enabled: !!channelSlug,\n });\n\nexport const useWidget = ({\n channelSlug,\n widgetId,\n}: {\n channelSlug?: string;\n widgetId?: string;\n}) =>\n useQuery(\n `/channels/${channelSlug}/widgets/${widgetId}`,\n {\n refetchOnWindowFocus: false,\n enabled: !!widgetId && !!channelSlug,\n },\n );\n\nexport const useDeleteWidget = (\n channelSlug: string,\n options?: UseMutationOptions,\n) =>\n useMutation((widgetId: string) => {\n return fetchApi(`/channels/${channelSlug}/widgets/${widgetId}/`, {\n method: \"DELETE\",\n });\n }, options);\n\nexport function persistWidget(\n channelSlug: string,\n widgetId: string | undefined,\n body: WidgetPayload,\n) {\n return fetchApi(\n `/channels/${channelSlug}/widgets${widgetId ? `/${widgetId}` : \"\"}`,\n { method: widgetId ? \"PUT\" : \"POST\", body },\n );\n}\nexport const usePersistWidget = (\n {\n channelSlug,\n widgetId,\n }: {\n channelSlug: string;\n widgetId?: string;\n },\n options?: Omit<\n UseMutationOptions,\n \"mutationFn\"\n >,\n) =>\n useMutation(\n (body: WidgetPayload) => persistWidget(channelSlug, widgetId, body),\n options,\n );\n\ntype ArticlesPayload = {\n total: number;\n articles: Article[];\n};\n\nexport function useArticles(\n channelSlug?: string,\n currentPage?: number,\n extraQuery?: { omitDraft?: boolean },\n) {\n return useQuery(\n `/channels/${channelSlug}/blog/articles?${stringify({\n page: currentPage,\n ...extraQuery,\n })}`,\n {\n enabled: !!channelSlug,\n },\n );\n}\n","import React from \"react\";\nimport { useParams, useRoutes } from \"helpers/tixxt-router\";\nimport { ColorObject } from \"components/administration/designManager/types\";\nimport { useChannel } from \"components/channels/api\";\nimport { createPortal } from \"react-dom\";\nimport { map } from \"lodash\";\nimport { colorObjToCSSProperties } from \"components/administration/designManager/themeToCss\";\n\nconst routes = [\n { path: \"/channels/:channelSlug\", element: },\n { path: \"/channels/:channelSlug/*\", element: },\n { path: \"/channels/:channelSlug/design/edit\", element: },\n { path: \"*\", element: },\n];\n\nexport default function ApplyOverrideChannelTheme() {\n const element = useRoutes(routes);\n\n return element;\n}\n\nfunction ChannelOverride() {\n const { channelSlug } = useParams();\n const { data: channel } = useChannel(channelSlug);\n\n if (channel?.design) {\n const css = channelDesignToCss(channel.design);\n\n return createPortal(, document.head);\n }\n\n return null;\n}\n\nfunction NoChannel() {\n return null;\n}\n\nexport function channelDesignToCss(theme: {\n derivedColors?: {\n [name: string]: ColorObject | undefined;\n } | null;\n}) {\n const { derivedColors } = theme;\n const cssContent: string[] = [];\n\n cssContent.push(\":root {\");\n\n for (const variable in derivedColors) {\n if (variable.indexOf(\"channel-\") != 0) continue;\n\n const colorObj = derivedColors[variable];\n\n cssContent.push(\n map(\n colorObjToCSSProperties(variable, colorObj),\n (value, variable) => `${variable}: ${value};`,\n ).join(\" \"),\n );\n }\n\n cssContent.push(`}`);\n\n return cssContent.join(\"\\n\");\n}\n","import { LayoutType } from \"components/channels/types\";\n\n// class helpers\n\nexport function getWidgetContentHeight(w: number) {\n return (\n {\n 1: \"h-[21rem]\",\n 2: \"h-[42rem]\",\n 3: \"h-[63rem]\",\n }[w] + \" sm:h-[21rem]\"\n );\n}\n\nexport function getWidgetContentColumns(w: number) {\n return {\n 1: \"sm:grid-cols-1\",\n 2: \"sm:grid-cols-2\",\n 3: \"sm:grid-cols-3\",\n }[w];\n}\n\nexport function getWidgetWidthByType(type: LayoutType) {\n return {\n full: [\"w-full\"],\n \"half-1-2\": [\"w-1/3\", \"w-2/3\"],\n \"half-2-1\": [\"w-2/3\", \"w-1/3\"],\n third: [\"w-1/3\", \"w-1/3\", \"w-1/3\"],\n }[type];\n}\n\nexport function getWidgetColspan(w: number) {\n return {\n 1: \"sm:col-span-1\",\n 2: \"sm:col-span-2\",\n 3: \"sm:col-span-3\",\n }[w];\n}\n\nexport function getWidgetContainerResponsiveHeight(w: number) {\n return (\n {\n 1: \"max-sm:h-[24rem]\",\n 2: \"max-sm:h-[48rem]\",\n 3: \"max-sm:h-[72rem]\",\n }[w] + \" sm:h-[24rem]\"\n );\n}\n\n// type helpers\n\nexport function getWidgetColspanType(type: LayoutType) {\n return {\n full: [\"colspan3\"],\n \"half-1-2\": [\"col1\", \"colspan2\"],\n \"half-2-1\": [\"colspan2\", \"col1\"],\n third: [\"col1\", \"col2\", \"col3\"],\n }[type];\n}\n\nexport function getWidgetColumnIndex(type: LayoutType, colspan: string) {\n return {\n full: { colspan3: 0 },\n \"half-1-2\": { col1: 0, colspan2: 1 },\n \"half-2-1\": { colspan2: 0, col1: 1 },\n third: { col1: 0, col2: 1, col3: 2 },\n }[type][colspan];\n}\n","import { useMutation, useQuery } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\nimport { LayoutRow, LayoutType } from \"components/channels/types\";\n\ntype LayoutRowParams = {\n id: string;\n type: LayoutType;\n widget_ids: (string | null)[];\n};\n\ntype LayoutResponse = {\n rows: LayoutRow[];\n};\n\nexport function useChannelLayout(channelSlug: string | undefined) {\n return useQuery(`/channels/${channelSlug}/layout`, {\n enabled: !!channelSlug,\n });\n}\n\nexport function useUpdateChannelLayout(channelSlug: string) {\n return useMutation((newItems) =>\n fetchApi(`/channels/${channelSlug}/layout`, {\n method: \"PUT\",\n body: { rows: newItems },\n }),\n );\n}\n","import { chunk } from \"lodash\";\n\nexport function smartChunk(\n whatever: T[],\n limitPerCol: number,\n numberCols: number,\n): T[][] {\n const total = whatever.length;\n\n // Try all possible variants, depending on numberCols\n // i = number of columns to chunk\n for (let i = 0; i < numberCols; i++) {\n if (total <= numberCols - i + limitPerCol * i) {\n const out: T[][] = [];\n const standaloneCount = numberCols - i;\n // `Chunk ${total} into ${standaloneCount} standalone and ${i} chunked `,\n for (let j = 0; j < standaloneCount; j++) {\n // Standalone\n if (whatever[j]) out.push([whatever[j]]);\n }\n // Chunk remaining and concat\n return out.concat(\n chunk(whatever.slice(standaloneCount, total), limitPerCol),\n );\n }\n }\n\n return chunk(whatever, limitPerCol);\n}\n","import React, { useContext } from \"react\";\nimport { SimpleMembership } from \"../../../@types\";\nimport { WidgetContext } from \"components/channels/widgets/WidgetContainer\";\nimport { times } from \"lodash\";\nimport classNames from \"classnames\";\nimport { ProfileImage } from \"components/shared/SimpleMembershipShow\";\nimport { smartChunk } from \"components/channels/widgets/smartChunk\";\nimport { getWidgetContentColumns } from \"components/channels/helpers\";\n\nconst N_PER_COL = 3;\n\nexport default function PeopleWidget({\n memberships,\n profile_fields,\n}: {\n memberships?: (SimpleMembership & { profile: { [key: string]: string } })[];\n profile_fields?: string[];\n}) {\n const { w } = useContext(WidgetContext);\n\n const byColumn = memberships ? smartChunk(memberships, N_PER_COL, w) : [];\n\n return (\n \n {times(w, (n) => (\n \n {byColumn[n]?.map((membership) =>\n byColumn[n].length == 1 ? (\n \n ) : (\n \n ),\n )}\n \n ))}\n \n );\n}\n\ntype PersonProps = {\n membership: SimpleMembership & { profile: { [key: string]: string } };\n profile_fields?: string[];\n};\n\nfunction StandalonePerson({ membership, profile_fields }: PersonProps) {\n return (\n \n \n \n {membership.name}\n \n {profile_fields?.map((f) => (\n \n {membership.profile[f]}\n \n ))}\n \n );\n}\n\nfunction RowPerson({ membership, profile_fields }: PersonProps) {\n return (\n
    \n
    \n \n
    \n
    \n \n {membership.name}\n \n {profile_fields?.map((f) => (\n \n {membership.profile[f]}\n \n ))}\n
    \n
    \n );\n}\n","import React, { useContext } from \"react\";\nimport { WidgetContext } from \"components/channels/widgets/WidgetContainer\";\nimport { times } from \"lodash\";\nimport classNames from \"classnames\";\nimport { smartChunk } from \"components/channels/widgets/smartChunk\";\nimport Loading from \"components/shared/Loading\";\nimport { getWidgetContentColumns } from \"components/channels/helpers\";\nimport { useParams } from \"helpers/tixxt-router\";\n\nconst N_PER_COL = 4;\n\nexport default function ImagesWidget({\n id,\n images,\n}: {\n id?: string;\n images?: { id: string }[];\n}) {\n const { w } = useContext(WidgetContext);\n const params = useParams();\n\n const byColumn = images ? smartChunk(images, N_PER_COL, w) : [];\n const hiddenCount = images ? images.length - w * N_PER_COL : 0;\n\n return (\n \n {times(w, (n) => {\n const layout =\n byColumn[n]?.length > 2 ? 4 : byColumn[n]?.length == 2 ? 2 : 1;\n\n return (\n \n {byColumn[n]?.map((image, m) => {\n const hasHidden = hiddenCount > 0 && n == w - 1 && m == 3;\n return (\n \n {image.id ? (\n \n \n \n ) : (\n \n )}\n {hasHidden && (\n \n +\n {hiddenCount}\n \n )}\n \n );\n })}\n \n );\n })}\n \n );\n}\n","import React from \"react\";\n\nexport default function BannerWidget({\n image,\n title,\n banner_background_color,\n hide_title,\n banner_title_color,\n}: {\n id?: string;\n image?: { id: string; state: string };\n banner_background_color: string;\n banner_title_color: string;\n title: string;\n hide_title?: boolean;\n}) {\n return (\n \n {title && !hide_title && (\n \n {title}\n \n )}\n \n );\n}\n","import React from \"react\";\n\nexport default function TextWidget({ html_content }: { html_content: string }) {\n return (\n \n );\n}\n","import React, { useContext } from \"react\";\n\ntype RssItem = {\n title: string;\n url: string;\n};\n\ntype RssData = {\n headline: string;\n items: RssItem[];\n};\n\ntype Props = {\n id?: string;\n preview_data?: RssData;\n};\n\nimport { WidgetContext } from \"components/channels/widgets/WidgetContainer\";\nimport { chunk } from \"lodash\";\nimport classNames from \"classnames\";\nimport { useParams } from \"helpers/tixxt-router\";\nimport { useQuery } from \"react-query\";\n\nexport default function ChannelRssWidget({ id, preview_data }: Props) {\n const params = useParams();\n const { data } = useQuery<{ rss_data: RssData }>(\n `/channels/${params.channelSlug}/widgets/${id}`,\n {\n enabled: !!id,\n },\n );\n const rss_data = data?.rss_data || preview_data;\n const { w } = useContext(WidgetContext);\n const maxItems: number = w * 4;\n const limitedItems: RssItem[] = rss_data?.items.slice(0, maxItems) || [];\n const itemsPerColumn: number = Math.ceil(limitedItems.length / w);\n const itemsByColumn: RssItem[][] = chunk(limitedItems, itemsPerColumn);\n\n return (\n <>\n {rss_data && (\n
    \n \n {itemsByColumn.map((columnItems: RssItem[], n: number) => (\n
      \n {columnItems.map((item: RssItem, index: number) => (\n
    • \n \n {item.title}\n \n
    • \n ))}\n
    \n ))}\n
    \n \n )}\n \n );\n}\n","import React, { useState } from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faCircleChevronLeft as faSolidCircleChevronLeft,\n faCircleChevronRight as faSolidCircleChevronRight,\n} from \"@fortawesome/pro-solid-svg-icons\";\nimport { map } from \"lodash\";\nimport classNames from \"classnames\";\n\ntype ItemCarouselArgs = {\n children: React.ReactNode[] | React.ReactNode;\n visibleItemsCount: number;\n containerWidth: number;\n containerHeight: string;\n totalItems: number;\n navigationButtonsStyle?: React.CSSProperties;\n};\n\nexport default function ItemCarousel({\n children,\n visibleItemsCount,\n containerWidth,\n totalItems,\n containerHeight,\n navigationButtonsStyle,\n}: ItemCarouselArgs) {\n const [currentIndex, setCurrentIndex] = useState(0);\n const maxIndex = Math.max(0, Math.ceil(totalItems / visibleItemsCount) - 1);\n\n const handlePrev = () => {\n setCurrentIndex((prev) => Math.max(0, prev - 1));\n };\n\n const handleNext = () => {\n setCurrentIndex((prev) => Math.min(maxIndex, prev + 1));\n };\n\n const totalGap = 8 * visibleItemsCount; // gap-2 is 8px\n const itemPercent = 100 / visibleItemsCount;\n const gapPerItem = (8 / visibleItemsCount) * (visibleItemsCount - 1);\n const translateAmount =\n currentIndex * (containerWidth + (totalGap - 8 * (visibleItemsCount - 1)));\n\n return (\n
    \n
    \n {currentIndex > 0 && (\n \n \n \n )}\n {currentIndex < maxIndex && (\n \n \n \n )}\n\n \n \n {map(children as React.ReactNode[], (child, index) => (\n \n {child}\n
    \n ))}\n
    \n \n \n \n );\n}\n","import React from \"react\";\nimport { useEffect, useState } from \"react\";\n\nexport default function useContainerWidth(\n containerRef: React.RefObject | null,\n) {\n const [containerWidth, setContainerWidth] = useState(0);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver(() => {\n if (containerRef?.current) {\n const elementWidth =\n containerRef?.current.getBoundingClientRect().width;\n setContainerWidth(elementWidth);\n }\n });\n\n if (containerRef?.current) {\n resizeObserver.observe(containerRef?.current);\n }\n\n return () => {\n if (containerRef?.current) {\n resizeObserver.unobserve(containerRef?.current);\n }\n };\n }, []);\n\n return containerWidth;\n}\n","import React, { useContext } from \"react\";\nimport { WidgetContext } from \"components/channels/widgets/WidgetContainer\";\nimport { map } from \"lodash\";\nimport Loading from \"components/shared/Loading\";\nimport { Article } from \"components/articles/types\";\nimport formatDate from \"helpers/formatDate\";\nimport ItemCarousel from \"components/shared/ItemCarousel\";\nimport useContainerWidth from \"components/shared/hooks/useContainerWidth\";\n\nexport default function BlogWidget({\n latest_articles,\n title_background_override,\n}: {\n latest_articles: Article[];\n title_background_override: string;\n}) {\n const { w, containerRef } = useContext(WidgetContext);\n const containerWidth = useContainerWidth(containerRef);\n\n return latest_articles ? (\n \n {map(latest_articles, (article, index) => (\n \n \n
    \n \n {article.title}\n \n
    \n {article.created_at && (\n
    \n {formatDate(new Date(article.created_at), \"dd.MM.y\")}\n
    \n )}\n
    \n ))}\n \n ) : (\n \n );\n}\n","import React, { useContext } from \"react\";\nimport { Appointment } from \"../../../@types/appointments\";\nimport { WidgetContext } from \"components/channels/widgets/WidgetContainer\";\nimport AppointmentDate from \"components/appointments/details/AppointmentDate\";\nimport AppointmentLocation from \"components/appointments/details/AppointmentLocation\";\nimport AppointmentMeeting from \"components/appointments/details/AppointmentMeeting\";\nimport { isEmpty } from \"lodash\";\nimport AppointmentDescription from \"components/appointments/details/AppointmentDescription\";\n\ntype AppointmentsWidgetProps = {\n appointment?: Appointment;\n};\n\nexport default function AppointmentsWidget({\n appointment,\n}: AppointmentsWidgetProps) {\n const { w } = useContext(WidgetContext);\n if (!appointment) return null;\n\n return (\n
    \n
    \n {w > 1 ? (\n \n ) : null}\n
    \n

    \n {appointment.name}\n

    \n \n \n {appointment.meeting && appointment.meeting.join_url && (\n \n )}\n
    \n
    \n \n
    \n );\n}\n","import React, { useContext } from \"react\";\nimport { Article } from \"components/articles/types\";\nimport ItemCarousel from \"components/shared/ItemCarousel\";\nimport { WidgetContext } from \"components/channels/widgets/WidgetContainer\";\nimport { map } from \"lodash\";\nimport { useNavigate } from \"helpers/tixxt-router\";\nimport useContainerWidth from \"components/shared/hooks/useContainerWidth\";\n\nexport default function SpotlightWidget({\n articles,\n hide_title,\n label,\n title_background_override,\n}: {\n articles: Article[];\n label?: string | null;\n hide_title: boolean;\n title_background_override: string;\n}) {\n const navigate = useNavigate();\n const { containerRef } = useContext(WidgetContext);\n const containerWidth = useContainerWidth(containerRef);\n\n return (\n articles && (\n \n {map(articles, (article) => (\n \n navigate(`/blogs/${article.blog_id}/articles/${article.id}`)\n }\n style={{\n backgroundImage: `url(\"${\n article.image_path\n ? article.image_path\n : Assets[\"blogs/article_placeholder.webp\"]\n }\")`,\n }}\n >\n
    \n {label && (\n
    \n \n {I18n.t(`js.channels.widgets.labels.${label}`)}\n \n
    \n )}\n \n {article.title}\n \n
    \n \n ))}\n \n )\n );\n}\n","import classNames from \"classnames\";\nimport React, { useContext } from \"react\";\nimport { WidgetContext } from \"components/channels/widgets/WidgetContainer\";\nimport { getWidgetContentColumns } from \"components/channels/helpers\";\nimport FileIcon from \"components/shared/FileIcon\";\nimport FolderIcon from \"components/shared/FolderIcon\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCalendar } from \"@fortawesome/pro-regular-svg-icons\";\n\ntype ExternalLinkViewArgs = {\n image_url: string;\n url: string;\n title: string;\n description: string | null;\n type: string;\n};\n\nfunction getFileType(title: string): string {\n const extension = title.split(\".\").pop()?.toLowerCase();\n return extension || \"\";\n}\n\nexport default function LinkView({\n image_url,\n url,\n title,\n description,\n type,\n}: ExternalLinkViewArgs) {\n const { w } = useContext(WidgetContext);\n\n return (\n \n {w > 1 && (\n \n )}\n \n
    \n {type === \"file\" && }\n {type === \"folder\" && }\n {type === \"appointment\" && (\n \n )}\n \n {title}\n \n
    \n
    {description}
    \n \n

    \n {url}\n

    \n
    \n \n \n );\n}\n","import React, { useState } from \"react\";\nimport { EmbedLink } from \"components/channels/widgets/widgetsFields/linkWidget/types\";\nimport classNames from \"classnames\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faToggleOff, faToggleOn } from \"@fortawesome/pro-solid-svg-icons\";\n\ntype EmbedLinkViewArgs = {\n embed: EmbedLink;\n image_url: string | null;\n secureEmbedServiceUrl?: string;\n};\n\nexport default function EmbedLinkView({\n embed,\n image_url,\n secureEmbedServiceUrl,\n}: EmbedLinkViewArgs) {\n const [showEmbed, setShowEmbed] = useState(false);\n\n return showEmbed ? (\n secureEmbedServiceUrl ? (\n \n ) : (\n \n )\n ) : (\n \n {!image_url && embed.provider_icon && (\n \n )}\n \n {\n e.preventDefault();\n setShowEmbed(true);\n }}\n >\n \n \n {I18n.t(\"js.activitystreams.embed.show\")}\n \n \n \n );\n}\n","import React from \"react\";\nimport { first, get, isEmpty } from \"lodash\";\nimport { CrawlerLink } from \"components/channels/widgets/widgetsFields/linkWidget/types\";\nimport LinkView from \"components/channels/widgets/widgetsFields/linkWidget/LinkView\";\nimport EmbedLinkView from \"components/channels/widgets/widgetsFields/linkWidget/EmbedLinkView\";\n\nfunction getImageAsset(type: string) {\n switch (type) {\n case \"activity\":\n return \"widgets/activity_placeholder.jpg\";\n case \"file\":\n case \"folder\":\n return \"widgets/file_placeholder.jpg\";\n case \"appointment\":\n return \"appointments/event_image_default.jpg\";\n default:\n return \"widgets/link_placeholder.jpg\";\n }\n}\n\ntype LinkWidgetArgs = {\n link?: CrawlerLink;\n url: string;\n selected_image: string | null;\n override_image: { id: string; state: string }[];\n override_description: string | null;\n};\n\nexport default function LinkWidget({\n url,\n selected_image,\n override_image,\n override_description,\n link,\n}: LinkWidgetArgs) {\n const type =\n link?.crawl_type ||\n (!isEmpty(link?.embed) && \"embed\") ||\n link?.id?.split(\"_\")[0] ||\n \"external_link\";\n\n return (\n link &&\n (!isEmpty(link.embed) ? (\n \n ) : (\n \n ))\n );\n}\n","import React from \"react\";\nimport PeopleWidget from \"components/channels/widgets/PeopleWidget\";\nimport ImagesWidget from \"components/channels/widgets/ImagesWidget\";\nimport BannerWidget from \"components/channels/widgets/BannerWidget\";\nimport TextWidget from \"components/channels/widgets/TextWidget\";\nimport ChannelRssWidget from \"components/channels/widgets/RssWidget\";\nimport BlogWidget from \"components/channels/widgets/BlogWidget\";\nimport AppointmentsWidget from \"components/channels/widgets/AppointmentsWidget\";\nimport SpotlightWidget from \"components/channels/widgets/SpotlightWidget\";\nimport LinkWidget from \"components/channels/widgets/LinkWidget\";\n\ntype PeopleWidgetProps = Parameters[0];\ntype TextWidgetProps = Parameters[0];\ntype ImagesWidgetProps = Parameters[0];\ntype ChannelRsssWidgetProps = Parameters[0];\ntype BlogWidgetProps = Parameters[0];\ntype AppointmentsWidgetProps = Parameters[0];\ntype SpotlightWidgetProps = Parameters[0];\ntype BannerWidgetProps = Parameters[0];\ntype LinkWidgetProps = Parameters[0];\n\ntype WidgetProps =\n | ({ type: \"people\" } & PeopleWidgetProps)\n | ({ type: \"text\" } & TextWidgetProps)\n | ({ type: \"images\" } & ImagesWidgetProps)\n | ({ type: \"banner\" } & BannerWidgetProps)\n | ({ type: \"rss\" } & ChannelRsssWidgetProps)\n | ({ type: \"blog\" } & BlogWidgetProps)\n | ({ type: \"appointments\" } & AppointmentsWidgetProps)\n | ({ type: \"spotlight\" } & SpotlightWidgetProps)\n | ({ type: \"link\" } & LinkWidgetProps)\n | { type: string };\n\nexport default function WidgetByType({ type, ...props }: WidgetProps) {\n switch (type) {\n case \"people\": {\n const peopleProps = props as PeopleWidgetProps;\n return ;\n }\n case \"text\": {\n const textProps = props as TextWidgetProps;\n return ;\n }\n case \"images\": {\n const imagesProps = props as ImagesWidgetProps;\n return ;\n }\n case \"banner\": {\n const bannerProps = props as BannerWidgetProps;\n return ;\n }\n case \"rss\": {\n const rssProps = props as ChannelRsssWidgetProps;\n return ;\n }\n case \"blog\": {\n const blogProps = props as BlogWidgetProps;\n return ;\n }\n case \"appointments\": {\n const appointmentsWidgetProps = props as AppointmentsWidgetProps;\n return ;\n }\n case \"spotlight\": {\n const spotlightProps = props as SpotlightWidgetProps;\n return ;\n }\n case \"link\": {\n const linkProps = props as LinkWidgetProps;\n return ;\n }\n default:\n return window.Settings?.development ? (\n
    \n TODO Implement case for {type} in WidgetByTypes\n
    \n ) : null;\n }\n}\n","import { memoize } from \"lodash\";\nimport { mostReadable } from \"@ctrl/tinycolor\";\n\nconst readableTextColor = memoize((bgColor: string): string | undefined => {\n const normalText = getComputedStyle(document.body).getPropertyValue(\n \"--normal-text\",\n );\n return mostReadable(bgColor, [normalText, \"white\"], {\n includeFallbackColors: true,\n })?.toHexString();\n});\n\nexport default readableTextColor;\n","import React, { createContext, CSSProperties, useRef } from \"react\";\nimport classNames from \"classnames\";\nimport \"./widgets.css\";\nimport readableTextColor from \"helpers/readableTextColor\";\nimport Loading from \"components/shared/Loading\";\nimport {\n getWidgetColspan,\n getWidgetContentHeight,\n getWidgetContainerResponsiveHeight,\n} from \"components/channels/helpers\";\n\ntype Props = {\n title: string;\n titleBackgroundOverride: string | null;\n className?: string;\n w: number; // number of colums this widget occupies (1-3)\n children?: React.ReactNode;\n loading?: boolean;\n contentClassName?: string;\n style?: CSSProperties;\n label?: null | \"current\" | \"spotlight\" | \"important\";\n collapseToSingleColumn?: boolean;\n singleRowOnly?: boolean;\n hideTitle?: boolean;\n};\n\nexport const WidgetContext = createContext<{\n w: number;\n containerRef: React.RefObject | null;\n}>({ w: 1, containerRef: null });\n\nexport default function WidgetContainer({\n title,\n titleBackgroundOverride,\n hideTitle = false,\n w,\n children,\n loading,\n className,\n contentClassName,\n style,\n label,\n collapseToSingleColumn,\n singleRowOnly,\n}: Props) {\n const containerRef = useRef(null);\n\n if (collapseToSingleColumn && window.innerWidth < 640) w = 1;\n\n return (\n \n \n {!hideTitle && (\n \n {label && (\n \n {I18n.t(`js.channels.widgets.labels.${label}`)}\n \n )}\n {title}\n \n )}\n \n {loading ? : null}\n {children}\n \n \n \n );\n}\n","import React from \"react\";\n\nexport default function Muted() {\n return (\n \n \n \n \n );\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { compose, withProps } from \"recompose\";\nimport { startsWith, min } from \"lodash\";\nimport moment from \"moment\";\n\nimport {\n getCounterForChat,\n getComposingHomie,\n isMuted,\n} from \"../../../selectors/chat/chat\";\nimport ChatImage from \"../shared/ChatImage\";\nimport Notification from \"../shared/Notification\";\nimport Composing from \"../shared/Composing\";\nimport Muted from \"../shared/Muted\";\n\nconst Row = ({\n id,\n select,\n name,\n last_message,\n last_interacted_at,\n counter,\n muted,\n state,\n type,\n composingHomie,\n}) => {\n const mom = min([moment(last_interacted_at), moment()]);\n\n return (\n \n
    \n \n \n {composingHomie ? : null}\n {muted ? : null}\n
    \n
    \n
    \n {name}\n
    \n {last_message ? (\n
    \n {type === \"group\" ? {last_message.from.name}: : null}\n {last_message.text}\n
    \n ) : null}\n
    \n
    \n \n
    \n \n \n );\n};\nRow.propTypes = {\n select: PropTypes.func,\n name: PropTypes.string,\n type: PropTypes.string,\n counter: PropTypes.number,\n};\n\nexport default compose(\n withProps(({ id }) => {\n return {\n type: startsWith(id, \"member\") ? \"member\" : \"group\",\n };\n }),\n connect(\n (state, { id }) => ({\n counter: getCounterForChat(state, { chatId: id }),\n muted: isMuted(state, { chatId: id }),\n composingHomie: getComposingHomie(state, { chatId: id }),\n }),\n (dispatch, { id }) => ({\n select: () => {\n dispatch({\n type: \"chat/NAVIGATE\",\n payload: { route: \"showChat\", params: { chatId: id } },\n });\n\n if (\n window.Notification &&\n window.Notification.permission !== \"granted\"\n ) {\n window.Notification.requestPermission();\n }\n },\n }),\n ),\n)(Row);\n","import React, { useState, useEffect, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect, useDispatch, useSelector } from \"react-redux\";\nimport { get, map, isEmpty } from \"lodash\";\nimport classNames from \"classnames\";\nimport {\n getMemberBusyStatus,\n getMemberOnlineStatus,\n getSortedChats,\n} from \"../../../selectors/chat/chat\";\nimport ChatHeader from \"../shared/ChatHeader\";\nimport Row from \"./Row\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport Textarea from \"react-textarea-autosize\";\nimport {\n faComment as faRegularComment,\n faXmark as faRegularXmark,\n} from \"@fortawesome/pro-regular-svg-icons\";\nimport {\n faCircle as faSolidCircle,\n faEyeSlash as faSolidEyeSlash,\n} from \"@fortawesome/pro-solid-svg-icons\";\nimport { toggleChatbar } from \"../../../layout/togglebar\";\nimport { setChatStatus } from \"../../../actions/chat\";\n\nconst statusOption = {\n busy: \"busy\",\n online: \"online\",\n invisible: \"invisible\",\n};\n\nconst useCurrentStatus = () => {\n const isOnline = useSelector((state) =>\n getMemberOnlineStatus(state, window.Preload.current_member.id),\n );\n\n const presence = useSelector((state) =>\n getMemberBusyStatus(state, window.Preload.current_member.id),\n );\n\n return (\n presence?.type || (isOnline ? statusOption.online : statusOption.invisible)\n );\n};\n\nconst StartNewButton = connect(null, (dispatch) => ({\n navigateToNewChat: () =>\n dispatch({ type: \"chat/NAVIGATE\", payload: { route: \"newChat\" } }),\n}))(({ disabled, navigateToNewChat }) => (\n \n \n {I18n.t(\"js.chat.list.start_new\")}\n \n));\n\nfunction ChatStatusCircle({ status }) {\n switch (status) {\n case statusOption.online:\n return (\n \n );\n\n case statusOption.busy:\n return (\n \n );\n case statusOption.invisible:\n return (\n \n );\n }\n}\n\nfunction StatusButton({ toggleStatusMessageForm }) {\n const status = useCurrentStatus();\n return (\n toggleStatusMessageForm(true)}\n >\n Status\n \n );\n}\n\nfunction OnlineStatusDropdown({ selectedOption, setSelectedOption }) {\n const handleOptionChange = (e, option) => {\n e.preventDefault();\n setSelectedOption(option);\n };\n\n return (\n <>\n
    \n \n \n \n
      \n
    • \n handleOptionChange(e, statusOption.online)}\n >\n \n \n \n {I18n.t(\"js.chat.status_text.online.label\")}\n \n \n \n
    • \n
    • \n handleOptionChange(e, statusOption.busy)}\n >\n \n \n \n {I18n.t(\"js.chat.status_text.busy.label\")}\n \n \n \n
    • \n {window.Preload.current_network.config.show_online_status ==\n \"optional\" && (\n
    • \n handleOptionChange(e, statusOption.invisible)}\n >\n \n \n \n {I18n.t(\"js.chat.status_text.invisible.label\")}\n \n \n \n
    • \n )}\n
    \n
    \n \n );\n}\n\nfunction StatusMessageForm({ toggleStatusMessageForm }) {\n const presence = useSelector((state) =>\n getMemberBusyStatus(state, window.Preload.current_member.id),\n );\n const initialRender = useRef(true);\n const [statusText, setStatusText] = useState(presence?.text || \"\");\n const currentStatus = useCurrentStatus();\n const [selectedOption, setSelectedOption] = useState(currentStatus);\n\n const dispatch = useDispatch();\n\n function submitStatus(status) {\n if (status.text) status.text = status.text.replace(/[\\n\\r]/g, \" \");\n dispatch(setChatStatus({ payload: status }));\n }\n\n function removeStatusText() {\n setStatusText(\"\");\n submitStatus({ text: \"\", type: selectedOption });\n }\n\n useEffect(() => {\n if (initialRender.current) {\n initialRender.current = false;\n return;\n }\n\n if (selectedOption == statusOption.invisible) {\n submitStatus({ text: statusText, type: statusOption.invisible });\n toggleStatusMessageForm(false);\n }\n\n if (\n selectedOption === statusOption.busy &&\n (isEmpty(statusText) ||\n statusText === I18n.t(\"js.chat.status_text.online.default\"))\n ) {\n setStatusText(I18n.t(\"js.chat.status_text.busy.default\"));\n } else if (\n selectedOption === statusOption.online &&\n (isEmpty(statusText) ||\n statusText === I18n.t(\"js.chat.status_text.busy.default\"))\n ) {\n setStatusText(I18n.t(\"js.chat.status_text.online.default\"));\n }\n }, [selectedOption, setSelectedOption]);\n\n return (\n \n \n\n {selectedOption != \"invisible\" && (\n <>\n setStatusText(e.target.value)}\n className={\n \"grow text-sm rounded-none border-0 border-r border-neutral resize-none\"\n }\n />\n\n
    \n {\n submitStatus({ text: statusText, type: selectedOption });\n toggleStatusMessageForm(false);\n }}\n >\n \n \n {\n removeStatusText();\n toggleStatusMessageForm(false);\n }}\n >\n \n \n
    \n \n )}\n \n );\n}\n\nfunction CloseButton() {\n return (\n \n \n \n );\n}\n\nconst ChatList = ({ connected, chats }) => {\n const [showStatusMessageForm, toggleStatusMessageForm] = useState(false);\n\n return (\n <>\n }\n ButtonRight={\n
    \n {window.Preload.current_network.config.show_online_status !=\n \"disabled\" && (\n \n )}\n\n \n
    \n }\n />\n {showStatusMessageForm && (\n \n )}\n \n {map(chats, (item, index) => (\n \n ))}\n \n \n );\n};\nChatList.propTypes = {\n chats: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n image_id: PropTypes.string,\n }),\n ),\n};\n\nexport default connect((state) => ({\n chats: getSortedChats(state),\n connected: get(state, [\"chat\", \"session\", \"connected\"]),\n}))(ChatList);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { map } from \"lodash\";\nimport { compose, withState, withHandlers } from \"recompose\";\nimport classNames from \"classnames\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faChevronRight } from \"@fortawesome/pro-regular-svg-icons\";\n\nconst GroupedItems = ({\n open,\n toggleOpen,\n items,\n title,\n allowToggle,\n renderItemComponent,\n}) => (\n
    \n {title ? (\n \n {allowToggle ? (\n \n ) : null}\n {title}\n
    \n ) : null}\n {open ? (\n
    \n {map(items, (item, index) => renderItemComponent(item, index))}\n
    \n ) : null}\n \n);\nGroupedItems.propTypes = {\n title: PropTypes.string,\n allowToggle: PropTypes.bool,\n open: PropTypes.bool,\n toggleOpen: PropTypes.func,\n getItemComponent: PropTypes.func,\n items: PropTypes.arrayOf(PropTypes.object),\n additionalItemProps: PropTypes.object,\n};\n\nexport default compose(\n withState(\"open\", \"setOpen\", true),\n withHandlers({\n toggleOpen:\n ({ open, setOpen }) =>\n () =>\n setOpen(!open),\n }),\n)(GroupedItems);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { createChat } from \"../../../actions/chat\";\nimport classnames from \"classnames\";\n\nconst Tile = ({ createChat, id, name, type }) => (\n \n \n {name}\n \n);\nTile.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string,\n type: PropTypes.string,\n createChat: PropTypes.func,\n};\n\nexport default connect(null, (dispatch, { id, type }) => ({\n createChat: (e) => {\n e.preventDefault();\n dispatch(createChat({ payload: { id, type } }));\n },\n}))(Tile);\n","import React, { useState } from \"react\";\nimport { map, get, isEmpty, groupBy } from \"lodash\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSpinner, faSearch } from \"@fortawesome/pro-regular-svg-icons\";\nimport classNames from \"classnames\";\nimport { useQuery } from \"react-query\";\nimport { stringify } from \"query-string\";\n\nimport ChatHeader from \"../shared/ChatHeader\";\nimport GroupedItems from \"../shared/GroupedItems\";\nimport Tile from \"./Tile\";\nimport { BackToRootButton } from \"../shared/BackButton\";\n\nfunction useAvailableChats(q) {\n return useQuery(\n `/directory?${stringify({\n q,\n only_my_groups: true,\n only_chat_enabled: true,\n })}`,\n { refetchOnWindowFocus: false },\n );\n}\n\nconst getGroupCategoryName = (c) => get(c, [\"category\", \"plural_name\"]);\nconst categoryOrMemberType = (memberOrGroup) =>\n memberOrGroup.type === \"member\"\n ? \"member\"\n : getGroupCategoryName(memberOrGroup);\n\nexport default function NewChat() {\n const [query, setQuery] = useState(\"\");\n const { data, isLoading } = useAvailableChats(query);\n\n const { member, ...groupsByCategoryName } = groupBy(\n data?.entries,\n categoryOrMemberType,\n );\n\n function submitSearch(e) {\n e.preventDefault();\n setQuery(e.target.q.value);\n }\n\n return (\n <>\n }\n />\n \n
    \n \n \n {isLoading ? (\n \n ) : (\n \n )}\n \n
    \n \n {isEmpty(member) || query.length === 0 ? null : (\n (\n \n )}\n title={I18n.t(\"js.chat.new.users\")}\n allowToggle={true}\n />\n )}\n {map(groupsByCategoryName, (groups, name) => [\n (\n \n )}\n title={name}\n allowToggle={true}\n />,\n ])}\n \n );\n}\n","import React from \"react\";\nimport { map, slice, findIndex, trim, compact, times } from \"lodash\";\nimport { connect } from \"react-redux\";\nimport { compose, withHandlers } from \"recompose\";\nimport classnames from \"classnames\";\n// import Hotkeys from \"hotkeys-js\";\n\nimport { getCurrentChat } from \"../../../selectors/chat/application\";\nimport {\n getSortedChats,\n getComposingHomie,\n getCounterForChat,\n} from \"../../../selectors/chat/chat\";\nimport ChatImage from \"../shared/ChatImage\";\nimport Notification from \"../shared/Notification\";\nimport Composing from \"../shared/Composing\";\n\nconst chatInitials = (chatName) => {\n if (chatName.length < 2) {\n return chatName.toUpperCase();\n }\n\n const parts = compact(chatName.split(/[-_/\\\\.@\\s]/));\n const initials =\n parts.length >= 2\n ? trim(parts[0])[0] + trim(parts[1])[0]\n : chatName[0] + chatName[1];\n\n return initials.toUpperCase();\n};\n\nconst Chat = connect(\n (state, { id }) => ({\n counter: getCounterForChat(state, { chatId: id }),\n composingHomie: getComposingHomie(state, { chatId: id }),\n }),\n (dispatch, { id }) => ({\n select: () =>\n dispatch({\n type: \"chat/NAVIGATE\",\n payload: { route: \"showChat\", params: { chatId: id } },\n }),\n }),\n)(({ id, name, selected, select, counter, state, composingHomie }) => (\n \n
    \n \n \n {composingHomie ? : null}\n
    \n {chatInitials(name)}\n \n));\n\nconst QuickChatSelect = ({ chats, chatId }) => (\n
    \n {map(\n chats,\n (chat) =>\n chat.id && (\n \n ),\n )}\n {times(10 - chats.length, (i) => (\n
    \n ))}\n
    \n);\n\nexport default compose(\n connect(\n (state) => ({\n currentChat: getCurrentChat(state),\n chats: slice(getSortedChats(state), 0, 10),\n }),\n (dispatch) => ({\n selectChat: (chatId) =>\n dispatch({\n type: \"chat/NAVIGATE\",\n payload: { route: \"showChat\", params: { chatId } },\n }),\n }),\n ),\n withHandlers({\n nextChat:\n ({ chats, selectChat, currentChat }) =>\n () => {\n const currIndex = findIndex(chats, (c) => c.id === currentChat);\n const nextIndex =\n currIndex < 0 || currIndex + 1 >= chats.length ? 0 : currIndex + 1;\n selectChat(chats[nextIndex].id);\n },\n prevChat:\n ({ chats, selectChat, currentChat }) =>\n () => {\n const currIndex = findIndex(chats, (c) => c.id === currentChat);\n const prevIndex =\n currIndex < 0 || currIndex - 1 < 0 ? chats.length - 1 : currIndex - 1;\n selectChat(chats[prevIndex].id);\n },\n }),\n // lifecycle({\n // componentDidMount() {\n // Hotkeys(\"ctrl+command+right\", this.props.nextChat);\n // Hotkeys(\"ctrl+command+left\", this.props.prevChat);\n // },\n // componentWillUnmount() {\n // Hotkeys.unbind(\"ctrl+command+right\");\n // Hotkeys.unbind(\"ctrl+command+left\");\n // },\n // }),\n)(QuickChatSelect);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport moment from \"moment\";\nimport { memoize } from \"lodash\";\n\nimport { isMuted } from \"../../../selectors/chat/chat\";\nimport {\n muteChat,\n unmuteChat,\n muteAppChat,\n unmuteAppChat,\n} from \"../../../actions/chat\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faVolumeOff, faEllipsisH } from \"@fortawesome/pro-solid-svg-icons\";\n\nconst MUTE_DURATIONS = memoize(() => [\n [\n I18n.t(\"js.chat.room.mute_hour\"),\n () => moment().add(1, \"hour\").toDate(),\n false,\n ],\n [\n I18n.t(\"js.chat.room.mute_rest_of_day\"),\n () => moment().endOf(\"day\").toDate(),\n false,\n ],\n [\n I18n.t(\"js.chat.room.mute_rest_of_week\"),\n () => moment().endOf(\"week\").toDate(),\n false,\n ],\n [I18n.t(\"js.chat.room.forever\"), () => moment(\"9999-12-31\").toDate(), true],\n]);\n\nconst MuteLink = connect(null, (dispatch, { chatId, muteUntil }) => ({\n onClick: (e) => {\n e.preventDefault();\n const meta = { chatId };\n let dispatchAction;\n\n if (muteUntil) {\n dispatchAction = window.isApp ? muteAppChat : muteChat;\n } else {\n dispatchAction = window.isApp ? unmuteAppChat : unmuteChat;\n }\n\n dispatch(\n dispatchAction({\n meta,\n payload: muteUntil ? { muted_until: muteUntil() } : {},\n }),\n );\n },\n}))(({ label, onClick }) => (\n \n {label}\n \n));\n\nconst ChatRoomSettingsButton = ({ muted, chatId }) => (\n
    \n {muted ? (\n \n ) : null}\n
    \n \n
      \n {muted ? (\n
    • \n \n
    • \n ) : (\n MUTE_DURATIONS().map(([label, muteUntil, appOnly], i) =>\n appOnly && !window.isApp ? null : (\n
    • \n \n
    • \n ),\n )\n )}\n
    \n
    \n
    \n);\nChatRoomSettingsButton.propTypes = {\n muted: PropTypes.bool,\n};\n\nexport default connect((state, { chatId }) => ({\n muted: isMuted(state, { chatId }),\n}))(ChatRoomSettingsButton);\n","import React from \"react\";\nimport { throttle, debounce } from \"lodash\";\nimport classNames from \"classnames\";\n\nconst THROTTLE = 250;\n\n/**\n * Component which handles scrolling stuff\n * div that scrolls when a new child (i.e. a chat message) is added\n *\n * [bool] autoscroll - enables autoscrolling if the children will change\n * [integer] autoscrollThreashold - the percentage border at the bottom to break the autoscroll\n * [integer] callbackThreshold - the percentage border when onStartReached and onEndReached triggers\n * [function] onStartReached - callback when scroll to the top\n * [function] onEndReached - callback when scroll to the bottom\n */\nclass ScrollContainer extends React.Component {\n constructor(props) {\n super(props);\n\n this.container = React.createRef();\n this.bumper = React.createRef();\n\n this.state = {\n autoscrollBreaked: false,\n };\n\n this.lastScrollPoint = 0;\n this.lastScrollPosition = -1;\n }\n\n componentDidMount() {\n this.container.current.addEventListener(\"wheel\", this.handleWheel);\n this.container.current.addEventListener(\"scroll\", this.handleScrolling);\n window.addEventListener(\"resize\", this.handleResize);\n\n this.scroll({ smooth: false });\n }\n\n componentWillUnmount() {\n this.container.current.removeEventListener(\"wheel\", this.handleWheel);\n this.container.current.removeEventListener(\"scroll\", this.handleScrolling);\n window.removeEventListener(\"resize\", this.handleResize);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.id !== prevProps.id) {\n this.setState({ autoscrollBreaked: false });\n this.scroll({ smooth: false });\n } else if (\n React.Children.count(this.props.children) !==\n React.Children.count(prevProps.children)\n ) {\n this.scroll({ smooth: true });\n }\n }\n\n // Cancel wheel event and prevent parent scroll\n cancelScrollEvent = (e) => {\n e.stopImmediatePropagation();\n e.preventDefault();\n e.returnValue = false;\n };\n\n // Handle wheel event and calculate scroll position\n // cancel the wheel event when scroll is at top or bottom\n // this will prevent the parent container from scrolling\n //\n // calls trackScrolling() after cancel. This is required,\n // because scroll event will never triggered if the wheel event is canceled\n handleWheel = (e) => {\n const div = this.container.current;\n const scrollTop = div.scrollTop;\n const scrollHeight = div.scrollHeight;\n const height = div.clientHeight;\n const wheelDelta = e.deltaY;\n const isDeltaPositive = wheelDelta > 0;\n\n if (isDeltaPositive && wheelDelta > scrollHeight - height - scrollTop) {\n this.cancelScrollEvent(e);\n this.trackScrolling();\n return false;\n } else if (!isDeltaPositive && -wheelDelta > scrollTop) {\n this.cancelScrollEvent(e);\n this.trackScrolling();\n return false;\n }\n };\n\n // Calculate and check threasholds and maybe call callbacks\n trackScrolling = () => {\n const div = this.container.current;\n\n if (div.scrollTop !== this.lastScrollPosition) {\n const direction = div.scrollTop > this.lastScrollPosition ? 1 : -1;\n const callbackThreshold =\n (div.scrollHeight / 100) * this.props.callbackThreshold;\n const autoscrollThreashold =\n (div.scrollHeight / 100) * this.props.autoscrollThreashold;\n\n //console.log(\"handle scroll\", \"height:\", div.clientHeight, \"scrollHeight:\", div.scrollHeight, \"scrollTop:\", div.scrollTop, \"direction:\", direction, \"callbackThreshold:\", callbackThreshold, \"autoscrollThreashold:\", autoscrollThreashold);\n\n // Handle autoscrollThreashold\n if (\n div.scrollTop <\n div.scrollHeight - div.clientHeight - autoscrollThreashold\n ) {\n this.setState({ autoscrollBreaked: true });\n } else {\n this.setState({ autoscrollBreaked: false });\n }\n\n // Handle callbackThreshold\n if (direction < 0 && div.scrollTop <= callbackThreshold) {\n // scrolling up and be in the threshold at the top\n this.callStartReached();\n } else if (\n direction > 0 &&\n div.scrollTop >= div.scrollHeight - div.clientHeight - callbackThreshold\n ) {\n // scrolling down and be in the threshold at the bottom\n this.callEndReached();\n }\n }\n\n // Check bumper\n if (this.bumper.current.clientHeight > 10) {\n //console.log(\"BUMPER bumped\");\n this.callStartReached();\n }\n\n // cache scrollPosition and lastScrollHeight\n this.lastScrollPosition = div.scrollTop;\n this.lastScrollPoint = div.scrollHeight - div.scrollTop;\n };\n\n // Ensure a debounced call on the onStartReached callback\n callStartReached = debounce(\n () => {\n this.props.onStartReached && this.props.onStartReached();\n },\n THROTTLE,\n { leading: true, trailing: true },\n );\n\n // Ensure a debounced call on the onEndReached callback\n callEndReached = debounce(\n () => {\n this.props.onEndReached && this.props.onEndReached();\n },\n THROTTLE,\n { leading: true, trailing: true },\n );\n\n // Perform scrolling or adjust scroll\n scroll = ({ smooth }) => {\n const div = this.container.current;\n if (!div) {\n return;\n }\n\n if (this.props.autoscroll && !this.state.autoscrollBreaked) {\n //console.log(\"scroll to bottom\");\n this.performScroll({ smooth });\n this.callEndReached();\n } else {\n //console.log(\"adjust scroll\");\n // prevent jumping, by preserving the scroll position\n if (div.scrollHeight !== this.lastScrollHeight) {\n div.scrollTop = div.scrollHeight - this.lastScrollPoint;\n }\n }\n\n // track the new scroll position\n this.trackScrolling();\n };\n\n performScroll = ({ smooth }) => {\n const div = this.container.current;\n if (!div) {\n return;\n }\n\n if (smooth && div.scrollTop) {\n div.style.scrollBehavior = \"smooth\";\n } else {\n div.style.scrollBehavior = \"auto\";\n }\n\n div.scrollTop = div.scrollHeight - div.offsetHeight;\n window.DIV = div;\n\n setTimeout(() => (div.style.scrollBehavior = \"auto\"), 250);\n };\n\n onClickScrollToBottom = () => {\n this.performScroll({ smooth: true });\n this.trackScrolling();\n };\n\n // throttled calls for use in events\n handleScrolling = throttle(this.trackScrolling, THROTTLE);\n handleResize = throttle(this.trackScrolling, THROTTLE);\n\n render() {\n return (\n \n {this.props.startElement}\n
    \n {this.props.children}\n
    \n {this.props.endElement}\n {this.state.autoscrollBreaked ? (\n
    \n \n
    \n ) : null}\n
    \n );\n }\n}\n\nexport default ScrollContainer;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst MessageAuthor = ({ id, name, imageUrl }) => (\n
    \n {imageUrl ? (\n \n ) : null}\n \n {name}\n \n
    \n);\nMessageAuthor.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string,\n imageUrl: PropTypes.string,\n};\n\nexport default MessageAuthor;\n","import React from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport classNames from \"classnames\";\n\ntype MessageSettingsArgs = {\n id: string;\n chatId: string;\n fromId: string;\n fromDeleted: boolean;\n myMessage: boolean;\n className?: string;\n};\n\nimport { createChat } from \"../../../../actions/chat\";\n\nexport default function MessageSettings({\n myMessage,\n className,\n id,\n chatId,\n fromId,\n fromDeleted,\n}: MessageSettingsArgs) {\n const dispatch = useDispatch();\n const type = chatId.indexOf(\"group\") === 0 ? \"group\" : \"member\";\n const hideStartPrivateChat =\n fromDeleted ||\n myMessage ||\n type === \"member\" ||\n Preload.current_member?.is_external;\n\n function setMessageToQuote(e: React.MouseEvent) {\n e.preventDefault();\n dispatch({\n type: \"chat/COMPOSER/SET_MESSAGE_TO_QUOTE\",\n messageId: id,\n chatId,\n });\n }\n\n function createPrivateChat(e: React.MouseEvent) {\n e.preventDefault();\n dispatch(createChat({ payload: { id: fromId, type: \"member\" } }));\n }\n\n return (\n
    \n \n
    \n );\n}\n","import { every } from \"lodash\";\nimport createEmojiRegex from \"emoji-regex\";\nimport { length, toArray } from \"stringz\";\n\nconst EMOJI_REGEX = createEmojiRegex();\n\nexport const isEmoji = (symbol) => {\n // reset lastIndex instead of reinitialize the whole regexp object\n EMOJI_REGEX.lastIndex = 0;\n return EMOJI_REGEX.test(symbol);\n};\n\nexport const onlyEmojis = (text) => {\n return every(toArray(text), (sym) => isEmoji(sym));\n};\n\nexport const getEmojiClassName = (text, max = 3) => {\n const symbols_count = length(text);\n\n if (symbols_count > max) {\n return;\n }\n\n if (onlyEmojis(text)) {\n return `emoji emoji_${symbols_count}`;\n }\n};\n","import { Remarkable } from \"remarkable\";\nimport { linkify } from \"remarkable/linkify\";\nimport { noop } from \"lodash\";\n\nconst noMarkdown = {\n render: (text) => text,\n};\n\nconst getNewDevRenderer = (options) => new Remarkable(options).use(linkify);\nconst getRenderer =\n (window.Application && window.Application.getNewMarkdownRenderer) ||\n (Remarkable && getNewDevRenderer) ||\n noop;\n\nconst markdownRenderer = getRenderer({\n html: false,\n breaks: true,\n linkTarget: \"_blank\",\n});\n\nif (markdownRenderer) {\n markdownRenderer.core.ruler.disable([\n \"replacements\",\n \"abbr2\",\n \"footnote_tail\",\n ]);\n markdownRenderer.inline.ruler.disable([\"footnote_ref\", \"htmltag\"]);\n markdownRenderer.inline.ruler.enable([\"ins\", \"mark\"]);\n markdownRenderer.block.ruler.disable([\n \"blockquote\",\n \"code\",\n \"fences\",\n \"footnote\",\n \"heading\",\n \"hr\",\n \"htmlblock\",\n \"lheading\",\n \"table\",\n ]);\n}\n\nexport default markdownRenderer || noMarkdown;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { getEmojiClassName } from \"../../utils/emojis\";\nimport markdown from \"../../utils/markdown\";\n\nconst markdownTextToHtml = (text) => {\n let html = null;\n\n try {\n html = markdown.render(text);\n } catch (e) {\n console.log(\"Markdown error\", e);\n html = `${I18n.t(\n \"js.chat.room.message.rendering_error\",\n )}`;\n }\n\n return html;\n};\n\nfunction MessageText({ text }) {\n const emoji = getEmojiClassName(text);\n\n return (\n
    \n \n
    \n );\n}\n\nMessageText.propTypes = { text: PropTypes.string };\n\n// Check if the MessageText should be rendered again via React.memo HOC\nexport default React.memo(\n MessageText,\n (prevProps, nextProps) => prevProps.text == nextProps.text,\n);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport MessageAuthor from \"./MessageAuthor\";\nimport MessageText from \"./MessageText\";\n\nconst QuotedMessage = ({ message }) => (\n
    \n \n \n
    \n);\nQuotedMessage.propTypes = {\n id: PropTypes.string,\n message: PropTypes.shape({\n text: PropTypes.string,\n from: PropTypes.shape(MessageAuthor.propTypes),\n }),\n};\n\nexport default QuotedMessage;\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faSpinner,\n faCheck,\n faCheckDouble,\n} from \"@fortawesome/pro-solid-svg-icons\";\n\nexport const getIcon = (deliveryStatus) => {\n switch (deliveryStatus) {\n case \"pushed\":\n return ;\n case \"persisted\":\n return ;\n case \"received\":\n return ;\n case \"read\":\n return ;\n default:\n return null;\n }\n};\n\nexport const getTitle = (deliveryStatus) => {\n switch (deliveryStatus) {\n case \"pushed\":\n return \"wird gespeichert\";\n case \"persisted\":\n return \"gespeichert\";\n case \"received\":\n return \"zugestellt\";\n case \"read\":\n return \"gelesen\";\n default:\n return null;\n }\n};\n\nconst MessageDeliveryStatus = ({ deliveryStatus }) => {\n return (\n \n {getIcon(deliveryStatus)}\n \n );\n};\n\nMessageDeliveryStatus.propTypes = {\n deliveryStatus: PropTypes.oneOf([\"pushed\", \"persisted\", \"received\", \"read\"]),\n};\n\nexport default MessageDeliveryStatus;\n","import classnames from \"classnames\";\nimport { get, isEmpty } from \"lodash\";\nimport moment from \"moment\";\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { connect } from \"react-redux\";\nimport { compose } from \"recompose\";\n\nimport { getImageUrl } from \"../../../../selectors/chat/application\";\nimport { getMessageDeliveryStatus } from \"../../../../selectors/chat/messages\";\nimport { getMyId, getMyProfile } from \"../../../../selectors/chat/profile\";\nimport MessageAuthor from \"./MessageAuthor\";\nimport MessageSettings from \"./MessageSettings\";\nimport MessageText from \"./MessageText\";\nimport QuotedMessage from \"./QuotedMessage\";\nimport MessageDeliveryStatus from \"./MessageDeliveryStatus\";\n\nconst MessageDate = ({ date, format, className }) => {\n const fullDate = moment(date).format(\"DD.MM.YYYY HH:mm\");\n\n return (\n \n {moment(date).format(format)}\n \n );\n};\n\nMessageDate.propTypes = {\n date: PropTypes.string,\n format: PropTypes.string,\n className: PropTypes.string,\n};\n\nconst ChatMessage = ({\n id,\n chat_id,\n text,\n from,\n created_at,\n myMessage,\n groupedMessage,\n quoted_message,\n deliveryStatus,\n}) => (\n \n
    \n
    \n \n
    \n {!isEmpty(quoted_message) ? (\n \n ) : null}\n \n
    \n \n {myMessage ? (\n \n ) : null}\n
    \n \n
    \n);\nChatMessage.propTypes = {\n id: PropTypes.string,\n chat_id: PropTypes.string,\n text: PropTypes.string,\n from: PropTypes.shape(MessageAuthor.propTypes),\n quoted_message: PropTypes.object,\n created_at: PropTypes.string,\n myMessage: PropTypes.bool,\n groupedMessage: PropTypes.bool,\n qoutedMessageId: PropTypes.string,\n settings: PropTypes.bool,\n deliveryStatus: PropTypes.oneOf([\"pushed\", \"persisted\", \"received\", \"read\"]),\n};\n\nexport default compose(\n connect((state, { id, chat_id: chatId, from }) => {\n const myMessage = from.id === getMyId(state);\n // From can be undefined in some cases\n const fromProfile = myMessage ? getMyProfile(state) : from;\n\n return {\n myMessage,\n deliveryStatus: getMessageDeliveryStatus(state, { id, chatId }),\n from: {\n ...fromProfile,\n imageUrl: getImageUrl(state, get(fromProfile, \"image_id\"), \"80x80\"),\n },\n };\n }),\n)(ChatMessage);\n","import React from \"react\";\nimport moment from \"moment\";\n\nconst DaySeparator = ({ date }) => (\n
    \n {moment(date).format(\"DD.MM.YYYY\")}\n
    \n);\n\nexport default DaySeparator;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { flatMap } from \"lodash\";\nimport moment from \"moment\";\n\nimport { getRequestStateForChat } from \"../../../selectors/chat/chat\";\nimport { getMessagesForChat } from \"../../../selectors/chat/messages\";\n\nimport ScrollContainer from \"../shared/ScrollContainer\";\nimport ChatMessage from \"./ChatMessage\";\nimport DaySeparator from \"./DaySeparator\";\nimport classNames from \"classnames\";\n\nconst Chat = ({\n id,\n messages,\n onStartReached,\n onEndReached,\n loadingMessages,\n moreMessagesAvailable,\n}) => {\n let lastMessageFrom = null;\n let lastMessageDate = null;\n\n return (\n \n {I18n.t(\"js.chat.room.no_more_messages\")}\n
    \n )\n }\n >\n {loadingMessages ? (\n
    \n \n
    \n ) : null}\n {flatMap(messages, (message, i) => {\n const result = [];\n const sameAuthor = lastMessageFrom === message.from.id;\n const sameDay = moment(message.created_at).isSame(\n lastMessageDate,\n \"day\",\n );\n\n if (!sameDay) {\n result.push(\n ,\n );\n }\n\n result.push(\n ,\n );\n\n lastMessageFrom = message.from.id;\n lastMessageDate = moment(message.created_at);\n\n return result;\n })}\n \n );\n};\nChat.propTypes = {\n id: PropTypes.string,\n messages: PropTypes.array,\n onStartReached: PropTypes.func,\n onEndReached: PropTypes.func,\n loadingMessages: PropTypes.bool,\n moreMessagesAvailable: PropTypes.bool,\n};\n\nexport default connect(\n (state, { id }) => ({\n ...getRequestStateForChat(state, { chatId: id }),\n messages: getMessagesForChat(state, { chatId: id }),\n }),\n (dispatch, { id }) => ({\n onStartReached: () =>\n dispatch({\n type: \"chat/CHAT/SCROLL_START_REACHED\",\n chatId: id,\n }),\n onEndReached: () =>\n dispatch({\n type: \"chat/CHAT/SCROLL_END_REACHED\",\n chatId: id,\n }),\n }),\n)(Chat);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { isEmpty } from \"lodash\";\n\nimport { getMessageById } from \"../../../../selectors/chat/messages\";\n\nimport MessageAuthor from \"../ChatMessage/MessageAuthor\";\nimport MessageText from \"../ChatMessage/MessageText\";\n\nconst MessageToQuote = ({ message, removeMessageToQuote }) =>\n !isEmpty(message) ? (\n \n
    \n \n \n
    \n \n \n \n
    \n ) : null;\nMessageToQuote.propTypes = {\n id: PropTypes.string,\n chatId: PropTypes.string,\n message: PropTypes.shape({}),\n removeMessageToQuote: PropTypes.func,\n};\n\nexport default connect(\n (state, { id, chatId }) => ({\n message: getMessageById(state, { id, chatId }),\n }),\n (dispatch, { chatId }) => ({\n removeMessageToQuote: () =>\n dispatch({ type: \"chat/COMPOSER/SET_MESSAGE_TO_QUOTE\", id: \"\", chatId }),\n }),\n)(MessageToQuote);\n","import React, { useEffect, useMemo } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { isEmpty, trim, throttle } from \"lodash\";\nimport Textarea from \"react-textarea-autosize\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faPaperPlane } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport { getComposerMessageToQuoteId } from \"../../../../selectors/chat/composer\";\nimport { getCanForChat } from \"../../../../selectors/chat/chat\";\nimport MessageToQuote from \"./MessageToQuote\";\nimport classNames from \"classnames\";\nimport { useForm } from \"react-hook-form\";\nimport usePersistentState from \"../../../../hooks/usePersistentSate\";\n\ntype FormData = { text: string };\n\nexport default function MessageComposer({ chatId }: { chatId: string }) {\n const dispatch = useDispatch();\n const messageToQuoteId = useSelector((state) =>\n getComposerMessageToQuoteId(state, { chatId }),\n );\n const [composerTextByChatId, setComposerTextByChatId] = usePersistentState(\n \"composerTextByChatId\",\n {},\n );\n\n const { handleSubmit, register, getValues, setFocus, setValue, reset } =\n useForm();\n\n const invokeDebounced = useMemo(\n () =>\n throttle((text) => {\n dispatch({ type: \"chat/COMPOSER/SET_TEXT\", chatId, text });\n }, 1000),\n [chatId],\n );\n\n function changeText(e: { target: { value: string } }) {\n setComposerTextByChatId({\n ...composerTextByChatId,\n [chatId]: e.target.value,\n });\n invokeDebounced(e.target.value);\n }\n\n function submit({ text }: FormData) {\n if (isEmpty(trim(text))) {\n return;\n }\n\n dispatch({\n type: \"chat/SEND_MESSAGE\",\n meta: { chatId },\n payload: { text, quoted_message_id: messageToQuoteId },\n });\n\n setComposerTextByChatId({ ...composerTextByChatId, [chatId]: \"\" });\n reset();\n }\n\n function onKeyDown(e: React.KeyboardEvent) {\n if (e.keyCode == 13) {\n if (!e.shiftKey && !e.ctrlKey && !e.altKey && !e.metaKey) {\n handleSubmit(submit)(e);\n }\n }\n }\n\n useEffect(() => {\n setFocus(\"text\");\n }, [chatId, messageToQuoteId]);\n\n useEffect(() => {\n setValue(\"text\", composerTextByChatId[chatId]);\n }, [chatId]);\n\n const can = useSelector((state) => getCanForChat(state, { chatId }));\n const disabled = can && !can.write; // optimistically enable if we haven't received permissions yet\n\n return (\n \n \n
    \n \n \n \n \n \n \n );\n}\n","import { get } from \"lodash\";\n\nexport const getComposerMessageToQuoteId = (state, { chatId }) =>\n get(state, [\"chat\", \"composer\", chatId, \"messageToQuoteId\"]);\n","import { useEffect, useState } from \"react\";\n\nexport default function usePersistentState(key: string, initialValue: T) {\n const [value, setValue] = useState(() => {\n const storedValue = localStorage.getItem(key);\n return storedValue ? JSON.parse(storedValue) : initialValue;\n });\n\n useEffect(() => {\n localStorage.setItem(key, JSON.stringify(value));\n }, [key, value]);\n\n return [value, setValue] as const;\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\n\nimport {\n getChatProfile,\n getComposingHomie,\n} from \"../../../selectors/chat/chat\";\n\nimport ChatHeader from \"../shared/ChatHeader\";\nimport { BackToRootButton } from \"../shared/BackButton\";\nimport QuickChatSelect from \"./QuickChatSelect\";\nimport ChatRoomSettingsButton from \"./ChatRoomSettingsButton\";\nimport Chat from \"./Chat\";\nimport MessageComposer from \"./MessageComposer\";\n\nconst MobileAppWrapper = ({ children }) => {\n if (window.isApp) {\n return
    {children}
    ;\n } else {\n return <>{children};\n }\n};\n\nconst ChatRoom = ({ chatId, name, composingHomie }) => {\n return (\n \n }\n ButtonRight={}\n />\n \n \n \n \n );\n};\nChatRoom.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string,\n composingHomie: PropTypes.shape({\n name: PropTypes.string,\n }),\n};\n\nexport default connect((state, { chatId }) => ({\n ...getChatProfile(state, { chatId }),\n composingHomie: getComposingHomie(state, { chatId }),\n}))(ChatRoom);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\n\nimport {\n getUnreadChatsCount,\n getUnreadChatsCountWithoutChat,\n} from \"../../../selectors/chat/chat\";\nimport Notification from \"./Notification\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowLeft } from \"@fortawesome/pro-solid-svg-icons\";\n\nconst BackButton = ({ onClick, counter }) => (\n \n \n \n \n);\nBackButton.propTypes = {\n counter: PropTypes.number,\n chatId: PropTypes.string,\n};\n\nconst BackToRootButton = connect(\n (state, { chatId }) => ({\n counter: chatId\n ? getUnreadChatsCountWithoutChat(state, { chatId })\n : getUnreadChatsCount(state),\n }),\n (dispatch) => ({\n onClick: () =>\n dispatch({ type: \"chat/NAVIGATE\", payload: { route: \"root\" } }),\n }),\n)(BackButton);\n\nexport { BackToRootButton };\n\nexport default BackButton;\n","import React, { ReactElement, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport ChatImage from \"./ChatImage\";\nimport classNames from \"classnames\";\nimport { get } from \"lodash\";\n\ntype ChatHeaderArgs = {\n chatId: string;\n title: string;\n subtitle: string;\n ButtonLeft: ReactElement;\n ButtonRight: ReactElement;\n};\n\nexport default function ChatHeader({\n chatId,\n title,\n subtitle,\n ButtonLeft,\n ButtonRight,\n}: ChatHeaderArgs) {\n const chatStatus = useSelector((state) =>\n get(state, [\"chat\", \"chats\", chatId, \"status\"]),\n );\n\n useEffect(() => {\n if (window.isApp) {\n // hide navigation in chat\n const navigation = document.getElementById(\"main-navigation\");\n\n if (navigation) {\n navigation.classList.remove(\"tixxt__navigation\"); // remove styles otherwise hidden is overwritten\n navigation.hidden = true;\n }\n }\n }, []);\n\n return (\n \n {ButtonLeft ? ButtonLeft : null}\n {chatId ? : null}\n \n \n {title}\n \n\n {subtitle ? (\n <>\n {subtitle}\n \n ) : chatStatus?.text ? (\n \n {chatStatus?.text}\n \n ) : null}\n \n\n {ButtonRight ? ButtonRight : null}\n \n );\n}\n","import React from \"react\";\n\nexport const OnlineStatus = ({ isOnline, isBusy, children }) => (\n
    \n {isBusy ? (\n {I18n.t(\"js.chat.member_busy\")}\n ) : isOnline ? (\n {I18n.t(\"js.chat.member_online\")}\n ) : null}\n {children}\n
    \n);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport classnames from \"classnames\";\n\nimport {\n getChatImageUrl,\n getChatOnlineStatus,\n getChatBusyStatus,\n} from \"../../../selectors/chat/chat\";\nimport { OnlineStatus } from \"./OnlineStatus\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faUser, faUsers } from \"@fortawesome/pro-solid-svg-icons\";\n\nconst ICONS = {\n member: faUser,\n group: faUsers,\n};\n\nconst Image = ({ type, imageUrl, name }) =>\n imageUrl ? (\n \n ) : (\n \n );\n\nImage.propTypes = {\n type: PropTypes.string,\n imageUrl: PropTypes.string,\n name: PropTypes.string,\n};\n\nconst ChatImage = ({ type, imageUrl, name, isOnline, isBusy }) => {\n return (\n
    \n \n \n \n
    \n );\n};\n\nexport default connect((state, { chatId }) => ({\n imageUrl: getChatImageUrl(state, chatId),\n isOnline: getChatOnlineStatus(state, chatId),\n isBusy: getChatBusyStatus(state, chatId)?.type === \"busy\",\n type: chatId.split(\"/\")[0],\n}))(ChatImage);\n","import React from \"react\";\n\nexport default function Composing() {\n return (\n \n \n \n \n );\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport classnames from \"classnames\";\n\nconst Notification = ({ className, counter }) =>\n counter ? (\n \n {counter === -1\n ? I18n.t(\"js.chat.notifications.new\")\n : counter > 99\n ? \"99+\"\n : counter}\n \n ) : null;\n\nNotification.propTypes = {\n counter: PropTypes.number,\n};\n\nexport default Notification;\n","import { IconProp } from \"@fortawesome/fontawesome-svg-core\";\nimport classNames from \"classnames\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React from \"react\";\nimport useTooltip from \"../../hooks/useTooltip\";\n\nexport default function DirectoryActionButton({\n disabled,\n icon,\n text,\n onClick,\n type,\n title,\n}: {\n icon: { icon: IconProp; className?: string };\n text: string;\n type?: \"primary\" | \"danger\";\n onClick?: () => void;\n disabled?: boolean;\n title?: string;\n}) {\n const tooltipRef = useTooltip();\n return (\n {\n e.preventDefault();\n onClick && onClick();\n }}\n >\n \n {text}\n \n );\n}\n","import React from \"react\";\nimport { ceil, toString } from \"lodash\";\nimport Pagination from \"components/shared/Pagination\";\nimport { setSearchParam } from \"helpers/tixxt-router\";\nimport PageLoading from \"components/shared/PageLoading\";\n\ntype DirectoryPaginationArgs = {\n currentPage: number;\n isLoading: boolean;\n pagination?: {\n total: number;\n page: number;\n per_page: number;\n };\n children: React.ReactNode;\n};\n\nexport default function DirectoryPagination({\n pagination,\n currentPage,\n isLoading,\n children,\n}: DirectoryPaginationArgs) {\n const PaginationComponent = () => (\n
    \n setSearchParam(\"page\", toString(page))}\n loading={isLoading}\n />\n
    \n );\n\n if (pagination && pagination.total > 5000) {\n return

    {I18n.t(\"js.directory.too_large_collection\")}

    ;\n }\n\n return (\n <>\n \n {isLoading ? (\n \n ) : (\n
    \n {children}\n
    \n )}\n \n \n );\n}\n","import React from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\nimport { map } from \"lodash\";\nimport classNames from \"classnames\";\n\ntype DirectoryRowArgs = {\n title: string;\n url: string;\n imageUrl?: string;\n fallbackIcon?: IconProp;\n actions?: React.ReactNode;\n badges?: React.ReactNode;\n children?: React.ReactNode;\n titleIcons?: { icon: IconProp; title: string }[];\n};\n\nexport default function DirectoryRow({\n title,\n url,\n imageUrl,\n fallbackIcon,\n children,\n actions,\n badges,\n titleIcons,\n}: DirectoryRowArgs) {\n return (\n
    \n
    \n
    \n {imageUrl ? (\n \n ) : (\n fallbackIcon && (\n
    \n \n
    \n )\n )}\n
    \n
    \n
    \n
    \n {titleIcons &&\n map(titleIcons, (icon, index) => (\n \n ))}\n \n {title}\n \n
    {badges && badges}
    \n
    \n
    \n {children}\n
    \n
    \n {actions && (\n
    \n *]:w-full max-sm:w-full\",\n { \"btn-group\": window.innerWidth > 640 },\n )}\n >\n {actions}\n
    \n
    \n )}\n \n );\n}\n","import { IconProp } from \"@fortawesome/fontawesome-svg-core\";\nimport classNames from \"classnames\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React from \"react\";\n\ntype BadgeArgs = {\n tooltipTitle: string;\n title: string;\n className?: string;\n icon?: IconProp;\n style?: { [key: string]: string };\n};\n\nexport default function DirectoryRowBadge({\n tooltipTitle,\n title,\n icon,\n className,\n style,\n}: BadgeArgs) {\n return (\n \n {icon && }\n {title}\n \n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { range, map, isString } from \"lodash\";\nimport classnames from \"classnames\";\n\nconst FILTER = map(range(65, 91), (charCode) => String.fromCharCode(charCode));\n\ntype GlossaryArgs = {\n onSelect: (letter: string) => void;\n selectedLetter?: string;\n};\n\nexport default function Glossary({ onSelect, selectedLetter }: GlossaryArgs) {\n const [selected, setSelected] = useState(selectedLetter || \"\");\n\n function select(\n e: React.MouseEvent,\n filter: string,\n ) {\n e.preventDefault();\n setSelected(filter);\n onSelect(filter);\n }\n\n useEffect(() => {\n isString(selectedLetter) && setSelected(selectedLetter);\n }, [selectedLetter]);\n\n return (\n
    \n
    \n
    \n
    \n select(e, \"\")}\n >\n {I18n.t(\"js.apps.app.glossary.all_link\")}\n \n {map(FILTER, (filter) => (\n select(e, filter)}\n >\n {filter}\n \n ))}\n
    \n
    \n
    \n
    \n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faMagnifyingGlass,\n faFilter,\n} from \"@fortawesome/pro-regular-svg-icons\";\nimport classNames from \"classnames\";\nimport { isEmpty, omit } from \"lodash\";\nimport Glossary from \"components/shared/Glossary\";\nimport { setSearchParam } from \"helpers/tixxt-router\";\nimport { Filter } from \"components/directory/types\";\n\ntype DirectoryToolbarArgs = {\n isLoading: boolean;\n filter: Filter;\n searchField: string;\n actions?: React.ReactNode;\n showFilterInitially?: boolean;\n children?: React.ReactNode;\n};\n\nexport default function DirectoryToolbar({\n isLoading,\n filter,\n actions,\n searchField,\n showFilterInitially = false,\n children,\n}: DirectoryToolbarArgs) {\n const hasActiveFilters = !isEmpty(omit(filter, [\"q\", \"page\"]));\n const [showFilter, setShowFilter] = useState(\n showFilterInitially || hasActiveFilters,\n );\n const [queryString, setQueryString] = useState(filter.q || \"\");\n const [searchedString, setSearchedString] = useState(filter.q || \"\");\n const [selectedLetter, selectLetter] = useState(filter.letter || \"\");\n\n useEffect(() => {\n if (hasActiveFilters) {\n setShowFilter(showFilterInitially || hasActiveFilters);\n }\n }, [hasActiveFilters]);\n\n function onSearch(e?: any) {\n e.preventDefault();\n\n if (!isEmpty(queryString)) {\n selectLetter(\"\");\n }\n\n setSearchedString(queryString);\n }\n\n useEffect(() => {\n setSearchParam(\"q\", searchedString);\n setSearchParam(\"page\", \"\");\n }, [searchedString]);\n\n useEffect(() => {\n setSearchParam(\"letter\", selectedLetter);\n setSearchParam(\"page\", \"\");\n }, [selectedLetter]);\n\n // reset q and letter filters for navigating between group tabs\n useEffect(() => {\n setQueryString(filter.q || \"\");\n selectLetter(filter.letter || \"\");\n }, [filter]);\n\n return (\n
    \n
    \n
    \n setQueryString(e.target.value)}\n onKeyDown={(e) => e.key === \"Enter\" && onSearch(e)}\n disabled={isLoading}\n />\n \n \n \n
    \n
    \n
    \n {\n e.preventDefault();\n setShowFilter(!showFilter);\n }}\n disabled={isLoading}\n >\n \n \n
    \n {actions && actions}\n
    \n
    \n {showFilter && (\n
    \n
    \n {\n setQueryString(\"\");\n setSearchedString(\"\");\n selectLetter(letter);\n }}\n selectedLetter={selectedLetter}\n />\n
    \n {children}\n
    \n )}\n
    \n );\n}\n","import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCirclePlus } from \"@fortawesome/pro-regular-svg-icons\";\nimport React from \"react\";\nimport { Filter } from \"components/directory/types\";\nimport DirectoryToolbar from \"components/directory/DirectoryToolbar\";\nimport { setSearchParam } from \"helpers/tixxt-router\";\n\ntype ToolBarArgs = {\n isLoading: boolean;\n filter: Filter;\n};\n\nexport default function ToolBar({ isLoading, filter }: ToolBarArgs) {\n return (\n \n {Preload.current_member?.can.create_channels && (\n \n \n {I18n.t(\"js.directory.headline_tools.create_channel\")}\n \n )}\n \n }\n >\n
    \n
    \n \n
    \n
    \n \n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport {\n faBullhorn,\n faBellSlash,\n faBell,\n} from \"@fortawesome/pro-regular-svg-icons\";\n\nimport DirectoryRow from \"components/directory/DirectoryRow\";\nimport DirectoryActionButton from \"components/directory/DirectoryActionButton\";\nimport DirectoryRowBadge from \"components/directory/DirectoryRowBadge\";\nimport useChannelSubscription from \"components/shared/hooks/useChannelSubscriptionToggle\";\n\nexport type Channel = {\n id: string;\n slug: string;\n title: string;\n description: string;\n status: string;\n image: { _id: string };\n subscribers_count: number;\n is_subscribed: boolean;\n};\n\nexport default function ChannelRow({\n slug,\n title,\n description,\n image,\n subscribers_count,\n is_subscribed,\n status,\n}: Channel) {\n const [isSubscribed, setIsSubscribed] = useState(is_subscribed);\n const [subscribersCount, setSubscribersCount] = useState(subscribers_count);\n const { subscribeChannel, unsubscribeChannel } = useChannelSubscription({\n channelSlug: slug,\n onSuccessFunction: (subscribed) => {\n setIsSubscribed(subscribed);\n setSubscribersCount(\n subscribed ? subscribersCount + 1 : subscribersCount - 1,\n );\n },\n });\n\n // to update row on page navigation\n useEffect(() => {\n setIsSubscribed(is_subscribed);\n setSubscribersCount(subscribers_count);\n }, [is_subscribed, subscribers_count]);\n\n return (\n \n )\n }\n actions={\n \n isSubscribed ? unsubscribeChannel() : subscribeChannel()\n }\n />\n }\n >\n

    \n {I18n.t(\"js.directory.channel_row.subscriptions_count\", {\n count: subscribersCount,\n })}\n

    \n

    \n {description}\n

    \n \n );\n}\n","import React from \"react\";\nimport { useQuery } from \"react-query\";\nimport ToolBar from \"components/directory/channels/ToolBar\";\nimport { isEmpty, map, toNumber } from \"lodash\";\nimport { stringify } from \"query-string\";\nimport ChannelRow, { Channel } from \"components/directory/channels/ChannelRow\";\nimport DirectoryPagination from \"components/directory/DirectoryPagination\";\nimport useDirectoryFilter from \"../hooks/useDirectoryFilter\";\nimport { Pagination } from \"components/directory/types\";\n\ntype ChannelData = {\n pagination: Pagination;\n entries: Channel[];\n};\n\nexport default function ChannelListView() {\n const { filter, currentPage } = useDirectoryFilter();\n\n const { data, isLoading } = useQuery(\n `/directory/channels.json?${stringify(filter)}`,\n );\n\n return (\n
    \n \n \n {data && !isEmpty(data?.entries)\n ? map(data.entries, (channel) => (\n \n ))\n : I18n.t(\"js.directory.empty_collection\")}\n \n
    \n );\n}\n","import { useSearchParams } from \"helpers/tixxt-router\";\nimport { Filter } from \"components/directory/types\";\n\nexport default function useDirectoryFilter(): {\n filter: Filter;\n currentPage: string;\n} {\n const [searchParams] = useSearchParams();\n\n const currentPage = searchParams.get(\"page\") || \"1\";\n\n function getCurrentFilter() {\n const currentFilter = {};\n\n searchParams.forEach((value, key) => (currentFilter[key] = value));\n\n return currentFilter;\n }\n\n return { filter: getCurrentFilter(), currentPage };\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { get, isEmpty, map } from \"lodash\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faFolder, faChevronRight } from \"@fortawesome/pro-solid-svg-icons\";\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 ? : parentFolder.name}\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 React, { useState } from \"react\";\nimport { map, split, get, orderBy, includes, isEmpty } from \"lodash\";\n\nimport useFolderResource from \"components/files/hooks/useFolderResource\";\nimport Modal from \"components/shared/Modal\";\nimport Sorter from \"components/shared/tables/Sorter\";\nimport FolderRow from \"./table/FolderRow\";\nimport { Folder } from \"../../@types/files\";\n\ntype FolderSelectModalArgs = {\n currentRootFolder: { id: string; namespace: string };\n modalTitle: string;\n closeModal: () => void;\n onSelectFolder: (folder: Folder) => void;\n selectedItemIds: string[];\n};\n\nfunction FolderSelectModal({\n currentRootFolder,\n closeModal,\n onSelectFolder,\n selectedItemIds,\n modalTitle,\n}: FolderSelectModalArgs) {\n const [sortBy, setSortBy]: [\n [string, number],\n (sortBy: [string, number]) => void,\n ] = useState([\"name\", 1]);\n const { loading, currentFolder, handleNavigate, breadcrumb } =\n useFolderResource({ currentRootFolder });\n\n function handleSort(sortBy) {\n setSortBy(sortBy);\n }\n\n function selectFolder(e) {\n e.preventDefault();\n onSelectFolder(currentFolder);\n closeModal();\n }\n\n return (\n {\n e.preventDefault();\n closeModal();\n },\n }}\n >\n {breadcrumb}\n \n \n \n \n \n \n \n {loading ? (\n \n \n \n ) : isEmpty(get(currentFolder, \"subfolders\")) ? (\n \n \n \n ) : (\n map(\n orderBy(\n get(currentFolder, \"subfolders\"),\n sortBy[0],\n sortBy[1] === -1 ? \"desc\" : \"asc\",\n ),\n (folder: Folder) => (\n {\n e.preventDefault();\n handleNavigate({ id: folder.id });\n }}\n />\n ),\n )\n )}\n \n
    \n \n \n
    \n {I18n.t(\"js.files.folder.loading\")}\n
    \n {I18n.t(\"js.files.folder.no_subfolders_message\")}\n
    \n \n );\n}\n\nexport default FolderSelectModal;\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { map, filter, get, isEmpty } from \"lodash\";\n\nimport FieldError from \"components/appCreator/items/form/FieldError\";\nimport FolderSelectModal from \"./FolderSelectModal\";\nimport preventDefault from \"../../helpers/components/preventDefault\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faUsers,\n faFolder,\n faSpinner,\n faChevronRight,\n faFolderOpen,\n} from \"@fortawesome/pro-regular-svg-icons\";\nimport { useFetchFolder } from \"./api\";\n\nconst getIcon = (type) => {\n switch (type) {\n case \"root_folder.group\":\n return ;\n default:\n return ;\n }\n};\n\nfunction SelectedFolder({ unselectFolder, folderId }) {\n const { data: currentFolder, isLoading: loading } = useFetchFolder(folderId);\n\n if (isEmpty(currentFolder) || loading) {\n return (\n
    \n \n
    \n );\n }\n\n return (\n
    \n
    {getIcon(currentFolder.i18n_type)}
    \n
    \n {map(get(currentFolder, [\"folder_path\"], []), (folder) => (\n \n {folder.name}\n \n \n ))}\n {currentFolder ? {currentFolder.name} : null}\n
    \n
    \n {unselectFolder ? (\n unselectFolder({ id: folderId }))}\n title={I18n.t(\"js.remove\")}\n />\n ) : null}\n
    \n
    \n );\n}\n\nSelectedFolder.propTypes = {\n folderId: PropTypes.string,\n unselectFolder: PropTypes.func,\n};\n\nfunction FolderSelectionField({ input, meta, defaultFolder }) {\n const [showModal, setShowModal] = useState(false);\n\n const unselectFolder = (targetFolder) => {\n input.onChange(filter(input.value, (id) => id !== targetFolder.id));\n };\n\n const selectFolder = (targetFolder) => {\n if (input.value.indexOf(targetFolder.id) !== -1) return;\n\n input.onChange([...input.value, targetFolder.id]);\n };\n\n return (\n <>\n
    \n {showModal ? (\n setShowModal(false)}\n />\n ) : null}\n \n {map(input.value, (folderId) => (\n \n ))}\n
    \n setShowModal(!showModal))}\n >\n \n {I18n.t(\"js.files.folder_selection.button\")}\n \n
    \n
    \n \n {meta.error && }\n \n {I18n.t(\"js.files.file.folder_selection.hint\")}\n \n \n );\n}\n\nFolderSelectionField.propTypes = {\n ...FieldError.propTypes,\n defaultFolder: PropTypes.object,\n};\n\nexport default FolderSelectionField;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { TagUrlContext } from \"../appCreator/properties/show/Tag\";\nimport { SelectionUrlContext } from \"../appCreator/properties/show/Selection\";\nimport { searchUrl } from \"../globalSearch/urls\";\n\nconst tagUrl =\n (contextUrl) =>\n ({ name }) =>\n searchUrl({ contextUrl, module: \"files\", filters: { tag: name } });\n\nconst selectionUrl =\n (contextUrl) =>\n ({ value, property }) =>\n searchUrl({\n contextUrl,\n module: \"files\",\n filters: {\n [`profile.${property.name}`]: value,\n },\n });\n\nfunction UrlContextProvider({ contextUrl, children }) {\n return (\n \n \n {children}\n \n \n );\n}\nUrlContextProvider.propTypes = {\n contextUrl: PropTypes.string,\n children: PropTypes.node,\n};\n\nexport default UrlContextProvider;\n","import { useMutation, UseMutationOptions, useQuery } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\nimport { map } from \"lodash\";\n\nexport const useFetchFolder = (id, namespace = \"folders\") => {\n return useQuery(`/api/storage/${namespace}/${id}?limit=1000`);\n};\n\ntype useRemoveFilesAndFolders = {\n type: \"files\" | \"folders\";\n body: { [key: string]: string[] };\n}[];\n\nexport function useRemoveFilesAndFolders(\n options?: UseMutationOptions,\n) {\n return useMutation(\n (requests) =>\n Promise.all(\n map(requests, ({ type, body }) =>\n fetchApi(`/api/storage/${type}`, { method: \"DELETE\", body }),\n ),\n ),\n options,\n );\n}\n\ntype useMoveFilesAndFoldersArgs = {\n targetFolderId: string;\n requests: {\n type: \"files\" | \"folders\";\n body: {\n [key: string]: string | string[];\n };\n }[];\n};\n\nexport function useMoveFilesAndFolders(\n options?: UseMutationOptions,\n) {\n return useMutation(\n ({ requests }) =>\n Promise.all(\n map(requests, ({ type, body }) =>\n fetchApi(`/api/storage/${type}/move`, { method: \"POST\", body }),\n ),\n ),\n options,\n );\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\";\n\nimport preventDefault from \"../../../helpers/components/preventDefault\";\nimport FileSelectModal from \"./FileSelectModal\";\nimport { FileData } from \"components/../@types/files\";\n\ntype FilesEditorViewArgs = {\n currentRootFolder: unknown;\n onSelectFiles: (selectedFiles: FileData[]) => void;\n disabled?: boolean;\n};\n\nexport default function FilesEditorView({\n currentRootFolder,\n onSelectFiles,\n disabled = false,\n}: FilesEditorViewArgs) {\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 disabled={disabled}\n >\n \n {I18n.t(\"js.files.file_selector.select\")}\n \n {showModal && (\n \n )}\n \n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"DocumentActionButton\":\"uWGQaky3neNrdOah3pmt\",\"DocumentActionsSupText\":\"R7FbUMLG4U2lGEqKCvfl\"};","import styles from \"./documents.module.css\";\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport classNames from \"classnames\";\n\nfunction DocumentAction({\n fileId,\n action,\n icon,\n type,\n showReviewChanges,\n disabled,\n}) {\n const trackView = () => {\n fetch(`/api/storage/files/${fileId}/track_view`, {\n method: \"POST\",\n credentials: \"include\",\n });\n };\n\n const El = disabled\n ? ({ children, ...props }) => {children}\n : ({ children, ...props }) => (\n \n {children}\n \n );\n\n return (\n \n {icon ? <>{icon} : null}\n {I18n.t(`js.files.show.toolbar.wopi.actions.${action}`)}\n \n );\n}\n\nDocumentAction.propTypes = {\n fileId: PropTypes.string.isRequired,\n action: PropTypes.string.isRequired,\n type: PropTypes.oneOf([\"wopi\", \"docs\"]),\n icon: PropTypes.node,\n showReviewChanges: PropTypes.bool,\n disabled: PropTypes.bool,\n};\n\nexport default DocumentAction;\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 { faEye, faCloudDownload } from \"@fortawesome/pro-regular-svg-icons\";\nimport { faFlagCheckered, faLock } from \"@fortawesome/pro-solid-svg-icons\";\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 finalizedAt,\n lockedUntil,\n lockedById,\n navigateDisabled,\n}) {\n let displayName = name;\n const Preload = window.Preload;\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 {finalizedAt ? (\n \n ) : null}\n {lockedUntil && lockedById != Preload.current_member.id ? (\n \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 finalizedAt: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.instanceOf(Date),\n ]),\n lockedUntil: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.instanceOf(Date),\n ]),\n lockedById: PropTypes.string,\n navigateDisabled: PropTypes.bool,\n};\n\nfunction FileInfo({\n id,\n name,\n handleNavigate,\n version,\n size,\n author,\n updatedAt,\n finalizedAt,\n lockedUntil,\n lockedById,\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 finalizedAt,\n lockedUntil,\n lockedById,\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 finalizedAt: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.instanceOf(Date),\n ]),\n lockedUntil: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.instanceOf(Date),\n ]),\n lockedById: PropTypes.string,\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 useExtraColumns = ({ 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 useExtraColumns;\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 useExtraColumns from \"./useExtraColumns\";\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 } = useExtraColumns({\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, { 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 \"../../shared/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 finalizedAt,\n lockedUntil,\n lockedById,\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 \"../../shared/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 { find, last } from \"lodash\";\nimport PropTypes from \"prop-types\";\n\nconst pickImage = (images, [wantedWidth, wantedHeight]) =>\n (\n find(\n images,\n ({ width, height }) => width >= wantedWidth && height >= wantedHeight,\n ) || last(images)\n )?.url;\n\npickImage.imagesPropType = PropTypes.arrayOf(\n PropTypes.shape({\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n url: PropTypes.string.isRequired,\n }),\n);\n\nexport default pickImage;\n","// extracted by mini-css-extract-plugin\nexport default {\"globalSearchFilterBar\":\"_fp76SAfdhaug1Hjz5T5\",\"searchQueryResult\":\"xaasY4OEXTe4TLQHjBLK\",\"folders_query\":\"T2gYhzIq8bhgqFYz0io4\",\"files_query\":\"Eq3k6MGyro3TB6dRMnat\",\"showMore\":\"o1ERNqMyxbAmCAan0v8g\",\"hit\":\"k1mjNfg6NSXn2_KrQBKw\",\"hitLeft\":\"stnlPJzy6rFaPaWvUcW4\",\"hitRight\":\"E3tSWinjAmbXA3JbQgyi\",\"hitMeta\":\"LybkatJxMmOg57KpoFoB\",\"fileHitShowIcon\":\"wVLPcGG8NYdmm81heKDZ\",\"hitTitle\":\"q9HEfyAWgZ5vClKqcrVh\",\"hitContent\":\"T64FxsKY9taHW5SdYi3W\",\"FileHit\":\"LknrguzWpxv4qpPMjKjZ\",\"FileHitMeta\":\"RxeZpFI_6VqNYQyGzqLp\",\"FolderHit\":\"arFtr4GPlYK7BoJSbIYs LknrguzWpxv4qpPMjKjZ\",\"FolderHitMeta\":\"TsnTBU7QwIfKNxzmpSRq RxeZpFI_6VqNYQyGzqLp\",\"FoundIn\":\"f2GymxUgzD06ByUmYHuA LybkatJxMmOg57KpoFoB\",\"Highlights\":\"sSh4Z9acCvZ1k8BXOlfc\"};","import React from \"react\";\n\ninterface NoteTypes {\n html_content: string;\n}\n\nfunction Note({ html_content }: NoteTypes) {\n return (\n 0\n ? $.truncate(html_content, { length: 600 })\n : `${I18n.t(\n \"js.global_search.no_content\",\n )}`,\n }}\n />\n );\n}\n\nexport default Note;\n","import React from \"react\";\n\ninterface QuestionTypes {\n html_content: string;\n answer_count: number;\n}\n\nfunction Question(props: QuestionTypes) {\n return (\n
    \n
    \n \n
    \n \n
    \n
    \n
    \n );\n}\n\nexport default Question;\n","import React from \"react\";\nimport { map } from \"lodash\";\n\ninterface SurveyProps {\n html_content: string;\n options: Array<{\n id: string;\n label: string;\n percent: number;\n }>;\n}\n\nfunction Survey(props: SurveyProps) {\n return (\n
    \n
    \n \n
    \n
    \n
    \n
    \n
      \n {map(props.options, (option) => (\n
    • \n
      \n \n \n {`${option.percent}%`}\n \n
      \n \n  \n \n
    • \n ))}\n
    \n
    \n
    \n
    \n
    \n );\n}\n\nexport default Survey;\n","import React from \"react\";\nimport { map, isEmpty } from \"lodash\";\nimport moment from \"moment-timezone\";\n\nimport pickImage from \"../../../helpers/pickImage\";\n\ninterface AppointmentTypes {\n html_url: string;\n name: string;\n calendars: Array<{\n id: string;\n color: string;\n name: string;\n }>;\n date: {\n start: string;\n time_zone: string;\n };\n image: {\n sources: Array<{\n width: number;\n height: number;\n url: string;\n }>;\n original_filename: string;\n };\n description?: string;\n location?: {\n name?: string;\n };\n}\n\nfunction Appointment(props: AppointmentTypes) {\n return (\n
    \n
    \n

    \n \n {props.name}\n \n

    \n
      \n {map(props.calendars, (calendar) => (\n
    1. \n \n

      {calendar.name}

      \n
    2. \n ))}\n
    \n

    \n \n \n {`(${moment\n .tz(props.date.start, props.date.time_zone)\n .format(\"zZ\")})`}\n \n

    \n
    \n {!isEmpty(props.image) ? (\n
    \n \n
    \n ) : null}\n

    \n

    {props.description ? props.description : null}

    \n

    \n

    \n {props.location?.name ? (\n
    \n
    \n {props.location.name}\n
    \n
    \n ) : null}\n
    \n
    \n );\n}\n\nexport default Appointment;\n","// extracted by mini-css-extract-plugin\nexport default {\"activityAnswerCount\":\"d1Dbte4s9JTi25IzlWAb\",\"calendarName\":\"yjcCjFT1x41fWnSu127F\",\"activityImage\":\"AeJkmbz2mmWybGtXvKBK\",\"imageThumbs\":\"FV6DSRRQlRbCyuk0Z8ue\"};","import React from \"react\";\nimport { map } from \"lodash\";\n\nimport pickImage from \"../../../helpers/pickImage\";\nimport styles from \"../activitystreams.module.css\";\n\nexport interface ImageAttachmentsTypes {\n images: Array<{ sources: string; original_filename: string; id: string }>;\n activityUrl: string;\n}\n\nfunction ImageAttachments({ images, activityUrl }: ImageAttachmentsTypes) {\n return (\n
    \n
    \n
    \n \n \n \n
    \n
    \n {map(images, (img, index: number) =>\n index != 0 && index <= 7 ? (\n
    \n \n
    \n ) : null,\n )}\n {images.length > 7 ? (\n
    \n ...\n
    \n ) : null}\n
    \n
    \n
    \n );\n}\n\nexport default ImageAttachments;\n","import React from \"react\";\n\ninterface FileAttachmentsTypes {\n filesCount: number;\n}\n\nfunction FileAttachments({ filesCount }: FileAttachmentsTypes) {\n return (\n
    \n \n \n {I18n.t(\"js.global_search.activities.attachments.counting\", {\n count: filesCount,\n })}\n \n
    \n );\n}\n\nexport default FileAttachments;\n","import React from \"react\";\nimport { isEmpty } from \"lodash\";\n\nexport interface LinkAttachmentTypes {\n image?: string;\n title?: string;\n href?: string;\n text?: string;\n}\n\nfunction LinkAttachment({ image, title, href, text }: LinkAttachmentTypes) {\n return (\n
    \n
    \n {!isEmpty(image) ? (\n
    \n {title}\n
    \n ) : null}\n \n {title && (\n

    \n \n {title}\n \n

    \n )}\n {href && (\n

    \n \n {href}\n \n

    \n )}\n

    {text}

    \n
    \n
    \n \n );\n}\n\nexport default LinkAttachment;\n","import React from \"react\";\nimport { map } from \"lodash\";\n\nexport interface TagAttachmentsTypes {\n tags: Array<{\n id: string;\n name: string;\n }>;\n}\n\nfunction TagAttachments({ tags }: TagAttachmentsTypes) {\n return (\n
    \n {map(tags, (tag) => (\n \n \n \n ))}\n
    \n );\n}\n\nexport default TagAttachments;\n","import React from \"react\";\nimport { map } from \"lodash\";\n\nimport pickImage from \"../../../helpers/pickImage\";\n\nexport interface MentionAttachmentsTypes {\n mentions: Array<{\n id: string;\n html_url: string;\n display_name: string;\n images: Array<{\n width: number;\n height: number;\n url: string;\n }>;\n }>;\n}\n\nfunction MentionAttachments({ mentions }: MentionAttachmentsTypes) {\n return (\n
    \n
      \n {map(mentions, (m) => (\n
    • \n \n {m.display_name}\n {m.display_name}\n \n
    • \n ))}\n
    \n
    \n );\n}\n\nexport default MentionAttachments;\n","import type { ImageAttachmentsTypes } from \"./attachments/ImageAttachments\";\nimport type { LinkAttachmentTypes } from \"./attachments/LinkAttachment\";\nimport type { TagAttachmentsTypes } from \"./attachments/TagAttachments\";\nimport type { MentionAttachmentsTypes } from \"./attachments/MentionAttachments\";\n\nimport React from \"react\";\nimport { isEmpty, groupBy } from \"lodash\";\n\nimport ImageAttachments from \"./attachments/ImageAttachments\";\nimport FileAttachments from \"./attachments/FileAttachments\";\nimport LinkAttachment from \"./attachments/LinkAttachment\";\nimport TagAttachments from \"./attachments/TagAttachments\";\nimport MentionAttachments from \"./attachments/MentionAttachments\";\n\ninterface ActivityAttachmentsTypes {\n attachments: Array;\n activityUrl: string;\n}\n\nfunction ActivityAttachments({\n attachments,\n activityUrl,\n}: ActivityAttachmentsTypes) {\n const { image, file, link, tag, person } = groupBy(\n attachments,\n \"type\",\n ) as unknown as {\n image: ImageAttachmentsTypes[\"images\"];\n file: Array;\n link: Array;\n tag: TagAttachmentsTypes[\"tags\"];\n person: MentionAttachmentsTypes[\"mentions\"];\n };\n return (\n
    \n {!isEmpty(image) ? (\n \n ) : null}\n {!isEmpty(person) ? : null}\n {!isEmpty(tag) ? : null}\n {!isEmpty(link) ? : null}\n {!isEmpty(file) ? : null}\n
    \n );\n}\n\nexport default ActivityAttachments;\n","import React from \"react\";\nimport { map, reduce, isEmpty } from \"lodash\";\nimport pickImage from \"helpers/pickImage\";\nimport styles from \"../globalSearch.module.css\";\n\nimport { NameWithProfileField } from \"components/memberships/MemberNameWithAdditions\";\nimport Note from \"../../../components/activitystreams/types/Note\";\nimport Question from \"../../../components/activitystreams/types/Question\";\nimport Survey from \"../../../components/activitystreams/types/Survey\";\nimport Appointment from \"../../../components/activitystreams/types/Appointment\";\nimport ActivityAttachments from \"../../activitystreams/ActivityAttachments\";\nimport Article from \"../../activitystreams/types/Article\";\n\nconst LOOKUP = {\n appointment: Appointment,\n note: Note,\n question: Question,\n schedule: Survey,\n survey: Survey,\n article: Article,\n};\n\nfunction ActivityHit({ actor, object, html_url, created_at, activitystreams }) {\n const TypeView = LOOKUP[object.type] || Note;\n const actorImage = (\n \n );\n const nameWithProfileField = (\n \n );\n\n return (\n \n
    \n
    \n {actor.deleted ? (\n {actorImage}\n ) : (\n \n {actorImage}\n \n )}\n
    \n
    \n {actor.deleted ? (\n \n {nameWithProfileField}\n \n ) : (\n \n {nameWithProfileField}\n \n )}\n
    \n
    \n
    \n {reduce(\n map(activitystreams, ({ slug, name, html_url }) => (\n \n {name}\n \n )),\n (prev, curr) => [\n prev,\n \n {\", \"}\n ,\n curr,\n ],\n )}\n
    \n \n \n {moment(created_at).format(\"LLLL\")}\n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n {!isEmpty(object.attachments) ? (\n \n ) : null}\n
    \n {object.answer_count > 0 ? (\n \n {I18n.t(\"js.global_search.activities.answers.counting\", {\n count: object.answer_count,\n })}\n \n ) : null}\n {object.reply_count > 0 ? (\n \n {I18n.t(\"js.global_search.activities.replies.counting\", {\n count: object.reply_count,\n })}\n \n ) : null}\n
    \n
    \n \n \n );\n}\n\nexport default ActivityHit;\n","import React from \"react\";\n\ninterface ArticleTypes {\n title: string;\n teaser: string;\n body: string;\n article_id: string;\n blog_id: string;\n}\n\nfunction Article({ title, teaser, article_id, blog_id }: ArticleTypes) {\n return (\n \n );\n}\n\nexport default Article;\n","import React from \"react\";\nimport { map } from \"lodash\";\n\nimport {\n NameWithProfileField,\n showNameWithProfileField,\n} from \"components/memberships/MemberNameWithAdditions\";\nimport pickImage from \"../../../helpers/pickImage\";\nimport styles from \"../globalSearch.module.css\";\n\nexport default function MessageHit({\n id,\n author,\n subject,\n html_content,\n to,\n created_at,\n}) {\n return (\n
    \n
    \n \n \n \n\n
    \n \n \n \n
    \n {I18n.t(\"js.global_search.messages.to\")} \n {map(\n to,\n ({ id, name, detection_profile_field, is_external }, index) => (\n \n {index > 0 ? , : null}\n \n {showNameWithProfileField({\n name: name,\n detectionProfileField: detection_profile_field,\n isExternal: is_external,\n })}\n \n \n ),\n )}\n
    \n
    \n
    \n \n \n {moment(created_at).format(\"DD.MM.YYYY HH:mm\")}\n \n \n
    \n
    \n\n
    \n
    {subject}
    \n
    \n 0\n ? $.truncate(html_content, { length: 600 })\n : `${I18n.t(\n \"js.global_search.no_content\",\n )}`,\n }}\n />\n
    \n
    \n \n
    \n );\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nexport default function DateRange({ start, end, all_day }) {\n const format = all_day ? \"LLL\" : \"LLLL\";\n\n return (\n
    \n
    \n \n {I18n.t(\"js.global_search.appointments.appointment_start\")}{\" \"}\n \n \n {end\n ? [\n
    ,\n \n {I18n.t(\"js.global_search.appointments.appointment_end\")}{\" \"}\n \n ,\n ]\n : null}\n
    \n
    \n );\n}\n\nDateRange.propTypes = {\n start: PropTypes.string.isRequired,\n end: PropTypes.string,\n all_day: PropTypes.bool,\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { map } from \"lodash\";\n\nfunction CalendarList({ calendars }) {\n return (\n
      \n {map(calendars, ({ id, name, color }) => (\n
    • \n {\" \"}\n \n {name}\n \n
    • \n ))}\n
    \n );\n}\n\nCalendarList.propTypes = {\n calendars: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n color: PropTypes.string.isRequired,\n }),\n ),\n className: PropTypes.string,\n};\n\nexport default CalendarList;\n","import React from \"react\";\nimport styles from \"../globalSearch.module.css\";\nimport DateRange from \"components/appointments/DateRange\";\nimport CalendarList from \"components/appointments/CalendarList\";\nimport classNames from \"classnames\";\n\nfunction AppointmentHit({ html_url, name, html_description, date, calendars }) {\n return (\n
    \n
    \n
    \n \n {name}\n \n \n \n
    \n
    \n {html_description ? (\n \n ) : null}\n \n \n {I18n.t(\"js.global_search.messages.show_appointment\")}\n \n
    \n \n );\n}\n\nexport default AppointmentHit;\n","import React from \"react\";\nimport styles from \"../globalSearch.module.css\";\nimport CalendarList from \"components/appointments/CalendarList\";\nimport classNames from \"classnames\";\n\nfunction RecurringAppointmentHit({\n html_url,\n name,\n html_description,\n date,\n calendars,\n recurrence_pattern,\n}) {\n return (\n
    \n
    \n
    \n \n {name}\n \n \n
    \n \n
    \n
    \n {I18n.t(\"js.calendars.recurring_appointment.subtitle\")}\n
    \n
    \n {I18n.t(\"js.calendars.recurring_appointment.starts_at\")}{\" \"}\n \n
    \n
    \n {recurrence_pattern.recurrence_end_time\n ? I18n.t(\"js.calendars.recurring_appointment.ends_at\") +\n (\n \n )\n : I18n.t(\"js.calendars.recurring_appointment.no_end\")}\n
    \n
    \n {I18n.t(\"js.calendars.recurring_appointment.frequency\")}{\" \"}\n {I18n.t(\n \"js.calendars.appointment.recurrence-pattern.frequency.\" +\n recurrence_pattern.recurrence_frequency,\n )}\n
    \n
    \n
    \n
    \n
    \n {html_description ? (\n \n ) : null}\n \n \n {I18n.t(\"js.global_search.messages.show_recurring_appointment\")}\n \n
    \n \n );\n}\n\nexport default RecurringAppointmentHit;\n","import React from \"react\";\nimport styles from \"../globalSearch.module.css\";\nimport DateRange from \"components/appointments/DateRange\";\nimport CalendarList from \"components/appointments/CalendarList\";\nimport classNames from \"classnames\";\n\nfunction ModifiedRecurringAppointmentHit({\n html_url,\n name,\n html_description,\n date,\n calendars,\n recurring_appointment,\n}) {\n return (\n
    \n
    \n
    \n \n {name}\n \n {recurring_appointment ? (\n \n (\n \n \n {recurring_appointment.name}\n \n )\n \n ) : null}\n \n \n
    \n
    \n {html_description ? (\n \n ) : null}\n \n \n {I18n.t(\"js.global_search.messages.show_appointment\")}\n \n
    \n \n );\n}\n\nexport default ModifiedRecurringAppointmentHit;\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport styles from \"../globalSearch.module.css\";\n\nexport default function Highlights({ highlights }) {\n const [index, setIndex] = useState(0);\n const highlight = highlights[index];\n const total = highlights.length;\n\n function nextHighlight(event) {\n event.preventDefault();\n setIndex(Math.min(index + 1, total - 1));\n }\n function prevHighlight(event) {\n event.preventDefault();\n setIndex(Math.max(index - 1, 0));\n }\n\n return (\n \n \n
    \n \n \n \n \n
    \n {`${index + 1} / ${total}`}\n \n \n \n \n \n \n \n );\n}\n\nHighlights.propTypes = {\n highlights: PropTypes.arrayOf(PropTypes.string).isRequired,\n};\n","import React from \"react\";\n\nexport type PaginationState = {\n page: null | number;\n sort_by: null | string;\n enabled: boolean;\n};\nconst SearchQueryPaginationContext = React.createContext<\n PaginationState & { setPaginationState: (setPaginationState) => void }\n>({\n page: null,\n sort_by: null,\n enabled: false,\n setPaginationState: function () {\n return;\n },\n});\n\nexport default SearchQueryPaginationContext;\n","import React, { useContext } from \"react\";\nimport { map, reduceRight, get, isEmpty } from \"lodash\";\nimport classNames from \"classnames\";\n\nimport { FolderContentsTableWithProfile } from \"../../files/table/FolderContentsTable\";\nimport FileRow from \"../../files/table/FileRow\";\nimport Highlights from \"./Highlights\";\nimport styles from \"../globalSearch.module.css\";\nimport UrlContextProvider from \"../../files/UrlContextProvider\";\nimport { parseSortByParam, serializeSortBy } from \"../urls\";\nimport SearchQueryPaginationContext from \"../SearchQueryPaginationContext\";\n\nexport function FoundIn({ found_in }) {\n return map(found_in, (path, i) => (\n
    \n in \n {reduceRight(\n map(path, ({ id, name }) => (\n \n {name}\n \n )),\n (prev, curr) => [\n prev,\n \n {\" / \"}\n ,\n curr,\n ],\n )}\n
    \n ));\n}\n\nexport function MetaRow({ extraColumns, children, className, striped }) {\n return (\n \n \n {children}\n \n );\n}\n\nfunction FileHit({ found_in, meta, striped, ...rowProps }) {\n const highlights = get(meta, [\"highlight\", \"attachment.content\"]);\n\n return (\n <>\n \n \n {isEmpty(found_in) ? null : }\n {isEmpty(highlights) ? null : }\n \n \n );\n}\n\nexport default function FileHits({ hits, meta, groupSlug }) {\n const { sort_by, setPaginationState } = useContext(\n SearchQueryPaginationContext,\n );\n\n const contents = map(hits, (hit, index) => ({\n ...hit,\n type: \"file\",\n meta: meta[index],\n profile: hit.file_profile,\n }));\n\n return (\n \n {\n setPaginationState({ page: 1, sort_by: serializeSortBy(sortBy) });\n }}\n sortBy={parseSortByParam(sort_by)}\n />\n \n );\n}\n\nFileHits.propTypes = {};\n","import React, { useContext } from \"react\";\nimport { map, isEmpty } from \"lodash\";\n\nimport { FolderContentsTableWithProfile } from \"../../files/table/FolderContentsTable\";\nimport FolderRow from \"../../files/table/FolderRow\";\nimport styles from \"../globalSearch.module.css\";\nimport { MetaRow, FoundIn } from \"./FileHits\";\nimport UrlContextProvider from \"../../files/UrlContextProvider\";\nimport { parseSortByParam, serializeSortBy } from \"../urls\";\nimport SearchQueryPaginationContext from \"../SearchQueryPaginationContext\";\n\nfunction FolderHit({ found_in, striped, ...rowProps }) {\n return (\n <>\n \n \n {isEmpty(found_in) ? null : }\n \n \n );\n}\n\nexport default function FolderHits({ hits, meta, groupSlug }) {\n const { sort_by, setPaginationState } = useContext(\n SearchQueryPaginationContext,\n );\n\n const contents = map(hits, (hit, index) => ({\n ...hit,\n type: \"folder\",\n meta: meta[index],\n profile: hit.folder_profile,\n }));\n\n return (\n \n {\n setPaginationState({ page: 1, sort_by: serializeSortBy(sortBy) });\n }}\n sortBy={parseSortByParam(sort_by)}\n skipFileAttributes\n />\n \n );\n}\n\nFolderHits.propTypes = {};\n","import React from \"react\";\nimport { map, isString, has, includes } from \"lodash\";\nimport pickImage from \"helpers/pickImage\";\nimport {\n profileFieldAvailable,\n ExternalMemberBadge,\n} from \"components/memberships/MemberNameWithAdditions\";\n\nfunction MembershipHit({\n display_name,\n images,\n html_url,\n profile,\n is_network_admin,\n detection_profile_field,\n is_external,\n}) {\n return (\n
    \n \n \n \n
    \n \n {display_name}\n \n
      \n {profileFieldAvailable({\n detectionProfileField: detection_profile_field,\n }) && !includes(profile, detection_profile_field) ? (\n
    • {detection_profile_field}
    • \n ) : null}\n {map(profile, (value, key) => (\n
    • \n {has(value, \"displayValue\")\n ? value.displayValue\n : isString(value)\n ? value\n : null}\n
    • \n ))}\n
    \n
    \n
    \n {is_external ? : null}\n {is_network_admin ? (\n \n {I18n.t(\"js.directory.member_row.administrator_short\")}\n \n ) : null}\n
    \n
    \n );\n}\n\nMembershipHit.propTypes = {};\n\nexport default MembershipHit;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty } from \"lodash\";\nimport pickImage from \"../../../helpers/pickImage\";\n\nfunction GroupHit({\n name,\n images,\n html_url,\n archived,\n access,\n member_count,\n activity_count,\n teaser,\n}) {\n return (\n
    \n \n {isEmpty(images) ? (\n \n ) : (\n \n )}\n \n
    \n \n {archived ? (\n \n ) : null}\n {access === \"closed\" ? (\n \n ) : null}\n {access === \"hidden\" ? (\n \n ) : null}\n \n {name}\n \n \n

    \n {I18n.t(\"js.directory.group_row.member_count\", {\n count: member_count || 0,\n })}\n {\", \"}\n {I18n.t(\"js.directory.group_row.activity\", {\n count: activity_count || 0,\n })}\n

    \n {isEmpty(teaser) ? null : (\n

    \n {teaser}\n

    \n )}\n
    \n
    \n );\n}\n\nGroupHit.propTypes = {\n name: PropTypes.string.isRequired,\n images: pickImage.imagesPropType,\n html_url: PropTypes.string.isRequired,\n};\n\nexport default GroupHit;\n","import React from \"react\";\nimport { isEmpty } from \"lodash\";\nimport PropTypes from \"prop-types\";\n\nimport Highlights from \"./Highlights\";\n\nconst pagePath = ({ group_slug, slug }) => {\n const url = `/pages/${slug}`;\n if (group_slug) {\n return `/groups/${group_slug}${url}`;\n }\n return url;\n};\n\nfunction PageHit({ title, highlight, group_slug, slug }) {\n return (\n
    \n

    \n {title}\n

    \n\n {isEmpty(highlight) || isEmpty(highlight[\"values.content\"]) ? null : (\n \n )}\n
    \n );\n}\n\nPageHit.propTypes = {\n title: PropTypes.string,\n highlight: PropTypes.array,\n group_slug: PropTypes.any,\n slug: PropTypes.any,\n};\n\nexport default PageHit;\n","import React from \"react\";\nimport { useLoadApp, useLoadItem } from \"components/appCreator/api\";\nimport Loading from \"components/shared/Loading\";\nimport { isArray, isObject } from \"lodash\";\n\ntype Props = {\n item_id: string;\n app_id: string;\n frontend_app_url: string;\n};\n\nexport default function ItemHit({\n item_id: itemId,\n app_id: appId,\n frontend_app_url: frontendAppUrl,\n}: Props) {\n const { data: app, isLoading: appLoading } = useLoadApp({\n appId,\n externalAppId: null,\n });\n const { data: item, isLoading: itemLoading } = useLoadItem({\n appId,\n itemId,\n externalItemId: null,\n externalAppId: null,\n });\n\n if (appLoading || itemLoading || !app || !item)\n return (\n
    \n \n
    \n );\n\n const title =\n item?.display_values?.[app.title_property] ||\n item?.values?.[app.title_property];\n\n const imageProp = app.properties.find((p) => p.type == \"image\");\n let imageUrl: string | undefined;\n if (imageProp && item.values[imageProp.name]) {\n const imageValue = item.values[imageProp.name];\n\n if (isArray(imageValue) && isObject(imageValue[0]))\n imageUrl = imageValue[0].url;\n else if (isObject(imageValue) && \"url\" in imageValue)\n imageUrl = imageValue.url;\n }\n\n // const teaser = getTeaser(app, item)\n\n return (\n
    \n
    \n {imageUrl ? (\n \n \n \n ) : null}\n

    \n {title}{\" \"}\n \n {app.name}\n \n

    \n
    \n
    \n );\n}\n\n// Tixxt.Apps is not available outside of legacy frontend, so this doesn't work\n// Keeping it as a reference for now\n\n// function getTeaser(app, item) {\n// let teaser: string | undefined;\n// const layoutOptions =\n// app.collection_layout.options[app.collection_layout.layout];\n// if (\"teaser\" in layoutOptions && layoutOptions?.teaser?.body_template) {\n// const formatter = new Tixxt.Apps.Formatters.TemplatePropertyFormatter();\n// teaser = Application.markdown(\n// formatter.fromRaw(\n// layoutOptions?.teaser?.body_template,\n// new Backbone.Model(item),\n// ),\n// );\n// }\n// }\n","import React, { useContext } from \"react\";\nimport Pagination from \"components/shared/Pagination\";\nimport { QueryParams } from \"./SearchQueryResult\";\nimport SearchQueryPaginationContext from \"./SearchQueryPaginationContext\";\n\nexport default function SearchResultPagination({\n total,\n per,\n loading,\n}: Pick) {\n const { setPaginationState, page, ...paginationState } = useContext(\n SearchQueryPaginationContext,\n );\n\n return (\n {\n setPaginationState({ ...paginationState, page });\n }}\n loading={loading}\n totalPages={Math.ceil(total / per)}\n />\n );\n}\n","import React, { useContext } from \"react\";\nimport SearchQueryPaginationContext from \"components/globalSearch/SearchQueryPaginationContext\";\nimport { QueryParams } from \"components/globalSearch/SearchQueryResult\";\n\nexport default function SearchSortSelector({\n availableSorts,\n}: {\n availableSorts: QueryParams[\"available_sorts\"];\n}) {\n const { setPaginationState, sort_by, ...paginationState } = useContext(\n SearchQueryPaginationContext,\n );\n\n if (!availableSorts) return null;\n\n return (\n
    \n \n setPaginationState({\n ...paginationState,\n sort_by: e.target.value,\n })\n }\n value={sort_by || \"score,asc\"}\n >\n {availableSorts.map(({ key, label }) => (\n \n ))}\n \n
    \n );\n}\n","import React, { useState } from \"react\";\nimport invariant from \"invariant\";\nimport { isEmpty, map, pick } from \"lodash\";\nimport { stringify as stringifyQuery } from \"query-string\";\n\nimport GenericErrorBoundary from \"components/shared/GenericErrorBoundary\";\nimport ActivityHit from \"./hits/ActivityHit\";\nimport MessageHit from \"./hits/MessageHit\";\nimport AppointmentHit from \"./hits/AppointmentHit\";\nimport RecurringAppointmentHit from \"./hits/RecurringAppointmentHit\";\nimport ModifiedRecurringAppointmentHit from \"./hits/ModifiedRecurringAppointmentHit\";\nimport FileHits from \"./hits/FileHits\";\nimport FolderHits from \"./hits/FolderHits\";\nimport MembershipHit from \"./hits/MembershipHit\";\nimport GroupHit from \"./hits/GroupHit\";\nimport PageHit from \"./hits/PageHit\";\nimport ItemHit from \"./hits/ItemHit\";\nimport styles from \"./globalSearch.module.css\";\nimport { searchUrl } from \"./urls\";\nimport { useSearchResultsPage } from \"components/globalSearch/api\";\nimport SearchQueryPaginationContext, {\n PaginationState,\n} from \"components/globalSearch/SearchQueryPaginationContext\";\nimport SearchResultPagination from \"./SearchResultPagination\";\nimport SearchSortSelector from \"./SearchSortSelector\";\n\n// Component that displays search results for a single query\nfunction Result({\n title,\n iconClass,\n fullResultUrl,\n hits,\n meta,\n total,\n per,\n page,\n sort_by,\n loading: initialLoading,\n renderHit,\n renderHits,\n queryName,\n routeParams,\n available_sorts,\n}: QueryProps & QueryParams) {\n const [paginationState, setPaginationState] = useState({\n page: page,\n sort_by: sort_by || null,\n enabled: false,\n });\n\n const contextValue = {\n ...paginationState,\n setPaginationState: (paginationState) =>\n setPaginationState({ ...paginationState, enabled: true }),\n };\n\n const { isLoading: pageLoading } = useSearchResultsPage(\n {\n query_name: queryName,\n page: paginationState.page || 1,\n sort_by: paginationState.sort_by,\n ...pick(routeParams, [\"q\", \"groupSlug\"]),\n },\n { enabled: paginationState.enabled },\n );\n\n return (\n \n
    \n

    \n \n {title}\n

    \n {!isEmpty(available_sorts) ? (\n \n ) : null}\n
    \n {pageLoading ? (\n \n {\" \"}\n {I18n.t(\"js.global_search.loading\")}\n \n ) : total > 0 ? (\n
    \n {renderHits\n ? renderHits(hits, meta)\n : renderHit\n ? map(hits as { id: string }[], (hit, index) => (\n \n {renderHit(hit, meta[index])}\n \n ))\n : JSON.stringify(hits)}\n
    \n ) : (\n
    \n {I18n.t(\"js.global_search.no_results\")}\n
    \n )}\n {!pageLoading &&\n !routeParams.module &&\n hits &&\n hits.length < total &&\n fullResultUrl ? (\n \n ) : null}\n {!pageLoading && routeParams.module && hits && hits.length < total ? (\n \n ) : null}\n
    \n );\n}\n\n// Map query names to the components to be rendered\nexport type QueryParams = {\n queryName: string;\n routeParams: {\n q: string;\n groupSlug?: string;\n module: string | null;\n page: string;\n };\n hits?: unknown[];\n meta: { _score: number }[];\n total: number;\n per: number;\n page: number;\n sort_by?: string;\n loading: boolean;\n available_sorts: null | { key: string; label: string }[];\n};\ntype QueryProps = {\n title: string;\n iconClass: string;\n fullResultUrl: string | null;\n renderHit?: (hit: any, meta: any) => React.ReactNode;\n renderHits?: (hits: any, meta: any) => React.ReactNode;\n};\nexport const QUERY_MAPPING: {\n [key: string]:\n | ((\n params: Pick,\n ) => QueryProps)\n | undefined;\n} = {\n activities_query: ({ routeParams: { q, groupSlug } }) => ({\n title: I18n.t(\"js.activitystreams.module_name\"),\n iconClass: \"fa-regular fa-earth-europe\",\n fullResultUrl: searchUrl({ q, groupSlug, module: \"activities\" }),\n renderHit(hit) {\n return ;\n },\n }),\n messages_query: ({ routeParams: { q } }) => ({\n title: I18n.t(\"js.messages.module_name\"),\n iconClass: \"fa-regular fa-inbox\",\n fullResultUrl: searchUrl({ q, module: \"messages\" }),\n renderHit(hit) {\n return ;\n },\n }),\n appointments_query: ({ routeParams: { q, groupSlug } }) => ({\n title: I18n.t(\"js.calendars.module_name\"),\n iconClass: \"fa-regular fa-calendar-day\",\n fullResultUrl: searchUrl({ q, groupSlug, module: \"appointments\" }),\n renderHit(hit) {\n switch (hit.type) {\n case \"recurring_appointment\":\n return ;\n case \"modified_recurring_appointment\":\n return ;\n default:\n return ;\n }\n },\n }),\n files_query: ({ routeParams: { q, groupSlug } }) => ({\n title: I18n.t(\"js.files.module_name\"),\n iconClass: \"fa-regular fa-files\",\n fullResultUrl: searchUrl({ q, groupSlug, module: \"files\" }),\n renderHits(hits, meta) {\n return ;\n },\n }),\n folders_query: ({ routeParams: { q, groupSlug } }) => ({\n title: I18n.t(\"js.files.search.folder_results_heading\"),\n iconClass: \"fa-regular fa-folder-open\",\n fullResultUrl: searchUrl({ q, groupSlug, module: \"files\" }),\n renderHits(hits, meta) {\n return ;\n },\n }),\n memberships_query: ({ routeParams: { q } }) => ({\n title: I18n.t(\"js.directory.title.members\"),\n iconClass: \"fa-regular fa-user\",\n fullResultUrl: `/members?${stringifyQuery({ q })}`,\n renderHit(hit) {\n return ;\n },\n }),\n groups_query: ({ routeParams: { q }, hits }) => {\n const groupHits = hits as { group_category_id?: string }[] | undefined;\n const groupCategory =\n groupHits && groupHits.length > 0\n ? Tixxt.currentNetwork\n .group_categories()\n .get(groupHits[0].group_category_id)\n : null;\n\n return {\n title: I18n.t(\"js.directory.title.groups\"),\n iconClass: \"fa-regular fa-users\",\n fullResultUrl: groupCategory\n ? `/directory/${groupCategory.get(\"slug\")}?${stringifyQuery({ q })}`\n : null,\n renderHit(hit) {\n return ;\n },\n };\n },\n pages_query: ({ routeParams: { q, groupSlug } }) => ({\n title: I18n.t(\"js.pages.module_name\"),\n iconClass: \"fa-regular fa-sidebar\",\n fullResultUrl: searchUrl({ q, groupSlug, module: \"pages\" }),\n renderHit(hit, { highlight }) {\n return ;\n },\n }),\n items_query: ({ routeParams: { q, groupSlug } }) => ({\n title: I18n.t(\"js.app_creator.module_name\"),\n iconClass: \"fa-regular fa-table\",\n fullResultUrl: searchUrl({ q, groupSlug, module: \"items\" }),\n renderHit(hit) {\n return ;\n },\n }),\n};\n\nexport default function SearchQueryResult(props: QueryParams) {\n const { queryName, ...remainingProps } = props;\n const propsFn = QUERY_MAPPING[queryName];\n invariant(propsFn, `No propsFn defined to render results for ${queryName}.`);\n const extraProps = propsFn(props);\n\n return ;\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { map, isEmpty, values, sum } from \"lodash\";\nimport classnames from \"classnames\";\n\nimport { QUERY_MAPPING, QueryParams } from \"./SearchQueryResult\";\nimport { searchUrl } from \"./urls\";\n\nimport styles from \"./globalSearch.module.css\";\nimport invariant from \"invariant\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { useSearchResults } from \"components/globalSearch/api\";\n\nfunction FilterButton({\n queryName,\n total,\n routeParams,\n hits,\n disabled,\n}: {\n queryName: string;\n total: number;\n routeParams: QueryParams[\"routeParams\"];\n hits: QueryParams[\"hits\"];\n disabled?: boolean;\n}) {\n const propsFn = QUERY_MAPPING[queryName];\n invariant(propsFn, `No propsFn defined to render results for ${queryName}.`);\n const { title, fullResultUrl } = propsFn({ routeParams, hits });\n\n return (\n
  • \n e.preventDefault() : undefined}\n >\n {title}\n {total > 0 ? (\n \n {total}\n \n ) : null}\n \n
  • \n );\n}\n\nfunction GlobalSearchButton({ q, enabled }: { q: string; enabled?: boolean }) {\n const { data } = useSearchResults({ q }, { enabled });\n const total = sum(map(values(data), \"total\"));\n\n return (\n \n \n {I18n.t(\"js.global_search.filter.search_globally\")}\n {total > 0 ? (\n \n {total}\n \n ) : null}\n \n );\n}\n\nfunction FilterModule({\n searchResults,\n routeParams,\n loading,\n}: {\n searchResults: { [key: string]: { total: number; hits: object[] } };\n routeParams: QueryParams[\"routeParams\"];\n loading?: boolean;\n}) {\n if (isEmpty(routeParams.module) && isEmpty(searchResults)) return null;\n\n return (\n \n {routeParams.module || routeParams.groupSlug ? (\n
  • \n \n
  • \n ) : null}\n {map(searchResults, ({ total, hits }, queryName) => (\n \n ))}\n \n );\n}\n\nFilterModule.propTypes = {\n searchResults: PropTypes.object,\n routeParams: PropTypes.shape({\n q: PropTypes.string,\n module: PropTypes.string,\n groupSlug: PropTypes.string,\n }),\n};\n\nexport default FilterModule;\n","import React from \"react\";\nimport FilterModule from \"./FilterModule\";\nimport { map } from \"lodash\";\nimport SearchQueryResult from \"./SearchQueryResult\";\nimport classNames from \"classnames\";\n\nfunction SearchResults({ results, params, loading, error }) {\n return (\n \n \n {loading ? (\n \n {\" \"}\n {I18n.t(\"js.global_search.loading\")}\n \n ) : null}\n {error ? (\n
    \n {I18n.t(\"js.global_search.loading_error\")}\n
    \n ) : null}\n {map(results, (result, queryName) => (\n \n ))}\n \n );\n}\n\nexport default SearchResults;\n","import { useQuery, useQueryClient } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\nimport { searchUrl } from \"./urls\";\nimport { identity, keys, pickBy, mapValues, slice } from \"lodash\";\n\ntype SearchQueryParams = {\n q: string;\n module?: string;\n groupSlug?: string;\n};\n\ntype SearchResultsPayload = {\n [queryName: string]: {\n hits: {\n id: string;\n // etc...\n }[];\n meta: { _score: number }[];\n total: number;\n per: number;\n page: number;\n sort_by: number;\n };\n};\n\nexport function useSearchResults(\n query: SearchQueryParams,\n options: { enabled?: boolean } = {},\n) {\n const filteredQuery = pickBy(query, identity);\n const url = searchUrl({ ...filteredQuery, format: \"json\" });\n\n return useQuery(\n [\"search\", filteredQuery],\n () => fetchApi(url),\n {\n refetchOnWindowFocus: false,\n staleTime: 60_000,\n ...options,\n },\n );\n}\n\n// This fetches pages of a single query\n// It assumes that a module filter is active\n// and updates the query in the module search result in the query cache directly\nexport function useSearchResultsPage(\n query: {\n query_name: string;\n page: number;\n sort_by?: string | null;\n q: string;\n groupSlug?: string;\n },\n options: {\n enabled?: boolean;\n } = {},\n) {\n const queryClient = useQueryClient();\n const filteredQuery = pickBy(query, identity);\n const url = searchUrl(filteredQuery);\n\n return useQuery(url, () => fetchApi(url), {\n refetchOnWindowFocus: false,\n cacheTime: 0,\n ...options,\n onSuccess: (pageData) => {\n const queriesData = queryClient.getQueriesData([\n \"search\",\n ]);\n queriesData.forEach(([key, cacheData]) => {\n const [, cachedQuery] = key as [\"search\", SearchQueryParams];\n\n // Update module search result\n if (cachedQuery.module && keys(pageData)[0] in cacheData) {\n queryClient.setQueryData(key, { ...cacheData, ...pageData });\n }\n\n // Update a matching global search result query\n if (\n !cachedQuery.module &&\n cachedQuery.q === query.q &&\n cachedQuery.groupSlug === query.groupSlug\n ) {\n // Limit to 5 results so it still works with the global search results\n const truncatedPageData = mapValues(\n pageData,\n ({ hits, meta, ...rest }) => ({\n hits: slice(hits, 0, 5),\n meta: slice(meta, 0, 5),\n ...rest,\n }),\n );\n queryClient.setQueryData(key, { ...cacheData, ...truncatedPageData });\n }\n });\n },\n });\n}\n","import { identity, isEmpty, map, pickBy, trim } from \"lodash\";\nimport { stringify as stringifyQuery } from \"query-string\";\n\n// Wraps value with quotes if necessary\nconst quote = (value) =>\n value.match(/^[a-z0-9_\\-.]+$/i) ? value : `\"${value.replace(/\"/g, '\\\\\"')}\"`;\n\n// Turns given value and name into filter syntax\n// Produces special syntax for tags\nconst filterToQueryString = (value, name) => {\n const prefix = name === \"tag\" ? \"#\" : `${name}:`;\n return `${prefix}${quote(value)}`;\n};\n\n// @param filters [Object] { tag: 'bla', 'profile.fach': 'potato' }\nexport function searchUrl({\n groupSlug,\n contextUrl,\n q,\n filters,\n format,\n ...params\n}) {\n const formatExt = format === \"json\" ? \".json\" : \"\";\n const baseSearchPath =\n isEmpty(contextUrl) && !isEmpty(groupSlug)\n ? `/groups/${groupSlug}/search${formatExt}`\n : `${contextUrl || \"\"}/search${formatExt}`;\n if (!isEmpty(filters) || !isEmpty(q)) {\n params.q = searchQuery({ q, filters });\n }\n\n // Removes null and undefined\n params = pickBy(params, identity);\n\n return isEmpty(params)\n ? baseSearchPath\n : `${baseSearchPath}?${stringifyQuery(params)}`;\n}\n\n// Prepend filters as i.e. filtername:\"foo\" or #tag to q\nexport function searchQuery({ q: rawQ, filters }) {\n let q = null;\n // Prepend filters as i.e. filtername:\"foo\" or #tag to q\n if (!isEmpty(filters)) {\n const filterStrings = map(filters, filterToQueryString);\n if (!isEmpty(rawQ)) {\n filterStrings.push(rawQ);\n }\n q = trim(filterStrings.join(\" \"));\n } else if (!isEmpty(rawQ)) {\n q = trim(rawQ);\n }\n\n return q;\n}\n\n// Turns \"foo,asc\" into [\"foo\", 1]\n// Turns \"foo,desc\" into [\"foo\", -1]\nexport const parseSortByParam = (sortByParam) => {\n if (isEmpty(sortByParam)) return null;\n\n const [attribute, directionString] = sortByParam.split(\",\");\n return attribute ? [attribute, directionString === \"desc\" ? -1 : 1] : null;\n};\n\n// Turns [\"foo\", 1] into \"foo,asc\"\n// Turns [\"foo\", -1] into \"foo,desc\"\nexport const serializeSortBy = (sortBy) => {\n if (isEmpty(sortBy)) return null;\n\n const [attribute, directionNumber] = sortBy;\n return [attribute, directionNumber === -1 ? \"desc\" : \"asc\"].join(\",\");\n};\n","import { useInfiniteQuery, useMutation } from \"react-query\";\n\nimport fetchPaginatedData from \"helpers/api/fetchPaginatedData\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\n\nexport function useInvites({ filter, status, enabled }) {\n return useInfiniteQuery(\n [\"invites\", filter, status],\n ({\n pageParam = `/api/v1/invites?filter=${filter}&status=${status}&limit=50`,\n }) => fetchPaginatedData({ pageParam }),\n {\n getNextPageParam: (lastPage) => lastPage.nextPage,\n enabled,\n },\n );\n}\n\nexport function useAcceptInvite(options) {\n return useMutation(\n ({ inviteId }: { inviteId: string }) =>\n fetchApi(`/api/v1/invites/${inviteId}/accept`, {\n method: \"POST\",\n }),\n options,\n );\n}\n\nexport function useDeclineInvite(options) {\n return useMutation(\n ({ inviteId }: { inviteId: string }) =>\n fetchApi(`/api/v1/invites/${inviteId}/reject`, {\n method: \"POST\",\n }),\n options,\n );\n}\n","import React from \"react\";\nimport { useQuery } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\nimport classNames from \"classnames\";\nimport { matchPath, useLocation } from \"helpers/tixxt-router\";\n\ntype GroupNavigationItem = {\n text: string;\n link: string;\n new_window?: boolean;\n join_request_count?: number;\n navigation_items?: {\n text: string;\n link: string;\n new_window?: boolean;\n }[];\n active_match?: string;\n};\n\nfunction useGroupNavigationItems(groupSlug: string | null | undefined) {\n return useQuery(\n [\"groupNavigationItems\", groupSlug],\n () => fetchApi(`/groups/${groupSlug}/navigation`),\n {\n enabled: !!groupSlug && groupSlug !== \"new\",\n refetchOnWindowFocus: false,\n },\n );\n}\n\n/* Use this if you want to pass the groupSlug in as a prop */\nexport default function GroupNavigation({\n groupSlug,\n}: {\n groupSlug?: string | null;\n}) {\n const { isLoading, data } = useGroupNavigationItems(groupSlug);\n\n if (!groupSlug) return null;\n\n return (\n
      \n {isLoading\n ? [\n I18n.t(\"js.groups.navigation.activities\"),\n I18n.t(\"js.groups.navigation.members\"),\n I18n.t(\"js.groups.navigation.calendar\"),\n I18n.t(\"js.groups.navigation.tasks\"),\n I18n.t(\"js.groups.navigation.files\"),\n I18n.t(\"js.groups.navigation.profile\"),\n ].map((text, i) => {text})\n : data?.map((nav, i) => (\n \n ))}\n
    • \n
    \n );\n}\n\nfunction NavigationItem({\n text,\n link,\n new_window,\n navigation_items,\n last,\n active_match,\n join_request_count,\n}: GroupNavigationItem & { last?: boolean }) {\n const location = useLocation();\n // active_match provided? use this to match\n const isActive = active_match\n ? matchPath(active_match, location.pathname)\n : // Link looks like a module link? Match on prefix, equality otherwise\n link.match(/^\\/groups\\/.+?\\//)\n ? location.pathname.indexOf(link) === 0\n : location.pathname === link;\n const hasNavigationItems = navigation_items && navigation_items.length > 0;\n\n return (\n \n \n {text}\n {hasNavigationItems && }\n \n {hasNavigationItems && (\n
      \n {navigation_items.map(({ text, link, new_window }, i) => (\n
    • \n \n {text}\n \n
    • \n ))}\n
    \n )}\n {join_request_count ? (\n \n {join_request_count}\n \n ) : null}\n \n );\n}\n\nfunction Placeholder({ children }: { children?: React.ReactNode }) {\n return (\n
  • \n \n \n {children || \" \"}\n \n \n
  • \n );\n}\n","import React from \"react\";\nimport { useMutation, UseMutationResult } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\nimport invariant from \"invariant\";\nimport { Group, State } from \"../../../@types\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { toggleFavorited } from \"reducers/groups\";\nimport ToggleFavoriteButton from \"components/shared/favoriteButtons/ToggleFavoriteButton\";\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\n return (\n mutate({ favorite: !favorited })}\n isLoading={isLoading}\n favorited={favorited}\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/favoriteButtons/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 { faEllipsisH } from \"@fortawesome/pro-solid-svg-icons\";\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","export const useRecurringAppointment = (\n appointmentId: string | null | undefined,\n): boolean => {\n return !!appointmentId?.match(/^(r-)[0-9a-f]{24}-.*/);\n};\n","import React, { useEffect, useState } from \"react\";\nimport PageTitle from \"components/layout/PageTitle\";\nimport { useParams } from \"helpers/tixxt-router\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowsRepeat } from \"@fortawesome/pro-regular-svg-icons\";\nimport TixxtPageTitle from \"components/layout/TixxtPageTitle\";\nimport { useRecurringAppointment } from \"../../hooks/useRecurringAppointment\";\n\ntype AppointmentTitleData = {\n id: string;\n name: string;\n type: \"appointment\" | \"recurring_appointment\" | \"virtual_appointment\";\n};\n\nexport function AppointmentPageTitle() {\n const { appointmentId } = useParams();\n const [appointment, setAppointment] = useState();\n\n useEffect(() => {\n const appointments = Tixxt.Calendars.Appointment.all();\n const assignAppointment = (model, data: AppointmentTitleData) => {\n if (data.id == appointmentId) setAppointment(data);\n };\n appointments.on(\"sync change add reset\", assignAppointment);\n return () => appointments.off(\"sync change add reset\", assignAppointment);\n }, [appointmentId]);\n\n const isRecurring =\n useRecurringAppointment(appointmentId) ||\n appointment?.type == \"recurring_appointment\" ||\n appointment?.type == \"virtual_appointment\";\n\n if (!isRecurring) return ;\n\n return (\n \n \n \n );\n}\n","import React, { useEffect } from \"react\";\nimport {\n RouteObject,\n useParams,\n useRoutes,\n useSearchParams,\n} from \"helpers/tixxt-router\";\nimport { at, defer, flatMap } from \"lodash\";\nimport invariant from \"invariant\";\nimport TixxtGroupNavigation from \"components/layout/TixxtGroupNavigation\";\nimport TixxtPageTitle from \"components/layout/TixxtPageTitle\";\nimport documentReady from \"helpers/documentReady\";\nimport { AppointmentPageTitle } from \"components/appointments/AppointmentPageTitle\";\n\ntype Props = {\n feature: string;\n action: string;\n paramKeys: string[];\n};\n\nfunction toggleBackbone(show: boolean) {\n document.getElementById(\"backbone-root\")?.classList.toggle(\"hidden\", !show);\n}\n\nexport default function BackboneFeature({ feature, action, paramKeys }: Props) {\n const params = useParams();\n const actionArguments = at(params, paramKeys);\n\n const [searchParams] = useSearchParams();\n const query = {};\n searchParams.forEach((k, v) => (query[v] = k));\n\n useEffect(() => {\n toggleBackbone(true);\n return function () {\n toggleBackbone(false);\n };\n }, []);\n\n useEffect(() => {\n return function () {\n Tixxt.stopFeature();\n };\n }, [feature]);\n\n useEffect(() => {\n documentReady(() =>\n defer(() => {\n Tixxt.startFeature(feature, action, [...actionArguments, query]);\n }),\n );\n }, [feature, action, params, query]);\n\n const elem = useRoutes([\n { path: \"/appointments/:appointmentId\", element: },\n { path: \"/groups/:groupSlug/*\", element: },\n { path: \"*\", element: },\n ]);\n\n return (\n <>\n {elem}\n \n \n );\n}\n\nconst paramRegex = /:(\\w+)/g;\n\nexport function convertRoutes({ feature, featureRoutes }): RouteObject[] {\n function route(\n path: string,\n action: string,\n omittedParamKeys: string[] = [],\n ) {\n const paramKeys = Array.from(\n path.matchAll(paramRegex),\n ([, capture]) => capture,\n );\n return {\n path,\n element: (\n \n ),\n };\n }\n\n return flatMap(featureRoutes, (action, path) => {\n // path with optional group slug\n if (path.startsWith(\"(groups/:group_slug/)\")) {\n const networkPath = path.replace(\"(groups/:group_slug/)\", \"\");\n const groupPath = path.replace(\n \"(groups/:group_slug/)\",\n \"/groups/:group_slug/\",\n );\n return [\n route(\"/\" + networkPath, action, [\"group_slug\"]),\n route(groupPath, action),\n ];\n }\n\n invariant(\n path.indexOf(\"(\") == -1,\n `path for convertRoutes must not contain other optional segments, got \"${path}\"`,\n );\n\n // regular path\n return [route(\"/\" + path, action)];\n });\n}\n","import { convertRoutes } from \"components/tixxt/BackboneFeature\";\nimport { RouteObject } from \"helpers/tixxt-router\";\n\nconst activitystreamsRoutes: RouteObject[] = convertRoutes({\n feature: \"Activitystreams\",\n featureRoutes: {\n \"(groups/:group_slug/)activitystreams\": \"showStream\",\n \"(groups/:group_slug/)activitystreams/:stream_slug\": \"showStream\",\n \"(groups/:group_slug/)activitystreams/:stream_slug/:filter\":\n \"showSubstream\",\n rundschreiben: \"showRundschreibenEditor\",\n \"activities/:id\": \"showActivity\",\n \"activities/:activity_id/replies/:comment_id\": \"showActivity\",\n \"activities/:activity_id/answers/:comment_id\": \"showActivity\",\n notifications: \"showNotifications\",\n },\n});\n\nexport default activitystreamsRoutes;\n","import React from \"react\";\nimport classNames from \"classnames\";\n\nconst AllDayTag = ({ position }: { position?: \"start\" | \"end\" }) => (\n \n {I18n.t(\"js.calendars.date_range.all_day\")}\n \n);\n\nconst LeftArrow = () => (\n
    \n);\n\nconst RightArrow = () => (\n
    \n);\n\nAllDayTag.LeftArrow = LeftArrow;\nAllDayTag.RightArrow = RightArrow;\n\nexport default AllDayTag;\n","import React, { RefObject } from \"react\";\nimport AllDayTag from \"components/appointments/appointmentsList/AllDayTag\";\nimport { Appointment, Calendar } from \"../../../@types/appointments\";\nimport moment, { Moment } from \"moment\";\nimport { spansDate, spansMultipleDays } from \"components/appointments/helpers\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faAngleRight,\n faAngleLeft,\n faComments,\n} from \"@fortawesome/pro-regular-svg-icons\";\nimport classNames from \"classnames\";\nimport { find, isEmpty, map } from \"lodash\";\n\ntype AppointmentItemArgs = {\n appointment: Appointment;\n date: Moment;\n calendars?: Calendar[];\n};\n\nfunction TimeTag({ date, appointment }: AppointmentItemArgs) {\n if (!spansMultipleDays(appointment.date)) {\n return (\n
    \n {appointment.date.all_day ? (\n
    \n {I18n.t(\"js.calendars.date_range.all_day\")}\n
    \n ) : (\n
    \n {moment(appointment.date.start).format(\"HH:mm\")}\n {!isEmpty(appointment.date.end) && (\n
    \n -{moment(appointment.date.end).format(\"HH:mm\")}\n
    \n )}\n
    \n )}\n
    \n );\n }\n\n if (spansDate(date, appointment.date)) {\n return (\n
    \n \n \n \n
    \n );\n } else if (date.isSame(moment(appointment.date.start), \"day\")) {\n return appointment.date.all_day ? (\n
    \n \n \n
    \n ) : (\n <>\n
    \n {moment(appointment.date.start).format(\"HH:mm\")}\n
    \n
    \n \n
    \n \n );\n } else {\n return appointment.date.all_day ? (\n
    \n \n \n
    \n ) : (\n <>\n
    \n \n
    \n
    \n {moment(appointment.date.end).format(\"HH:mm\")}\n
    \n \n );\n }\n}\n\nexport default function AppointmentItem({\n appointment,\n date,\n calendars,\n todayRef,\n}: AppointmentItemArgs & { todayRef: RefObject }) {\n let markers = map(appointment.calendar_ids, (calendar_id: string) => {\n const calendar = find(calendars, (calendar) => calendar.id === calendar_id);\n return calendar?.color;\n });\n\n if (appointment.unknown_calendars) {\n markers = markers.concat(map(appointment.unknown_calendars, \"color\"));\n }\n\n return (\n \n
    \n \n
    \n
    \n {map(markers, (color, index) => {\n if (!color) return null;\n\n return (\n
    \n );\n })}\n \n {appointment.has_meeting && }\n {appointment.name}\n \n {appointment.location.name}\n \n \n
    \n
    \n );\n}\n","import React, { RefObject } from \"react\";\nimport { Appointment, Calendar } from \"../../../@types/appointments\";\nimport { map } from \"lodash\";\nimport classNames from \"classnames\";\nimport moment from \"moment\";\nimport AppointmentItem from \"components/appointments/appointmentsList/AppointmentItem\";\n\ntype CalendarDayArgs = {\n appointments: Appointment[];\n day: string;\n calendars?: Calendar[];\n todayRef: RefObject;\n};\n\nexport default function CalendarDay({\n appointments,\n day,\n calendars,\n todayRef,\n}: CalendarDayArgs) {\n const today = moment();\n const date = moment(day);\n\n return (\n \n
    \n {date.format(I18n.t(\"js.plugins.Locale.Formats.day_in_month\"))}\n
    \n
      \n {map(appointments, (appointment) => {\n return (\n \n );\n })}\n
    \n \n );\n}\n","import React, { RefObject } from \"react\";\nimport moment from \"moment/moment\";\nimport { isEmpty, map, some } from \"lodash\";\nimport { Appointment, Calendar } from \"../../../@types/appointments\";\nimport CalendarDay from \"components/appointments/appointmentsList/CalendarDay\";\n\ntype CalendarWeekArgs = {\n week: string[];\n appointmentsByDate: { [date: string]: Appointment[] };\n calendars?: Calendar[];\n todayRef: RefObject;\n};\n\nexport default function CalendarWeek({\n week,\n appointmentsByDate,\n calendars,\n todayRef,\n}: CalendarWeekArgs) {\n const weekNumber = moment(week[0]).startOf(\"week\").add(3, \"days\").format(\"w\");\n const isEmptyWeek = !some(appointmentsByDate, (appointments, date) => {\n return (\n moment(week[0]).startOf(\"week\").isoWeek() ===\n moment(date).startOf(\"week\").isoWeek() && !isEmpty(appointments)\n );\n });\n\n return (\n
    \n

    \n {I18n.t(\"calendars.overview.calendarweek\", { weekNumber })}\n

    \n
    \n {isEmptyWeek ? (\n
    \n
    \n
    \n {I18n.t(\"calendars.month_list.empty_week\")}\n
    \n
    \n ) : (\n map(week, (day) => {\n return (\n !isEmpty(appointmentsByDate[day]) && (\n \n )\n );\n })\n )}\n
    \n
    \n );\n}\n","import React, { RefObject } from \"react\";\nimport { Appointment, Calendar } from \"../../../@types/appointments\";\nimport { weeksInMonth } from \"components/appointments/helpers\";\nimport { map } from \"lodash\";\nimport CalendarWeek from \"components/appointments/appointmentsList/CalendarWeek\";\n\ntype AppointmentsListArgs = {\n appointmentsByDate: { [date: string]: Appointment[] };\n date: string;\n calendars?: Calendar[];\n todayRef: RefObject;\n};\n\nexport default function AppointmentsList({\n appointmentsByDate,\n date,\n calendars,\n todayRef,\n}: AppointmentsListArgs) {\n const weeks = weeksInMonth(date);\n\n return (\n
    \n {map(weeks, (week, index) => (\n \n ))}\n
    \n );\n}\n","import { useState } from \"react\";\nimport useWindowEvent from \"components/shared/hooks/useWindowEvent\";\n\nconst MEDIUM_BREAKPOINT = 768;\nfunction isSmall() {\n return window.innerWidth < MEDIUM_BREAKPOINT;\n}\n\nexport type ViewType = \"sheet\" | \"list\" | string;\n\nexport default function useAppointmentView() {\n const [persistedView, setPersistedView] = useState(\n sessionStorage.getItem(\"appointmentsViewType\") || \"sheet\",\n );\n const [view, setView] = useState(\n isSmall() ? \"list\" : persistedView,\n );\n\n function updateView(view: ViewType) {\n if (isSmall()) {\n setView(\"list\");\n } else {\n setView(view);\n }\n }\n\n function maybeForceListView() {\n updateView(persistedView);\n }\n\n function setViewType(view: ViewType) {\n sessionStorage.setItem(\"appointmentsViewType\", view);\n setPersistedView(view);\n updateView(view);\n }\n\n useWindowEvent(\"resize\", maybeForceListView);\n\n return { view, setViewType };\n}\n","import React, { useMemo, useRef, useState } from \"react\";\nimport {\n filter,\n flatMap,\n includes,\n intersection,\n isEmpty,\n map,\n orderBy,\n uniqBy,\n} from \"lodash\";\nimport moment from \"moment\";\n\nimport { ContextPageTitle } from \"components/layout/PageTitle\";\nimport AppointmentToolbar from \"components/appointments/AppointmentToolbar\";\nimport CalendarSheet from \"./CalendarSheet.js\";\nimport { useAppointments, useCalendars } from \"components/appointments/api\";\nimport { collectAppointmentsByDate } from \"components/appointments/helpers\";\nimport AppointmentsList from \"components/appointments/appointmentsList\";\nimport { useParams } from \"helpers/tixxt-router\";\nimport GroupNavigation from \"components/layout/GroupNavigation\";\nimport { useSelector } from \"react-redux\";\nimport { State } from \"../../@types\";\nimport { Appointment } from \"../../@types/appointments\";\nimport useAppointmentView from \"components/appointments/useAppointmentView\";\n\nexport default function AppointmentsPage({\n participating = false,\n}: {\n participating?: boolean;\n}) {\n const { view, setViewType } = useAppointmentView();\n const { groupSlug } = useParams();\n const group = useSelector((state: State) =>\n groupSlug ? state.groups.bySlug?.[groupSlug] : null,\n );\n const network = useSelector((state: State) => state.network);\n\n const [date, setDate] = useState(\n sessionStorage.getItem(\"appointmentsDate\") || moment().format(),\n );\n const [excludedCalendarIds, setExcludedCalendarIds] = useState([]);\n\n const { isLoading, data: appointments } = useAppointments({\n date,\n view,\n participating,\n });\n const todayRef = useRef(null);\n const scrollToToday = () => {\n setTimeout(() => {\n if (todayRef.current) {\n todayRef.current.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n });\n }\n }, 100);\n };\n const { data: calendars } = useCalendars();\n let contextCalendars = !isEmpty(group)\n ? filter(calendars, (cal) => cal.parent_id === group?.id)\n : calendars;\n contextCalendars = (contextCalendars || []).concat(\n uniqBy(flatMap(appointments, \"unknown_calendars\"), \"id\"),\n );\n\n function filterAppointments() {\n let contextAppointments: Appointment[] | undefined;\n\n if (groupSlug) {\n contextAppointments = filter(appointments, (appointment: Appointment) => {\n const groupAppointmentsCalendarIds = intersection(\n map(contextCalendars, \"id\"),\n appointment.calendar_ids,\n );\n\n return (\n groupAppointmentsCalendarIds.length >\n intersection(groupAppointmentsCalendarIds, excludedCalendarIds).length\n );\n });\n } else {\n contextAppointments = filter(appointments, (appointment) => {\n const calendar_ids = (appointment.calendar_ids || []).concat(\n map(appointment.unknown_calendars, \"id\"),\n );\n return (\n calendar_ids.length >\n intersection(excludedCalendarIds, calendar_ids).length\n );\n });\n }\n\n return orderBy(contextAppointments, \"date.start\", \"asc\");\n }\n\n const filteredAppointments = useMemo(filterAppointments, [\n appointments,\n groupSlug,\n excludedCalendarIds,\n calendars,\n contextCalendars,\n ]);\n\n function onSetDate(date: string) {\n sessionStorage.setItem(\"appointmentsDate\", date);\n setDate(date);\n }\n\n const appointmentsByDate = collectAppointmentsByDate(\n filteredAppointments,\n date,\n );\n\n function toggleExcludedCalendarIds(calendarId: string) {\n if (calendarId === \"all\") {\n if (isEmpty(excludedCalendarIds)) {\n setExcludedCalendarIds(map(calendars, \"id\"));\n } else {\n setExcludedCalendarIds([]);\n }\n } else {\n if (includes(excludedCalendarIds, calendarId)) {\n setExcludedCalendarIds(\n filter(excludedCalendarIds, (calId: string) => calId !== calendarId),\n );\n } else {\n setExcludedCalendarIds([...excludedCalendarIds, calendarId]);\n }\n }\n }\n\n return (\n <>\n \n {groupSlug && }\n

    \n {I18n.t(\"js.calendars.appointments.subtitle\")}\n

    \n \n {view === \"sheet\" ? (\n \n ) : (\n \n )}\n \n );\n}\n","import { Calendar } from \"../../../@types/appointments\";\nimport { filter, forEach, groupBy, keyBy } from \"lodash\";\n\nexport function isShared(cal: Calendar | undefined) {\n return (\n cal?.type === \"personal\" && cal?.parent_id !== Preload.current_member?.id\n );\n}\n\nexport function canAddCalendar(type: string) {\n switch (type) {\n case \"personal\":\n return !!Preload.current_member?.can.create_personal_calendars;\n case \"network\":\n return !!Preload.current_network?.can.create_calendars;\n default:\n return false;\n }\n}\n\nexport function groupCalendarsByType(calendars: Calendar[] | undefined) {\n const groupedCalendars: { [key: string]: Calendar[] } = {\n personal: [],\n network: [],\n shared: [],\n };\n\n forEach(\n groupBy(\n filter(calendars, (cal) => cal.type !== \"group\" && !isShared(cal)),\n \"type\",\n ),\n (cals, key) => (groupedCalendars[key] = cals),\n );\n\n groupedCalendars.shared = filter(calendars, (cal) => isShared(cal));\n\n return groupedCalendars;\n}\n\nexport function groupCalendarsByGroup(calendars: Calendar[] | undefined) {\n const groupsById = keyBy(Preload.my_groups, \"id\");\n const groupsWithCalendars = {};\n\n forEach(\n groupBy(\n filter(calendars, (cal) => cal.type === \"group\"),\n \"parent_id\",\n ),\n (calendars, group_id) =>\n (groupsWithCalendars[group_id] = { ...groupsById[group_id], calendars }),\n );\n\n return groupsWithCalendars;\n}\n","import { Calendar } from \"../../../@types/appointments\";\nimport React, { ReactNode } from \"react\";\nimport { isShared } from \"components/appointments/calendars/helpers\";\nimport { isEmpty, map } from \"lodash\";\n\nexport default function CalendarListItem({\n calendar,\n actions,\n}: {\n calendar?: Calendar;\n actions?: (calendar: Calendar | undefined) => ReactNode[];\n}) {\n return (\n
  • \n
    \n \n {calendar?.name}\n
    \n {isShared(calendar) &&\n !isEmpty(calendar?.author) &&\n I18n.t(\"calendars.shared_from\", {\n name: calendar?.author.name,\n })}\n
    \n
    \n
    {actions && map(actions(calendar))}
    \n
  • \n );\n}\n","import { Calendar } from \"../../../@types/appointments\";\nimport { stringify } from \"query-string\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCalendarCirclePlus } from \"@fortawesome/pro-regular-svg-icons\";\nimport { isEmpty, map } from \"lodash\";\nimport React, { ReactNode } from \"react\";\nimport CalendarListItem from \"components/appointments/calendars/CalendarListItem\";\n\nexport default function CalendarList({\n title,\n calendars,\n renderActions,\n addCalendar,\n}: {\n title: string;\n calendars: Calendar[];\n renderActions: (calendar: Calendar | undefined) => ReactNode[];\n addCalendar?: { type: string; parent_id?: string };\n}) {\n return (\n
    \n
    \n

    {title}

    \n {addCalendar && (\n \n \n \n )}\n
    \n
      \n {isEmpty(calendars) ? (\n
      \n {I18n.t(\"js.calendars.calendar_manager.no_calendars_listed\")}\n
      \n ) : (\n map(calendars, (calendar) => {\n return (\n \n );\n })\n )}\n
    \n
    \n );\n}\n","import React, { ReactNode } from \"react\";\nimport { map } from \"lodash\";\nimport {\n canAddCalendar,\n groupCalendarsByGroup,\n groupCalendarsByType,\n} from \"components/appointments/calendars/helpers\";\nimport { Calendar } from \"../../../@types/appointments\";\nimport CalendarList from \"components/appointments/calendars/CalendarList\";\nimport { Group } from \"../../../@types\";\n\ntype GroupWithCalendars = Group & {\n calendars: Calendar[];\n};\n\nexport default function CalendarListView({\n renderActions,\n calendars,\n isLoading,\n addCalendarsAllowed = false,\n}: {\n renderActions: (calendar: Calendar | undefined) => ReactNode[];\n isLoading: boolean;\n addCalendarsAllowed?: boolean;\n calendars?: Calendar[];\n}) {\n const groupedCalendars = groupCalendarsByType(calendars);\n const groupsWithCalendars = groupCalendarsByGroup(calendars);\n\n return (\n
    \n {isLoading && I18n.t(\"js.loading\")}\n {map(groupedCalendars, (contextCalendars, type) => {\n return (\n \n );\n })}\n {map(groupsWithCalendars, (group: GroupWithCalendars) => {\n return (\n \n );\n })}\n
    \n );\n}\n","import React, { ReactNode } from \"react\";\nimport PageTitle from \"components/layout/PageTitle\";\nimport { Calendar } from \"../../../@types/appointments\";\nimport { isShared } from \"components/appointments/calendars/helpers\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faBan, faPencil, faTrash } from \"@fortawesome/pro-regular-svg-icons\";\nimport {\n useDeleteCalendar,\n useDeleteShare,\n} from \"components/appointments/calendars/api\";\nimport CalendarListView from \"components/appointments/calendars/CalendarListView\";\nimport { useCalendars } from \"components/appointments/api\";\n\nexport default function ManageCalendarsPage() {\n const { data: calendars, isLoading, refetch } = useCalendars();\n\n const { mutate: deleteCalendar } = useDeleteCalendar({\n onSuccess: () => {\n toastr.success(I18n.t(\"js.delete_successful\"));\n refetch();\n },\n });\n\n const { mutate: deleteShare } = useDeleteShare({\n onSuccess: () => {\n toastr.success(I18n.t(\"js.delete_successful\"));\n refetch();\n },\n });\n\n function actions(calendar: Calendar | undefined) {\n const buttons: ReactNode[] = [];\n\n if (isShared(calendar)) {\n buttons.push(\n \n window.bridge?.confirm(\n I18n.t(\"delete_confirmation\"),\n () => calendar && deleteShare(calendar?.id),\n )\n }\n >\n \n ,\n );\n }\n\n if (calendar?.can.update) {\n buttons.push(\n \n \n ,\n );\n }\n\n if (calendar?.can.destroy) {\n buttons.push(\n \n window.bridge?.confirm(\n I18n.t(\"calendars.calendar_manager.destroy_confirmation\"),\n () => deleteCalendar(calendar.id),\n )\n }\n >\n \n ,\n );\n }\n\n return buttons;\n }\n\n return (\n <>\n \n \n \n );\n}\n","import { useMutation, useQuery } from \"react-query\";\nimport { Calendar } from \"../../../@types/appointments\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\n\nexport function useDeleteCalendar(options) {\n return useMutation(\n (id: string) => fetchApi(`/calendars/${id}`, { method: \"DELETE\" }),\n options,\n );\n}\nexport function useDeleteShare(options) {\n return useMutation(\n (id: string) => fetchApi(`/calendars/${id}/share`, { method: \"DELETE\" }),\n options,\n );\n}\n\nexport function useCalendar(id?: string) {\n return useQuery(`/calendars/${id}`, { enabled: !!id });\n}\n\nexport type CreateCalendarParams = {\n parent_id?: string | string[];\n calendar: {\n name: string;\n color?: string;\n membership_ids?: (string | undefined)[];\n };\n};\n\nexport function useCreateCalendar(options) {\n return useMutation(\n (params: CreateCalendarParams) =>\n fetchApi(`/calendars`, {\n method: \"POST\",\n body: params,\n }),\n options,\n );\n}\n\nexport type UpdateCalendarParams = {\n calendar: {\n id: string;\n name: string;\n color?: string;\n membership_ids?: (string | undefined)[];\n };\n};\n\nexport function useUpdateCalendar(options) {\n return useMutation(\n (params: UpdateCalendarParams) =>\n fetchApi(`/calendars/${params.calendar.id}`, {\n method: \"PUT\",\n body: params,\n }),\n options,\n );\n}\n","import React from \"react\";\nimport Modal from \"components/shared/Modal\";\nimport { stringify } from \"query-string\";\nimport { Calendar } from \"../../../@types/appointments\";\nimport { find, isEmpty, map, split } from \"lodash\";\nimport { groupCalendarsByType } from \"components/appointments/calendars/helpers\";\nimport CalendarListItem from \"components/appointments/calendars/CalendarListItem\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCopy } from \"@fortawesome/pro-regular-svg-icons\";\n\nconst COLLECTION_URL_LOOKUP = {\n all_appointments: \"appointments\",\n participating_appointments: \"appointments/participating\",\n personal_calendar: \"calendars/my/appointments\",\n shared_calendar: \"calendars/shared/appointments\",\n network_calendar: \"calendars/all/appointments\",\n};\n\ntype CalendarSubscribeModalArgs = {\n setShowModal: (showModal: boolean) => void;\n modalOptions?: ModalOptions;\n calendars?: Calendar[];\n};\n\nexport type ModalOptions = {\n title: string;\n collectionType?: string;\n calendarId?: string;\n};\n\nexport default function CalendarSubscribeModal({\n setShowModal,\n modalOptions,\n calendars = [],\n}: CalendarSubscribeModalArgs) {\n const isCollection = !!modalOptions?.collectionType;\n const isCalendar = !!modalOptions?.calendarId;\n const url = `webcal:${Preload.current_network?.url}/${\n modalOptions?.collectionType\n ? COLLECTION_URL_LOOKUP[modalOptions?.collectionType]\n : `calendars/${modalOptions?.calendarId}/appointments`\n }.ics?${stringify({\n auth_token: Preload.current_member?.authentication_token,\n })}`;\n\n const groupedCalendars = groupCalendarsByType(calendars);\n\n let filteredCalendars: (Calendar | undefined)[] = [];\n\n if (modalOptions?.collectionType) {\n const calendarFilter = split(modalOptions?.collectionType, \"_\")[0];\n filteredCalendars =\n calendarFilter == \"all\" ? calendars : groupedCalendars[calendarFilter];\n }\n\n if (modalOptions?.calendarId) {\n const calendar = find(calendars, { id: modalOptions?.calendarId });\n filteredCalendars = [calendar];\n }\n\n function copyToClipboard(url: string) {\n navigator.clipboard\n .writeText(url)\n .then(() => {\n toastr.success(I18n.t(\"js.calendars.webcal_url_copied\"));\n })\n .catch(() => {\n toastr.error(I18n.t(\"js.generic_error\"));\n });\n }\n\n return (\n setShowModal(false)}\n >\n
    \n
    \n {isCalendar && !isEmpty(filteredCalendars) && (\n <>\n \n

    \n {I18n.t(\"calendars.subscriptions.subscribe\")}\n

    \n \n )}\n {isCollection && (\n

    {I18n.t(\"calendars.subscriptions.collection_subscribe\")}

    \n )}\n

    \n \n {url}\n \n \n

    \n
    \n {isCollection && (\n
    \n

    {I18n.t(\"js.calendars.subscriptions.following_calendars\")}:

    \n {!isEmpty(filteredCalendars) ? (\n
      \n {map(\n filteredCalendars,\n (calendar) =>\n calendar && (\n \n ),\n )}\n
    \n ) : (\n

    \n {modalOptions?.collectionType === \"participating_appointments\"\n ? I18n.t(\"js.calendars.subscriptions.no_specific_calendars\")\n : I18n.t(\"js.calendars.calendar_manager.no_calendars_listed\")}\n

    \n )}\n
    \n )}\n
    \n \n );\n}\n","import React, { ReactNode, useState } from \"react\";\nimport PageTitle from \"components/layout/PageTitle\";\nimport { map } from \"lodash\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCalendarPlus } from \"@fortawesome/pro-regular-svg-icons\";\nimport { useCalendars } from \"components/appointments/api\";\nimport CalendarListView from \"components/appointments/calendars/CalendarListView\";\nimport { Calendar } from \"../../../@types/appointments\";\nimport CalendarSubscribeModal, {\n ModalOptions,\n} from \"components/appointments/calendars/CalendarSubscribeModal\";\n\nexport default function SubscribeCalendarsPage() {\n const [showModal, setShowModal] = useState(false);\n const [modalOptions, setModalOptions] = useState();\n\n const { data: calendars, isLoading } = useCalendars();\n const calendarCollections = [\n \"all_appointments\",\n \"participating_appointments\",\n \"personal_calendar\",\n \"shared_calendar\",\n \"network_calendar\",\n ];\n\n function onShowModal(modalOptions: ModalOptions) {\n setModalOptions(modalOptions);\n setShowModal(true);\n }\n\n function actions(calendar: Calendar | undefined) {\n const buttons: ReactNode[] = [];\n\n buttons.push(\n \n onShowModal({\n title: I18n.t(\"calendars.calendar_manager.subscribe_calendar\"),\n calendarId: calendar?.id,\n })\n }\n >\n \n ,\n );\n\n return buttons;\n }\n\n return (\n <>\n \n {showModal && (\n \n )}\n
    \n {Preload.current_member?.authentication_token ? (\n
    \n

    \n {I18n.t(\"js.calendars.subscriptions.calendar_collection_title\")}\n

    \n
    \n {I18n.t(\"js.calendars.subscriptions.all_region_subscribe\")}\n
    \n
    \n {map(calendarCollections, (collectionType: string) => (\n \n {I18n.t(`js.calendars.subscriptions.${collectionType}`)}\n
    \n \n onShowModal({\n title: I18n.t(\n `js.calendars.subscriptions.${collectionType}_subscribe`,\n ),\n collectionType,\n })\n }\n >\n \n \n
    \n
    \n ))}\n
    \n
    \n {I18n.t(\n \"js.calendars.subscriptions.single_calendar_subscriptions\",\n )}\n
    \n \n
    \n ) : (\n \n {I18n.t(\"js.calendars.subscriptions.no_access_token_found\")}\n \n )}\n
    \n \n );\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { AppointmentInviteDate } from \"../AppointmentInvite\";\n\nfunction AppointmentPreview({ name, date, description_rendered }) {\n return (\n
    \n

    {name}

    \n
    \n \n \n
    \n {description_rendered ? (\n \n ) : null}\n
    \n );\n}\nAppointmentPreview.propTypes = {\n name: PropTypes.string,\n date: PropTypes.shape({\n all_day: PropTypes.bool,\n end: PropTypes.any,\n same_day: PropTypes.bool,\n start: PropTypes.any,\n }),\n description_rendered: PropTypes.string,\n};\n\nexport default AppointmentPreview;\n","import React, { useMemo } from \"react\";\nimport { Control, Controller, UseFormRegister } from \"react-hook-form\";\n\nimport Label from \"components/shared/form/Label\";\nimport Checkbox from \"components/shared/form/fields/Checkbox\";\nimport classNames from \"classnames\";\nimport DirectoryPicker from \"components/shared/DirectoryPicker\";\nimport { networkMembershipRoles } from \"components/shared/PermissionPicker\";\n\nexport function ParticipantsPicker(props) {\n const participantsQuery = useMemo(\n () => ({\n include_consumers: Preload.current_network.config.consumers_enabled,\n include_membership_roles: true,\n }),\n [Preload.current_network.config.consumers_enabled],\n );\n\n return (\n \n );\n}\n\nexport default function ParticipantsField({\n control,\n register,\n}: {\n control: Control;\n register: UseFormRegister;\n}) {\n return (\n
    \n
    \n \n );\n}\n","import React, { useState } from \"react\";\nimport { map, filter } from \"lodash\";\n\nimport { useRecurringAppointment } from \"../../../hooks/useRecurringAppointment\";\nimport { useAddParticipants } from \"components/appointments/participants/api\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSpinner } from \"@fortawesome/pro-regular-svg-icons\";\nimport { ParticipantsPicker } from \"components/appointments/form/ParticipantsField\";\nimport { ValueType } from \"components/shared/DirectoryPicker/types\";\n\ntype NewParticipantFormArgs = {\n id: string;\n invite_consumers?: boolean;\n reloadAppointment: () => void;\n};\n\ntype FormData = {\n participantsStatus: string;\n emailNotification: boolean;\n inviteConsumers: boolean;\n selectedEntities: ValueType[];\n applyTo?: boolean;\n};\n\nfunction NewParticipantForm({ reloadAppointment, id }: NewParticipantFormArgs) {\n const { register, handleSubmit, control, reset } = useForm();\n const [reloading, setReloading] = useState(false);\n const isRecurring = useRecurringAppointment(id);\n const { mutate: addParticipants, isLoading } = useAddParticipants(id, {\n onSuccess: (_data, { participant }) => {\n reset();\n setReloading(true);\n window.setTimeout(reloadAppointment, 3000);\n window.setTimeout(reloadAppointment, 9000);\n toastr.success(\n I18n.t(\n participant.membership_ids.length === 0\n ? \"js.calendars.appointment.participations.success_alert\"\n : \"js.calendars.appointment.participations.success_alert_with_mr\",\n {\n member_count: participant.membership_ids.length,\n group_count: participant.group_ids.length,\n membership_role_count: participant.membership_role_ids.length,\n },\n ),\n );\n window.setTimeout(() => {\n reloadAppointment();\n setReloading(false);\n }, 18000);\n },\n onError: () => {\n toastr.error(I18n.t(\"js.saving_failure\"));\n },\n });\n\n const addParticipantsHandler = ({\n memberIds,\n groupIds,\n membershipRoleIds,\n participantsStatus,\n emailNotification,\n inviteConsumers,\n applyTo,\n }: {\n memberIds: (string | undefined)[];\n groupIds: (string | undefined)[];\n membershipRoleIds: (string | undefined)[];\n participantsStatus: string;\n emailNotification: boolean;\n inviteConsumers: boolean;\n applyTo?: \"this\" | \"all\";\n }) => {\n const params = {\n participant: {\n membership_ids: memberIds,\n group_ids: groupIds,\n membership_role_ids: membershipRoleIds,\n status: participantsStatus,\n send_email_notification: emailNotification,\n invite_consumers: inviteConsumers,\n },\n apply_to: applyTo,\n };\n addParticipants(params);\n };\n\n return (\n
    \n \n
    \n \n
    \n
    \n }\n />\n
    \n
    \n \n \n \n \n \n \n {Tixxt.currentNetwork.getConfig(\"consumers_enabled\") ? (\n \n ) : null}\n {isRecurring ? (\n \n ) : null}\n
    \n
    \n
    \n
    \n {isLoading || reloading ? (\n \n ) : null}\n \n {I18n.t(\"js.calendars.appointment.add_participant.send_title\")}\n \n
    \n \n
    \n );\n\n function onAddParticipants({\n participantsStatus,\n emailNotification,\n selectedEntities,\n inviteConsumers,\n applyTo,\n }: FormData) {\n const memberIds = map(\n filter(selectedEntities, (entity) => entity.type === \"member\"),\n (m) => m.id,\n );\n\n const groupIds = map(\n filter(selectedEntities, (entity) => entity.type === \"group\"),\n (g) => g.id,\n );\n\n const membershipRoleIds = map(\n filter(selectedEntities, (entity) => entity.type === \"membership_role\"),\n (mr) => mr.id,\n );\n\n addParticipantsHandler({\n memberIds,\n groupIds,\n membershipRoleIds,\n participantsStatus,\n emailNotification,\n inviteConsumers,\n applyTo: applyTo ? \"this\" : \"all\",\n });\n }\n}\n\nexport default NewParticipantForm;\n","import { useMutation } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\n\ntype ParticipantParams = {\n membership_ids: (string | undefined)[];\n group_ids: (string | undefined)[];\n membership_role_ids: (string | undefined)[];\n status: string;\n send_email_notification: boolean;\n invite_consumers?: boolean;\n};\n\nexport function useAddParticipants(\n appointmentId: string,\n options: {\n onSuccess: (\n data: any,\n params: { participant: ParticipantParams; apply_to?: \"this\" | \"all\" },\n ) => void;\n onError: (error: string) => void;\n },\n) {\n return useMutation(\n (params: { participant: ParticipantParams; apply_to?: \"this\" | \"all\" }) =>\n fetchApi(`/appointments/${appointmentId}/participants`, {\n method: \"POST\",\n body: params,\n }),\n options,\n );\n}\n\nexport function useUpdateParticipation(\n participantId: string,\n appointmentId: string,\n options: { onSuccess: () => void },\n) {\n return useMutation(\n (params: {\n participant: {\n status: string | null;\n };\n apply_to?: string;\n }) =>\n fetchApi(`/appointments/${appointmentId}/participants/${participantId}`, {\n method: \"PUT\",\n body: params,\n }),\n options,\n );\n}\n\nexport function useDeleteParticipant(\n participantId: string,\n appointmentId: string,\n options: { onSuccess: () => void },\n) {\n return useMutation(\n (params: { apply_to: string }) =>\n fetchApi(`/appointments/${appointmentId}/participants/${participantId}`, {\n method: \"DELETE\",\n body: params,\n }),\n options,\n );\n}\n","import React from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\nimport { faSpinner } from \"@fortawesome/pro-regular-svg-icons\";\n\ntype StatusButtonArgs = {\n changeStatus: () => void;\n icon: IconProp;\n isActive: boolean;\n className: string;\n isLoading: boolean;\n disabled?: boolean;\n};\n\nexport default function StatusButton({\n changeStatus,\n icon,\n isActive,\n disabled,\n className,\n isLoading,\n}: StatusButtonArgs) {\n return (\n \n \n \n );\n\n function onChangeStatus(e) {\n e.preventDefault();\n if (isActive) return;\n changeStatus();\n }\n}\n","import React from \"react\";\nimport Modal from \"./Modal\";\n\ninterface RecurringAppointmentDecisionModalProps {\n showModal: boolean;\n onClose: (show: boolean) => void;\n handleDecision: (decision: \"this\" | \"all\") => void;\n}\n\nconst RecurringAppointmentDecisionModal: React.FC<\n RecurringAppointmentDecisionModalProps\n> = ({ showModal, onClose, handleDecision }) => {\n return (\n showModal && (\n \n
    \n handleDecision(\"this\")}\n >\n {I18n.t(\"js.calendars.reucrring_appointment.rsvp.apply_to.this\")}\n \n handleDecision(\"all\")}\n >\n {I18n.t(\"js.calendars.reucrring_appointment.rsvp.apply_to.all\")}\n \n
    \n \n )\n );\n};\n\nexport default RecurringAppointmentDecisionModal;\n","import React, { useState } from \"react\";\nimport { isEmpty, map } from \"lodash\";\nimport StatusButton from \"./StatusButton\";\nimport {\n showNameWithProfileField,\n ExternalMemberBadge,\n} from \"components/memberships/MemberNameWithAdditions\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { useRecurringAppointment } from \"../../../hooks/useRecurringAppointment\";\nimport {\n useDeleteParticipant,\n useUpdateParticipation,\n} from \"components/appointments/participants/api\";\nimport { Membership } from \"../../../@types\";\nimport DropDown, { DropDownItem } from \"components/shared/DropDown\";\nimport RecurringAppointmentDecisionModal from \"components/shared/RecurringAppointmentDecisionModal\";\nimport {\n faCircleHalfStroke as faRegularCircleHalfStroke,\n faCircle as faRegularCircle,\n} from \"@fortawesome/pro-regular-svg-icons\";\nimport { faCircle as faSolidCircle } from \"@fortawesome/pro-solid-svg-icons\";\n\nconst PARTICIPANT_STATUS_LOOKUP = {\n open: { icon: faRegularCircleHalfStroke, className: \"muted\" },\n accepted: { icon: faSolidCircle, className: \"text-success\" },\n declined: { icon: faRegularCircle, className: \"text-danger\" },\n};\n\ntype ParticipantRowArgs = {\n id: string;\n appointmentId: string;\n membership: Membership;\n status: \"accepted\" | \"open\" | \"declined\" | \"invited\";\n reloadAppointment: () => void;\n};\n\nexport default function ParticipantRow({\n membership,\n status,\n id,\n appointmentId,\n reloadAppointment,\n}: ParticipantRowArgs) {\n const [showModal, setShowModal] = useState(false);\n const [newStatus, setNewStatus] = useState(null);\n\n const { mutate: updateParticipation, isLoading } = useUpdateParticipation(\n id,\n appointmentId,\n {\n onSuccess: () => {\n reloadAppointment();\n },\n },\n );\n const { mutate: deleteParticipant } = useDeleteParticipant(\n id,\n appointmentId,\n {\n onSuccess: () => {\n reloadAppointment();\n },\n },\n );\n\n const displayModal = useRecurringAppointment(appointmentId);\n\n function handleDecision(applyTo: string) {\n if (applyTo) {\n updateParticipation({\n participant: { status: newStatus },\n apply_to: applyTo,\n });\n }\n handleCloseModal();\n }\n\n function handleCloseModal() {\n setNewStatus(null);\n setShowModal(false);\n }\n\n function onChangeParticipantStatus(status: string) {\n if (displayModal) {\n setNewStatus(status);\n setShowModal(true);\n } else {\n setNewStatus(status);\n updateParticipation({ participant: { status } });\n }\n }\n\n function onRemoveParticipant(applyTo: string) {\n window?.bridge?.confirm(\n I18n.t(\"js.calendars.appointment.remove_participant.confirm_hint\"),\n () => deleteParticipant({ apply_to: applyTo }),\n );\n }\n\n return (\n \n \n \n \n \n {showNameWithProfileField({\n name: membership.name,\n detectionProfileField: membership.detection_profile_field,\n })}\n \n {membership.is_external ? : null}\n \n \n \n \n \n {I18n.t(\n `js.calendars.appointment.participant_status.${\n status === \"invited\" ? \"open\" : status\n }`,\n )}\n \n \n \n
    \n {map([\"open\", \"accepted\", \"declined\"], (state) => (\n onChangeParticipantStatus(state)}\n icon={PARTICIPANT_STATUS_LOOKUP[state].icon}\n isActive={\n state == \"open\"\n ? status === state || status === \"invited\"\n : status === state\n }\n className={PARTICIPANT_STATUS_LOOKUP[state]?.className}\n isLoading={\n state == \"open\"\n ? isLoading &&\n (newStatus === state || newStatus === \"invited\")\n : isLoading && newStatus === state\n }\n />\n ))}\n
    \n \n \n
    \n \n \n onRemoveParticipant(\"this\")}\n />\n {/^r-/.test(appointmentId) && (\n onRemoveParticipant(\"this\")}\n />\n )}\n \n
    \n \n {showModal && (\n \n )}\n \n );\n}\n","import React, { useState } from \"react\";\nimport { map, filter, includes, without, concat, isEmpty } from \"lodash\";\nimport classNames from \"classnames\";\n\nimport ParticipantRow from \"./ParticipantRow\";\nimport { Participant } from \"../../../@types/appointments\";\n\ntype ParticipantsOverviewArgs = {\n participants: Participant[];\n appointmentId: string;\n reloadAppointment: () => void;\n};\n\nexport default function ParticipantsOverview({\n participants,\n appointmentId,\n reloadAppointment,\n}: ParticipantsOverviewArgs) {\n const [searchText, setSearchText] = useState(\"\");\n const [activeFilter, setActiveFilter] = useState([]);\n const regex = new RegExp(`(${searchText})`, \"gi\");\n\n const filteredParticipants: Participant[] = filter(\n participants,\n (participant: Participant) =>\n !isEmpty(participant.membership.name.match(regex)) &&\n (includes(activeFilter, participant.status) || isEmpty(activeFilter)),\n );\n\n function onSearch(event: { target: { value: string } }) {\n setSearchText(event.target.value);\n }\n\n function changeActiveFilter(status: string) {\n setActiveFilter(\n includes(activeFilter, status)\n ? without(activeFilter, status)\n : concat(activeFilter, status),\n );\n }\n\n return (\n
    \n
    \n \n
    \n
    \n
      \n {map([\"open\", \"accepted\", \"declined\"], (status) => (\n \n {\n e.preventDefault();\n changeActiveFilter(status);\n }}\n >\n {I18n.t(\n `js.calendars.appointment.participant_status.${status}`,\n )}\n \n \n ))}\n
    \n
    \n
    \n
    \n \n \n {map(filteredParticipants, (participant) => (\n \n ))}\n \n
    \n
    \n );\n}\n","import React from \"react\";\nimport { isEmpty } from \"lodash\";\nimport AppointmentPreview from \"components/appointments/participants/AppointmentPreview\";\nimport NewParticipantForm from \"components/appointments/participants/NewParticipantForm\";\nimport ParticipantsOverview from \"components/appointments/participants/ParticipantsOverview\";\nimport { useParams } from \"helpers/tixxt-router\";\nimport { useAppointment } from \"components/appointments/api\";\nimport PageTitle from \"components/layout/PageTitle\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faBars as faRegularBars,\n faCloudArrowDown as faRegularCloudArrowDown,\n faFileCsv as faRegularFileCsv,\n faFileExcel as faRegularFileExcel,\n} from \"@fortawesome/pro-regular-svg-icons\";\nimport {\n faCaretLeft as faSolidCaretLeft,\n faCaretDown as faSolidCaretDown,\n} from \"@fortawesome/pro-solid-svg-icons\";\nimport DropDown, { DropDownItem } from \"components/shared/DropDown\";\n\nexport default function ParticipantsView() {\n const { id } = useParams();\n const {\n data: appointment,\n isLoading,\n refetch: reloadAppointment,\n } = useAppointment(id);\n\n return isLoading ? (\n

    {I18n.t(\"js.calendars.appointment.loading\")}

    \n ) : (\n
    \n \n
    \n
    \n \n \n \n \n
    \n {appointment?.can.download_attendees &&\n !isEmpty(appointment?.participants) && (\n
    \n \n {I18n.t(\"js.calendars.appointment.invitees.label\")}\n \n \n \n \n \n \n
    \n )}\n
    \n {appointment && (\n
    \n \n \n\n \n
    \n )}\n
    \n );\n}\n","import React, { FormEvent } from \"react\";\nimport { useNavigate } from \"helpers/tixxt-router\";\nimport Spectrum from \"components/shared/Spectrum\";\nimport {\n CreateCalendarParams,\n UpdateCalendarParams,\n} from \"components/appointments/calendars/api\";\nimport MemberSelect, { Value } from \"components/shared/MemberSelect\";\nimport { isEmpty, map, trim } from \"lodash\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport { Membership } from \"../../../@types\";\n\nconst COLOR_POOL = [\n \"CC2929\",\n \"CC8129\",\n \"C6CC29\",\n \"A8CC29\",\n \"6ACC29\",\n \"29CC53\",\n \"29CCB7\",\n \"299CCC\",\n \"2962CC\",\n \"7229CC\",\n \"CA29CC\",\n \"CC296A\",\n];\n\ntype FormData = {\n calendarName: string;\n calendarColor: string;\n calendarShare: Value[];\n};\n\ntype EditableCalendar = {\n type?: string;\n parent_id?: string;\n id?: string;\n name?: string;\n memberships?: Membership[];\n color?: string;\n};\n\ntype CalendarFormArgs = {\n calendar: EditableCalendar;\n onSubmit: (params: CreateCalendarParams | UpdateCalendarParams) => void;\n};\n\nexport default function CalendarForm({ calendar, onSubmit }: CalendarFormArgs) {\n const navigate = useNavigate();\n\n const { handleSubmit, control } = useForm();\n\n function submit({ calendarName, calendarColor, calendarShare }: FormData) {\n const values = {\n name: calendarName,\n color: trim(calendarColor, \"#\"),\n type: calendar.type,\n membership_ids: !isEmpty(calendarShare)\n ? map(calendarShare, \"value\")\n : undefined,\n };\n\n if (calendar.id) {\n onSubmit({\n calendar: { id: calendar.id, ...values },\n });\n } else {\n onSubmit({\n parent_id: calendar.parent_id,\n calendar: values,\n });\n }\n }\n\n function reset(e: FormEvent) {\n e.preventDefault();\n navigate(`/calendars/manage`);\n }\n\n return (\n
    \n
    \n \n
    \n \n
    \n (\n \n )}\n />\n
    \n
    \n
    \n \n
    \n (\n \n )}\n />\n
    \n
    \n {calendar.type === \"personal\" && (\n
    \n \n
    \n ({\n value: member.id,\n label: member.name,\n type: \"member\",\n })) || []\n }\n render={({ field }) => }\n />\n
    \n
    \n )}\n
    \n \n \n
    \n \n
    \n
    \n );\n}\n","import React from \"react\";\nimport PageTitle from \"components/layout/PageTitle\";\nimport CalendarForm from \"components/appointments/calendars/CalendarForm\";\nimport { useNavigate, useSearchParams } from \"helpers/tixxt-router\";\nimport { useCreateCalendar } from \"components/appointments/calendars/api\";\n\nexport default function NewCalendarPage() {\n const navigate = useNavigate();\n const [searchParams] = useSearchParams();\n const type = searchParams.get(\"type\");\n const parentId = searchParams.get(\"parent_id\");\n\n const { mutate: createCalendar } = useCreateCalendar({\n onSuccess: () => {\n toastr.success(I18n.t(\"js.saving_successful\"));\n navigate(`/calendars/manage`);\n },\n onError: () => {\n toastr.error(I18n.t(\"js.saving_failure\"));\n },\n });\n\n const calendar = {\n id: undefined,\n name: undefined,\n type: type || undefined,\n parent_id: parentId || undefined,\n };\n\n return (\n <>\n \n \n \n );\n}\n","import React from \"react\";\nimport { useNavigate, useParams } from \"helpers/tixxt-router\";\nimport {\n CreateCalendarParams,\n UpdateCalendarParams,\n useCalendar,\n useUpdateCalendar,\n} from \"components/appointments/calendars/api\";\nimport CalendarForm from \"components/appointments/calendars/CalendarForm\";\nimport PageTitle from \"components/layout/PageTitle\";\n\nexport default function EditCalendarPage() {\n const navigate = useNavigate();\n const { id } = useParams();\n const { data: calendar, isLoading } = useCalendar(id);\n\n const { mutate: updateCalendar } = useUpdateCalendar({\n onSuccess: () => {\n toastr.success(I18n.t(\"js.saving_successful\"));\n navigate(`/calendars/manage`);\n },\n onError: () => {\n toastr.error(I18n.t(\"js.saving_failure\"));\n },\n });\n\n const handleSubmit = (\n params: UpdateCalendarParams | CreateCalendarParams,\n ) => {\n updateCalendar(params as UpdateCalendarParams);\n };\n\n return (\n <>\n \n {!isLoading && calendar ? (\n \n ) : (\n I18n.t(\"js.loading\")\n )}\n \n );\n}\n","import React, { Ref } from \"react\";\nimport { Controller, Control } from \"react-hook-form\";\nimport MarkDownEditor from \"../../markdownEditor\";\nimport Label from \"components/shared/form/Label\";\nimport { omit } from \"lodash\";\n\ntype TextFieldArgs = {\n name: string;\n control: Control;\n label?: string;\n required?: boolean;\n placeholder?: string;\n textEditorRef?: Ref;\n};\nexport default function TextEditor({\n name,\n control,\n label,\n placeholder = \"\",\n required = false,\n textEditorRef,\n}: TextFieldArgs) {\n return (\n
    \n {label &&
    \n );\n}\n","import React, { useEffect, useRef, useState } from \"react\";\nimport moment from \"moment\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faClock as faRegularClock } from \"@fortawesome/pro-regular-svg-icons\";\nimport {\n faChevronUp as faSolidChevronUp,\n faChevronDown as faSolidChevronDown,\n} from \"@fortawesome/pro-solid-svg-icons\";\nimport { ChangeHandler } from \"react-hook-form\";\n\ntype TimePickerArgs = {\n value: string;\n onChange: (value: string) => void | ChangeHandler;\n};\n\nexport default function TimePicker({\n value = moment().format(),\n onChange,\n}: TimePickerArgs) {\n const [showPicker, setShowPicker] = useState(false);\n const [selectedDateTime, setSelectedDateTime] = useState(moment(value));\n const [inputValue, setInputValue] = useState(\n moment(value).format(\"HH:mm\") || moment().format(\"HH:mm\"),\n );\n const inputRef = useRef(null);\n const containerRef = useRef(null);\n\n useEffect(() => {\n setSelectedDateTime(moment(value)); // update date if its changed from outside (e.g. datepicker)\n }, [value]);\n\n useEffect(() => {\n if (!selectedDateTime.isSame(moment(value))) {\n onChange(moment(selectedDateTime).format());\n }\n }, [selectedDateTime]);\n\n function handleClickOutside(event: MouseEvent) {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n setShowPicker(false);\n }\n }\n\n useEffect(() => {\n document.addEventListener(\"click\", handleClickOutside);\n return () => {\n document.removeEventListener(\"click\", handleClickOutside);\n };\n }, []);\n\n function increaseHour(e?: React.MouseEvent) {\n e?.preventDefault();\n\n const newDateTime = moment(selectedDateTime).add(1, \"hour\");\n setSelectedDateTime(newDateTime);\n setInputValue(newDateTime.format(\"HH:mm\"));\n }\n\n function decreaseHour(e?: React.MouseEvent) {\n e?.preventDefault();\n\n const newDateTime = moment(selectedDateTime).subtract(1, \"hour\");\n setSelectedDateTime(newDateTime);\n setInputValue(newDateTime.format(\"HH:mm\"));\n }\n\n function increaseMinutes(e?: React.MouseEvent) {\n e?.preventDefault();\n\n const minutes = selectedDateTime.minutes();\n const roundedMinutes = Math.floor(minutes / 5) * 5;\n\n selectedDateTime.minutes(roundedMinutes);\n\n const newDateTime = moment(selectedDateTime)\n .startOf(\"minute\")\n .add(5, \"minutes\");\n setSelectedDateTime(newDateTime);\n setInputValue(newDateTime.format(\"HH:mm\"));\n }\n\n function decreaseMinutes(e?: React.MouseEvent) {\n e?.preventDefault();\n\n const minutes = selectedDateTime.minutes();\n const roundedMinutes = Math.ceil(minutes / 5) * 5;\n\n selectedDateTime.minutes(roundedMinutes);\n\n const newDateTime = moment(selectedDateTime).subtract(5, \"minutes\");\n setSelectedDateTime(newDateTime);\n setInputValue(newDateTime.format(\"HH:mm\"));\n }\n\n function parseTime(value: string) {\n const [inputHours, inputMinutes] = value.split(\":\");\n let hours = \"00\";\n let minutes = \"00\";\n\n if (/^[0-2]?[0-9]$/.test(inputHours)) {\n hours = inputHours.padStart(2, \"0\");\n if (parseInt(hours, 10) > 23) {\n hours = \"00\";\n }\n }\n\n if (/^[0-5]?[0-9]$/.test(inputMinutes)) {\n minutes = inputMinutes.padStart(2, \"0\");\n }\n\n return `${hours}:${minutes}`;\n }\n\n function handleChange(e: React.ChangeEvent) {\n setInputValue(e.target.value);\n }\n function handleBlur() {\n const newTime = parseTime(inputValue);\n\n const [newHours, newMinutes] = newTime.split(\":\");\n\n const updatedDateTime = moment(selectedDateTime)\n .hours(parseInt(newHours, 10))\n .minutes(parseInt(newMinutes, 10));\n\n setSelectedDateTime(updatedDateTime);\n setInputValue(updatedDateTime.format(\"HH:mm\"));\n }\n\n function handleKeyDown(e: React.KeyboardEvent) {\n const input = e.target as HTMLInputElement;\n const { selectionStart, selectionEnd } = input;\n\n if (selectionStart === null || selectionEnd === null) {\n return;\n }\n\n if (e.key === \"ArrowUp\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n\n if (selectionStart < 3) {\n if (e.key === \"ArrowUp\") {\n increaseHour();\n } else if (e.key === \"ArrowDown\") {\n decreaseHour();\n }\n } else {\n if (e.key === \"ArrowUp\") {\n increaseMinutes();\n } else if (e.key === \"ArrowDown\") {\n decreaseMinutes();\n }\n }\n\n setTimeout(() => {\n if (inputRef && inputRef.current) {\n inputRef.current.selectionStart = selectionStart;\n inputRef.current.selectionEnd = selectionEnd;\n }\n }, 0);\n }\n }\n\n return (\n
    \n
    \n setShowPicker(true)}\n onBlur={handleBlur}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={I18n.t(\"js.calendars.date_range.time_placeholder\")}\n />\n {\n e.preventDefault();\n inputRef?.current?.focus();\n }}\n >\n \n \n
    \n {showPicker && (\n
    \n
    \n \n
    \n \n
    \n {selectedDateTime.format(\"HH\")}\n
    \n
    :
    \n
    \n {selectedDateTime.format(\"mm\")}\n
    \n \n
    \n \n
    \n
    \n )}\n
    \n );\n}\n","import React, { useEffect, useRef } from \"react\";\nimport Datepicker from \"helpers/Datepicker\";\nimport moment from \"moment\";\nimport { isEmpty, noop } from \"lodash\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCalendar } from \"@fortawesome/pro-regular-svg-icons\";\nimport TimePicker from \"components/shared/form/fields/TimePicker\";\nimport Label from \"components/shared/form/Label\";\nimport { Control, useController } from \"react-hook-form\";\n\ntype DateTimePickerArgs = {\n name: string;\n showTimePicker?: boolean;\n label?: string;\n showTimezone?: boolean;\n timeZone?: string;\n interval?: moment.Duration;\n required?: boolean | string;\n control?: Control;\n defaultValue?: string;\n};\n\nexport default function DateTimePicker({\n name,\n showTimePicker = false,\n label,\n showTimezone = false,\n timeZone,\n interval,\n required = false,\n control,\n defaultValue,\n}: DateTimePickerArgs) {\n const { field } = useController({\n name,\n rules: { required },\n defaultValue: required ? defaultValue || moment().format() : \"\",\n control,\n });\n const pickerRef = useRef(null);\n\n function isDateSelectable(pickerDate: string) {\n const momentDate = moment(pickerDate);\n const startDate = moment(field.value).clone();\n if (momentDate.isBefore(startDate, \"day\")) {\n return false;\n }\n const checkDate = startDate.clone().startOf(\"day\");\n while (checkDate.isSameOrBefore(momentDate)) {\n if (checkDate.isSame(momentDate, \"day\")) {\n return true;\n }\n checkDate.add(interval);\n }\n return false;\n }\n\n useEffect(() => {\n const options = interval\n ? {\n beforeShowDay: (pickerDate: string) => ({\n enabled: isDateSelectable(pickerDate),\n }),\n }\n : {};\n\n const picker = new Datepicker(pickerRef.current, options);\n\n pickerRef.current?.addEventListener(\"changeDate\", (e: CustomEventInit) => {\n field.onChange(\n e.detail.date && moment(e.detail.date).isValid()\n ? moment(e.detail.date)\n .hours(moment(field.value).hours())\n .minutes(moment(field.value).minutes())\n .format()\n : \"\",\n );\n });\n\n return () => {\n picker.destroy();\n };\n }, [interval]);\n\n return (\n
    \n {label &&
    \n );\n}\n","import React, { ReactElement, useState } from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faChevronUp, faChevronDown } from \"@fortawesome/pro-regular-svg-icons\";\nimport { IconDefinition } from \"@fortawesome/pro-regular-svg-icons\";\nimport classNames from \"classnames\";\nimport { isString } from \"lodash\";\n\ntype PartialToggleArgs = {\n onToggle?: (showPartial: boolean) => void;\n label: string | ((showPartial: boolean) => string);\n showIcon?: IconDefinition;\n hideIcon?: IconDefinition;\n iconClassName?: string | ((showPartial: boolean) => string);\n shouldShowPartial?: boolean;\n children: ReactElement[] | ReactElement;\n};\n\nexport default function PartialToggle({\n label,\n showIcon,\n hideIcon,\n iconClassName,\n shouldShowPartial = false,\n children,\n onToggle,\n}: PartialToggleArgs) {\n const [showPartial, setShowPartial] = useState(shouldShowPartial);\n return (\n <>\n {\n e.preventDefault();\n onToggle && onToggle(showPartial);\n setShowPartial(!showPartial);\n }}\n >\n {isString(label) ? label : label(showPartial)}\n \n \n {showPartial && children}\n \n );\n}\n","import React, { useState } from \"react\";\nimport {\n Control,\n Controller,\n ControllerRenderProps,\n useWatch,\n} from \"react-hook-form\";\nimport Label from \"components/shared/form/Label\";\nimport ReactSelect from \"react-select\";\nimport { isEmpty, map } from \"lodash\";\nimport moment from \"moment\";\nimport classNames from \"classnames\";\nimport { faXmark } from \"@fortawesome/pro-regular-svg-icons\";\nimport DateTimePicker from \"components/shared/form/fields/DateTimePicker\";\nimport PartialToggle from \"components/appointments/form/PartialToggle\";\n\nconst FREQUENCY_LOOKUP = {\n weekly: \"week\",\n monthly: \"month\",\n yearly: \"year\",\n daily: \"day\",\n custom: \"custom\",\n};\n\ntype RecurringSelectArgs = {\n name: string;\n label?: string;\n control: Control;\n required?: boolean;\n startDate: string;\n};\n\nexport default function RecurringSelectField({\n name,\n label,\n control,\n required,\n startDate,\n}: RecurringSelectArgs) {\n return (\n
    \n {label &&
    \n );\n}\n\nfunction RecurringSelect({\n field,\n startDate,\n control,\n}: {\n field: ControllerRenderProps;\n startDate: string;\n control: Control;\n}) {\n const { recurrence_frequency, recurrence_end_time, recurrence_interval } =\n useWatch({\n control,\n name: \"recurrence_pattern\",\n });\n const [showEndPicker, setShowEndPicker] = useState(\n !isEmpty(recurrence_end_time),\n );\n\n // eslint-disable-next-line prefer-const\n let [isCustom, setIsCustom] = useState(recurrence_frequency === \"custom\");\n isCustom = isCustom || (recurrence_interval && recurrence_interval !== 1);\n\n const level1Options = map(\n [\"never\", \"daily\", \"weekly\", \"monthly\", \"yearly\", \"custom\"],\n (pattern) => ({\n value: pattern,\n label: I18n.t(\n `js.calendars.appointment.recurrence-pattern.frequency.${pattern}`,\n ),\n }),\n );\n\n const customOptions = map(\n [\"daily\", \"weekly\", \"monthly\", \"yearly\"],\n (pattern) => ({\n value: pattern,\n label: I18n.t(\n `js.calendars.appointment.recurrence-pattern.custom_frequency.${pattern}`,\n ),\n }),\n );\n\n function level1HandleChange(value: {\n [key: string]: string | number | null;\n }) {\n const isCustomFrequency = value.recurrence_frequency === \"custom\";\n const isFieldFrequencyNever = field.value.recurrence_frequency === \"never\";\n\n setIsCustom(isCustomFrequency);\n\n if (!isCustomFrequency) {\n handleChange(value);\n }\n\n if (isCustomFrequency && isFieldFrequencyNever) {\n field.onChange({\n ...field.value,\n recurrence_frequency: \"daily\",\n });\n }\n }\n\n function handleChange(value: { [key: string]: string | number | null }) {\n if (value.recurrence_frequency) {\n if (value.recurrence_frequency !== recurrence_frequency) {\n field.onChange({\n ...field.value,\n recurrence_end_time: null,\n recurrence_interval:\n value.recurrence_frequency !== \"custom\" ? 1 : recurrence_interval, // Reset recurrence_interval if not custom\n ...value,\n });\n setShowEndPicker(false);\n return;\n }\n }\n\n field.onChange({\n ...field.value,\n ...value,\n });\n }\n\n return (\n
    \n
    \n \n
    \n I18n.t(\"js.plugins.select2.no_match\")}\n value={{\n value: isCustom ? \"custom\" : field.value.recurrence_frequency,\n label: I18n.t(\n `js.calendars.appointment.recurrence-pattern.frequency.${\n isCustom ? \"custom\" : recurrence_frequency\n }`,\n ),\n }}\n options={level1Options}\n onChange={(selectedOption) =>\n level1HandleChange({\n recurrence_frequency: selectedOption?.value,\n })\n }\n className=\"form-select-container\"\n classNamePrefix=\"form-select\"\n isSearchable={false}\n unstyled\n />\n
    \n
    \n {isCustom && (\n
    \n \n
    \n \n handleChange({ recurrence_interval: parseInt(e.target.value) })\n }\n min={1}\n />\n \n handleChange({ recurrence_frequency: selectedOption?.value })\n }\n className=\"form-select-container w-full\"\n classNamePrefix=\"form-select\"\n isSearchable={false}\n unstyled\n />\n
    \n
    \n )}\n {recurrence_frequency !== \"never\" && (\n {\n handleChange({\n recurrence_end_time: showPartial\n ? null\n : field.value.recurrence_end_time ||\n moment(startDate)\n .add(\n recurrence_interval,\n FREQUENCY_LOOKUP[recurrence_frequency],\n )\n .format(),\n });\n }}\n label={(showPartial) =>\n showPartial\n ? I18n.t(\"js.calendars.date_range.remove_end\")\n : I18n.t(\"js.calendars.date_range.set_end.link\")\n }\n iconClassName={(showPartial) =>\n classNames({ \"text-danger\": showPartial })\n }\n hideIcon={faXmark}\n shouldShowPartial={showEndPicker}\n >\n \n \n )}\n
    \n );\n}\n","import React from \"react\";\nimport { UseFormRegister } from \"react-hook-form\";\nimport Label from \"components/shared/form/Label\";\nimport PartialToggle from \"components/appointments/form/PartialToggle\";\n\ntype LocationFieldArgs = {\n register: UseFormRegister;\n shouldShowLocationDetails?: boolean;\n};\nexport default function LocationField({\n register,\n shouldShowLocationDetails = false,\n}: LocationFieldArgs) {\n return (\n
    \n {
    \n );\n}\n","import React, { useEffect } from \"react\";\nimport Label from \"components/shared/form/Label\";\nimport {\n Control,\n UseFormRegister,\n UseFormSetValue,\n useWatch,\n} from \"react-hook-form\";\nimport Checkbox from \"components/shared/form/fields/Checkbox\";\n\nexport default function TeamsConfigField({\n register,\n control,\n setValue,\n}: {\n register: UseFormRegister;\n control: Control;\n setValue: UseFormSetValue;\n}) {\n const teamsSyncEnabled = useWatch({\n control,\n name: \"teams_configuration.teams_sync_enabled\",\n });\n const onlineMeeting = useWatch({\n control,\n name: \"teams_configuration.online_meeting\",\n });\n\n useEffect(() => {\n if (teamsSyncEnabled) setValue(\"teams_configuration.online_meeting\", true);\n }, [teamsSyncEnabled]);\n\n useEffect(() => {\n if (!teamsSyncEnabled || !onlineMeeting)\n setValue(\"teams_configuration.bypass_lobby\", false);\n }, [teamsSyncEnabled, onlineMeeting]);\n\n return (\n
    \n
    \n );\n}\n","import React, { useEffect } from \"react\";\nimport { Control, UseFormSetValue, useWatch } from \"react-hook-form\";\n\nimport Select from \"components/shared/form/fields/Select\";\nimport { useQuery } from \"react-query\";\nimport { find, isString, map } from \"lodash\";\nimport { Categories } from \"../../../@types/appointmentCategories\";\n\nexport default function CategorySelectionField({\n control,\n setValue,\n}: {\n control: Control;\n setValue: UseFormSetValue;\n}) {\n const { data: categories } = useQuery(\"/appointments/categories\");\n const selectedCategory = useWatch({ control, name: \"category\" });\n\n useEffect(() => {\n if (categories && isString(selectedCategory)) {\n const preSelectedCategory = find(categories, { label: selectedCategory });\n\n preSelectedCategory &&\n setValue(\"category\", {\n label: preSelectedCategory.label,\n value: preSelectedCategory.id,\n });\n }\n }, [categories]);\n\n return (\n ({\n value: cat.id,\n label: cat.label,\n }))}\n control={control}\n />\n );\n}\n","import React from \"react\";\nimport { Control, Controller } from \"react-hook-form\";\n\nimport Label from \"components/shared/form/Label\";\nimport DirectoryPicker from \"components/shared/DirectoryPicker\";\n\nexport default function ContactsField({ control }: { control: Control }) {\n return (\n
    \n
    \n );\n}\n","import React, { useRef } from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faUsers } from \"@fortawesome/pro-regular-svg-icons\";\n\nimport Label from \"components/shared/form/Label\";\nimport { UseFormRegister } from \"react-hook-form\";\nimport Checkbox from \"components/shared/form/fields/Checkbox\";\n\nexport default function AttendeeConfigurationField({\n register,\n}: {\n register: UseFormRegister;\n}) {\n const inputRef = useRef(null);\n return (\n
    \n \n
    \n
    \n \n
    \n
    \n {\n register(\"attendee_configuration.total\").ref(e);\n inputRef.current = e;\n }}\n min=\"0\"\n />\n {\n e.preventDefault();\n inputRef?.current?.focus();\n }}\n >\n \n \n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n );\n}\n","import React from \"react\";\nimport { Control, UseFormRegister, useWatch } from \"react-hook-form\";\n\nimport Label from \"components/shared/form/Label\";\nimport Checkbox from \"components/shared/form/fields/Checkbox\";\nimport DateTimePicker from \"components/shared/form/fields/DateTimePicker\";\n\nexport default function ApplicationConfigurationField({\n register,\n control,\n}: {\n register: UseFormRegister;\n control: Control;\n}) {\n const withCosts = useWatch({\n control,\n name: \"application_configuration.registration_with_costs\",\n });\n const registrationRequired = useWatch({\n control,\n name: \"application_configuration.registration_required\",\n });\n\n return (\n
    \n \n
    \n
    \n \n
    \n {withCosts && (\n
    \n \n\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n )}\n
    \n \n
    \n {registrationRequired && (\n \n )}\n
    \n \n
    \n \n
    \n
    \n
    \n
    \n );\n}\n","import React, { useState } from \"react\";\nimport {\n Control,\n UseFormRegister,\n UseFormSetValue,\n useWatch,\n} from \"react-hook-form\";\n\nimport FileUploadField from \"components/shared/form/fields/FileUploadField\";\nimport classNames from \"classnames\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faChevronUp, faChevronDown } from \"@fortawesome/pro-solid-svg-icons\";\nimport TextInput from \"components/shared/form/fields/TextInput\";\nimport CategorySelectionField from \"components/appointments/form/CategorySelectionField\";\nimport ContactsField from \"components/appointments/form/ContactsField\";\nimport AttendeeConfigurationField from \"components/appointments/form/AttendeeConfigurationField\";\nimport ApplicationConfigurationField from \"components/appointments/form/ApplicationConfigurationField\";\n\nexport default function EventSettings({\n control,\n register,\n setValue,\n}: {\n control: Control;\n register: UseFormRegister;\n setValue: UseFormSetValue;\n}) {\n const isEvent = useWatch({ control, name: \"is_event\" });\n const [showEventSettings, setShowEventSettings] = useState(isEvent);\n\n return (\n
    \n {\n e.preventDefault();\n setShowEventSettings(!showEventSettings);\n setValue(\"is_event\", !showEventSettings);\n }}\n >\n

    {I18n.t(\"js.calendars.appointment.toggle_event_settings\")}

    \n \n \n {showEventSettings && (\n
    \n \n \n \n \n \n \n \n
    \n )}\n
    \n );\n}\n","import React from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowsRepeat } from \"@fortawesome/pro-regular-svg-icons\";\nimport { split } from \"lodash\";\n\nexport default function ModifiedRecurringAppointmentHint({\n appointmentId,\n}: {\n appointmentId: string;\n}) {\n const recurringAppointmentId = split(appointmentId, \"-\")[1];\n return (\n
    \n \n \n \n {I18n.t(\"js.calendars.appointment.recurrence-pattern.edit_series\")}\n \n
    \n );\n}\n","import React from \"react\";\nimport moment from \"moment/moment\";\nimport { useFormContext, useWatch } from \"react-hook-form\";\nimport { faXmark } from \"@fortawesome/pro-regular-svg-icons\";\nimport Label from \"components/shared/form/Label\";\nimport { compact, isEmpty, map } from \"lodash\";\nimport DateTimePicker from \"components/shared/form/fields/DateTimePicker\";\nimport classNames from \"classnames\";\nimport PartialToggle from \"components/appointments/form/PartialToggle\";\nimport Select from \"components/shared/form/fields/Select\";\nimport Checkbox from \"components/shared/form/fields/Checkbox\";\n\ntype DateSelectArgs = {\n name: string;\n label?: string;\n required?: boolean;\n};\nexport default function DateRangeSelectField({\n label,\n required = false,\n}: DateSelectArgs) {\n return (\n
    \n {label &&
    \n );\n}\n\nfunction DateRangeSelect() {\n const { setValue } = useFormContext();\n const { all_day, start, time_zone, end } = useWatch({\n control: undefined,\n name: \"date\",\n });\n\n const selectOptions = compact(\n map(moment.tz.names(), (zone) => {\n const invalid = zone.startsWith(\"Etc/\") || /^[A-Z0-9+-]+$/.test(zone);\n\n if (!invalid) {\n return {\n value: zone,\n label: `${zone.replace(/\\//g, \", \").replace(/_/g, \" \")} (${moment.tz\n .zone(zone)\n ?.abbr(moment.tz(start, time_zone.value).valueOf())})`,\n };\n } else {\n return null;\n }\n }),\n );\n\n return (\n
    \n \n \n {\n setValue(\n \"date.end\",\n showPartial ? null : end || moment(start).add(1, \"hour\").format(),\n );\n }}\n label={(showPartial) =>\n showPartial\n ? I18n.t(\"js.calendars.date_range.remove_end\")\n : I18n.t(\"js.calendars.date_range.set_end.link\")\n }\n hideIcon={faXmark}\n iconClassName={(showPartial) =>\n classNames({ \"text-danger\": showPartial })\n }\n shouldShowPartial={!isEmpty(end)}\n >\n \n \n\n {!all_day && (\n <>\n \n \n \n \n )}\n
    \n );\n}\n","import React from \"react\";\nimport Select from \"react-select\";\nimport { map, isEmpty, includes, get } from \"lodash\";\nimport { useQuery } from \"react-query\";\nimport { stringify } from \"query-string\";\nimport { Control, Controller, ControllerRenderProps } from \"react-hook-form\";\nimport Label from \"components/shared/form/Label\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSpinner } from \"@fortawesome/pro-regular-svg-icons\";\n\ntype MeetingRoom = {\n name: string;\n occupied: boolean;\n};\n\nconst useReservableMeetingRooms = ({ dateRange, roomId, loadData }) => {\n const query = {\n filter: \"reservable\",\n ...dateRange,\n room_id: roomId || null,\n };\n\n const url = `/meeting_rooms?${stringify(query)}`;\n\n return useQuery(url, { enabled: loadData });\n};\n\ntype MeetingRoomSelectArgs = {\n dateRange: {\n start: string;\n end?: string;\n };\n control: Control;\n};\n\nexport default function MeetingRoomSelectField({\n dateRange,\n control,\n}: MeetingRoomSelectArgs) {\n return (\n
    \n \n
    \n \n MeetingRoomSelect({\n field,\n dateRange,\n disabled: !dateRange.end,\n })\n }\n />\n
    \n
    \n );\n}\n\nfunction MeetingRoomSelect({\n field,\n dateRange,\n disabled,\n}: {\n field: ControllerRenderProps;\n dateRange: MeetingRoomSelectArgs[\"dateRange\"];\n disabled: boolean;\n}) {\n const preSelectedRoomId = get(field.value, \"room_id\") || null;\n\n const loadData = !isEmpty(dateRange.end);\n\n const {\n isLoading: loading,\n data: meetingRooms,\n error,\n } = useReservableMeetingRooms({\n dateRange,\n roomId: preSelectedRoomId,\n loadData,\n });\n\n function handleChange(value: { [key: string]: string } | undefined) {\n field.onChange(value ? { room_id: value.id, room_name: value.name } : null);\n }\n\n const selectOptions = map(meetingRooms, (room) => ({\n value: room,\n label:\n room.name +\n (room.occupied\n ? \" \" + I18n.t(\"js.calendars.appointment.meeting.occupied\")\n : \"\"),\n isDisabled: room.occupied,\n }));\n\n return loading ? (\n
    \n {\" \"}\n {I18n.t(\"js.calendars.appointment.meeting.meeting_rooms.loading\")}\n
    \n ) : error ? (\n
    \n {I18n.t(\"js.generic_error\")}\n
    \n ) : isEmpty(meetingRooms) && !disabled ? (\n
    \n {I18n.t(\"js.calendars.appointment.meeting.meeting_rooms.nothing_free\")}\n
    \n ) : (\n <>\n handleChange(selectedOption?.value)}\n placeholder={I18n.t(\n \"js.calendars.appointment.meeting.meeting_rooms.select\",\n )}\n classNamePrefix=\"form-select\"\n isDisabled={disabled}\n isClearable\n unstyled\n />\n \n {disabled\n ? I18n.t(\"js.calendars.appointment.meeting.meeting_rooms.select_hint\")\n : I18n.t(\"js.calendars.appointment.meeting.buffer_time\")}\n \n \n );\n}\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { FormProvider, useForm, useWatch } from \"react-hook-form\";\nimport {\n ApplicationConfiguration,\n Appointment,\n AttendeeConfiguration,\n TeamsConfig,\n} from \"../../../@types/appointments\";\nimport TextInput from \"components/shared/form/fields/TextInput\";\nimport TextEditor from \"components/shared/form/fields/TextEditor\";\nimport Select from \"components/shared/form/fields/Select\";\nimport {\n compact,\n concat,\n filter,\n find,\n forEach,\n isEmpty,\n keys,\n map,\n omit,\n orderBy,\n pull,\n some,\n startsWith,\n toLower,\n} from \"lodash\";\nimport {\n useCalendars,\n useCreateAppointment,\n useUpdateAppointment,\n} from \"components/appointments/api\";\nimport moment from \"moment\";\nimport RecurringSelectField from \"components/appointments/form/RecurringSelectField\";\nimport LocationField from \"components/appointments/form/LocationField\";\nimport ParticipantsField from \"components/appointments/form/ParticipantsField\";\nimport TeamsConfigField from \"components/appointments/form/TeamsConfigField\";\nimport FileUploadField from \"components/shared/form/fields/FileUploadField\";\nimport EventSettings from \"components/appointments/form/EventSettings\";\nimport { Category } from \"../../../@types/appointmentCategories\";\nimport Checkbox from \"components/shared/form/fields/Checkbox\";\nimport ModifiedRecurringAppointmentHint from \"components/appointments/form/ModifiedRecurringAppointmentHint\";\nimport Label from \"components/shared/form/Label\";\nimport usePublishAllVolatile from \"helpers/files/usePublishAllVolatile\";\nimport FormActions from \"components/shared/form/fields/FormActions\";\nimport { ValueType } from \"components/shared/DirectoryPicker/types\";\nimport DateRangeSelectField from \"components/appointments/form/DateRangeSelectField\";\nimport MeetingRoomSelectField from \"components/shared/MeetinRoomSelectField\";\n\nexport type AppointmentFormData = {\n name: string;\n description: string;\n calendars: { value: string; label: string }[];\n date: {\n all_day: boolean;\n start: string;\n end?: string;\n same_day: boolean;\n time_zone: { label: string; value: string };\n };\n recurrence_pattern: {\n recurrence_frequency: \"never\" | \"daily\" | \"weekly\" | \"monthly\" | \"yearly\";\n recurrence_end_time: string | null;\n };\n meeting?: {\n room_id: string;\n reservation_id: string;\n room_name: string;\n } | null;\n location: {\n address1: string | null;\n address2: string | null;\n city: string | null;\n country: string | null;\n link: string | null;\n maps_url: string | null;\n meeting_link_type: string | null;\n name: string | null;\n zip: string | null;\n };\n participants: ValueType[];\n teams_configuration: TeamsConfig;\n event_files: File[];\n event_image: File | File[];\n category: (Category & { value?: string }) | null;\n consultants: string;\n organizer: string;\n contacts: ValueType[];\n attendee_configuration: AttendeeConfiguration;\n application_configuration: ApplicationConfiguration;\n invite_consumers: boolean;\n post_to_stream: boolean;\n is_event: boolean;\n};\n\ntype AppointmentFormArgs = {\n appointment?: Appointment;\n date?: { start: string; all_day: boolean } | null;\n calendarId?: string | null;\n};\n\nexport default function AppointmentForm({\n appointment,\n date,\n calendarId,\n}: AppointmentFormArgs) {\n const isRecurring = appointment?.type === \"recurring_appointment\" || false;\n const isNormal = appointment?.type === \"appointment\" || false;\n const isModifiedRecurring =\n (appointment?.type === \"virtual_appointment\" &&\n startsWith(appointment?.id, \"r-\")) ||\n false;\n\n const isExisting = !!appointment?.id;\n\n const { data: calendars } = useCalendars();\n\n const publishAllVolatile = usePublishAllVolatile();\n\n const { mutate: createAppointment, isLoading: isCreating } =\n useCreateAppointment({\n onSuccess,\n onError,\n });\n const { mutate: updateAppointment, isLoading: isUpdating } =\n useUpdateAppointment({\n onSuccess,\n onError,\n });\n\n const [filesLoading, setFilesLoading] = useState(false);\n\n const calendarSelectRef = useRef(null);\n const dateRangeRef = useRef(null);\n\n const defaultStartDate = appointment?.date.start\n ? moment(appointment?.date.start)\n : date\n ? moment(date?.start)\n : moment().add(1, \"hour\").startOf(\"hour\");\n\n const defaultEndDate = appointment?.date.end\n ? moment(appointment?.date.end)\n : isExisting\n ? null\n : moment(defaultStartDate).add(1, \"hour\");\n\n const methods = useForm({\n defaultValues: {\n name: appointment?.name || \"\",\n description: appointment?.description || \"\",\n calendars: appointment\n ? compact(\n map(appointment?.calendar_ids, (calendar_id) => {\n const calendar = find(calendars, { id: calendar_id });\n\n return calendar && { value: calendar_id, label: calendar.name };\n }),\n )\n : [],\n date: {\n start: defaultStartDate.format(),\n end: defaultEndDate?.format(),\n all_day: appointment?.date.all_day || date?.all_day,\n time_zone: {\n label: `${appointment?.date.time_zone || moment.tz.guess()} (${moment\n .tz(\n appointment?.date.start || moment().format(),\n appointment?.date.time_zone || moment.tz.guess(),\n )\n .format(\"z\")})`,\n value: appointment?.date.time_zone || moment.tz.guess(),\n },\n same_day: appointment?.date.same_day || true,\n },\n recurrence_pattern: appointment?.recurrence_pattern || {\n recurrence_frequency: \"never\",\n },\n meeting: appointment?.meeting,\n location: appointment?.location,\n participants: appointment?.participants,\n event_files: appointment?.event_files || [],\n teams_configuration: appointment?.teams_configuration,\n event_image: appointment?.event_image ? [appointment?.event_image] : [],\n category: appointment?.category || {\n value: \"-1\",\n label: I18n.t(\"js.calendars.appointment.category.no_selection\"),\n },\n consultants: appointment?.consultants,\n contacts: appointment?.contacts.map((c) => ({ ...c, type: \"member\" })),\n organizer: appointment?.organizer,\n attendee_configuration: appointment?.attendee_configuration || {\n user_can_opt: false,\n },\n application_configuration: appointment?.application_configuration || {\n currency: \"€\",\n },\n invite_consumers: false,\n is_event: appointment?.is_event || false,\n },\n });\n\n const { handleSubmit, control, register, setValue } = methods;\n\n const selectedDate = useWatch({ control, name: \"date\" });\n const selectedEventFiles = useWatch({ control, name: \"event_files\" });\n const selectedEventImage = useWatch({ control, name: \"event_image\" });\n\n function onSuccess(newAppointment: Appointment) {\n location.replace(`/appointments/${newAppointment.id}`);\n }\n\n function onError() {\n toastr.error(I18n.t(\"generic_error\"));\n }\n\n function onValidationError(errors) {\n forEach(document.getElementsByClassName(\"field-error\"), (element) => {\n element?.classList.remove(\"field-error\");\n });\n\n forEach(errors, (error, name) => {\n if (name === \"calendars\") {\n calendarSelectRef?.current?.classList.add(\"field-error\");\n } else {\n error?.ref?.classList.add(\"field-error\");\n }\n toastr.error(error?.message || I18n.t(\"generic_error\"));\n });\n }\n\n useEffect(() => {\n setFilesLoading(\n some(concat(selectedEventFiles, selectedEventImage), {\n state: \"uploading\",\n }),\n );\n }, [selectedEventFiles, selectedEventImage]);\n\n useEffect(() => {\n if (calendars) {\n let defaultCalendars: { value: string; label: string }[] = [];\n\n if (appointment)\n defaultCalendars = compact(\n map(appointment?.calendar_ids, (calendar_id) => {\n const calendar = find(calendars, { id: calendar_id });\n\n return calendar && { value: calendar_id, label: calendar.name };\n }),\n );\n\n if (calendarId) {\n const preSelectedCalendar = find(calendars, { id: calendarId });\n if (preSelectedCalendar)\n defaultCalendars = [\n {\n value: preSelectedCalendar.id,\n label: preSelectedCalendar.name,\n },\n ];\n }\n setValue(\"calendars\", defaultCalendars);\n }\n }, [calendars]);\n\n async function submit(data: AppointmentFormData) {\n forEach(document.getElementsByClassName(\"field-error\"), (element) => {\n element?.classList.remove(\"field-error\");\n });\n\n if (\n data.date.end &&\n moment(data.date.end).isBefore(moment(data.date.start))\n ) {\n toastr.error(I18n.t(\"js.calendars.validation_errors.end_lt_start\"));\n dateRangeRef?.current?.classList.add(\"field-error\");\n dateRangeRef?.current?.scrollIntoView({ behavior: \"smooth\" });\n return;\n }\n\n let newAppointmentData: any = { ...data };\n\n if (data.category?.value === \"-1\") {\n newAppointmentData.category = null;\n } else {\n newAppointmentData.category = data.category?.value;\n }\n\n if (!Preload.current_network.can.create_meetings) {\n newAppointmentData.meeting = null;\n }\n\n newAppointmentData[\"calendar_ids\"] = map(data.calendars, \"value\");\n newAppointmentData[\"membership_ids_to_invite\"] = map(\n filter(data.participants, { type: \"member\" }),\n \"id\",\n );\n newAppointmentData[\"membership_role_ids_to_invite\"] = map(\n filter(data.participants, { type: \"membership_role\" }),\n \"id\",\n );\n newAppointmentData[\"group_ids_to_invite\"] = map(\n filter(data.participants, { type: \"group\" }),\n \"id\",\n );\n newAppointmentData[\"contact_ids\"] = map(data.contacts, \"id\");\n\n if (!isEmpty(selectedEventFiles)) {\n const result = await publishAllVolatile({\n values: {\n event_files: selectedEventFiles,\n },\n storageDirectory: \"files\",\n });\n\n newAppointmentData.event_files = map(result.event_files, (file) =>\n file.state\n ? { ...file, file_object_id: file.id, id: null, type: \"file\" }\n : file,\n );\n } else {\n newAppointmentData.event_files = [];\n }\n\n if (!isEmpty(selectedEventImage)) {\n const result = await publishAllVolatile({\n values: {\n event_image: selectedEventImage,\n },\n storageDirectory: \"images\",\n });\n newAppointmentData.event_image = result.event_image[0]\n ? result.event_image[0].state\n ? omit(\n {\n ...result.event_image[0],\n file_object_id: result.event_image[0].id,\n },\n \"id\",\n )\n : result.event_image[0]\n : {};\n } else {\n newAppointmentData.event_image = null;\n }\n\n newAppointmentData = omit(newAppointmentData, [\n \"calendars\",\n \"participants\",\n \"contacts\",\n ]);\n\n newAppointmentData = {\n ...newAppointmentData,\n date: {\n ...newAppointmentData.date,\n time_zone: newAppointmentData.date.time_zone.value,\n },\n };\n\n appointment\n ? updateAppointment({\n appointmentId: appointment.id,\n ...newAppointmentData,\n })\n : createAppointment(newAppointmentData);\n }\n\n return (\n \n \n {appointment && isModifiedRecurring && (\n \n )}\n \n \n {!isModifiedRecurring && (\n
    \n cal.can.create_appointments),\n (calendar) => ({\n value: calendar.id,\n label: calendar.name,\n }),\n ),\n (cal) => toLower(cal.label),\n \"asc\",\n )}\n placeholder={I18n.t(\"calendars.calendars_select.placeholder\")}\n control={control}\n multi\n required={I18n.t(\n \"js.calendars.validation_errors.calendars_empty\",\n )}\n />\n
    \n )}\n
    \n \n
    \n {!isModifiedRecurring && !isNormal && (\n \n )}\n {Preload.current_network.can.create_meetings &&\n !isRecurring &&\n !isModifiedRecurring && (\n \n )}\n {Preload.current_member?.can?.see_teams_event_options &&\n !isRecurring &&\n !isModifiedRecurring && (\n \n )}\n {!isModifiedRecurring && (\n !isEmpty(appointment?.location[key]),\n )}\n />\n )}\n {!appointment && (\n \n )}\n {!isModifiedRecurring && (\n \n )}\n {!isModifiedRecurring && (\n \n )}\n
    \n
    \n {\n e.preventDefault();\n window.location.pathname = appointment\n ? `/appointments/${appointment.id}`\n : \"/appointments\";\n }}\n saveDisabled={isUpdating || isCreating || filesLoading}\n />\n \n
    \n );\n}\n","import React from \"react\";\nimport AppointmentForm from \"components/appointments/form/AppointmentForm\";\nimport { useSearchParams } from \"helpers/tixxt-router\";\nimport PageTitle from \"components/layout/PageTitle\";\nimport moment from \"moment\";\n\nexport default function AppointmentNewPage() {\n const [searchParams] = useSearchParams();\n const date = searchParams.get(\"date\");\n const calendarId = searchParams.get(\"calendar_id\");\n const startDate = moment(date)\n .set({ hour: moment().hour() })\n .add(1, \"hour\")\n .startOf(\"hour\");\n\n return (\n <>\n \n \n \n );\n}\n","import React from \"react\";\nimport AppointmentForm from \"components/appointments/form/AppointmentForm\";\nimport { useAppointment } from \"components/appointments/api\";\nimport { useParams } from \"helpers/tixxt-router\";\nimport PageTitle from \"components/layout/PageTitle\";\nimport { camelCase, includes, upperFirst } from \"lodash\";\nimport CustomConfigurator from \"components/../CustomConfigurator\";\n\nexport default function AppointmentEditPage() {\n const { id } = useParams();\n const { data: appointment, isLoading } = useAppointment(id);\n\n // appointment types with custom forms: bitkom_campaign\n const FormComponent = includes(\n [\"appointment\", \"recurring_appointment\", \"virtual_appointment\"],\n appointment?.type,\n )\n ? AppointmentForm\n : CustomConfigurator.get(\n `appointments.edit.form.${upperFirst(\n camelCase(appointment?.type),\n )}Form`,\n );\n\n return (\n <>\n \n {isLoading\n ? I18n.t(\"js.loading\")\n : FormComponent && }\n \n );\n}\n","import React, { useState } from \"react\";\nimport { Appointment } from \"../../../@types/appointments\";\nimport { map, take } from \"lodash\";\n\nimport FileRow from \"components/shared/FileRow\";\n\ntype AppointmentEventFilesArgs = {\n eventFiles: Appointment[\"event_files\"];\n};\n\nexport default function AppointmentEventFiles({\n eventFiles,\n}: AppointmentEventFilesArgs) {\n const [showMoreFiles, setShowMoreFiles] = useState(false);\n const files = showMoreFiles ? eventFiles : take(eventFiles, 2);\n\n return (\n
    \n \n {I18n.t(\"js.activity.attachments.files_label\")}\n \n
    \n {map(files, (file, index) => (\n \n ))}\n
    \n {eventFiles.length > 2 && !showMoreFiles && (\n
    \n \n \n \n {\n e.preventDefault();\n setShowMoreFiles(true);\n }}\n >\n {eventFiles.length - 2 === 1\n ? I18n.t(\"js.activity.attachments.show_one_more_file\")\n : I18n.t(\"js.activity.attachments.show_more_files\", {\n file_count: eventFiles.length - 2,\n })}\n \n
    \n )}\n
    \n );\n}\n","import React from \"react\";\n\ntype TranslationArgs = {\n component?: React.ElementType;\n translation: string;\n variables: { [key: string]: string | null };\n};\n\nexport default function Translation({\n component: Component = \"div\",\n translation,\n variables,\n}: TranslationArgs) {\n const isHtml = translation.endsWith(\"_html\");\n const isMarkdown = translation.endsWith(\"_md\");\n\n return isHtml || isMarkdown ? (\n \n ) : (\n {I18n.t(translation, variables)}\n );\n}\n","import React, { ReactElement, ReactNode } from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { head, isEmpty, map } from \"lodash\";\nimport {\n faCoffee,\n faUser,\n faBullhorn,\n faMoneyBill,\n faHome,\n faExternalLink,\n faTimer,\n faPhone,\n faPencilSquare,\n} from \"@fortawesome/pro-regular-svg-icons\";\nimport { format } from \"date-fns\";\nimport {\n ApplicationConfiguration,\n Appointment,\n AttendeeConfiguration,\n} from \"../../../@types/appointments\";\nimport { Membership } from \"../../../@types\";\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\nimport Translation from \"components/shared/Translation\";\n\nfunction Detail({\n icon,\n type = \"\",\n children,\n text,\n label,\n translated,\n}: {\n icon: IconProp;\n type?: string;\n children?: ReactNode[] | ReactElement;\n text?: string;\n label?: string;\n translated?: boolean;\n}) {\n return (\n
    \n \n {I18n.t(label || `js.calendars.appointment.${type}.label`)}\n \n
    \n \n {children ? children : text || \"\"}\n {translated && (\n
    (translated)
    \n )}\n
    \n
    \n );\n}\n\ntype AppointmentEventDetailsArgs = {\n category: string | null;\n attendeeConfig: AttendeeConfiguration;\n consultants: string;\n applicationConfig: ApplicationConfiguration;\n organizer: string;\n contacts: Membership[];\n attendingParticipantsCount: number;\n teamsParticipantsCount: number;\n createdAt: string;\n genericAuthor?: Appointment[\"generic_author\"];\n author: Appointment[\"author\"];\n lastAuthor: Appointment[\"last_author\"];\n updatedAt: string;\n translated?: boolean;\n};\n\nexport default function AppointmentEventDetails({\n category,\n attendeeConfig,\n consultants,\n applicationConfig,\n organizer,\n contacts,\n attendingParticipantsCount,\n teamsParticipantsCount,\n createdAt,\n genericAuthor,\n author,\n updatedAt,\n lastAuthor,\n translated,\n}: AppointmentEventDetailsArgs) {\n return (\n
    \n {category && }\n {attendeeConfig?.total && (\n \n {attendeeConfig.total_attendees_enforced && (\n <>{attendingParticipantsCount} /\n )}\n {attendeeConfig.total}\n {teamsParticipantsCount > 0 && (\n <>\n {I18n.t(\n \"administration.consumer_manager.teams_participants_list_title\",\n {\n count: teamsParticipantsCount,\n },\n )}\n \n )}\n \n )}\n {consultants && (\n \n )}\n {applicationConfig?.registration_with_costs && (\n \n <>\n {!applicationConfig.costs || applicationConfig.costs == 0\n ? I18n.t(\n \"js.calendars.application_configuration.costs.not_set_info\",\n )\n : `${applicationConfig.costs} ${\n applicationConfig.currency || I18n.t(\"js.currency\")\n }`}\n \n \n )}\n {organizer && (\n \n )}\n {applicationConfig?.url && (\n \n {applicationConfig.url.match(/^https?:\\/\\//) ? (\n \n {applicationConfig.url}\n \n ) : (\n {applicationConfig.url}\n )}\n \n )}\n {applicationConfig?.registration_required && (\n \n {applicationConfig.registration_deadline ? (\n \n ) : (\n
    \n {I18n.t(\n \"js.calendars.application_configuration.registration_deadline.not_set_info\",\n )}\n
    \n )}\n \n )}\n {!isEmpty(contacts) && (\n \n {contacts.length === 1 ? (\n {head(contacts)?.name}\n ) : (\n \n )}\n \n )}\n {createdAt && (\n \n \n
    \n {I18n.t(\"js.calendars.appointment.last_edit\")}\n
    \n {format(\n new Date(updatedAt),\n I18n.t(\"js.time.formats.date_fns.compact_datetime\") + \" \",\n )}\n {lastAuthor && (\n \n )}\n
    \n )}\n
    \n );\n}\n","import React, { useState } from \"react\";\nimport {\n get,\n reduce,\n isEmpty,\n values,\n countBy,\n sortedIndexBy,\n lowerCase,\n map,\n concat,\n sortBy,\n} from \"lodash\";\nimport { NameWithProfileField } from \"components/memberships/MemberNameWithAdditions\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faCircle as faSolidCircle,\n faAdjust as faSolidAdjust,\n} from \"@fortawesome/pro-solid-svg-icons\";\nimport {\n faCircle as faRegularCircle,\n faChevronRight as faRegularChevronRight,\n} from \"@fortawesome/pro-regular-svg-icons\";\nimport classNames from \"classnames\";\nimport { Participant } from \"../../@types/appointments\";\n\nconst SMALL_BREAKPOINT = 640;\n\nfunction StatusIcon({\n status,\n className,\n}: {\n status: string;\n className: string;\n}) {\n switch (status) {\n case \"open\":\n case \"invited\":\n return (\n \n \n \n \n );\n case \"accepted\":\n return (\n \n );\n default:\n return (\n \n \n \n \n );\n }\n}\n\ntype RoleArgs = {\n id: string;\n name: string;\n plural_name: string;\n participants: Participant[];\n display_type: string;\n};\n\nfunction Role({ name, plural_name, participants, display_type }: RoleArgs) {\n const [collapsed, setCollapsed] = useState(\n display_type === \"grouped\" || window.innerWidth < SMALL_BREAKPOINT,\n );\n\n return (\n
    \n setCollapsed(!collapsed)}\n style={{ cursor: \"pointer\" }}\n className={\"font-bold mb-4\"}\n >\n {name || plural_name} ({countBy(participants, \"status\").accepted || 0}){\" \"}\n \n \n \n {participants.map((p) => (\n \n \n \n {get(p, \"membership.path\") ? (\n \n \n \n ) : (\n \n )}\n \n ))}\n \n
    \n );\n}\n\n// Inserts given participant into list maintaining sort by name and status\nconst statusToSort = { accepted: 0, rejected: 1, declined: 1, invited: 2 };\nconst pushParticipant = (list: Participant[], participant: Participant) => {\n list.splice(\n sortedIndexBy(list, participant, (p) =>\n lowerCase(\n `${statusToSort[p.status]}${get(p, \"membership.last_name\")}${get(\n p,\n \"membership.first_name\",\n )}`,\n ),\n ),\n 0,\n participant,\n );\n};\n\ntype ParticipantsListArgs = {\n participants: Participant[];\n showParticipants: boolean;\n consumersCount: number;\n teamsOnlyParticipantsCount: number;\n};\n\nexport default function ParticipantsList({\n participants,\n showParticipants,\n consumersCount,\n teamsOnlyParticipantsCount,\n}: ParticipantsListArgs) {\n let roles: RoleArgs[] = [];\n if (showParticipants) {\n const defaultRole = {\n id: \"default\",\n name: \"\",\n display_type: \"\",\n plural_name: I18n.t(\"js.calendars.appointment.rsvp.guests\"),\n participants: [],\n };\n const participantsByRole = reduce(\n participants,\n (obj, participant) => {\n if (isEmpty(participant.roles)) {\n pushParticipant(defaultRole.participants, participant);\n } else {\n participant.roles.forEach((role) => {\n obj[role.id] || (obj[role.id] = { ...role, participants: [] });\n pushParticipant(obj[role.id].participants, participant);\n });\n }\n return obj;\n },\n {},\n );\n\n roles = concat(\n [defaultRole],\n sortBy(values(participantsByRole), (role) => role.plural_name),\n );\n }\n\n return (\n
    \n {map(roles, (role) => (\n \n ))}\n {consumersCount > 0 ? (\n

    \n {I18n.t(\"administration.consumer_manager.consumer_list_title\", {\n count: consumersCount,\n })}\n

    \n ) : null}\n {teamsOnlyParticipantsCount > 0 ? (\n

    \n {I18n.t(\n \"administration.consumer_manager.teams_participants_list_title\",\n { count: teamsOnlyParticipantsCount },\n )}\n

    \n ) : null}\n
    \n );\n}\n","import ParticipantsList from \"components/appointments/ParticipantsList\";\nimport React, { useState } from \"react\";\nimport {\n Appointment,\n AppointmentInvite,\n Participant,\n} from \"../../../@types/appointments\";\nimport { escape, includes, map } from \"lodash\";\nimport classNames from \"classnames\";\nimport { useMutation } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSpinner } from \"@fortawesome/pro-regular-svg-icons\";\nimport RecurringAppointmentDecisionModal from \"components/shared/RecurringAppointmentDecisionModal\";\nimport Translation from \"components/shared/Translation\";\n\ntype AppointmentParticipationsArgs = {\n participants: Participant[];\n canShowAttendees: boolean;\n invitedConsumers: Appointment[\"invited_consumers\"];\n teamsOnlyParticipantsCount: number;\n canOpt: boolean;\n myInvite?: AppointmentInvite;\n myParticipation?: Participant;\n participationLocked: boolean;\n totalAttendeesExceeded: boolean;\n showRecurringDecisionModal: boolean;\n appointmentId: string;\n refetch: () => void;\n};\n\nexport default function AppointmentParticipations({\n appointmentId,\n participants,\n canShowAttendees,\n invitedConsumers,\n teamsOnlyParticipantsCount,\n canOpt,\n myInvite,\n myParticipation,\n participationLocked,\n totalAttendeesExceeded,\n showRecurringDecisionModal,\n refetch,\n}: AppointmentParticipationsArgs) {\n const [showDecisionModal, setShowDecisionModal] = useState(false);\n const [updatingStatus, setUpdatingStatus] = useState<\n \"open\" | \"accepted\" | \"declined\" | \"\"\n >(\"\");\n const { mutate: updateStatus, isLoading } = useMutation<\n unknown,\n Error,\n { status: \"open\" | \"accepted\" | \"declined\" | \"\"; apply_to?: string }\n >(\n ({ status, apply_to }) =>\n fetchApi(\n `/appointments/${appointmentId}/participants/${\n myParticipation?.id ? `${myParticipation.id}` : \"me\"\n }`,\n {\n method: \"PUT\",\n body: { status, apply_to },\n },\n ),\n { onSuccess: () => refetch() },\n );\n\n function onUpdateStatus(\n e: React.MouseEvent,\n status: \"open\" | \"accepted\" | \"declined\",\n ) {\n e.preventDefault();\n setUpdatingStatus(status);\n\n if (showRecurringDecisionModal) {\n setShowDecisionModal(true);\n } else {\n updateStatus({ status });\n }\n }\n\n const localeKey = {\n accepted: \"accept\",\n declined: \"decline\",\n open: \"no_answer\",\n };\n\n return (\n <>\n {\n setShowDecisionModal(false);\n }}\n handleDecision={(apply_to: string) => {\n updateStatus({ status: updatingStatus, apply_to });\n setShowDecisionModal(false);\n }}\n />\n {myInvite && (\n
    \n ${escape(\n myInvite.author?.name,\n )}`,\n }}\n />\n
    \n )}\n\n {canOpt && (\n
    \n \n {map(\n [\"accepted\", \"declined\", \"open\"],\n (statusKey: \"open\" | \"accepted\" | \"declined\") => (\n onUpdateStatus(e, statusKey)}\n disabled={\n participationLocked ||\n (statusKey === \"accepted\" && totalAttendeesExceeded)\n }\n >\n {isLoading && updatingStatus === statusKey && (\n <>\n {\" \"}\n \n )}\n {I18n.t(\n `js.calendars.appointment.rsvp.${localeKey[statusKey]}`,\n )}\n \n ),\n )}\n
    \n
    \n )}\n \n \n );\n}\n","import React from \"react\";\nimport { Appointment } from \"../../../@types/appointments\";\nimport { isBefore } from \"date-fns\";\nimport { filter, find, includes, isEmpty, map } from \"lodash\";\nimport { TZDate } from \"@date-fns/tz\";\nimport { useCalendars } from \"components/appointments/api\";\nimport AppointmentLocation from \"components/appointments/details/AppointmentLocation\";\nimport AppointmentDate from \"components/appointments/details/AppointmentDate\";\nimport AppointmentMeeting from \"components/appointments/details/AppointmentMeeting\";\nimport AppointmentEventFiles from \"components/appointments/details/AppointmentEventFiles\";\nimport AppointmentEventDetails from \"components/appointments/details/AppointmentEventDetails\";\nimport AppointmentParticipations from \"components/appointments/details/AppointmentParticipations\";\nimport formatDate from \"helpers/formatDate\";\nimport AppointmentDescription from \"components/appointments/details/AppointmentDescription\";\n\nexport default function AppointmentDetails({\n isRecurring,\n refetch,\n translated,\n ...appointment\n}: Appointment & {\n isRecurring: boolean;\n refetch: () => void;\n translated?: boolean;\n}) {\n const { data: calendars } = useCalendars();\n const appointmentStart = new Date(appointment.date.start);\n const today = new Date();\n const appointmentEnd = appointment.date.end\n ? new Date(appointment.date.end)\n : null;\n\n const isPast =\n isBefore(appointmentStart, today) &&\n (isEmpty(appointmentEnd) ||\n (appointmentEnd && isBefore(appointmentEnd, today))) &&\n (!isRecurring ||\n (appointment.recurrence_pattern &&\n appointment.recurrence_pattern.recurrence_end_time &&\n isBefore(\n new TZDate(\n appointment.recurrence_pattern.recurrence_end_time,\n appointment.date.time_zone,\n ),\n new TZDate(appointment.date.time_zone),\n )));\n\n const isDifferentTimeZone =\n !appointment.date.all_day &&\n Intl.DateTimeFormat().resolvedOptions().timeZone !==\n appointment.date.time_zone;\n\n const appointmentCalendars = filter(calendars, (cal) =>\n includes(appointment.calendar_ids, cal.id),\n ).concat(appointment.unknown_calendars || []);\n\n const myParticipation = find(appointment.participants, { id: \"me\" });\n\n return (\n
    \n
    \n {appointment.canceled && (\n
    \n {I18n.t(\"js.calendars.appointment.canceled\")}\n
    \n )}\n {isPast && (\n
    \n {Preload.current_network.config.appointments.opt_retroactively\n ? I18n.t(\"js.calendars.appointment_in_past_with_opt\")\n : I18n.t(\"js.calendars.appointment_in_past_without_opt\")}\n
    \n )}\n {isDifferentTimeZone && (\n
    \n {I18n.t(\"js.calendars.appointment.original_timezone\", {\n timezone: `${appointment.date.time_zone\n .replace(/\\//g, \", \")\n .replace(/_/g, \" \")} (UTC${formatDate(\n TZDate.tz(appointment.date.time_zone),\n \"xxx\",\n )})`,\n })}\n
    \n )}\n
    \n
    \n
      \n {map(appointmentCalendars, (cal) => (\n
    1. \n \n {cal.name}\n
    2. \n ))}\n
    \n
    \n \n \n {appointment.meeting && appointment.meeting.join_url && (\n \n )}\n {appointment.teams_configuration?.join_url &&\n myParticipation?.membership.upn && (\n
    \n \n \n \n {I18n.t(\"js.calendars.appointment.teams.join_link\")}\n \n \n
    \n )}\n {appointment.teams_configuration?.teams_event &&\n myParticipation?.membership.show_add_upn_link && (\n
    \n \n \n \n {I18n.t(\"js.calendars.appointment.teams.oauth_link\")}\n \n \n
    \n )}\n \n
    \n {!isEmpty(appointment.event_files) && (\n \n )}\n \n
    \n
    \n {appointment.event_image && (\n \n )}\n \n
    \n
    \n );\n}\n","import React, { useState } from \"react\";\nimport { useAppointment } from \"components/appointments/api\";\nimport { useParams } from \"helpers/tixxt-router\";\nimport PageTitle, { Subtitle } from \"components/layout/PageTitle\";\nimport { camelCase, includes, isEmpty, startsWith, upperFirst } from \"lodash\";\nimport Toolbar from \"components/appointments/details/Toolbar\";\nimport AppointmentDetails from \"components/appointments/details/AppointmentDetails\";\nimport TranslationDropDown, {\n ORIGINAL_LANGUAGE_SIGNIFIER,\n} from \"components/shared/TranslationDropDown\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowsRepeat } from \"@fortawesome/pro-regular-svg-icons\";\nimport PageLoading from \"components/shared/PageLoading\";\nimport CustomConfigurator from \"components/../CustomConfigurator\";\n\nexport default function AppointmentPage() {\n const { id } = useParams();\n const { data: appointment, isLoading } = useAppointment(id);\n\n // appointment types with custom forms: bitkom_campaign\n const AppointmentPageComponent = includes(\n [\"appointment\", \"recurring_appointment\", \"virtual_appointment\"],\n appointment?.type,\n )\n ? DefaultAppointmentPage\n : CustomConfigurator.get(\n `appointments.show.${upperFirst(camelCase(appointment?.type))}`,\n );\n\n if (isLoading) {\n return ;\n }\n\n return <>{AppointmentPageComponent && };\n}\n\nexport function DefaultAppointmentPage() {\n const { id } = useParams();\n const [appointmentLang, setAppointmentLang] = useState();\n const {\n data: appointment,\n isLoading,\n refetch,\n } = useAppointment(id, appointmentLang);\n\n const isRecurring =\n appointment?.type === \"recurring_appointment\" &&\n !startsWith(appointment?.id, \"r-\");\n\n const isModifiedRecurring =\n appointment?.type === \"virtual_appointment\" &&\n startsWith(appointment?.id, \"r-\");\n\n const handleLanguageSelect = (\n event: React.MouseEvent,\n language: string,\n ) => {\n if (language === ORIGINAL_LANGUAGE_SIGNIFIER) {\n setAppointmentLang(undefined);\n } else {\n setAppointmentLang(language);\n }\n };\n\n return isLoading ? (\n \n ) : (\n appointment && (\n <>\n \n {(isRecurring || isModifiedRecurring) && (\n \n )}\n \n {appointmentLang && (\n \n (translated)\n \n )}\n \n \n {isRecurring\n ? I18n.t(\"js.calendars.recurring_appointment.subtitle\")\n : I18n.t(\"js.calendars.appointment.subtitle\")}\n \n \n \n \n )\n );\n}\n","import React, { useRef } from \"react\";\nimport { reduce, map, forEach, defer, keys } from \"lodash\";\n\nimport { useCreateAppointmentContact } from \"./api\";\nimport { Appointment } from \"../../@types/appointments\";\nimport { useNavigate } from \"helpers/tixxt-router\";\nimport { useForm } from \"react-hook-form\";\nimport TextInput from \"components/shared/form/fields/TextInput\";\nimport Hint from \"components/shared/form/fields/Hint\";\nimport TextEditor from \"components/shared/form/fields/TextEditor\";\nimport Select from \"components/shared/form/fields/Select\";\nimport Checkbox from \"components/shared/form/fields/Checkbox\";\nimport Label from \"components/shared/form/Label\";\nimport FormActions from \"components/shared/form/fields/FormActions\";\n\ntype ContactArgs = {\n appointment: Appointment;\n};\n\ntype FormData = {\n audience: {\n label: string;\n value: \"all\" | \"accepted\" | \"declined\" | \"no_reaction\";\n };\n subject: string;\n text: string;\n include_attachments: boolean;\n};\n\nexport default function Contact({ appointment }: ContactArgs) {\n const navigate = useNavigate();\n const { handleSubmit, register, control } = useForm({\n defaultValues: {\n audience: {\n label: I18n.t(\n \"js.calendars.appointment.attendees.contact.audience.all\",\n ),\n value: \"all\",\n },\n },\n });\n\n const textEditorRef = useRef(null);\n\n const attachmentSize = reduce(\n map(appointment.event_files, (file) => file.size),\n (sum: any, size: any) => sum + size,\n 0,\n );\n const hasAttachments = attachmentSize > 0;\n const areAttachmentsInLimit =\n attachmentSize <=\n Preload.current_network.config.email_recommendations.attachment_size_limit;\n\n const { mutate: createAppointmentContact, isLoading } =\n useCreateAppointmentContact({\n onSuccess: () => {\n toastr.success(I18n.t(\"js.saving_successful\"));\n navigate(`/appointments/${appointment.id}`);\n },\n onError: () => {\n toastr.error(I18n.t(\"js.generic_error\"));\n },\n });\n\n const submit = (values: FormData) => {\n return createAppointmentContact({\n appointmentId: appointment.id,\n contact: { ...values, audience: values.audience.value },\n });\n };\n\n const audienceOptions = map(\n [\"all\", \"accepted\", \"declined\", \"no_reaction\"],\n (opt) => ({\n value: opt,\n label: I18n.t(\n `js.calendars.appointment.attendees.contact.audience.${opt}`,\n ),\n }),\n );\n\n function onValidationError(errors) {\n forEach(document.getElementsByClassName(\"field-error\"), (element) => {\n element?.classList.remove(\"field-error\");\n });\n\n forEach(errors, (error, name) => {\n if (name === \"text\") {\n defer(() => {\n textEditorRef?.current?.classList.add(\"field-error\");\n if (keys(errors)[0] === \"text\")\n textEditorRef?.current\n ?.querySelector(\"[contenteditable]\")\n ?.focus();\n });\n } else {\n error?.ref?.classList.add(\"field-error\");\n }\n toastr.error(I18n.t(\"generic_error\"));\n });\n }\n\n return (\n \n \n \n \n \n {hasAttachments && (\n
    \n \n
    \n \n {!areAttachmentsInLimit && (\n \n )}\n
    \n
    \n )}\n {\n e.preventDefault();\n navigate(`/appointments/${appointment.id}`);\n }}\n saveDisabled={isLoading}\n />\n \n );\n}\n","import React from \"react\";\nimport Contact from \"components/appointments/Contact\";\nimport { useNavigate, useParams } from \"helpers/tixxt-router\";\nimport { useAppointment } from \"components/appointments/api\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowLeft, faSpinner } from \"@fortawesome/pro-regular-svg-icons\";\nimport PageTitle from \"components/layout/PageTitle\";\n\nexport default function AppointmentContactPage() {\n const { id } = useParams();\n const { data: appointment, isLoading } = useAppointment(id);\n const navigate = useNavigate();\n\n return (\n
    \n \n
    \n {\n e.preventDefault();\n navigate(`/appointments/${id}`);\n }}\n >\n \n \n
    \n {isLoading ? (\n

    \n \n {I18n.t(\"js.calendars.appointment.loading\")}\n

    \n ) : (\n appointment && \n )}\n
    \n );\n}\n","import React from \"react\";\nimport AppointmentInvite, { AppointmentInviteDate } from \"./AppointmentInvite\";\n\nexport default function RecurringAppointmentInvite(props) {\n return (\n (\n \n )}\n {...props}\n />\n );\n}\n","import React from \"react\";\nimport { isEmpty } from \"lodash\";\nimport AppointmentInvite, { AppointmentInviteDate } from \"./AppointmentInvite\";\n\ntype AppointmentParticipationArgs = {\n appointment: {\n id: string;\n name: string;\n status: string;\n date: {\n start: string;\n all_day: boolean;\n same_day: boolean;\n end: string;\n };\n participation_locked: boolean;\n };\n invited_by: {\n id: string;\n name: string;\n };\n status: string;\n inviteStatus: string;\n invitable_type: string;\n id: string;\n reloadInvites: () => void;\n};\n\nfunction AppointmentParticipation({\n appointment,\n invited_by,\n status,\n inviteStatus,\n reloadInvites,\n ...invite\n}: AppointmentParticipationArgs) {\n return !isEmpty(appointment) ? (\n }\n renderMeta={() => null}\n reloadInvites={reloadInvites}\n {...invite}\n />\n ) : null;\n}\n\nexport default AppointmentParticipation;\n","import React from \"react\";\nimport { map, isEmpty } from \"lodash\";\nimport AppointmentInvite, {\n AppointmentInviteDate,\n AppointmentInviteMeta,\n} from \"components/appointments/AppointmentInvite\";\nimport RecurringAppointmentInvite from \"components/appointments/RecurringAppointmentInvite\";\nimport AppointmentParticipation from \"components/appointments/AppointmentParticipation\";\nimport CustomConfigurator from \"../../CustomConfigurator\";\n\nif (!CustomConfigurator.existsDefault(\"invites.types\")) {\n CustomConfigurator.setDefault(\"invites.types\", {\n appointments: {\n invites: {\n Appointment: AppointmentInvite,\n ModifiedRecurringAppointment: RecurringAppointmentInvite,\n RecurringAppointment: RecurringAppointmentInvite,\n },\n participations: {\n default: AppointmentParticipation,\n },\n },\n });\n}\n\ntype InvitesListArgs = {\n inviteType: string;\n invites: {\n type: string;\n data: { invitable_type: string; _type: string; id: string }[];\n };\n inviteStatus: string;\n loadMore: (e: React.MouseEvent) => void;\n canLoadMore: boolean;\n isLoading: boolean;\n reloadInvites: () => void;\n};\nexport default function InvitesList({\n invites,\n inviteType,\n inviteStatus,\n isLoading,\n loadMore,\n canLoadMore,\n reloadInvites,\n}: InvitesListArgs) {\n return (\n
    \n {isLoading ? (\n
    \n {I18n.t(\"js.calendars.appointments.invites.loading\")}\n
    \n ) : !isEmpty(invites.data) && !isLoading ? (\n
    \n {map(invites.data, (invite, index) => {\n const path = [\n \"invites\",\n \"types\",\n inviteType,\n invites.type,\n (invites.type === \"invites\"\n ? invite.invitable_type\n : invite._type) || \"default\",\n ];\n const Component =\n CustomConfigurator.get(path) ||\n (() => `Missing component for ${path.join(\".\")}`);\n\n return (\n }\n renderMeta={(props) => }\n {...invite}\n />\n );\n })}\n
    \n ) : (\n
    \n {I18n.t(`js.calendars.appointments.invites.no_${inviteStatus}`)}\n
    \n )}\n {canLoadMore && !isLoading ? (\n \n ) : null}\n
    \n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { flatten, includes, map } from \"lodash\";\nimport preventDefault from \"../../helpers/components/preventDefault\";\nimport UnreadBadge from \"components/shared/UnreadBadge\";\nimport InvitesList from \"components/invites/InvitesList\";\nimport { useFeaturesUnreads } from \"../../api/unreads\";\nimport { useInvites } from \"components/invites/api\";\nimport { useInfiniteQuery } from \"react-query\";\nimport fetchPaginatedData from \"helpers/api/fetchPaginatedData\";\nimport PageTitle from \"components/layout/PageTitle\";\nimport classNames from \"classnames\";\n\nfunction useParticipations({ status, enabled }) {\n return useInfiniteQuery(\n [\"participations\", status],\n ({ pageParam = `/api/v1/participations?status=${status}&limit=20` }) =>\n fetchPaginatedData({ pageParam }),\n {\n getNextPageParam: (lastPage) => lastPage.nextPage,\n enabled,\n },\n );\n}\n\nexport default function InvitesPage() {\n const { data: unreads, refetch: reloadUnreads } = useFeaturesUnreads();\n const [activeTab, setActiveTab] = useState(\"open\");\n const isInvitesTab = includes([\"open\", \"expired\", \"obsolete\"], activeTab);\n\n const {\n data: invitesData,\n isLoading: isLoadingInvites,\n refetch: reloadInvites,\n fetchNextPage: loadMoreInvites,\n hasNextPage: canLoadMoreInvites,\n } = useInvites({\n filter: \"appointments\",\n status: activeTab,\n enabled: isInvitesTab,\n });\n\n const {\n data: participationsData,\n isLoading: isLoadingParticipations,\n refetch: reloadParticipations,\n fetchNextPage: loadMoreParticipations,\n hasNextPage: canLoadMoreParticipations,\n } = useParticipations({\n status: activeTab,\n enabled: !isInvitesTab,\n });\n\n const [items, setItems] = useState(\n isInvitesTab\n ? {\n type: \"invites\",\n data: flatten(map(invitesData?.pages, (page) => page.data)),\n }\n : {\n type: \"participations\",\n data: flatten(map(participationsData?.pages, (page) => page.data)),\n },\n );\n\n function load() {\n isInvitesTab ? reloadInvites() : reloadParticipations();\n\n reloadUnreads();\n }\n\n useEffect(() => {\n const updateItems = () => {\n if (isInvitesTab) {\n setItems({\n type: \"invites\",\n data: flatten(map(invitesData?.pages, (page) => page.data)),\n });\n } else {\n setItems({\n type: \"participations\",\n data: flatten(map(participationsData?.pages, (page) => page.data)),\n });\n }\n };\n updateItems();\n }, [activeTab, invitesData, participationsData]);\n\n function loadMore(e: React.MouseEvent) {\n e.preventDefault();\n\n if (isInvitesTab) {\n loadMoreInvites();\n } else {\n loadMoreParticipations();\n }\n }\n\n const tabs = [\n \"open\",\n \"upcoming\",\n \"accepted\",\n \"declined\",\n \"expired\",\n \"obsolete\",\n ];\n\n return (\n <>\n \n \n \n );\n}\n","import { convertRoutes } from \"components/tixxt/BackboneFeature\";\nimport { RouteObject } from \"helpers/tixxt-router\";\nimport React from \"react\";\nimport AppointmentsPage from \"components/appointments/AppointmentsPage\";\nimport ManageCalendarsPage from \"components/appointments/calendars/ManageCalendarsPage\";\nimport SubscribeCalendarsPage from \"components/appointments/calendars/SubscribeCalendarsPage\";\nimport ParticipantsView from \"components/appointments/participants/ParticipantsView\";\nimport NewCalendarPage from \"components/appointments/calendars/NewCalendarPage\";\nimport EditCalendarPage from \"components/appointments/calendars/EditCalendarPage\";\nimport AppointmentNewPage from \"components/appointments/AppointmentNewPage\";\nimport AppointmentEditPage from \"components/appointments/AppointmentEditPage\";\nimport AppointmentPage from \"components/appointments/AppointmentPage\";\nimport AppointmentContactPage from \"components/appointments/AppointmentContactPage\";\nimport Invites from \"components/appointments/InvitesPage\";\n\nconst backboneRoutes: RouteObject[] = convertRoutes({\n feature: \"Calendars\",\n featureRoutes: {\n \"calendars/my\": \"showMyCalendars\",\n \"calendars/shared\": \"showSharedCalendars\",\n },\n});\n\nconst reactRoutes: RouteObject[] = [\n { path: \"/groups/:groupSlug/calendars\", element: },\n { path: \"/appointments\", element: },\n { path: \"/appointments/new\", element: },\n { path: \"/appointments/:id/edit\", element: },\n {\n path: \"/appointments/participating\",\n element: ,\n },\n {\n path: \"/appointments/invites\",\n element: ,\n },\n {\n path: \"/appointments/:id\",\n element: ,\n },\n {\n path: \"/calendars/manage\",\n element: ,\n },\n {\n path: \"/calendars/subscribe\",\n element: ,\n },\n {\n path: \"/calendars/new\",\n element: ,\n },\n {\n path: \"/calendars/:id/edit\",\n element: ,\n },\n {\n path: \"/appointments/:id/participants\",\n element: ,\n },\n {\n path: \"/appointments/:id/contact\",\n element: ,\n },\n];\n\nexport default backboneRoutes.concat(reactRoutes);\n","import React from \"react\";\nimport { map, join, find } from \"lodash\";\nimport classNames from \"classnames\";\nimport moment from \"moment\";\nimport { useNavigate } from \"helpers/tixxt-router\";\nimport { SimpleMembership } from \"../../@types\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faReply } from \"@fortawesome/pro-solid-svg-icons\";\n\ntype MessageRowProps = {\n id: string;\n subject: string;\n members: SimpleMembership[];\n date: string;\n content: string;\n selectMessage: (messageId: string) => void;\n isActive: boolean;\n read: boolean;\n hasAttachments: boolean;\n hasReplies: boolean;\n conversationLength: number | undefined;\n to_count: number | null;\n};\n\nfunction MessageRow({\n id,\n subject,\n members,\n date,\n content,\n selectMessage,\n isActive,\n read,\n hasReplies,\n hasAttachments,\n conversationLength,\n to_count,\n}: MessageRowProps) {\n const member = members?.[0];\n const navigate = useNavigate();\n\n return (\n \n \n selectMessage(id)}\n checked={isActive}\n aria-label=\"Select message\"\n className={\"!w-6 !h-6\"}\n />\n
    \n
    \n {members.length == 1 && member.html_url && member.name ? (\n \n \n \n ) : (\n \n )}\n
    \n [\" \", \"Enter\"].includes(e.key) && navigateDetails()}\n onClick={navigateDetails}\n >\n
    \n
    \n
    \n {member.html_url ? (\n e.stopPropagation()}\n href={member.html_url}\n title={member.name}\n className={classNames({ \"font-semibold\": !read })}\n >\n {member.name ||\n Preload.current_network.config.anonymize_membership_name}\n \n ) : (\n \n {member.name ||\n Preload.current_network.config.anonymize_membership_name}\n \n )}\n {to_count && to_count > 1 ? (\n m.name),\n \", \",\n )}\n >{` +${to_count - 1}`}\n ) : null}\n
    \n
    \n \n {moment(date).format(\"DD.MM.YYYY HH:mm\")}\n \n {conversationLength ? ({conversationLength}) : null}\n {hasReplies ? (\n \n ) : null}\n
    \n
    \n
    \n \n [\" \", \"Enter\"].includes(e.key) && navigateDetails()}\n onClick={navigateDetails}\n >\n {subject ? (\n

    {subject}

    \n ) : (\n

    {I18n.t(\"js.messages.composer.no_subject\")}

    \n )}\n

    {content}

    \n \n \n {hasAttachments ? (\n \n ) : null}\n \n \n );\n\n function navigateDetails() {\n navigate(`/messages/${id}`, {\n state: {\n pathname: location.pathname,\n search: location.search,\n },\n });\n }\n}\n\nexport default MessageRow;\n","import type { MouseEventHandler } from \"react\";\nimport React from \"react\";\nimport { isEmpty, map } from \"lodash\";\nimport classNames from \"classnames\";\n\nfunction InteractionsButton({\n onClick,\n className,\n icons,\n title,\n isDisabled = false,\n onlyIcon,\n}: InteractionsButtonProps) {\n return (\n \n {map(icons, (iconClassName, index) => (\n \n ))}\n\n {onlyIcon ? null : title}\n \n );\n}\n\ninterface InteractionsButtonProps {\n onClick: MouseEventHandler;\n className?: string;\n icons?: Array;\n title?: string;\n isDisabled?: boolean;\n onlyIcon?: boolean;\n testId?: string;\n}\n\nexport default InteractionsButton;\n","import { UseQueryResult, useMutation, useQuery, useQueries } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\nimport { SimpleMembership } from \"../../@types\";\nimport { Message } from \"components/messages/@types\";\n\nexport type TrimmedMessage = {\n id: string;\n created_at: string;\n author: SimpleMembership;\n to: [SimpleMembership] | SimpleMembership[];\n to_count: number;\n subject: string;\n plain_content: string;\n html_content: string;\n has_replies: boolean;\n has_attachments: boolean;\n i: {\n marked: boolean;\n read: boolean;\n };\n conversation_length: number;\n};\n\ntype MessagesPayload = {\n messages: TrimmedMessage[];\n offset: number;\n limit: number;\n total: number;\n next_url: string | null;\n};\n\nexport function useFetchMessages(\n filter: string,\n page: number,\n options = { keepPreviousData: true },\n) {\n const query = `?limit=10&offset=${(page - 1) * 10}`;\n return useQuery(\n [\"messages\", filter, page],\n () => fetchApi(`/api/v1/messages${filter ? `/${filter}${query}` : query}`),\n options,\n );\n}\n\ntype CustomUseQueryResult = UseQueryResult & {\n isTranslating?: boolean;\n};\n\nexport function useFetchMessage(\n messageId: string,\n messageLang: string | undefined,\n options = {},\n): CustomUseQueryResult {\n const result = useQuery(\n [\"message\", messageId],\n () => fetchApi(`/api/v1/messages/${messageId}`),\n options,\n );\n\n const foreignMessageIds = getForeignMessageIds(result.data);\n const { data: translatedMessages, isLoading: isTranslating } =\n useTranslateMessages(foreignMessageIds, messageLang);\n\n if (result.data && translatedMessages) {\n const translatedMessage =\n translatedMessages.find((message) => message.id === result.data.id) || {};\n\n const translatedResult = {\n ...result,\n isTranslating: isTranslating,\n data: {\n ...result.data,\n ...translatedMessage,\n translated: translatedMessage.html_content,\n conversation: addTranslationsToConversation(\n result.data.conversation,\n translatedMessages,\n ),\n },\n };\n\n return translatedResult;\n }\n\n return { ...result, isTranslating };\n}\n\nfunction getForeignMessageIds(data?: Message) {\n let foreignMessageIds: string[] = [];\n\n if (data && Preload.current_member) {\n if (data.conversation) {\n const translatableMessages = data.conversation.filter(\n (item) => item.author.id != Preload.current_member?.id,\n );\n\n foreignMessageIds = translatableMessages.map((item) => {\n return item.id;\n });\n }\n\n if (data.author.id != Preload.current_member?.id) {\n foreignMessageIds.push(data.id);\n }\n }\n\n return foreignMessageIds;\n}\n\ntype MessagesTranslationResult = {\n id: string;\n subject: string;\n content_rendered: string;\n}[];\n\nfunction addTranslationsToConversation(\n oldConversation: Message[\"conversation\"],\n newConversation: MessagesTranslationResult,\n) {\n if (!oldConversation) return [];\n\n return oldConversation.map((oldItem: Message) => {\n const newItem = newConversation.find(\n (newItem) => newItem.id === oldItem.id,\n );\n if (newItem) {\n return {\n ...oldItem,\n ...newItem,\n translated: true,\n };\n }\n\n return oldItem;\n });\n}\n\nexport function useTranslateMessages(\n messageIds: string[],\n language: string | undefined,\n) {\n const translationQueries = useQueries(\n messageIds.map((messageId) => ({\n queryKey: [\"translated-message\", messageId, language],\n queryFn: () => fetchApi(`/translations/${language}/message/${messageId}`),\n enabled: !!language,\n refetchOnWindowFocus: false,\n })),\n );\n\n const isTranslating = translationQueries.some(\n (query) => query.isLoading || query.isFetching,\n );\n\n const translatedMessages = translationQueries\n .map((query) => query.data)\n .filter(Boolean);\n\n return {\n data: translatedMessages,\n isLoading: isTranslating,\n };\n}\n\nexport function useDeleteMessage(filter, messageId, options = {}) {\n return useMutation(() => {\n return fetchApi(\n `/api/v1/messages${filter === \"sent\" ? \"/sent\" : \"\"}/${messageId}`,\n { method: \"DELETE\" },\n );\n }, options);\n}\n\nexport function useDeleteMessages(filter, options = {}) {\n return useMutation((messageIds: string[]) => {\n return fetchApi(\n `/api/v1/messages${filter === \"sent\" ? \"/sent\" : \"\"}/delete`,\n {\n method: \"DELETE\",\n body: { message_ids: messageIds },\n },\n );\n }, options);\n}\n\nexport function useMarkMessageAsUnread(options = {}) {\n return useMutation(\n (messageId: string) =>\n fetchApi(`/api/v1/messages/${messageId}/read`, {\n method: \"DELETE\",\n }),\n options,\n );\n}\n\nexport function useMarkMessageAsRead(options = {}) {\n return useMutation(\n (messageId: string) =>\n fetchApi(`/api/v1/messages/${messageId}/read`, {\n method: \"POST\",\n }),\n options,\n );\n}\n\nexport function useMarkMessagesAsUnread(options = {}) {\n return useMutation(\n (messageIds: string[]) =>\n fetchApi(`/api/v1/messages/read`, {\n method: \"DELETE\",\n body: {\n message_ids: messageIds,\n },\n }),\n options,\n );\n}\n\nexport function useMarkMessagesAsRead(options = {}) {\n return useMutation(\n (messageIds: string[]) =>\n fetchApi(`/api/v1/messages/read`, {\n method: \"POST\",\n body: {\n message_ids: messageIds,\n },\n }),\n options,\n );\n}\n\nexport function useSendMessage(options = {}) {\n return useMutation(\n (body: Record) =>\n fetchApi(`/api/v1/messages`, {\n method: \"POST\",\n body,\n }),\n options,\n );\n}\n\nexport function onError() {\n toastr.error(I18n.t(\"js.generic_network_error\"));\n}\n","import React, { Fragment, useEffect } from \"react\";\nimport { isEmpty, divide, ceil, floor, size } from \"lodash\";\nimport { queryClient } from \"helpers/queryClient\";\nimport InteractionsButton from \"./InteractionsButton\";\nimport Pagination from \"../shared/Pagination\";\nimport {\n useDeleteMessages,\n useMarkMessagesAsRead,\n useMarkMessagesAsUnread,\n onError,\n TrimmedMessage,\n} from \"./api\";\nimport classNames from \"classnames\";\n\ntype MessagesInteractionsProps = {\n filter: \"\" | \"sent\";\n total: number;\n limit: number;\n offset: number;\n messages: TrimmedMessage[];\n isFetching: boolean;\n selectedMessageIds: Array;\n setSelectedMessageIds: (ids: string[]) => void;\n onLoadMoreMessages: (page: number) => void;\n refetchMessages: () => void;\n};\n\nfunction MessagesInteractions({\n filter,\n total,\n limit,\n offset,\n messages,\n isFetching,\n selectedMessageIds,\n setSelectedMessageIds,\n onLoadMoreMessages,\n refetchMessages,\n}: MessagesInteractionsProps) {\n const allMessageIds = messages?.map((m) => m.id);\n const { mutate: deleteMessages } = useDeleteMessages(filter, {\n onSuccess: () => {\n // need to call refetch to update messages list in turbo app\n refetchMessages();\n toastr.success(I18n.t(\"js.messages.messages_deleted\"));\n },\n onError,\n });\n const { mutate: markAsRead, isLoading: isLoadingRead } =\n useMarkMessagesAsRead({\n onSuccess: () => {\n queryClient.invalidateQueries([\"messages\", filter, page]);\n },\n onError,\n });\n const { mutate: markAsUnread, isLoading: isLoadingUnread } =\n useMarkMessagesAsUnread({\n onSuccess: () => {\n queryClient.invalidateQueries([\"messages\", filter, page]);\n },\n onError,\n });\n\n const page = floor(divide(offset, limit)) + 1;\n\n useEffect(() => {\n setSelectedMessageIds([]);\n return () => setSelectedMessageIds([]);\n }, [filter]);\n\n const checked = size(selectedMessageIds) === size(messages);\n const indeterminate =\n size(selectedMessageIds) > 0 && size(selectedMessageIds) < size(messages);\n\n return total > 0 ? (\n <>\n
    \n \n
    \n \n {total > 0 ? (\n {\n if (input) input.indeterminate = indeterminate;\n }}\n />\n ) : null}\n {filter !== \"sent\" ? (\n \n \n \n \n ) : null}\n \n \n \n ) : null;\n\n function onSelectAllMessages() {\n if (\n isEmpty(selectedMessageIds) ||\n size(selectedMessageIds) < size(messages)\n ) {\n setSelectedMessageIds(allMessageIds);\n } else {\n setSelectedMessageIds([]);\n }\n }\n\n function onDeleteMessages() {\n const confirmMessage =\n filter === \"sent\"\n ? `${I18n.t(\"js.delete_confirmation\")}\\n${I18n.t(\n \"js.messages.delete_confirmation_sent\",\n )}`\n : I18n.t(\"js.delete_confirmation\");\n\n window.bridge?.confirm(confirmMessage, () => {\n deleteMessages(selectedMessageIds);\n setSelectedMessageIds([]);\n });\n }\n\n function onReadMessages() {\n markAsRead(selectedMessageIds);\n setSelectedMessageIds([]);\n }\n\n function onUnreadMessages() {\n markAsUnread(selectedMessageIds);\n setSelectedMessageIds([]);\n }\n}\n\nexport default MessagesInteractions;\n","import React, { useEffect, useState } from \"react\";\nimport {\n map,\n includes,\n pull,\n get,\n toInteger,\n isEmpty,\n divide,\n ceil,\n} from \"lodash\";\n\nimport { useNavigate } from \"helpers/tixxt-router\";\nimport { useQueryParams } from \"helpers/useQueryParams\";\nimport MessageRow from \"./MessageRow\";\nimport MessagesInteractions from \"./MessagesInteractions\";\nimport { useFetchMessages } from \"./api\";\nimport { MessagesListProps } from \"./@types\";\nimport Pagination from \"components/shared/Pagination\";\n\nfunction MessagesList({ filter = \"\" }: MessagesListProps) {\n const [selectedMessageIds, setSelectedMessageIds] = useState([]);\n const { page: pageParam } = useQueryParams();\n const [page, setPage] = useState(toInteger(pageParam || \"1\"));\n const { isLoading, isFetching, data, refetch } = useFetchMessages(\n filter,\n page,\n );\n\n useEffect(() => {\n if (page !== 1) setPage(1);\n }, [filter]);\n\n const navigate = useNavigate();\n\n if (isLoading)\n return (\n
    \n \n
    \n );\n\n return (\n
    \n {data && (\n \n )}\n
    \n
    \n {isEmpty(data) ? (\n {I18n.t(\"js.messages.message_list.no_messages\")}\n ) : (\n map(data?.messages, (message) => {\n const id = get(message, \"id\");\n\n return (\n \n );\n })\n )}\n
    \n
    \n
    \n {data && (\n \n )}\n
    \n
    \n );\n\n function onLoadMoreMessages(page: number) {\n setPage(page);\n setSelectedMessageIds([]);\n const navigationUrl = filter ? `/messages/${filter}` : \"/messages\";\n if (page === 1) {\n navigate(navigationUrl);\n } else {\n navigate(`${navigationUrl}?page=${page}`);\n }\n }\n\n function onSetMessageId(messageId: string) {\n if (includes(selectedMessageIds, messageId)) {\n setSelectedMessageIds([...pull(selectedMessageIds, messageId)]);\n } else {\n setSelectedMessageIds([...selectedMessageIds, messageId]);\n }\n }\n}\n\nexport default MessagesList;\n","import React from \"react\";\nimport PageTitle, { Subtitle } from \"components/layout/PageTitle\";\nimport MessagesList from \"components/messages/MessagesList\";\nimport { useSelector } from \"react-redux\";\nimport { get } from \"lodash\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faPenLine } from \"@fortawesome/pro-regular-svg-icons\";\nimport classNames from \"classnames\";\n\nexport function InboxToolbar({ className }: { className?: string }) {\n const sendDirectMessages = useSelector((state) =>\n get(state, \"currentMember.can.send_direct_messages\"),\n );\n if (!sendDirectMessages) return null;\n\n return (\n \n );\n}\n\nexport default function InboxPage() {\n return (\n <>\n \n \n {I18n.t(\"js.messages.index.title\")}\n \n \n \n \n );\n}\n","import React from \"react\";\nimport PageTitle, { Subtitle } from \"components/layout/PageTitle\";\nimport MessagesList from \"components/messages/MessagesList\";\nimport { InboxToolbar } from \"components/messages/InboxPage\";\n\nexport default function SentPage() {\n return (\n <>\n \n \n {I18n.t(\"js.messages.sent.title\")}\n \n \n \n \n );\n}\n","import React from \"react\";\nimport { useNavigate } from \"helpers/tixxt-router\";\n\ninterface BackButtonProps {\n title?: string;\n href?: string;\n}\n\nexport function BackButton({ title, href = \"#\" }: BackButtonProps) {\n const navigate = useNavigate();\n\n return (\n
    \n {\n e.preventDefault();\n if (navigate) {\n if (href !== \"#\") {\n navigate(href);\n } else {\n navigate(-1);\n }\n // Stop the handler in routes to manipulate the history again.\n e.nativeEvent.stopImmediatePropagation();\n } else {\n window.history.back();\n }\n }}\n title={title}\n >\n \n \n
    \n );\n}\n\nexport default BackButton;\n","import React, { useState } from \"react\";\nimport { Field } from \"redux-form\";\nimport classNames from \"classnames\";\nimport useTooltip from \"hooks/useTooltip\";\nimport \"./CheckboxField.css\";\n\ninterface CheckboxFieldProps {\n name: string;\n label: string;\n type?: \"radio\" | \"checkbox\";\n className?: string;\n disabled?: boolean;\n required?: boolean;\n value?: boolean | string;\n\n setValue?(val: boolean): void;\n\n id?: string;\n labelHint?: string;\n additionalText?: string;\n}\n\nexport default function CheckboxField({\n name,\n type = \"checkbox\",\n className,\n disabled,\n required,\n value = false,\n setValue,\n label,\n id,\n labelHint,\n additionalText,\n}: CheckboxFieldProps) {\n const [val, setVal] = useState(value);\n\n if (!setValue) {\n value = val;\n setValue = setVal;\n }\n\n const tooltipRef = useTooltip();\n\n let labelProps = {};\n\n if (labelHint) {\n labelProps = { [\"data-bs-toggle\"]: \"tooltip\", title: I18n.t(labelHint) };\n }\n\n return (\n <>\n \n setValue?.(newVal)}\n disabled={disabled}\n id={id}\n />\n {label}\n \n\n {additionalText ? (\n

    \n \n {additionalText}\n

    \n ) : null}\n \n );\n}\n","import React, { Fragment, useCallback } from \"react\";\nimport {\n map,\n each,\n uniqBy,\n castArray,\n isArray,\n compact,\n debounce,\n} from \"lodash\";\nimport { Field } from \"redux-form\";\nimport AsyncSelect from \"react-select/async\";\n\nimport { showNameWithProfileField } from \"components/memberships/MemberNameWithAdditions\";\nimport styles from \"../appCreator/properties/edit/editFields.module.css\";\nimport FieldError from \"components/appCreator/items/form/FieldError\";\nimport { useMutation } from \"react-query\";\nimport { stringify } from \"query-string\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\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 type: value.type,\n };\n};\n\nconst formatValue = (state) =>\n map(compact(castArray(state)), ({ id, displayName, displayValue, type }) => ({\n value: id,\n label: displayName || displayValue,\n type: type,\n }));\n\nconst formatResponse = (results) => {\n const members: Array<{ label: string; value: string; type: string }> = [];\n const groups: Array<{\n label: string;\n value: string;\n category: string;\n type: string;\n }> = [];\n let groupCategories: Array<{ label: string; id: string }> = [];\n\n each(results, (result) => {\n if (result.type === \"member\") {\n members.push({\n label: showNameWithProfileField({\n name: result.name,\n detectionProfileField: result.detection_profile_field,\n isExternal: result.is_external,\n }),\n value: result.id,\n type: \"member\",\n });\n } else {\n groupCategories.push({\n label: result.category.name,\n id: result.category.id,\n });\n groups.push({\n label: result.name,\n value: result.id,\n category: result.category.id,\n type: \"group\",\n });\n }\n });\n\n groupCategories = uniqBy(groupCategories, \"id\");\n const finalResults: Array<{ label: string; options: typeof members }> = [];\n\n if (members.length > 0) {\n finalResults.push({\n label: I18n.t(\"js.directory.title.members\"),\n options: members,\n });\n }\n if (groups.length > 0) {\n each(groupCategories, (cat) => {\n finalResults.push({\n label: cat.label,\n options: groups.filter((group) => group.category === cat.id),\n });\n });\n }\n\n return finalResults;\n};\n\ninterface SelectAdapterTypes {\n input?: Record;\n required?: boolean;\n id: string;\n disabled: boolean;\n className?: string;\n multiple: boolean;\n meta?: { error?: string };\n extraQueryParams?: {\n only_my_groups?: boolean;\n only_my_admin_groups?: boolean;\n };\n}\n\nfunction SelectAdapter({\n input,\n required,\n id,\n disabled,\n className,\n multiple,\n meta = {},\n extraQueryParams = {},\n}: SelectAdapterTypes) {\n const { mutate: loadOptions } = useMutation(\n ({\n q,\n }: {\n q: string;\n callback: (\n options: {\n label: string;\n options: { value: string; label: string; type: string }[];\n }[],\n ) => void;\n }) => fetchApi(`/directory?${stringify({ q, ...extraQueryParams })}`),\n {\n onSuccess: (\n data: { entries: { id: string; name: string }[] },\n variables,\n ) => {\n variables.callback(formatResponse(data?.entries));\n },\n },\n );\n\n const debouncedLoadOptions = useCallback(\n debounce((value, callback) => loadOptions({ q: value, callback }), 375),\n [loadOptions],\n );\n\n const 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: debouncedLoadOptions,\n isMulti: multiple,\n styles: { menu: (base) => ({ ...base, zIndex: 999 }) },\n };\n\n return (\n \n
    \n \n
    \n {meta.error && }\n
    \n );\n}\n\ninterface MembershipAndGroupFieldTypes extends SelectAdapterTypes {\n name: string;\n multiple: boolean;\n}\nfunction MembershipAndGroupField({\n name,\n required,\n disabled,\n id,\n multiple,\n extraQueryParams,\n}: MembershipAndGroupFieldTypes) {\n return (\n \n );\n}\n\nexport default MembershipAndGroupField;\n","import React, { useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { formValueSelector } from \"redux-form\";\nimport {\n networkAdminSelector,\n currentMemberSelector,\n} from \"selectors/environment\";\nimport CheckboxField from \"components/shared/fields/CheckboxField\";\nimport MembershipAndGroupField from \"components/shared/MembershipAndGroupField\";\nimport TextField from \"components/appCreator/properties/edit/TextField\";\nimport FileField from \"components/appCreator/properties/edit/FileField\";\nimport { State } from \"@types\";\n\nfunction MessageForm() {\n const currentMember = useSelector((state: State) =>\n currentMemberSelector(state),\n );\n const isAdmin = useSelector(networkAdminSelector);\n const toAllNetworkMembers = useSelector((state) =>\n formValueSelector(\"newMessage\")(state as State, \"to_all_network_members\"),\n );\n const to = useSelector((state) =>\n formValueSelector(\"newMessage\")(state as State, \"to\"),\n );\n const hasGroupRecipient = (to || []).find((to) => to.type === \"group\");\n const [toAll, setToAll] = useState(false);\n\n return (\n
    \n
    \n
    \n {currentMember && (\n \n )}\n \n
    \n
    \n \n\n {isAdmin ? (\n \n ) : null}\n
    \n
    \n\n
    \n \n \n
    \n\n \n
    \n \n \n
    \n
    \n );\n}\n\nexport default MessageForm;\n","import React, { Fragment, useEffect } from \"react\";\nimport { map, isEmpty, get, filter } from \"lodash\";\nimport { SubmissionError, change } from \"redux-form\";\nimport { useDispatch } from \"react-redux\";\nimport { useNavigate } from \"helpers/tixxt-router\";\nimport publishAllVolatile from \"helpers/files/publishAllVolatile\";\nimport ReduxForm from \"components/shared/reduxForm\";\nimport BackButton from \"components/shared/BackButton\";\nimport { useFetchBaseMembershipData } from \"actions/memberships\";\nimport { useQueryParams } from \"helpers/useQueryParams\";\nimport MessageForm from \"./MessageForm\";\nimport { useSendMessage } from \"../api\";\nimport { messageInitialValues } from \"../message\";\nimport useFileProcessing from \"components/shared/hooks/useFileProcessing\";\n\nfunction MessageComposer({ initialValues }: MessageComposerProps) {\n const dispatch = useDispatch();\n const navigate = useNavigate();\n const params = useQueryParams();\n const membershipId = params.to;\n const { data } = useFetchBaseMembershipData(membershipId);\n const { mutateAsync: sendMessage } = useSendMessage();\n\n useEffect(() => {\n if (membershipId && !isEmpty(membershipId)) {\n dispatch(\n change(\"newMessage\", \"to\", [\n { id: membershipId, displayValue: I18n.t(\"js.tasks.loading\") },\n ]),\n );\n }\n }, []);\n\n useEffect(() => {\n if (!data) return;\n\n dispatch(\n change(\"newMessage\", \"to\", [\n { id: membershipId, displayValue: data.name },\n ]),\n );\n }, [data]);\n\n useEffect(() => {\n if (!window.isApp) {\n window.addEventListener(\"beforeunload\", onUnload);\n\n return () => window.removeEventListener(\"beforeunload\", onUnload);\n }\n }, []);\n\n function onUnload(e) {\n e.preventDefault();\n }\n\n const fileProcessing = useFileProcessing(\"newMessage\", \"attachments\");\n\n return (\n \n {!initialValues ? (\n
    \n \n
    \n ) : null}\n {\n navigate(\"/messages\");\n toastr.success(I18n.t(\"js.messages.message_sent\"));\n }}\n onSubmitFail={(error: Error) =>\n toastr.error(error?.message || I18n.t(\"js.messages.message_not_sent\"))\n }\n />\n
    \n );\n\n async function onSubmit(values: Record) {\n interface Recipient {\n type: string;\n }\n\n if (isEmpty(values.to) && !values.to_all_network_members) {\n throw new SubmissionError({\n message: I18n.t(\"js.messages.composer.missing_recipient\"),\n });\n }\n\n const attachments = !isEmpty(get(values, \"attachments\"))\n ? await publishAllVolatile({\n dispatch,\n values: { attachments: get(values, \"attachments\") },\n storageDirectory: \"files\",\n })\n : [];\n\n await sendMessage(\n {\n ...values,\n to: map(\n filter(\n values.to as Record,\n (recipient: Recipient) => recipient.type != \"group\",\n ),\n \"id\",\n ),\n to_group: map(\n filter(\n values.to as Record,\n (recipient: Recipient) => recipient.type == \"group\",\n ),\n \"id\",\n ),\n ...attachments,\n },\n {\n onError: () => {\n throw new SubmissionError({});\n },\n },\n );\n }\n}\n\ninterface MessageComposerProps {\n initialValues?: ReturnType;\n}\n\nexport default MessageComposer;\n","import { useQuery } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\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 React from \"react\";\nimport PageTitle, { Subtitle } from \"components/layout/PageTitle\";\nimport MessageComposer from \"components/messages/composer\";\n\nexport default function NewMessagePage() {\n return (\n <>\n \n \n {I18n.t(\"js.messages.new.new_message\")}\n \n \n \n );\n}\n","import type { MouseEventHandler } from \"react\";\nimport React, { Fragment } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate } from \"helpers/tixxt-router\";\nimport classNames from \"classnames\";\nimport { get, set } from \"lodash\";\nimport { queryClient } from \"helpers/queryClient\";\nimport BackButton from \"components/shared/BackButton\";\nimport InteractionsButton from \"../InteractionsButton\";\nimport {\n useMarkMessageAsRead,\n useMarkMessageAsUnread,\n useDeleteMessage,\n onError,\n} from \"../api\";\nimport { MessageInteractionsProps } from \"../@types\";\nimport { useQueryParams } from \"helpers/useQueryParams\";\n\nfunction MessageInteractions({\n messageId,\n isRead,\n onSetMessageAction,\n messageAction,\n filter,\n}: MessageInteractionsProps) {\n const navigate = useNavigate();\n const { mutate: deleteMessage } = useDeleteMessage(filter, messageId, {\n onSuccess: () => {\n if (navigate) {\n navigate(-1);\n } else {\n window.history.back();\n }\n toastr.success(I18n.t(\"js.messages.message_deleted\"));\n },\n onError,\n });\n\n const { mutate: markAsUnread, isLoading: isLoadingUnread } =\n useMarkMessageAsUnread({\n onSuccess: () => {\n const updatedCache = set(\n queryClient.getQueryData([\"message\", messageId]) as Record<\n PropertyKey,\n unknown\n >,\n \"i.read\",\n false,\n );\n queryClient.setQueryData([\"message\", messageId], updatedCache);\n },\n onError,\n });\n\n const { mutate: markAsRead, isLoading: isLoadingRead } = useMarkMessageAsRead(\n {\n onSuccess: () => {\n const updatedCache = set(\n queryClient.getQueryData([\"message\", messageId]) as Record<\n PropertyKey,\n unknown\n >,\n \"i.read\",\n true,\n );\n queryClient.setQueryData([\"message\", messageId], updatedCache);\n },\n onError,\n },\n );\n\n const sendDirectMessages = useSelector((state) =>\n get(state, \"currentMember.can.send_direct_messages\"),\n );\n const { state } = useQueryParams();\n const search = (state as Record)?.search || \"\";\n\n return (\n
    \n
    \n \n \n\n {filter !== \"sent\" ? (\n \n {isRead ? (\n markAsUnread(messageId)}\n isDisabled={isLoadingUnread}\n icons={[\"fa-regular fa-envelope text-normal fa-lg\"]}\n title={I18n.t(\"js.messages.index_toolbar.unread\")}\n />\n ) : (\n markAsRead(messageId)}\n isDisabled={isLoadingRead}\n icons={[\"fa-regular fa-envelope text-normal fa-lg\"]}\n title={I18n.t(\"js.messages.index_toolbar.read\")}\n />\n )}\n \n ) : null}\n \n
    \n
    \n {filter !== \"sent\" && sendDirectMessages ? (\n \n onSetMessageAction(\"reply\")}\n icons={[\"fa fa-reply\"]}\n title={I18n.t(\"js.messages.combined.answer\")}\n onlyIcon={false}\n className={classNames({\n active: messageAction === \"reply\",\n })}\n />\n onSetMessageAction(\"replyAll\")}\n icons={[\"fa fa-reply-all\"]}\n title={I18n.t(\"js.messages.combined.answer_all\")}\n onlyIcon={false}\n className={classNames({\n active: messageAction === \"replyAll\",\n })}\n />\n \n ) : null}\n {sendDirectMessages ? (\n onSetMessageAction(\"share\")}\n icons={[\"fa fa-share\"]}\n title={I18n.t(\"js.messages.combined.forward\")}\n onlyIcon={false}\n className={classNames({\n active: messageAction === \"share\",\n })}\n />\n ) : null}\n
    \n
    \n );\n\n function onDeleteMessage(e: Event) {\n e.preventDefault();\n window.bridge?.confirm(\n filter == \"sent\"\n ? `${I18n.t(\"js.delete_confirmation\")}\\n${I18n.t(\n \"js.messages.message.delete_confirmation_sent\",\n )}`\n : I18n.t(\"js.delete_confirmation\"),\n () => deleteMessage(),\n );\n }\n}\n\nexport default MessageInteractions;\n","import React, { Fragment } from \"react\";\nimport { map, isEqual, isEmpty, find } from \"lodash\";\nimport moment from \"moment\";\nimport { showNameWithProfileField } from \"components/memberships/MemberNameWithAdditions\";\nimport { Message } from \"../@types\";\nimport classNames from \"classnames\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faPaperclip, faEye } from \"@fortawesome/pro-regular-svg-icons\";\nimport FileIcon from \"components/shared/FileIcon\";\n\ntype MessageContainerArgs = {\n currentMemberId: string;\n attachments?: {\n id: string;\n original_filename: string;\n extension: string;\n }[];\n isConversation?: boolean;\n translated?: boolean;\n} & Message;\n\nfunction MessageContainer({\n author,\n created_at,\n currentMemberId,\n html_content,\n to,\n subject,\n translated,\n attachments,\n id,\n isConversation,\n}: MessageContainerArgs): JSX.Element {\n const authorUrl = author?.html_url;\n const authorImageUrl = find(author.images, { width: 80, height: 80 })?.url;\n const authorName = author?.name;\n const date = moment(created_at).format(\"DD.MM.YYYY\");\n const time = moment(created_at).format(\"HH:mm\");\n\n return (\n \n
    \n
    \n \n {authorName}\n \n
    \n \n\n
    \n {!isEmpty(attachments) && (\n \n )}\n {date} {time}\n
    \n
    \n
    \n
    \n {subject}\n \n\n {translated && (\n \n (translated)\n \n )}\n
    \n\n {!isEmpty(attachments) && (\n
    \n {map(attachments, (a) => {\n return (\n \n );\n })}\n
    \n )}\n
    \n\n {isConversation ? (\n \n ) : null}\n \n );\n}\n\nexport default MessageContainer;\n","import React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport {\n get,\n map,\n isEqual,\n isEmpty,\n concat,\n orderBy,\n includes,\n set,\n uniqBy,\n} from \"lodash\";\nimport moment from \"moment\";\nimport { queryClient } from \"helpers/queryClient\";\nimport { useLocation } from \"helpers/tixxt-router\";\nimport { useQueryParams } from \"helpers/useQueryParams\";\nimport { currentMemberSelector } from \"selectors/environment\";\nimport { useMarkMessageAsRead, useFetchMessage } from \"../api\";\nimport NewMessage from \"../composer\";\nimport MessageInteractions from \"./MessageInteractions\";\nimport MessageContainer from \"./MessageContainer\";\nimport { Author, Message, MessageDetailsProps } from \"../@types\";\nimport PageLoading from \"components/shared/PageLoading\";\n\nfunction MessageDetails({\n messageLang,\n setIsTranslatingIndicator,\n}: MessageDetailsProps): JSX.Element {\n const [messageAction, setMessageAction] = useState(\"\");\n const { messageId } = useQueryParams() as { messageId: string };\n const location = useLocation() as unknown as Location & {\n state: History[\"state\"];\n };\n\n const currentMemberId = useSelector(currentMemberSelector)?.id;\n const filter = location.state?.pathname?.includes(\"sent\") ? \"sent\" : \"\";\n\n const {\n isLoading,\n isSuccess,\n data: message,\n isTranslating,\n } = useFetchMessage(messageId, messageLang, {\n refetchOnWindowFocus: false,\n });\n\n const { mutate: markAsRead } = useMarkMessageAsRead({\n onSuccess: () => {\n const updatedCache = set(\n queryClient.getQueryData([\"message\", messageId]) as Record<\n PropertyKey,\n unknown\n >,\n \"i.read\",\n true,\n );\n queryClient.setQueryData([\"message\", messageId], updatedCache);\n },\n });\n\n const conversation = message?.conversation;\n\n useEffect(() => {\n if (isSuccess && message?.i.read === false) {\n markAsRead(messageId);\n }\n }, [message]);\n\n useEffect(() => {\n setIsTranslatingIndicator(isTranslating);\n }, [isTranslating]);\n\n if (isLoading || !currentMemberId || !message) return ;\n\n return (\n <>\n \n\n {isEmpty(messageAction) ? null : (\n \n )}\n\n \n\n {map(orderBy(conversation, \"created_at\", \"desc\"), (message, i) => (\n \n ))}\n \n );\n\n function onSetMessageAction(action: string) {\n setMessageAction(action);\n }\n}\n\nfunction selectedMembers(recipients: Array) {\n const newMemberArray: Array<{ id: string; displayValue: string }> = [];\n map(recipients, (recipient) =>\n newMemberArray.push({\n id: recipient.id,\n displayValue: recipient.name,\n }),\n );\n return newMemberArray;\n}\n\ninterface Attachment {\n content_type: string;\n download_url: string;\n extension: string;\n external_id: null;\n html_url: string;\n i: object;\n id: string;\n original_filename: string;\n size: number;\n state: string;\n type: string;\n}\n\nexport function messageInitialValues(\n messageAction: string,\n message: Message,\n currentMemberId: string,\n) {\n const sender_name = get(message, [\"author\", \"name\"]);\n const recipients =\n get(message, \"to\")?.filter(\n // filter out the currentMember, as we do not want to send a message to self (https://gitlab.sys.mixxt.net/tixxt/foundation/-/issues/2380)\n (recipient) => recipient.id != currentMemberId,\n ) || [];\n const subject = get(message, \"subject\") ? get(message, \"subject\") : \"\";\n const htmlContent = get(message, \"content\");\n const send_date = moment(get(message, \"created_at\")).format(\"DD.MM.YYYY\");\n const send_time = moment(get(message, \"created_at\")).format(\"HH:mm\");\n const messageId = get(message, \"id\");\n const conversation_starter_id =\n get(message, \"conversation_starter_id\") || messageId;\n\n switch (messageAction) {\n case \"reply\": {\n return {\n to: selectedMembers([get(message, \"author\")]),\n subject: `${I18n.t(\"js.messages.message.re\")}: ${subject}`,\n conversation_starter_id,\n };\n }\n case \"replyAll\": {\n const isAuthorInRecipients = includes(\n map(recipients, (r) => isEqual(r, get(message, \"author\"))),\n true,\n );\n const to = uniqBy(\n selectedMembers(\n isAuthorInRecipients\n ? recipients\n : concat(recipients, [get(message, \"author\")]),\n ),\n \"id\",\n );\n\n return {\n to,\n subject: `${I18n.t(\"js.messages.message.re\")}: ${subject}`,\n conversation_starter_id,\n };\n }\n case \"share\": {\n return {\n subject: `${I18n.t(\"js.messages.message.fwd\")}: ${subject}`,\n content: `\\n\\n${I18n.t(\"js.messages.message.forwarded_message\", {\n sender_name,\n send_date,\n send_time,\n })} \\n${htmlContent}`,\n attachments: map(\n get(message, \"attachments\"),\n (attachment: Attachment) => ({\n ...attachment,\n name: attachment.original_filename,\n }),\n ),\n };\n }\n default: {\n return {};\n }\n }\n}\n\nexport default MessageDetails;\n","import React from \"react\";\nimport PageTitle, { Subtitle } from \"components/layout/PageTitle\";\nimport TranslationDropDown, {\n ORIGINAL_LANGUAGE_SIGNIFIER,\n} from \"components/shared/TranslationDropDown\";\n\nimport { useState } from \"react\";\n\nimport MessageDetails from \"components/messages/message\";\nimport Loading from \"components/shared/Loading\";\n\nexport default function ShowMessagePage() {\n const [messageLang, setMessageLang] = useState();\n const [isTranslatingIndicator, setIsTranslatingIndicator] = useState(false);\n\n const handleLanguageSelect = (\n event: React.MouseEvent,\n language: string,\n ) => {\n if (language === ORIGINAL_LANGUAGE_SIGNIFIER) {\n setMessageLang(undefined);\n } else {\n setMessageLang(language);\n }\n };\n\n return (\n <>\n \n <>\n \n {messageLang && !isTranslatingIndicator && (\n \n (translated)\n \n )}\n {isTranslatingIndicator && }\n \n \n\n \n {I18n.t(\"js.messages.message.history\")}\n \n \n \n );\n}\n","import React from \"react\";\nimport { RouteObject } from \"helpers/tixxt-router\";\nimport InboxPage from \"components/messages/InboxPage\";\nimport SentPage from \"components/messages/SentPage\";\nimport NewMessagePage from \"components/messages/NewMessagePage\";\nimport ShowMessagePage from \"components/messages/ShowMessagePage\";\n\nconst routes: RouteObject[] = [\n { path: \"/messages\", element: },\n { path: \"/messages/sent\", element: },\n { path: \"/messages/new\", element: },\n { path: \"/messages/:messageId\", element: },\n];\n\nexport default routes;\n","import React, { useMemo } from \"react\";\nimport { connect, useSelector } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport { get, isEmpty, map, filter } from \"lodash\";\nimport { useParams, useSearchParams } from \"helpers/tixxt-router\";\n\nimport PageTitle from \"../layout/PageTitle\";\nimport ControlGroup from \"../shared/fields/ControlGroup\";\nimport { Field } from \"redux-form\";\nimport styles from \"./files.module.css\";\nimport FileUploadField from \"../shared/fields/FileUploadField\";\nimport FolderSelectionField from \"./FolderSelectionField\";\nimport EmbeddedValueSetForm from \"../shared/propertySets/EmbeddedValueSetForm\";\nimport ReduxForm from \"../shared/reduxForm\";\nimport { selectFileProfilesEnabled } from \"../../selectors/propertySets\";\nimport { submitApi } from \"../../helpers/api\";\nimport { publishFiles } from \"../../actions/files\";\nimport { rootFolderIdSelector } from \"../../selectors/folders\";\nimport Breadcrumb from \"./Breadcrumb\";\nimport GroupNavigation from \"../layout/GroupNavigation\";\nimport { useFetchFolder } from \"./api\";\n\nconst validate = ({ files }) => {\n const errors = {};\n if (isEmpty(files)) errors.files = I18n.t(\"js.required\");\n return errors;\n};\n\nfunction ActualForm({\n defaultFolder,\n showFileProfileFields,\n postToStreamDefault,\n files,\n onSubmit,\n onSubmitSuccess,\n onCancel,\n}) {\n const initialValues = useMemo(\n () => ({\n folder_ids: [defaultFolder.id],\n post_to_stream: postToStreamDefault,\n }),\n [defaultFolder.id, postToStreamDefault],\n );\n\n return (\n \n file.state === \"volatile\" ||\n file.state === \"published\" ||\n file.state === \"removed\",\n )\n }\n initialValues={initialValues}\n submitText={I18n.t(\"js.files.add_files\")}\n renderChildren={() => (\n <>\n \n \n \n \n \n \n \n \n \n {showFileProfileFields ? (\n \n ) : null}\n \n \n \n {I18n.t(\"js.files.file.description_help_1\")}\n \n \n {I18n.t(\"js.files.file.description_help_2\")}\n \n \n \n )}\n />\n );\n}\n\nActualForm.propTypes = {\n defaultFolder: PropTypes.shape({\n id: PropTypes.string.isRequired,\n group_id: PropTypes.string,\n }),\n showFileProfileFields: PropTypes.bool,\n postToStreamDefault: PropTypes.bool,\n onSubmit: PropTypes.func.isRequired,\n onSubmitSuccess: PropTypes.func,\n onCancel: PropTypes.func.isRequired,\n};\n\nconst ConnectedForm = connect((state) => ({\n files: get(state, [\"form\", \"new-files\", \"values\", \"files\"], null),\n showFileProfileFields: selectFileProfilesEnabled(state),\n postToStreamDefault: get(\n state,\n [\"network\", \"config\", \"files\", \"default_post_to_stream\"],\n false,\n ),\n}))(ActualForm);\n\n// Complete page for adding files to one or more folders\n// Loads parent folder information first, by id if one was given, root folder\n// of current context otherwise\nexport default function NewFilesPage() {\n const { groupSlug } = useParams();\n const [searchParams] = useSearchParams();\n const contextRootFolderId = useSelector(rootFolderIdSelector({ groupSlug }));\n const folderId = searchParams.get(\"folder_id\") || contextRootFolderId;\n\n const { data: folder, isLoading: loading } = useFetchFolder(folderId);\n\n const onSubmit = submitApi(({ files, ...remainingValues }) => ({\n body: {\n files: map(filter(files, { state: \"volatile\" }), ({ id }) => ({ id })),\n ...remainingValues,\n },\n }))(publishFiles);\n\n const navigateToFolder = () => {\n const contextPath = groupSlug ? `/groups/${groupSlug}` : \"\";\n window.Turbo.visit(`${contextPath}/files/folders/${folderId}`, {\n action: \"replace\",\n });\n };\n\n return (\n <>\n \n {groupSlug && }\n {loading || isEmpty(folder) ? (\n I18n.t(\"js.loading\")\n ) : (\n <>\n \n \n \n )}\n \n );\n}\nNewFilesPage.propTypes = {\n groupSlug: PropTypes.string,\n query: PropTypes.shape({\n folder_id: PropTypes.string,\n }),\n};\n","import { useState } from \"react\";\nimport { useQuery, useMutation } from \"react-query\";\nimport { get, set, reject, findIndex } from \"lodash\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\nimport { queryClient } from \"helpers/queryClient\";\nimport { stringify } from \"query-string\";\n\nfunction fetchFilesForReviewStatus(groupSlug, page) {\n return fetchApi(\n `/api/storage/v2/files?${\n groupSlug\n ? `${stringify({\n context_id: groupSlug,\n context_type: \"group\",\n query: \"reviewed\",\n page: page,\n })}`\n : `${stringify({\n context_id: Tixxt.currentNetwork.id,\n context_type: \"network\",\n query: \"reviewed\",\n page: page,\n })}`\n }`,\n { parsePaginationHeaders: true },\n );\n}\n\nexport function approvePendingFileVersion({ fileId, pendingVersionId }) {\n return fetchApi(\n `/api/storage/files/${fileId}/pending_versions/${pendingVersionId}/approve`,\n { method: \"POST\" },\n );\n}\nexport function declinePendingFileVersion({ fileId, pendingVersionId }) {\n return fetchApi(\n `/api/storage/files/${fileId}/pending_versions/${pendingVersionId}`,\n { method: \"DELETE\" },\n );\n}\n\nexport function useFilesVersionApproval(groupSlug) {\n return useQuery([\"filesVersionApproval\", groupSlug], () =>\n fetchApi(\n `/api/storage/folders/${\n groupSlug ? groupSlug : Tixxt.currentNetwork.rootFolder().id\n }/files/approval`,\n ),\n );\n}\n\n// that can directly be spread into \n// fetcher must parsePaginationHeaders (i.e. return { payload, pagination: { totalPages }})\nexport function useFilesReviewStatus(groupSlug) {\n const [page, onPaginate] = useState(1);\n const { data, isFetching, ...rest } = useQuery(\n [\"filesReviewStatus\", groupSlug, page],\n () => fetchFilesForReviewStatus(groupSlug, page),\n {\n keepPreviousData: true,\n },\n );\n\n return {\n data: get(data, [\"payload\"]),\n pagination: {\n totalPages: get(data, [\"pagination\", \"totalPages\"]),\n page,\n loading: isFetching,\n onPaginate,\n },\n isFetching,\n ...rest,\n };\n}\n\nfunction removePendingFileVersionFromCache(\n _response,\n { groupSlug, fileId, pendingVersionId },\n) {\n const files = queryClient.getQueryData([\"filesVersionApproval\", groupSlug]);\n const index = findIndex(files, { id: fileId });\n set(\n files,\n [index, \"pending_versions\"],\n reject(get(files, [index, \"pending_versions\"]), {\n id: pendingVersionId,\n }),\n );\n queryClient.setQueryData([\"filesVersionApproval\", groupSlug], files);\n queryClient.invalidateQueries(\"folderUnreads\");\n}\n\nexport function useApprovePendingFileVersion() {\n return useMutation(approvePendingFileVersion, {\n onSuccess: removePendingFileVersionFromCache,\n });\n}\nexport function useDeclinePendingFileVersion() {\n return useMutation(declinePendingFileVersion, {\n onSuccess: removePendingFileVersionFromCache,\n });\n}\n","import React from \"react\";\nimport { map, isEmpty } from \"lodash\";\nimport moment from \"moment\";\nimport {\n useFilesVersionApproval,\n useDeclinePendingFileVersion,\n useApprovePendingFileVersion,\n} from \"./api\";\nimport FileIcon from \"../../shared/FileIcon\";\n\nexport default function VersionApproval({ groupSlug }) {\n const { isLoading, data: files } = useFilesVersionApproval(groupSlug);\n\n if (isLoading) {\n return (\n
    \n {I18n.t(\"js.loading\")}\n
    \n );\n }\n\n if (isEmpty(files))\n return (\n
    \n {I18n.t(\"js.files.approval.review_status.empty_list\")}\n
    \n );\n\n return map(files, ({ id: fileId, name, pending_versions }) => {\n if (isEmpty(pending_versions)) return null;\n\n return (\n
    \n

    \n \n {name}\n \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n {map(pending_versions, (pendingVersion) => (\n \n ))}\n \n
    {I18n.t(\"js.files.overview.new_filename\")}{I18n.t(\"js.files.overview.created_at\")}{I18n.t(\"js.files.overview.author\")}{I18n.t(\"js.files.overview.description\")}
    \n
    \n );\n });\n}\n\nfunction PendingVersionApprovalRow({\n fileId,\n groupSlug,\n id,\n extension,\n original_filename,\n created_at,\n author_name,\n description,\n}) {\n const { mutate: decline, isLoading: isDeclining } =\n useDeclinePendingFileVersion();\n const { mutate: approve, isLoading: isApproving } =\n useApprovePendingFileVersion();\n\n const fileUrl = `/api/storage/files/${fileId}/pending_versions/${id}`;\n return (\n \n \n \n \n \n \n {original_filename}\n \n {moment(created_at).format(\n I18n.t(\"js.time.formats.short_date_and_time\"),\n )}\n \n {author_name}\n {description}\n \n
    \n \n \n \n \n \n \n
    \n \n\n \n
    \n {\n approve({\n fileId,\n pendingVersionId: id,\n groupSlug,\n foo: \"Bar\",\n });\n }}\n disabled={isDeclining || isApproving}\n >\n \n \n {\n decline({\n fileId,\n pendingVersionId: id,\n groupSlug,\n });\n }}\n disabled={isDeclining || isApproving}\n >\n \n \n
    \n \n \n );\n}\n","import React from \"react\";\nimport { get, map, isEmpty } from \"lodash\";\nimport moment from \"moment\";\nimport { useFilesReviewStatus } from \"./api\";\nimport DocumentAction from \"../documents/DocumentAction\";\nimport FileIcon from \"../../shared/FileIcon\";\nimport Pagination from \"../../shared/Pagination\";\n\nexport default function ReviewStatus({ groupSlug }) {\n const {\n data: files,\n pagination,\n isLoading,\n } = useFilesReviewStatus(groupSlug);\n\n if (isLoading) {\n return (\n
    \n {I18n.t(\"js.loading\")}\n
    \n );\n }\n\n if (isEmpty(files) && pagination.page === 1) {\n return (\n
    \n {I18n.t(\"js.files.approval.review_status.empty_list\")}\n
    \n );\n }\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n {map(files, (file) => (\n \n ))}\n \n
    {I18n.t(\"js.files.overview.file_name\")}{I18n.t(\"js.files.overview.updated_at\")}{I18n.t(\"js.files.overview.last_author\")}
    \n \n \n );\n}\n\nfunction ReviewStatusRow({\n original_filename,\n updated_at,\n current_version_authors,\n id,\n review_status,\n extension,\n groupSlug,\n}) {\n const insertions = get(review_status, \"insertions\", 0);\n const deletions = get(review_status, \"deletions\", 0);\n const changes = get(review_status, \"changes\", 0);\n const comments = get(review_status, \"comments\", 0);\n return (\n \n \n \n \n \n \n {original_filename}\n \n \n \n {moment(updated_at).format(\n I18n.t(\"js.time.formats.short_date_and_time\"),\n )}\n \n {map(current_version_authors, \"name\").join(\", \")}\n \n
    \n }\n type=\"docs\"\n showReviewChanges={true}\n />\n
    \n \n\n \n
    \n \n \n {changes + insertions + deletions}\n \n \n \n {comments}\n \n
    \n \n \n );\n}\n","import React, { useState } from \"react\";\nimport classNames from \"classnames\";\nimport { find } from \"lodash\";\nimport { useParams } from \"helpers/tixxt-router\";\n\nimport VersionApproval from \"./VersionApproval\";\nimport ReviewStatus from \"./ReviewStatus\";\nimport GroupNavigation from \"components/layout/GroupNavigation\";\nimport PageTitle from \"components/layout/PageTitle\";\nimport { useFoldersUnreads } from \"../../../api/unreads\";\n\ntype LayoutProps = {\n groupSlug?: string;\n children?: React.ReactNode;\n};\n\nfunction Layout({ groupSlug, children }: LayoutProps) {\n return (\n <>\n \n {groupSlug ? : null}\n {children}\n \n );\n}\n\nexport default function ApprovalPage() {\n const { groupSlug } = useParams();\n const [activeTab, setActiveTab] = useState(null);\n\n const { data: foldersUnreads, isLoading } = useFoldersUnreads();\n\n const unreads = find(foldersUnreads, { group_slug: groupSlug || null });\n\n if (activeTab === null) {\n Number(unreads?.reviewed_files) === 0 &&\n Number(unreads?.pending_versions) > 0\n ? setActiveTab(\"versions\")\n : setActiveTab(\"approval\");\n }\n\n if (isLoading) {\n return (\n \n
    \n {I18n.t(\"js.loading\")}\n
    \n
    \n );\n }\n\n return (\n \n
    \n
      \n
    • \n {\n e.preventDefault();\n setActiveTab(\"approval\");\n }}\n >\n {I18n.t(\"js.files.approval.open_review_status\")}{\" \"}\n {Number(unreads?.reviewed_files) > 0 && (\n \n {unreads?.reviewed_files}\n \n )}\n \n
    • \n
    • \n {\n e.preventDefault();\n setActiveTab(\"versions\");\n }}\n >\n {I18n.t(\"js.files.approval.new_versions\")}{\" \"}\n {Number(unreads?.pending_versions) > 0 && (\n \n {unreads?.pending_versions}\n \n )}\n \n
    • \n
    \n
    \n \n \n
    \n \n \n
    \n \n \n
    \n );\n}\n","import React from \"react\";\nimport { RouteObject } from \"helpers/tixxt-router\";\nimport { convertRoutes } from \"components/tixxt/BackboneFeature\";\nimport NewFilesPage from \"./NewFilesPage\";\nimport ApprovalPage from \"./approval/ApprovalPage\";\n\nconst backboneRoutes: RouteObject[] = convertRoutes({\n feature: \"Files\",\n featureRoutes: {\n \"(groups/:group_slug/)files\": \"showRootFolder\",\n \"(groups/:group_slug/)files/:file_id\": \"showFile\",\n \"(groups/:group_slug/)files/folders/new\": \"newFolder\",\n \"(groups/:group_slug/)files/folders/:folder_id\": \"showFolder\",\n \"(groups/:group_slug/)files/folders/:folder_id/edit\": \"editFolder\",\n \"(groups/:group_slug/)files/activitystream_folders/:stream_slug\":\n \"showActivitystreamFolder\",\n \"(groups/:group_slug/)files/:file_id/edit\": \"editFile\",\n \"(groups/:group_slug/)files/:file_id/versions/new\": \"newFileVersion\",\n \"administration/members/files/:file_id\": \"showFile\",\n \"administration/consumers/files/:file_id\": \"showFile\",\n \"administration/industrials/files/:file_id\": \"showFile\",\n \"activities/:activity_id/files/:file_id\": \"showFile\",\n \"(groups/:group_slug/)activitystreams/:slug/files/:file_id\": \"showFile\",\n \"(groups/:group_slug/)apps/:app_slug/items/exports/files/:file_id\":\n \"showFile\",\n \"(groups/:group_slug/)apps/:app_slug/items/files/:file_id\": \"showFile\",\n \"(groups/:group_slug/)apps/:app_slug/items/:item_id/files/:file_id\":\n \"showFile\",\n \"appointments/:appointment_id/files/:file_id\": \"showFile\",\n \"messages/:message_id/files/:file_id\": \"showFile\",\n },\n});\n\nconst reactRoutes: RouteObject[] = [\n { path: \"/files/new\", element: },\n { path: \"/files/approval\", element: },\n { path: \"/groups/:groupSlug/files/new\", element: },\n { path: \"/groups/:groupSlug/files/approval\", element: },\n];\n\nexport default reactRoutes.concat(backboneRoutes);\n","import { convertRoutes } from \"components/tixxt/BackboneFeature\";\nimport { RouteObject } from \"helpers/tixxt-router\";\n\nconst tasksRoutes: RouteObject[] = convertRoutes({\n feature: \"Tasks\",\n featureRoutes: {\n \"groups/:group_slug/tasks\": \"index\",\n \"(groups/:group_slug/)tasks\": \"my\",\n \"(groups/:group_slug/)tasks/my\": \"my\",\n \"(groups/:group_slug/)tasks/assigned\": \"assigned\",\n \"(groups/:group_slug/)tasks/archive\": \"archive\",\n \"(groups/:group_slug/)tasks/starred\": \"starred\",\n \"tasks/notes\": \"notes\",\n \"tasks/declined\": \"declined\",\n \"tasks/:id\": \"showTask\",\n \"tasks/:id/edit\": \"editTask\",\n },\n});\n\nexport default tasksRoutes;\n","import React from \"react\";\nimport { isEmpty } from \"lodash\";\nimport { useParams, useSearchParams } from \"helpers/tixxt-router\";\nimport PageTitle from \"components/layout/PageTitle\";\nimport SearchResults from \"./SearchResults\";\nimport GroupNavigation from \"../layout/GroupNavigation\";\nimport { useSearchResults } from \"./api\";\n\nfunction Content() {\n const routeParams = useParams();\n const [searchParams] = useSearchParams();\n\n // rebuild legacy params\n routeParams.q = searchParams.get(\"q\");\n routeParams.module = searchParams.get(\"module\");\n routeParams.page = searchParams.get(\"page\");\n\n const {\n data: searchResults,\n isLoading,\n error,\n } = useSearchResults(routeParams);\n\n return (\n <>\n \n {routeParams.groupSlug ? (\n \n ) : null}\n \n \n );\n}\n\nexport default Content;\n","import React from \"react\";\nimport { RouteObject } from \"helpers/tixxt-router\";\nimport Content from \"./Content\";\n\nconst globalSearchRoutes: RouteObject[] = [\n { path: \"/search\", element: },\n { path: \"/groups/:groupSlug/search\", element: },\n];\n\nexport default globalSearchRoutes;\n","import { useQuery, useMutation } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\n\nexport function fetchNetworkSettings() {\n return fetchApi(\"/administration/settings\");\n}\n\nexport function useNetworkSettings() {\n return useQuery(\"networkSettings\", fetchNetworkSettings);\n}\n\nexport async function updateNetworkSettings(body) {\n return fetchApi(`/administration/settings`, { method: \"PUT\", body });\n}\n\nexport function useUpdateNetworkSettings(options) {\n return useMutation(updateNetworkSettings, options);\n}\n\nexport async function sendTestBirthdayEmail({ birthday_emails }) {\n return fetchApi(`/administration/settings/send_test_birthday_email`, {\n method: \"POST\",\n body: birthday_emails,\n });\n}\n\nexport function useSendTestBirthdayEmail(options) {\n return useMutation(sendTestBirthdayEmail, options);\n}\n","import React from \"react\";\nimport { map, includes } from \"lodash\";\n\nimport ControlGroup from \"../../shared/fields/ControlGroup\";\nimport TextField from \"../../appCreator/properties/edit/TextField\";\nimport SelectionField from \"../../appCreator/properties/edit/SelectionField\";\n\nconst AVAILABLE_LANGUAGES = [\"de\", \"de_DU\", \"en\", \"es\", \"fr\"];\n\nfunction BasicSettings() {\n return (\n <>\n

    \n {I18n.t(\"js.administration.network_settings.basic_settings.title\")}\n

    \n
    \n \n \n \n\n \n ({\n value: lang,\n label: I18n.t(`js.networks.languages.${lang}`),\n }))\n : [\n I18n.t(\n `js.networks.languages.${Tixxt.currentNetwork.get(\n \"language\",\n )}`,\n ),\n ]\n }\n />\n \n {Preload.current_network.config.abuse_reports.admin_configurable ? (\n \n \n \n ) : null}\n
    \n \n );\n}\n\nexport default BasicSettings;\n","import React, { Fragment, useCallback } from \"react\";\nimport { map, castArray, isArray, compact, debounce } from \"lodash\";\nimport { Field } from \"redux-form\";\nimport AsyncSelect from \"react-select/async\";\n\nimport styles from \"../../appCreator/properties/edit/editFields.module.css\";\nimport { useMutation } from \"react-query\";\nimport { stringify } from \"query-string\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\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 { id: value.value, name: value.label };\n};\n\nconst formatValue = (state) =>\n map(compact(castArray(state)), ({ id, name }) => ({\n value: id,\n label: name,\n }));\n\ninterface SelectAdapterProps {\n input?: Record;\n required?: boolean;\n id?: string;\n disabled?: boolean;\n multiple?: boolean;\n className?: string;\n}\n\nfunction SelectAdapter({\n input,\n required,\n id,\n disabled,\n className,\n multiple,\n}: SelectAdapterProps) {\n const { mutate: loadOptions } = useMutation(\n ({\n q,\n }: {\n q: string;\n callback: (options: { value: string; label: string }[]) => void;\n }) => fetchApi(`/directory?${stringify({ q, groups_only: true })}`),\n {\n onSuccess: (\n data: { entries: { id: string; name: string }[] },\n variables,\n ) => {\n variables.callback(formatValue(data?.entries));\n },\n },\n );\n\n const debouncedLoadOptions = useCallback(\n debounce((value, callback) => loadOptions({ q: value, callback }), 375),\n [loadOptions],\n );\n\n const 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.group_select.placeholder\"),\n noOptionsMessage: () => I18n.t(\"plugins.select2.no_match\"),\n className,\n loadOptions: debouncedLoadOptions,\n isMulti: multiple,\n styles: { menu: (base) => ({ ...base, zIndex: 999 }) },\n };\n\n return (\n \n
    \n \n
    \n
    \n );\n}\n\ninterface GroupSelectFieldProps {\n name: string;\n multiple: boolean;\n required?: boolean;\n disabled?: boolean;\n id?: string;\n}\n\nfunction GroupSelectField({\n name,\n required,\n disabled,\n id,\n multiple,\n}: GroupSelectFieldProps) {\n return (\n \n );\n}\n\nexport default GroupSelectField;\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport { Field, formValueSelector } from \"redux-form\";\nimport ControlGroup from \"../../shared/fields/ControlGroup\";\nimport MarkdownTranslation from \"components/shared/MarkdownTranslation\";\nimport TextField from \"../../appCreator/properties/edit/TextField\";\nimport SelectionField from \"../../appCreator/properties/edit/SelectionField\";\nimport GroupSelectField from \"../../shared/fields/GroupSelectField\";\nimport { State } from \"@types\";\nimport MarkdownEditorAdapter from \"components/shared/markdownEditor/MarkdownEditorAdapter\";\n\ninterface JoinSettingsTypes {\n join_user_can_initiate?: boolean;\n join_promote_groups?: boolean;\n decorators?: boolean;\n decorators_external?: boolean;\n}\n\nfunction JoinSettings({\n join_user_can_initiate,\n join_promote_groups,\n decorators,\n decorators_external,\n}: JoinSettingsTypes) {\n return (\n <>\n

    \n {I18n.t(\"js.administration.network_settings.join_settings.title\")}\n

    \n
    \n {I18n.t(\"js.administration.network_settings.join_settings.hint\") !=\n \"no_content_do_not_change\" ? (\n
    \n {I18n.t(\"js.administration.network_settings.join_settings.hint\")}\n
    \n ) : null}\n\n \n \n\n {join_user_can_initiate ? (\n <>\n \n\n {Tixxt.currentNetwork.getConfig(\"guest_users.allowed\") ? (\n \n ) : null}\n \n ) : null}\n\n \n\n \n \n\n {join_promote_groups ? (\n
    \n

    {I18n.t(\"js.networks.group_promotion.headline\")}

    \n\n
    \n {I18n.t(\"js.networks.group_promotion.help_text\")}\n
    \n {decorators ? (\n
    \n \n {I18n.t(\"js.networks.group_promotion.decorators_help\")}\n \n
    \n ) : null}\n\n \n \n
    \n {I18n.t(\"js.networks.group_promotion.title.help\")}\n
    \n \n\n \n \n
    \n {I18n.t(\"js.networks.group_promotion.description.help\")}\n
    \n \n\n \n !gc.get(\"hidden\") && gc.get(\"access\") != \"hidden\",\n )\n .map((gc) => ({\n value: gc.get(\"id\"),\n label: gc.get(\"plural_name\"),\n }))}\n multiple\n />\n
    \n {I18n.t(\"js.networks.group_promotion.group_categories.help\")}\n
    \n \n\n \n \n
    \n {I18n.t(\"js.networks.group_promotion.groups.help\")}\n
    \n \n {Tixxt.currentNetwork.getConfig(\"guest_users.allowed\") ? (\n \n \n
    \n {I18n.t(\n \"js.networks.group_promotion.enabled_for_external.help\",\n )}\n
    \n {decorators_external ? (\n
    \n \n {I18n.t(\n \"js.networks.group_promotion.enabled_for_external.decorators_help\",\n )}\n \n
    \n ) : null}\n \n ) : null}\n
    \n ) : null}\n\n {Tixxt.currentNetwork.getConfig(\"devise.login_form_configurable\") ? (\n <>\n
    \n
    \n

    {I18n.t(\"js.networks.join_settings.login_form\")}

    \n\n \n
    \n\n \n \n \n \n \n \n \n \n \n
    \n \n ) : null}\n
    \n \n );\n}\n\nconst selector = formValueSelector(\"networkSettingsForm\"); // the name of the outer form\nexport default connect((state) => ({\n join_user_can_initiate: selector(state as State, \"join_user_can_initiate\"),\n join_promote_groups: selector(\n state as State,\n \"group_promotion_config.active\",\n ),\n decorators: selector(state as State, \"group_promotion_config.decorators\"),\n decorators_external: selector(\n state as State,\n \"group_promotion_config.decorators_external\",\n ),\n}))(JoinSettings);\n","import React from \"react\";\nimport { get, map } from \"lodash\";\nimport { connect } from \"react-redux\";\nimport { formValueSelector } from \"redux-form\";\nimport ControlGroup from \"../../shared/fields/ControlGroup\";\nimport SelectionField from \"../../appCreator/properties/edit/SelectionField\";\nimport CheckboxField from \"components/shared/fields/CheckboxField\";\nimport { Controls } from \"components/shared/fields/ControlGroup\";\nimport AddressField from \"components/appCreator/properties/edit/AddressField\";\nimport TextField from \"../../appCreator/properties/edit/TextField\";\nimport NumberField from \"../../appCreator/properties/edit/NumberField\";\nimport { State } from \"@types\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCircleInfo } from \"@fortawesome/pro-regular-svg-icons\";\n\ninterface MemberSettings {\n maps_enabled?: string;\n show_map?: string;\n map_scope_selection?: string;\n two_factor?: string;\n anonymize_memberships_config: string;\n initial_anonymize_memberships_config: string;\n anonymize_memberships_managed_by_admin: boolean;\n show_locked_memberships_managed_by_admin: boolean;\n anonymize_memberships_after_days: number;\n deleted_membership_count: number;\n available_factor_types?: {\n two_factor_email_available: boolean;\n two_factor_totp_available: boolean;\n };\n}\n\nfunction MemberSettings({\n show_map,\n map_scope_selection,\n maps_enabled,\n two_factor,\n anonymize_memberships_config,\n initial_anonymize_memberships_config,\n anonymize_memberships_managed_by_admin,\n show_locked_memberships_managed_by_admin,\n anonymize_memberships_after_days,\n deleted_membership_count,\n available_factor_types,\n}: MemberSettings) {\n const twoFactorOptions = [\n {\n value: \"disabled\",\n label: I18n.t(\"js.administration.authentication.2fa.deactivated\"),\n },\n {\n value: \"enabled\",\n label: I18n.t(\"js.administration.authentication.2fa.optional\"),\n },\n ];\n\n if (Tixxt.currentNetwork.getConfig(\"two_factor.enforced_available\"))\n twoFactorOptions.push({\n value: \"enforced\",\n label: I18n.t(\n \"js.administration.authentication.2fa.enforced_for_network\",\n ),\n });\n\n return (\n <>\n

    \n {I18n.t(\"js.administration.network_settings.member_settings.title\")}\n

    \n\n

    \n {I18n.t(\"js.administration.network_settings.member_settings.directory\")}\n

    \n\n
    \n \n \n \n\n {maps_enabled === \"enabled\" ? (\n <>\n \n
    \n \n
    \n {I18n.t(\"js.administration.network_settings.map_hint\")}\n
    \n
    \n \n
    \n {I18n.t(\"js.administration.network_settings.map_modal_body\")}\n
    \n {show_map === \"enabled\" ? (\n <>\n
    \n
    \n \n {I18n.t(\n \"js.administration.network_settings.member_settings.map.map_scope_selection.label\",\n )}\n \n
    \n \n
    \n {map_scope_selection === \"poi\" ? (\n
    \n
    \n \n {I18n.t(\n \"js.administration.network_settings.member_settings.map.map_scope_selection.address_label\",\n )}\n \n \n \n {I18n.t(\n \"js.administration.network_settings.member_settings.map.map_scope_selection.zoom\",\n )}\n \n \n
    \n
    \n ) : null}\n
    \n
    \n {I18n.t(\n \"js.administration.network_settings.member_settings.map.theme.label\",\n )}\n \n ),\n },\n {\n value: \"alidade_smooth_dark\",\n label: (\n \n ),\n },\n {\n value: \"osm_bright\",\n label: (\n \n ),\n },\n {\n value: \"outdoors\",\n label: (\n \n ),\n },\n ]}\n />\n \n ) : null}\n \n \n ) : null}\n \n ,\n (field) => ({\n value: field.name,\n label: field.label,\n }),\n )}\n />\n
    \n {I18n.t(\"js.networks.directory_fields.help\")}\n
    \n \n\n \n ,\n (field) => ({\n value: field.name,\n label: field.label,\n }),\n )}\n />\n
    \n {I18n.t(\"js.networks.detection_profile_field.hint\")}\n
    \n \n {show_locked_memberships_managed_by_admin ? (\n \n \n \n ) : null}\n\n {anonymize_memberships_managed_by_admin ? (\n <>\n \n {[\"enabled\", \"after_days\"].includes(\n anonymize_memberships_config,\n ) && initial_anonymize_memberships_config == \"disabled\" ? (\n
    \n {I18n.t(\n \"js.administration.network_settings.anonymize_memberships.warning\",\n { deletedMemberCount: deleted_membership_count },\n )}\n
    \n ) : null}\n \n {anonymize_memberships_config === \"after_days\" ? (\n <>\n
    \n {I18n.t(\n \"js.administration.network_settings.anonymize_memberships.days.title\",\n )}\n \n \n ) : null}\n {[\"enabled\", \"after_days\"].includes(\n anonymize_memberships_config as string,\n ) ? (\n <>\n
    \n {I18n.t(\n \"js.administration.network_settings.anonymize_memberships.name.title\",\n )}\n \n \n ) : null}\n \n \n ) : null}\n\n {Tixxt.currentNetwork.getConfig(\"guest_users.allowed\") ? (\n <>\n

    \n {I18n.t(\n \"js.administration.network_settings.guest_users_settings.title\",\n )}\n

    \n {Preload.current_member?.can?.chat && (\n \n \n \n )}\n \n ) : null}\n\n

    \n {I18n.t(\n \"js.administration.network_settings.member_settings.security\",\n )}\n

    \n\n \n \n {Tixxt.currentNetwork.getConfig(\"two_factor.enforced_available\") ? (\n
    \n {I18n.t(\n \"js.administration.authentication.2fa.enforced_description\",\n )}\n
    \n ) : null}\n\n {two_factor != \"disabled\" ? (\n
    \n \n \n
    \n
    \n
    \n \n
    \n \n {I18n.t(\"js.authentication.2fa.authenticator_app\")}\n \n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n \n
    \n \n {I18n.t(\"js.authentication.2fa.email\")}\n \n
    \n
    \n
    \n
    \n \n
    \n ) : null}\n \n\n \n \n
    \n {I18n.t(\"js.administration.network_settings.online_status.hint\")}\n
    \n \n
    \n \n );\n}\n\nconst selector = formValueSelector(\"networkSettingsForm\"); // the name of the outer form\nexport default connect((state) => ({\n maps_enabled: selector(state as State, \"maps_enabled\"),\n show_map: selector(state as State, \"show_map\"),\n map_scope_selection: selector(state as State, \"map_scope_selection\"),\n two_factor: selector(state as State, \"two_factor\"),\n deleted_membership_count: selector(\n state as State,\n \"deleted_membership_count\",\n ),\n anonymize_memberships_managed_by_admin: selector(\n state as State,\n \"anonymize_memberships_managed_by_admin\",\n ),\n show_locked_memberships_managed_by_admin: selector(\n state as State,\n \"show_locked_memberships_managed_by_admin\",\n ),\n initial_anonymize_memberships_config: get(state, [\n \"form\",\n \"networkSettingsForm\",\n \"initial\",\n \"anonymize_memberships_config\",\n ]),\n anonymize_memberships_config: selector(\n state as State,\n \"anonymize_memberships_config\",\n ),\n anonymize_memberships_after_days: selector(\n state as State,\n \"anonymize_memberships_after_days\",\n ),\n\n available_factor_types: {\n two_factor_totp_available: selector(\n state as State,\n \"two_factor_totp_available\",\n ),\n two_factor_email_available: selector(\n state as State,\n \"two_factor_email_available\",\n ),\n },\n}))(MemberSettings);\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { formValueSelector } from \"redux-form\";\nimport moment from \"moment\";\nimport { flatMap, each, memoize } from \"lodash\";\nimport ControlGroup from \"../../shared/fields/ControlGroup\";\nimport SelectionField from \"../../appCreator/properties/edit/SelectionField\";\nimport { Field } from \"redux-form\";\nimport NumberField from \"components/appCreator/properties/edit/NumberField.js\";\nimport { State } from \"@types\";\nimport FileUploadField from \"components/shared/fields/FileUploadField\";\nimport TextField from \"../../appCreator/properties/edit/TextField\";\nimport { useSendTestBirthdayEmail } from \"./api\";\nimport MarkdownEditorAdapter from \"components/shared/markdownEditor/MarkdownEditorAdapter\";\n\ntype day = { name: string; index: number };\n\nconst createDaysArray = memoize(() => {\n const days: Array = [];\n each(moment.localeData().weekdays(), (weekday, index) =>\n days.push({ name: weekday, index: index }),\n );\n\n let moveArray = moment.localeData().firstDayOfWeek();\n while (moveArray != 0) {\n if (days.length) {\n days.push(days.shift() as day);\n }\n moveArray--;\n }\n\n return days;\n});\n\nfunction MailSettings() {\n const selector = formValueSelector(\"networkSettingsForm\");\n const digests_daily_activity_enabled = useSelector((state) =>\n selector(state as State, \"daily_activity.enabled\"),\n );\n const birthday_emails_enabled = useSelector((state) =>\n selector(state as State, \"birthday_emails.enabled\"),\n );\n\n const birthday_emails_values = useSelector((state) =>\n selector(\n state as State,\n \"birthday_emails.subject\",\n \"birthday_emails.text\",\n \"birthday_emails.image\",\n ),\n );\n\n const { mutateAsync: sendTestMail } = useSendTestBirthdayEmail({\n onSuccess: () => {\n toastr.success(\"Test Mail erfolgreich gesendet\");\n },\n });\n\n const days = createDaysArray();\n return (\n <>\n

    \n {I18n.t(\"js.administration.network_settings.mail_settings.title\")}\n

    \n
    \n \n \n
    \n {I18n.t(\"js.networks.notifications.dm_body.help\")}\n
    \n \n {Tixxt.currentNetwork.getConfig(\n \"email_recommendations.allow_email_recommendation_configuration_for_network_admins\",\n ) ? (\n \n \n
    \n {I18n.t(\n \"js.administration.network_settings.activity_recommendation_email.help\",\n )}\n
    \n \n \n ) : null}\n {Tixxt.currentNetwork.getConfig(\"digests.enabled\") ? (\n <>\n

    \n {I18n.t(\"js.administration.network_settings.digests.label\")}\n

    \n \n [\n {\n key: `${day.index}_am`,\n value: { day: day.index, time: \"am\" },\n label: `${day.name} ${I18n.t(\n \"js.administration.network_settings.digests.am\",\n )}`,\n },\n {\n key: `${day.index}_pm`,\n value: { day: day.index, time: \"pm\" },\n label: `${day.name} ${I18n.t(\n \"js.administration.network_settings.digests.pm\",\n )}`,\n },\n ])}\n />\n {Tixxt.currentNetwork.getConfig(\"digests.configurable\") ? null : (\n
    \n {I18n.t(\n \"js.administration.network_settings.setting_restricted_by_plan\",\n )}\n
    \n )}\n \n {Tixxt.currentNetwork.getConfig(\"digests.configurable\") ? (\n <>\n \n \n \n \n \n \n \n \n \n \n ) : null}\n \n ) : null}\n {Tixxt.currentNetwork.getConfig(\n \"digests.daily_activity.feature_available\",\n ) ? (\n
    \n \n \n
    \n {I18n.t(\n \"js.administration.network_settings.daily_digests.enabled.help\",\n )}\n
    \n {digests_daily_activity_enabled === \"true\" && (\n <>\n
    \n \n {I18n.t(\n \"js.administration.network_settings.daily_digests.include_network_level.label\",\n )}\n \n \n
    \n \n {I18n.t(\n \"js.administration.network_settings.daily_digests.mode.label\",\n )}\n \n \n
    \n \n {I18n.t(\n \"js.administration.network_settings.daily_digests.sending_time.label\",\n )}\n \n \n
    \n \n {I18n.t(\n \"js.administration.network_settings.daily_digests.only_weekdays.label\",\n )}\n \n \n \n )}\n \n
    \n ) : null}\n {Tixxt.currentNetwork.getConfig(\n \"birthday_emails.admin_configurable\",\n ) ? (\n
    \n \n \n {I18n.t(\n \"js.administration.network_setting.birthday_emails.enable_label\",\n )}\n \n \n\n {birthday_emails_enabled === \"true\" && (\n <>\n
    \n \n {I18n.t(\n \"js.administration.network_setting.birthday_emails.image_label\",\n )}\n \n\n \n
    \n {I18n.t(\n \"js.administration.network_setting.birthday_emails.image_size_hint\",\n )}\n
    \n\n
    \n \n {I18n.t(\n \"js.administration.network_setting.birthday_emails.subject_label\",\n )}\n \n\n \n
    \n \n {I18n.t(\n \"js.administration.network_setting.birthday_emails.text_label\",\n )}\n \n\n \n
    \n {\n e.preventDefault();\n sendTestMail(birthday_emails_values);\n }}\n >\n {I18n.t(\n \"js.administration.network_setting.birthday_emails.send_test_mail_label\",\n )}\n \n
    \n \n )}\n \n
    \n ) : null}\n
    \n \n );\n}\n\nexport default MailSettings;\n","import React, { useState } from \"react\";\nimport { memoize } from \"lodash\";\nimport ReduxForm from \"components/shared/reduxForm\";\nimport BasicSettings from \"./BasicSettings\";\nimport JoinSettings from \"./JoinSettings\";\nimport MemberSettings from \"./MemberSettings\";\nimport MailSettings from \"./MailSettings\";\nimport TabBar from \"../../shared/TabBar\";\n\nconst getTabs = memoize(() => {\n const tabs = [\n {\n label: I18n.t(\"js.administration.network_settings.basic_settings.title\"),\n TabContent: BasicSettings,\n },\n {\n label: I18n.t(\"js.administration.network_settings.join_settings.title\"),\n TabContent: JoinSettings,\n },\n {\n label: I18n.t(\"js.administration.network_settings.member_settings.title\"),\n TabContent: MemberSettings,\n },\n {\n label: I18n.t(\"js.administration.network_settings.mail_settings.title\"),\n TabContent: MailSettings,\n },\n ];\n\n return tabs;\n});\n\ninterface NetworkSettingsFormTypes {\n initialValues: Record;\n onSubmit: (values: any) => Promise;\n}\n\nfunction NetworkSettingsForm({\n onSubmit,\n initialValues,\n}: NetworkSettingsFormTypes) {\n const [selectedTabIndex, selectTabIndex] = useState(0);\n const { TabContent } = getTabs()[selectedTabIndex];\n\n return (\n toastr.error(I18n.t(\"js.saving_failure\"))}\n onCancel={(reset: () => void) => reset()}\n allowSaveWithoutChange={false}\n >\n \n
    \n \n
    \n \n );\n}\n\nexport default NetworkSettingsForm;\n","import React from \"react\";\nimport { isEmpty, map } from \"lodash\";\n\nimport { useNetworkSettings, useUpdateNetworkSettings } from \"./api\";\nimport PageTitle from \"../../layout/PageTitle\";\nimport NetworkSettingsForm from \"./NetworkSettingsForm\";\nimport { useDispatch } from \"react-redux\";\nimport publishAllVolatile from \"helpers/files/publishAllVolatile\";\n\nfunction NetworkSettings() {\n const { isLoading, data: networkSettings } = useNetworkSettings();\n const dispatch = useDispatch();\n const { mutateAsync: updateNetworkSettings } = useUpdateNetworkSettings({\n onSuccess: () => {\n toastr.success(I18n.t(\"js.saving_successful\"));\n window.location.reload(); // hard reload, to apply language settings\n },\n });\n\n const onSubmit = async (values) => {\n let body = {\n ...values,\n // The SelectField resolve to an empty array if you clear the input\n category: isEmpty(values.category) ? null : values.category,\n detection_profile_field: isEmpty(values.detection_profile_field)\n ? null\n : values.detection_profile_field,\n // Send array of group_ids instead of an array with group objects\n group_promotion_config: {\n ...values.group_promotion_config,\n group_ids: map(values.group_promotion_config.groups, (g) => g.id),\n },\n guest_users_allow_chat: values.guest_users_allow_chat === \"enabled\",\n birthday_emails: {\n subject:\n values.birthday_emails.subject === \"\"\n ? null\n : values.birthday_emails.subject,\n text:\n values.birthday_emails.text === \"\"\n ? null\n : values.birthday_emails.text,\n enabled: values.birthday_emails.enabled === \"true\",\n },\n };\n\n if (values.birthday_emails.image != null) {\n const result = await publishAllVolatile({\n dispatch,\n values: { birthday_emails_image: values.birthday_emails.image },\n storageDirectory: \"assets\",\n });\n\n body = {\n ...body,\n birthday_emails: {\n ...body.birthday_emails,\n image: result.birthday_emails_image[0],\n },\n };\n\n return updateNetworkSettings(body);\n } else {\n body = {\n ...body,\n birthday_emails: {\n ...body.birthday_emails,\n image: null,\n },\n };\n\n return updateNetworkSettings(body);\n }\n };\n\n return (\n <>\n \n
    \n
    \n {isLoading || isEmpty(networkSettings) ? (\n
    \n {I18n.t(\"js.loading\")}\n
    \n ) : (\n \n )}\n
    \n
    \n \n );\n}\n\nexport default NetworkSettings;\n","import React from \"react\";\n\ninterface LinkFormTypes {\n link: string;\n text: string;\n\n onChange(...args: unknown[]): unknown;\n}\n\nfunction LinkForm({ link, text, onChange }: LinkFormTypes) {\n text = text || I18n.t(\"js.administration.navigation_items.default_text\");\n return (\n onChange({ link: e.target.value, text })}\n placeholder={I18n.t(\"js.administration.navigation_items.url_placeholder\")}\n />\n );\n}\n\nexport default LinkForm;\n","import React from \"react\";\n\n// Method gets default menu-item-name from selected page, app or standard-site.\nconst getDefaultName = (target) => {\n const selectedIndex = target.selectedIndex;\n return target[selectedIndex].text;\n};\n\ninterface SelectContentTypes {\n data: {\n label?: string;\n link?: string;\n }[];\n link: string;\n\n onChange(...args: unknown[]): unknown;\n}\n\nfunction SelectContent({ data, link, onChange }: SelectContentTypes) {\n return (\n \n onChange({ link: e.target.value, text: getDefaultName(e.target) })\n }\n value={link}\n >\n \n {data.map((item, index) => (\n \n ))}\n \n );\n}\n\nexport default SelectContent;\n","import React from \"react\";\nimport { isEmpty } from \"lodash\";\n\ninterface MainFieldsTypes {\n onChangeOption(...args: unknown[]): unknown;\n\n hasChildren: boolean;\n option: string;\n items: {\n apps?: Array;\n pages?: Array;\n standard?: Array;\n };\n}\n\nfunction MainFields({\n hasChildren,\n option,\n onChangeOption,\n items,\n}: MainFieldsTypes) {\n let optionLink = [\n {\n label: I18n.t(\"js.administration.navigation_items.link.option_label\"),\n name: \"link\",\n },\n //{ label: \"Folder\", name: \"folder\" },\n //{ label: \"Group\", name: \"group\" },\n {\n label: I18n.t(\"js.administration.navigation_items.page.option_label\"),\n name: \"pages\",\n },\n {\n label: I18n.t(\"js.administration.navigation_items.app.option_label\"),\n name: \"apps\",\n },\n {\n label: I18n.t(\"js.administration.navigation_items.standard.option_label\"),\n name: \"standard\",\n },\n ];\n\n // filter out Apps and Pages from the Dropdown if there are none present\n optionLink = optionLink.filter(\n (item) => !isEmpty(items[item.name]) || item.name == \"link\",\n );\n\n return (\n
    \n {!hasChildren && (\n
    \n \n \n {optionLink.map((item, index) => (\n \n ))}\n \n
    \n )}\n
    \n );\n}\n\nexport default MainFields;\n","import React from \"react\";\n\ninterface CheckboxesTypes {\n newWindow?: boolean;\n\n onChangeNewWindow(...args: unknown[]): unknown;\n\n isPublic?: boolean;\n\n onChangePublic(...args: unknown[]): unknown;\n}\n\nfunction Checkboxes({\n newWindow,\n onChangeNewWindow,\n isPublic,\n onChangePublic,\n}: CheckboxesTypes) {\n return (\n
    \n \n
    \n \n \n
    \n
    \n );\n}\n\nexport default Checkboxes;\n","import type { ChangeEvent } from \"react\";\nimport type { TreeItem } from \"react-sortable-tree\";\nimport React from \"react\";\nimport \"../navigationManager.css\";\nimport { isEmpty, findKey, isEqual, find } from \"lodash\";\nimport { connect } from \"react-redux\";\nimport LinkForm from \"./LinkForm\";\nimport SelectContent from \"./SelectContent\";\nimport MainFields from \"./MainFields\";\nimport Checkboxes from \"./Checkboxes\";\nimport { State } from \"../../../@types\";\n\nfunction findOption(items, link) {\n const keyName = findKey(items, (value) =>\n find(value, (item) => isEqual(item.link, link)),\n );\n if (!isEmpty(keyName)) return keyName;\n return \"link\";\n}\n\ntype items = {\n apps?: Array;\n pages?: Array;\n};\n\ninterface ItemFormTypes {\n option: string;\n items: items;\n link: string;\n text: string;\n\n onChange(...args: unknown[]): unknown;\n}\n\nfunction ItemForm({ option, items, link, text, onChange }: ItemFormTypes) {\n if (items[option]) {\n return (\n \n );\n }\n return ;\n}\n\ninterface NavigationManagerFormTypes {\n node: TreeItem | null;\n\n onChangeNode(...args: unknown[]): unknown;\n\n items: items;\n}\n\nfunction NavigationManagerForm({\n node,\n onChangeNode,\n items,\n}: NavigationManagerFormTypes) {\n if (isEmpty(node)) {\n return null;\n }\n const hasChildren = !isEmpty((node as TreeItem).children);\n const option = (node as TreeItem).option\n ? (node as TreeItem).option\n : findOption(items, (node as TreeItem).link);\n return (\n
    \n
    \n ) => {\n onChangeNode({ ...node, option: e.target.value });\n }}\n />\n {!hasChildren && [\n onChangeNode({ ...node, link, text })}\n items={items}\n key=\"options\"\n />,\n ]}\n \n {\n onChangeNode({ ...node, text: e.target.value });\n }}\n />\n {!hasChildren && [\n \n onChangeNode({ ...node, new_window })\n }\n onChangePublic={(p) => onChangeNode({ ...node, public: p })}\n key=\"checkboxes\"\n />,\n ]}\n \n
    \n );\n}\n\nexport default connect(\n (\n state,\n { items, groupSlug }: { items: items; groupSlug: string | null },\n ) => ({\n items: {\n ...items,\n standard: groupSlug\n ? []\n : [\n {\n link: \"/\",\n label: I18n.t(\n \"js.administration.navigation_items.standard.start.option_label\",\n ),\n },\n {\n link: \"/members\",\n label: I18n.t(\n \"js.administration.navigation_items.standard.user-folder.option_label\",\n ),\n },\n {\n link: \"/directory/channels\",\n label: I18n.t(\n \"js.administration.navigation_items.standard.channels.option_label\",\n ),\n },\n ].concat(\n (state as State).network.group_categories.map(\n ({ slug, plural_name }) => ({\n link: `/directory/${slug}`,\n label: plural_name,\n }),\n ),\n ),\n },\n }),\n)(NavigationManagerForm);\n","import React from \"react\";\n\ninterface ItemButtonTypes {\n onClick?(...args: unknown[]): unknown;\n\n buttonClass?: string;\n icon?: string;\n}\n\nfunction ItemButton({ onClick, buttonClass, icon }: ItemButtonTypes) {\n return (\n \n );\n}\n\nexport default ItemButton;\n","import type { TreeItem } from \"react-sortable-tree\";\nimport React, { Component } from \"react\";\nimport SortableTree, {\n changeNodeAtPath,\n addNodeUnderParent,\n removeNodeAtPath,\n getNodeAtPath,\n walk,\n} from \"react-sortable-tree\";\nimport { isEqual, isEmpty } from \"lodash\";\nimport classNames from \"classnames\";\n\nimport \"react-sortable-tree/style.css\";\nimport NavigationManagerForm from \"./navigationManager/NavigationManagerForm\";\nimport ItemButton from \"./navigationManager/ItemButton\";\nimport Flash from \"../shared/Flash\";\nimport PageTitle from \"../layout/PageTitle\";\nimport GroupNavigation from \"../layout/GroupNavigation\";\nimport \"./navigationManager.css\";\nimport { queryClient } from \"helpers/queryClient\";\n\nconst getNodeKey = ({ treeIndex }) => treeIndex;\n\nconst countAllNodes = (treeData) => {\n let sum = 0;\n walk({\n treeData,\n getNodeKey,\n callback: () => {\n sum = sum + 1;\n },\n });\n return sum;\n};\n\n// Validation of empty item-name and url fields in data-object (see state.treeData). Used in:\n// - \"isValidTree\" method\n// - \"generateNodeProps\" method in SortableTree component to set css-class of item with empty field\nconst isValidNode = (node) => {\n if (isEmpty(node.text)) return false;\n if (isEmpty(node.link) && isEmpty(node.children)) return false;\n return true;\n};\n\n// Method returns true if every node in the tree is valid\n// Used in \"sendData\" method as validation before data sending\nconst isValidTree = (treeData) => {\n const result: Array = [];\n walk({\n treeData,\n getNodeKey,\n ignoreCollapsed: false,\n callback: ({ node, path }) => {\n if (!isValidNode(node)) result.push(path);\n },\n });\n return isEmpty(result);\n};\n\n// Validation of drop possibility. Maximal depth of Tree Data is 2,\n// means: main-parent-item + sub-children-items (sub-children-items cannot have children)\nconst canDrop = ({ node, nextPath }) => {\n if (nextPath.length > 2) return false;\n if (node.children.length > 0 && nextPath.length > 1) return false;\n return true;\n};\n\nconst reloadNavbar = (groupSlug: null | string) => {\n queryClient.invalidateQueries([\"groupNavigationItems\", groupSlug]);\n};\n\nconst navigationItemsUrl = ({ groupSlug }) =>\n groupSlug ? `/groups/${groupSlug}/administration` : \"/administration\";\n\ntype State = {\n treeData: Array;\n activePath: Array;\n apps: Array;\n pages: Array;\n isLoading: boolean;\n loadError: boolean;\n isSaving: boolean;\n saveError: boolean;\n saveSuccess: boolean;\n};\n\ninterface NavigationManagerTypes {\n groupSlug: string | null;\n}\n\nclass NavigationManager extends Component {\n treeRef: React.RefObject;\n\n constructor(props: NavigationManagerTypes) {\n super(props);\n\n this.state = {\n treeData: [],\n activePath: [],\n apps: [],\n pages: [],\n isLoading: false,\n loadError: false,\n isSaving: false,\n saveError: false,\n saveSuccess: false,\n };\n\n this.treeRef = React.createRef();\n }\n\n onChangeTree = (treeData) => this.setState({ treeData });\n\n onMoveNode = (event) => {\n this.setState({ activePath: event.path });\n };\n\n onChangeActiveNode = (newNode) =>\n this.setState(({ activePath, treeData }: State) => ({\n treeData: changeNodeAtPath({\n treeData,\n path: activePath,\n getNodeKey,\n newNode,\n }),\n }));\n\n // Method sends a request with data-object (see state.treeData) to backend,\n // reloads site when catches no errors.\n // Has also a validation of empty fields.\n sendData = async () => {\n this.setState({ isSaving: true, saveError: false, saveSuccess: false });\n\n if (!isValidTree((this.state as State).treeData)) {\n toastr.error(\n I18n.t(\"js.administration.navigation_items.edit.message_empty_fields\"),\n );\n this.setState({\n isSaving: false,\n });\n return;\n }\n\n try {\n const response = await fetch(\n `${navigationItemsUrl(this.props)}/navigation`,\n {\n method: \"PUT\",\n body: JSON.stringify({\n navigation_items: this.serializeTree(\n (this.state as State).treeData,\n ),\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n credentials: \"include\",\n },\n );\n const responseData = await response.json();\n\n this.setState({\n treeData: responseData.map(this.parseNavigationItems),\n isSaving: false,\n saveSuccess: true,\n });\n reloadNavbar(this.props.groupSlug);\n // groupSlug ? reloadGroupNavbar(groupSlug) : null;\n } catch (error) {\n console.error(error);\n this.setState({\n isSaving: false,\n saveError: true,\n });\n }\n };\n\n async componentDidMount() {\n this.setState({ isLoading: true });\n try {\n const navResponse = await fetch(\n `${navigationItemsUrl(this.props)}/navigation.json`,\n { credentials: \"include\" },\n );\n const navData = await navResponse.json();\n const pagesResponse = await fetch(\n `${navigationItemsUrl(this.props)}/pages.json`,\n { credentials: \"include\" },\n );\n const pagesData = await pagesResponse.json();\n const appsResponse = await fetch(\n `${navigationItemsUrl(this.props)}/apps.json`,\n { credentials: \"include\" },\n );\n const appsData = await appsResponse.json();\n const { groupSlug } = this.props;\n this.setState({\n treeData: navData.map(this.parseNavigationItems),\n pages: pagesData.map((item) => ({\n label: item.name,\n link: groupSlug\n ? `/groups/${groupSlug}/pages/${item.slug}`\n : `/pages/${item.slug}`,\n })),\n apps:\n appsResponse.status == 200\n ? appsData.map((item) => ({\n label: item.name,\n link: groupSlug\n ? `/groups/${groupSlug}/apps/${item.slug}`\n : `/apps/${item.slug}`,\n }))\n : [],\n isLoading: false,\n });\n } catch (error) {\n console.error(error);\n this.setState({\n isLoading: false,\n loadError: true,\n });\n }\n }\n\n // Method adapts keys in data-object received from backend to data-object processed in \"SortableTree\" component.\n // Adds new option key.\n // Used by component mounting in lifecycle method \"componentDidMount\"\n // and sending data in \"sendData\" method.\n parseNavigationItems = (data) => {\n data.expanded = true;\n\n if (!isEmpty(data.children)) data.link = \"\";\n if (data.navigation_items) {\n data.children = data.navigation_items.map(this.parseNavigationItems);\n delete data.navigation_items;\n }\n\n return data;\n };\n\n // Method adapts keys in data-object (see state.treeData) to data-object processed in backend.\n // Used by sending data in \"sendData\" method.\n serializeTree = (treeData) => treeData.map(this.serializeNode);\n\n serializeNode = ({ text, link, public: isPublic, new_window, children }) => {\n const result = { text, link, public: isPublic, new_window };\n if (children && children.length > 0) {\n result.link = \"#\";\n Reflect.set(result, \"navigation_items\", children.map(this.serializeNode));\n }\n return result;\n };\n\n getActiveNode = () => {\n const node = getNodeAtPath({\n treeData: (this.state as State).treeData,\n path: (this.state as State).activePath,\n getNodeKey,\n });\n return node ? node.node : null;\n };\n\n buildNewNode = () => ({\n text: I18n.t(\"js.administration.navigation_items.default_text\"),\n link: \"\",\n option: \"link\",\n new_window: false,\n public: false,\n children: [],\n });\n\n // Method adds new node in tree data. Used as onClick-handler in \"itemButtons\" method, where adds new nodes as sub-items (children).\n // \"Add new item\" blue button (see in browser on the bottom of \"Tree\") uses also this method as onClick-handler.\n // In this case method calls the function \"scrollToBottom\"\n addNodeAt = (path) => (e) => {\n e.stopPropagation();\n\n const { treeData, treeIndex } = addNodeUnderParent({\n treeData: (this.state as State).treeData,\n parentKey: path[path.length - 1],\n expandParent: true,\n getNodeKey,\n newNode: this.buildNewNode(),\n addAsFirstChild: false,\n });\n\n // Select nodeIndex under current parent or last node without parent\n const activePath =\n path.length > 0\n ? path.concat([treeIndex])\n : [countAllNodes(treeData) - 1];\n\n this.setState({\n treeData,\n activePath,\n });\n if (isEmpty(path)) this.scrollToBottom();\n };\n\n removeItemAt = (path) => (e) => {\n e.stopPropagation();\n\n this.setState((state: State) => ({\n treeData: removeNodeAtPath({\n treeData: state.treeData,\n path,\n getNodeKey,\n }),\n }));\n };\n\n // Method shows specific buttons on every items.\n // On parent-items: \"add\" and \"remove\" buttons, on child-items only \"remove\" buttons.\n itemButtons(path) {\n const buttons: Array = [];\n\n if (path.length <= 1) {\n buttons.push(\n ,\n );\n }\n\n buttons.push(\n ,\n );\n\n return buttons;\n }\n\n scrollToBottom = () => {\n window.scrollTo({\n top: this.treeRef.current?.clientHeight,\n behavior: \"smooth\",\n });\n };\n\n render() {\n const items = {\n apps: (this.state as State).apps,\n pages: (this.state as State).pages,\n };\n const {\n saveSuccess,\n isLoading,\n loadError,\n saveError,\n treeData,\n activePath,\n isSaving,\n } = this.state as State;\n const { groupSlug } = this.props;\n return (\n
    \n \n\n
    \n \n {I18n.t(\"js.administration.navigation_items.edit.save\")}\n \n
    \n {groupSlug ? : null}\n {saveSuccess ? (\n \n {I18n.t(\"js.administration.navigation_items.edit.success\")}\n \n ) : null}\n {saveError ? (\n \n {I18n.t(\"js.administration.navigation_items.edit.error\")}\n \n ) : null}\n
    \n
    \n {isLoading ? (\n

    \n {I18n.t(\"js.administration.navigation_items.loading\")}\n

    \n ) : loadError ? (\n

    \n {I18n.t(\n \"js.administration.navigation_items.error_while_loading\",\n )}\n

    \n ) : null}\n
    \n {!isEmpty(treeData) ? (\n ({\n onClick: () => {\n this.setState({\n activePath: path,\n });\n },\n className: classNames(\n {\n \"selected move-item\": isEqual(activePath, path),\n \"not-empty-field\": isValidNode(node) || isSaving,\n \"empty-field\": !isValidNode(node) && !isSaving,\n },\n \"content-item\",\n ),\n title: node.text,\n buttons: this.itemButtons(path),\n })}\n />\n ) : null}\n {!isLoading && !loadError ? (\n \n \n {I18n.t(\"js.administration.navigation_items.edit.add_link\")}\n \n ) : null}\n
    \n
    \n {!isEmpty(activePath) ? (\n \n ) : null}\n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default NavigationManager;\n","import { DragSource, DropTarget } from \"react-dnd\";\nimport React, { Component, createRef } from \"react\";\nimport flow from \"lodash/flow\";\nimport classNames from \"classnames\";\n\nconst cardSource = {\n beginDrag(props) {\n return {\n id: props.id,\n index: props.index,\n };\n },\n};\n\nconst cardTarget = {\n hover(props, monitor, component) {\n const dragIndex = monitor.getItem().index;\n const hoverIndex = props.index;\n\n // Don't replace items with themselves\n if (dragIndex === hoverIndex) {\n return;\n }\n\n // Determine rectangle on screen\n const hoverBoundingRect =\n component.hoverRef.current.getBoundingClientRect();\n\n // Get vertical middle\n const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;\n\n // Determine mouse position\n const clientOffset = monitor.getClientOffset();\n\n // Get pixels to the top\n const hoverClientY = clientOffset.y - hoverBoundingRect.top;\n\n // Only perform the move when the mouse has crossed half of the items height\n // When dragging downwards, only move when the cursor is below 50%\n // When dragging upwards, only move when the cursor is above 50%\n\n // Dragging downwards\n if (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) {\n return;\n }\n\n // Dragging upwards\n if (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) {\n return;\n }\n\n props.moveCard(dragIndex, hoverIndex);\n monitor.getItem().index = hoverIndex;\n },\n};\n\ninterface CardTypes {\n connectDragSource(...args: unknown[]): unknown;\n connectDropTarget(...args: unknown[]): unknown;\n index: number;\n isDragging: boolean;\n id: string;\n text: string;\n customBackgroundColor?: string;\n moveCard(...args: unknown[]): unknown;\n}\n\nclass Card extends Component {\n hoverRef: React.RefObject;\n\n constructor(props: CardTypes) {\n super(props);\n this.hoverRef = createRef();\n }\n\n render() {\n const {\n text,\n isDragging,\n customBackgroundColor,\n connectDragSource,\n connectDropTarget,\n } = this.props;\n\n return connectDragSource(\n connectDropTarget(\n \n \n \n {text}\n \n ,\n ),\n ) as React.ReactNode;\n }\n}\n\nexport default flow([\n DragSource(\"card\", cardSource, (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging(),\n })),\n DropTarget(\"card\", cardTarget, (connect) => ({\n connectDropTarget: connect.dropTarget(),\n })),\n])(Card);\n","import React, { useState } from \"react\";\nimport { DragDropContext } from \"react-dnd\";\nimport { useSelector } from \"react-redux\";\nimport HTML5Backend from \"react-dnd-html5-backend\";\nimport { pick, sortBy } from \"lodash\";\n\nimport Flash from \"../shared/Flash\";\nimport PageTitle from \"../layout/PageTitle\";\nimport Card from \"./groupCategorySorter/Card\";\nimport \"./groupCategorySorter.css\";\nimport { State } from \"../../@types\";\n\nfunction GroupCategorySorter() {\n const groupCategories = useSelector((state: State) =>\n state.network.group_categories.map((model) =>\n pick(model, \"plural_name\", \"id\", \"color\", \"order\", \"slug\"),\n ),\n );\n const [state, setState] = useState({\n cards: sortBy(groupCategories, \"order\"),\n isSaving: false,\n saveSuccess: false,\n saveError: false,\n });\n\n async function sendData() {\n setState((curr) => ({\n ...curr,\n isSaving: true,\n saveError: false,\n saveSuccess: false,\n }));\n\n const response = await fetch(\"/administration/group-categories/order\", {\n method: \"PUT\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n body: JSON.stringify({\n order: state.cards.map((x) => x.slug),\n }),\n });\n\n response.status == 204\n ? setState((curr) => ({ ...curr, isSaving: false, saveSuccess: true }))\n : setState((curr) => ({ ...curr, isSaving: false, saveError: true }));\n }\n\n function moveCard(dragIndex, hoverIndex) {\n const dragCard = state.cards[dragIndex];\n const newCards = [...state.cards];\n newCards.splice(dragIndex, 1);\n newCards.splice(hoverIndex, 0, dragCard);\n setState((curr) => ({ ...curr, cards: newCards }));\n }\n\n return (\n
    \n \n\n
    \n {\n e.preventDefault();\n window.history.back();\n }}\n >\n \n \n \n {I18n.t(\"js.administration.group_manager.new_category\")}\n \n
    \n\n {state.saveSuccess ? (\n \n {I18n.t(\n \"js.administration.group_manager.categories_order_edit.success\",\n )}\n \n ) : null}\n {state.saveError ? (\n \n {I18n.t(\n \"js.administration.group_manager.categories_order_edit.error\",\n )}\n \n ) : null}\n
    \n

    \n {I18n.t(\"js.administration.group_manager.categories_order_edit.help\")}\n

    \n
    \n
      \n {state.cards.map((category, i) => (\n \n ))}\n
    \n
    \n
    \n\n
    \n \n {I18n.t(\"js.cancel\")}\n \n \n {I18n.t(\"js.administration.group_manager.categories_order_edit.save\")}\n \n
    \n
    \n );\n}\n\n// getting the data from the Backbone Model because Card colors\n// do not get directly saved to the store, when editing/creating a category\n// store alternative : groupCategories: state.network.group_categories\nexport default DragDropContext(HTML5Backend)(GroupCategorySorter);\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, { 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 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 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 {\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 React from \"react\";\nimport { useStore, useSelector } from \"react-redux\";\nimport { get } from \"lodash\";\nimport MembershipForm from \"components/memberships/MembershipForm\";\nimport persistItem from \"helpers/items/persistItem\";\nimport { selectNetworkId } from \"selectors/environment\";\nimport ControlGroup from \"../shared/fields/ControlGroup\";\nimport SimpleInput from \"components/appCreator/items/form/SimpleInput\";\nimport { useParams } from \"helpers/tixxt-router\";\nimport { useMembershipProfile } from \"./api\";\nimport { useLoadApp } from \"components/appCreator/api\";\nimport { useMutation } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\n\ntype MemberEditFieldsProps = {\n membershipId?: string;\n};\n\nfunction MemberEditFields({ membershipId }: MemberEditFieldsProps) {\n const { data: membership, isLoading: loading } =\n useMembershipProfile(membershipId);\n\n return (\n \n {loading ? (\n \n ) : (\n \n )}\n \n );\n}\n\nfunction MembershipEdit() {\n const { membershipId } = useParams();\n const networkId = useSelector(selectNetworkId);\n const externalAppId = `profile:${networkId}`;\n const externalItemId = membershipId;\n const store = useStore();\n const { data: app } = useLoadApp({\n appId: undefined,\n externalAppId,\n });\n\n const { mutate: updateMembership } = useMutation(\n ({ membershipId }: { membershipId?: string }) =>\n fetchApi(`/administration/members/${membershipId}`, {\n method: \"PUT\",\n }),\n {\n onSuccess: () => {\n location.replace(`/administration/members`);\n toastr.success(I18n.t(\"js.saving_successful\"));\n },\n onError: () => {\n toastr.error(I18n.t(\"js.saving_failure\"));\n },\n },\n );\n\n const onSubmit = async (values) => {\n await persistItem(app, store.dispatch, {\n externalAppId,\n externalItemId,\n values,\n });\n\n updateMembership({ membershipId });\n };\n\n return (\n }\n title={I18n.t(\"js.administration.members.edit.page_title\")}\n />\n );\n}\n\nexport default MembershipEdit;\n","import React, { Fragment } from \"react\";\nimport { useStore, useSelector } from \"react-redux\";\nimport { Field, formValues } from \"redux-form\";\nimport { selectNetworkId } from \"selectors/environment\";\nimport persistItem from \"helpers/items/persistItem\";\nimport MembershipForm from \"components/memberships/MembershipForm\";\nimport ControlGroup from \"../shared/fields/ControlGroup\";\nimport Hint from \"../shared/fields/Hint\";\nimport EmailField from \"../appCreator/properties/edit/EmailField\";\nimport CheckboxField from \"../shared/fields/CheckboxField\";\nimport { useLoadApp } from \"components/appCreator/api\";\nimport { useMutation } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\n\nconst MemberCreateFields = formValues(\"send_welcome_mail\")((props) => {\n const { send_welcome_mail } = props as React.PropsWithChildren<\n { send_welcome_mail?: boolean } & string\n >;\n return (\n \n \n\n \n \n \n\n \n \n \n \n\n {!send_welcome_mail ? (\n \n \n \n ) : null}\n
    \n
    \n );\n}) as React.ComponentClass;\n\nfunction MembershipNew() {\n const networkId = useSelector(selectNetworkId);\n const externalAppId = `profile:${networkId}`;\n const store = useStore();\n const { data: app } = useLoadApp({\n appId: undefined,\n externalAppId,\n });\n const { mutate: createMembership } = useMutation(\n ({\n body,\n }: {\n body: {\n user: {\n email: string;\n password: string;\n send_welcome_mail: boolean;\n profile_id: string;\n };\n };\n }) =>\n fetchApi(\"/administration/members\", {\n method: \"POST\",\n body,\n }),\n {\n onSuccess: () => {\n location.replace(`/administration/members`);\n toastr.success(I18n.t(\"js.saving_successful\"));\n },\n onError: () => {\n toastr.error(I18n.t(\"js.saving_failure\"));\n },\n },\n );\n\n const onSubmit = async (values) => {\n const { email, password, send_welcome_mail, ...profile } = values;\n const { id: itemId } = await persistItem(app, store.dispatch, {\n externalAppId,\n values: profile,\n });\n\n return createMembership({\n body: {\n user: {\n email,\n password,\n send_welcome_mail,\n profile_id: itemId,\n },\n },\n });\n };\n\n return (\n }\n initialValues={{ send_welcome_mail: true }}\n />\n );\n}\n\nexport default MembershipNew;\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport { change } from \"redux-form\";\nimport ReduxForm from \"components/shared/reduxForm\";\nimport TextField from \"../../shared/fields/TextField\";\nimport MarkdownEditorAdapter from \"../../shared/markdownEditor/MarkdownEditorAdapter\";\nimport ControlGroup from \"../../shared/fields/ControlGroup\";\nimport { Field } from \"redux-form\";\nimport { replace } from \"lodash\";\n\ninterface LegalTextFormTypes {\n onSubmit(...args: unknown[]): unknown;\n\n initialValues?: Record;\n name?: string;\n statement?: string;\n handle?: string;\n isEditing?: boolean;\n\n updateField?(...args: unknown[]): unknown;\n}\n\nfunction LegalTextForm({\n onSubmit,\n initialValues,\n isEditing,\n updateField,\n}: LegalTextFormTypes) {\n return (\n \n \n \n \n \n \n \n \n );\n}\n\nexport default connect(null, {\n updateField: (_, data) =>\n change(\n \"editLegalText\",\n \"handle\",\n replace(data, /[^a-zA-Z0-9\\- ]/g, \"\")\n .replace(/ +/g, \"-\")\n .toLowerCase(),\n ),\n})(LegalTextForm);\n","import React from \"react\";\nimport { isEmpty, get } from \"lodash\";\nimport LegalTextForm from \"components/administration/legalTexts/LegalTextForm\";\nimport { useUpdateLegalText, useLegalText } from \"./api\";\nimport PageTitle from \"../../layout/PageTitle\";\nimport { useNavigate, useParams } from \"helpers/tixxt-router\";\n\nfunction LegalTextEdit() {\n const { legalTextId } = useParams();\n const navigate = useNavigate();\n const { isLoading: loading, data: legalText } = useLegalText(legalTextId);\n const { mutate: updateLegalText } = useUpdateLegalText({\n onSuccess: () => {\n navigate(`/administration/legal_texts`);\n navigate(0);\n toastr.success(I18n.t(\"js.saving_successful\"));\n },\n onError: () => {\n toastr.error(I18n.t(\"js.saving_failure\"));\n },\n });\n\n return (\n <>\n \n
    \n {\n e.preventDefault();\n navigate(`/administration/legal_texts`);\n }}\n >\n \n \n
    \n
    \n
    \n {loading || isEmpty(legalText) ? (\n
    \n {I18n.t(\"js.loading\")}\n
    \n ) : (\n <>\n \n updateLegalText(values)}\n isEditing\n />\n \n )}\n
    \n
    \n \n );\n}\n\nexport default LegalTextEdit;\n","import React from \"react\";\nimport { useNavigate } from \"helpers/tixxt-router\";\n\nimport LegalTextForm from \"components/administration/legalTexts/LegalTextForm\";\nimport { useCreateLegalText } from \"./api\";\nimport PageTitle from \"../../layout/PageTitle\";\n\nfunction LegalTextNew() {\n const navigate = useNavigate();\n const { mutate: createLegalText } = useCreateLegalText({\n onSuccess: () => {\n navigate(`/administration/legal_texts`);\n navigate(0);\n toastr.success(I18n.t(\"js.saving_successful\"));\n },\n onError: () => {\n toastr.error(I18n.t(\"js.saving_failure\"));\n },\n });\n\n return (\n <>\n \n
    \n {\n e.preventDefault();\n navigate(`/administration/legal_texts`);\n }}\n >\n \n \n
    \n
    \n
    \n createLegalText(values)}\n isEditing={false}\n />\n
    \n
    \n \n );\n}\n\nexport default LegalTextNew;\n","import React from \"react\";\nimport moment from \"moment-timezone\";\nimport { get } from \"lodash\";\nimport classnames from \"classnames\";\n\ninterface LegalTextVersionTypes {\n onClick?(...args: unknown[]): unknown;\n\n isOpened?: boolean;\n isCurrent?: boolean;\n version?: {\n created_at?: string;\n text?: string;\n };\n}\n\nfunction LegalTextVersion({\n version,\n isCurrent,\n isOpened,\n onClick,\n}: LegalTextVersionTypes) {\n return (\n \n \n );\n}\n\nexport default LegalTextVersion;\n","import React, { Fragment, useState } from \"react\";\nimport { isEmpty, map, get } from \"lodash\";\nimport { useParams } from \"helpers/tixxt-router\";\n\nimport PageTitle from \"../../layout/PageTitle\";\nimport LegalTextVersion from \"./LegalTextVersion\";\nimport { useLegalText } from \"./api\";\n\nfunction LegalTextVersions() {\n const { legalTextId } = useParams();\n\n const { isLoading: loading, data: legalText } = useLegalText(legalTextId);\n\n const [openedText, setOpenedText] = useState(0);\n\n return (\n \n \n
    \n {\n e.preventDefault();\n Backbone.history.navigate(`/administration/legal_texts`, {\n trigger: true,\n });\n }}\n >\n \n \n
    \n {loading || isEmpty(legalText) ? (\n
    \n {I18n.t(\"js.loading\")}\n
    \n ) : (\n \n
    \n {map(get(legalText, \"versions\"), (version, index: number) => (\n {\n e.preventDefault();\n setOpenedText(index);\n }}\n />\n ))}\n
    \n
    \n )}\n
    \n );\n}\n\nexport default LegalTextVersions;\n","import { createApiAction } from \"helpers/api\";\n\nexport const updateAppNavigation = createApiAction({\n method: \"PUT\",\n endpoint: () => \"/administration/app_navigation\",\n baseType: \"ADMINISTRATION/APP_NAVIGATION/UPDATE\",\n});\n","import { useQuery, useMutation } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\n\nimport {\n AppNavigationItemsResponse,\n Item,\n Pages,\n} from \"../../@types/appNavigation\";\nimport { updateAppNavigation } from \"actions/administration/appNavigation\";\nimport { useDispatch } from \"react-redux\";\n\nexport function useAppNavigationItems() {\n return useQuery(\n [\"appNavigationItems\"],\n () => fetchApi(\"/administration/app_navigation.json\"),\n );\n}\n\nexport function usePages() {\n return useQuery([\"pages\"], () =>\n fetchApi(\"/administration/pages.json\"),\n );\n}\n\nexport function useUpdateAppNavigation() {\n const dispatch = useDispatch();\n const dispatchUpdateAppNavigation: (meta) => Promise = (meta: {\n body: { items: Item[] };\n }) => dispatch(updateAppNavigation(meta));\n\n return useMutation(dispatchUpdateAppNavigation, {\n onSuccess: (data) => {\n if (data.error) {\n toastr.error(I18n.t(\"js.saving_failure\"));\n } else {\n toastr.success(I18n.t(\"js.saving_successful\"));\n }\n },\n });\n}\n\nexport { useActivitystreams, type Activitystream } from \"api/activitystreams\";\n","import React, { useEffect, useState } from \"react\";\nimport { find, map } from \"lodash\";\nimport { Item } from \"../../../../../@types/appNavigation\";\n\ntype Props = {\n unusedDefaults: Item[];\n onChange: (item: Item) => void;\n changedToDefault?: boolean;\n} & Item;\n\nfunction Default({\n unusedDefaults,\n onChange,\n changedToDefault = false,\n ...item\n}: Props) {\n const defaults =\n item && item?.isDefault ? [item, ...unusedDefaults] : unusedDefaults;\n const [selected, select] = useState(\n item?.isDefault && !changedToDefault ? item : defaults[0],\n );\n\n useEffect(() => {\n selected && onChange(selected);\n }, []);\n\n return (\n {\n const item = find(defaults, { id: e.target.value });\n\n if (item) {\n select(item);\n onChange(item);\n }\n }}\n value={selected?.id}\n >\n {map(defaults, (item: Item) => (\n \n ))}\n \n );\n}\n\nexport default Default;\n","import React, { useState, useEffect } from \"react\";\nimport { LinkOptions } from \"../../../../../@types/appNavigation\";\nimport classNames from \"classnames\";\n\ntype Props = {\n options: LinkOptions;\n onChange: (props: { options: LinkOptions }) => void;\n};\n\nfunction Link({ options, onChange }: Props) {\n const [openIn, setOpenIn] = useState<\"browser\" | \"webview\">(\n options?.open_in || \"webview\",\n );\n const [link, setLink] = useState(options?.url || \"\");\n const [isInvalidUrl, setIsInvalidUrl] = useState(false);\n const [openInDisabled, setOpenInDisabled] = useState(false);\n\n useEffect(() => {\n onChange({ options: { url: link, open_in: openIn } });\n }, [openIn, link]);\n\n function onLinkChange(value: string) {\n setLink(value);\n\n try {\n const url = new URL(value);\n\n setIsInvalidUrl(false);\n\n if (url.host === location.host) {\n setOpenInDisabled(true);\n setOpenIn(\"webview\");\n } else setOpenInDisabled(false);\n } catch (error) {\n setIsInvalidUrl(true);\n }\n }\n\n return (\n <>\n \n onLinkChange(e.target.value)}\n />\n {isInvalidUrl && (\n
    \n {I18n.t(\n \"js.administration.app_navigation_items.edit.link_invalid_hint\",\n )}\n
    \n )}\n \n setOpenIn(e.target.checked ? \"browser\" : \"webview\")}\n disabled={openInDisabled || isInvalidUrl}\n />\n {I18n.t(\n \"js.administration.app_navigation_items.edit.link_open_in_browser\",\n )}\n \n {openInDisabled && !isInvalidUrl && (\n
    \n {I18n.t(\n \"js.administration.app_navigation_items.edit.link_intern_hint\",\n )}\n
    \n )}\n \n );\n}\n\nexport default Link;\n","// extracted by mini-css-extract-plugin\nexport default {\"iconSelectionContainer\":\"jMVuPyzwR8w63yAABSoQ\",\"iconButton\":\"fv5lxkjnT8wfDy39Co0P\",\"active\":\"YKciGnDIOIhCjBEhI24K\",\"icon\":\"cbCewtlQBVX4dgMFOsdQ\"};","import React, { useEffect, useState } from \"react\";\nimport classnames from \"classnames\";\nimport { map } from \"lodash\";\n\nimport styles from \"./iconSelection.module.css\";\n\nexport const ICONS = {\n globe: \"fa fa-globe\",\n \"envelope-o\": \"fa-regular fa-envelope\",\n \"comments-o\": \"fa-regular fa-comments\",\n calendar: \"fa fa-calendar\",\n \"folder-open-o\": \"fa-regular fa-folder-open\",\n \"list-alt\": \"fa fa-list-alt\",\n \"file-o\": \"fa-regular fa-file\",\n cog: \"fa fa-cog\",\n link: \"fa fa-link\",\n \"external-link\": \"fa fa-external-link\",\n \"user-circle-o\": \"fa-regular fa-user-circle\",\n users: \"fa fa-users\",\n \"folder-o\": \"fa-regular fa-folder\",\n \"file-text-o\": \"fa-regular fa-file-text\",\n columns: \"fa fa-columns\",\n paperclip: \"fa fa-paperclip\",\n book: \"fa fa-book\",\n bullhorn: \"fa fa-bullhorn\",\n certificate: \"fa fa-certificate\",\n \"bookmark-o\": \"fa-regular fa-bookmark\",\n flag: \"fa fa-flag\",\n \"handshake-o\": \"fa-regular fa-handshake\",\n};\n\ntype Props = {\n icon: string;\n changeIcon: (icon: string) => void;\n disabled: boolean;\n};\n\nfunction IconSelection({ icon, changeIcon, disabled }: Props) {\n const [selectedIcon, selectIcon] = useState(icon);\n\n // update icon if its changed from e.g. changing the link type\n useEffect(() => {\n selectIcon(icon);\n }, [icon]);\n\n return (\n <>\n \n
    \n {map(ICONS, (iconClass, iconName) => (\n {\n e.preventDefault();\n selectIcon(iconName);\n changeIcon(iconName);\n }}\n key={iconName}\n >\n \n \n ))}\n
    \n \n );\n}\n\nexport default IconSelection;\n","import React, { useEffect, useState } from \"react\";\nimport { map, isEmpty } from \"lodash\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { usePages } from \"../../../../hooks/administration/appNavigation\";\n\nconst OPTIONS = {\n link: {\n label: \"js.administration.navigation_items.link.option_label\",\n type: \"link\",\n icon: \"link\",\n },\n activitystream: {\n label: \"js.administration.app_navigation_items.edit.activity_stream\",\n type: \"activitystream\",\n icon: \"globe\",\n },\n page: {\n label: \"js.administration.app_navigation_items.edit.page\",\n type: \"page\",\n icon: \"file-o\",\n },\n default: {\n label: \"js.administration.app_navigation_items.edit.default_module\",\n type: \"default\",\n icon: \"globe\",\n },\n};\n\ntype Props = {\n isDefault: boolean;\n type: string;\n changeType: (props: {\n id: string;\n type: string;\n icon: string;\n isDefault: boolean;\n changedToDefault: boolean;\n }) => void;\n};\n\nfunction TypeSelector({ isDefault, type, changeType }: Props) {\n const [selectedOption, selectOption] = useState(isDefault ? \"default\" : type);\n const { data: pages } = usePages();\n\n useEffect(() => {\n selectOption(isDefault ? \"default\" : type);\n }, [type]);\n\n return (\n <>\n \n {\n const newType = e.target.value;\n const newItem = {\n id: uuidv4(),\n type: newType,\n icon: OPTIONS[newType].icon,\n isDefault: false,\n };\n\n selectOption(newType);\n changeType({\n ...newItem,\n changedToDefault: type !== \"default\" && newType === \"default\",\n });\n }}\n value={OPTIONS[selectedOption]?.type}\n >\n {map(OPTIONS, (option) => {\n if (option.type === \"page\" && isEmpty(pages)) return null;\n return (\n \n );\n })}\n \n \n );\n}\n\nexport default TypeSelector;\n","import React, { useEffect, useState } from \"react\";\n\nimport More from \"./form/types/More\";\nimport Default from \"./form/types/Default\";\nimport Link from \"./form/types/Link\";\nimport IconSelection from \"./IconSelection\";\nimport TypeSelector from \"./form/TypeSelector\";\nimport Page from \"./form/types/Page\";\nimport { Item } from \"../../../@types/appNavigation\";\nimport Activitystream from \"./form/types/Activitystream\";\nimport { TreeItem } from \"react-sortable-tree\";\n\ntype TypeComponentLookup = {\n [moduleName: string]: ((any) => JSX.Element) | undefined;\n};\nconst TYPE_LOOKUP: TypeComponentLookup = {\n more: More,\n files: Default,\n messages: Default,\n appointments: Default,\n pages: Default,\n activitystreams: Default,\n channels: Default,\n search: Default,\n directory: Default,\n settings: Default,\n link: Link,\n page: Page,\n activitystream: Activitystream,\n default: Default,\n};\n\ntype Props = {\n item: TreeItem & {\n changedToDefault?: boolean;\n type: any;\n options: { items: (TreeItem | Item)[] };\n };\n unusedDefaults: (TreeItem | Item)[];\n changeActiveNode: (item: TreeItem) => void;\n changeEntryPoint: (item: TreeItem, checked: boolean) => void;\n};\n\nfunction ItemForm({\n item,\n unusedDefaults,\n changeActiveNode,\n changeEntryPoint,\n}: Props) {\n const TypeForm = TYPE_LOOKUP[item.type] || Default;\n const [entryPoint, setEntryPoint] = useState(item?.isEntryPoint || false);\n\n useEffect(() => {\n setEntryPoint(item?.isEntryPoint || false);\n }, [item]);\n\n return item ? (\n
    \n
    \n {item.type != \"more\" && (\n {\n changeActiveNode({\n ...item,\n ...changedItem,\n });\n }}\n />\n )}\n changeActiveNode({ ...item, ...props })}\n />\n \n changeActiveNode({ ...item, label: e.target.value })}\n />\n {item?.isDefault && (\n

    \n {I18n.t(\"js.administration.app_navigation_items.edit.hint_no_edit\")}\n

    \n )}\n {!item?.isDefault && (\n changeActiveNode({ ...item, icon })}\n disabled={item.isDefault}\n />\n )}\n {item.type !== \"more\" && item.type !== \"link\" && (\n \n )}\n \n
    \n ) : (\n

    {I18n.t(\"js.administration.app_navigation_items.edit.hint\")}

    \n );\n}\n\nexport default ItemForm;\n","import { map } from \"lodash\";\nimport React from \"react\";\nimport { MoreOptions } from \"../../../../../@types/appNavigation\";\n\nfunction More({ options }: { options?: MoreOptions }) {\n return (\n
    \n

    {I18n.t(\"js.administration.app_navigation_items.edit.more.label\")}

    \n
      \n {map(options?.items, (i) => (\n
    • {i.label}
    • \n ))}\n
    \n

    {I18n.t(\"js.administration.app_navigation_items.edit.more.hint\")}

    \n
    \n );\n}\n\nexport default More;\n","import React, { useEffect, useState } from \"react\";\nimport { find, isEmpty, map } from \"lodash\";\nimport { usePages } from \"../../../../../hooks/administration/appNavigation\";\nimport {\n Page as PageType,\n PageOptions,\n} from \"../../../../../@types/appNavigation\";\n\ntype Props = {\n options: PageOptions;\n onChange: (props: { label: string; options: PageOptions }) => void;\n};\n\nfunction Page({ options, onChange }: Props) {\n const { data: pages, isLoading } = usePages();\n const [selectedPage, selectPage] = useState(options?.page);\n\n useEffect(() => {\n if (pages && isEmpty(options?.page)) {\n onChange({\n label: pages[0].name,\n options: { page: pages[0] },\n });\n }\n }, [pages]);\n\n return (\n <>\n {isLoading ? (\n

    \n {\" \"}\n {I18n.t(\"js.administration.app_navigation_items.edit.loading_pages\")}\n

    \n ) : (\n {\n const page = find(pages, { slug: e.target.value });\n\n if (page) {\n selectPage(page);\n onChange({\n label: page.name,\n options: { page },\n });\n }\n }}\n value={selectedPage?.slug}\n >\n {map(pages, (page: PageType) => (\n \n ))}\n \n )}\n

    \n {I18n.t(\"js.administration.app_navigation_items.edit.hint_group_page\")}\n

    \n \n );\n}\n\nexport default Page;\n","import React, { useEffect, useState } from \"react\";\nimport { filter, find, isEmpty, map } from \"lodash\";\n\nimport {\n useActivitystreams,\n type Activitystream as ActivitystreamType,\n} from \"../../../../../hooks/administration/appNavigation\";\n\ntype Props = {\n options: { activitystream: ActivitystreamType };\n onChange: (props: {\n label: string;\n options: { activitystream: ActivitystreamType };\n }) => void;\n};\n\nfunction Activitystream({ options, onChange }: Props) {\n const { data, isLoading } = useActivitystreams();\n const streams = filter(\n data,\n (stream: ActivitystreamType) => stream?.slug !== \"all\",\n );\n const [selectedStream, selectStream] = useState(\n options?.activitystream,\n );\n\n useEffect(() => {\n if (streams && isEmpty(options?.activitystream)) {\n onChange({\n label: streams[0]?.name,\n options: { activitystream: streams[0] },\n });\n }\n }, [data]);\n\n return (\n <>\n {isLoading ? (\n

    \n \n {I18n.t(\n \"js.administration.app_navigation_items.edit.loading_activitystreams\",\n )}\n

    \n ) : (\n {\n const activitystream = find(streams, {\n slug: e.target.value,\n });\n\n if (activitystream) {\n selectStream(activitystream);\n onChange({\n label: activitystream?.name,\n options: { activitystream },\n });\n }\n }}\n value={selectedStream?.slug}\n >\n {map(streams, (stream: ActivitystreamType) => (\n \n ))}\n \n )}\n

    \n Hinweis: Wird ein Activity Stream einer Gruppe als Startseite gesetzt,\n müssen alle Nutzer Mitglied dieser Gruppe sein, da sonst eine\n Fehlermeldung bei Aufruf der Startseite erscheint.\n

    \n \n );\n}\n\nexport default Activitystream;\n","import { useQuery } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\n\nexport type Activitystream = {\n category_name: string;\n slug: string;\n name: string;\n group_slug?: string;\n externally_visible?: boolean;\n meta?: boolean;\n can?: {\n create?: boolean;\n email_recommend_activity_internally?: boolean;\n email_recommend_activity_externally?: boolean;\n create_appointment_activity?: boolean;\n };\n};\n\n/*\n * This hook is currently not used in activitystreams/Userbar to deduplicate the /activitystreams.json request\n * that is issued from app/assets/javascripts/activitystreams/index.js.coffee:23 too\n */\nexport function useActivitystreams() {\n return useQuery(\n \"activitystreams\",\n () => fetchApi(\"/activitystreams.json\"),\n { staleTime: Infinity },\n );\n}\n","import React from \"react\";\nimport { Item } from \"../../../@types/appNavigation\";\nimport { ICONS } from \"components/administration/appNavigationManager/IconSelection\";\n\nfunction NodeTitle({ node }: { node: Item }) {\n return (\n
    \n {node.label}{\" \"}\n {node.isEntryPoint && }\n
    \n );\n}\n\nexport default NodeTitle;\n","import classNames from \"classnames\";\nimport {\n findIndex,\n isEmpty,\n isEqual,\n last,\n map,\n pullAllBy,\n pullAt,\n} from \"lodash\";\nimport React, { useEffect, useState } from \"react\";\nimport SortableTree, {\n changeNodeAtPath,\n getNodeAtPath,\n removeNodeAtPath,\n TreeItem,\n} from \"react-sortable-tree\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport { Item, MoreItem } from \"../../../@types/appNavigation\";\nimport {\n useAppNavigationItems,\n useUpdateAppNavigation,\n} from \"../../../hooks/administration/appNavigation\";\nimport PageTitle from \"../../layout/PageTitle\";\nimport \"../navigationManager.css\";\nimport ItemButton from \"../navigationManager/ItemButton\";\nimport ItemForm from \"./ItemForm\";\nimport NodeTitle from \"./NodeTitle\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSpinner } from \"@fortawesome/pro-regular-svg-icons\";\n\nfunction AppNavigationManager() {\n const { data, isLoading } = useAppNavigationItems();\n\n const [more, setMore] = useState({\n options: { items: [] },\n type: \"more\",\n });\n const [treeData, setTreeData] = useState<(TreeItem | Item)[]>([]);\n const [activePath, setActivePath] = useState<(number | string)[]>([]);\n const { mutate: updateItems, isLoading: isSaving } = useUpdateAppNavigation();\n\n useEffect(() => {\n if (!isEmpty(treeData)) return;\n if (!data || isEmpty(data)) return;\n\n setTreeData(data);\n\n const moreCandidate = last(data);\n if (moreCandidate?.type == \"more\") setMore(moreCandidate);\n }, [data]);\n\n function removeItemAt(\n _e: unknown,\n path: (string | number)[],\n node: TreeItem,\n ) {\n setActivePath([]);\n const newTreeData = removeNodeAtPath({\n treeData: treeData,\n path,\n getNodeKey,\n });\n\n if (node.isEntryPoint) {\n changeEntryPoint(node, false, newTreeData);\n } else {\n setTreeData(newTreeData);\n }\n\n moveItemToMore(node);\n }\n\n function changeActiveNode(newNode: TreeItem) {\n const activeNode = getActiveNode();\n\n if (activeNode?.id !== newNode.id) {\n setActivePath([newNode.id]);\n\n if (newNode.isDefault) {\n removeItemFromMore(newNode);\n }\n\n if (activeNode?.isDefault) {\n moveItemToMore(activeNode);\n }\n }\n\n const newTreeData = changeNodeAtPath({\n treeData,\n path: activePath,\n getNodeKey,\n newNode,\n });\n\n if (activeNode?.isEntryPoint && newNode.type === \"link\") {\n changeEntryPoint(activeNode, false, newTreeData);\n } else {\n // set entry point if none of the other items is\n if (\n findIndex(\n newTreeData,\n (data) => data.isEntryPoint && data.id !== newNode.id,\n ) === -1\n ) {\n changeEntryPoint(newNode, true, newTreeData);\n } else {\n setTreeData(newTreeData);\n }\n }\n }\n\n function moveItemToMore(item: TreeItem) {\n if (item?.isDefault) {\n const newMore = more;\n newMore.options.items.push({ ...item, isEntryPoint: false });\n\n setMore(newMore);\n }\n }\n\n function removeItemFromMore(item: TreeItem) {\n const newMore = more;\n\n pullAllBy(newMore.options.items, [{ id: item.id }], \"id\");\n\n setMore(newMore);\n }\n\n function addItem() {\n const data = treeData;\n const more = pullAt(data, [treeData.length - 1]);\n\n const newItem = {\n id: uuidv4(),\n label: I18n.t(\"js.administration.app_navigation_items.edit.new_link\"),\n type: \"link\",\n icon: \"link\",\n isEntryPoint: false,\n isDefault: false,\n options: { url: \"\" },\n };\n\n setTreeData([...data, newItem, ...more]);\n\n const path = [newItem.id];\n setActivePath(path);\n }\n\n function itemButtons(node: TreeItem, path: (number | string)[]) {\n const buttons: JSX.Element[] = [];\n\n if (node.type !== \"more\") {\n buttons.push(\n removeItemAt(e, path, node)}\n icon=\"fa-regular fa-trash\"\n buttonClass=\"btn-danger\"\n />,\n );\n }\n\n return buttons;\n }\n\n const getNodeKey = ({ node }: { node: TreeItem }) => node.id;\n\n function getActiveNode() {\n const node = getNodeAtPath({\n treeData: treeData,\n path: activePath,\n getNodeKey,\n });\n return node && node.treeIndex > -1 ? node.node : null;\n }\n\n function changeEntryPoint(\n item: TreeItem,\n checked: boolean,\n changedTreeData?: TreeItem[],\n ) {\n const newTreeData = map(changedTreeData || treeData, (data, index) => ({\n ...data,\n isEntryPoint:\n checked && item.id === data.id // set item as entry point if it is checked\n ? true\n : !checked &&\n index ===\n findIndex(\n changedTreeData || treeData,\n (data) =>\n data.type !== \"link\" &&\n data.type !== \"more\" &&\n data.id !== item.id,\n ) // set first item (not link or more) as entry point if item is unchecked\n ? true\n : false, // reset all others to false (to avoid more than one entry point)\n }));\n\n setTreeData(newTreeData);\n }\n\n function submit() {\n updateItems({ body: { items: treeData } });\n }\n\n const hasNoEntryPointItem =\n findIndex(treeData, { isEntryPoint: true }) === -1;\n\n const activeNode = getActiveNode();\n\n return (\n
    \n \n
    \n \n {I18n.t(\"js.administration.navigation_items.edit.save\")}\n \n
    \n {isLoading ? (\n

    \n \n {I18n.t(\"js.administration.app_navigation_items.loading\")}\n

    \n ) : (\n
    \n
    \n
    \n setTreeData(treeData)}\n getNodeKey={getNodeKey}\n isVirtualized={false}\n maxDepth={1}\n canDrag={({ node }) => node.type !== \"more\"}\n onMoveNode={(e) => setActivePath(e.path)}\n generateNodeProps={({ node, path }) => ({\n title: NodeTitle,\n key: node.type,\n onClick: () => setActivePath(path),\n buttons: itemButtons(node, path),\n className: classNames(\n {\n \"selected move-item\": isEqual(activePath, path),\n \"not-empty-field\": node.label || isSaving,\n \"empty-field\": !node.label && !isSaving,\n },\n \"content-item\",\n ),\n })}\n />\n \n \n {I18n.t(\"js.administration.navigation_items.edit.add_link\")}\n \n {hasNoEntryPointItem && (\n

    \n {I18n.t(\n \"js.administration.app_navigation_items.edit.hint_entry_point_needed\",\n )}\n

    \n )}\n {treeData.length < 5 && (\n

    \n {I18n.t(\n \"js.administration.app_navigation_items.edit.hint_five_navigation_items_needed\",\n )}\n

    \n )}\n
    \n
    \n {activeNode && (\n \n )}\n
    \n
    \n
    \n )}\n
    \n );\n}\n\nexport default AppNavigationManager;\n","import React from \"react\";\nimport { useParams } from \"helpers/tixxt-router\";\nimport { ContextPageTitle } from \"components/layout/PageTitle\";\nimport GroupNavigation from \"components/layout/GroupNavigation\";\nimport { useSelector } from \"react-redux\";\nimport { State } from \"../../@types\";\nimport MarkdownTranslation from \"components/shared/MarkdownTranslation\";\n\nexport default function GroupAdministrationMainPage() {\n const { groupSlug } = useParams();\n const group = useSelector((state: State) =>\n groupSlug ? state.groups.bySlug[groupSlug] : null,\n );\n\n return (\n <>\n \n \n {group?.hidden_main_group ? (\n \n ) : (\n \n )}\n \n );\n}\n","import React, { lazy, Suspense } from \"react\";\nimport { RouteObject, useParams } from \"helpers/tixxt-router\";\nimport NetworkSettings from \"./networkSettings\";\nimport NavigationManager from \"./NavigationManager\";\nimport GroupCategorySorter from \"./GroupCategorySorter\";\nimport MembershipEdit from \"./MembershipEdit\";\nimport MembershipNew from \"./MembershipNew\";\nimport LegalTextEdit from \"../administration/legalTexts/LegalTextEdit\";\nimport LegalTextIndex from \"../administration/legalTexts/LegalTextIndex\";\nimport LegalTextNew from \"../administration/legalTexts/LegalTextNew\";\nimport LegalTextVersions from \"../administration/legalTexts/LegalTextVersions\";\nimport ImprintEdit from \"../administration/imprints/ImprintEdit\";\nimport AppNavigationManager from \"./appNavigationManager\";\nimport { convertRoutes } from \"components/tixxt/BackboneFeature\";\nimport GroupAdministrationMainPage from \"components/administration/GroupAdministrationMainPage\";\n\nconst DesignsOverviewPage = lazy(\n () => import(\"./designManager/DesignsOverviewPage\"),\n);\nconst DesignsOverviewLightPage = lazy(\n () => import(\"./designManagerLight/DesignsOverviewLightPage\"),\n);\nconst DesignManagerPage = lazy(\n () => import(\"./designManager/DesignManagerPage\"),\n);\nconst DesignManagerLightPage = lazy(\n () => import(\"./designManagerLight/DesignManagerLightPage\"),\n);\n\nconst StatisticsPage = lazy(() => import(\"./statistics/StatisticsPage\"));\nconst TagsManagerPage = lazy(() => import(\"./tags/TagsManagerPage\"));\n\nfunction Params({ children }) {\n const params = useParams();\n return children(params);\n}\n\nconst backboneRoutes: RouteObject[] = convertRoutes({\n feature: \"Administration\",\n featureRoutes: {\n \"group-categories/:group_category_id/administration/groups\":\n \"editSectionGroups\",\n \"administration/groups\": \"editGroups\",\n \"(groups/:group_slug/)administration/members\": \"editMembers\",\n \"administration/members/:id/group-memberships\":\n \"editMemberGroupMemberships\",\n \"(groups/:group_slug/)administration/membership_roles\":\n \"manageMembershipRoles\",\n \"(groups/:group_slug/)administration/consumers\": \"consumers\",\n \"administration/consumers/new\": \"newConsumer\",\n \"administration/consumers/:id/edit\": \"editConsumer\",\n \"administration/consumers/:id/group-memberships\":\n \"editConsumerGroupMemberships\",\n \"administration/group-categories/new\": \"newGroupCategory\",\n \"administration/group-categories/:id/edit\": \"editGroupCategory\",\n \"administration/abbreviations\": \"abbreviations\",\n \"administration/abbreviations/new\": \"newAbbreviation\",\n \"administration/abbreviations/:id/edit\": \"editAbbreviation\",\n \"(groups/:group_slug/)administration/widgetbars\": \"widgetbarIndex\",\n \"(groups/:group_slug/)administration/widgetbars/:slug/edit\":\n \"widgetbarEdit\",\n \"groups/:group_slug/administration/organisation\": \"organisationMain\",\n \"groups/:group_slug/administration/organisation/group-memberships\":\n \"organisationGroups\",\n \"groups/:group_slug/administration/organisation/group-memberships/:id\":\n \"organisationGroupMemberships\",\n \"groups/:group_slug/administration/organisation/members\":\n \"organisationMembers\",\n \"groups/:group_slug/administration/organisation/members/new\":\n \"newOrganisationMember\",\n \"groups/:group_slug/administration/organisation/edit\":\n \"organisationProfile\",\n \"groups/:group_slug/administration/organisation/feedback\":\n \"organisationFeedback\",\n \"administration/industrials\": \"industrials\",\n \"administration/industrials/new\": \"newIndustrial\",\n \"administration/industrials/:id/edit\": \"editIndustrial\",\n },\n});\n\nconst reactRoutes: RouteObject[] = [\n { path: \"/administration/settings/edit\", element: },\n {\n path: \"/administration/navigation/edit\",\n element: ,\n },\n {\n path: \"/administration/app_navigation/edit\",\n element: ,\n },\n {\n path: \"/administration/group-categories-order/edit\",\n element: ,\n },\n {\n path: \"/administration/members/:membershipId/edit\",\n element: ,\n },\n { path: \"/administration/members/new\", element: },\n { path: \"/administration/legal_texts\", element: },\n {\n path: \"/administration/legal_texts/:legalTextId/edit\",\n element: ,\n },\n { path: \"/administration/legal_texts/new\", element: },\n {\n path: \"/administration/legal_texts/:legalTextId\",\n element: ,\n },\n { path: \"/administration/imprint/edit\", element: },\n {\n path: \"/administration/statistics\",\n element: (\n \n \n \n ),\n forceTurbo: true, // for user tracking #3324\n },\n {\n path: \"/administration/designs\",\n element: (\n \n \n \n ),\n },\n {\n path: \"/administration/designs/:id/edit\",\n element: (\n \n \n \n ),\n },\n {\n path: \"/group-categories/:groupCategoryId/administration/designs\",\n element: (\n \n \n \n ),\n },\n {\n path: \"/group-categories/:groupCategoryId/administration/designs/:designId/edit\",\n element: (\n \n \n \n ),\n },\n {\n path: \"/administration/tags\",\n element: (\n \n \n \n ),\n },\n {\n path: \"/groups/:groupSlug/administration\",\n element: ,\n },\n {\n path: \"/groups/:groupSlug/administration/designs\",\n element: (\n \n \n \n ),\n },\n {\n path: \"/groups/:groupSlug/administration/designs/:designId/edit\",\n element: (\n \n \n \n ),\n },\n {\n path: \"/groups/:groupSlug/administration/navigation/edit\",\n element: (\n \n {({ groupSlug }) => }\n \n ),\n },\n {\n path: \"/groups/:groupSlug/administration/statistics\",\n element: (\n \n \n \n ),\n },\n];\nexport default backboneRoutes.concat(reactRoutes);\n","import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faCirclePlus,\n faList,\n faLocationDot,\n} from \"@fortawesome/pro-regular-svg-icons\";\nimport React from \"react\";\nimport DirectoryToolbar from \"components/directory/DirectoryToolbar\";\nimport { Filter } from \"components/directory/types\";\n\ntype ToolBarArgs = {\n isLoading: boolean;\n filter: Filter;\n};\n\nexport default function ToolBar({ isLoading, filter }: ToolBarArgs) {\n return (\n \n {Preload.current_member?.can.invite_internal ||\n (Preload.current_member?.can.invite_external && (\n \n \n {I18n.t(\"js.directory.headline_tools.invite_members\")}\n \n ))}\n {Preload.current_network.config.maps.enabled && (\n
    \n \n \n \n \n \n \n
    \n )}\n \n }\n />\n );\n}\n","import React from \"react\";\nimport DirectoryRow from \"components/directory/DirectoryRow\";\nimport { faUser, faUserCircle } from \"@fortawesome/pro-regular-svg-icons\";\nimport { map } from \"lodash\";\nimport { DirectoryMembership } from \"components/directory/types\";\nimport DirectoryRowBadge from \"components/directory/DirectoryRowBadge\";\n\nexport default function MemberRow({\n id,\n displayName,\n images,\n profile,\n is_external,\n is_network_admin,\n roles,\n}: DirectoryMembership) {\n return (\n \n {is_network_admin && (\n \n )}\n {is_external && (\n \n )}\n {map(roles, (role) => (\n \n ))}\n \n }\n >\n {map(\n profile,\n (value, field) =>\n value && (\n

    \n {value}\n

    \n ),\n )}\n \n );\n}\n","import React from \"react\";\nimport ToolBar from \"components/directory/members/ToolBar\";\nimport { useQuery } from \"react-query\";\nimport { stringify } from \"query-string\";\nimport { isEmpty, map, toNumber } from \"lodash\";\nimport DirectoryPagination from \"components/directory/DirectoryPagination\";\nimport MemberRow from \"components/directory/members/MemberRow\";\nimport { DirectoryMembership, Pagination } from \"components/directory/types\";\nimport useDirectoryFilter from \"../hooks/useDirectoryFilter\";\n\ntype MemberData = {\n consumer_count: number;\n entries: DirectoryMembership[];\n pagination: Pagination;\n};\n\nexport default function MemberListView() {\n const { filter, currentPage } = useDirectoryFilter();\n\n const { data, isLoading } = useQuery(\n `/directory/members.json?${stringify(filter)}`,\n );\n\n return (\n
    \n \n \n {data && !isEmpty(data?.entries)\n ? map(data.entries, (member) => (\n \n ))\n : I18n.t(\"js.directory.empty_collection\")}\n \n
    \n );\n}\n","import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCirclePlus } from \"@fortawesome/pro-regular-svg-icons\";\nimport React from \"react\";\nimport DirectoryToolbar from \"components/directory/DirectoryToolbar\";\nimport { Filter } from \"components/directory/types\";\nimport ReactSelect from \"react-select\";\nimport Label from \"components/shared/form/Label\";\nimport { setSearchParam } from \"helpers/tixxt-router\";\nimport { find, toString } from \"lodash\";\n\ntype SelectOption = {\n label: string;\n value: string;\n};\n\ntype ToolBarArgs = {\n isLoading: boolean;\n filter: Filter;\n categoryName: string;\n categorySlug: string;\n categoryPluralName: string;\n};\n\nexport default function ToolBar({\n isLoading,\n filter,\n categoryName,\n categorySlug,\n categoryPluralName,\n}: ToolBarArgs) {\n const selectOptions: SelectOption[] = [\n {\n label: I18n.t(\"js.directory.search.group.fields.name\"),\n value: \"name\",\n },\n {\n label: I18n.t(\"js.directory.search.group.fields.name_and_profile\"),\n value: \"name_and_profile\",\n },\n ];\n\n const defaultValue: SelectOption = filter.search_in\n ? find(selectOptions, { value: toString(filter.search_in) }) ||\n selectOptions[0]\n : selectOptions[0];\n\n return (\n \n \n \n {I18n.t(\"js.directory.headline_tools.create_group\", {\n category_group_name: categoryName,\n })}\n \n \n }\n >\n
    \n
    \n \n
    \n
    \n
    \n
    \n \n );\n}\n","import { fetchApi } from \"helpers/reactQueryApi\";\nimport { useMutation, UseMutationOptions } from \"react-query\";\n\nexport const fetchGroup = async (groupSlug) => {\n return await fetchApi(`/api/v1/groups/${groupSlug}`);\n};\n\nexport const fetchGroupDefaults = async (groupCategorySlug) => {\n return await fetchApi(\n `/api/v1/groups/new?group_category_slug=${groupCategorySlug}`,\n );\n};\nexport const deleteGroup = async ({ slug }) => {\n const response = await fetchApi(`/groups/${slug}`, {\n method: \"DELETE\",\n });\n\n return response;\n};\n\nexport const archiveGroup = async ({ slug, archived }) => {\n const response = await fetchApi(`/groups/${slug}/archive`, {\n method: archived ? \"DELETE\" : \"PUT\",\n });\n\n return response;\n};\n\nexport const createGroup = async ({ body }) => {\n const response = await fetchApi(\"/groups\", {\n method: \"POST\",\n body,\n });\n\n return response;\n};\n\nexport const updateGroup = async ({ groupSlug, body }) => {\n const response = await fetchApi(`/groups/${groupSlug}`, {\n method: \"PUT\",\n body,\n });\n\n return response;\n};\n\nexport function useChangeGroupSubscription(\n options?: Omit<\n UseMutationOptions<\n any,\n unknown,\n { id: string; action: \"subscribe\" | \"unsubscribe\" },\n unknown\n >,\n \"mutationFn\"\n >,\n) {\n return useMutation(\n ({ id, action }: { id: string; action: \"subscribe\" | \"unsubscribe\" }) =>\n fetchApi(`/api/v1/groups/${id}/subscribe`, {\n method: action === \"subscribe\" ? \"POST\" : \"DELETE\",\n }),\n options,\n );\n}\n\nexport function useChangeMembershipGroupStatus(\n options?: Omit<\n UseMutationOptions<\n any,\n unknown,\n { id: string; action: \"join\" | \"leave\" },\n unknown\n >,\n \"mutationFn\"\n >,\n) {\n return useMutation(\n ({ id, action }: { id: string; action: \"join\" | \"leave\" }) =>\n fetchApi(`/api/v1/groups/${id}/join`, {\n method: action === \"join\" ? \"POST\" : \"DELETE\",\n }),\n options,\n );\n}\n","import React, { useState } from \"react\";\nimport DirectoryRow from \"components/directory/DirectoryRow\";\nimport {\n faArchive,\n faLock,\n faEyeSlash,\n faEye,\n faAdjust,\n faTimes,\n faRightFromBracket,\n faBellSlash,\n faBell,\n faCheck,\n faPlus,\n faUsers,\n} from \"@fortawesome/pro-regular-svg-icons\";\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\nimport { DirectoryGroup } from \"components/directory/types\";\nimport { useAcceptInvite } from \"components/invites/api\";\nimport { useNavigate } from \"helpers/tixxt-router\";\nimport { formatDateFromNow } from \"helpers/formatDate\";\nimport {\n useChangeGroupSubscription,\n useChangeMembershipGroupStatus,\n} from \"components/groups/api\";\nimport DirectoryActionButton from \"components/directory/DirectoryActionButton\";\n\nexport default function GroupRow({\n id,\n slug,\n name,\n profile_image,\n archived,\n access,\n externally_visible,\n member_count,\n activity_count,\n teaser,\n membership_status_of_current_member,\n can,\n i_haz_subscription,\n invite,\n}: DirectoryGroup) {\n const navigate = useNavigate();\n const [hasSubscribed, setHasSubscribed] = useState(i_haz_subscription);\n const [memberStatus, setMemberStatus] = useState(\n membership_status_of_current_member,\n );\n const titleIcons: { icon: IconProp; title: string }[] = [];\n\n if (archived)\n titleIcons.push({\n icon: faArchive,\n title: I18n.t(\"js.directory.group_row.archived\"),\n });\n if (access === \"closed\")\n titleIcons.push({\n icon: faLock,\n title: I18n.t(\"js.directory.group_row.closed\"),\n });\n if (access === \"hidden\")\n titleIcons.push({\n icon: faEyeSlash,\n title: I18n.t(\"js.directory.group_row.hidden\"),\n });\n if (externally_visible)\n titleIcons.push({\n icon: faEye,\n title: I18n.t(\"js.directory.group_row.externally_visible\"),\n });\n\n const { mutate: acceptInvite } = useAcceptInvite({\n onSuccess: () => {\n navigate(`/groups/${slug}`);\n },\n });\n\n const { mutate: changeGroupSubscription } = useChangeGroupSubscription({\n onSuccess: (_, variables) => {\n setHasSubscribed(variables.action === \"subscribe\");\n },\n });\n\n const { mutate: changeGroupMembership } = useChangeMembershipGroupStatus({\n onSuccess: (_, variables) => {\n if (variables.action === \"join\") {\n can.join && navigate(`/groups/${slug}/activitystreams/${slug}`);\n can.join_moderated && setMemberStatus(\"in_moderation\");\n } else {\n setMemberStatus(\"no_member\");\n toastr.success(\n I18n.t(\"js.directory.group_row.leave.successful\", {\n group_name: name,\n }),\n );\n }\n },\n });\n\n function getActions() {\n switch (memberStatus) {\n case \"in_moderation\":\n return (\n \n );\n case \"rejected\":\n return (\n \n );\n case \"member\":\n return (\n <>\n {can.leave && (\n {\n window.bridge?.confirm(\n I18n.t(\"js.directory.group_row.leave.confirmation\", {\n group_name: name,\n }),\n () => changeGroupMembership({ id, action: \"leave\" }),\n );\n }}\n />\n )}\n \n changeGroupSubscription({\n id,\n action: hasSubscribed ? \"unsubscribe\" : \"subscribe\",\n })\n }\n />\n \n );\n case \"invited\":\n return (\n acceptInvite({ inviteId: invite.id })}\n />\n );\n case \"no_member\":\n return (\n (can.join || can.join_moderated) && (\n changeGroupMembership({ id, action: \"join\" })}\n />\n )\n );\n default:\n return null;\n }\n }\n\n return (\n \n

    \n {I18n.t(\"js.directory.group_row.member_count\", { count: member_count })}\n {\", \"}\n {I18n.t(\"js.directory.group_row.activity\", { count: activity_count })}\n

    \n {membership_status_of_current_member === \"invited\" && (\n

    \n {I18n.t(\"js.directory.group_row.invited_by\", {\n invitor: invite.author.name,\n time_ago: formatDateFromNow(new Date(invite.created_at)),\n })}\n

    \n )}\n {teaser && (\n

    {teaser}

    \n )}\n \n );\n}\n","import React from \"react\";\nimport { useParams } from \"helpers/tixxt-router\";\nimport ToolBar from \"components/directory/groups/ToolBar\";\nimport { useQuery } from \"react-query\";\nimport { stringify } from \"query-string\";\nimport { find, isEmpty, map, toNumber } from \"lodash\";\nimport DirectoryPagination from \"components/directory/DirectoryPagination\";\nimport { DirectoryGroup, Pagination } from \"components/directory/types\";\nimport GroupRow from \"components/directory/groups/GroupRow\";\nimport useDirectoryFilter from \"../hooks/useDirectoryFilter\";\n\ntype GroupData = {\n entries: DirectoryGroup[];\n pagination: Pagination;\n};\n\nexport default function GroupListView() {\n const { category_id } = useParams();\n const category = find(Preload.current_network.group_categories, {\n slug: category_id,\n });\n\n const { filter, currentPage } = useDirectoryFilter();\n\n const { data, isLoading } = useQuery(\n `/directory/${category_id}.json?${stringify(filter)}`,\n { enabled: !!category_id },\n );\n\n return category ? (\n
    \n \n \n {data && !isEmpty(data?.entries)\n ? map(data.entries, (group) => )\n : I18n.t(\"js.directory.empty_collection\")}\n \n
    \n ) : (\n
    Category not found
    \n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport PageTitle from \"components/layout/PageTitle\";\nimport TabBar from \"components/shared/TabBar\";\nimport { findIndex, forEach, includes } from \"lodash\";\nimport MembersListView from \"components/directory/members/MemberListView\";\nimport ChannelListView from \"components/directory/channels/ChannelListView\";\nimport GroupListView from \"components/directory/groups/GroupListView\";\nimport { useParams } from \"helpers/tixxt-router\";\n\ntype DirectoryPageArgs = {\n preselectedTab: \"channels\" | \"members\" | \"groups\";\n};\n\nexport default function DirectoryPage({ preselectedTab }: DirectoryPageArgs) {\n const { category_id } = useParams();\n const availableModules =\n (Tixxt.currentNetwork?.get(\"availableModules\") as string[]) || [];\n\n const tabs = [\n {\n id: \"members\",\n type: \"members\",\n label: I18n.t(\"js.directory.member_tab\"),\n url: \"/members\",\n component: MembersListView,\n },\n ];\n\n if (includes(availableModules, \"Channels\")) {\n tabs.push({\n id: \"channels\",\n type: \"channels\",\n label: I18n.t(\"js.directory.channel_tab\"),\n url: \"/channels\",\n component: ChannelListView,\n });\n }\n\n forEach(Preload.current_network.group_categories, (category) =>\n tabs.push({\n id: category.slug,\n type: \"groups\",\n label: category.plural_name,\n url: `/directory/${category.slug}`,\n component: GroupListView,\n }),\n );\n\n const tabIndex = findIndex(tabs, { id: category_id || preselectedTab });\n const [selectedTabIndex, selectTabIndex] = useState(tabIndex);\n\n useEffect(() => {\n selectTabIndex(tabIndex);\n }, [tabIndex]);\n\n const { component: TabComponent, type: selectedTabType } =\n tabs[selectedTabIndex];\n\n return (\n <>\n \n \n {TabComponent && }\n \n );\n}\n","import React from \"react\";\nimport { RouteObject } from \"helpers/tixxt-router\";\nimport BackboneFeature from \"components/tixxt/BackboneFeature\";\nimport DirectoryPage from \"components/directory/DirectoryPage\";\n\nconst backboneRoutes: RouteObject[] = [\n // {\n // path: \"/directory\",\n // element: (\n // \n // ),\n // },\n {\n path: \"/directory/:category_id\",\n element: (\n \n ),\n },\n // {\n // path: \"/members\",\n // element: (\n // \n // ),\n // },\n //{\n // path: \"/directory/channels\",\n // element: (\n // \n // ),\n //},\n {\n path: \"/groups/:group_id/directory\",\n element: (\n \n ),\n },\n {\n path: \"/groups/:group_id/directory/:category_id\",\n element: (\n \n ),\n },\n {\n path: \"/groups/:group_id/members\",\n element: (\n \n ),\n },\n];\n\nconst reactRoutes: RouteObject[] = [\n { path: \"/directory\", element: },\n { path: \"/members\", element: },\n { path: \"/channels\", element: },\n {\n path: \"/directory/channels\",\n element: ,\n },\n {\n path: \"/directory/:category_id\",\n element: ,\n },\n];\n\nexport default reactRoutes.concat(backboneRoutes);\n","import React from \"react\";\nimport { useStore, useSelector } from \"react-redux\";\nimport { useMutation } from \"react-query\";\nimport { useParams } from \"helpers/tixxt-router\";\n\nimport { selectNetworkId } from \"selectors/environment\";\nimport persistItem from \"helpers/items/persistItem\";\n\nimport MembershipForm from \"./MembershipForm\";\nimport { useLoadApp } from \"../appCreator/api\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\n\nexport default function EditMembership() {\n const { membershipId } = useParams();\n const networkId = useSelector(selectNetworkId);\n const externalAppId = `profile:${networkId}`;\n const externalItemId = membershipId;\n const store = useStore();\n const { data: app } = useLoadApp({\n externalAppId,\n });\n\n const { mutate: updateMembership } = useMutation(\n () =>\n fetchApi(`/members/${membershipId}`, {\n method: \"PUT\",\n }),\n {\n onSuccess: () => {\n location.replace(`/members/${membershipId}`);\n toastr.success(I18n.t(\"js.saving_successful\"));\n },\n onError: () => {\n toastr.error(I18n.t(\"js.saving_failure\"));\n },\n },\n );\n\n const onSubmit = async (values) => {\n await persistItem(app, store.dispatch, {\n externalAppId,\n externalItemId,\n values,\n });\n\n updateMembership({ membershipId });\n };\n\n return (\n \n );\n}\n","import React, { useCallback } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { includes, mapValues, pickBy } from \"lodash\";\nimport { selectNetworkId } from \"selectors/environment\";\nimport MembershipForm from \"./MembershipForm\";\nimport { fetchApi } from \"../../helpers/reactQueryApi\";\n\nconst changeRequestsProfileFields =\n window.Preload.current_network.config.memberships?.change_requests\n ?.profile_fields;\n\nexport default function NewChangeRequest() {\n const membershipId = window.Preload.current_member.id;\n const networkId = useSelector(selectNetworkId);\n const externalAppId = `profile:${networkId}`;\n const externalItemId = membershipId;\n const filterProperties = useCallback(\n ({ name }) => includes(changeRequestsProfileFields, name),\n [],\n );\n const mapProperties = useCallback(\n (prop) => ({ ...prop, can: { update: true } }),\n [],\n );\n const transformItem = useCallback(\n (item) => ({ ...item, can: mapValues(item.can, () => true) }),\n [],\n );\n\n const onSubmit = async (values) => {\n const body = pickBy(values, (value, name) => filterProperties({ name }));\n return fetchApi(`/change_requests`, {\n method: \"POST\",\n body,\n });\n };\n\n const onSubmitSuccess = () => {\n location.replace(`/members/${membershipId}`);\n toastr.success(I18n.t(\"js.saving_successful\"));\n };\n\n return (\n \n );\n}\n","import React from \"react\";\nimport { map, startsWith } from \"lodash\";\nimport classnames from \"classnames\";\n\nimport ControlGroup from \"./ControlGroup\";\nimport CheckboxField from \"./CheckboxField\";\nimport Hint from \"components/shared/fields/Hint\";\n\ninterface CheckboxFieldsProps {\n name: string;\n label?: string;\n required?: boolean;\n options: Array<{\n value: boolean | string;\n label: string;\n disabled?: boolean;\n hint?: string;\n }>;\n multiple?: boolean;\n hint?: string;\n disabled?: boolean;\n}\n\nfunction CheckboxFields({\n name,\n label,\n required,\n options,\n multiple,\n hint,\n disabled,\n}: CheckboxFieldsProps) {\n return (\n \n {map(options, (option) => {\n return (\n \n );\n })}\n \n \n );\n}\n\nexport default CheckboxFields;\n","import { change, formValueSelector } from \"redux-form\";\nimport { connect } from \"react-redux\";\nimport React, { Fragment, useEffect, useRef } from \"react\";\nimport CheckboxFields from \"../../shared/fields/CheckboxFields\";\nimport SelectionField from \"../../appCreator/properties/edit/SelectionField\";\nimport PropTypes from \"prop-types\";\nimport InfoText from \"../../shared/InfoText\";\nimport CheckboxField from \"../../shared/fields/CheckboxField\";\nimport { get } from \"lodash\";\n\nconst selector = formValueSelector(\"editMembershipSettings\");\nconst DigestSettings = connect((state, { configCategory }) => ({\n switchValue: selector(state, `${configCategory}.switch`),\n}))(({ configCategory, switchValue, conditions, dispatch }) => {\n const isMounted = useRef(false);\n const groupOptions = Tixxt.currentMember\n .groups()\n .map((group) => ({\n value: group.get(\"id\"),\n label: group.get(\"name\"),\n }))\n .sort((a, b) => a.label.localeCompare(b.label));\n\n useEffect(() => {\n if (isMounted.current) {\n if (switchValue === \"selected_groups\") {\n dispatch(\n change(\n \"editMembershipSettings\",\n `${configCategory}.group_ids`,\n groupOptions.map((group) => group.value),\n ),\n );\n }\n } else {\n isMounted.current = true;\n }\n }, [switchValue, configCategory]);\n\n return (\n \n

    {I18n.t(`js.memberships.settings.${configCategory}.title`)}

    \n {get(conditions, [\"email_daily_digests\", \"include_network_level\"]) &&\n configCategory === \"email_daily_digests\" ? (\n

    \n {I18n.t(\n `js.memberships.settings.${configCategory}.description_with_network`,\n )}\n

    \n ) : (\n

    {I18n.t(`js.memberships.settings.${configCategory}.description`)}

    \n )}\n \n {switchValue === \"selected_groups\" ? (\n
    \n \n \n
    \n \n
    \n
    \n ) : null}\n {get(conditions, [\"email_daily_digests\", \"include_network_level\"]) &&\n configCategory === \"email_daily_digests\" &&\n switchValue !== \"disabled\" ? (\n
    \n
    \n \n
    \n
    \n ) : null}\n
    \n );\n});\n\nDigestSettings.propTypes = {\n configCategory: PropTypes.string,\n};\n\nexport default DigestSettings;\n","import React, { Fragment } from \"react\";\nimport CheckboxFields from \"../../shared/fields/CheckboxFields\";\nimport { compact, includes, get, map } from \"lodash\";\nimport PropTypes from \"prop-types\";\n\nconst mapOptions =\n (configCategory, disabled, conditions) => (_value, config) =>\n get(conditions, [configCategory, config], true)\n ? {\n label: `js.memberships.settings.${configCategory}.checkboxes.${config}`,\n value: config,\n disabled: includes(disabled[configCategory], config),\n }\n : null;\n\nfunction EmailConfigList({ settings, configCategory, conditions, disabled }) {\n return (\n \n

    {I18n.t(`js.memberships.settings.${configCategory}.title`)}

    \n

    {I18n.t(`js.memberships.settings.${configCategory}.description`)}

    \n \n
    \n );\n}\n\nEmailConfigList.propTypes = {\n settings: PropTypes.object,\n configCategory: PropTypes.string,\n conditions: PropTypes.object,\n disabled: PropTypes.object,\n};\n\nexport default EmailConfigList;\n","import React, { useEffect, useState } from \"react\";\nimport { isEmpty, map } from \"lodash\";\nimport CheckboxFields from \"components/shared/fields/CheckboxFields\";\nimport {\n useFetchDeviceSettings,\n updateDeviceSettings,\n} from \"components/memberships/api\";\nimport ReduxForm from \"components/shared/reduxForm\";\n\nexport default function PushNotificationSettingsForm() {\n const [deviceId, setDeviceUniqueId] = useState(\"\");\n const [deviceName, setDeviceName] = useState(\"\");\n\n const { data, refetch } = useFetchDeviceSettings(deviceId);\n\n function getDeviceUniqueId() {\n window.bridge?.getDeviceUniqueId(({ id, name }) => {\n setDeviceUniqueId(id);\n setDeviceName(name);\n });\n }\n\n useEffect(() => {\n getDeviceUniqueId();\n });\n\n useEffect(() => {\n deviceId !== \"\" && refetch();\n }, [deviceId]);\n\n function retryDeviceLoading() {\n if (deviceId != \"\" && isEmpty(data)) {\n window.bridge?.askToRegisterDevice();\n } else {\n getDeviceUniqueId();\n }\n }\n\n function onSubmit(values, dispatch) {\n dispatch(updateDeviceSettings({ deviceId, notifications: values })).then(\n () => Promise.resolve(\"Submission successful\"),\n );\n }\n\n return deviceId != \"\" && !isEmpty(data) ? (\n toastr.success(I18n.t(\"js.saving_successful\"))}\n onSubmitFail={() => toastr.error(I18n.t(\"js.saving_failure\"))}\n allowSaveWithoutChange={true}\n onCancel={window.isApp ? () => window.bridge?.goBack() : undefined}\n >\n
    \n

    {I18n.t(\"js.memberships.settings.push_notifications.tab\")}

    \n
    \n {map(data.notifications, (settings, label) => {\n return (\n
    \n ({\n label: I18n.t(\n `js.memberships.settings.push_notifications.${label}.${key}`,\n ),\n value: key,\n }))}\n multiple\n />\n
    \n );\n })}\n \n \n ) : (\n
    \n

    {I18n.t(\"js.memberships.settings.push_notifications.no_settings\")}

    \n \n {I18n.t(\"js.generic_try_again\")}\n \n
    \n );\n}\n","import { useQuery } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\n\nexport function useFetchDeviceSettings(deviceId: string, options = {}) {\n return useQuery(\n [\"deviceSettings\", deviceId],\n () => fetchApi(`/api/v1/devices/${deviceId}/settings`),\n options,\n );\n}\n\nexport function updateDeviceSettings({ deviceId, ...body }) {\n return fetchApi(`/api/v1/devices/${deviceId}/settings`, {\n method: \"POST\",\n body,\n });\n}\n","import React, { Fragment, useState, useEffect } from \"react\";\nimport {\n isEmpty,\n map,\n pickBy,\n keys,\n get,\n cloneDeep,\n snakeCase,\n compact,\n includes,\n filter,\n} from \"lodash\";\nimport { useParams } from \"helpers/tixxt-router\";\nimport { useMutation, useQuery } from \"react-query\";\nimport Loading from \"components/shared/Loading\";\nimport classNames from \"classnames\";\n\nimport ReduxForm from \"components/shared/reduxForm\";\nimport PageTitle from \"components/layout/PageTitle\";\nimport DigestSettings from \"components/memberships/membershipSettings/DigestSettings\";\nimport EmailConfigList from \"components/memberships/membershipSettings/EmailConfigList\";\nimport PushNotificationSettingsForm from \"components/memberships/PushNotificationSettingsForm\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\n\nconst transform2FrontendState = (state) => {\n const newState = cloneDeep(state);\n map([\"email_digests\", \"email_daily_digests\"], (key) => {\n if (newState[key].enabled) {\n if (newState[key].group_ids === \"all\") {\n newState[key].switch = \"all\";\n } else {\n newState[key].switch = \"selected_groups\";\n }\n } else {\n newState[key].switch = \"disabled\";\n }\n });\n\n return newState;\n};\n\nconst transform2BackendState = (state) => {\n const newState = cloneDeep(state);\n map([\"email_digests\", \"email_daily_digests\"], (key) => {\n switch (newState[key].switch) {\n case \"all\":\n newState[key].enabled = true;\n newState[key].group_ids = [\"all\"];\n break;\n case \"selected_groups\":\n newState[key].enabled = true;\n break;\n case \"disabled\":\n newState[key].enabled = false;\n break;\n }\n });\n map(\n [\"email_subscriptions\", \"email_notifications\", \"email_admin_notifications\"],\n (key) => {\n newState[key] = keys(pickBy(newState[key]));\n },\n );\n\n return newState;\n};\n\nexport default function EditMembershipSettings() {\n const { membershipId } = useParams();\n\n const { isLoading: loading, data } = useQuery(\n `/members/${membershipId}/settings`,\n );\n\n const { mutate: updateMembershipSettings } = useMutation(\n ({ body }: { [key: string]: boolean }) =>\n fetchApi(`/members/${membershipId}/settings`, {\n method: \"PUT\",\n body,\n }),\n {\n onSuccess: () => toastr.success(I18n.t(\"js.saving_successful\")),\n onError: () => {\n toastr.error(I18n.t(\"js.saving_failure\"));\n },\n },\n );\n\n const { settings, conditions, disabled } = (data || {}) as any;\n\n const showEmailDigests =\n get(conditions, [\"email_digests\", \"enabled\"], true) &&\n get(conditions, [\"email_digests\", \"set\"], true);\n\n const showEmailDailyDigests = get(\n conditions,\n [\"email_daily_digests\", \"enabled\"],\n true,\n );\n\n useEffect(() => {\n if (!showEmailDigests && !showEmailDailyDigests) {\n setActiveTab(\"email-subscriptions\");\n }\n }, [showEmailDigests, showEmailDailyDigests]);\n\n const [activeTab, setActiveTab] = useState(\"email-digests\");\n\n const notificationsDeactivated = get(\n conditions,\n [\"email_notifications_disabled\"],\n false,\n );\n\n const onSubmit = async (values) => {\n updateMembershipSettings({\n body: transform2BackendState(values),\n });\n\n if (notificationsDeactivated) location.reload();\n };\n\n const styles = {\n overflow: \"visible\",\n marginBottom: \"18px\",\n };\n\n let tabs = [\n \"email-digests\",\n \"email-daily-digests\",\n \"email-subscriptions\",\n \"email-notifications\",\n \"email-newsletter\",\n \"email-admin-notifications\",\n \"push-notifications\",\n ];\n\n tabs = compact(\n map(tabs, (tab) => {\n if (validateTab(tab)) return tab;\n }),\n );\n\n function validateTab(tab) {\n switch (tab) {\n case \"email-digests\":\n return showEmailDigests;\n case \"email-daily-digests\":\n return showEmailDailyDigests;\n case \"email-newsletter\":\n return get(conditions, [\"email_newsletter\", \"enabled\"], false);\n case \"email-admin-notifications\":\n return get(conditions, [\"email_admin_notifications\", \"enabled\"], true);\n case \"push-notifications\":\n return window.isApp;\n default:\n return true;\n }\n }\n\n if (loading || !data) return ;\n\n return (\n \n \n {loading || isEmpty(settings) ? (\n
    \n \n {I18n.t(\"js.loading\")}\n
    \n ) : (\n
    \n
      \n {/**** Header ****/}\n {notificationsDeactivated ? (\n

      \n {I18n.t(\n \"js.memberships.settings.email_notifications.bouncelist_hint\",\n )}\n

      \n ) : (\n map(tabs, (tab, index) => (\n \n {\n e.preventDefault();\n setActiveTab(tab);\n }}\n >\n {I18n.t(`js.memberships.settings.${snakeCase(tab)}.tab`)}\n \n \n ))\n )}\n
    \n {activeTab != \"push-notifications\" && (\n window.bridge?.goBack() : undefined\n }\n >\n {notificationsDeactivated ? (\n

    \n {I18n.t(\n \"js.memberships.settings.email_notifications.bouncelist_hint\",\n )}\n

    \n ) : (\n
    \n {/**** Content ****/}\n {map(\n filter(tabs, (t) => t !== \"push-notifications\"),\n (tab) => (\n \n {includes(\n [\"email-digests\", \"email-daily-digests\"],\n tab,\n ) ? (\n \n ) : (\n \n )}\n
    \n ),\n )}\n
    \n )}\n \n )}\n {window.isApp && activeTab == \"push-notifications\" && (\n
    \n \n \n
    \n \n )}\n \n )}\n
    \n );\n}\n","import React from \"react\";\nimport { RouteObject } from \"helpers/tixxt-router\";\nimport EditMembership from \"./EditMembership\";\nimport NewChangeRequest from \"./NewChangeRequest\";\nimport EditMembershipSettings from \"./EditMembershipSettings\";\nimport BackboneFeature from \"components/tixxt/BackboneFeature\";\n\nconst membershipRoutes: RouteObject[] = [\n {\n path: \"/members/:membershipId/edit\",\n element: ,\n forceTurbo: true,\n },\n {\n path: \"/members/:membershipId/change_requests/new\", // deprecated\n element: ,\n },\n {\n path: \"/change_requests/new\",\n element: ,\n },\n {\n path: \"/members/:membershipId/settings/edit\",\n element: ,\n },\n {\n path: \"/members/:id/activities\",\n element: (\n \n ),\n },\n {\n path: \"/members/:id/likes\",\n element: (\n \n ),\n },\n];\n\nexport default membershipRoutes;\n","import React from \"react\";\nimport { Field, FormSection } from \"redux-form\";\nimport PropTypes from \"prop-types\";\n\nimport BasicItemForm from \"../../appCreator/items/form/BasicItemForm\";\nimport TextField from \"../../shared/fields/TextField\";\n\nfunction BasicSettings({\n externalAppId,\n externalItemId,\n initialize,\n initialValues,\n}) {\n return (\n
    \n

    {I18n.t(\"js.groups.edit.basic_settings\")}

    \n \n \n\n \n \n initialize({ ...initialValues, profile }, options)\n }\n />\n \n
    \n );\n}\n\nexport default BasicSettings;\n\nBasicSettings.propTypes = {\n externalAppId: PropTypes.string,\n externalItemId: PropTypes.string,\n initialize: PropTypes.func,\n initialValues: PropTypes.object,\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useSelector } from \"react-redux\";\nimport { formValueSelector } from \"redux-form\";\n\nimport CheckboxField from \"components/shared/fields/CheckboxField\";\nimport CheckboxFields from \"components/shared/fields/CheckboxFields\";\nimport { Controls } from \"components/shared/fields/ControlGroup\";\n\nfunction GroupAccess({\n sensitive,\n active_main_group,\n formName,\n can_create_hidden,\n}) {\n const accessValue = useSelector((state) =>\n formValueSelector(formName)(state, \"access\"),\n );\n\n const access_options = [\n {\n value: \"open\",\n label: I18n.t(\"js.groups.form.open\"),\n disabled: sensitive,\n },\n ];\n if (!active_main_group) {\n access_options.push({\n value: \"closed\",\n label: I18n.t(\"js.groups.form.closed\"),\n });\n }\n if (can_create_hidden) {\n access_options.push({\n value: \"hidden\",\n label: I18n.t(\"js.groups.form.hidden\"),\n });\n }\n\n return (\n
    \n \n {accessValue !== \"open\" ? (\n
    \n
    \n \n {accessValue == \"hidden\" ? null : (\n \n )}\n \n \n \n \n
    \n {accessValue == \"hidden\" ? null : (\n \n {I18n.t(\"js.groups.form.moderated_membership\")}\n \n )}\n
    \n ) : null}\n
    \n );\n}\nGroupAccess.propTypes = {\n access: PropTypes.string,\n sensitive: PropTypes.bool,\n formName: PropTypes.string,\n active_main_group: PropTypes.bool,\n can_create_hidden: PropTypes.bool,\n};\n\nexport default GroupAccess;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport GroupAccess from \"./GroupAccess\";\n\nfunction JoinSettings({ active_main_group, access, sensitive, can, formName }) {\n return (\n <>\n

    {I18n.t(\"js.groups.edit.join_settings\")}

    \n \n \n );\n}\n\nexport default JoinSettings;\n\nJoinSettings.propTypes = {\n active_main_group: PropTypes.bool,\n can: PropTypes.shape({\n create_hidden: PropTypes.bool,\n }),\n access: PropTypes.string,\n sensitive: PropTypes.bool,\n formName: PropTypes.string,\n};\n","import React, { ReactNode, Children } from \"react\";\n\ninterface MiscSettingsProps {\n settings: ReactNode[];\n}\n\nfunction MiscSettings({ settings }: MiscSettingsProps) {\n return (\n <>\n

    {I18n.t(\"js.groups.edit.misc_settings\")}

    \n {Children.map(settings, (setting) => (\n <>{setting}\n ))}\n \n );\n}\n\nexport default MiscSettings;\n","import React from \"react\";\nimport CheckboxFields from \"../../shared/fields/CheckboxFields\";\n\nfunction ChatSettings() {\n return (\n \n );\n}\n\nexport default ChatSettings;\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useSelector } from \"react-redux\";\nimport ReduxForm from \"components/shared/reduxForm\";\nimport classNames from \"classnames\";\nimport { selectNetworkId } from \"selectors/environment\";\nimport BasicSettings from \"./BasicSettings\";\nimport JoinSettings from \"./JoinSettings\";\nimport MiscSettings from \"./MiscSettings\";\nimport ChatSettings from \"./ChatSettings\";\n\nfunction GroupForm({\n id,\n name,\n group_category_id,\n access,\n sensitive,\n active_main_group,\n can,\n moderated_join,\n members_can_invite,\n chat,\n onSubmit,\n formName,\n}) {\n const [activeTab, setActiveTab] = useState(\"basic\");\n const networkId = useSelector(selectNetworkId);\n const externalAppId = `network_${networkId}:group_category_${group_category_id}:group_profile`;\n const externalItemId = id;\n const miscSettings = [];\n\n if (chat) {\n miscSettings.push();\n }\n\n return (\n \n onSubmit(values, dispatch, {\n ...props,\n id,\n externalAppId,\n externalItemId,\n })\n }\n className=\"form-horizontal\"\n renderChildren={({ initialize, initialValues }) => (\n <>\n
      \n
    • \n {\n e.preventDefault();\n setActiveTab(\"basic\");\n }}\n >\n {I18n.t(\"js.groups.edit.basic_settings\")}\n \n
    • \n
    • \n {\n e.preventDefault();\n setActiveTab(\"join\");\n }}\n >\n {I18n.t(\"js.groups.edit.join_settings\")}\n \n
    • \n {miscSettings.length > 0 && (\n
    • \n {\n e.preventDefault();\n setActiveTab(\"misc\");\n }}\n >\n {I18n.t(\"js.groups.edit.misc_settings\")}\n \n
    • \n )}\n
    \n
    \n \n \n
    \n \n \n \n {miscSettings.length > 0 && (\n \n \n \n )}\n \n \n )}\n />\n );\n}\n\nGroupForm.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string,\n group_category_id: PropTypes.string.isRequired,\n active_main_group: PropTypes.bool,\n can: PropTypes.shape({\n create_hidden: PropTypes.bool,\n }),\n access: PropTypes.string,\n sensitive: PropTypes.bool,\n members_can_invite: PropTypes.bool,\n moderated_join: PropTypes.bool,\n profile: PropTypes.shape({\n id: PropTypes.string,\n app_id: PropTypes.string,\n values: PropTypes.shape({\n profile_image: PropTypes.object,\n teaser: PropTypes.string,\n description: PropTypes.string,\n }),\n }),\n chat: PropTypes.string,\n formName: PropTypes.string,\n onSubmit: PropTypes.func,\n groupCategoryName: PropTypes.string,\n};\n\nexport default GroupForm;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useMutation } from \"react-query\";\nimport { archiveGroup, deleteGroup } from \"./api\";\nimport DangerZone from \"../shared/form/DangerZone\";\n\nfunction EditGroupActions({ archived, can, slug, name }) {\n const { mutate: onDeleteGroup } = useMutation(deleteGroup, {\n onSuccess: ({ redirect }) => {\n toastr.success(I18n.t(\"groups.destroy.success\", { group: name }));\n // eslint-disable-next-line no-undef\n Turbo.visit(redirect, {\n action: \"replace\",\n target: document.documentElement,\n historyChanged: true,\n });\n },\n });\n\n const { mutate: onArchiveGroup } = useMutation(archiveGroup, {\n onSuccess: ({ archived, redirect }) => {\n toastr.success(\n I18n.t(\n archived\n ? \"js.groups.group.successfully_archived\"\n : \"js.groups.group.successfully_unarchived\",\n { group_name: name },\n ),\n );\n // eslint-disable-next-line no-undef\n Turbo.visit(redirect, {\n action: \"replace\",\n target: document.documentElement,\n historyChanged: true,\n });\n },\n });\n\n return (\n \n {\n e.preventDefault();\n window.bridge.confirm(\n I18n.t(\n archived\n ? \"js.groups.edit.confirm_unarchive\"\n : \"js.groups.edit.confirm_archive\",\n ),\n () => onArchiveGroup({ slug, archived }),\n );\n }}\n >\n {I18n.t(\n archived ? \"js.groups.edit.unarchive\" : \"js.groups.edit.archive\",\n )}\n \n {can.destroy ? (\n {\n e.preventDefault();\n window.bridge.confirm(\n I18n.t(\"js.groups.edit.confirm_delete\"),\n () => onDeleteGroup({ slug }),\n );\n }}\n >\n {I18n.t(\"js.groups.edit.delete\")}\n \n ) : null}\n \n }\n />\n );\n}\n\nEditGroupActions.propTypes = {\n archived: PropTypes.bool,\n can: PropTypes.shape({\n archive: PropTypes.bool,\n destroy: PropTypes.bool,\n }),\n slug: PropTypes.string,\n};\n\nexport default EditGroupActions;\n","import React from \"react\";\nimport { useSelector, useStore } from \"react-redux\";\nimport { get, isEmpty } from \"lodash\";\nimport { useParams } from \"helpers/tixxt-router\";\nimport GroupForm from \"./form\";\nimport EditGroupActions from \"./EditGroupActions\";\nimport persistItem from \"helpers/items/persistItem\";\nimport TixxtPageTitle from \"../layout/TixxtPageTitle\";\nimport { updateGroup, fetchGroup } from \"./api\";\nimport { useMutation, useQuery } from \"react-query\";\nimport { selectNetworkId } from \"../../selectors/environment\";\nimport { useLoadApp } from \"../appCreator/api\";\n\nexport default function EditGroup() {\n const { groupSlug } = useParams();\n\n const { data: group } = useQuery([\"group\", groupSlug], () =>\n fetchGroup(groupSlug),\n );\n const store = useStore();\n const networkId = useSelector(selectNetworkId);\n const externalAppId = `network_${networkId}:group_category_${group?.group_category_id}:group_profile`;\n const { data: app } = useLoadApp(\n { externalAppId },\n { enabled: !!group?.group_category_id },\n );\n\n const { mutate: onUpdateGroup } = useMutation(updateGroup, {\n onSuccess: (data, variables) => {\n toastr.success(\n I18n.t(\"js.groups.update.success\", {\n group: get(variables, [\"body\", \"group\", \"name\"]),\n }),\n );\n location.replace(\n `/groups/${data.groupSlug}/activitystreams/${data.groupSlug}`,\n );\n },\n onError: () => {\n toastr.error(\n I18n.t(\"js.groups.update.failure\", {\n group: group.name,\n }),\n );\n },\n });\n\n const onSubmit = async (\n values,\n dispatch,\n { externalAppId, externalItemId },\n ) => {\n const { profile, ...group } = values;\n\n await persistItem(app, store.dispatch, {\n externalAppId,\n externalItemId,\n values: profile,\n });\n\n onUpdateGroup({ groupSlug, body: { group } });\n };\n\n return (\n <>\n \n {!isEmpty(group) && (\n <>\n {!group.archived && (\n \n )}\n {group.can.archive && }\n \n )}\n \n );\n}\n","import React, { Fragment } from \"react\";\nimport { useSelector, useStore } from \"react-redux\";\nimport { get, isEmpty } from \"lodash\";\nimport { useParams } from \"helpers/tixxt-router\";\n\nimport PageTitle from \"components/layout/PageTitle\";\nimport GroupForm from \"./form\";\nimport { groupCategorySelector, selectNetworkId } from \"selectors/environment\";\n\nimport persistItem from \"helpers/items/persistItem\";\nimport { fetchGroupDefaults, createGroup } from \"./api\";\nimport { useQuery, useMutation } from \"react-query\";\nimport { useLoadApp } from \"../appCreator/api\";\n\nexport default function NewGroup() {\n const networkId = useSelector(selectNetworkId);\n const { groupCategorySlug } = useParams();\n const category = useSelector((state) =>\n groupCategorySelector(state, groupCategorySlug),\n );\n const store = useStore();\n\n const { data: groupDefaults, isLoading: loading } = useQuery(\n [\"groupDefaults\", groupCategorySlug],\n () => fetchGroupDefaults(groupCategorySlug),\n );\n const externalAppId = `network_${networkId}:group_category_${category.id}:group_profile`;\n const { data: app } = useLoadApp({\n externalAppId,\n });\n\n const { mutate: onCreateGroup } = useMutation(createGroup, {\n onSuccess: (data, variables) => {\n toastr.success(\n I18n.t(\"js.groups.create.success\", {\n group: get(variables, [\"body\", \"group\", \"name\"]),\n }),\n );\n location.replace(\n `/groups/${data.groupSlug}/activitystreams/${data.groupSlug}`,\n );\n },\n onError: () => {\n toastr.error(\n I18n.t(\"js.groups.create.failure\", {\n group: category.name,\n }),\n );\n },\n });\n\n const onSubmit = async (values, dispatch, { externalAppId }) => {\n const { profile, ...group } = values;\n const { id: itemId } = await persistItem(app, store.dispatch, {\n externalAppId,\n values: profile,\n });\n\n onCreateGroup({\n body: { group: { ...group, profile_id: itemId } },\n });\n };\n\n return (\n \n \n {!isEmpty(groupDefaults) && !loading ? (\n \n ) : loading ? (\n \n ) : null}\n \n );\n}\n","import React, { useState } from \"react\";\nimport { get, map } from \"lodash\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\nimport { useQuery } from \"react-query\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faUsers, faLock } from \"@fortawesome/pro-solid-svg-icons\";\nimport { useAcceptInvite, useDeclineInvite } from \"components/invites/api\";\n\ntype Invitable = {\n id: string;\n slug: string;\n name: string;\n access: string;\n teaser?: string;\n images?: string;\n member_count?: number;\n activity_count?: number;\n};\n\ntype Author = {\n id: string;\n name: string;\n detection_profile_field?: string;\n};\n\ntype GroupInvite = {\n id: string;\n invitable: Invitable;\n author: Author;\n additional_message: string;\n};\n\ntype GroupInvites = {\n groupInvites: GroupInvite[];\n};\n\nfunction useFetchGroupInvites(options = {}) {\n return useQuery(\n [\"groupInvites\"],\n () => fetchApi(\"/api/v1/invites?filter=groups&status=open&limit=50\"),\n options,\n );\n}\n\nfunction GroupInviteActions({\n groupInviteId,\n reloadGroupInvites,\n}: {\n groupInviteId: string;\n reloadGroupInvites: () => void;\n}) {\n const [inviteStatus, setInviteStatus] = useState(\"open\");\n const { mutate: declineInvite } = useDeclineInvite({\n onSuccess: () => {\n reloadGroupInvites();\n },\n });\n const { mutate: acceptInvite } = useAcceptInvite({\n onSuccess: () => {\n reloadGroupInvites();\n },\n });\n\n const buttons = (\n
    \n {\n acceptInvite({ inviteId: groupInviteId });\n setInviteStatus(\"accepted\");\n }}\n className=\"btn btn-success\"\n aria-label=\"accept invite\"\n >\n \n {I18n.t(\"js.invites.actions.accept\")}\n \n {\n declineInvite({ inviteId: groupInviteId });\n setInviteStatus(\"declined\");\n }}\n className=\"btn btn-danger\"\n aria-label=\"reject invite\"\n >\n \n {I18n.t(\"js.invites.actions.reject\")}\n \n
    \n );\n\n const hint = (\n
    \n {[\"accepted\", \"rejected\"].includes(inviteStatus)\n ? I18n.t(`js.calendars.groups.invite.${inviteStatus}`)\n : null}\n
    \n );\n\n if (inviteStatus === \"open\") {\n return buttons;\n } else {\n return hint;\n }\n}\n\nfunction GroupInvite({\n id,\n invitable,\n author,\n additional_message,\n reloadGroupInvites,\n}: GroupInvite & { reloadGroupInvites: () => void }) {\n function checkIfPresent(value) {\n return value !== undefined && value !== null;\n }\n\n return (\n
  • \n
    \n {invitable.images ? (\n \n ) : (\n \n )}\n
    \n
    \n {invitable.access === \"hidden\" ? (\n
    {invitable.name}
    \n ) : (\n \n
    \n {invitable.access === \"closed\" ? (\n \n ) : undefined}\n
    {invitable.name}
    \n
    \n \n )}\n {author.name ? (\n
    \n {I18n.t(\"js.invites.show.invited_by\")}\n \n {author.name}\n {author.detection_profile_field\n ? ` ${author.detection_profile_field}`\n : undefined}\n \n
    \n ) : undefined}\n {additional_message ? (\n
    \n
    \n {I18n.t(\"js.groups.group.personal_message\")}\n
    \n
    \n {additional_message}\n
    \n
    \n ) : undefined}\n {checkIfPresent(invitable.member_count) &&\n checkIfPresent(invitable.activity_count) ? (\n
    \n {`${\n invitable.member_count === 1\n ? I18n.t(\"js.directory.group_row.member_count.one\")\n : I18n.t(\"js.directory.group_row.member_count.other\", {\n count: invitable.member_count,\n })\n }, ${\n invitable.activity_count === 1\n ? I18n.t(\"js.directory.group_row.activity.one\")\n : I18n.t(\"js.directory.group_row.activity.other\", {\n count: invitable.activity_count,\n })\n }`}\n
    \n ) : undefined}\n {invitable.teaser ? (\n
    \n {invitable.teaser}\n
    \n ) : undefined}\n
    \n
    \n \n
    \n
  • \n );\n}\n\nexport default function GroupInvites() {\n const {\n isLoading,\n data: groupInvites,\n refetch: reloadGroupInvites,\n } = useFetchGroupInvites();\n\n return (\n
    \n
    \n {I18n.t(\"js.groups.invites.title\")}\n
    \n
    \n {!isLoading && groupInvites && groupInvites.length > 0 ? (\n
      \n {map(groupInvites, (groupInvite: GroupInvite) => (\n \n ))}\n
    \n ) : (\n
    \n {I18n.t(\"js.directory.group_row.no_invites\")}\n
    \n )}\n
    \n
    \n );\n}\n","import React from \"react\";\nimport { RouteObject } from \"helpers/tixxt-router\";\nimport EditGroup from \"./EditGroup\";\nimport NewGroup from \"./NewGroup\";\nimport GroupInvites from \"./Invites\";\n\nconst groupRoutes: RouteObject[] = [\n { path: \"/groups/:groupSlug/edit\", element: , forceTurbo: true }, // groups#edit runs profile initialization and must thus be called when accessing this route\n { path: \"/groups/new/:groupCategorySlug\", element: },\n { path: \"/invites\", element: },\n];\n\nexport default groupRoutes;\n","import { createApiAction } from \"helpers/api\";\n\nexport const updateProfileStep = createApiAction({\n method: \"PUT\",\n endpoint: () => `/onboarding/profile`,\n baseType: `/ONBOARDING/PROFILE`,\n});\n","import React from \"react\";\nimport { useSelector, useStore } from \"react-redux\";\nimport { SubmissionError } from \"redux-form\";\n\nimport persistItem from \"helpers/items/persistItem\";\nimport { updateProfileStep } from \"actions/onboarding\";\nimport { selectNetworkId, currentMemberSelector } from \"selectors/environment\";\nimport MembershipForm from \"components/memberships/MembershipForm\";\nimport { useLoadApp } from \"../appCreator/api\";\n\nexport default function ProfileOnboarding() {\n const networkId = useSelector(selectNetworkId);\n const externalAppId = `profile:${networkId}`;\n const membershipId = useSelector(currentMemberSelector).id;\n const externalItemId = membershipId;\n const store = useStore();\n const { data: app } = useLoadApp({\n externalAppId,\n });\n\n const onSubmit = async (values, dispatch) => {\n await persistItem(app, store.dispatch, {\n externalAppId,\n externalItemId,\n values,\n });\n\n const onboardingResult = await dispatch(updateProfileStep({}));\n if (onboardingResult.error) throw new SubmissionError();\n\n window.location.href = onboardingResult.redirect_to || \"/\";\n toastr.success(I18n.t(\"js.saving_successful\"));\n };\n\n return (\n \n );\n}\n","import ProfileOnboarding from \"./ProfileOnboarding\";\nimport { RouteObject } from \"helpers/tixxt-router\";\nimport React from \"react\";\n\nconst onboardingRoutes: RouteObject[] = [\n {\n path: \"/onboarding/profile\",\n element: ,\n forceTurbo: true,\n },\n];\n\nexport default onboardingRoutes;\n","import React from \"react\";\nimport { RouteObject } from \"helpers/tixxt-router\";\nimport BackboneFeature from \"components/tixxt/BackboneFeature\";\n\nconst invitesRoutes: RouteObject[] = [\n {\n path: \"/administration/invites/new\",\n element: (\n \n ),\n },\n {\n path: \"/groups/:group_slug/administration/invites/new\",\n element: (\n \n ),\n },\n {\n path: \"/groups/:group_slug/membership_invites/new\",\n element: (\n \n ),\n },\n];\n\n/*\n * /invites/sent is rendered in backend but requires backbone views to render modals i.e. to refresh invites\n */\nconst legacyInvitesRoutes: RouteObject[] = [\n {\n path: \"/groups/:group_slug/administration/invites/sent\",\n element: (\n \n ),\n },\n {\n path: \"/administration/invites/sent\",\n element: (\n \n ),\n },\n];\n\nexport default invitesRoutes;\nexport { legacyInvitesRoutes };\n","import React, { Suspense, lazy } from \"react\";\nimport { RouteObject } from \"helpers/tixxt-router\";\n\nconst MemberMapPage = lazy(() => import(\"./MemberMapPage\"));\n\nconst mapRoutes: RouteObject[] = [\n {\n path: \"/map\",\n element: (\n Loading...}>\n \n \n ),\n },\n {\n path: \"/members/map\",\n element: (\n Loading...}>\n \n \n ),\n },\n {\n path: \"/groups/:groupSlug/map\",\n element: (\n Loading...}>\n \n \n ),\n },\n];\n\nexport default mapRoutes;\n","import React, { useEffect } from \"react\";\nimport { get } from \"lodash\";\nimport { useSelector } from \"react-redux\";\nimport { useMaxHeight } from \"../../hooks/useMaxHeight\";\n\nimport ChatList from \"./ChatList\";\nimport ChatRoom from \"./ChatRoom\";\nimport ChatNew from \"./ChatNew\";\n\nimport store from \"../../store\";\nimport chatReducer from \"../../reducers/chat\";\nimport chatSaga from \"../../sagas/chat\";\n\nfunction launchChat() {\n const host = window.location.host;\n const networkUrl = `https://${host}`;\n const tokenUrl = \"/api/v1/chat_token\";\n const socketUrl = `wss://${host}/api/chat/socket`;\n\n const fetchCredentials = async () => {\n const response = await fetch(tokenUrl, {\n method: \"POST\",\n credentials: \"include\",\n });\n return await response.json();\n };\n\n // Add chat reducer and init its state\n store.addReducers({ chat: chatReducer });\n store.dispatch({ type: \"chat/INIT\", payload: { networkUrl } });\n\n // Run the chat saga\n store.runSaga(chatSaga, { fetchCredentials, socketUrl });\n}\n\nfunction MobileAppChat() {\n const navigation = useSelector((state) => get(state, [\"chat\", \"navigation\"]));\n const connected = useSelector((state) =>\n get(state, [\"chat\", \"session\", \"connected\"]),\n );\n const authorizationError = useSelector((state) =>\n get(state, [\"chat\", \"session\", \"authorizationError\"]),\n );\n\n const style = useMaxHeight();\n useEffect(launchChat, []);\n\n window.bridge?.setPageTitle(\n I18n.t(\"js.administration.app_navigation_items.defaults.chat.label\"),\n );\n\n return (\n \n {authorizationError ? (\n
    \n {I18n.t(\"js.chat.connection_failed\")}\n
    \n ) : connected ? null : connected === false ? (\n
    \n {I18n.t(\"js.chat.reconnecting\")}\n
    \n ) : (\n
    \n {I18n.t(\"js.chat.connecting\")}\n
    \n )}\n {navigation?.route === \"root\" ? : null}\n {navigation?.route === \"showChat\" ? (\n \n ) : null}\n {navigation?.route === \"newChat\" ? : null}\n \n );\n}\n\nexport default MobileAppChat;\n","import React from \"react\";\nimport { RouteObject } from \"helpers/tixxt-router\";\nimport MobileAppChat from \"./MobileAppChat\";\n\nconst membershipRoutes: RouteObject[] = [\n { path: \"/chat\", element: },\n];\n\nexport default membershipRoutes;\n","import React from \"react\";\nimport PermissionPicker from \"components/shared/PermissionPicker\";\n\nexport default function ChannelsPage() {\n return (\n
    \n Channels ✨\n
    \n
    PermissionPicker Test, einfach ignorieren
    \n \n
    \n
    \n );\n}\n","import ToggleFavoriteButton from \"components/shared/favoriteButtons/ToggleFavoriteButton\";\nimport React from \"react\";\nimport { useMutation } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\nimport { updateChannelFavorited } from \"../../channels/api\";\n\nexport default function ToggleChannelFavoriteButton({\n channelSlug,\n favorited,\n}: {\n channelSlug: string;\n favorited: boolean;\n}) {\n const { mutate, isLoading } = useMutation(\n ({ favorite }: { favorite: boolean }) => {\n return fetchApi(`/channels/${channelSlug}/favorite`, {\n method: favorite ? \"POST\" : \"DELETE\",\n });\n },\n {\n onSuccess: (data) => updateChannelFavorited(channelSlug, data.favorited),\n },\n );\n\n return (\n mutate({ favorite: !favorited })}\n isLoading={isLoading}\n favorited={favorited}\n />\n );\n}\n","import React from \"react\";\nimport { includes, map } from \"lodash\";\nimport Loading from \"components/shared/Loading\";\nimport classNames from \"classnames\";\nimport { LayoutRow, LayoutWidget } from \"components/channels/types\";\nimport WidgetContainer from \"components/channels/widgets/WidgetContainer\";\nimport { useWidget } from \"components/channels/api\";\nimport WidgetByType from \"components/channels/widgets/WidgetByType\";\nimport PageLoading from \"components/shared/PageLoading\";\nimport {\n getWidgetColspan,\n getWidgetContainerResponsiveHeight,\n getWidgetContentColumns,\n} from \"components/channels/helpers\";\n\ntype LayoutData = {\n rows: LayoutRow[];\n};\n\ntype ChannelLayoutArgs = {\n channelSlug?: string;\n layoutData: LayoutData | undefined;\n isLoading: boolean;\n};\n\nconst W_LOOKUP = {\n full: [3],\n \"half-1-2\": [1, 2],\n \"half-2-1\": [2, 1],\n third: [1, 1, 1],\n};\n\nexport function ChannelLayout({\n layoutData,\n isLoading,\n channelSlug,\n}: ChannelLayoutArgs) {\n if (isLoading || !layoutData) return ;\n\n return (\n
    \n {map(layoutData.rows, (item) =>\n map(\n item.widgets as LayoutRow[\"widgets\"],\n (widget: LayoutWidget | null, index) => (\n \n ),\n ),\n )}\n
    \n );\n}\n\nfunction Widget({\n widgetId,\n w,\n channelSlug,\n}: {\n channelSlug?: string;\n widgetId?: string;\n w: number;\n}) {\n const { data: widget, isLoading } = useWidget({ channelSlug, widgetId });\n\n if (isLoading) {\n return (\n
    \n \n \n
    \n \n );\n }\n\n return widget ? (\n \n \n \n ) : (\n \n );\n}\n","import React from \"react\";\nimport \"./channels.css\";\nimport PageTitle from \"components/layout/PageTitle\";\nimport { useParams } from \"helpers/tixxt-router\";\nimport ToggleChannelFavoriteButton from \"components/shared/favoriteButtons/ToggleChannelFavoriteButton\";\nimport { updateChannelSubscription, useChannel } from \"components/channels/api\";\nimport { useChannelLayout } from \"components/channels/layout/api\";\nimport DropDown, { DropDownItem } from \"components/shared/DropDown\";\nimport { ChannelLayout } from \"./ChannelLayout\";\nimport { isString } from \"lodash\";\nimport Hint from \"components/shared/fields/Hint\";\nimport { faEllipsis } from \"@fortawesome/pro-regular-svg-icons\";\nimport useChannelSubscriptionToggle from \"components/shared/hooks/useChannelSubscriptionToggle\";\n\nexport default function ChannelPage({\n isAdministration = false,\n}: {\n isAdministration?: boolean;\n}) {\n const { channelSlug } = useParams();\n const { data: channel } = useChannel(channelSlug);\n const { data: layoutData, isLoading: layoutLoading } =\n useChannelLayout(channelSlug);\n const hasChangesString = sessionStorage.getItem(`${channelSlug}:hasChanges`);\n\n const hasChanges = isString(hasChangesString) && JSON.parse(hasChangesString);\n\n const dropdownItems: React.JSX.Element[] = [];\n\n const { subscribeChannel, unsubscribeChannel } = useChannelSubscriptionToggle(\n {\n channelSlug: channelSlug || \"\",\n onSuccessFunction: (subscribed) => {\n channelSlug && updateChannelSubscription(channelSlug, subscribed);\n },\n },\n );\n\n dropdownItems.push(\n ,\n {\n channel?.i.subscribed ? unsubscribeChannel() : subscribeChannel();\n }}\n />,\n );\n\n if (channel?.i.can.update && !isAdministration)\n dropdownItems.push(\n ,\n ,\n ,\n );\n\n return (\n
    \n {(channel?.status === \"draft\" || channel?.status === \"archived\") &&\n !channel?.i.can.update ? (\n

    {I18n.t(`js.channels.${channel.status}.body`)}

    \n ) : (\n <>\n {hasChanges && (\n
    \n \n
    \n )}\n \n {channel && !isAdministration && (\n
    \n {dropdownItems.length > 0 && (\n <>\n \n {dropdownItems}\n \n )}\n {channel && channel.i.subscribed && (\n \n )}\n
    \n )}\n
    \n \n \n )}\n
    \n );\n}\n","import React, { useEffect, useRef, useState, useCallback } from \"react\";\nimport { navigate, Redirect, useParams } from \"helpers/tixxt-router\";\nimport ChannelPage from \"components/channels/ChannelPage\";\nimport { useWidget } from \"components/channels/api\";\nimport \"./widgets.css\";\nimport PageLoading from \"components/shared/PageLoading\";\nimport { createPortal } from \"react-dom\";\nimport classNames from \"classnames\";\nimport { findIndex, includes } from \"lodash\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faChevronCircleLeft,\n faChevronCircleRight,\n} from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSpinner } from \"@fortawesome/pro-regular-svg-icons\";\n\nexport default function ShowWidgetPage() {\n const { channelSlug, widgetId } = useParams();\n const { data, isLoading } = useWidget({ channelSlug, widgetId });\n\n if (isLoading) {\n return ;\n }\n\n switch (data?.type) {\n case \"images\": {\n const images = data.images;\n return (\n <>\n \n {images && }\n \n );\n }\n default:\n // redirect to channel page for all widgets other than images, which should show gallery in overlay\n return window.Settings?.development ? (\n
    \n TODO Implement case for {data?.type} in ShowWidgetPage /\n WidgetPageByType\n
    \n ) : (\n \n );\n }\n}\n\ntype ImagesGalleryPageProps = {\n images: { id: string }[];\n title?: string;\n description?: string;\n};\n\nfunction ImagesGalleryPage({\n title,\n description,\n images,\n}: ImagesGalleryPageProps) {\n const { channelSlug } = useParams();\n const [lightbox, setLightbox] = useState<{\n id: string | null;\n open: boolean;\n loading: boolean;\n }>({ id: null, open: false, loading: false });\n const dialogRef = useRef(null);\n\n useEffect(() => {\n dialogRef.current?.showModal();\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = \"\";\n };\n }, []);\n\n const showNextImage = useCallback(\n (e: React.MouseEvent | KeyboardEvent) => {\n e.preventDefault();\n const currentIndex = findIndex(images, { id: lightbox.id || \"\" });\n\n if (currentIndex !== -1 && currentIndex + 1 < images.length) {\n const nextImage = images[currentIndex + 1];\n if (nextImage) {\n setLightbox({\n id: nextImage.id,\n open: true,\n loading: lightbox.id != nextImage.id,\n });\n }\n }\n },\n [images, lightbox.id],\n );\n\n const showPrevImage = useCallback(\n (e: React.MouseEvent | KeyboardEvent) => {\n e.preventDefault();\n const currentIndex = findIndex(images, { id: lightbox.id || \"\" });\n\n if (currentIndex > 0) {\n const prevImage = images[currentIndex - 1];\n if (prevImage) {\n setLightbox({\n id: prevImage.id,\n open: true,\n loading: lightbox.id != prevImage.id,\n });\n }\n }\n },\n [images, lightbox.id],\n );\n\n function handleKeyDown(event: KeyboardEvent) {\n const nextKeys = [\"ArrowRight\", \"ArrowUp\"];\n\n if (\n includes([...nextKeys, \"ArrowLeft\", \"ArrowDown\", \"Escape\"], event.key)\n ) {\n event.preventDefault();\n\n if (event.key === \"Escape\" && lightbox.open) {\n setLightbox((prevLightbox) => ({\n ...prevLightbox,\n open: false,\n }));\n } else {\n includes(nextKeys, event.key)\n ? showNextImage(event)\n : showPrevImage(event);\n }\n }\n }\n\n useEffect(() => {\n if (lightbox.open) {\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }\n }, [lightbox.open, showNextImage, showPrevImage]);\n\n return createPortal(\n {\n if (e.target == e.currentTarget)\n navigate(`/channels/${channelSlug}`, { replace: true });\n }}\n onClose={(e) => {\n if (e.target == e.currentTarget)\n navigate(`/channels/${channelSlug}`, { replace: true });\n }}\n >\n
    \n

    {title}

    \n
    {description}
    \n
    \n \n {images.map(({ id }) => (\n
    \n {\n e.preventDefault();\n setLightbox({ id, open: true, loading: lightbox.id != id });\n }}\n >\n \n \n
    \n ))}\n {lightbox && (\n {\n if (e.target == e.currentTarget)\n setLightbox({ ...lightbox, open: false });\n }}\n >\n {lightbox.id && (\n
    \n {findIndex(images, { id: lightbox.id }) > 0 && (\n \n )}\n setLightbox({ ...lightbox, loading: false })}\n />\n {findIndex(images, { id: lightbox.id }) < images.length - 1 && (\n \n )}\n
    \n )}\n
    \n \n
    \n \n )}\n \n ,\n document.body,\n );\n}\n","import React, { lazy, Suspense } from \"react\";\nimport { RouteObject } from \"helpers/tixxt-router\";\nimport ChannelsPage from \"./ChannelsPage\";\nimport ChannelPage from \"components/channels/ChannelPage\";\nimport ShowWidgetPage from \"components/channels/widgets/ShowWidgetPage\";\n\nconst ChannelNewPage = lazy(() => import(\"components/channels/ChannelNewPage\"));\nconst ChannelEditPage = lazy(\n () => import(\"components/channels/ChannelEditPage\"),\n);\nconst EditLayoutPage = lazy(\n () => import(\"components/channels/layout/EditLayoutPage\"),\n);\nconst EditDesignPage = lazy(\n () => import(\"components/channels/design/EditDesignPage\"),\n);\nconst WidgetsPage = lazy(\n () => import(\"components/channels/widgets/WidgetsPage\"),\n);\nconst NewWidgetPage = lazy(\n () => import(\"components/channels/widgets/NewWidgetPage\"),\n);\nconst EditWidgetPage = lazy(\n () => import(\"components/channels/widgets/EditWidgetPage\"),\n);\n\nconst channelRoutes: RouteObject[] = [\n { path: \"/channels\", element: },\n {\n path: \"/channels/new\",\n element: (\n \n \n \n ),\n },\n {\n path: \"/channels/:channelSlug/edit\",\n element: (\n \n \n \n ),\n },\n {\n path: \"/channels/:channelSlug\",\n element: ,\n },\n {\n path: \"/channels/:channelSlug/administration\",\n element: ,\n },\n {\n path: \"/channels/:channelSlug/layout/edit\",\n element: (\n \n \n \n ),\n },\n {\n path: \"/channels/:channelSlug/design/edit\",\n element: (\n \n \n \n ),\n },\n {\n path: \"/channels/:channelSlug/widgets\",\n element: (\n \n \n \n ),\n },\n {\n path: \"/channels/:channelSlug/widgets/new\",\n element: (\n \n \n \n ),\n },\n {\n path: \"/channels/:channelSlug/widgets/:widgetId/edit\",\n element: (\n \n \n \n ),\n },\n {\n path: \"/channels/:channelSlug/widgets/:widgetId\",\n element: (\n \n \n \n ),\n },\n];\n\nexport default channelRoutes;\n","import React from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport TextInput from \"components/shared/form/fields/TextInput\";\nimport FormActions from \"components/shared/form/fields/FormActions\";\nimport {\n onValidationError,\n resetValidationErrors,\n} from \"helpers/formValidations\";\nimport { useSaveBlog } from \"../api\";\nimport { Blog } from \"components/blogs/types\";\nimport RadioButton from \"components/shared/form/fields/RadioButton\";\nimport { useNavigate } from \"helpers/tixxt-router\";\n\ntype BlogFormData = {\n title: string;\n description: string;\n publish_as: string;\n};\n\nexport default function BlogForm({ blog }: { blog: Blog }) {\n const navigate = useNavigate();\n const { register, handleSubmit } = useForm({\n defaultValues: {\n title: blog.title || \"\",\n description: blog.description || \"\",\n publish_as: blog.publish_as || \"\",\n },\n });\n\n const { mutate: saveBlog } = useSaveBlog(blog, {\n onSuccess: () => {\n navigate(`/blogs/${blog.id}`);\n toastr.success(I18n.t(\"js.saving_successful\"));\n },\n onError: (error: { message: string }) => {\n toastr.error(error.message || I18n.t(\"js.saving_failure\"));\n },\n });\n\n function submit(data: BlogFormData) {\n resetValidationErrors();\n saveBlog({ blog: { id: blog.id, parent_id: blog.parent_id, ...data } });\n }\n\n return (\n \n \n \n \n {\n e.preventDefault();\n navigate(`/blogs/${blog.id}`);\n }}\n />\n \n );\n}\n","import React from \"react\";\nimport { useParams } from \"helpers/tixxt-router\";\nimport { useBlog } from \"components/blogs/api\";\nimport BlogForm from \"components/blogs/form/BlogForm\";\nimport PageTitle from \"components/layout/PageTitle\";\n\nexport default function BlogEditPage() {\n const { id } = useParams();\n const { data: blog, isLoading } = useBlog(id);\n\n if (isLoading) {\n return
    {I18n.t(\"js.loading\")}
    ;\n }\n\n return (\n
    \n \n {blog && }\n
    \n );\n}\n","import React from \"react\";\nimport { RouteObject } from \"helpers/tixxt-router\";\nimport BlogEditPage from \"components/blogs/BlogEditPage\";\n\nconst blogRoutes: RouteObject[] = [\n {\n path: \"/blogs/:id/edit\",\n element: ,\n },\n];\n\nexport default blogRoutes;\n","import React, { lazy, Suspense } from \"react\";\nimport { RouteObject } from \"helpers/tixxt-router\";\n\nconst ArticleEditPage = lazy(() => import(\"./ArticleEditPage\"));\nconst ArticleNewPage = lazy(() => import(\"./ArticleNewPage\"));\n\nconst articleRoutes: RouteObject[] = [\n {\n path: \"/blogs/:blog_id/articles/new\",\n element: (\n \n \n \n ),\n },\n {\n path: \"/blogs/:blog_id/articles/:id/edit\",\n element: (\n \n \n \n ),\n },\n];\n\nexport default articleRoutes;\n","import { useNavigate } from \"helpers/tixxt-router\";\nimport { useSelector } from \"react-redux\";\nimport { useEffect } from \"react\";\n\n// TODO move to store.tsx\ntype RootState = {\n network: {\n start_page?: string;\n };\n};\n\nexport default function RedirectToStartpage() {\n const navigate = useNavigate();\n const startPage = useSelector((state: RootState) => state.network.start_page);\n\n useEffect(() => {\n if (startPage) navigate(startPage, { replace: true });\n }, []);\n\n return null;\n}\n","import activitystreamsRoutes from \"components/activitystreams/routes\";\nimport appointmentsRoutes from \"components/appointments/routes\";\nimport messagesRoutes from \"components/messages/routes\";\nimport filesRoutes from \"components/files/routes\";\nimport tasksRoutes from \"components/tasks/routes\";\nimport globalSearchRoutes from \"components/globalSearch/routes\";\nimport administrationRoutes from \"components/administration/routes\";\nimport directoryRoutes from \"components/directory/routes\";\nimport membershipRoutes from \"components/memberships/routes\";\nimport groupRoutes from \"components/groups/routes\";\nimport onboardingRoutes from \"components/onboarding/routes\";\nimport invitesRoutes from \"components/invites/routes\";\nimport mapRoutes from \"components/memberMap/routes\";\nimport chatRoutes from \"components/chat/routes\";\nimport channelRoutes from \"components/channels/routes\";\nimport blogRoutes from \"components/blogs/routes\";\nimport articleRoutes from \"components/articles/routes\";\nimport RedirectToStartpage from \"components/tixxt/RedirectToStartpage\";\nimport React from \"react\";\n\nexport default [\n ...activitystreamsRoutes,\n ...appointmentsRoutes,\n ...messagesRoutes,\n ...filesRoutes,\n ...tasksRoutes,\n ...globalSearchRoutes,\n ...administrationRoutes,\n ...directoryRoutes,\n ...membershipRoutes,\n ...groupRoutes,\n ...onboardingRoutes,\n ...invitesRoutes,\n ...mapRoutes,\n ...chatRoutes,\n ...channelRoutes,\n ...blogRoutes,\n ...articleRoutes,\n { path: \"/\", element: },\n];\n","import { useEffect } from \"react\";\nimport { NavigateFunction, useNavigate } from \"helpers/tixxt-router\";\nimport {\n originalPushState,\n originalReplaceState,\n} from \"helpers/tixxt-router/history-events\";\n\nlet originalNavigate;\n\nfunction shimBackboneNavigate(navigate: NavigateFunction) {\n originalNavigate = Backbone.history.navigate;\n Backbone.history.navigate = function reactRouterNavigate(\n path: string,\n options?: { replace?: boolean; trigger?: boolean },\n ) {\n const currentPath = [\n location.pathname,\n location.search,\n location.hash,\n ].join(\"\");\n if (currentPath !== path) {\n debug(\n \"[BackboneHistoryShim] navigate(\",\n path,\n {\n replace: !!options?.replace,\n trigger: options?.trigger !== undefined && options.trigger,\n },\n \")\",\n );\n\n // Handle rare case when backbone wants to update the url without triggering anything\n if (options?.trigger !== undefined && !options?.trigger) {\n if (options?.replace) {\n originalReplaceState.call(history, null, \"\", path);\n } else {\n originalPushState.call(history, null, \"\", path);\n }\n } else {\n navigate(path, { replace: !!options?.replace });\n }\n }\n };\n}\n\nfunction restoreBackboneNavigate() {\n Backbone.history.navigate = originalNavigate;\n}\n\nexport default function BackboneHistoryShim() {\n const navigate = useNavigate();\n useEffect(() => {\n shimBackboneNavigate(navigate);\n return restoreBackboneNavigate;\n }, []);\n\n return null;\n}\n","import React, { useEffect } from \"react\";\nimport {\n matchRoutes,\n navigate,\n RouteObject,\n useRoutes,\n} from \"helpers/tixxt-router\";\nimport appRoutes from \"../../routes\";\nimport BackboneHistoryShim from \"components/tixxt/BackboneHistoryShim\";\nimport invariant from \"invariant\";\nimport { memoize } from \"lodash\";\nimport { getConfirmationMessage } from \"../../hooks/useInterceptorPrompt\";\n\nlet spaRoot: HTMLElement | null;\n\nconst routes = Preload.current_member ? appRoutes : [];\n\nexport default function TixxtContent() {\n const element = useRoutes(routes);\n\n useEffect(() => {\n if (element) toggleFrontend(\"spa\", { source: \"routes\" });\n }, [element]);\n\n return (\n <>\n {element}\n
    \n \n \n \n );\n}\n\nfunction TurboCompat({ routes }: { routes: RouteObject[] }) {\n useEffect(() => {\n function spaNavigateInstead(event) {\n // Cancel visit if confirmation is required but not given\n const confirmationMessage = getConfirmationMessage();\n if (confirmationMessage && !confirm(confirmationMessage)) {\n event.preventDefault();\n return;\n }\n\n // Turn turbo:visit into spa navigate\n const url = new URL(event.detail.url);\n const match = matchRoutes(routes, url.pathname);\n if (match && !match.forceTurbo) {\n event.preventDefault();\n navigate(url);\n }\n }\n\n window.addEventListener(\"turbo:before-visit\", spaNavigateInstead);\n return () => {\n window.removeEventListener(\"turbo:before-visit\", spaNavigateInstead);\n };\n }, []);\n return null;\n}\n\nfunction toggleFrontend(type: \"spa\" | \"turbo\", meta?: { source?: string }) {\n if (!spaRoot) {\n spaRoot = document.getElementById(\"spa-root\");\n invariant(spaRoot, \"spa-root missing\");\n }\n\n if (type == \"spa\") {\n if (spaRoot.classList.contains(\"hidden\")) {\n debug(`⚛️ toggleFrontend spa (source=${meta?.source})`);\n spaRoot.classList.toggle(\"hidden\", false);\n }\n document.getElementById(\"turbo-root\")?.classList.toggle(\"hidden\", true);\n } else if (type == \"turbo\") {\n if (!spaRoot.classList.contains(\"hidden\")) {\n debug(`⚡️ toggleFrontend turbo (source=${meta?.source})`);\n spaRoot.classList.toggle(\"hidden\", true);\n }\n document.getElementById(\"turbo-root\")?.classList.toggle(\"hidden\", false);\n }\n}\n\nexport const frontendByLocation = memoize(function (path: string) {\n if (matchRoutes(routes, path)) {\n return \"spa\";\n } else {\n return \"turbo\";\n }\n});\n\nwindow.addEventListener(\"popstate\", () => {\n toggleFrontend(frontendByLocation(location.pathname), { source: \"popstate\" });\n});\nwindow.addEventListener(\"turbo:render\", () => {\n toggleFrontend(frontendByLocation(location.pathname), {\n source: \"turbo:render\",\n });\n});\n\nfunction nativeLocaleLinks(event) {\n // prevent turbo from handling this link click\n const url = new URL(event[\"detail\"].url);\n if (url.searchParams.get(\"locale\")) event.preventDefault();\n}\n\nwindow.addEventListener(\"turbo:click\", nativeLocaleLinks);\n","import React from \"react\";\nimport { useParams, useRoutes } from \"helpers/tixxt-router\";\nimport GroupNavigation from \"components/layout/GroupNavigation\";\nimport { GroupNavigationPortal } from \"components/layout/portals\";\n\n/* This is used together with the backbone marionette frontend */\nexport default function TixxtGroupNavigation() {\n const params = useParams();\n const groupSlug = params.group_slug || params.groupSlug || params.group_id;\n\n if (groupSlug) return ;\n\n return null;\n}\n\n/* This is used to render the group navigation on backend rendered pages */\nexport function StaticTixxtGroupNavigation() {\n const elem = useRoutes([\n { path: \"/groups/:groupSlug\", element: },\n { path: \"/groups/:groupSlug/*\", element: },\n ]);\n\n if (!elem || Preload.current_group?.externally_visible) return null;\n\n return {elem};\n}\n","import { useParams, useRoutes } from \"helpers/tixxt-router\";\nimport React from \"react\";\nimport { ContextPageTitle } from \"components/layout/PageTitle\";\nimport { useSelector } from \"react-redux\";\nimport { State } from \"../../@types\";\nimport store from \"../../store\";\nimport { setTitle } from \"reducers/app\";\nimport { PageTitlePortal } from \"components/layout/portals\";\n\n/* This is used by Backbone to set a different title */\nwindow.setTixxtPageTitle = function setTixxtPageTitle(title: string): void {\n document\n .getElementById(\"static-page-title\")\n ?.classList.toggle(\"!hidden\", !!title);\n if ((store.getState() as State).app.title !== title)\n store.dispatch(setTitle(title));\n};\n\n/* This is used together with the backbone marionette frontend */\nexport default function TixxtPageTitle() {\n const title = useSelector((state: State) => state.app.title);\n const params = useParams();\n const groupSlug = params.group_slug || params.groupSlug || params.group_id;\n\n if (!title && !groupSlug) return null;\n\n return ;\n}\n\n/* This is used to render the group title on backend rendered pages */\nexport function StaticTixxtPageTitle() {\n const elem = useRoutes([\n { path: \"/groups/:groupSlug\", element: },\n { path: \"/groups/:groupSlug/pages/:pageSlug\", element: },\n { path: \"/groups/:groupSlug/*\", element: },\n { path: \"/apps/*\", element: },\n ]);\n\n if (!elem) return null;\n\n return {elem};\n}\n","import React, { useEffect, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport GenericErrorBoundary from \"components/shared/GenericErrorBoundary\";\nimport { restoreVisibility, restoreStaticChat } from \"layout/togglebar\";\n\nfunction createPortalComponent(\n rootId: string,\n callback?: (el: HTMLElement) => void,\n) {\n return function ({ children }) {\n const elemRef = useRef(null);\n\n useEffect(() => {\n function callCallback() {\n if (callback && elemRef.current) callback(elemRef.current);\n }\n\n document.addEventListener(\"turbo:render\", callCallback);\n callCallback();\n\n return () => {\n document.removeEventListener(\"turbo:render\", callCallback);\n };\n }, [callback, elemRef]);\n\n if (!elemRef.current) {\n elemRef.current = document.getElementById(rootId);\n while (elemRef.current?.firstChild)\n elemRef.current.removeChild(elemRef.current.firstChild);\n }\n\n if (!elemRef.current) return null;\n\n return createPortal(\n {children || null},\n elemRef.current,\n );\n };\n}\n\nconst HeaderPortal = createPortalComponent(\"header-root\");\nconst WallViewFilterPortal = createPortalComponent(\"wallview-filter-root\");\n\nconst UserbarPortal = createPortalComponent(\"userbar-root\");\nconst ChatbarPortal = createPortalComponent(\"chatbar-root\", (el) => {\n restoreVisibility(\"chatbar\", el);\n restoreStaticChat();\n});\nconst ContentPortal = createPortalComponent(\"spa-root\");\nconst GroupNavigationPortal = createPortalComponent(\"group-navigation-root\");\nconst PageTitlePortal = createPortalComponent(\"legacy-page-title-root\");\n\nexport {\n HeaderPortal,\n UserbarPortal,\n ChatbarPortal,\n ContentPortal,\n GroupNavigationPortal,\n PageTitlePortal,\n WallViewFilterPortal,\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 { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faUser,\n faUsers,\n faCircleUser,\n faComputerClassic,\n faTag,\n faBullhorn,\n} from \"@fortawesome/pro-regular-svg-icons\";\nimport React from \"react\";\nimport {\n ChannelEntry,\n GroupAdminEntry,\n GroupEntry,\n MemberEntry,\n} from \"components/directory/api\";\nimport { isEmpty } from \"lodash\";\nimport {\n DisabledOption,\n MembershipRole,\n PermissionPickable,\n PermissionPickableWithDisabled,\n SystemRole,\n ValueType,\n} from \"components/shared/DirectoryPicker/types\";\nimport { useQuery } from \"react-query\";\nimport classnames from \"classnames\";\nimport \"./optionRendering.css\";\n\n// Externally-visible signature, for compile time check that switch uses all types\nexport function throwBadType(entry: never): never;\n// Implementation signature, called if invalid type is provided during runtime\nexport function throwBadType(entry: PermissionPickableWithDisabled) {\n throw new Error(\n \"Unhandled option type: \" + entry.type + \" in \" + JSON.stringify(entry),\n );\n}\n\n/**\n * Turns a given option value into a react element\n * If display attributes (like name) are missing, they are fetched by the react components\n *\n * @param entry\n */\nexport function formatOptionLabel(\n entry: ValueType | PermissionPickableWithDisabled,\n) {\n if (!isOptionEnabled(entry)) return noOptionsMessage({ inputValue: \"\" });\n\n switch (entry.type) {\n case \"member\":\n return ;\n\n case \"group\":\n return ;\n\n case \"group_admin\":\n return ;\n\n case \"system_role\":\n return ;\n\n case \"membership_role\":\n return ;\n\n case \"channel\":\n return ;\n\n default:\n throwBadType(entry);\n }\n}\n\nfunction MemberOptionLabel({ id, name, images }: MemberEntry) {\n const { data, isLoading } = useQuery(`/members/${id}`, {\n enabled: !name,\n });\n\n return (\n
    \n {images ? (\n \n ) : (\n \n )}\n {isLoading\n ? I18n.t(\"js.loading\")\n : name || data?.name || I18n.t(\"js.memberships.deleted_name\")}\n
    \n );\n}\n\nfunction ChannelOptionLabel({ slug, title, image }: ChannelEntry) {\n const { data, isLoading } = useQuery(`/channels/${slug}`, {\n enabled: !slug,\n });\n\n return (\n
    \n {image._id ? (\n \n ) : (\n \n )}\n {isLoading ? I18n.t(\"js.loading\") : title || data?.title}\n
    \n );\n}\n\nfunction GroupOptionLabel({ id, name }: GroupEntry) {\n const { data, isLoading } = useQuery(`/groups/${id}`, {\n enabled: !name,\n });\n\n return (\n <>\n \n {isLoading\n ? I18n.t(\"js.loading\")\n : `${name || data?.name || I18n.t(\"js.groups.unknown_group\")} (${I18n.t(\n \"js.member_select.all_group_members\",\n )})`}\n \n );\n}\n\nfunction GroupAdminOptionLabel({ id, name }: GroupAdminEntry) {\n const { data, isLoading } = useQuery(`/groups/${id}`, {\n enabled: !name,\n });\n\n return (\n <>\n \n {isLoading\n ? I18n.t(\"js.loading\")\n : `${name || data?.name || I18n.t(\"js.groups.unknown_group\")} (${I18n.t(\n \"js.member_select.only_admins\",\n )})`}\n \n );\n}\n\nfunction SystemRoleOptionLabel({ id, name }: SystemRole) {\n return (\n <>\n \n {name || I18n.t(`js.permission_picker.system_roles.${id}`)}\n \n );\n}\n\nfunction MembershipRoleOptionLabel({\n id,\n name,\n parent_type,\n parent_id,\n}: MembershipRole) {\n const { data: groupData, isLoading } = useQuery(\n `/groups/${parent_id}`,\n {\n enabled: parent_type == \"group\" && !name,\n },\n );\n let data: Pick | undefined;\n if (parent_type == \"group\")\n data = groupData?.membership_roles.find((r) => r.id == id);\n else data = Preload.current_network.membership_roles.find((r) => r.id == id);\n\n return (\n <>\n \n {isLoading\n ? I18n.t(\"js.loading\")\n : name || data?.name || I18n.t(\"js.permission_picker.unknown_role\")}\n \n );\n}\n\nfunction isOptionEnabled(entry: ValueType): entry is PermissionPickable {\n return !(\"disabled\" in entry);\n}\n\nexport function isOptionDisabled(entry: ValueType): entry is DisabledOption {\n return !isOptionEnabled(entry);\n}\n\nexport const noOptionsMessage = ({ inputValue }) =>\n isEmpty(inputValue)\n ? I18n.t(\"js.plugins.select2.enter_more_characters.one\")\n : I18n.t(\"js.plugins.select2.no_match\");\n","import {\n GroupSearchDisabled,\n MemberSearchDisabled,\n MembershipRole,\n OptionGroup,\n PermissionPickableWithDisabled,\n} from \"components/shared/DirectoryPicker/types\";\nimport { throwBadType } from \"components/shared/DirectoryPicker/optionRendering\";\nimport { flatMap, map } from \"lodash\";\nimport { GroupAdminEntry } from \"components/directory/api\";\n\nexport function groupOptions(\n options: PermissionPickableWithDisabled[],\n): OptionGroup[] {\n const membersLabel = I18n.t(\"js.permission_picker.members.group_label\");\n const systemLabel = I18n.t(\"js.permission_picker.system_roles.group_label\");\n const networkMembershipRolesLabel = I18n.t(\n \"js.permission_picker.network_membership_roles.group_label\",\n );\n const channelLabel = I18n.t(\"js.directory_picker.channels.group_label\");\n\n const result: { [label: string]: PermissionPickableWithDisabled[] } = {};\n\n options.forEach((entry) => {\n switch (entry.type) {\n case \"member\": {\n if (!result[membersLabel]) result[membersLabel] = [];\n result[membersLabel].push(entry);\n break;\n }\n case \"group\": {\n const pluralName = entry.category.plural_name;\n if (!result[pluralName]) result[pluralName] = [];\n result[pluralName].push(entry);\n break;\n }\n case \"group_admin\": {\n const pluralName = entry.category.plural_name;\n if (!result[pluralName]) result[pluralName] = [];\n result[pluralName].push(entry);\n break;\n }\n case \"system_role\": {\n if (!result[systemLabel]) result[systemLabel] = [];\n result[systemLabel].push(entry);\n break;\n }\n case \"membership_role\": {\n if (!result[networkMembershipRolesLabel])\n result[networkMembershipRolesLabel] = [];\n result[networkMembershipRolesLabel].push(entry);\n break;\n }\n case \"channel\": {\n if (!result[channelLabel]) result[channelLabel] = [];\n result[channelLabel].push(entry);\n break;\n }\n default:\n throwBadType(entry);\n }\n });\n\n return map(result, (options, label) => ({ label, options }));\n}\n\nexport function expandMembershipRoles(\n groupedEntries: OptionGroup[],\n): OptionGroup[] {\n return map(groupedEntries, (group: OptionGroup) => {\n const options = flatMap(\n group.options,\n (option): PermissionPickableWithDisabled[] => {\n return option.type == \"group\"\n ? [\n option,\n {\n ...option,\n type: \"group_admin\",\n } as GroupAdminEntry,\n ...map(\n option.membership_roles,\n (role): MembershipRole => ({\n id: role.id,\n type: \"membership_role\",\n name: role.name,\n parent_id: role.id,\n parent_type: \"group\",\n }),\n ),\n ]\n : [option];\n },\n );\n return { ...group, options };\n });\n}\n\nexport function disabledOptions(\n inputValue: string,\n endpoint: string,\n): PermissionPickableWithDisabled[] {\n if (inputValue.length > 0) return [];\n\n const disabledOptions: PermissionPickableWithDisabled[] = [];\n const memberSearchDisabled: MemberSearchDisabled = {\n id: \"member_disabled\",\n type: \"member\",\n disabled: true,\n };\n disabledOptions.push(memberSearchDisabled);\n\n if (endpoint != \"/directory/members\") {\n const groupSearchDisabled: GroupSearchDisabled = {\n id: \"group_disabled\",\n type: \"group\",\n disabled: true,\n category: {\n plural_name: \"Gruppen\",\n },\n membership_roles: [],\n };\n disabledOptions.push(groupSearchDisabled);\n }\n\n return disabledOptions;\n}\n","import React, { useCallback } from \"react\";\nimport Async from \"react-select/async\";\nimport { ActionMeta, MultiValue, SingleValue } from \"react-select\";\nimport {\n formatOptionLabel,\n isOptionDisabled,\n noOptionsMessage,\n} from \"components/shared/DirectoryPicker/optionRendering\";\nimport {\n OptionGroup,\n PermissionPickableWithDisabled,\n ValueType,\n} from \"components/shared/DirectoryPicker/types\";\nimport { isEmpty } from \"lodash\";\nimport { DirectoryEntry, fetchDirectory } from \"components/directory/api\";\nimport {\n disabledOptions,\n expandMembershipRoles,\n groupOptions,\n} from \"components/shared/DirectoryPicker/optionLoading\";\n\nfunction useDirectoryFetcher(\n endpoint = \"/directory\",\n query = {},\n extraOptions?: (\n inputValue: string,\n ) =>\n | Promise\n | PermissionPickableWithDisabled[],\n) {\n return useCallback(\n async function directoryFetcher(\n inputValue: string,\n ): Promise {\n try {\n let entries: DirectoryEntry[];\n if (isEmpty(inputValue)) entries = [];\n else\n entries = (\n await fetchDirectory(\n {\n ...query,\n q: inputValue,\n },\n endpoint,\n )\n ).entries;\n\n const extraOptionValues = extraOptions\n ? await extraOptions(inputValue)\n : [];\n\n return expandMembershipRoles(\n groupOptions([\n ...extraOptionValues,\n ...disabledOptions(inputValue, endpoint),\n ...entries,\n ]),\n );\n } catch (e) {\n console.error(e);\n throw e;\n }\n },\n [endpoint, query],\n );\n}\n\nexport type DirectoryPickerProps = {\n value?: ValueType[];\n onChange?: (\n newValue: MultiValue | SingleValue,\n actionMeta: ActionMeta,\n ) => void;\n multi?: boolean;\n placeholder?: string;\n endpoint?: string;\n query?: { [param: string]: string | boolean };\n showDefaultOptions?: boolean;\n disabled?: boolean;\n extraOptions?: (\n inputValue: string,\n ) =>\n | Promise\n | PermissionPickableWithDisabled[];\n};\n\n/**\n * A UI element that enables the selection of users or users+groups, optionally with membership roles, on the network or group level.\n *\n * @param {Object} props\n * @param {string} props.endpoint Defaults to /directory, could also be /directory/members or /directory/:group_category_slug or /directory/channels\n * @param {string} props.query Extra query for the request to endpoint, make sure that this is memoized\n */\nexport default React.forwardRef(function DirectoryPicker(\n {\n value,\n onChange,\n multi,\n placeholder,\n endpoint,\n query,\n extraOptions,\n showDefaultOptions = true,\n disabled,\n }: DirectoryPickerProps,\n // react-hook-form adds ref prop which we dont need but leads to warning unless we accept it with React.forwardRef\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _ref,\n) {\n const loadDirectoryOptions = useDirectoryFetcher(\n endpoint,\n query,\n extraOptions,\n );\n\n return (\n \n cacheOptions\n loadOptions={loadDirectoryOptions}\n formatOptionLabel={formatOptionLabel}\n isMulti={multi}\n placeholder={placeholder || placeholderForEndpoint(endpoint)}\n isOptionDisabled={isOptionDisabled}\n defaultOptions={showDefaultOptions}\n noOptionsMessage={noOptionsMessage}\n getOptionValue={getOptionValue}\n value={value}\n onChange={onChange}\n className=\"form-select-container\"\n classNamePrefix=\"form-select\"\n isDisabled={disabled}\n unstyled\n />\n );\n});\n\n// This representation is only used internally in react-select\nfunction getOptionValue(entry: ValueType) {\n return `${entry.type}/${entry.id}`;\n}\n\nfunction placeholderForEndpoint(endpoint: undefined | string): string {\n switch (endpoint) {\n case \"/directory/members\":\n return I18n.t(\"js.member_select.placeholder\");\n case \"/directory/channels\":\n return I18n.t(\"js.channel_select.placeholder\");\n default:\n return I18n.t(\"js.audience_select.placeholder\");\n }\n}\n","import { fetchApi } from \"helpers/reactQueryApi\";\nimport { stringify } from \"query-string\";\n\nexport type MemberEntry = {\n id: string;\n type: \"member\";\n name: string;\n path?: string;\n images?: {\n small: string;\n medium: string;\n large: string;\n \"40x40@2\": string;\n \"64x64@2\": string;\n };\n profile?: { [key: string]: any };\n detection_profile_field?: null | string;\n};\n\nexport type ChannelEntry = {\n id: string;\n slug: string;\n type: \"channel\";\n title: string;\n status: string;\n path?: string;\n image: {\n _id: string;\n };\n};\n\nexport type GroupEntry = {\n id: string;\n type: \"group\";\n name: string;\n url?: string;\n profile_image?: string | null;\n category: {\n id: string;\n name: string;\n plural_name: string;\n };\n membership_roles: {\n id: string;\n slug?: string;\n name: string;\n plural_name: string;\n color?: string;\n type?: \"membershipRole\";\n }[];\n};\n\nexport type GroupAdminEntry = {\n id: string;\n type: \"group_admin\";\n name: string;\n url?: string;\n profile_image?: string | null;\n category: {\n id: string;\n name: string;\n plural_name: string;\n };\n membership_roles: {\n id: string;\n slug?: string;\n name: string;\n plural_name: string;\n color?: string;\n type?: \"membershipRole\";\n }[];\n};\n\nexport type DirectoryEntry = MemberEntry | GroupEntry | GroupAdminEntry;\n\nexport async function fetchDirectory(\n query: {\n q?: string;\n include_membership_roles?: boolean;\n },\n endpoint?: string,\n): Promise<{ entries: DirectoryEntry[] }> {\n return await fetchApi(`${endpoint || \"/directory\"}?${stringify(query)}`);\n}\n","import { IconProp } from \"@fortawesome/fontawesome-svg-core\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport classNames from \"classnames\";\nimport React, { MouseEventHandler, useEffect } from \"react\";\nimport classnames from \"classnames\";\nimport { faChevronRight, faEllipsis } from \"@fortawesome/pro-regular-svg-icons\";\nimport useTooltip from \"../../hooks/useTooltip\";\n\ntype DropDownArgs = {\n children: React.ReactNode;\n alignment?: \"start\" | \"end\";\n className?: string;\n};\n\nfunction DropDown({ children, className, alignment = \"end\" }: DropDownArgs) {\n // make sure to close dropdowns on body click\n useEffect(() => {\n const handleBodyClick = () => {\n const elements = document.querySelectorAll(\n \".tixxt__dropdown.dropdown-menu\",\n );\n elements.forEach((element) => {\n element.classList.remove(\"show\");\n });\n };\n\n document.body.addEventListener(\"click\", handleBodyClick);\n\n return () => {\n document.body.removeEventListener(\"click\", handleBodyClick);\n };\n }, []);\n\n return (\n \n {children}\n \n );\n}\n\ntype DropDownItemArgs = {\n children?: React.ReactNode;\n url?: string;\n icon?: IconProp;\n text?: string;\n additional?: React.ReactNode;\n linkStyle?: string;\n iconStyle?: React.CSSProperties;\n method?: string;\n confirm?: string;\n className?: string;\n iconClassName?: string;\n onSelect?: MouseEventHandler;\n title?: string;\n dividerTop?: boolean;\n dividerBottom?: boolean;\n};\n\nexport function DropDownItem({\n children,\n url,\n icon,\n text,\n additional,\n linkStyle,\n iconStyle,\n method,\n confirm,\n className,\n iconClassName,\n onSelect,\n title,\n dividerTop,\n dividerBottom,\n}: DropDownItemArgs) {\n const ItemWrapperComponent = title ? ItemWrapperWithTooltip : ItemWrapper;\n\n return (\n <>\n {dividerTop &&
  • }\n \n {children ? (\n children\n ) : (\n {\n if (onSelect) {\n e.stopPropagation();\n onSelect(e);\n }\n }}\n >\n \n {icon && (\n \n )}\n {text && {text}}\n {additional}\n \n \n )}\n \n {dividerBottom &&
  • }\n \n );\n}\n\ntype ItemWrapperProps = {\n className?: string;\n title?: string;\n children: React.ReactNode;\n};\n\nfunction ItemWrapperWithTooltip({\n className,\n title,\n children,\n}: ItemWrapperProps) {\n const tooltipRef = useTooltip();\n\n return (\n
  • \n {children}\n
  • \n );\n}\n\nfunction ItemWrapper({ className, title, children }: ItemWrapperProps) {\n return (\n
  • \n {children}\n
  • \n );\n}\n\ntype DropDownSubMenuArgs = {\n text: string;\n children: React.ReactNode;\n className?: string;\n icon?: IconProp;\n iconClassName?: string;\n side?: \"left\" | \"right\";\n dividerTop?: boolean;\n dividerBottom?: boolean;\n};\n\nexport function DropDownSubMenu({\n text,\n children,\n className,\n icon,\n side = \"right\",\n dividerTop,\n dividerBottom,\n}: DropDownSubMenuArgs) {\n return (\n <>\n {dividerTop &&
  • }\n
  • \n
    \n \n {icon && }\n {text}\n \n \n
    \n
  • \n {dividerBottom &&
  • }\n \n );\n}\n\ntype DropdownToggleArgs = {\n title?: string;\n active?: boolean;\n disabled?: boolean;\n small?: boolean;\n icon?: IconProp;\n className?: string;\n iconClassName?: string;\n buttonType?: \"light\" | \"primary\" | \"danger\" | \"normal\";\n children?: React.ReactNode;\n};\n\nexport function DropDownToggle({\n active = false,\n disabled = false,\n small = false,\n title,\n icon,\n className,\n buttonType = \"light\",\n iconClassName,\n children,\n}: DropdownToggleArgs) {\n return (\n e.stopPropagation()}\n >\n \n {children}\n \n );\n}\n\nDropDown.Item = DropDownItem;\nDropDown.SubMenu = DropDownSubMenu;\nDropDown.Toggle = DropDownToggle;\nexport default DropDown;\n","import React from \"react\";\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: string) {\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({\n extension,\n muted = false,\n className,\n}: {\n extension: string;\n muted?: boolean;\n className?: string;\n}) {\n const icon = chooseFileIcon(extension);\n\n return (\n \n );\n}\n\nexport default FileIcon;\n","import React, { useState } from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faTrashCan as faRegularTrashCan,\n faLock as faRegularLock,\n faEye as faRegularEye,\n faArrowDownToBracket as faRegularArrowDownToBracket,\n faTimes as faRegularTimes,\n} from \"@fortawesome/pro-regular-svg-icons\";\nimport { faFile as faSolidFile } from \"@fortawesome/pro-solid-svg-icons\";\nimport FileIcon from \"components/shared/FileIcon\";\nimport { addDays, isAfter } from \"date-fns\";\nimport { AppointmentFile } from \"../../@types/appointments\";\nimport { includes } from \"lodash\";\nimport classNames from \"classnames\";\nimport { useMutation } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\n\nexport default function FileRow(file: AppointmentFile) {\n const [showLockAction, setShowLockAction] = useState(false);\n const [isLocked, setIsLocked] = useState(\n file.locked_until\n ? isAfter(new Date(file.locked_until), new Date())\n : false,\n );\n\n const { mutate: lock } = useMutation(\n () =>\n fetchApi(`/api/storage/${file.url}/lock`, {\n method: \"PUT\",\n body: {\n locked_unitl: addDays(\n new Date(),\n Preload.current_network.config.files.default_lock_period_in_days,\n ),\n },\n }),\n {\n onSuccess: () => {\n setShowLockAction(false);\n setIsLocked(true);\n },\n },\n );\n\n const isOpenable =\n includes([\"application/pdf\", \"text/html\"], file.content_type) ||\n file.content_type?.indexOf(\"image/\") === 0 ||\n file.content_type?.indexOf(\"text/\") === 0;\n\n const resourceUrl = `/api/storage/files/${file.id}/get/${encodeURIComponent(\n file.original_filename || file.name,\n )}?_=${\n file.updated_at ? new Date(file.updated_at).valueOf() : Date.now().valueOf()\n }`;\n\n return (\n <>\n \n {!file.name && !file.url ? (\n <>\n \n \n \n \n \n {I18n.t(\"js.files.show.deleted_file_name\")}\n \n \n ) : (\n <>\n \n \n {isLocked && (\n \n )}\n {file.name}\n \n \n )}\n \n {isOpenable && (\n \n \n \n )}\n {\n file.can.lock && !isLocked && setShowLockAction(true);\n }}\n target=\"_blank\"\n title={I18n.t(\"js.files.show.download_file\")}\n aria-label={I18n.t(\"js.files.show.download_file\")}\n rel=\"noreferrer\"\n >\n \n \n \n
  • \n \n \n {I18n.t(\"js.files.show.lock_on_download_hint_short\")}\n {\n e.preventDefault();\n lock();\n }}\n >\n {I18n.t(\"js.files.show.lock_on_download_yes\")}\n \n \n \n {\n e.preventDefault();\n setShowLockAction(false);\n }}\n >\n \n \n \n \n \n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./Flash.css\";\n\ntype Props = {\n alert: string;\n children: string;\n rootId?: string;\n};\n\nexport default function Flash({\n alert = \"success\",\n children,\n rootId = \"spa-root\",\n}: Props) {\n const [close, closeNotification] = useState(false);\n\n useEffect(() => {\n setTimeout(() => closeNotification(true), 5000);\n }, []);\n\n return ReactDOM.createPortal(\n
    \n
    \n \n {children}\n \n ×\n \n
    \n
    \n ,\n document.getElementById(rootId) as HTMLElement,\n );\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport classNames from \"classnames\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faFolder,\n faUsers,\n faEarthEurope,\n} from \"@fortawesome/pro-regular-svg-icons\";\n\nconst FolderIcons = {\n folder: faFolder,\n root_folder: faUsers,\n activitystream_folder: faEarthEurope,\n};\n\ntype FolderIconArgs = {\n type?: string;\n muted?: boolean;\n className?: string;\n};\nfunction FolderIcon({ type, muted, className }: FolderIconArgs) {\n return (\n \n );\n}\nFolderIcon.propTypes = { type: PropTypes.string, muted: PropTypes.bool };\n\nexport default FolderIcon;\n","import React, { useRef, useState, useEffect } from \"react\";\nimport classNames from \"classnames\";\n\ninterface FullSizeContentTypes {\n children: ({ height }: { height: number }) => React.ReactNode;\n className?: string;\n}\n\nfunction FullSizeContent({ children, className }: FullSizeContentTypes) {\n const ref = useRef(null);\n const [style, setStyle] = useState<{ height: number }>();\n\n useEffect(() => {\n function updateStyle() {\n if (!ref.current) return;\n if (ref.current.offsetTop == 0) return;\n setStyle({\n height: window.innerHeight - ref.current.offsetTop,\n });\n }\n\n updateStyle();\n window.addEventListener(\"resize\", updateStyle);\n return () => {\n window.removeEventListener(\"resize\", updateStyle);\n };\n }, [ref.current]);\n\n return (\n
    \n {ref.current && style && children(style)}\n
    \n );\n}\n\nexport default FullSizeContent;\n","import React from \"react\";\n\ninterface GenericErrorBoundaryTypes {\n children: React.ReactNode;\n headless?: boolean;\n}\n\nclass GenericErrorBoundary extends React.Component {\n state: {\n hasError: boolean;\n };\n\n constructor(props: GenericErrorBoundaryTypes) {\n super(props);\n this.state = { hasError: false };\n }\n\n componentDidCatch(error, info) {\n // Display fallback UI\n this.setState({ hasError: true });\n // You can also log the error to an error reporting service\n // logErrorToMyService(error, info);\n debug(\"Caught at ErrorBoundary\", error, info);\n }\n\n render() {\n if (this.state.hasError && this.props.headless) return null;\n\n if (this.state.hasError) {\n // You can render any custom fallback UI\n return (\n
    {I18n.t(\"js.generic_error\")}
    \n );\n }\n return this.props.children;\n }\n}\n\nexport default GenericErrorBoundary;\n","import React from \"react\";\nimport MarkdownTranslation from \"components/shared/MarkdownTranslation\";\nimport classNames from \"classnames\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCircleInfo } from \"@fortawesome/pro-regular-svg-icons\";\n\nfunction InfoText({\n translation,\n className,\n showIcon = true,\n small = false,\n}: {\n translation: string;\n showIcon?: boolean;\n small?: boolean;\n className?: string;\n}) {\n return (\n \n {showIcon && (\n \n )}\n \n \n );\n}\n\nexport default InfoText;\n","import React from \"react\";\n\nexport default function Loading() {\n return (\n
    \n \n
    \n );\n}\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, { ReactNode, useEffect } from \"react\";\nimport { connect } from \"react-redux\";\nimport Async from \"react-select/async\";\nimport { stringify } from \"query-string\";\nimport { map, isEmpty, get, keys, isEqual, filter, forEach } from \"lodash\";\n\nimport { createApiAction } from \"helpers/api\";\nimport { showNameWithProfileField } from \"components/memberships/MemberNameWithAdditions\";\nimport { FieldElement } from \"react-hook-form\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faUser,\n faUsers,\n faChevronRight,\n} from \"@fortawesome/pro-regular-svg-icons\";\n\nconst fetchMembers = createApiAction({\n baseType: \"FETCH_MEMBERS\",\n endpoint: ({\n groupSlug,\n includeConsumers,\n input,\n excludeGroupMembersOf,\n recipientId,\n }) => {\n const params = isEqual(input, recipientId) ? {} : { q: input };\n\n if (includeConsumers) Reflect.set(params, \"include_consumers\", true);\n if (!isEmpty(excludeGroupMembersOf))\n Reflect.set(params, \"exclude_group_members_of\", excludeGroupMembersOf);\n\n return [\n groupSlug ? `/groups/${groupSlug}` : null,\n `/members?`,\n stringify(params),\n ].join(\"\");\n },\n});\n\nconst fetchMembersAndGroups = createApiAction({\n baseType: \"FETCH_MEMBERS_AND_GROUPS\",\n endpoint: ({ input, recipientId, includeMembershipRoles = false }) =>\n `/directory?${\n isEqual(input, recipientId)\n ? \"\"\n : stringify({\n q: input,\n include_membership_roles: includeMembershipRoles,\n })\n }`,\n});\n\nconst optionsKey = (key) => {\n switch (key) {\n case \"member\":\n return I18n.t(\"js.member_select.options.key.member\");\n case \"group\":\n return I18n.t(\"js.member_select.options.key.group\");\n default:\n return key;\n }\n};\n\ntype options = Array<{\n value: string | undefined;\n label: Array;\n type: string;\n}>;\nconst groupOptions = (options: options) => {\n const groupedOptions = {\n member: [] as options,\n group: [] as options,\n other: [] as options,\n };\n\n forEach(options, (option) => {\n switch (option.type) {\n case \"member\":\n groupedOptions[\"member\"].push(option);\n break;\n case \"membershipRole\":\n case \"group\":\n groupedOptions[\"group\"].push(option);\n break;\n default:\n groupedOptions[\"other\"].push(option);\n }\n });\n return groupedOptions;\n};\n\ntype Entries = Entry[];\ntype Entry = {\n type: string;\n name: string;\n membership_roles: MembershipRole[];\n};\n\nexport type Value = {\n value?: string;\n label?: string | ReactNode[];\n type?: string;\n};\n\ntype MembershipRole = {\n type: string;\n name: string;\n membership_status_of_current_member?: string;\n id?: string;\n detection_profile_field?: string;\n is_external?: boolean;\n};\n\nconst mergeEntries = (entries: Entries) => {\n const mergedEntries: Entries[number][\"membership_roles\"][number][] = [];\n\n forEach(entries, (entry) => {\n if (entry.type === \"group\") {\n const name = `${entry.name} (${I18n.t(\n \"js.member_select.all_group_members\",\n )})`;\n mergedEntries.push({ ...entry, name });\n\n if (entry.membership_roles && entry.membership_roles.length > 0) {\n forEach(entry.membership_roles, (membershipRole) => {\n const name = entry.name + \" - \" + membershipRole.name;\n mergedEntries.push({ ...membershipRole, name });\n });\n }\n } else {\n mergedEntries.push(entry);\n }\n });\n return mergedEntries;\n};\n\ninterface MemberSelectTypes {\n groupSlug?: string;\n includeConsumers?: boolean;\n includeMembershipRoles?: boolean;\n excludeGroupMembersOf?: string;\n\n fetchMembers?(...args: unknown[]): Promise<{\n payload: Array<{\n displayName: string;\n id: string;\n name: string;\n detection_profile_field: string;\n is_external: boolean;\n }>;\n }>;\n\n fetchMembersAndGroups?(...args: unknown[]): Promise;\n\n input?: {\n onChange: (selectedEntries: Value[]) => void;\n onBlur?(...args: unknown[]): unknown;\n value?: Value[] | undefined;\n };\n onChange?: (selectedEntries: Value[]) => void;\n multi: boolean;\n membersAndGroups?: boolean;\n className?: string;\n wrapperStyle?: Record;\n value?: Value[] | undefined;\n recipientId?: string;\n onlyMyGroups?: boolean;\n id?: string;\n field?: FieldElement;\n}\n\nfunction MemberSelect(props: MemberSelectTypes) {\n // Local fetch through redux api middleware for now\n // Can be optimized later i.e. by using redux state to memoize stuff\n function loadOptions(input): Promise {\n return new Promise((resolve, reject) => {\n const {\n groupSlug,\n includeConsumers,\n includeMembershipRoles,\n excludeGroupMembersOf,\n recipientId,\n onlyMyGroups,\n } = props;\n props.membersAndGroups\n ? props\n .fetchMembersAndGroups?.({\n input,\n recipientId,\n includeMembershipRoles,\n })\n .then((success) => {\n if (!success) {\n return reject(\"error\");\n }\n\n const entries = get(\n success,\n \"payload.entries\",\n ) as unknown as Entries;\n\n const mergedEntries = mergeEntries(entries);\n\n const mappedOptions = map(\n onlyMyGroups\n ? filter(mergedEntries, (e) =>\n e.membership_status_of_current_member\n ? isEqual(\n e.membership_status_of_current_member,\n \"member\",\n )\n : e,\n )\n : mergedEntries,\n (entry: MembershipRole) => {\n if (recipientId && isEqual(entry.id, recipientId)) {\n props.input?.onChange?.([\n {\n value: entry.id,\n label: [\n ,\n \" \",\n entry.name,\n ],\n type: \"member\",\n },\n ]);\n }\n\n const icon = {\n member: faUser,\n group: faUsers,\n standard: faChevronRight,\n };\n\n return {\n value: entry.id,\n label: [\n ,\n \" \",\n showNameWithProfileField({\n name: entry.name,\n detectionProfileField: entry.detection_profile_field,\n isExternal: entry.is_external,\n }),\n ],\n type: entry.type,\n };\n },\n );\n\n const groupedOptions = groupOptions(\n mappedOptions as unknown as {\n value: string | undefined;\n label: React.ReactNode[];\n type: string;\n }[],\n );\n\n const options = map(keys(groupedOptions), (key) => ({\n label: optionsKey(key),\n options: groupedOptions[key],\n }));\n\n resolve(options);\n })\n .catch(reject)\n : props\n .fetchMembers?.({\n groupSlug,\n includeConsumers,\n input,\n excludeGroupMembersOf,\n recipientId,\n })\n .then((success) => {\n if (!success) {\n return reject(\"error\");\n }\n\n const options = map(success.payload, (m) => {\n if (isEqual(m.id, recipientId)) {\n props.input?.onChange?.([\n { value: m.id, label: m.displayName },\n ]);\n }\n return {\n value: m.id,\n label: showNameWithProfileField({\n name: m.displayName,\n detectionProfileField: m.detection_profile_field,\n isExternal: m.is_external,\n }),\n };\n });\n\n resolve(options);\n })\n .catch(reject);\n });\n }\n\n useEffect(() => {\n if (props.recipientId) loadOptions(props.recipientId);\n }, []);\n\n const {\n input,\n multi,\n wrapperStyle,\n id,\n field,\n membersAndGroups,\n ...selectProps\n } = props;\n const asyncPropsOptions = {\n ...selectProps,\n isMulti: multi,\n loadOptions,\n placeholder: membersAndGroups\n ? I18n.t(\"js.audience_select.placeholder\")\n : I18n.t(\"js.member_select.placeholder\"),\n loadingMessage: () => I18n.t(\"js.plugins.select2.searching\"),\n noOptionsMessage: ({ inputValue }) =>\n isEmpty(inputValue)\n ? I18n.t(\"js.plugins.select2.enter_more_characters.one\")\n : I18n.t(\"js.plugins.select2.no_match\"),\n inputId: id,\n };\n if (input) {\n // for use with redux form\n return (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Should be rewritten\n input?.onBlur?.(input.value)}\n openMenuOnFocus\n styles={{\n container: (base) => ({ ...base, ...wrapperStyle, \"z-index\": 3 }),\n }}\n />\n );\n } else {\n // for use without redux form\n return (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Should be rewritten\n \n );\n }\n}\n\nexport default connect(null, { fetchMembers, fetchMembersAndGroups })(\n MemberSelect,\n);\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 { faXmark } from \"@fortawesome/pro-solid-svg-icons\";\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 React from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSpinner } from \"@fortawesome/pro-regular-svg-icons\";\n\nexport default function PageLoading() {\n return (\n
    \n \n {I18n.t(\"js.loading\")}\n
    \n );\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { range } from \"lodash\";\nimport { parse, stringify } from \"query-string\";\n\n// Example:\n// page: 10, totalPages: 20, width: 3\n// => min: 10-3-1 => 6\n// => max: 10+3 => 13\n// => range: 0,1,2,3,4,5,6,7,8,9,\"10\",11,12,13,14,15,16,17,18,19,20\n// => slice: min, max => 6,13 => 6,7,8,9,10,11,12\n// => plusOne: 7,8,9,\"10\",11,12,13\n// => add null (for ...)\n// final window: null,7,8,9,\"10\",11,12,13,null\nconst plusOne = (i) => i + 1;\nconst pages = ({ page, totalPages, width = 3 }) => {\n const cappedPage = Math.min(page, totalPages); // in case we ended up on page greater than total page count\n const min = Math.max(0, cappedPage - width - 1);\n const max = Math.min(totalPages, cappedPage + width);\n const window = range(0, totalPages).slice(min, max).map(plusOne);\n if (window.length === 0) {\n window.push(1);\n }\n if (max < totalPages) {\n window.push(null);\n }\n if (min > 0) {\n window.unshift(null);\n }\n return window;\n};\n\ninterface PaginationButtonTypes {\n disabled: boolean;\n active?: boolean;\n page: number;\n\n onPaginate(...args: unknown[]): unknown;\n\n children?: React.ReactNode;\n}\n\nfunction PaginationButton({\n disabled,\n active,\n page,\n onPaginate,\n children,\n}: PaginationButtonTypes) {\n const query = stringify({ ...parse(location.search), page });\n const className = classNames(\"btn btn-light border-0\", { disabled, active });\n\n return (\n
  • \n {active || disabled ? (\n {children}\n ) : (\n \n {children}\n \n )}\n
  • \n );\n}\n\ntype PaginationProps = {\n page: number;\n totalPages?: number;\n onPaginate: (page: number) => void;\n loading: boolean;\n width?: number;\n hideIfEmpty?: boolean;\n className?: string;\n};\n\nfunction Pagination({\n page,\n totalPages = 1,\n onPaginate,\n loading,\n width = 2,\n hideIfEmpty,\n className,\n}: PaginationProps) {\n const handlePaginate = (event) => {\n event.preventDefault();\n onPaginate(event.currentTarget.dataset.page * 1);\n window.scrollTo({ top: 0 });\n };\n\n if (hideIfEmpty && totalPages && totalPages <= 1) return null;\n\n return (\n
      \n \n \n \n \n \n \n \n\n {pages({ page, totalPages, width }).map((n, index) => (\n \n {loading && n === page ? (\n \n ) : n === null ? (\n \n ) : (\n {n}\n )}\n \n ))}\n\n = totalPages}\n page={page + 1}\n onPaginate={handlePaginate}\n >\n \n \n = totalPages}\n page={totalPages}\n onPaginate={handlePaginate}\n >\n \n \n \n
    \n );\n}\n\nexport default Pagination;\n","import React from \"react\";\nimport {\n MembershipRole,\n PermissionPickableWithDisabled,\n SystemRole,\n} from \"components/shared/DirectoryPicker/types\";\nimport DirectoryPicker from \"components/shared/DirectoryPicker\";\nimport { includes } from \"lodash\";\n\nconst query = { include_membership_roles: true };\n\n/**\n * UI element analogous to the selection of memberships in the Appointment-Create form (invitations) to assign the following users/roles to an action:\n *\n * - Network administrators\n * - Groups (all members)\n * - Groups (administrators only)\n * - Groups (membership role)\n * - Network-wide memberships role\n * - Individual memberships\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport default React.forwardRef(function PermissionPicker(props, _ref) {\n async function extraOptions(\n inputValue: string,\n ): Promise {\n return [...systemRoles(inputValue), ...networkMembershipRoles(inputValue)];\n }\n\n function systemRoles(inputValue: string): PermissionPickableWithDisabled[] {\n const systemRoles: SystemRole[] = [\n {\n type: \"system_role\",\n id: \"network_admin\",\n name: I18n.t(\"js.permission_picker.system_roles.network_admin\"),\n },\n ];\n return filterByInputValue(systemRoles, inputValue);\n }\n\n return (\n \n );\n});\n\nexport function networkMembershipRoles(\n inputValue: string,\n): PermissionPickableWithDisabled[] {\n const membershipRoles: MembershipRole[] =\n Preload.current_network.membership_roles.map((r) => ({\n ...r,\n type: \"membership_role\",\n }));\n\n return filterByInputValue(membershipRoles, inputValue);\n}\n\nfunction filterByInputValue(\n items: T[],\n inputValue: string,\n): T[] {\n return items.filter((r) =>\n includes(r.name.toLowerCase(), inputValue.toLowerCase()),\n );\n}\n","import React from \"react\";\nimport { SimpleMembership } from \"../../@types\";\nimport classNames from \"classnames\";\n\nconst fallbackImageUrl = \"/assets/misc/profile_50x50.jpg\";\nconst findImage = (membership: SimpleMembership, width, height): string => {\n const image = membership.images.find(\n (i) => i.width == width && i.height == height,\n );\n return image ? image.url : fallbackImageUrl;\n};\n\nexport function ProfileImage({\n membership,\n className,\n size,\n}: {\n membership: SimpleMembership;\n className?: string;\n size?: number;\n}) {\n return (\n \n );\n}\n\nexport default function SimpleMembershipShow({\n membership,\n}: {\n membership: SimpleMembership;\n}) {\n return (\n
    \n {membership.id ? (\n \n \n {membership.name}\n \n ) : (\n {membership.name}\n )}\n
    \n );\n}\n","import React, { useRef, useEffect } from \"react\";\nimport \"../../../../vendor/assets/javascripts/spectrum/spectrum.css\";\n\ninterface SpectrumProps {\n value: string;\n showPalette?: boolean;\n colorPalette?: any;\n name?: string;\n onChange: (props: { target: { value: string } }) => void;\n disabled?: boolean;\n}\n\nfunction Spectrum(props: SpectrumProps) {\n const ref = useRef(null);\n let el;\n\n useEffect(() => {\n if (!el && ref.current) {\n el = $(ref.current);\n el.spectrum({\n showInput: true,\n preferredFormat: \"hex\",\n showInitial: true,\n showPalette: !!props.showPalette,\n palette: props.colorPalette,\n cancelText: I18n.t(\"plugins.spectrum.cancel\"),\n chooseText: I18n.t(\"plugins.spectrum.choose\"),\n change: (color) =>\n props.onChange({\n target: {\n value: color.toHexString(),\n },\n }),\n disabled: props.disabled,\n color: props.value,\n });\n } else {\n el.spectrum(\"set\", props.value);\n }\n return () => el.spectrum(\"destroy\");\n }, [ref.current, props.value]);\n\n return (\n
    \n \n
    \n );\n}\n\nexport default Spectrum;\n","import React from \"react\";\nimport { map, get } from \"lodash\";\nimport classnames from \"classnames\";\nimport { removeSearchParams } from \"helpers/tixxt-router\";\n\ninterface TabBarProps {\n tabs: Array<{\n label: string;\n required?: boolean;\n error?: Error;\n url?: string;\n }>;\n className?: string;\n selectTabIndex: (val: number) => void;\n selectedTabIndex: number;\n}\n\nfunction TabBar({\n tabs,\n selectTabIndex,\n selectedTabIndex,\n className,\n}: TabBarProps) {\n return (\n \n );\n}\n\nexport default TabBar;\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, { useEffect, useState } from \"react\";\nimport { useQuery } from \"react-query\";\nimport classNames from \"classnames\";\nimport { useSelector } from \"react-redux\";\nimport { currentMemberSelector } from \"selectors/environment\";\nimport DropDown, {\n DropDownItem,\n DropDownSubMenu,\n} from \"components/shared/DropDown\";\nimport { faLanguage } from \"@fortawesome/pro-light-svg-icons\";\n\ninterface TranslationDropDownProps {\n handleLanguageSelect: (\n event: React.MouseEvent,\n language: string,\n ) => void;\n object_language: string;\n buttonClassName?: string;\n}\n\ninterface Language {\n language: string;\n name: string;\n supports_formality: boolean;\n}\n\nexport const ORIGINAL_LANGUAGE_SIGNIFIER = \"ORIGINAL\";\n\nexport default function TranslationDropDown({\n handleLanguageSelect,\n object_language,\n buttonClassName,\n}: TranslationDropDownProps) {\n const currentMember = useSelector(currentMemberSelector);\n const { data: languages } = useQuery(\"/translations/languages\", {\n refetchOnWindowFocus: false,\n });\n const [primaryLanguages, setPrimaryLanguages] = useState([]);\n const [secondaryLanguages, setSecondaryLanguages] = useState([]);\n\n const [selectedLanguage, setSelectedLanguage] = useState(\n object_language || ORIGINAL_LANGUAGE_SIGNIFIER,\n );\n\n function categorizeLanguages() {\n const primaryLanguageKeys = [\n currentMember?.last_used_translation_language,\n \"DE\",\n \"EN-GB\",\n \"ES\",\n \"FR\",\n ];\n const primary =\n languages\n ?.filter((lang) => primaryLanguageKeys.includes(lang.language))\n .sort(\n (a, b) =>\n primaryLanguageKeys.indexOf(a.language) -\n primaryLanguageKeys.indexOf(b.language),\n ) || [];\n\n const secondary =\n languages?.filter(\n (lang) => !primaryLanguageKeys.includes(lang.language),\n ) || [];\n\n return [primary, secondary];\n }\n\n useEffect(() => {\n const [primary, secondary] = categorizeLanguages();\n setPrimaryLanguages(primary);\n setSecondaryLanguages(secondary);\n }, [languages, selectedLanguage, currentMember]);\n\n function renderLanguageListItem(lang: Language) {\n return (\n {\n event.preventDefault();\n handleLanguageSelect(event, lang.language);\n setSelectedLanguage(lang.language);\n }}\n >\n {lang.name}\n \n );\n }\n\n if (!Tixxt.currentNetwork.getConfig(\"translations.deep_l.enabled\")) return;\n\n return (\n
    \n \n \n {selectedLanguage !== ORIGINAL_LANGUAGE_SIGNIFIER && (\n \n {\n event.preventDefault();\n handleLanguageSelect(event, ORIGINAL_LANGUAGE_SIGNIFIER);\n setSelectedLanguage(ORIGINAL_LANGUAGE_SIGNIFIER);\n }}\n >\n {I18n.t(\n \"js.activitystreams.activity.translation_controls.show_original\",\n )}\n \n \n )}\n {primaryLanguages.map((lang) => (\n \n {renderLanguageListItem(lang)}\n \n ))}\n {secondaryLanguages.length > 0 && (\n \n {secondaryLanguages.map((lang) => (\n \n {renderLanguageListItem(lang)}\n \n ))}\n \n )}\n \n
    \n );\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\n\ntype Props = {\n count?: number;\n className?: string;\n unstyled?: boolean;\n};\n\nexport default function UnreadBadge({ count, className }: Props) {\n if (!count || count === 0) return null;\n\n return (\n = 10,\n },\n className,\n )}\n >\n {count > 99 ? \"99+\" : count}\n \n );\n}\n","import classNames from \"classnames\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faStar as faRegularStar } from \"@fortawesome/pro-regular-svg-icons\";\nimport { faStar as faSolidStar } from \"@fortawesome/pro-solid-svg-icons\";\nimport React from \"react\";\nimport useTooltip from \"../../../hooks/useTooltip\";\n\ntype ToggleFavoriteButtonArgs = {\n title: string;\n toggleFavorited: () => void;\n isLoading: boolean;\n favorited: boolean;\n};\n\nexport default function ToggleFavoriteButton({\n title,\n isLoading,\n toggleFavorited,\n favorited,\n}: ToggleFavoriteButtonArgs) {\n const tooltipRef = useTooltip(title);\n\n return (\n \n \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 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\n// Use this with redux-form. For use with react-hook-form you need components/shared/form/fields/FileUpload.tsx\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 React from \"react\";\nimport { Field } from \"redux-form\";\nimport ControlGroup from \"./ControlGroup\";\nimport Hint from \"./Hint\";\n\ninterface TextFieldProps {\n name: string;\n label?: string;\n required?: boolean;\n multiline?: boolean;\n className?: string;\n hint?: string;\n disabled?: boolean;\n placeholder?: string;\n\n onChange?(...args: unknown[]): unknown;\n}\n\nfunction TextField({\n name,\n label,\n required,\n multiline,\n className,\n hint,\n ...fieldProps\n}: TextFieldProps) {\n return (\n \n \n \n \n );\n}\n\nexport default TextField;\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 \"components/files/composer/FileSelector\";\nimport { FileData } from \"components/../@types/files\";\n\ntype FileInputArgs = {\n connectDropTarget?: (element: React.ReactElement) => void;\n onSelectFile: (e: any) => void;\n multiple?: boolean;\n acceptedType: string;\n empty: boolean;\n isImage: boolean;\n isOver?: boolean;\n selectExisting?: boolean;\n onSelectExistingFile: (selectedFiles: FileData[]) => void;\n onDropFile: ({ files }: { files: any }) => void;\n storageDirectory: string;\n disabled?: boolean;\n};\n\nfunction FileInput({\n connectDropTarget,\n onSelectFile,\n multiple,\n acceptedType,\n empty,\n isImage,\n isOver,\n selectExisting,\n onSelectExistingFile,\n disabled = false,\n}: FileInputArgs) {\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 {\" \"}\n {I18n.t(\n `js.files.uploader.select_${isImage ? \"image\" : \"file\"}${\n multiple ? \"s\" : \"\"\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 { 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 React from \"react\";\nimport classNames from \"classnames\";\nimport { FileState } from \"../../../../@types/files\";\n\ninterface UploadBarTypes {\n state?: FileState;\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 { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCircleX as faSolidCircleX } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faVirus as faRegularVirus } from \"@fortawesome/pro-regular-svg-icons\";\n\nimport FileIcon from \"components/shared/FileIcon\";\nimport UploadBar from \"./UploadBar\";\nimport MarkdownTranslation from \"../../MarkdownTranslation\";\nimport { FileData } from \"../../../../@types/files\";\n\ninterface UploadedFileTypes {\n file: FileData & { extension: string };\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 { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faBoxArchive } from \"@fortawesome/pro-light-svg-icons\";\n\nexport default function DangerZone({\n title,\n body,\n actions,\n}: {\n title: string;\n body: React.ReactNode;\n actions: React.ReactNode;\n}) {\n return (\n
    \n

    {title}

    \n
    \n
    \n \n
    \n
    \n

    {body}

    \n
    {actions}
    \n
    \n
    \n
    \n );\n}\n","import React from \"react\";\n\ntype LabelArgs = {\n label: string;\n required?: boolean;\n};\nexport default function Label({ label, required = false }: LabelArgs) {\n return (\n \n );\n}\n","import { UseFormRegister } from \"react-hook-form\";\nimport React from \"react\";\nimport classNames from \"classnames\";\nimport useRegisterPropOrFromContext from \"components/shared/form/fields/useRegisterPropOrFromContext\";\n\nexport default function Checkbox({\n name,\n register,\n label,\n disabled = false,\n className,\n}: {\n name: string;\n label: string;\n register?: UseFormRegister;\n disabled?: boolean;\n className?: string;\n}) {\n register = useRegisterPropOrFromContext(register);\n\n return (\n \n \n {label}\n \n );\n}\n","import React from \"react\";\nimport Label from \"components/shared/form/Label\";\nimport { Control, useController } from \"react-hook-form\";\nimport DirectoryPicker, {\n DirectoryPickerProps,\n} from \"components/shared/DirectoryPicker\";\nimport Hint from \"components/shared/fields/Hint\";\nimport { MultiValue, SingleValue } from \"react-select\";\nimport { ValueType } from \"components/shared/DirectoryPicker/types\";\nimport classNames from \"classnames\";\n\ntype InputArgs = {\n name: string;\n control?: Control;\n label?: string;\n hint?: string;\n required?: string | boolean;\n placeholder?: string;\n multiline?: boolean;\n maxLength?: number;\n defaultValue?: string;\n apiToValues?: (\n apiValues: any,\n ) => MultiValue | SingleValue;\n valuesToApi?: (\n formValues: MultiValue | SingleValue,\n ) => any;\n children?: React.ReactNode;\n};\n\nexport default function DirectoryPickerInput({\n label,\n control,\n name,\n hint,\n required = false,\n defaultValue,\n apiToValues,\n valuesToApi,\n children,\n ...directoryPickerProps\n}: InputArgs & DirectoryPickerProps) {\n const {\n field,\n fieldState: { invalid },\n } = useController({\n name,\n rules: { required },\n defaultValue,\n control,\n });\n\n return (\n
    \n {label &&
    \n \n );\n}\n","import React from \"react\";\nimport {\n isEmpty,\n map,\n each,\n compact,\n get,\n last,\n zip,\n isMatch,\n groupBy,\n sum,\n find,\n has,\n filter,\n} from \"lodash\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { ControllerRenderProps } from \"react-hook-form\";\nimport { useMutation } from \"react-query\";\nimport axios from \"axios\";\n\nimport withDragDropContext from \"components/shared/withDragDropContext\";\nimport ImagePreview from \"components/shared/fields/fileUploadField/ImagePreview\";\nimport FileInput from \"components/shared/fields/fileUploadField/FileInput\";\nimport UploadedFile from \"components/shared/fields/fileUploadField/UploadedFile\";\nimport UploadBar from \"components/shared/fields/fileUploadField/UploadBar\";\nimport { FileData } from \"../../../../@types/files\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\nimport classNames from \"classnames\";\n\ntype FileUploadArgs = {\n multiple: boolean;\n storageDirectory: string;\n isImage: boolean;\n selectExisting: boolean;\n field: ControllerRenderProps;\n accept: string;\n disabled?: boolean;\n};\n\ntype UploadFileArgs = {\n fileData: { clientId: string; file: File; storageDirectory: string };\n setProgress: (data: FileData) => void;\n};\nasync function uploadFile({ fileData, setProgress }: UploadFileArgs) {\n const data = new FormData();\n data.append(\"file\", fileData.file);\n data.append(\"name\", fileData.file.name);\n data.append(\"type\", fileData.file.type);\n data.append(\"external_id\", fileData.clientId);\n\n const response = await axios.post(\n `/api/storage/${fileData.storageDirectory}`,\n data,\n {\n headers: {\n \"Content-Type\": \"multipart/form-data\",\n },\n onUploadProgress: ({ loaded, total }) => {\n if (total) {\n const progress = (loaded * 100) / total;\n setProgress({\n ...fileData.file,\n name: fileData.file.name,\n type: fileData.file.type,\n size: fileData.file.size,\n clientId: fileData.clientId,\n progress,\n });\n }\n },\n },\n );\n\n return response.data;\n}\n\n// Use this with react-hook-form\nfunction FileUpload({\n multiple,\n storageDirectory = \"files\",\n isImage,\n selectExisting,\n accept,\n field,\n disabled = false,\n}: FileUploadArgs) {\n let selectedFiles = field.value;\n // Values sent to onChange being reflected in value take some time, so we have to store the real value locally\n // in case setProgress is fired quickly, i.e. when selecting multiple files\n const onChangeLocal = (newValue) => {\n selectedFiles = newValue;\n field.onChange(newValue);\n };\n\n const { mutate: getFileToken } = useMutation<\n { token: string },\n Error,\n { fileId: string }\n >(\n async ({ fileId }) =>\n fetchApi(`/api/storage/files/${fileId}/token`, {\n method: \"GET\",\n }),\n {\n onSuccess: (data, params) => {\n setToken(data.token, params.fileId);\n },\n },\n );\n\n const setProgress = (data: FileData) => {\n const newValue = map(selectedFiles, (f) =>\n isMatch(f, { clientId: data.clientId }) ? { ...f, ...data } : f,\n );\n\n if (!find(selectedFiles, { clientId: data.clientId })) {\n newValue.push(data);\n }\n onChangeLocal(newValue);\n };\n\n const setToken = (token: string, fileId: string) => {\n const newValue = map(selectedFiles, (f) =>\n isMatch(f, { id: fileId }) ? { ...f, token } : f,\n );\n onChangeLocal(newValue);\n };\n\n const { mutate: onUploadFile } = useMutation(\n (fileData: { clientId: string; file: File; storageDirectory: string }) =>\n uploadFile({ fileData, setProgress }),\n {\n onSuccess: (data, variables) => {\n setProgress({\n ...data,\n id: data.id,\n name: variables.file.name,\n size: variables.file.size,\n type: variables.file.type,\n clientId: variables.clientId,\n state: \"volatile\",\n progress: 100,\n });\n },\n onError: (error: { response: { status: string } }, data) => {\n setProgress({\n ...data.file,\n clientId: data.clientId,\n progress: 0,\n state: \"failed\",\n status: error.response.status,\n });\n },\n },\n );\n\n const onRemoveFile = (criteria: { [key: string]: string }) => {\n window?.bridge?.confirm(I18n.t(\"js.files.file.delete_confirm\"), () => {\n const newValue = compact(\n map(selectedFiles, (f) =>\n isMatch(f, criteria) ? { ...f, state: \"removed\" } : f,\n ),\n );\n onChangeLocal(newValue);\n });\n };\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 function handleUploadFiles(rawFiles: File[]) {\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\n const newValue = [...(selectedFiles || []), ...filesData];\n onChangeLocal(newValue);\n\n each(zip(rawFiles, filesData), (zippedPair) => {\n const [file, fileData] = zippedPair;\n if (file && fileData) {\n onUploadFile({\n clientId: fileData.clientId,\n file,\n storageDirectory,\n });\n }\n });\n }\n\n const onSelectExistingFile = (selectedExistingFiles: FileData[]) => {\n const newFiles = compact(\n map(selectedExistingFiles, (file) => {\n file.id && getFileToken({ fileId: file.id });\n return find(selectedFiles, { id: file.id }) ? null : file;\n }),\n );\n onChangeLocal([...selectedFiles, ...newFiles]);\n };\n\n const filesByState = {\n published: [] as FileData[],\n volatile: [] as FileData[],\n uploading: [] as FileData[],\n failed: [] as FileData[],\n ...groupBy(selectedFiles, \"state\"),\n };\n\n // Files without state that came with the defaultValue through e.g. edit something\n const filesWithoutState = map(\n filter(selectedFiles, (file) => !has(file, \"state\")),\n (file) => ({ ...file, state: \"published\" }),\n );\n\n const availableFiles = [\n ...filesWithoutState,\n ...filesByState.published,\n ...filesByState.volatile,\n ];\n const uploadingFiles = [...filesByState.volatile, ...filesByState.uploading];\n const nonRemovedFiles = [\n ...filesWithoutState,\n ...filesByState.published,\n ...filesByState.volatile,\n ...filesByState.failed,\n ...filesByState.uploading,\n ];\n\n return (\n <>\n \n
    \n {isImage && !multiple ? (\n \n ) : null}\n handleUploadFiles(e.target.files)}\n selectExisting={!isImage && selectExisting}\n onSelectExistingFile={onSelectExistingFile}\n onDropFile={({ files }) => handleUploadFiles(files)}\n disabled={disabled}\n {...field}\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 )}\n {map(nonRemovedFiles, (file, key) => (\n \n ))}\n
    \n \n \n );\n}\n\nexport default withDragDropContext(FileUpload);\n","import Label from \"components/shared/form/Label\";\nimport React from \"react\";\nimport { Control, Controller } from \"react-hook-form\";\nimport FileUpload from \"components/shared/form/fields/FileUpload\";\n\nexport default function FileUploadField({\n control,\n name,\n label,\n options,\n hint,\n disabled = false,\n}: {\n name: string;\n label?: string;\n control?: Control;\n options?: {\n isImage?: boolean;\n multiple?: boolean;\n selectExisting?: boolean;\n storageDirectory?: \"images\" | \"assets\" | \"files\";\n };\n hint?: string;\n disabled?: boolean;\n}) {\n return (\n
    \n {label &&
    \n );\n}\n","import React from \"react\";\n\nexport default function FormActions({\n onCancel,\n saveDisabled,\n children,\n showCancel = true,\n showSave = true,\n}: {\n onCancel?: (e: React.MouseEvent) => void;\n saveDisabled?: boolean;\n children?: React.ReactNode;\n showCancel?: boolean;\n showSave?: boolean;\n}) {\n return (\n
    \n {showCancel && (\n \n )}\n {showSave && (\n \n )}\n {children}\n
    \n );\n}\n","import React from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faInfoCircle } from \"@fortawesome/pro-regular-svg-icons\";\nimport classNames from \"classnames\";\n\nexport default function Hint({\n text,\n usabilityHint = false,\n}: {\n text: string;\n usabilityHint?: boolean;\n}) {\n return (\n \n {usabilityHint && (\n \n )}\n {text}\n \n );\n}\n","import React from \"react\";\nimport { UseFormRegister } from \"react-hook-form\";\nimport Hint from \"components/shared/fields/Hint\";\nimport Label from \"components/shared/form/Label\";\nimport useRegisterPropOrFromContext from \"components/shared/form/fields/useRegisterPropOrFromContext\";\n\ntype InputArgs = {\n name: string;\n label?: string;\n required?: boolean;\n defaultValue?: string;\n register?: UseFormRegister;\n options: { label: string; value: string }[];\n hint?: string;\n};\n\nexport default function RadioButton({\n name,\n register,\n label,\n options,\n hint,\n required,\n defaultValue,\n}: InputArgs) {\n register = useRegisterPropOrFromContext(register);\n\n return (\n
    \n {label &&
    \n );\n}\n","import React from \"react\";\nimport ReactSelect, { MultiValue, SingleValue } from \"react-select\";\n\nimport Label from \"components/shared/form/Label\";\nimport { Control, Controller } from \"react-hook-form\";\nimport { ValueType } from \"components/shared/DirectoryPicker/types\";\nimport Hint from \"components/shared/fields/Hint\";\n\ntype SelectArgs = {\n name: string;\n label?: string;\n multi?: boolean;\n required?: boolean | string;\n control?: Control;\n options: { value: string; label: string }[];\n placeholder?: string;\n isSearchable?: boolean;\n hint?: string;\n valuesToApi?: (\n formValues: MultiValue | SingleValue,\n ) => any;\n};\nexport default function Select({\n label,\n name,\n multi = false,\n required = false,\n options,\n control,\n placeholder,\n isSearchable = true,\n hint,\n}: SelectArgs) {\n return (\n
    \n {label &&
    \n );\n}\n","import React from \"react\";\nimport { UseFormRegister } from \"react-hook-form\";\nimport Label from \"components/shared/form/Label\";\nimport Hint from \"components/shared/fields/Hint\";\nimport useRegisterPropOrFromContext from \"components/shared/form/fields/useRegisterPropOrFromContext\";\n\ntype InputArgs = {\n name: string;\n register?: UseFormRegister;\n label?: string;\n hint?: string;\n required?: string | boolean;\n placeholder?: string;\n multiline?: boolean;\n maxLength?: number;\n disabled?: boolean;\n};\n\nexport default function TextInput({\n label,\n register,\n name,\n hint,\n placeholder = \"\",\n required = false,\n multiline = false,\n maxLength,\n disabled = false,\n}: InputArgs) {\n register = useRegisterPropOrFromContext(register);\n\n return (\n
    \n {label &&
    \n );\n}\n","import { FieldValues, useFormContext, UseFormRegister } from \"react-hook-form\";\nimport invariant from \"invariant\";\n\n/**\n * Returns given register arg if present, fetches register from FormContext otherwise\n * @param register\n */\nexport default function useRegisterPropOrFromContext(\n register: UseFormRegister | undefined,\n): UseFormRegister {\n const contextMethods = useFormContext();\n if (!register && contextMethods) return contextMethods.register;\n invariant(\n register,\n \"register must be provided directly or through FormContext\",\n );\n\n return register;\n}\n","import { useMutation } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\n\nconst useChannelSubscriptionToggle = ({\n onSuccessFunction,\n channelSlug,\n}: {\n onSuccessFunction: (subscribed: boolean) => void;\n channelSlug: string;\n}) => {\n const { mutate: subscribeChannel } = useMutation(\n () => fetchApi(`/channels/${channelSlug}/subscribe`, { method: \"POST\" }),\n\n {\n onSuccess: () => {\n onSuccessFunction(true);\n },\n onError: (error: any) =>\n toastr.error(error.message || I18n.t(\"js.generic_error\")),\n },\n );\n\n const { mutate: unsubscribeChannel } = useMutation(\n () => fetchApi(`/channels/${channelSlug}/unsubscribe`, { method: \"POST\" }),\n\n {\n onSuccess: () => {\n onSuccessFunction(false);\n },\n onError: (error: any) =>\n toastr.error(error.message || I18n.t(\"js.generic_error\")),\n },\n );\n\n return {\n subscribeChannel,\n unsubscribeChannel,\n };\n};\n\nexport default useChannelSubscriptionToggle;\n","import { useSelector } from \"react-redux\";\nimport { formValueSelector } from \"redux-form\";\nimport { some, isEmpty } from \"lodash\";\n\nconst useFileProcessing = (formName: string, fieldName: string) => {\n const selector = formValueSelector(formName);\n const fieldAttachments = useSelector((state: any) =>\n selector(state, fieldName),\n );\n\n const isProcessing = !isEmpty(fieldAttachments)\n ? some(fieldAttachments, { state: \"uploading\" })\n : false;\n\n return isProcessing;\n};\n\nexport default useFileProcessing;\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 MarkdownEditor from \"./index\";\nimport styles from \"../../appCreator/properties/edit/editFields.module.css\";\nimport FieldError from \"../../appCreator/items/form/FieldError\";\n\ninterface MarkdownEditorAdapterTypes {\n input: {\n onChange(...args: unknown[]): unknown;\n onFocus(...args: unknown[]): unknown;\n onBlur(...args: unknown[]): unknown;\n value: string;\n name: string;\n };\n meta: { error: string; initial: string };\n}\n\nfunction MarkdownEditorAdapter({ input, meta }: MarkdownEditorAdapterTypes) {\n return (\n
    \n \n {meta.error && }\n
    \n );\n}\n\nexport default MarkdownEditorAdapter;\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 }) =>\n (newEditorState) => {\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 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 React from \"react\";\nimport { FormSection } from \"redux-form\";\nimport { get, uniq } from \"lodash\";\nimport ControlGroup from \"../fields/ControlGroup\";\nimport Fields from \"../../appCreator/items/form/Fields\";\nimport { TagParentsContext } from \"../../appCreator/properties/edit/TagField\";\nimport { usePropertySet } from \"components/shared/propertySets/api\";\n\ninterface EmbeddedValueSetFormProps {\n name: string;\n contextId: string;\n contextType: string;\n}\n\nfunction EmbeddedValueSetForm({\n name,\n contextId,\n contextType,\n}: EmbeddedValueSetFormProps) {\n const { isLoading: loading, data: propertySet } = usePropertySet({\n name,\n contextId,\n contextType,\n });\n\n if (loading) {\n return (\n \n \n \n );\n }\n\n // Always include network scope when looking up tags for file_- and folder_profile\n const tagParents = get(propertySet, [\"tag_parents\"], []);\n if (name === \"file_profile\" || name === \"folder_profile\")\n tagParents.unshift(\"network\");\n\n return (\n \n \n \n \n \n );\n}\n\nexport default EmbeddedValueSetForm;\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","import React from \"react\";\nimport classnames from \"classnames\";\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 {submitIcon !== \"no-icon\" && (\n <>\n {\" \"}\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","import { DragDropContext } from \"react-dnd\";\nimport HTML5Backend from \"react-dnd-html5-backend\";\n\nexport default DragDropContext(HTML5Backend);\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 btn-light\",\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","import parseHeader from \"./parseHeader\";\nimport { isEmpty } from \"lodash\";\n\nexport default async function fetchPaginatedData({ pageParam }) {\n const response = await fetch(pageParam);\n const data = await response.json();\n\n const linkHeader = response.headers.get(\"Link\");\n const nextUrl = parseHeader(linkHeader).next;\n\n return {\n data,\n nextPage: isEmpty(nextUrl) ? null : nextUrl,\n };\n}\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","import React from \"react\";\nimport { Provider } from \"react-redux\";\n\nconst wrapProvider = (store) => (Component) => {\n const wrapped = function (props) {\n return (\n \n \n \n );\n };\n\n wrapped.displayName = `Provider(${Component.name})`;\n\n return wrapped;\n};\n\nexport default wrapProvider;\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 { map, partition, fromPairs, isEmpty } from \"lodash\";\nimport { useMutation } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\n\n// Custom Hook that 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 publishAllVolatile = usePublishAllVolatile();\n// const result = await publishAllVolatile({\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, ... }] }\ntype PublishFilesArgs = {\n body: { [key: string]: any };\n fieldName: string;\n others: File[];\n storageDirectory: string;\n};\nconst usePublishAllVolatile = () => {\n const publishFiles = useMutation<\n { [key: string]: File[] }[],\n unknown,\n PublishFilesArgs\n >(({ body, storageDirectory }: PublishFilesArgs) => {\n return fetchApi(`/api/storage/${storageDirectory}/publish`, {\n method: \"POST\",\n body,\n });\n });\n\n const destroyFiles = useMutation(\n ({\n id,\n storageDirectory,\n }: {\n id: string;\n fieldName: string;\n storageDirectory: string;\n }) => {\n return fetchApi(`/api/storage/${storageDirectory}/${id}`, {\n method: \"DELETE\",\n });\n },\n );\n\n const publishAllVolatile = async ({ 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 published = await publishFiles.mutateAsync({\n body: { [storageDirectory]: volatile },\n storageDirectory,\n fieldName,\n others,\n });\n\n await Promise.all(\n map(remove, async (file) => {\n await destroyFiles.mutateAsync({\n id: file.id,\n storageDirectory,\n fieldName,\n });\n }),\n );\n\n const removed = map(remove, (file) => ({ ...file, _destroy: true }));\n\n return [fieldName, [...others, ...published, ...removed]];\n }),\n );\n return fromPairs(pairs);\n };\n\n return publishAllVolatile;\n};\n\nexport default usePublishAllVolatile;\n","import { forEach } from \"lodash\";\n\nexport function onValidationError(errors) {\n resetValidationErrors();\n forEach(errors, (error) => {\n error?.ref?.classList.add(\"field-error\");\n\n toastr.error(error?.message || I18n.t(\"generic_error\"));\n });\n}\n\nexport function resetValidationErrors() {\n forEach(document.getElementsByClassName(\"field-error\"), (element) => {\n element?.classList.remove(\"field-error\");\n });\n}\n","import { enGB, de, es, fr } from \"date-fns/locale\";\nimport { format, formatDistanceToNow, setDefaultOptions } from \"date-fns\";\nimport documentReady from \"helpers/documentReady\";\nimport { includes, split } from \"lodash\";\n\nconst LOCALE_LOOKUP = {\n de_DU: de,\n de: de,\n en: enGB,\n es: es,\n fr: fr,\n};\n\ndocumentReady(() => {\n let currentLocale = I18n.currentLocale();\n if (includes(currentLocale, \"_\") && currentLocale !== \"de_DU\")\n currentLocale = split(currentLocale, \"_\")[0];\n\n setDefaultOptions({ locale: LOCALE_LOOKUP[currentLocale] });\n});\n\nexport default function formatDate(\n date: Date | number,\n dateFormat: string,\n options = {},\n) {\n return format(date, dateFormat, {\n ...options,\n });\n}\n\nexport function formatDateFromNow(date: Date | number, options = {}) {\n return formatDistanceToNow(date, {\n ...options,\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 React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport connectBackbone from \"./connectBackbone\";\nimport { Wrapper } from \"helpers/queryClient\";\n\nconst createHandleClose = (view, rawEl) => () => {\n const el = rawEl || \"VIEW_ROOT\";\n const root = view._reactRoots[el];\n\n if (root) {\n // debug(\"UNMOUNT component at\", el || \"view root\");\n view._reactRoots[el] = null;\n root.unmount();\n }\n\n return view;\n};\n\nconst createHandleRender = (view, rawEl, component) => () => {\n const el = rawEl || \"VIEW_ROOT\";\n const $container = rawEl ? view.$(rawEl) : view.$el;\n let root;\n\n if (rawEl) {\n // root el is inside of rendered view and thus recreated on render\n const oldRoot = view._reactRoots[el];\n if (oldRoot) oldRoot.unmount();\n view._reactRoots[el] = root = createRoot($container.get(0));\n } else {\n // root is equal to view.el which stays the same on renders so we can keep the root\n root = view._reactRoots[el];\n if (!root) root = view._reactRoots[el] = createRoot($container.get(0));\n }\n\n // debug(\"MOUNT\", getDisplayName(component), \"at\", el);\n root.render(\n React.createElement(Wrapper, null, React.createElement(component)),\n );\n\n return view;\n};\n\nconst createAdaptBackboneView = () => {\n let componentsMap = {};\n\n const adaptBackboneView = ({\n view,\n el,\n component: componentName,\n mapProps,\n listenTo,\n standalone = false,\n }) => {\n const component = componentsMap[componentName];\n if (component === undefined) {\n throw new Error(\n `No component named \"${componentName}\" registered for adapter usage.`,\n );\n }\n\n const connectedComponent = connectBackbone({ view, mapProps, listenTo })(\n component,\n );\n\n // Store react roots\n view._reactRoots = view._reactRoots || {};\n\n const handleRender = createHandleRender(view, el, connectedComponent);\n const handleClose = createHandleClose(view, el);\n\n if (standalone) {\n view.render = handleRender;\n view.close = handleClose;\n } else {\n view.on(\"render\", handleRender);\n view.once(\"close\", () => {\n view.off(\"render\", handleRender);\n handleClose();\n });\n }\n };\n componentsMap.componentsMap = componentsMap;\n\n adaptBackboneView.addComponents = (extraComponentMap) => {\n componentsMap.componentsMap = componentsMap = {\n ...componentsMap,\n ...extraComponentMap,\n };\n };\n\n return adaptBackboneView;\n};\n\nexport default createAdaptBackboneView;\n","import React, { Component } from \"react\";\nimport { debounce, each } from \"lodash\";\n\nexport function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || \"Component\";\n}\n\nexport default function connectBackbone({\n mapProps,\n listenTo,\n debounce: debounceTime = 10,\n}) {\n return function wrapWithConnect(WrappedComponent) {\n const MemoizedWrappedComponent = React.memo(WrappedComponent);\n\n class Connect extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.state = Connect.getDerivedStateFromProps(this.props);\n }\n\n static getDerivedStateFromError() {\n // Update state so the next render will show the fallback UI.\n return { hasError: true };\n }\n\n componentDidCatch(error, errorInfo) {\n // You can also log the error to an error reporting service\n console.error(\"TixxtErrorBoundary to the rescue\", error, errorInfo);\n }\n\n componentDidMount() {\n this.trySubscribe();\n }\n\n componentWillUnmount() {\n this.tryUnsubscribe();\n }\n\n trySubscribe() {\n if (!this.unsubscribe) {\n // Bind change events for each tracked entity (i.e. model and/or collection)\n const changeHandler = debounce(\n this.handleChange.bind(this),\n debounceTime,\n );\n each(listenTo, (entity) => {\n if (!entity) {\n throw new Error(`Undefined/null listenTo entity given`);\n }\n entity.on(\"change add remove reset sync sort\", changeHandler, this);\n });\n\n this.unsubscribe = () => {\n each(listenTo, (entity) => entity.off(null, changeHandler, this));\n };\n\n this.handleChange();\n }\n }\n\n tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n }\n }\n\n handleChange() {\n if (!this.unsubscribe) {\n return;\n }\n mapProps && this.setState({ entityState: mapProps(this.props) });\n }\n\n static getDerivedStateFromProps(props) {\n return mapProps ? { entityState: mapProps(props) } : {};\n }\n\n render() {\n /*if (this.state.hasError) {\n return null; // Something went wrong\n }*/\n\n const propsToPass = { ...this.props, ...this.state.entityState };\n return ;\n }\n }\n\n Connect.displayName = `ConnectBackbone(${getDisplayName(\n MemoizedWrappedComponent,\n )})`;\n Connect.WrappedComponent = MemoizedWrappedComponent;\n\n return Connect;\n };\n}\n","import createAdaptBackboneView from \"./backbone/createAdaptBackboneView\";\n\nconst adaptBackboneView = createAdaptBackboneView();\n\nexport default adaptBackboneView;\n","import React from \"react\";\nimport { QueryClientProvider, QueryClient, QueryCache } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\nimport { isString } from \"lodash\";\n\nconst queryCache = new QueryCache();\nconst queryClient = new QueryClient({\n queryCache,\n defaultOptions: {\n queries: {\n queryFn: async ({ queryKey }) =>\n isString(queryKey[0]) && fetchApi(queryKey[0]),\n },\n },\n});\n\nfunction Wrapper({ children }: { children: React.ReactNode }) {\n return (\n {children}\n );\n}\n\nwindow.queryClient = queryClient;\n\nexport default queryClient;\nexport { queryClient, queryCache, Wrapper };\n","import { includes, 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 (includes([\"POST\", \"PUT\", \"DELETE\", \"PATCH\"], method)) {\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 status: number;\n ok: boolean;\n json: () => any;\n}) => {\n if (response.status === 204) return null;\n\n if (response.ok) {\n return response.json();\n } else {\n throw new Error(I18n.t(\"js.generic_error\"));\n }\n};\n\nexport async function fetchApi(\n url: string,\n options:\n | {\n method?: string;\n body?: any;\n headers?: object;\n parsePaginationHeaders?: boolean;\n signal?: AbortSignal;\n }\n | undefined = {},\n) {\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 signal: options.signal,\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","import { match } from \"path-to-regexp\";\nimport { map, memoize } from \"lodash\";\nimport { CompiledRoute, RouteObject } from \"helpers/tixxt-router\";\n\nexport type Params = {\n [key: string]: string | undefined;\n};\n\nconst WILDCARD_END = /\\/?\\*$/;\n\nfunction compileRoute(path: string) {\n const endsWithWildcard = WILDCARD_END.exec(path);\n let pathToCompile = path;\n if (endsWithWildcard) pathToCompile = path.slice(0, endsWithWildcard.index);\n const matchFn = match(pathToCompile, {\n end: endsWithWildcard === null,\n });\n return { path, match: matchFn };\n}\n\nfunction compileRoutes(routes: RouteObject[]): CompiledRoute[] {\n return map(routes, ({ path, element, forceTurbo }) => {\n try {\n return { ...compileRoute(path), element, forceTurbo };\n } catch (e) {\n console.error(\"while compiling path:\", path);\n throw e;\n }\n });\n}\n\nexport const compileRouteMemoized = memoize(compileRoute);\nexport const compileRoutesMemoized = memoize(compileRoutes);\n","import React, { useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { MatchFunction, MatchResult } from \"path-to-regexp\";\nimport { isEqual, isNumber, isString, noop } from \"lodash\";\nimport {\n compileRouteMemoized,\n compileRoutesMemoized,\n Params,\n} from \"helpers/tixxt-router/compilation\";\nimport \"helpers/tixxt-router/history-events\";\nimport invariant from \"invariant\";\nimport { Group } from \"../@types\";\nimport { frontendByLocation } from \"components/layout/TixxtContent\";\n\nexport type NavigateFunction = (\n to: URL | string | number,\n options?: { replace?: boolean; state?: object },\n) => void;\n\nexport type RouteObject = {\n path: string;\n element: JSX.Element | null;\n // Force navigation with turbo when this route is matched, useful if backend runs code on access\n forceTurbo?: boolean;\n};\nexport type CompiledRoute = {\n forceTurbo?: boolean;\n path: string;\n match: MatchFunction;\n element: JSX.Element | null;\n};\n\nexport type MatchedRoute = MatchResult & {\n element: JSX.Element | null;\n forceTurbo?: boolean;\n};\n\n// Helper to build locationState from window.location\nfunction getLocationState() {\n return {\n pathname: location.pathname,\n search: location.search,\n hash: location.hash,\n state: history.state,\n };\n}\n\n// Returns the params in a (sub-)component that was determined with useRoutes\nexport function useParams(): Params {\n return useContext(ParamsContext);\n}\n\n// Returns a tuple of URLSearchParams and a noop setSearchParams function, which is only returned for legacy reasons\n// Please use navigate to change the searchParams explicitly\nexport function useSearchParams(): [\n URLSearchParams,\n (URLSearchParams) => void,\n] {\n const location = useLocation();\n\n const result = useMemo<[URLSearchParams, (URLSearchParams) => void]>(\n () => [new URLSearchParams(location.search), noop],\n [location.search],\n );\n\n return result;\n}\n\n// set search param für current url\nexport function setSearchParam(key: string, value: string) {\n const url = new URL(window.location.href);\n const params = new URLSearchParams(url.search);\n\n if (value) {\n params.set(key, value);\n } else {\n params.delete(key);\n }\n\n const newUrlString =\n params.size > 0 ? `${url.pathname}?${params}` : url.pathname;\n\n window.history.replaceState({}, \"\", newUrlString);\n}\n\n// removes all search params from current url\nexport function removeSearchParams() {\n const url = new URL(window.location.href);\n url.search = \"\";\n\n window.history.replaceState({}, document.title, url.toString());\n}\n\n// The function to trigger a SPA navigation\n// Should only receive routes that are handled by TixxtContent\n// This should only be used for redirects, for user navigation use regular links (or GET-forms)\nexport const navigate: NavigateFunction = (to, options) => {\n if (!window.Turbo?.session.drive) {\n debug(\"⚛️ navigate LEGACY\", to.toString(), options);\n invariant(\n isString(to),\n \"`to` param must be String when using navigate outside of SPA frontend\",\n );\n window.location.assign(to);\n return;\n }\n\n if (navigateToUnjoinedGroup(to.toString())) {\n window.location.assign(to.toString());\n return;\n }\n\n // Turbo.visit if navigating from spa to turbo\n const toPathname = to instanceof URL ? to.pathname : to.toString();\n if (\n frontendByLocation(location.pathname) === \"spa\" &&\n frontendByLocation(toPathname) === \"turbo\"\n ) {\n window.Turbo?.visit(toPathname, {});\n return;\n }\n\n debug(\"⚛️ navigate\", to.toString(), options);\n if (isNumber(to)) {\n history.go(to);\n } else {\n const fn = options?.replace ? history.replaceState : history.pushState;\n fn(options?.state, \"\", to);\n }\n};\n\nfunction navigateToUnjoinedGroup(to: string) {\n let url;\n try {\n url = new URL(to.toString());\n } catch (_) {\n return false;\n }\n\n const pathnameParts = url.pathname.split(\"/\");\n const groupSlugInPath =\n pathnameParts[1] === \"groups\" ? pathnameParts[2] : null;\n\n if (!groupSlugInPath) return false;\n\n return !(\n Preload.my_groups.find((group: Group) => group.slug === groupSlugInPath) !=\n null\n );\n}\n\n// Reimplementation of react-router useNavigate\n// You can import and use navigate directly if you fancy\nexport function useNavigate() {\n return navigate;\n}\n\n// Can be used to find a matching route for a given path\n// Is used to determine if a path can be handled by TixxtContent or should go through turbo\nexport function matchRoutes(\n routes: RouteObject[],\n path: string,\n): MatchedRoute | null {\n const compiledRoutes = compileRoutesMemoized(routes);\n\n let matchResult: MatchedRoute | null = null;\n for (const route of compiledRoutes) {\n const result = route.match(path);\n if (result) {\n matchResult = {\n ...result,\n element: route.element,\n forceTurbo: route.forceTurbo,\n };\n break;\n }\n }\n\n return matchResult;\n}\n\nconst defaultParams = {};\nconst ParamsContext = React.createContext(defaultParams);\nconst LocationContext = React.createContext(getLocationState());\n\n// Main hook to use routes in components\n// Returns the element of the first matching route wrapped in params provider\nexport function useRoutes(routes: RouteObject[]): JSX.Element | null {\n const { pathname } = useLocation();\n const matchedRoute = matchRoutes(routes, pathname);\n\n const lastParams = useRef(defaultParams);\n if (!isEqual(lastParams, matchedRoute?.params)) {\n lastParams.current = matchedRoute?.params || defaultParams;\n }\n\n if (!matchedRoute?.element) return null;\n\n return (\n \n {matchedRoute.element}\n \n );\n}\n\n// Returns true if the given path matches the given pattern, false otherwise\n// Good if you want to mark an element active depending on the current path\nexport function matchPath(pattern: string, path: string): boolean {\n return !!compileRouteMemoized(pattern).match(path);\n}\n\ntype BrowserRouterProps = {\n children?: React.ReactNode;\n};\n// Single source of location state\nexport const BrowserRouter: React.FC = ({ children }) => {\n const [locationState, setLocationState] = useState(getLocationState);\n\n useEffect(() => {\n function updateLocationState() {\n const maybeNewLocationState = getLocationState();\n if (!isEqual(maybeNewLocationState, locationState)) {\n setLocationState(maybeNewLocationState);\n }\n }\n\n const events = [\n \"popstate\",\n \"hashchange\",\n \"tixxt:pushstate\",\n \"tixxt:replacestate\",\n ];\n for (const event of events)\n window.addEventListener(event, updateLocationState);\n\n // RedirectToStartpage navigates before eventListener is bound but after default state is set\n updateLocationState();\n\n return () => {\n for (const event of events)\n window.removeEventListener(event, updateLocationState);\n };\n }, [locationState]);\n\n return (\n \n {children}\n \n );\n};\n\n// Hook to get current location state and trigger rerender when it changes\nexport function useLocation() {\n return useContext(LocationContext);\n}\n\nexport function Redirect({\n to,\n ...options\n}: { to: Parameters[0] } & Parameters[1]) {\n useEffect(() => {\n navigate(to, options);\n }, []);\n\n return null;\n}\n","// Add pushState and popState events to window so we can listen to them in useLocation\n// inspiration: https://stackoverflow.com/questions/5129386/how-to-detect-when-history-pushstate-and-history-replacestate-are-used\nfunction addEventDispatch(orig, type) {\n return function (...args) {\n const result = orig.apply(history, args);\n const event = new Event(type);\n event[\"arguments\"] = args;\n window.dispatchEvent(event);\n return result;\n };\n}\nexport const originalPushState = history.pushState;\nexport const originalReplaceState = history.replaceState;\n\nhistory.pushState = addEventDispatch(history.pushState, \"tixxt:pushstate\");\nhistory.replaceState = addEventDispatch(\n history.replaceState,\n \"tixxt:replacestate\",\n);\n","import { useEffect, useState } from \"react\";\nimport { useLocation, useParams } from \"helpers/tixxt-router\";\n\nfunction useQueryParams(): Record {\n console.warn(\n \"useQueryParams can be replaced with useSearchParams from helpers/tixxt-router\",\n );\n const location = useLocation();\n const params = useParams();\n const [queryParam, setQueryParam] = useState(getQueryParams);\n\n useEffect(() => setQueryParam(getQueryParams), [location]);\n\n return queryParam;\n\n function getQueryParams() {\n if (\"URLSearchParams\" in window) {\n return {\n ...params,\n ...Object.fromEntries(new URLSearchParams(location.search)),\n ...(location.state ? { state: location.state } : {}),\n };\n } else {\n return {\n ...params,\n ...getQueryObject(location.search),\n ...(location.state ? { state: location.state } : {}),\n };\n }\n }\n}\n\nfunction getQueryObject(search: string) {\n return (search.match(/([^?=&]+)(=([^&]*))/g) || []).reduce(function (\n state: Record,\n curr,\n ) {\n const [key, value] = curr.split(\"=\");\n state[key] = value;\n return state;\n }, {});\n}\n\nexport { useQueryParams };\n","import { useEffect } from \"react\";\n\nexport default function useFullWidthLayout() {\n useEffect(() => {\n if (document.body.classList.contains(\"tixxt--full\")) {\n document.body.classList.add(\"full-content\");\n }\n\n return () => {\n if (document.body.classList.contains(\"full-content\")) {\n document.body.classList.remove(\"full-content\");\n }\n };\n }, []);\n}\n","import { useEffect } from \"react\";\n\nlet confirmationMessage: string | null = null;\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event#examples\nconst beforeUnloadListener = (event) => {\n event.preventDefault();\n return (event.returnValue = \"\");\n};\n\nexport function getConfirmationMessage() {\n return confirmationMessage;\n}\n\nfunction enableInterceptor(message) {\n confirmationMessage = message;\n window.addEventListener(\"beforeunload\", beforeUnloadListener, {\n capture: true,\n });\n}\n\nfunction disableInterceptor() {\n confirmationMessage = null;\n removeEventListener(\"beforeunload\", beforeUnloadListener, { capture: true });\n}\n\nexport default function useInterceptorPrompt(message: string, when = true) {\n useEffect(() => {\n if (when && !window.isApp) {\n enableInterceptor(message);\n } else {\n disableInterceptor();\n }\n\n return disableInterceptor;\n }, [message, when]);\n}\n","import { useEffect, useState } from \"react\";\n\nexport function useMaxHeight() {\n const [style, setStyle] = useState({});\n\n useEffect(() => {\n function updateStyle() {\n setStyle({ maxHeight: `${window.innerHeight}px` });\n }\n\n updateStyle();\n window.addEventListener(\"resize\", updateStyle);\n return () => {\n window.removeEventListener(\"resize\", updateStyle);\n };\n }, []);\n\n return style;\n}\n","import { useEffect, useRef } from \"react\";\nimport Tooltip from \"bootstrap/js/dist/tooltip\";\n\nexport default function useTooltip(title?: string) {\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 useEffect(() => {\n if (elemRef.current && title) {\n const tooltipInstance = Tooltip.getInstance(elemRef.current);\n if (tooltipInstance) {\n tooltipInstance.setContent({\n \".tooltip-inner\": title,\n });\n }\n }\n }, [title]);\n\n return elemRef;\n}\n","import { isUndefined, memoize, some } from \"lodash\";\n\nconst CHAT_STATIC_BREAKPOINT = 1884;\n\ndocument.addEventListener(\n \"click\",\n function (e) {\n if (!(e.target instanceof HTMLElement || e.target instanceof SVGElement))\n return;\n\n // togglebar element clicked directly\n if (e.target?.dataset?.togglebar) {\n toggle(e.target.dataset.togglebar);\n return;\n }\n\n // togglebar child clicked check\n for (\n let target: Node | null = e.target;\n target && target !== document;\n target = target.parentNode\n ) {\n if (target instanceof HTMLButtonElement && target?.dataset?.togglebar) {\n toggle(target.dataset.togglebar);\n break;\n }\n }\n },\n false,\n);\n\nfunction coversWholeScreen(el: HTMLElement) {\n return window.getComputedStyle(el).width === `${window.innerWidth}px`;\n}\n\nfunction shouldRestoreBodyScrolling() {\n return !some(Array.from(openBarElements), coversWholeScreen);\n}\n\nconst openBarElements = new Set();\n\nfunction toggle(bar, show?: boolean) {\n const el = document.querySelector(`.tixxt__${bar}`);\n if (!(el instanceof HTMLElement)) return;\n\n const persist = el.dataset?.persist !== undefined;\n\n if (!el) {\n console.warn(`no .tixxt__${bar} element found to toggle`);\n return null;\n }\n\n if (isUndefined(show))\n show =\n !el.classList.contains(`${bar}--visible`) ||\n el.classList.contains(\"hidden\");\n\n if (show) {\n if (el.classList.contains(\"hidden\")) el.classList.remove(\"hidden\");\n if (persist) sessionStorage.setItem(`${bar}Visible`, \"true\");\n\n el.classList.add(`${bar}--visible`);\n openBarElements.add(el);\n\n if (coversWholeScreen(el)) disableBodyScrolling(bar);\n } else {\n if (persist) sessionStorage.removeItem(`${bar}Visible`);\n\n el.classList.add(`${bar}--hiding`);\n\n openBarElements.delete(el);\n restoreBodyScrolling(bar);\n\n setTimeout(() => {\n el.classList.remove(`${bar}--hiding`, `${bar}--visible`);\n }, 500);\n }\n}\n\nconst getResizeHandler = memoize((bar: string) => () => {\n const el = document.querySelector(`.tixxt__${bar}`);\n if (!(el instanceof HTMLElement)) return;\n\n if (!coversWholeScreen(el)) toggle(bar, false);\n});\n\nexport function disableBodyScrolling(bar: string) {\n document.body.style.top = `-${window.scrollY}px`;\n document.body.style.overflow = \"hidden\";\n document.body.style.position = \"fixed\";\n\n window.addEventListener(\"resize\", getResizeHandler(bar));\n}\n\nexport function restoreBodyScrolling(bar: string) {\n if (!shouldRestoreBodyScrolling()) return;\n\n const scrollY = document.body.style.top;\n document.body.style.removeProperty(\"overflow\");\n document.body.style.removeProperty(\"position\");\n document.body.style.removeProperty(\"top\");\n window.scrollTo(0, parseInt(scrollY || \"0\") * -1);\n window.removeEventListener(\"resize\", getResizeHandler(bar));\n}\n\nexport function closeUserbar() {\n toggle(\"userbar\", false);\n}\n\n/* show bar immediately if it was visible before */\nexport function restoreVisibility(bar: string, el: HTMLElement) {\n if (sessionStorage.getItem(`${bar}Visible`)) {\n el.classList.add(`${bar}--visible`);\n }\n}\n\nexport function toggleChatbar() {\n if (window.innerWidth >= CHAT_STATIC_BREAKPOINT) {\n toggleStaticChat();\n } else {\n toggle(\"chatbar\");\n }\n}\n\nfunction toggleStaticChat() {\n if (document.body.classList.contains(\"tixxt--with-chat\")) {\n sessionStorage.setItem(\"chatbarStaticHidden\", \"true\");\n hideStaticChat();\n } else {\n sessionStorage.removeItem(\"chatbarStaticHidden\");\n document.body.classList.add(\"tixxt--with-chat\");\n document.getElementById(\"chatbar-root\")?.classList.remove(\"hidden\");\n }\n}\n\nfunction hideStaticChat() {\n document.body.classList.remove(\"tixxt--with-chat\");\n document.getElementById(\"chatbar-root\")?.classList.add(\"hidden\");\n}\n\n/* hide chat immediately if it was hidden before */\nexport function restoreStaticChat() {\n if (sessionStorage.getItem(\"chatbarStaticHidden\")) {\n hideStaticChat();\n }\n}\n","import { Application } from \"@hotwired/stimulus\";\n\nconst application = Application.start();\n\n// Configure Stimulus development experience\napplication.debug = false;\nwindow.Stimulus = application;\n\nexport { application };\n","import { Controller } from \"@hotwired/stimulus\";\n\n// Connects to data-controller=\"accordion-scroll\"\nexport default class extends Controller {\n connect() {\n this.scrollToOpenAccordion();\n this.element.addEventListener(\"shown.bs.collapse\", () => {\n this.scrollToOpenAccordion();\n });\n }\n\n scrollToOpenAccordion() {\n const openAccordionItem = this.element.querySelector(\".collapse.show\");\n\n if (openAccordionItem) {\n const button =\n openAccordionItem.previousElementSibling.querySelector(\"button\");\n\n button.scrollIntoView({\n behavior: \"smooth\",\n block: \"end\",\n inline: \"nearest\",\n });\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\n// Connects to data-controller=\"administration--activitystream--close-activity-reply-month\"\nexport default class extends Controller {\n onClickChangeValue(event) {\n this.$CloseActivityReplyAutomaticSelect = this.element.querySelector(\n \".close_activity_reply_automatic_select\",\n );\n\n this.$CloseActivityReplyAutomaticSelect.classList.toggle(\n \"hidden\",\n !(event.target.value === \"automatic\"),\n );\n }\n}\n","import React, { useState } from \"react\";\nimport { Category } from \"../../../../@types/appointmentCategories\";\n\nfunction CategoryRow({\n category,\n changeCategory,\n removeCategory,\n}: {\n category: Category;\n changeCategory: (id: string, label: string) => void;\n removeCategory: (id: string) => void;\n}) {\n const [text, setText] = useState(category.label);\n const [edit, setEdit] = useState(false);\n\n return (\n
  • \n {edit ? (\n
    \n setText(e.target.value)}\n />\n {\n e.preventDefault();\n changeCategory(category.id, text);\n setEdit(false);\n }}\n >\n \n \n
    \n ) : (\n category.label\n )}\n
    \n {\n e.preventDefault();\n setEdit(true);\n }}\n >\n \n \n {\n e.preventDefault();\n removeCategory(category.id);\n }}\n >\n \n \n
    \n
  • \n );\n}\n\nexport default CategoryRow;\n","import React, { useEffect, useState } from \"react\";\nimport { filter, map, some } from \"lodash\";\n\nimport Flash from \"components/shared/Flash\";\nimport { Category } from \"../../../../@types/appointmentCategories\";\nimport CategoryRow from \"components/administration/appointments/categories/CategoryRow\";\nimport InfoText from \"components/shared/InfoText\";\n\nfunction CategoriesEditor({ categories }: { categories: Category[] }) {\n const [selectedCategories, setSelectedCategories] = useState(categories);\n const [text, setText] = useState(\"\");\n const [error, setError] = useState(\"\");\n\n // set value to hidden input in administration appointment settings\n useEffect(() => {\n document.getElementsByName(\"custom_categories\")[0].setAttribute(\n \"value\",\n JSON.stringify(\n map(selectedCategories, (cat) => {\n // if category is new remove the id key\n if (cat.id === cat.label) {\n return { label: cat.label };\n } else {\n return cat;\n }\n }),\n ),\n );\n }, [selectedCategories]);\n\n function addCategory() {\n if (some(selectedCategories, { label: text })) {\n setError(\n I18n.t(\n \"js.administration.appointment_settings.edit.duplicated_category\",\n ),\n );\n } else {\n setSelectedCategories([...selectedCategories, { id: text, label: text }]);\n setText(\"\");\n setError(\"\");\n }\n }\n\n function changeCategory(id: string, label: string) {\n const changedCategories = map(selectedCategories, (cat) => {\n if (cat.id === id) {\n return { ...cat, id: cat.id === cat.label ? label : cat.id, label };\n } else {\n return cat;\n }\n });\n\n setSelectedCategories(changedCategories);\n }\n\n function removeCategory(id: string) {\n let changedCategories;\n\n if (some(categories, { id })) {\n changedCategories = map(selectedCategories, (cat) => {\n if (cat.id === id) {\n return { ...cat, _destroy: true };\n } else {\n return cat;\n }\n });\n } else {\n changedCategories = filter(selectedCategories, (cat) => cat.id !== id);\n }\n\n setSelectedCategories(changedCategories);\n }\n\n return (\n <>\n {error !== \"\" ? (\n \n {error}\n \n ) : null}\n
    \n \n
      \n {map(\n filter(selectedCategories, (cat) => !cat._destroy),\n (category) => (\n \n ),\n )}\n
    \n
    \n setText(e.target.value)}\n />\n {\n e.preventDefault();\n addCategory();\n }}\n disabled={text === \"\"}\n >\n {I18n.t(\n \"js.networks.appointment_settings.custom_categories.add_category\",\n )}\n \n
    \n
    \n \n );\n}\n\nexport default CategoriesEditor;\n","import React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { Controller } from \"@hotwired/stimulus\";\nimport CategoriesEditor from \"../../components/administration/appointments/categories/CategoriesEditor\";\n\n// Connects to data-controller=\"administration--edit-categories\"\nexport default class extends Controller {\n static values = { context: String, categories: Array };\n\n connect() {\n const root = createRoot(this.element);\n root.render(\n ,\n );\n }\n\n disconnect() {\n createRoot(this.element).unmount();\n }\n}\n","import React, { useRef } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { Controller } from \"@hotwired/stimulus\";\nimport Modal from \"../../../components/shared/Modal\";\nimport ControlGroup from \"../../../components/shared/fields/ControlGroup\";\nimport Textarea from \"react-textarea-autosize\";\n\nfunction JoinRequestModal({ onClose, groupSlug, joinRequestId }) {\n const formRef = useRef();\n const submitUrl = `/groups/${groupSlug}/administration/join_requests/${joinRequestId}/reject`;\n\n return (\n formRef.current?.submit(),\n }}\n >\n
    \n \n \n

    \n \n \n \n \n );\n}\nActivityIntegration.propTypes = {\n properties: PropertiesReference.propTypes.properties,\n activity: PropTypes.shape({\n teaser_template: PropTypes.string,\n onActivityTeaserChange: PropTypes.func,\n }),\n};\n\nexport default ActivityIntegration;\n","import PropTypes from \"prop-types\";\nimport React, { useState } from \"react\";\nimport { map } from \"lodash\";\n\nimport PropertiesReference from \"./PropertiesReference\";\n\nfunction SingleEmailIntegration({\n properties,\n integration,\n onChange,\n onRemove,\n}) {\n const [subject, setSubject] = useState(integration.email_subject_template);\n const [text, setText] = useState(integration.email_text_template);\n\n return (\n
    \n
    \n {\n e.preventDefault();\n onRemove();\n }}\n >\n \n {I18n.t(\n \"js.administration.app_creator.app.integrations.email_notifications.delete_integration\",\n )}\n \n
    \n
    \n
    \n
    \n \n {I18n.t(\n \"js.administration.app_creator.app.integrations.email_notifications.assignee_property\",\n )}\n \n
    \n {\n e.preventDefault();\n onChange({\n ...integration,\n assignee_property_id: e.target.value,\n });\n }}\n >\n \n {map(properties, (prop) =>\n prop.type === \"membership\" ? (\n \n ) : null,\n )}\n \n
    \n
    \n\n
    \n \n {I18n.t(\n \"js.administration.app_creator.app.integrations.email_notifications.trigger\",\n )}\n \n
    \n {\n e.preventDefault();\n onChange({\n ...integration,\n trigger: e.target.value,\n });\n }}\n >\n \n \n \n
    \n
    \n\n
    \n \n {I18n.t(\n \"js.administration.app_creator.app.integrations.email_notifications.subject\",\n )}\n \n
    \n {\n e.preventDefault();\n setSubject(e.target.value);\n\n onChange({\n ...integration,\n email_subject_template: e.target.value,\n });\n }}\n />\n
    \n
    \n\n
    \n \n {I18n.t(\n \"js.administration.app_creator.app.integrations.email_notifications.text\",\n )}\n \n
    \n {\n e.preventDefault();\n setText(e.target.value);\n\n onChange({\n ...integration,\n email_text_template: e.target.value,\n });\n }}\n />\n
    \n
    \n
    \n
    \n
    \n );\n}\n\nSingleEmailIntegration.propTypes = {\n properties: PropertiesReference.propTypes.properties,\n integration: PropTypes.shape({\n type: PropTypes.string,\n trigger: PropTypes.string,\n assignee_property_id: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n email_subject_template: PropTypes.string,\n email_text_template: PropTypes.string,\n }),\n onChange: PropTypes.func,\n onRemove: PropTypes.func,\n};\n\nexport default SingleEmailIntegration;\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { isEmpty, map } from \"lodash\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport PropertiesReference from \"./PropertiesReference\";\nimport SingleEmailIntegration from \"./SingleEmailIntegration\";\n\nconst ADDITIONAL_PROPERTIES = [\n \"author\",\n \"last_author\",\n \"app_name\",\n \"actor_name\",\n];\n\nconst EmailIntegration = ({\n properties,\n emailIntegrations,\n onEmailIntegrationsChange,\n}) => {\n const addIntegration = () => {\n onEmailIntegrationsChange([\n ...emailIntegrations,\n {\n uuid: uuidv4(),\n type: \"email_notification\",\n trigger: \"assign\",\n assignee_property_id: \"-1\",\n email_subject_template: \"\",\n email_text_template: \"\",\n },\n ]);\n };\n\n const removeIntegration = (index) => {\n onEmailIntegrationsChange([\n ...emailIntegrations.slice(0, index),\n ...emailIntegrations.slice(index + 1),\n ]);\n };\n\n const changeIntegration = (index, integration) => {\n onEmailIntegrationsChange([\n ...emailIntegrations.slice(0, index),\n integration,\n ...emailIntegrations.slice(index + 1),\n ]);\n };\n\n return (\n
    \n

    \n {I18n.t(\n \"js.administration.app_creator.app.integrations.email_notifications.title\",\n )}\n

    \n
    \n
    \n

    \n {I18n.t(\n \"js.administration.app_creator.app.integrations.email_notifications.description\",\n )}\n

    \n

    \n
    \n \n
    \n
    \n
    \n {\n e.preventDefault();\n addIntegration();\n }}\n >\n \n {I18n.t(\n \"js.administration.app_creator.app.integrations.email_notifications.add_integration\",\n )}\n \n
    \n
    \n {map(emailIntegrations, (integration, i) => {\n // dirty workaround to apply a uuid as key (if not available yet), trick the optimised react rendering\n if (isEmpty(integration.uuid)) {\n integration.uuid = uuidv4();\n }\n\n return (\n \n changeIntegration(i, updatedIntegration)\n }\n onRemove={() => removeIntegration(i)}\n />\n );\n })}\n
    \n );\n};\nEmailIntegration.propTypes = {\n properties: PropertiesReference.propTypes.properties,\n emailIntegrations: PropTypes.arrayOf(\n SingleEmailIntegration.propTypes.integration,\n ),\n onEmailIntegrationsChange: PropTypes.func,\n};\n\nexport default EmailIntegration;\n","import React, { useState } from \"react\";\nimport classnames from \"classnames\";\n\nimport PropertiesReference from \"./PropertiesReference\";\nimport ActivityIntegration from \"./ActivityIntegration\";\nimport EmailIntegration from \"./EmailIntegration\";\n\nfunction IntegrationsEditor({\n properties,\n activity,\n emailIntegrations,\n onEmailIntegrationsChange,\n}) {\n const [activeTab, setActiveTab] = useState(\"activity\");\n\n return (\n \n \n );\n}\n\nIntegrationsEditor.propTypes = {\n properties: PropertiesReference.propTypes.properties,\n activity: ActivityIntegration.propTypes.activity,\n emailIntegrations: EmailIntegration.propTypes.emailIntegrations,\n onEmailIntegrationsChange:\n EmailIntegration.propTypes.onEmailIntegrationsChange,\n};\n\nexport default IntegrationsEditor;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty } from \"lodash\";\n\nfunction AssignedMember({ id, imageId, displayValue }) {\n return (\n \n \n {displayValue}\n \n );\n}\n\nAssignedMember.propTypes = {\n id: PropTypes.string,\n displayValue: PropTypes.string,\n imageId: PropTypes.string,\n};\n\nexport default AssignedMember;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { isArray, map } from \"lodash\";\nimport AssignedMember from \"../details/AssignedMember\";\n\nfunction AssignedMembers({ memberships }) {\n return (\n
    \n
    \n
    \n {isArray(memberships) ? (\n map(memberships, (membership, index) =>\n index < 7 ? (\n \n ) : null,\n )\n ) : (\n \n )}\n {memberships.length > 7 ? `+${memberships.length - 7}` : null}\n
    \n
    \n
    \n
    \n );\n}\nAssignedMembers.propTypes = {\n cardId: PropTypes.string,\n memberships: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n imageId: PropTypes.string,\n }),\n ),\n};\n\nexport default AssignedMembers;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { map } from \"lodash\";\n\nfunction Tag(tag) {\n return (\n \n \n {tag.name}\n \n \n );\n}\nTag.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string,\n};\n\nfunction Tags({ tags }) {\n return (\n
    \n {map(tags, (tag) => (\n \n ))}\n
    \n );\n}\nTags.propTypes = {\n tags: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n }),\n ),\n};\n\nexport default Tags;\n","import React, { useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty } from \"lodash\";\n\nimport Tags from \"./Tags\";\n\nexport default function Info({ logo, description, tags, setFilteredByTag }) {\n const descriptionContainer = useRef(null);\n\n return (\n
    \n {!isEmpty(logo) ? (\n
    \n \n
    \n ) : null}\n {!isEmpty(description) ? (\n
    \n \n {descriptionContainer?.current?.clientHeight > 64 ? (\n
    \n ) : null}\n
    \n ) : null}\n {!isEmpty(tags) ? (\n \n ) : null}\n
    \n );\n}\nInfo.propTypes = {\n logo: PropTypes.shape({\n url: PropTypes.string,\n }),\n description: PropTypes.string,\n setDescriptionContainer: PropTypes.func,\n setFilteredByTag: PropTypes.func,\n parseMarkdown: PropTypes.func,\n descriptionContainer: PropTypes.shape({\n clientHeight: PropTypes.number,\n }),\n tags: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string,\n id: PropTypes.string,\n }),\n ),\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nfunction FileCounter({ filesCount }) {\n return (\n
    \n \n {filesCount}\n
    \n );\n}\nFileCounter.propTypes = {\n filesCount: PropTypes.number,\n};\n\nexport default FileCounter;\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport moment from \"moment-timezone\";\nimport { isEmpty } from \"lodash\";\nimport preventDefault from \"../../../../helpers/components/preventDefault\";\n\nexport default function Title({\n title,\n date,\n cardId,\n toggleArchive,\n isArchive,\n isUnassigned,\n}) {\n const [showMenu, setShowMenu] = useState(false);\n\n function toggleMenu() {\n setShowMenu(!showMenu);\n }\n\n return (\n
    \n
    \n \n {title}\n \n {date && !isEmpty(date.value) ? (\n

    \n {date.label}:{\" \"}\n {moment(date.value).format(date.format)}\n

    \n ) : null}\n
    \n\n {!isUnassigned ? (\n (showMenu ? setTimeout(toggleMenu, 250) : null)}\n >\n \n \n \n \n
  • \n \n {I18n.t(\"js.apps.wall.show\")}\n \n \n {I18n.t(\"js.apps.wall.edit\")}\n \n \n {isArchive\n ? I18n.t(\"js.apps.wall.restore\")\n : I18n.t(\"js.apps.wall.archive\")}\n \n
  • \n \n
    \n ) : null}\n
    \n );\n}\nTitle.propTypes = {\n title: PropTypes.string,\n date: PropTypes.oneOfType([\n PropTypes.shape({\n value: PropTypes.string,\n label: PropTypes.string,\n format: PropTypes.string,\n }),\n PropTypes.string,\n ]),\n cardId: PropTypes.string,\n toggleMenu: PropTypes.func,\n onSetShowMenuRef: PropTypes.func,\n toggleArchive: PropTypes.func,\n showMenu: PropTypes.bool,\n isArchive: PropTypes.bool,\n isUnassigned: PropTypes.bool,\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport moment from \"moment\";\n\nfunction ArchiveInfo({ archivedBy, archivedAt }) {\n return (\n
    \n {I18n.t(\"js.apps.wall.archive_info\", {\n date: moment(archivedAt).format(\"DD. MMMM YYYY\"),\n time: moment(archivedAt).format(\"hh:mm\"),\n person_name: archivedBy,\n })}\n
    \n );\n}\nArchiveInfo.propTypes = {\n archivedBy: PropTypes.string,\n archivedAt: PropTypes.string,\n};\nexport default ArchiveInfo;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { compose, withState, withHandlers, withProps } from \"recompose\";\nimport classNames from \"classnames\";\nimport { isEmpty, isArray } from \"lodash\";\nimport { DragSource, DropTarget } from \"react-dnd\";\nimport AssignedMembers from \"./details/AssignedMembers\";\nimport Info from \"./details/Info\";\nimport FileCounter from \"./details/FileCounter\";\nimport Title from \"./details/Title\";\nimport ArchiveInfo from \"./details/ArchiveInfo\";\nimport { archiveItem, unarchiveItem } from \"../../../actions/appCreator\";\n\nconst cardSource = {\n canDrag(props) {\n console.log(\"CAN MOVE\", props.canMoveCard);\n return props.canMoveCard;\n },\n beginDrag(props) {\n props.setCardHeight(props.cardRef.clientHeight);\n return {\n cardId: props.cardId,\n };\n },\n endDrag(props, monitor) {\n if (monitor.didDrop()) {\n const result = monitor.getDropResult();\n props.onMoveCard({\n cardId: props.cardId,\n fieldName: result.fieldName,\n targetColumn: result.column,\n insertAfterCardId: result.insertAfterCardId,\n });\n }\n },\n};\n\nconst cardTarget = {\n hover(props) {\n props.setHoveredCardId && props.setHoveredCardId(props.cardId);\n },\n};\n\nconst Card = compose(\n DragSource(\"card\", cardSource, (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging(),\n })),\n DropTarget(\"card\", cardTarget, (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop(),\n })),\n)(({\n title,\n description,\n date,\n tags,\n logo,\n connectDragSource,\n isDragging,\n connectDropTarget,\n isOver,\n cardId,\n filesCount,\n memberships,\n onSetCardRef,\n cardHeight,\n archiveItem,\n isArchive,\n unarchiveItem,\n archivedBy,\n archivedAt,\n setFilteredByTag,\n setFilteredByMember,\n isUnassigned,\n}) => {\n return connectDragSource(\n connectDropTarget(\n
    \n \n
    \n \n \n \n {filesCount > 0 ? : null}\n {!isEmpty(memberships) ? (\n \n ) : null}\n {isArchive ? (\n \n ) : null}\n
    \n
    \n
    \n {isOver && !isDragging ? (\n \n ) : null}\n ,\n ),\n );\n});\nCard.propTypes = {\n title: PropTypes.string,\n filesCount: PropTypes.number,\n memberships: PropTypes.oneOfType([\n PropTypes.arrayOf(\n PropTypes.shape({ id: PropTypes.string, displayValue: PropTypes.string }),\n ),\n PropTypes.shape({ id: PropTypes.string, displayValue: PropTypes.string }),\n ]),\n description: PropTypes.string,\n date: PropTypes.oneOfType([\n PropTypes.shape({\n value: PropTypes.string,\n label: PropTypes.string,\n format: PropTypes.string,\n }),\n PropTypes.string,\n ]),\n tags: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string,\n id: PropTypes.string,\n }),\n ),\n logo: PropTypes.shape({\n url: PropTypes.string,\n }),\n setCard: PropTypes.func,\n onMoveCard: PropTypes.func,\n setHoveredCardId: PropTypes.func,\n onSetCardRef: PropTypes.func,\n setCardHeight: PropTypes.func,\n archiveItem: PropTypes.func,\n unarchiveItem: PropTypes.func,\n setFilteredByTag: PropTypes.func,\n setFilteredByMember: PropTypes.func,\n cardId: PropTypes.string,\n appId: PropTypes.string,\n cardHeight: PropTypes.number,\n isArchive: PropTypes.bool,\n archivedBy: PropTypes.string,\n archivedAt: PropTypes.string,\n column: PropTypes.string,\n isUnassigned: PropTypes.bool,\n canMoveCard: PropTypes.bool,\n};\n\nexport default compose(\n connect(null, (dispatch, { appId, cardId, column }) => ({\n archiveItem: () => dispatch(archiveItem({ appId, itemId: cardId, column })),\n unarchiveItem: () => dispatch(unarchiveItem({ appId, itemId: cardId })),\n })),\n withProps(({ logo }) => ({\n logo: isArray(logo) ? logo[0] : logo,\n })),\n withState(\"cardRef\", \"setCardRef\", null),\n withHandlers({\n onSetCardRef:\n ({ setCardRef }) =>\n (ref) => {\n setCardRef(ref);\n },\n }),\n)(Card);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { compose, withState, withHandlers, lifecycle } from \"recompose\";\nimport { DropTarget } from \"react-dnd\";\nimport { map, isEmpty, get } from \"lodash\";\n\nimport Card from \"./Card\";\n\nconst columnTitleTarget = {\n hover(props) {\n props.setIsOverColumnTitle(true);\n props.setHoveredCardId(null);\n },\n drop(props) {\n props.setIsOverColumnTitle(false);\n return {\n column: props.value,\n fieldName: props.columnField.name,\n insertAfterCardId: null,\n };\n },\n};\n\nconst ColumnTitle = compose(\n DropTarget(\"card\", columnTitleTarget, (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n })),\n withHandlers({\n changeIsOver:\n ({ setIsOverColumnTitle }) =>\n () =>\n setIsOverColumnTitle(false),\n }),\n lifecycle({\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.isOver !== this.props.isOver && !nextProps.isOver) {\n this.props.changeIsOver(false);\n }\n },\n }),\n)(({ title, connectDropTarget }) =>\n connectDropTarget(
    {title}
    ),\n);\nColumnTitle.propTypes = {\n title: PropTypes.string,\n};\n\nconst columnTarget = {\n hover(props) {\n props.setHoveredCardId(null);\n },\n drop(props) {\n return {\n column: props.value,\n fieldName: props.columnField.name,\n insertAfterCardId: props.hoveredCardId,\n };\n },\n};\n\nconst Column = compose(\n DropTarget(\"card\", columnTarget, (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n })),\n withState(\"currentCard\", \"setCurrentCard\", {}),\n withState(\"isOverColumnTitle\", \"setIsOverColumnTitle\", false),\n)((props) => {\n return !isEmpty(props.value)\n ? props.connectDropTarget(\n \n \n
    \n
    \n {props.isOverColumnTitle ? (\n \n ) : null}\n {map(props.cards, (card) => (\n props.setCurrentCard(card)}\n onMoveCard={props.onMoveCard}\n cardId={card.id}\n column={props.value}\n fieldName={props.columnField.name}\n setHoveredCardId={props.setHoveredCardId}\n setCardHeight={props.setCardHeight}\n cardHeight={props.cardHeight}\n appId={props.appId}\n isArchive={props.isArchive}\n setFilteredByTag={props.setFilteredByTag}\n setFilteredByMember={props.setFilteredByMember}\n archivedBy={\n !isEmpty(card.archived_by)\n ? card.archived_by.displayValue\n : null\n }\n archivedAt={\n !isEmpty(card.archived_at) ? card.archived_at : null\n }\n canMoveCard={\n get(card, \"can.update\") &&\n get(props.columnField, \"can.update\")\n }\n />\n ))}\n {props.hasMoreItems ? (\n
    \n {I18n.t(\"js.apps.wall.show_more_items\")}{\" \"}\n \n
    \n ) : null}\n {props.totalArchivedItems > 0 ? (\n {`${I18n.t(\n \"js.apps.wall.archived_cards\",\n )}: ${props.totalArchivedItems}`}\n ) : null}\n
    \n
    \n ,\n )\n : null;\n});\nColumn.propTypes = {\n cardTitleField: PropTypes.shape({\n name: PropTypes.string,\n }),\n cardDescriptionField: PropTypes.shape({\n name: PropTypes.string,\n }),\n cardLogoField: PropTypes.shape({\n name: PropTypes.string,\n }),\n columnField: PropTypes.shape({\n name: PropTypes.string,\n }),\n onMoveCard: PropTypes.func,\n cardFileField: PropTypes.shape({\n name: PropTypes.string,\n }),\n cardMembershipField: PropTypes.shape({\n name: PropTypes.string,\n }),\n cardTagField: PropTypes.shape({\n name: PropTypes.string,\n }),\n hasMoreItems: PropTypes.bool,\n cards: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n attributes: PropTypes.shape({}),\n }),\n ),\n connectDropTarget: PropTypes.func,\n setCurrentCard: PropTypes.func,\n parseMarkdown: PropTypes.func,\n loadMoreItems: PropTypes.func,\n setHoveredCardId: PropTypes.func.isRequired,\n setCardHeight: PropTypes.func,\n setFilteredByTag: PropTypes.func,\n setFilteredByMember: PropTypes.func,\n cardHeight: PropTypes.number,\n label: PropTypes.string,\n value: PropTypes.string,\n hoveredCardId: PropTypes.string,\n loadMoreUrl: PropTypes.string,\n appId: PropTypes.string,\n isLast: PropTypes.bool,\n isArchive: PropTypes.bool,\n cardDateField: PropTypes.shape([\n {\n format: PropTypes.string,\n label: PropTypes.string,\n },\n PropTypes.string,\n ]),\n totalArchivedItems: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n appUrl: PropTypes.string,\n};\n\nexport default compose(withState(\"hoveredCardId\", \"setHoveredCardId\", null))(\n Column,\n);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faFilterCircleXmark } from \"@fortawesome/pro-regular-svg-icons\";\nimport { useQueryParams } from \"../../../helpers/useQueryParams\";\nimport AssignedMember from \"./details/AssignedMember\";\nimport { WallViewFilterPortal } from \"../../layout/portals\";\n\nfunction HeaderButtons({ url, type }) {\n const queryParams = useQueryParams();\n return (\n <>\n {type == \"archive\" ? (\n
    \n \n \n \n
    \n ) : (\n \n \n
    \n \n\n {\"tag\" in queryParams && (\n \n {queryParams.tag}{\" \"}\n \n )}\n\n {\"assignee_id\" in queryParams && (\n \n )}\n
    \n \n
    \n )}\n \n );\n}\n\nHeaderButtons.propTypes = {\n url: PropTypes.string,\n type: PropTypes.string,\n};\n\nexport default HeaderButtons;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty } from \"lodash\";\n\nfunction AppStage({ logoId, description }) {\n return (\n
    \n {!isEmpty(logoId) ? (\n \n ) : null}\n \n
    \n
    \n );\n}\n\nAppStage.propTypes = {\n logoId: PropTypes.string,\n description: PropTypes.string,\n};\n\nexport default AppStage;\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { map, get } from \"lodash\";\n\nimport Card from \"./Card\";\n\nexport default function UnassignedItems({\n cardProps,\n items,\n titlePropName,\n canUpdateColumn,\n}) {\n const [showItems, setShowItems] = useState(false);\n\n function toggleShowItems() {\n setShowItems(!showItems);\n }\n\n return (\n
    \n \n {items.length === 1\n ? I18n.t(\"js.apps.wall.unassigned_item.hint\")\n : I18n.t(\"js.apps.wall.unassigned_items.hint\", {\n counter: items.length,\n })}\n \n
    \n {showItems ? (\n
    \n {map(items, (item) => (\n \n ))}\n
    \n ) : null}\n
    \n );\n}\nUnassignedItems.propTypes = {\n toggleShowItems: PropTypes.func,\n showItems: PropTypes.bool,\n cardProps: PropTypes.shape({\n isArchive: PropTypes.bool,\n onMoveCard: PropTypes.func,\n setCardHeight: PropTypes.func,\n setFilteredByTag: PropTypes.func,\n setFilteredByMember: PropTypes.func,\n }),\n items: PropTypes.array,\n titlePropName: PropTypes.string,\n canUpdateColumn: PropTypes.bool,\n};\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport { DragDropContext } from \"react-dnd\";\nimport HTML5Backend from \"react-dnd-html5-backend\";\nimport { compose, withProps, lifecycle, withState } from \"recompose\";\nimport { findIndex, map, compact, isEmpty, find, get } from \"lodash\";\n\nimport Column from \"./wallView/Column\";\nimport HeaderButtons from \"./wallView/HeaderButtons\";\nimport AppStage from \"./wallView/AppStage\";\nimport UnassignedItems from \"./wallView/UnassignedItems\";\nimport {\n fetchApp,\n updateItem,\n fetchItems,\n loadMoreItemsByColumn,\n fetchItems as fetchItemsForTag,\n fetchItems as fetchItemsForMember,\n} from \"actions/appCreator\";\nimport {\n itemsSelector as itemsForWallSelector,\n loadMoreUrlsSelector,\n totalArchivedItemsSelector,\n} from \"selectors/appCreator\";\nimport store from \"store\";\nimport wrapProvider from \"helpers/components/wrapProvider\";\nimport useFullWidthLayout from \"hooks/useFullWidthLayout\";\n\nfunction ItemsWallView({\n items,\n app,\n columnField,\n cardTitleField,\n cardDescriptionField,\n cardDateField,\n cardLogoField,\n cardTagField,\n columns,\n onMoveCard,\n cardFileField,\n cardMembershipField,\n layoutOptions,\n loadMoreUrls,\n loadMoreItems,\n unassignedItems,\n setCardHeight,\n cardHeight,\n isArchive,\n appUrl,\n totalArchivedItems,\n setFilteredByTag,\n setFilteredByMember,\n showsFilteredItems,\n}) {\n useFullWidthLayout();\n\n return (\n
    \n
    \n {isArchive || showsFilteredItems ? (\n \n ) : null}\n {layoutOptions.stage ? (\n \n ) : null}\n {!isEmpty(unassignedItems) ? (\n \n ) : null}\n
    \n {isEmpty(columns) ? (\n
    \n {I18n.t(\"js.apps.wall.no_columns.hint\")}\n
    \n ) : (\n
    \n
    \n {map(columns, (column, index) => {\n return (\n \n loadMoreItems({ url: loadMoreUrls[column.value] })\n }\n totalArchivedItems={\n totalArchivedItems ? totalArchivedItems[column.value] : \"0\"\n }\n cards={compact(\n map(items, (item) =>\n get(item, [\"values\", columnField.name, 0]) ===\n column.value\n ? item\n : null,\n ),\n )}\n {...column}\n />\n );\n })}\n
    \n
    \n )}\n
    \n );\n}\n\nItemsWallView.propTypes = {\n items: PropTypes.arrayOf(PropTypes.shape({})),\n unassignedItems: PropTypes.arrayOf(PropTypes.shape({})),\n columnField: PropTypes.shape({\n name: PropTypes.string,\n }),\n cardTitleField: PropTypes.shape({\n name: PropTypes.string,\n }),\n cardDescriptionField: PropTypes.shape({\n name: PropTypes.string,\n }),\n cardDateField: PropTypes.shape({\n format: PropTypes.string,\n label: PropTypes.string,\n }),\n cardLogoField: PropTypes.shape({\n url: PropTypes.string,\n }),\n cardFileField: PropTypes.shape({\n name: PropTypes.string,\n }),\n cardMembershipField: PropTypes.shape({\n name: PropTypes.string,\n }),\n cardTagField: PropTypes.shape({\n name: PropTypes.string,\n }),\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n value: PropTypes.string,\n label: PropTypes.string,\n }),\n ),\n onMoveCard: PropTypes.func,\n layoutOptions: PropTypes.shape({\n stage: PropTypes.bool,\n }),\n parseMarkdown: PropTypes.func,\n loadMoreItems: PropTypes.func,\n showUnassignedItems: PropTypes.bool,\n showsFilteredItems: PropTypes.bool,\n toggleShowUnassignedItems: PropTypes.func,\n setCardHeight: PropTypes.func,\n setFilteredByTag: PropTypes.func,\n setFilteredByMember: PropTypes.func,\n resetTagFilter: PropTypes.func,\n filteredByTag: PropTypes.string,\n cardHeight: PropTypes.number,\n app: PropTypes.shape({}),\n isArchive: PropTypes.bool,\n loadMoreUrls: PropTypes.objectOf(PropTypes.string),\n appUrl: PropTypes.string,\n totalArchivedItems: PropTypes.shape({}),\n};\n\nexport default compose(\n wrapProvider(store),\n connect(\n (state) => ({\n items: itemsForWallSelector(state),\n loadMoreUrls: loadMoreUrlsSelector(state),\n totalArchivedItems: totalArchivedItemsSelector(state),\n }),\n (dispatch, { app, isArchive }) => ({\n onMoveCard: ({ cardId, fieldName, targetColumn, insertAfterCardId }) => {\n dispatch(\n updateItem({\n appId: app.id,\n itemId: cardId,\n insertAfterCardId,\n body: {\n insert_after_id: insertAfterCardId,\n values: { [fieldName]: [targetColumn] },\n },\n optimistic: true,\n }),\n );\n },\n initApp: () => {\n dispatch({ type: fetchApp.SUCCESS, payload: app });\n },\n fetchItems: () => {\n if (isArchive) {\n dispatch(fetchItems({ appId: app.id, view: \"wall\", archived: true }));\n } else {\n dispatch(fetchItems({ appId: app.id, view: \"wall\" }));\n }\n },\n fetchItemsForTag: ({ tag }) => {\n if (isArchive) {\n dispatch(\n fetchItemsForTag({\n appId: app.id,\n view: \"wall\",\n archived: true,\n tag,\n }),\n );\n } else {\n dispatch(fetchItemsForTag({ appId: app.id, view: \"wall\", tag }));\n }\n },\n fetchItemsForMember: ({ assignee_id }) => {\n if (isArchive) {\n dispatch(\n fetchItemsForMember({\n appId: app.id,\n view: \"wall\",\n archived: true,\n assignee_id,\n }),\n );\n } else {\n dispatch(\n fetchItemsForMember({ appId: app.id, view: \"wall\", assignee_id }),\n );\n }\n },\n loadMoreItems: ({ url }) => {\n dispatch(loadMoreItemsByColumn({ url }));\n },\n }),\n ),\n withState(\"showsFilteredItems\", \"setShowsFilteredItems\", false),\n lifecycle({\n componentDidMount() {\n this.props.initApp();\n if (this.props.tag_filter) {\n this.props.fetchItemsForTag({ tag: this.props.tag_filter });\n this.props.setShowsFilteredItems(true);\n } else if (this.props.member_filter) {\n this.props.fetchItemsForMember({\n assignee_id: this.props.member_filter,\n });\n this.props.setShowsFilteredItems(true);\n } else {\n this.props.fetchItems();\n }\n },\n }),\n withProps(({ app, items }) => {\n const layoutOptions = get(app, [\n \"collection_layout\",\n \"options\",\n get(app, [\"collection_layout\", \"layout\"]),\n ]);\n\n //@get('collection_layout').options?[@get('collection_layout').layout] || {}\n const getField = ({ selector = \"type\", value }) =>\n app.properties[\n findIndex(app.properties, (p) => get(p, selector) === value)\n ];\n\n const cardDescriptionField =\n app.properties[\n findIndex(\n app.properties,\n (p) =>\n p.type === \"text\" && p.name !== getField({ value: \"text\" }).name,\n )\n ];\n\n const appColumns = get(\n find(\n app.properties,\n (prop) => prop._id === layoutOptions.column_property,\n ),\n \"options\",\n );\n\n const unassignedItems = compact(\n map(items, (item) =>\n !get(item, [\"values\", layoutOptions.column_property, 0]) ? item : null,\n ),\n );\n\n const props = {\n columnField: getField({\n selector: \"name\",\n value: layoutOptions.column_property,\n }),\n cardTitleField: getField({ value: \"text\" }),\n cardDescriptionField: cardDescriptionField,\n cardDateField: getField({ value: \"date\" }),\n cardLogoField: getField({ value: \"image\" }),\n cardFileField: getField({ value: \"file\" }),\n cardMembershipField: getField({ value: \"membership\" }),\n cardTagField: getField({ value: \"tag\" }),\n columns: appColumns,\n layoutOptions,\n unassignedItems,\n };\n return { ...props };\n }),\n withState(\"cardHeight\", \"setCardHeight\", 0),\n DragDropContext(HTML5Backend),\n)(ItemsWallView);\n","import {\n ItemDetailLayoutEditor,\n ItemEditLayoutEditor,\n} from \"./ItemLayoutEditor\";\nimport IntegrationsEditor from \"./IntegrationsEditor\";\nimport ItemsWallView from \"./ItemsWallView\";\n\nexport default {\n \"appCreator/ItemDetailLayoutEditor\": ItemDetailLayoutEditor,\n \"appCreator/ItemEditLayoutEditor\": ItemEditLayoutEditor,\n \"appCreator/IntegrationsEditor\": IntegrationsEditor,\n \"appCreator/ItemsWallView\": ItemsWallView,\n};\n","import { get } from \"lodash\";\n\nexport const getNetworkProfileFields = (state) =>\n get(state, [\"network\", \"profile_fields\"]);\n\nexport const networkIdSelector = (state) => get(state, [\"network\", \"id\"]);\n","import { get } from \"lodash\";\nimport { createSelector } from \"reselect\";\n\nconst widgetbarPath = [\"administration\", \"widgetbar\"];\nconst editWidgetbarPath = [...widgetbarPath, \"edit\"];\n\nexport const getWidgets = (state) =>\n get(state, [...editWidgetbarPath, \"widgets\"]);\n\nexport const getWidgetbarGroupId = (state) =>\n get(state, [...editWidgetbarPath, \"groupId\"]);\n\nexport const getSelectedWidgetIndex = (state) =>\n get(state, [...editWidgetbarPath, \"selectedWidgetIndex\"]);\n\nexport const getCalendars = (state) =>\n get(state, [...editWidgetbarPath, \"calendars\"]);\n\nexport const getSelectedWidget = createSelector(\n [getWidgets, getSelectedWidgetIndex],\n (widgets, index) => widgets[index],\n);\n\nexport const getWidgetbars = (state) =>\n get(state, [...widgetbarPath, \"index\", \"widgetbars\"]);\n","// extracted by mini-css-extract-plugin\nexport default {\"ModuleselectField\":\"ZEsY5jodl3rKL2esTtW_\"};","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { filter, includes } from \"lodash\";\nimport Select from \"react-select\";\nimport { getNetworkProfileFields } from \"helpers/selectors/networkSelectors\";\nimport { getCalendars } from \"helpers/selectors/widgetbarSelectors\";\nimport { getOptions, scopeSelection } from \"helpers/widgets/widgets\";\nimport styles from \"./MultiselectField.module.css\";\nimport useTooltip from \"hooks/useTooltip\";\n\ninterface MultiselectFieldTypes {\n name: string;\n onChange?(...args: unknown[]): unknown;\n value?: Array;\n type?: string;\n}\n\nexport default function MultiselectField({\n name,\n onChange,\n value: rawValue,\n type,\n}: MultiselectFieldTypes) {\n const rawOptions = {\n profile_fields: useSelector(getNetworkProfileFields),\n additional_calendar_ids: useSelector(getCalendars),\n };\n const options = getOptions(name, { ...rawOptions, scope: scopeSelection() });\n const value = filter(options, (option) => includes(rawValue, option.value));\n\n let labelProps = {};\n\n const tooltipRef = useTooltip();\n\n if (type === \"appointments\" && name === \"scope\") {\n labelProps = {\n [\"data-bs-toggle\"]: \"tooltip\",\n title: I18n.t(`js.administration.widgetbars.${name}.hint`),\n };\n }\n\n return (\n
    \n \n \n
    \n );\n}\n","import React from \"react\";\n\ninterface NumberFieldTypes {\n name: string;\n onChange?(...args: unknown[]): unknown;\n value?: string;\n hint?: string;\n}\n\nfunction NumberField({ name, onChange, value }: NumberFieldTypes) {\n return (\n <>\n \n \n \n );\n}\n\nexport default NumberField;\n","import React from \"react\";\nimport map from \"lodash/map\";\nimport { propTypeSelections } from \"helpers/widgets/widgets\";\ninterface RadioFieldTypes {\n name: string;\n onChange?(...args: unknown[]): unknown;\n value?: string;\n hint?: string;\n}\n\nfunction RadioField({ name, onChange, value }: RadioFieldTypes) {\n return (\n
    \n \n {map(propTypeSelections[name], (selection, index) => (\n \n ))}\n
    \n );\n}\n\nexport default RadioField;\n","import React from \"react\";\nimport map from \"lodash/map\";\nimport { propTypeSelections } from \"helpers/widgets/widgets\";\n\ninterface SelectFieldTypes {\n name: string;\n onChange?(...args: unknown[]): unknown;\n value?: string;\n}\n\nfunction SelectField({ name, onChange, value }: SelectFieldTypes) {\n return (\n
    \n \n \n {map(propTypeSelections[name], (option, index) => (\n \n ))}\n \n
    \n );\n}\n\nexport default SelectField;\n","import React from \"react\";\nimport Hint from \"components/shared/fields/Hint\";\n\ninterface TextareaFieldTypes {\n name: string;\n onChange?(...args: unknown[]): unknown;\n value?: string;\n hint?: string;\n}\n\nfunction TextareaField({ name, onChange, value, hint }: TextareaFieldTypes) {\n return (\n
    \n \n \n \n
    \n );\n}\n\nexport default TextareaField;\n","import React from \"react\";\nimport Hint from \"components/shared/fields/Hint\";\n\ninterface TextFieldTypes {\n name: string;\n onChange?(...args: unknown[]): unknown;\n value?: string;\n hint?: string;\n}\n\nfunction TextField({ name, onChange, value, hint }: TextFieldTypes) {\n return (\n
    \n \n \n \n
    \n );\n}\n\nexport default TextField;\n","import MultiselectField from \"components/administration/widgetbar/fields/MultiselectField\";\nimport NumberField from \"components/administration/widgetbar/fields/NumberField\";\nimport RadioField from \"components/administration/widgetbar/fields/RadioField\";\nimport SelectField from \"components/administration/widgetbar/fields/SelectField\";\nimport TextareaField from \"components/administration/widgetbar/fields/TextareaField\";\nimport TextField from \"components/administration/widgetbar/fields/TextField\";\nimport AdditionalCalendarsField from \"components/administration/widgetbar/fields/AdditionalCalendarField\";\nimport { changeValue } from \"actions/administration/widgetbar\";\nimport { getWidgetbarGroupId } from \"helpers/selectors/widgetbarSelectors\";\nimport { connect } from \"react-redux\";\nimport { compose, withHandlers } from \"recompose\";\nimport { keys, remove, map, includes, slice, last } from \"lodash\";\n\n// if scope includes the value 'all', then remove all other selections\n// if scope includes 'all' and it is the latest selected value, then this should be the only selection\n// if scope includes 'all' and an other value were selected, then remove 'all' out of the selection\nconst handleMultiselectLogic = (eventOrNewVal, valueChange, name) => {\n if (includes(eventOrNewVal, \"all\")) {\n if (last(eventOrNewVal) === \"all\") {\n valueChange({\n propertyKey: name,\n data: [\"all\"],\n });\n } else {\n valueChange({\n propertyKey: name,\n data: [...slice(eventOrNewVal, 1)],\n });\n }\n } else {\n valueChange({\n propertyKey: name,\n data: eventOrNewVal,\n });\n }\n};\n\nconst withOnChange = compose(\n connect(\n (state) => ({\n groupId: getWidgetbarGroupId(state),\n }),\n (dispatch) => ({\n valueChange: ({ propertyKey, data }) =>\n dispatch(changeValue(propertyKey, data)),\n }),\n ),\n withHandlers({\n onChange:\n ({ valueChange, name }) =>\n (eventOrNewVal) => {\n // MultiSelect field doesn't return an event\n if (eventOrNewVal instanceof Array) {\n handleMultiselectLogic(\n map(eventOrNewVal, (hash) => hash.value),\n valueChange,\n name,\n );\n } else {\n valueChange({\n propertyKey: name,\n data: eventOrNewVal.target.value,\n });\n }\n },\n }),\n);\n\nexport const PropTypeFields = {\n headline: withOnChange(TextField),\n content: withOnChange(TextareaField),\n renderer: withOnChange(SelectField),\n profile_fields: withOnChange(MultiselectField),\n scope: withOnChange(MultiselectField),\n count: withOnChange(NumberField),\n show_age: withOnChange(RadioField),\n sort: withOnChange(RadioField),\n url: withOnChange(TextField),\n position: withOnChange(NumberField),\n additional_calendar_ids: withOnChange(AdditionalCalendarsField),\n};\n\nexport const getOptions = (name, possibleOptions) => {\n const options = possibleOptions[name];\n\n switch (name) {\n case \"profile_fields\":\n return options.map((o) => ({\n value: o.name,\n label: o.label,\n }));\n case \"additional_calendar_ids\":\n return options.map((o) => ({\n value: o.id,\n label: o.name,\n }));\n case \"scope\":\n return options.map((o) => ({\n value: o,\n label: I18n.t(`js.administration.widgetbars.selections.${o}`),\n }));\n default:\n return [];\n }\n};\n\nconst checkIfHintShouldShow = (widget, property) => {\n const MembersHeadline =\n /(newest|online)_members/.test(widget.type) && property === \"headline\";\n const GroupInformationText =\n widget.type === \"group_info\" && property === \"content\";\n\n return MembersHeadline || GroupInformationText;\n};\n\nexport const generateHint = (widget, property, groupId) => {\n if (checkIfHintShouldShow(widget, property)) {\n if (widget.type == \"group_info\") {\n return I18n.t(\n `js.administration.widgetbars.hints.${widget.type}.${property}_group`,\n { percent: \"%\" },\n );\n }\n\n return I18n.t(\n `js.administration.widgetbars.hints.${widget.type}.${property}_${\n groupId ? \"group\" : \"network\"\n }`,\n { percent: \"%\" },\n );\n }\n return null;\n};\n\nexport const getWidgetName = (slug) => {\n const prefix = \"js.administration.widgetbars.names.\";\n\n if (slug === \"as-:slug\") {\n return I18n.t(prefix + \"default_network\");\n } else {\n return I18n.t(prefix + \"default_group\");\n }\n};\n\nconst widgets = (type) => widgetConfig[type];\n\nexport const widgetTypes = (identifier) => {\n let types = keys(widgetConfig);\n\n if (scope(identifier) !== \"group\") {\n remove(types, (widgetType) => widgetType === \"group_info\");\n }\n\n return types;\n};\n\nexport const scopeSelection = () => {\n return [\"all\", \"personal\", \"additional_calendar_ids\", \"groups\"];\n};\n\n// Returns true if given identifier belongs to widgetbar in group\nexport const scope = (identifier) =>\n /^g-/.test(identifier) ? \"group\" : \"network\";\n\nexport const propTypeSelections = {\n renderer: [\"markdown\", \"html_sanitized\"],\n show_age: [\"true\", \"false\"],\n sort: [\"asc\", \"desc\"],\n};\n\nconst widgetConfig = {\n admin_members: {\n type: \"admin_members\",\n properties: {\n headline: \"\",\n profile_fields: [],\n },\n },\n appointments: {\n type: \"appointments\",\n properties: {\n headline: \"\",\n scope: [\"personal\"],\n additional_calendar_ids: [],\n count: 10,\n },\n },\n birthday: {\n type: \"birthday\",\n properties: {\n headline: \"\",\n count: 5,\n show_age: \"false\", // Backend requires boolean. Check submit function where the value type is changed\n profile_fields: [],\n },\n },\n group_info: {\n type: \"group_info\",\n properties: {\n headline: \"\",\n content: \"%{profile_image}\" + \"\" + \"## %{group_name}\",\n renderer: \"markdown\",\n },\n },\n newest_members: {\n type: \"newest_members\",\n properties: {\n headline: \"\",\n count: 5,\n profile_fields: [],\n },\n },\n online_members: {\n type: \"online_members\",\n properties: {\n headline: \"\",\n count: 5,\n profile_fields: [],\n },\n },\n rss: {\n type: \"rss\",\n properties: {\n headline: \"\",\n url: null,\n count: 12,\n },\n },\n speed_dial: {\n type: \"speed_dial\",\n properties: {\n headline: \"\",\n count: 15,\n profile_fields: [],\n },\n },\n text: {\n type: \"text\",\n properties: {\n headline: \"\",\n content: \"\",\n renderer: \"markdown\",\n },\n },\n};\n\nexport default widgets;\n","import React from \"react\";\nimport { getSelectedWidget } from \"helpers/selectors/widgetbarSelectors\";\nimport { useSelector } from \"react-redux\";\nimport { includes } from \"lodash\";\nimport MultiselectField from \"components/administration/widgetbar/fields/MultiselectField\";\n\ninterface AdditionalCalendarsFieldTypes {\n name: string;\n onChange?(...args: unknown[]): unknown;\n value?: Array;\n hint?: string;\n}\n\nexport default function AdditionalCalendarsField(\n options: AdditionalCalendarsFieldTypes,\n) {\n const widget = useSelector(getSelectedWidget) as {\n properties: { scope: string };\n };\n\n if (\n includes(widget.properties.scope, \"additional_calendar_ids\") ||\n widget.properties.scope === \"additional_calendar_ids\"\n ) {\n return ;\n } else {\n return null;\n }\n}\n","import React from \"react\";\nimport { DragSource } from \"react-dnd\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGripDots } from \"@fortawesome/pro-solid-svg-icons\";\n\ninterface WidgetTypes {\n widgetType: string;\n isDragging?: boolean;\n isSelected?: boolean;\n draggable?: boolean;\n\n onClick?(...args: unknown[]): unknown;\n}\n\nexport function Widget({\n isDragging,\n widgetType,\n onClick,\n isSelected,\n draggable,\n}: WidgetTypes) {\n return (\n \n {draggable ? (\n \n ) : null}\n {I18n.t(`js.administration.widgetbars.${widgetType}.label`)}\n \n );\n}\n\nexport const DraggableWidget = DragSource(\n \"widget\",\n {\n beginDrag({ widget }) {\n return widget;\n },\n } as { beginDrag(arg: unknown): unknown },\n (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging(),\n }),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n)(({ connectDragSource, ...props }) =>\n (connectDragSource as CallableFunction)(\n Widget({ draggable: true, ...props }),\n ),\n);\n","import React from \"react\";\nimport map from \"lodash/map\";\nimport widgets, { widgetTypes } from \"helpers/widgets/widgets\";\nimport { DraggableWidget } from \"components/administration/widgetbar/Widget\";\n\ninterface WidgetTypesTypes {\n identifier: string;\n}\n\nfunction WidgetTypes({ identifier }: WidgetTypesTypes) {\n return (\n
    \n
    \n

    {I18n.t(\"js.administration.widgetbars.types.headline\")}

    \n
    \n
    \n {map(widgetTypes(identifier), (widgetType) => (\n \n ))}\n
    \n
    \n );\n}\n\nexport default WidgetTypes;\n","import React from \"react\";\nimport { compose, setDisplayName, toClass } from \"recompose\";\nimport { DropTarget } from \"react-dnd\";\nimport { connect } from \"react-redux\";\nimport { isEmpty, map } from \"lodash\";\nimport { DraggableWidget } from \"components/administration/widgetbar/Widget\";\nimport {\n getWidgets,\n getSelectedWidgetIndex,\n} from \"helpers/selectors/widgetbarSelectors\";\nimport {\n addOrMoveWidget,\n selectWidget,\n} from \"actions/administration/widgetbar\";\nimport { Widget } from \"components/administration/widgetbar/Widget\";\n\nconst layoutTarget = {\n drop({ index, addOrMoveWidget }, monitor) {\n addOrMoveWidget(monitor.getItem(), index);\n },\n};\n\nconst WidgetbarDragNDrop = compose(\n connect(null, (dispatch) => ({\n selectWidget: (index) => dispatch(selectWidget(index)),\n addOrMoveWidget: (widget, index) =>\n dispatch(addOrMoveWidget(widget, index)),\n })),\n DropTarget(\"widget\", layoutTarget, (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver({ shallow: true }),\n widgetType: monitor.getItem() ? monitor.getItem().type : null,\n })),\n toClass,\n setDisplayName(\"WidgetbarDragNDrop\"),\n)(({ connectDropTarget, isOver, index, children, selectWidget, widgetType }) =>\n connectDropTarget(\n
    selectWidget(index)}>\n {widgetType && isOver ? (\n
    \n \n
    \n ) : null}\n {children}\n
    ,\n ),\n);\n\nexport default compose(\n connect((state) => ({\n widgets: getWidgets(state),\n selectedWidgetIndex: getSelectedWidgetIndex(state),\n })),\n setDisplayName(\"WidgetbarLayout\"),\n)(({ widgets, selectedWidgetIndex }) => (\n
    \n
    \n

    {I18n.t(\"js.administration.widgetbars.layout.headline\")}

    \n
    \n
    \n {isEmpty(widgets) ? (\n \n {I18n.t(\"js.administration.widgetbars.empty_drop_target_hint\")}\n \n ) : null}\n {map(widgets, (widget, index) => (\n \n \n \n ))}\n \n
     
    \n
    \n
    \n
    \n));\n","import React from \"react\";\nimport { map, mapValues, isEmpty } from \"lodash\";\nimport widgets, { PropTypeFields, generateHint } from \"helpers/widgets/widgets\";\n\nexport interface WidgetPropertiesTypes {\n widget: {\n properties: Record;\n type: string;\n };\n\n removeWidget?(...args: unknown[]): unknown;\n\n groupId?: string;\n}\n\nexport default function WidgetProperties({\n widget,\n removeWidget,\n groupId,\n}: WidgetPropertiesTypes) {\n const defaultProperties = widgets(widget.type).properties;\n const properties = mapValues(\n defaultProperties,\n (prop, key) => widget.properties[key] || prop,\n );\n\n return (\n
    \n
    \n \n \n Typ: {I18n.t(`js.administration.widgetbars.${widget.type}.label`)}\n \n
    \n {map(properties, (value, property) => {\n const Component = PropTypeFields[property];\n const hint = generateHint(widget, property, groupId);\n\n if (isEmpty(Component)) {\n return;\n }\n return (\n
    \n \n
    \n );\n })}\n\n \n {I18n.t(\"js.administration.widgetbars.remove\")}\n \n
    \n );\n}\n","import type { WidgetPropertiesTypes } from \"./WidgetProperties\";\nimport React from \"react\";\nimport WidgetProperties from \"components/administration/widgetbar/WidgetProperties\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport {\n getSelectedWidget,\n getWidgetbarGroupId,\n} from \"helpers/selectors/widgetbarSelectors\";\nimport { removeWidget } from \"actions/administration/widgetbar\";\n\nexport default function WidgetPropertiesLayout() {\n const dispatch = useDispatch();\n const widget = useSelector(\n getSelectedWidget,\n ) as WidgetPropertiesTypes[\"widget\"];\n const groupId = useSelector(getWidgetbarGroupId) as string;\n\n return (\n
    \n

    {I18n.t(\"js.administration.widgetbars.properties.headline\")}

    \n {widget ? (\n dispatch(removeWidget())}\n />\n ) : null}\n
    \n );\n}\n","import React from \"react\";\n\nfunction NotFound() {\n return (\n
    \n

    {I18n.t(\"js.errors.error_while_loading\")}

    \n
    \n
    \n

    {I18n.t(\"js.errors.not_found.title\")}

    \n

    {I18n.t(\"js.errors.not_found.text\")}

    \n
    \n
    \n
    \n );\n}\n\nexport default NotFound;\n","import React, { useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { map } from \"lodash\";\n\nimport WidgetTypes from \"components/administration/widgetbar/WidgetTypes\";\nimport WidgetbarLayout from \"components/administration/widgetbar/WidgetbarLayout\";\nimport WidgetPropertiesLayout from \"components/administration/widgetbar/WidgetPropertiesLayout\";\nimport NotFound from \"components/shared/errors/NotFound\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSpinner as faRegularSpinner } from \"@fortawesome/pro-regular-svg-icons\";\nimport { faArrowLeft as faSolidArrowLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { setGroupId } from \"actions/administration/widgetbar\";\nimport { getWidgets } from \"helpers/selectors/widgetbarSelectors\";\nimport classnames from \"classnames\";\nimport { useMutation } from \"react-query\";\nimport withDragDropContext from \"../../shared/withDragDropContext\";\nimport {\n FETCH_CALENDARS_ACTIONS,\n FETCH_WIDGETBAR_ACTIONS,\n} from \"../../../actions/administration/widgetbar\";\nimport { fetchApi } from \"../../../helpers/reactQueryApi\";\n\nfunction WidgetbarForm({\n groupId,\n identifier,\n}: {\n groupId?: string;\n identifier: string;\n}) {\n const dispatch = useDispatch();\n\n useEffect(() => {\n groupId && dispatch(setGroupId({ groupId }));\n }, []);\n\n const context = groupId ? `/groups/${groupId}` : \"\";\n\n const {\n mutate: loadWidgetbar,\n isLoading,\n isError,\n } = useMutation<{ widgetbar: { widgets: any[] } }, unknown>(\n () => fetchApi(`${context}/administration/widgetbars/${identifier}.json`),\n {\n onSuccess: (data) => {\n dispatch({\n type: FETCH_WIDGETBAR_ACTIONS.SUCCESS,\n payload: data,\n });\n },\n onError: () => {\n toastr.error(I18n.t(\"js.administration.widgetbars.load_error\"));\n },\n },\n );\n\n const { mutate: loadCalendars } = useMutation<{ calendars: any[] }, unknown>(\n () => fetchApi(`${context}/administration/widgetbars/calendars.json`),\n {\n onSuccess: (data) => {\n dispatch({\n type: FETCH_CALENDARS_ACTIONS.SUCCESS,\n payload: data,\n });\n },\n },\n );\n\n const { mutate: updateWidgetbar } = useMutation(\n (body: { widgetbar: { widgets: any[] } }) =>\n fetchApi(`${context}/administration/widgetbars/${identifier}.json`, {\n method: \"PUT\",\n body,\n }),\n {\n onSuccess: () => {\n toastr.success(I18n.t(\"js.administration.widgetbars.save_success\"));\n },\n onError: () => {\n toastr.error(I18n.t(\"js.administration.widgetbars.save_error\"));\n },\n },\n );\n\n useEffect(() => {\n loadWidgetbar();\n loadCalendars();\n }, []);\n\n const widgets = useSelector((state) => getWidgets(state));\n\n function onSubmit(e) {\n e.preventDefault();\n\n const body = {\n widgetbar: {\n widgets: map(widgets, (w) => {\n // backend need the string as a boolean\n if (w.properties.show_age) {\n return {\n ...w,\n properties: {\n ...w.properties,\n show_age: w.properties.show_age === \"true\",\n },\n };\n } else if (w.properties.count) {\n return {\n ...w,\n properties: {\n ...w.properties,\n count: parseInt(w.properties.count, 10),\n },\n };\n }\n return w;\n }),\n },\n };\n\n updateWidgetbar(body);\n }\n\n if (isLoading) {\n return (\n
    \n \n \n {I18n.t(\"js.administration.widgetbars.loading\")}\n
    \n );\n } else if (isError) {\n return ;\n } else {\n return (\n \n \n {groupId ? null : (\n
    \n \n \n \n
    \n )}\n \n \n
    \n \n \n \n
    \n \n );\n }\n}\n\nexport default withDragDropContext(WidgetbarForm);\n","import React from \"react\";\nimport { Provider } from \"react-redux\";\nimport store from \"store\";\nimport WidgetbarForm from \"components/administration/widgetbar/WidgetbarForm\";\n\nfunction WidgetbarEdit(props: any) {\n return (\n \n
    \n \n
    \n
    \n );\n}\n\nexport default WidgetbarEdit;\n","import React from \"react\";\nimport map from \"lodash/map\";\nimport { getWidgetName } from \"helpers/widgets/widgets\";\nimport { useQuery } from \"react-query\";\n\ninterface WidgetbarSelectionTypes {\n groupId?: string;\n}\n\nexport default function WidgetbarSelection({\n groupId,\n}: WidgetbarSelectionTypes) {\n const { data, isLoading } = useQuery<{\n widgetbars: {\n slug: string;\n widgets: any[];\n }[];\n }>(`${groupId ? `/groups/${groupId}` : \"\"}/administration/widgetbars.json`);\n\n const widgetbars = data?.widgetbars;\n\n return isLoading ? (\n
    {I18n.t(\"js.loading\")}
    \n ) : (\n \n \n \n \n \n \n \n \n {map(widgetbars, (widgetbar) => (\n \n \n \n \n ))}\n \n
    {I18n.t(\"js.administration.widgetbars.table.name\")}{I18n.t(\"js.administration.widgetbars.table.widget_count\")}
    \n \n {getWidgetName(widgetbar.slug)}\n \n {widgetbar.widgets.length}
    \n );\n}\n","import React from \"react\";\nimport { Provider } from \"react-redux\";\nimport store from \"store\";\nimport WidgetbarSelection from \"components/administration/widgetbar/WidgetbarSelection\";\nimport InfoText from \"components/shared/InfoText\";\n\nfunction WidgetbarIndex() {\n return (\n \n
    \n \n \n
    \n
    \n );\n}\n\nexport default WidgetbarIndex;\n","import type { ChangeEventHandler, MouseEventHandler } from \"react\";\nimport React from \"react\";\nimport useTooltip from \"../../hooks/useTooltip\";\nimport Spectrum from \"../shared/Spectrum\";\nimport { mostReadable } from \"@ctrl/tinycolor\";\n\ntype Role = {\n id?: string;\n name?: string;\n slug?: string;\n plural_name?: string;\n color?: string;\n display_type?: string;\n groupContext?: boolean;\n};\ninterface RoleTypes extends Role {\n isEditing?: boolean;\n handleEdit(...args: unknown[]): unknown;\n handleDestroy(...args: unknown[]): unknown;\n}\n\nfunction Role({\n id,\n name,\n slug,\n plural_name,\n color,\n display_type,\n groupContext,\n isEditing,\n handleEdit,\n handleDestroy,\n}: RoleTypes) {\n const textColor = mostReadable(color || \"#FFFFFF\", [\"white\", \"black\"], {\n includeFallbackColors: false,\n })?.toHexString();\n\n return (\n \n {slug}\n {name}\n {plural_name}\n \n \n {color || \"-\"}\n \n \n {groupContext && (\n \n {I18n.t(\n `js.administration.membership_roles.display_type.${display_type}`,\n )}\n \n )}\n \n
    \n \n \n \n \n \n \n
    \n \n \n );\n}\n\ninterface EditRoleTypes extends Role {\n handleChange(...args: unknown[]): (...args: unknown[]) => unknown;\n handleCancelEdit(...args: unknown[]): unknown;\n}\n\nfunction EditRole({\n name,\n plural_name,\n color,\n display_type,\n groupContext,\n handleChange,\n handleCancelEdit,\n}: EditRoleTypes) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {groupContext && (\n \n \n \n \n \n \n \n )}\n \n
    \n \n \n
    \n \n \n );\n}\n\ninterface MembershipRolesManagerTypes {\n roles: Array;\n groupContext: boolean;\n editingId?: string;\n isEditing: boolean;\n contextUrl?: string;\n handleNew(...args: unknown[]): unknown;\n handleEdit(...args: unknown[]): unknown;\n handleDestroy(...args: unknown[]): unknown;\n handleChange(...args: unknown[]): (...args: unknown[]) => unknown;\n handleCancelEdit(...args: unknown[]): unknown;\n handleSubmit(...args: unknown[]): unknown;\n}\n\nfunction MembershipRolesManager({\n roles,\n groupContext,\n editingId,\n isEditing,\n contextUrl,\n handleNew,\n handleEdit,\n handleDestroy,\n handleChange,\n handleCancelEdit,\n handleSubmit,\n}: MembershipRolesManagerTypes) {\n const tooltipRef = useTooltip();\n const backRef = `${contextUrl}/administration/members`;\n\n return (\n
    \n
    \n
    \n \n \n \n
    \n\n
    \n \n {\" \"}\n {groupContext\n ? I18n.t(\"js.administration.membership_roles.add\")\n : I18n.t(\"js.administration.user_roles.add\")}\n \n
    \n
    \n\n
    \n \n \n \n \n \n \n \n {groupContext && (\n \n {I18n.t(\n \"js.administration.membership_roles.display_type.label\",\n )}\n  \n \n )}\n\n \n \n\n \n {roles.map((role) => {\n return role.id == editingId ? (\n \n ) : (\n \n );\n })}\n \n
    \n {I18n.t(\"js.administration.membership_roles.slug.label\")}\n \n {I18n.t(\"js.administration.membership_roles.name.label\")}\n \n {I18n.t(\"js.administration.membership_roles.plural_name.label\")}\n \n {I18n.t(\"js.administration.membership_roles.color.label\")}\n \n
    \n
    \n
    \n );\n}\n\nexport default MembershipRolesManager;\n","import WidgetbarEdit from \"components/administration/WidgetbarEdit\";\nimport WidgetbarIndex from \"components/administration/WidgetbarIndex\";\nimport LegalTextIndex from \"components/administration/legalTexts/LegalTextIndex\";\nimport ImprintEdit from \"components/administration/imprints/ImprintEdit\";\nimport MembershipRolesManager from \"components/administration/MembershipRolesManager\";\n\nexport default {\n \"administration/MembershipRolesManager\": MembershipRolesManager,\n \"administration/WidgetbarEdit\": WidgetbarEdit,\n \"administration/WidgetbarIndex\": WidgetbarIndex,\n \"administration/legal_texts\": LegalTextIndex,\n \"administration/imprint/edit\": ImprintEdit,\n};\n","import React from \"react\";\nimport CustomConfigurator from \"../../CustomConfigurator\";\n\nfunction ExternalIdInput({ onChangeExternalId }: Props) {\n return (\n <>\n \n {\n onChangeExternalId(e.target.value);\n }}\n />\n \n );\n}\n\ntype Props = {\n externalId?: string;\n onChangeExternalId: (value: string) => void;\n};\n\nCustomConfigurator.setDefault(\n [\"rundschreiben\", \"ExternalIdInput\"],\n ExternalIdInput,\n);\n\nfunction ExternalIdComponent(props) {\n const ExternalIdInput = CustomConfigurator.get([\n \"rundschreiben\",\n \"ExternalIdInput\",\n ]);\n\n return (\n <>\n \n \n );\n}\n\nexport default ExternalIdComponent;\n","import React, { CSSProperties, useState } from \"react\";\nimport { at, isEmpty, map, reject, some, sum, assign } from \"lodash\";\n\nimport { useGroupsAndCategories } from \"../../hooks/userbar\";\nimport { Group, GroupCategory } from \"../../@types\";\nimport { UserbarSection } from \"../layout/Userbar\";\nimport { closeUserbar } from \"../../layout/togglebar\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faPlus } from \"@fortawesome/pro-solid-svg-icons\";\nimport {\n DerivedTheme,\n Theme,\n} from \"components/administration/designManager/types\";\nimport { colorObjToCSSProperties } from \"components/administration/designManager/themeToCss\";\n\nfunction persistOpenState(id: string, open: boolean) {\n localStorage.setItem(`GroupCategorySections/${id}/open`, open.toString());\n}\n\nfunction loadOpenState(id: string) {\n const item = localStorage.getItem(`GroupCategorySections/${id}/open`);\n return item === null ? null : item === \"true\";\n}\n\ntype Props = {\n children: SectionProps[\"children\"];\n unreadCountByGroupSlug?: { [slug: string]: number | undefined };\n};\n\nexport default function GroupCategorySections({\n children,\n unreadCountByGroupSlug,\n}: Props) {\n const { groupCategories, groupsByCategoryId } = useGroupsAndCategories();\n\n return (\n <>\n {map(groupCategories, (groupCategory: GroupCategory) => {\n const groups = groupsByCategoryId[groupCategory.id];\n\n // Hide hidden group categories (sub-organisations) without membership\n if (groupCategory.access == \"hidden\" && isEmpty(groups)) return null;\n\n const unreadCount = sum(\n at(unreadCountByGroupSlug, map(groups, \"slug\")),\n );\n return (\n \n {children}\n \n );\n })}\n \n );\n}\n\ntype SectionProps = {\n id: string;\n name: string;\n slug: string;\n groups: Group[];\n can: {\n create: boolean;\n administrate: boolean;\n };\n children: (\n group: Group,\n sectionStatus: { collapsed: boolean },\n ) => React.ReactNode;\n unreadCount?: number;\n mainGroupHidden: boolean;\n mainGroupSlug: string;\n theme?: Theme;\n};\n\nfunction GroupCategorySection({\n id,\n name,\n slug,\n groups,\n can,\n children,\n unreadCount,\n mainGroupHidden,\n mainGroupSlug,\n theme,\n}: SectionProps) {\n const open = loadOpenState(id);\n const [isOpen, setIsOpen] = useState(open === null ? !isEmpty(groups) : open);\n\n groups = reject(groups, \"archived\");\n\n if (mainGroupHidden) {\n groups = reject(groups, (group) => {\n return group.slug === mainGroupSlug;\n });\n }\n\n let content;\n if (isEmpty(groups)) {\n content = (\n
    \n
    \n {I18n.t(\"js.activitystreams.userbar.group.empty\")}\n
    \n \n {I18n.t(\"js.activitystreams.userbar.group.join\", { name: name })}\n \n
    \n );\n } else {\n content = (\n <>\n {map(groups, (group: Group) => children(group, { collapsed: !open }))}\n
  • \n \n {I18n.t(\"js.activitystreams.userbar.group.other\", { name: name })}\n \n
  • \n \n );\n }\n\n const addGroupLink = can.create ? (\n \n \n \n ) : null;\n\n return (\n {\n setIsOpen(open);\n persistOpenState(id, open);\n }}\n hasFavorites={some(groups, {\n favorited: true,\n })}\n unreadCount={unreadCount}\n additionalTitleElement={addGroupLink}\n style={theme ? userbarVariables(theme) : undefined}\n >\n {content}\n \n );\n}\n\nexport function userbarVariables(theme: DerivedTheme): CSSProperties {\n const names = [\n \"userbar-accent\",\n \"userbar-background\",\n \"userbar-link-text\",\n \"userbar-section-background\",\n \"userbar-section__title-text\",\n \"userbar-link--active-background\",\n \"userbar-link--active-text\",\n \"userbar-link--hover-background\",\n \"userbar-link--hover-text\",\n ];\n\n const result: CSSProperties = assign(\n {} as CSSProperties,\n ...map(names, (variable) =>\n colorObjToCSSProperties(\n variable,\n theme.colors?.[variable] || theme.derivedColors?.[variable],\n ),\n ),\n );\n\n return result;\n}\n","import { useSelector } from \"react-redux\";\nimport { Group, GroupCategory } from \"../@types\";\nimport {\n groupCategoriesSelector,\n myGroupsByCategoryIdSelector,\n} from \"../selectors/environment\";\n\nexport function useGroupsAndCategories() {\n const groupCategories: GroupCategory[] = useSelector(groupCategoriesSelector);\n const groupsByCategoryId: { [key: string]: Group[] } = useSelector(\n myGroupsByCategoryIdSelector,\n );\n\n return { groupCategories, groupsByCategoryId };\n}\n","import classNames from \"classnames\";\nimport React, { CSSProperties, useEffect, useMemo, useRef } from \"react\";\nimport { useLocation } from \"helpers/tixxt-router\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faChevronRight as faRegularChevronRight } from \"@fortawesome/pro-regular-svg-icons\";\nimport { faStar as faSolidStar } from \"@fortawesome/pro-solid-svg-icons\";\nimport UnreadBadge from \"components/shared/UnreadBadge\";\nimport { escapeRegExp } from \"lodash\";\nimport { closeUserbar } from \"layout/togglebar\";\nimport { useMaxHeight } from \"hooks/useMaxHeight\";\nimport { useSelector } from \"react-redux\";\nimport { State } from \"../../@types\";\nimport { userbarVariables } from \"components/shared/GroupCategorySections\";\n\ntype UserbarContentProps = {\n children: React.ReactNode;\n id?: string;\n};\n\ntype SectionProps = {\n children?: React.ReactNode;\n extraChildren?: React.ReactNode; // to be shown after
      \n title?: string;\n unreadCount?: number;\n className?: string;\n collapsible?: boolean;\n isOpen?: boolean;\n setIsOpen?: (open: boolean) => void;\n hasFavorites?: boolean;\n style?: CSSProperties;\n additionalTitleElement?: React.ReactNode;\n};\n\nexport function ContextNavigation({\n style = \"\",\n children,\n}: {\n children: React.ReactNode;\n style?: string;\n}) {\n const userbarRef = useRef(null);\n\n // Scroll to selected Group to avoid userbar jump to top when navigating in group context\n useEffect(() => {\n if (location.pathname.startsWith(\"/groups/\")) {\n const activeItem = userbarRef.current?.querySelector(\n \".userbar-link--active\",\n );\n\n if (activeItem && userbarRef.current) {\n activeItem.scrollIntoView({\n behavior: \"auto\",\n block: \"center\",\n });\n }\n }\n }, [location.pathname]);\n\n return (\n \n {children}\n \n );\n}\n\nexport function UserbarContent({ children, id }: UserbarContentProps) {\n let style = useMaxHeight();\n const groupCategoryTheme = useSelector(\n (state: State) => state.groupCategoryTheme,\n );\n\n style = groupCategoryTheme\n ? {\n ...style,\n ...userbarVariables(groupCategoryTheme),\n }\n : style;\n\n return (\n
      \n {children}\n
      \n );\n}\n\nconst titleClasses =\n \"flex p-1 font-semibold uppercase items-center min-w-0 grow\";\nconst titleTextClasses = \"flex-1 text-left\";\n\nexport function UserbarSection({\n children,\n extraChildren,\n title,\n unreadCount,\n className,\n collapsible,\n isOpen = true,\n setIsOpen,\n hasFavorites,\n style,\n additionalTitleElement,\n}: SectionProps) {\n return (\n \n
      \n {title &&\n (collapsible ? (\n {\n setIsOpen && setIsOpen(!isOpen);\n }}\n >\n \n \n {title}\n \n \n \n ) : (\n \n {title}\n \n ))}\n {additionalTitleElement ? additionalTitleElement : null}\n
      \n {children ? (\n \n {children}\n
    \n ) : null}\n {extraChildren}\n \n );\n}\n\ntype GroupFavoriteIconProps = {\n favorited: boolean;\n collapsed: boolean;\n};\n\nexport function FavoriteGroupIcon({\n favorited,\n collapsed,\n}: GroupFavoriteIconProps) {\n return (\n <>\n {favorited && (\n \n )}\n \n );\n}\n\ntype UserbarLinkProps = {\n children: React.ReactNode;\n to: string;\n active?: boolean;\n unreads?: number;\n target?: \"_blank\" | \"_self\" | \"_parent\" | \"_top\";\n showWhileClosed?: boolean;\n className?: string;\n prefixMatch?: boolean;\n title?: string;\n favorited?: boolean;\n collapsed?: boolean;\n};\n\nexport function UserbarLink({\n children,\n to,\n unreads,\n active,\n showWhileClosed,\n className,\n prefixMatch,\n title,\n favorited = false,\n collapsed = false,\n ...extraProps\n}: UserbarLinkProps) {\n const location = useLocation();\n const regex = useMemo(\n () => (prefixMatch ? new RegExp(`^${escapeRegExp(to)}(/|$|\\\\?)`) : null),\n [prefixMatch, to],\n );\n\n if (active === undefined || active === null) {\n if (regex) active = !!location.pathname.match(regex);\n else active = to === location.pathname + location.search;\n }\n\n function handleClick(e: React.MouseEvent) {\n if (window.isApp) {\n e.preventDefault();\n window.Turbo?.visit(to, { action: \"replace\" });\n }\n\n closeUserbar();\n }\n\n return (\n <>\n \n \n {children}\n
    \n \n \n
    \n \n \n \n );\n}\n","import React, { useEffect } from \"react\";\nimport classNames from \"classnames\";\nimport useTooltip from \"../../hooks/useTooltip\";\nimport { throttle } from \"lodash\";\nimport Tooltip from \"bootstrap/js/dist/tooltip\";\nimport UnreadBadge from \"components/shared/UnreadBadge\";\nimport { closeUserbar } from \"../../layout/togglebar\";\n\nfunction ModuleSwitcher({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n
      {children}
    \n );\n}\n\nfunction toggleTooltips(tooltipRef: React.RefObject) {\n if (!tooltipRef.current) return;\n\n const titleElem = tooltipRef.current?.getElementsByClassName(\n \"module-switcher-module__title\",\n )[0];\n if (!titleElem) return;\n\n if (window.getComputedStyle(titleElem).display === \"none\") {\n Tooltip.getInstance(tooltipRef.current)?.enable();\n } else {\n Tooltip.getInstance(tooltipRef.current)?.disable();\n }\n}\n\nfunction useTooltipsIfTitlesAreHidden() {\n const tooltipRef = useTooltip();\n\n useEffect(() => {\n const throttledToggleTooltips = throttle(\n () => toggleTooltips(tooltipRef),\n 500,\n );\n window.addEventListener(\"resize\", throttledToggleTooltips);\n throttledToggleTooltips();\n\n return () => window.removeEventListener(\"resize\", throttledToggleTooltips);\n }, [tooltipRef.current]);\n\n return tooltipRef;\n}\n\nfunction Module({\n title,\n icon,\n active,\n url,\n notifications,\n className,\n}: {\n title: string;\n icon: React.ReactNode;\n active?: boolean;\n url: string;\n className?: string;\n notifications?: number;\n}) {\n const tooltipRef = useTooltipsIfTitlesAreHidden();\n\n return (\n \n \n \n {icon}\n {title}\n \n \n );\n}\n\nModuleSwitcher.Module = Module;\nexport default ModuleSwitcher;\n","import React from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faBullhorn as faLightBullhorn,\n faEarthEurope as faLightEarthEurope,\n faInbox as faLightInbox,\n faCalendarDay as faLightCalendarDay,\n faCircleCheck as faLightCircleCheck,\n faFolderOpen as faLightFolderOpen,\n faUser as faLightUser,\n faEllipsis as faLightEllipsis,\n faBrush as faLightBrush,\n faCircleInfo as faLightCircleInfo,\n} from \"@fortawesome/pro-light-svg-icons\";\nimport {\n faBullhorn as faDuotoneBullhorn,\n faEarthEurope as faDuotoneEarthEurope,\n faInbox as faDuotoneInbox,\n faCalendarDay as faDuotoneCalendarDay,\n faCircleCheck as faDuotoneCircleCheck,\n faFolderOpen as faDuotoneFolderOpen,\n faBrush as faDuotoneBrush,\n faCircleInfo as faDuotoneCircleInfo,\n} from \"@fortawesome/pro-duotone-svg-icons\";\nimport ModuleSwitcher from \"./ModuleSwitcher\";\nimport { isEmpty, map } from \"lodash\";\nimport { useSelector } from \"react-redux\";\nimport { useFeaturesUnreads } from \"api/unreads\";\nimport { useLocation } from \"helpers/tixxt-router\";\nimport { State } from \"../../@types\";\n\ntype ModuleConfigLookup = {\n [moduleName: string]:\n | {\n title: string;\n icon: (opts: { duo: boolean; active: boolean }) => React.ReactNode;\n slug: string;\n url: string;\n }\n | undefined;\n};\nexport const MODULE_LOOKUP: ModuleConfigLookup = {\n get Channels() {\n let url: string | undefined =\n Preload.current_network.config.channels?.start_page;\n if (!url || isEmpty(url)) url = \"/channels\";\n\n return {\n title: I18n.t(\"js.channels.module_name\"),\n icon: ({ duo, active }) => (\n \n ),\n slug: \"channels\",\n url,\n };\n },\n get Activitystreams() {\n return {\n title: I18n.t(\"js.activitystreams.module_name\"),\n icon: ({ duo, active }) => (\n \n ),\n slug: \"activities\",\n url: \"/activitystreams/all\",\n };\n },\n get Messages() {\n return {\n title: I18n.t(\"js.messages.module_name\"),\n icon: ({ duo }) => (\n \n ),\n slug: \"messages\",\n url: \"/messages\",\n };\n },\n get Calendars() {\n return {\n title: I18n.t(\"js.calendars.module_name\"),\n icon: ({ duo }) => (\n \n ),\n slug: \"appointments\",\n url: \"/appointments\",\n };\n },\n get Tasks() {\n return {\n title: I18n.t(\"js.tasks.module_name\"),\n icon: ({ duo }) => (\n \n ),\n slug: \"tasks\",\n url: \"/tasks/my\",\n };\n },\n get Files() {\n return {\n title: I18n.t(\"js.files.module_name\"),\n icon: ({ duo }) => (\n \n ),\n slug: \"files\",\n url: \"/files\",\n };\n },\n get Directory() {\n return {\n title: \"Kontakte\",\n icon: ({ active }) => (\n \n ),\n slug: \"directory\",\n url: \"/directory\",\n };\n },\n get More() {\n return {\n title: \"Mehr\",\n icon: ({ active }) => (\n \n ),\n slug: \"more\",\n url: \"/more\",\n };\n },\n};\n\ntype Props = {\n activeModule?:\n | \"channels\"\n | \"activities\"\n | \"messages\"\n | \"appointments\"\n | \"tasks\"\n | \"files\"\n | \"directory\"\n | \"more\"\n | \"info\";\n};\n\nexport default function TixxtModuleSwitcher({ activeModule }: Props) {\n const location = useLocation();\n const theme = useSelector((state: State) => state.theme);\n const duo = theme?.userbarIconType == \"duotone\";\n const currentNetwork = useSelector(\n (state: { network: { availableModules: string[] } }) => state.network,\n );\n const { data: unreads } = useFeaturesUnreads();\n\n return (\n \n {map(currentNetwork.availableModules, (moduleName, index) => {\n const module = MODULE_LOOKUP[moduleName];\n const notifications = unreads?.[moduleName];\n\n return (\n module && (\n \n )\n );\n })}\n\n {location.pathname.indexOf(\"/administration/designs\") === 0 ||\n theme?.override ? (\n \n ) : (\n \n )\n }\n />\n ) : null}\n\n \n }\n />\n \n );\n}\n","import React from \"react\";\n\nimport TixxtModuleSwitcher from \"components/layout/TixxtModuleSwitcher\";\nimport {\n ContextNavigation,\n UserbarLink,\n UserbarSection,\n} from \"components/layout/Userbar\";\nimport { map } from \"lodash\";\n\nexport default function InfoUserbar() {\n const legalTexts = Preload.current_network.legal_texts;\n const additionalLinks = Preload.current_network.additional_links;\n\n return (\n <>\n {!window.isApp && }\n \n \n \n {I18n.t(\"js.layouts.userbar.imprint.title\")}\n \n {map(legalTexts, (legalText) => (\n \n {legalText.name}\n \n ))}\n {map(additionalLinks, (link) => (\n \n {link.text}\n \n ))}\n {Preload.current_member &&\n Preload.current_network.config.abuse_reports?.enabled && (\n \n {I18n.t(\"report.report_content\")}\n \n )}\n \n \n \n );\n}\n","import { useFeaturesUnreads } from \"api/unreads\";\nimport { mapValues, keyBy } from \"lodash\";\n\nconst useOpenJoinRequestsCount = () => {\n const { data: featuresUnreads } = useFeaturesUnreads();\n const openJoinRequestCount = mapValues(\n keyBy(featuresUnreads?.GroupJoinRequests, \"group_slug\"),\n (item) => item?.open_join_requests || 0,\n );\n return openJoinRequestCount;\n};\n\nexport default useOpenJoinRequestsCount;\n","import React from \"react\";\nimport { groupBy, map, mapValues, partition, sum, find, compact } from \"lodash\";\nimport { useSelector } from \"react-redux\";\nimport { matchPath, useLocation } from \"helpers/tixxt-router\";\nimport TixxtModuleSwitcher from \"components/layout/TixxtModuleSwitcher\";\nimport {\n ContextNavigation,\n UserbarLink,\n UserbarSection,\n} from \"components/layout/Userbar\";\nimport GroupCategorySections from \"../shared/GroupCategorySections\";\nimport { useActivitiesUnreads } from \"api/unreads\";\nimport indexBy from \"helpers/indexBy\";\nimport { State } from \"../../@types\";\nimport InfoUserbar from \"components/info/Userbar\";\nimport useOpenJoinRequestsCount from \"components/shared/hooks/useOpenJoinRequests\";\n\nexport default function ActivitystreamsUserbar() {\n let networkStreams;\n networkStreams = useSelector((state: State) => state.network.activitystreams);\n\n if (Preload.current_member && Preload.current_member.is_external) {\n networkStreams = [find(networkStreams, { slug: \"all\" })];\n }\n const { data: unreads } = useActivitiesUnreads();\n\n const [groupUnreads, networkUnreads] = partition(unreads, \"group_slug\");\n const networkUnreadsByStreamSlug = indexBy(\n networkUnreads,\n \"activitystream_slug\",\n );\n\n const unreadCountByGroupSlug = mapValues(\n groupBy(groupUnreads, \"group_slug\"),\n (values) => sum(map(values, \"unreads\")),\n );\n\n const location = useLocation();\n\n const openJoinRequestCount = useOpenJoinRequestsCount();\n\n const getUserbarLinkTitle = (groupSlug) => {\n return compact([\n unreadCountByGroupSlug[groupSlug]\n ? `${I18n.t(\"js.activitystreams.module_name\")}: ${\n unreadCountByGroupSlug[groupSlug]\n }`\n : null,\n openJoinRequestCount[groupSlug]\n ? `${I18n.t(\"js.administration.join_requests.label\")}: ${\n openJoinRequestCount[groupSlug]\n }`\n : null,\n ]).join(\" , \");\n };\n\n const unreadSumBySlug = mapValues(\n unreadCountByGroupSlug,\n (value, key) => value + (openJoinRequestCount[key] || 0),\n );\n\n if (!Tixxt.currentMember) return ;\n return (\n <>\n \n \n \n {map(networkStreams, ({ slug, name }) => (\n \n {name}\n \n ))}\n \n \n {({ slug: groupSlug, name, favorited }, { collapsed }) => (\n \n {name}\n \n )}\n \n \n \n );\n}\n","import React from \"react\";\nimport TixxtModuleSwitcher from \"../layout/TixxtModuleSwitcher\";\nimport {\n ContextNavigation,\n UserbarLink,\n UserbarSection,\n} from \"components/layout/Userbar\";\n\nexport default function MessagesUserbar() {\n return (\n <>\n \n \n \n \n {I18n.t(\"js.messages.index.title\")}\n \n \n {I18n.t(\"js.messages.sent.title\")}\n \n \n \n \n );\n}\n","import React from \"react\";\n\nimport { compact } from \"lodash\";\nimport TixxtModuleSwitcher from \"components/layout/TixxtModuleSwitcher\";\nimport {\n ContextNavigation,\n UserbarLink,\n UserbarSection,\n} from \"components/layout/Userbar\";\nimport GroupCategorySections from \"../shared/GroupCategorySections\";\nimport { useFeaturesUnreads } from \"../../api/unreads\";\nimport UnreadBadge from \"components/shared/UnreadBadge\";\nimport useOpenJoinRequestsCount from \"components/shared/hooks/useOpenJoinRequests\";\n\nexport default function AppointmentsUserbar() {\n const { data: unreads } = useFeaturesUnreads();\n\n const unreadCount = unreads ? unreads?.Calendars : 0;\n const openJoinRequestCount = useOpenJoinRequestsCount();\n\n const getUserbarLinkTitle = (groupSlug) => {\n return compact([\n openJoinRequestCount[groupSlug]\n ? `${I18n.t(\"js.administration.join_requests.label\")}: ${\n openJoinRequestCount[groupSlug]\n }`\n : null,\n ]).join(\" , \");\n };\n\n return (\n <>\n \n \n \n \n {I18n.t(\"js.calendars.all_appointments\")}\n \n \n {I18n.t(\"js.calendars.participating_appointments\")}\n \n \n
    \n {I18n.t(\"js.calendars.invites.title\")}\n \n
    \n
    \n
    \n \n {({ slug, name, favorited }, { collapsed }) => (\n \n {name}\n \n )}\n \n
    \n \n );\n}\n","import React from \"react\";\nimport { compact } from \"lodash\";\n\nimport TixxtModuleSwitcher from \"components/layout/TixxtModuleSwitcher\";\nimport {\n ContextNavigation,\n UserbarLink,\n UserbarSection,\n} from \"components/layout/Userbar\";\nimport GroupCategorySections from \"../shared/GroupCategorySections\";\nimport useOpenJoinRequestsCount from \"components/shared/hooks/useOpenJoinRequests\";\n\nexport default function TasksUserbar() {\n const openJoinRequestCount = useOpenJoinRequestsCount();\n\n const getUserbarLinkTitle = (groupSlug) => {\n return compact([\n openJoinRequestCount[groupSlug]\n ? `${I18n.t(\"js.administration.join_requests.label\")}: ${\n openJoinRequestCount[groupSlug]\n }`\n : null,\n ]).join(\" , \");\n };\n return (\n <>\n \n \n \n \n {I18n.t(\"js.tasks.my_tasks\")}\n \n \n {\" Anderen zugewiesen\"}\n \n {\" Abgelehnt\"}\n {\" Markiert\"}\n {\" Archiv\"}\n {\" Notizen\"}\n \n \n {({ slug, name, favorited }, { collapsed }) => (\n \n {name}\n \n )}\n \n \n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport TixxtModuleSwitcher from \"components/layout/TixxtModuleSwitcher\";\nimport {\n ContextNavigation,\n UserbarLink,\n UserbarSection,\n} from \"components/layout/Userbar\";\nimport GroupCategorySections from \"../shared/GroupCategorySections\";\nimport { networkNameSelector } from \"../../selectors/environment\";\nimport { useFoldersUnreads } from \"../../api/unreads\";\nimport { filter, find, mapValues, compact } from \"lodash\";\nimport indexBy from \"../../helpers/indexBy\";\nimport useOpenJoinRequestsCount from \"components/shared/hooks/useOpenJoinRequests\";\n\nexport default function FilesUserbar() {\n const networkName = useSelector(networkNameSelector);\n const { data: unreads } = useFoldersUnreads();\n const networkUnreadCount = find(unreads, { group_slug: null })?.sum;\n // Lookup for unread counts of groups\n const unreadCountByGroupSlug: { [slug: string]: number } = mapValues(\n indexBy(\n filter(unreads, ({ group_slug }) => group_slug),\n \"group_slug\",\n ),\n \"sum\",\n );\n\n const openJoinRequestCount = useOpenJoinRequestsCount();\n\n const getUserbarLinkTitle = (groupSlug) => {\n return compact([\n unreadCountByGroupSlug[groupSlug]\n ? `${I18n.t(\"js.files.module_name\")}: ${\n unreadCountByGroupSlug[groupSlug]\n }`\n : null,\n openJoinRequestCount[groupSlug]\n ? `${I18n.t(\"js.administration.join_requests.label\")}: ${\n openJoinRequestCount[groupSlug]\n }`\n : null,\n ]).join(\" , \");\n };\n\n const unreadSumBySlug = mapValues(\n unreadCountByGroupSlug,\n (value, key) => value + (openJoinRequestCount[key] || 0),\n );\n\n return (\n <>\n \n \n \n \n {networkName}\n \n \n \n {({ slug, name, favorited }, { collapsed }) => (\n \n {name}\n \n )}\n \n \n \n );\n}\n","import React from \"react\";\n\nimport TixxtModuleSwitcher from \"components/layout/TixxtModuleSwitcher\";\nimport {\n ContextNavigation,\n UserbarLink,\n UserbarSection,\n} from \"components/layout/Userbar\";\n\nimport { map, some } from \"lodash\";\nimport { useAdministrationUserbarLinks } from \"./api\";\nimport { useParams, matchPath } from \"helpers/tixxt-router\";\nimport { useSelector } from \"react-redux\";\nimport { State } from \"../../@types\";\nimport {\n groupCategorySelector,\n groupSelector,\n networkSelector,\n} from \"selectors/environment\";\nimport { userbarVariables } from \"components/shared/GroupCategorySections\";\n\nexport default function AdministrationUserbar() {\n const { groupSlug, groupCategorySlug } = useParams();\n const group = useSelector((state: State) => groupSelector(state, groupSlug));\n const groupCategory = useSelector((state: State) =>\n groupCategorySelector(state, groupCategorySlug),\n );\n const network = useSelector(networkSelector);\n const {\n data: sections,\n status,\n refetch,\n } = useAdministrationUserbarLinks({\n groupSlug,\n groupCategorySlug,\n });\n const groupCategoryTheme = useSelector(\n (state: State) => state.groupCategoryTheme,\n );\n\n const style = groupCategory\n ? userbarVariables(groupCategoryTheme)\n : undefined;\n\n const title = group\n ? group.name\n : groupCategory\n ? groupCategory.name\n : network.name;\n\n let elements;\n switch (status) {\n case \"error\":\n elements = (\n \n {I18n.t(\"js.generic_error\")}\n
    \n {\n e.preventDefault();\n refetch();\n }}\n >\n {I18n.t(\"js.generic_try_again\")}\n \n \n }\n style={style}\n />\n );\n break;\n\n case \"loading\":\n elements = (\n \n \n {I18n.t(\"js.loading\")}\n \n \n );\n break;\n case \"success\":\n elements = map(sections, (section, index) => (\n \n {section.image ? (\n {\"\"}\n ) : null}\n \n {map(section.links, (link, index) => (\n \n matchPath(path, location.pathname),\n ) || undefined\n : undefined\n }\n >\n {link.label}\n \n ))}\n \n \n ));\n }\n\n return (\n <>\n \n {elements}\n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport TixxtModuleSwitcher from \"components/layout/TixxtModuleSwitcher\";\nimport {\n ContextNavigation,\n UserbarLink,\n UserbarSection,\n} from \"components/layout/Userbar\";\nimport GroupCategorySections from \"../shared/GroupCategorySections\";\nimport { networkNameSelector } from \"selectors/environment\";\nimport { useSearchParams } from \"helpers/tixxt-router\";\nimport { stringify } from \"query-string\";\n\nexport default function SearchUserbar() {\n const networkName = useSelector(networkNameSelector);\n const [searchParams] = useSearchParams();\n const query = stringify(Object.fromEntries(searchParams.entries()));\n const pathAndQuery = query.length > 0 ? `/search?${query}` : \"/search\";\n\n return (\n <>\n \n \n \n {networkName}\n \n \n {({ slug, name, favorited }) => (\n \n {name}\n \n )}\n \n \n \n );\n}\n","import React from \"react\";\nimport {\n ContextNavigation,\n UserbarLink,\n UserbarSection,\n} from \"components/layout/Userbar\";\nimport TixxtModuleSwitcher from \"components/layout/TixxtModuleSwitcher\";\nimport { useParams } from \"helpers/tixxt-router\";\nimport classNames from \"classnames\";\nimport { useMembership } from \"../../api/memberships\";\n\nexport default function MembershipsUserbar() {\n let { membershipId } = useParams();\n membershipId = (membershipId || Preload.current_member?.id) as\n | string\n | undefined;\n const { data: membership } = useMembership(membershipId);\n\n return (\n <>\n \n \n {membership && (\n \n )}\n \n \n {I18n.t(\"js.memberships.userbar.informations\")}\n \n \n {I18n.t(\"js.memberships.userbar.activities\")}\n \n \n {I18n.t(\"js.memberships.userbar.interesting\")}\n \n \n {membership && (\n \n \n {I18n.t(\"js.memberships.userbar.edit_registration\")}\n \n \n {I18n.t(\"js.memberships.userbar.edit_profile\")}\n \n \n {I18n.t(\"js.memberships.userbar.ignored_members\")}\n \n \n )}\n \n \n );\n}\n","import { useQuery } from \"react-query\";\nimport { State } from \"../@types\";\nimport queryClient from \"helpers/queryClient\";\n\nif (Preload.current_member?.id) {\n queryClient.setQueryData(\n `/members/${Preload.current_member.id}`,\n () => Preload.current_member,\n );\n}\n\nexport function useMembership(id: string | undefined) {\n return useQuery(`/members/${id}`, {\n staleTime: Infinity,\n enabled: !!id,\n });\n}\n","import React from \"react\";\nimport {\n ContextNavigation,\n UserbarLink,\n UserbarSection,\n} from \"components/layout/Userbar\";\n\nimport TixxtModuleSwitcher from \"components/layout/TixxtModuleSwitcher\";\nimport { useSelector } from \"react-redux\";\nimport { networkNameSelector } from \"selectors/environment\";\nimport { useSearchParams } from \"helpers/tixxt-router\";\nimport GroupCategorySections from \"components/shared/GroupCategorySections\";\n\nexport default function DirectoryUserbar({ map }: { map?: boolean }) {\n const networkName = useSelector(networkNameSelector);\n const [searchParams] = useSearchParams();\n const query = searchParams.toString();\n const path = map ? \"/map\" : \"/members\";\n const pathAndQuery = query.length > 0 ? `${path}?${query}` : path;\n\n return (\n <>\n \n \n \n {networkName}\n \n \n {({ slug, name, favorited }, { collapsed }) => (\n \n {name}\n \n )}\n \n \n \n );\n}\n","import React, { useEffect } from \"react\";\nimport InfoUserbar from \"components/info/Userbar\";\n\nexport default function PagesUserbar() {\n useEffect(() => {\n document.body.classList.add(\"tixxt--network-page\");\n return () => document.body.classList.remove(\"tixxt--network-page\");\n }, []);\n\n return ;\n}\n","import React, { useEffect } from \"react\";\nimport InfoUserbar from \"components/info/Userbar\";\n\nexport default function AppCreatorUserbar() {\n useEffect(() => {\n document.body.classList.add(\"tixxt--network-app\");\n return () => document.body.classList.remove(\"tixxt--network-app\");\n }, []);\n\n return ;\n}\n","import React, { useState } from \"react\";\nimport TixxtModuleSwitcher from \"components/layout/TixxtModuleSwitcher\";\nimport {\n ContextNavigation,\n UserbarLink,\n UserbarSection,\n} from \"components/layout/Userbar\";\nimport { useChannels } from \"components/channels/api\";\nimport { closeUserbar } from \"../../layout/togglebar\";\nimport { isEmpty, some } from \"lodash\";\nimport { useParams } from \"helpers/tixxt-router\";\nimport { useBlog } from \"components/blogs/api\";\n\nfunction persistOpenState(open: boolean, section: string) {\n localStorage.setItem(`${section}/open`, open.toString());\n}\n\nfunction loadOpenState(section: string) {\n const item = localStorage.getItem(`${section}/open`);\n return item === null ? null : item === \"true\";\n}\n\nfunction EmptySubscribedHint() {\n return (\n
    \n
    \n {I18n.t(\"js.channels.userbar.subscribed.empty\")}\n
    \n \n {I18n.t(\"js.channels.userbar.subscribed.call_to_action\")}\n \n
    \n );\n}\n\nfunction EmptyRecentHint() {\n return (\n
    \n
    \n {I18n.t(\"js.channels.userbar.recent.empty\")}\n
    \n
    \n );\n}\n\nfunction EmptyPopularHint() {\n return (\n
    \n
    \n {I18n.t(\"js.channels.userbar.popular.empty\")}\n
    \n
    \n );\n}\n\nconst DISPLAY_LIMITS = {\n subscribed: 50,\n recent: 10,\n popular: 25,\n};\n\nexport default function ChannelsUserbar() {\n const { data: channelsData, isLoading } = useChannels();\n const { blogId } = useParams();\n const { data: blog } = useBlog(blogId);\n const channelTypes = [\"subscribed\", \"recent\", \"popular\"];\n const channelData = channelTypes.map((type) => ({\n type,\n isLoading,\n data: channelsData?.[type] ?? [],\n openState: loadOpenState(`${type}ChannelsSection`),\n }));\n\n const [openStates, setOpenStates] = useState(\n channelData.reduce((acc, { type, data, openState }) => {\n acc[type] = openState === null ? !isEmpty(data.data) : openState;\n return acc;\n }, {}),\n );\n\n const handleSetOpen = (type, open) => {\n setOpenStates((prev) => ({ ...prev, [type]: open }));\n persistOpenState(open, `${type}ChannelsSection`);\n };\n\n const renderSection = (type, channels, isLoading) => {\n const titleKey = `js.channels.userbar.${type}.section_title`;\n const emptyHint =\n type === \"subscribed\" ? (\n \n ) : type === \"recent\" ? (\n \n ) : (\n \n );\n const showMoreKey = `js.channels.userbar.${type}.show_more`;\n\n return (\n handleSetOpen(type, open)}\n hasFavorites={\n type === \"subscribed\" && some(channels, { i: { favorited: true } })\n }\n collapsible\n >\n {(channels ?? []).length === 0 &&\n (isLoading ? (\n \n {I18n.t(\"js.loading\")}\n \n ) : (\n emptyHint\n ))}\n {(channels ?? []).slice(0, DISPLAY_LIMITS[type]).map((channel) => (\n \n {channel.title}\n \n ))}\n {(channels ?? []).length > DISPLAY_LIMITS[type] &&\n type === \"subscribed\" && (\n
  • \n \n {I18n.t(showMoreKey)}\n \n
  • \n )}\n {(type === \"recent\" || type === \"popular\") && (\n
  • \n \n {I18n.t(showMoreKey)}\n \n
  • \n )}\n \n );\n };\n\n return (\n <>\n \n \n \n {!isEmpty(channelsData?.start_page) ? (\n (channelsData?.start_page ?? []).map((channel) => (\n \n {I18n.t(`js.channels.userbar.start_page.section_title`)}\n \n ))\n ) : (\n \n {I18n.t(`js.channels.userbar.start_page.section_title`)}\n \n )}\n {Preload.current_member?.can.create_channels && (\n \n {I18n.t(\"js.channels.userbar.contents.create_new_channel\")}\n \n )}\n \n {channelData.map(({ type, isLoading, data: channels }) =>\n renderSection(type, channels, isLoading),\n )}\n \n \n );\n}\n","import React from \"react\";\n\nimport TixxtModuleSwitcher from \"components/layout/TixxtModuleSwitcher\";\nimport {\n ContextNavigation,\n UserbarLink,\n UserbarSection,\n} from \"components/layout/Userbar\";\nimport { useParams } from \"helpers/tixxt-router\";\nimport { useChannel } from \"components/channels/api\";\n\nexport default function ChannelAdministrationUserbar() {\n const { channelSlug } = useParams();\n const { data: channel, isLoading } = useChannel(channelSlug);\n return (\n <>\n {!window.isApp && }\n \n \n \n {isLoading ? I18n.t(\"js.loading\") : channel?.title}\n \n \n \n \n {I18n.t(\"js.administration.userbar.channels.settings.title\")}\n \n \n {I18n.t(\"js.administration.userbar.channels.layout.title\")}\n \n \n {I18n.t(\"js.administration.userbar.channels.design.title\")}\n \n \n {I18n.t(\"js.administration.userbar.channels.widgets.title\")}\n \n \n \n \n );\n}\n","import React, { useMemo } from \"react\";\nimport { RouteObject, useRoutes } from \"helpers/tixxt-router\";\nimport { flatMap } from \"lodash\";\n\nimport { UserbarContent } from \"components/layout/Userbar\";\nimport ActivitystreamsUserbar from \"components/activitystreams/Userbar\";\nimport MessagesUserbar from \"components/messages/Userbar\";\nimport AppointmentsUserbar from \"components/appointments/Userbar\";\nimport TasksUserbar from \"components/tasks/Userbar\";\nimport FilesUserbar from \"components/files/Userbar\";\nimport AdministrationUserbar from \"components/administration/Userbar\";\nimport InfoUserbar from \"components/info/Userbar\";\nimport SearchUserbar from \"components/globalSearch/Userbar\";\nimport MembershipsUserbar from \"components/memberships/Userbar\";\nimport DirectoryUserbar from \"components/directory/Userbar\";\nimport PagesUserbar from \"components/pages/Userbar\";\nimport AppCreatorUserbar from \"components/appCreator/Userbar\";\nimport ChannelsUserbar from \"components/channels/Userbar\";\nimport ChannelAdministrationUserbar from \"components/administration/channels/Userbar\";\n\n/*\nExpands the given rootPath into routes for network and group context as well as all subpaths (via wildcard)\n */\nfunction expandRootPaths(\n rootPaths: string[],\n routeObject: Omit,\n): RouteObject[] {\n return flatMap(rootPaths, (rootPath) => [\n { ...routeObject, path: rootPath + \"/*\" },\n { ...routeObject, path: \"/groups/:groupSlug\" + rootPath + \"/*\" },\n ]);\n}\n\nfunction moduleRoutes(): RouteObject[] {\n return [\n ...expandRootPaths(\n [\"/activitystreams\", \"/activities\", \"/invites\", \"/notifications\"],\n { element: },\n ),\n ...expandRootPaths([\"/messages\"], { element: }),\n ...expandRootPaths([\"/appointments\", \"/calendars\"], {\n element: ,\n }),\n ...expandRootPaths([\"/tasks\"], { element: }),\n ...expandRootPaths([\"/files\"], { element: }),\n ];\n}\n\nfunction extraRoutes(): RouteObject[] {\n return [\n { path: \"/info\", element: },\n { path: \"/imprint\", element: },\n { path: \"/search\", element: },\n { path: \"/groups/:groupSlug/search\", element: },\n { path: \"/administration/*\", element: },\n {\n path: \"/groups/:groupSlug/administration/*\",\n element: ,\n },\n {\n path: \"/group-categories/:groupCategorySlug/administration/*\",\n element: ,\n },\n {\n path: \"/groups/:groupSlug/invites/sent\",\n element: ,\n },\n {\n path: \"/groups/:groupSlug/membership_invites/new\",\n element: ,\n },\n {\n path: \"/channels/:channelSlug/administration\",\n element: ,\n },\n {\n path: \"/channels/:channelSlug/edit\",\n element: ,\n },\n {\n path: \"/channels/:channelSlug/layout/edit\",\n element: ,\n },\n {\n path: \"/channels/:channelSlug/design/edit\",\n element: ,\n },\n {\n path: \"/channels/:channelSlug/widgets\",\n element: ,\n },\n {\n path: \"/channels/:channelSlug/widgets/*\",\n element: ,\n },\n\n { path: \"/groups/:groupSlug/edit\", element: },\n { path: \"/invites/sent\", element: },\n { path: \"/invites/new\", element: },\n { path: \"/groups/:groupSlug/members\", element: },\n { path: \"/directory/channels\", element: },\n { path: \"/directory/:sectionSlug\", element: },\n { path: \"/members\", element: },\n { path: \"/map\", element: },\n { path: \"/map/members\", element: },\n { path: \"/groups/:groupSlug/map\", element: },\n { path: \"/groups/:groupSlug\", element: },\n { path: \"/pages/:pageSlug\", element: },\n { path: \"/pages/:pageSlug/*\", element: },\n { path: \"/apps/:appSlug\", element: },\n { path: \"/apps/:appSlug/*\", element: },\n {\n path: \"/groups/:groupSlug/pages/:pageSlug\",\n element: ,\n },\n { path: \"/members/:membershipId\", element: },\n { path: \"/members/:membershipId/*\", element: },\n { path: \"/users/edit\", element: },\n { path: \"/channels\", element: },\n { path: \"/channels/:channelSlug\", element: },\n { path: \"/channels/:channelSlug/*\", element: },\n {\n path: \"/blogs\",\n element: ,\n },\n {\n path: \"/blogs/:blogId/articles/:articleId\",\n element: ,\n },\n {\n path: \"/blogs/:blogId/articles/:articleId/*\",\n element: ,\n },\n {\n path: \"/blogs/:blogId/*\",\n element: ,\n },\n { path: \"/users/sign_in\", element: null },\n { path: \"/users/password/new\", element: null },\n { path: \"/*\", element: },\n ];\n}\n\n/*\nThis component is nothing more than routes, some of which are conditional, to the individual Userbars\n */\nexport default function TixxtUserbar() {\n const routes = useMemo(() => [...moduleRoutes(), ...extraRoutes()], []);\n const element = useRoutes(routes);\n\n return {element};\n}\n","import React, { Suspense } from \"react\";\n\nconst ChatBar = React.lazy(() => import(\"../chat/ChatBar\"));\n\nexport default function TixxtUserbar() {\n return (\n \n \n \n );\n}\n","import React, { useEffect, useState } from \"react\";\n\nfunction useSelectNavigation(\n elementRef: React.RefObject,\n items: any,\n onSelect: (any?) => void,\n) {\n const [cursor, setCursor] = useState(0);\n\n function upHandler(e) {\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n return setCursor((prevState) =>\n prevState < items.length - 1 ? prevState + 1 : prevState,\n );\n case \"ArrowUp\":\n e.preventDefault();\n return setCursor((prevState) =>\n prevState > 0 ? prevState - 1 : prevState,\n );\n case \"Enter\":\n e.preventDefault();\n return onSelect();\n default:\n return;\n }\n }\n\n useEffect(() => {\n elementRef.current?.addEventListener(\"keydown\", upHandler);\n\n return () => {\n elementRef.current?.removeEventListener(\"keydown\", upHandler);\n };\n });\n\n return {\n cursor,\n setCursor,\n };\n}\n\nexport default useSelectNavigation;\n","import React from \"react\";\nimport { split, find, includes } from \"lodash\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faEarthEurope as faRegularEarthEurope,\n faInbox as faRegularInbox,\n faFolderOpen as faRegularFolderOpen,\n faCalendarDay as faRegularCalendarDay,\n faTable as faRegularTable,\n faCompass as faRegularCompass,\n} from \"@fortawesome/pro-regular-svg-icons\";\nimport {\n faEarthEurope as faDuotoneEarthEurope,\n faInbox as faDuotoneInbox,\n faFolderOpen as faDuotoneFolderOpen,\n faCalendarDay as faDuotoneCalendarDay,\n faTable as faDuotoneTable,\n faCompass as faDuotoneCompass,\n} from \"@fortawesome/pro-duotone-svg-icons\";\nimport { Item } from \"../../../@types/searchBar\";\n\nconst MODULE_WHITELIST = [\n \"activities\",\n \"messages\",\n \"files\",\n \"appointments\",\n \"calendars\",\n \"pages\",\n \"items\",\n];\n\nfunction getModule(module: string) {\n switch (module) {\n case \"activitystreams\":\n return \"activities\";\n case \"calendars\":\n return \"appointments\";\n case \"apps\":\n return \"items\";\n case \"search\":\n return getModuleFromQueryParams();\n default:\n return module;\n }\n}\n\nfunction getModuleFromQueryParams() {\n const urlParams = new URLSearchParams(window.location.search);\n const module = urlParams.get(\"module\");\n\n // needed to make typescript happy\n if (!module) return;\n\n if (includes(MODULE_WHITELIST, module)) {\n return module;\n }\n}\n\nexport function getIcon({ module }: Item, duo?: boolean) {\n switch (module) {\n case \"activities\":\n return (\n \n );\n case \"messages\":\n return (\n \n );\n case \"files\":\n return (\n \n );\n case \"appointments\":\n return (\n \n );\n case \"items\":\n return (\n \n );\n default:\n return (\n \n );\n }\n}\n\nexport function generateItems() {\n const location = split(window.location.pathname, \"/\");\n\n let module = getModule(location[1]);\n\n const items: Item[] = [{}];\n\n if (location[1] === \"groups\" && Preload && Preload.my_groups) {\n const groupSlug = location[2];\n const group = find(Preload.my_groups, { slug: location[2] });\n module = getModule(location[3]);\n\n if (group) {\n items.unshift({\n parentName: group.name,\n groupSlug,\n });\n\n if (includes(MODULE_WHITELIST, module)) {\n items.unshift({\n parentName: group.name,\n module,\n groupSlug,\n });\n }\n }\n } else {\n if (includes(MODULE_WHITELIST, module)) {\n items.unshift({ module });\n }\n }\n\n return items;\n}\n","import React, { useRef, useState } from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faChevronRight as faSolidChevronRight } from \"@fortawesome/pro-solid-svg-icons\";\nimport {\n faMagnifyingGlass as faRegularMagnifyingGlass,\n faUsers as faRegularUsers,\n faXmark as faRegularXmark,\n} from \"@fortawesome/pro-regular-svg-icons\";\nimport {\n faMagnifyingGlass as faDuotoneMagnifyingGlass,\n faUsers as faDuotoneUsers,\n} from \"@fortawesome/pro-duotone-svg-icons\";\nimport { isEmpty, map } from \"lodash\";\nimport classNames from \"classnames\";\nimport useSelectNavigation from \"../../hooks/useSelectNavigation\";\nimport { generateItems, getIcon } from \"./searchBar/helpers\";\nimport { Item } from \"../../@types/searchBar\";\nimport { useNavigate, useSearchParams } from \"helpers/tixxt-router\";\nimport { stringify } from \"query-string\";\n\nexport default function SearchBar({ duo }: { duo?: boolean }) {\n const ref = useRef(null);\n const [searchParams] = useSearchParams();\n const [text, setText] = useState(searchParams.get(\"q\") || \"\");\n const [searchIsFocused, setSearchIsFocused] = useState(false);\n const navigate = useNavigate();\n\n const items = generateItems();\n\n function onSearch(e) {\n if (e) e.preventDefault();\n const item = items[cursor];\n if (!item) return;\n\n let url = \"/search\";\n if (item.groupSlug) url = `/groups/${item.groupSlug}${url}`;\n navigate(`${url}?${stringify({ module: item.module, q: text })}`);\n }\n\n const { setCursor, cursor } = useSelectNavigation(ref, items, onSearch);\n\n if (!Preload.current_member) return null;\n\n return (\n \n
    \n \n\n setSearchIsFocused(true)}\n onBlur={() => {\n setTimeout(() => setSearchIsFocused(false), 250);\n }}\n onChange={(e) => setText(e.target.value)}\n value={text}\n className={classNames(\n \"search-bar__input w-full rounded-full bg-transparent border border-solid py-1 px-9 text-white focus-visible:outline-none\",\n {\n \"rounded-b-none rounded-t-2xl\": !isEmpty(text) && searchIsFocused,\n },\n )}\n />\n \n
      \n {map(items, (item: Item, index: number) => (\n setCursor(index)}\n onClick={onSearch}\n >\n \n \n {text}\n \n
      \n {item.groupSlug && (\n \n \n {item.parentName}\n \n )}\n {item.module || !item.groupSlug ? (\n \n {getIcon(item, duo)}\n \n {[\n undefined,\n \"activities\",\n \"messages\",\n \"files\",\n \"appointments\",\n \"pages\",\n \"items\",\n ].includes(item.module)\n ? I18n.t(`js.searchbar.${item.module || \"global\"}`)\n : item.module}\n \n \n ) : null}\n
      \n \n ))}\n
    \n
    \n setText(\"\")}\n type=\"reset\"\n >\n \n \n \n\n \n \n \n \n );\n}\n","import React from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faComments as faLightComments } from \"@fortawesome/pro-light-svg-icons\";\nimport { faComments as faDuotoneComments } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { useSelector } from \"react-redux\";\nimport Notification from \"components/chat/shared/Notification\";\nimport { getAggregatedUnreadCount } from \"selectors/chat/chat\";\nimport { toggleChatbar } from \"../../../layout/togglebar\";\n\nexport default function ChatButton({ duo }: { duo?: boolean }) {\n const chatCount = useSelector(getAggregatedUnreadCount);\n\n return (\n \n );\n}\n","import React from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faNewspaper as faRegularNewspaper,\n faEnvelopeOpenText as faRegularEnvelopeOpenText,\n faCalendarCircleUser as faRegularCalendarCircleUser,\n faIdBadge as faRegularIdBadge,\n faUserPen as faRegularUserPen,\n faPenToSquare as faRegularPenToSquare,\n faGears as faRegularGears,\n faEye as faRegularEye,\n faChartUser as faRegularChartUser,\n faScrewdriverWrench as faRegularScrewdriverWrench,\n faGear as faRegularGear,\n faArrowRightFromBracket as faRegularArrowRightFromBracket,\n} from \"@fortawesome/pro-regular-svg-icons\";\nimport { faBell as faLightBell } from \"@fortawesome/pro-light-svg-icons\";\nimport {\n faBell as faDuotoneBell,\n faCircleChevronDown as faDuotoneCircleChevronDown,\n} from \"@fortawesome/pro-duotone-svg-icons\";\nimport { useSelector } from \"react-redux\";\nimport {\n currentMemberSelector,\n groupCategoriesSelector,\n networkSelector,\n} from \"selectors/environment\";\nimport { map, filter } from \"lodash\";\nimport DropDown, { DropDownItem } from \"../shared/DropDown\";\nimport UnreadBadge from \"components/shared/UnreadBadge\";\nimport { useFeaturesUnreads } from \"api/unreads\";\nimport ChatButton from \"components/layout/userCentral/ChatButton\";\nimport classNames from \"classnames\";\nimport { AvailableUpdatesPayload } from \"components/layout/CustomerCentralUpdateCheck\";\n\nfunction NotificationPing({ className }: { className?: string }) {\n return (\n \n \n \n \n );\n}\n\nfunction NotificationDropDownItems({\n unreads,\n className,\n}: {\n unreads?:\n | {\n Notifications: number;\n GroupInvites: number;\n Calendars: number;\n }\n | undefined;\n className?: string;\n}) {\n return (\n <>\n }\n className={className}\n />\n }\n className={className}\n />\n }\n className={className}\n />\n \n );\n}\n\nexport default function UserCentral({\n duo,\n availableUpdates,\n}: {\n duo?: boolean;\n availableUpdates: AvailableUpdatesPayload;\n}) {\n const currentMember = useSelector(currentMemberSelector);\n const network = useSelector(networkSelector);\n const groupCategories = useSelector(groupCategoriesSelector);\n const { data: unreads } = useFeaturesUnreads();\n\n const unreadCount = unreads\n ? unreads?.GroupInvites + unreads?.Calendars + unreads?.Notifications\n : 0;\n\n if (!currentMember) return null;\n\n const administratableGroupCategories = filter(\n groupCategories,\n (cat) => cat.can.administrate,\n );\n\n return (\n
      \n
    • \n \n {unreadCount > 0 && }\n \n \n \n \n
    • \n\n
    • \n e.stopPropagation()}\n >\n \n \n {availableUpdates?.length > 0 && (\n \n )}\n \n \n \n
    • \n \n {currentMember.can.update_profile && (\n \n )}\n {currentMember.can.update_registration && (\n \n )}\n {currentMember?.can.update_profile && (\n \n )}\n {currentMember && (\n \n )}\n {network.config.memberships?.change_requests?.enabled && (\n \n )}\n\n {network.can.administrate ||\n administratableGroupCategories.length > 0 ||\n network.can.version_and_updates ? (\n
    • \n ) : null}\n\n {network.can.administrate && (\n \n )}\n {map(administratableGroupCategories, (cat) => (\n \n ))}\n\n {network.can.version_and_updates && (\n }\n />\n )}\n
    • \n \n \n
    • \n {Preload.current_member?.can.chat ? (\n
    • \n \n
    • \n ) : null}\n
    \n );\n}\n","import { useEffect, useRef, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { State } from \"../../@types\";\nimport { clamp, toInteger } from \"lodash\";\n\nconst LARGE_BREAKPOINT = 1024;\n\n// Proportionally shrink the extended logo in combination with image banners on smaller than large screens\n// To always shrink logo on scroll set the following custom css\n// .header__logo { --shrink-breakpoint: 9999999px }\n// Also adds the .header__content--logo-shrunken class when the logo is fully shrunken\nexport default function useLogoScrollResize() {\n const logoRef = useRef(null);\n const { logoType, bannerType } = useSelector((state: State) => state.theme);\n let logoResizeBreakpoint = LARGE_BREAKPOINT;\n if (logoRef.current) {\n const resizeBreakpoint = getComputedStyle(logoRef.current)\n .getPropertyValue(\"--shrink-breakpoint\")\n ?.trim();\n if (resizeBreakpoint && resizeBreakpoint.match(/^\\d+px$/))\n logoResizeBreakpoint = toInteger(resizeBreakpoint.replace(\"px\", \"\"));\n }\n const [active, setActive] = useState(\n logoType == \"extended\" &&\n bannerType == \"image\" &&\n window.innerWidth < logoResizeBreakpoint,\n );\n\n // Toggle active if logo and/or banner type changes\n // Toggle active after resizing\n useEffect(() => {\n function toggleActive() {\n setActive(\n logoType == \"extended\" &&\n bannerType == \"image\" &&\n window.innerWidth < logoResizeBreakpoint,\n );\n }\n\n toggleActive();\n window.addEventListener(\"resize\", toggleActive);\n return function () {\n window.removeEventListener(\"resize\", toggleActive);\n };\n }, [logoType, bannerType, logoResizeBreakpoint]);\n\n // Resize logo on scroll if active, event handler is not bound otherwise\n useEffect(() => {\n const logoEl = logoRef.current;\n\n const navEl = document.getElementById(\"main-navigation\") as\n | HTMLDivElement\n | undefined;\n if (!navEl || !logoEl) return;\n\n const maxHeight = logoEl.clientHeight;\n const maxWidth = logoEl.clientWidth;\n const minHeight = 60;\n const startShrink = navEl.offsetTop - logoEl.clientHeight;\n let r: number | null = null; // has value if animation frame has been requested\n\n function cleanUp() {\n if (!logoEl) return;\n\n logoEl.removeAttribute(\"style\");\n document.body.style.removeProperty(\"--header-logo-height\");\n (logoEl.parentNode as HTMLDivElement).classList.remove(\n \"header__content--logo-shrunken\",\n );\n }\n\n function onScroll() {\n if (r) return;\n if (!logoEl) return;\n\n if (logoEl.hasAttribute(\"style\") && scrollY < startShrink) {\n cleanUp();\n } else if (\n logoEl.clientHeight > minHeight ||\n logoEl.clientHeight < maxHeight\n ) {\n r = requestAnimationFrame(() => {\n const newHeight = clamp(\n maxHeight - (scrollY - startShrink),\n minHeight,\n maxHeight,\n );\n logoEl.style.width = `${(newHeight / maxHeight) * maxWidth}px`;\n document.body.style.setProperty(\n \"--header-logo-height\",\n `${newHeight}px`,\n );\n (logoEl.parentNode as HTMLDivElement).classList.toggle(\n \"header__content--logo-shrunken\",\n newHeight == minHeight,\n );\n\n r = null;\n });\n }\n }\n\n if (active) {\n document.addEventListener(\"scroll\", onScroll);\n if (scrollY >= startShrink) onScroll();\n } else {\n cleanUp();\n }\n return function () {\n document.removeEventListener(\"scroll\", onScroll);\n };\n }, [active]);\n\n return logoRef;\n}\n","import React, { useEffect, useState } from \"react\";\nimport Modal from \"components/shared/Modal\";\nimport { useQuery } from \"react-query\";\nimport { every } from \"lodash\";\nimport { useSelector } from \"react-redux\";\nimport { networkSelector } from \"selectors/environment\";\n\nimport moment from \"moment\";\nimport MarkdownTranslation from \"components/shared/MarkdownTranslation\";\n\ntype Props = {\n children: ({\n availableUpdates,\n }: {\n availableUpdates: AvailableUpdatesPayload;\n }) => React.ReactNode;\n};\n\nexport type AvailableUpdatesPayload = {\n name: string;\n deadline: string;\n release_notes_url: string;\n}[];\n\nconst setDeploymentOfferSeenDate = (\n availableUpdates: AvailableUpdatesPayload,\n) =>\n availableUpdates?.forEach(({ name }) =>\n localStorage.setItem(\n `deploymentOfferSeenDate[${name}]`,\n new Date().toISOString(),\n ),\n );\n\nconst allDeploymentOffersSeen = (availableUpdates: AvailableUpdatesPayload) =>\n every(availableUpdates, ({ name }) => {\n const deploymentOffer = localStorage.getItem(\n `deploymentOfferSeenDate[${name}]`,\n );\n\n return moment(deploymentOffer).isSame(moment(), \"day\");\n });\n\nconst EMPTY = [];\n\nexport default function CustomerCentralUpdateCheck({ children }: Props) {\n const network = useSelector(networkSelector);\n const [showModal, setShowModal] = useState(false);\n\n const { data: availableUpdates } = useQuery({\n queryFn: () =>\n fetch(\n `${network.config.customer_central_url}/api/v1/available_upgrades`,\n {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${network?.customer_central_jwt}`,\n },\n },\n ).then((res) => res.json()),\n refetchInterval: 60000 * 5,\n refetchOnWindowFocus: false,\n staleTime: 60000 * 5,\n enabled: network.can.version_and_updates || false,\n retry: false,\n });\n\n useEffect(() => {\n if (!availableUpdates) return;\n\n if (allDeploymentOffersSeen(availableUpdates)) return;\n setShowModal(true);\n }, [availableUpdates]);\n\n return (\n <>\n {showModal && availableUpdates && availableUpdates.length > 0 ? (\n setDeploymentOfferSeenDate(availableUpdates)}\n >\n
    \n \n \n {I18n.t(\n \"js.customer_central.deployment_offer.open_customer_central\",\n )}\n \n
    \n \n ) : null}\n {children({ availableUpdates: availableUpdates || EMPTY })}\n \n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport Modal from \"components/shared/Modal\";\nimport { useSelector } from \"react-redux\";\nimport { networkSelector } from \"selectors/environment\";\nimport MarkdownTranslation from \"components/shared/MarkdownTranslation\";\n\nexport default function TeamsRenewOAuthCredentialsCheck() {\n const network = useSelector(networkSelector);\n const [showModal, setShowModal] = useState(false);\n\n useEffect(() => {\n setShowModal(!!network?.teams_configuration?.show_renew_secret_modal);\n }, []);\n\n return (\n <>\n {showModal ? (\n \n
    \n \n
    \n
    \n ) : null}\n \n );\n}\n","import React from \"react\";\n\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faBars as faLightBars,\n faHouse as faLightHouse,\n} from \"@fortawesome/pro-light-svg-icons\";\nimport {\n faBars as faDuotoneBars,\n faHouse as faDuotoneHouse,\n} from \"@fortawesome/pro-duotone-svg-icons\";\nimport { useSelector } from \"react-redux\";\nimport { networkSelector } from \"selectors/environment\";\nimport SearchBar from \"components/layout/SearchBar\";\nimport UserCentral from \"components/layout/UserCentral\";\nimport { useFeaturesUnreads } from \"api/unreads\";\nimport UnreadBadge from \"components/shared/UnreadBadge\";\nimport { map, omit, sum, values } from \"lodash\";\nimport { State } from \"../../@types\";\nimport useLogoScrollResize from \"./useLogoScrollResize\";\nimport CustomerCentralUpdateCheck from \"components/layout/CustomerCentralUpdateCheck\";\nimport TeamsRenewOAuthCredentialsCheck from \"components/layout/TeamsRenewOAuthCredentialsCheck\";\n\nexport default function TixxtHeader() {\n const network = useSelector(networkSelector);\n const theme = useSelector((state: State) => state.theme);\n const groupCategoryTheme = useSelector(\n (state: State) => state.groupCategoryTheme,\n );\n const groupTheme = useSelector((state: State) => state.groupTheme);\n let logoUrl = theme.override\n ? `/api/storage/assets/${theme.logoImage?.id}/preview`\n : theme.logoUrl;\n if (groupCategoryTheme?.logoUrl) logoUrl = groupCategoryTheme.logoUrl;\n if (groupTheme?.logoUrl) logoUrl = groupTheme.logoUrl;\n\n const duo = theme?.userbarIconType == \"duotone\";\n const { data: unreads } = useFeaturesUnreads();\n\n const unreadCount =\n sum(\n values(omit(unreads, [\"Invites\", \"Notifications\", \"GroupJoinRequests\"])),\n ) + sum(map(unreads?.GroupJoinRequests, \"open_join_requests\"));\n\n const logoRef = useLogoScrollResize();\n\n return (\n <>\n
    \n \n
    \n \n {logoUrl ? (\n \n ) : (\n network.name\n )}\n \n
    \n
    \n \n \n \n
    \n
    \n \n
    \n
    \n \n {({ availableUpdates }) => (\n \n )}\n \n
    \n \n
    \n
    \n \n );\n}\n","import { useEffect, useRef } from \"react\";\nimport { omit } from \"lodash\";\nimport {\n storeOverrideTheme,\n useTheme,\n} from \"components/administration/designManager/useTheme\";\nimport { DerivedTheme } from \"components/administration/designManager/types\";\nimport themeToCss from \"components/administration/designManager/themeToCss\";\n\nfunction applyStyleOverride(\n styleEl: React.MutableRefObject,\n theme: DerivedTheme,\n) {\n /* Create style tag to apply theme overrides */\n if (!styleEl.current) {\n styleEl.current = document.createElement(\"style\");\n styleEl.current.type = \"text/css\";\n styleEl.current.setAttribute(\"data-theme-source\", \"override\");\n }\n styleEl.current.textContent = themeToCss(theme);\n if (!styleEl.current.isConnected) document.head.appendChild(styleEl.current);\n}\n\nfunction applyFaviconOverride(\n linkEl: React.MutableRefObject,\n theme: DerivedTheme,\n) {\n /* Create link tag to apply favicon override */\n if (!linkEl.current) {\n linkEl.current = document.createElement(\"link\");\n linkEl.current.setAttribute(\"data-theme-source\", \"override\");\n }\n if (theme.faviconImage) {\n linkEl.current.href = `/api/storage/assets/${theme.faviconImage.id}/preview`;\n if (theme.faviconImage.extension == \"ico\") {\n linkEl.current.rel = \"shortcut icon\";\n linkEl.current.type = \"image/x-icon\";\n } else {\n linkEl.current.rel = \"icon\";\n linkEl.current.type = \"image/png\";\n }\n if (!linkEl.current.isConnected) document.head.appendChild(linkEl.current);\n } else {\n if (linkEl.current.isConnected) document.head.removeChild(linkEl.current);\n }\n}\n\nfunction removeStyleOverride(\n styleEl: React.MutableRefObject,\n) {\n if (styleEl.current) document.head.removeChild(styleEl.current);\n}\n\nexport default function ApplyOverrideTheme() {\n const theme = useTheme();\n const styleEl = useRef();\n const faviconEl = useRef();\n\n useEffect(() => {\n if (theme.override) {\n applyStyleOverride(styleEl, theme);\n applyFaviconOverride(faviconEl, theme);\n storeOverrideTheme(omit(theme, [\"derivedColors\"]));\n } else if (styleEl.current?.isConnected) {\n removeStyleOverride(styleEl);\n storeOverrideTheme(null);\n }\n\n function toggleBodyClasses(event) {\n event.detail.newBody.classList.toggle(\n \"tixxt--full\",\n theme?.fullWidth === true,\n );\n }\n\n document.addEventListener(\"turbo:before-render\", toggleBodyClasses);\n toggleBodyClasses({ detail: { newBody: document.body } });\n\n return () => {\n document.removeEventListener(\"turbo:before-render\", toggleBodyClasses);\n };\n }, [theme]);\n\n return null;\n}\n","import React, { MutableRefObject, useContext, useEffect, useRef } from \"react\";\nimport { Theme } from \"components/administration/designManager/types\";\nimport { lightThemeToCss } from \"components/administration/designManager/themeToCss\";\nimport { compact, every, find, isEmpty, isEqual } from \"lodash\";\nimport { Group, GroupCategory, State } from \"../../../@types\";\nimport { useParams, useSearchParams } from \"helpers/tixxt-router\";\nimport invariant from \"invariant\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport {\n resetTheme as groupCategoryResetTheme,\n setTheme as groupCategorySetTheme,\n} from \"components/administration/designManagerLight/groupCategoryThemeSlice\";\n\nimport {\n setTheme as groupSetTheme,\n resetTheme as groupResetTheme,\n} from \"components/administration/designManagerLight/groupThemeSlice\";\n\nconst themeSliceActions = {\n group: {\n setTheme: groupSetTheme,\n resetTheme: groupResetTheme,\n },\n groupCategory: {\n setTheme: groupCategorySetTheme,\n resetTheme: groupCategoryResetTheme,\n },\n};\n\nexport function applyStyleOverride(\n styleEl: React.MutableRefObject,\n theme: Theme,\n) {\n /* Create style tag to apply theme overrides */\n if (!styleEl.current) {\n styleEl.current = document.createElement(\"style\");\n styleEl.current.type = \"text/css\";\n styleEl.current.setAttribute(\"data-theme-source\", \"override\");\n }\n styleEl.current.textContent = lightThemeToCss({\n ...theme,\n override: true,\n } as Theme);\n if (!styleEl.current.isConnected) document.head.appendChild(styleEl.current);\n}\n\nexport function removeStyleOverride(\n styleEl: React.MutableRefObject,\n) {\n if (styleEl.current && document.head.contains(styleEl.current))\n document.head.removeChild(styleEl.current);\n}\n\nexport function appointmentIdToGroupSlugs(appointmentId): string[] {\n const appointment = Tixxt.Calendars.Appointment.all().get(appointmentId);\n\n const calendarParentIds =\n appointment\n ?.calendars()\n .filter({ attributes: { type: \"group\" } })\n .map((as) => as.get(\"parent_id\"))\n .value() || [];\n\n return compact(\n calendarParentIds.map((ci) => find(Preload.my_groups, { id: ci })?.slug),\n );\n}\n\nexport function fileIdToGroupSlugs(fileId): string[] {\n return Tixxt.Files.File.all().get(fileId)?.attributes?.group_slugs;\n}\n\nexport function folderIdToGroupSlugs(folderId): string[] {\n const group = groupFromId(\n Tixxt.Files.Folder.all().get(folderId)?.attributes?.group_id,\n );\n\n return compact([group?.slug]);\n}\n\nexport function taskIdToGroupSlugs(taskId): string[] {\n return compact([\n Tixxt.Tasks.controller?.currentCollection?.get(taskId)?.attributes?.context\n ?.first_stream_slug,\n ]);\n}\n\nexport function groupFromId(id: string): Group | undefined {\n return find(Preload.my_groups, { id });\n}\n\nexport function groupsFromSlugs(slugs: string[]): Group[] {\n return compact(slugs.map((slug) => find(Preload.my_groups, { slug })));\n}\n\nexport function activityIdToGroupSlugs(activityId) {\n const activity = Tixxt.Activitystreams.Activity.all().get(activityId);\n const groupSlugs =\n activity\n ?.activitystreams()\n .map((as) => as.get(\"group_slug\"))\n .value() || [];\n\n // returns empty array when the activity is also posted in a global activitystream\n // if (groupSlugs.includes(undefined)) return [];\n // TODO: Warum hatten wir das hier gemacht? Das sorgt dafür,\n // dass bei einem Beitrag, welcher auch in einem globalen Aktivitystream liegt,\n // das Gruppen-/ GruppenCategoryTheme nicht angezeigt wird\n\n return groupSlugs;\n}\n\nexport function groupCategoriesFromGroups(groups: Group[]): GroupCategory[] {\n return compact(\n groups.map((group) =>\n find(Preload.current_network.group_categories, {\n id: group?.category_id,\n }),\n ),\n );\n}\n\nexport function groupCategoriesFromSlugs(slugs: string[]): GroupCategory[] {\n return compact(\n slugs.map((slug) =>\n find(Preload.current_network.group_categories, { slug }),\n ),\n );\n}\n\nexport function sameTheme(\n themeParents: GroupCategory[] | Group[] | undefined,\n): boolean {\n if (!themeParents) return false;\n const isSameTheme = (themeParent) => {\n return themeParents[0].active_theme == themeParent.active_theme;\n };\n\n return every(themeParents, isSameTheme);\n}\n\nexport type SlugsState = { slugs: string[]; previousSlug: string | null };\nexport const SlugsContext = React.createContext<\n React.Dispatch>\n>(() => {\n void 0;\n});\n\nexport function GroupsFromSlug() {\n const { contextSlug } = useParams();\n invariant(contextSlug, \"GroupsFromSlug used in route without :contextSlug\");\n\n const setSlugsState = useContext(SlugsContext);\n\n useEffect(() => {\n setSlugsState({ slugs: [contextSlug], previousSlug: contextSlug });\n }, [contextSlug]);\n\n return null;\n}\n\nexport function GroupsFromActivityId() {\n const { activityId } = useParams();\n const setSlugsState = useContext(SlugsContext);\n\n useEffect(() => {\n const resolve = () =>\n setSlugsState((state) => ({\n ...state,\n slugs: activityIdToGroupSlugs(activityId),\n }));\n\n resolve();\n Tixxt.Activitystreams.Activity.all().on(\"sync\", resolve);\n Tixxt.Activitystreams.Activitystream.all().on(\"sync\", resolve);\n\n return () => {\n Tixxt.Activitystreams.Activity.all().off(\"sync\", resolve);\n Tixxt.Activitystreams.Activitystream.all().off(\"sync\", resolve);\n };\n }, [activityId]);\n\n return null;\n}\n\nexport function GroupsFromAppointmentId() {\n const { appointmentId } = useParams();\n const setSlugsState = useContext(SlugsContext);\n\n useEffect(() => {\n const resolve = () => {\n setSlugsState((state) => ({\n ...state,\n slugs: appointmentIdToGroupSlugs(appointmentId),\n }));\n };\n\n resolve();\n Tixxt.Calendars.Appointment.all().on(\"sync\", resolve);\n\n return () => {\n Tixxt.Calendars.Appointment.all().off(\"sync\", resolve);\n };\n }, [appointmentId]);\n\n return null;\n}\n\nexport function GroupsFromTaskId() {\n const { taskId } = useParams();\n const setSlugsState = useContext(SlugsContext);\n\n useEffect(() => {\n setSlugsState((state) => ({\n ...state,\n slugs: taskIdToGroupSlugs(taskId),\n }));\n }, [taskId]);\n\n return null;\n}\n\nexport function GroupsFromFolderId() {\n const { paramsFolderId } = useParams();\n const [searchParams] = useSearchParams();\n const queryFolderId = searchParams.get(\"folder_id\");\n\n const folderId = paramsFolderId || queryFolderId;\n const setSlugsState = useContext(SlugsContext);\n\n useEffect(() => {\n const resolve = () => {\n setSlugsState((state) => ({\n ...state,\n slugs: folderIdToGroupSlugs(folderId),\n }));\n };\n\n resolve();\n Tixxt.Files.Folder.all().on(\"sync\", resolve);\n return () => {\n Tixxt.Files.Folder.all().off(\"sync\", resolve);\n };\n }, [folderId]);\n\n return null;\n}\n\nexport function GroupsFromFileId() {\n const { fileId } = useParams();\n const setSlugsState = useContext(SlugsContext);\n\n useEffect(() => {\n const resolve = () => {\n setSlugsState((state) => ({\n ...state,\n slugs: fileIdToGroupSlugs(fileId),\n }));\n };\n\n resolve();\n Tixxt.Files.File.all().on(\"sync\", resolve);\n return () => {\n Tixxt.Files.File.all().off(\"sync\", resolve);\n };\n }, [fileId]);\n\n return null;\n}\n\nexport function NoSlugs() {\n const setSlugsState = useContext(SlugsContext);\n useEffect(() => {\n setSlugsState({ slugs: [], previousSlug: null });\n }, []);\n\n return null;\n}\n\nconst selectors = {\n network: (state: State) => state.theme,\n groupCategory: (state: State) => state.groupCategoryTheme,\n group: (state: State) => state.groupTheme,\n};\n\nexport const HandleContextHeader = React.memo(function HandleContextHeader({\n slugs,\n relevantContext,\n lastContext,\n type,\n}: {\n slugs: string[];\n relevantContext: GroupCategory[] | Group[] | undefined;\n lastContext: MutableRefObject;\n type: \"group\" | \"groupCategory\";\n}) {\n const styleEl = useRef();\n const dispatch = useDispatch();\n const activeTheme = useSelector(selectors[type]);\n\n // This sets state.groupTheme or state.groupCategoryTheme when slugs change\n useEffect(() => {\n if (!relevantContext) return;\n\n // the first element is used because the slug either comes from the path so only one is available,\n // from the last context so only one is available,\n // or from the activity/ appointment object so it is only interesting if all the `groupCategories` have the same Theme\n const context = relevantContext[0];\n const hasSameTheme = sameTheme(relevantContext);\n\n if (lastContext.current == context) return;\n lastContext.current = context;\n\n if (!context?.active_theme || !hasSameTheme) {\n if (!isEmpty(activeTheme)) dispatch(themeSliceActions[type].resetTheme());\n } else {\n dispatch(themeSliceActions[type].setTheme(context.active_theme));\n }\n }, [slugs]);\n\n // This applies styles from theme from state\n useEffect(() => {\n if (!isEmpty(activeTheme)) {\n applyStyleOverride(styleEl, activeTheme);\n } else {\n removeStyleOverride(styleEl);\n }\n }, [activeTheme]);\n\n return null;\n}, isEqual);\n\nexport function Noop() {\n return null;\n}\n","import React, { useRef, useState } from \"react\";\nimport { compact, first } from \"lodash\";\nimport { useRoutes } from \"helpers/tixxt-router\";\nimport { Group } from \"../../../@types\";\nimport {\n groupsFromSlugs,\n GroupsFromSlug,\n GroupsFromActivityId,\n GroupsFromAppointmentId,\n GroupsFromFileId,\n GroupsFromTaskId,\n NoSlugs,\n HandleContextHeader,\n GroupsFromFolderId,\n Noop,\n SlugsState,\n SlugsContext,\n} from \"components/administration/designManagerLight/functions\";\n\nfunction pickRelevantGroups({ slugs, previousSlug }): Group[] | undefined {\n if (previousSlug && slugs?.includes(previousSlug)) {\n const group = first(groupsFromSlugs(compact([previousSlug])));\n if (group) return [group] as Group[];\n }\n\n if (!slugs) return;\n\n return groupsFromSlugs(slugs);\n}\n\nconst routes = [\n {\n path: \"/groups/:contextSlug/administration/designs/:designId/*\",\n element: ,\n },\n { path: \"/groups/:contextSlug/*\", element: },\n { path: \"/activities/:activityId\", element: },\n {\n path: \"/appointments/:appointmentId\",\n element: ,\n },\n {\n path: \"/appointments/:appointmentId/*\",\n element: ,\n },\n { path: \"/files/folders/new\", element: },\n { path: \"/files/folders/:folderId\", element: },\n { path: \"/files/:fileId\", element: },\n { path: \"/tasks/:taskId\", element: },\n { path: \"/tasks/:taskId/*\", element: },\n { path: \"*\", element: },\n];\n\nexport default function ApplyOverrideGroupTheme() {\n const [state, setState] = useState({\n slugs: [],\n previousSlug: null,\n });\n const lastContext = useRef();\n const element = useRoutes(routes);\n\n return (\n <>\n \n {element}\n \n );\n}\n","import React, { useRef, useState } from \"react\";\nimport { first, uniq } from \"lodash\";\nimport { useRoutes } from \"helpers/tixxt-router\";\nimport { GroupCategory } from \"../../../@types\";\nimport {\n groupsFromSlugs,\n groupCategoriesFromSlugs,\n groupCategoriesFromGroups,\n GroupsFromActivityId,\n GroupsFromFileId,\n GroupsFromSlug,\n GroupsFromTaskId,\n GroupsFromAppointmentId,\n NoSlugs,\n HandleContextHeader,\n GroupsFromFolderId,\n Noop,\n SlugsState,\n SlugsContext,\n} from \"components/administration/designManagerLight/functions\";\n\nfunction pickRelevantGroupCategories({\n slugs,\n previousSlug,\n}): GroupCategory[] | undefined {\n if (previousSlug && slugs?.includes(previousSlug)) {\n const groupCategory = first(groupCategoriesFromSlugs([previousSlug]));\n if (groupCategory) return [groupCategory] as GroupCategory[];\n }\n\n if (!slugs) return undefined;\n\n const groups = groupsFromSlugs(slugs);\n return uniq([\n ...groupCategoriesFromGroups(groups),\n ...groupCategoriesFromSlugs(slugs),\n ]);\n}\n\nconst routes = [\n {\n path: \"/groups/:contextSlug/administration/designs/:designId/*\",\n element: ,\n },\n {\n path: \"/groups/:contextSlug/*\",\n element: ,\n },\n {\n path: \"/group-categories/:contextSlug/administration/designs/:designId/*\",\n element: ,\n },\n {\n path: \"/group-categories/:contextSlug/*\",\n element: ,\n },\n {\n path: \"/activities/:activityId\",\n element: ,\n },\n {\n path: \"/appointments/:appointmentId\",\n element: ,\n },\n {\n path: \"/appointments/:appointmentId/*\",\n element: ,\n },\n {\n path: \"/files/folders/new\",\n element: ,\n },\n {\n path: \"/files/folders/:folderId\",\n element: ,\n },\n {\n path: \"/files/:fileId\",\n element: ,\n },\n {\n path: \"/tasks/:taskId\",\n element: ,\n },\n {\n path: \"/tasks/:taskId/*\",\n element: ,\n },\n {\n path: \"*\",\n element: ,\n },\n];\n\nexport default function ApplyOverrideGroupCategoryTheme() {\n const [state, setState] = useState({\n slugs: [],\n previousSlug: null,\n });\n const lastContext = useRef();\n const element = useRoutes(routes);\n\n return (\n <>\n \n {element}\n \n );\n}\n","import React from \"react\";\nimport SearchBar from \"components/layout/SearchBar\";\nimport { useSelector } from \"react-redux\";\nimport { State } from \"../../@types\";\n\nexport default function AppSearchHeader() {\n const theme = useSelector((state: State) => state.theme);\n const duo = theme?.userbarIconType == \"duotone\";\n\n return (\n
    \n \n
    \n );\n}\n","import React, { useEffect } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { QueryClientProvider } from \"react-query\";\nimport { Provider } from \"react-redux\";\nimport store from \"../store\";\nimport queryClient from \"../helpers/queryClient\";\nimport {\n HeaderPortal,\n UserbarPortal,\n ChatbarPortal,\n ContentPortal,\n} from \"components/layout/portals\";\nimport TixxtUserbar from \"components/layout/TixxtUserbar\";\nimport TixxtChatbar from \"components/layout/TixxtChatbar\";\nimport TixxtContent from \"components/layout/TixxtContent\";\nimport TixxtHeader from \"components/layout/TixxtHeader\";\nimport { StaticTixxtGroupNavigation } from \"components/layout/TixxtGroupNavigation\";\nimport { StaticTixxtPageTitle } from \"components/layout/TixxtPageTitle\";\nimport ApplyOverrideTheme from \"components/administration/designManager/ApplyOverrideTheme\";\nimport ApplyOverrideGroupTheme from \"components/administration/designManagerLight/ApplyOverrideGroupTheme\";\nimport ApplyOverrideGroupCategoryTheme from \"./administration/designManagerLight/ApplyOverrideGroupCategoryTheme\";\nimport GenericErrorBoundary from \"components/shared/GenericErrorBoundary\";\nimport { BrowserRouter } from \"helpers/tixxt-router\";\nimport AppSearchHeader from \"components/layout/AppSearchHeader\";\nimport { TurboFrameMissingEvent } from \"@hotwired/turbo\";\nimport ApplyOverrideChannelTheme from \"components/channels/design/ApplyOverrideChannelTheme\";\n\n// For debugging only\ndocument.addEventListener(\"turbo:visit\", function (event) {\n debug(\"⚡️ turbo:visit\", new URL(event[\"detail\"].url).pathname);\n});\n\n// Fix Content Missing outside of development\n// In development it produces an error and should be fixed\nif (!window.Settings?.development) {\n document.addEventListener(\"turbo:frame-missing\", function (\n event: TurboFrameMissingEvent,\n ) {\n event.preventDefault();\n event.detail.visit(event.detail.response, {});\n } as EventListener);\n}\n\n/*\n SPA entry point\n */\nexport function launchApp() {\n function setupReact() {\n const container = document.getElementById(\"app-root\");\n const root = createRoot(container!);\n root.render();\n document.removeEventListener(\"turbo:load\", setupReact);\n }\n\n // Setup only once\n document.addEventListener(\"turbo:load\", setupReact);\n}\n\n/*\n * Main frontend component\n */\nexport default function App() {\n const currentMember = Preload.current_member;\n const canChat = currentMember?.can.chat;\n\n useEffect(() => {\n if (window.isApp) {\n window.bridge?.setMemberIsLoggedIn(currentMember != null);\n if (currentMember != null) {\n window.bridge?.setMemberId(currentMember.id);\n }\n window.bridge?.setMemberCanChat(!!canChat);\n }\n }, [currentMember]);\n\n return (\n \n \n \n \n \n \n \n \n \n \n {window.isApp ? : }\n \n \n \n \n {canChat &&\n !window.isApp &&\n window.location.pathname !== \"/legal\" && (\n \n \n \n )}\n \n \n {window.Turbo?.session.drive ? (\n \n \n \n ) : null}\n \n \n \n );\n}\n","import lodash from \"lodash\";\n\n/* This is here to make legacy Backbone(.Marionette) work with modern lodash */\n\nfunction compatThisArg(fn) {\n return function (collection, callback, thisArg) {\n if (lodash.isFunction(callback)) {\n return fn(collection, lodash.bind(callback, thisArg));\n } else {\n return fn(collection, callback);\n }\n };\n}\n\n// Create copy of lodash that can be modified independently\nconst customLodashCompat = lodash.runInContext();\n\n// Add some aliases for backwards compat\ncustomLodashCompat.mixin({\n any: lodash.some,\n contains: lodash.includes,\n pairs: lodash.toPairs,\n rest: lodash.tail,\n\n // These functions had a third thisArg in old lodash\n sortBy: compatThisArg(lodash.sortBy),\n forEach: compatThisArg(lodash.forEach),\n each: compatThisArg(lodash.forEach),\n map: compatThisArg(lodash.map),\n});\n\n// Disable chaining for some functions, making them return a value instead of the wrapped object\ncustomLodashCompat.mixin(\n {\n // _([1,2,3]).first() returned 1 in old lodash, in modern lodash another call to value() is required\n first: lodash.head,\n },\n { chain: false },\n);\n\n// forEach is lazily evaluated when used in chain in modern lodash\n// This prevents iterations in templates like\n// file.folders().each ->\n// # something haml\n// from rendering\nconst lazyForEach = customLodashCompat.prototype.forEach;\ncustomLodashCompat.prototype.each = customLodashCompat.prototype.forEach =\n function (...args) {\n lazyForEach.apply(this, args).value(); // run whole chain immediately\n return this; // return original object for further chaining\n };\n\nexport default customLodashCompat;\n","import { fetchApi } from \"helpers/reactQueryApi\";\nimport store from \"../store.js\";\nimport { DeviceData } from \"../@types/devices\";\nimport {\n disableBodyScrolling,\n restoreBodyScrolling,\n} from \"../layout/togglebar\";\n\nexport default class Bridge {\n static isIOS() {\n return /iOS/.test(navigator.userAgent);\n }\n\n static isAndroid() {\n return /Android/.test(navigator.userAgent);\n }\n\n static postMessage(message: object) {\n if (Bridge.isIOS()) {\n window.webkit?.messageHandlers.nativeApp.postMessage(message);\n }\n\n if (Bridge.isAndroid()) {\n window[\"nativeApp\"]?.postMessage(JSON.stringify(message));\n }\n }\n\n static toggleUserbar() {\n const userbar = document.getElementById(\"userbar-root\");\n\n if (userbar?.classList.contains(\"userbar--visible\")) {\n userbar?.classList.remove(\"userbar--visible\");\n restoreBodyScrolling(\"userbar\");\n } else {\n userbar?.classList.add(\"userbar--visible\");\n disableBodyScrolling(\"userbar\");\n }\n }\n\n static toggleChat() {\n const chat = document.getElementById(\"chatbar-root\");\n\n if (chat?.classList.contains(\"chatbar--visible\")) {\n chat?.classList.remove(\"chatbar--visible\");\n } else {\n chat?.classList.add(\"chatbar--visible\");\n }\n }\n\n static toggleSearchbar() {\n const searchbar = document.getElementById(\"app__header\");\n const searchInput: HTMLInputElement = document.getElementsByClassName(\n \"search-bar__input\",\n )[0] as HTMLInputElement;\n\n if (searchbar?.classList.contains(\"header--visible\")) {\n searchbar?.classList.remove(\"header--visible\");\n searchInput.blur();\n } else {\n searchbar?.classList.add(\"header--visible\");\n searchInput?.focus();\n }\n }\n\n static registerDevice(data: DeviceData) {\n fetchApi(\"/api/v1/devices\", {\n method: \"POST\",\n body: data,\n });\n }\n\n static askToRegisterDevice() {\n Bridge.postMessage({ registerDevice: \"registerDevice\" });\n }\n\n static async removeDevice(deviceUniqId: string) {\n const result = await fetchApi(`/api/v1/devices/${deviceUniqId}`, {\n method: \"DELETE\",\n });\n\n Bridge.postMessage({ deletedDevice: result });\n }\n\n static showChat(id: string) {\n store.dispatch({\n type: \"chat/NAVIGATE\",\n payload: { route: \"showChat\", params: { chatId: id } },\n });\n }\n\n static async loadNetworkConfig() {\n const network = await fetchApi(\"/api/v1/network\");\n\n const pages = await fetchApi(\"/pages\");\n\n Bridge.postMessage({\n setNetworkConfig: network,\n setPages: pages,\n });\n }\n\n static async loadUnreads() {\n const unreads = await fetchApi(\"/api/v1/unreads\");\n\n Bridge.postMessage({ unreads });\n }\n\n static getDeviceUniqueId(\n setDeviceUniqueId: (props: { id: string; name: string }) => void,\n ) {\n Bridge.postMessage({\n getDeviceUniqueId: \"setDeviceUniqueId\",\n });\n\n Bridge[\"setDeviceUniqueId\"] = setDeviceUniqueId;\n }\n\n static setPageTitle(title: string) {\n Bridge.postMessage({\n pageTitle: title,\n });\n }\n\n static goBack() {\n Bridge.postMessage({\n goBack: \"goBack\",\n });\n }\n\n static setMemberIsLoggedIn(isLoggedIn: boolean) {\n Bridge.postMessage({\n isLoggedIn,\n });\n }\n\n static setMemberId(membershipId: string) {\n Bridge.postMessage({\n membershipId,\n });\n }\n\n static setMemberCanChat(canChat: boolean) {\n Bridge.postMessage({\n canChat,\n });\n }\n\n static configureLayout() {\n document.body.classList.add(\"tixxt--in-app\");\n\n const pageTitle = document.getElementById(\"static-page-title\");\n\n if (pageTitle?.textContent) {\n Bridge.setPageTitle(pageTitle?.textContent);\n }\n\n const title = document.querySelector(\"title\");\n if (title) {\n title?.parentNode?.removeChild(title);\n }\n }\n\n static async getAuthToken(key: string, options: { url: string }) {\n const token = await fetchApi(\"/api/v1/get-web-token\");\n\n Bridge.postMessage({\n [key]: { authToken: token, options },\n });\n }\n\n static alert(\n title: string,\n message: string,\n callbackName: string,\n callback: () => void,\n defaultValue?: string,\n ) {\n Bridge.postMessage({\n alert: { title, message, defaultValue, callbackName },\n });\n\n if (callback) {\n Bridge[callbackName] = callback;\n }\n }\n\n static prompt(message: string, callback: () => void, defaultValue?: string) {\n Bridge.alert(\"\", message, \"promptCallback\", callback, defaultValue);\n }\n\n static confirm(message: string, callback: () => void) {\n Bridge.alert(message, \"\", \"confirmCallback\", callback, undefined);\n }\n}\n","import React from \"react\";\nimport moment from \"moment\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGift } from \"@fortawesome/pro-regular-svg-icons\";\nimport { isObject } from \"lodash\";\n\nexport type Member = {\n id: string;\n name: string;\n path: string;\n images: { \"40x40@2\": string };\n is_external: boolean;\n profile: { [key: string]: { displayValue: string } | string | null };\n birthday?: string;\n birthday_is_today?: boolean;\n age?: number;\n};\n\ntype MemberRowProps = {\n member: Member;\n showAge?: boolean;\n};\n\nconst MemberRow: React.FC = ({ member, showAge }) => {\n return (\n
  • \n \n
    \n \n \n {member.name}\n \n {member.is_external && (\n {I18n.t(\"js.external_member.badge\")}\n )}\n
    \n {Object.entries(member.profile).map(([key, value]) => (\n \n {isObject(value) ? value.displayValue : value}\n \n ))}\n {member.birthday && (\n \n {member.birthday_is_today ? (\n \n \n \n {I18n.t(\"js.widgets.shared.member.birthday_is_today\")}\n \n {showAge && member.age && ` (${member.age})`}\n \n ) : (\n <>\n {moment(member.birthday).format(\"L\")}\n {showAge && member.age && ` (${member.age + 1})`}\n \n )}\n \n )}\n
    \n
    \n
  • \n );\n};\n\nexport default MemberRow;\n","import React from \"react\";\nimport MemberRow, { Member } from \"../shared/MemberRow\";\n\nexport type AdminMembersWidgetProps = {\n headline?: string;\n memberships: Member[];\n};\n\nconst AdminMembersWidget: React.FC = ({\n headline,\n memberships,\n}) => {\n return (\n
    \n {headline &&

    {headline}

    }\n
      \n {memberships.map((member) => (\n \n ))}\n
    \n
    \n );\n};\n\nexport default AdminMembersWidget;\n","import React from \"react\";\nimport moment from \"moment\";\nimport \"moment-timezone\";\n\nexport type Appointment = {\n id: string;\n name: string;\n start: string;\n end?: string;\n all_day?: boolean;\n path: string;\n meeting?: {\n join_url?: string;\n };\n location?: string;\n};\n\nfunction displayTime(appointment: Appointment) {\n const currentTime = moment.tz(moment(), moment.tz.guess());\n const startTime = moment.tz(appointment.start, moment.tz.guess());\n const allDay = appointment.all_day;\n if (appointment.end) {\n const endTime = moment.tz(appointment.end, moment.tz.guess());\n\n if (\n currentTime.isBetween(startTime, endTime, \"minute\", \"[]\") ||\n currentTime.isBetween(startTime, endTime, \"day\", \"[]\")\n ) {\n // today\n if (startTime.isSame(endTime, \"day\")) {\n if (!allDay) {\n // Case-3\n return (\n <>\n {`${startTime.format(\"LT\")} - ${endTime.format(\"LT\")}, `}\n {I18n.t(\"js.widgets.appointment.today\")}\n \n );\n }\n } else {\n if (currentTime.isSame(startTime, \"day\")) {\n if (allDay) {\n // Case-7 Case-12\n return (\n <>\n {I18n.t(\"js.widgets.appointment.today\")}\n {` -`}\n
    \n {`${endTime.format(\"dd\")}., ${endTime.format(\"L\")}`}\n \n );\n } else {\n // Case-10 Case-16\n return (\n <>\n {`${startTime.format(\"LT\")}, `}\n {I18n.t(\"js.widgets.appointment.today\")}\n {` -`}\n
    \n {`${endTime.format(\"dd\")}., ${endTime.format(\n \"L\",\n )}, ${endTime.format(\"LT\")}`}\n \n );\n }\n } else {\n if (currentTime.isSame(endTime, \"day\")) {\n if (allDay) {\n // Case-8 Case-14\n return {I18n.t(\"js.widgets.appointment.today\")};\n } else {\n // Case-11 Case-18\n return (\n <>\n {I18n.t(\"js.widget.appointment.until\")}\n {` ${endTime.format(\"LT\")}, `}\n {I18n.t(\"js.widgets.appointment.today\")}\n \n );\n }\n } else {\n if (allDay) {\n // Case-13\n return (\n <>\n {I18n.t(\"js.widgets.appointment.today\")}\n {\" -\"}\n
    \n {`${endTime.format(\"dd\")}., ${endTime.format(\"L\")}`}\n \n );\n } else {\n // Case-17\n return (\n <>\n {I18n.t(\"js.widgets.appointment.today\")}\n {\" -\"}\n
    \n {`${endTime.format(\"dd\")}., ${endTime.format(\n \"L\",\n )}, ${endTime.format(\"LT\")}`}\n \n );\n }\n }\n }\n }\n } else {\n // future\n if (startTime.isSame(endTime, \"day\")) {\n if (allDay) {\n // Case-4\n return startTime.format(\"dd., L\");\n } else {\n // Case-6\n return startTime.format(\"dd., L, LT - \") + endTime.format(\"LT\");\n }\n } else {\n if (allDay) {\n // Case-9 Case-15\n return startTime.format(\"dd., L - \") + endTime.format(\"dd., L\");\n } else {\n // Case-19\n return (\n startTime.format(\"dd., L, LT - \") + endTime.format(\"dd., L, LT - \")\n );\n }\n }\n }\n } else {\n if (currentTime.isSame(startTime, \"day\")) {\n if (allDay) {\n // Case-1\n return {I18n.t(\"js.widgets.appointment.today\")};\n } else {\n // Case-2\n return (\n <>\n {`${startTime.format(\"LT\")}, `}\n {I18n.t(\"js.widgets.appointment.today\")}\n \n );\n }\n } else {\n if (allDay) {\n // Case-4\n return startTime.format(\"dd., L\");\n } else {\n // Case-5\n return startTime.format(\"dd., L, LT\");\n }\n }\n }\n}\n\ntype AppointmentRowProps = {\n appointment: Appointment;\n};\n\nconst AppointmentRow: React.FC = ({ appointment }) => {\n const currentTime = moment.tz(moment(), moment.tz.guess());\n const startTime = moment.tz(appointment.start, moment.tz.guess());\n\n return (\n
  • \n \n {appointment.meeting?.join_url && (\n \n )}\n \n {appointment.name}\n \n \n \n \n {displayTime(appointment)}\n \n {appointment.location && (\n \n \n {appointment.location}\n \n )}\n
  • \n );\n};\n\nexport default AppointmentRow;\n","import React from \"react\";\nimport AppointmentRow, { Appointment } from \"../shared/AppointmentRow\";\n\nexport type AppointmentsWidgetProps = {\n appointments: Appointment[];\n headline?: string;\n};\n\nconst AppointmentsWidget: React.FC = ({\n appointments,\n headline,\n}) => {\n return (\n
    \n {headline &&

    {headline}

    }\n
      \n {appointments.length > 0 ? (\n appointments.map((appointment) => (\n \n ))\n ) : (\n

      {I18n.t(\"widgets.appointment.no_upcoming_appointments\")}

      \n )}\n
    \n
    \n );\n};\n\nexport default AppointmentsWidget;\n","import React from \"react\";\nimport MemberRow, { Member } from \"../shared/MemberRow\";\nimport { faGift } from \"@fortawesome/pro-regular-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\n\nexport type BirthdayWidgetProps = {\n headline?: string;\n your_birthday?: boolean;\n show_age?: boolean;\n memberships: Member[];\n};\n\nconst BirthdayWidget: React.FC = ({\n headline,\n your_birthday,\n show_age,\n memberships,\n}) => {\n return (\n
    \n {headline &&

    {headline}

    }\n {your_birthday && (\n \n \n {I18n.t(\"js.widgets.birthday.gratulations\")}\n \n )}\n
      \n {memberships.map((member) => (\n \n ))}\n
    \n
    \n );\n};\n\nexport default BirthdayWidget;\n","import React from \"react\";\n\nexport type GroupInfoWidgetProps = {\n headline?: string;\n content: string;\n};\n\nconst GroupInfoWidget: React.FC = ({\n headline,\n content,\n}) => {\n return (\n
    \n {headline &&

    {headline}

    }\n \n
    \n );\n};\n\nexport default GroupInfoWidget;\n","import React from \"react\";\nimport MemberRow from \"../shared/MemberRow\";\n\ntype Member = {\n id: string;\n name: string;\n path: string;\n images: { \"40x40@2\": string };\n is_external: boolean;\n profile: { [key: string]: { displayValue: string } | string };\n birthday?: string;\n birthday_is_today?: boolean;\n age?: number;\n};\n\nexport type NewestMembersWidgetProps = {\n headline?: string;\n memberships: Member[];\n};\n\nconst NewestMembersWidget: React.FC = ({\n headline,\n memberships,\n}) => {\n return (\n
    \n {headline &&

    {headline}

    }\n
      \n {memberships.map((member) => (\n \n ))}\n
    \n
    \n );\n};\n\nexport default NewestMembersWidget;\n","import React from \"react\";\nimport MemberRow, { Member } from \"../shared/MemberRow\";\n\nexport type OnlineMembersWidgetProps = {\n headline?: string;\n memberships: Member[];\n};\n\nconst OnlineMembersWidget: React.FC = ({\n headline,\n memberships,\n}) => {\n return (\n
    \n {headline &&

    {headline}

    }\n
      \n {memberships.length === 0 ? (\n
    • {I18n.t(\"js.widgets.online_members.no_other_members_online\")}
    • \n ) : (\n memberships.map((member) => (\n \n ))\n )}\n
    \n
    \n );\n};\n\nexport default OnlineMembersWidget;\n","import React from \"react\";\n\ntype RssWidgetItem = {\n url: string;\n title: string;\n};\n\nexport type RssWidgetProps = {\n headline?: string;\n error?: string;\n items: RssWidgetItem[];\n};\n\nconst RssWidget: React.FC = ({ headline, error, items }) => {\n return (\n
    \n {headline &&

    {headline}

    }\n {error && (\n
    {I18n.t(\"js.widgets.rss.error_text\")}
    \n )}\n
      \n {items.map((item, index) => (\n
    • \n \n {item.title}\n \n
    • \n ))}\n
    \n
    \n );\n};\n\nexport default RssWidget;\n","import React, { useState, useEffect } from \"react\";\n\nimport MemberRow, { Member } from \"../shared/MemberRow\";\n\nexport type SpeedDialWidgetProps = {\n headline?: string;\n memberships: Member[];\n show_age?: boolean;\n};\n\nconst SpeedDialWidget: React.FC = ({\n headline,\n memberships,\n show_age,\n}) => {\n const [members, setMembers] = useState([]);\n\n useEffect(() => {\n setMembers(memberships);\n }, [memberships]);\n\n return (\n
    \n {headline &&

    {headline}

    }\n
      \n {members.length === 0 ? (\n
    • {I18n.t(\"js.widgets.speed_dial.empty_list_text\")}
    • \n ) : (\n members.map((member) => (\n \n ))\n )}\n
    \n
    \n );\n};\n\nexport default SpeedDialWidget;\n","import React from \"react\";\n\nexport type TextWidgetProps = {\n headline?: string;\n content: string;\n};\n\nconst TextWidget: React.FC = ({ headline, content }) => (\n
    \n {headline &&

    {headline}

    }\n \n
    \n);\n\nexport default TextWidget;\n","import React from \"react\";\nimport {\n useActivitystreamWidgetbar,\n WidgetResponse,\n} from \"components/widgetbars/api\";\nimport AdminMembersWidget from \"./widgets/AdminMembersWidget\";\nimport AppointmentsWidget from \"./widgets/AppointmentsWidget\";\nimport BirthdayWidget from \"./widgets/BirthdayWidget\";\nimport GroupInfoWidget from \"./widgets/GroupInfoWidget\";\nimport NewestMembersWidget from \"./widgets/NewestMembersWidget\";\nimport OnlineMembersWidget from \"./widgets/OnlineMembersWidget\";\nimport RssWidget from \"./widgets/RssWidget\";\nimport SpeedDialWidget from \"./widgets/SpeedDialWidget\";\nimport TextWidget from \"./widgets/TextWidget\";\n\ntype Props = {\n group_id?: string;\n slug: string;\n};\n\nfunction renderWidgetComponent(widget: WidgetResponse) {\n switch (widget.type) {\n case \"appointments\":\n return ;\n case \"online_members\":\n return ;\n case \"admin_members\":\n return ;\n case \"rss\":\n return ;\n case \"speed_dial\":\n return ;\n case \"group_info\":\n return ;\n case \"newest_members\":\n return ;\n case \"text\":\n return ;\n case \"birthday\":\n return ;\n }\n}\n\nconst ActivitystreamWidgetbar = ({ group_id, slug }: Props) => {\n const { data, isLoading, isError } = useActivitystreamWidgetbar({\n group_id,\n slug,\n });\n\n if (isLoading) {\n const loadingText = I18n.t(\"js.widgets.widgetbar.loading_widgets\");\n return (\n
    \n \n {loadingText}\n
    \n
    \n );\n }\n\n if (isError) {\n const errorText = I18n.t(\"js.widgets.widgetbar.loading_error\");\n return
    {errorText}
    ;\n }\n\n return (\n
    \n {data?.widgets.map(renderWidgetComponent)}\n
    \n );\n};\n\nexport default ActivitystreamWidgetbar;\n","import { useQuery, UseQueryResult } from \"react-query\";\nimport { stringify } from \"query-string\";\n\ntype WidgetbarMembership = {\n id: string;\n name: string;\n path: string;\n images: { \"40x40@2\": string };\n is_external: boolean;\n profile: any;\n birthday?: string;\n birthday_is_today?: boolean;\n age?: number;\n};\n\ntype WidgetbarAppointment = {\n id: string;\n name: string;\n start: string;\n end?: string;\n all_day?: boolean;\n path: string;\n meeting?: {\n join_url?: string;\n };\n location?: string;\n};\n\nexport type AppointmentsWidgetResponse = {\n id: string;\n type: \"appointments\";\n headline: string;\n appointments: WidgetbarAppointment[];\n};\n\nexport type OnlineMembersWidgetResponse = {\n id: string;\n type: \"online_members\";\n headline: string;\n online_count: number;\n memberships: WidgetbarMembership[];\n};\n\nexport type AdminMembersWidgetResponse = {\n id: string;\n type: \"admin_members\";\n headline: string;\n memberships: WidgetbarMembership[];\n};\n\nexport type RssWidgetResponse = {\n id: string;\n type: \"rss\";\n headline: string;\n items: { title: string; url: string }[];\n error?: string;\n};\n\nexport type SpeedDialWidgetResponse = {\n id: string;\n type: \"speed_dial\";\n headline: string;\n memberships: WidgetbarMembership[];\n};\n\nexport type GroupInfoWidgetResponse = {\n id: string;\n type: \"group_info\";\n headline?: string;\n content: string;\n};\n\nexport type NewestMembersWidgetResponse = {\n id: string;\n type: \"newest_members\";\n headline: string;\n memberships: WidgetbarMembership[];\n};\n\nexport type TextWidgetResponse = {\n id: string;\n type: \"text\";\n headline?: string;\n content: string;\n content_plain: string;\n};\n\nexport type BirthdayWidgetResponse = {\n id: string;\n type: \"birthday\";\n headline: string;\n show_age: boolean;\n your_birthday: boolean;\n memberships: WidgetbarMembership[];\n};\n\nexport type WidgetResponse =\n | AppointmentsWidgetResponse\n | OnlineMembersWidgetResponse\n | AdminMembersWidgetResponse\n | RssWidgetResponse\n | SpeedDialWidgetResponse\n | GroupInfoWidgetResponse\n | NewestMembersWidgetResponse\n | TextWidgetResponse\n | BirthdayWidgetResponse;\n\ntype WidgetbarResponse = {\n slug: string;\n widgets: WidgetResponse[];\n empty?: boolean;\n};\n\nexport function useActivitystreamWidgetbar({\n group_id,\n slug,\n}: {\n group_id?: string | null;\n slug: string;\n}): UseQueryResult {\n const path = group_id\n ? `/widgetbars/g-:group_id-as-:slug?${stringify({ group_id, slug })}`\n : `/widgetbars/as-:slug?${stringify({ slug })}`;\n\n return useQuery(path);\n}\n","import \"@hotwired/turbo\";\nimport \"core-js/stable\";\nimport \"regenerator-runtime/runtime\";\nimport \"whatwg-fetch\";\nimport moment from \"moment-timezone\";\nimport \"moment/locale/es\";\nimport \"moment/locale/fr\";\nimport \"moment/locale/de\";\nimport jQuery from \"jquery\";\nimport lodash from \"lodash\";\nimport hljs from \"highlight.js\";\nimport ClipboardJS from \"clipboard/src/clipboard\";\n\n// Stimulus\nimport \"../controllers\";\n\n// Basic layout styles and components\nimport \"../layout/index\";\n\nimport store from \"store\";\nimport wrapProvider from \"../helpers/components/wrapProvider\";\n\nimport ActivityComposer from \"components/activitystreams/composer\";\nimport ReplyComposer from \"components/activitystreams/replyComposer\";\nimport adaptedFileComponents from \"components/files/adaptedFileComponents\";\nimport adaptedSharedComponents from \"components/shared/adaptedSharedComponents\";\nimport adaptedAppCreatorComponents from \"components/appCreatorTemporary/adaptedAppCreatorComponents\";\nimport adaptedAdministrationComponents from \"components/administration/adaptedAdministrationComponents\";\nimport CalendarSheet from \"components/appointments/CalendarSheet\";\nimport ExternalIdComponent from \"../components/rundschreiben/ExternalIdComponent\";\nimport { launchApp } from \"../components/App\";\nimport loadAndConfigureCKEditor from \"../helpers/ckeditor/loadAndConfigureCKEditor\";\nimport { setApplication } from \"../helpers/setApplication\";\nimport Datepicker from \"../helpers/Datepicker\";\nimport showCookieModal from \"../helpers/showCookieModal\";\nimport documentReady from \"../helpers/documentReady\";\nimport customLodashCompat from \"../helpers/legacy/customLodashCompat\";\nimport adaptBackboneView from \"../helpers/legacy/adaptBackboneView\";\nimport Bridge from \"turbo/bridge.tsx\";\nimport initializeCustomConfirm from \"turbo/confirm_compat.js\";\nimport { fetchApi } from \"../helpers/reactQueryApi\";\nimport ActivitystreamWidgetbar from \"../components/widgetbars/ActivitystreamWidgetbar\";\nimport ChannelListView from \"../components/directory/channels/ChannelListView\";\nimport StreamTargeting from \"../components/activitystreams/composer/StreamTargeting\";\n\nadaptBackboneView.addComponents({\n \"activitystreams/Composer\": ActivityComposer,\n \"activitystreams/ReplyComposer\": wrapProvider(store)(ReplyComposer),\n \"activitystreams/StreamTargeting\": StreamTargeting,\n \"calendars/MonthSheetView\": CalendarSheet,\n \"rundschreiben/ExternalIdComponent\": ExternalIdComponent,\n \"widgetbars/ActivitystreamWidgetbar\": ActivitystreamWidgetbar,\n \"directory/ChannelListView\": ChannelListView,\n ...adaptedFileComponents,\n ...adaptedSharedComponents,\n ...adaptedAppCreatorComponents,\n ...adaptedAdministrationComponents,\n});\n\n// Backwards compat\nwindow.jQuery = window.$ = jQuery;\nwindow._ = lodash;\nwindow._compat = customLodashCompat;\nwindow.hljs = hljs;\nwindow.adaptBackboneView = adaptBackboneView;\nwindow.loadAndConfigureCKEditor = loadAndConfigureCKEditor;\nwindow.moment = moment;\nwindow.ClipboardJS = ClipboardJS;\nwindow.Datepicker = Datepicker;\n\n// check if is access by app and do some configuration if so\nconst regex = new RegExp(/tixxt App/gm);\nwindow.isApp = regex.test(window.navigator.userAgent);\n\nwindow.bridge = {\n prompt: (message, defaultValue, callback) => {\n const userInput = prompt(message, defaultValue);\n\n if (callback) {\n callback(userInput);\n }\n },\n confirm: (message, callback) => {\n const confirmed = confirm(message);\n\n if (confirmed) {\n callback();\n }\n },\n};\n\ndocumentReady(() => initializeCustomConfirm());\n\n// Global helper stuff\nif (window.isApp) {\n window.bridge = Bridge;\n\n document.addEventListener(\"turbo:load\", Bridge.configureLayout);\n}\n\nwindow.Application = setApplication();\nwindow.showCookieModal = showCookieModal;\nwindow.fetchApi = fetchApi;\n\nlaunchApp();\n","import React from \"react\";\nimport { Activitystream } from \"../../../api/activitystreams\";\nimport ReactSelect from \"react-select\";\nimport { groupBy, map, orderBy, toLower } from \"lodash\";\nimport Label from \"components/shared/form/Label\";\n\ntype StreamTargeting = {\n streams: Activitystream[];\n selectedStreams: Activitystream[];\n onSelectStreams: (slug: string[]) => void;\n};\n\nexport default function StreamTargeting({\n streams,\n selectedStreams,\n onSelectStreams,\n}: StreamTargeting) {\n const groupedStreams = map(\n groupBy(\n streams,\n (stream) =>\n stream.category_name ||\n I18n.t(\n \"js.activitystreams.composer.stream_targeting.selection.network_streams\",\n ),\n ),\n (options, key) => {\n const serializedOptions = map(options, (opt) => ({\n label: opt.name,\n value: opt.slug,\n }));\n return {\n label: key,\n options: orderBy(\n serializedOptions,\n (stream) => toLower(stream.label),\n \"asc\",\n ),\n };\n },\n );\n\n return (\n
    \n
    \n );\n}\n","export default function initializeCustomConfirm() {\n $.rails.allowAction = function (element) {\n let message = element.data(\"confirm\");\n\n if (!message) {\n return true;\n }\n\n if (element.data(\"confirmed\")) {\n element.data(\"confirmed\", false);\n\n return $.rails.fire(element, \"confirm:complete\", [true]);\n }\n\n if ($.rails.fire(element, \"confirm\")) {\n try {\n window.bridge.confirm(message, function () {\n element.data(\"confirmed\", true);\n const callback = $.rails.fire(element, \"confirm:complete\", [true]);\n if (callback) {\n $.rails.fire(element, \"click\");\n }\n });\n } catch (e) {\n (console.error || console.log).call(console, e.stack || e);\n }\n }\n\n return false;\n };\n}\n","import documentReady from \"./documentReady\";\nimport Modal from \"bootstrap/js/dist/modal\";\n\n/* This is used to show the modal from app/views/shared/_cookie_modal.html.haml */\nexport default function showCookieModal() {\n let cookieModal;\n\n documentReady(function () {\n const cookieModalElement = document.getElementById(\n \"cookieModal\",\n ) as HTMLElement;\n cookieModal = new Modal(cookieModalElement, {\n keyboard: false,\n backdrop: \"static\",\n });\n\n cookieModalElement.addEventListener(\"click\", modalCloser);\n cookieModal.show();\n });\n\n function modalCloser() {\n document.cookie = \"modal=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;\";\n cookieModal.hide();\n }\n}\n","const myDefaultState = {\n muted_until: null,\n app_muted_until: null,\n last_read_id: null,\n unread_count: 0,\n};\n\n// Lookup for best performance\nconst POSSIBLE_PARTNER_ACTION_TYPES = {\n \"chat/MARK_AS_READ/RECEIVE\": true,\n \"chat/MARK_AS_RECEIVED/RECEIVE\": true,\n};\n// True if action origins from partner, determined by membership_id and channel topic it was received on\nconst isPartnerAction = ({ type, payload, meta }) =>\n POSSIBLE_PARTNER_ACTION_TYPES[type] &&\n meta.topic !== `member:${payload.membership_id}`;\n\nexport const myStateReducer = (state = myDefaultState, action) => {\n if (isPartnerAction(action)) {\n return state;\n }\n\n switch (action.type) {\n case \"chat/MARK_AS_READ/RECEIVE\":\n case \"chat/MARK_AS_READ\":\n return {\n ...state,\n unread_count: 0,\n last_read_id: action.payload.last_read_id,\n };\n case \"chat/MUTE_CHAT\":\n case \"chat/MUTE_CHAT/RECEIVE\":\n return {\n ...state,\n muted_until: action.payload.muted_until,\n };\n case \"chat/APP_MUTE_CHAT\":\n case \"chat/APP_MUTE_CHAT/RECEIVE\":\n return {\n ...state,\n app_muted_until: action.payload.muted_until,\n };\n case \"chat/UNMUTE_CHAT\":\n case \"chat/UNMUTE_CHAT/RECEIVE\":\n return {\n ...state,\n muted_until: null,\n };\n case \"chat/APP_UNMUTE_CHAT\":\n case \"chat/APP_UNMUTE_CHAT/RECEIVE\":\n return {\n ...state,\n app_muted_until: null,\n };\n case \"chat/MESSAGE/RECEIVE\":\n return {\n ...state,\n unread_count: state.unread_count + 1,\n };\n default:\n return state;\n }\n};\n\nconst partnerDefaultState = {\n last_received_id: null,\n last_read_id: null,\n};\n\nexport const partnerStateReducer = (state = partnerDefaultState, action) => {\n if (!isPartnerAction(action)) {\n return state;\n }\n\n switch (action.type) {\n case \"chat/MARK_AS_RECEIVED/RECEIVE\":\n return {\n ...state,\n last_received_id: action.payload.last_received_id,\n };\n\n case \"chat/MARK_AS_READ/RECEIVE\":\n return {\n ...state,\n last_read_id: action.payload.last_read_id,\n };\n default:\n return state;\n }\n};\n","import { isEmpty } from \"lodash\";\nimport keyByFp from \"lodash/fp/keyBy\";\nimport flow from \"lodash/fp/flow\";\nimport getFp from \"lodash/fp/get\";\nimport { get, includes } from \"lodash\";\nimport { myStateReducer, partnerStateReducer } from \"./chatStateReducers\";\nimport { loadChatDetails } from \"../../actions/chat\";\n\n// Pull chats value from payload and key it by id\nconst extractChats = flow(getFp(\"chats\"), keyByFp(\"id\"));\n\nexport const requestStateReducer = (state = {}, action) => {\n switch (action.type) {\n case loadChatDetails.type:\n case \"chat/MORE_MESSAGES\": {\n return {\n ...state,\n loadingMessages: true,\n };\n }\n case loadChatDetails.replyType:\n case \"chat/MORE_MESSAGES/REPLY\": {\n return {\n ...state,\n loadingMessages: false,\n moreMessagesAvailable: !isEmpty(action.payload.messages),\n };\n }\n default:\n return state;\n }\n};\n\nconst defaultStateFromAction = (action) => ({\n id: get(action.payload, [\"chat_id\"]),\n name: get(action.payload, [\"from\", \"name\"]),\n image_id: get(action.payload, [\"from\", \"image_id\"]),\n state: myStateReducer(undefined, { type: \"INIT\" }),\n partner_state: partnerStateReducer(undefined, { type: \"INIT\" }),\n last_interacted_at: null,\n});\n\nexport const chatReducer = (maybeUndefinedState, action) => {\n const state = maybeUndefinedState || defaultStateFromAction(action);\n\n switch (action.type) {\n case \"chat/MESSAGE/RECEIVE\": {\n return {\n ...state,\n last_interacted_at: action.payload.created_at,\n state: myStateReducer(state.state, action),\n last_message: action.payload,\n };\n }\n case \"chat/MESSAGE/REPLY\": {\n return {\n ...state,\n last_interacted_at: action.payload.created_at,\n last_message: action.payload,\n };\n }\n case \"chat/MARK_AS_RECEIVED/RECEIVE\":\n case \"chat/MARK_AS_READ/RECEIVE\":\n case \"chat/MARK_AS_READ\": {\n return {\n ...state,\n state: myStateReducer(state.state, action),\n partner_state: partnerStateReducer(state.partner_state, action),\n };\n }\n case \"chat/MUTE_CHAT\":\n case \"chat/APP_MUTE_CHAT\":\n case \"chat/MUTE_CHAT/RECEIVE\":\n case \"chat/APP_MUTE_CHAT/RECEIVE\":\n case \"chat/UNMUTE_CHAT\":\n case \"chat/APP_UNMUTE_CHAT\":\n case \"chat/UNMUTE_CHAT/RECEIVE\":\n case \"chat/APP_UNMUTE_CHAT/RECEIVE\": {\n return {\n ...state,\n state: myStateReducer(state.state, action),\n };\n }\n case loadChatDetails.type:\n case \"chat/MORE_MESSAGES\":\n case \"chat/MORE_MESSAGES/REPLY\":\n return {\n ...state,\n requestState: requestStateReducer(state.requestState, action),\n };\n case loadChatDetails.replyType:\n return {\n ...state,\n can: action.payload.can,\n requestState: requestStateReducer(state.requestState, action),\n };\n default:\n return state;\n }\n};\n\nconst getChatIdFromPayload = getFp([\"payload\", \"chat_id\"]);\nconst getChatIdFromMeta = getFp([\"meta\", \"chatId\"]);\nconst getChatId = (action) =>\n getChatIdFromPayload(action) || getChatIdFromMeta(action);\n\n// Workaround for composing starts a new chat for the counterpart\nconst BLACKLIST = [\"chat/COMPOSING/RECEIVE\", \"chat/COMPOSING/STOPPED\"];\n\nexport default (state = {}, action) => {\n switch (action.type) {\n // Full list of chats received, store them keyed by id\n case \"chat/MY_CHATS/REPLY\":\n return extractChats(action.payload);\n case \"chat/CREATE_CHAT/REPLY\":\n case \"chat/CREATE_CHAT/RECEIVE\":\n return { ...state, [action.payload.id]: action.payload };\n default: {\n const chatId = getChatId(action);\n if (!chatId || includes(BLACKLIST, action.type)) {\n return state;\n }\n return {\n ...state,\n [chatId]: chatReducer(state[chatId], action),\n };\n }\n }\n};\n","import { get, findLastIndex } from \"lodash\";\nimport { loadChatDetails } from \"../../actions/chat\";\n\n// merge received messages into existing list of messages while maintaining a correct order\n// both lists must already be ordered by id ascending themselves\n//\n// see tests for examples\nexport const mergeMessages = (messages, received) => {\n // shortcuts\n if (messages.length == 0) {\n return received;\n }\n if (received.length == 0) {\n return messages;\n }\n\n // a,b are the heads, r1,r2 are the remainders, out is for result\n let [a, ...r1] = messages;\n let [b, ...r2] = received;\n const out = [];\n\n while (a && b) {\n // keep a (existing) over b (received) if both are equal and shift both\n if (a.id === b.id) {\n out.push(a);\n a = r1.shift();\n b = r2.shift();\n // insert a next if its id is smaller than b and shift a\n } else if (a.id < b.id) {\n out.push(a);\n a = r1.shift();\n // insert b next if its id is smaller than a and shift b\n } else {\n out.push(b);\n b = r2.shift();\n }\n }\n\n if (a) {\n out.push(a);\n }\n if (b) {\n out.push(b);\n }\n\n return out.concat(r1).concat(r2);\n};\n\n// Inserts message into list or updates it if it already exists\n// Always keeps the order\nconst insertOrUpdateMessage = (list, message) => {\n const index = findLastIndex(list, ({ id }) => id <= message.id);\n\n // Prevent duplication\n const keepUntil =\n index >= 0 && list[index].id === message.id ? index : index + 1;\n\n return [...list.slice(0, keepUntil), message, ...list.slice(index + 1)];\n};\n\n// Remove message from list by cid\n// Is slightly optimized to process as little as possible, instead of using filter(list, ...)\nconst removeByClientId = (list, searchClientId) => {\n const index = findLastIndex(list, ({ cid }) => cid === searchClientId);\n if (index === -1) return list;\n\n return [...list.slice(0, index), ...list.slice(index + 1)];\n};\n\nexport const messageList = (list = [], action) => {\n switch (action.type) {\n case \"chat/MESSAGE/PUSH\":\n return [\n ...list,\n {\n id: null,\n from: action.meta.from,\n ...action.payload,\n cid: action.meta.ref,\n },\n ];\n case \"chat/MESSAGE/REPLY\":\n return insertOrUpdateMessage(removeByClientId(list, action.meta.ref), {\n cid: action.meta.ref,\n ...action.payload,\n });\n case \"chat/MESSAGE/RECEIVE\":\n return insertOrUpdateMessage(list, action.payload);\n case loadChatDetails.replyType:\n return mergeMessages(list, action.payload.messages.reverse());\n case \"chat/MORE_MESSAGES/REPLY\":\n return mergeMessages(action.payload.messages.reverse(), list);\n default:\n return list;\n }\n};\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case \"chat/MESSAGE/PUSH\":\n case \"chat/MESSAGE/REPLY\":\n case \"chat/MESSAGE/RECEIVE\":\n case loadChatDetails.replyType:\n case \"chat/MORE_MESSAGES/REPLY\": {\n const chatId =\n get(action, [\"payload\", \"chat_id\"]) || get(action, [\"meta\", \"chatId\"]);\n if (!chatId) {\n return state;\n }\n return {\n ...state,\n [chatId]: messageList(get(state, [chatId]), action),\n };\n }\n default:\n return state;\n }\n};\n","import { includes, without } from \"lodash\";\n\n// Maintains unique, ordered list of membership ids which are currently composing (oldest first)\nconst composingInChat = (state = [], action) => {\n switch (action.type) {\n case \"chat/COMPOSING/RECEIVE\":\n return includes(state, action.payload.from.id)\n ? state\n : [...state, action.payload.from.id];\n case \"chat/COMPOSING/STOPPED\":\n case \"chat/MESSAGE/RECEIVE\":\n return without(state, action.payload.from.id);\n default:\n return state;\n }\n};\n\nconst composing = (state = {}, action) => {\n switch (action.type) {\n case \"chat/COMPOSING/RECEIVE\":\n case \"chat/COMPOSING/STOPPED\":\n case \"chat/MESSAGE/RECEIVE\":\n return {\n ...state,\n [action.payload.chat_id]: composingInChat(\n state[action.payload.chat_id],\n action,\n ),\n };\n default:\n return state;\n }\n};\n\nexport default composing;\n","import { reduce, map } from \"lodash\";\nimport { loadChatDetails } from \"../../actions/chat\";\n\n// Stores homie to state if it is not yet known (this is a performance optimization)\nconst storeHomie = (state, homie) =>\n state[homie.id]\n ? state\n : {\n ...state,\n [homie.id]: homie,\n };\n\n// Keeps track of homies, i.e. for displaying of composing status\nconst homies = (state = {}, action) => {\n switch (action.type) {\n case \"chat/MESSAGE/RECEIVE\":\n case \"chat/COMPOSING/RECEIVE\":\n return storeHomie(state, action.payload.from);\n case loadChatDetails.replyType:\n case \"chat/MORE_MESSAGES/REPLY\":\n return reduce(map(action.payload.messages, \"from\"), storeHomie, state);\n default:\n return state;\n }\n};\n\nexport default homies;\n","import { combineReducers } from \"redux\";\nimport identity from \"lodash/fp/identity\";\nimport get from \"lodash/fp/get\";\nimport chats from \"./chats\";\nimport messages from \"./messages\";\nimport session from \"./session\";\nimport composer from \"./composer\";\nimport composing from \"./composing\";\nimport homies from \"./homies\";\n\nexport const transformPayload = (\n type,\n payloadTransformer,\n defaultState = null,\n) => {\n return (state = defaultState, action) => {\n if (action.type !== type) {\n return state;\n }\n return payloadTransformer(action.payload);\n };\n};\n\nconst chatReducer = combineReducers({\n chats,\n session,\n messages,\n composer,\n profile: transformPayload(\"chat/MY_PROFILE/REPLY\", get(\"profile\")),\n navigation: transformPayload(\"chat/NAVIGATE\", identity, { route: \"root\" }),\n presence: combineReducers({\n onlineMembers: transformPayload(\"chat/PRESENCE/SYNC\", get(\"onlineMembers\")),\n busyMembers: transformPayload(\"chat/PRESENCE/SYNC\", get(\"busyMembers\")),\n }),\n composing,\n homies,\n});\n\nexport default chatReducer;\n","export default (state = {}, action) => {\n switch (action.type) {\n case \"chat/INIT\":\n return {\n networkUrl: action.payload.networkUrl,\n };\n case \"chat/SOCKET/ON_OPEN\":\n return {\n ...state,\n connected: true,\n };\n case \"chat/SOCKET/ON_CLOSE\":\n case \"chat/SOCKET/ON_ERROR\":\n return {\n ...state,\n connected: false,\n };\n case \"chat/FETCH_CREDENTIALS/FAILURE\":\n return {\n ...state,\n authorizationError: \"fetch_credentials_failed\",\n };\n default:\n return state;\n }\n};\n","export default (state = {}, action) => {\n switch (action.type) {\n case \"chat/COMPOSER/SET_MESSAGE_TO_QUOTE\":\n return {\n ...state,\n [action.chatId]: {\n ...state[action.chatId],\n messageToQuoteId: action.messageId,\n },\n };\n case \"chat/COMPOSER/SET_TEXT\":\n return {\n ...state,\n [action.chatId]: {\n ...state[action.chatId],\n text: action.text,\n },\n };\n case \"chat/SEND_MESSAGE\": {\n return {\n ...state,\n [action.meta.chatId]: {\n text: \"\",\n messageToQuoteId: \"\",\n },\n };\n }\n default:\n return state;\n }\n};\n","import { put, cancelled, take } from \"redux-saga/effects\";\nimport { eventChannel } from \"redux-saga\";\n\n/*\n * Helper to run yield effect and success / failure effects accordingly\n */\nexport function* tryYield(effect, getSuccessEffect, getFailureEffect) {\n let result = null;\n\n try {\n result = yield effect;\n } catch (error) {\n return yield getFailureEffect(error);\n }\n\n return yield getSuccessEffect(result);\n}\n\n/*\n * Creates a saga that converts emitted events into dispatched actions\n */\nexport const createEventSaga = ({ events, bind, remove }) => {\n return function* eventSaga(subject) {\n const channel = eventChannel((emit) => {\n // create handlers\n const handlers = events(emit, subject);\n\n // bind handlers to the subject\n bind(subject, handlers);\n\n // will be called when eventChannel is closed\n return () => (remove ? remove(subject, handlers) : null);\n });\n try {\n while (true) {\n const action = yield take(channel);\n yield put(action);\n }\n } finally {\n if (yield cancelled()) {\n channel.close();\n }\n }\n };\n};\n","import { createEventSaga } from \"./helpers\";\nimport { Presence } from \"phoenix\";\nimport { map, maxBy } from \"lodash\";\n\n// Listen to presence synchronisations and dispatch them to redux\nconst presenceSaga = createEventSaga({\n events: (dispatch) => ({\n sync: (presence) => {\n const onlineMembers = {};\n const busyMembers = {};\n presence.list((id, { metas }) => {\n onlineMembers[id] = map(metas, (m) => parseInt(m.online_at, 10));\n busyMembers[id] = maxBy(map(metas, \"status\"), \"updated_at\");\n });\n dispatch({\n type: \"chat/PRESENCE/SYNC\",\n payload: { onlineMembers, busyMembers },\n });\n },\n }),\n bind: (channel, handlers) => {\n const presence = new Presence(channel);\n presence.onSync(handlers.sync.bind(null, presence));\n },\n});\n\nexport default presenceSaga;\n","import delay from \"@redux-saga/delay-p\";\nimport {\n call,\n take,\n all,\n takeLatest,\n put,\n select,\n race,\n fork,\n actionChannel,\n cancel,\n} from \"redux-saga/effects\";\nimport { get, at } from \"lodash\";\n\nimport {\n loadChatDetails,\n markAsRead,\n loadMoreMessages,\n} from \"../../actions/chat\";\nimport {\n getLastReadIdForChat,\n getMoreMessagesAvailableForChat,\n} from \"../../selectors/chat/chat\";\nimport {\n getLastUnreadMessageInChat,\n getLastMessageIdInChat,\n getFirstMessageIdInChat,\n} from \"../../selectors/chat/messages\";\n\nexport const UNREAD_TIMER = 1000;\n\n// Time after which a previously received composing event is timed out\n// This is also used to determine throttle duration for pushing composing events (80% of this value)\nexport const COMPOSING_TIMEOUT = 2000;\n\nconst isShowChatNavigationAction = (action) =>\n action.type === \"chat/NAVIGATE\" && action.payload.route === \"showChat\";\n\nconst createWindowFocusPromise = () =>\n new Promise((resolve) => {\n const handler = () => {\n window.removeEventListener(\"focus\", handler);\n resolve();\n };\n\n window.addEventListener(\"focus\", handler);\n });\n\nexport function* fetchChatDetails({ chatId }) {\n yield put(loadChatDetails({ meta: { chatId } }));\n}\n\nexport function* fetchMoreRecentMessages({ chatId }) {\n const moreMessagesAvailable = yield select(getMoreMessagesAvailableForChat, {\n chatId,\n });\n\n if (moreMessagesAvailable) {\n const firstMessageId = yield select(getFirstMessageIdInChat, { chatId });\n\n if (firstMessageId) {\n yield put(\n loadMoreMessages({\n meta: { chatId },\n payload: { message_id: firstMessageId },\n }),\n );\n }\n }\n}\n\nfunction* markChatAsRead({ chatId, messageId }) {\n // Cancel mark as read if another navigation occurs quickly\n const result = yield race({\n ok: delay(UNREAD_TIMER),\n navigate: take(\"chat/NAVIGATE\"),\n mark_as_read: take(\"chat/CHAT/MARK_AS_READ\"),\n mark_as_read_start: take(\"chat/CHAT/MARK_AS_READ/START_TIMER\"),\n });\n\n if (result.ok) {\n yield put(\n markAsRead({\n meta: { chatId },\n payload: { last_read_id: messageId },\n }),\n );\n }\n}\n\nfunction* markChatAsReadHandler({ chatId }) {\n const lastReadId = yield select(getLastReadIdForChat, { chatId });\n const lastMessageId = yield select(getLastMessageIdInChat, { chatId });\n\n if (lastMessageId && lastReadId !== lastMessageId) {\n if (!document.hasFocus()) {\n yield call(createWindowFocusPromise);\n }\n\n const unreadMessage = yield select(getLastUnreadMessageInChat, { chatId });\n yield put({\n type: \"chat/CHAT/MARK_AS_READ/START_TIMER\",\n chatId,\n messageId: unreadMessage ? unreadMessage.id : lastMessageId,\n });\n }\n}\n\nfunction* navigateToChatWeCreated(action) {\n yield put({\n type: \"chat/NAVIGATE\",\n payload: { route: \"showChat\", params: { chatId: action.payload.id } },\n });\n}\n\nfunction* chatSaga(navigateAction) {\n const chatId = get(navigateAction, [\"payload\", \"params\", \"chatId\"]);\n\n yield call(fetchChatDetails, { chatId });\n\n yield all([\n takeLatest(\"chat/CHAT/MARK_AS_READ/START_TIMER\", markChatAsRead),\n takeLatest(\"chat/CHAT/SCROLL_START_REACHED\", fetchMoreRecentMessages),\n takeLatest(\"chat/CHAT/SCROLL_END_REACHED\", markChatAsReadHandler),\n ]);\n\n yield fork(markChatAsReadHandler, { chatId });\n}\n\nfunction* timeoutComposing(payload) {\n yield delay(COMPOSING_TIMEOUT);\n yield put({ type: \"chat/COMPOSING/STOPPED\", payload });\n}\n\n// Makes sure that composing state per chat and member is timed out\nfunction* timeoutComposingStates() {\n const timeoutTasks = {};\n const composingActions = yield actionChannel(\"chat/COMPOSING/RECEIVE\");\n while (true) {\n const { payload } = yield take(composingActions);\n const ident = at(payload, [\"chat_id\", \"membership_id\"]).join(\"/\");\n if (timeoutTasks[ident] && timeoutTasks[ident].isRunning()) {\n yield cancel(timeoutTasks[ident]);\n }\n timeoutTasks[ident] = yield fork(timeoutComposing, payload);\n }\n}\n\nfunction* applicationSaga() {\n yield all([\n takeLatest(isShowChatNavigationAction, chatSaga),\n takeLatest(\"chat/CREATE_CHAT/REPLY\", navigateToChatWeCreated),\n fork(timeoutComposingStates),\n ]);\n}\n\nexport default applicationSaga;\n","import delay from \"@redux-saga/delay-p\";\nimport {\n all,\n call,\n take,\n fork,\n put,\n actionChannel,\n cancelled,\n throttle,\n takeLatest,\n select,\n} from \"redux-saga/effects\";\nimport { map, get, filter, reduce, isEmpty } from \"lodash\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport { createEventSaga } from \"./helpers\";\nimport { IS_CHAT_QUERY, IS_NETWORK_QUERY } from \"../../actions/chat\";\nimport presenceSaga from \"./presence\";\nimport { COMPOSING_TIMEOUT, fetchChatDetails } from \"./application\";\nimport { getMyProfile } from \"../../selectors/chat/profile\";\nimport { getChatNavigation } from \"../../selectors/chat/application\";\n\nconst join = (channel) =>\n new Promise((resolve, reject) => {\n channel.join().receive(\"ok\", resolve).receive(\"error\", reject);\n });\n\nconst push = (channel, ...args) => channel.push(...args);\n\nconst pushReply = (channel, ...args) =>\n new Promise((resolve, reject) => {\n push(channel, ...args)\n .receive(\"ok\", resolve)\n .receive(\"error\", reject)\n .receive(\"timeout\", () => reject(\"timeout\"));\n });\n\n// Perform a push on the channel and expect a reply\nfunction* query(channel, event, { payload = null, meta: baseMeta } = {}) {\n const meta = {\n ...baseMeta,\n topic: channel.topic,\n event,\n };\n // Push phase action\n yield put({\n type: `chat/${event.toUpperCase()}/PUSH`,\n payload,\n meta,\n });\n\n try {\n // Actually perform the push on the socket\n const reply = yield call(pushReply, channel, event, payload);\n\n // Reply phase action\n yield put({\n type: `chat/${event.toUpperCase()}/REPLY`,\n payload: reply,\n meta,\n });\n\n // Reply in case caller wants it\n return reply;\n } catch (error) {\n // Reply phase action\n yield put({\n type: `chat/${event.toUpperCase()}/ERROR`,\n meta,\n error,\n });\n }\n}\n\n// Saga which handles incoming messages in a (group) channel\n// Listens for all RECEIVE_EVENTS and dispatches them as to redux\nconst RECEIVE_EVENTS = [\n \"message\",\n \"create_chat\",\n \"mark_as_read\",\n \"mark_as_received\",\n \"mute_chat\",\n \"unmute_chat\",\n \"composing\",\n];\nconst handleIncomingMessages = createEventSaga({\n events: (dispatch, subject) => {\n return reduce(\n RECEIVE_EVENTS,\n (handlers, event) => {\n const type = `chat/${event.toUpperCase()}/RECEIVE`;\n handlers[event] = (payload) =>\n dispatch({ type, payload, meta: { topic: subject.topic, event } });\n return handlers;\n },\n {},\n );\n },\n bind: (channel, handlers) =>\n map(handlers, (fn, name) => channel.on(name, fn)),\n remove: (channel, handlers) =>\n map(handlers, (fn, name) => channel.off(name, fn)),\n});\n\n// This basically does the routing from { type, id } to the correct topic\n// All of type member to the member channel\n// All of type group to the group channel with matching id\nconst createShouldHandleTo = (channel) => {\n const [channelType, channelId] = channel.topic.split(\":\");\n const shouldHandleTo =\n channelType == \"network\"\n ? (action) => action[IS_NETWORK_QUERY]\n : channelType == \"member\"\n ? ({ meta, type }) =>\n type === \"chat/MUTE_CHAT\" ||\n type === \"chat/APP_MUTE_CHAT\" ||\n (meta && meta.chatId && meta.chatId.indexOf(\"member/\") == 0)\n : ({ meta, type }) =>\n type !== \"chat/MUTE_CHAT\" &&\n type !== \"chat/APP_MUTE_CHAT\" &&\n meta &&\n meta.chatId &&\n meta.chatId === `group/${channelId}`;\n return shouldHandleTo;\n};\n\n// Saga which handles outgoing messages in a (group) channel\nfunction* handleOutgoingMessages(channel) {\n const outgoingMessages = yield actionChannel(\"chat/SEND_MESSAGE\");\n try {\n const shouldHandleTo = createShouldHandleTo(channel);\n\n while (true) {\n const action = yield take(outgoingMessages);\n if (shouldHandleTo(action)) {\n const from = yield select(getMyProfile);\n const payload = { ...action.payload, chat_id: action.meta.chatId };\n const meta = { ...action.meta, ref: uuidv4(), from };\n yield call(query, channel, \"message\", { payload, meta });\n }\n }\n } finally {\n if (yield cancelled()) {\n outgoingMessages.close();\n console.log(\"handleOutgoingMessages cancelled\", channel.topic);\n }\n }\n}\n\n// Saga wich handles queries like getting recent messages\nfunction* handleChatQueries(channel) {\n const chatQueries = yield actionChannel((action) => action[IS_CHAT_QUERY]);\n try {\n const shouldHandleTo = createShouldHandleTo(channel);\n while (true) {\n const action = yield take(chatQueries);\n if (shouldHandleTo(action)) {\n const event = action.type.split(\"/\")[1].toLowerCase();\n const payload = { ...action.payload };\n\n if (get(action, [\"meta\", \"chatId\"])) {\n payload.chat_id = get(action, [\"meta\", \"chatId\"]);\n }\n\n yield call(query, channel, event, {\n payload,\n meta: action.meta,\n });\n }\n }\n } finally {\n if (yield cancelled()) {\n chatQueries.close();\n console.log(\"chatQueries cancelled\", channel.topic);\n }\n }\n}\n\n// Sends composing event to channel\nfunction* pushComposingEvent(channel, { type, text, chatId }) {\n // Don't send \"composing\" on i.e. chat/SEND_MESSAGE or when composer was cleared\n if (type !== \"chat/COMPOSER/SET_TEXT\" || isEmpty(text)) {\n return;\n }\n const payload = { chat_id: chatId };\n yield put({ type: \"chat/COMPOSING/PUSH\", payload });\n yield call(push, channel, \"composing\", payload);\n}\n\n// Marks a single message as received, unless\n// - it is from ourselves\n// - or not in a member chat\nfunction* markMessageAsReceived(\n channel,\n membershipId,\n { payload: messagePayload },\n) {\n if (messagePayload.from.id === membershipId) return;\n if (messagePayload.chat_id.indexOf(\"member/\") !== 0) return;\n\n const payload = {\n chat_id: messagePayload.chat_id,\n last_received_id: messagePayload.id,\n };\n yield put({ type: \"chat/MARK_AS_RECEIVED/PUSH\", payload });\n yield call(push, channel, \"mark_as_received\", payload);\n}\n\n// Marks messages as received when loading list of chats\nfunction* markLastChatMessagesAsReceived(channel, membershipId, { payload }) {\n for (let chat of payload.chats) {\n if (\n !isEmpty(chat.last_message) &&\n chat.last_message.id > get(chat, [\"state\", \"last_received_id\"])\n ) {\n yield call(markMessageAsReceived, channel, membershipId, {\n payload: chat.last_message,\n });\n\n // Lets not flood the server too much\n yield delay(200);\n }\n }\n}\n\n// Saga which manages other sagas related to a (group) channel\nfunction* channelSaga(channel) {\n try {\n channel.join();\n\n yield all([\n call(handleIncomingMessages, channel),\n call(handleOutgoingMessages, channel),\n call(handleChatQueries, channel),\n ]);\n } finally {\n if (yield cancelled()) {\n channel.leave();\n console.log(\"channelSaga cancelled\", channel.topic);\n }\n }\n}\n\n// Starts member channel where all private messages must be sent to\nfunction* myChannelSaga(socket, networkChannel) {\n const { profile } = yield call(query, networkChannel, \"my_profile\");\n const memberChannel = socket.channel(`member:${profile.id}`);\n yield fork(channelSaga, memberChannel);\n\n // Send events via member channel, regardless where origin from\n // This removes the need for channel routing and the backend doesn't care either\n yield throttle(\n COMPOSING_TIMEOUT * 0.8,\n [\"chat/COMPOSER/SET_TEXT\", \"chat/SEND_MESSAGE\"],\n pushComposingEvent,\n memberChannel,\n );\n yield throttle(\n 500,\n [\"chat/MESSAGE/RECEIVE\"],\n markMessageAsReceived,\n memberChannel,\n profile.id,\n );\n yield takeLatest(\n [\"chat/MY_CHATS/REPLY\"],\n markLastChatMessagesAsReceived,\n memberChannel,\n profile.id,\n );\n}\n\nconst isGroupChat = ({ id }) => id.indexOf(\"group/\") === 0;\nconst groupChatIdToTopic = (id) => id.replace(\"/\", \":\");\n\n// Launch a group channel for every group chat returned by my_chats\n// Also launch channels for future group chats\nfunction* chatChannelsSaga(socket, networkChannel) {\n const { chats } = yield call(query, networkChannel, \"my_chats\");\n const navigation = yield select(getChatNavigation);\n if (navigation.route === \"showChat\")\n yield call(fetchChatDetails, { chatId: navigation.params.chatId });\n\n yield all(\n map(filter(chats, isGroupChat), ({ id }) =>\n fork(channelSaga, socket.channel(groupChatIdToTopic(id))),\n ),\n );\n\n while (true) {\n const action = yield take([\n \"chat/CREATE_CHAT/REPLY\",\n \"chat/CREATE_CHAT/RECEIVE\",\n ]);\n if (isGroupChat(action.payload)) {\n yield fork(\n channelSaga,\n socket.channel(groupChatIdToTopic(action.payload.id)),\n );\n }\n }\n}\n\n// Do stuff on the network channel\nfunction* channelsSaga(socket, networkId) {\n const networkChannel = socket.channel(`network:${networkId}`);\n yield fork(presenceSaga, networkChannel);\n\n yield call(join, networkChannel);\n yield call(query, networkChannel, \"network_info\");\n yield fork(myChannelSaga, socket, networkChannel);\n yield fork(chatChannelsSaga, socket, networkChannel);\n yield fork(handleChatQueries, networkChannel);\n}\n\nexport default channelsSaga;\n","import {\n all,\n takeEvery,\n put,\n call,\n select,\n takeLatest,\n} from \"redux-saga/effects\";\nimport Tinycon from \"tinycon\";\n\nimport { getProfileId } from \"../../selectors/chat/application\";\nimport {\n getUnreadChatsCount,\n isMuted,\n getChatProfile,\n} from \"../../selectors/chat/chat\";\n\nconst notify = ({ title, ...options }) =>\n new Promise((resolve, reject) => {\n const notification = new Notification(title, options);\n\n const notificationCloser = () => {\n notification.close();\n };\n window.addEventListener(\"beforeunload\", notificationCloser);\n\n notification.onclick = () => {\n window.focus();\n resolve();\n notification.close();\n };\n notification.onclose = () => {\n console.log(\"CLOSED\", title, options);\n window.removeEventListener(\"beforeunload\", notificationCloser);\n reject();\n };\n });\n\nfunction* notifyForIncomingMessage({ payload }) {\n const membershipId = yield select(getProfileId);\n\n // Create notification only for messages from other people\n if (membershipId === payload.from.id) {\n return;\n }\n\n const _isMuted = yield select(isMuted, {\n chatId: payload.chat_id,\n });\n\n if (_isMuted) {\n return;\n }\n\n const profile = yield select(getChatProfile, { chatId: payload.chat_id });\n\n try {\n yield call(notify, {\n title: profile.name,\n icon: profile.imageUrl,\n body:\n profile.type == \"group\"\n ? `${payload.from.name}: ${payload.text}`\n : payload.text,\n tag: payload.chat_id,\n });\n\n yield put({\n type: \"chat/NAVIGATE\",\n payload: {\n route: \"showChat\",\n params: { chatId: payload.chat_id },\n },\n });\n } catch (e) {\n // Notification was closed\n }\n}\n\nfunction* setTinycon() {\n const unreadChats = yield select(getUnreadChatsCount);\n\n Tinycon.setOptions({\n color: \"#FFFFFF\",\n background: \"#0081ce\",\n fallback: true,\n });\n Tinycon.setBubble(unreadChats > 99 ? \"+\" : unreadChats);\n}\n\nfunction* notificationsSaga() {\n if (window.Notification) {\n yield takeEvery(\"chat/MESSAGE/RECEIVE\", notifyForIncomingMessage);\n }\n\n yield all([\n call(setTinycon),\n takeLatest(\n [\n \"chat/MY_CHATS/REPLY\",\n \"chat/MESSAGE/RECEIVE\",\n \"chat/MARK_AS_READ\",\n \"chat/MARK_AS_READ/RECEIVE\",\n ],\n setTinycon,\n ),\n ]);\n}\n\nexport default notificationsSaga;\n","import { all, call, cancel, take, fork, race, put } from \"redux-saga/effects\";\nimport delay from \"@redux-saga/delay-p\";\nimport { Socket } from \"phoenix\";\nimport { map } from \"lodash\";\n\nimport { createEventSaga } from \"./helpers\";\nimport channelsSaga from \"./channels\";\nimport notificationsSaga from \"./notifications\";\nimport applicationSaga from \"./application\";\n\n// Create a new socket connection, i.e. after auth changed\nfunction createSocket({ socketUrl, ...options }) {\n return new Socket(socketUrl, {\n reconnectAfterMs() {\n return 5000;\n },\n // logger: (kind, msg, data) => {\n // if (!/push|receive/.exec(kind)) {\n // console.log(`SOCKET ${kind}: ${msg}`, data);\n // }\n // },\n ...options,\n });\n}\n\n// This saga turns the basic socket open, error and close events into dispatched actions\nconst socketEventSaga = createEventSaga({\n events: (dispatch) => ({\n onOpen: () => dispatch({ type: \"chat/SOCKET/ON_OPEN\" }),\n onError: () => dispatch({ type: \"chat/SOCKET/ON_ERROR\" }),\n onClose: () => dispatch({ type: \"chat/SOCKET/ON_CLOSE\" }),\n }),\n bind: (socket, handlers) => map(handlers, (fn, name) => socket[name](fn)),\n});\n\n// Allows caching of credentials while respecting their expires_in value\nconst credentialsCache = (function () {\n let payload = null;\n let validUntil = null;\n const SAFETY_MARGIN = 3 * 60; // 3 minutes\n\n return {\n get: () =>\n payload && validUntil - SAFETY_MARGIN > new Date() / 1000\n ? payload\n : null,\n set: (p) => {\n payload = p;\n // use expires_in if available, otherwise default to 3 hours\n const expiresIn = 3 * 60 * 60;\n validUntil = new Date() / 1000 + expiresIn;\n },\n };\n})();\n\nfunction* memoizedCredentials(fetchCredentials) {\n yield put({ type: \"chat/FETCH_CREDENTIALS/START\" });\n const cachedPayload = yield call([credentialsCache, \"get\"]);\n\n if (cachedPayload) {\n yield put({\n type: \"chat/FETCH_CREDENTIALS/FROM_CACHE\",\n });\n return cachedPayload;\n }\n\n try {\n const payload = yield call(fetchCredentials);\n yield call([credentialsCache, \"set\"], payload);\n yield put({ type: \"chat/FETCH_CREDENTIALS/SUCCESS\" });\n return payload;\n } catch (e) {\n yield put({ type: \"chat/FETCH_CREDENTIALS/FAILURE\" });\n throw e;\n }\n}\n\n// root saga for chat\nfunction* rootSaga({ fetchCredentials, socketUrl }) {\n let windowUnloading = false;\n window.addEventListener(\"beforeunload\", () => {\n windowUnloading = true;\n });\n\n yield all([fork(applicationSaga), fork(notificationsSaga)]);\n\n while (true) {\n const { token, network_id: networkId } = yield call(\n memoizedCredentials,\n fetchCredentials,\n );\n\n yield put({ type: \"chat/CONNECT/START\" });\n const socket = yield call(createSocket, { params: { token }, socketUrl });\n const socketEventTask = yield fork(socketEventSaga, socket);\n //window.socket = socket; // for dev/debugging purposes\n socket.connect();\n\n console.log(\"waiting for connection\");\n const events = yield race({\n open: take(\"chat/SOCKET/ON_OPEN\"),\n error: take(\"chat/SOCKET/ON_ERROR\"),\n close: take(\"chat/SOCKET/ON_CLOSE\"),\n });\n\n if (events.open) {\n yield put({ type: \"chat/CONNECT/SUCCESS\" });\n\n console.log(`Joining channels for network ${networkId} now!`);\n\n const channelsTask = yield fork(channelsSaga, socket, networkId);\n\n // Socket was disconnected after some time\n yield take(\"chat/SOCKET/ON_CLOSE\");\n\n // Stop here if we are reloading/navigating away\n if (windowUnloading) {\n console.log(\"Stopping chat rootSaga\");\n return;\n }\n\n console.log(\"Cancelling channelsTask\");\n yield cancel(channelsTask);\n }\n\n // This will stop all reconnect attempts\n socket.disconnect();\n\n console.log(\"Cancelling socketEventTask\");\n yield cancel(socketEventTask);\n\n // Socket failed on first connect, delay reconnect\n if (events.error || events.close) {\n const retryIn = 5000 + Math.random() * 5000;\n yield put({ type: \"chat/CONNECT/ERROR\", retryIn });\n yield delay(retryIn);\n }\n }\n}\n\nexport default rootSaga;\n","import { get } from \"lodash\";\nimport getFp from \"lodash/fp/get\";\n\nexport const getCurrentChat = getFp([\"chat\", \"navigation\", \"params\", \"chatId\"]);\n\nexport const getNetworkUrl = (state) =>\n get(state, [\"chat\", \"session\", \"networkUrl\"]);\n\nexport const getImageUrl = (state, imageId, size) => {\n if (!imageId) {\n return null;\n }\n\n const networkUrl = getNetworkUrl(state);\n if (!networkUrl) {\n return null;\n }\n\n return `${networkUrl}/api/storage/images/${imageId}/get/${size}`;\n};\n\nexport const getProfileId = getFp([\"chat\", \"profile\", \"id\"]);\n\nexport const getChatNavigation = (state) => get(state, [\"chat\", \"navigation\"]);\n","import { get } from \"lodash\";\n\nexport const getHomie = (state, homieId) =>\n get(state, [\"chat\", \"homies\", homieId]);\n","import { get, find, isEqual, orderBy, reduce, findLast } from \"lodash\";\nimport { createSelector } from \"reselect\";\nimport moment from \"moment\";\nimport { getProfileId, getImageUrl } from \"./application\";\nimport { getHomie } from \"./homies\";\n\nexport const getChats = (state) => get(state, [\"chat\", \"chats\"]);\n\nexport const getSortedChats = createSelector(getChats, (chats) =>\n orderBy(chats, \"last_interacted_at\", [\"desc\"]),\n);\n\nexport const getRawChatProfile = (state, { chatId }) =>\n get(state, [\"chat\", \"chats\", chatId]);\n\nexport const getChatProfile = (state, { chatId }) => {\n const chat = getRawChatProfile(state, { chatId });\n const [type] = chatId.split(\"/\");\n const imageUrl = getChatImageUrl(state, chatId);\n\n return {\n ...chat,\n type,\n imageUrl,\n };\n};\n\nexport const getStateForChat = (state, { chatId }) =>\n get(getRawChatProfile(state, { chatId }), [\"state\"]);\n\nexport const getCounterForChat = (state, { chatId }) =>\n get(getStateForChat(state, { chatId }), [\"unread_count\"]);\n\nexport const getLastReadIdForChat = (state, { chatId }) =>\n get(getStateForChat(state, { chatId }), [\"last_read_id\"]);\n\nexport const getMutedUntilForChat = (state, { chatId }) =>\n get(getStateForChat(state, { chatId }), [\"muted_until\"]);\n\nexport const getAppMutedUntilForChat = (state, { chatId }) =>\n get(getStateForChat(state, { chatId }), [\"app_muted_until\"]);\n\nexport const getCanForChat = (state, { chatId }) =>\n get(getRawChatProfile(state, { chatId }), [\"can\"]);\n\n// not pure !\nexport const isMuted = (state, { chatId }) => {\n const mutedUntil = window.isApp\n ? getAppMutedUntilForChat(state, { chatId })\n : getMutedUntilForChat(state, { chatId });\n return mutedUntil && moment().isBefore(mutedUntil);\n};\n\nexport const getAggregatedUnreadCount = (state) =>\n reduce(\n getChats(state),\n (result, chat) => result + get(chat, [\"state\", \"unread_count\"], 0),\n 0,\n );\n\nexport const getAggregatedUnreadCountWithoutChat = (state, { chatId }) =>\n reduce(\n getChats(state),\n (result, chat) =>\n chat.id == chatId\n ? result\n : result + get(chat, [\"state\", \"unread_count\"], 0),\n 0,\n );\n\nexport const getUnreadChatsCount = (state) =>\n reduce(\n getChats(state),\n (result, chat) => {\n if (get(chat, [\"state\", \"unread_count\"], 0) > 0) {\n return result + 1;\n }\n return result;\n },\n 0,\n );\n\nexport const getUnreadChatsCountWithoutChat = (state, { chatId }) =>\n reduce(\n getChats(state),\n (result, chat) => {\n if (chatId !== chat.id && get(chat, [\"state\", \"unread_count\"], 0) > 0) {\n return result + 1;\n }\n return result;\n },\n 0,\n );\n\n// Return the full url to the image of a chat if possible\nexport const getChatImageUrl = (state, chatId) => {\n const rawProfile = getRawChatProfile(state, { chatId });\n if (rawProfile) {\n return getImageUrl(state, rawProfile.image_id, \"80x80\");\n }\n return null;\n};\n\n// Returns true if this \"chat\" is online. This currently can only happen for member 1:1 chats\nexport const getChatOnlineStatus = (state, chatId) => {\n const partnerId = getPartnerId(state, chatId);\n return partnerId ? getMemberOnlineStatus(state, partnerId) : null;\n};\n\n// Returns true if this \"chat\" is busy. This currently can only happen for member 1:1 chats\nexport const getChatBusyStatus = (state, chatId) => {\n const partnerId = getPartnerId(state, chatId);\n return partnerId ? getMemberBusyStatus(state, partnerId) : null;\n};\n\n// Turn chatId \"member/123:345\" into \"345\" if \"123\" is your id\nexport const getPartnerId = (state, chatId) => {\n const [type, idRest] = chatId.split(\"/\");\n if (type === \"member\") {\n const myId = getProfileId(state);\n return find(idRest.split(\":\"), (e) => !isEqual(e, myId));\n }\n return null;\n};\n\nexport const getMemberOnlineStatus = (state, membershipId) => {\n const timestamps = get(state, [\n \"chat\",\n \"presence\",\n \"onlineMembers\",\n membershipId,\n ]);\n return timestamps && timestamps.length > 0;\n};\n\nexport const getMemberBusyStatus = (state, membershipId) => {\n return get(state, [\"chat\", \"presence\", \"busyMembers\", membershipId]);\n};\n\nexport const getRequestStateForChat = (state, { chatId }) =>\n get(getRawChatProfile(state, { chatId }), [\"requestState\"], {});\n\nexport const getMoreMessagesAvailableForChat = (state, { chatId }) =>\n get(\n getRequestStateForChat(state, { chatId }),\n [\"moreMessagesAvailable\"],\n true,\n );\n\n// Gets a known homie which has recently started composing in given chatId\nexport const getComposingHomie = (state, { chatId }) => {\n const composingIds = get(state, [\"chat\", \"composing\", chatId]);\n const myId = getProfileId(state);\n const recentlyComposingHomieId = findLast(\n composingIds,\n (id) => id !== myId && getHomie(state, id),\n );\n if (!recentlyComposingHomieId) {\n return null;\n }\n return getHomie(state, recentlyComposingHomieId);\n};\n","import { isEmpty, get, last, first, find, findLast } from \"lodash\";\nimport { createSelector } from \"reselect\";\n\nimport { getLastReadIdForChat } from \"./chat\";\nimport { getMyId } from \"./profile\";\n\nexport const getMessagesForChat = (state, { chatId }) =>\n get(state, [\"chat\", \"messages\", chatId]);\n\nexport const getMessageById = (state, { id, chatId }) =>\n find(getMessagesForChat(state, { chatId }), (m) => m.id === id);\n\nexport const getLastUnreadMessageInChat = createSelector(\n [getMessagesForChat, getLastReadIdForChat, getMyId],\n (messages, lastReadId, myId) =>\n findLast(messages, (m) => m.from.id !== myId && m.id > lastReadId),\n);\n\nexport const getLastMessageIdInChat = createSelector(\n getMessagesForChat,\n (messages) => (isEmpty(messages) ? null : last(messages).id),\n);\n\nexport const getFirstMessageIdInChat = createSelector(\n getMessagesForChat,\n (messages) => (isEmpty(messages) ? null : first(messages).id),\n);\n\nexport const getChatPartnerState = (state, { chatId }) =>\n get(state, [\"chat\", \"chats\", chatId, \"partner_state\"]);\n\n// Message delivery states in order of occurrence\n//\n// pushed:\n// my messages only\n// pushed via channel but no successful reply from server yet\n//\n// persisted:\n// my messages only\n// got successful reply after push, so it is persisted on the server\n// but not yet delivered to chat partner\n// or if it is in group chat then this is the final status\n//\n// received:\n// also means unread\n// messages has been received by ourselves or the chat partner\n//\n// read:\n// message has been read by ourselves or the chat partner\n\nexport const getMessageDeliveryStatus = (state, { id, chatId }) => {\n const myId = getMyId(state);\n const message = getMessageById(state, { id, chatId });\n\n if (myId == message.from.id) {\n if (isEmpty(message.id)) return \"pushed\";\n\n if (message.chat_id.indexOf(\"member/\") === 0) {\n const partnerState = getChatPartnerState(state, { chatId });\n if (partnerState) {\n if (partnerState.last_read_id >= id) return \"read\";\n if (partnerState.last_received_id >= id) return \"received\";\n }\n }\n return \"persisted\";\n } else {\n const last_read_id = getLastReadIdForChat(state, { chatId });\n if (last_read_id >= id) return \"read\";\n return \"received\";\n }\n};\n","import flow from \"lodash/fp/flow\";\nimport getFp from \"lodash/fp/get\";\n\nexport const getMyProfile = getFp([\"chat\", \"profile\"]);\nexport const getMyId = flow(getMyProfile, getFp([\"id\"]));\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\nexport const rootFolderIdSelector =\n ({ groupSlug }) =>\n (state) =>\n get(\n groupSlug ? groupSelector(state, groupSlug) : networkSelector(state),\n \"root_folder_id\",\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","// 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 {};","// 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","IS_CHAT_QUERY","IS_NETWORK_QUERY","createChatQueryAction","event","type","toUpperCase","actionCreator","data","replyType","createNetworkQueryAction","basicActionCreator","loadChatDetails","loadMoreMessages","markAsRead","muteChat","muteAppChat","unmuteChat","unmuteAppChat","createChat","setChatStatus","unreadsQueryOptions","refetchInterval","convertPayload","payload","features","activitystreams","Activitystreams","appointments","Calendars","messages","Messages","total","sum","values","useFeaturesUnreads","currentMember","Preload","current_member","delayedEnabled","setDelayedEnabled","useState","useEffect","timeout","setTimeout","clearTimeout","useQuery","fetchApi","enabled","onSuccess","isApp","unreads","bridge","postMessage","useActivitiesUnreads","useSelector","currentMemberSelector","Tixxt","Activitystream","all","processUnreadCounts","useFoldersUnreads","options","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","suggestions","setSuggestions","onOpenChange","useCallback","_open","MentionSuggestions","onSearchChange","async","response","$","ajax","url","currentNetwork","dataType","q","contentType","map","m","id","showNameWithProfileField","displayName","detectionProfileField","detection_profile_field","isExternal","is_external","images","small","entryComponent","createInlineMentionPlugin","useAdministrationUserbarLinks","groupSlug","groupCategorySlug","params","context_type","context_id","stringify","refetchOnWindowFocus","useMembershipProfile","membershipId","lightThemeToCss","bannerType","logoType","cssContent","push","LOGO_RULES","BANNER_RULES","join","themeToCss","derivedColors","variable","colorObj","colorObjToCSSProperties","result","color","abstract","tailwind","r","g","b","TinyColor","toRgb","default","extended","hidden","colors","col","image","override","bannerImage","bannerUrl","fetchImprint","updateImprint","body","method","useUpdateImprint","useMutation","isLoading","loading","imprints","mutate","toastr","success","I18n","t","PageTitle","title","isEmpty","ReduxForm","form","initialValues","onSubmit","imprint","onSubmitFail","error","allowSaveWithoutChange","ControlGroup","label","Field","component","MarkdownEditorAdapter","show_newsletter_info","InfoText","translation","LegalTextRow","legalText","onDeleteLegalText","href","target","rel","moment","format","style","fontSize","onClick","e","preventDefault","confirm","legalTexts","refetch","refetchLegalTexts","useLegalTexts","deleteLegalText","useDeleteLegalText","colSpan","align","index","key","useLegalText","useCreateLegalText","useUpdateLegalText","required","multiple","disabled","FileUploadField","isImage","storageDirectory","inputTitle","normalizeValue","isArray","displayValue","formatValue","state","compact","castArray","SelectAdapter","input","meta","loadOptions","variables","callback","debouncedLoadOptions","debounce","onBlur","isClearable","isDisabled","inputId","placeholder","noOptionsMessage","isMulti","styles","menu","base","zIndex","Fragment","AsyncSelect","classNamePrefix","unstyled","FieldError","normalize","Membership","extractUrl","SimpleInput","Url","DatePickerAdapter","elemRef","useRef","setDisplayValue","datepicker","Datepicker","current","addEventListener","formattedDate","detail","date","onChange","destroy","Date","rawValue","isValid","ref","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","appId","dispatch","useDispatch","useMemo","fetchRelationOptions","propertyName","onCreateOption","AsyncCreatableSelect","CreatableSelect","Select","polymorphic","related_apps","sortedOptions","sortBy","Relation","PROPERTIES","address","Address","email","Email","Image","membership","MembershipRelation","selection","Selection","text","Text","number","Number","tag","Tag","file","File","DatePicker","html","relation","RelationField","isManualFocusHandlingRequired","prop","multiline","canUpdate","property","item","can","update","inputRef","properties","fieldErrors","fieldIdBase","uuidv4","focusHandlers","handleNewInputRef","newRef","handleLabelClick","currentTarget","dataset","errors","each","i","fieldId","propErrors","propHasErrors","Headline","Hint","hint","isPropRequired","htmlFor","onLabelClick","PropertyEdit","isPlainObject","wrapperClassName","prefix","postfix","otherProps","inputElement","classNames","defaultImageUrl","size","imageUrl","thumbnailUrl","alt","GenericValueList","extension","related_app_id","imageLoadingError","onerror","Assets","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","flatMap","createFormatValue","find","reject","option","CheckboxRadioAdapter","checked","uniq","without","finalOptions","includes","select","rawSelect","internal","allowCreate","tagParentsFromContext","useContext","TagParentsContext","console","tagParents","tag_parents","exclude_new","inputValue","count","formatOptionLabel","startsWith","createOptionPosition","new","SelectComponent","createContext","field","warn","Provider","setComposerRefCallback","isFunction","MarkdownEditor","initial","content","onFocus","readOnly","autoFocus","maxlength","maxLength","selectionFilterUrl","SelectionUrlContext","MaybeLink","tagFilterUrl","TagUrlContext","connect","appUrl","currentAppUrlSelector","tagUrl","showAsLink","listStyle","listItemStyle","link","SharedTag","Application","markdown","val","AppointmentInviteMeta","status","accept","decline","canOptRetroactively","inviteStatus","totalAttendeesEnforcedAndExceeded","participation_locked","buttons","AppointmentInviteDate","frequency","start","all_day","end","same_day","AppointmentInvite","invitable","invitable_type","author","renderDate","renderMeta","reloadInvites","network","declineInvite","useDeclineInvite","acceptInvite","useAcceptInvite","faRotate","total_attendees_enforced_and_exceeded","inviteId","AppointmentToolbar","view","setViewType","setDate","calendars","toggleExcludedCalendarIds","excludedCalendarIds","canCreate","scrollToToday","hideActions","datePickerRef","useParams","group","groups","bySlug","calendarId","undefined","cal","parent_id","create_appointments","pickLevel","element","active","isSame","faRegularShare","subtract","faSolidCaretLeft","faRegularSpinner","faRegularCalendarDay","add","faSolidCaretRight","DropDown","Toggle","length","faRegularFilter","CalendarFilterDropdown","faRegularTableCells","faRegularList","Item","faRegularCogs","typeLabels","personal","sortedGroupedCalendars","grouped","entries","categoryName","categoryCalendars","alignment","faSolidCircle","faRegularCircle","iconClassName","onSelect","calendar","iconStyle","formatTime","momentDate","FormattedTime","allDay","day","isBetween","html_url","markers","canceled","has_meeting","markerColor","backgroundColor","faComments","isFirst","weekNum","notActualMonth","maxHeight","columnNumber","lastRow","momentDay","divRef","visibleAppointmentCount","Math","floor","height","hiddenAppointmentCount","hovered","setHovered","handleHover","removeEventListener","useHover","initialDimensions","setInitialDimensions","useLayoutEffect","newInitialDimensions","width","clientWidth","clientHeight","isEqual","innerWidth","bg","onDoubleClick","Backbone","history","navigate","trigger","appointment","calId","unknown_calendars","concat","AppointmentLine","HeaderCell","appointmentsByDate","useFullWidthLayout","days","weekCount","ceil","dates","keys","startOfMonth","match","endOfMonth","endOf","rowStyle","gridTemplateRows","FullSizeContent","maxCellHeight","drop","range","at","week","j","CalendarSheetCell","createAppointmentContact","appointmentId","useCreateAppointmentContact","useAppointments","participating","keepPreviousData","split","useAppointment","translateTo","translated","targetLanguage","contentId","useCalendars","createAppointment","useCreateAppointment","updateAppointment","useUpdateAppointment","useAppointmentDate","appointmentStart","appointmentEnd","formattedStart","formatDate","formattedEnd","isSameDay","AppointmentDate","isRecurring","recurrence_pattern","next_occurrence_url","next_occurrence_date","FormattedTimeZone","time_zone","faArrowsRepeat","recurrence_end_time","TZDate","recurrence_interval","recurrence_frequency","interval","faClock","start_date","start_time","AppointmentDescription","description","isRendered","truncateDescription","setTruncateDescription","handleReadMore","document","getElementById","maybeTruncatedDescription","truncate","omission","AppointmentLocation","location","locationIsExtended","some","addressForUri","encodeURIComponent","pick","faLocationDot","address1","address2","meeting_link_type","getLocationLinkText","maps_url","showMap","AppointmentMeeting","meeting","appointmentName","canStartMeeting","tooltipRef","useTooltip","dateStr","room_name","navigator","clipboard","writeText","conference_call_phone_number","conference_call_access_code","join_url","app_url","then","catch","faClone","faDesktop","faPlayCircle","Toolbar","participationLocked","participantsEmpty","cancelProhibitedReason","isModifiedRecurring","previousOccurrenceUrl","recurringAppointmentUrl","nextOccurrenceUrl","useNavigate","toggleLockParticipation","attendee_configuration","cancel","showContextMenu","faRegularArrowLeft","faRegularArrowsRepeat","DropDownItem","faRegularPencil","contact","faRegularEnvelope","update_participants","faRegularUsers","faRegularUnlock","faRegularLock","download_attendees","faRegularFileCsv","file_ending","faRegularFileExcel","appointment_name","faRegularBan","linkStyle","faRegularTrash","DATE_FORMAT","weeksInRange","rangeStart","rangeEnd","currentDate","weeks","weekday","collectAppointmentsByDate","startOf","flatten","datesInRange","reduce","filter","isInRange","appointmentsInDateRange","weeksInMonth","msToDayFactor","dateStamp","offsetMinutes","utcOffset","zone","valueOf","dateStampsRange","appointmentDate","spansDate","stamp","spansMultipleDays","useBlog","useSaveBlog","blog","useChannels","initialData","start_page","subscribed","recent","popular","useChannel","slug","updateChannelFavorited","favorited","channel","queryClient","getQueryData","setQueryData","updateChannelSubscription","useWidgets","channelSlug","useWidget","widgetId","useDeleteWidget","usePersistWidget","persistWidget","useArticles","currentPage","extraQuery","page","routes","ChannelOverride","NoChannel","ApplyOverrideChannelTheme","useRoutes","design","css","channelDesignToCss","createPortal","head","indexOf","getWidgetContentHeight","w","getWidgetContentColumns","getWidgetWidthByType","full","third","getWidgetColspan","getWidgetContainerResponsiveHeight","getWidgetColspanType","getWidgetColumnIndex","colspan","colspan3","col1","colspan2","col2","col3","useChannelLayout","useUpdateChannelLayout","newItems","rows","smartChunk","whatever","limitPerCol","numberCols","out","standaloneCount","chunk","slice","N_PER_COL","PeopleWidget","memberships","profile_fields","WidgetContext","byColumn","times","n","StandalonePerson","RowPerson","ProfileImage","f","profile","ImagesWidget","hiddenCount","layout","hasHidden","Loading","BannerWidget","banner_background_color","hide_title","banner_title_color","backgroundImage","TextWidget","html_content","ChannelRssWidget","preview_data","rss_data","maxItems","limitedItems","items","itemsPerColumn","itemsByColumn","columnItems","ItemCarousel","visibleItemsCount","containerWidth","totalItems","containerHeight","navigationButtonsStyle","currentIndex","setCurrentIndex","maxIndex","itemPercent","gapPerItem","translateAmount","handlePrev","prev","faSolidCircleChevronLeft","handleNext","faSolidCircleChevronRight","transform","child","useContainerWidth","containerRef","setContainerWidth","resizeObserver","ResizeObserver","elementWidth","getBoundingClientRect","observe","unobserve","BlogWidget","latest_articles","title_background_override","article","blog_id","image_path","created_at","AppointmentsWidget","event_image","large_thumb","start_meeting","description_rendered","SpotlightWidget","articles","getFileType","pop","toLowerCase","LinkView","image_url","FileIcon","FolderIcon","EmbedLinkView","embed","secureEmbedServiceUrl","showEmbed","setShowEmbed","allow","gridTemplateAreas","provider_icon","gridArea","faToggleOff","faToggleOn","getImageAsset","LinkWidget","selected_image","override_image","override_description","crawl_type","first","secure_embed_service_url","WidgetByType","peopleProps","textProps","imagesProps","bannerProps","rssProps","blogProps","appointmentsWidgetProps","spotlightProps","linkProps","Settings","development","memoize","bgColor","normalText","getComputedStyle","getPropertyValue","mostReadable","includeFallbackColors","toHexString","WidgetContainer","titleBackgroundOverride","hideTitle","contentClassName","collapseToSingleColumn","singleRowOnly","readableTextColor","Muted","compose","withProps","counter","getCounterForChat","chatId","muted","isMuted","composingHomie","getComposingHomie","route","Notification","permission","requestPermission","Row","last_message","last_interacted_at","mom","ChatImage","last_read_id","Composing","from","fromNow","statusOption","busy","online","invisible","useCurrentStatus","isOnline","getMemberOnlineStatus","presence","getMemberBusyStatus","StartNewButton","navigateToNewChat","faRegularComment","ChatStatusCircle","faSolidEyeSlash","StatusButton","toggleStatusMessageForm","OnlineStatusDropdown","selectedOption","setSelectedOption","handleOptionChange","show_online_status","StatusMessageForm","initialRender","statusText","setStatusText","currentStatus","submitStatus","chat__header","Textarea","minRows","maxRows","CloseButton","toggleChatbar","faRegularXmark","chats","getSortedChats","connected","ChatList","showStatusMessageForm","ChatHeader","ButtonLeft","ButtonRight","mobile_app_chat__list","withState","withHandlers","toggleOpen","GroupedItems","allowToggle","renderItemComponent","faChevronRight","Tile","memberChat","groupChat","categoryOrMemberType","memberOrGroup","c","NewChat","query","setQuery","only_my_groups","only_chat_enabled","member","groupsByCategoryName","BackToRootButton","faSpinner","faSearch","Chat","selected","chatName","parts","trim","chatInitials","currentChat","getCurrentChat","selectChat","nextChat","currIndex","findIndex","nextIndex","prevChat","prevIndex","QuickChatSelect","chat","MUTE_DURATIONS","toDate","MuteLink","muteUntil","dispatchAction","muted_until","ChatRoomSettingsButton","faVolumeOff","faEllipsisH","appOnly","THROTTLE","ScrollContainer","cancelScrollEvent","stopImmediatePropagation","returnValue","handleWheel","div","container","scrollTop","scrollHeight","wheelDelta","deltaY","isDeltaPositive","trackScrolling","lastScrollPosition","direction","callbackThreshold","autoscrollThreashold","setState","autoscrollBreaked","callStartReached","callEndReached","bumper","lastScrollPoint","onStartReached","leading","trailing","onEndReached","scroll","smooth","autoscroll","performScroll","lastScrollHeight","scrollBehavior","offsetHeight","DIV","onClickScrollToBottom","handleScrolling","throttle","handleResize","prevProps","startElement","endElement","MessageAuthor","MessageSettings","myMessage","fromId","fromDeleted","hideStartPrivateChat","messageId","EMOJI_REGEX","createEmojiRegex","onlyEmojis","every","toArray","sym","isEmoji","symbol","lastIndex","test","markdownRenderer","getNewMarkdownRenderer","Remarkable","use","linkify","noop","breaks","linkTarget","core","ruler","disable","inline","enable","block","markdownTextToHtml","log","MessageText","emoji","getEmojiClassName","symbols_count","nextProps","QuotedMessage","message","getTitle","deliveryStatus","MessageDeliveryStatus","faCheck","faCheckDouble","getIcon","MessageDate","fullDate","chat_id","getMyId","fromProfile","getMyProfile","getMessageDeliveryStatus","getImageUrl","ChatMessage","groupedMessage","quoted_message","deleted","DaySeparator","getRequestStateForChat","getMessagesForChat","loadingMessages","moreMessagesAvailable","lastMessageFrom","lastMessageDate","mobile_app_chat_room_android","isAndroid","mobile_app_chat_room_ios","isIOS","sameAuthor","sameDay","getMessageById","removeMessageToQuote","MessageToQuote","MessageComposer","messageToQuoteId","getComposerMessageToQuoteId","composerTextByChatId","setComposerTextByChatId","initialValue","setValue","storedValue","localStorage","getItem","JSON","parse","setItem","usePersistentState","handleSubmit","register","getValues","setFocus","reset","useForm","invokeDebounced","submit","quoted_message_id","getCanForChat","write","onKeyDown","keyCode","shiftKey","ctrlKey","altKey","metaKey","faPaperPlane","MobileAppWrapper","getChatProfile","ChatRoom","subtitle","BackButton","faArrowLeft","getUnreadChatsCountWithoutChat","getUnreadChatsCount","chatStatus","navigation","classList","remove","OnlineStatus","isBusy","ICONS","faUser","faUsers","getChatImageUrl","getChatOnlineStatus","getChatBusyStatus","DirectoryActionButton","DirectoryPagination","pagination","PaginationComponent","Pagination","totalPages","per_page","onPaginate","setSearchParam","toString","PageLoading","DirectoryRow","fallbackIcon","actions","badges","titleIcons","DirectoryRowBadge","tooltipTitle","FILTER","charCode","String","fromCharCode","Glossary","selectedLetter","setSelected","DirectoryToolbar","searchField","showFilterInitially","hasActiveFilters","showFilter","setShowFilter","queryString","setQueryString","searchedString","setSearchedString","selectLetter","letter","onSearch","faMagnifyingGlass","faFilter","ToolBar","create_channels","faCirclePlus","only_subscribed","ChannelRow","subscribers_count","is_subscribed","isSubscribed","setIsSubscribed","subscribersCount","setSubscribersCount","subscribeChannel","unsubscribeChannel","useChannelSubscription","onSuccessFunction","_id","faBullhorn","faBellSlash","faBell","ChannelListView","useDirectoryFilter","toNumber","searchParams","useSearchParams","currentFilter","forEach","getCurrentFilter","Breadcrumb","folder","handleNavigate","parentFolder","faFolder","currentRootFolder","closeModal","onSelectFolder","selectedItemIds","modalTitle","setSortBy","currentFolder","breadcrumb","useFolderResource","Modal","onClose","modalActionProps","submitText","Sorter","attribute","handleSort","orderBy","FolderRow","i18n_type","navigateDisabled","fixedWidth","SelectedFolder","unselectFolder","folderId","useFetchFolder","spin","defaultFolder","showModal","setShowModal","targetFolder","FolderSelectModal","faFolderOpen","contextUrl","searchUrl","module","filters","selectionUrl","namespace","useRemoveFilesAndFolders","requests","Promise","useMoveFilesAndFolders","onSelectFiles","headerRef","isHoveringHeader","setIsHoveringHeader","sortDirection","setSortDirection","onmouseover","onmouseleave","files","ids","selectedIds","selectIds","onSelectItem","useItemBatchSelection","allSelected","difference","contents","selectAllCheckbox","selectedFiles","FolderContentsTable","extraColumns","extraPreColumn","SelectableFolderRow","FileRow","SelectableFileRow","rowProps","endsWith","disableSelection","onSelectFile","isSelected","showCheckbox","context","onlyShowName","FilesEditorView","FileSelectModal","fileId","action","showReviewChanges","trackView","fetch","credentials","El","selectFolder","currentFolderId","currentFolderNamespace","currentRootFolderId","currentRootFolderNamespace","currentFolderMeta","currentFolderMetaSelector","FileName","version","finalizedAt","lockedUntil","lockedById","firstHalf","secondHalf","major","faFlagCheckered","faLock","updatedAt","openUrl","downloadUrl","Data","pow","humanizeFileSize","isPDF","isOpenable","faEye","faCloudDownload","updated_at","content_type","FileInfo","propTypes","isSortable","useExtraColumns","contextId","contextType","columnFields","selectFileProfileColumnFields","fileLoading","fileProfilePropertySet","usePropertySet","folderLoading","folderProfilePropertySet","columnProperties","Header","propertySetStyles","PropertyShow","Status","total_files_count","total_subfolders_count","onNavigateItem","DefaultFileRow","DefaultFolderRow","skipFileAttributes","filteredContents","renderTable","setRenderTable","timeoutID","folder_link_id","FolderContentsTableWithProfile","tableProps","noExtraColspan","striped","FolderInfo","hiddenStyle","opacity","visibility","hover","setHover","checkboxAvailable","onMouseOver","onMouseLeave","pickImage","wantedWidth","wantedHeight","last","imagesPropType","PropTypes","isRequired","percent","activityUrl","sources","original_filename","img","filesCount","tags","mentions","display_name","attachments","person","ImageAttachments","MentionAttachments","TagAttachments","LinkAttachment","FileAttachments","LOOKUP","note","Note","question","Question","schedule","Survey","survey","teaser","article_id","actor","object","TypeView","actorImage","nameWithProfileField","NameWithProfileField","hit","curr","hitContent","ActivityAttachments","answer_count","reply_count","MessageHit","subject","to","DateRange","html_description","CalendarList","hitMeta","recurring_appointment","Highlights","highlights","setIndex","highlight","sort_by","setPaginationState","FoundIn","found_in","reduceRight","MetaRow","FileHit","FileHitMeta","FileHits","hits","SearchQueryPaginationContext","file_profile","UrlContextProvider","serializeSortBy","parseSortByParam","FolderHit","FolderHitMeta","FolderHits","folder_profile","is_network_admin","profileFieldAvailable","has","ExternalMemberBadge","archived","access","member_count","activity_count","pagePath","group_slug","ItemHit","item_id","itemId","frontend_app_url","frontendAppUrl","app","appLoading","useLoadApp","externalAppId","itemLoading","useLoadItem","externalItemId","display_values","title_property","imageProp","p","imageValue","isObject","SearchResultPagination","per","paginationState","SearchSortSelector","availableSorts","Result","iconClass","fullResultUrl","initialLoading","renderHit","renderHits","queryName","routeParams","available_sorts","contextValue","pageLoading","useSearchResultsPage","query_name","GenericErrorBoundary","showMore","QUERY_MAPPING","activities_query","ActivityHit","messages_query","appointments_query","RecurringAppointmentHit","ModifiedRecurringAppointmentHit","AppointmentHit","files_query","folders_query","memberships_query","stringifyQuery","MembershipHit","groups_query","groupHits","groupCategory","group_categories","group_category_id","GroupHit","pages_query","PageHit","items_query","SearchQueryResult","propsFn","invariant","extraProps","FilterButton","GlobalSearchButton","useSearchResults","searchResults","globalSearchFilterBar","results","FilterModule","filteredQuery","pickBy","identity","staleTime","useQueryClient","cacheTime","pageData","getQueriesData","cacheData","cachedQuery","truncatedPageData","mapValues","filterToQueryString","quote","formatExt","baseSearchPath","searchQuery","rawQ","filterStrings","sortByParam","directionString","directionNumber","useInvites","useInfiniteQuery","pageParam","fetchPaginatedData","getNextPageParam","lastPage","nextPage","GroupNavigation","useGroupNavigationItems","Placeholder","nav","NavigationItem","new_window","navigation_items","active_match","join_request_count","useLocation","isActive","matchPath","pathname","hasNavigationItems","dropdown","ToggleGroupFavoriteButton","mutationFn","favorite","toggleFavorited","useToggleGroupFavorite","ToggleFavoriteButton","ToggleGroupSubscribe","subscription_status","toggleSubscribed","useToggleGroupSubscribe","stopPropagation","LeaveGroupOption","renderHeadlineTools","setDocumentTitle","ContextPageTitle","titleProp","page_title","authentication_token","leave","Subtitle","useRecurringAppointment","AppointmentPageTitle","setAppointment","Appointment","assignAppointment","model","off","TixxtPageTitle","toggleBackbone","show","toggle","BackboneFeature","feature","paramKeys","actionArguments","k","v","stopFeature","documentReady","defer","startFeature","elem","TixxtGroupNavigation","paramRegex","convertRoutes","featureRoutes","omittedParamKeys","Array","matchAll","capture","networkPath","groupPath","rundschreiben","notifications","AllDayTag","position","LeftArrow","RightArrow","TimeTag","faAngleRight","faAngleLeft","AppointmentItem","todayRef","calendar_ids","calendar_id","CalendarDay","today","isAfter","future","isBefore","CalendarWeek","weekNumber","isEmptyWeek","isoWeek","AppointmentsList","MEDIUM_BREAKPOINT","isSmall","AppointmentsPage","persistedView","setPersistedView","sessionStorage","setView","updateView","useWindowEvent","useAppointmentView","setExcludedCalendarIds","contextCalendars","uniqBy","filteredAppointments","contextAppointments","groupAppointmentsCalendarIds","intersection","scrollIntoView","behavior","CalendarSheet","isShared","canAddCalendar","create_personal_calendars","create_calendars","groupCalendarsByType","groupedCalendars","shared","cals","CalendarListItem","renderActions","addCalendar","faCalendarCirclePlus","CalendarListView","addCalendarsAllowed","groupsWithCalendars","groupsById","keyBy","my_groups","group_id","groupCalendarsByGroup","ManageCalendarsPage","deleteCalendar","deleteShare","useDeleteShare","faBan","faPencil","faTrash","COLLECTION_URL_LOOKUP","all_appointments","participating_appointments","personal_calendar","shared_calendar","network_calendar","CalendarSubscribeModal","modalOptions","isCollection","collectionType","isCalendar","auth_token","filteredCalendars","calendarFilter","static","copyToClipboard","faCopy","SubscribeCalendarsPage","setModalOptions","onShowModal","faCalendarPlus","ParticipantsPicker","participantsQuery","include_consumers","consumers_enabled","include_membership_roles","DirectoryPicker","multi","extraOptions","networkMembershipRoles","ParticipantsField","control","Label","Controller","Checkbox","reloadAppointment","reloading","setReloading","addParticipants","_data","participant","membership_ids","group_count","group_ids","membership_role_count","membership_role_ids","participantsStatus","emailNotification","selectedEntities","inviteConsumers","applyTo","memberIds","entity","groupIds","membershipRoleIds","mr","addParticipantsHandler","send_email_notification","invite_consumers","apply_to","defaultValue","getConfig","changeStatus","RecurringAppointmentDecisionModal","handleDecision","useMinHeightMax","PARTICIPANT_STATUS_LOOKUP","faRegularCircleHalfStroke","accepted","declined","ParticipantRow","newStatus","setNewStatus","updateParticipation","participantId","useUpdateParticipation","deleteParticipant","useDeleteParticipant","displayModal","handleCloseModal","onRemoveParticipant","onChangeParticipantStatus","ParticipantsOverview","participants","searchText","setSearchText","activeFilter","setActiveFilter","regex","RegExp","filteredParticipants","changeActiveFilter","ParticipantsView","faRegularBars","faRegularCloudArrowDown","faSolidCaretDown","AppointmentPreview","NewParticipantForm","COLOR_POOL","CalendarForm","calendarName","calendarColor","calendarShare","onReset","random","Spectrum","colorPalette","showPalette","MemberSelect","NewCalendarPage","parentId","createCalendar","EditCalendarPage","useCalendar","updateCalendar","TextEditor","textEditorRef","rules","MarkDownEditor","TimePicker","showPicker","setShowPicker","selectedDateTime","setSelectedDateTime","setInputValue","handleClickOutside","contains","increaseHour","newDateTime","decreaseHour","increaseMinutes","minutes","roundedMinutes","decreaseMinutes","newTime","inputHours","inputMinutes","hours","padStart","parseInt","parseTime","newHours","newMinutes","updatedDateTime","selectionStart","selectionEnd","faRegularClock","faSolidChevronUp","faSolidChevronDown","DateTimePicker","showTimePicker","showTimezone","timeZone","useController","pickerRef","isDateSelectable","pickerDate","startDate","clone","checkDate","isSameOrBefore","beforeShowDay","picker","PartialToggle","showIcon","hideIcon","shouldShowPartial","onToggle","showPartial","setShowPartial","faChevronUp","faChevronDown","FREQUENCY_LOOKUP","weekly","monthly","yearly","daily","custom","RecurringSelectField","useWatch","showEndPicker","setShowEndPicker","isCustom","setIsCustom","level1Options","pattern","customOptions","level1HandleChange","isCustomFrequency","isFieldFrequencyNever","handleChange","ReactSelect","closeMenuOnSelect","isSearchable","faXmark","RecurringSelect","LocationField","shouldShowLocationDetails","TeamsConfigField","teamsSyncEnabled","onlineMeeting","CategorySelectionField","categories","selectedCategory","preSelectedCategory","cat","ContactsField","endpoint","AttendeeConfigurationField","ApplicationConfigurationField","withCosts","registrationRequired","EventSettings","isEvent","showEventSettings","setShowEventSettings","TextInput","ModifiedRecurringAppointmentHint","recurringAppointmentId","DateRangeSelectField","DateRangeSelect","useFormContext","selectOptions","names","abbr","useReservableMeetingRooms","dateRange","roomId","loadData","room_id","MeetingRoomSelectField","preSelectedRoomId","meetingRooms","room","occupied","MeetingRoomSelect","AppointmentForm","isNormal","isExisting","publishAllVolatile","usePublishAllVolatile","isCreating","isUpdating","filesLoading","setFilesLoading","calendarSelectRef","dateRangeRef","defaultStartDate","defaultEndDate","methods","defaultValues","guess","event_files","teams_configuration","category","consultants","contacts","organizer","user_can_opt","application_configuration","currency","is_event","selectedDate","selectedEventFiles","selectedEventImage","newAppointment","defaultCalendars","preSelectedCalendar","FormProvider","getElementsByClassName","newAppointmentData","create_meetings","file_object_id","toLower","see_teams_event_options","pull","selectExisting","FormActions","onCancel","saveDisabled","AppointmentNewPage","hour","AppointmentEditPage","FormComponent","upperFirst","camelCase","AppointmentEventFiles","eventFiles","showMoreFiles","setShowMoreFiles","take","file_count","Translation","isHtml","isMarkdown","Detail","AppointmentEventDetails","attendeeConfig","applicationConfig","attendingParticipantsCount","teamsParticipantsCount","createdAt","genericAuthor","lastAuthor","faCoffee","total_attendees_enforced","registration_with_costs","faMoneyBill","costs","faHome","faExternalLink","registration_required","faTimer","registration_deadline","faPhone","faPencilSquare","at_time","actor_url","actor_name","SMALL_BREAKPOINT","StatusIcon","faSolidAdjust","Role","plural_name","display_type","collapsed","setCollapsed","cursor","countBy","faRegularChevronRight","statusToSort","rejected","invited","pushParticipant","list","splice","sortedIndexBy","lowerCase","ParticipantsList","showParticipants","consumersCount","teamsOnlyParticipantsCount","roles","defaultRole","participantsByRole","obj","AppointmentParticipations","canShowAttendees","invitedConsumers","canOpt","myInvite","myParticipation","totalAttendeesExceeded","showRecurringDecisionModal","showDecisionModal","setShowDecisionModal","updatingStatus","setUpdatingStatus","updateStatus","localeKey","inviter","escape","statusKey","onUpdateStatus","AppointmentDetails","isPast","isDifferentTimeZone","Intl","DateTimeFormat","resolvedOptions","appointmentCalendars","opt_retroactively","timezone","tz","upn","teams_event","show_add_upn_link","attending_participants_count","teams_only_participants_count","generic_author","last_author","show_attendees","invited_consumers","opt","my_invite","AppointmentPage","AppointmentPageComponent","DefaultAppointmentPage","appointmentLang","setAppointmentLang","TranslationDropDown","handleLanguageSelect","language","ORIGINAL_LANGUAGE_SIGNIFIER","object_language","previous_occurrence_url","recurring_appointment_url","cancel_prohibited_reason","Contact","audience","attachmentSize","hasAttachments","areAttachmentsInLimit","email_recommendations","attachment_size_limit","audienceOptions","querySelector","usabilityHint","limit","AppointmentContactPage","RecurringAppointmentInvite","invited_by","invite","InvitesList","invites","inviteType","loadMore","canLoadMore","_type","ModifiedRecurringAppointment","RecurringAppointment","participations","AppointmentParticipation","InvitesPage","reloadUnreads","activeTab","setActiveTab","isInvitesTab","invitesData","isLoadingInvites","fetchNextPage","loadMoreInvites","hasNextPage","canLoadMoreInvites","participationsData","isLoadingParticipations","reloadParticipations","loadMoreParticipations","canLoadMoreParticipations","useParticipations","setItems","pages","tab","UnreadBadge","backboneRoutes","reactRoutes","Invites","members","selectMessage","read","hasReplies","conversationLength","to_count","activeMessageRow","unreadMessage","tabIndex","navigateDetails","faReply","search","icons","onlyIcon","useFetchMessage","messageLang","foreignMessageIds","conversation","getForeignMessageIds","translatedMessages","isTranslating","messageIds","translationQueries","useQueries","queryKey","queryFn","isFetching","Boolean","useTranslateMessages","translatedMessage","addTranslationsToConversation","oldConversation","newConversation","oldItem","newItem","useMarkMessageAsRead","offset","selectedMessageIds","setSelectedMessageIds","onLoadMoreMessages","refetchMessages","allMessageIds","deleteMessages","message_ids","useDeleteMessages","isLoadingRead","useMarkMessagesAsRead","invalidateQueries","markAsUnread","isLoadingUnread","useMarkMessagesAsUnread","divide","indeterminate","InteractionsButton","confirmMessage","useQueryParams","setPage","toInteger","useFetchMessages","MessagesInteractions","MessageRow","onSetMessageId","conversation_length","navigationUrl","InboxToolbar","faPenLine","InboxPage","MessagesList","SentPage","nativeEvent","back","CheckboxField","labelHint","additionalText","setVal","labelProps","_","newVal","formatResponse","groupCategories","finalResults","extraQueryParams","isAdmin","networkAdminSelector","toAllNetworkMembers","formValueSelector","hasGroupRecipient","toAll","setToAll","MembershipAndGroupField","only_my_admin_groups","TextField","htmlId","FileField","useFetchBaseMembershipData","mutateAsync","sendMessage","useSendMessage","onUnload","change","fileProcessing","useFileProcessing","renderChildren","MessageForm","fullWidth","submitIcon","enableReinitialize","to_all_network_members","SubmissionError","recipient","to_group","processing","onSubmitSuccess","NewMessagePage","isRead","onSetMessageAction","messageAction","deleteMessage","useDeleteMessage","useMarkMessageAsUnread","updatedCache","sendDirectMessages","testId","currentMemberId","isConversation","authorUrl","authorImageUrl","authorName","time","faPaperclip","a","selectedMembers","recipients","newMemberArray","messageInitialValues","sender_name","htmlContent","send_date","send_time","conversation_starter_id","isAuthorInRecipients","attachment","setIsTranslatingIndicator","setMessageAction","isSuccess","MessageInteractions","NewMessage","MessageContainer","ShowMessagePage","setMessageLang","isTranslatingIndicator","MessageDetails","validate","ConnectedForm","showFileProfileFields","selectFileProfilesEnabled","postToStreamDefault","folder_ids","post_to_stream","NewFilesForm","FileUpload","FolderSelectionField","FileDescription","EmbeddedValueSetForm","NewFilesPage","contextRootFolderId","rootFolderIdSelector","submitApi","remainingValues","publishFiles","navigateToFolder","contextPath","Turbo","visit","approvePendingFileVersion","pendingVersionId","declinePendingFileVersion","useFilesReviewStatus","parsePaginationHeaders","fetchFilesForReviewStatus","removePendingFileVersionFromCache","_response","VersionApproval","rootFolder","useFilesVersionApproval","pending_versions","pendingVersion","PendingVersionApprovalRow","author_name","isDeclining","approve","isApproving","fileUrl","foo","ReviewStatus","ReviewStatusRow","hideIfEmpty","current_version_authors","review_status","insertions","deletions","changes","comments","DocumentAction","Layout","ApprovalPage","foldersUnreads","reviewed_files","search_text","SearchResults","Content","fetchNetworkSettings","updateNetworkSettings","useUpdateNetworkSettings","sendTestBirthdayEmail","birthday_emails","AVAILABLE_LANGUAGES","lang","abuse_reports","admin_configurable","groups_only","selector","join_user_can_initiate","join_promote_groups","decorators","decorators_external","gc","GroupSelectField","MarkdownTranslation","maps_enabled","show_map","map_scope_selection","two_factor","deleted_membership_count","anonymize_memberships_managed_by_admin","show_locked_memberships_managed_by_admin","initial_anonymize_memberships_config","anonymize_memberships_config","anonymize_memberships_after_days","available_factor_types","two_factor_totp_available","two_factor_email_available","twoFactorOptions","faCircleInfo","AddressField","deletedMemberCount","NumberField","Controls","createDaysArray","weekdays","moveArray","firstDayOfWeek","shift","digests_daily_activity_enabled","birthday_emails_enabled","birthday_emails_values","sendTestMail","getTabs","TabContent","BasicSettings","JoinSettings","MemberSettings","MailSettings","selectedTabIndex","selectTabIndex","TabBar","tabs","networkSettings","reload","NetworkSettingsForm","group_promotion_config","guest_users_allow_chat","birthday_emails_image","selectedIndex","hasChildren","onChangeOption","optionLink","newWindow","onChangeNewWindow","isPublic","onChangePublic","ItemForm","SelectContent","LinkForm","standard","node","onChangeNode","keyName","findKey","findOption","MainFields","Checkboxes","public","buttonClass","getNodeKey","treeIndex","countAllNodes","treeData","walk","isValidNode","canDrop","nextPath","navigationItemsUrl","NavigationManager","treeRef","onChangeTree","onMoveNode","activePath","onChangeActiveNode","newNode","changeNodeAtPath","sendData","isSaving","saveError","saveSuccess","ignoreCollapsed","isValidTree","serializeTree","headers","responseData","json","parseNavigationItems","expanded","serializeNode","Reflect","getActiveNode","getNodeAtPath","buildNewNode","addNodeAt","addNodeUnderParent","parentKey","expandParent","addAsFirstChild","scrollToBottom","removeItemAt","removeNodeAtPath","scrollTo","top","apps","loadError","navResponse","navData","pagesResponse","pagesData","appsResponse","appsData","itemButtons","ItemButton","Flash","alert","SortableTree","isVirtualized","maxDepth","generateNodeProps","NavigationManagerForm","cardSource","beginDrag","cardTarget","monitor","dragIndex","hoverIndex","hoverBoundingRect","hoverRef","hoverMiddleY","bottom","hoverClientY","getClientOffset","y","moveCard","Card","isDragging","customBackgroundColor","connectDragSource","connectDropTarget","flow","DragSource","dragSource","DropTarget","dropTarget","DragDropContext","HTML5Backend","cards","dragCard","newCards","order","x","NewItemForm","filterProperties","mapProperties","Fields","EditItemForm","initialize","transformItem","initialized","setInitialized","updateUnregisteredFields","useInitialize","appIds","renderExtraFields","BasicItemForm","itemValues","goBack","pickFileValues","fields","external_id","fileFields","imageFields","publishedFiles","publishedImages","createOrUpdate","createItem","updateItem","itemResult","handleItemApiError","MemberEditFields","selectNetworkId","store","useStore","updateMembership","MembershipForm","persistItem","MemberCreateFields","formValues","send_welcome_mail","EmailField","createMembership","password","user","profile_id","updateField","isEditing","legalTextId","updateLegalText","LegalTextForm","createLegalText","isCurrent","isOpened","last_updated_at","collapse","openedText","setOpenedText","LegalTextVersion","updateAppNavigation","createApiAction","baseType","usePages","unusedDefaults","changedToDefault","defaults","isDefault","globe","cog","users","columns","paperclip","book","bullhorn","certificate","flag","changeIcon","selectedIcon","selectIcon","iconName","OPTIONS","activitystream","changeType","selectOption","newType","TYPE_LOOKUP","more","Default","channels","directory","settings","openIn","setOpenIn","open_in","setLink","isInvalidUrl","setIsInvalidUrl","openInDisabled","setOpenInDisabled","URL","host","onLinkChange","selectedPage","selectPage","Infinity","streams","stream","selectedStream","selectStream","changeActiveNode","changeEntryPoint","TypeForm","entryPoint","setEntryPoint","isEntryPoint","TypeSelector","changedItem","IconSelection","setMore","setTreeData","setActivePath","updateItems","useUpdateAppNavigation","moveItemToMore","newMore","_e","newTreeData","moreCandidate","changedTreeData","hasNoEntryPointItem","activeNode","canDrag","NodeTitle","pullAt","pullAllBy","removeItemFromMore","GroupAdministrationMainPage","hidden_main_group","DesignsOverviewPage","lazy","DesignsOverviewLightPage","DesignManagerPage","DesignManagerLightPage","StatisticsPage","TagsManagerPage","Params","NetworkSettings","AppNavigationManager","GroupCategorySorter","MembershipEdit","MembershipNew","LegalTextIndex","LegalTextEdit","LegalTextNew","LegalTextVersions","ImprintEdit","Suspense","fallback","forceTurbo","themeType","invite_internal","invite_external","maps","faList","MemberRow","large","faUserCircle","text_color","MemberListView","categorySlug","categoryPluralName","search_in","category_group_name","deleteGroup","archiveGroup","createGroup","updateGroup","GroupRow","profile_image","externally_visible","membership_status_of_current_member","i_haz_subscription","hasSubscribed","setHasSubscribed","memberStatus","setMemberStatus","faArchive","faEyeSlash","changeGroupSubscription","changeGroupMembership","useChangeMembershipGroupStatus","join_moderated","group_name","faAdjust","faTimes","faRightFromBracket","faPlus","getActions","invitor","time_ago","formatDateFromNow","GroupListView","category_id","DirectoryPage","preselectedTab","availableModules","MembersListView","TabComponent","selectedTabType","EditMembership","changeRequestsProfileFields","change_requests","NewChangeRequest","radio","checkbox","configCategory","switchValue","conditions","isMounted","groupOptions","sort","localeCompare","CheckboxFields","mapOptions","_value","PushNotificationSettingsForm","deviceId","setDeviceUniqueId","deviceName","setDeviceName","useFetchDeviceSettings","getDeviceUniqueId","askToRegisterDevice","updateDeviceSettings","resolve","setting","transform2FrontendState","newState","cloneDeep","switch","transform2BackendState","EditMembershipSettings","updateMembershipSettings","showEmailDigests","showEmailDailyDigests","notificationsDeactivated","overflow","marginBottom","validateTab","snakeCase","DigestSettings","EmailConfigList","sensitive","active_main_group","formName","can_create_hidden","accessValue","access_options","GroupAccess","create_hidden","Children","moderated_join","members_can_invite","miscSettings","ChatSettings","MiscSettings","onDeleteGroup","redirect","documentElement","historyChanged","onArchiveGroup","DangerZone","EditGroup","fetchGroup","onUpdateGroup","GroupForm","archive","EditGroupActions","NewGroup","networkId","groupCategorySelector","groupDefaults","fetchGroupDefaults","onCreateGroup","groupCategoryName","GroupInviteActions","groupInviteId","reloadGroupInvites","setInviteStatus","GroupInvite","additional_message","checkIfPresent","GroupInvites","groupInvites","useFetchGroupInvites","groupInvite","updateProfileStep","ProfileOnboarding","onboardingResult","redirect_to","invitesRoutes","MemberMapPage","groupContext","launchChat","networkUrl","socketUrl","addReducers","chatReducer","runSaga","chatSaga","fetchCredentials","authorizationError","useMaxHeight","setPageTitle","ChatNew","MobileAppChat","ChannelsPage","PermissionPicker","ToggleChannelFavoriteButton","W_LOOKUP","ChannelLayout","layoutData","widgets","widget","Widget","ChannelPage","isAdministration","layoutLoading","hasChangesString","hasChanges","dropdownItems","useChannelSubscriptionToggle","dividerTop","faEllipsis","buttonType","ShowWidgetPage","ImagesGalleryPage","Redirect","lightbox","setLightbox","dialogRef","showNextImage","nextImage","showPrevImage","prevImage","handleKeyDown","nextKeys","prevLightbox","faChevronCircleLeft","onLoad","faChevronCircleRight","ChannelNewPage","ChannelEditPage","EditLayoutPage","EditDesignPage","WidgetsPage","NewWidgetPage","EditWidgetPage","BlogForm","publish_as","saveBlog","resetValidationErrors","onValidationError","RadioButton","BlogEditPage","ArticleEditPage","ArticleNewPage","RedirectToStartpage","startPage","activitystreamsRoutes","appointmentsRoutes","messagesRoutes","filesRoutes","tasksRoutes","globalSearchRoutes","administrationRoutes","directoryRoutes","membershipRoutes","groupRoutes","onboardingRoutes","mapRoutes","chatRoutes","channelRoutes","blogRoutes","originalNavigate","restoreBackboneNavigate","BackboneHistoryShim","hash","debug","originalReplaceState","call","originalPushState","shimBackboneNavigate","spaRoot","appRoutes","TixxtContent","toggleFrontend","source","TurboCompat","spaNavigateInstead","confirmationMessage","getConfirmationMessage","matchRoutes","frontendByLocation","StaticTixxtGroupNavigation","current_group","GroupNavigationPortal","StaticTixxtPageTitle","PageTitlePortal","setTixxtPageTitle","getState","setTitle","createPortalComponent","rootId","callCallback","firstChild","removeChild","HeaderPortal","WallViewFilterPortal","UserbarPortal","ChatbarPortal","el","restoreVisibility","restoreStaticChat","ContentPortal","throwBadType","entry","Error","isOptionEnabled","MemberOptionLabel","GroupOptionLabel","GroupAdminOptionLabel","SystemRoleOptionLabel","MembershipRoleOptionLabel","ChannelOptionLabel","faCircleUser","faComputerClassic","parent_type","groupData","membership_roles","faTag","group_indentation","isOptionDisabled","disabledOptions","groupSearchDisabled","useDirectoryFetcher","fetchDirectory","extraOptionValues","groupedEntries","membersLabel","systemLabel","networkMembershipRolesLabel","channelLabel","pluralName","showDefaultOptions","_ref","loadDirectoryOptions","Async","cacheOptions","placeholderForEndpoint","defaultOptions","getOptionValue","handleBodyClick","querySelectorAll","additional","dividerBottom","ItemWrapperComponent","ItemWrapperWithTooltip","ItemWrapper","DropDownSubMenu","side","SubMenu","faFileAudio","faFileVideo","faFileImage","faFileLines","faFileCode","faFileCsv","faFilePdf","faFileWord","faFilePowerpoint","faFileExcel","faFileZipper","faFile","chooseFileIcon","showLockAction","setShowLockAction","isLocked","setIsLocked","locked_until","lock","locked_unitl","addDays","default_lock_period_in_days","resourceUrl","now","faSolidFile","faRegularTrashCan","faRegularEye","faRegularArrowDownToBracket","faRegularTimes","close","closeNotification","ReactDOM","FolderIcons","root_folder","activitystream_folder","faEarthEurope","setStyle","updateStyle","offsetTop","innerHeight","hasError","componentDidCatch","info","headless","fetchMembers","includeConsumers","excludeGroupMembersOf","recipientId","fetchMembersAndGroups","includeMembershipRoles","optionsKey","onlyMyGroups","membersAndGroups","mergedEntries","membershipRole","mergeEntries","groupedOptions","other","wrapperStyle","selectProps","asyncPropsOptions","loadingMessage","openMenuOnFocus","modalSubmitActionClassName","shown","hiding","modal","modalEl","hide","dispose","onResize","modalBodyHeight","resizeCallback","createElement","backdropExists","BootstrapModal","backdrop","fullscreen","header","modalClassName","ModalActions","appendChild","Spinner","minHeight","display","alignItems","justifyContent","flexDirection","marginTop","plusOne","PaginationButton","handlePaginate","cappedPage","unshift","filterByInputValue","systemRoles","findImage","SimpleMembershipShow","spectrum","showInput","preferredFormat","showInitial","palette","cancelText","chooseText","removeSearchParams","isReaderTag","buttonClassName","languages","primaryLanguages","setPrimaryLanguages","secondaryLanguages","setSecondaryLanguages","selectedLanguage","setSelectedLanguage","renderLanguageListItem","primary","secondary","primaryLanguageKeys","last_used_translation_language","categorizeLanguages","faLanguage","faSolidStar","faRegularStar","withDragDropContext","onRemoveFile","criteria","isMatch","uploadFiles","rawFiles","filesData","clientId","progress","uploadFile","inputName","filesByState","published","volatile","uploading","failed","availableFiles","uploadingFiles","nonRemovedFiles","ImagePreview","FileInput","acceptedType","empty","onSelectExistingFile","onDropFile","UploadBar","completed","UploadedFile","submitFailed","fieldProps","NativeTypes","FILE","isOver","FileSelector","currentContext","toJSON","faRegularVirus","faSolidCircleX","faBoxArchive","useRegisterPropOrFromContext","DirectoryPickerInput","apiToValues","valuesToApi","directoryPickerProps","fieldState","invalid","onChangeLocal","getFileToken","setToken","token","setProgress","onUploadFile","fileData","FormData","append","axios","post","onUploadProgress","loaded","handleUploadFiles","zippedPair","filesWithoutState","selectedExistingFiles","newFiles","showCancel","showSave","faInfoCircle","defaultChecked","contextMethods","fieldAttachments","shiftIsPressed","setShiftIsPressed","metaIsPressed","setMetaPressed","firstIdSelected","setFirstIdSelected","onKeyUp","selectSingle","itemIds","firstIndex","newFileIds","addItemId","eventName","eventHandler","colorStyle","allColorStyles","clearColors","editorState","contentWithoutStyles","newContentState","Modifier","removeInlineStyle","getSelection","getCurrentContent","EditorState","RemoveColorsButton","createInlineStyleButton","toggleStyle","getEditorState","setEditorState","createColorButton","RichUtils","toggleInlineStyle","FontColorsButton","createPickerButton","pickerButtons","Separator","isCollapsed","s","getCurrentInlineStyle","seperator","buttonWrapper","onMouseDown","button","ToolbarButton","Picker","onOverrideContent","Button","createChangeLanguageHandler","clickEvent","selectedValue","renderLanguageSelect","CodeBlockLanguageSelect","createCustomMarkdownPlugin","createMarkdownPlugin","plain","bash","js","ruby","sql","customInlineMatchers","BOLD","ITALIC","UNDERLINE","MARK","CODE","STRIKETHROUGH","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","level","headlineButtons","markdown_shortcut","RemoveHeadlineButton","AvailableButtons","LinkButton","currentContent","currentEntityKey","getSelectionEntity","getEntity","currentEntity","changeEditorState","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","composer","click","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","defaultTheme","emojiSelectButton","emojiSelectButtonPressed","UndoButton","RedoButton","EmojiSuggestions","EmojiSelect","enableTixxtMentions","mentionPlugin","withBasicMarkdownPlugins","editorStateByMarkdown","onEditorStateChange","newContent","markdownByEditorState","onSetEditorRef","setEditorRef","focusEditor","editorRef","containerClasses","shouldFocus","Editor","customStyleMap","createStyleMap","spellCheck","stripPastedStyles","textAlign","fontFamily","whiteSpace","wordWrap","padding","borderRadius","border","SUPERSCRIPT","verticalAlign","isTerminatorChar","ch","customText","silent","pos","posMax","charCodeAt","pending","md","isAlphaNum","code","scanDelimiters","lastChar","nextChar","canOpen","canClose","marker","delimiters","emphasis","startCount","found","oldCount","newCount","stack","res","maxNesting","parser","skipToken","tokenize","mentionRule","mentionStart","mentionEnd","mentionSeparator","oldPos","mentionMarker","substr","underline","regexp","cssStyle","styleTuple","enableAllStyleRules","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","styleItems","propertySet","propertySetUrl","inherit","omitBy","isNull","profileConfig","retry","persistPropertySet","usePersistPropertySet","pristine","submitting","reduxForm","classNameFormActions","noActions","reverse","OriginalDatepicker","locales","currentLocale","weekStart","clearBtn","autohide","calendarWeeks","linkHeader","nextUrl","parseHeader","next","CKEDITOR_BASEPATH","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","ev","dialogDefinition","definition","getContents","common","notSet","targetNew","configure","handler","wrapped","pairs","nonVolatile","partition","others","destroyFile","fromPairs","destroyFiles","removed","_destroy","LOCALE_LOOKUP","de_DU","de","en","enGB","es","fr","dateFormat","formatDistanceToNow","setDefaultOptions","responseErrors","key_prefix","submitErrors","apply","createAdaptBackboneView","componentsMap","adaptBackboneView","componentName","mapProps","listenTo","standalone","connectedComponent","debounceTime","WrappedComponent","MemoizedWrappedComponent","Connect","getDerivedStateFromProps","getDerivedStateFromError","errorInfo","trySubscribe","tryUnsubscribe","unsubscribe","changeHandler","bind","entityState","propsToPass","getDisplayName","connectBackbone","_reactRoots","handleRender","createHandleRender","rawEl","$container","$el","root","oldRoot","unmount","createRoot","Wrapper","handleClose","createHandleClose","once","addComponents","extraComponentMap","queryCache","QueryCache","QueryClient","queries","QueryClientProvider","client","csrfTokenHeader","getAttribute","buildHeaders","h","Accept","okJson","ok","signal","WILDCARD_END","compileRoute","endsWithWildcard","pathToCompile","compileRouteMemoized","compileRoutesMemoized","getLocationState","ParamsContext","URLSearchParams","delete","newUrlString","replaceState","session","drive","pathnameParts","groupSlugInPath","navigateToUnjoinedGroup","toPathname","go","pushState","compiledRoutes","matchResult","defaultParams","LocationContext","matchedRoute","lastParams","BrowserRouter","locationState","setLocationState","updateLocationState","maybeNewLocationState","events","addEventDispatch","orig","args","Event","dispatchEvent","queryParam","setQueryParam","getQueryParams","fromEntries","beforeUnloadListener","disableInterceptor","useInterceptorPrompt","when","enableInterceptor","Tooltip","tooltipInstance","setContent","CHAT_STATIC_BREAKPOINT","coversWholeScreen","HTMLElement","SVGElement","togglebar","parentNode","HTMLButtonElement","openBarElements","Set","bar","persist","isUndefined","disableBodyScrolling","removeItem","restoreBodyScrolling","getResizeHandler","scrollY","removeProperty","closeUserbar","hideStaticChat","application","Stimulus","scrollToOpenAccordion","openAccordionItem","previousElementSibling","onClickChangeValue","$CloseActivityReplyAutomaticSelect","changeCategory","removeCategory","setText","edit","setEdit","selectedCategories","setSelectedCategories","setError","changedCategories","getElementsByName","setAttribute","CategoryRow","_class","CategoriesEditor","hasContextValue","categoriesValue","disconnect","JoinRequestModal","joinRequestId","formRef","submitUrl","childElement","onCloseModal","groupSlugValue","joinRequestIdValue","_getSelectedInviteIds","_classPrivateFieldLooseKey","_findInvite","_submitSuccess","_submitFailure","defineProperty","_submitFailure2","_submitSuccess2","_findInvite2","_getSelectedInviteIds2","refreshInvites","invite_ids","_classPrivateFieldLooseBase","renewInvites","showBodied","BatchRenewInviteView","externalInvitesCount","groupInvitesCount","countSelectedInviteTypes","group_invites_count","network_invites_count","batchRenewSuccess","batchRenewFailure","revokeInvites","done","fail","selectedCheckboxes","getUrlForPage","frame","pageField","origin","Invite","showInviteDetails","findInvite","InviteDetailsView","refreshInvite","RenewInviteView","toggleCheckboxListener","checkboxes","anyChecked","toggleDisableButtons","getSelectedInviteStatus","revokeable","renewable","revokeButton","renewButton","dragstart","dataTransfer","entryId","dragover","targetElement","removeHighlight","dragend","getData","targetEntryId","entryElement","entryElementById","moveEntryElement","persistOrder","initializeDraggable","disconnectDraggable","entryTargets","parentElement","sourceElement","targetParent","compareDocumentPosition","insertBefore","nextElementSibling","targets","_SELECTOR_MAPPING","_DEFAULT_VALUE_MAPPING","_intervalSelector","_setSelectorValue","_createSecondDaySelector","_createDaySelector","_createAndAppendTimeSelector","_createTimeSelector","_createTimeSelectorOption","_createDaySelectorOptions","_createDaySelectorOption","_createMonthHelpBlock","_removeElement","_removeSecondDaySelector","_removeMonthHelpBlock","_removeMonthHelpBlock2","_removeSecondDaySelector2","_removeElement2","_createMonthHelpBlock2","_createDaySelectorOption2","_createDaySelectorOptions2","_createTimeSelectorOption2","_createTimeSelector2","_createAndAppendTimeSelector2","_createDaySelector2","_createSecondDaySelector2","_setSelectorValue2","_intervalSelector2","writable","semimonthly","semimonthly_2","$dayTimeContainer","$daySelector","intervalValue","onClickChangeInterval","targetValue","isSemiMonthly","isMonthly","innerHTML","dayValue","secondDayValue","timeValue","secondTimeValue","mapping","tern","$secondDayTimeContainer","$secondDaySelector","after","parent","textContent","$monthHelpBlock","parentContainer","secondDay","secondTime","onMessage","iframe","contentWindow","unlayerLocale","projectId","translations","tixxt_content_placeholder","salutation","salutation_sample","disclaimer_and_settings","disclaimer_and_settings_sample","published_in_preview_info","published_in_preview_date","published_in_preview_published_in","published_in_preview_streams","link_color_published_in_label","text_color_published_in_label","colors_group_title","tixxt_content_label","storageToken","allSubmitsDisabled","resolveExportHtml","targetOrigin","chunks","fonts","countOccurrences","submitter","setupIframe","getTime","matches","Phoenix","Views","Inputs","AssignChannelSubscriptionsForm","assignChannelSubscriptions","subscribeAllNetworkMembers","subscribe_all_network_members","channelSlugs","memberData","only_public","hasMembersFieldTarget","membersFieldTarget","originalType","insertAdjacentElement","ClipboardJS","popups","magnificPopup","Lightbox","handleExternalInvite","openEditExternalIds","closeEditExternalIds","onClickGoBack","_createVisibilityIcon","_createVisibilityIcon2","toggleVisibility","nodeName","passwordField","newIcon","replaceChild","addToggleIcons","finalizeSelectionOptions","mil","seq","uniqueValue","kebabCase","TabbableFields","selectIndex","AddOptionsFields","lastInput","focusLast","PropertyForm","availableModifications","FieldArray","SelectionOptionsFields","PropertiesFields","AddOptions","existingOptions","ModificationForm","EDITOR_MAPPING","basic","formProps","addDefaultValuesToSelectionOptions","modified","transformedInitialValues","addModificationsToProperties","modifications","parent_property_set","parentPropertySet","addedOptionsByName","add_options","addOptions","pullModificationsFromProperties","finalModifications","submitPropertySet","SpecializedForm","PropertySetEdit","propertySetName","PropertySetEditWrapper","nameValue","_selectAllCheckboxes","_onInput","_valid","_determineAllChecked","_get_selectAllCheckboxes","selectAllSelector","selectAll","onClickChangeTab","toggleTarget","targetElements","allFactors","getNewTotp","createNewTotp","validationCode","provisioning_uri","resetBackupCodes","deleteFactor","perform2fa","getNewEmail","createNewEmail","secret_key","totp","ResetBackupCodesButton","DeleteFactorButton","directDelete","routeName","AddFactorButton","routeContext","RouteContext","submitDeleteFactor","updatedFactors","last_used_at","setRoute","AbortButton","FactorsPage","isError","ListFactors","factors","factorDisplayName","factor","FactorActions","BackupCodes","backupCodes","redirectTo","downloadCodesAsTxtFile","Blob","createObjectURL","download","setValidationCode","setRedirectTo","submitCreateNewTotp","createResult","createError","QRCode","renderAs","verificationCodeInput","elements","inputMode","autoComplete","deleteError","submitResetBackupCodes","resetBackupCodesResult","resetError","submitCreateNewEmail","FactorsContainer","AddTotpPage","AddEmailPage","DeleteFactorPage","ResetBackupCodes","FactorsWrapper","AccordionScrollController","Administration__Activitystream__CloseActivityReplyMonthController","Administration__EditCategoriesController","Administration__Groups__JoinRequestMessageController","Administration__Invites__SendBatchActionsController","Administration__Invites__SentController","Administration__Invites__ToggleBatchActionsController","Administration__Newsletter__DragAndDropController","Administration__Newsletter__IntervalController","Administration__Newsletter__UnlayerFormController","Administration__RoleAssignmentsController","Administration__Teams__FallbackUpnAssignmentsController","AssignChannelSubscriptionsFormController","ClipboardController","ExternalActivitystreamsController","Invites__HandleExternalInviteController","MinistryController","PermissionPickerController","Shared__GoBackButtonController","Shared__PasswordToggleController","Shared__PropertySetEditController","Shared__SelectAllController","Shared__TabbarController","Shared__ToggleController","TwoFactorAuthenticationsController","bootstrap","Popover","autoReplaceSvg","library","faBrandsDailymotion","faBrandsDeviantart","faBrandsFacebook","faBrandsFlickr","faBrandsInstagram","faBrandsKickstarter","faBrandsMicrosoft","faBrandsSlideshare","faBrandsSoundcloud","faBrandsSpotify","faBrandsTwitter","faBrandsVimeo","faBrandsYoutube","faDuotoneChartSimple","faDuotoneMedal","faDuotoneUsers","faLightCloudArrowDown","faLightEnvelope","faLightFile","faLightFileAudio","faLightFileCode","faLightFileCsv","faLightFileExcel","faLightFileImage","faLightFileLines","faLightFilePdf","faLightFilePowerpoint","faLightFileVideo","faLightFileWord","faLightFileZipper","faLightImage","faLightMobileScreenButton","faLightPaperclipVertical","faRegularAlignCenter","faRegularAlignLeft","faRegularAlignRight","faRegularAngleLeft","faRegularAngleRight","faRegularArrows","faRegularArrowsUpDownLeftRight","faRegularBold","faRegularBolt","faRegularBookmark","faRegularBoxArchive","faRegularBullhorn","faRegularCalendar","faRegularCalendarPlus","faRegularCalendarRange","faRegularChartColumn","faRegularCheck","faRegularCheckCircle","faRegularCheckSquare","faRegularChevronDown","faRegularChevronUp","faRegularCircleCheck","faRegularCircleInfo","faRegularCircleNotch","faRegularCirclePlay","faRegularCirclePlus","faRegularCircleUser","faRegularClipboard","faRegularClone","faRegularCloudDownload","faRegularCloudUpload","faRegularCommentDots","faRegularCommentSlash","faRegularComments","faRegularComputerClassic","faRegularDesktop","faRegularEarthEurope","faRegularEdit","faRegularEllipsis","faRegularEllipsisH","faRegularEllipsisVertical","faRegularExchange","faRegularFile","faRegularFileCode","faRegularFilePowerpoint","faRegularFileText","faRegularFileWord","faRegularFiles","faRegularFloppyDisk","faRegularFolder","faRegularFolderOpen","faRegularHandshake","faRegularImage","faRegularInbox","faRegularItalic","faRegularKeyboard","faRegularLink","faRegularListOl","faRegularListUl","faRegularLocationDot","faRegularMailbox","faRegularMapLocation","faRegularMapLocationDot","faRegularMessages","faRegularMinusCircle","faRegularMobile","faRegularPaperclipVertical","faRegularPenToSquare","faRegularPencilSquare","faRegularPipe","faRegularPlus","faRegularPlusCircle","faRegularPlusSquare","faRegularPowerOff","faRegularScissors","faRegularSearch","faRegularShareSquare","faRegularSidebar","faRegularSquare","faRegularSuitcaseRolling","faRegularTable","faRegularTags","faRegularTerminal","faRegularThumbsUp","faRegularTimesCircle","faRegularTriangleExclamation","faRegularUnderline","faRegularUpload","faRegularUser","faRegularUserCircle","faRegularUserPlus","faRegularUserXmark","faRegularVolumeXmark","faSolidAlignJustify","faSolidAngleDoubleDown","faSolidAngleDoubleLeft","faSolidAngleDoubleRight","faSolidAngleDoubleUp","faSolidAngleLeft","faSolidAngleRight","faSolidArchive","faSolidArrowCircleUp","faSolidArrowDown","faSolidArrowLeft","faSolidArrowRight","faSolidArrows","faSolidArrowsAlt","faSolidAt","faSolidBan","faSolidBarChart","faSolidBars","faSolidBold","faSolidBook","faSolidBug","faSolidBullhorn","faSolidCalendar","faSolidCertificate","faSolidCheck","faSolidCheckSquare","faSolidChevronCircleDown","faSolidChevronLeft","faSolidChevronRight","faSolidCircleInfo","faSolidCircleQuestion","faSolidClone","faSolidCloudDownload","faSolidCode","faSolidCodeFork","faSolidCoffee","faSolidCog","faSolidCogs","faSolidColumns","faSolidComment","faSolidCompress","faSolidEllipsis","faSolidEllipsisH","faSolidEnvelope","faSolidExclamation","faSolidExpand","faSolidExternalLink","faSolidEye","faSolidFileCsv","faSolidFileExcel","faSolidFilter","faSolidFlag","faSolidFlagCheckered","faSolidFolder","faSolidFolderOpen","faSolidFont","faSolidGears","faSolidGlobe","faSolidGripDots","faSolidHashtag","faSolidHeader","faSolidHome","faSolidImage","faSolidInfoCircle","faSolidItalic","faSolidLink","faSolidLinkSlash","faSolidList","faSolidListAlt","faSolidListOl","faSolidListUl","faSolidLock","faSolidMailbox","faSolidMapMarker","faSolidMessageXmark","faSolidPaperPlane","faSolidPaperclip","faSolidPencil","faSolidPencilSquare","faSolidPipe","faSolidPlay","faSolidPlus","faSolidPlusCircle","faSolidPrint","faSolidQuestion","faSolidQuestionCircle","faSolidQuoteLeft","faSolidQuoteRight","faSolidRefresh","faSolidReply","faSolidReplyAll","faSolidSave","faSolidSearch","faSolidShare","faSolidShield","faSolidSort","faSolidSortAsc","faSolidSortDesc","faSolidSortDown","faSolidSortNumericAsc","faSolidSortUp","faSolidSpaceShuttle","faSolidSpinner","faSolidSquare","faSolidSquareO","faSolidStepBackward","faSolidStepForward","faSolidStrikethrough","faSolidTag","faSolidTags","faSolidThumbsUp","faSolidThumbtack","faSolidTimes","faSolidTimesCircle","faSolidToggleOff","faSolidToggleOn","faSolidTrash","faSolidUnderline","faSolidUnlock","faSolidUnlockAlt","faSolidUser","faSolidUserCircle","faSolidUserMinus","faSolidUserPlus","faSolidUserSecret","faSolidUserTimes","faSolidUserXmark","faSolidUsers","faSolidVolumeXmark","faSolidXmark","dom","watch","TagEntry","inlineTagPlugin","InlineTagSuggestions","tagPlugin","counterPlugin","createCounterPlugin","CharCounter","WordCounter","LineCounter","userAgent","TixxtComposer","withPlugins","onClickFullscreen","handleFullscreen","hasText","onOpen","closed","setClosed","filterRemoved","composerName","imagesCount","selectedTab","openTab","setOpenTab","createComment","activityId","useCreateComment","updateComment","replyId","useUpdateComment","$modalEl","composerCss","editorRootCss","composerHeight","editorHeight","reply","isOpen","saveCallback","cancelCallback","setFullscreen","isProcessing","setIsProcessing","openComposer","closeComposer","closeFullscreen","imageProcessing","TixxtComposerAdapter","openFullscreen","Attachments","parentFolderId","parent_folder_id","showFolderProfileFields","selectFolderProfilesEnabled","MaybeWrapped","onlyRows","ValueSetTable","showLoading","fileServerV2Discovery","isFinalizedOrLocked","selectedItemAndFolderIds","removeSelected","moveSelected","isDownloading","setIsDownloading","folders","canDestroyAndMove","canBeMoved","fileServerV2available","serializeItemAndFolderIds","file_ids","current_folder_id","startDownload","onRemoveItems","onMoveItems","move","isMoving","targetFolderId","isRemoving","selectedItemIdsByType","canDestroy","finalized","locked","childProps","target_folder_id","source_folder_id","mergeFileAndFolderProfiles","fileProfileProps","folderProfileProps","keyedFileProfile","keyedFolderProfile","intersectionProfileKeys","o","ProfileFilters","folderProfileLoading","folderProfile","fileProfileLoading","fileProfile","filterLoading","mergedProfile","selectionFilters","tagFilter","NoExtraFilters","formValuesToSearchParams","rawTag","rawFilters","filterValue","filterName","debouncedSubmit","fileProfilesEnabled","folderProfilesEnabled","FilterProvider","showFilters","setShowFilters","filterAvailable","_dispatch","_props","previousValues","FilesSearchFilters","TagField","searchEnabled","searchProps","Search","add_files","create_subfolders","setSearchParams","TableComponent","unreadsCount","FolderActions","EmbeddedSearchResults","BatchActions","DocumentActions","renderSuptext","renderIcon","fetchActions","authorizedActions","authorized","simplifyActions","excel","word","powerpoint","visio","spreadsheets","documents","presentations","wrapProvider","FolderForm","EditFileForm","FolderListing","FileProfileRows","timeago","Progress","percentage","texts","generatingInfo","Start","createExport","TimeAgo","generateNew","generateNewHint","Exporter","canExport","AppItemsExporter","MembershipsExporter","ConsumersExporter","MembershipRoleItem","changeMembershipRole","setChecked","types","target_id","resetTranslation","translateObject","translate","administrationPath","toggleExternalMember","toggleMemberLock","membershipRoles","edit_groups","membership_roles_enabled","faTags","minister","faIdCard","guest_users","allowed","faKey","faUnlock","LayoutToggle","getContext","enableInheritance","onTypeChange","columnLayoutTypes","onLayoutChange","column","endDrag","addColumnProperty","moveColumnProperty","dropResult","getDropResult","toClass","char","didDrop","isOverAny","shallow","selectedColumnProperty","selectColumnProperty","removeColumnProperty","DragSourceProperty","ColumnConfigurator","enableLabelHiding","onColumnsUpdate","show_label","toggleShowLabel","columnProperty","removeSelectedColumnProperty","byName","setDisplayName","sourceProperties","row","DropTargetColumn","propertyShape","columnShape","showLabel","d","updateTabAt","TabConfigurator","enableColumns","exclusivePropertyUsage","usedProperties","columnProp","addTab","onTabsChange","updateSelectedTabName","updateSelectedTabColumns","updateSelectedTabLayout","removeSelectedTab","LayoutSelect","tabShape","ItemLayoutEditor","contextTypes","ItemDetailLayoutEditor","withContext","ItemEditLayoutEditor","additional_fields","ADDITIONAL_PROPERTIES","activity","teaserTemplate","setTeaserTemplate","teaser_template","onActivityTeaserChange","example_var1","example_var2","PropertiesReference","integration","onRemove","setSubject","email_subject_template","email_text_template","assignee_property_id","EmailIntegration","emailIntegrations","onEmailIntegrationsChange","uuid","SingleEmailIntegration","updatedIntegration","changeIntegration","removeIntegration","ActivityIntegration","AssignedMember","Info","logo","setFilteredByTag","descriptionContainer","Tags","Title","cardId","toggleArchive","isArchive","isUnassigned","showMenu","setShowMenu","toggleMenu","archivedBy","archivedAt","person_name","canMoveCard","setCardHeight","cardRef","onMoveCard","targetColumn","insertAfterCardId","setHoveredCardId","onSetCardRef","cardHeight","archiveItem","unarchiveItem","setFilteredByMember","FileCounter","AssignedMembers","ArchiveInfo","setCardRef","columnTitleTarget","setIsOverColumnTitle","columnField","ColumnTitle","changeIsOver","lifecycle","UNSAFE_componentWillReceiveProps","columnTarget","hoveredCardId","Column","isOverColumnTitle","card","cardTitleField","cardFileField","cardMembershipField","cardDescriptionField","cardDateField","cardTagField","cardLogoField","setCard","setCurrentCard","archived_by","archived_at","hasMoreItems","loadMoreItems","totalArchivedItems","queryParams","faFilterCircleXmark","assignee_id","assignee_name","image_id","logoId","UnassignedItems","cardProps","titlePropName","canUpdateColumn","showItems","setShowItems","IntegrationsEditor","itemsForWallSelector","loadMoreUrls","loadMoreUrlsSelector","totalArchivedItemsSelector","insert_after_id","optimistic","initApp","fetchApp","SUCCESS","fetchItems","fetchItemsForTag","fetchItemsForMember","loadMoreItemsByColumn","tag_filter","setShowsFilteredItems","member_filter","layoutOptions","getField","appColumns","column_property","unassignedItems","showsFilteredItems","HeaderButtons","stage","AppStage","isLast","getNetworkProfileFields","widgetbarPath","editWidgetbarPath","getWidgets","getWidgetbarGroupId","getSelectedWidgetIndex","getCalendars","getSelectedWidget","createSelector","MultiselectField","rawOptions","additional_calendar_ids","getOptions","scope","scopeSelection","ModuleselectField","propTypeSelections","withOnChange","groupId","valueChange","propertyKey","changeValue","eventOrNewVal","handleMultiselectLogic","PropTypeFields","TextareaField","renderer","SelectField","show_age","RadioField","possibleOptions","generateHint","checkIfHintShouldShow","MembersHeadline","GroupInformationText","getWidgetName","identifier","widgetConfig","admin_members","birthday","group_info","newest_members","online_members","rss","speed_dial","widgetType","draggable","faGripDots","DraggableWidget","widgetTypes","layoutTarget","addOrMoveWidget","WidgetbarDragNDrop","selectWidget","selectedWidgetIndex","WidgetProperties","removeWidget","defaultProperties","WidgetPropertiesLayout","setGroupId","loadWidgetbar","FETCH_WIDGETBAR_ACTIONS","loadCalendars","FETCH_CALENDARS_ACTIONS","updateWidgetbar","NotFound","widgetbar","WidgetTypes","WidgetbarLayout","WidgetbarForm","WidgetbarSelection","widgetbars","handleEdit","handleDestroy","textColor","EditRole","handleCancelEdit","editingId","handleNew","backRef","WidgetbarEdit","WidgetbarIndex","onChangeExternalId","ExternalIdInput","GroupCategorySections","unreadCountByGroupSlug","groupsByCategoryId","groupCategoriesSelector","myGroupsByCategoryIdSelector","unreadCount","GroupCategorySection","mainGroupHidden","main_group_hidden","mainGroupSlug","main_group_slug","active_theme","loadOpenState","setIsOpen","addGroupLink","create","UserbarSection","collapsible","persistOpenState","hasFavorites","additionalTitleElement","userbarVariables","ContextNavigation","userbarRef","activeItem","UserbarContent","groupCategoryTheme","titleClasses","titleTextClasses","extraChildren","wordBreak","FavoriteGroupIcon","UserbarLink","showWhileClosed","prefixMatch","escapeRegExp","ModuleSwitcher","useTooltipsIfTitlesAreHidden","throttledToggleTooltips","titleElem","toggleTooltips","Module","MODULE_LOOKUP","Channels","duo","faDuotoneBullhorn","faLightBullhorn","faDuotoneEarthEurope","faLightEarthEurope","faDuotoneInbox","faLightInbox","faDuotoneCalendarDay","faLightCalendarDay","Tasks","faDuotoneCircleCheck","faLightCircleCheck","Files","faDuotoneFolderOpen","faLightFolderOpen","Directory","faLightUser","More","faLightEllipsis","TixxtModuleSwitcher","activeModule","userbarIconType","moduleName","faDuotoneBrush","faLightBrush","faDuotoneCircleInfo","faLightCircleInfo","InfoUserbar","legal_texts","additionalLinks","additional_links","useOpenJoinRequestsCount","featuresUnreads","GroupJoinRequests","open_join_requests","ActivitystreamsUserbar","networkStreams","groupUnreads","networkUnreads","networkUnreadsByStreamSlug","openJoinRequestCount","getUserbarLinkTitle","unreadSumBySlug","MessagesUserbar","AppointmentsUserbar","TasksUserbar","FilesUserbar","networkName","networkNameSelector","networkUnreadCount","AdministrationUserbar","groupSelector","networkSelector","sections","section","links","exact","alternative_paths","SearchUserbar","pathAndQuery","MembershipsUserbar","useMembership","update_registration","update_profile","DirectoryUserbar","PagesUserbar","AppCreatorUserbar","EmptySubscribedHint","EmptyRecentHint","EmptyPopularHint","DISPLAY_LIMITS","ChannelsUserbar","channelsData","blogId","channelData","openState","openStates","setOpenStates","acc","handleSetOpen","renderSection","titleKey","emptyHint","showMoreKey","ChannelAdministrationUserbar","expandRootPaths","rootPaths","routeObject","rootPath","TixxtUserbar","ChatBar","elementRef","setCursor","upHandler","prevState","MODULE_WHITELIST","getModule","getModuleFromQueryParams","SearchBar","searchIsFocused","setSearchIsFocused","parentName","generateItems","useSelectNavigation","faDuotoneMagnifyingGlass","faRegularMagnifyingGlass","onMouseEnter","faDuotoneTable","faDuotoneCompass","faRegularCompass","ChatButton","chatCount","getAggregatedUnreadCount","faDuotoneComments","faLightComments","NotificationPing","NotificationDropDownItems","faRegularNewspaper","Notifications","faRegularEnvelopeOpenText","faRegularCalendarCircleUser","UserCentral","availableUpdates","administratableGroupCategories","administrate","faDuotoneBell","faLightBell","medium","faDuotoneCircleChevronDown","faRegularIdBadge","faRegularUserPen","faRegularGears","faRegularChartUser","version_and_updates","faRegularScrewdriverWrench","faRegularGear","faRegularArrowRightFromBracket","LARGE_BREAKPOINT","setDeploymentOfferSeenDate","toISOString","allDeploymentOffersSeen","deploymentOffer","EMPTY","CustomerCentralUpdateCheck","customer_central_url","Authorization","customer_central_jwt","release_notes_url","days_till_deadline","deadline","diff","TeamsRenewOAuthCredentialsCheck","show_renew_secret_modal","TixxtHeader","groupTheme","logoUrl","logoImage","logoRef","logoResizeBreakpoint","resizeBreakpoint","setActive","toggleActive","logoEl","navEl","maxWidth","startShrink","cleanUp","removeAttribute","onScroll","hasAttribute","requestAnimationFrame","newHeight","clamp","setProperty","useLogoScrollResize","faDuotoneBars","faLightBars","faDuotoneHouse","faLightHouse","ApplyOverrideTheme","useTheme","styleEl","faviconEl","toggleBodyClasses","newBody","isConnected","applyStyleOverride","linkEl","faviconImage","applyFaviconOverride","storeOverrideTheme","removeStyleOverride","themeSliceActions","setTheme","groupSetTheme","resetTheme","groupResetTheme","groupCategorySetTheme","groupCategoryResetTheme","appointmentIdToGroupSlugs","calendarParentIds","attributes","as","ci","fileIdToGroupSlugs","group_slugs","folderIdToGroupSlugs","groupFromId","Folder","taskIdToGroupSlugs","taskId","controller","currentCollection","first_stream_slug","groupsFromSlugs","slugs","activityIdToGroupSlugs","Activity","groupCategoriesFromGroups","groupCategoriesFromSlugs","SlugsContext","GroupsFromSlug","contextSlug","setSlugsState","previousSlug","GroupsFromActivityId","GroupsFromAppointmentId","GroupsFromTaskId","GroupsFromFolderId","paramsFolderId","queryFolderId","GroupsFromFileId","NoSlugs","selectors","HandleContextHeader","relevantContext","lastContext","activeTheme","hasSameTheme","themeParents","themeParent","Noop","pickRelevantGroups","ApplyOverrideGroupTheme","pickRelevantGroupCategories","ApplyOverrideGroupCategoryTheme","AppSearchHeader","App","canChat","setMemberIsLoggedIn","setMemberId","setMemberCanChat","TixxtChatbar","compatThisArg","fn","collection","thisArg","lodash","customLodashCompat","mixin","any","chain","lazyForEach","prototype","Bridge","webkit","messageHandlers","nativeApp","toggleUserbar","userbar","toggleChat","toggleSearchbar","searchbar","searchInput","blur","registerDevice","removeDevice","deviceUniqId","deletedDevice","showChat","loadNetworkConfig","setNetworkConfig","setPages","loadUnreads","pageTitle","isLoggedIn","configureLayout","getAuthToken","authToken","callbackName","showAge","birthday_is_today","faGift","age","AdminMembersWidget","AppointmentRow","currentTime","startTime","isSameOrAfter","endTime","displayTime","BirthdayWidget","your_birthday","GroupInfoWidget","NewestMembersWidget","OnlineMembersWidget","RssWidget","SpeedDialWidget","setMembers","renderWidgetComponent","ActivitystreamWidgetbar","useActivitystreamWidgetbar","loadingText","errorText","ActivityComposer","ReplyComposer","selectedStreams","onSelectStreams","groupedStreams","category_name","serializedOptions","ExternalIdComponent","adaptedFileComponents","adaptedSharedComponents","adaptedAppCreatorComponents","adaptedAdministrationComponents","jQuery","_compat","hljs","userInput","rails","allowAction","fire","setApplication","showCookieModal","cookieModal","modalCloser","cookie","cookieModalElement","keyboard","setupReact","myDefaultState","app_muted_until","unread_count","POSSIBLE_PARTNER_ACTION_TYPES","isPartnerAction","topic","membership_id","myStateReducer","partnerDefaultState","last_received_id","partnerStateReducer","extractChats","getFp","keyByFp","requestStateReducer","maybeUndefinedState","partner_state","defaultStateFromAction","requestState","getChatIdFromPayload","getChatIdFromMeta","BLACKLIST","mergeMessages","received","r1","r2","insertOrUpdateMessage","findLastIndex","keepUntil","messageList","cid","removeByClientId","searchClientId","composingInChat","composing","storeHomie","homie","homies","transformPayload","payloadTransformer","defaultState","combineReducers","getChatId","onlineMembers","busyMembers","createEventSaga","eventChannel","emit","handlers","put","cancelled","presenceSaga","sync","metas","online_at","maxBy","Presence","onSync","UNREAD_TIMER","COMPOSING_TIMEOUT","isShowChatNavigationAction","createWindowFocusPromise","fetchChatDetails","fetchMoreRecentMessages","getMoreMessagesAvailableForChat","firstMessageId","getFirstMessageIdInChat","message_id","markChatAsRead","race","delay","mark_as_read","mark_as_read_start","markChatAsReadHandler","lastReadId","getLastReadIdForChat","lastMessageId","getLastMessageIdInChat","hasFocus","getLastUnreadMessageInChat","navigateToChatWeCreated","navigateAction","takeLatest","fork","timeoutComposing","timeoutComposingStates","timeoutTasks","composingActions","actionChannel","ident","isRunning","receive","pushReply","baseMeta","RECEIVE_EVENTS","handleIncomingMessages","createShouldHandleTo","channelType","channelId","handleOutgoingMessages","outgoingMessages","shouldHandleTo","handleChatQueries","chatQueries","pushComposingEvent","markMessageAsReceived","messagePayload","markLastChatMessagesAsReceived","channelSaga","myChannelSaga","socket","networkChannel","memberChannel","isGroupChat","groupChatIdToTopic","chatChannelsSaga","getChatNavigation","notify","notification","notificationCloser","onclick","onclose","notifyForIncomingMessage","getProfileId","setTinycon","unreadChats","Tinycon","background","takeEvery","createSocket","Socket","reconnectAfterMs","socketEventSaga","credentialsCache","validUntil","memoizedCredentials","cachedPayload","windowUnloading","applicationSaga","notificationsSaga","network_id","socketEventTask","channelsTask","channelsSaga","retryIn","getNetworkUrl","getHomie","homieId","getChats","getRawChatProfile","getStateForChat","mutedUntil","getAppMutedUntilForChat","getMutedUntilForChat","rawProfile","partnerId","getPartnerId","idRest","myId","timestamps","composingIds","recentlyComposingHomieId","findLast","partnerState","getChatPartnerState","groupSorter","myGroups","myGroupSlugs","webpackContext","req","webpackContextResolve","__webpack_require__","exports"],"sourceRoot":""}