{"version":3,"file":"js/application-774084888852cd7849e7.js","mappings":"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6E,EAAa,SACbzd,IAEA,OACEnB,EAAAA,cAAA,UACEE,UAAWoU,IAAW,sBAAuBpU,EAAW,CACtD6c,SACA,YAA4B,UAAf67E,EACb,cAA8B,YAAfA,EACf,aAA6B,WAAfA,EACd,SAAU11F,IAEZ,iBAAe,WACf2D,MAAOA,EACP+C,SAAUA,EACVnB,QAAUC,GAAMA,EAAEs7C,mBAElBhkD,EAAAA,cAACuN,EAAAA,EAAe,CAACrN,UAAW0e,EAAepR,KAAMA,GAAQmrF,EAAAA,MACxDx3F,EAGP,EAKA,M,8FC7CA,IAvBA,UAAkB,UAChB0T,EAAS,MACT4iB,GAAQ,EAAK,UACbv3B,IAMA,MAAMsN,EArKR,SAAwBqH,GAiItB,MAhIwB,CACtB,MACA,MACA,OACA,MACA,OACA,MACA,OACA,MACA,MACA,MACA,MACA,OACA,OACA,OAkHkB0D,SAAS1D,GACpBssF,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,QAsFyB5oF,SAAS1D,GAC3BusF,EAAAA,IArFiB,CACxB,MACA,OACA,MACA,MACA,OACA,MACA,MACA,KACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAoE2B7oF,SAAS1D,GAC7BwsF,EAAAA,IAnEc,CAAC,MAAO,MAAO,MAAO,MAAO,SAoE1B9oF,SAAS1D,GAC1BysF,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/oF,SAAS1D,GAC1B0sF,EAAAA,IACgB,QAAd1sF,EACF2sF,EAAAA,IACgB,QAAd3sF,EACF4sF,EAAAA,IA9Cc,CAAC,MAAO,MAAO,OAAQ,OAAQ,QA+C5BlpF,SAAS1D,GAC1B6sF,EAAAA,IA/CoB,CAC3B,MACA,MACA,OACA,OACA,OAC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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/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/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/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/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/helpers/api/fetchPaginatedData.ts","webpack:///./app/javascript/components/invites/api.ts","webpack:///./app/javascript/components/appointments/AppointmentInvite.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/Toolbar.tsx","webpack:///./app/javascript/components/shared/FileRow.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/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/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/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/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, { 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 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\";\n\nconst LOOKUP = {\n appointment: Appointment,\n note: Note,\n question: Question,\n schedule: Survey,\n survey: Survey,\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\";\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 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 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","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, { 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 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 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 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, { 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} from \"@fortawesome/pro-regular-svg-icons\";\nimport React from \"react\";\nimport {\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 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 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 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 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 ) => Promise,\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 extraOptions?: (\n inputValue: string,\n ) => Promise;\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 }: 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 return (\n \n cacheOptions\n loadOptions={loadDirectoryOptions}\n formatOptionLabel={formatOptionLabel}\n isMulti={multi}\n placeholder={placeholder || placeholderForEndpoint(endpoint)}\n isOptionDisabled={isOptionDisabled}\n defaultOptions\n noOptionsMessage={noOptionsMessage}\n getOptionValue={getOptionValue}\n value={value}\n onChange={onChange}\n className=\"form-select-container\"\n classNamePrefix=\"form-select\"\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 if (endpoint == \"/directory/members\")\n return I18n.t(\"js.member_select.placeholder\");\n\n return I18n.t(\"js.audience_select.placeholder\");\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 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, { 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}\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}: 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}: {\n name: string;\n label: string;\n register?: UseFormRegister;\n disabled?: boolean;\n}) {\n register = useRegisterPropOrFromContext(register);\n\n return (\n \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","//= 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","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","network","personal","sortedGroupedCalendars","grouped","entries","categoryName","categoryCalendars","alignment","faSolidCircle","faRegularCircle","iconClassName","onSelect","calendar","iconStyle","formatTime","momentDate","FormattedTime","start","end","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","all_day","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","frequency","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","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","useNavigate","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","status","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","author","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","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","teaser","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","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","buttons","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","fetchPaginatedData","pageParam","json","linkHeader","headers","nextUrl","parseHeader","next","nextPage","useAcceptInvite","inviteId","useDeclineInvite","AppointmentInviteMeta","accept","decline","canOptRetroactively","inviteStatus","totalAttendeesEnforcedAndExceeded","participation_locked","AppointmentInviteDate","same_day","AppointmentInvite","invitable","invitable_type","renderDate","renderMeta","reloadInvites","declineInvite","acceptInvite","faRotate","total_attendees_enforced_and_exceeded","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","DropDownItem","ParticipantsOverview","participants","searchText","setSearchText","activeFilter","setActiveFilter","regex","RegExp","filteredParticipants","changeActiveFilter","ParticipantsView","faRegularBars","download_attendees","faRegularCloudArrowDown","faSolidCaretDown","faRegularFileCsv","file_ending","faRegularFileExcel","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","isModifiedRecurring","isExisting","publishAllVolatile","usePublishAllVolatile","isCreating","isUpdating","filesLoading","setFilesLoading","calendarSelectRef","dateRangeRef","defaultStartDate","defaultEndDate","methods","defaultValues","guess","event_files","teams_configuration","category","consultants","contacts","organizer","attendee_configuration","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","Toolbar","participationLocked","participantsEmpty","cancelProhibitedReason","previousOccurrenceUrl","recurringAppointmentUrl","nextOccurrenceUrl","toggleLockParticipation","cancel","showContextMenu","faRegularArrowLeft","faRegularArrowsRepeat","faRegularPencil","contact","faRegularEnvelope","update_participants","faRegularUsers","faRegularUnlock","faRegularLock","appointment_name","faRegularBan","linkStyle","faRegularTrash","showLockAction","setShowLockAction","isLocked","setIsLocked","locked_until","lock","locked_unitl","addDays","default_lock_period_in_days","resourceUrl","now","faSolidFile","faRegularTrashCan","faRegularEye","faRegularArrowDownToBracket","tabIndex","faRegularTimes","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","useInfiniteQuery","getNextPageParam","lastPage","useInvites","participationsData","isLoadingParticipations","reloadParticipations","loadMoreParticipations","canLoadMoreParticipations","useParticipations","setItems","pages","tab","UnreadBadge","backboneRoutes","reactRoutes","Invites","members","selectMessage","read","hasReplies","conversationLength","to_count","activeMessageRow","unreadMessage","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","responseData","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","faCircleUser","faComputerClassic","parent_type","groupData","membership_roles","faTag","group_indentation","isOptionDisabled","disabledOptions","groupSearchDisabled","useDirectoryFetcher","fetchDirectory","extraOptionValues","groupedEntries","membersLabel","systemLabel","networkMembershipRolesLabel","pluralName","_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","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","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","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","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","ClipboardJS","popups","magnificPopup","Lightbox","handleExternalInvite","openEditExternalIds","closeEditExternalIds","originalType","insertAdjacentElement","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","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","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":""}