{"version":3,"file":"js/application-3f49d90b05d87d53d458.js","mappings":"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B,QAARA,KAItB//F,IAGJ0/F,GAAiB7gG,EAAAA,cAAA,MAAIE,UAAU,YAGtC,CA6CAsd,EAASO,KAAOo0C,EAChB30C,EAAS2jF,QAAUF,EACnBzjF,EAASC,OAjCF,UAAwB,OAC7BV,GAAS,EAAK,SACdnT,GAAW,EAAK,MAChB1G,GAAQ,EAAK,MACb2D,EAAK,KACL2G,EAAI,UACJtN,EAAS,WACT24F,EAAa,QAAO,cACpBj6E,EAAa,SACbzd,IAEA,OACEnB,EAAAA,cAAA,UACEE,UAAWoU,IAAW,sBAAuBpU,EAAW,CACtD6c,SACA,YAA4B,UAAf87E,EACb,cAA8B,YAAfA,EACf,aAA6B,WAAfA,EACd,SAAU31F,IAEZ,iBAAe,WACf2D,MAAOA,EACP+C,SAAUA,EACVnB,QAAUC,GAAMA,EAAEu7C,mBAElBjkD,EAAAA,cAACuN,EAAAA,EAAe,CAACrN,UAAW0e,EAAepR,KAAMA,GAAQorF,EAAAA,MACxDz3F,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,GACpBusF,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,QAsFyB7oF,SAAS1D,GAC3BwsF,EAAAA,IArFiB,CACxB,MACA,OACA,MACA,MACA,OACA,MACA,MACA,KACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAoE2B9oF,SAAS1D,GAC7BysF,EAAAA,IAnEc,CAAC,MAAO,MAAO,MAAO,MAAO,SAoE1B/oF,SAAS1D,GAC1B0sF,EAAAA,IApEc,CACrB,IACA,MACA,KACA,QACA,MACA,KACA,IACA,OACA,MACA,KACA,KACA,QACA,KACA,K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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/activitystreams/types/Article.tsx","webpack:///./app/javascript/components/globalSearch/hits/MessageHit.js","webpack:///./app/javascript/components/appointments/DateRange.js","webpack:///./app/javascript/components/appointments/CalendarList.js","webpack:///./app/javascript/components/globalSearch/hits/AppointmentHit.js","webpack:///./app/javascript/components/globalSearch/hits/RecurringAppointmentHit.js","webpack:///./app/javascript/components/globalSearch/hits/ModifiedRecurringAppointmentHit.js","webpack:///./app/javascript/components/globalSearch/hits/Highlights.js","webpack:///./app/javascript/components/globalSearch/SearchQueryPaginationContext.ts","webpack:///./app/javascript/components/globalSearch/hits/FileHits.js","webpack:///./app/javascript/components/globalSearch/hits/FolderHits.js","webpack:///./app/javascript/components/globalSearch/hits/MembershipHit.js","webpack:///./app/javascript/components/globalSearch/hits/GroupHit.js","webpack:///./app/javascript/components/globalSearch/hits/PageHit.js","webpack:///./app/javascript/components/globalSearch/hits/ItemHit.tsx","webpack:///./app/javascript/components/globalSearch/SearchResultPagination.tsx","webpack:///./app/javascript/components/globalSearch/SearchSortSelector.tsx","webpack:///./app/javascript/components/globalSearch/SearchQueryResult.tsx","webpack:///./app/javascript/components/globalSearch/FilterModule.tsx","webpack:///./app/javascript/components/globalSearch/SearchResults.js","webpack:///./app/javascript/components/globalSearch/api.ts","webpack:///./app/javascript/components/globalSearch/urls.js","webpack:///./app/javascript/components/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\";\nimport Article from \"../../activitystreams/types/Article\";\n\nconst LOOKUP = {\n appointment: Appointment,\n note: Note,\n question: Question,\n schedule: Survey,\n survey: Survey,\n article: Article,\n};\n\nfunction ActivityHit({ actor, object, html_url, created_at, activitystreams }) {\n const TypeView = LOOKUP[object.type] || Note;\n const actorImage = (\n \n );\n const nameWithProfileField = (\n \n );\n\n return (\n \n
    \n
    \n {actor.deleted ? (\n {actorImage}\n ) : (\n \n {actorImage}\n \n )}\n
    \n
    \n {actor.deleted ? (\n \n {nameWithProfileField}\n \n ) : (\n \n {nameWithProfileField}\n \n )}\n
    \n
    \n
    \n {reduce(\n map(activitystreams, ({ slug, name, html_url }) => (\n \n {name}\n \n )),\n (prev, curr) => [\n prev,\n \n {\", \"}\n ,\n curr,\n ],\n )}\n
    \n \n \n {moment(created_at).format(\"LLLL\")}\n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n {!isEmpty(object.attachments) ? (\n \n ) : null}\n
    \n {object.answer_count > 0 ? (\n \n {I18n.t(\"js.global_search.activities.answers.counting\", {\n count: object.answer_count,\n })}\n \n ) : null}\n {object.reply_count > 0 ? (\n \n {I18n.t(\"js.global_search.activities.replies.counting\", {\n count: object.reply_count,\n })}\n \n ) : null}\n
    \n
    \n \n \n );\n}\n\nexport default ActivityHit;\n","import React from \"react\";\n\ninterface ArticleTypes {\n title: string;\n teaser: string;\n body: string;\n article_id: string;\n blog_id: string;\n}\n\nfunction Article({ title, teaser, article_id, blog_id }: ArticleTypes) {\n return (\n \n );\n}\n\nexport default Article;\n","import React from \"react\";\nimport { map } from \"lodash\";\n\nimport {\n NameWithProfileField,\n showNameWithProfileField,\n} from \"components/memberships/MemberNameWithAdditions\";\nimport pickImage from \"../../../helpers/pickImage\";\nimport styles from \"../globalSearch.module.css\";\n\nexport default function MessageHit({\n id,\n author,\n subject,\n html_content,\n to,\n created_at,\n}) {\n return (\n
    \n
    \n \n \n \n\n
    \n \n \n \n
    \n {I18n.t(\"js.global_search.messages.to\")} \n {map(\n to,\n ({ id, name, detection_profile_field, is_external }, index) => (\n \n {index > 0 ? , : null}\n \n {showNameWithProfileField({\n name: name,\n detectionProfileField: detection_profile_field,\n isExternal: is_external,\n })}\n \n \n ),\n )}\n
    \n
    \n
    \n \n \n {moment(created_at).format(\"DD.MM.YYYY HH:mm\")}\n \n \n
    \n
    \n\n
    \n
    {subject}
    \n
    \n 0\n ? $.truncate(html_content, { length: 600 })\n : `${I18n.t(\n \"js.global_search.no_content\",\n )}`,\n }}\n />\n
    \n
    \n \n
    \n );\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nexport default function DateRange({ start, end, all_day }) {\n const format = all_day ? \"LLL\" : \"LLLL\";\n\n return (\n
    \n
    \n \n {I18n.t(\"js.global_search.appointments.appointment_start\")}{\" \"}\n \n \n {end\n ? [\n
    ,\n \n {I18n.t(\"js.global_search.appointments.appointment_end\")}{\" \"}\n \n ,\n ]\n : null}\n
    \n
    \n );\n}\n\nDateRange.propTypes = {\n start: PropTypes.string.isRequired,\n end: PropTypes.string,\n all_day: PropTypes.bool,\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { map } from \"lodash\";\n\nfunction CalendarList({ calendars }) {\n return (\n
      \n {map(calendars, ({ id, name, color }) => (\n
    • \n {\" \"}\n \n {name}\n \n
    • \n ))}\n
    \n );\n}\n\nCalendarList.propTypes = {\n calendars: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n color: PropTypes.string.isRequired,\n }),\n ),\n className: PropTypes.string,\n};\n\nexport default CalendarList;\n","import React from \"react\";\nimport styles from \"../globalSearch.module.css\";\nimport DateRange from \"components/appointments/DateRange\";\nimport CalendarList from \"components/appointments/CalendarList\";\nimport classNames from \"classnames\";\n\nfunction AppointmentHit({ html_url, name, html_description, date, calendars }) {\n return (\n
    \n
    \n
    \n \n {name}\n \n \n \n
    \n
    \n {html_description ? (\n \n ) : null}\n \n \n {I18n.t(\"js.global_search.messages.show_appointment\")}\n \n
    \n \n );\n}\n\nexport default AppointmentHit;\n","import React from \"react\";\nimport styles from \"../globalSearch.module.css\";\nimport CalendarList from \"components/appointments/CalendarList\";\nimport classNames from \"classnames\";\n\nfunction RecurringAppointmentHit({\n html_url,\n name,\n html_description,\n date,\n calendars,\n recurrence_pattern,\n}) {\n return (\n
    \n
    \n
    \n \n {name}\n \n \n
    \n \n
    \n
    \n {I18n.t(\"js.calendars.recurring_appointment.subtitle\")}\n
    \n
    \n {I18n.t(\"js.calendars.recurring_appointment.starts_at\")}{\" \"}\n \n
    \n
    \n {recurrence_pattern.recurrence_end_time\n ? I18n.t(\"js.calendars.recurring_appointment.ends_at\") +\n (\n \n )\n : I18n.t(\"js.calendars.recurring_appointment.no_end\")}\n
    \n
    \n {I18n.t(\"js.calendars.recurring_appointment.frequency\")}{\" \"}\n {I18n.t(\n \"js.calendars.appointment.recurrence-pattern.frequency.\" +\n recurrence_pattern.recurrence_frequency,\n )}\n
    \n
    \n
    \n
    \n
    \n {html_description ? (\n \n ) : null}\n \n \n {I18n.t(\"js.global_search.messages.show_recurring_appointment\")}\n \n
    \n \n );\n}\n\nexport default RecurringAppointmentHit;\n","import React from \"react\";\nimport styles from \"../globalSearch.module.css\";\nimport DateRange from \"components/appointments/DateRange\";\nimport CalendarList from \"components/appointments/CalendarList\";\nimport classNames from \"classnames\";\n\nfunction ModifiedRecurringAppointmentHit({\n html_url,\n name,\n html_description,\n date,\n calendars,\n recurring_appointment,\n}) {\n return (\n
    \n
    \n
    \n \n {name}\n \n {recurring_appointment ? (\n \n (\n \n \n {recurring_appointment.name}\n \n )\n \n ) : null}\n \n \n
    \n
    \n {html_description ? (\n \n ) : null}\n \n \n {I18n.t(\"js.global_search.messages.show_appointment\")}\n \n
    \n \n );\n}\n\nexport default ModifiedRecurringAppointmentHit;\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport styles from \"../globalSearch.module.css\";\n\nexport default function Highlights({ highlights }) {\n const [index, setIndex] = useState(0);\n const highlight = highlights[index];\n const total = highlights.length;\n\n function nextHighlight(event) {\n event.preventDefault();\n setIndex(Math.min(index + 1, total - 1));\n }\n function prevHighlight(event) {\n event.preventDefault();\n setIndex(Math.max(index - 1, 0));\n }\n\n return (\n \n \n
    \n \n \n \n \n
    \n {`${index + 1} / ${total}`}\n \n \n \n \n \n \n \n );\n}\n\nHighlights.propTypes = {\n highlights: PropTypes.arrayOf(PropTypes.string).isRequired,\n};\n","import React from \"react\";\n\nexport type PaginationState = {\n page: null | number;\n sort_by: null | string;\n enabled: boolean;\n};\nconst SearchQueryPaginationContext = React.createContext<\n PaginationState & { setPaginationState: (setPaginationState) => void }\n>({\n page: null,\n sort_by: null,\n enabled: false,\n setPaginationState: function () {\n return;\n },\n});\n\nexport default SearchQueryPaginationContext;\n","import React, { useContext } from \"react\";\nimport { map, reduceRight, get, isEmpty } from \"lodash\";\nimport classNames from \"classnames\";\n\nimport { FolderContentsTableWithProfile } from \"../../files/table/FolderContentsTable\";\nimport FileRow from \"../../files/table/FileRow\";\nimport Highlights from \"./Highlights\";\nimport styles from \"../globalSearch.module.css\";\nimport UrlContextProvider from \"../../files/UrlContextProvider\";\nimport { parseSortByParam, serializeSortBy } from \"../urls\";\nimport SearchQueryPaginationContext from \"../SearchQueryPaginationContext\";\n\nexport function FoundIn({ found_in }) {\n return map(found_in, (path, i) => (\n
    \n in \n {reduceRight(\n map(path, ({ id, name }) => (\n \n {name}\n \n )),\n (prev, curr) => [\n prev,\n \n {\" / \"}\n ,\n curr,\n ],\n )}\n
    \n ));\n}\n\nexport function MetaRow({ extraColumns, children, className, striped }) {\n return (\n \n \n {children}\n \n );\n}\n\nfunction FileHit({ found_in, meta, striped, ...rowProps }) {\n const highlights = get(meta, [\"highlight\", \"attachment.content\"]);\n\n return (\n <>\n \n \n {isEmpty(found_in) ? null : }\n {isEmpty(highlights) ? null : }\n \n \n );\n}\n\nexport default function FileHits({ hits, meta, groupSlug }) {\n const { sort_by, setPaginationState } = useContext(\n SearchQueryPaginationContext,\n );\n\n const contents = map(hits, (hit, index) => ({\n ...hit,\n type: \"file\",\n meta: meta[index],\n profile: hit.file_profile,\n }));\n\n return (\n \n {\n setPaginationState({ page: 1, sort_by: serializeSortBy(sortBy) });\n }}\n sortBy={parseSortByParam(sort_by)}\n />\n \n );\n}\n\nFileHits.propTypes = {};\n","import React, { useContext } from \"react\";\nimport { map, isEmpty } from \"lodash\";\n\nimport { FolderContentsTableWithProfile } from \"../../files/table/FolderContentsTable\";\nimport FolderRow from \"../../files/table/FolderRow\";\nimport styles from \"../globalSearch.module.css\";\nimport { MetaRow, FoundIn } from \"./FileHits\";\nimport UrlContextProvider from \"../../files/UrlContextProvider\";\nimport { parseSortByParam, serializeSortBy } from \"../urls\";\nimport SearchQueryPaginationContext from \"../SearchQueryPaginationContext\";\n\nfunction FolderHit({ found_in, striped, ...rowProps }) {\n return (\n <>\n \n \n {isEmpty(found_in) ? null : }\n \n \n );\n}\n\nexport default function FolderHits({ hits, meta, groupSlug }) {\n const { sort_by, setPaginationState } = useContext(\n SearchQueryPaginationContext,\n );\n\n const contents = map(hits, (hit, index) => ({\n ...hit,\n type: \"folder\",\n meta: meta[index],\n profile: hit.folder_profile,\n }));\n\n return (\n \n {\n setPaginationState({ page: 1, sort_by: serializeSortBy(sortBy) });\n }}\n sortBy={parseSortByParam(sort_by)}\n skipFileAttributes\n />\n \n );\n}\n\nFolderHits.propTypes = {};\n","import React from \"react\";\nimport { map, isString, has, includes } from \"lodash\";\nimport pickImage from \"helpers/pickImage\";\nimport {\n profileFieldAvailable,\n ExternalMemberBadge,\n} from \"components/memberships/MemberNameWithAdditions\";\n\nfunction MembershipHit({\n display_name,\n images,\n html_url,\n profile,\n is_network_admin,\n detection_profile_field,\n is_external,\n}) {\n return (\n
    \n \n \n \n
    \n \n {display_name}\n \n
      \n {profileFieldAvailable({\n detectionProfileField: detection_profile_field,\n }) && !includes(profile, detection_profile_field) ? (\n
    • {detection_profile_field}
    • \n ) : null}\n {map(profile, (value, key) => (\n
    • \n {has(value, \"displayValue\")\n ? value.displayValue\n : isString(value)\n ? value\n : null}\n
    • \n ))}\n
    \n
    \n
    \n {is_external ? : null}\n {is_network_admin ? (\n \n {I18n.t(\"js.directory.member_row.administrator_short\")}\n \n ) : null}\n
    \n
    \n );\n}\n\nMembershipHit.propTypes = {};\n\nexport default MembershipHit;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty } from \"lodash\";\nimport pickImage from \"../../../helpers/pickImage\";\n\nfunction GroupHit({\n name,\n images,\n html_url,\n archived,\n access,\n member_count,\n activity_count,\n teaser,\n}) {\n return (\n
    \n \n {isEmpty(images) ? (\n \n ) : (\n \n )}\n \n
    \n \n {archived ? (\n \n ) : null}\n {access === \"closed\" ? (\n \n ) : null}\n {access === \"hidden\" ? (\n \n ) : null}\n \n {name}\n \n \n

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

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

    \n {teaser}\n

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

    \n {title}\n

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

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

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

    \n \n {title}\n

    \n {!isEmpty(available_sorts) ? (\n \n ) : null}\n
    \n {pageLoading ? (\n \n {\" \"}\n {I18n.t(\"js.global_search.loading\")}\n \n ) : total > 0 ? (\n
    \n {renderHits\n ? renderHits(hits, meta)\n : renderHit\n ? map(hits as { id: string }[], (hit, index) => (\n \n {renderHit(hit, meta[index])}\n \n ))\n : JSON.stringify(hits)}\n
    \n ) : (\n
    \n {I18n.t(\"js.global_search.no_results\")}\n
    \n )}\n {!pageLoading &&\n !routeParams.module &&\n hits &&\n hits.length < total &&\n fullResultUrl ? (\n \n ) : null}\n {!pageLoading && routeParams.module && hits && hits.length < total ? (\n \n ) : null}\n
    \n );\n}\n\n// Map query names to the components to be rendered\nexport type QueryParams = {\n queryName: string;\n routeParams: {\n q: string;\n groupSlug?: string;\n module: string | null;\n page: string;\n };\n hits?: unknown[];\n meta: { _score: number }[];\n total: number;\n per: number;\n page: number;\n sort_by?: string;\n loading: boolean;\n available_sorts: null | { key: string; label: string }[];\n};\ntype QueryProps = {\n title: string;\n iconClass: string;\n fullResultUrl: string | null;\n renderHit?: (hit: any, meta: any) => React.ReactNode;\n renderHits?: (hits: any, meta: any) => React.ReactNode;\n};\nexport const QUERY_MAPPING: {\n [key: string]:\n | ((\n params: Pick,\n ) => QueryProps)\n | undefined;\n} = {\n activities_query: ({ routeParams: { q, groupSlug } }) => ({\n title: I18n.t(\"js.activitystreams.module_name\"),\n iconClass: \"fa-regular fa-earth-europe\",\n fullResultUrl: searchUrl({ q, groupSlug, module: \"activities\" }),\n renderHit(hit) {\n return ;\n },\n }),\n messages_query: ({ routeParams: { q } }) => ({\n title: I18n.t(\"js.messages.module_name\"),\n iconClass: \"fa-regular fa-inbox\",\n fullResultUrl: searchUrl({ q, module: \"messages\" }),\n renderHit(hit) {\n return ;\n },\n }),\n appointments_query: ({ routeParams: { q, groupSlug } }) => ({\n title: I18n.t(\"js.calendars.module_name\"),\n iconClass: \"fa-regular fa-calendar-day\",\n fullResultUrl: searchUrl({ q, groupSlug, module: \"appointments\" }),\n renderHit(hit) {\n switch (hit.type) {\n case \"recurring_appointment\":\n return ;\n case \"modified_recurring_appointment\":\n return ;\n default:\n return ;\n }\n },\n }),\n files_query: ({ routeParams: { q, groupSlug } }) => ({\n title: I18n.t(\"js.files.module_name\"),\n iconClass: \"fa-regular fa-files\",\n fullResultUrl: searchUrl({ q, groupSlug, module: \"files\" }),\n renderHits(hits, meta) {\n return ;\n },\n }),\n folders_query: ({ routeParams: { q, groupSlug } }) => ({\n title: I18n.t(\"js.files.search.folder_results_heading\"),\n iconClass: \"fa-regular fa-folder-open\",\n fullResultUrl: searchUrl({ q, groupSlug, module: \"files\" }),\n renderHits(hits, meta) {\n return ;\n },\n }),\n memberships_query: ({ routeParams: { q } }) => ({\n title: I18n.t(\"js.directory.title.members\"),\n iconClass: \"fa-regular fa-user\",\n fullResultUrl: `/members?${stringifyQuery({ q })}`,\n renderHit(hit) {\n return ;\n },\n }),\n groups_query: ({ routeParams: { q }, hits }) => {\n const groupHits = hits as { group_category_id?: string }[] | undefined;\n const groupCategory =\n groupHits && groupHits.length > 0\n ? Tixxt.currentNetwork\n .group_categories()\n .get(groupHits[0].group_category_id)\n : null;\n\n return {\n title: I18n.t(\"js.directory.title.groups\"),\n iconClass: \"fa-regular fa-users\",\n fullResultUrl: groupCategory\n ? `/directory/${groupCategory.get(\"slug\")}?${stringifyQuery({ q })}`\n : null,\n renderHit(hit) {\n return ;\n },\n };\n },\n pages_query: ({ routeParams: { q, groupSlug } }) => ({\n title: I18n.t(\"js.pages.module_name\"),\n iconClass: \"fa-regular fa-sidebar\",\n fullResultUrl: searchUrl({ q, groupSlug, module: \"pages\" }),\n renderHit(hit, { highlight }) {\n return ;\n },\n }),\n items_query: ({ routeParams: { q, groupSlug } }) => ({\n title: I18n.t(\"js.app_creator.module_name\"),\n iconClass: \"fa-regular fa-table\",\n fullResultUrl: searchUrl({ q, groupSlug, module: \"items\" }),\n renderHit(hit) {\n return ;\n },\n }),\n};\n\nexport default function SearchQueryResult(props: QueryParams) {\n const { queryName, ...remainingProps } = props;\n const propsFn = QUERY_MAPPING[queryName];\n invariant(propsFn, `No propsFn defined to render results for ${queryName}.`);\n const extraProps = propsFn(props);\n\n return ;\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { map, isEmpty, values, sum } from \"lodash\";\nimport classnames from \"classnames\";\n\nimport { QUERY_MAPPING, QueryParams } from \"./SearchQueryResult\";\nimport { searchUrl } from \"./urls\";\n\nimport styles from \"./globalSearch.module.css\";\nimport invariant from \"invariant\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { useSearchResults } from \"components/globalSearch/api\";\n\nfunction FilterButton({\n queryName,\n total,\n routeParams,\n hits,\n disabled,\n}: {\n queryName: string;\n total: number;\n routeParams: QueryParams[\"routeParams\"];\n hits: QueryParams[\"hits\"];\n disabled?: boolean;\n}) {\n const propsFn = QUERY_MAPPING[queryName];\n invariant(propsFn, `No propsFn defined to render results for ${queryName}.`);\n const { title, fullResultUrl } = propsFn({ routeParams, hits });\n\n return (\n
  • \n e.preventDefault() : undefined}\n >\n {title}\n {total > 0 ? (\n \n {total}\n \n ) : null}\n \n
  • \n );\n}\n\nfunction GlobalSearchButton({ q, enabled }: { q: string; enabled?: boolean }) {\n const { data } = useSearchResults({ q }, { enabled });\n const total = sum(map(values(data), \"total\"));\n\n return (\n \n \n {I18n.t(\"js.global_search.filter.search_globally\")}\n {total > 0 ? (\n \n {total}\n \n ) : null}\n \n );\n}\n\nfunction FilterModule({\n searchResults,\n routeParams,\n loading,\n}: {\n searchResults: { [key: string]: { total: number; hits: object[] } };\n routeParams: QueryParams[\"routeParams\"];\n loading?: boolean;\n}) {\n if (isEmpty(routeParams.module) && isEmpty(searchResults)) return null;\n\n return (\n \n {routeParams.module || routeParams.groupSlug ? (\n
  • \n \n
  • \n ) : null}\n {map(searchResults, ({ total, hits }, queryName) => (\n \n ))}\n \n );\n}\n\nFilterModule.propTypes = {\n searchResults: PropTypes.object,\n routeParams: PropTypes.shape({\n q: PropTypes.string,\n module: PropTypes.string,\n groupSlug: PropTypes.string,\n }),\n};\n\nexport default FilterModule;\n","import React from \"react\";\nimport FilterModule from \"./FilterModule\";\nimport { map } from \"lodash\";\nimport SearchQueryResult from \"./SearchQueryResult\";\nimport classNames from \"classnames\";\n\nfunction SearchResults({ results, params, loading, error }) {\n return (\n \n \n {loading ? (\n \n {\" \"}\n {I18n.t(\"js.global_search.loading\")}\n \n ) : null}\n {error ? (\n
    \n {I18n.t(\"js.global_search.loading_error\")}\n
    \n ) : null}\n {map(results, (result, queryName) => (\n \n ))}\n \n );\n}\n\nexport default SearchResults;\n","import { useQuery, useQueryClient } from \"react-query\";\nimport { fetchApi } from \"helpers/reactQueryApi\";\nimport { searchUrl } from \"./urls\";\nimport { identity, keys, pickBy, mapValues, slice } from \"lodash\";\n\ntype SearchQueryParams = {\n q: string;\n module?: string;\n groupSlug?: string;\n};\n\ntype SearchResultsPayload = {\n [queryName: string]: {\n hits: {\n id: string;\n // etc...\n }[];\n meta: { _score: number }[];\n total: number;\n per: number;\n page: number;\n sort_by: number;\n };\n};\n\nexport function useSearchResults(\n query: SearchQueryParams,\n options: { enabled?: boolean } = {},\n) {\n const filteredQuery = pickBy(query, identity);\n const url = searchUrl({ ...filteredQuery, format: \"json\" });\n\n return useQuery(\n [\"search\", filteredQuery],\n () => fetchApi(url),\n {\n refetchOnWindowFocus: false,\n staleTime: 60_000,\n ...options,\n },\n );\n}\n\n// This fetches pages of a single query\n// It assumes that a module filter is active\n// and updates the query in the module search result in the query cache directly\nexport function useSearchResultsPage(\n query: {\n query_name: string;\n page: number;\n sort_by?: string | null;\n q: string;\n groupSlug?: string;\n },\n options: {\n enabled?: boolean;\n } = {},\n) {\n const queryClient = useQueryClient();\n const filteredQuery = pickBy(query, identity);\n const url = searchUrl(filteredQuery);\n\n return useQuery(url, () => fetchApi(url), {\n refetchOnWindowFocus: false,\n cacheTime: 0,\n ...options,\n onSuccess: (pageData) => {\n const queriesData = queryClient.getQueriesData([\n \"search\",\n ]);\n queriesData.forEach(([key, cacheData]) => {\n const [, cachedQuery] = key as [\"search\", SearchQueryParams];\n\n // Update module search result\n if (cachedQuery.module && keys(pageData)[0] in cacheData) {\n queryClient.setQueryData(key, { ...cacheData, ...pageData });\n }\n\n // Update a matching global search result query\n if (\n !cachedQuery.module &&\n cachedQuery.q === query.q &&\n cachedQuery.groupSlug === query.groupSlug\n ) {\n // Limit to 5 results so it still works with the global search results\n const truncatedPageData = mapValues(\n pageData,\n ({ hits, meta, ...rest }) => ({\n hits: slice(hits, 0, 5),\n meta: slice(meta, 0, 5),\n ...rest,\n }),\n );\n queryClient.setQueryData(key, { ...cacheData, ...truncatedPageData });\n }\n });\n },\n });\n}\n","import { identity, isEmpty, map, pickBy, trim } from \"lodash\";\nimport { stringify as stringifyQuery } from \"query-string\";\n\n// Wraps value with quotes if necessary\nconst quote = (value) =>\n value.match(/^[a-z0-9_\\-.]+$/i) ? value : `\"${value.replace(/\"/g, '\\\\\"')}\"`;\n\n// Turns given value and name into filter syntax\n// Produces special syntax for tags\nconst filterToQueryString = (value, name) => {\n const prefix = name === \"tag\" ? \"#\" : `${name}:`;\n return `${prefix}${quote(value)}`;\n};\n\n// @param filters [Object] { tag: 'bla', 'profile.fach': 'potato' }\nexport function searchUrl({\n groupSlug,\n contextUrl,\n q,\n filters,\n format,\n ...params\n}) {\n const formatExt = format === \"json\" ? \".json\" : \"\";\n const baseSearchPath =\n isEmpty(contextUrl) && !isEmpty(groupSlug)\n ? `/groups/${groupSlug}/search${formatExt}`\n : `${contextUrl || \"\"}/search${formatExt}`;\n if (!isEmpty(filters) || !isEmpty(q)) {\n params.q = searchQuery({ q, filters });\n }\n\n // Removes null and undefined\n params = pickBy(params, identity);\n\n return isEmpty(params)\n ? baseSearchPath\n : `${baseSearchPath}?${stringifyQuery(params)}`;\n}\n\n// Prepend filters as i.e. filtername:\"foo\" or #tag to q\nexport function searchQuery({ q: rawQ, filters }) {\n let q = null;\n // Prepend filters as i.e. filtername:\"foo\" or #tag to q\n if (!isEmpty(filters)) {\n const filterStrings = map(filters, filterToQueryString);\n if (!isEmpty(rawQ)) {\n filterStrings.push(rawQ);\n }\n q = trim(filterStrings.join(\" \"));\n } else if (!isEmpty(rawQ)) {\n q = trim(rawQ);\n }\n\n return q;\n}\n\n// Turns \"foo,asc\" into [\"foo\", 1]\n// Turns \"foo,desc\" into [\"foo\", -1]\nexport const parseSortByParam = (sortByParam) => {\n if (isEmpty(sortByParam)) return null;\n\n const [attribute, directionString] = sortByParam.split(\",\");\n return attribute ? [attribute, directionString === \"desc\" ? -1 : 1] : null;\n};\n\n// Turns [\"foo\", 1] into \"foo,asc\"\n// Turns [\"foo\", -1] into \"foo,desc\"\nexport const serializeSortBy = (sortBy) => {\n if (isEmpty(sortBy)) return null;\n\n const [attribute, directionNumber] = sortBy;\n return [attribute, directionNumber === -1 ? \"desc\" : \"asc\"].join(\",\");\n};\n","import 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","teaser","article_id","actor","object","TypeView","actorImage","nameWithProfileField","NameWithProfileField","hit","curr","hitContent","ActivityAttachments","answer_count","reply_count","MessageHit","subject","to","DateRange","html_description","CalendarList","hitMeta","recurring_appointment","Highlights","highlights","setIndex","highlight","sort_by","setPaginationState","FoundIn","found_in","reduceRight","MetaRow","FileHit","FileHitMeta","FileHits","hits","SearchQueryPaginationContext","file_profile","UrlContextProvider","serializeSortBy","parseSortByParam","FolderHit","FolderHitMeta","FolderHits","folder_profile","is_network_admin","profileFieldAvailable","has","ExternalMemberBadge","archived","access","member_count","activity_count","pagePath","group_slug","ItemHit","item_id","itemId","frontend_app_url","frontendAppUrl","app","appLoading","useLoadApp","externalAppId","itemLoading","useLoadItem","externalItemId","display_values","title_property","imageProp","p","imageValue","isObject","SearchResultPagination","per","paginationState","SearchSortSelector","availableSorts","Result","iconClass","fullResultUrl","initialLoading","renderHit","renderHits","queryName","routeParams","available_sorts","contextValue","pageLoading","useSearchResultsPage","query_name","GenericErrorBoundary","showMore","QUERY_MAPPING","activities_query","ActivityHit","messages_query","appointments_query","RecurringAppointmentHit","ModifiedRecurringAppointmentHit","AppointmentHit","files_query","folders_query","memberships_query","stringifyQuery","MembershipHit","groups_query","groupHits","groupCategory","group_categories","group_category_id","GroupHit","pages_query","PageHit","items_query","SearchQueryResult","propsFn","invariant","extraProps","FilterButton","GlobalSearchButton","useSearchResults","searchResults","globalSearchFilterBar","results","FilterModule","filteredQuery","pickBy","identity","staleTime","useQueryClient","cacheTime","pageData","getQueriesData","cacheData","cachedQuery","truncatedPageData","mapValues","filterToQueryString","quote","formatExt","baseSearchPath","searchQuery","rawQ","filterStrings","sortByParam","directionString","directionNumber","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":""}