{"version":3,"sources":["api/client.js","api/interceptors/storeToken.js","api/interceptors/handleUnauthenticated.js","common/components/Callout/index.js","utils/variants.js","ideation/utils/socketMsg/ideas.js","ideation/utils/socketMsg/images.js","ideation/utils/socketMsg/words.js","api/utils/logRequestFailure.js","common/selectors/ideas.js","utils/isValidImageObject.js","profile/getters/index.js","common/containers/withModal/withModal.js","common/containers/withModal/index.js","common/components/Callout/Callout.js","common/hooks/useFormattedDateTime.js","utils/flattenObject.js","common/components/Responsive/withResponsive.js","common/components/Responsive/Responsive.js","common/components/Responsive/index.js","common/actions/metrics.js","challenge/hooks/useChallengeSearch.js","common/components/SearchInput/SearchInput.styled.js","common/components/SearchInput/SearchInput.js","common/hooks/useDebounce.js","common/components/CountrySelect/CountrySelect.js","common/components/CountrySelect/index.js","common/components/Counter/Counter.js","ideaConcept/components/ReviewScoreDetails/ReviewScoreDetails.js","ideaConcept/components/ReviewScoreDetails/index.js","ideaConcept/components/PrivateConceptInput/PrivateConceptInput.js","ideaConcept/components/ConnectedAvatarList/ConnectedAvatarList.js","ideaConcept/components/ConnectedAvatarList/index.js","common/components/Panel/Panel.js","common/components/Panel/index.js","common/components/Icon/symbol/sprite.symbol.svg","common/actions/modal.js","common/components/LinkifiedSafeHtml/LinkifiedSafeHtml.module.scss","common/components/NonIdealState/Hummingbird.png","common/components/NonIdealState/HummingbirdList.png","common/components/Avatar/Avatar.js","common/components/Avatar/_utils.js","common/components/Avatar/index.js","common/components/NonIdealState/HummingbirdHidden.gif","profile/containers/ProfileTab/placeholder.svg","profile/components/ImageInput/ImageInput.module.scss","authentication/components/AuthPageHeader/logo.jpg","ideaConcept/components/ConceptOwnerAvatar/ConceptOwnerAvatar.module.scss","ideaConcept/components/ChallengeSearchPopover/ChallengeSearchPopover.module.scss","profile/containers/ProfileTab/ProfileTab.js","profile/containers/ProfileTab/index.js","profile/components/ImageInput/ImageInput.js","profile/components/ImageInput/index.js","profile/components/PasswordResetHelp/PasswordResetHelp.js","profile/components/PasswordResetHelp/index.js","profile/actions/index.js","profile/components/SecondaryNavigation/SecondaryNavigation.js","profile/components/SecondaryNavigation/SecondaryNavigationGroup.js","profile/components/SecondaryNavigation/SecondaryNavigationItem.js","profile/components/SecondaryNavigation/index.js","profile/config.js","profile/containers/ProfileEditForm/ProfileEditForm.js","profile/containers/ProfileEditForm/index.js","profile/containers/PasswordChangeForm/PasswordChangeForm.js","profile/containers/PasswordChangeForm/index.js","profile/containers/ContentLanguageForm/ContentLanguageForm.js","profile/containers/ContentLanguageForm/index.js","profile/containers/InterfaceLanguageForm/InterfaceLanguageForm.js","profile/containers/InterfaceLanguageForm/index.js","profile/containers/LanguageSettings/LanguageSettings.js","profile/containers/LanguageSettings/index.js","utils/arrayCallbacks.js","profile/containers/PrivacySettings/PrivacySettings.js","profile/containers/PrivacySettings/index.js","profile/containers/ExportProfile/ExportProfile.js","profile/containers/ExportProfile/index.js","profile/containers/DeleteProfile/DeleteProfile.js","profile/containers/DeleteProfile/index.js","profile/containers/SettingsTab/SettingsTab.js","profile/containers/SettingsTab/index.js","profile/containers/ProfilePage/ProfilePage.js","profile/containers/ProfilePage/index.js","profile/index.js","utils/translateApiErrorMessage.js","telemetry/constants.js","common/components/NonIdealState/NonIdealState.js","common/components/NonIdealState/index.js","common/reducers/factories/status.js","common/reducers/language.js","common/reducers/navigation.js","common/reducers/profile.js","common/reducers/sidenav.js","common/reducers/network.js","common/reducers/factories/entity.js","common/reducers/entities.js","common/reducers/index.js","common/containers/AuthorizationRequiredModal/AuthorizationRequiredModal.js","common/containers/AuthorizationRequiredModal/index.js","common/containers/AutosuggestFormControl/AutosuggestFormControl.js","common/containers/SubmitButton/SubmitButton.js","common/containers/withNonIdealState/withNonIdealState.js","common/containers/withNonIdealState/index.js","ideation/utils/socketMsg/_mappers.js","challenge/schemas.js","api/constants.js","utils/localiseUserName.js","polyfills/Selection.prototype.addRange.js","polyfills/String.prototype.startsWith.js","polyfills/String.prototype.padStart.js","polyfills/String.prototype.padEnd.js","ideaConceptCanvas/actions/groups.js","common/selectors/language.js","common/components/Heading/Heading.js","common/components/Heading/index.js","common/api/platformApi.js","common/state/platform.js","common/selectors/images.js","ideaConcept/selectors/conceptList.js","authentication/services/auth.service.js","api/setAuthHeader.js","common/selectors/challenges.js","common/components/Popover/Popover.js","common/components/Popover/PopoverTrigger.js","common/components/Popover/index.js","ideaConceptCanvas/selectors/groups.js","common/components/Paragraph/Paragraph.js","common/components/Paragraph/index.js","ideaConceptCanvas/utils/socketMsg/_mappers.js","ideaConcept/schemas.js","authentication/components/AuthProvider/index.js","ideaConcept/actions/index.js","common/getters/categories.js","common/components/PageHeader/PageHeader.js","ideaConcept/selectors/conceptEvaluation.js","telemetry/errorLogging/constants.js","common/containers/ImageSearchModal/ImagePicker.module.scss","constants.js","ideaConceptCanvas/actions/movement.js","utils/asyncActionType.js","ideaConceptCanvas/actions/presence.js","utils/handleApiCallAction.js","history.js","ideaConceptCanvas/constants.js","ideaConcept/state/reviewerFeedback.js","schemas.js","ideaConcept/components/ChallengeFilter/ChallengeFilter.module.scss","common/components/FullScreen/FullScreen.js","common/components/FullScreen/index.js","utils/userAgent.js","ideaConceptCanvas/actions/ideas.js","ideaConceptCanvas/utils/socketMsg/ideas.js","metrics/vendors/injectors/amplitude.js","metrics/vendors/injectors/ga.js","common/components/Close/Close.js","common/components/Close/index.js","api/utils/getApiUrl.js","api/bootstrap.js","ideaConcept/reducers/conceptPosts.js","ideaConcept/reducers/index.js","ideaConceptCanvas/reducers/groups.js","ideaConceptCanvas/reducers/ideas.js","ideaConceptCanvas/reducers/images.js","ideaConceptCanvas/reducers/movement.js","ideaConceptCanvas/index.js","ideaConceptCanvas/reducers/index.js","reducers.js","middleware/createAuthGuard.js","middleware/apiMiddleware.js","middleware/handleError.js","middleware/locale.js","telemetry/errorLogging/payloadUtils.js","challenge/utils/logScrubber.js","utils/setIf.js","challengeResults/utils/logScrubber.js","ideation/utils/logScrubber.js","middleware/errorLogger.js","metrics/vendors/ConsentCheck.js","metrics/pageProvider.js","metrics/vendors/Amplitude.js","metrics/vendors/GoogleAnalytics.js","metrics/metricsConfig.js","metrics/trackers/_EventTracker.js","metrics/trackers/ChallengeCreationTracker.js","metrics/trackers/FeedTracker.js","metrics/trackers/HeaderTracker.js","metrics/trackers/LoginTracker.js","metrics/trackers/RegistrationTracker.js","metrics/trackers/CommonTracker.js","metrics/trackers/ChallengeResultsTracker.js","metrics/trackers/ChallengeSuggestionsTracker.js","metrics/trackers/IdeaConceptsTracker.js","metrics/metricsMiddleware.js","middleware/socketMiddlewareFactory.js","api/socketAdapters/_adapterClass.js","api/socketAdapters/signalrSocket.js","store.js","i18n.js","platformCreation/paths.js","platformCreation/pages/PaymentStartLandingPage/PaymentStartLandingPage.js","common/components/Menu/Menu.js","common/components/Menu/Submenu.js","common/components/Menu/MenuItem.js","common/components/Menu/SubmenuItem.js","common/components/Menu/index.js","common/components/Drawer/Drawer.js","common/components/Drawer/index.js","common/components/ProfileCard/ProfileCard.js","common/components/ProfileCard/index.js","common/containers/Sidenav.js","common/containers/ErrorPage/ErrorPage.js","common/containers/ErrorPage/index.js","ideaConcept/containers/ConceptTable/ConceptTable.js","ideaConcept/containers/ConceptTable/index.js","ideaConcept/containers/ConceptTable/ConceptTable.styled.js","ideaConcept/containers/ConceptTable/ScrollSpyProvider.js","ideaConcept/containers/ConceptTable/TableNav.js","ideaConcept/containers/ConceptTable/CellRenderer/action.js","ideaConcept/containers/ConceptTable/CellRenderer/getUserEvals.js","ideaConcept/containers/ConceptTable/CellRenderer/averageScore.js","ideaConcept/containers/ConceptTable/CellRenderer/conceptTitle.js","ideaConcept/components/CriterionScoreIndicator/CriterionScoreIndicator.js","ideaConcept/containers/ConceptTable/CellRenderer/ScrollAnchor.js","ideaConcept/containers/ConceptTable/CellRenderer/criterionScore.js","ideaConcept/containers/ConceptTable/useViewCommentLike.js","ideaConcept/containers/ConceptTable/CellRenderer/CommentDisplay.js","ideaConcept/containers/ConceptTable/CellRenderer/ExpandedCommentCell.js","ideaConcept/containers/ConceptTable/CellRenderer/feedback.js","ideaConcept/containers/ConceptTable/useCanShowFeedback.js","ideaConcept/containers/ConceptTable/useCanEditFeedback.js","ideaConcept/containers/ConceptTable/CellRenderer/internalComments.js","ideaConcept/containers/ConceptTable/CellRenderer/index.js","ideaConcept/containers/ConceptTable/CellRenderer/owner.js","ideaConcept/containers/ConceptTable/CellRenderer/startTime.js","ideaConcept/containers/ConceptTable/CellRenderer/status.js","ideaConcept/containers/ConceptTable/CellRenderer/team.js","ideaConcept/containers/ConceptTable/useTableConfig.js","ideaConcept/containers/ConceptTable/ColHeader.js","ideaConcept/containers/ConceptTable/MeasuredCell.js","ideaConcept/containers/ConceptTable/RowGroup.js","ideaConcept/containers/ConceptTable/TableBodyWithScroll.js","ideaConcept/components/ConceptListToolbar/StageTabRow.js","ideaConcept/components/ChallengeFilter/ChallengeRow.js","ideaConcept/components/ChallengeFilter/ChallengeList.js","ideaConcept/components/ChallengeFilter/ActiveSelections.js","ideaConcept/components/ChallengeFilter/ChallengeSearch.js","ideaConcept/components/ChallengeFilter/LatestChallengesTab.js","ideaConcept/components/ChallengeFilter/ChallengeFilter.js","ideaConcept/components/ChallengeSearchPopover/ChallengeSearchPopover.js","ideaConcept/components/ConceptListToolbar/FilterOption.js","ideaConcept/components/ConceptListToolbar/CategoryFilter.js","ideaConcept/components/ConceptListToolbar/FilterControls.js","ideaConcept/components/ConceptListToolbar/FilterStatus.js","ideaConcept/components/ConceptListToolbar/ConceptListToolbar.js","ideaConcept/components/ConceptListToolbar/index.js","ideaConcept/components/ConceptList/ConceptList.js","ideaConcept/containers/ConceptTable/CepheidConceptTable.js","ideaConcept/components/ConceptList/hooks/useSorting.js","ideaConcept/containers/ConceptTable/ConceptReviewerCommentModal.js","ideaConcept/containers/ConceptTable/CommentDisplayModal.js","ideaConcept/pages/IdeaConceptListPage/IdeaConceptListPage.js","ideaConcept/pages/IdeaConceptRoot/util/findFilterPathParam.js","ideaConcept/pages/IdeaConceptRoot/IdeaConceptRoot.js","ideaConceptCanvas/pages/ConceptCanvasRoot/ConceptCanvasRoot.js","profile/utils/isConsentRequired.js","common/components/AnnouncementBanner/AnnouncementBanner.js","common/components/IENotice/IENotice.js","common/containers/WelcomeModal/WelcomeModal.js","common/containers/WelcomeModal/index.js","common/containers/Main.js","common/containers/TokenUpdaterPage/index.js","common/containers/TokenUpdaterPage/TokenUpdaterPage.js","common/pages/BootstrapError/BootstrapError.js","common/containers/App.js","routes.js","api/utils/getApiSymbolPath.js","App.js","telemetry/init.js","telemetry/errorLogging/init.js","telemetry/monitoring/init.js","index.js","api/index.js","common/components/Backdrop/Backdrop.js","ideaConcept/api/conceptReviewApi.js","common/actions/entities.js","common/api/categoriesApi.js","common/state/categories.js","common/components/Avatar/Avatar.module.scss","common/containers/ModalRoot/ModalRoot.js","common/containers/ModalRoot/index.js","utils/parseQueryString.js","common/hooks/useMountEffect.js","common/getters/platform.js","common/actions/challenges.js","common/components/PrimaryNavigation/PrimaryNavigationItem.js","common/components/PrimaryNavigation/PrimaryNavigation.js","common/components/PrimaryNavigation/PrimaryNavigationButton.js","common/components/PrimaryNavigation/index.js","ideaConceptCanvas/selectors/index.js","ideaConcept/state/internalComments.js","common/components/Table/defaultHeaderRenderer.js","common/components/Table/defaultCellRenderer.js","common/components/Table/defaultCellDataGetter.js","common/components/Table/Column.js","profile/api/profileApi.js","common/components/Badge/Badge.module.scss","common/styled/colors.styled.js","common/actions/alert.js","common/components/Icon/index.js","common/components/RichText/StyleButton.js","common/components/RichText/BlockStyleControls.js","common/components/RichText/InlineStyleControls.js","common/components/RichText/RichText.js","common/components/RichText/index.js","ideaConceptCanvas/actions/images.js","ideaConceptCanvas/utils/socketMsg/images.js","common/components/Progress/Progress.js","common/components/Progress/index.js","telemetry/monitoring/constants.js","common/actions/meta.js","common/components/AcceptCheckboxField/AcceptCheckboxField.js","common/components/AcceptCheckboxField/index.js","common/components/CheckboxButtonGroup/CheckboxButton.js","common/components/CheckboxButtonGroup/CheckboxButtonGroup.js","common/components/DumbTextarea/DumbTextarea.js","common/components/DumbTextarea/index.js","common/components/FadeSlideUpTransition/index.js","common/components/ImagePreview/ImagePreview.js","common/components/ImagePreview/index.js","common/components/RightSlideTransition/RightSlideTransition.js","common/components/RightSlideTransition/index.js","common/components/ShareButton/shareLinks.js","common/components/ShareButton/ShareButton.js","common/components/Text/Text.js","common/components/TruncatedText/TruncatedText.js","common/components/TruncatedText/index.js","common/components/TwoColumnLayout/TwoColumnLayout.js","common/components/index.js","common/components/TabButton/Tab.js","common/components/Heart/Heart.module.scss","common/components/LinkifiedSafeHtml/index.js","common/components/Autosuggest/Autosuggest.js","common/components/Autosuggest/AutosuggestFinalForm.js","common/components/Autosuggest/index.js","common/components/FadeTransition/FadeTransition.js","common/components/FadeTransition/index.js","ideaConcept/utils/formConfig.js","featureFlags/constants.js","utils/getDisplayName.js","ideaConcept/utils/createConceptFormModel.js","ideaConcept/selectors/ideaConcepts.js","ideaConceptCanvas/selectors/images.js","ideaConcept/components/ConceptRichTextField/ConceptRichTextField.js","ideaConcept/components/ConceptRichTextField/index.js","common/containers/ConnectedAvatar/ConnectedAvatar.js","common/containers/ConnectedAvatar/index.js","utils/cookieConsent.js","ideaConcept/hooks/conceptList/useActiveStageFilter.js","utils/regex/email.js","utils/payloadUtils/invitee.js","telemetry/monitoring/index.js","common/containers/asyncComponent/asyncComponent.js","common/containers/asyncComponent/index.js","common/components/LegalUpdateModal/LegalUpdateModal.js","common/components/LegalUpdateModal/index.js","common/types/index.js","common/selectors/users.js","ideaConceptCanvas/selectors/movement.js","common/components/Grid/PropTypes.js","common/components/Grid/Row.js","common/components/Grid/Col.js","common/components/Grid/Container.js","common/components/Grid/index.js","common/components/Media/Media.js","common/components/Media/MediaList.js","authentication/paths.js","telemetry/addBreadcrumb.js","authentication/actions/metrics.js","ideaConceptCanvas/stateSlices/status.js","common/actions/company.js","common/actions/navigation.js","common/actions/users.js","common/actions/notifications.js","common/actions/network.js","common/actions/onboarding.js","common/actions/index.js","featureFlags/client.js","utils/storage.js","common/reducers/factories/filter.js","common/reducers/factories/sorting.js","ideaConcept/utils/listReducer.js","ideaConcept/reducers/conceptList.js","profile/utils/payloadUtils.js","ideaConcept/components/ConceptImageInput/ConceptImageInput.module.scss","common/components/CategorySelector/CategorySelector.js","common/components/CategorySelector/index.js","ideaConcept/hooks/useIdeaConcept.js","common/containers/EmailConfirmationCallout/EmailConfirmationCallout.js","common/containers/EmailConfirmationCallout/index.js","notifications/constants.js","notifications/components/NotificationList/NotificationRow.js","notifications/types.js","notifications/components/NotificationList/NotificationList.js","notifications/components/NotificationList/index.js","notifications/containers/NotificationsPopover/NotificationsPopover.js","notifications/actions/index.js","common/components/TutorialButton/TutorialButton.js","common/components/GlobalPageHeader/GlobalPageHeader.js","ideation/selectors/index.js","common/components/RadioGroup/Radio.js","common/components/RadioGroup/RadioGroup.js","common/components/RadioGroup/index.js","dndCanvas/selectors/canvasItem.js","common/components/LazyComponent/LazyComponent.js","common/components/Icon/Icon.js","ideaConcept/hooks/useCanReviewConcepts.js","common/components/DateTime/DateTime.js","common/components/DateTime/index.js","profile/state/profile.js","utils/objectToQueryString.js","utils/setDocumentTitle.js","utils/windowOpen.js","common/api/usersApi.js","common/state/users.js","ideaConcept/api/conceptApi.js","ideaConcept/hooks/useEditConcept.js","ideaConcept/utils/formValidation.js","ideaConcept/hooks/conceptList/useIsListLoading.js","common/actions/socket.js","common/components/Ellipsis/Ellipsis.js","common/components/Ellipsis/index.js","utils/getFilenameFromAjaxHeader.js","common/reducers/modal.js","common/reducers/latestNotifications.js","common/reducers/onboarding.js","common/hooks/useTooltip.js","common/styled/variables.styled.js","common/containers/ImageSearchModal/useActiveImagePicker.js","ideaConceptCanvas/utils/translateConceptStage.js","ideaConcept/components/StageIndicator/StageIndicator.js","ideaConcept/components/StageIndicator/index.js","ideaConcept/components/StageDropdown/MenuItem.js","ideaConcept/components/StageDropdown/StageDropdown.js","ideaConcept/components/StageDropdown/index.js","ideaConcept/components/StageSelector/StageSelector.js","ideaConcept/hooks/useConceptStatusUpdate.js","common/components/Alerts/Alert.js","common/components/Alerts/Alerts.js","common/components/Alerts/index.js","ideaConcept/components/ConceptTeamAvatars/mapVisibilityInfo.js","ideaConcept/components/ConceptTeamAvatars/ConceptTeamAvatars.js","common/components/CookieConsent/CookieConsent.js","common/components/CookieConsent/index.js","common/components/IntercomClient/IntercomClient.js","common/components/IntercomClient/index.js","utils/saveFile.js","ideaConcept/actions/conceptPosts.js","challenge/constants.js","ideaConcept/hooks/conceptList/useListFetcher.js","ideaConcept/containers/ConceptTable/useGetCommentLike.js","common/selectors/meta.js","common/components/DayPicker/index.js","common/components/BootstrapSpinner/BootstrapSpinner.module.scss","ideaConcept/components/ReviewScoreDetails/ReviewScoreDetails.module.scss","dndCanvas/constants.js","ideaConceptCanvas/selectors/ideas.js","common/components/Tooltip/Tooltip.js","authentication/constants.js","common/getters/users.js","utils/strNormalise.js","common/components/Dropdown/Dropdown.js","common/components/Dropdown/DropdownContent.js","common/containers/authorization/renderOnCondition.js","common/containers/authorization/index.js","common/components/CheckboxGroup/CheckboxGroup.js","common/components/CheckboxGroup/index.js","utils/getItemByIdFrom.js","ideaConcept/utils/payloadUtils.js","ideaConcept/utils/validateConceptFilterQuery.js","common/reducers/factories/index.js","ideaConcept/components/ConceptListToolbar/ConceptListToolbar.module.scss","common/components/TimeInput/TimeInput.js","common/components/TimeInput/index.js","common/components/RadioGroup/Radio.module.scss","common/components/RadioButtonGroup/RadioButtonGroup.module.scss","common/components/PageHeader/PageHeader.module.scss","challenge/reducers/index.js","common/hooks/useWindowSize.js","ideation/state/phases.js","common/components/ConfirmDialog/ConfirmDialog.js","common/components/ConfirmDialog/index.js","common/components/Label/Label.js","common/components/Label/index.js","common/containers/ImageSearchModal/ImageSearchModal.js","common/containers/ImageSearchModal/index.js","ideaConcept/actions/modals.js","common/components/MutedText/MutedText.js","common/components/MutedText/index.js","ideaConcept/utils/conceptEvaluation.js","common/components/EditButton/EditButton.js","common/components/EditButton/index.js","common/actions/ideaConcepts.js","common/hooks/useFeatureFlag.js","common/hooks/useCategory.js","common/reducers/socket.js","common/components/Tooltip/withTooltip.js","feed/actions/index.js","common/components/Table/defaultHeaderRowRenderer.js","common/components/Table/defaultRowRenderer.js","common/components/Table/Table.js","common/components/Table/index.js","ideation/constants.js","common/components/Collapse/Collapse.js","common/components/Collapse/index.js","common/components/Badge/Badge.js","common/reducers/factories/loading.js","common/components/Modal/ModalTransition.js","common/components/Modal/Modal.js","common/components/Modal/Alert.js","common/components/Modal/index.js","common/selectors/entities.js","ideaConcept/constants.js","common/reducers/factories/error.js","utils/payloadUtils/image.js","utils/locale.js","ideaConcept/hooks/conceptList/useSetFilter.js","ideaConcept/hooks/conceptList/useUnsetFilter.js","common/reducers/ideaConcepts/commonMethods.js","common/reducers/ideaConcepts/conceptRevealReducerFactory.js","common/reducers/ideaConcepts/pendingEditReducerFactory.js","common/reducers/ideaConcepts/ideaConceptsReducerFactory.js","common/reducers/ideaConcepts.js","ideaConcept/components/ConceptImageInput/PickerWithTabNav.js","ideaConcept/components/ConceptImageInput/ConceptImageInput.js","common/components/Embed/Embed.js","common/components/Embed/index.js","common/components/BranchByFeature/BranchByFeature.js","common/components/BranchByFeature/index.js","common/components/Dot/Dot.js","common/components/Dot/index.js","common/components/HelpIcon/HelpIcon.js","common/components/HelpIcon/index.js","ideaConcept/components/ConceptTitleInput/ConceptTitleInput.js","ideaConcept/components/ConceptTitleInput/index.js","ideaConcept/components/ConceptDescriptionInput/ConceptDescriptionInput.js","ideaConcept/components/ConceptDescriptionInput/index.js","authentication/api/authApi.js","authentication/api/signupApi.js","common/actions/profile.js","common/hooks/useFetchCategories.js","common/containers/ImageSearchModal/PresetTab.js","common/containers/ImageSearchModal/UploadImageTab.js","ideaConcept/actions/metrics.js","ideaConcept/hooks/useSubmitQuickConceptForm.js","ideaConcept/containers/ConceptTable/useEditCommentLike.js","ideaConcept/containers/ConceptTable/useFetchCommentLike.js","common/components/EditableText/finalFormWrapper.js","common/components/EditableText/index.js","common/components/EditableText/inlineEditable.js","common/components/CircleSpinner/CircleSpinner.js","common/components/CircleSpinner/index.js","common/containers/withManualDiff/withManualDiff.js","common/containers/withManualDiff/index.js","common/containers/NetworkErrorCallout/NetworkErrorCallout.js","common/containers/NetworkErrorCallout/index.js","paths.js","common/containers/ImageSearchModal/useGoogleImageSearch.js","common/containers/ImageSearchModal/GoogleImagesTab.js","common/components/DateTimeInput/DateTimeInput.js","common/components/DateTimeInput/index.js","common/components/LanguageDropdown/LanguageDropdown.js","ideaConcept/components/TeamInput/TeamInput.js","ideaConcept/components/TeamInput/index.js","telemetry/setUserContext.js","telemetry/monitoring/trackTrace.js","utils/filteredReducerCall.js","ideaConcept/state/commentSliceFactory.js","constants/e2e.js","common/components/Table/SortIndicator.js","common/containers/ImageSearchModal/ImageGallery.js","common/containers/ImageSearchModal/useImageFetch.js","featureFlags/components/FeatureFlagProvider/FeatureFlagProvider.js","featureFlags/config.js","common/hooks/useInterval.js","featureFlags/components/FeatureFlagProvider/index.js","common/components/BootstrapSpinner/BootstrapSpinner.js","common/components/UrlInput/UrlInput.js","common/components/UrlInput/index.js","utils/linkify.js","common/components/LinkifiedSafeHtml/LinkifiedSafeHtml.js","common/components/Textarea/Textarea.js","common/containers/withOnboardingTip/OnboardingTipPopover.js","common/containers/withOnboardingTip/withOnboardingTip.js","common/containers/withOnboardingTip/withOnboardingManager.js","common/containers/withOnboardingTip/index.js","ideaConceptCanvas/utils/inlineRefs.js","utils/regex/url.js","utils/validation.js","common/components/TagsInput/TagsInput.js","common/components/TagsInput/index.js","common/components/RadioButtonGroup/RadioButtonGroup.js","common/components/RadioButtonGroup/index.js","authentication/components/AuthProvider/AuthProvider.js","challenge/utils/conceptEvalUtils.js","api/utils/apiResponse.js","utils/platform.js","profile/constants/index.js","utils/date.js","common/components/SliderInput/SliderInput.js","common/components/SliderInput/index.js","utils/getNumOrZero.js","ideation/utils/socketMsg/phases.js","ideaConcept/containers/QuickConceptForm/VisibilityInputs.js","ideaConcept/containers/QuickConceptForm/QuickConceptForm.js","ideaConcept/containers/QuickConceptForm/QuickConceptFormAmdocs.js","ideaConcept/containers/QuickConceptForm/index.js","api/utils/apiError.js","common/components/BulletedList/BulletedList.module.scss","common/components/GlobalPageHeader/GlobalPageHeader.module.scss","common/components/TabButton/Tab.module.scss","challenge/hooks/useChallenge.js","challenge/actions/index.js","dndCanvas/utils/filterActionByCanvasId.js","dndCanvas/selectors/canvasIdea.js","common/components/Heart/Heart.js","common/components/Heart/index.js","evaluation/selectors/index.js","common/components/BulletedList/BulletedList.js","common/selectors/permissions.js","common/hooks/usePrevious.js","challengeResults/constants.js","ideation/actions/itemMovement.js","ideation/utils/socketMsg/itemMovement.js","ideaConcept/containers/ConceptEditorForm/ConceptEditorForm.js","ideaConcept/containers/ConceptEditorForm/index.js","challengeResults/selectors/index.js","ideation/selectors/ideationPhase.js","ideaConcept/config.js","utils/location.js","common/actions/suggestions.js","common/hooks/useQueryParams.js","common/components/PlatformLogo/PlatformLogo.js","challenge/utils/payloadUtils.js","ideaConceptCanvas/utils/getAllowedCanvasBackgroundType.js","common/components/GridList/GridList.js","common/components/GridList/index.js","challenge/containers/UserTagsInputFormControl/UserTagsInputFormControl.js","challenge/containers/UserTagsInputFormControl/index.js","authentication/services/token.service.js","common/reducers/alerts.js","common/reducers/factories/pagination.js","challengeResults/stateSlices/challengeExport.js","utils/calculateSurplusItems.js","common/containers/PaginationHorizontal/Container.js","common/containers/PaginationHorizontal/index.js","common/containers/PaginationHorizontal/Navigation.js","common/containers/FieldWithManualDiff/FieldWithManualDiff.js","common/containers/FieldWithManualDiff/index.js","common/containers/ShareModal/ShareModal.js","common/containers/ShareModal/index.js","common/components/ChallengeInfoModal/ChallengeInfoModal.js","common/components/ChallengeInfoModal/index.js","common/components/DateTimeRangePicker/DateTimeRangePicker.js","common/components/DateTimeRangePicker/index.js","ideaConcept/components/ConceptTeamEditor/ConceptTeamEditor.js","ideaConcept/components/ConceptTeamEditor/index.js","ideation/utils/socketMsg/users.js","common/actions/love.js","common/reducers/factories/entityId.js","ideaConcept/reducers/conceptReview.js","utils/legal.js","common/selectors/router.js","ideaConcept/components/ConceptList/Placeholder.js","ideaConceptCanvas/paths.js","ideaConcept/components/ConceptOwnerAvatar/ConceptOwnerAvatar.js","ideaConcept/containers/ConceptPreview/ConceptPreview.styled.js","ideaConcept/containers/ConceptPreview/ConceptPreview.js","ideaConcept/containers/ConceptPreview/index.js","common/components/Navbar/Navbar.js","common/components/Navbar/NavbarItem.js","common/components/Navbar/index.js","common/components/Pagination/PaginationItem.js","common/components/Pagination/Pagination.js","common/components/Pagination/index.js","ideaConcept/actions/endpointCalls.js","common/containers/SearchForm/SearchForm.js","common/containers/SearchForm/index.js","authentication/components/AuthPageHeader/AuthPageHeader.js","common/components/DateTimePicker/DateTimePicker.js","common/components/DateTimePicker/index.js","common/components/DateTimeRangeInput/DateTimeRangeInput.js","common/components/DateTimeRangeInput/index.js","common/components/Notice/Notice.js","common/components/Notice/index.js","common/components/OverlayAction/OverlayAction.js","common/components/OverlayAction/index.js","common/components/Separator/Separator.js","ideaConcept/paths.js","common/components/UserItem/UserItem.js","common/components/UserItem/index.js","common/containers/SideOverlay/SideOverlay.js","common/containers/SideOverlay/index.js","utils/forceArray.js"],"names":["commonHeaders","getToken","Authorization","client","axios","create","timeout","HTTP_TIMEOUT_MS","headers","common","patch","post","put","withCredentials","interceptors","response","use","token","get","AuthSvc","handleNewToken","error","isUnauthenticated","flow","getApiResponseCode","isEqualFp","isWhitelisted","UNAUTH_PATH_WHITELIST","some","whitelistedPath","includes","authService","logout","Callout","isCepheidVariant","getPlatformName","isAmdocsVariant","isConnectHumanityVariant","editIdeaMsg","text","ideaId","mergedIdeaIds","sanitizedText","sanitizeForJSON","payload","sendSocketMessage","S_ID","MSG","IDEA_EDIT_REQ","submitIdeaMsg","posX","posY","posZ","mapPositionToMsg","IDEA_SUBMIT","deleteIdeaMsg","IDEA_DELETE_REQ","moveIdeaMsg","IDEA_MOVE_REQ","normaliseIdeaReceivedMsg","msg","mapPositionFromMsg","mapOwnerIdFromMsg","normaliseIdeaEditedMsg","commonIdProps","IDEA_ID","deleteImageMsg","imageId","IMAGE_DELETE_REQ","moveImageMsg","IMAGE_MOVE_REQ","submitImgMsg","image","IMAGE_SUBMIT","normaliseImageReceivedMsg","mapImageDataFromMsg","moveWordMsg","wordId","WORD_MOVE_REQ","normaliseWordReceivedMsg","map","word","position","logRequestFailure","requestError","message","category","data","errorCode","convertApiErrorToStatusCode","CommonException","ServerError","General","trackTrace","MonitoringSeverity","Error","BadRequest","Sentry","addBreadcrumb","level","Severity","snakeCase","getAuthor","idea","getParentConceptId","getEvaluationCount","getIdeaId","getIdeaText","getLoveCount","loveCount","likeCount","isNumber","getParentGroupId","getPermissions","getScore","isLoved","isOwn","isRevealable","isValidImageObject","hasContent","getUrl","getContent","getType","type","values","ImageTypes","getCountry","profile","getDescription","getLinkedinUrl","getWebsite","getWorkPosition","getWorkplace","getRegisterDate","getUserConsent","getOrFp","getAdminStatus","withModal","mapStateToProps","mapDispatchToProps","className","WrappedComponent","WithModal","props","isCloseButtonShown","closeable","onClose","size","t","rest","modalProps","isOpen","Modal","Close","onClick","defaultProps","displayName","getDisplayName","compose","translate","connect","dispatch","ownProps","boundActionCreators","isFunction","bindActionCreators","closeModal","children","spacing","Tag","tag","restOfProps","classes","classNames","useFormattedDateTime","timestamp","showDate","showTime","display","moment","format","flattenObject","obj","flattened","flatten","prevPath","forEach","val","key","newPath","isObject","Responsive","mediaHiddenDown","mediaHiddenUp","originalClassName","withResponsive","inlineHelpViewed","helpId","INLINE_HELP_VIEWED","metrics","useChallengeSearch","useState","isSearching","setIsSearching","useDispatch","useCallback","query","isEmpty","searchChallenges","limit","orderBy","descending","then","challenges","getChallengeId","finally","focused","css","StyledInput","styled","input","active","InputIcon","Icon","disabled","SearchInput","autoFocus","debounce","initialValue","onSearch","placeholder","style","value","setValue","debouncedQuery","interval","currentValue","setCurrentValue","useEffect","setTimeout","isEqual","clearTimeout","useDebounce","trim","onChange","e","target","onKeyDown","event","data-test","CountrySelect","state","suggestions","handleBlur","setState","handleChange","newValue","method","onSuggestionsFetchRequested","getSuggestions","onSuggestionsClearRequested","onSuggestionSelected","suggestion","cca2","this","countries","strNormalise","filter","country","name","countryCode","Array","isArray","find","nextProps","inputProps","onBlur","Autosuggest","getSuggestionValue","renderSuggestion","meta","Component","Counter","max","title","numValue","Number","displayedValue","aria-label","shouldShowVariant","ReviewScoreDetails","canEdit","scores","labelTranslatorFn","maybeTranslateCriterionLabel","hasLongLabels","getEvalCriterionName","length","CONCEPT_EVAL_CRITERIA_MAXLENGTH","formConfig","CepheidConceptEvaluationFormConfig","IdeaConceptEvaluationFormConfig","cepheidMarkers","returnObjects","NonIdealState","description","visual","HUMMINGBIRD","padding","cn","scss","Table","longLabels","criterion","label","score","getEvalCriterionAverage","scoreString","round","CRITERION_MAX","getEvalCriterionId","Header","BarGraph","width","Score","EMPTY_NUMBER","RadioGroupFormControl","formControl","RadioGroup","React","memo","required","choices","icon","layout","parse","validate","checkRequired","ListItem","ConnectedAvatar","Surplus","span","clickable","ConnectedAvatarList","avatarClassName","avatarSize","canExpand","maxDisplay","users","tooltipPosition","expanded","setExpanded","calculateSurplusItems","truncatedItems","surplus","visibleItems","ix","isSelf","isVisible","userId","blurred","wrapperClassName","zIndex","Panel","bodyClass","bordered","collapsible","header","headerClass","headerRole","HeaderTag","headerTag","onExpand","onExpanded","panelRole","rounded","smoked","shadowed","handleClick","headerClasses","bodyClasses","tabIndex","isString","cloneElement","role","Collapse","in","unmountOnExit","onEntered","module","exports","MODAL_CLOSE_ALL","openModal","createAction","MODAL_OPEN","MODAL_CLOSE","closeAllModals","openShareUrlModal","url","getFullPath","subtitle","modalType","CommonModalTypes","SHARE_URL_MODAL","openImagePickerModal","options","defaultOptions","availableTypes","PRESET","GOOGLE","UPLOADED","crop","defaultActiveType","onImageSelect","IMAGE_PICKER","bgClassName","showTooltip","Size","md","transparent","imgUrl","getContentDataUrl","initials","invariant","split","str","join","substr","getInitials","showPlaceholder","tooltipProps","useTooltip","tooltip","wrapperClasses","Wrapper","withInitials","bgClasses","Bg","maxValue","sample","range","charCodeHash","_","charCodeAt","num","reduce","diff","Math","abs","convertToRandomBackgroundId","src","alt","noLazyLoad","Image","placeholderColor","Initials","wrapperClass","Placeholder","Avatar","ProfileTab","aboutMe","avatar","isAdmin","linkedInUrl","registeredAt","userName","websiteUrl","workplace","Grid","Row","Col","xsGutter","xs","lg","isIE","xl","xsGutterX","Label","href","rel","LinkifiedSafeHtml","html","placeholderUrl","PureComponent","ownProfileSelector","localiseUserName","getUserAvatar","isAdminSelector","loading","withNonIdealState","isLoading","ImageInput","editText","onEdit","variant","PasswordResetHelp","requestStatus","setRequestStatus","handleRequestClick","a","IDENTITY_API","PASSWORD_RESET","marginTop","withRouter","location","activeGroup","Children","toArray","group","link","matchPath","pathname","path","to","exact","SecondaryNavigationGroup","SecondaryNavigationItem","activeClassName","SecondaryNavigation","Item","Group","DEFAULT_PROFILE_FORM_SETTINGS","requirePrivacyConsent","EXCEPTIONS","team","platform","InputFormControl","Input","RichTextFormControl","RichText","UrlInputFormControl","UrlInput","DESCRIPTION","PROFILE_FORM_FIELDS","FIRST_NAME","IMAGE","LAST_NAME","POSITION","WORKPLACE","WEBSITE_URL","LINKEDIN_URL","ProfileEditForm","requireConsent","setRequireConsent","useMountEffect","formSettings","handleSubmit","formData","unwrapResult","updateOwnProfile","omit","window","reload","FORM_ERROR","handleAvatarChange","aspect","PROFILE_IMAGE_ASPECT_RATIO","PROFILE_IMAGE_CROP_HEIGHT","language","useSelector","getCurrentLanguage","isNameReversed","lowerCase","userEmail","useContext","AuthContext","initialForm","getFirstName","getLastName","parseEditorState","initialValues","keepDirtyOnReinitialize","onSubmit","form","getState","invalid","submitting","submitError","submitSucceeded","firstName","lastName","avatarUserName","gutter","component","change","submit","translateApiErrorMessage","secondaryLabel","defaultValue","maxLength","POSITION_MAXLENGTH","maxlength","WORKPLACE_MAXLENGTH","hint","i18nKey","color","marginBottom","Checkbox","PasswordFormControl","Password","PasswordChangeForm","useLocation","routeParams","parseQueryString","search","resetToken","currentPassword","newPassword","profileApi","changePassword","code","Unauthenticated","dirtySinceLastSubmit","showLabel","composeValidators","password","PasswordPolicy","textAlign","fillParent","CheckboxGroupFormControl","CheckboxGroup","ContentLanguageForm","languages","handleFormSubmit","touched","SelectFormControl","Select","InterfaceLanguageForm","currentLanguage","changeLanguage","lang","toUpperCase","LanguageSettings","contentLanguages","platformDataSelector","getContentLanguages","activeInterfaceLanguage","SUPPORTED_UI_LANGUAGES","findByPropMatch","propKey","propVal","item","dropByPropMatch","privacyOptions","memoize","generateConsentModel","PrivacySettings","checkboxes","submitStarted","warningsOnSubmit","getModalSettings","sectionName","warning","getFp","handleCheckboxChange","choiceName","checked","modalSettings","shouldShowWarning","continueCheckboxUpdate","updateCheckboxState","okCallback","queueSubmitWarning","unqueueSubmitWarning","prevState","shouldBeFirstWarning","consentKeys","ACCOUNT_MANAGEMENT_CONSENT","showNextSubmitWarning","cancelCallback","settings","restOfWarnings","consentSettings","consentGiven","deleteProfile","catch","handleSubmitFail","updatePrivacy","handleSubmitSuccess","handleCookieReset","resetCookieConsent","each","isConsentGiven","section","choice","bind","stretch","modalComponents","ConfirmDialog","align","userConsent","ExportProfile","setSubmitting","succeeded","setSucceeded","setError","exportProfile","DeleteProfile","Auth","handleDelete","logoutUser","showConfirmDialog","okLabel","cancelLabel","email","CUSTOMER_SUPPORT_EMAIL","ModalRoot","SettingsTab","profileId","getUserId","paths","profileSettings","profilePasswordSettings","profileLanguageSettings","profilePrivacySettings","MODAL_COMPONENTS","ImageSearchModal","ProfilePage","FullScreen","GlobalPageHeader","Container","PrimaryNavigation","push","iconType","reducer","slice","fallbackMessage","tKey","NotFound","NetworkError","Timeout","Verbose","Info","Warning","Critical","action","theme","container","defaultImageUrl","HIDDEN_HUMMINGBIRD","hiddenImageUrl","LIST_HUMMINGBIRD","listImageUrl","asyncAction","current","handleAction","SUCCESS_LANGUAGE_CHANGE","userAgent","SET_USERAGENT_LANGUAGE","combineReducers","handleActions","NAVIGATION_CONFIRM","NAVIGATION_CONFIRM_CLEAR","UPDATE_ONBOARDING","PENDING","onboarding","open","SIDENAV_OPEN","combineActions","SIDENAV_CLOSE","ROUTE_CHANGE","internetStatus","INTERNET_STATUS_CHANGE","InternetStatus","CONNECTED","internetStatusSelector","network","getKey","id","getMeta","addEntities","entityType","entities","result","newIds","forceArray","mainEntityMappedIds","allIds","merge","newEntities","set","updateEntity","newState","cloneDeep","existingEntity","updatedEntity","store","SUCCESS","ADD_ENTITY","UPDATE_ENTITY","entityFactory","FETCH_SCHEMA_DATA","ERROR","errorByIdFactory","rootReducer","alerts","categories","challengeSettings","ideaConcepts","modal","navigation","latestNotifications","platformSlice","sidenav","socket","AuthorizationRequiredModal","handleLoginClick","history","handleRegistrationClick","AutosuggestFormControl","handleFilterChange","onFilterChange","touch","filterName","handleFilterBlur","filterValue","getDisplayValue","handleSuggestionSelect","s","shouldRenderSuggestions","setRef","el","registerField","focus","getValue","ref","v","formValueSelector","re","RegExp","escapeRegExp","test","initialize","forwardRef","SubmitButton","minWidth","asyncValidating","isSubmitting","pristine","isPristine","isError","getAnimationKey","getTranslation","textVariable","animateComponent","transitionName","transitionEnterTimeout","transitionLeaveTimeout","shouldAnimate","animate","states","when","renderComponent","loadingComponent","LoadingComponent","errorComponent","errorText","ErrorComponent","shouldHideIfEmpty","emptyComponent","emptyText","EmptyComponent","renderNothing","composeStates","branch","empty","CircleSpinner","hideIfEmpty","withProps","mapImageUrlFromMsg","imageUrl","roomSpecificUserId","owner","mapPhaseProps","produce","rawPhase","endsAt","ends_at","x","y","z","mapUserNameFromMsg","fullName","user","CHALLENGE_ID","entityKeys","CHALLENGE","challengeSchema","schema","Entity","commonSchemas","CATEGORY","FIELDS","CREATOR","USER","INVITED_USERS","INVITED_USER_ARRAY","idAttribute","CHALLENGE_ARRAY","ApiRegion","EU","US","VOYAGER_API","Symbol","SEARCH_API","RequestPaginationHeaderNames","Page","ResponsePaginationHeaderNames","Current","Last","Next","Prev","SortHeaderNames","SortBy","SortDirection","Asc","Desc","InitialPaginationConfig","currentPage","prevPage","lastPage","nextPage","Unauthorized","SOCKET_ID","CONCEPT_CANVAS","IDEATION","NOTIFICATION","SOCKET_PATH","SOCKET_EVENTS","HubConnectionState","Connected","CONNECTING","Connecting","DISCONNECTED","Disconnected","RECONNECTING","Reconnecting","TIME_TILL_NETWORK_ERRORMSG_MS","RECONNECTED_MESSAGE_TIMEOUT_MS","FILE_UPLOAD_TIMEOUT_MS","API_QUERY_DEBOUNCE","API_QUERY_STRING_MINLENGTH","first","last","getUserDisplayName","_addRange","Selection","prototype","addRange","apply","arguments","rangeCount","String","startsWith","searchString","padStart","Object","defineProperty","configurable","writable","targetLength","padString","repeat","padEnd","STORE_GROUPS","storeCanvasGroups","canvasId","sendUpdateGroup","ideaIds","groupId","groupTitle","oldGroupId","getGroupById","SOCKET_MSG","GROUP_ADD_IDEA_REQ","uniq","updateGroup","getIdeasByGroupId","hideGroup","sendRemoveIdeasFromGroup","itemIds","getCanvasItemPosition","groupItems","remainingItems","without","IDEAS_GROUPED","IDEAS_UNGROUPED","HIDE_GROUP","ungroupedItemIds","groupItemIds","removeItemsFromGroup","ideaGroupId","addItemsToGroup","RENAME_GROUP","renameGroup","sendRenameGroup","GROUP_RENAME_REQ","handleGroupUpdated","JSON","stringify","normaliseApiPosition","storeCanvasItemPosition","handleGroupRenamed","rootSelector","getBrowserLanguage","Heading","fetchOwnPlatform","getApiResponseData","fetchPlatformData","createAsyncThunk","Promise","all","platformApi","conceptReviewApi","fetchDefaultReviewCriteria","updateConceptReviewCriteria","arg","thunkApi","updateDefaultReviewCriteria","rejectWithValue","initialState","status","AsyncStatus","Idle","createSlice","extraReducers","pending","Loading","fulfilled","platformData","defaultConceptReviewCriteria","emailRegex","platformSettings","allowedEmailDomains","Succeeded","rejected","Failed","platformStoreSelector","defaultReviewCriteriaSelector","createSelector","reviewCriteriaLabelsSelector","mapFp","dataType","fileType","content","getListPageStore","getConceptListFilters","getFilterBy","getVisibleIdeaConceptIds","getVisibleIds","getVisibleIdeaConcepts","getEntityMap","IDEA_CONCEPT","visibleIds","concepts","handleAuthSuccess","logEvent","handleAuthFail","errorReason","PlatformNotFound","AuthException","InvalidLogin","AlreadyHasAccount","EmailNotAllowed","getApiResponse","defaults","setApiAuthHeader","setToken","clearToken","login","authenticationToken","provider","authApi","loginWithEmail","loginWithService","magicLogin","loginWithOneTimeCode","switchPlatform","companyId","signup","captchaToken","invitationCode","signupApi","signupUser","getCategory","challenge","getCategoryId","getCloseTime","getConceptEvalCriteria","getCreator","getHashtags","getFacilitatedStatus","getHighlightedStatus","getIdeationPhases","getIdeationTimeZone","getIdeationTime","getImage","getInvitedUsers","getLanguage","getScenario","ChallengeScenario","Default","getStartPhase","ChallengePhases","getStartTime","getStatus","getTitle","getIdeatorCount","getTopIdeators","getVisibility","getXAxis","getYAxis","getRevealableStatus","hasResults","isClosed","ChallengeStatus","CLOSED","OPEN","isAnnounced","ANNOUNCED","isPrivate","DELETED","ChallengeVisiblity","PRIVATE","isPublic","PUBLIC","isSensitiveChallenge","Sensitive","isLovedByUser","getChallengeById","challengeId","getEntity","makeGetChallengeById","isChallengeLoading","isEntityLoading","hasChallengeFailed","hasEntityFailed","getChallengeTitle","Popover","handleClickOutside","bodyStyle","popperProps","showFooterStripe","Progress","thickness","onClickOutside","PopoverTrigger","animationSpeed","popover","popoverStyle","popoverBodyStyle","popoverClassName","popoverPlacement","popoverModifiers","show","child","only","TransitionGroup","FadeTransition","speed","placement","modifiers","outsideClickIgnoreClass","getGroupId","getGroups","getGroupIds","getGroupMap","groups","makeGetGroupById","getCanvasIdeas","ideas","filterFp","makeGetIdeasByGroupId","Paragraph","positionObj","roundAndClamp","clamp","attachmentSchema","ATTACHMENT","idProps","ATTACHMENT_ID","suggestionSchema","SUGGESTION","creator","SUGGESTION_ID","ideaConceptSchema","attachments","evaluators","USER_ARRAY","IDEA_CONCEPT_ID","ATTACHMENT_ARRAY","IDEA_CONCEPT_ARRAY","SUGGESTION_ARRAY","flushConceptIds","FLUSH_CONCEPT_IDS","getCategoryName","upperFirst","truncate","omission","Section","PageHeader","lastChild","getOr","getAllIdsFrom","ids","offset","BLACKLISTED_ACTIONS","SOCKET_SUBSCRIBE","SOCKET_UNSUBSCRIBE","SOCKET_ERROR","NOTIFICATIONS_INIT","ONBOARDING_ENTER","ONBOARDING_LEAVE","ITEM_MOVED","BLACKLISTED_ERRORS","BLACKLISTED_URLS","BLACKLISTED_NS","IGNORED_STORES","NORMALISED_RESULT","SCHEMA_DEF","WHITELISTED_PROFILE_PROPS","ErrorLoggerSeverity","Debug","ADD_SUGGESTION_TO_IDEA","asyncActionType","APP_INIT","ALERT_CLEAR","ALERT_DISMISS","ALERT_SEND","CHALLENGE_CREATE","CHALLENGE_DELETE","CHALLENGE_PERMISSIONS","CHALLENGE_REOPEN","COMPLETE_INVITATION","COPY_TO_CLIPBOARD_BUTTON_CLICK","DELETE_CHALLENGE","DELETE_IDEA","EDIT_IDEA_CONCEPT","EMAIL_VALIDATE","FAILURE_LANGUAGE_CHANGE","FETCH_CHALLENGE","FETCH_IDEA_CONCEPT_BY_ID","UPDATE_IDEA_CONCEPT_FILTER","FETCH_UPDATE_PAYMENT_METHOD_URL","ACKNOWLEDGE_UPDATE_PAYMENT","FETCH_FEEDCARDS","FETCH_HASHTAGS","FETCH_NOTIFICATIONS","HIDE_FEED_PRIVACY_BANNER","IDEA_LIST_FILTER_CHANGED","IDEA_LIST_PAGINATED","JOIN_CHALLENGE","LOVE_CHALLENGE","LOVE_IDEA","NOTIFICATION_READ","NOTIFICATION_RECEIVED","NOTIFICATIONS_MARK","PHASE_CHANGED","PHASE_FORWARD_ENABLED","REMOVE_IDEA_CONCEPT_FILTERS","RESULTS_BRAINSTORM_BUTTON_CLICK","RESULTS_EVALUATE_BUTTON_CLICK","RESULTS_EVALUATE_CONCEPT_BUTTON_CLICK","REVEAL_IDEACONCEPT_IDENTITY","REVEAL_IDENTITY","SUBDOMAIN_VALIDATE","SHARE_BUTTON_INSIDE_THE_SHARE_MODAL_CLICK","ASC","DESC","WEBSOCKET_DISCONNECTED","SERVER_UNAVAILABLE","CONFIRM_NAVIGATE","USER_AUTOSELECT_TAG_DISPLAY_PROP","IdeaConceptsFilterBy","MY_IDEA_CONCEPTS","WROTE_SUGGESTION","ChallengeIdeasFilterBy","LOVED","OWNED","FeedModalTypes","SHARE_CARD","SHOW_CARD","minLength","minNumber","minLowercase","minUppercase","minSpecChars","OnboardingTips","WELCOME","CHALLENGE_CARD","START_IDEATION","ATTENDANTS","HUMMINGBOT","CHALLENGE_INFO","IDEATION_IDEA","LOVE","ADD_PICTURE","RANDOM_WORD","GO_TO_EVALUATION","EVALUATION_IDEA","EVALUATION_PROGRESS","OVERALL_EVALUATION","TOP_IDEATORS","IDEAS_SORT_CRITERIA","UNCOVER","BACK_TO_IDEATION","userConsentKeys","COOKIES_AND_LOGS_ACCEPTED","PERSONAL_DATA_MANAGEMENT_ACCEPTED","EMAIL_NOTIFICATIONS_CONSENT","CHALLENGE_INVITATIONS_ACCEPTED","MARKETING_EMAILS_CONSENT","MARKETING_EMAILS_ACCEPTED","NEWSLETTER_ACCEPTED","TERMS_AND_PRIVACY_ACCEPTED","MANDATORY_CONSENT_KEYS","HIDE_FEED_PRIVACY_BANNER_LOCALSTORAGE_KEY","CONSENTCOOKIE_ID","CONSENTCOOKIE_STATES","ALLOW","DENY","DISMISS","DIAGNOSTICS_PATH","RESULTS_PAGE_TRENDING_CONCEPT_GET_LIMIT","SUPPORTED_UI_LANGUAGES_NATIVE","en","de","hu","PREFERRED_LANGUAGE_LOCALSTORAGE_KEY","CATEGORY_ID","IMAGE_ID","USER_ID","BREAKPOINTS","XS","SM","MD","LG","sm","relative","getRelativeSize","currentSize","step","keys","sizeKey","findKey","sizeIx","findIndex","targetKey","enumerable","origin","items","isInvalidItem","isFinite","invalidItem","ITEM_POS_CHANGED","movedAt","Date","now","canvasItemMoved","socketMsg","socketMsgArgs","itemPos","getUserMovedItemId","sendMoveItemMessage","draggableType","msgId","DRAGGABLE_TYPES","GROUP","GROUP_MOVE_REQ","IDEA","MOVE_IDEA_REQ","IMPORTED_CONCEPT","MOVE_THROTTLE_MS","USER_DRAGS_ITEM","registerCanvasItemMovement","itemId","throttle","USER_STOPS_DRAGGING","deregisterCanvasItemMovement","joinCanvas","ideaConceptId","canvasType","updateSessionStatus","SESSION_STATUS","JOINING","CANVAS_JOIN_REQ","ACTIVE","canvasJoined","getArray","normaliseItems","mapPositionData","idGetter","images","findFp","Boolean","hasGroupContent","positionData","concat","getImageId","storeCanvasIdeas","storeImages","FLUSH_DATA","flushCanvasData","handleApiCallAction","apiCaller","preprocessor","identity","logData","processedArg","createBrowserHistory","MAX_ITEMS_IN_ROOM","CanvasBackgroundType","AmdocsBusinessModel","BusinessModel","BusinessModel2","CepheidBusinessModel","ConceptMap","EmpathyMap","GivaudanInt","InsightCanvas","MissionModel","ProblemDeconstruction","ProblemOpportunityMap","RiskAnalysis","SocialImpactMap","SmuValueProposition","SmuZones","StakeholderMap","CanvasContentRef","Concept","Separator","EDITOR","INACTIVE","IMAGE_SELECTOR_MODAL","ADD_IDEA_REQ","ADD_IDEA_TO_GROUP_REQ","DELETE_IDEA_REQ","EDIT_IDEA_REQ","GROUP_IDEA_ADDED","GROUP_MOVED","GROUP_RENAMED","IDEA_ADDED","IDEA_DELETED","IDEA_EDITED","IDEA_MERGE_REQ","IDEA_MERGED","IDEA_MOVED","IMAGE_DELETED","IMAGE_MOVED","IMAGE_RECEIVED","JOINED_CANVAS","LINK_CHALLENGE_IDEA","commentSliceFactory","sliceName","entityLabel","editFn","editFeedbackForConcept","fetchFn","fetchFeedbackForConcept","entityPropNormalizerFn","comment","feedback","actions","selectors","fetchFeedback","fetchComments","editFeedback","editComment","getFeedbacksByConceptId","getCommentsByConceptId","getGroupFeedbackByConceptId","getGroupCommentByConceptId","getUserFeedbackForConcept","getUserCommentForConcept","userSchema","invitedUserSchema","hash","getUserHash","categorySchema","CATEGORY_ARRAY","INVITED_USER","ieRegex","browser","regex","STORE_IDEAS","addCanvasIdea","ideaText","addCanvasIdeaMsg","linkChallengeIdea","linkChallengeIdeaMsg","CANVAS_IDEA_ADDED","canvasIdeaAdded","ideaLike","editCanvasIdea","existingMergedIdeaIds","getCanvasIdeaById","CANVAS_IDEA_EDITED","canvasIdeaEdited","messageType","mergeCanvasIdeas","mergeParentId","CANVAS_IDEAS_MERGED","canvasIdeaMerged","deleteCanvasIdea","deleteCanvasIdeaMsg","CANVAS_IDEA_DELETED","canvasIdeaDeleted","parentGroupId","siblingIdeaIds","n","amplitude","_q","_iq","r","createElement","async","onload","runQueuedFunctions","console","log","i","getElementsByTagName","call","parentNode","insertBefore","o","u","Identify","c","l","p","Revenue","d","getInstance","toLowerCase","hasOwnProperty","document","init","m","q","ga","iconClassName","inverse","iconClasses","aria-hidden","API_BASE_URL","process","getApiUrl","region","getFeatureFlagAsync","FeatureFlag","apiRegion","baseURL","bootstrap","STORE_CONCEPT_POST_IDS","DELETE_CONCEPT_POST","postId","FLUSH_CONCEPT_POST_LIST","loadingReducerFactory","FETCH_CONCEPT_POSTS","errorReducerFactory","conceptReview","ideaConceptsList","ideaConceptPosts","internalComments","commentsSlice","reviewerFeedback","feedbackSlice","newGroups","byId","isTopLevelIdea","negate","mergeChildIds","getMergedIdeas","keyByFp","isConceptRef","mergedIdea","parentId","mergedIdeas","groupIndex","STORE_IMAGES","keyBy","getPosX","getPosY","lastMoved","itemMovedByUser","reducers","conceptCanvas","filterActionByCanvasId","movement","createReducer","asyncReducers","combinedReducers","commonReducers","ideaConceptReducers","conceptCanvasReducers","formReducer","router","connectRouter","ownProfile","profileReducer","ERASE_STORES","undefined","createAuthGuard","config","next","authenticated","isTokenValid","redirect","reject","parsePage","rawPage","page","parseInt","isNaN","api","updateOnlineStatus","changeInternetStatus","navigator","onLine","request","sortBy","sortDirection","addEventListener","pendingActionCreator","successActionCreator","errorActionCreator","paging","assign","has","results","payloadMetaKeys","normalize","resource","clearAlerts","UNAUTHORIZED","authPaths","FORBIDDEN","reason","BAD_REQUEST","handleError","finalAction","localeMiddleware","preferredLanguage","getPreferredLanguage","browserLanguage","getLanguageShortCode","detectLanguage","uiLanguage","determineUiLanguage","persistPreferredLanguage","hasSchema","typeMatches","isFetchAction","hasNormalisedPayload","overEvery","isSchemaStoreAction","isFetchActionWithSchema","isOrdinaryFetchAction","ignorePayload","payloadIgnored","ignoreSchemaDefinition","scrubModal","pick","scrubProfile","omitEntities","scrubEntityObjects","handleOrdinaryFetchPayload","handleNormalisedPayload","flattenEntityKeys","mapValues","scrubStore","getChallengeRoot","setIf","targetObject","setIfFp","actionTransformer","cond","fetchOwnProfile","createSentryMiddleware","breadcrumbDataFromAction","filterBreadcrumbActions","isBlackListed","hasIgnoredNamespace","ns","stateTransformer","scrubChallengeState","challengeResults","scrubChallengeResultsState","getEntities","evaluation","evaluationRoot","ideaConceptEvaluation","conceptEvalRoot","ideation","scrubIdeationStore","ConsentCheck","isUndefined","trackingAllowed","isCookieConsentAccepted","getPage","urlQueryRegex","urlParts","possibleUUIDPart","replace","Amplitude","require","eventName","params","company","hostname","instance","_getInstance","setUserId","setGroup","GoogleAnalytics","_ga","eventLabel","eventCategory","vendors","pageDefaults","routeState","build","pageViewEvent","debug","EventTracker","track","eventGroup","ChallengeCreationTracker","coreTrack","visibility","numberOfInvitedUsers","invitedUsers","numberOfHashtags","hashtags","FeedTracker","HeaderTracker","LoginTracker","LOGIN_BUTTON_CLICK","SOCIAL_LOGIN_CLICKED","indexOf","RegistrationTracker","USER_SIGNUP","SOCIAL_SIGN_UP_BUTTON_CLICK","CONTINUE_SIGNUP_BUTTON_CLICK","CommonTracker","commonData","ChallengeResultsTracker","metricsPage","clickedAt","highlightedField","numOfRevealedIdeas","PAGINATE_IDEA_CARDS","pageCount","EXPORT_IDEAS","ChallengeSuggestionsTracker","suggestionLength","CLOSE_INTRO_MESSAGE","SKIP_SUGGESTIONS","VIEW_CHALLENGE_INFO","IdeaConceptsTracker","CHANGE_CONCEPT_STAGE","filterId","CONCEPT_LIST_CHANGE_STAGE_FILTER","CONCEPT_LIST_CHANGE_SORT","CREATE_QUICK_CONCEPT_FORM_OPEN","CREATE_IDEA_CONCEPT","createMetrics","metricsConfig","challengeCreationTracker","feedTracker","headerTracker","challengeSuggestionsTracker","ideaConceptsTracker","loginTracker","registrationTracker","commonTracker","challengeResultsTracker","metricsMiddleware","returnValue","getTokenData","currentDomain","benovativeEmployee","endsWith","setRouteState","pageView","socketMiddlewareFactory","connection","storedToken","socketId","socketHandler","autoConnect","loggingOut","latestToken","hasTokenChanged","shouldUpdateToken","shouldLogout","handleConnect","handleCloseConnection","SOCKET_INIT_CONNECTION","SOCKET_SEND_MESSAGE","handleSendMessage","handleAddListeners","handleRemoveListeners","SOCKET_CLOSE_CONNECTION","withToken","on","handleConnected","handleReconnecting","handleDisconnected","socketConnecting","disconnect","socketDisconnected","targetSocket","send","socketConnected","socketError","newListeners","listener","targetMessage","createListenerFromAction","listeners","off","adapterClass","_log","prefixedMsg","_validateEventId","eventId","_validateEventCallback","callback","_addHandler","handlers","_removeHandler","_callHandler","args","onConnected","onReconnect","onDisconnect","onReceive","onError","eventOrMap","isObjectLike","newToken","SignalrConnection","_tokenFactory","_addHandlerWithMsgType","eventType","onReconnected","connectionId","Signalr","withAutomaticReconnect","configureLogging","Information","withUrl","accessTokenFactory","onreconnecting","onreconnected","onclose","start","stop","currentState","invoke","isBoolean","SocketAdapter","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","shouldHotReload","shouldCatchErrors","DEFAULTS","defaultStore","urlGetter","noop","formatters","fromNow","lng","locale","toNow","humanize","duration","percentage","configureI18n","onReady","isDevelop","i18n","XHR","initImmediate","fallbackLng","nsSeparator","keySeparator","returnEmptyString","parseMissingKeyHandler","interpolation","escapeValue","formatSeparator","formatter","backend","loadPath","ajax","loadLocales","translations","default","platformCreationPage","div","Content","main","useQueryParams","loggedIn","AuthPageHeader","showAuthLinks","borderBottom","lightGrayScale","Menu","Submenu","collapsed","submenu","MenuItem","toggle","preventDefault","highlighted","menu__item","SubmenuItem","submenu__link","Drawer","opened","onCloseClick","Backdrop","visible","xPosition","spring","WebkitTransform","transform","ProfileCard","backgroundImage","AdminMenuItem","renderWhenAdmin","renderWhenAuthenticated","tips","onboardingTipsSelector","resetOnboarding","closeSidenav","authCtx","handleLanguageClick","generalAdmin","ErrorPage","HttpStatusCodes","INTERNAL_SERVER_ERROR","feed","context","BASE_CLASS","EVAL_MAX_SCORE","ConceptEvalConfig","ConceptTable","getConceptRowData","index","handlePreviewClick","openConceptPreview","renderTitleLabel","stripHTML","renderTitle","rowData","conceptSubpage","getIdeaConceptId","isConceptPrivate","marginRight","renderOwner","getOwner","renderTeam","ConceptTeamAvatars","renderStartDate","DateTime","getCreateTime","renderScore","getCompositeEvalScore","evalCount","getEvaluatorCount","count","renderStatus","StageSelector","preloadChallenge","renderAction","activePhase","canReviewConcepts","parentChallengeId","ConceptPhase","IMPLEMENTING","VALIDATION","DONE","conceptEvalPage","onMouseEnter","sortDisabled","onSortUpdate","rowCount","rowGetter","sort","bodyColumnClassName","headerColumnClassName","Column","dataKey","conceptListColumns","TITLE","flexGrow","flexShrink","disableSort","cellRenderer","headerClassName","OWNER","TEAM","CREATE_TIME","EVAL_SCORE","STAGE","fetchChallenge","flexBasisFromProp","heightFromProp","height","nested","StickyGroup","TableBody","Cell","TitleCellLabel","CommentCell","AlignedCellContent","alignItems","justifyContent","flexDirection","flexBasis","maxWidth","SingleLineHeight","ROW_HEIGHT","pre","ScrollSpyContext","createContext","activeId","dispatchAnchor","parentRef","ScrollSpyProvider","tolerance","useRef","anchorRefs","refs","scrollTo","left","offsetLeft","behavior","activeAnchorId","setActiveAnchorId","findActiveAnchor","requestAnimationFrame","parent","anchors","minVisible","scrollLeft","visibleAnchor","anchor","findActiveAnchorDebounced","scrollParent","removeEventListener","Provider","Disk","TableNav","activeAnchorIx","ctx","useActiveScrollAnchor","prevBtnTarget","nextBtnTarget","min","scrollIds","handleScroll","useScrollToAnchor","lineHeight","paddingLeft","paddingRight","concept","btnProps","getUserEvals","averageScore","paddingTop","avgUserScore","reduceFp","sum","avg","fontSize","conceptTitle","expandState","marginLeft","Ellipsis","Rectangle","background","CriterionScoreIndicator","rules","matcher","labelRenderer","matchingRule","rule","ScrollAnchor","anchorRef","useScrollAnchor","ScoreLabel","criterionScore","scrollIx","criterionId","getEvalScoreArray","average","userEval","useViewCommentLike","conceptId","authorId","commentSelector","useMemo","CONCEPT_COMMENT_DISPLAY","onOpen","onVisible","setStatus","fetchData","fetchOnVisible","isCellVisible","delayedCall","minHeight","ExpandedCommentCell","DisplayComponent","as","TranslatedFeedbackDisplay","shouldFetchOnVisible","canShowFeedback","useIdeaConcept","isTeamMember","getTeam","useCanShowFeedback","canEditFeedback","feedbackAuthorId","ownUserId","useCanEditFeedback","useGetCommentLike","fetch","useFetchCommentLike","useEditCommentLike","openEditor","openReadOnly","resolve","TranslatedInternalCommentDisplay","canShowComment","startTime","toLocaleDateString","comments","useTableConfig","leftStickyCols","sticky","ariaRole","renderMain","CellRenderer","renderExpanded","criteria","bodyCols","renderHeader","mapEvalCriteriaToColConfig","INTERNAL_COMMENT","REVIEWER_FEEDBACK","useActiveStageFilter","useCanReviewConcepts","openPreview","prefetchChallenge","rightStickyCols","shouldRenderReview","colsHiddenFromAdmin","colsHiddenFromUser","hiddenCols","colConfig","ColHeaderBtn","button","ColHeader","colId","sortDir","SortIndicator","MeasuredCell","onSizeChange","scope","ariaSort","useLayoutEffect","rect","getBoundingClientRect","cols","rows","controlsRowHeight","getCellSize","getExpandState","onExpandRow","onCellSizeChange","col","rowId","rowState","cellId","TableBodyWithScroll","scrollRef","useScrollParent","conceptListFilterKeys","stageFilters","getStageFilters","stageFilterIds","getStageFilterIds","activeStageFilter","useIsListLoading","setFilter","useSetFilter","overwriteValue","changeListStageFilterMetrics","stage","conceptListPage","getStageTranslation","OTHER_FILTER_ID","ChallengeRow","onSelect","ChallengeList","selections","ActiveSelections","onSelectAll","onDeselectAll","handleSelectAll","List","ChallengeSearch","setIsPristine","listItems","setListItems","handleSearch","handleQueryInput","existing","centered","LatestChallengesTab","setLoading","latestChallenges","setLatestChallenges","fetchFeed","challengeIds","ChallengeFilter","activeTab","setActiveTab","hasChangedTab","setHasChangedTab","selectedItems","setSelectedItems","selectedCounter","handleTabClick","tabId","handleSelection","persist","currentSelections","handleDeselectAll","aria-labelledby","ariaId","Footer","setIsOpen","handleClose","handleToggle","flip","enabled","ChallengeSearchPopover","FilterOption","CategoryFilter","useFetchCategories","showAllCategs","activeCategory","useCategory","setOpen","useOnClickOutside","handleDropdown","handleSelect","Dropdown","renderOption","categoryId","categId","CONCEPT_TYPE","INVOLVEMENT","OWN_CONCEPTS","conceptListFilterEnums","MY_CONTRIBUTIONS","QUICK_CONCEPTS","activeFilters","unsetFilter","useUnsetFilter","handleCategChange","handleChallengeChange","handleCheckboxToggle","isFilterActive","includesFp","ChboxWrapper","chosenChallengeCount","sizeFp","handleClearChallengeFilter","ConceptListToolbar","showReviewButton","disableReview","StageRow","StageFilters","opacity","cursor","getWidthSum","totalLeftStickWidthPx","totalRightStickyWidthPx","expandStates","setExpandStates","handleExpandClick","cellSizes","setCellSizes","handleCellSizeChange","sizes","withScrollSpy","fetchList","useListFetcher","handleNextPage","isEndOfPage","listStore","getSortBy","getSortDirection","sortConfig","flushList","changeListSortMetrics","useSorting","handleSortChange","xsGutterY","isGroupComment","htmlFromState","Attrib","darkGrayScale","createdAt","toLocaleString","useHistory","onInfoClick","handleConceptSubmitSuccess","IdeaConceptImplementationStatus","openNewConceptModal","openConceptEditor","formTitle","formSubmitLabel","openQuickConceptFormMetrics","cta","BranchByFeature","feature","canUseInsights","HelpIcon","CONCEPT_PREVIEW","SideOverlay","ConceptPreview","CONCEPT_COMMENT_EDITOR","ConceptReviewerCommentModal","CommentDisplayModal","DESCRIBE_IDEA_CONCEPT_FORM","QuickConceptFormAmdocs","QuickConceptForm","TEAM_EDITOR","ConceptTeamEditor","conceptListStageFilterIdsCepheid","conceptListStageFilterIds","Subpage","lazy","EvalPage","ProtectedEvalPage","allowed","redirectTo","LazyComponent","IdeaConceptRoot","filters","lastFilterId","CONCEPT_LIST_DEFAULT_STAGE_FILTER","filterPathParam","conceptStatus","findFilterPathParam","redirectTarget","allowConceptReview","useRouteMatch","CONCEPT_LIST","CONCEPT_SUBPAGE","CONCEPT_EVALUATION","ConceptCanvasPage","ConceptMapCanvasPage","ConceptCanvasRoot","showCanvas","getAllowedCanvasBackgroundType","fallback","isConsentRequired","consentModel","Banner","aside","bodyBg","icons","info","AnnouncementBanner","margin","setShow","lastDismissTime","LocalStorage","handleDismiss","WelcomeModal","onViewed","Embed","allowFullScreen","updateOnboarding","Main","toggleSpinner","isProfileLoadingSlowly","checkUserConsent","consentData","LEGAL_UPDATE_MODAL","FeedPage","asyncComponent","injectModuleReducers","AdminPage","requireAdminRole","IdeationPage","EvaluationPage","ChallengeResultsPage","ChallengeCreationPage","DuePaymentsPage","SuggestionsPage","fetchPlatform","fetchProfile","fetchCategories","maybeOpenWelcomeModal","shouldFetchProfile","consentRequired","timer","FeatureFlagProvider","SystemAdminPage","render","CONCEPT_ROOT","CONCEPT_CANVAS_ROOT","LegalUpdateModal","getRedirectTarget","itsATrap","TokenUpdaterPage","useParams","handleReload","appID","App","shouldUseNewAuth","AuthenticationPage","MagiclinkPage","magiclinkModule","RegistrationConfirmationPage","confirmationModule","ConfirmationPage","InvitationPage","invitationModule","PlatformCreationPage","renderAnonymousRoutes","RedirectToAuth","renderAuthenticatedRoutes","renderLegacyAuth","renderNewAuth","profileState","hasProfile","useNewAuth","BootstrapSpinner","Alerts","PaymentStartLandingPage","CookieConsent","IntercomClient","contextType","getProfileStore","configureRoutes","routeChange","prevLocation","listen","mod","asyncReducer","replaceReducer","injectAsyncReducer","API_PATH","lightTheme","DndProvider","HTML5Backend","AuthProvider","isLocalhost","sentryEnv","isInternal","dsn","release","environment","denyUrls","ignoreErrors","initSentry","appInsights","loadAppInsights","addTelemetryInitializer","envelope","tags","AZURE_ROLE_NAME","trackPageView","tokenData","setUserContext","initTelemetry","enableES5","enableMapSet","bootstrapApi","apiBaseURL","middlewares","thunk","createDebounce","apiMiddleware","signalrSocket","routerMiddleware","errorLoggerMiddleware","createStore","applyMiddleware","configureStore","apiSymbol","baseUrl","getApiSymbolPath","ReactDOM","getElementById","backdropClassNames","base","light","dark","brainstorming","getCurrentConcept","validateConceptFilterQuery","arrayFormat","res","review","queryString","evaluationCriteria","mapEvaluationModelToPayload","lastConcept","currentConcept","newConfig","commentStr","isGroupInternalComment","internalComment","isGroupFeedback","initSession","reviewConcept","fetchInternalCommentsForConcept","editInternalCommentForConcept","addEntity","delta","categoriesApi","categsAdapter","createEntityAdapter","selectId","getInitialState","categoriesSlice","setAll","categoriesStoreSelector","getSelectors","getEntities_new","getStoreStatus","activeModalSelector","ActiveModal","stringifyQueryParams","addQueryPrefix","updateSomeQueryParams","allParams","queryType","paramConfig","updatedParams","pathParams","ignoreQueryPrefix","param","fn","getAllowedEmailDomains","schemas","deleteChallenge","PrimaryNavigationItem","center","secondary","linkClasses","showLink","showButton","showStatic","justify","scrollable","wrap","PrimaryNavigationButton","Button","defaultHeaderRenderer","defaultCellRenderer","cellData","defaultCellDataGetter","cellDataGetter","headerRenderer","profilePayload","scrubProfilePayload","delete","fileName","getFilenameFromAjaxHeader","saveJson","passOrToken","updateProfile","brandGradient","end","ColorVariantHex","primary","success","danger","ColorVariant","dndCanvas","accentColor","canvasBg","dismissAlert","kind","dismissAfterMs","sendAlert","alert","getTime","StyleButton","onToggle","onMouseDown","BLOCK_TYPES","BlockStyleControls","editorState","selection","getSelection","blockType","getCurrentContent","getBlockForKey","getStartKey","INLINE_STYLES","InlineStyleControls","currentStyle","getCurrentInlineStyle","CUSTOM_STYLE_MAP","OVERFLOW","setEditorRef","editor","handleKeyCommand","command","RichUtils","handleTab","maxTabDepth","onTab","toggleBlockType","toggleInlineStyle","inlineStyle","markOverflow","readOnly","editorClassName","showToolbar","onFocus","EditorState","createEmpty","renderPlaceholder","hasText","renderToolbar","editorClasses","autoCapitalize","autoComplete","autoCorrect","spellCheck","customStyleMap","sendImage","random","UPLOAD_CANVAS_IMAGE","uploadCanvasImage","imageReceived","DELETE_CANVAS_IMAGE","deleteImage","imageDeleted","openImageSelectorModal","uploadImageType","SeverityLevel","FILTER_ITEMS_BY","REMOVE_FILTER","REMOVE_FILTER_TYPE","filterItemsBy","reducerId","overwriteExisting","overwrite","removeFilter","removeAllFiltersWithKey","AcceptCheckboxField","Field","CheckboxFormControl","CheckboxButton","CheckboxButtonGroup","prevValue","nextValue","union","choiceItems","acc","checkbox","DumbTextarea","marked","resizable","submitFailed","FadeSlideUpTransition","ImagePreview","previewLabel","prependBase64Content","RightSlideTransition","CSSTransition","enter","exit","transition","facebook","picture","hashtag","objectToQueryString","twitter","via","linkedin","summary","supportedNetworks","links","ShareButton","windowWidth","windowHeight","windowOptions","windowOpen","opts","networks","Text","TruncatedText","getButtonProps","toggleCollapse","renderTruncated","triggerComponent","isTruncateNecessary","TwoColumnLayout","side","mainBreakpoints","sideBreakpoints","mdOffset","lgOffset","xlOffset","CountrySelectFormControl","DateTimeInputFormControl","DateTimeInput","DateTimeRangeInput","EditableText","inlineEditable","ImagePreviewFormControl","TagsInputFormControl","RadioButtonGroup","TagsInput","TextareaFormControl","Textarea","SliderInput","TabButton","Btn","btnAria","focusFirstSuggestion","inputClasses","handleSelected","selected","containerOpen","suggestionsContainer","suggestionsList","suggestionHighlighted","sectionContainer","sectionTitle","AutosuggestFinalFormAdapter","getFilteredChoices","testEqualDisplayValues","handleUserInput","updateValue","selectionCallback","suggestionValue","stubTrue","getFormConfig","insightForm","platformName","conf","InsightFormConfig","ConceptFormConfig","getLabelNamespace","isFieldLabelCustomised","canAllUsersReviewConcepts","canCreateChallenge","showFeedCategories","useCanvasGroupMerge","BENEFITS","conceptEditorFormFields","COSTS","IDEA_TEXT","IMAGE_URL","IS_PRIVATE","PLANNED_ACTIVITIES","CONCEPT_STATE","getActivities","getBenefits","getFollowUpChallengeId","getCosts","getEvaluationData","getEvalCriteria","evalData","getEvaluatorList","getImageUrl","canEditConcept","isEditable","getRevealTime","getSuggestionCounter","suggestionCounter","suggestionsArray","getDenormalizedTeam","getUserEntity","getTrendingScore","getSuggestionAuthorsByConceptId","getConceptById","suggestionMap","getItemByIdFrom","hasConceptSuggestionFromUser","suggestionAuthors","isQuickIdeaConcept","getEntityIds","getConceptFormModelById","createConceptFormModel","getUserByIdAsInvitee","imagesRoot","getCanvasImageIds","getCanvasimageById","imageMap","makeGetCanvasImageById","CanvasIdProps","getOwnerId","maybeValidateRequired","isRequired","IDEA_CONCEPT_DETAILS_FIELD_MAXLENGTH","ConceptRichTextField","isCookieConsentDenied","Cookie","isCookieConsentVisible","remove","emailRegExp","convertUserToInvitee","userObject","userObj","convertInviteeToIdString","invitee","getEmailFromInviteeDisplayName","match","ApplicationInsights","instrumentationKey","distributedTracingMode","DistributedTracingModes","AI_AND_W3C","enableAutoRouteTracking","load","AsyncComponent","canSubmit","isSubmitFailed","shouldShowTermsPrivacyUpdate","shouldShowDataMgmtUpdate","shouldShowCookieUpdate","getInitialConsentFields","termsAccepted","dataMgmtAccepted","cookiesAccepted","privacyAccepted","getConsentPayload","handleCheckboxUpdate","renderTermsUpdate","renderPrivacyUpdate","renderDataMgmtUpdate","renderCookieUpdate","shouldShowAccMgmtUpdate","isSubmitDisabled","shouldDisable","imageDetailsType","PropTypes","oneOf","shape","string","func","number","userCoreInfoType","oneOfType","any","getUserById","makeGetUserEntity","getMovementRoot","positionMap","makeGetCanvasItemPosition","getLastMovementMap","sortByLastMoveAsc","tuples","tail","findHighestByTupleTail","maxByFp","getLastUserMovedItemId","movementMap","toPairs","head","getZIndexByItemId","isEqualToItemId","getZIndexByMoveOrder","findIndexFp","makeGetZIndexByItemId","stringOrNumberProp","noWrap","widths","responsiveSuffix","popProp","suffix","propName","kebabCase","unordered","colClasses","fluid","Media","bodyAlign","hideOverflow","mediaObject","Link","MediaList","condensed","registration","socialSignup","redirectPath","loginPath","toUpper","loginButtonClick","signUpButtonClick","withInvitation","continueSignUp","socialLoginClicked","socialSignUpButtonClick","sessionStatus","getSessionStatus","getUpdatePaymentMethodURL","acknowledgeUpdatePayment","hostedPageId","validateSubdomain","subdomain","confirmNavigation","clearNavigationConfirm","validateEmail","initNotifications","receivedNotification","markNotificationRead","serverEvents","subscribeNotifications","unsubscribeNotifications","enterOnboarding","leaveOnboarding","err","updatePreferredLocale","openSidenav","shareButtonClick","eraseStores","copyToClipboardClicked","targetingData","custom","logger","ConfigCat","configCatClient","cacheTimeToLiveSeconds","flagKey","fallbackValue","getValueAsync","getAllFeatureFlagKeys","getAllKeys","addOrUpdateFilter","shouldOverwrite","existingValues","arrayOfTargetValues","existingVals","dropTargets","updatedFilter","updatedFilters","unset","filterReducerFactory","defaultFilters","reducerIdMatches","DEFAULT","sortingReducerFactory","actionType","defaultState","currentAction","actionMatchesStage","stageId","isFlushAction","REDUCER_ID","stagesWithOwnFiltersCepheid","stagesWithOwnFilters","paginationReducer","paginationReducerFactory","successActions","FETCH_IDEA_CONCEPTS","flushActions","cursorBased","CONCEPT_LIST_PAGE_SIZE","filterBy","pagination","stageIds","reducerFn","reducerMap","filteredReducerCall","reduceFiltersToReducers","CONCEPT_LIST_DEFAULT_SORT","entityIdReducerFactory","idProp","createProfilePayload","pickValidProfileKeys","maybeHtmlFromState","createPrivacyPayload","existingConsent","newSettings","categStatus","categSelectors","isLoadingNew","hasError","hasFailed","isDisabled","CategorySelector","normalisedConcept","fetchConcept","fetchIdeaConceptById","existingEntities","denorm","denormalize","getError","EmailConfirmationCallout","setSuccess","handleRequestEmail","resendAccountVerificationEmail","NotificationType","CHALLENGE_STARTED","CHALLENGE_ENDED","CHALLENGE_INVITATION","GROUP_IDEATION_TIME_CHANGED","CHALLENGE_LOVED","IDEA_LOVED","REVEAL_IDEA","NEW_IDEA","IDEA_CONCEPT_INVITATION","NotificationAction","notification","feedDetails","owned","ChallengeIdeasSortBy","Popularity","reveal","NotificationRow","notificationId","linkedUser","groupIdeationDateTime","read","MutedText","dateTime","NotificationList","notifications","onNotificationClick","NotificationsPopover","handleNotificationClick","markNotifications","notificationsSelector","notificationIds","avatarTooltipProps","isConfirmed","setShowNotifications","openDrawer","unreadNotificationCountSelector","showCompactLogo","useWindowSize","logoClasses","alignWithMenu","root","PlatformLogo","compact","MobileCta","NetworkErrorCallout","hummingbirdLoveCountSelector","roomSpecificUserIdSelector","roomIdSelector","getById","getIdeas","getImages","getWords","getItemsMovedByUser","isItemMovedByUser","visibleEntitiesSelector","ideasById","imageIds","imagesById","b","splice","visibleIdeasSelector","ideationIdProps","visibleImagesSelector","phaseSelectors","getCurrentPhase","phaseConfig","preselectedImages","wordsSelector","itemsMovedByUser","preselectedWords","words","allWords","movedByUser","ideasSelector","getCurrentPhaseType","visibleIdeas","unseenIdeas","lovedIdeas","phase","loved","unseen","own","redacted","IdeationPhaseType","Redacted","imagesSelector","visibleImages","getAllCanvasItems","ideationRootSelector","usersSelector","usersOrderByLoveSelector","isCurrentUserInRoom","ownTempId","ownAccountId","participantIds","TYPE_SELECTORS","WORD","getZIndexForItem","getZIndex","getNumOrZero","getMaxZIndexForType","isOnline","Radio","aria-checked","wrapper","radio","radioChecked","radioDisabled","iconClass","xmlns","xlinkHref","spriteUrl","checkIfIE","shouldFallBackToIE","withSVGFallbackForIE","componentDidMount","svg4everybody","componentDidUpdate","prevProps","removeIEProp","mapProps","withTooltip","lifecycle","canAllUsersReview","useFeatureFlag","date","time","formattedTime","condition","LANGUAGE","CONSENT","profileSlice","object","encodeURIComponent","setDocumentTitle","outerWidth","screenX","screenLeft","top","outerHeight","screenY","screenTop","toolbar","directories","menubar","scrollbars","centerscreen","chrome","searchUsers","usersApi","usersAdapter","searchHits","usersSlice","flushUserHits","usersStoreSelector","getSearchHits","fetchConceptById","updateConcept","useEditConcept","allEntities","oldEntity","newData","existingData","createConceptPayload","conceptApi","validateConceptTitle","charLimit","IDEA_CONCEPT_TITLE_FIELD_MAXLENGTH","validateConceptDescription","validateTeamMembers","minMembers","validateInvitedUsers","members","collection","minItems","PREFIX","SOCKET_CONNECTING","SOCKET_CONNECTED","SOCKET_DISCONNECTED","connectToSocket","disconnectFromSocket","subscribeToEvents","events","unsubscribeFromEvents","throttleMs","FILENAME_REGEX","headerString","stack","unreadCount","getOnboardingBitSet","onboardingHex","BitSet","fromHexString","onboardingTipSelector","tip","flags","isOnboardingTipActiveSelectorFactory","activeModal","intercomDimensions","vPadding","hPadding","tabs","UploadImageTab","GoogleImagesTab","PresetTab","useActiveImagePicker","defaultType","activePickerType","setActivePickerType","getComponent","setType","camelCase","StageIndicator","StageIndicatorMenuItem","stageEnum","IdeaConceptImplementationStatusCepheid","StageDropdown","showPopover","setShowPopover","toggleVisibility","preventOverflow","boundariesElement","errorMessage","displayedStage","setDisplayedStage","editConcept","newStage","changeConceptStageMetrics","useConceptStatusUpdate","Alert","actionLabel","onActionClick","statusIcon","groupedAlerts","groupBy","ALERT_TOAST","mapVisibilityInfo","creatorId","currentUserId","forceReveal","ownerId","revealedAt","memberId","isCreator","isOwner","visibilityMapper","mappedMembers","isInitialized","cookieconsent","initialise","getCookieConsentConfig","cookie","allow","deny","revokable","userProfile","userData","user_id","vertical_padding","saveFile","mimeType","file","Blob","FileSaver","saveAs","saveExcel","conceptPostSchema","CONCEPT_POST","getHalSelfLink","getIdFromHref","Accept","fetchPosts","normalisedResult","getEmbeddedItems","SUBMIT_CONCEPT_POST","EDIT_CONCEPT_POST","saveConceptPost","updatedText","sanitizeForJson","editPost","submitPost","deleteConceptPost","flushConceptPosts","CHALLENGE_DESCRIPTION_MAXLENGTH","CHALLENGE_IMAGE_ASPECT_RATIO","CHALLENGE_IMAGE_CROP_HEIGHT","CHALLENGE_TITLE_MAXLENGTH","EVALUATION_AXIS_LABEL_LENGTH","INVITE_EMAIL_MAXLENGTH","CHALLENGE_SENSITIVE_MIN_PARTICIPANTS_FOR_LIST","CHALLENGE_FORM_FIELDS","AXIS_X","AXIS_Y","CLOSE_TIME","CONCEPT_EVAL_CRITERIA","CRITERION","ID","NAME","DEFAULT_CONCEPT_OWNER","DURATION_CUSTOM","DURATION_PRESET","FACILITATED","FEATURED","GROUP_IDEATION_TIME","GROUP_IDEATION_TIMEZONE","HASHTAGS","IDEATION_PHASES","IDEATION_ROOM_MAX_SIZE","INVITE_EMAIL","INVITE_ALL_USERS","SCENARIO","START_PHASE","START_TIME","VISIBILITY","ChallengeDurations","oneDay","twoDays","oneWeek","twoWeeks","EVALUATION","DefaultConceptOwner","ChallengeOwner","IdeaCreator","CombinedScore","ValueX","ValueY","CreatedAt","DELETE_CHALLENGE_MODAL","EDIT_CHALLENGE","activeStagePathParam","fetchAllIdeaConcepts","getSelectorFor","commentType","itemWithCreator","getEditTime","getLimit","getNextStart","getStart","getTotal","getPagination","getSort","getCurrentPage","getNextPage","getLastPage","DayPicker","SIZE_UNITS","PX","PERCENT","Idea","NETWORK_ERROR","NO_NETWORK","SOCKET_FAILED","SOCKET_RETRY","NETWORK_ERROR_CALLOUT_TYPES","ideasRoot","getCanvasIdeaIds","ideaMap","makeGetCanvasIdeaById","findLastModifyTime","Tooltip","InvalidInvitation","SignupForInvited","SOCIAL_EXCEPTIONS","NOT_READY","NOT_AUTHORIZED","NOT_LOGGED_IN","UNKNOWN_ERROR","UNKNOWN_PROVIDER","SSO_Provider","FACEBOOK","LINKEDIN","SignupFormFields","getUserEmail","convertDoubleQuotes","deburr","isActive","handleHide","onHide","handleShow","onShow","getChildProps","withClickOutside","DropdownContent","bubble","forwardedRef","renderOnCondition","RenderOnCondition","dispayname","isAuthenticated","constant","inputValue","warn","FOLLOW_UP_CHALLENGE","benefitsHtml","costsHtml","ideaTextHtml","plannedActivitiesHtml","mappedInvitedUsers","ERR","conceptStages","isPlainObject","validatorMap","validateFilter","forEachFp","validatorFn","every","filterVal","loop","loopHour","loopMinute","zeroPad","TimeInput","handleHourChange","localDate","parseDate","hour","formatDate","setHours","handleMinuteChange","minute","setMinutes","localeData","longDateFormat","getHours","getMinutes","sendEmailToEveryone","featuredChallengeCanBeSet","companyWideChallengeCanBePublished","customCreatorCanBeSet","hashtagsSelector","isAllSendAllowedSelector","isFeaturedAllowedSelector","isPublicAllowedSelector","isCreatorEditableSelector","isClient","getSize","innerWidth","innerHeight","windowSize","setWindowSize","handleResize","maybeResize","canUserChangePhase","currentPhaseId","configs","phasesSlice","phaseChangedWithConfig","normalisePhaseChangedWithConfigMsg","phases","toggleManualChange","builder","addCase","ideationPhaseId","ideationPhases","idMatches","targetId","getCurrentPhaseId","getAllPhaseConfigs","getPhaseById","currentId","getCanUserChangePhase","getNextPhaseId","currentIx","advancePhase","nextPhaseId","reqPhaseChangeMsg","onConfirm","autoClose","onCancel","bgColor","backgroundColor","Icons","Tab","activeType","shouldShowNavToDefaultTab","mdGutterX","customFormPayload","focusedField","onSuccess","openConceptOwnerForm","CONCEPT_OWNER_FORM","openBasicConceptEditorModal","BASIC_CONCEPT_EDITOR","onSubmitSuccess","openConceptFieldEditorModal","fieldName","CONCEPT_FIELD_EDITOR","openActivitiesEditorModal","ACTIVITIES_EDITOR","openBenefitsEditorModal","BENEFITS_EDITOR","openCostsEditorModal","COSTS_EDITOR","openTeamEditorModal","openConceptMapModal","CONCEPT_MAP_PREVIEW","backdropType","mapOfValues","evalArray","evalKey","isDefaultInputLabel","conceptEvalCriteriaDefaults","mapFormConfigToSliderProps","defaultMarkers","from","markers","toString","0","hasFp","CRITERION_MIN","CRITERION_STEP","EditButton","createIdeaConcept","mostRecent","editIdeaConcept","denormalizedConcept","sanitizedData","req","revealIdentity","flagId","FeatureFlagContext","isFeatureEnabled","makeGetCategoryById","selectById","getCateg","socketStatusSelector","isSocketConnected","socketErrorSelector","tooltipLength","tooltipVisible","DROP_CARD_BY_ID","hidePrivacyBanner","dropFeedCardById","defaultHeaderRowRenderer","columns","dimensions","isSticky","calculatedHeight","overflow","defaultRowRenderer","aria-rowindex","column","customStyle","flexValue","flex","msFlex","WebkitFlex","createHeader","columnData","sortEnabled","getFlexStyleForColumn","renderedHeader","a11yProps","newSortDirection","rowIndex","rowClassName","rowRenderer","rowStyle","rowClass","rowStyleObject","columnIndex","renderedCell","columnStyles","headerRowRenderer","childrenArray","fixedColumn","fluidColumns","headerColClasses","bodyColClasses","bounds","measureRef","contentRect","getHeaderColumns","times","createRow","createColumn","SMALL_HEIGHT_BREAKPOINT","WORD_ID","DRAGGABLE_ID_PROP","Lobby","Peer","Images","Words","Evaluation","Finished","DefaultIdeationPhaseConfig","ideationPhaseType","idleTimeoutInSeconds","minLengthInSeconds","maxLengthInSeconds","optimalNumberOfIdeas","optimalNumberOfImages","optimalNumberOfWords","IDEATION_STATUS","LEAVING_IDEATION","LEAVING_ROOM","CONN_ERROR_MODAL","CHALLENGE_JOIN_REQ","CHALLENGE_JOIN_RES","CHALLENGE_LEAVE_IDEATION","CHALLENGE_LEAVE_ROOM","CHALLENGE_STATUS_CHANGED","IDEA_LIKE_REQ","IDEA_UNLIKE_REQ","IDEA_RECEIVED","LIKE_COUNT_CHANGED","PHASE_CAN_MODIFY","PHASE_CHANGED_USER_DATA","PHASE_CHANGED_WITH_CONFIG","PHASE_CHANGE_REQ","USER_DISCONNECTED","USER_LEFT_IDEATION","USER_JOINED","USER_LEFT_ROOM","WORD_MOVED","WORDS_RECEIVED","MARGINS","triggerBrowserReflow","node","offsetHeight","appendUnit","unit","closedSize","mountOnEnter","transitionAppear","dimension","getDimensionValue","elem","capitalize","margins","onEnter","onEntering","onExit","onExiting","handleEnter","_dimension","handleEntering","_getScrollDimensionValue","handleEntered","handleExit","handleExiting","aria-expanded","exitDone","exitActive","enterDone","enterActive","BadgeOrigin","BadgeChildShape","circle","rectangle","Badge","ariaLabel","badgeClass","dot","horizontal","vertical","commonClasses","badgeClasses","SimpleBadge","isComponent","isValidElement","showBadgeContent","isNumberBadge","ModalTransition","leave","renderBackdrop","backdropClasses","overlay","modalClasses","backdrop","onBackdropClick","keyboard","backdropTransition","confirmButtonText","cancelButtonText","footerClasses","entityId","getAllIds","idMap","UPDATE_CONCEPT_OWNER","FETCH_CHALLENGE_IDEA_CONCEPTS","UPLOAD_CONCEPT_ATTACHMENT","DOWNLOAD_CONCEPT_ATTACHMENT","CONCEPT_STATUS_UPDATE_CANCEL","LATER","STOP","FINAL_ASSESSMENT","COACHING","conceptListSortIds","VISIBILITY_EDITOR","langCode","preferred","autoRefetch","refreshList","lastFilters","filterKey","lastFilterValue","isFilterValueSame","isLoadingSelector","ideaConceptState","isErrorSelector","dropById","arr","getIdFromPayload","isRevealPendingSelector","stateSelector","isEditPendingSelector","loadingReducer","errorReducer","loadingByIdReducer","errorByIdReducer","getStateRoot","bulkConceptSelectors","isIdeaConceptLoadingSelector","isIdeaConceptErrorSelector","conceptByIdSelectors","isIdeaConceptByIdLoadingSelector","byIdLoading","isIdeaConceptByIdErrorSelector","byIdError","pendingConceptRevealsFactory","pendingEditFactory","pendingReveals","pendingEdits","ideaConceptsReducerFactory","ideaConceptByIdSelector","types","Picker","shouldShowPicker","setShouldShowPicker","shouldShowEmpty","ContentWrapper","Img","Tools","ratio","fallbackComponent","propTypes","Dot","Tip","TranslatedFooterButton","iconSize","ConceptTitleInput","ConceptDescriptionInput","requestOneTimeCode","platformId","verifyAccount","verificationKey","flag","hex","skipOnboarding","selectAll","handleFetch","cepheidCategs","rank","presetApi","useImageSearch","pageIx","didInitialFetch","setDidInitialFetch","onNextPage","ACCEPT_TYPES","getImgType","handleDropAccepted","accepted","handleDropRejected","loadImage","cropImage","canvas","toBlob","submitImage","imageFileType","imgData","toDataURL","onerror","preview","imageWidth","naturalWidth","imageHeight","naturalHeight","cropX","cropY","cropWidth","cropHeight","getContext","drawImage","handleCropChange","handleImageLoaded","URL","revokeObjectURL","Uploader","onDropAccepted","onDropRejected","accept","maxSize","MB_MAX_SIZE","multiple","DropZone","rejectClassName","onImageLoaded","useSubmitQuickConceptForm","fetchAction","editAction","editorProps","submitComment","FinalFormWrapper","inputName","onSave","onStartEdit","valid","reset","fieldProps","InlineEditable","edit","setWrappedComponentRef","wrappedEl","focusInput","submitForm","callApi","handleSuccess","setSubmitFail","restoreForm","stopEdit","closeOnClickOutside","getMetaProps","handleStartEditClick","startEdit","handleCommitChangeClick","handleKeyPress","isEnter","keyCode","isEscape","valueBeforeEdit","compactToolbar","renderInline","readonly","toolbarPosition","actionClasses","withHandleClickOutside","instanceId","circles","gradientId","viewBox","x1","y1","x2","y2","stopColor","stroke","valueChange","labelChange","secondaryLabelChange","diffByValueOrLocaleChange","withManualDiff","diffingFn","newComponent","shouldUpdate","Message","internetDisconnected","isInternetDisconnected","websocketDisconnected","isWebsocketDisconnected","internetReconnected","isInternetReconnected","serverIsUnavailable","isServerUnavailable","showReconnectedThenHideAfterAWhile","waitUntilTimeoutThenShowMessage","appendHash","duePayments","autostart","createChallenge","companies","usersRights","baseQueryParams","cx","searchType","safe","googleSearch","searchTerm","thumbnailLink","setSearchTerm","searchApi","useImageFetch","SearchField","ImageGallery","setInputRef","handleInputChange","parseLocal","handleIconClick","formatLocal","picker","showIcon","closeButton","LanguageDropdown","availableLanguages","currentLang","customLabel","disableDelete","minLengthNum","hintLabel","validation","UserTagsInputFormControl","validationRegex","validationError","TeamInput","setAuthenticatedUserContext","severity","INFO","trace","properties","severityLevel","evalFn","createCommentUuid","commentsAdapter","commentId","upsertMany","getSlice","getCommentMap","commentMap","ONBOARDING_LAYER","searchResource","onScrollEnd","GalleryWrapper","Background","setImages","setPageIx","setIsLoading","setHasError","prevImages","isLoadingSlowly","setIsLoadingSlowly","slowErrorReportTimerRef","hasReportedError","setHasReportedError","slowLoadTimerRef","reportLoadError","flagKeys","setFlagKeys","setFlags","hasLoadedFlags","getFlagKeys","delay","savedCallback","setInterval","clearInterval","useInterval","latestValues","latestFlags","zipObject","sync","getter","showSpinner","timeoutMs","showWarning","setShowWarning","diagUrl","protocol","Screen","CenterBox","Spinner","protocolRegExp","addProtocol","LINKIFY_CONFIG","attributes","defaultProtocol","ignoreTags","linkifyHtml","htmlString","linkify","quotesFromSlantedToDouble","ALLOWED_ATTR","allowedAttributes","createEditorState","createWithContent","ContentState","createFromText","toPlainText","getPlainText","getHasFocus","moveFocusToEnd","plainText","isValueChanged","shouldMarkOverflow","handleReturn","shiftKey","inputRef","minRows","onEscape","editorStyle","dirty","stripPastedStyles","Infinity","onNextTip","onSkipTips","skipLabel","nextLabel","finalLabel","activeIndex","isLastTip","withOnboardingTip","singleton","popoverProps","isTipActiveSelector","WithOnboardingTip","handleSkipTips","instances","forceUpdate","isTipActive","wrappedClassName","withOnboardingManager","WithOnboardingManager","splitRef","getConceptIdFromRef","ideaTextWithRef","createConceptRef","urlRegex","EMAIL_VALIDATION_REGEX","HASHTAG_REGEX","REQUIRED","validators","validator","renderError","defaultError","getLength","isEditorState","isEmptyObject","isEmptyString","isEmptyRichText","validatePasswordWithPolicy","policy","longEnough","matchesLower","matchesUpper","matchesNumeric","matchesSpecChars","passwordQuality","criterionFulfilled","subdomainName","isConsentCheckboxRequired","validateCustomDuration","allValues","hasRangeOrCustomDate","isBefore","doesRangeEndInPast","hasDateRangeCorrectOrder","validateCustomDurationSingleInput","languageChoice","requiredUser","isInvitedUserValid","allowedEmailRegex","validateInvitees","isUserInviteRequired","validateGroupIdeationDateTime","groupIdeationTimeZone","validateGroupIdeationTimeZone","validateTitle","validateLoginEmail","pasteSplit","separators","renderAutocomplete","addTag","tagDisplayProp","intent","renderTag","getTagClassName","classNameRemove","onRemove","getTagDisplayValue","other","getDisplayVal","tagClasses","showDeleteBtn","addKeys","focusedClassName","tagProps","onlyUnique","addOnPaste","renderInput","keycode","setLoggedIn","setUserEmail","setCompanyId","loginUser","credentials","handleMagicLogin","forced","handlePlatformSwitch","host","getCriterionId","getCriterionName","areConceptEvalCriteriaSet","formModel","createCriteriaConfig","newItems","model","mapCriteriaToArray","oldItemsWithId","updatedItems","zipWith","oldItem","newItem","mapCriteriaToExistingIds","mapEvalCriteriaToChallengeInputs","inputMap","toNumber","apiResponse","getApiResponseHeaders","getEmbedded","getHalRefs","hostStr","isStaging","MVM_PRIVACY_URL","CHALLENGE_LANGS","parseUTCISOString","isoDate","isValid","local","toDate","parseLocalDateString","localDateString","formatLocalDateToUTCISOString","utc","formatUTCISOStringToLocalDate","marks","ariaLabelForHandle","normalisePhaseChangeMsg","hummingbirdLoveCount","normaliseParticipant","teamMinLength","labelContext","formApi","useForm","hasAnimated","setHasAnimated","PrivateConceptInput","ControlledConceptImageInput","ConceptImageInput","isExpanded","setIsExpanded","closeEditor","createConcept","alwaysShowVisibilityInputs","defaultFormModel","normaliseFormModel","forceExpanded","isTimeoutError","convertStatusToInternalCode","isMissingError","isServerError","isBadRequest","apiError","isAxiosError","convertSocketErrorToStatusCode","socketErrorCode","useChallenge","normalisedChallenge","ADD_NEW_CHALLENGE_TO_FEED","SEARCH_CHALLENGES","publishChallenge","createChallengeRequest","isImageUpdated","reopenChallenge","startsAt","closesAt","skip","fetchPermissions","fetchHashtags","isHidden","isUnseen","Heart","badge","setAnimate","prevChecked","usePrevious","IconWrapper","offsetSelector","allIdsSelector","activeIdeaSelector","isFetchingNextIdeaSelector","targetCountSelector","skippedCountSelector","overallProgressSelector","isAllEvaluatedSelector","isSkipAvailableSelector","remainedCountSelector","targetCount","evaluatedCount","hasNextSelector","hasPrevSelector","hasUserPerformedSuggestion","isSuggestionCompletionLoaded","BulletedList","bullet","isDeletable","isReopenable","BULK_REVEAL_IDEAS","CONFIRM_DELETE_IDEA","IDEATORS","REOPEN_CHALLENGE","FILTER","PAGINATION","USER_MOVE_ITEM","USER_MOVE_ITEM_STOP","updatePosition","itemType","handleItemMoved","actorUserId","normaliseMoveMsg","handleIdeaMoved","handleImageMoved","handleWordMoved","moveObject","dropped","moveMsg","ownZ","highestZ","moveAction","formVals","ConceptEditorForm","getConceptScores","conceptTrendingScores","getOrderedChunkedTuples","chunk","getTrendingTupleChunk","getRestOfTupleChunks","drop","getIdsFromTuples","getTrendingConcepts","getNormalConcepts","getConceptIdsBelongingToUser","trendingConceptIds","ideaConceptMap","getConceptIdsWithSuggestionFromUser","ideaConceptFilterMap","getFilteredTrendingConcepts","trendingConceptFilters","activeFilterIds","callWithState","getMaxTime","getPhaseName","getPhaseType","getPhaseId","ConceptSubpageConfig","_default","amdocsavishkar","budapestglobal","cepheid","cepheiddemo","cloud","demo","experiencing","financing","future","givaudanint","hackathonnagraduates","innovationaward","mav","mccvezetokepzoakademia","smu","snt","trial","ConceptCanvasConfig","alfaped","blee","egis","experiencecon","gthree","ihub","ilumalabs","lantmannen","partnerhub","richter","spaceforfood","upthereeverywhere","hidden","getBasePath","addSuggestionToIdea","addSuggestionToConcept","closeIntroMessage","openChallengeInfoModal","paginateIdeas","skipSuggestions","customLogoUrl","hasImg","setHasImg","hasTriedLoading","setHasTriedLoading","logoImg","showLogo","VALID_CHALLENGE_KEYS","getChallengeDates","presetRange","customDuration","add","pickChallengeKeys","pickFp","changedValues","mergedValues","mergedVal","datesFromDuration","closeTime","uniqBy","upperCase","useAllowedCanvasBackgroundType","GridList","handleSuggestionsFetchRequested","sug","localisedName","isTagValid","convertDisplayValueForRendering","mappedTags","minCount","handleSuggestionsClearRequested","userSelectors","LOG_CATEG","setTelemetryContextWithUser","_temp_isTokenValid","decodeToken","_temp_isNewApi","_temp_getExpiration","REACT_APP_VOYAGER_API_BASE_URL","rawPayload","atob","sub","otherData","decodeTokenMemo","getId","getCurrentAlert","getCurrentAlertId","paginationInitialState","getInfiniteScrollData","collectionSize","nextStart","getPagerData","NO_ACTION","ACTION_DEFAULTS","CONFIG_DEFAULTS","actionTypes","exportChallengeIdeas","responseType","promise","exportPending","maxItems","floor","shouldTruncate","handleNext","onNext","getPageCount","handlePrev","onPrev","handleSwipeFinish","paginateBy","ceil","getItemsForPage","sliceStart","sliceEnd","animated","getAllPages","getVisibleItems","navProps","slideTrackProps","getSlideTrackProps","currentView","onViewChange","slider","renderAnimated","Navigation","disableNext","disablePrev","disablePrevBtn","disableNextBtn","FieldWithManualDiff","ShareModal","copyToClipboard","inputEl","setSelectionRange","showLinkCopy","onCopy","ChallengeInfoModal","DateTimeRangePicker","isSelectingLastDay","today","handleDayClick","day","fromLocalDate","handleDayMouseEnter","handleFromTimeChange","handleToTimeChange","labels","toLocalDate","selectedDays","disabledDays","before","numberOfMonths","fromMonth","initialMonth","localeUtils","MomentLocaleUtils","onDayClick","onDayMouseEnter","isInsight","loveChallenge","loveIdea","dropActions","mapEntityIds","mergeWithState","fetchFirstConcept","hasFetchedAllAvailableItems","conceptReviewSlice","flushSession","handleLoad","getReviewStore","getCurrentReviewedConcept","takeRight","isStackEmpty","PLATFORM_NAME","getDefaultConsentModel","getConsentModel","CUSTOM_MODELS","hasPlatformCustomConsent","getLocation","getQueryString","getQueryParams","getRoute","pickQueryParams","paramNames","queryParams","desc","exists","conceptCanvasPage","conceptMapCanvasPage","ConceptOwnerAvatar","Toolbar","nav","small","CloseWrapper","ConceptTitle","ChallengeTitle","Description","Team","OwnerWrapper","OwnerAvatar","AddMemberBtn","reviewScore","detailedScores","getConceptTitle","challengeTitle","onTeamClick","toFixed","Navbar","right","fixed","verticalOffset","isStickyBottom","navbarClasses","navbarCenterClasses","bottom","NavbarItem","PaginationItem","eventKey","Pagination","activePage","maxButtons","boundaryLinks","ellipsis","buttonProps","startPage","endPage","pageButtons","unshift","componentClass","prev","renderPageButtons","fetchParams","listPageStore","paginationStore","sortby","sortdir","fetchChallengeIdeaConcepts","editConceptOwner","newOwnerId","newOwner","SearchForm","setQuery","hasCustomLogo","AVAILABLE_LANGS","handleLanguageChange","customLogo","uppercase","DateTimePicker","showMonth","nextLocalDate","nextMonth","previousMonth","setFromInputRef","fromInput","setToInputRef","toInput","handleFromInputChange","fromInputValue","handleToInputChange","toInputValue","fromPlaceholder","toPlaceholder","Notice","OverlayAction","conceptStage","bookmark","UserItem","CHILD_STYLE","overflowY","Overlay","childProps","setActive","itemOrArray"],"mappings":"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","file":"static/js/main.b0149204.chunk.js","sourcesContent":["import axios from 'axios';\nimport { getToken } from '../authentication/services/token.service';\nimport { HTTP_TIMEOUT_MS } from './constants';\nimport handleUnauthenticated from './interceptors/handleUnauthenticated';\nimport storeToken from './interceptors/storeToken';\n\nconst commonHeaders = {\n 'Content-Type': 'application/json'\n};\nif (getToken()) {\n commonHeaders.Authorization = getToken();\n}\n\nconst client = axios.create({\n timeout: HTTP_TIMEOUT_MS,\n headers: {\n common: commonHeaders,\n // Axios defaults overwrite common headers specified above\n patch: {\n 'Content-Type': 'application/json'\n },\n post: {\n 'Content-Type': 'application/json'\n },\n put: {\n 'Content-Type': 'application/json'\n }\n },\n withCredentials: true\n});\n\n// Handle authentication\nclient.interceptors.response.use(storeToken, handleUnauthenticated);\n\nexport default client;\n","import get from 'lodash/get';\nimport AuthSvc from '../../authentication/services/auth.service';\n\nexport default function storeToken(response) {\n const token = get(response, ['headers', 'authorization']);\n if (token) {\n AuthSvc.handleNewToken(token);\n }\n\n return response;\n}\n","import flow from 'lodash/flow';\nimport get from 'lodash/get';\nimport isEqualFp from 'lodash/fp/isEqual';\nimport { UNAUTH_PATH_WHITELIST } from '../constants';\nimport { getApiResponseCode } from '../utils/apiResponse';\nimport authService from '../../authentication/services/auth.service';\n\nexport default function handleUnauthenticated(error) {\n const isUnauthenticated = flow(\n getApiResponseCode,\n isEqualFp(401)\n )(error);\n const isWhitelisted = UNAUTH_PATH_WHITELIST.some(whitelistedPath =>\n get(error, 'config.url', []).includes(whitelistedPath)\n );\n\n if (isUnauthenticated && !isWhitelisted) {\n authService.logout(true);\n } else {\n throw error;\n }\n}\n","import Callout from './Callout';\n\nexport default Callout;\n","import { getPlatformName } from './platform';\n\nexport function isCepheidVariant() {\n return ['cepheiddemo', 'cepheid'].includes(getPlatformName());\n}\n\nexport function isAmdocsVariant() {\n return getPlatformName() === 'amdocsavishkar';\n}\n\nexport function isConnectHumanityVariant() {\n return ['experiencing', 'financing', 'future'].includes(getPlatformName());\n}\n","import flow from 'lodash/flow';\nimport sanitizeForJSON from '@bit/be-novative.kit.sanitize-for-json';\nimport { commonIdProps } from '../../../constants';\nimport { SOCKET_MSG as MSG, S_ID } from '../../constants';\nimport { sendSocketMessage } from '../../../common/actions/socket';\nimport {\n mapPositionToMsg,\n mapPositionFromMsg,\n mapOwnerIdFromMsg\n} from './_mappers';\n\n// Requests\n\nexport const editIdeaMsg = (text, ideaId, mergedIdeaIds = []) => {\n const sanitizedText = sanitizeForJSON(text);\n const payload = [ideaId, sanitizedText, mergedIdeaIds];\n return sendSocketMessage(S_ID, MSG.IDEA_EDIT_REQ, payload);\n};\n\nexport const submitIdeaMsg = (text, posX, posY, posZ) => {\n const sanitizedText = sanitizeForJSON(text);\n const payload = [sanitizedText, mapPositionToMsg({ posX, posY, posZ })];\n return sendSocketMessage(S_ID, MSG.IDEA_SUBMIT, payload);\n};\n\nexport const deleteIdeaMsg = ideaId =>\n sendSocketMessage(S_ID, MSG.IDEA_DELETE_REQ, ideaId);\n\nexport const moveIdeaMsg = (ideaId, posX, posY, posZ) => {\n const payload = [ideaId, mapPositionToMsg({ posX, posY, posZ })];\n return sendSocketMessage(S_ID, MSG.IDEA_MOVE_REQ, payload);\n};\n\n// Responses\n\nexport const normaliseIdeaReceivedMsg = (msg = {}) =>\n flow(\n mapPositionFromMsg,\n mapOwnerIdFromMsg\n )(msg);\n\nexport const normaliseIdeaEditedMsg = msg => {\n const [ideaId, text] = msg;\n return { [commonIdProps.IDEA_ID]: ideaId, text };\n};\n","import flow from 'lodash/flow';\nimport { SOCKET_MSG as MSG, S_ID } from '../../constants';\nimport { sendSocketMessage } from '../../../common/actions/socket';\nimport {\n mapPositionToMsg,\n mapPositionFromMsg,\n mapImageDataFromMsg,\n mapOwnerIdFromMsg\n} from './_mappers';\n\n// Requests\n\nexport const deleteImageMsg = imageId =>\n sendSocketMessage(S_ID, MSG.IMAGE_DELETE_REQ, imageId);\n\nexport const moveImageMsg = (imageId, posX, posY, posZ) => {\n const payload = [imageId, posX, posY, posZ];\n return sendSocketMessage(S_ID, MSG.IMAGE_MOVE_REQ, payload);\n};\n\nexport const submitImgMsg = (image, posX, posY, posZ) => {\n const payload = [image, mapPositionToMsg({ posX, posY, posZ })];\n return sendSocketMessage(S_ID, MSG.IMAGE_SUBMIT, payload);\n};\n\n// Responses\n\nexport const normaliseImageReceivedMsg = (msg = []) =>\n flow(\n mapPositionFromMsg,\n mapImageDataFromMsg,\n mapOwnerIdFromMsg\n )(msg);\n","import { SOCKET_MSG as MSG, S_ID } from '../../constants';\nimport { sendSocketMessage } from '../../../common/actions/socket';\nimport { mapPositionFromMsg } from './_mappers';\n\n// Requests\n\nexport const moveWordMsg = (wordId, posX, posY, posZ) => {\n const payload = [wordId, posX, posY, posZ];\n return sendSocketMessage(S_ID, MSG.WORD_MOVE_REQ, payload);\n};\n\n// Responses\n\nexport const normaliseWordReceivedMsg = (msg = []) =>\n msg.map(({ wordId, word, position }) => ({\n wordId,\n text: word,\n ...mapPositionFromMsg({ position })\n }));\n","import snakeCase from 'lodash/snakeCase';\nimport * as Sentry from '@sentry/browser';\nimport { MonitoringSeverity } from '../../telemetry/monitoring/constants';\nimport trackTrace from '../../telemetry/monitoring/trackTrace';\nimport addBreadcrumb, { Severity } from '../../telemetry/addBreadcrumb';\nimport { CommonException } from '../constants';\nimport { convertApiErrorToStatusCode } from './apiError';\n\n/**\n * Processes an API request error, and logs the error with the appropriate service.\n * HTTP 5xx errors and general/unknown errors are logged with Azure App Insights.\n * Bad requests and general/unknown errors are logged with Sentry as a UI error.\n * @param {Error} requestError - The response received from the API instance\n * @param {string} [message] - The log message\n * @param {BreadcrumbCategory} [category] - Feature or domain, e.g. `\"challenge\", \"bootstrap\"`. In Sentry, this is also set as the custom `domain` tag for the error report.\n * @param {Object} [data] - Optional contextual data.\n * @return {void}\n */\nexport default function logRequestFailure(\n requestError,\n message = '',\n category = '',\n data\n) {\n const errorCode = convertApiErrorToStatusCode(requestError);\n if (\n [CommonException.ServerError, CommonException.General].includes(errorCode)\n ) {\n trackTrace(message, data, MonitoringSeverity.Error, category);\n }\n if (\n [CommonException.General, CommonException.BadRequest].includes(errorCode)\n ) {\n if (data) {\n Sentry.addBreadcrumb({ data, category });\n }\n addBreadcrumb(new Error(message), {\n level: Severity.Error,\n category: snakeCase(category)\n });\n }\n}\n","import get from 'lodash/get';\nimport isNumber from 'lodash/isNumber';\nimport { commonIdProps } from '../../constants';\n\n// TODO change this to `creator`\nexport const getAuthor = idea => get(idea, 'user', {});\n\nexport const getParentConceptId = idea => get(idea, 'ideaConceptId');\n\nexport const getEvaluationCount = idea => get(idea, 'evaluationCount', 0);\n\nexport const getIdeaId = idea => get(idea, commonIdProps.IDEA_ID, '');\n\nexport const getIdeaText = idea => get(idea, 'text', '');\n\nexport const getLoveCount = idea => {\n const loveCount = get(idea, 'loveCount');\n const likeCount = get(idea, 'likeCount');\n if (isNumber(likeCount)) {\n return likeCount;\n } else if (isNumber(loveCount)) {\n return loveCount;\n } else {\n return 0;\n }\n};\n\nexport const getParentGroupId = idea => get(idea, 'groupId');\n\nexport const getPermissions = idea => get(idea, 'permissions', {});\n\nexport const getScore = idea => get(idea, 'score', -1);\n\nexport const isLoved = idea => get(idea, 'loved');\n\nexport const isOwn = idea => get(idea, 'own');\n\nexport const isRevealable = idea => get(idea, 'shouldReveal');\n","import flow from 'lodash/flow';\nimport includes from 'lodash/includes';\nimport values from 'lodash/values';\nimport { getUrl, getContent, getType } from '../common/selectors/images';\nimport { ImageTypes } from '../constants';\n\nconst isValidImageObject = image => {\n const hasContent = getUrl(image) || getContent(image);\n const hasValidType = flow(\n getType,\n type => includes(values(ImageTypes), type)\n )(image);\n\n return hasValidType && hasContent;\n};\n\nexport default isValidImageObject;\n","import get from 'lodash/get';\nimport getOrFp from 'lodash/fp/getOr';\n\n/**\n * @function getCountry\n * @param {OwnProfilePayload} ownProfile - The user's profile model\n * @return {string} The 2-letter country code\n */\n\nexport const getCountry = profile => get(profile, 'countryCode', '');\n\n/**\n * @function getDescription\n * @param {OwnProfilePayload} ownProfile - The user's profile model\n * @return {string} The user's introduction as stringified HTML\n */\n\nexport const getDescription = profile => get(profile, 'aboutMe');\n\n/**\n * @function getLinkedinUrl\n * @param {OwnProfilePayload} ownProfile - The user's profile model\n * @return {string}\n */\n\nexport const getLinkedinUrl = profile => get(profile, 'linkedInUrl', '');\n\n/**\n * @function getWebsite\n * @param {OwnProfilePayload} ownProfile - The user's profile model\n * @return {string}\n */\n\nexport const getWebsite = profile => get(profile, 'websiteUrl', '');\n\n/**\n * @function getWorkPosition\n * @param {OwnProfilePayload} ownProfile - The user's profile model\n * @return {string}\n */\n\nexport const getWorkPosition = profile => get(profile, 'position', '');\n\n/**\n * @function getWorkplace\n * @param {OwnProfilePayload} ownProfile - The user's profile model\n * @return {string}\n */\n\nexport const getWorkplace = profile => get(profile, 'workplace', '');\n\n/**\n * @function getRegisterDate\n * @param {OwnProfilePayload} ownProfile - The user's profile model\n * @return {TimestampUTC} A timestamp in the format of `YYYY-MM-DDTHH:MM:SSZ`, for example: `\"2018-03-08T15:37:22.01Z\"`\n */\n\nexport const getRegisterDate = profile => get(profile, 'registeredAt');\n\n/**\n * @function getUserConsent\n * @param {OwnProfilePayload} ownProfile - The user's profile model\n * @return {UserConsentMap} The user's map of GDPR consent booleans\n */\n\nexport const getUserConsent = getOrFp({}, 'userConsent');\n\n/**\n * Checks if the user is a platform admin\n * @param {OwnProfilePayload} ownProfile - The user's profile model\n * @return {Boolean} `true` if the user is a platform admin, `false` otherwise\n */\n\nexport const getAdminStatus = getOrFp(false, 'companyAdmin');\n","import React from 'react';\nimport { compose, bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { translate } from 'react-i18next';\nimport isFunction from 'lodash/isFunction';\nimport Close from '../../../common/components/Close';\nimport Modal from '../../../common/components/Modal';\nimport { closeModal } from '../../../common/actions';\nimport { getDisplayName } from '../../../utils';\n\nconst withModal = (\n mapStateToProps,\n mapDispatchToProps,\n className\n) => WrappedComponent => {\n function WithModal(props) {\n const {\n isCloseButtonShown,\n closeable,\n onClose,\n size = 'medium',\n t,\n ...rest\n } = props;\n const modalProps = {\n className,\n isOpen: true,\n size,\n ...(closeable ? { onClose } : {})\n };\n return (\n \n \n {closeable && isCloseButtonShown && (\n {t('common/Close')}\n )}\n \n );\n }\n\n WithModal.defaultProps = {\n isCloseButtonShown: true,\n closeable: true\n };\n\n WithModal.displayName = `withModal(${getDisplayName(WrappedComponent)})`;\n\n return compose(\n translate(),\n connect(\n mapStateToProps,\n function(dispatch, ownProps) {\n let boundActionCreators = isFunction(mapDispatchToProps)\n ? mapDispatchToProps(dispatch, ownProps)\n : bindActionCreators(mapDispatchToProps || {}, dispatch);\n\n return {\n ...boundActionCreators,\n onClose: () => dispatch(closeModal())\n };\n }\n )\n )(WithModal);\n};\n\nexport default withModal;\n","import withModal from './withModal';\n\nexport default withModal;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport './Callout.css';\n\nCallout.propTypes = {\n type: PropTypes.oneOf([\n 'warning',\n 'success',\n 'info',\n 'danger',\n 'alert',\n 'payment-info'\n ]),\n spacing: PropTypes.oneOf([1]),\n tag: PropTypes.node\n};\n\nCallout.defaultProps = {\n tag: 'div'\n};\n\nfunction Callout({\n children,\n className,\n type,\n spacing,\n tag: Tag,\n ...restOfProps\n}) {\n const classes = classNames('Callout', className, {\n [`Callout--${type}`]: !!type,\n [`Callout--spacing-${spacing}`]: !!spacing\n });\n return (\n \n {children}\n \n );\n}\n\nexport default Callout;\n","import moment from 'moment';\n\nexport default function useFormattedDateTime(timestamp, showDate, showTime) {\n if (!timestamp) {\n return null;\n }\n\n let display;\n\n if (showDate) {\n if (showTime) {\n display = 'LLL';\n } else {\n display = 'LL';\n }\n } else {\n if (showTime) {\n display = 'LT';\n } else {\n display = 'X';\n }\n }\n\n return moment(timestamp).format(display);\n}\n","import forEach from 'lodash/forEach';\nimport isObject from 'lodash/isObject';\n\nexport default function flattenObject(obj) {\n const flattened = {};\n\n function flatten(obj, prevPath = '') {\n forEach(obj, (val, key) => {\n const newPath = `${prevPath}${key}`;\n if (isObject(val)) {\n flatten(val, `${newPath}.`);\n } else {\n flattened[newPath] = val;\n }\n });\n }\n\n flatten(obj);\n\n return flattened;\n}\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport { getDisplayName } from '../../../utils';\nimport './withResponsive.css';\n\nconst breakpoints = ['sm', 'md', 'lg', 'xl'];\n\n/**\n * Simple utility HOC to hide or show the wrapped component based on mobile first media queries.\n * mediaHiddenDown=\"md\" - hidden bellow medium screen size\n * mediaHiddenUp=\"md\" - visible bellow medium screen size\n * \n * Does not create wrapper DOM element, so the wrapped component must be capable of receiving\n * className prop.\n */\nexport default function(WrappedComponent) {\n function Responsive({\n mediaHiddenDown,\n mediaHiddenUp,\n className: originalClassName,\n ...rest\n }) {\n const className = classNames(originalClassName, {\n [`hidden-down-${mediaHiddenDown}`]: !!mediaHiddenDown,\n [`hidden-up-${mediaHiddenUp}`]: !!mediaHiddenUp\n });\n\n return ;\n }\n\n Responsive.displayName = `Responsive(${getDisplayName(WrappedComponent)})`;\n\n Responsive.propTypes = {\n mediaHiddenDown: PropTypes.oneOf(breakpoints),\n mediaHiddenUp: PropTypes.oneOf(breakpoints)\n };\n\n return Responsive;\n}\n","import React from 'react';\nimport withResponsive from './withResponsive';\n\nfunction Responsive({ children, tag: Tag, ...rest }) {\n return {children};\n}\n\nResponsive.defaultProps = {\n tag: 'span'\n};\n\nexport default withResponsive(Responsive);\n","import Responsive from './Responsive';\nimport withResponsive from './withResponsive';\n\nexport default Responsive;\nexport { withResponsive };\n","import { INLINE_HELP_VIEWED } from '../../constants';\n\nexport const inlineHelpViewed = helpId => ({\n type: INLINE_HELP_VIEWED,\n metrics: { helpId }\n});\n","import isEmpty from 'lodash/isEmpty';\nimport map from 'lodash/map';\nimport { useCallback, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { searchChallenges } from '../actions';\nimport { getChallengeId } from '../../common/selectors/challenges';\n\nconst RESULT_LIMIT = 10;\nconst ORDER_BY = 'createdAt';\n\nexport default function useChallengeSearch() {\n const [isSearching, setIsSearching] = useState(false);\n const dispatch = useDispatch();\n\n const handleSearch = useCallback(\n query => {\n if (isEmpty(query)) {\n return;\n }\n\n setIsSearching(true);\n\n return dispatch(\n searchChallenges({\n query,\n limit: RESULT_LIMIT,\n orderBy: ORDER_BY,\n descending: true\n })\n )\n .then((challenges = []) => {\n return map(challenges, getChallengeId);\n })\n .finally(() => {\n setIsSearching(false);\n });\n },\n [dispatch]\n );\n\n return [handleSearch, isSearching];\n}\n","import styled, { css } from 'styled-components';\nimport Icon from '../Icon';\n\nconst focused = css`\n outline: none;\n border-color: #0a86cd;\n box-shadow: inset 0 5px 7px #f0f0f0;\n`;\n\nexport const StyledInput = styled.input`\n position: relative;\n z-index: 1;\n padding-left: calc(0.563rem + 30px);\n border: 1px solid #c7c7c7;\n border-radius: 2px;\n transition: border-color 150ms ease;\n\n &:hover:not(:disabled) {\n border-color: #8c8c8c;\n }\n\n &:focus {\n ${focused}\n }\n\n ${({ active }) => active && focused}\n ${({ error }) =>\n error &&\n css`\n border-color: #ed1717;\n `}\n`;\n\nexport const InputIcon = styled(Icon)`\n position: absolute;\n top: 0.563rem;\n left: 0.75rem;\n z-index: 2;\n\n ${({ disabled }) =>\n disabled &&\n css`\n color: #c7c7c7;\n `}\n`;\n","import React, { useEffect, useState } from 'react';\nimport trim from 'lodash/trim';\nimport PropTypes from 'prop-types';\nimport { translate } from 'react-i18next';\nimport useDebounce from '../../hooks/useDebounce';\nimport { StyledInput, InputIcon } from './SearchInput.styled';\n\nSearchInput.propTypes = {\n autoFocus: PropTypes.bool,\n debounce: PropTypes.number,\n disabled: PropTypes.bool,\n initialValue: PropTypes.string,\n onSearch: PropTypes.func.isRequired,\n placeholder: PropTypes.string\n};\nSearchInput.defaultProps = {\n debounce: 800,\n onSearch: () => {}\n};\nexport function SearchInput({\n autoFocus,\n className,\n debounce,\n disabled,\n error,\n initialValue,\n onSearch,\n placeholder,\n style,\n t\n}) {\n const [value, setValue] = useState(initialValue || '');\n const debouncedQuery = useDebounce(value, debounce);\n\n const checkForEnter = event => {\n if (event.key === 'Enter') {\n onSearch(value);\n }\n };\n\n useEffect(() => {\n if (debouncedQuery) {\n onSearch(trim(debouncedQuery));\n }\n }, [debouncedQuery, onSearch]);\n\n return (\n
\n setValue(e.target.value)}\n onKeyDown={checkForEnter}\n disabled={disabled}\n error={error}\n placeholder={placeholder || t('common/userAction/search')}\n autoFocus={autoFocus}\n className={className}\n data-test=\"search\"\n />\n \n
\n );\n}\n\nexport default translate()(SearchInput);\n","import { useState, useEffect } from 'react';\nimport isEqual from 'lodash/isEqual';\n\nexport default function useDebounce(value, interval) {\n const [currentValue, setCurrentValue] = useState(value);\n\n useEffect(() => {\n const debounce = setTimeout(() => {\n if (!isEqual(value, currentValue)) {\n setCurrentValue(value);\n }\n }, interval);\n\n return function clearHandler() {\n clearTimeout(debounce);\n };\n }, [value, currentValue, interval]);\n\n return currentValue;\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport flow from 'lodash/flow';\nimport includes from 'lodash/fp/includes';\nimport Autosuggest from '../Autosuggest';\nimport strNormalise from '../../../utils/strNormalise';\n\nclass CountrySelect extends Component {\n static propTypes = {\n countries: PropTypes.arrayOf(\n PropTypes.shape({\n cca2: PropTypes.string.isRequired,\n name: PropTypes.string\n })\n )\n };\n\n static defaultProps = {\n countries: []\n };\n\n state = {\n suggestions: [],\n value: this.getCountry(this.props.input.value)\n };\n\n getSuggestions(value = '') {\n const { countries, input } = this.props;\n\n if (this.getCountry(input.value) === value) {\n return countries;\n }\n\n const target = strNormalise(value);\n\n return countries.filter(country =>\n flow(\n strNormalise,\n includes(target)\n )(country.name)\n );\n }\n\n getCountry(countryCode) {\n const { countries } = this.props;\n if (Array.isArray(countries)) {\n const country = countries.find(country => country.cca2 === countryCode);\n return country ? country.name : '';\n }\n return '';\n }\n\n handleBlur = () => {\n this.setState({\n value: this.getCountry(this.props.input.value)\n });\n };\n\n handleChange = (event, { newValue, method }) => {\n this.setState({\n value: newValue\n });\n };\n\n onSuggestionsFetchRequested = ({ value }) => {\n this.setState({\n suggestions: this.getSuggestions(value)\n });\n };\n\n onSuggestionsClearRequested = () => {\n this.setState({\n suggestions: []\n });\n };\n\n onSuggestionSelected = (event, { suggestion }) => {\n this.props.input.onChange(suggestion ? suggestion.cca2 : null);\n };\n\n componentWillReceiveProps(nextProps) {\n this.setState({\n value: this.getCountry(nextProps.input.value)\n });\n }\n\n render() {\n const inputProps = {\n value: this.state.value,\n onChange: this.handleChange,\n onBlur: this.handleBlur\n };\n\n return (\n suggestion.name}\n renderSuggestion={suggestion => {suggestion.name}}\n inputProps={inputProps}\n meta={this.props.meta}\n onSuggestionSelected={this.onSuggestionSelected}\n />\n );\n }\n}\n\nexport default CountrySelect;\n","import CountrySelect from './CountrySelect';\n\nexport default CountrySelect;\n","import React from 'react';\nimport isNumber from 'lodash/isNumber';\nimport PropTypes from 'prop-types';\n\nCounter.propTypes = {\n max: PropTypes.number,\n title: PropTypes.string\n};\n\nfunction Counter({ children, max = 99, title, ...rest }) {\n const numValue = Number(children);\n let displayedValue = numValue;\n if (isNumber(numValue) && max < numValue) {\n displayedValue = `${max}+`;\n }\n\n return (\n \n {displayedValue}\n \n );\n}\n\nexport default Counter;\n","import React from 'react';\nimport flow from 'lodash/flow';\nimport isEmpty from 'lodash/isEmpty';\nimport round from 'lodash/round';\nimport size from 'lodash/size';\nimport some from 'lodash/some';\nimport PropTypes from 'prop-types';\nimport { translate } from 'react-i18next';\nimport cn from 'classnames';\nimport { EMPTY_NUMBER } from '../../constants';\nimport {\n CONCEPT_EVAL_CRITERIA_MAXLENGTH,\n CepheidConceptEvaluationFormConfig,\n IdeaConceptEvaluationFormConfig\n} from '../../config';\nimport { maybeTranslateCriterionLabel } from '../../utils/conceptEvaluation';\nimport {\n getEvalCriterionId,\n getEvalCriterionName,\n getEvalCriterionAverage\n} from '../../selectors/conceptEvaluation';\nimport NonIdealState from '../../../common/components/NonIdealState';\nimport {\n isAmdocsVariant,\n isCepheidVariant,\n isConnectHumanityVariant\n} from '../../../utils/variants';\nimport scss from './ReviewScoreDetails.module.scss';\n\nconst shouldShowVariant =\n isCepheidVariant() || isAmdocsVariant() || isConnectHumanityVariant();\n\nReviewScoreDetails.propTypes = {\n canEdit: PropTypes.bool,\n scores: PropTypes.arrayOf(\n PropTypes.shape({\n criterionId: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n average: PropTypes.number\n })\n ),\n t: PropTypes.func.isRequired\n};\nReviewScoreDetails.defaultProps = {\n scores: []\n};\nexport function ReviewScoreDetails({ className, canEdit, scores, t }) {\n const labelTranslatorFn = maybeTranslateCriterionLabel(t);\n const hasLongLabels = some(\n scores,\n flow(\n getEvalCriterionName,\n size,\n length => length > CONCEPT_EVAL_CRITERIA_MAXLENGTH\n )\n );\n const formConfig = shouldShowVariant\n ? CepheidConceptEvaluationFormConfig\n : IdeaConceptEvaluationFormConfig;\n const cepheidMarkers = shouldShowVariant\n ? t('ideaConcept/evaluation/form/cepheidMarkers', { returnObjects: true })\n : [];\n\n if (isEmpty(scores)) {\n return (\n \n );\n }\n\n return (\n \n {scores.map(criterion => {\n const label = getEvalCriterionName(criterion);\n const score = getEvalCriterionAverage(criterion);\n const scoreString = shouldShowVariant\n ? cepheidMarkers[round(score, 1) - 1]\n : `${round(score, 1)}/${formConfig.CRITERION_MAX}`;\n\n return (\n \n \n {labelTranslatorFn(label)}\n \n \n \n \n \n {score === 0 ? EMPTY_NUMBER : scoreString}\n \n \n );\n })}\n \n );\n}\n\nexport default translate()(ReviewScoreDetails);\n","import ReviewScoreDetails from './ReviewScoreDetails';\n\nexport default ReviewScoreDetails;\n","import React from 'react';\nimport { compose } from 'redux';\nimport formControl from '@bit/be-novative.kit.form-control';\nimport { translate } from 'react-i18next';\nimport RadioGroup from '../../../common/components/RadioGroup';\nimport Icon from '../../../common/components/Icon';\nimport { required as checkRequired } from '../../../utils/validation';\nconst RadioGroupFormControl = formControl(RadioGroup);\n\nfunction PrivateConceptInput({ name, required, t, ...restOfProps }) {\n const choices = [\n {\n value: 0,\n label: t('ideaConcept/prop/visibility/public/hint'),\n icon: \n },\n {\n value: 1,\n label: t('ideaConcept/prop/visibility/private/hint'),\n icon: \n }\n ];\n return (\n \n );\n}\n\nexport default compose(\n React.memo,\n translate()\n)(PrivateConceptInput);\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport calculateSurplusItems from '../../../utils/calculateSurplusItems';\nimport ConnectedAvatar from '../../../common/containers/ConnectedAvatar';\n\nconst ListItem = styled(ConnectedAvatar)`\n position: relative;\n margin-left: -10px;\n vertical-align: middle;\n &:first-child {\n margin-left: 0;\n }\n &:hover,\n &:focus {\n z-index: 20 !important;\n }\n`;\n\nconst Surplus = styled.span`\n font-size: 1.2em;\n font-weight: bold;\n vertical-align: middle;\n cursor: ${({ clickable }) => (clickable ? 'pointer' : 'auto')};\n`;\n\nConnectedAvatarList.propTypes = {\n avatarClassName: PropTypes.string,\n avatarSize: PropTypes.string,\n tooltipPosition: PropTypes.string,\n canExpand: PropTypes.bool,\n maxDisplay: PropTypes.number,\n ownUserId: PropTypes.string.isRequired,\n users: PropTypes.arrayOf(PropTypes.object)\n};\nexport function ConnectedAvatarList({\n avatarClassName,\n avatarSize,\n canExpand,\n className,\n maxDisplay = 0,\n users = [],\n style,\n tooltipPosition\n}) {\n const [expanded, setExpanded] = useState(false);\n const [truncatedItems, surplus] = calculateSurplusItems(users, maxDisplay);\n const visibleItems = expanded ? users : truncatedItems;\n\n return (\n
\n {visibleItems.map(({ isSelf, isVisible, key, userId }, ix) =>\n userId ? (\n \n ) : null\n )}\n {surplus > 0 && !expanded && (\n setExpanded(true) : null}\n clickable={canExpand}>\n  \n {`+${surplus}`}\n \n )}\n
\n );\n}\n\nexport default ConnectedAvatarList;\n","import ConnectedAvatarList from './ConnectedAvatarList';\n\nexport default ConnectedAvatarList;\n","import PropTypes from 'prop-types';\nimport React, { cloneElement } from 'react';\nimport isString from 'lodash/isString';\nimport Collapse from '../Collapse';\nimport classNames from 'classnames';\nimport './Panel.css';\n\nfunction Panel({\n bodyClass,\n bordered,\n canExpand,\n children,\n className,\n collapsible,\n expanded,\n header,\n headerClass,\n headerRole,\n headerTag: HeaderTag,\n onExpand,\n onExpanded,\n panelRole,\n rounded,\n smoked,\n spacing,\n shadowed,\n ...rest\n}) {\n const handleClick =\n collapsible && canExpand && onExpand && !expanded ? onExpand : null;\n const headerClasses = classNames('Panel__Header', headerClass, { expanded });\n const bodyClasses = classNames('Panel__Body', bodyClass);\n const classes = classNames('Panel', className, {\n 'Panel--bordered': bordered,\n 'Panel--rounded': rounded,\n 'Panel--smoked': smoked,\n 'Panel--shadowed': shadowed,\n 'Panel--clickable': !!handleClick,\n [`Panel--spacing-${spacing}`]: !!spacing\n });\n\n return (\n
\n {header && isString(header) && (\n {header}\n )}\n {header &&\n !isString(header) &&\n cloneElement(header, {\n role: headerRole,\n active: collapsible && expanded\n })}\n {collapsible && (\n \n
\n
{children}
\n
\n \n )}\n {!collapsible && (\n
\n {children}\n
\n )}\n
\n );\n}\n\nPanel.propTypes = {\n bordered: PropTypes.bool,\n collapsible: PropTypes.bool,\n expanded: PropTypes.bool,\n header: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n headerRole: PropTypes.string,\n headerTag: PropTypes.string,\n panelRole: PropTypes.string,\n smoked: PropTypes.bool,\n shadowed: PropTypes.bool,\n spacing: PropTypes.oneOf(['md', 'lg', false])\n};\n\nPanel.defaultProps = {\n bordered: false,\n canExpand: true,\n collapsible: false,\n expanded: false,\n headerTag: 'h2',\n smoked: false,\n shadowed: true,\n spacing: 'md'\n};\n\nexport default Panel;\n","import Panel from './Panel';\n\nexport default Panel;\n","module.exports = __webpack_public_path__ + \"static/media/sprite.symbol.567ffbe1.svg\";","import { createAction } from 'redux-actions';\nimport {\n MODAL_OPEN,\n MODAL_CLOSE,\n CommonModalTypes,\n ImageTypes\n} from '../../constants';\nimport { getFullPath } from '../../utils/location';\n\nexport const MODAL_CLOSE_ALL = 'MODAL_CLOSE_ALL';\n\n/**\n * @function\n * @param {Object} modalSettings\n * @param {string} modalSettings.modalType - Unique ID for the modal dialog\n * @param {Object} modalSettings.modalProps - Props forwarded to the modal child component\n */\nexport const openModal = createAction(MODAL_OPEN);\nexport const closeModal = createAction(MODAL_CLOSE);\nexport const closeAllModals = createAction(MODAL_CLOSE_ALL);\n\nexport const openShareUrlModal = (\n url = getFullPath(),\n props = {\n title: null,\n subtitle: null\n }\n) => dispatch => {\n const { title, subtitle } = props;\n\n dispatch(\n openModal({\n modalType: CommonModalTypes.SHARE_URL_MODAL,\n modalProps: {\n url,\n title,\n subtitle\n }\n })\n );\n};\n\nexport const openImagePickerModal = (options = {}) => {\n const defaultOptions = {\n availableTypes: [ImageTypes.PRESET, ImageTypes.GOOGLE, ImageTypes.UPLOADED],\n crop: {},\n defaultActiveType: ImageTypes.PRESET,\n isCloseButtonShown: true,\n onImageSelect: () => {},\n size: 'large'\n };\n\n return openModal({\n modalType: CommonModalTypes.IMAGE_PICKER,\n modalProps: { ...defaultOptions, ...options }\n });\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Wrapper\":\"LinkifiedSafeHtml_Wrapper__OjeQx\"};","module.exports = __webpack_public_path__ + \"static/media/Hummingbird.6f4ff915.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALYAAABbCAMAAADp9I9qAAAC/VBMVEUAAAAAAAABAAADAgUDAgUOCg0CAQICAQACAQEAAAACAgILCRHkclFhV6eDHkqEUU1YWlomIVzxhGlVR4/BXj2BSjaGfLwICAq1sTEsKGyIQT0uKF+mSSxoJSgXFxzJXDVMRI42MWd1dHWiQB4lJidfISxOJ0KZdZdAM2+xUjUtKnTPaEd1KSwlJi8pJl6TVCsqJ2FmZpQvGha+SySNRC1ZWVeNWVGOIFDXXzNcTqE2NziMPCQUFRdMSJWrrb2gWXP9jGOwRCHLztPKeZZALzczLngnJF63u8dcWGlPUFG+c43XZ0VVSpOIiSepYHt+fZiyZ4KzsSe2bYeqrLGxZYChoCy4SSS7SyS/TiW+SyTHVS4gHkOuRCIsKnWzRyOcQWQ0LX17NFCkTTWxZFNENpMwLHmfR2g2Lod3LkrCUivQdZYsJmuYPWBqYKxQQ5yAOVTNbZAqJnA9MI0gHVSnVkOPRDFZTZ+0V3odHDikRytVSJ3TgJ0kIGLPUye6UjHcgaE4MIszLHSwX03JyCqOPyiBOCNiLB65X4C3Y1CUSjfU1CfITyS1ZlXQXDfARg+mZ3xyIkNLPpWeXHOOJ1SpYVOoQiB/dbaxWkWdSTKvTjBBQ63ViaQ9M5jEb46/ZoYnKYCKPleQUELDXT+uVDsTFC/MSw8XJocmImnRak2dVEO+WDq5RhvxbDraWixwNCTY3yFZJxqzQhh0aLirSG9laGqWQyv8Zx3j6fPX2+DmiKosJaqtc4dBNoVOQYENDESDQjV2fMxWY8aSJGvHY0lYFTDlYSxtLRncVBXb6+qSh8RhZLrdcpnKWoWLUGJxI1vfZTzn7B0UIR1GOqAQG26UNlykUls6QT9gIz2hnNeilMfwjK1zZaOTlZaChIVmR4V8fn+AMlyIN0W/mzpIGxfx+fvXqb1zRmetp+OAjt/U0NihfqqeoKK6dJGHWoG4bnWDYG6WUmxdN2SYRUqfgEnIkLTP1aWIbJ48MWe5u13BxziCe6ulqKmlVWSwh1uojjlat5PtAAAAVnRSTlMARTIVDQkaOisnQCL+/v4q/LL8/FoX/v79okP5nXlggn1B+9uMWTb9/dPEo5F7d3RbVPfXrKJd39LHvr2zoI50IfLt6eTf2NDPz7+/t56VgL23sKqnoY760hYAAAvUSURBVHja1JZ5TJJhHMcfVMTIglWac2Vl2t1a61znOraudZfyMlPpMGQo1FqsGFHxBw0iCJM2CaRal0ROZXnVstJpqakduszSznXfte71e94jumxtLsLPBuPY4MP3/f5+D+ifEBE1tCNqh3Cjxs2KCkLtD/+hfDc/ihuA2h2sWc3X+eMi2l9dgkZdfwTmUSw2al8EDo189KiZP31CewudHTGz6WNTs7t+QhQHPw0ICeT16xceHR3ds2fPIUN4yGdhjbre1NR03V0/fcyYMZ0xaTSdO+eFI9/Fb1Rzc2Sk+1lVlSIvL+Ey6JLynU2mvKrRyIeJqHe7+Xx7pUQikcvtWgXIY2tTQlXVZOTDRNTzIe5KOQbcsX0eaEurtPJ56O/hDesxYiTyIhF19e5IOXjTSCDztNI0u9YuWfKXyt16jIglnM7l/ZAXYXWvq68mW1LZqLbJ5QqFVns5zW6325Sz2X+jHBMbEx8HEOORN+F27+4uBG21XWRWS+wKwJ6kldhsNvUC9CdCeo0gYmPiKNLTib7Iq/jx79ytkqht/Lo6m1qrwDhkEuwtCfnD5u/lUoFzPGMdT/RD3mXSnQdySeEzPr/OWAnO2rykpFKH0ma3Fba+BruNdcXE4Xow6HsiL8PLz38tbzTX1fEhbC22ThLfNivtksLWtkn4nBpBXAxAecfHx+n7Iq8z9c4DiVJdfc8qwdYJoC0qLVXAS9N+/zMHB6tyYBJp73iwJmL9kbeBllTclVsbG9WUNSBrKG1QqpVqHvqVXl1qcpyxjHVMPBCjj0Y0gX5cFtcvEHmB4fkVBUql0mpTaJPAGm6OhlIRaBdO/rXUXYKdOYJYRhvEARVT7AAOi4LDRjQd/dpIUECrLanAcSvtCsoatEsbzDa1tXDRz0tvcBdhTqyAAGsGXOzxjDWXxcBl09asNsNFrbA4v6BAqZZga0pbWuowatXWn8vdLbjG6QRpjzbw3ThC1tyObMTuAF/mh0iCWG2H3WpLCiruVmqltLU04bLYbDZarT+WmzcnWOgUCAiQ/j5tgujI9BqsqSvqD1/mTz9qM36tnh0PCgoqHqclgDIglUovm43PzUrrD+XuVeMSAKS1x/v7cfRjsTqibyEH0Z/t30YCUKvMgLg/p32zThBXFxvNEtCejWjCx5YJBcm0NoG1KfN41RDEwPVcTwiZg/458/Pz32iunKG1ExwNsuJi42MoiZKJ2uVKThb+oE1bwzgywAVFNGyvaPMK8t9l3zpDW0tNJrGx2AjlVr+eSL4NUScLhYw22ROqIvopbPT/0kYzCsI02RA32RGxSWx6Di1RFiotJb1hgZS5QBqsKW2AKbeewA3+fbc7ULEHcbhtgxP4h4PyTZim9tYZKUZmEotNDtB+3PjwvKUkvFeZAawxAgzh2SWEKhp9RyC5P5hH1Ch1+HcLEOC9C9PodFewt0OMERmN5qfWXIul5GGZKouyTgbnH7SZcfTsbQg5gB2Al3XQv9/bwNz3Gg20G3YfKS02mYvN5g8lFvB+W67yaBOEZ3Or+v68SD2nJMdzcLaVDqh1QsI0VNwiUltkghVYvTk0FHsbwZvRjvVoq6b8slLZHOaIYCPvMFdHxi0DZbEIbjLj0xuX1p+zWEJDTz9RlWNrUpvegTCO+t8dX/4wgpwgf+Qt2BqdRpd95IKI1habjScy1+Ses4RaUk5fyyoHa6zNhB1DuHoiX2BhrU5X+wW0KUyfnmQmrjlx7lxoSkrK6fNXylWgDTDarpHIJxgG2tlhpLIMx/3yZGZi4qGuVy0pwHkoygHQJgFrPI6+AU+ng5rsvSADbZlMdPMCWCeuWnMN0gagKMkH6LSxtcAf+Qhh2TCUr0BbBtxsWbsKSDy0OiWX1O50uj+tDdZ6FQf5CktrYQeGtchIa1nq5i2Q9rLE9TvX52Lr3ND728ma4Gb7yDiSjIa4cUso64uUdWpKambqeaCk5P79TTuczhxAPwT5DiEnI7N1uCUOh2NnxoktmZkHDxZldOp0YlXXa2/79+9f/PCp4TBFj9HhIchXmFnk1tWGtYB214zU1QcTB7y49/zKtrMGg6vmKEkXmmBDjWHfwB7DfMN9VFFRV01tdQtYb7x48F5Z2XEa0jn4G10OG2iyfMG9z56VRXve32q5kZGauvLl8eNl5Sr8ZyQrK2v37m0U24FdR7buzsoSGgxCAO42DRw5LBz9RwZdBO9X2DrjRfmO9PT0DRs2LF+3bt0uzIoVK3ZRHDu1a++RI+v2b9oE3nDmC1V6Vw/0//havdmFJhWGcfxsTpuZF7JKxKhG0CdFjW6Cgm7qKuiujznFzjzYkAl69KCH00FFJdkShIZHESQ/twVyGngT2yQEo4sI2kUbQRCDuq6bbnveczQXprnw1Om3K4XBb8/+533f5/XxeMZmyzx30vATuA/acC2ZSuWTyVBoGoBSTyPma/wTzxNEjMNTLDszefvRg+1/uJBDucHbRtN0wpr5Gkd3qaK2oAsREbWf8FHwjsVi3lqt5vVWudSbhn6idcBWaVQj2N9Fk7EBTopeXU2n/XGkzbJJTzIEhW6VG7Sj0WhsKYa8EbVKPa+f0As7kGqP2CTs2PqVg6SLt+Et8qacqzSddj4TvPElyLEnND0/D48kWIfml6KVprcXiYcj9X38hF7/UwumaXc3g2TPr8VVNoRzzEmB94d43GLJL3HcEo7j8GCGkDfk3APWlYi3We1wOLy4LzKhPyveU+4dVQvyqlYvOVg0vcpNgzXtTH94Ct7TIZzjwJvjkpBygQpfCUciYdBG1tXqIl7dvgyVbXW+yuEf96TqAWurukzKuG1ud8BNUaBNv6AscUtqOuThOD/O4bmkB897IOmRCiQDAGOwDuP5SP6iqDjc7uFVrXuSQdK1HTZk3G63HXk7Ke0LaqpoyYdAl/P72eVljwcH8rVKRAScAfzQ/qtNV0UrbOgv+JsorYK3Dby1WiqdeBpPeQCuaplhl/Oit5ePAo1Gg2+E/af2H+i8A4S8/OWF/BxoQ05slFZLJxLptXg8hSr8MHeHZVkc8ON4BWnz29tR7sx++BU5aGO6jDsA4jYt5XQmEs8/FS14PldfrE/OsGwKaftTkWgjyvOVU0cgHCJdQ6JUDBLlb71RTpwJ8P5YtOQW67l6bg6OTX4AT3ENno+gQrfp8kgqhgbLSE/vgN0eAG8atANZ2C5ZsM7NzIE2YupZ49gZsdBtOhZASdZtdc+cgDbypqHc1tLJ+LMFEM8t35m7DQm5E194fEKJdfDL7UYj0brd2xsO3gRRul+EQ6yFzU3Owad5c+HXW5ufL2CddG7uyHt0kIB1f952gsiWvPGFqYWpW5Mvi7e979Y3Nje3XnWWu+MoJSW9vd1uK5BF8Z56Wiyy976R6+T62udXmzexDiQ9uPbvDeJWAqyJYMlcLRbver+YS6UySZLr7z9vHcRkisFuN5vNTe9srWbcKGXhNQPa5Nbm7HFMpgxdNyMIRHZjY4MRX6Jyr73SHsVky1nG5XIhb6uLYZgyIWibkffYyg1Mvozqyg6HI2g1M4ALtBEukiwYV7Synkg+bETerp3aRNnkM2lnxzE5M6ID7WCwzDBmQRtiQ5pMhbUVGYdb4LwxKHgTBHIuuxgTaBtlHW4BhQ55O1ClHQ5X2QT4fJS8wy1w7mTQAQjapAlROLki73ALKM5ddyBQRERtclbu4RYZ1wnepia+sUvY/4FGB/s86TM1UzIr/3C3Mg4nFNEbLd3j//7D6z4Zv/bDuzB2tI9RAZVaYjR9/c+VBuTtQ9rfLv1+MEMzJDnDfe4+hJ0Bb0gJNdLHGIz09Ptknha9C2sXsN8NHSmGJGd0Fx2EA7wLRgh37xEv1KRJjGI3xxS7yweMYUCXgTr5fCq/A8Vps8/XTknH+KJMtWEJd/kKxkv/WbWB8VXoKdHIcc/RXPWw1Oz2euOKteC4ggE9BqHVQ5KzZ7f5djPrq8jzl2Pnslu3d6yDJoewBnYf8oe3pEazW22lgSCvYYiuX6mA9yRG+Udtpvk81qb9BRaZozhtwJp8B8Dc1T/Pm2QhAAAAAElFTkSuQmCC\"","import React, { memo } from 'react';\nimport values from 'lodash/values';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Image from 'react-graceful-image';\nimport { Size } from '../../../constants';\nimport { getContentDataUrl, getUrl } from '../../selectors/images';\nimport useTooltip from '../../hooks/useTooltip';\nimport { imageDetailsType } from '../../types';\nimport Icon from '../Icon';\nimport { convertToRandomBackgroundId, getInitials } from './_utils';\nimport scss from './Avatar.module.scss';\n\nAvatar.propTypes = {\n blurred: PropTypes.bool,\n image: imageDetailsType,\n name: PropTypes.string,\n size: PropTypes.oneOf(values(Size)),\n transparent: PropTypes.bool\n};\nfunction Avatar({\n blurred,\n bgClassName,\n className,\n image,\n name,\n showTooltip = true,\n size = Size.md,\n transparent,\n tooltipPosition,\n ...rest\n}) {\n const imgUrl = getUrl(image) || getContentDataUrl(image);\n const initials = name && getInitials(name);\n const showPlaceholder = !imgUrl && !initials;\n const tooltipProps = useTooltip(name, tooltipPosition);\n const tooltip = showTooltip ? tooltipProps : {};\n\n const wrapperClasses = classNames(\n scss.Wrapper,\n className,\n scss[`size-${size}`],\n {\n [scss.withInitials]: !imgUrl && initials\n }\n );\n const bgClasses = classNames(\n scss.Bg,\n bgClassName,\n scss[`bg-${convertToRandomBackgroundId(initials)}`],\n {\n [scss.blurred]: blurred,\n [scss.transparent]: transparent\n }\n );\n\n return (\n
\n
\n {imgUrl && (\n \n )}\n {initials && (\n \n {initials}\n \n )}\n {showPlaceholder && (\n \n )}\n
\n
\n );\n}\n\nexport default memo(Avatar);\n","import isString from 'lodash/isString';\nimport range from 'lodash/range';\nimport sample from 'lodash/sample';\nimport invariant from 'invariant';\n\nexport function getInitials(name, limit = 3) {\n invariant(isString(name), 'name should be a string, got ' + typeof name);\n return name\n .split(' ')\n .map(str => str[0])\n .join('')\n .substr(0, limit);\n}\n\nexport function convertToRandomBackgroundId(str, maxValue = 10) {\n if (!isString(str)) {\n return sample(range(1, 10));\n }\n\n const charCodeHash = str\n .split('')\n .map((_, ix) => str.charCodeAt(ix))\n .map(num => num << 5)\n .map(num => (num % maxValue) + 1)\n .reduce((diff, num) => Math.abs(diff - num), 0);\n return maxValue < charCodeHash ? charCodeHash % maxValue : charCodeHash;\n}\n","import Avatar from './Avatar';\nexport default Avatar;\n","module.exports = __webpack_public_path__ + \"static/media/HummingbirdHidden.b74c4a5c.gif\";","module.exports = __webpack_public_path__ + \"static/media/placeholder.dc11fe36.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Wrapper\":\"ImageInput_Wrapper__1A9-u\"};","module.exports = \"data:image/jpeg;base64,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\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Avatar\":\"ConceptOwnerAvatar_Avatar__3Wh93\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ChallengeSearchPopover\":\"ChallengeSearchPopover_ChallengeSearchPopover__17kkz\"};","import React, { PureComponent } from 'react';\nimport find from 'lodash/fp/find';\nimport get from 'lodash/get';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { translate } from 'react-i18next';\nimport { Size } from '../../../constants';\nimport localiseUserName from '../../../utils/localiseUserName';\nimport { isIE } from '../../../utils/userAgent';\nimport {\n getCountry,\n getDescription,\n getRegisterDate,\n getWebsite,\n getWorkPosition,\n getWorkplace,\n getLinkedinUrl\n} from '../../getters';\nimport {\n ownProfileSelector,\n isAdminSelector\n} from '../../../profile/state/profile';\nimport { getUserAvatar } from '../../../common/getters/users';\nimport { withNonIdealState } from '../../../common/containers';\nimport placeholderUrl from './placeholder.svg';\nimport Avatar from '../../../common/components/Avatar';\nimport Grid from '../../../common/components/Grid';\nimport Icon from '../../../common/components/Icon';\nimport Label from '../../../common/components/Label';\nimport LinkifiedSafeHtml from '../../../common/components/LinkifiedSafeHtml';\nimport NonIdealState from '../../../common/components/NonIdealState';\nimport './ProfileTab.css';\n\nconst BASE_CLASS = 'ProfileTab';\n\nexport class ProfileTab extends PureComponent {\n render() {\n const {\n aboutMe,\n avatar,\n country,\n isAdmin,\n linkedInUrl,\n position,\n registeredAt,\n t,\n userName,\n websiteUrl,\n workplace\n } = this.props;\n\n return (\n \n \n \n \n \n

\n {userName} \n {isAdmin && (\n \n )}\n

\n {position &&

{position}

}\n {workplace &&

{workplace}

}\n {country && (\n

\n \n {country}\n

\n )}\n
\n {websiteUrl && (\n

\n \n \n {websiteUrl}\n \n

\n )}\n {linkedInUrl && (\n

\n \n \n {linkedInUrl}\n \n

\n )}\n

\n \n \n {t('profile/Joined {{registeredAt,fromNow}}', {\n registeredAt\n })}\n \n

\n \n\n \n

{t('profile/editorForm/fields/aboutMe/label')}

\n\n \n\n

{t('profile/Activity Graph')}

\n }\n title={t('common/Comming soon!')}\n description={t('profile/Activity graph description')}\n />\n
\n
\n );\n }\n}\n\nfunction mapStateToProps(state, { t }) {\n const profile = ownProfileSelector(state);\n const countryCode = getCountry(profile);\n const country = find(\n { cca2: countryCode },\n t('countries', { returnObjects: true })\n );\n const userName = localiseUserName(t, profile);\n\n return {\n aboutMe: getDescription(profile),\n avatar: getUserAvatar(profile),\n country: get(country, 'name', ''),\n isAdmin: isAdminSelector(state),\n linkedInUrl: getLinkedinUrl(profile),\n loading: !userName,\n position: getWorkPosition(profile),\n registeredAt: getRegisterDate(profile),\n userName,\n websiteUrl: getWebsite(profile),\n workplace: getWorkplace(profile)\n };\n}\n\nexport default compose(\n translate(),\n connect(mapStateToProps),\n withNonIdealState({\n isLoading: ({ userName }) => !userName\n })\n)(ProfileTab);\n","import ProfileTab from './ProfileTab';\n\nexport default ProfileTab;\n","import React from 'react';\nimport Avatar from '../../../common/components/Avatar';\nimport Button from '@bit/be-novative.kit.button';\nimport scss from './ImageInput.module.scss';\nimport { Size } from '../../../constants';\n\nfunction ImageInput({ input, meta, editText, onEdit, userName, ...rest }) {\n return (\n
\n \n \n
\n );\n}\n\nexport default ImageInput;\n","import ImageInput from './ImageInput';\n\nexport default ImageInput;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { translate } from 'react-i18next';\nimport { useDispatch } from 'react-redux';\nimport { Panel, Callout, Button, Heading } from '../../../common/components';\nimport { resetPassword } from '../../actions';\n\nconst PENDING = 'PENDING';\nconst SUCCESS = 'SUCCESS';\nconst FAIL = 'FAIL';\n\nPasswordResetHelp.propTypes = {\n t: PropTypes.func.isRequired\n};\nexport function PasswordResetHelp({ t, ...rest }) {\n const [requestStatus, setRequestStatus] = useState();\n const dispatch = useDispatch();\n\n const handleRequestClick = async () => {\n setRequestStatus(PENDING);\n\n try {\n await dispatch(resetPassword());\n setRequestStatus(SUCCESS);\n } catch (error) {\n setRequestStatus(FAIL);\n }\n };\n\n return (\n \n

{t('profile/passwordReset/body')}

\n\n {requestStatus !== SUCCESS && (\n \n {t('profile/passwordReset/requestCTA')}\n \n )}\n\n {requestStatus === FAIL && (\n \n {t('profile/passwordReset/submitFail')}\n \n )}\n\n {requestStatus === SUCCESS && (\n {t('profile/passwordReset/submitSuccess')}\n )}\n \n );\n}\n\nexport default translate()(PasswordResetHelp);\n","import PasswordResetHelp from './PasswordResetHelp';\n\nexport default PasswordResetHelp;\n","import { PASSWORD_RESET } from '../../constants';\nimport { IDENTITY_API } from '../../api/constants';\n\n/**\n * @deprecated Will be handled by auth app\n */\nexport const resetPassword = () => {\n return {\n [IDENTITY_API]: {\n url: '/profile/password/request',\n method: 'GET',\n type: PASSWORD_RESET\n }\n };\n};\n","import React, { Children } from 'react';\nimport { withRouter, matchPath } from 'react-router-dom';\nimport './SecondaryNavigation.css';\n\nfunction SecondaryNavigation({ children, location }) {\n const activeGroup = Children.toArray(children).find(group =>\n Children.toArray(group.props.children).some(link => {\n return matchPath(location.pathname, { path: link.props.to, exact: true });\n })\n );\n\n return (\n
\n {activeGroup && (\n

\n {activeGroup.props.title}\n

\n )}\n
    {children}
\n
\n );\n}\n\nexport default withRouter(SecondaryNavigation);\n","import React from 'react';\nimport './SecondaryNavigationGroup.css';\n\nfunction SecondaryNavigationGroup({ children, title }) {\n return (\n
  • \n
    \n {title}\n
    \n
      \n {children}\n
    \n
  • \n );\n}\n\nexport default SecondaryNavigationGroup;\n","import React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport './SecondaryNavigationItem.css';\n\nfunction SecondaryNavigationItem({ children, ...rest }) {\n return (\n
  • \n \n {children}\n \n
  • \n );\n}\n\nexport default SecondaryNavigationItem;\n","import SecondaryNavigation from './SecondaryNavigation';\nimport SecondaryNavigationGroup from './SecondaryNavigationGroup';\nimport SecondaryNavigationItem from './SecondaryNavigationItem';\n\nSecondaryNavigation.Item = SecondaryNavigationItem;\nSecondaryNavigation.Group = SecondaryNavigationGroup;\n\nexport default SecondaryNavigation;\n","import get from 'lodash/get';\nimport { getPlatformName } from '../utils/platform';\n\nconst DEFAULT_PROFILE_FORM_SETTINGS = {\n requirePrivacyConsent: false\n};\n\nconst EXCEPTIONS = {\n 'mvm-csoport': {\n requirePrivacyConsent: true\n },\n team: {\n requirePrivacyConsent: true\n }\n};\n\nconst platform = getPlatformName();\n\nexport function getProfileFormSettings() {\n return get(EXCEPTIONS, platform, DEFAULT_PROFILE_FORM_SETTINGS);\n}\n","import React, { useCallback, useContext, useState } from 'react';\nimport flow from 'lodash/flow';\nimport get from 'lodash/get';\nimport lowerCase from 'lodash/lowerCase';\nimport omit from 'lodash/omit';\nimport { FORM_ERROR } from 'final-form';\nimport { Field, Form } from 'react-final-form';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport { translate, Trans } from 'react-i18next';\nimport { parseEditorState } from '@bit/be-novative.kit.richtext-utils';\nimport {\n POSITION_MAXLENGTH,\n WORKPLACE_MAXLENGTH,\n PROFILE_IMAGE_ASPECT_RATIO,\n PROFILE_IMAGE_CROP_HEIGHT,\n PROFILE_FORM_FIELDS\n} from '../../constants';\nimport { ImageTypes } from '../../../constants';\nimport { required, url, maxlength } from '../../../utils/validation';\nimport formControl from '@bit/be-novative.kit.form-control';\nimport Button from '@bit/be-novative.kit.button';\nimport Callout from '../../../common/components/Callout';\nimport Checkbox from '@bit/be-novative.kit.checkbox';\nimport Grid from '../../../common/components/Grid';\nimport Input from '@bit/be-novative.kit.input';\nimport RichText from '../../../common/components/RichText';\nimport UrlInput from '../../../common/components/UrlInput';\nimport { AuthContext } from '../../../authentication/components/AuthProvider';\nimport ImageInput from '../../components/ImageInput';\nimport { openImagePickerModal } from '../../../common/actions';\nimport { getCurrentLanguage } from '../../../common/selectors/language';\nimport {\n updateOwnProfile,\n ownProfileSelector\n} from '../../../profile/state/profile';\nimport {\n getUserAvatar,\n getFirstName,\n getLastName\n} from '../../../common/getters/users';\nimport {\n getWorkPosition,\n getWorkplace,\n getDescription,\n getLinkedinUrl,\n getWebsite\n} from '../../getters';\nimport { getProfileFormSettings } from '../../config';\nimport translateApiErrorMessage from '../../../utils/translateApiErrorMessage';\nimport useMountEffect from '../../../common/hooks/useMountEffect';\n\nconst InputFormControl = formControl(Input);\nconst RichTextFormControl = formControl(RichText);\nconst UrlInputFormControl = formControl(UrlInput);\n\nconst {\n DESCRIPTION,\n FIRST_NAME,\n IMAGE,\n LAST_NAME,\n POSITION,\n WORKPLACE,\n WEBSITE_URL,\n LINKEDIN_URL\n} = PROFILE_FORM_FIELDS;\n\nfunction ProfileEditForm({ t }) {\n // Handled in lifecycle to allow testing\n const [requireConsent, setRequireConsent] = useState(false);\n useMountEffect(function checkIfConsentRequired() {\n const formSettings = getProfileFormSettings();\n setRequireConsent(formSettings.requirePrivacyConsent);\n });\n\n const dispatch = useDispatch();\n const handleSubmit = useCallback(\n async function handleSubmit(formData) {\n try {\n unwrapResult(\n await dispatch(updateOwnProfile(omit(formData, 'consent')))\n );\n if (window) {\n window.location.reload();\n }\n } catch (error) {\n return { [FORM_ERROR]: get(error, 'code') };\n }\n },\n [dispatch]\n );\n\n const handleAvatarChange = useCallback(\n function handleAvatarChange(onImageSelect) {\n dispatch(\n openImagePickerModal({\n defaultActiveType: ImageTypes.UPLOADED,\n availableTypes: [ImageTypes.UPLOADED],\n crop: {\n aspect: PROFILE_IMAGE_ASPECT_RATIO,\n width: PROFILE_IMAGE_CROP_HEIGHT\n },\n isCloseButtonShown: false,\n onImageSelect\n })\n );\n },\n [dispatch]\n );\n\n const language = useSelector(getCurrentLanguage);\n const isNameReversed = lowerCase(language) === 'hu';\n\n const { userEmail } = useContext(AuthContext);\n const profile = useSelector(ownProfileSelector);\n const initialForm = {\n [FIRST_NAME]: getFirstName(profile),\n [LAST_NAME]: getLastName(profile),\n [IMAGE]: getUserAvatar(profile),\n [DESCRIPTION]: flow(\n getDescription,\n parseEditorState\n )(profile),\n [POSITION]: getWorkPosition(profile),\n [WORKPLACE]: getWorkplace(profile),\n [WEBSITE_URL]: getWebsite(profile),\n [LINKEDIN_URL]: getLinkedinUrl(profile)\n };\n\n return (\n \n {({ form, handleSubmit, values }) => {\n const {\n invalid,\n submitting,\n submitError,\n submitSucceeded\n } = form.getState();\n const firstName = get(values, FIRST_NAME);\n const lastName = get(values, LAST_NAME);\n const avatarUserName = isNameReversed\n ? `${lastName} ${firstName}`\n : `${firstName} ${lastName}`;\n const updateAvatar = () => {\n const imageUpdateCallback = image => {\n form.change(IMAGE, image);\n form.submit();\n };\n handleAvatarChange(imageUpdateCallback);\n };\n\n return (\n
    \n \n \n \n \n \n

    {t('profile/editorForm/title')}

    \n {submitSucceeded && (\n \n {t('profile/editorForm/submitSuccess')}\n \n )}\n {submitError && (\n \n {translateApiErrorMessage(t, submitError)}\n \n )}\n \n {!isNameReversed && (\n \n \n \n )}\n \n \n \n {isNameReversed && (\n \n \n \n )}\n \n \n \n \n \n \n \n \n\n \n \n \n \n
    \n \n \n \n \n \n \n \n \n \n \n

    \n \n \n \n * \n \n \n \n

    \n {requireConsent && (\n
    \n \n {t('legalConsent/profileEdit')}\n \n
    \n )}\n \n {t('common/userAction/save')}\n \n
    \n
    \n
    \n );\n }}\n \n );\n}\n\nexport default translate()(ProfileEditForm);\n","import ProfileEditForm from './ProfileEditForm';\n\nexport default ProfileEditForm;\n","import React, { useCallback } from 'react';\nimport get from 'lodash/get';\nimport { FORM_ERROR } from 'final-form';\nimport { Form, Field } from 'react-final-form';\nimport { translate } from 'react-i18next';\nimport { useLocation } from 'react-router-dom';\nimport {\n required,\n composeValidators,\n password\n} from '../../../utils/validation';\nimport parseQueryString from '../../../utils/parseQueryString';\nimport translateApiErrorMessage from '../../../utils/translateApiErrorMessage';\nimport { PasswordPolicy } from '../../../constants';\nimport { CommonException } from '../../../api/constants';\nimport profileApi from '../../api/profileApi';\nimport formControl from '@bit/be-novative.kit.form-control';\nimport Button from '@bit/be-novative.kit.button';\nimport Callout from '../../../common/components/Callout';\nimport Grid from '../../../common/components/Grid';\nimport Password from '@bit/be-novative.kit.password';\nimport PasswordResetHelp from '../../components/PasswordResetHelp';\n\nexport const RESET_TOKEN_QUERY = 'code';\nconst PasswordFormControl = formControl(Password);\n\nfunction PasswordChangeForm({ t }) {\n const location = useLocation();\n const routeParams = parseQueryString(location.search);\n const resetToken = get(routeParams, RESET_TOKEN_QUERY);\n\n const handleSubmit = useCallback(\n async function handleSubmit({ currentPassword, newPassword }) {\n try {\n return await profileApi.changePassword(\n currentPassword || resetToken,\n newPassword\n );\n } catch (error) {\n let message = translateApiErrorMessage(t, error.code);\n if (error.code === CommonException.Unauthenticated) {\n message = t(\n `profile/changePasswordForm/error/${\n resetToken ? 'invalidToken' : 'invalidPassword'\n }`\n );\n }\n return { [FORM_ERROR]: message };\n }\n },\n [resetToken, t]\n );\n\n return (\n \n \n

    \n {resetToken\n ? t('profile/changePasswordForm/title/reset')\n : t('profile/changePasswordForm/title/update')}\n

    \n
    \n {({ form, handleSubmit }) => {\n const {\n submitting,\n submitSucceeded,\n submitError,\n dirtySinceLastSubmit\n } = form.getState();\n\n return (\n \n {!resetToken && (\n \n )}\n\n \n\n
    \n \n {t('profile/changePasswordForm/submitCTA')}\n \n
    \n\n {submitSucceeded && (\n \n {t('profile/changePasswordForm/submitSuccess')}\n \n )}\n\n {submitError && !dirtySinceLastSubmit && (\n \n {submitError}\n \n )}\n\n {(!resetToken || submitError) && (\n \n )}\n \n );\n }}\n \n
    \n
    \n );\n}\n\nexport default translate()(PasswordChangeForm);\n","import PasswordChangeForm from './PasswordChangeForm';\n\nexport default PasswordChangeForm;\n","import React, { useCallback } from 'react';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport { FORM_ERROR } from 'final-form';\nimport { Form, Field } from 'react-final-form';\nimport { translate } from 'react-i18next';\nimport {\n updateOwnProfile,\n ownProfileSelector\n} from '../../../profile/state/profile';\nimport translateApiErrorMessage from '../../../utils/translateApiErrorMessage';\nimport formControl from '@bit/be-novative.kit.form-control';\nimport Button from '@bit/be-novative.kit.button';\nimport Callout from '../../../common/components/Callout';\nimport CheckboxGroup from '../../../common/components/CheckboxGroup';\n\nconst CheckboxGroupFormControl = formControl(CheckboxGroup);\n\nContentLanguageForm.propTypes = {\n languages: PropTypes.array\n};\nfunction ContentLanguageForm({ languages = [], t }) {\n const dispatch = useDispatch();\n const handleFormSubmit = useCallback(\n async function handleSubmit(values) {\n try {\n unwrapResult(await dispatch(updateOwnProfile(values)));\n } catch (error) {\n return {\n [FORM_ERROR]: get(error, 'code')\n };\n }\n },\n [dispatch]\n );\n\n const profile = useSelector(ownProfileSelector);\n\n const choices = languages.map(language => ({\n value: language,\n label: t(`language/${language}`)\n }));\n\n return (\n
    \n {({ handleSubmit, form }) => {\n const {\n touched,\n submitting,\n submitSucceeded,\n submitError\n } = form.getState();\n\n return (\n \n {submitSucceeded && (\n \n {t('profile/Content language saved successfully!')}\n \n )}\n {submitError && (\n \n {translateApiErrorMessage(t, submitError)}\n \n )}\n \n \n {t('common/userAction/save')}\n \n \n );\n }}\n \n );\n}\n\nexport default compose(translate())(ContentLanguageForm);\n","import ContentLanguageForm from './ContentLanguageForm';\n\nexport default ContentLanguageForm;\n","import React, { useCallback } from 'react';\nimport { translate } from 'react-i18next';\nimport { useDispatch } from 'react-redux';\nimport { changeLanguage } from '../../../common/actions';\nimport formControl from '@bit/be-novative.kit.form-control';\nimport Grid from '../../../common/components/Grid';\nimport Select from '@bit/be-novative.kit.select';\n\nconst SelectFormControl = formControl(Select);\n\nfunction InterfaceLanguageForm({ currentLanguage, languages, t }) {\n const dispatch = useDispatch();\n const handleChange = useCallback(\n function handleChange(event) {\n dispatch(changeLanguage(event.target.value));\n },\n [dispatch]\n );\n\n return (\n <>\n \n \n \n {languages.map(lang => (\n \n ))}\n \n \n \n \n );\n}\n\nexport default translate()(InterfaceLanguageForm);\n","import InterfaceLanguageForm from './InterfaceLanguageForm';\n\nexport default InterfaceLanguageForm;\n","import React from 'react';\nimport flow from 'lodash/flow';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { translate } from 'react-i18next';\nimport ContentLanguageForm from '../ContentLanguageForm';\nimport InterfaceLanguageForm from '../InterfaceLanguageForm';\nimport { Grid } from '../../../common/components';\nimport { getCurrentLanguage } from '../../../common/selectors/language';\nimport { SUPPORTED_UI_LANGUAGES } from '../../../constants';\nimport { platformDataSelector } from '../../../common/state/platform';\nimport { getContentLanguages } from '../../../common/getters/platform';\n\nfunction LanguageSettings({ t, contentLanguages, activeInterfaceLanguage }) {\n return (\n \n \n

    {t('profile/Language Settings')}

    \n \n \n
    \n
    \n );\n}\n\nfunction mapStateToProps(state) {\n return {\n contentLanguages: flow(\n platformDataSelector,\n getContentLanguages\n )(state),\n activeInterfaceLanguage: getCurrentLanguage(state)\n };\n}\n\nexport default compose(\n translate(),\n connect(mapStateToProps)\n)(LanguageSettings);\n","import LanguageSettings from './LanguageSettings';\n\nexport default LanguageSettings;\n","export const findByPropMatch = (propKey, propVal) => item =>\n item[propKey] === propVal;\n\nexport const dropByPropMatch = (propKey, propVal) => item =>\n item[propKey] !== propVal;\n\nexport const findById = id => findByPropMatch('id', id);\n\nexport const dropById = id => !findById(id);\n","import React, { Component } from 'react';\nimport each from 'lodash/each';\nimport find from 'lodash/fp/find';\nimport flow from 'lodash/flow';\nimport get from 'lodash/get';\nimport getFp from 'lodash/fp/get';\nimport memoize from 'lodash/memoize';\nimport some from 'lodash/some';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { compose } from 'redux';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport { translate } from 'react-i18next';\nimport {\n Button,\n Callout,\n ConfirmDialog,\n Grid,\n CheckboxFormControl,\n Paragraph\n} from '../../../common/components';\nimport { openModal, closeModal } from '../../../common/actions';\nimport {\n updatePrivacy,\n deleteProfile,\n ownProfileSelector\n} from '../../../profile/state/profile';\nimport { getUserConsent } from '../../getters';\nimport { ModalRoot } from '../../../common/containers';\nimport { userConsentKeys as consentKeys } from '../../../constants';\nimport { ACCOUNT_MANAGEMENT_CONSENT } from '../../constants';\nimport {\n findByPropMatch,\n dropByPropMatch\n} from '../../../utils/arrayCallbacks';\nimport { resetCookieConsent } from '../../../utils/cookieConsent';\nimport { generateConsentModel } from '../../../utils/legal';\nimport translateApiErrorMessage from '../../../utils/translateApiErrorMessage';\n\nconst CONFIRM_MODAL = 'CONFIRM_MODAL';\n\nconst privacyOptions = memoize(t => generateConsentModel(t));\n\n// TODO refactor task created in CLOUD-2772\nexport class PrivacySettings extends Component {\n static propTypes = {\n t: PropTypes.func.isRequired,\n openModal: PropTypes.func.isRequired,\n closeModal: PropTypes.func.isRequired,\n updatePrivacy: PropTypes.func.isRequired,\n initialValues: PropTypes.object.isRequired,\n privacyOptions: PropTypes.array.isRequired\n };\n\n state = {\n checkboxes: {\n ...this.props.initialValues\n },\n submitStarted: false,\n submitSucceeded: false,\n submitError: false,\n warningsOnSubmit: []\n };\n\n componentDidMount() {\n each(\n this.state.checkboxes[consentKeys.ACCOUNT_MANAGEMENT_CONSENT],\n (isConsentGiven, choiceName) => {\n if (!isConsentGiven) {\n this.queueSubmitWarning(\n consentKeys.ACCOUNT_MANAGEMENT_CONSENT,\n choiceName\n );\n }\n }\n );\n }\n\n getModalSettings = sectionName => {\n const warning = flow(\n find(findByPropMatch('name', sectionName)),\n getFp('warning')\n )(privacyOptions(this.props.t));\n\n if (warning) {\n return { ...warning, size: 'large' };\n }\n };\n\n handleCheckboxChange = (sectionName, choiceName, event) => {\n const { checked } = event.target;\n const { openModal } = this.props;\n const modalSettings = this.getModalSettings(sectionName);\n const shouldShowWarning = !checked && modalSettings;\n const continueCheckboxUpdate = () =>\n this.updateCheckboxState(sectionName, choiceName, checked);\n const okCallback = () => {\n continueCheckboxUpdate();\n this.queueSubmitWarning(sectionName, choiceName);\n };\n\n this.setState({ submitStarted: false });\n\n if (shouldShowWarning) {\n openModal({ ...modalSettings, okCallback });\n } else {\n continueCheckboxUpdate();\n this.unqueueSubmitWarning(choiceName);\n }\n };\n\n updateCheckboxState = (sectionName, choiceName, value) => {\n this.setState(prevState => ({\n checkboxes: {\n ...prevState.checkboxes,\n [sectionName]: {\n ...prevState.checkboxes[sectionName],\n [choiceName]: !!value\n }\n }\n }));\n };\n\n queueSubmitWarning = (sectionName, choiceName) => {\n const { closeModal } = this.props;\n const shouldBeFirstWarning =\n sectionName === consentKeys.ACCOUNT_MANAGEMENT_CONSENT;\n const restoreCheckboxToTrue = () =>\n this.updateCheckboxState(sectionName, choiceName, true);\n const okCallback = async () => {\n await closeModal();\n this.showNextSubmitWarning();\n };\n const cancelCallback = async () => {\n await closeModal();\n restoreCheckboxToTrue();\n };\n const modalSettings = {\n sectionName,\n choiceName,\n settings: {\n ...this.getModalSettings(sectionName),\n okCallback,\n cancelCallback\n }\n };\n const isWarningUnique = !this.state.warningsOnSubmit.find(\n findByPropMatch('sectionName', sectionName)\n );\n\n if (isWarningUnique) {\n this.setState(prevState => {\n const warningsOnSubmit = shouldBeFirstWarning\n ? [modalSettings, ...prevState.warningsOnSubmit]\n : [...prevState.warningsOnSubmit, modalSettings];\n\n return {\n ...prevState,\n warningsOnSubmit\n };\n });\n }\n };\n\n unqueueSubmitWarning = choiceName => {\n this.setState(prevState => ({\n ...prevState,\n warningsOnSubmit: [\n ...prevState.warningsOnSubmit.filter(\n dropByPropMatch('choiceName', choiceName)\n )\n ]\n }));\n };\n\n showNextSubmitWarning = () => {\n const { openModal } = this.props;\n const [modalSettings, ...restOfWarnings] = this.state.warningsOnSubmit;\n\n if (modalSettings) {\n openModal(modalSettings.settings);\n this.setState(prevState => ({\n ...prevState,\n warningsOnSubmit: [...restOfWarnings]\n }));\n } else {\n this.handleSubmit();\n }\n };\n\n handleSubmit = () => {\n if (this.state.warningsOnSubmit.length > 0) {\n return this.showNextSubmitWarning();\n }\n\n this.setState({\n submitStarted: true,\n submitSucceeded: false,\n submitError: false\n });\n\n const consentSettings = this.state.checkboxes;\n const isProfileDeleteRequired = some(\n consentSettings[ACCOUNT_MANAGEMENT_CONSENT],\n consentGiven => !consentGiven\n );\n\n if (isProfileDeleteRequired) {\n this.props\n .deleteProfile()\n .then(unwrapResult)\n .catch(this.handleSubmitFail);\n } else {\n this.props\n .updatePrivacy(this.state.checkboxes)\n .then(unwrapResult)\n .then(this.handleSubmitSuccess)\n .catch(this.handleSubmitFail);\n }\n };\n\n handleSubmitSuccess = () => {\n this.setState({ submitStarted: false, submitSucceeded: true });\n };\n\n handleSubmitFail = submitError => {\n this.setState({ submitStarted: false, submitError });\n };\n\n handleCookieReset = () => {\n resetCookieConsent();\n window.location.reload();\n };\n\n render() {\n const { t } = this.props;\n const {\n checkboxes,\n submitStarted,\n submitError,\n submitSucceeded\n } = this.state;\n\n return (\n <>\n \n \n

    {t('profile/privacyForm/title')}

    \n

    {t('profile/privacyForm/description')}

    \n
    \n {privacyOptions(t).map(section => (\n
    \n

    {section.label}

    \n\n {section.choices.map(choice => (\n \n {choice.label}\n \n ))}\n
    \n ))}\n \n {t('common/userAction/save')}\n \n \n \n \n {submitSucceeded && (\n \n {t('profile/privacyForm/submitSuccess')}\n \n )}\n {submitError && (\n \n {translateApiErrorMessage(t, submitError)}\n \n )}\n \n \n \n
    \n
    \n \n \n \n \n \n \n \n \n );\n }\n}\n\nconst mapStateToProps = state => ({\n initialValues: flow(\n ownProfileSelector,\n getUserConsent\n )(state)\n});\n\nconst mapDispatchToProps = dispatch => ({\n openModal: (modalSettings = {}) =>\n dispatch(\n openModal({\n modalType: CONFIRM_MODAL,\n modalProps: {\n isCloseButtonShown: false,\n rounded: true,\n ...modalSettings\n }\n })\n ),\n closeModal: () => dispatch(closeModal()),\n updatePrivacy: userConsent => dispatch(updatePrivacy(userConsent)),\n deleteProfile: () => dispatch(deleteProfile())\n});\n\nexport default compose(\n translate(),\n connect(\n mapStateToProps,\n mapDispatchToProps\n )\n)(PrivacySettings);\n","import PrivacySettings from './PrivacySettings';\n\nexport default PrivacySettings;\n","import React, { useCallback, useState } from 'react';\nimport get from 'lodash/get';\nimport { translate } from 'react-i18next';\nimport Button from '@bit/be-novative.kit.button';\nimport Callout from '../../../common/components/Callout';\nimport Grid from '../../../common/components/Grid';\nimport profileApi from '../../api/profileApi';\nimport translateApiErrorMessage from '../../../utils/translateApiErrorMessage';\n\nfunction ExportProfile({ t }) {\n const [submitting, setSubmitting] = useState(false);\n const [succeeded, setSucceeded] = useState(false);\n const [error, setError] = useState(null);\n\n const handleSubmit = useCallback(async function handleSubmit() {\n setSubmitting(true);\n setError(null);\n setSucceeded(false);\n\n try {\n await profileApi.exportProfile();\n setSucceeded(true);\n } catch (error) {\n setError(get(error, 'code'));\n }\n\n setSubmitting(false);\n }, []);\n\n return (\n \n \n

    {t('profile/exportOwnProfile/title')}

    \n

    {t('profile/exportOwnProfile/description')}

    \n

    {t('profile/exportOwnProfile/prompt')}

    \n

    \n \n {t('profile/exportOwnProfile/exportCTA')}\n \n

    \n {succeeded && (\n \n {t('profile/exportOwnProfile/success')}\n \n )}\n {error && (\n \n {translateApiErrorMessage(t, error)}\n \n )}\n
    \n
    \n );\n}\n\nexport default translate()(ExportProfile);\n","import ExportProfile from './ExportProfile';\n\nexport default ExportProfile;\n","import React, { useCallback, useContext, useState } from 'react';\nimport get from 'lodash/get';\nimport { useDispatch } from 'react-redux';\nimport { unwrapResult } from '@reduxjs/toolkit';\nimport { translate, Trans } from 'react-i18next';\nimport { AuthContext } from '../../../authentication/components/AuthProvider';\nimport { openModal } from '../../../common/actions/modal';\nimport ModalRoot from '../../../common/containers/ModalRoot';\nimport { deleteProfile } from '../../../profile/state/profile';\nimport Button from '@bit/be-novative.kit.button';\nimport Callout from '../../../common/components/Callout';\nimport ConfirmDialog from '../../../common/components/ConfirmDialog';\nimport Grid from '../../../common/components/Grid';\nimport { CUSTOMER_SUPPORT_EMAIL } from '../../../constants';\nimport translateApiErrorMessage from '../../../utils/translateApiErrorMessage';\n\nconst CONFIRM_MODAL = 'CONFIRM_MODAL';\n\nfunction DeleteProfile({ t }) {\n const [submitting, setSubmitting] = useState(false);\n const [error, setError] = useState(null);\n const dispatch = useDispatch();\n const Auth = useContext(AuthContext);\n\n const handleDelete = useCallback(\n async function handleSubmit() {\n setSubmitting(true);\n setError(null);\n\n try {\n unwrapResult(await dispatch(deleteProfile()));\n Auth.logoutUser();\n } catch (error) {\n setError(get(error, 'code'));\n }\n\n setSubmitting(false);\n },\n [Auth, dispatch]\n );\n\n const showConfirmDialog = useCallback(\n function showConfirmDialog() {\n dispatch(\n openModal({\n modalType: CONFIRM_MODAL,\n modalProps: {\n isCloseButtonShown: false,\n rounded: true,\n variant: 'danger',\n title: t('profile/deleteAccount/confirmDialog/title'),\n okLabel: t('profile/deleteAccount/confirmDialog/okCTA'),\n cancelLabel: t('profile/deleteAccount/confirmDialog/cancelCTA'),\n okCallback: handleDelete\n }\n })\n );\n },\n [dispatch, handleDelete, t]\n );\n\n return (\n \n \n

    {t('profile/deleteAccount/title')}

    \n

    {t('profile/deleteAccount/subtitle')}

    \n

    \n \n \n {CUSTOMER_SUPPORT_EMAIL}\n \n \n

    \n

    {t('profile/deleteAccount/infoSection/title')}

    \n

    {t('profile/deleteAccount/infoSection/info1')}

    \n

    {t('profile/deleteAccount/infoSection/info2')}

    \n

    {t('profile/deleteAccount/actionTitle')}

    \n

    \n \n {t('profile/deleteAccount/deleteCTA')}\n \n

    \n {error && (\n \n {translateApiErrorMessage(t, error)}\n \n )}\n
    \n \n
    \n );\n}\n\nexport default translate()(DeleteProfile);\n","import DeleteProfile from './DeleteProfile';\n\nexport default DeleteProfile;\n","import React from 'react';\nimport flow from 'lodash/flow';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { Route, Switch } from 'react-router-dom';\nimport { translate } from 'react-i18next';\nimport paths from '../../../paths';\nimport { Grid } from '../../../common/components';\nimport { withNonIdealState } from '../../../common/containers';\nimport { SecondaryNavigation } from '../../components';\nimport ProfileEditForm from '../ProfileEditForm';\nimport PasswordChangeForm from '../PasswordChangeForm';\nimport LanguageSettings from '../LanguageSettings';\nimport PrivacySettings from '../PrivacySettings';\nimport ExportProfile from '../ExportProfile';\nimport DeleteProfile from '../DeleteProfile';\nimport { ownProfileSelector } from '../../state/profile';\nimport { getUserId } from '../../../common/getters/users';\n\nSettingsTab.propTypes = {\n t: PropTypes.func.isRequired\n};\nexport function SettingsTab(props) {\n const { t } = props;\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 \n \n \n \n \n );\n}\n\nconst mapStateToProps = state => ({\n profileId: flow(\n ownProfileSelector,\n getUserId\n )(state)\n});\n\nexport default compose(\n translate(),\n connect(mapStateToProps),\n withNonIdealState({\n isLoading: ({ profileId }) => !profileId\n })\n)(SettingsTab);\n","import SettingsTab from './SettingsTab';\n\nexport default SettingsTab;\n","import React from 'react';\nimport { translate } from 'react-i18next';\nimport { Route, Switch } from 'react-router-dom';\nimport { CommonModalTypes } from '../../../constants';\nimport paths from '../../../paths';\nimport ProfileTab from '../ProfileTab';\nimport SettingsTab from '../SettingsTab';\nimport FullScreen from '../../../common/components/FullScreen';\nimport Grid from '../../../common/components/Grid';\nimport GlobalPageHeader from '../../../common/components/GlobalPageHeader';\nimport PrimaryNavigation from '../../../common/components/PrimaryNavigation';\nimport ModalRoot from '../../../common/containers/ModalRoot';\nimport ImageSearchModal from '../../../common/containers/ImageSearchModal';\nimport './ProfilePage.css';\n\nconst MODAL_COMPONENTS = {\n [CommonModalTypes.IMAGE_PICKER]: ImageSearchModal\n};\n\nconst BASE_CLASS = 'ProfilePage';\n\nfunction ProfilePage({ t }) {\n return (\n \n \n \n \n \n {t('profile/Profile')}\n \n \n {t('profile/Profile Settings')}\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default translate()(ProfilePage);\n","import ProfilePage from './ProfilePage';\n\nexport default ProfilePage;\n","import ProfilePage from './containers/ProfilePage';\nimport slice from './state/profile';\n\nconst reducer = slice.reducer;\n\nexport { reducer };\n\nexport default ProfilePage;\n","import { CommonException } from '../api/constants';\n\n// TODO convert to hook after i18n upgrade\n/**\n * Returns a translation for API-related error codes\n * @param {Function} t - The translator method\n * @param {CommonException} error - The internal error code\n * @param {string} [fallbackMessage] - If provided, the fallback message will be returned in case of a general/uncrecognised error\n * @return {string} The localised error message\n * @todo Omit translator method injection after i18n engine upgrade\n */\nexport default function translateApiErrorMessage(t, error, fallbackMessage) {\n let tKey = 'common/error/';\n\n if (error === CommonException.NotFound) {\n tKey += 'missing';\n } else if (error === CommonException.ServerError) {\n tKey += 'server';\n } else if (error === CommonException.NetworkError) {\n tKey += 'network';\n } else if (error === CommonException.Timeout) {\n tKey += 'timeout';\n } else if (fallbackMessage) {\n return fallbackMessage;\n } else {\n tKey += 'general';\n }\n\n return t(tKey);\n}\n","/**\n * Defines severity levels so the errorlogging utilities can set the proper log level for each telemetry service\n * @enum {string}\n * @readonly\n */\n\nexport const Severity = {\n Verbose: 'VERBOSE',\n Info: 'INFO',\n Warning: 'WARNING',\n Error: 'ERROR',\n Critical: 'CRITICAL'\n};\n","import React from 'react';\nimport cn from 'classnames';\nimport './NonIdealState.css';\n\nfunction NonIdealState({\n title,\n description,\n action,\n visual,\n theme,\n className,\n style\n}) {\n return (\n
    \n
    {visual}
    \n

    {title}

    \n

    {description}

    \n
    {action}
    \n
    \n );\n}\n\nNonIdealState.defaultProps = {\n theme: {\n container: 'NonIdealState',\n visual: 'NonIdealState__Visual'\n }\n};\n\nexport default NonIdealState;\n","import React from 'react';\nimport NonIdealState from './NonIdealState';\nimport defaultImageUrl from './Hummingbird.png';\nimport listImageUrl from './HummingbirdList.png';\nimport hiddenImageUrl from './HummingbirdHidden.gif';\n\nNonIdealState.HUMMINGBIRD = \"\";\nNonIdealState.HIDDEN_HUMMINGBIRD = \"\";\nNonIdealState.LIST_HUMMINGBIRD = \"\";\n\nexport default NonIdealState;\n","import get from 'lodash/get';\n\nconst getKey = (key, id) => `${key}_${id}`;\nconst getMeta = (meta = {}) => [get(meta, 'entityType'), get(meta, 'id')];\n\nexport const loadingByIdFactory = asyncAction => (\n state = {},\n { type, meta }\n) => {\n const [key, id] = getMeta(meta);\n\n if (!key || !id) {\n return state;\n }\n\n switch (type) {\n case asyncAction.PENDING:\n return {\n ...state,\n [getKey(key, id)]: true\n };\n case asyncAction.ERROR:\n case asyncAction.SUCCESS:\n return {\n ...state,\n [getKey(key, id)]: false\n };\n default:\n return state;\n }\n};\n\nexport const errorByIdFactory = asyncAction => (\n state = {},\n { type, payload, meta }\n) => {\n const [key, id] = getMeta(meta);\n\n if (!key || !id) {\n return state;\n }\n\n switch (type) {\n case asyncAction.ERROR:\n return {\n ...state,\n [getKey(key, id)]: payload\n };\n case asyncAction.PENDING:\n case asyncAction.SUCCESS:\n return {\n ...state,\n [getKey(key, id)]: false\n };\n default:\n return state;\n }\n};\n","import { combineReducers } from 'redux';\nimport { handleAction } from 'redux-actions';\nimport {\n SET_USERAGENT_LANGUAGE,\n SUCCESS_LANGUAGE_CHANGE\n} from '../../constants';\n\nconst current = handleAction(\n SUCCESS_LANGUAGE_CHANGE,\n (state, { payload }) => payload,\n ''\n);\n\nconst userAgent = handleAction(\n SET_USERAGENT_LANGUAGE,\n (state, { payload }) => payload,\n ''\n);\n\nexport default combineReducers({\n current,\n userAgent\n});\n","import { handleActions } from 'redux-actions';\nimport { NAVIGATION_CONFIRM, NAVIGATION_CONFIRM_CLEAR } from '../../constants';\n\nexport default handleActions(\n {\n [NAVIGATION_CONFIRM]: () => true,\n [NAVIGATION_CONFIRM_CLEAR]: () => false\n },\n true\n);\n\nexport const isNavigationConfirmed = state => state.navigation;\n","import { handleActions } from 'redux-actions';\nimport { UPDATE_ONBOARDING } from '../../constants';\n\nexport default handleActions(\n {\n [UPDATE_ONBOARDING.PENDING](state, { meta }) {\n return {\n ...state,\n onboarding: meta.data,\n loading: true\n };\n }\n },\n null\n);\n","import { handleActions, combineActions } from 'redux-actions';\nimport { combineReducers } from 'redux';\nimport { SIDENAV_OPEN, SIDENAV_CLOSE, ROUTE_CHANGE } from '../../constants';\n\nconst open = handleActions(\n {\n [SIDENAV_OPEN]: () => true,\n [combineActions(SIDENAV_CLOSE, ROUTE_CHANGE)]: () => false\n },\n false\n);\n\nexport default combineReducers({\n open\n});\n","import { combineReducers } from 'redux';\nimport { handleActions } from 'redux-actions';\nimport { INTERNET_STATUS_CHANGE, InternetStatus } from '../../constants';\n\nconst internetStatus = handleActions(\n {\n [INTERNET_STATUS_CHANGE](state, { payload }) {\n return payload;\n }\n },\n InternetStatus.CONNECTED\n);\n\nexport default combineReducers({\n internetStatus\n});\n\nexport const internetStatusSelector = state => state.network.internetStatus;\n","import cloneDeep from 'lodash/cloneDeep';\nimport each from 'lodash/each';\nimport get from 'lodash/get';\nimport merge from 'lodash/merge';\nimport set from 'lodash/set';\nimport { combineActions, handleActions } from 'redux-actions';\nimport forceArray from '../../../utils/forceArray';\nimport { UPDATE_ENTITY, ADD_ENTITY } from '../../actions/entities';\n\nconst addEntities = (state, { payload, meta }) => {\n const { entityType } = meta;\n const { entities, result } = payload;\n const newIds = forceArray(result);\n const mainEntityMappedIds = { [entityType]: newIds };\n const allIds = merge({}, state.allIds, mainEntityMappedIds);\n const newEntities = merge({}, state, entities);\n each(newIds, id =>\n set(newEntities, [entityType, id], entities[entityType][id])\n );\n\n return {\n ...newEntities,\n allIds\n };\n};\n\nconst updateEntity = (state, { payload, meta }) => {\n const { entityType, id } = meta;\n const newState = cloneDeep(state);\n const existingEntity = get(state, [entityType, id], {});\n const updatedEntity = merge({}, existingEntity, payload);\n\n set(newState, [entityType, id], updatedEntity);\n return newState;\n};\n\nconst entityReducerFactory = asyncAction => {\n return handleActions(\n {\n [combineActions(asyncAction.SUCCESS, ADD_ENTITY)]: addEntities,\n [UPDATE_ENTITY]: updateEntity\n },\n { allIds: {} }\n );\n};\n\nexport default entityReducerFactory;\n","import { combineReducers } from 'redux';\nimport { FETCH_SCHEMA_DATA } from '../../constants';\nimport { loadingByIdFactory, errorByIdFactory } from './factories/status';\nimport entityFactory from './factories/entity';\n\nconst store = entityFactory(FETCH_SCHEMA_DATA);\nconst loading = loadingByIdFactory(FETCH_SCHEMA_DATA);\nconst error = errorByIdFactory(FETCH_SCHEMA_DATA);\n\nexport default combineReducers({ store, loading, error });\n","import alerts from './alerts';\nimport categories from '../state/categories';\nimport challengeSettings from '../../challenge/reducers';\nimport ideaConcepts from './ideaConcepts';\nimport language from './language';\nimport modal from './modal';\nimport navigation from './navigation';\nimport latestNotifications from './latestNotifications';\nimport profile from './profile';\nimport sidenav from './sidenav';\nimport users from '../state/users';\nimport socket from './socket';\nimport network from './network';\nimport entities from './entities';\nimport onboarding from './onboarding';\nimport platformSlice from '../state/platform';\n\nconst rootReducer = {\n entities,\n alerts,\n categories: categories.reducer,\n challengeSettings,\n ideaConcepts,\n language,\n modal,\n navigation,\n latestNotifications,\n platform: platformSlice.reducer,\n profile,\n sidenav,\n users: users.reducer,\n socket,\n network,\n onboarding\n};\n\nexport * from './navigation';\nexport * from './modal';\nexport * from './language';\nexport * from './profile';\nexport * from './socket';\nexport * from './latestNotifications';\nexport * from './network';\nexport * from './entities';\nexport * from './onboarding';\nexport * from './ideaConcepts';\n\nexport default rootReducer;\n","import React, { Component } from 'react';\nimport { compose } from 'redux';\nimport { withRouter } from 'react-router-dom';\nimport { Panel, Grid, Button } from '../../components';\nimport withModal from '../withModal';\n\nclass AuthorizationRequiredModal extends Component {\n handleLoginClick = () => {\n const { history, location } = this.props;\n history.push({\n pathname: '/login',\n search: `?redirect=${location.pathname}`\n });\n };\n\n handleRegistrationClick = () => {\n const { history, location } = this.props;\n history.push({\n pathname: '/registration',\n search: `?redirect=${location.pathname}`\n });\n };\n\n render() {\n const { t, children } = this.props;\n\n return (\n \n

    {children(t)}

    \n \n \n \n {t('common/Login')}\n \n \n \n \n {t('common/Signup')}\n \n \n \n
    \n );\n }\n}\n\nexport default compose(withRouter, withModal())(AuthorizationRequiredModal);\n","import AuthorizationRequiredModal from './AuthorizationRequiredModal';\n\nexport default AuthorizationRequiredModal;\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { compose } from 'redux';\nimport escapeRegExp from 'lodash/escapeRegExp';\nimport {\n registerField,\n formValueSelector,\n change,\n initialize,\n touch\n} from 'redux-form';\nimport { Autosuggest, formControl } from '../../../common/components';\n\nclass AutosuggestFormControl extends Component {\n static defaultProps = {\n onFilterChange: () => {},\n getValue: s => s,\n getDisplayValue: s => s,\n choices: []\n };\n\n componentDidMount() {\n const { meta, input, registerField, change, getDisplayValue } = this.props;\n this.filterName = `${input.name}Filter`;\n registerField(meta.form, this.filterName, 'Field');\n if (input.value) {\n change(meta.form, this.filterName, getDisplayValue(input.value));\n }\n }\n\n handleFilterChange = (event, { newValue }) => {\n const { meta, input, change, onFilterChange, touch } = this.props;\n change(meta.form, this.filterName, newValue);\n touch(meta.form, input.name);\n onFilterChange(newValue);\n };\n\n handleFilterBlur = () => {\n const { meta, input, filterValue, change, getDisplayValue } = this.props;\n if (!input.value || filterValue !== getDisplayValue(input.value)) {\n change(meta.form, input.name, null);\n change(meta.form, this.filterName, '');\n }\n };\n\n handleSuggestionSelect = (event, { suggestion }) => {\n const { meta, input, change } = this.props;\n change(meta.form, input.name, suggestion);\n };\n\n renderSuggestion = s => {\n const { getDisplayValue } = this.props;\n return {getDisplayValue(s)};\n };\n\n shouldRenderSuggestions = value => {\n return true;\n };\n\n focus() {\n if (this.el) {\n this.el.focus();\n }\n }\n\n setRef = el => {\n this.el = el;\n };\n\n render() {\n const {\n filterValue = '',\n placeholder,\n meta,\n input,\n suggestions,\n getValue,\n ...rest\n } = this.props;\n\n return (\n \n );\n }\n}\n\nfunction mapStateToProps(state, props) {\n const { meta, input, choices, getDisplayValue = v => v } = props;\n const filterValue = formValueSelector(meta.form)(\n state,\n `${input.name}Filter`\n );\n\n const re = new RegExp(escapeRegExp(filterValue), 'ig');\n const suggestions = choices.filter(choice => {\n return re.test(getDisplayValue(choice));\n });\n\n return {\n filterValue,\n suggestions\n };\n}\n\nexport default compose(\n formControl,\n connect(\n mapStateToProps,\n {\n registerField,\n change,\n initialize,\n touch\n },\n null,\n {\n forwardRef: true\n }\n )\n)(AutosuggestFormControl);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { isSubmitting, isPristine } from 'redux-form';\nimport Button from '@bit/be-novative.kit.button';\nimport Spinner from '@bit/be-novative.kit.spinner';\n\nSubmitButton.propTypes = {\n form: PropTypes.string.isRequired,\n dispatch: PropTypes.func.isRequired\n};\n\nSubmitButton.defaultProps = {\n style: {\n minWidth: 150\n }\n};\n\nfunction SubmitButton({ dispatch, form, ...props }) {\n return \n );\n }\n}\n\nexport default Close;\n","import Close from './Close';\nexport default Close;\n","import * as Sentry from '@sentry/browser';\nimport { ApiRegion } from '../constants';\n\nconst API_BASE_URL = {\n [ApiRegion.EU]: process.env.REACT_APP_API_EU_BASE_URL,\n [ApiRegion.US]: process.env.REACT_APP_API_US_BASE_URL\n};\n\nexport default function getApiUrl(region) {\n const url = API_BASE_URL[region];\n\n Sentry.addBreadcrumb({\n data: {\n region,\n url\n },\n level: Sentry.Severity.Info\n });\n\n if (url) {\n return url;\n } else {\n throw new Error('API URL not found!');\n }\n}\n","import * as Sentry from '@sentry/browser';\nimport { ApiRegion } from './constants';\nimport FeatureFlag from '../featureFlags/constants';\nimport { getFeatureFlagAsync } from '../featureFlags/client';\nimport addBreadcrumb, { Severity } from '../telemetry/addBreadcrumb';\nimport getApiUrl from './utils/getApiUrl';\nimport client from './client';\n\n/**\n * @typedef {Object} APIRegionConfig\n * @property {ApiRegion} region - The configured API region\n */\n\n/**\n * @typedef {(APIRegionConfig|Error)} ApiBootstrapResult\n */\n\n/**\n * Required to launch the app. Fetches feature flags for the API base URL, then configures the API client singleton (side effect).\n * @summary It asynchronously fetches the API base URL (fallback to EU region, see ADR #9), then initialises the API client with. It also returns the region info for further configuration.\n * @return {Promise} API region config or the thrown error\n * @public\n */\n\nasync function bootstrap() {\n // @see ADR #9 in the docs for reason of fallback choice\n try {\n const region = await getFeatureFlagAsync(\n FeatureFlag.apiRegion,\n ApiRegion.EU\n );\n\n if (region) {\n addBreadcrumb('API region set', {\n level: Severity.Verbose,\n category: 'bootstrap',\n data: { region }\n });\n client.defaults.baseURL = getApiUrl(region);\n return { region };\n } else {\n throw new Error('API region config is empty!');\n }\n } catch (error) {\n addBreadcrumb(error, {\n level: Severity.Critical,\n category: 'bootstrap'\n });\n Sentry.captureException();\n throw error;\n }\n}\n\nexport default bootstrap;\n","import without from 'lodash/without';\nimport uniq from 'lodash/uniq';\nimport { combineReducers } from 'redux';\nimport { handleActions } from 'redux-actions';\nimport {\n DELETE_CONCEPT_POST,\n FETCH_CONCEPT_POSTS,\n FLUSH_CONCEPT_POST_LIST,\n STORE_CONCEPT_POST_IDS\n} from '../actions/conceptPosts';\nimport errorReducerFactory from '../../common/reducers/factories/error';\nimport loadingReducerFactory from '../../common/reducers/factories/loading';\n\nconst visibleIds = handleActions(\n {\n [STORE_CONCEPT_POST_IDS]: (state, action) => {\n return uniq([...state, ...action.payload]);\n },\n [DELETE_CONCEPT_POST.SUCCESS]: (state, action) => {\n return without(state, action.meta.postId);\n },\n [FLUSH_CONCEPT_POST_LIST]: () => []\n },\n []\n);\n\nconst loading = loadingReducerFactory(FETCH_CONCEPT_POSTS);\n\nconst error = errorReducerFactory(FETCH_CONCEPT_POSTS);\n\nexport default combineReducers({\n visibleIds,\n loading,\n error\n});\n","import ideaConceptsList from './conceptList';\nimport conceptReview from './conceptReview';\nimport ideaConceptPosts from './conceptPosts';\nimport commentsSlice from '../state/internalComments';\nimport feedbackSlice from '../state/reviewerFeedback';\n\nexport default {\n conceptReview: conceptReview.reducer,\n ideaConceptsList,\n ideaConceptPosts,\n internalComments: commentsSlice.reducer,\n reviewerFeedback: feedbackSlice.reducer\n};\n","import produce from 'immer';\nimport flow from 'lodash/flow';\nimport mapFp from 'lodash/fp/map';\nimport uniq from 'lodash/uniq';\nimport without from 'lodash/without';\nimport { combineReducers } from 'redux';\nimport { handleActions } from 'redux-actions';\nimport {\n IDEAS_GROUPED,\n HIDE_GROUP,\n STORE_GROUPS,\n RENAME_GROUP\n} from '../actions/groups';\nimport { FLUSH_DATA } from '../actions/presence';\nimport { getGroupId } from '../selectors/groups';\n\nconst allIds = handleActions(\n {\n [STORE_GROUPS]: (state, { payload }) =>\n flow(\n mapFp(getGroupId),\n newGroups => newGroups.concat(state),\n uniq\n )(payload),\n [IDEAS_GROUPED]: (state, { meta }) => uniq([...state, meta.id]),\n [HIDE_GROUP]: (state, { meta }) => without(state, meta.id),\n [FLUSH_DATA]: () => []\n },\n []\n);\n\nconst byId = handleActions(\n {\n [STORE_GROUPS]: (state, { payload }) => {\n return produce(state, state => {\n payload.forEach(group => {\n state[getGroupId(group)] = group;\n });\n });\n },\n [IDEAS_GROUPED]: (state, { meta }) =>\n produce(state, state => {\n const { id: ideaGroupId } = meta;\n if (state[ideaGroupId]) {\n state[ideaGroupId].ideaGroupId = ideaGroupId;\n } else {\n state[ideaGroupId] = { ideaGroupId };\n }\n }),\n [HIDE_GROUP]: (state, { meta }) =>\n produce(state, state => {\n delete state[meta.id];\n }),\n [RENAME_GROUP]: (state, { payload }) =>\n produce(state, state => {\n state[payload.id].title = payload.title;\n }),\n [FLUSH_DATA]: () => ({})\n },\n {}\n);\n\nexport default combineReducers({\n allIds,\n byId\n});\n","import filterFp from 'lodash/fp/filter';\nimport forEach from 'lodash/forEach';\nimport flow from 'lodash/flow';\nimport keyByFp from 'lodash/fp/keyBy';\nimport mapFp from 'lodash/fp/map';\nimport negate from 'lodash/negate';\nimport omit from 'lodash/omit';\nimport produce from 'immer';\nimport without from 'lodash/without';\nimport { combineReducers } from 'redux';\nimport { handleActions } from 'redux-actions';\nimport {\n CANVAS_IDEAS_MERGED,\n CANVAS_IDEA_ADDED,\n CANVAS_IDEA_DELETED,\n CANVAS_IDEA_EDITED,\n STORE_IDEAS\n} from '../actions/ideas';\nimport {\n getIdeaId,\n getIdeaText,\n getParentGroupId\n} from '../../common/selectors/ideas';\nimport { commonIdProps } from '../../constants';\nimport { IDEAS_GROUPED, IDEAS_UNGROUPED } from '../actions/groups';\nimport { getMergedIdeas } from '../../dndCanvas/selectors/canvasIdea';\nimport { FLUSH_DATA } from '../actions/presence';\nimport { isConceptRef } from '../utils/inlineRefs';\nimport { DRAGGABLE_TYPES } from '../constants';\n\nconst isTopLevelIdea = negate(getParentGroupId);\n\nconst allIds = handleActions(\n {\n [STORE_IDEAS]: (_, { payload }) =>\n flow(\n filterFp(isTopLevelIdea),\n mapFp(getIdeaId)\n )(payload),\n [CANVAS_IDEA_ADDED]: (state, { payload }) => {\n const mergeChildIds = flow(\n getMergedIdeas,\n mapFp(getIdeaId)\n )(payload);\n const newState = without(state, ...mergeChildIds);\n if (isTopLevelIdea(payload)) {\n newState.push(getIdeaId(payload));\n }\n return newState;\n },\n [CANVAS_IDEA_DELETED]: (state, { meta }) => without(state, meta.id),\n [CANVAS_IDEAS_MERGED]: (state, { payload }) =>\n without(state, ...payload.mergedIdeaIds),\n [IDEAS_GROUPED]: (state, { payload }) => without(state, ...payload.itemIds),\n [IDEAS_UNGROUPED]: (state, { payload }) => state.concat(payload.itemIds),\n [FLUSH_DATA]: () => []\n },\n []\n);\n\nconst byId = handleActions(\n {\n [STORE_IDEAS]: (_, { payload }) => {\n const state = keyByFp(commonIdProps.IDEA_ID)(payload);\n forEach(payload, idea => {\n // Annotate with exact type based on content\n const type = isConceptRef(getIdeaText(idea))\n ? DRAGGABLE_TYPES.IMPORTED_CONCEPT\n : DRAGGABLE_TYPES.IDEA;\n state[getIdeaId(idea)].type = type;\n // Collect already existing ideas that are merged into this idea\n forEach(idea.mergedIdeaIds, mergedIdea => {\n state[getIdeaId(mergedIdea)] = mergedIdea;\n });\n });\n return state;\n },\n [CANVAS_IDEA_ADDED]: (state, { payload }) =>\n produce(state, state => {\n const id = getIdeaId(payload);\n const type = isConceptRef(getIdeaText(payload))\n ? DRAGGABLE_TYPES.IMPORTED_CONCEPT\n : DRAGGABLE_TYPES.IDEA;\n state[id] = payload;\n state[id].type = type;\n }),\n [CANVAS_IDEA_EDITED]: (state, { payload, meta }) =>\n produce(state, state => {\n state[meta.id].text = payload;\n }),\n [CANVAS_IDEA_DELETED]: (state, { meta }) => omit(state, meta.id),\n [CANVAS_IDEAS_MERGED]: (state, { payload, meta }) => {\n const { id: parentId } = meta;\n const { ideaText, mergedIdeaIds } = payload;\n const mergedIdeas = mergedIdeaIds.map(id => state[id]);\n return produce(state, state => {\n state[parentId].text = ideaText;\n state[parentId].mergedIdeas = mergedIdeas;\n });\n },\n [IDEAS_GROUPED]: (state, { payload, meta }) => {\n const { id: groupId } = meta;\n const { itemIds } = payload;\n return produce(state, state => {\n itemIds.forEach((id, ix) => {\n if (state[id]) {\n state[id].groupId = groupId;\n state[id].groupIndex = ix;\n }\n });\n });\n },\n [IDEAS_UNGROUPED]: (state, { payload }) => {\n return produce(state, state => {\n payload.itemIds.forEach(id => {\n if (state[id]) {\n state[id].groupId = null;\n state[id].groupIndex = null;\n }\n });\n });\n },\n [FLUSH_DATA]: () => ({})\n },\n {}\n);\n\nexport default combineReducers({\n allIds,\n byId\n});\n","import { combineReducers } from 'redux';\nimport keyBy from 'lodash/fp/keyBy';\nimport map from 'lodash/map';\nimport omit from 'lodash/omit';\nimport uniq from 'lodash/uniq';\nimport without from 'lodash/without';\nimport { set } from 'dot-prop-immutable';\nimport { handleActions } from 'redux-actions';\nimport { commonIdProps } from '../../constants';\nimport { IMAGE_RECEIVED, IMAGE_DELETED, STORE_IMAGES } from '../actions/images';\nimport { getImageId } from '../selectors/images';\nimport { FLUSH_DATA } from '../actions/presence';\n\nconst allIds = handleActions(\n {\n [STORE_IMAGES]: (_, { payload }) => map(payload, getImageId),\n [IMAGE_RECEIVED]: (state, { payload }) =>\n uniq([...state, getImageId(payload)]),\n [IMAGE_DELETED]: (state, { payload }) => without(state, payload),\n [FLUSH_DATA]: () => []\n },\n []\n);\n\nconst byId = handleActions(\n {\n [STORE_IMAGES]: (_, { payload }) => keyBy(commonIdProps.IMAGE_ID)(payload),\n [IMAGE_RECEIVED]: (state, { payload }) =>\n set(state, getImageId(payload), payload),\n [IMAGE_DELETED]: (state, { payload }) => omit(state, payload),\n [FLUSH_DATA]: () => ({})\n },\n {}\n);\n\nexport default combineReducers({\n allIds,\n byId\n});\n","import { set } from 'dot-prop-immutable';\nimport { combineReducers } from 'redux';\nimport { handleActions } from 'redux-actions';\nimport produce from 'immer';\nimport {\n ITEM_POS_CHANGED,\n USER_DRAGS_ITEM,\n USER_STOPS_DRAGGING\n} from '../actions/movement';\nimport { getPosX, getPosY } from '../../dndCanvas/selectors/canvasItem';\nimport { FLUSH_DATA } from '../actions/presence';\n\nconst position = handleActions(\n {\n [ITEM_POS_CHANGED]: (state, { payload }) =>\n produce(state, state => {\n payload.forEach(item => {\n state[item.id] = [getPosX(item), getPosY(item)];\n });\n }),\n [FLUSH_DATA]: () => ({})\n },\n {}\n);\n\nconst lastMoved = handleActions(\n {\n [USER_DRAGS_ITEM]: (state, { meta }) => {\n return set(state, meta.id, meta.movedAt);\n },\n [FLUSH_DATA]: () => ({})\n },\n {}\n);\n\nconst itemMovedByUser = handleActions(\n {\n // TODO filter for own user ID when API change is implemented\n [USER_DRAGS_ITEM]: (_, { meta }) => meta.id,\n [USER_STOPS_DRAGGING]: () => null,\n [FLUSH_DATA]: () => null\n },\n null\n);\n\nexport default combineReducers({\n position,\n lastMoved,\n itemMovedByUser\n});\n","import combinedReducers from './reducers';\n\nconst reducers = {\n conceptCanvas: combinedReducers\n};\n\nexport { reducers };\n","import { combineReducers } from 'redux';\nimport filterActionByCanvasId from '../../dndCanvas/utils/filterActionByCanvasId';\nimport status from '../stateSlices/status';\nimport { S_ID } from '../constants';\nimport groups from './groups';\nimport ideas from './ideas';\nimport images from './images';\nimport movement from './movement';\n\nexport default filterActionByCanvasId(\n S_ID,\n combineReducers({\n groups,\n ideas,\n images,\n movement,\n status\n })\n);\n","import { combineReducers } from 'redux';\nimport { reducer as formReducer } from 'redux-form';\nimport { connectRouter } from 'connected-react-router';\nimport history from './history';\nimport commonReducers from './common/reducers';\nimport { reducers as ideaConceptReducers } from './ideaConcept';\nimport { reducers as conceptCanvasReducers } from './ideaConceptCanvas';\nimport { ERASE_STORES } from './common/actions';\nimport { reducer as profileReducer } from './profile';\n\nexport default function createReducer(asyncReducers) {\n const combinedReducers = combineReducers({\n ...commonReducers,\n ...asyncReducers,\n ...ideaConceptReducers,\n ...conceptCanvasReducers,\n form: formReducer,\n router: connectRouter(history),\n ownProfile: profileReducer\n });\n\n return (state, action) =>\n combinedReducers(action.type === ERASE_STORES ? undefined : state, action);\n}\n","import { openModal } from '../common/actions';\nimport history from '../history';\nimport { isTokenValid } from '../authentication/services/token.service';\n\n/**\n * Filter out { meta: { authenticated: true }} actions when the user is not authenticated.\n *\n * authenticated meta property can be the following:\n * * *boolean*: if true the action will be suppressed\n * * *object*:\n * * *redirect*: redirect the browser to the given url\n * * *modalType* and *modalProps*: open *modalType* modal with *modalProps* props\n */\nconst createAuthGuard = config => ({\n getState,\n dispatch\n}) => next => action => {\n const { meta } = action;\n if (meta && meta.authenticated && !isTokenValid()) {\n const { authenticated } = meta;\n\n // redirect\n if (authenticated.redirect) {\n history.push(authenticated.redirect);\n }\n\n // modal\n if (authenticated.modalType) {\n dispatch(\n openModal({\n modalType: authenticated.modalType,\n modalProps: authenticated.modalProps\n })\n );\n }\n\n // Just suppress the action.\n return Promise.reject('Not logged in.');\n }\n\n return next(action);\n};\n\nexport default createAuthGuard;\n","import axios from 'axios';\nimport has from 'lodash/has';\nimport isFunction from 'lodash/isFunction';\nimport isNumber from 'lodash/isNumber';\nimport snakeCase from 'lodash/snakeCase';\nimport { normalize } from 'normalizr';\nimport AuthSvc from '../authentication/services/auth.service';\nimport { getToken } from '../authentication/services/token.service';\nimport { changeInternetStatus } from '../common/actions';\nimport { internetStatusSelector } from '../common/reducers';\nimport { getCurrentLanguage } from '../common/selectors/language';\nimport handleError from './handleError';\nimport { InternetStatus, FETCH_SCHEMA_DATA } from '../constants';\nimport { HTTP_TIMEOUT_MS } from '../api/constants';\n\nfunction parsePage(rawPage) {\n const page = parseInt(rawPage, 10);\n return isNaN(page) ? -1 : page;\n}\n\nexport default options => ({ getState, dispatch }) => {\n const { id, ...rest } = options;\n const api = axios.create({\n timeout: HTTP_TIMEOUT_MS,\n headers: {\n 'Content-Type': 'application/json'\n },\n withCredentials: true,\n ...rest\n });\n api.interceptors.request.use(languageRequestInterceptor);\n api.interceptors.request.use(tokenRequestInterceptor);\n api.interceptors.request.use(sortingRequestInterceptor);\n api.interceptors.request.use(paginationRequestInterceptor);\n api.interceptors.response.use(tokenResponseInterceptor);\n api.interceptors.response.use(\n successResponseInterceptor,\n errorResponseInterceptor\n );\n\n window.addEventListener('online', updateOnlineStatus);\n window.addEventListener('offline', updateOnlineStatus);\n\n function languageRequestInterceptor(config) {\n const language = getCurrentLanguage(getState());\n config.headers = {\n ...config.headers,\n 'Accept-Language': `${language}`\n };\n return config;\n }\n\n function tokenRequestInterceptor(config) {\n const token = getToken();\n\n if (token) {\n config.headers = {\n ...config.headers,\n Authorization: `${token}`\n };\n }\n return config;\n }\n\n function sortingRequestInterceptor(config) {\n const { sortBy, sortDirection } = config;\n if (sortBy && sortDirection) {\n config.headers = {\n ...config.headers,\n 'X-SORT-BY': snakeCase(sortBy).toUpperCase(),\n 'X-ORDER-DIRECTION': sortDirection\n };\n }\n return config;\n }\n\n function paginationRequestInterceptor(config) {\n const { page } = config;\n if (isNumber(page)) {\n config.headers = {\n ...config.headers,\n 'X-PAGE': page\n };\n }\n return config;\n }\n\n function tokenResponseInterceptor(response) {\n const { headers = {} } = response;\n const token = headers['authorization'];\n if (token) {\n AuthSvc.handleNewToken(token);\n }\n return response;\n }\n\n function successResponseInterceptor(response) {\n if (internetStatusSelector(getState()) !== InternetStatus.CONNECTED) {\n dispatch(changeInternetStatus(InternetStatus.CONNECTED));\n }\n return response;\n }\n\n function errorResponseInterceptor(error) {\n if (error.code === 'ECONNABORTED' || !error.response) {\n dispatch(changeInternetStatus(InternetStatus.SERVER_UNAVAILABLE));\n } else if (\n internetStatusSelector(getState()) !== InternetStatus.CONNECTED\n ) {\n dispatch(changeInternetStatus(InternetStatus.CONNECTED));\n }\n\n return Promise.reject(error);\n }\n\n function updateOnlineStatus() {\n dispatch(\n changeInternetStatus(\n window.navigator.onLine\n ? InternetStatus.CONNECTED\n : InternetStatus.DISCONNECTED\n )\n );\n }\n\n return next => action => {\n const options = action[id];\n\n // it's not a api call, skip\n if (!options) {\n return next(action);\n }\n\n const { type, ...config } = options;\n let pendingActionCreator;\n let successActionCreator;\n let errorActionCreator;\n\n if (Array.isArray(type)) {\n if (type.length !== 3) {\n throw new Error(\n 'type should contain exactly 3 action type and/or action creator'\n );\n }\n pendingActionCreator = createAction(type[0]);\n successActionCreator = createAction(type[1]);\n errorActionCreator = createAction(type[2]);\n } else {\n if (!type.PENDING || !type.SUCCESS || !type.ERROR) {\n throw new Error(\n 'type should contain 3 action type: PENDING, SUCCESS, ERROR'\n );\n }\n pendingActionCreator = createAction(type.PENDING);\n successActionCreator = createAction(type.SUCCESS);\n errorActionCreator = createAction(type.ERROR);\n }\n\n dispatch(pendingActionCreator(null, config));\n\n if (options.schema) {\n dispatch({\n meta: {\n entityType: config.entityType,\n id: config.id\n },\n type: FETCH_SCHEMA_DATA.PENDING\n });\n }\n\n return api(config)\n .then(handleSuccess)\n .catch(handleFailure);\n\n function handleSuccess(response) {\n const { headers = {} } = response;\n const paging = {};\n let data = response.data;\n\n if (headers['x-current-page']) {\n Object.assign(paging, {\n currentPage: parsePage(headers['x-current-page']),\n nextPage: parsePage(headers['x-next-page']),\n prevPage: parsePage(headers['x-prev-page']),\n lastPage: parsePage(headers['x-last-page'])\n });\n }\n\n const meta = { ...config, ...paging };\n\n if (has(data, 'results')) {\n const { results, ...payloadMetaKeys } = data;\n\n data = results;\n Object.assign(meta, payloadMetaKeys);\n }\n\n if (options.schema) {\n if (!config.entityType) {\n throw new Error(\n `When adding schema to an action creator, the entityType string should also be added. Check the ${type.SUCCESS} action creator.`\n );\n }\n\n dispatch({\n type: FETCH_SCHEMA_DATA.SUCCESS,\n payload: normalize(data, options.schema),\n meta\n });\n }\n\n next(successActionCreator(data, meta));\n\n return response;\n }\n\n function handleFailure(error) {\n const { response = {} } = error;\n\n handleError(dispatch, getState, {\n status: response.status,\n resource: config.url,\n error\n });\n\n if (options.schema) {\n dispatch({\n meta: {\n entityType: config.entityType,\n id: config.id\n },\n payload: error,\n type: FETCH_SCHEMA_DATA.ERROR\n });\n }\n\n next(errorActionCreator(error, config));\n\n return Promise.reject(error);\n }\n\n function createAction(type) {\n if (isFunction(type)) {\n return type;\n }\n\n return function(payload, meta) {\n const finalAction = Object.assign({}, action, { type, payload, meta });\n delete finalAction[id];\n return finalAction;\n };\n }\n };\n};\n","import { FORBIDDEN, UNAUTHORIZED, BAD_REQUEST } from 'http-status-codes';\nimport * as Sentry from '@sentry/browser';\nimport paths from '../paths';\nimport authPaths from '../authentication/paths';\nimport history from '../history';\nimport { clearAlerts } from '../common/actions';\nimport authService from '../authentication/services/auth.service';\n\nexport default function(dispatch, getState, { status, resource, error }) {\n dispatch(clearAlerts());\n\n switch (status) {\n case UNAUTHORIZED:\n // user isn't on login page entering invalid password\n if (resource !== authPaths.login()) {\n authService.logout(true);\n }\n break;\n\n case FORBIDDEN:\n history.push(paths.error({ reason: status, resource }));\n break;\n\n case BAD_REQUEST:\n Sentry.addBreadcrumb({\n category: 'api',\n message: resource,\n data: error,\n level: Sentry.Severity.Error\n });\n break;\n\n default:\n }\n}\n","import {\n APP_INIT,\n SET_USERAGENT_LANGUAGE,\n SUCCESS_LANGUAGE_CHANGE\n} from '../constants';\nimport {\n detectLanguage,\n determineUiLanguage,\n getLanguageShortCode\n} from '../utils/locale';\nimport {\n getPreferredLanguage,\n persistPreferredLanguage\n} from '../utils/storage';\nimport { ERASE_STORES } from '../common/actions';\nimport {\n getBrowserLanguage,\n getCurrentLanguage\n} from '../common/selectors/language';\n\nexport default function localeMiddleware({ dispatch, getState }) {\n return next => action => {\n if (action.type === APP_INIT) {\n const preferredLanguage = getPreferredLanguage();\n const browserLanguage = getLanguageShortCode(detectLanguage());\n const uiLanguage = determineUiLanguage(\n preferredLanguage,\n browserLanguage\n );\n\n dispatch({\n type: SET_USERAGENT_LANGUAGE,\n payload: browserLanguage\n });\n\n dispatch({\n type: SUCCESS_LANGUAGE_CHANGE,\n payload: uiLanguage\n });\n\n persistPreferredLanguage(uiLanguage);\n }\n\n if (action.type === ERASE_STORES) {\n const browserLanguage = getBrowserLanguage(getState());\n const uiLanguage = getCurrentLanguage(getState());\n\n next(action);\n dispatch({\n type: SET_USERAGENT_LANGUAGE,\n payload: browserLanguage\n });\n dispatch({\n type: SUCCESS_LANGUAGE_CHANGE,\n payload: uiLanguage\n });\n return;\n }\n\n next(action);\n };\n}\n","import cloneDeep from 'lodash/cloneDeep';\nimport overEvery from 'lodash/overEvery';\nimport flow from 'lodash/flow';\nimport get from 'lodash/fp/get';\nimport has from 'lodash/fp/has';\nimport isEqual from 'lodash/fp/isEqual';\nimport isObject from 'lodash/isObject';\nimport keys from 'lodash/keys';\nimport negate from 'lodash/negate';\nimport mapValues from 'lodash/fp/mapValues';\nimport omit from 'lodash/fp/omit';\nimport pick from 'lodash/fp/pick';\nimport startsWith from 'lodash/fp/startsWith';\nimport {\n BLACKLISTED_ACTIONS,\n BLACKLISTED_NS,\n SCHEMA_DEF,\n WHITELISTED_PROFILE_PROPS,\n NORMALISED_RESULT\n} from './constants';\nimport { FETCH_SCHEMA_DATA } from '../../constants';\n\nconst getType = get('type');\n\n// predicates\n\nconst hasSchema = has(SCHEMA_DEF);\n\nconst typeMatches = target =>\n flow(\n getType,\n isEqual(target)\n );\n\nconst isFetchAction = flow(\n getType,\n startsWith('FETCH')\n);\n\nconst hasNormalisedPayload = overEvery([isFetchAction, hasSchema]);\n\nconst isSchemaStoreAction = flow(\n getType,\n isEqual(FETCH_SCHEMA_DATA.SUCCESS)\n);\n\nconst isFetchActionWithSchema = overEvery(\n hasNormalisedPayload,\n negate(isSchemaStoreAction)\n);\n\nconst isOrdinaryFetchAction = action =>\n isFetchAction(action) && !hasNormalisedPayload(action);\n\nconst isIgnored = action => {\n const type = getType(action);\n const isBlackListed = BLACKLISTED_ACTIONS.includes(type);\n const hasIgnoredNamespace = BLACKLISTED_NS.some(ns => startsWith(ns)(type));\n\n return (\n isBlackListed || hasIgnoredNamespace || isFetchActionWithSchema(action)\n );\n};\n\n// transformers\n\nconst ignorePayload = action => ({\n ...cloneDeep(action),\n payload: { payloadIgnored: true }\n});\n\nconst ignoreSchemaDefinition = action => ({\n ...cloneDeep(action),\n meta: { ...omit(SCHEMA_DEF)(action.meta) }\n});\n\nconst scrubModal = pick(['type', 'payload.modalType']);\n\nconst scrubProfile = pick(WHITELISTED_PROFILE_PROPS);\n\nconst omitEntities = omit(['byId']);\n\nconst scrubEntityObjects = action => ({\n ...cloneDeep(action),\n payload: get(NORMALISED_RESULT)(action)\n});\n\nconst handleOrdinaryFetchPayload = action => {\n if (isObject(action.payload)) {\n return {\n ...cloneDeep(action),\n payload: keys(action.payload)\n };\n }\n\n return ignorePayload(action);\n};\n\nconst handleNormalisedPayload = action =>\n flow(\n ignoreSchemaDefinition,\n scrubEntityObjects\n )(action);\n\nconst flattenEntityKeys = mapValues(keys);\n\nexport {\n flattenEntityKeys,\n handleNormalisedPayload,\n handleOrdinaryFetchPayload,\n ignorePayload,\n isIgnored,\n isOrdinaryFetchAction,\n isSchemaStoreAction,\n omitEntities,\n typeMatches,\n scrubModal,\n scrubProfile\n};\n","import flow from 'lodash/flow';\nimport { omitEntities } from '../../telemetry/errorLogging/payloadUtils';\nimport { getChallengeRoot } from '../reducers';\n\nconst scrubStore = state =>\n flow(\n getChallengeRoot,\n omitEntities\n )(state);\n\nexport default scrubStore;\n","import has from 'lodash/has';\nimport { set } from 'dot-prop-immutable';\n\nfunction setIf(targetObject, path, value) {\n return has(targetObject, path)\n ? set(targetObject, path, value)\n : targetObject;\n}\n\nexport function setIfFp(path, value) {\n return targetObject => setIf(targetObject, path, value);\n}\n\nexport default setIf;\n","import flow from 'lodash/flow';\nimport get from 'lodash/fp/get';\nimport map from 'lodash/fp/map';\nimport { setIfFp } from '../../utils/setIf';\nimport { omitEntities } from '../../telemetry/errorLogging/payloadUtils';\nimport { rootSelector } from '../selectors';\n\nconst scrubStore = state =>\n flow(\n rootSelector,\n setIfFp('ideas', omitEntities),\n setIfFp('ideaStats', map(get('id')))\n )(state);\n\nexport default scrubStore;\n","import flow from 'lodash/flow';\nimport { omitEntities } from '../../telemetry/errorLogging/payloadUtils';\nimport { rootSelector } from '../selectors';\nimport { setIfFp } from '../../utils/setIf';\n\nconst scrubStore = state =>\n flow(\n rootSelector,\n setIfFp('ideas', omitEntities),\n setIfFp('images', omitEntities),\n setIfFp('users', omitEntities),\n setIfFp('words', omitEntities)\n )(state);\n\nexport default scrubStore;\n","import cond from 'lodash/cond';\nimport flow from 'lodash/flow';\nimport omit from 'lodash/fp/omit';\nimport mapValues from 'lodash/mapValues';\nimport negate from 'lodash/negate';\nimport * as Sentry from '@sentry/browser';\nimport createSentryMiddleware from 'redux-sentry-middleware';\nimport { MODAL_OPEN, CHALLENGE_PERMISSIONS } from '../constants';\nimport { getEntities } from '../common/selectors/entities';\nimport { rootSelector as conceptEvalRoot } from '../ideaConcept/selectors/conceptEvaluation';\nimport { rootSelector as evaluationRoot } from '../evaluation/selectors';\nimport { IGNORED_STORES } from '../telemetry/errorLogging/constants';\nimport {\n handleNormalisedPayload,\n handleOrdinaryFetchPayload,\n ignorePayload,\n isIgnored,\n isOrdinaryFetchAction,\n isSchemaStoreAction,\n typeMatches,\n scrubModal,\n scrubProfile,\n flattenEntityKeys,\n omitEntities\n} from '../telemetry/errorLogging/payloadUtils';\nimport flattenObject from '../utils/flattenObject';\nimport scrubChallengeState from '../challenge/utils/logScrubber';\nimport scrubChallengeResultsState from '../challengeResults/utils/logScrubber';\nimport scrubIdeationStore from '../ideation/utils/logScrubber';\nimport { fetchOwnProfile } from '../profile/state/profile';\n\nconst actionTransformer = action => {\n return cond([\n [typeMatches(MODAL_OPEN), scrubModal],\n [typeMatches(fetchOwnProfile.fulfilled), scrubProfile],\n [typeMatches(CHALLENGE_PERMISSIONS.SUCCESS), ignorePayload],\n [isOrdinaryFetchAction, handleOrdinaryFetchPayload],\n [isSchemaStoreAction, handleNormalisedPayload]\n ])(action);\n};\n\n// only single depth is allowed; we need entity types+IDs saved\nconst stateTransformer = state =>\n mapValues(\n {\n ...omit(IGNORED_STORES)(state),\n challenge: scrubChallengeState(state),\n challengeResults: scrubChallengeResultsState(state),\n entities: flow(\n getEntities,\n omit(['allIds']),\n flattenEntityKeys\n )(state),\n evaluation: flow(\n evaluationRoot,\n omitEntities\n )(state),\n ideaConceptEvaluation: flow(\n conceptEvalRoot,\n omitEntities\n )(state),\n ideation: scrubIdeationStore(state)\n },\n flattenObject\n );\n\nexport default createSentryMiddleware(Sentry, {\n breadcrumbDataFromAction: actionTransformer,\n actionTransformer,\n filterBreadcrumbActions: negate(isIgnored),\n stateTransformer\n});\n","import isUndefined from 'lodash/isUndefined';\nimport { isCookieConsentAccepted } from '../../utils/cookieConsent';\n\nexport default class ConsentCheck {\n constructor() {\n if (isUndefined(this.trackingAllowed)) {\n this.trackingAllowed = isCookieConsentAccepted();\n }\n }\n}\n","export const getPage = (url = window.location.pathname) => {\n const urlQueryRegex = /^[0-9A-F]{8}-[0-9A-F]{4}-[4][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i;\n const urlParts = url.split('/');\n const possibleUUIDPart = urlParts[urlParts.length - 1];\n return (urlQueryRegex.test(possibleUUIDPart)\n ? url.replace(`/${possibleUUIDPart}`, '')\n : url).replace('#', '');\n};\n","import * as Sentry from '@sentry/browser';\nimport ConsentCheck from './ConsentCheck';\nimport { getPage } from '../pageProvider';\n\nclass Amplitude extends ConsentCheck {\n constructor() {\n super();\n\n if (this.trackingAllowed) {\n require('./injectors/amplitude');\n }\n }\n\n _getInstance() {\n if (this.trackingAllowed) {\n try {\n return window.amplitude.getInstance();\n } catch (e) {\n Sentry.addBreadcrumb({\n category: 'metrics',\n message: '[amplitude] Could not get instance',\n level: Sentry.Severity.Error\n });\n Sentry.captureException(e);\n }\n }\n }\n\n pageView(eventName, params) {\n this.logEvent('pageView__' + getPage(), params);\n }\n\n track(eventName, params) {\n this.logEvent(eventName, params);\n }\n\n logEvent(event, params) {\n const company = window.location.hostname;\n const instance = this._getInstance();\n\n if (instance) {\n if (params.userId) {\n instance.setUserId(params.userId);\n }\n\n instance.setGroup('company', company);\n\n instance.logEvent(event, {\n ...params,\n company\n });\n }\n }\n}\n\nexport default Amplitude;\n","import get from 'lodash/get';\nimport ConsentCheck from './ConsentCheck';\nimport { getPage } from '../pageProvider';\n\nconst EVENT_CATEG_DEFAULT = 'Common Event';\n\n// https://developers.google.com/analytics/devguides/collection/analyticsjs/pages\n// https://developers.google.com/analytics/devguides/collection/analyticsjs/events\nclass GoogleAnalytics extends ConsentCheck {\n constructor() {\n super();\n\n if (this.trackingAllowed) {\n require('./injectors/ga');\n }\n }\n\n _ga(...args) {\n if (this.trackingAllowed) {\n try {\n window.ga(...args);\n } catch (e) {\n console.error('Metrics failure', e);\n }\n }\n }\n\n pageView(eventName, params) {\n this.setUserId(params);\n\n this._ga('send', 'pageview', getPage());\n }\n\n track(eventName, params = {}) {\n const eventLabel = get(params, 'value');\n const eventCategory = get(params, 'eventCategory', EVENT_CATEG_DEFAULT);\n\n this.setUserId(params);\n this._ga('send', 'event', eventCategory, eventName, eventLabel);\n }\n\n setUserId(params) {\n if (params.userId) {\n this._ga('set', 'userId', params.userId);\n }\n }\n}\n\nexport default GoogleAnalytics;\n","import Amplitude from './vendors/Amplitude';\nimport GoogleAnalytics from './vendors/GoogleAnalytics';\nimport { getPage } from './pageProvider';\n\nconst config = {\n vendors: [\n { name: 'Amplitude', api: new Amplitude() },\n { name: 'GoogleAnalytics', api: new GoogleAnalytics() }\n ],\n pageDefaults: routeState => {\n return {\n timestamp: new Date(),\n build: process.env.REACT_APP_VERSION,\n page: getPage(routeState.pathname)\n };\n },\n pageViewEvent: 'pageView',\n debug: process.env.NODE_ENV === 'development'\n};\n\nexport default config;\n","export default class EventTracker {\n constructor(metrics) {\n this.metrics = metrics;\n }\n\n coreTrack(event, params = {}) {\n this.metrics.api.track(`${this.eventGroup}__${event}`, {\n ...params,\n eventCategory: this.eventGroup\n });\n }\n}\n","import { CHALLENGE_CREATE } from '../../constants';\nimport EventTracker from './_EventTracker';\n\nconst EVENT_GROUP = 'challengeCreation';\n\nclass ChallengeCreationTracker extends EventTracker {\n constructor(metrics) {\n super(metrics);\n this.eventGroup = EVENT_GROUP;\n }\n\n track(action, userId) {\n if (action.type === CHALLENGE_CREATE.SUCCESS) {\n this.coreTrack(action.type, {\n userId: userId,\n visibility: action.meta.data.visibility,\n numberOfInvitedUsers: action.meta.data.invitedUsers.length,\n numberOfHashtags: action.meta.data.hashtags.length\n });\n }\n }\n}\n\nexport default ChallengeCreationTracker;\n","import { FeedModalTypes, MODAL_OPEN, LOVE_CHALLENGE } from '../../constants.js';\nimport EventTracker from './_EventTracker';\n\nconst EVENT_GROUP = 'feed';\n\nclass FeedTracker extends EventTracker {\n constructor(metrics) {\n super(metrics);\n this.eventGroup = EVENT_GROUP;\n }\n\n track(action, userId) {\n if (\n action.type === MODAL_OPEN &&\n action.payload.modalType === FeedModalTypes.SHOW_CARD\n ) {\n this.coreTrack(action.type + '_' + action.payload.modalType, {\n userId: userId\n });\n } else if (action.type === LOVE_CHALLENGE) {\n this.coreTrack(action.type, { userId: userId });\n }\n }\n}\n\nexport default FeedTracker;\n","import EventTracker from './_EventTracker';\n\nconst EVENT_GROUP = 'header';\n\nclass HeaderTracker extends EventTracker {\n constructor(metrics) {\n super(metrics);\n this.eventGroup = EVENT_GROUP;\n }\n\n track(action, userId) {}\n}\n\nexport default HeaderTracker;\n","import { MODAL_OPEN } from '../../constants';\nimport EventTracker from './_EventTracker';\nimport {\n SOCIAL_LOGIN_CLICKED,\n LOGIN_BUTTON_CLICK\n} from '../../authentication/actions/metrics';\n\nconst EVENT_GROUP = 'login';\n\nclass LoginTracker extends EventTracker {\n constructor(metrics) {\n super(metrics);\n this.eventGroup = EVENT_GROUP;\n }\n\n track(action, userId) {\n if (\n action.type === MODAL_OPEN &&\n action.payload.modalType === 'MAGIC_LINK_REQUEST'\n ) {\n this.coreTrack('MAGIC_LINK_REQUEST_OPEN');\n } else if (action.type === LOGIN_BUTTON_CLICK) {\n this.coreTrack(action.type, {});\n } else if (action.type === SOCIAL_LOGIN_CLICKED) {\n if (window.location.pathname.indexOf('login') > -1) {\n this.coreTrack(action.type, {\n provider: action.meta.provider\n });\n }\n }\n }\n}\n\nexport default LoginTracker;\n","import EventTracker from './_EventTracker';\nimport {\n USER_SIGNUP,\n CONTINUE_SIGNUP_BUTTON_CLICK,\n SOCIAL_SIGN_UP_BUTTON_CLICK\n} from '../../authentication/actions/metrics';\n\nconst EVENT_GROUP = 'registration';\n\nclass RegistrationTracker extends EventTracker {\n constructor(metrics) {\n super(metrics);\n this.eventGroup = EVENT_GROUP;\n }\n\n track(action, userId) {\n if (action.type === USER_SIGNUP) {\n this.coreTrack(action.type, action.meta.metrics);\n } else if (action.type === SOCIAL_SIGN_UP_BUTTON_CLICK) {\n this.coreTrack(action.type, action.meta.metrics);\n } else if (action.type === CONTINUE_SIGNUP_BUTTON_CLICK) {\n this.coreTrack(action.type, {});\n }\n }\n}\n\nexport default RegistrationTracker;\n","import get from 'lodash/get';\nimport {\n INLINE_HELP_VIEWED,\n LOVE_CHALLENGE,\n LOVE_IDEA,\n SHARE_BUTTON_INSIDE_THE_SHARE_MODAL_CLICK,\n MODAL_OPEN,\n COPY_TO_CLIPBOARD_BUTTON_CLICK,\n FeedModalTypes\n} from '../../constants.js';\nimport { getPage } from '../pageProvider';\nimport EventTracker from './_EventTracker';\n\nconst EVENT_GROUP = 'common';\n\nclass CommonTracker extends EventTracker {\n constructor(metrics) {\n super(metrics);\n this.eventGroup = EVENT_GROUP;\n }\n\n track(action, userId) {\n const { type } = action;\n const metrics = get(\n action,\n 'metrics',\n get(action, ['meta', 'metrics'], {})\n );\n const commonData = {\n page: getPage(),\n userId\n };\n\n if (\n action.type === LOVE_IDEA.SUCCESS ||\n action.type === LOVE_CHALLENGE.SUCCESS\n ) {\n this.coreTrack(action.type, { ...commonData, ...metrics });\n } else if (\n action.type === MODAL_OPEN &&\n (action.payload.modalType === FeedModalTypes.SHARE_CARD ||\n action.payload.modalType === 'SHARE')\n ) {\n this.coreTrack(action.type + '_' + action.payload.modalType, commonData);\n } else if (action.type === COPY_TO_CLIPBOARD_BUTTON_CLICK) {\n this.coreTrack(action.type, commonData);\n } else if (action.type === SHARE_BUTTON_INSIDE_THE_SHARE_MODAL_CLICK) {\n this.coreTrack(action.type, {\n ...commonData,\n provider: action.meta.metrics.provider\n });\n } else if (type === INLINE_HELP_VIEWED) {\n this.coreTrack(type, {\n ...commonData,\n helpId: get(metrics, 'helpId')\n });\n } else if (type === MODAL_OPEN) {\n this.coreTrack(type, {\n ...commonData,\n modalType: get(action, ['payload', 'modalType'])\n });\n }\n }\n}\n\nexport default CommonTracker;\n","import get from 'lodash/get';\nimport {\n IDEA_LIST_FILTER_CHANGED,\n IDEA_LIST_PAGINATED,\n DELETE_IDEA,\n RESULTS_EVALUATE_BUTTON_CLICK,\n RESULTS_EVALUATE_CONCEPT_BUTTON_CLICK,\n RESULTS_BRAINSTORM_BUTTON_CLICK,\n MODAL_OPEN,\n REVEAL_IDENTITY\n} from '../../constants';\nimport { PAGINATE_IDEA_CARDS } from '../../ideaConcept/constants';\nimport EventTracker from './_EventTracker';\nimport { EXPORT_IDEAS } from '../../challengeResults/stateSlices/challengeExport';\n\nconst EVENT_GROUP = 'challengeResults';\n\nclass ChallengeResultsTracker extends EventTracker {\n constructor(metrics) {\n super(metrics);\n this.eventGroup = EVENT_GROUP;\n }\n\n track(action, userId) {\n const { type, payload } = action;\n const metrics = get(\n action,\n 'metrics',\n get(action, ['meta', 'metrics'], get(action, ['payload', 'metrics'], {}))\n );\n const commonData = {\n userId\n };\n const challengeId = get(metrics, 'challengeId');\n const metricsPage = get(metrics, 'page');\n\n if (type === IDEA_LIST_FILTER_CHANGED) {\n this.coreTrack(type, { ...commonData, ...action.meta.metrics });\n } else if (type === IDEA_LIST_PAGINATED) {\n this.coreTrack(type, { ...commonData, ...action.meta.metrics });\n } else if (type === MODAL_OPEN && payload.modalType === 'REVEAL') {\n this.coreTrack(type + '_' + payload.modalType, {\n challengeId: payload.modalProps.challengeId,\n ...commonData,\n clickedAt: payload.modalProps.clickedAt\n });\n } else if (type === DELETE_IDEA.SUCCESS) {\n this.coreTrack(type, {\n ideaId: payload,\n ...commonData,\n challengeId\n });\n } else if (type === RESULTS_EVALUATE_BUTTON_CLICK) {\n this.coreTrack(type, {\n ...commonData,\n ...action.meta.metrics\n });\n } else if (type === RESULTS_EVALUATE_CONCEPT_BUTTON_CLICK) {\n this.coreTrack(type, {\n ...commonData,\n ...action.meta.metrics\n });\n } else if (type === RESULTS_BRAINSTORM_BUTTON_CLICK) {\n this.coreTrack(type, {\n ...commonData,\n ...action.meta.metrics\n });\n } else if (type === MODAL_OPEN && payload.modalType === 'EDIT_CHALLENGE') {\n this.coreTrack(type + '_' + payload.modalType, {\n challengeId: payload.modalProps.challengeId,\n ...commonData,\n highlightedField: payload.modalProps.highlightedField\n });\n } else if (type === REVEAL_IDENTITY.SUCCESS) {\n this.coreTrack(type, {\n challengeId: action.meta.metrics.challengeId,\n ...commonData,\n numOfRevealedIdeas: action.meta.data.length\n });\n } else if (type === PAGINATE_IDEA_CARDS && metricsPage === 'RESULTS') {\n this.coreTrack(type, {\n ...commonData,\n currentPage: get(metrics, 'currentPage'),\n page: metricsPage,\n pageCount: get(metrics, 'pageCount')\n });\n } else if (type === EXPORT_IDEAS.PENDING) {\n this.coreTrack('EXPORT_IDEAS', {\n ...commonData,\n challengeId\n });\n }\n }\n}\n\nexport default ChallengeResultsTracker;\n","import get from 'lodash/get';\nimport {\n CLOSE_INTRO_MESSAGE,\n VIEW_CHALLENGE_INFO,\n PAGINATE_IDEA_CARDS,\n SKIP_SUGGESTIONS\n} from '../../ideaConcept/constants';\nimport { ADD_SUGGESTION_TO_IDEA } from '../../constants';\nimport EventTracker from './_EventTracker';\n\nconst EVENT_GROUP = 'challengeSuggestions';\n\nexport default class ChallengeSuggestionsTracker extends EventTracker {\n constructor(metrics) {\n super(metrics);\n this.eventGroup = EVENT_GROUP;\n }\n\n track(action, userId) {\n const { type } = action;\n const metrics = get(\n action,\n 'metrics',\n get(action, ['meta', 'metrics'], {})\n );\n const commonData = {\n challengeId: get(metrics, 'challengeId'),\n userId\n };\n const metricsPage = get(metrics, 'page');\n\n if (type === ADD_SUGGESTION_TO_IDEA.SUCCESS) {\n this.coreTrack(ADD_SUGGESTION_TO_IDEA.SUCCESS, {\n ...commonData,\n suggestionLength: get(metrics, 'suggestionLength')\n });\n } else if (type === CLOSE_INTRO_MESSAGE) {\n this.coreTrack(type, commonData);\n } else if (type === PAGINATE_IDEA_CARDS && metricsPage === 'SUGGESTION') {\n this.coreTrack(type, {\n ...commonData,\n currentPage: get(metrics, 'currentPage'),\n page: metricsPage,\n pageCount: get(metrics, 'pageCount')\n });\n } else if (type === SKIP_SUGGESTIONS) {\n this.coreTrack(type, commonData);\n } else if (type === VIEW_CHALLENGE_INFO) {\n this.coreTrack(type, commonData);\n }\n }\n}\n","import get from 'lodash/get';\nimport {\n UPDATE_IDEA_CONCEPT_FILTER,\n REMOVE_IDEA_CONCEPT_FILTERS,\n REVEAL_IDEACONCEPT_IDENTITY,\n EDIT_IDEA_CONCEPT\n} from '../../constants';\nimport {\n CHANGE_CONCEPT_STAGE,\n CONCEPT_LIST_CHANGE_STAGE_FILTER,\n CONCEPT_LIST_CHANGE_SORT,\n CREATE_QUICK_CONCEPT_FORM_OPEN,\n CREATE_IDEA_CONCEPT\n} from '../../ideaConcept/constants';\nimport { getPage } from '../pageProvider';\nimport EventTracker from './_EventTracker';\n\nconst EVENT_GROUP = 'ideaConcepts';\n\nexport default class IdeaConceptsTracker extends EventTracker {\n constructor(metrics) {\n super(metrics);\n this.eventGroup = EVENT_GROUP;\n }\n\n track(action, userId) {\n const { type } = action;\n const metrics = get(\n action,\n 'metrics',\n get(action, ['meta', 'metrics'], {})\n );\n const commonData = {\n userId\n };\n if (type === CHANGE_CONCEPT_STAGE) {\n this.coreTrack(type, {\n ...commonData,\n ideaConceptId: get(metrics, 'ideaConceptId'),\n page: getPage()\n });\n } else if (type === EDIT_IDEA_CONCEPT.SUCCESS) {\n this.coreTrack(type, {\n ...commonData,\n ideaConceptId: get(metrics, 'ideaConceptId')\n });\n } else if (type === REMOVE_IDEA_CONCEPT_FILTERS) {\n this.coreTrack(type, commonData);\n } else if (type === REVEAL_IDEACONCEPT_IDENTITY.SUCCESS) {\n this.coreTrack(type, commonData);\n } else if (type === UPDATE_IDEA_CONCEPT_FILTER) {\n this.coreTrack(type, {\n ...commonData,\n filterId: get(metrics, 'id')\n });\n } else if (type === CONCEPT_LIST_CHANGE_STAGE_FILTER) {\n this.coreTrack('CONCEPT_LIST_CHANGE_STAGE_FILTER', {\n ...commonData,\n filterId: get(metrics, 'stage')\n });\n } else if (type === CONCEPT_LIST_CHANGE_SORT) {\n this.coreTrack('CONCEPT_LIST_CHANGE_SORT', {\n ...commonData,\n sortBy: get(metrics, 'sortBy'),\n sortDirection: get(metrics, 'sortDirection')\n });\n } else if (type === CREATE_QUICK_CONCEPT_FORM_OPEN) {\n this.coreTrack('CREATE_QUICK_CONCEPT_FORM_OPEN', {\n ...commonData\n });\n } else if (type === CREATE_IDEA_CONCEPT.SUCCESS) {\n this.coreTrack('CREATE_QUICK_CONCEPT', {\n ...commonData\n });\n }\n }\n}\n","import { createMetrics } from 'react-metrics';\nimport { ROUTE_CHANGE } from '../constants';\nimport metricsConfig from './metricsConfig';\nimport ChallengeCreationTracker from './trackers/ChallengeCreationTracker';\nimport FeedTracker from './trackers/FeedTracker';\nimport HeaderTracker from './trackers/HeaderTracker';\nimport LoginTracker from './trackers/LoginTracker';\nimport RegistrationTracker from './trackers/RegistrationTracker';\nimport CommonTracker from './trackers/CommonTracker';\nimport ChallengeResultsTracker from './trackers/ChallengeResultsTracker';\nimport ChallengeSuggestionsTracker from './trackers/ChallengeSuggestionsTracker';\nimport IdeaConceptsTracker from './trackers/IdeaConceptsTracker';\nimport { getTokenData } from '../authentication/services/token.service';\n\nconst metrics = createMetrics(metricsConfig);\n\nlet challengeCreationTracker = new ChallengeCreationTracker(metrics);\nlet feedTracker = new FeedTracker(metrics);\nlet headerTracker = new HeaderTracker(metrics);\nconst challengeSuggestionsTracker = new ChallengeSuggestionsTracker(metrics);\nconst ideaConceptsTracker = new IdeaConceptsTracker(metrics);\nlet loginTracker = new LoginTracker(metrics);\nlet registrationTracker = new RegistrationTracker(metrics);\nlet commonTracker = new CommonTracker(metrics);\nlet challengeResultsTracker = new ChallengeResultsTracker(metrics);\n\nexport default function metricsMiddleware({ getState }) {\n return next => action => {\n const returnValue = next(action);\n const { email, userId } = getTokenData();\n const currentDomain = window.location.hostname;\n const benovativeEmployee = email && email.endsWith('@be-novative.com');\n\n // only track be-novative employees if they're working on cloud.be-novative.com\n const doNotTrack =\n !currentDomain.startsWith('cloud.') && benovativeEmployee;\n if (doNotTrack) {\n return returnValue;\n }\n\n if (action.type === ROUTE_CHANGE) {\n const location = action.payload;\n try {\n metrics.setRouteState(location);\n metrics.api.pageView({ userId: userId });\n } catch (error) {\n console.error('Metrics error', error);\n }\n } else {\n headerTracker.track(action, userId);\n challengeCreationTracker.track(action, userId);\n feedTracker.track(action, userId);\n challengeSuggestionsTracker.track(action, userId);\n ideaConceptsTracker.track(action, userId);\n loginTracker.track(action, userId);\n registrationTracker.track(action, userId);\n commonTracker.track(action, userId);\n challengeResultsTracker.track(action, userId);\n }\n\n return returnValue;\n };\n}\n","import forEach from 'lodash/forEach';\nimport isFunction from 'lodash/isFunction';\nimport isString from 'lodash/isString';\nimport get from 'lodash/get';\nimport { SOCKET_EVENTS } from '../api/constants';\nimport {\n socketConnecting,\n SOCKET_SEND_MESSAGE,\n socketConnected,\n socketError,\n socketDisconnected,\n SOCKET_INIT_CONNECTION,\n SOCKET_CLOSE_CONNECTION,\n SOCKET_SUBSCRIBE,\n SOCKET_UNSUBSCRIBE\n} from '../common/actions/socket';\nimport { getToken } from '../authentication/services/token.service';\nimport addBreadcrumb, { Severity } from '../telemetry/addBreadcrumb';\n\nconst { CONNECTED, DISCONNECTED, RECONNECTING, ERROR } = SOCKET_EVENTS;\n\nexport default function socketMiddlewareFactory(\n config = {\n socketId: '',\n url: '',\n socketHandler: undefined,\n autoConnect: false\n }\n) {\n const { socketId, socketHandler, url, autoConnect } = config;\n let connection,\n storedToken,\n loggingOut = false;\n\n return store => next => action => {\n const { type, payload, meta } = action;\n const latestToken = getToken();\n const hasTokenChanged = latestToken && latestToken !== storedToken;\n const shouldUpdateToken = hasTokenChanged && (connection || autoConnect);\n const shouldLogout = !latestToken && !loggingOut;\n\n if (hasTokenChanged) {\n storedToken = getToken();\n loggingOut = false;\n }\n\n if (shouldUpdateToken) {\n handleConnect(store, storedToken);\n } else if (shouldLogout) {\n loggingOut = true;\n handleCloseConnection(store);\n } else if (get(meta, 'socketId') === socketId) {\n switch (type) {\n case SOCKET_INIT_CONNECTION:\n return handleConnect(store, storedToken);\n case SOCKET_SEND_MESSAGE:\n return handleSendMessage(action);\n case SOCKET_SUBSCRIBE:\n handleAddListeners(store, payload);\n break;\n case SOCKET_UNSUBSCRIBE:\n handleRemoveListeners(payload);\n break;\n case SOCKET_CLOSE_CONNECTION:\n handleCloseConnection(store);\n break;\n default:\n }\n }\n\n return next(action);\n };\n\n function handleConnect(store, storedToken) {\n if (!connection) {\n connection = new socketHandler(socketId, url);\n\n connection\n .withToken(storedToken)\n .on(CONNECTED, handleConnected(store))\n .on(RECONNECTING, handleReconnecting(store))\n .on(DISCONNECTED, handleDisconnected(store))\n .on(ERROR, handleError(store))\n .connect();\n store.dispatch(socketConnecting(socketId));\n } else {\n connection.withToken(storedToken);\n }\n }\n\n function handleCloseConnection(store) {\n if (connection) {\n connection.disconnect().then(() => {\n connection = undefined;\n store.dispatch(socketDisconnected(socketId));\n });\n }\n }\n\n function handleSendMessage(action) {\n if (!connection) {\n return;\n }\n\n const targetSocket = get(action, ['meta', 'socketId']);\n const messageType = get(action, ['meta', 'messageType']);\n\n if (!targetSocket) {\n addBreadcrumb('Socket-related action contains no socketId, ignoring', {\n level: Severity.Warning,\n data: action\n });\n return;\n }\n\n return connection.send(messageType, action.payload);\n }\n\n function handleConnected(store) {\n return () => {\n store.dispatch(socketConnected(socketId));\n };\n }\n\n function handleReconnecting(store) {\n return () => {\n store.dispatch(socketConnecting(socketId));\n };\n }\n\n function handleDisconnected(store) {\n return () => {\n store.dispatch(socketDisconnected(socketId));\n };\n }\n\n function handleError(store) {\n return error => {\n store.dispatch(socketError(socketId, error));\n };\n }\n\n function handleAddListeners(store, newListeners) {\n if (connection) {\n forEach(newListeners, (listener, targetMessage) => {\n connection.on(targetMessage, createListenerFromAction(store, listener));\n });\n } else {\n throw new Error(\n `Cannot subscribe to ${socketId} events because socket is not initialised yet`\n );\n }\n }\n\n function handleRemoveListeners(listeners) {\n if (connection) {\n forEach(Object.keys(listeners), messageType => {\n connection.off(messageType);\n });\n }\n }\n\n function createListenerFromAction(store, action) {\n if (isString(action)) {\n return (response, messageType) =>\n store.dispatch({\n type: action,\n payload: response,\n meta: {\n messageType,\n status: response.status,\n socketId\n }\n });\n } else if (isFunction(action)) {\n return (response, messageType) =>\n store.dispatch(action(response, messageType, socketId));\n } else {\n throw new Error(\n `Event listener action must be string or function, got ${typeof action}`\n );\n }\n }\n}\n","import forEach from 'lodash/forEach';\nimport isFunction from 'lodash/isFunction';\nimport isObjectLike from 'lodash/isObjectLike';\nimport isString from 'lodash/isString';\nimport { SOCKET_EVENTS } from '../constants';\nimport addBreadcrumb from '../../telemetry/addBreadcrumb';\nimport { Severity } from '@sentry/browser';\n\nconst { CONNECTED, RECONNECTING, DISCONNECTED, ERROR } = SOCKET_EVENTS;\n\nexport default class adapterClass {\n constructor(socketId, url) {\n this.socket = null;\n this.url = url;\n this.token = null;\n this.handlers = {};\n this.socketId = socketId;\n return this;\n }\n\n _log = ({ message, level = Severity.Verbose, data }) => {\n const prefixedMsg = message ? `[${this.socketId}] ${message}` : undefined;\n addBreadcrumb(prefixedMsg, {\n category: 'web-socket',\n level,\n data\n });\n };\n\n _validateEventId = eventId => {\n if (!isString(eventId)) {\n throw new Error(`eventId must be a string, got ${typeof eventId}`);\n }\n };\n\n _validateEventCallback = callback => {\n if (!isFunction(callback)) {\n throw new Error(`callback must be a function, got ${typeof callback}`);\n }\n };\n\n _addHandler = (callback, eventId) => {\n try {\n this._validateEventId(eventId);\n this._validateEventCallback(callback);\n this.handlers[eventId] = callback;\n } catch (error) {\n this._log({\n message: error,\n level: Severity.Error,\n data: { eventId, callback }\n });\n throw new Error(error);\n }\n };\n\n _removeHandler = eventId => {\n try {\n this._validateEventId(eventId);\n this.handlers[eventId] = undefined;\n } catch (error) {\n this._log({\n message: error,\n level: Severity.Error,\n data: { eventId }\n });\n throw new Error(error);\n }\n };\n\n _callHandler = (id, ...args) => {\n if (isFunction(this.handlers[id])) {\n this.handlers[id](...args);\n }\n };\n\n on(eventOrMap, callback) {\n if (isObjectLike(eventOrMap)) {\n forEach(eventOrMap, this._addHandler);\n } else {\n this._addHandler(callback, eventOrMap);\n }\n\n return this;\n }\n\n off(eventOrMap) {\n if (isString(eventOrMap)) {\n this._removeHandler(eventOrMap);\n } else {\n forEach(eventOrMap, this._removeHandler);\n }\n }\n\n withToken(newToken) {\n this.token = isFunction(newToken) ? newToken() : newToken;\n return this;\n }\n\n connect() {\n if (this.socket) {\n this._log({\n level: Severity.Warning,\n message: `Connection already live`\n });\n throw new Error('Already connected');\n }\n\n if (!this.token) {\n this._log({\n level: Severity.Warning,\n message: `Trying to connect without a token`\n });\n }\n\n // Implement custom socket logic\n }\n\n disconnect(response) {\n // Implement custom socket logic\n this._callHandler(DISCONNECTED, response);\n }\n\n send(payload) {\n this._log({ message: 'Sending message...', data: { payload } });\n\n if (!this.socket) {\n throw new Error('Trying to send message without being connected');\n }\n\n // Implement custom socket logic\n }\n\n onConnected = response => {\n this._log({ message: `Connection successful`, data: response });\n this._callHandler(CONNECTED, response);\n };\n\n onReconnect = response => {\n this._log({ message: 'Reconnecting', data: response });\n this._callHandler(RECONNECTING, response);\n };\n\n onDisconnect = () => {\n this._log({ message: 'Connection closed' });\n this._callHandler(DISCONNECTED);\n };\n\n onReceive = () => {\n // Implement custom socket logic\n };\n\n onError = response => {\n this._log({ level: Severity.Error, message: response });\n this._callHandler(ERROR, response);\n };\n}\n","import forEach from 'lodash/forEach';\nimport isArray from 'lodash/isArray';\nimport isBoolean from 'lodash/isBoolean';\nimport isEmpty from 'lodash/isEmpty';\nimport isNumber from 'lodash/isNumber';\nimport isObjectLike from 'lodash/isObjectLike';\nimport size from 'lodash/size';\nimport * as Signalr from '@microsoft/signalr';\nimport { SOCKET_EVENTS } from '../constants';\nimport SocketAdapter from './_adapterClass';\nimport { Severity } from '../../telemetry/addBreadcrumb';\n\nconst { CONNECTED, DISCONNECTED, ERROR } = SOCKET_EVENTS;\n\nexport default class SignalrConnection extends SocketAdapter {\n // @see https://docs.microsoft.com/en-us/javascript/api/%40microsoft/signalr/index?view=signalr-js-latest\n constructor(socketId = '[signalr]', url) {\n super(socketId);\n\n const socket = new Signalr.HubConnectionBuilder()\n .withAutomaticReconnect()\n .configureLogging(Signalr.LogLevel.Information)\n .withUrl(url, {\n accessTokenFactory: this._tokenFactory\n })\n .build();\n\n socket.onreconnecting(this.onReconnect);\n socket.onreconnected(this.onReconnected);\n socket.onclose(this.onDisconnect);\n\n this.socket = socket;\n\n return this;\n }\n\n _tokenFactory = () => {\n if (!this.token) {\n return;\n }\n\n return this.token.split(' ')[1];\n };\n\n _addHandlerWithMsgType = (callback, eventType) => {\n this.socket.on(eventType, (...response) => {\n this._log({ message: eventType, payload: response });\n if (size(response) > 1) {\n return callback(response, eventType);\n } else {\n // Unwrap single argument from array\n return callback(response[0], eventType);\n }\n });\n };\n\n on(eventOrMap, callback) {\n super.on(eventOrMap, callback);\n\n if (!this.socket) {\n return this;\n }\n\n if (isObjectLike(eventOrMap)) {\n forEach(eventOrMap, this._addHandlerWithMsgType);\n } else {\n this._addHandlerWithMsgType(callback, eventOrMap);\n }\n\n return this;\n }\n\n async connect() {\n if (this.socket.state === CONNECTED) {\n this._log({\n level: Severity.Warning,\n message: `Connection already live`\n });\n return;\n }\n\n if (!this.token) {\n this._log({\n level: Severity.Warning,\n message: `Trying to connect without a token`\n });\n }\n\n this._log({\n message: `Has token, connecting to socket...`,\n data: { token: this.token, url: this.url }\n });\n\n try {\n const socket = this.socket;\n\n forEach(this.handlers, (callback, event) => {\n socket.on(event, callback);\n });\n\n await socket.start();\n this.onConnected();\n return socket;\n } catch (error) {\n this._callHandler(ERROR, error);\n throw error;\n }\n }\n\n disconnect() {\n if (this.socket.state === CONNECTED) {\n this._log({ message: 'Disconnecting Signalr' });\n } else {\n this._log({\n level: Severity.Warning,\n message: `Disconnecting while connection state is ${this.socket.state}`\n });\n }\n return this.socket.stop().catch(error => {\n this._log({\n level: Severity.Error,\n message: 'Error while trying to disconnect',\n data: { error, currentState: this.socket.state }\n });\n });\n }\n\n async send(messageType, args) {\n if (this.socket.state !== CONNECTED) {\n return Promise.reject(\n `Trying to send message without being connected, current state is ${this.socket.state}`\n );\n }\n\n this._log({\n message: 'Sending message...',\n data: { connection: this.socket.state, messageType, payload: args }\n });\n\n try {\n if (isArray(args) && size(args) > 1) {\n return await this.socket.invoke(messageType, ...args);\n } else if (!isEmpty(args) || isNumber(args) || isBoolean(args)) {\n return await this.socket.invoke(messageType, args);\n } else {\n // invoke() converts undefined to null, which might cause error if hub method doesn't expect arguments\n return await this.socket.invoke(messageType);\n }\n } catch (error) {\n this._log({\n level: Severity.Error,\n message: 'Could not send SignalR message',\n data: {\n connection: this.socket.state,\n messageType,\n message: args,\n error\n }\n });\n throw error;\n }\n }\n\n onReconnected = connectionId => {\n this._log({\n message: 'SignalR reconnected',\n data: {\n connectionId\n }\n });\n this.onConnected();\n };\n\n onDisconnect = error => {\n if (error) {\n this._log({\n level: Severity.Error,\n message: 'SignalR closed with error',\n data: {\n connectionId: this.socket.connectionId,\n error\n }\n });\n this.onError(error);\n } else {\n this._log({ message: 'Connection closed' });\n }\n this._callHandler(DISCONNECTED);\n };\n}\n","import noop from 'lodash/noop';\nimport { createStore, applyMiddleware, compose } from 'redux';\nimport thunk from 'redux-thunk';\nimport createDebounce from 'redux-debounced';\nimport throttle from 'redux-throttle';\nimport { routerMiddleware } from 'connected-react-router';\nimport { APP_INIT } from './constants';\nimport {\n SOCKET_ID,\n VOYAGER_API,\n IDENTITY_API,\n SEARCH_API,\n SOCKET_PATH\n} from './api/constants';\nimport history from './history';\nimport createReducer from './reducers';\nimport {\n createAuthGuard,\n apiMiddleware,\n localeMiddleware,\n errorLoggerMiddleware\n} from './middleware';\nimport { metricsMiddleware } from './metrics';\nimport socketMiddlewareFactory from './middleware/socketMiddlewareFactory';\nimport signalrSocket from './api/socketAdapters/signalrSocket';\n\nconst composeEnhancers =\n typeof window === 'object' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\n ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n shouldHotReload: false,\n shouldCatchErrors: false\n })\n : compose;\n\nconst DEFAULTS = { defaultStore: {}, urlGetter: noop };\nexport default function configureStore(options = DEFAULTS) {\n const middlewares = [thunk];\n const { urlGetter, defaultStore } = { ...DEFAULTS, ...options };\n\n if (process.env.NODE_ENV !== 'test') {\n middlewares.push(createAuthGuard());\n middlewares.push(createDebounce());\n middlewares.push(throttle());\n }\n\n middlewares.push(\n apiMiddleware({\n id: VOYAGER_API,\n baseURL: urlGetter(VOYAGER_API)\n })\n );\n middlewares.push(\n apiMiddleware({\n id: IDENTITY_API,\n baseURL: urlGetter(IDENTITY_API)\n })\n );\n middlewares.push(\n apiMiddleware({\n id: SEARCH_API,\n baseURL: urlGetter(SEARCH_API)\n })\n );\n middlewares.push(\n socketMiddlewareFactory({\n socketId: SOCKET_ID.IDEATION,\n url: [urlGetter('API'), SOCKET_PATH.IDEATION].join('/'),\n socketHandler: signalrSocket\n })\n );\n middlewares.push(\n socketMiddlewareFactory({\n socketId: SOCKET_ID.CONCEPT_CANVAS,\n url: [urlGetter('API'), SOCKET_PATH.CONCEPT_CANVAS].join('/'),\n socketHandler: signalrSocket\n })\n );\n middlewares.push(routerMiddleware(history));\n middlewares.push(localeMiddleware);\n\n if (process.env.NODE_ENV !== 'test') {\n middlewares.push(errorLoggerMiddleware);\n middlewares.push(metricsMiddleware);\n }\n\n if (process.env.NODE_ENV === `development`) {\n const { createLogger } = require(`redux-logger`);\n const loggerMiddleware = createLogger({\n level: 'info',\n collapsed: true\n });\n middlewares.push(loggerMiddleware);\n }\n\n let store = createStore(\n createReducer(),\n defaultStore,\n composeEnhancers(applyMiddleware(...middlewares))\n );\n\n store.asyncReducers = {};\n\n store.dispatch({ type: APP_INIT });\n\n return store;\n}\n\nexport function injectAsyncReducer(store, name, asyncReducer) {\n store.asyncReducers[name] = asyncReducer;\n store.replaceReducer(createReducer(store.asyncReducers));\n store.dispatch({\n type: 'INIT'\n });\n}\n\nexport function observeStore(store, select, onChange) {\n let currentState;\n\n function handleChange() {\n let nextState = select(store.getState());\n if (nextState !== currentState) {\n currentState = nextState;\n onChange(currentState);\n }\n }\n\n let unsubscribe = store.subscribe(handleChange);\n handleChange();\n return unsubscribe;\n}\n","import noop from 'lodash/noop';\nimport i18n from 'i18next';\nimport XHR from 'i18next-xhr-backend';\nimport moment from 'moment';\n\nconst formatters = {\n fromNow: (value, lng) =>\n moment(value)\n .locale(lng)\n .fromNow(),\n toNow: (value, lng) =>\n moment(value)\n .locale(lng)\n .toNow(),\n humanize: (value, lng) =>\n moment\n .duration(value)\n .locale(lng)\n .humanize(),\n percentage: value => `${value}%`\n};\n\nexport default function configureI18n(onReady = noop) {\n const isDevelop = process.env.NODE_ENV === 'development';\n\n i18n.use(XHR).init({\n initImmediate: false,\n fallbackLng: false,\n debug: false,\n // allow keys to be phrases having `:`, `.` https://github.com/i18next/react-i18next/issues/387\n nsSeparator: false,\n\n keySeparator: '/',\n returnEmptyString: false,\n parseMissingKeyHandler: isDevelop ? key => `@@${key}@@` : () => null,\n\n interpolation: {\n escapeValue: false, // not needed for react!!\n formatSeparator: ',',\n format(value, format, lng = 'en') {\n const formatter = formatters[format];\n if (formatter) {\n return formatter(value, lng);\n }\n return value;\n }\n },\n\n backend: {\n loadPath: '{{lng}}',\n parse: data => data,\n ajax: loadLocales\n }\n });\n\n // load active language\n onReady();\n\n return i18n;\n}\n\nfunction loadLocales(lang, options, callback, data) {\n try {\n switch (lang) {\n case 'en':\n import('./locales/en').then(module => {\n const translations = module.default;\n moment.locale('en');\n callback(translations, { status: '200' });\n });\n return;\n case 'hu':\n import('./locales/hu').then(module => {\n const translations = module.default;\n moment.locale('hu');\n callback(translations, { status: '200' });\n });\n return;\n case 'de':\n import('./locales/de').then(module => {\n const translations = module.default;\n moment.locale('de');\n callback(translations, { status: '200' });\n });\n return;\n default:\n callback(null, { status: '404' });\n }\n } catch (e) {\n callback(null, { status: '404' });\n }\n}\n","function platformCreationPage(token) {\n const path = '/createteam';\n return token ? `${path}?token=${token}` : path;\n}\n\nexport default {\n platformCreationPage\n};\n","import React, { useContext, useEffect } from 'react';\nimport { translate } from 'react-i18next';\nimport { Redirect } from 'react-router-dom';\nimport styled from 'styled-components';\nimport AuthPageHeader from '../../../authentication/components/AuthPageHeader';\nimport { AuthContext } from '../../../authentication/components/AuthProvider';\nimport Heading from '../../../common/components/Heading';\nimport Paragraph from '../../../common/components/Paragraph';\nimport useQueryParams from '../../../common/hooks/useQueryParams';\nimport { lightGrayScale } from '../../../common/styled/colors.styled';\nimport paths from '../../paths';\n\nconst Wrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst Content = styled.main`\n width: 640px;\n max-width: 100vw;\n padding: 1rem;\n text-align: center;\n`;\n\nfunction PaymentStartLandingPage({ t }) {\n const { token } = useQueryParams();\n const { loggedIn, logoutUser } = useContext(AuthContext);\n\n useEffect(\n function maybeLogout() {\n if (loggedIn) {\n logoutUser(true);\n }\n },\n [loggedIn, logoutUser]\n );\n\n return token ? (\n \n ) : (\n <>\n \n \n \n {t('platformCreation/azureError/title')}\n {t('platformCreation/azureError/description')}\n \n \n {t('platformCreation/azureError/redirectCTA')}\n \n \n \n \n \n );\n}\n\nexport default translate()(PaymentStartLandingPage);\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport './Menu.css';\n\nfunction Menu({ children }) {\n return
      {children}
    ;\n}\n\nMenu.propTypes = {\n children: PropTypes.node\n};\n\nexport default Menu;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nfunction Submenu({ children, collapsed = false }) {\n return (\n \n {children}\n \n );\n}\n\nSubmenu.propTypes = {\n children: PropTypes.node,\n collapsed: PropTypes.bool\n};\n\nexport default Submenu;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport Button from '@bit/be-novative.kit.button';\nimport Icon from '../Icon';\nimport Submenu from './Submenu';\n\nclass MenuItem extends Component {\n constructor(props) {\n super(props);\n this.state = {\n collapsed: true\n };\n this.toggle = this.toggle.bind(this);\n }\n\n toggle(event) {\n event.preventDefault();\n this.setState({\n collapsed: !this.state.collapsed\n });\n }\n\n render() {\n const {\n submenu = [],\n children,\n icon,\n href,\n to,\n onClick,\n highlighted = false\n } = this.props;\n\n if (!submenu.length) {\n return (\n \n \n \n {children}\n \n \n );\n }\n\n return (\n
  • \n \n {submenu}\n
  • \n );\n }\n}\n\nMenuItem.propTypes = {\n submenu: PropTypes.node,\n icon: PropTypes.string.isRequired,\n to: PropTypes.string,\n onClick: PropTypes.func,\n highlighted: PropTypes.bool\n};\n\nexport default MenuItem;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport Button from '@bit/be-novative.kit.button';\n\nclass SubmenuItem extends Component {\n static propTypes = {\n active: PropTypes.bool,\n onClick: PropTypes.func,\n to: PropTypes.string\n };\n\n static defaultProps = {\n onClick: () => {}\n };\n\n render() {\n const { to, children, active, onClick } = this.props;\n return (\n
  • \n \n {children}\n \n
  • \n );\n }\n}\n\nexport default SubmenuItem;\n","import Menu from './Menu';\nexport default Menu;\nexport { default as MenuItem } from './MenuItem';\nexport { default as SubmenuItem } from './SubmenuItem';\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { Motion, spring } from 'react-motion';\nimport Close from '../Close';\nimport Backdrop from '../Backdrop';\nimport './Drawer.css';\n\nfunction Drawer({ opened = false, children, onCloseClick }) {\n const x = opened ? 0 : 285;\n\n return (\n
    \n \n \n {({ xPosition }) => {\n const translate = `translateX(${xPosition}px)`;\n return (\n
    \n \n \n {children}\n
    \n
    \n );\n }}\n \n \n );\n}\n\nDrawer.propTypes = {\n children: PropTypes.node,\n onCloseClick: PropTypes.func,\n opened: PropTypes.bool\n};\n\nexport default Drawer;\n","import Drawer from './Drawer';\nexport default Drawer;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport Avatar from '../Avatar';\nimport { Size } from '../../../constants';\nimport { imageDetailsType } from '../../types';\nimport { getUrl } from '../../selectors/images';\nimport './ProfileCard.css';\n\nfunction ProfileCard({ image, name, children }) {\n let backgroundImage =\n 'linear-gradient(rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7))';\n\n if (getUrl(image)) {\n backgroundImage += `, url(${getUrl(image)})`;\n }\n\n return (\n
    \n
    \n \n {name}\n
    \n {children &&
    {children}
    }\n
    \n );\n}\n\nProfileCard.propTypes = {\n image: imageDetailsType,\n name: PropTypes.string\n};\n\nexport default ProfileCard;\n","import ProfileCard from './ProfileCard';\nexport default ProfileCard;\n","import React, { useCallback, useContext } from 'react';\nimport { connect } from 'react-redux';\nimport { translate } from 'react-i18next';\nimport { compose } from 'redux';\nimport {\n SUPPORTED_UI_LANGUAGES,\n SUPPORTED_UI_LANGUAGES_NATIVE\n} from '../../constants';\nimport paths from '../../paths';\nimport { resetOnboarding, changeLanguage, closeSidenav } from '../actions';\nimport { onboardingTipsSelector } from '../reducers/onboarding';\nimport { getCurrentLanguage } from '../selectors/language';\nimport Menu, { MenuItem, SubmenuItem } from '../components/Menu';\nimport Drawer from '../components/Drawer';\nimport Progress from '../components/Progress';\nimport ProfileCard from '../components/ProfileCard';\nimport { renderWhenAuthenticated, renderWhenAdmin } from './authorization';\nimport localiseUserName from '../../utils/localiseUserName';\nimport { getWorkPosition } from '../../profile/getters';\nimport { ownProfileSelector } from '../../profile/state/profile';\nimport { getUserAvatar } from '../getters/users';\nimport { AuthContext } from '../../authentication/components/AuthProvider';\n\nconst AdminMenuItem = renderWhenAdmin(MenuItem);\n\nfunction Sidenav({\n avatar,\n changeLanguage,\n closeSidenav,\n currentLanguage,\n opened,\n resetOnboarding,\n t,\n tips,\n title,\n userName\n}) {\n const authCtx = useContext(AuthContext);\n\n const handleLanguageClick = useCallback(\n lang => {\n changeLanguage(lang);\n closeSidenav();\n },\n [changeLanguage, closeSidenav]\n );\n\n return (\n \n \n \n {title}\n \n \n \n \n {t('common/My Profile')}\n \n {false && (\n \n {t('common/Notifications')}\n \n )}\n {tips && (\n {\n resetOnboarding();\n closeSidenav();\n }}\n icon=\"info\">\n {t('common/Tooltips')}\n \n )}\n (\n handleLanguageClick(lang)}>\n {SUPPORTED_UI_LANGUAGES_NATIVE[lang]}\n \n ))}\n icon=\"language\">\n {t('common/Language')}:{' '}\n {SUPPORTED_UI_LANGUAGES_NATIVE[currentLanguage]}\n \n \n {t('common/Admin')}\n \n authCtx.logoutUser(true)}\n icon=\"cog\"\n highlighted>\n {t('common/Logout')}\n \n \n \n );\n}\n\nfunction mapStateToProps(state, { t }) {\n const profile = ownProfileSelector(state);\n\n return {\n avatar: getUserAvatar(profile),\n currentLanguage: getCurrentLanguage(state),\n opened: state.sidenav.open,\n tips: onboardingTipsSelector(state),\n title: getWorkPosition(profile),\n userName: localiseUserName(t, profile)\n };\n}\n\nexport default compose(\n renderWhenAuthenticated,\n translate(),\n connect(\n mapStateToProps,\n {\n resetOnboarding,\n changeLanguage,\n closeSidenav\n }\n )\n)(Sidenav);\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { translate } from 'react-i18next';\nimport HttpStatusCodes from 'http-status-codes';\nimport paths from '../../../paths';\nimport parseQueryString from '../../../utils/parseQueryString';\nimport Button from '@bit/be-novative.kit.button';\nimport FullScreen from '../../components/FullScreen';\nimport NonIdealState from '../../components/NonIdealState';\nimport GlobalPageHeader from '../../components/GlobalPageHeader';\nimport Sidenav from '../Sidenav';\n\nfunction ErrorPage({ location, t }) {\n let { reason, resource } = parseQueryString(location.search);\n reason = parseInt(reason, 10);\n\n let props = {\n title: t('error/Ooops!'),\n description: t(\n 'error/An unexpected error seems to have occured. Why not try refreshing your page? Or you can contact us if the problem persists.'\n )\n };\n\n if (reason === HttpStatusCodes.INTERNAL_SERVER_ERROR) {\n props = {\n title: t('error/Internal Server Error'),\n description: t(\n 'error/The server encountered an error and could not complete your request.'\n )\n };\n } else if (reason === HttpStatusCodes.FORBIDDEN) {\n props = {\n title: t('error/Access Denied'),\n description: t(\n 'error/You do not have permission to access {{resource}}',\n { resource }\n ),\n action: (\n \n )\n };\n }\n\n return (\n \n \n \n \n \n );\n}\n\nErrorPage.propTypes = {\n params: PropTypes.shape({\n reason: PropTypes.number,\n resource: PropTypes.string\n })\n};\n\nexport default translate()(ErrorPage);\n","import ErrorPage from './ErrorPage';\n\nexport default ErrorPage;\n","import React, { Component } from 'react';\nimport flow from 'lodash/flow';\nimport isNumber from 'lodash/isNumber';\nimport memoize from 'lodash/memoize';\nimport round from 'lodash/round';\nimport truncate from 'lodash/fp/truncate';\nimport values from 'lodash/values';\nimport PropTypes from 'prop-types';\nimport { translate } from 'react-i18next';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { Size, SortDirection } from '../../../constants';\nimport {\n conceptListColumns,\n EMPTY_NUMBER,\n IdeaConceptImplementationStatus as ConceptPhase\n} from '../../constants';\nimport { IdeaConceptEvaluationFormConfig as ConceptEvalConfig } from '../../config';\nimport { conceptEvalPage, conceptSubpage } from '../../paths';\nimport stripHTML from '@bit/be-novative.utils.strip-html';\nimport { fetchChallenge } from '../../../common/actions/challenges';\nimport { openConceptPreview } from '../../actions';\nimport { getCreateTime } from '../../../common/selectors/meta';\nimport {\n getTitle,\n getIdeaConceptId,\n getOwner,\n getCompositeEvalScore,\n getIdeaText,\n getChallengeId,\n getEvaluatorCount,\n isConceptPrivate\n} from '../../selectors/ideaConcepts';\nimport ConnectedAvatar from '../../../common/containers/ConnectedAvatar';\nimport Button from '@bit/be-novative.kit.button';\nimport DateTime from '../../../common/components/DateTime';\nimport Table from '../../../common/components/Table';\nimport Column from '../../../common/components/Table/Column';\nimport ConceptTeamAvatars from '../../components/ConceptTeamAvatars';\nimport StageSelector from '../../components/StageSelector';\nimport './ConceptTable.css';\nimport { Icon } from '../../../common/components/Icon/Icon';\n\nconst BASE_CLASS = 'ConceptTable';\nconst EVAL_MAX_SCORE = ConceptEvalConfig.CRITERION_MAX;\nconst TITLE_MAX_LENGTH = 40;\nconst TITLE_TOOLTIP_MAX_LENGTH = 200;\nconst TEAM_MAX_COUNT = 4;\n\nexport class ConceptTable extends Component {\n static propTypes = {\n activePhase: PropTypes.oneOf(values(ConceptPhase)).isRequired,\n canReviewConcepts: PropTypes.bool,\n concepts: PropTypes.arrayOf(PropTypes.object),\n sortDisabled: PropTypes.bool,\n onSortUpdate: PropTypes.func.isRequired,\n openConceptPreview: PropTypes.func.isRequired,\n sortBy: PropTypes.oneOf(values(conceptListColumns)),\n sortDirection: PropTypes.oneOf(values(SortDirection))\n };\n\n static defaultProps = {\n concepts: []\n };\n\n getConceptRowData = ({ index }) => this.props.concepts[index];\n\n handlePreviewClick = ideaConceptId => () =>\n this.props.openConceptPreview(ideaConceptId);\n\n render() {\n const {\n concepts,\n sortDisabled,\n onSortUpdate,\n sortDirection,\n sortBy,\n t\n } = this.props;\n\n return (\n \n \n\n \n\n \n\n \n\n \n\n \n\n \n \n );\n }\n\n renderTitleLabel = memoize(\n flow(\n stripHTML,\n truncate({ length: TITLE_TOOLTIP_MAX_LENGTH })\n )\n );\n\n renderTitle = ({ rowData }) => {\n const link = conceptSubpage(getIdeaConceptId(rowData));\n const title = getTitle(rowData);\n const tooltip = this.renderTitleLabel(getIdeaText(rowData));\n const isPrivate = isConceptPrivate(rowData);\n\n return (\n <>\n {isPrivate && (\n \n )}\n \n \n );\n };\n\n renderOwner = ({ rowData }) => (\n \n );\n\n renderTeam = ({ rowData }) => (\n \n );\n\n renderStartDate = ({ rowData }) => (\n {getCreateTime(rowData)}\n );\n\n renderScore = ({ rowData }) => {\n const { t } = this.props;\n const score = getCompositeEvalScore(rowData);\n const evalCount = getEvaluatorCount(rowData);\n return isNumber(score) && 0 < score ? (\n <>\n \n {round(score, 1)}/{EVAL_MAX_SCORE}\n \n {0 < evalCount && (\n <>\n
    \n \n {evalCount}{' '}\n {t('ideaConcept/evaluation/collection', { count: evalCount })}\n \n \n )}\n \n ) : (\n EMPTY_NUMBER\n );\n };\n\n renderStatus = ({ rowData }) => (\n \n );\n\n preloadChallenge = challengeId => {\n try {\n this.props.preloadChallenge(challengeId);\n } catch (error) {\n // No need to handle\n console.error(error);\n }\n };\n\n renderAction = ({ rowData }) => {\n const { activePhase, canReviewConcepts, t } = this.props;\n const parentChallengeId = getChallengeId(rowData);\n const shouldRenderReview =\n canReviewConcepts &&\n [\n ConceptPhase.IMPLEMENTING,\n ConceptPhase.VALIDATION,\n ConceptPhase.DONE\n ].includes(activePhase);\n const props = shouldRenderReview\n ? {\n children: t('ideaConcept/evaluation/form/submitCTA', {\n context: 'short'\n }),\n to: conceptEvalPage('conceptId', getIdeaConceptId(rowData)),\n onMouseEnter: () => this.preloadChallenge(parentChallengeId)\n }\n : {\n children: t('common/navigation/details', { context: 'short' }),\n onClick: this.handlePreviewClick(getIdeaConceptId(rowData))\n };\n return \n {values(scrollIds).map(ix => (\n handleScroll(ix) : null}\n variant=\"minimal\"\n size={Size.xs}\n style={{\n height: 30,\n lineHeight: 30,\n paddingLeft: 5,\n paddingRight: 5\n }}>\n \n \n \n ))}\n handleScroll(nextBtnTarget)\n : null\n }\n variant=\"minimal\"\n size={Size.xs}\n style={{\n height: 30\n }}>\n \n \n \n );\n}\n","import Button from '@bit/be-novative.kit.button';\nimport React from 'react';\nimport { AlignedCellContent, SingleLineHeight } from '../ConceptTable.styled';\nimport TableNav from '../TableNav';\n\nconst action = {\n header: t => (\n \n \n \n \n \n ),\n main: (t, concept, btnProps) => (\n \n \n \n \n )}\n \n \n \n );\n}\n\nexport default translate()(CommentDisplay);\n","import React from 'react';\nimport { getIdeaConceptId } from '../../../selectors/ideaConcepts';\nimport { AlignedCellContent } from '../ConceptTable.styled';\nimport getUserEvals from './getUserEvals';\n\nexport default function ExpandedCommentCell({ as: DisplayComponent, concept }) {\n return (\n <>\n {/* Whitespace for \"Reviewed by\" label in row header cell */}\n  \n {getUserEvals(concept)\n .map(evaluation => evaluation.user.userId)\n .map(authorId => (\n \n \n \n ))}\n \n );\n}\n","import get from 'lodash/get';\nimport React from 'react';\nimport { translate } from 'react-i18next';\nimport { getIdeaConceptId } from '../../../selectors/ideaConcepts';\nimport { AlignedCellContent } from '../ConceptTable.styled';\nimport useCanEditFeedback from '../useCanEditFeedback';\nimport useCanShowFeedback from '../useCanShowFeedback';\nimport useEditCommentLike from '../useEditCommentLike';\nimport useFetchCommentLike from '../useFetchCommentLike';\nimport useGetCommentLike from '../useGetCommentLike';\nimport useViewCommentLike from '../useViewCommentLike';\nimport CommentDisplay from './CommentDisplay';\nimport ExpandedCommentCell from './ExpandedCommentCell';\n\nfunction FeedbackDisplay({\n conceptId,\n shouldFetchOnVisible = false,\n authorId,\n t\n}) {\n const canShowFeedback = useCanShowFeedback(conceptId);\n const canEditFeedback = useCanEditFeedback(authorId);\n const feedback = useGetCommentLike('feedback', conceptId, authorId);\n const fetch = useFetchCommentLike('feedback', conceptId);\n const [openEditor] = useEditCommentLike('feedback', conceptId, authorId, t);\n const openReadOnly = useViewCommentLike(conceptId, authorId);\n let onOpen = null;\n if (canEditFeedback) {\n onOpen = openEditor;\n } else if (feedback) {\n onOpen = openReadOnly;\n }\n\n return canShowFeedback ? (\n Promise.resolve()}\n onOpen={onOpen}\n text={get(feedback, 'text')}\n canEdit={canEditFeedback}\n />\n ) : null;\n}\n\nconst TranslatedFeedbackDisplay = translate()(FeedbackDisplay);\n\nconst feedback = {\n header: t => t('ideaConcepts/listPage/tableHeaders/feedback'),\n main: (t, concept) => {\n return (\n \n \n \n );\n },\n expanded: (t, concept) => (\n \n )\n};\n\nexport default feedback;\n","import { useSelector } from 'react-redux';\nimport {\n isAdminSelector,\n ownProfileSelector\n} from '../../../profile/state/profile';\nimport useIdeaConcept from '../../hooks/useIdeaConcept';\nimport { getTeam } from '../../selectors/ideaConcepts';\n\n/**\n * Checks whether the user can access the feedback belonging to the idea concept.\n * @param {string|number} conceptId - Idea concept UUID\n * @returns {boolean} `true` if the user is either a concept team member or a platform admin\n */\nexport default function useCanShowFeedback(conceptId) {\n const { userId } = useSelector(ownProfileSelector);\n const isAdmin = useSelector(isAdminSelector);\n const [concept] = useIdeaConcept(conceptId);\n const isTeamMember = getTeam(concept).includes(userId);\n return isAdmin || isTeamMember;\n}\n","import { useSelector } from 'react-redux';\nimport { isAdminSelector } from '../../../profile/state/profile';\nimport { ownProfileSelector } from '../../../profile/state/profile';\n\n/**\n * Checks whether the user can edit the feedback belonging to the idea concept.\n * @param {string|number} [feedbackAuthorId] - ID of the feedback author. Should be empty if the group feedback is edited.\n * @returns {boolean} `true` if the user can edit the feedback\n */\nexport default function useCanEditFeedback(feedbackAuthorId) {\n const isAdmin = useSelector(isAdminSelector);\n const ownUserId = useSelector(ownProfileSelector).userId;\n const canEditGroupFeedback = isAdmin && !feedbackAuthorId;\n const canEditOwnFeedback = isAdmin && feedbackAuthorId === ownUserId;\n return canEditGroupFeedback || canEditOwnFeedback;\n}\n","import get from 'lodash/get';\nimport isNumber from 'lodash/isNumber';\nimport React from 'react';\nimport { translate } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport {\n isAdminSelector,\n ownProfileSelector\n} from '../../../../profile/state/profile';\nimport { getIdeaConceptId } from '../../../selectors/ideaConcepts';\nimport { AlignedCellContent, TitleCellLabel } from '../ConceptTable.styled';\nimport useEditCommentLike from '../useEditCommentLike';\nimport useFetchCommentLike from '../useFetchCommentLike';\nimport useGetCommentLike from '../useGetCommentLike';\nimport useViewCommentLike from '../useViewCommentLike';\nimport CommentDisplay from './CommentDisplay';\nimport ExpandedCommentCell from './ExpandedCommentCell';\nimport ScrollAnchor from './ScrollAnchor';\n\nfunction InternalCommentDisplay({\n conceptId,\n shouldFetchOnVisible = false,\n authorId,\n t\n}) {\n const canShowComment = useSelector(isAdminSelector);\n const ownUserId = useSelector(ownProfileSelector).userId;\n const comment = useGetCommentLike('internalComment', conceptId, authorId);\n const fetch = useFetchCommentLike('internalComment', conceptId);\n const canEdit = !authorId || ownUserId === authorId;\n const [openEditor] = useEditCommentLike(\n 'internalComment',\n conceptId,\n authorId,\n t\n );\n const openReadOnly = useViewCommentLike(conceptId, authorId);\n let onOpen = null;\n if (canEdit) {\n onOpen = openEditor;\n } else if (comment) {\n onOpen = openReadOnly;\n }\n return canShowComment ? (\n Promise.resolve()}\n onOpen={onOpen}\n text={get(comment, 'text')}\n canEdit={canEdit}\n />\n ) : null;\n}\n\nconst TranslatedInternalCommentDisplay = translate()(InternalCommentDisplay);\n\nconst internalComments = {\n header: (t, scrollIx) => (\n \n {isNumber(scrollIx) && }\n \n {t('ideaConcepts/listPage/tableHeaders/internalComments')}\n \n \n ),\n main: (t, concept) => {\n return (\n \n \n \n );\n },\n expanded: (t, concept) => (\n \n )\n};\n\nexport default internalComments;\n","import action from './action';\nimport averageScore from './averageScore';\nimport conceptTitle from './conceptTitle';\nimport criterionScore from './criterionScore';\nimport feedback from './feedback';\nimport internalComments from './internalComments';\nimport owner from './owner';\nimport startTime from './startTime';\nimport status from './status';\nimport team from './team';\n\nexport default {\n action,\n averageScore,\n conceptTitle,\n criterionScore,\n feedback,\n internalComments,\n owner,\n startTime,\n status,\n team\n};\n","import React from 'react';\nimport ConnectedAvatar from '../../../../common/containers/ConnectedAvatar';\nimport { getOwner } from '../../../../common/selectors/meta';\nimport { Size } from '../../../../constants';\nimport { AlignedCellContent, TitleCellLabel } from '../ConceptTable.styled';\n\nconst owner = {\n header: t => {\n return (\n \n \n {t('ideaConcepts/listPage/tableHeaders/owner')}\n \n \n );\n },\n main: (t, concept) => (\n \n \n \n )\n};\n\nexport default owner;\n","import React from 'react';\nimport { getCreateTime } from '../../../../common/selectors/meta';\nimport { AlignedCellContent, SingleLineHeight } from '../ConceptTable.styled';\n\nconst startTime = {\n main: (t, concept) => (\n \n \n {new Date(getCreateTime(concept)).toLocaleDateString()}\n \n \n )\n};\n\nexport default startTime;\n","import React from 'react';\nimport StageSelector from '../../../components/StageSelector';\nimport { getIdeaConceptId } from '../../../selectors/ideaConcepts';\nimport { AlignedCellContent, SingleLineHeight } from '../ConceptTable.styled';\n\nconst status = {\n main: (t, concept) => (\n \n \n \n \n \n )\n};\n\nexport default status;\n","import React from 'react';\nimport { Size } from '../../../../constants';\nimport ConceptTeamAvatars from '../../../components/ConceptTeamAvatars';\nimport { getIdeaConceptId } from '../../../selectors/ideaConcepts';\nimport { AlignedCellContent, SingleLineHeight } from '../ConceptTable.styled';\n\nconst team = {\n main: (t, concept) => (\n \n \n \n \n \n )\n};\n\nexport default team;\n","import { useCallback, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport useCanReviewConcepts from '../../hooks/useCanReviewConcepts';\nimport useActiveStageFilter from '../../hooks/conceptList/useActiveStageFilter';\nimport {\n conceptListColumns,\n IdeaConceptImplementationStatus as ConceptPhase\n} from '../../constants';\nimport { conceptEvalPage } from '../../paths';\nimport { fetchChallenge } from '../../../common/actions/challenges';\nimport { openConceptPreview } from '../../actions/modals';\nimport { defaultReviewCriteriaSelector } from '../../../common/state/platform';\nimport { getEvalCriterionId } from '../../selectors/conceptEvaluation';\nimport { getChallengeId, getIdeaConceptId } from '../../selectors/ideaConcepts';\nimport CellRenderer from './CellRenderer';\n\nexport const scrollIds = {\n scores: 0,\n comments: 1\n};\n\n/**\n * @typedef {object} ConceptTableColumnConfig\n * @property {string} id - UUID, but also used as a sorting key\n * @property {boolean} [hidden]\n * @property {string} [title]\n * @property {boolean} [sortDisabled]\n * @property {import('react').ReactNode} [renderHeader]\n * @property {import('react').ReactNode} [renderMain]\n * @property {import('react').ReactNode} [renderExpanded]\n * @property {'left' | 'right'} [sticky] - If true, will also render the left sticky cells as ``s\n */\n\n/**\n * Generates config for rendering header, content, expanded content for each concept table column\n * @returns {ConceptTableColumnConfig[]}\n */\nexport default function useTableConfig() {\n const leftStickyCols = useMemo(() => {\n const width = '280px';\n const expandedMaxWidth = '270px';\n return [\n {\n id: conceptListColumns.TITLE,\n width,\n sticky: 'left',\n title: 'Concept Title',\n ariaRole: 'columnHeader',\n renderMain: CellRenderer.conceptTitle.main,\n renderExpanded: (t, concept) =>\n CellRenderer.conceptTitle.expanded(t, concept, expandedMaxWidth)\n }\n ];\n }, []);\n\n function mapEvalCriteriaToColConfig(criteria, width) {\n return criteria.map((criterion, ix) => {\n const id = getEvalCriterionId(criterion);\n return {\n id,\n width,\n sortDisabled: true,\n renderHeader: t =>\n CellRenderer.criterionScore.header(\n t,\n null,\n criterion,\n ix === 0 ? scrollIds.scores : undefined\n ),\n renderMain: (t, concept) =>\n CellRenderer.criterionScore.main(t, concept, criterion),\n renderExpanded: (t, concept) =>\n CellRenderer.criterionScore.expanded(t, concept, criterion)\n };\n });\n }\n const criteria = useSelector(defaultReviewCriteriaSelector);\n const bodyCols = useMemo(\n () =>\n [].concat(\n {\n id: conceptListColumns.OWNER,\n width: '90px',\n renderHeader: t => CellRenderer.owner.header(t),\n renderMain: CellRenderer.owner.main\n },\n {\n id: conceptListColumns.TEAM,\n width: '140px',\n title: 'Team',\n renderMain: CellRenderer.team.main\n },\n {\n id: conceptListColumns.CREATE_TIME,\n width: '150px',\n title: 'Start date',\n renderMain: CellRenderer.startTime.main\n },\n mapEvalCriteriaToColConfig(criteria, '130px'),\n {\n id: conceptListColumns.EVAL_SCORE,\n width: '105px',\n title: 'Average score',\n renderMain: CellRenderer.averageScore.main,\n renderExpanded: (t, concept) =>\n CellRenderer.averageScore.expanded(t, concept)\n },\n {\n id: conceptListColumns.INTERNAL_COMMENT,\n width: '300px',\n renderHeader: t =>\n CellRenderer.internalComments.header(t, scrollIds.comments),\n renderMain: CellRenderer.internalComments.main,\n renderExpanded: CellRenderer.internalComments.expanded\n },\n {\n id: conceptListColumns.REVIEWER_FEEDBACK,\n width: '300px',\n renderHeader: CellRenderer.feedback.header,\n renderMain: CellRenderer.feedback.main,\n renderExpanded: CellRenderer.feedback.expanded\n },\n {\n id: conceptListColumns.STAGE,\n width: '200px',\n title: 'Status',\n renderMain: CellRenderer.status.main\n }\n ),\n [criteria]\n );\n\n const activePhase = useActiveStageFilter();\n const canReviewConcepts = useCanReviewConcepts();\n const dispatch = useDispatch();\n const openPreview = useCallback(\n conceptId => dispatch(openConceptPreview(conceptId)),\n [dispatch]\n );\n const prefetchChallenge = useCallback(\n challengeId => dispatch(fetchChallenge(challengeId)),\n [dispatch]\n );\n const rightStickyCols = useMemo(\n () => [\n {\n id: 'action',\n width: '160px',\n sticky: 'right',\n renderHeader: CellRenderer.action.header,\n renderMain: (t, concept) => {\n const shouldRenderReview =\n canReviewConcepts &&\n [\n ConceptPhase.IMPLEMENTING,\n ConceptPhase.VALIDATION,\n ConceptPhase.DONE\n ].includes(activePhase);\n const conceptId = getIdeaConceptId(concept);\n const parentChallengeId = getChallengeId(concept);\n const btnProps = shouldRenderReview\n ? {\n children: t('ideaConcept/evaluation/form/submitCTA', {\n context: 'short'\n }),\n to: conceptEvalPage('conceptId', conceptId),\n onMouseEnter: () => prefetchChallenge(parentChallengeId)\n }\n : {\n children: t('common/navigation/details', { context: 'short' }),\n onClick: () => openPreview(conceptId)\n };\n return CellRenderer.action.main(t, concept, btnProps);\n }\n }\n ],\n [activePhase, canReviewConcepts, openPreview, prefetchChallenge]\n );\n\n const filteredBodyCols = useMemo(() => {\n const colsHiddenFromAdmin = [\n conceptListColumns.OWNER,\n conceptListColumns.TEAM,\n conceptListColumns.CREATE_TIME\n ];\n const colsHiddenFromUser = [\n conceptListColumns.INTERNAL_COMMENT,\n conceptListColumns.EVAL_SCORE,\n ...criteria.map(getEvalCriterionId)\n ];\n const hiddenCols = canReviewConcepts\n ? colsHiddenFromAdmin\n : colsHiddenFromUser;\n return bodyCols.filter(colConfig => !hiddenCols.includes(colConfig.id));\n }, [bodyCols, criteria, canReviewConcepts]);\n\n const filteredRightCols = useMemo(\n () => (canReviewConcepts ? rightStickyCols : []),\n [rightStickyCols, canReviewConcepts]\n );\n\n return [leftStickyCols, filteredBodyCols, filteredRightCols];\n}\n","import React, { useCallback } from 'react';\nimport styled from 'styled-components';\nimport { SortDirection } from '../../../api/constants';\nimport SortIndicator from '../../../common/components/Table/SortIndicator';\n\nconst ColHeaderBtn = styled.button`\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n height: 100%;\n appearance: none;\n background: none;\n border: 0;\n text-align: left;\n font-size: 0.85em;\n &[disabled] {\n color: initial;\n }\n &:not([disabled]) {\n cursor: pointer;\n }\n`;\n\nexport default function ColHeader({\n children,\n colId,\n onSortUpdate,\n sortDisabled,\n sortDirection\n}) {\n const handleClick = useCallback(() => {\n const sortDir =\n sortDirection === SortDirection.Desc\n ? SortDirection.Asc\n : SortDirection.Desc;\n onSortUpdate({\n sortBy: colId,\n sortDirection: sortDir\n });\n }, [colId, onSortUpdate, sortDirection]);\n return (\n \n {children}\n {!sortDisabled && (\n \n )}\n \n );\n}\n","import React, { useLayoutEffect } from 'react';\nimport { Cell } from './ConceptTable.styled';\nimport { useRef } from 'react';\n\nexport default function MeasuredCell({\n children,\n id,\n onSizeChange,\n scope,\n role,\n ariaSort,\n width,\n height,\n expanded\n}) {\n const ref = useRef();\n useLayoutEffect(\n function reportSize() {\n if (onSizeChange && ref.current) {\n const rect = ref.current.getBoundingClientRect();\n onSizeChange(id, rect.width, rect.height);\n }\n },\n [id, onSizeChange, expanded]\n );\n\n return (\n \n {children}\n \n );\n}\n","import React from 'react';\nimport { translate } from 'react-i18next';\nimport { SortDirection } from '../../../api/constants';\nimport { getIdeaConceptId } from '../../selectors/ideaConcepts';\nimport ColHeader from './ColHeader';\nimport MeasuredCell from './MeasuredCell';\nimport { Row } from './ConceptTable.styled';\n\nfunction RowGroup({\n cols = [],\n rows = [],\n controlsRowHeight,\n getCellSize,\n getExpandState,\n onExpandRow,\n onCellSizeChange,\n onSortUpdate,\n sortDisabled,\n sortBy,\n sortDirection,\n t\n}) {\n return (\n <>\n \n {cols.map(col => {\n const isSortActive = sortBy === col.id;\n let ariaSort = 'none';\n if (isSortActive) {\n ariaSort =\n sortDirection === SortDirection.Asc ? 'ascending' : 'descending';\n }\n return (\n \n \n {col.renderHeader && col.renderHeader(t)}\n {!col.renderHeader && col.title && String(col.title)}\n \n \n );\n })}\n \n {rows.map(concept => {\n const rowId = getIdeaConceptId(concept);\n const rowState = getExpandState(rowId);\n return (\n \n {cols.map(col => {\n const cellId = controlsRowHeight\n ? `header_${rowId}`\n : `${rowId}_${col.id}`;\n return (\n \n {col.renderMain\n ? col.renderMain(t, concept, onExpandRow, rowState)\n : String(concept)}\n {rowState === 'open' && (\n <>\n {col.renderExpanded\n ? col.renderExpanded(t, concept)\n : null}\n \n )}\n \n );\n })}\n \n );\n })}\n \n );\n}\n\nexport default translate()(RowGroup);\n","import React from 'react';\nimport { TableBody } from './ConceptTable.styled';\nimport { useScrollParent } from './ScrollSpyProvider';\n\nexport default function TableBodyWithScroll({ children }) {\n const scrollRef = useScrollParent();\n return (\n \n {children}\n \n );\n}\n","import React, { useEffect } from 'react';\nimport { translate } from 'react-i18next';\nimport { useDispatch } from 'react-redux';\nimport { OTHER_FILTER_ID, conceptListFilterKeys } from '../../constants';\nimport { conceptListPage } from '../../paths';\nimport { changeListStageFilterMetrics } from '../../actions';\nimport useSetFilter from '../../hooks/conceptList/useSetFilter';\nimport useActiveStageFilter from '../../hooks/conceptList/useActiveStageFilter';\nimport useIsListLoading from '../../hooks/conceptList/useIsListLoading';\nimport PrimaryNavigation from '../../../common/components/PrimaryNavigation';\nimport Tab from '../../../common/components/TabButton';\nimport {\n getStageTranslation,\n getStageFilterIds,\n getStageFilters\n} from '../../../ideaConceptCanvas/utils/translateConceptStage';\n\nconst { STAGE } = conceptListFilterKeys;\nconst stageFilters = getStageFilters();\nconst stageFilterIds = getStageFilterIds();\n\nfunction StageTabRow({ t, ...rest }) {\n const activeStageFilter = useActiveStageFilter();\n const loading = useIsListLoading();\n const dispatch = useDispatch();\n const setFilter = useSetFilter();\n useEffect(\n function updateFilterOnRouteChange() {\n setFilter(STAGE, stageFilterIds[activeStageFilter], {\n overwriteValue: true\n });\n dispatch(changeListStageFilterMetrics(activeStageFilter));\n },\n [activeStageFilter, dispatch, setFilter]\n );\n\n return (\n \n {stageFilters.map(stage => (\n \n {getStageTranslation(stage, t)}\n \n ))}\n \n {t(`ideaConcepts/listPage/othersFilter`)}\n \n \n );\n}\n\nexport default translate()(StageTabRow);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useSelector } from 'react-redux';\nimport Checkbox from '@bit/be-novative.kit.checkbox';\nimport {\n getChallengeById,\n getTitle\n} from '../../../common/selectors/challenges';\nimport scss from './ChallengeFilter.module.scss';\n\nChallengeRow.propTypes = {\n checked: PropTypes.bool,\n challengeId: PropTypes.string.isRequired,\n onSelect: PropTypes.func.isRequired,\n title: PropTypes.string\n};\nfunction ChallengeRow({ challengeId, checked, onSelect }) {\n const challenge = useSelector(getChallengeById(challengeId));\n\n return (\n
    \n \n {getTitle(challenge)}\n \n
    \n );\n}\n\nexport default ChallengeRow;\n","import React from 'react';\nimport includes from 'lodash/includes';\nimport PropTypes from 'prop-types';\nimport ChallengeRow from './ChallengeRow';\n\nChallengeList.propTypes = {\n items: PropTypes.arrayOf(PropTypes.string),\n onSelect: PropTypes.func.isRequired,\n selections: PropTypes.arrayOf(PropTypes.string)\n};\nChallengeList.defaultProps = {\n items: [],\n selections: []\n};\nfunction ChallengeList({ items, onSelect, selections }) {\n return items.map(challengeId => (\n \n ));\n}\n\nexport default ChallengeList;\n","import React, { useCallback, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { translate } from 'react-i18next';\nimport Button from '@bit/be-novative.kit.button';\nimport ChallengeList from './ChallengeList';\nimport NonIdealState from '../../../common/components/NonIdealState';\nimport scss from './ChallengeFilter.module.scss';\n\nActiveSelections.propTypes = {\n onSelect: PropTypes.func.isRequired,\n onSelectAll: PropTypes.func.isRequired,\n onDeselectAll: PropTypes.func.isRequired,\n selections: PropTypes.arrayOf(PropTypes.string)\n};\nActiveSelections.defaultProps = {\n selections: []\n};\nfunction ActiveSelections({\n onSelect,\n onSelectAll,\n onDeselectAll,\n selections,\n t,\n ...rest\n}) {\n const [items] = useState(selections);\n const handleSelectAll = useCallback(() => {\n onSelectAll(items);\n }, [items, onSelectAll]);\n\n return (\n
    \n {items.length ? (\n <>\n {' '}\n \n \n \n ) : (\n \n )}\n
    \n );\n}\n\nexport default translate()(ActiveSelections);\n","import React, { useCallback, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport isEmpty from 'lodash/isEmpty';\nimport size from 'lodash/size';\nimport { translate } from 'react-i18next';\nimport useChallengeSearch from '../../../challenge/hooks/useChallengeSearch';\nimport Spinner from '@bit/be-novative.kit.spinner';\nimport SearchInput from '../../../common/components/SearchInput';\nimport ChallengeList from './ChallengeList';\nimport scss from './ChallengeFilter.module.scss';\n\nconst MIN_SEARCH_TERM_LENGTH = 3;\n\nChallengeSearch.propTypes = {\n onSelect: PropTypes.func.isRequired,\n selections: PropTypes.arrayOf(PropTypes.string)\n};\nChallengeSearch.defaultProps = {\n selections: []\n};\nfunction ChallengeSearch({ onSelect, selections, t, ...rest }) {\n const [isPristine, setIsPristine] = useState(true);\n const [listItems, setListItems] = useState([]);\n const [handleSearch, isSearching] = useChallengeSearch();\n\n const handleQueryInput = useCallback(\n async query => {\n setListItems([]);\n\n if (isEmpty(query) || query.length < MIN_SEARCH_TERM_LENGTH) {\n return;\n }\n setIsPristine(false);\n\n const results = await handleSearch(query);\n setListItems(existing => [...existing, ...results]);\n },\n [handleSearch]\n );\n\n return (\n
    \n \n
    \n {isSearching && }\n\n {!size(listItems) && !isPristine && (\n
    \n {t('challenge/filterForm/search/empty')}\n
    \n )}\n\n \n
    \n
    \n );\n}\n\nexport default translate()(ChallengeSearch);\n","import React, { useEffect, useState } from 'react';\nimport flow from 'lodash/flow';\nimport map from 'lodash/fp/map';\nimport PropTypes from 'prop-types';\nimport { useDispatch } from 'react-redux';\nimport Spinner from '@bit/be-novative.kit.spinner';\nimport { getApiResponseData } from '../../../api/utils/apiResponse';\nimport { fetchFeed } from '../../../feed/actions';\nimport { getChallengeId } from '../../../common/selectors/challenges';\nimport ChallengeList from './ChallengeList';\nimport scss from './ChallengeFilter.module.scss';\n\nLatestChallengesTab.propTypes = {\n selections: PropTypes.array\n};\nLatestChallengesTab.defaultProps = {\n selections: []\n};\nfunction LatestChallengesTab({ onSelect, selections, ...rest }) {\n const [loading, setLoading] = useState(false);\n const [latestChallenges, setLatestChallenges] = useState([]);\n const dispatch = useDispatch();\n\n useEffect(() => {\n (async function fetchLatestChallenges() {\n setLoading(true);\n try {\n const response = await dispatch(fetchFeed(0));\n const challengeIds = flow(\n getApiResponseData,\n map(getChallengeId)\n )(response);\n setLatestChallenges(challengeIds || []);\n } catch (error) {}\n setLoading(false);\n })();\n }, [dispatch]);\n\n return (\n
    \n {loading && }\n\n \n
    \n );\n}\n\nexport default LatestChallengesTab;\n","import React, { useCallback, useEffect, useState } from 'react';\nimport size from 'lodash/size';\nimport uniq from 'lodash/uniq';\nimport without from 'lodash/without';\nimport PropTypes from 'prop-types';\nimport { translate } from 'react-i18next';\nimport Button from '@bit/be-novative.kit.button';\nimport Heading from '../../../common/components/Heading';\nimport PrimaryNavigation from '../../../common/components/PrimaryNavigation';\nimport Tab from '../../../common/components/TabButton';\nimport ActiveSelections from './ActiveSelections';\nimport ChallengeSearch from './ChallengeSearch';\nimport LatestChallengesTab from './LatestChallengesTab';\nimport scss from './ChallengeFilter.module.scss';\n\nconst ACTIVE = 'active';\nconst LATEST = 'latest';\nconst SEARCH = 'search';\n\nChallengeFilter.propTypes = {\n onClose: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n selections: PropTypes.arrayOf(PropTypes.string)\n};\nChallengeFilter.defaultProps = {\n selections: []\n};\nfunction ChallengeFilter({ onClose, onSubmit, selections, t }) {\n const [activeTab, setActiveTab] = useState();\n const [hasChangedTab, setHasChangedTab] = useState(false);\n const [selectedItems, setSelectedItems] = useState(selections);\n const selectedCounter = size(selectedItems) || 0;\n\n useEffect(\n function setInitialTab() {\n if (!hasChangedTab) {\n setActiveTab(selectedCounter > 0 ? ACTIVE : LATEST);\n setHasChangedTab(true);\n }\n },\n [hasChangedTab, selectedCounter]\n );\n\n const handleTabClick = useCallback(\n tabId => () => {\n setActiveTab(tabId);\n setHasChangedTab(true);\n },\n []\n );\n\n const handleSelection = useCallback(event => {\n event.persist();\n setSelectedItems(currentSelections => {\n if (event.target.checked) {\n return uniq([...currentSelections, event.target.name]);\n } else {\n return without(currentSelections, event.target.name);\n }\n });\n }, []);\n\n const handleSelectAll = useCallback(challengeIds => {\n setSelectedItems(challengeIds);\n }, []);\n\n const handleDeselectAll = useCallback(() => {\n setSelectedItems([]);\n }, []);\n\n const handleSubmit = useCallback(() => {\n onSubmit(selectedItems);\n onClose();\n }, [onClose, onSubmit, selectedItems]);\n\n return (\n \n \n {t('challenge/filterForm/title')}\n \n \n \n {t('challenge/filterForm/active/title')}\n \n \n {t('challenge/filterForm/latest/title')}\n \n \n {t('challenge/filterForm/search/title')}\n \n \n\n
    \n {activeTab === ACTIVE && (\n \n )}\n {activeTab === LATEST && (\n \n )}\n {activeTab === SEARCH && (\n \n )}\n
    \n\n
    \n \n \n
    \n \n );\n}\n\nexport default translate()(ChallengeFilter);\n","import React, { useCallback, useState } from 'react';\nimport { translate } from 'react-i18next';\nimport Button from '@bit/be-novative.kit.button';\nimport Popover from '../../../common/components/Popover';\nimport Icon from '../../../common/components/Icon';\nimport ChallengeFilter from '../ChallengeFilter';\nimport scss from './ChallengeSearchPopover.module.scss';\n\nChallengeSearchPopover.propTypes = {};\nfunction ChallengeSearchPopover({ selections, onSelect, t }) {\n const [isOpen, setIsOpen] = useState(false);\n\n const handleClose = useCallback(() => {\n setIsOpen(false);\n }, [setIsOpen]);\n const handleToggle = useCallback(() => {\n setIsOpen(!isOpen);\n }, [isOpen, setIsOpen]);\n\n return (\n }\n popoverModifiers={{ flip: { enabled: false } }} // @see https://popper.js.org/popper-documentation.html#modifiers..flip\n showFooterStripe={false}\n show={isOpen}\n onClose={handleClose}\n popoverClassName={scss.ChallengeSearchPopover}>\n \n \n );\n}\n\nexport default translate()(ChallengeSearchPopover);\n","import styled from 'styled-components';\n\nexport const FilterOption = styled.button`\n display: block;\n appearance: none;\n width: 100%;\n height: 1.75rem;\n padding: 0 0.9rem;\n border: none;\n background: none;\n font-size: 0.9rem;\n color: black;\n text-align: left;\n vertical-align: middle;\n transition: background 0.15s linear;\n\n &:hover {\n background: #eee;\n }\n`;\n","import React, { memo, useCallback, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport truncate from 'lodash/truncate';\nimport { compose } from 'redux';\nimport { translate } from 'react-i18next';\nimport { TransitionGroup } from 'react-transition-group';\nimport useOnClickOutside from 'use-onclickoutside';\nimport {\n getCategoryId,\n getCategoryName\n} from '../../../common/getters/categories';\nimport Button from '@bit/be-novative.kit.button';\nimport { DropdownContent } from '../../../common/components/Dropdown';\nimport Ellipsis from '../../../common/components/Ellipsis';\nimport FadeTransition from '../../../common/components/FadeTransition';\nimport Icon from '../../../common/components/Icon';\nimport { FilterOption } from './FilterOption';\nimport useFetchCategories from '../../../common/hooks/useFetchCategories';\nimport useCategory from '../../../common/hooks/useCategory';\n\nconst CATEG_NAME_MAX_LENGTH = 50;\n\nCategoryFilter.propTypes = {\n canEdit: PropTypes.bool,\n isLoading: PropTypes.bool,\n onSelect: PropTypes.func,\n t: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired\n};\nCategoryFilter.defaultProps = {\n onSelect: () => {}\n};\nfunction CategoryFilter({ canEdit, isLoading, onSelect, t, value }) {\n const ref = useRef(null);\n const choices = useFetchCategories({ showAllCategs: true });\n\n const activeCategory = useCategory(value);\n const [open, setOpen] = useState(false);\n\n useOnClickOutside(ref, () => setOpen(false));\n\n const handleDropdown = useCallback(\n isOpen => () => {\n setOpen(!isOpen);\n },\n []\n );\n\n const handleSelect = useCallback(\n value => {\n onSelect(value);\n setOpen(false);\n },\n [onSelect]\n );\n\n return (\n \n );\n}\n\nexport function renderOption(onSelect) {\n return category => {\n const categId = getCategoryId(category);\n const name = getCategoryName(category);\n\n return (\n onSelect(categId)}\n title={name}>\n {truncate(name, CATEG_NAME_MAX_LENGTH)}\n \n );\n };\n}\n\nexport default compose(\n translate(),\n memo\n)(CategoryFilter);\n","import React, { useCallback } from 'react';\nimport flow from 'lodash/flow';\nimport get from 'lodash/get';\nimport getFp from 'lodash/fp/get';\nimport includesFp from 'lodash/fp/includes';\nimport { translate } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport { conceptListFilterEnums, conceptListFilterKeys } from '../../constants';\nimport Checkbox from '@bit/be-novative.kit.checkbox';\nimport ChallengeSearchPopover from '../ChallengeSearchPopover';\nimport CategoryFilter from './CategoryFilter';\nimport useSetFilter from '../../hooks/conceptList/useSetFilter';\nimport useUnsetFilter from '../../hooks/conceptList/useUnsetFilter';\nimport useIsListLoading from '../../hooks/conceptList/useIsListLoading';\nimport { getConceptListFilters } from '../../selectors/conceptList';\nimport scss from './ConceptListToolbar.module.scss';\n\nconst {\n CATEGORY,\n CHALLENGE,\n CONCEPT_TYPE,\n INVOLVEMENT\n} = conceptListFilterKeys;\n\nconst {\n OWN_CONCEPTS,\n MY_CONTRIBUTIONS,\n QUICK_CONCEPTS\n} = conceptListFilterEnums;\n\nfunction FilterControls({ t }) {\n const activeFilters = useSelector(getConceptListFilters);\n const loading = useIsListLoading();\n const setFilter = useSetFilter();\n const unsetFilter = useUnsetFilter();\n\n const handleCategChange = useCallback(\n categId => {\n setFilter(CATEGORY, categId, { overwriteValue: true });\n },\n [setFilter]\n );\n\n const handleChallengeChange = useCallback(\n (challengeIds = []) => {\n setFilter(CHALLENGE, challengeIds, { overwriteValue: true });\n },\n [setFilter]\n );\n\n const handleCheckboxToggle = useCallback(\n event => {\n const { name, value, checked } = event.target;\n if (checked) {\n setFilter(name, value);\n } else {\n unsetFilter(name, value);\n }\n },\n [setFilter, unsetFilter]\n );\n\n const isFilterActive = useCallback(\n (key, value) => {\n return flow(\n getFp(key),\n includesFp(value)\n )(activeFilters);\n },\n [activeFilters]\n );\n\n return (\n \n \n {t('ideaConcepts/listPage/filter/ownConcepts')}\n \n \n {t('ideaConcepts/listPage/filter/contribution')}\n \n \n {t('ideaConcepts/listPage/filter/quickConcepts')}\n \n \n \n \n );\n}\n\nexport default translate()(FilterControls);\n","import React, { useCallback } from 'react';\nimport flow from 'lodash/flow';\nimport getFp from 'lodash/fp/get';\nimport sizeFp from 'lodash/fp/size';\nimport { useSelector } from 'react-redux';\nimport { translate } from 'react-i18next';\nimport { conceptListFilterKeys } from '../../constants';\nimport { getConceptListFilters } from '../../selectors/conceptList';\nimport useUnsetFilter from '../../hooks/conceptList/useUnsetFilter';\nimport Button from '@bit/be-novative.kit.button';\nimport Icon from '../../../common/components/Icon';\n\nconst { CHALLENGE } = conceptListFilterKeys;\n\nfunction FilterStatus({ t }) {\n const chosenChallengeCount = useSelector(\n flow(\n getConceptListFilters,\n getFp(CHALLENGE),\n sizeFp\n )\n );\n\n const unsetFilter = useUnsetFilter();\n const handleClearChallengeFilter = useCallback(() => {\n unsetFilter(CHALLENGE);\n }, [unsetFilter]);\n\n return (\n
    \n {chosenChallengeCount > 0 && (\n \n )}\n
    \n );\n}\n\nexport default translate()(FilterStatus);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { translate } from 'react-i18next';\nimport useCanReviewConcepts from '../../hooks/useCanReviewConcepts';\nimport { conceptEvalPage } from '../../paths';\nimport Button from '@bit/be-novative.kit.button';\nimport StageTabRow from './StageTabRow';\nimport FilterControls from './FilterControls';\nimport FilterStatus from './FilterStatus';\nimport scss from './ConceptListToolbar.module.scss';\n\nConceptListToolbar.propTypes = {\n hasContent: PropTypes.bool\n};\nfunction ConceptListToolbar({ hasContent, t }) {\n const showReviewButton = useCanReviewConcepts();\n const disableReview = !hasContent;\n\n return (\n <>\n
    \n \n {showReviewButton && (\n \n {t('ideaConcepts/listPage/reviewConceptsCTA')}\n \n )}\n
    \n
    \n \n
    \n
    \n \n
    \n \n );\n}\n\nexport default translate()(ConceptListToolbar);\n","import ConceptListToolbar from './ConceptListToolbar';\n\nexport default ConceptListToolbar;\n","import React, { useCallback } from 'react';\nimport size from 'lodash/size';\nimport { translate } from 'react-i18next';\nimport VisibilitySensor from 'react-visibility-sensor';\nimport { useSelector } from 'react-redux';\nimport useMountEffect from '../../../common/hooks/useMountEffect';\nimport {\n isAmdocsVariant,\n isCepheidVariant,\n isConnectHumanityVariant\n} from '../../../utils/variants';\nimport { getVisibleIdeaConcepts } from '../../selectors/conceptList';\nimport useListFetcher from '../../hooks/conceptList/useListFetcher';\nimport useIsListLoading from '../../hooks/conceptList/useIsListLoading';\nimport useSorting from './hooks/useSorting';\nimport Button from '@bit/be-novative.kit.button';\nimport Spinner from '@bit/be-novative.kit.spinner';\nimport Grid from '../../../common/components/Grid';\nimport ConceptTable from '../../containers/ConceptTable';\nimport CepheidConceptTable from '../../containers/ConceptTable/CepheidConceptTable';\nimport ConceptListToolbar from '../ConceptListToolbar';\nimport Placeholder from './Placeholder';\n\nconst Table =\n isCepheidVariant() || isAmdocsVariant() || isConnectHumanityVariant()\n ? CepheidConceptTable\n : ConceptTable;\n\nfunction ConceptList({ t }) {\n const loading = useIsListLoading();\n const concepts = useSelector(getVisibleIdeaConcepts);\n const hasContent = size(concepts) > 0;\n const fetchList = useListFetcher();\n\n const handleNextPage = useCallback(\n isEndOfPage => {\n if (isEndOfPage && hasContent && !loading) {\n fetchList();\n }\n },\n [hasContent, fetchList, loading]\n );\n\n useMountEffect(function fetchFirstPage() {\n if (!hasContent) {\n fetchList();\n }\n });\n\n const [sortBy, sortDirection, handleSortChange] = useSorting({\n onChange: fetchList\n });\n\n return (\n \n \n \n \n \n \n \n \n \n \n
    \n \n {loading && (\n
    \n \n
    \n )}\n {!hasContent && !loading && (\n \n \n \n \n \n \n \n )}\n {hasContent && !loading && (\n
    \n \n
    \n )}\n \n \n \n );\n}\n\nexport default translate()(ConceptList);\n","import React, { useCallback, useState } from 'react';\nimport get from 'lodash/get';\nimport produce from 'immer';\nimport { StickyGroup, Table } from './ConceptTable.styled';\nimport useTableConfig from './useTableConfig';\nimport RowGroup from './RowGroup';\nimport { ScrollSpyProvider } from './ScrollSpyProvider';\nimport TableBodyWithScroll from './TableBodyWithScroll';\n\nexport default function ConceptTable({\n concepts,\n sortDisabled,\n onSortUpdate,\n sortBy,\n sortDirection\n}) {\n const [leftStickyCols, bodyCols, rightStickyCols] = useTableConfig();\n const getWidthSum = cols =>\n cols.reduce((sum, col) => sum + parseInt(col.width), 0) + 'px';\n const totalLeftStickWidthPx = getWidthSum(leftStickyCols);\n const totalRightStickyWidthPx = getWidthSum(rightStickyCols);\n\n const [expandStates, setExpandStates] = useState({});\n const getExpandState = id => expandStates[id];\n const handleExpandClick = useCallback(\n function handleExpandClick(id) {\n const rowState = expandStates[id];\n if (rowState === 'open') {\n setExpandStates(state => ({ ...state, [id]: 'closed' }));\n } else if (rowState === 'closed' || !rowState) {\n setExpandStates(state => ({ ...state, [id]: 'open' }));\n }\n },\n [expandStates]\n );\n\n const [cellSizes, setCellSizes] = useState({});\n const getCellSize = id => {\n const size = get(cellSizes, id);\n return {\n width: size ? size.width + 'px' : null,\n height: size ? size.height + 'px' : null\n };\n };\n const handleCellSizeChange = useCallback((id, width, height) => {\n setCellSizes(\n produce(sizes => {\n sizes[id] = { width, height };\n })\n );\n }, []);\n\n return (\n \n \n {leftStickyCols.length > 0 && (\n \n \n \n )}\n\n \n \n \n\n {rightStickyCols.length > 0 && (\n \n \n \n )}\n
    \n
    \n );\n}\n","import { useCallback } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { changeListSortMetrics } from '../../../actions';\nimport { getSortBy, getSortDirection } from '../../../../common/selectors/meta';\nimport { getListPageStore } from '../../../selectors/conceptList';\n\nexport default function useSorting({ onChange }) {\n const listStore = useSelector(getListPageStore);\n const sortBy = getSortBy(listStore);\n const sortDirection = getSortDirection(listStore);\n\n const dispatch = useDispatch();\n const updateSortFn = useCallback(\n sortConfig => {\n onChange({ query: { ...sortConfig, start: 0 }, flushList: true });\n dispatch(changeListSortMetrics(sortConfig));\n },\n [dispatch, onChange]\n );\n\n return [sortBy, sortDirection, updateSortFn];\n}\n","import Button from '@bit/be-novative.kit.button';\nimport formControl from '@bit/be-novative.kit.form-control';\nimport { FORM_ERROR } from 'final-form';\nimport React, { useCallback } from 'react';\nimport { Field, Form } from 'react-final-form';\nimport { translate } from 'react-i18next';\nimport { compose } from 'redux';\nimport {\n htmlFromState,\n parseEditorState\n} from '@bit/be-novative.kit.richtext-utils';\nimport Callout from '../../../common/components/Callout';\nimport Panel from '../../../common/components/Panel';\nimport RichText from '../../../common/components/RichText';\nimport withModal from '../../../common/containers/withModal';\nimport translateApiErrorMessage from '../../../utils/translateApiErrorMessage';\n\nconst RichTextFormControl = formControl(RichText);\n\nfunction ConceptReviewerCommentModal({\n description,\n initialValue = '',\n isGroupComment,\n onClose,\n onSubmit,\n t,\n title\n}) {\n const handleSubmit = useCallback(\n async ({ text }) => {\n try {\n await onSubmit(htmlFromState(text), isGroupComment);\n onClose();\n } catch (error) {\n return { [FORM_ERROR]: translateApiErrorMessage(t, error.code) };\n }\n },\n [isGroupComment, onSubmit, onClose, t]\n );\n\n return (\n \n {description &&

    {description}

    }\n \n {({ form, handleSubmit }) => {\n const { pristine, submitting, submitError } = form.getState();\n return (\n
    \n \n \n \n {t('ideaConcepts/subpage/describeForm/submitCTA')}\n \n \n {submitError && (\n \n {submitError}\n \n )}\n \n );\n }}\n \n
    \n );\n}\n\nexport default compose(\n withModal(),\n translate()\n)(ConceptReviewerCommentModal);\n","import React from 'react';\nimport { translate } from 'react-i18next';\nimport { compose } from 'redux';\nimport styled from 'styled-components';\nimport { darkGrayScale } from '../../../common/styled/colors.styled';\nimport Icon from '../../../common/components/Icon';\nimport Panel from '../../../common/components/Panel';\nimport withModal from '../../../common/containers/withModal';\nimport Avatar from '../../../common/components/Avatar';\nimport { getUserAvatar } from '../../../common/getters/users';\nimport localiseUserName from '../../../utils/localiseUserName';\nimport LinkifiedSafeHtml from '../../../common/components/LinkifiedSafeHtml/LinkifiedSafeHtml';\nimport { Size } from '../../../constants';\n\nconst Attrib = styled.span`\n margin-right: 10px;\n line-height: 1.25em;\n color: ${darkGrayScale[1]};\n text-transform: uppercase;\n`;\n\nfunction CommentDisplayModal({ comment, authorId, t }) {\n return (\n \n

    \n \n {t('ideaConcept/evaluation/resultDisplay/evaluators/listHeader')}:\n \n {authorId ? (\n <>\n \n {localiseUserName(t, comment.user)}\n \n ) : (\n <>\n \n Review Committee\n \n )}\n

    \n

    \n {t('ideaConcept/evaluation/comment/lastMod')}:\n {new Date(comment.createdAt).toLocaleString()}\n

    \n
    \n \n
    \n \n );\n}\n\nexport default compose(\n withModal(),\n translate()\n)(CommentDisplayModal);\n","import React, { useCallback } from 'react';\nimport { translate } from 'react-i18next';\nimport { useDispatch } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport FeatureFlag from '../../../featureFlags/constants';\nimport { getPlatformName } from '../../../utils/platform';\nimport { inlineHelpViewed } from '../../../common/actions/metrics';\nimport { openConceptEditor, openQuickConceptFormMetrics } from '../../actions';\nimport ModalRoot from '../../../common/containers/ModalRoot';\nimport SideOverlay from '../../../common/containers/SideOverlay';\nimport ConceptPreview from '../../containers/ConceptPreview';\nimport QuickConceptForm, {\n QuickConceptFormAmdocs\n} from '../../containers/QuickConceptForm';\nimport Button from '@bit/be-novative.kit.button';\nimport BranchByFeature from '../../../common/components/BranchByFeature';\nimport FullScreen from '../../../common/components/FullScreen';\nimport Grid from '../../../common/components/Grid';\nimport Heading from '../../../common/components/Heading';\nimport HelpIcon from '../../../common/components/HelpIcon';\nimport GlobalPageHeader from '../../../common/components/GlobalPageHeader';\nimport Paragraph from '../../../common/components/Paragraph';\nimport ConceptList from '../../components/ConceptList';\nimport ConceptTeamEditor from '../../components/ConceptTeamEditor';\nimport {\n DESCRIBE_IDEA_CONCEPT_FORM,\n CONCEPT_PREVIEW,\n TEAM_EDITOR,\n IdeaConceptImplementationStatus,\n CONCEPT_COMMENT_EDITOR,\n CONCEPT_COMMENT_DISPLAY\n} from '../../constants';\nimport { conceptListPage } from '../../paths';\nimport ConceptReviewerCommentModal from '../../containers/ConceptTable/ConceptReviewerCommentModal';\nimport CommentDisplayModal from '../../containers/ConceptTable/CommentDisplayModal';\nimport './IdeaConceptListPage.css';\nimport { isAmdocsVariant } from '../../../utils/variants';\n\nconst HELP_ID = 'ideaConcepts__concept_definition';\n\nfunction IdeaConceptListPage({ t }) {\n const dispatch = useDispatch();\n const history = useHistory();\n const onInfoClick = useCallback(() => dispatch(inlineHelpViewed(HELP_ID)), [\n dispatch\n ]);\n const handleConceptSubmitSuccess = useCallback(\n function handleConceptSubmitSuccess() {\n history.push(conceptListPage(IdeaConceptImplementationStatus.ACTIVE));\n },\n [history]\n );\n const openNewConceptModal = useCallback(() => {\n dispatch(\n openConceptEditor(null, {\n formTitle: t('ideaConcepts/create/form/title'),\n formSubmitLabel: t('ideaConcepts/create/form/submitCTA'),\n onSubmit: handleConceptSubmitSuccess\n })\n );\n dispatch(openQuickConceptFormMetrics());\n }, [dispatch, t, handleConceptSubmitSuccess]);\n\n return (\n \n \n \n {t('ideaConcepts/listPage/createConceptCTA', {\n context: getPlatformName()\n })}\n \n \n }\n />\n\n \n \n \n \n {t('ideaConcepts/listPage/title', { context: getPlatformName() })}\n \n \n \n {t('ideaConcepts/tips/whatIsIC/title')}\n \n \n \n {t('ideaConcepts/listPage/description')}\n \n \n \n \n \n (\n \n \n \n ),\n [CONCEPT_COMMENT_EDITOR]: ConceptReviewerCommentModal,\n [CONCEPT_COMMENT_DISPLAY]: CommentDisplayModal,\n [DESCRIBE_IDEA_CONCEPT_FORM]: isAmdocsVariant()\n ? QuickConceptFormAmdocs\n : QuickConceptForm,\n [TEAM_EDITOR]: ConceptTeamEditor\n }}\n />\n \n );\n}\n\nexport default translate()(IdeaConceptListPage);\n","import includes from 'lodash/includes';\nimport isArray from 'lodash/isArray';\nimport findKey from 'lodash/findKey';\nimport { isCepheidVariant } from '../../../../utils/variants';\nimport {\n conceptListStageFilterIds,\n conceptListStageFilterIdsCepheid\n} from '../../../constants';\n\nconst stageFilters = isCepheidVariant()\n ? conceptListStageFilterIdsCepheid\n : conceptListStageFilterIds;\n\nexport default function findFilterPathParam(filterId) {\n return findKey(stageFilters, conceptStatus => {\n if (isArray(conceptStatus)) {\n return includes(conceptStatus, filterId);\n } else {\n return conceptStatus === filterId;\n }\n });\n}\n","import React, { lazy } from 'react';\nimport get from 'lodash/get';\nimport { Route, Switch, Redirect, useRouteMatch } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\nimport {\n conceptListPage,\n CONCEPT_SUBPAGE,\n CONCEPT_LIST,\n CONCEPT_EVALUATION\n} from '../../paths';\nimport { conceptListFilterKeys } from '../../constants';\nimport { CONCEPT_LIST_DEFAULT_STAGE_FILTER } from '../../config';\nimport useCanReviewConcepts from '../../hooks/useCanReviewConcepts';\nimport { getConceptListFilters } from '../../selectors/conceptList';\nimport LazyComponent from '../../../common/components/LazyComponent';\nimport IdeaConceptListPage from '../IdeaConceptListPage';\nimport findFilterPathParam from './util/findFilterPathParam';\n\nconst Subpage = lazy(() => import('../IdeaConceptPage'));\nconst EvalPage = lazy(() => import('../ConceptReviewPage'));\n\nfunction ProtectedEvalPage({ allowed, redirectTo }) {\n return allowed ? (\n \n \n \n ) : (\n \n );\n}\n\nfunction IdeaConceptRoot() {\n const filters = useSelector(getConceptListFilters);\n const lastFilterId = get(\n filters,\n conceptListFilterKeys.STAGE,\n CONCEPT_LIST_DEFAULT_STAGE_FILTER\n );\n const filterId = Array.isArray(lastFilterId) ? lastFilterId[0] : lastFilterId;\n const filterPathParam = findFilterPathParam(filterId);\n const redirectTarget = conceptListPage(filterPathParam);\n\n const allowConceptReview = useCanReviewConcepts();\n const { path } = useRouteMatch();\n\n return (\n \n \n \n \n\n \n \n \n \n \n\n \n \n \n\n \n \n );\n}\n\nexport default IdeaConceptRoot;\n","import React, { lazy } from 'react';\nimport { Redirect, Route, Switch, useRouteMatch } from 'react-router-dom';\nimport Spinner from '@bit/be-novative.kit.spinner';\nimport LazyComponent from '../../../common/components/LazyComponent';\nimport { conceptListPage } from '../../../ideaConcept/paths';\nimport getAllowedCanvasBackgroundType from '../../utils/getAllowedCanvasBackgroundType';\n\nconst ConceptCanvasPage = lazy(() => import('../ConceptCanvasPage'));\nconst ConceptMapCanvasPage = lazy(() => import('../ConceptMapCanvasPage'));\n\nfunction ConceptCanvasRoot() {\n const { path } = useRouteMatch();\n const showCanvas = !!getAllowedCanvasBackgroundType();\n\n return (\n \n {showCanvas ? (\n <>\n \n }>\n \n \n \n \n }>\n \n \n \n \n ) : (\n \n )}\n \n );\n}\n\nexport default ConceptCanvasRoot;\n","import get from 'lodash/get';\nimport { MANDATORY_CONSENT_KEYS } from '../../constants';\n\n/**\n * Checks if mandatory fields have not been accepted in the user's consent model\n * @param {object} consentModel - A map of concept booleans\n * @return {boolean} `true` if any of the required consent fields is missing, `false` if all mandatory fields are accepted.\n */\n\nexport default function isConsentRequired(consentModel) {\n return MANDATORY_CONSENT_KEYS.some(key => get(consentModel, key) == false); // eslint-disable-line eqeqeq\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport Grid from '../Grid';\nimport Icon from '../Icon';\n\nconst Wrapper = styled.div`\n position: fixed;\n z-index: 100;\n top: 150px;\n left: 0;\n width: 100%;\n`;\n\nconst Banner = styled.aside`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n padding: 1rem 0.5rem;\n border-radius: 5px;\n background: ${({ theme }) => theme.bodyBg};\n box-shadow: 0 0 8px 8px rgba(0, 0, 0, 0.1);\n`;\n\nconst icons = {\n info: 'info2',\n warning: 'caution'\n};\n\nfunction AnnouncementBanner({ action = null, text, type }) {\n return (\n \n \n \n \n \n \n
    {text}
    \n
    {action}
    \n
    \n
    \n
    \n
    \n
    \n );\n}\n\nexport default AnnouncementBanner;\n","import React, { useCallback, useEffect, useState } from 'react';\nimport LocalStorage from 'store2';\nimport moment from 'moment';\nimport { translate, Trans } from 'react-i18next';\nimport AnnouncementBanner from '../AnnouncementBanner/AnnouncementBanner';\nimport Button from '@bit/be-novative.kit.button';\nimport Icon from '../Icon';\n\nconst STORE_KEY = 'ie_notice';\n\nfunction IENotice({ t }) {\n const [show, setShow] = useState(false);\n useEffect(function showIfDismissedLongEnough() {\n const lastDismissTime = LocalStorage.get(STORE_KEY);\n if (\n !lastDismissTime ||\n (lastDismissTime && moment().diff(lastDismissTime, 'weeks') > 2)\n ) {\n setShow(true);\n }\n }, []);\n\n const handleDismiss = useCallback(function handleDismiss() {\n setShow(false);\n LocalStorage.set(STORE_KEY, Date.now(), true);\n }, []);\n\n return show ? (\n \n text\n \n link\n \n \n }\n action={\n \n }\n />\n ) : null;\n}\n\nexport default translate()(IENotice);\n","import React, { Component } from 'react';\nimport { Trans } from 'react-i18next';\nimport { OnboardingTips } from '../../../constants';\nimport { updateOnboarding } from '../../actions';\nimport { ownProfileSelector } from '../../../profile/state/profile';\nimport withModal from '../withModal';\nimport Button from '@bit/be-novative.kit.button';\nimport Embed from '../../components/Embed';\nimport Grid from '../../components/Grid';\nimport Heading from '../../components/Heading';\nimport Paragraph from '../../components/Paragraph';\nimport Panel from '../../components/Panel';\n\nclass WelcomeModal extends Component {\n componentWillUnmount() {\n this.props.onViewed();\n }\n\n render() {\n const { t, profile, onClose } = this.props;\n return (\n \n \n \n {t('common/Welcome {{firstName}}', profile)}\n \n \n

    We are very happy to have you on board!

    \n

    \n With Be-novative you can create challenges, ideate on various\n topics, vote on the best suggestions, and source creative\n ideas in minutes. Efficiently tackle complex tasks, just like\n thousands of others globally.\n

    \n

    \n To help you learn the ropes, we created a short guided tour\n for you.\n

    \n
    \n
    \n \n
    \n \n \n {t('common/Psst, before you start, watch our short video.')}\n \n \n \n \n \n
    \n
    \n );\n }\n}\n\nconst mapStateToProps = state => ({\n profile: ownProfileSelector(state)\n});\n\nconst mapDispatchToProps = {\n onViewed: () => updateOnboarding(OnboardingTips.WELCOME)\n};\n\nexport default withModal(mapStateToProps, mapDispatchToProps)(WelcomeModal);\n","import WelcomeModal from './WelcomeModal';\n\nexport default WelcomeModal;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport get from 'lodash/get';\nimport { connect } from 'react-redux';\nimport { Switch, Route, Redirect } from 'react-router-dom';\nimport paths from '../../paths';\nimport { openModal } from '../actions/modal';\nimport { maybeOpenWelcomeModal } from '../actions/profile';\nimport { getRedirectTarget } from '../selectors/router';\nimport { asyncComponent, requireAdminRole } from '.';\nimport FeatureFlagProvider from '../../featureFlags/components/FeatureFlagProvider';\nimport { CONCEPT_ROOT } from '../../ideaConcept/paths';\nimport IdeaConceptRoot from '../../ideaConcept/pages/IdeaConceptRoot';\nimport ConceptCanvasRoot from '../../ideaConceptCanvas/pages/ConceptCanvasRoot';\nimport { CONCEPT_CANVAS_ROOT } from '../../ideaConceptCanvas/paths';\nimport { getUserConsent } from '../../profile/getters';\nimport {\n fetchOwnProfile,\n ownProfileSelector\n} from '../../profile/state/profile';\nimport isConsentRequired from '../../profile/utils/isConsentRequired';\nimport { fetchPlatformData } from '../state/platform';\nimport { fetchCategories } from '../state/categories';\nimport userAgent from '../../utils/userAgent';\nimport IENotice from '../components/IENotice';\nimport LegalUpdateModal, {\n LEGAL_UPDATE_MODAL\n} from '../components/LegalUpdateModal';\nimport ModalRoot from './ModalRoot';\nimport Sidenav from './Sidenav';\nimport WelcomeModal from './WelcomeModal';\n\nexport class Main extends Component {\n static propTypes = {\n injectModuleReducers: PropTypes.func.isRequired,\n redirectTarget: PropTypes.string\n };\n\n async componentDidMount() {\n const {\n fetchPlatform,\n fetchProfile,\n fetchCategories,\n maybeOpenWelcomeModal,\n shouldFetchProfile\n } = this.props;\n maybeOpenWelcomeModal();\n fetchPlatform();\n fetchCategories();\n if (shouldFetchProfile) {\n fetchProfile();\n }\n }\n\n componentWillReceiveProps({ consentRequired, openModal }) {\n if (consentRequired) {\n openModal(LEGAL_UPDATE_MODAL);\n }\n }\n\n componentWillUnmount() {\n clearTimeout(this.timer);\n }\n\n toggleSpinner = () => {\n this.setState({ isProfileLoadingSlowly: true });\n };\n\n checkUserConsent = consentData => {\n const consent = get(consentData, 'data.userConsent', {});\n if (isConsentRequired(consent)) {\n this.props.openModal(LEGAL_UPDATE_MODAL);\n }\n };\n\n FeedPage = asyncComponent(() =>\n import(/* webpackChunkName: \"feed\" */ '../../feed')\n .then(this.props.injectModuleReducers)\n .then(m => m.default)\n );\n\n AdminPage = requireAdminRole(\n asyncComponent(() =>\n import(/* webpackChunkName: \"admin\" */ '../../admin')\n .then(this.props.injectModuleReducers)\n .then(m => m.default)\n )\n );\n\n ProfilePage = asyncComponent(() =>\n import(/* webpackChunkName: \"profile\" */ '../../profile')\n .then(this.props.injectModuleReducers)\n .then(m => m.default)\n );\n\n IdeationPage = asyncComponent(() =>\n import(/* webpackChunkName: \"ideation\" */ '../../ideation')\n .then(this.props.injectModuleReducers)\n .then(m => m.default)\n );\n\n EvaluationPage = asyncComponent(() =>\n import(/* webpackChunkName: \"evaluation\" */ '../../evaluation')\n .then(this.props.injectModuleReducers)\n .then(m => m.default)\n );\n\n ChallengeResultsPage = asyncComponent(() => {\n return import(\n /* webpackChunkName: \"challenge-results\" */ '../../challengeResults'\n )\n .then(this.props.injectModuleReducers)\n .then(m => m.default);\n });\n\n ChallengeCreationPage = asyncComponent(() => {\n return Promise.all([\n import(\n /* webpackChunkName: \"challenge-creation\" */ '../../challengeCreation'\n ),\n import(/* webpackChunkName: \"challenge\" */ '../../challenge')\n ]).then(([challengeCreationModule]) => challengeCreationModule.default);\n });\n\n DuePaymentsPage = asyncComponent(() =>\n import(/* webpackChunkName: \"due-payments\" */ '../../duePayments')\n .then(this.props.injectModuleReducers)\n .then(m => m.default)\n );\n\n SuggestionsPage = asyncComponent(() =>\n import(/* webpackChunkName: \"suggestions\" */ '../../suggestions')\n .then(this.props.injectModuleReducers)\n .then(m => m.default)\n );\n\n render() {\n const { userId } = this.props;\n\n return (\n \n \n \n \n \n \n \n }\n />\n \n \n \n \n (\n \n )}\n />\n \n \n {false && (\n \n )}\n \n \n \n \n {userAgent.isIE() ? : null}\n \n );\n }\n}\n\nconst mapStateToProps = state => {\n const profile = ownProfileSelector(state);\n const consentModel = getUserConsent(profile);\n return {\n consentRequired: isConsentRequired(consentModel),\n redirectTarget: getRedirectTarget(state) || paths.feed(),\n userId: get(profile, 'userId')\n };\n};\n\nconst mapDispatchToProps = dispatch => ({\n fetchCategories: () => dispatch(fetchCategories()),\n fetchPlatform: () => dispatch(fetchPlatformData()),\n fetchProfile: () => dispatch(fetchOwnProfile()),\n maybeOpenWelcomeModal: () => dispatch(maybeOpenWelcomeModal()),\n openModal: () =>\n dispatch(\n openModal({\n modalType: LEGAL_UPDATE_MODAL,\n modalProps: {\n isCloseButtonShown: false,\n itsATrap: true,\n rounded: true\n }\n })\n )\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(Main);\n","import TokenUpdaterPage from './TokenUpdaterPage';\n\nexport default TokenUpdaterPage;\n","import { useHistory, useParams } from 'react-router-dom';\nimport { setToken } from '../../../authentication/services/token.service';\nimport useMountEffect from '../../hooks/useMountEffect';\nimport paths from '../../../paths';\n\nexport default function TokenUpdaterPage() {\n const history = useHistory();\n const { token } = useParams();\n\n useMountEffect(function storeNewToken() {\n setToken(token);\n history.push(paths.feed());\n });\n\n return null;\n}\n","import React, { useCallback } from 'react';\nimport { translate } from 'react-i18next';\nimport Intercom from 'react-intercom';\nimport Button from '@bit/be-novative.kit.button';\nimport FullScreen from '../../components/FullScreen';\nimport NonIdealState from '../../components/NonIdealState';\n\nfunction BootstrapError({ t }) {\n const handleReload = useCallback(() => {\n window && window.location.reload();\n }, []);\n\n return (\n \n \n {t('common/bootstrapError/CTA')}\n \n }\n />\n \n \n );\n}\n\nexport default translate()(BootstrapError);\n","import React, { Component } from 'react';\nimport flow from 'lodash/flow';\nimport getFp from 'lodash/fp/get';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Switch, Route, withRouter } from 'react-router-dom';\nimport PaymentStartLandingPage from '../../platformCreation/pages/PaymentStartLandingPage';\nimport asyncComponent from './asyncComponent';\nimport ErrorPage from './ErrorPage';\nimport Main from './Main';\nimport TokenUpdaterPage from './TokenUpdaterPage';\nimport {\n fetchOwnProfile,\n getProfileStore,\n ownProfileSelector\n} from '../../profile/state/profile';\nimport { AsyncStatus } from '../../constants';\nimport BootstrapSpinner from '../components/BootstrapSpinner';\nimport BootstrapError from '../pages/BootstrapError';\nimport { useEffect } from 'react';\nimport FeatureFlag from '../../featureFlags/constants';\nimport { AuthContext } from '../../authentication/components/AuthProvider';\nimport { getFeatureFlagAsync } from '../../featureFlags/client';\nimport Alerts from '../components/Alerts';\nimport CookieConsent from '../components/CookieConsent';\nimport IntercomClient from '../components/IntercomClient';\nimport authService from '../../authentication/services/auth.service';\n\nclass App extends Component {\n static propTypes = {\n injectModuleReducers: PropTypes.func.isRequired\n };\n\n static contextType = AuthContext;\n\n state = { isProfileLoadingSlowly: false, shouldUseNewAuth: false };\n\n AuthenticationPage = asyncComponent(() =>\n import(\n /* webpackChunkName: \"authentication\" */ '../../authentication'\n ).then(m => m.default)\n );\n\n MagiclinkPage = asyncComponent(() =>\n import(/* webpackChunkName: \"magiclink\" */ '../../magiclink').then(\n magiclinkModule => magiclinkModule.MagiclinkPage\n )\n );\n\n RegistrationConfirmationPage = asyncComponent(() =>\n import(\n /* webpackChunkName: \"registration-confirmation\" */ '../../confirmation'\n ).then(confirmationModule => confirmationModule.ConfirmationPage)\n );\n\n InvitationPage = asyncComponent(() =>\n import(/* webpackChunkName: \"invitation\" */ '../../invitation').then(\n invitationModule => invitationModule.InvitationPage\n )\n );\n\n PlatformCreationPage = asyncComponent(() =>\n import(\n /* webpackChunkName: \"team-creation\" */ '../../platformCreation'\n ).then(m => m.default)\n );\n\n renderAnonymousRoutes = () => {\n return (\n \n \n \n \n \n );\n };\n\n renderAuthenticatedRoutes = props => {\n const { injectModuleReducers } = this.props;\n return (\n \n );\n };\n\n async componentDidMount() {\n const { profileState, fetchOwnProfile } = this.props;\n const shouldUseNewAuth = await getFeatureFlagAsync(FeatureFlag.useNewAuth);\n\n this.setState({ shouldUseNewAuth });\n\n if (shouldUseNewAuth && profileState === AsyncStatus.Idle) {\n fetchOwnProfile();\n this.timer = setTimeout(\n () => this.setState({ isProfileLoadingSlowly: true }),\n 500\n );\n }\n }\n\n componentWillReceiveProps({ profileState }) {\n if (\n profileState === AsyncStatus.Succeeded ||\n profileState === AsyncStatus.Failed\n ) {\n clearTimeout(this.timer);\n }\n }\n\n render() {\n const { alerts, profileState } = this.props;\n const { shouldUseNewAuth } = this.state;\n\n if (\n shouldUseNewAuth &&\n profileState === AsyncStatus.Loading &&\n this.state.isProfileLoadingSlowly\n ) {\n return ;\n } else if (shouldUseNewAuth && profileState === AsyncStatus.Failed) {\n return ;\n }\n\n return (\n
    \n \n \n \n \n \n \n \n {shouldUseNewAuth ? this.renderNewAuth() : this.renderLegacyAuth()}\n \n \n \n
    \n );\n }\n\n renderLegacyAuth = () => {\n return this.context.loggedIn ? (\n \n ) : (\n \n );\n };\n\n renderNewAuth = () => {\n const { profileState, hasProfile } = this.props;\n return profileState === AsyncStatus.Succeeded ? (\n <>\n {hasProfile ? (\n \n ) : (\n \n )}\n \n ) : null;\n };\n}\n\nfunction RedirectToAuth() {\n useEffect(() => {\n authService.loginWithService();\n }, []);\n return null;\n}\n\nfunction mapStateToProps(state) {\n return {\n alerts: state.alerts,\n profileState: flow(\n getProfileStore,\n getFp('status')\n )(state),\n hasProfile: flow(\n ownProfileSelector,\n getFp('userId'),\n Boolean\n )(state)\n };\n}\n\nconst mapDispatchToProps = { fetchOwnProfile };\n\nexport { App };\nexport default withRouter(\n connect(\n mapStateToProps,\n mapDispatchToProps\n )(App)\n);\n","import React from 'react';\nimport { Router } from 'react-router-dom';\nimport { routeChange } from './common/actions';\nimport { injectAsyncReducer } from './store';\nimport history from './history';\nimport App from './common/containers/App';\n\nexport default function configureRoutes(store) {\n function injectModuleReducers(mod) {\n const reducers = mod.reducers || {};\n Object.keys(reducers).map(key =>\n injectAsyncReducer(store, key, reducers[key])\n );\n return mod;\n }\n\n store.dispatch(routeChange(window.location));\n\n let prevLocation = {};\n history.listen(location => {\n if (location.pathname !== prevLocation.pathname) {\n store.dispatch(routeChange(location));\n prevLocation = location;\n }\n });\n\n return (\n \n \n \n );\n}\n","import { IDENTITY_API, SEARCH_API, VOYAGER_API } from '../constants';\n\nconst API_PATH = {\n [VOYAGER_API]: 'api',\n [IDENTITY_API]: 'api',\n API: 'api',\n [SEARCH_API]: 'api'\n};\n\nexport default function getApiSymbolPath(baseUrl, apiSymbol) {\n return `${baseUrl}/${API_PATH[apiSymbol]}`;\n}\n","import { ConnectedRouter } from 'connected-react-router';\nimport React from 'react';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { I18nextProvider } from 'react-i18next';\nimport { Provider } from 'react-redux';\nimport { ThemeProvider } from 'styled-components';\nimport AuthProvider from './authentication/components/AuthProvider';\nimport Alerts from './common/components/Alerts';\nimport CookieConsent from './common/components/CookieConsent';\nimport IntercomClient from './common/components/IntercomClient';\nimport { lightTheme } from './common/styled/colors.styled';\nimport history from './history';\n\nexport default function App({ i18n, store, router }) {\n return (\n \n \n \n \n \n \n {router}\n \n \n \n \n \n \n \n \n \n );\n}\n","import isEmpty from 'lodash/isEmpty';\nimport { getTokenData } from '../authentication/services/token.service';\nimport initSentry from './errorLogging/init';\nimport initAppInsights from './monitoring/init';\nimport setUserContext from './setUserContext';\n\n/**\n * Initialise Sentry and Azure App Insights telemetry. If the user is logged in, the user context is also set\n */\n\nexport default function initTelemetry() {\n initSentry();\n initAppInsights();\n\n const tokenData = getTokenData();\n const hasContext = !isEmpty(tokenData);\n\n if (hasContext) {\n setUserContext(tokenData.userId, tokenData.email);\n }\n}\n","import * as Sentry from '@sentry/browser';\nimport { BLACKLISTED_ERRORS, BLACKLISTED_URLS } from './constants';\nimport { isInternal, isLocalhost } from '../../utils/platform';\n\nexport default function initSentry() {\n if (!isLocalhost()) {\n const sentryEnv =\n process.env.NODE_ENV === 'development' || isInternal()\n ? 'development'\n : 'production';\n\n Sentry.init({\n dsn: process.env.REACT_APP_SENTRY_DSN,\n release: `hummingbird@${process.env.REACT_APP_VERSION}`,\n environment: sentryEnv,\n denyUrls: BLACKLISTED_URLS,\n ignoreErrors: BLACKLISTED_ERRORS\n });\n }\n}\n","import { AZURE_ROLE_NAME } from './constants';\nimport appInsights from '.';\n\nexport default function init() {\n appInsights.loadAppInsights();\n appInsights.addTelemetryInitializer(envelope => {\n envelope.tags['ai.cloud.role'] = AZURE_ROLE_NAME;\n });\n // Manually call trackPageView to establish the current user/session/pageview\n appInsights.trackPageView();\n}\n","import 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\nimport './index.css';\nimport './polyfills/Selection.prototype.addRange';\nimport './polyfills/String.prototype.startsWith';\nimport './polyfills/String.prototype.padStart';\nimport './polyfills/String.prototype.padEnd';\nimport 'dom4';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { I18nextProvider } from 'react-i18next';\nimport { enableMapSet, enableES5 } from 'immer';\nimport bootstrapApi from './api/bootstrap';\nimport getApiUrl from './api/utils/getApiUrl';\nimport configureStore from './store';\nimport configureI18n from './i18n';\nimport configureRoutes from './routes';\nimport { getCurrentLanguage } from './common/selectors/language';\nimport { changeLanguage } from './common/actions';\nimport { getPreferredLanguage } from './utils/storage';\nimport BootstrapError from './common/pages/BootstrapError';\nimport getApiSymbolPath from './api/utils/getApiSymbolPath';\nimport initTelemetry from './telemetry/init';\nimport { isIE } from './utils/userAgent';\nimport App from './App';\n\n/**\n|--------------------------------------------------\n| Init Sentry and Azure App Insights\n|--------------------------------------------------\n*/\n\ninitTelemetry();\n\n/**\n|--------------------------------------------------\n| Opt-in to Immer ES6 features + IE11 support\n|--------------------------------------------------\n*/\n\nif (isIE()) {\n enableES5();\n}\nenableMapSet();\n\n/**\n|--------------------------------------------------\n| Get API config and render app\n|--------------------------------------------------\n*/\n\nbootstrapApi()\n .then(function renderAfterBootstrap({ region }) {\n const apiBaseURL = getApiUrl(region);\n const urlGetter = apiSymbol => getApiSymbolPath(apiBaseURL, apiSymbol);\n\n const store = configureStore({ urlGetter });\n\n const currentLanguage = getCurrentLanguage(store.getState());\n const onLocaleReady = () => store.dispatch(changeLanguage(currentLanguage));\n const i18n = configureI18n(onLocaleReady);\n\n const router = configureRoutes(store);\n\n ReactDOM.render(\n ,\n document.getElementById('root')\n );\n })\n .catch(function catchAfterBootstrap(error) {\n const currentLanguage = getPreferredLanguage() || 'en';\n const i18n = configureI18n();\n\n i18n.changeLanguage(currentLanguage);\n\n ReactDOM.render(\n \n \n ,\n document.getElementById('root')\n );\n });\n","export { default } from './client';\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport cn from 'classnames';\nimport './Backdrop.css';\n\nexport const backdropClassNames = {\n base: 'backdrop',\n light: 'backdrop--light',\n dark: 'backdrop--dark',\n brainstorming: 'backdrop--brainstorming-preview'\n};\n\nfunction Backdrop({\n children,\n className,\n onClick,\n type = 'dark',\n visible = false\n}) {\n const classes = cn(\n backdropClassNames.base,\n backdropClassNames[type],\n className,\n {\n [`${backdropClassNames.base}--hidden`]: !visible\n }\n );\n\n return (\n
    \n {children}\n
    \n );\n}\n\nBackdrop.propTypes = {\n onClick: PropTypes.func,\n type: PropTypes.oneOf(['dark', 'light', 'brainstorming']),\n visible: PropTypes.bool\n};\n\nexport default Backdrop;\n","import flow from 'lodash/flow';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport { stringify } from 'qs';\nimport client from '../../api';\nimport { CommonException } from '../../api/constants';\nimport { getApiResponseData } from '../../api/utils/apiResponse';\nimport logRequestFailure from '../../api/utils/logRequestFailure';\nimport addBreadcrumb, { Severity } from '../../telemetry/addBreadcrumb';\nimport { mapEvaluationModelToPayload } from '../utils/conceptEvaluation';\nimport validateConceptFilterQuery from '../utils/validateConceptFilterQuery';\n\nfunction getCurrentConcept(payload) {\n return get(payload, 'ideaConcept');\n}\n\n/**\n * Initialises a concept review session by fetching the first item from the API.\n * @param {Object} query - Query string for filtering concepts to be reviewed\n * @returns {Promise}\n */\nasync function initSession(query) {\n addBreadcrumb('Fetching initial data for concept review session...', {\n level: Severity.Info,\n category: 'concept-review',\n data: query\n });\n\n try {\n validateConceptFilterQuery(query);\n } catch (error) {\n addBreadcrumb(error, {\n category: 'concept-review',\n data: query\n });\n throw new Error(CommonException.BadRequest);\n }\n\n try {\n const res = await client.get(\n `/evaluations/ideaconcept?${stringify(query, { arrayFormat: 'repeat' })}`\n );\n return flow(\n getApiResponseData,\n getCurrentConcept\n )(res);\n } catch (error) {\n logRequestFailure(\n error,\n 'Could not fetch first concept for review',\n 'concept-review'\n );\n throw error;\n }\n}\n\n/**\n * Submits review scores for an idea concept, then returns the next concept for review.\n * @param {string} ideaConceptId ID of the reviewed concept\n * @param {Object} query The query used for fetching the next concept for review\n * @param {IdeaConceptEvaluationScoreMap} review The submitted scores\n * @returns {Promise<[lastConcept: IdeaConcept, currentConcept: IdeaConcept]>} A tuple of the evaluated concept, and the next concept to be evaluated\n */\nasync function reviewConcept(ideaConceptId, query, review) {\n addBreadcrumb('Submitting concept review...', {\n level: Severity.Info,\n category: 'concept-review',\n data: { ideaConceptId, query, review }\n });\n\n try {\n validateConceptFilterQuery(query);\n } catch (error) {\n addBreadcrumb(error, {\n category: 'concept-review',\n data: query\n });\n throw new Error(CommonException.BadRequest);\n }\n\n try {\n const queryString = !isEmpty(query)\n ? `?${stringify(query, { arrayFormat: 'repeat' })}`\n : '';\n const res = await client.post(\n `/evaluations/ideaconcept/${ideaConceptId}${queryString}`,\n {\n evaluationCriteria: mapEvaluationModelToPayload(review)\n }\n );\n const data = getApiResponseData(res);\n const lastConcept = get(data, 'evaluatedIdeaConcept');\n const currentConcept = getCurrentConcept(data);\n return [lastConcept, currentConcept];\n } catch (error) {\n logRequestFailure(\n error,\n 'Could not submit concept review',\n 'concept-review'\n );\n throw error;\n }\n}\n\n/**\n * Fetches the default concept review criteria for the current platform.\n * @returns {Promise} An array of criteria\n */\nasync function fetchDefaultReviewCriteria() {\n addBreadcrumb('Fetching default concept review criteria...', {\n category: 'concept-review'\n });\n try {\n const res = await client.get('/idea-concept-evaluation-criteria');\n return getApiResponseData(res);\n } catch (error) {\n logRequestFailure(\n error,\n 'Could not fetch default concept review criteria',\n 'concept-review'\n );\n throw error;\n }\n}\n\nasync function updateDefaultReviewCriteria(newConfig) {\n addBreadcrumb('Updating default concept review criteria...', {\n category: 'concept-review'\n });\n try {\n const res = await client.put(\n '/idea-concept-evaluation-criteria',\n newConfig\n );\n return flow(getApiResponseData)(res);\n } catch (error) {\n logRequestFailure(\n error,\n 'Could not update default concept review criteria',\n 'concept-review'\n );\n throw error;\n }\n}\n\nasync function fetchInternalCommentsForConcept(ideaConceptId) {\n addBreadcrumb('Fetching internal comments for concept...', {\n category: 'concept-review',\n data: { ideaConceptId }\n });\n try {\n const res = await client.get(\n `/idea-concepts/${ideaConceptId}/internal-comments`\n );\n return getApiResponseData(res);\n } catch (error) {\n logRequestFailure(\n error,\n 'Could not fetch concept internal comments',\n 'concept-review'\n );\n throw error;\n }\n}\n\nasync function editInternalCommentForConcept(\n ideaConceptId,\n commentStr,\n isGroupInternalComment = false\n) {\n addBreadcrumb('Updating internal comment for concept...', {\n category: 'concept-review',\n data: {\n ideaConceptId,\n commentStr\n }\n });\n if (!ideaConceptId) {\n throw new Error('conceptId is empty');\n }\n try {\n return client.put(`/idea-concepts/${ideaConceptId}/internal-comments`, {\n internalComment: commentStr,\n isGroupInternalComment\n });\n } catch (error) {\n logRequestFailure(\n error,\n 'Could not update concept internal comment',\n 'concept-review'\n );\n throw error;\n }\n}\n\nasync function fetchFeedbackForConcept(ideaConceptId) {\n addBreadcrumb('Fetching feedback for concept...', {\n category: 'concept-review',\n data: { ideaConceptId }\n });\n try {\n const res = await client.get(`/idea-concepts/${ideaConceptId}/feedbacks`);\n return getApiResponseData(res);\n } catch (error) {\n logRequestFailure(\n error,\n 'Could not fetch concept feedback',\n 'concept-review'\n );\n throw error;\n }\n}\n\nasync function editFeedbackForConcept(\n ideaConceptId,\n commentStr,\n isGroupFeedback = false\n) {\n addBreadcrumb('Updating feedback for concept...', {\n category: 'concept-review',\n data: {\n ideaConceptId,\n commentStr,\n isGroupFeedback\n }\n });\n if (!ideaConceptId) {\n throw new Error('conceptId is empty');\n }\n try {\n return client.post(`/idea-concepts/${ideaConceptId}/feedbacks`, {\n feedback: commentStr,\n isGroupFeedback\n });\n } catch (error) {\n logRequestFailure(\n error,\n 'Could not update concept feedback',\n 'concept-review'\n );\n throw error;\n }\n}\n\nexport default {\n initSession,\n reviewConcept,\n fetchDefaultReviewCriteria,\n updateDefaultReviewCriteria,\n fetchInternalCommentsForConcept,\n editInternalCommentForConcept,\n fetchFeedbackForConcept,\n editFeedbackForConcept\n};\n","export const ADD_ENTITY = 'ADD_ENTITY';\nexport const UPDATE_ENTITY = 'UPDATE_ENTITY';\n\n/**\n * Adds, or completely replaces one or more entities based on the provided payload.\n *\n * **Take care to keep links to other normalized entities intact, or update those in separate actions!**\n * @param {string} entityType\n * @param {NormalizationResult} payload\n * @returns {import('redux').Action} Returns a curried function that accepts the new entity\n */\nexport const addEntity = (entityType, payload) => ({\n type: ADD_ENTITY,\n payload,\n meta: {\n entityType\n }\n});\n\n/**\n * Allows changing certain values of an entity by mapping the changed values to the existing object.\n *\n * **Take care not to change normalized links (e.g. category IDs), as that will break the reference between entities!**\n * @param {string} entityType\n * @param {string} id\n * @returns {(delta: Object) => import('redux').Action} Returns a curried function that accepts the changed entity values.\n */\nexport const updateEntity = (entityType, id) => (delta = {}) => ({\n type: UPDATE_ENTITY,\n payload: delta,\n meta: {\n entityType,\n id\n }\n});\n","import client from '../../api/client';\nimport { getApiResponseData } from '../../api/utils/apiResponse';\n\n/**\n * Returns the available categories of the platform\n * @return {Promise} The array of available categories extracted from the response\n */\n\nfunction fetchCategories() {\n return client.get(`categories`).then(getApiResponseData);\n}\n\nexport default {\n fetchCategories\n};\n","import flow from 'lodash/flow';\nimport getFp from 'lodash/fp/get';\nimport {\n createAsyncThunk,\n createEntityAdapter,\n createSlice\n} from '@reduxjs/toolkit';\nimport { AsyncStatus } from '../../constants';\nimport categoriesApi from '../api/categoriesApi';\nimport handleApiCallAction from '../../utils/handleApiCallAction';\nimport { getCategoryId } from '../getters/categories';\nimport { getEntities_new } from '../selectors/entities';\nimport { getStoreStatus } from '../selectors/meta';\n\nconst fetchCategories = createAsyncThunk(\n 'fetchCategories',\n handleApiCallAction(categoriesApi.fetchCategories)\n);\n\nconst categsAdapter = createEntityAdapter({\n selectId: getCategoryId\n});\n\nconst initialState = {\n entities: categsAdapter.getInitialState(),\n status: AsyncStatus.Idle,\n error: null\n};\n\nconst categoriesSlice = createSlice({\n name: 'categories',\n initialState,\n extraReducers: {\n [fetchCategories.pending]: state => {\n state.status = AsyncStatus.Loading;\n state.error = null;\n },\n [fetchCategories.fulfilled]: (state, { payload }) => {\n state.entities = categsAdapter.setAll(state.entities, payload);\n state.status = AsyncStatus.Succeeded;\n },\n [fetchCategories.rejected]: (state, action) => {\n state.status = AsyncStatus.Failed;\n state.error = action.error;\n }\n }\n});\n\nconst categoriesStoreSelector = getFp('categories');\n\nconst selectors = {\n ...categsAdapter.getSelectors(\n flow(\n categoriesStoreSelector,\n getEntities_new\n )\n ),\n getStatus: flow(\n categoriesStoreSelector,\n getStoreStatus\n )\n};\n\nexport { fetchCategories, selectors, initialState };\n\nexport default categoriesSlice;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Wrapper\":\"Avatar_Wrapper__1EbwB\",\"withInitials\":\"Avatar_withInitials__2D7lO\",\"Bg\":\"Avatar_Bg__n0-mO\",\"transparent\":\"Avatar_transparent__3d070\",\"blurred\":\"Avatar_blurred__3W1jD\",\"bg-null\":\"Avatar_bg-null__1wC5z\",\"bg-0\":\"Avatar_bg-0__2FZTI\",\"bg-1\":\"Avatar_bg-1__1Ag-n\",\"bg-2\":\"Avatar_bg-2__18CDK\",\"bg-3\":\"Avatar_bg-3__33y3T\",\"bg-4\":\"Avatar_bg-4__3_qyF\",\"bg-5\":\"Avatar_bg-5__1cwp4\",\"bg-6\":\"Avatar_bg-6__1AQ6W\",\"bg-7\":\"Avatar_bg-7__3JCYD\",\"bg-8\":\"Avatar_bg-8__2gpYa\",\"bg-9\":\"Avatar_bg-9__1xE4c\",\"Initials\":\"Avatar_Initials__2t0r-\",\"Image\":\"Avatar_Image__Wfofu\",\"Placeholder\":\"Avatar_Placeholder__BI0Gm\",\"size-xs\":\"Avatar_size-xs__2Fpc3\",\"size-sm\":\"Avatar_size-sm__PWIh0\",\"size-md\":\"Avatar_size-md__3jgJH\",\"size-lg\":\"Avatar_size-lg__2zpKV\",\"size-xl\":\"Avatar_size-xl__x3qcL\"};","import React from 'react';\nimport { connect } from 'react-redux';\nimport { activeModalSelector } from '../../reducers';\n\nfunction ModalRoot({ modalComponents = {}, modal = {} }) {\n const ActiveModal = modalComponents[modal.modalType];\n\n if (!ActiveModal) {\n return null;\n }\n\n return ;\n}\n\nfunction mapStateToProps(state) {\n return {\n modal: activeModalSelector(state)\n };\n}\n\nexport default connect(mapStateToProps)(ModalRoot);\n","import ModalRoot from './ModalRoot';\n\nexport default ModalRoot;\n","import cloneDeep from 'lodash/cloneDeep';\nimport mapValues from 'lodash/mapValues';\nimport memoize from 'lodash/memoize';\nimport { parse, stringify } from 'qs';\n\n/**\n * Converts a query string into a key-value dictionary.\n * @param {string} queryString\n * @returns {Object}\n */\nexport function queryStringToObj(queryString) {\n const pathParams = parse(queryString, { ignoreQueryPrefix: true }) || {};\n\n return mapValues(pathParams, param => {\n if (param === 'true') {\n return true;\n } else if (param === 'false') {\n return false;\n }\n return param;\n });\n}\n\nexport function stringifyQueryParams(params, addQueryPrefix = true) {\n return stringify(params, { addQueryPrefix });\n}\n\nexport function updateSomeQueryParams(query) {\n let allParams,\n queryType = typeof query;\n\n if (queryType === 'object') {\n allParams = cloneDeep(query);\n } else if (queryType === 'string') {\n allParams = parseQueryString(query);\n } else throw Error(`String or object expected, received ${queryType}`);\n\n return paramConfig => {\n const updatedParams = {\n ...allParams,\n ...paramConfig\n };\n\n return queryType === 'string'\n ? stringifyQueryParams(updatedParams, false)\n : updatedParams;\n };\n}\n\nconst parseQueryString = memoize(queryStringToObj);\n\nexport default parseQueryString;\n","import { useEffect } from 'react';\n\nconst useMountEffect = fn => useEffect(fn, []);\n\nexport default useMountEffect;\n","import get from 'lodash/get';\n\n/**\n * Returns the platform's ID\n * @param {PlatformSettingsMap} platformSettings - The platform settings object\n * @return {string} The platform's ID\n */\n\nexport const getPlatformId = platformSettings =>\n get(platformSettings, 'companyId');\n\n/**\n * Returns the platform's pretty name\n * @param {PlatformSettingsMap} platformSettings - The platform settings object\n * @param {ParamDataTypeHere} parameterNameHere - Brief description of the parameter here. Note: For other notations of data types, please refer to JSDocs: DataTypes command.\n * @return {string}\n */\n\nexport const getPlatformName = platformSettings =>\n get(platformSettings, 'companyName');\n\n/**\n * Returns the languages in which content, e.g. challenges can be created\n * @param {PlatformSettingsMap} platformSettings - The platform settings object\n * @return {Array} The array of 2-letter capitalised codes for the available languages\n */\n\nexport const getContentLanguages = platformSettings =>\n get(platformSettings, 'availableChallengeLanguages', []);\n\n/**\n * Returns the list of hashtags that can be appended to content\n * @param {PlatformSettingsMap} platformSettings - The platform settings object\n * @return {Array} The array of available hashtags\n */\n\nexport const getAvailableHashtags = platformSettings =>\n get(platformSettings, 'availableHashtags', []);\n\n/**\n * Returns the regular expression of email domains allowed to access the platform\n * @param {PlatformSettingsMap} platformSettings - The platform settings object\n * @return {RegExp} The allowed email domains\n */\n\nexport const getAllowedEmailDomains = platformSettings =>\n get(platformSettings, 'allowedEmailDomains', /.*/);\n\n/**\n * Returns the platform logo image\n * @param {PlatformSettingsMap} platformSettings - The platform settings object\n * @return {ImageObject} The platform logo image\n */\n\nexport const getPlatformLogo = platformSettings =>\n get(platformSettings, 'image');\n","import { FETCH_CHALLENGE, DELETE_CHALLENGE } from '../../constants';\nimport { VOYAGER_API } from '../../api/constants';\nimport schemas, { entityKeys } from '../../challenge/schemas';\nimport { convertApiErrorToStatusCode } from '../../api/utils/apiError';\n\nexport const fetchChallenge = challengeId => dispatch =>\n dispatch({\n [VOYAGER_API]: {\n url: `/challenges/${challengeId}`,\n method: 'GET',\n type: FETCH_CHALLENGE,\n challengeId,\n schema: schemas.CHALLENGE,\n entityType: entityKeys.CHALLENGE,\n id: challengeId\n }\n }).catch(error => {\n throw convertApiErrorToStatusCode(error);\n });\n\nexport const deleteChallenge = challengeId => {\n return {\n [VOYAGER_API]: {\n url: `/challenges/${challengeId}`,\n method: 'DELETE',\n type: DELETE_CHALLENGE\n }\n };\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { NavLink } from 'react-router-dom';\nimport { withResponsive } from '../Responsive';\nimport Button from '@bit/be-novative.kit.button';\nimport Icon from '../Icon';\nimport './PrimaryNavigationItem.css';\n\nPrimaryNavigationItem.defaultProps = {\n secondary: false,\n push: false\n};\n\nfunction PrimaryNavigationItem({\n children,\n className,\n push,\n center,\n secondary,\n iconType,\n onClick,\n to,\n ...rest\n}) {\n const classes = classNames('PrimaryNavigationItem', className, {\n 'PrimaryNavigationItem--push': push,\n 'PrimaryNavigationItem--center': center\n });\n const linkClasses = classNames('PrimaryNavigationItem__Link', {\n 'PrimaryNavigationItem__Link--secondary': secondary\n });\n const icon = iconType && (\n \n );\n const showLink = !!to;\n const showButton = !to && !!onClick;\n const showStatic = !showLink && !showButton;\n\n return (\n
  • \n {showLink && (\n \n {icon} {children}\n \n )}\n {showButton && (\n \n )}\n {showStatic && (\n \n {icon} {children}\n \n )}\n
  • \n );\n}\n\nexport default withResponsive(PrimaryNavigationItem);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport './PrimaryNavigation.css';\n\nPrimaryNavigation.propTypes = {\n justify: PropTypes.oneOf(['around']),\n scrollable: PropTypes.bool,\n wrap: PropTypes.bool\n};\n\nfunction PrimaryNavigation({ children, className, justify, scrollable, wrap }) {\n const classes = classNames(\n 'PrimaryNavigation',\n {\n [`PrimaryNavigation--${justify}`]: !!justify,\n 'PrimaryNavigation--wrap': !!wrap,\n 'PrimaryNavigation--scrollable': !!scrollable\n },\n className\n );\n\n return
      {children}
    ;\n}\n\nexport default PrimaryNavigation;\n","import React from 'react';\nimport cn from 'classnames';\nimport { NavLink } from 'react-router-dom';\nimport './PrimaryNavigationButton.css';\n\nPrimaryNavigationButton.defaultProps = {\n secondary: false,\n push: false\n};\n\nfunction PrimaryNavigationButton({\n children,\n className,\n push,\n secondary,\n iconType,\n onClick,\n to,\n ...rest\n}) {\n return (\n
  • \n \n {children}\n \n
  • \n );\n}\n\nexport default PrimaryNavigationButton;\n","import PrimaryNavigationItem from './PrimaryNavigationItem';\nimport PrimaryNavigation from './PrimaryNavigation';\nimport PrimaryNavigationButton from './PrimaryNavigationButton';\n\nPrimaryNavigation.Item = PrimaryNavigationItem;\nPrimaryNavigation.Button = PrimaryNavigationButton;\n\nexport default PrimaryNavigation;\n","import getFp from 'lodash/fp/get';\n\nexport const rootSelector = getFp('conceptCanvas');\n","import produce from 'immer';\nimport conceptReviewApi from '../api/conceptReviewApi';\nimport commentSliceFactory from './commentSliceFactory';\n\nconst { slice, actions, selectors } = commentSliceFactory({\n sliceName: 'internalComments',\n entityLabel: 'InternalComment',\n editFn: conceptReviewApi.editInternalCommentForConcept,\n fetchFn: conceptReviewApi.fetchInternalCommentsForConcept,\n entityPropNormalizerFn: produce(comment => {\n const text = comment.internalComment;\n comment.text = text;\n delete comment.internalComment;\n })\n});\nconst { fetchComments, editComment } = actions;\n\nconst { getGroupCommentByConceptId, getUserCommentForConcept } = selectors;\n\nexport {\n fetchComments,\n editComment,\n getGroupCommentByConceptId,\n getUserCommentForConcept\n};\nexport default slice;\n","import React from 'react';\nimport SortIndicator from './SortIndicator';\n\nfunction defaultHeaderRenderer({\n dataKey,\n label,\n sortBy,\n sortDirection,\n disableSort\n}) {\n const children = [\n \n {label}\n \n ];\n\n if (!disableSort) {\n children.push(\n \n );\n }\n\n return children;\n}\n\nexport default defaultHeaderRenderer;\n","function defaultCellRenderer({ cellData }) {\n if (cellData == null) {\n return '';\n } else {\n return String(cellData);\n }\n}\n\nexport default defaultCellRenderer;\n","import isFunction from 'lodash/isFunction';\nimport isString from 'lodash/isString';\n\nfunction defaultCellDataGetter({ dataKey, rowData }) {\n if (isFunction(rowData.get)) {\n return rowData.get(dataKey);\n } else if (isString(rowData)) {\n return rowData;\n } else {\n return rowData[dataKey];\n }\n}\n\nexport default defaultCellDataGetter;\n","import PropTypes from 'prop-types';\nimport { Component } from 'react';\nimport defaultHeaderRenderer from './defaultHeaderRenderer';\nimport defaultCellRenderer from './defaultCellRenderer';\nimport defaultCellDataGetter from './defaultCellDataGetter';\n\n/**\n * Describes the header and cell contents of a table column.\n */\nclass Column extends Component {\n static propTypes = {\n /** Optional aria-label value to set on the column header */\n 'aria-label': PropTypes.string,\n\n /**\n * Callback responsible for returning a cell's data, given its :dataKey\n * ({ columnData: any, dataKey: string, rowData: any }): any\n */\n cellDataGetter: PropTypes.func,\n\n /**\n * Callback responsible for rendering a cell's contents.\n * ({ cellData: any, columnData: any, dataKey: string, rowData: any, rowIndex: number }): node\n */\n cellRenderer: PropTypes.func,\n\n /** Optional CSS class to apply to cell */\n className: PropTypes.string,\n\n /** Optional additional data passed to this column's :cellDataGetter */\n columnData: PropTypes.object,\n\n /** Uniquely identifies the row-data attribute corresponding to this cell */\n dataKey: PropTypes.any.isRequired,\n\n /** If sort is enabled for the table at large, disable it for this column */\n disableSort: PropTypes.bool,\n\n /** Flex grow style; defaults to 0 */\n flexGrow: PropTypes.number,\n\n /** Flex shrink style; defaults to 1 */\n flexShrink: PropTypes.number,\n\n /** Optional CSS class to apply to this column's header */\n headerClassName: PropTypes.string,\n\n /**\n * Optional callback responsible for rendering a column header contents.\n * ({ columnData: object, dataKey: string, disableSort: boolean, label: node, sortBy: string, sortDirection: string }): PropTypes.node\n */\n headerRenderer: PropTypes.func.isRequired,\n\n /** Optional id to set on the column header */\n id: PropTypes.string,\n\n /** Header label for this column */\n label: PropTypes.node,\n\n /** Maximum width of column; this property will only be used if :flexGrow is > 0. */\n maxWidth: PropTypes.number,\n\n /** Minimum width of column. */\n minWidth: PropTypes.number,\n\n /** Optional inline style to apply to cell */\n style: PropTypes.object,\n\n /** Flex basis (width) for this column; This value can grow or shrink based on :flexGrow and :flexShrink properties. */\n width: PropTypes.number.isRequired,\n\n align: PropTypes.oneOf(['left', 'center', 'right'])\n };\n\n static defaultProps = {\n cellDataGetter: defaultCellDataGetter,\n cellRenderer: defaultCellRenderer,\n flexGrow: 0,\n flexShrink: 1,\n headerRenderer: defaultHeaderRenderer,\n style: {}\n };\n}\n\nexport default Column;\n","import get from 'lodash/get';\nimport client from '../../api/client';\nimport { convertApiErrorToStatusCode } from '../../api/utils/apiError';\nimport { getApiResponseData } from '../../api/utils/apiResponse';\nimport logRequestFailure from '../../api/utils/logRequestFailure';\nimport addBreadcrumb from '../../telemetry/addBreadcrumb';\nimport getFilenameFromAjaxHeader from '../../utils/getFilenameFromAjaxHeader';\nimport { saveJson } from '../../utils/saveFile';\nimport { scrubProfilePayload } from '../utils/payloadUtils';\n\n/**\n * Fetches user's own profile from the API\n * @return {OwnProfilePayload} The user's own profile\n */\n\nasync function fetchOwnProfile() {\n const response = await client.get(`/profile`);\n return getApiResponseData(response);\n}\n\n/**\n * Update user's own profile through the API\n * @param {OwnProfilePayload} profilePayload - The updated user profile\n * @return {Promise} The API request promise\n */\n\nasync function updateProfile(profilePayload) {\n addBreadcrumb('Updating profile data...', {\n category: 'profile',\n data: scrubProfilePayload(profilePayload)\n });\n try {\n return await client.put('/profile', profilePayload);\n } catch (error) {\n logRequestFailure(error);\n const code = convertApiErrorToStatusCode(error);\n return Promise.reject({ code, error });\n }\n}\n\n/**\n * Triggers permanently deleting the user's account\n * @return {Promise} The API request promise\n */\n\nasync function deleteProfile() {\n return await client.delete('/profile');\n}\n\n/**\n * Fetches the user's profile export and saves it as a JSON file\n * @return {Promise} The request promise or the processed error\n */\n\nasync function exportProfile() {\n addBreadcrumb('Exporting profile data...', {\n category: 'profile'\n });\n try {\n const result = await client.get('/profile/export');\n const fileName = getFilenameFromAjaxHeader(\n get(result, 'headers[content-disposition]')\n );\n const defaultFileName = 'benovative_export.json';\n saveJson(getApiResponseData(result), fileName || defaultFileName);\n } catch (error) {\n logRequestFailure(error);\n const code = convertApiErrorToStatusCode(error);\n return Promise.reject({ code, error });\n }\n}\n\nasync function changePassword(passOrToken, newPassword) {\n addBreadcrumb('Changing account password...', {\n category: 'profile'\n });\n try {\n return await client.put('/profile/password', {\n currentPassword: passOrToken,\n newPassword\n });\n } catch (error) {\n logRequestFailure(error);\n const code = convertApiErrorToStatusCode(error);\n return Promise.reject({ code, error });\n }\n}\n\nexport default {\n fetchOwnProfile,\n updateProfile,\n deleteProfile,\n exportProfile,\n changePassword\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Wrapper\":\"Badge_Wrapper__2tbpJ\",\"Badge\":\"Badge_Badge__32qb0\",\"left\":\"Badge_left__3Rezx\",\"right\":\"Badge_right__1n8wi\",\"top\":\"Badge_top__3U6r4\",\"bottom\":\"Badge_bottom__2sDJN\",\"shape-circle\":\"Badge_shape-circle__38dTJ\",\"visible\":\"Badge_visible__VbSOk\",\"shape-rectangle\":\"Badge_shape-rectangle__1s0__\",\"SimpleBadge\":\"Badge_SimpleBadge__ZdfBG\",\"size-xs\":\"Badge_size-xs__3v5gc\",\"size-sm\":\"Badge_size-sm__2T6JJ\",\"size-md\":\"Badge_size-md__1L6xe\",\"size-lg\":\"Badge_size-lg__2eqY0\",\"size-xl\":\"Badge_size-xl__PTELb\"};","export const brandGradient = {\n start: '#3EDE91',\n end: '#377dd4'\n};\n\n/**\n * Hex color strings that follow colors described in `src/scss/_variables.scss\n * @enum {string} ColorVariantHex\n */\n\nexport const ColorVariantHex = {\n primary: '#2372cb',\n success: '#61b73e',\n info: '#c4e0ff',\n danger: '#f24343',\n warning: '#e8b810'\n};\n\nexport const ColorVariant = {\n primary: 'hsl(212, 71%, 47%)',\n success: 'hsl(103, 49%, 48%)',\n info: 'hsl(212, 100%, 88%)',\n danger: 'hsl(0, 87%, 61%)',\n warning: 'hsl(47, 87%, 49%)'\n};\n\nexport const darkGrayScale = [\n 'hsl(0, 0%, 29%)',\n 'hsl(0, 0%, 42%)',\n 'hsl(0, 0%, 58%)',\n 'hsl(0, 0%, 63%)',\n 'hsl(0, 1%, 67%)'\n];\n\nexport const lightGrayScale = [\n 'hsl(0, 0%, 78%)',\n 'hsl(0, 0%, 82%)',\n 'hsl(0, 0%, 86%)',\n 'hsl(0, 3%, 94%)',\n 'hsl(0, 0%, 94%)',\n 'hsl(180, 100%, 100%)'\n];\n\nexport const lightTheme = {\n bodyBg: 'white',\n dndCanvas: {\n accentColor: 'hsl(209deg 100% 77%)',\n canvasBg: lightGrayScale[4]\n },\n text: darkGrayScale[0]\n};\n","import { createAction } from 'redux-actions';\nimport { ALERT_CLEAR, ALERT_DISMISS, ALERT_SEND } from '../../constants';\n\nexport const dismissAlert = createAction(ALERT_DISMISS, id => id);\nexport const clearAlerts = createAction(ALERT_CLEAR);\n\nconst DEFAULTS = {\n kind: '',\n message: '',\n dismissAfterMs: 6000,\n id: null\n};\n\n/**\n * Displays a global toast message. Only one message is displayed at a time.\n * @param {Object} alert - Alert config object\n * @param {\"success\" | \"info\" | \"warning\" | \"danger\"} [alert.kind] - Controls the color scheme of the toast message. Defaults to `info`.\n * @param {string} alert.message - The message to display in the toast.\n * @param {number} [alert.dismissAfterMs] - The timeout after which the message should disappear. Defaults to `6000`.\n * @param {any} [alert.id] - Optional ID for the message. Defaults to the current timestamp.\n * @returns\n */\nexport const sendAlert = (alert = DEFAULTS) => dispatch => {\n const config = {\n ...DEFAULTS,\n ...alert,\n id: alert.id || new Date().getTime()\n };\n\n dispatch({ type: ALERT_SEND, payload: config });\n\n if (config.dismissAfterMs) {\n setTimeout(() => {\n dispatch({\n type: ALERT_DISMISS,\n payload: config.id\n });\n }, config.dismissAfterMs);\n }\n\n return config.id;\n};\n","import Icon, { ICON_SIZES, types as ICON_TYPES } from './Icon';\n\nexport default Icon;\nexport { ICON_SIZES, ICON_TYPES };\n","import { Component, cloneElement } from 'react';\nimport classNames from 'classnames';\n\nclass StyleButton extends Component {\n onToggle = e => {\n e.preventDefault();\n this.props.onToggle(this.props.style);\n };\n\n render() {\n const { label } = this.props;\n const classes = classNames('RichText__StyleButton', {\n 'RichText__StyleButton--active': this.props.active\n });\n\n return cloneElement(label, {\n className: classes,\n onMouseDown: this.onToggle\n });\n }\n}\n\nexport default StyleButton;\n","import React from 'react';\nimport Icon from '../Icon';\nimport StyleButton from './StyleButton';\n\nconst BLOCK_TYPES = [\n { label: , style: 'unordered-list-item' },\n { label: , style: 'ordered-list-item' }\n];\n\nconst BlockStyleControls = ({ editorState, onToggle }) => {\n const selection = editorState.getSelection();\n const blockType = editorState\n .getCurrentContent()\n .getBlockForKey(selection.getStartKey())\n .getType();\n\n return (\n
    \n {BLOCK_TYPES.map(type =>\n \n )}\n
    \n );\n};\n\nexport default BlockStyleControls;\n","import React from 'react';\nimport Icon from '../Icon';\nimport StyleButton from './StyleButton';\n\nconst INLINE_STYLES = [\n { label: , style: 'BOLD' },\n { label: , style: 'ITALIC' },\n { label: , style: 'UNDERLINE' }\n];\n\nconst InlineStyleControls = ({ editorState, onToggle }) => {\n var currentStyle = editorState.getCurrentInlineStyle();\n return (\n
    \n {INLINE_STYLES.map(type =>\n \n )}\n
    \n );\n};\n\nexport default InlineStyleControls;\n","import React, { Component } from 'react';\nimport get from 'lodash/get';\nimport noop from 'lodash/noop';\nimport isObject from 'lodash/fp/isObject';\nimport PropTypes from 'prop-types';\nimport { RichUtils, Editor, EditorState } from 'draft-js';\nimport classNames from 'classnames';\nimport { markOverflow } from '@bit/be-novative.kit.richtext-utils';\nimport BlockStyleControls from './BlockStyleControls';\nimport InlineStyleControls from './InlineStyleControls';\nimport './RichText.css';\n\nconst CUSTOM_STYLE_MAP = {\n OVERFLOW: {\n background: '#f7d7d7'\n }\n};\n\nclass RichText extends Component {\n static propTypes = {\n autoFocus: PropTypes.bool,\n editorClassName: PropTypes.string,\n maxLength: PropTypes.number,\n maxTabDepth: PropTypes.number,\n placeholder: PropTypes.string,\n readOnly: PropTypes.bool,\n showToolbar: PropTypes.bool,\n input: PropTypes.shape({\n onChange: PropTypes.func,\n value: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n onFocus: PropTypes.func,\n onBlur: PropTypes.func\n })\n };\n\n static defaultProps = {\n input: { onChange: noop },\n maxTabDepth: 4,\n minHeight: 125,\n showToolbar: true\n };\n\n componentDidMount() {\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n setEditorRef = el => {\n this.editor = el;\n };\n\n focus = () => {\n this.editor.focus();\n };\n\n handleKeyCommand = command => {\n const { value, onChange } = this.props.input;\n const newState = RichUtils.handleKeyCommand(value, command);\n if (newState) {\n onChange(newState);\n return true;\n }\n return false;\n };\n\n handleTab = event => {\n const { maxTabDepth, input } = this.props;\n const { value, onChange } = input;\n onChange(RichUtils.onTab(event, value, maxTabDepth));\n };\n\n toggleBlockType = blockType => {\n const { value, onChange } = this.props.input;\n onChange(RichUtils.toggleBlockType(value, blockType));\n };\n\n toggleInlineStyle = inlineStyle => {\n const { value, onChange } = this.props.input;\n onChange(RichUtils.toggleInlineStyle(value, inlineStyle));\n };\n\n handleChange = editorState => {\n const { input, maxLength } = this.props;\n const newState = maxLength\n ? markOverflow(editorState, maxLength, 'OVERFLOW')\n : editorState;\n input.onChange(newState);\n };\n\n render() {\n const {\n placeholder,\n readOnly,\n input,\n meta,\n minHeight,\n className,\n editorClassName,\n children,\n showToolbar\n } = this.props;\n\n const { value, onFocus, onBlur } = input;\n\n let editorState = isObject(value) ? value : EditorState.createEmpty();\n\n const contentState = editorState.getCurrentContent();\n const renderPlaceholder = !contentState.hasText();\n const renderToolbar = showToolbar && !readOnly;\n\n const classes = classNames('RichText', className);\n const editorClasses = classNames('RichText__Editor', editorClassName, {\n 'RichText__Editor--readonly': readOnly,\n 'RichText__Editor--active': get(meta, 'active'),\n 'RichText__Editor--error': get(meta, 'submitFailed') && get(meta, 'error')\n });\n\n return (\n
    \n {renderToolbar && (\n \n )}\n {renderToolbar && (\n \n )}\n \n \n
    \n {children}\n
    \n );\n }\n}\n\nexport default RichText;\n","import RichText from './RichText';\n\nexport default RichText;\n","import random from 'lodash/fp/random';\nimport { VOYAGER_API } from '../../api/constants';\nimport { openModal } from '../../common/actions/modal';\nimport { getContent } from '../../common/selectors/images';\nimport { asyncActionType } from '../../utils';\nimport forceArray from '../../utils/forceArray';\nimport { getImageId } from '../selectors/images';\nimport { IMAGE_SELECTOR_MODAL, S_ID } from '../constants';\nimport {\n normaliseImageReceivedMsg,\n submitImgMsg\n} from '../utils/socketMsg/images';\nimport { storeCanvasItemPosition } from './movement';\n\nexport const sendImage = image => dispatch => {\n const { posX, posY, ...restOfImg } = image;\n const newPosX = image.posX || random(0, 100);\n const newPosY = image.posY || random(0, 100);\n\n return dispatch(submitImgMsg(restOfImg, newPosX, newPosY));\n};\n\nconst UPLOAD_CANVAS_IMAGE = asyncActionType('UPLOAD_CANVAS_IMAGE');\nexport const uploadCanvasImage = (conceptId, canvasType, image) => dispatch =>\n dispatch({\n [VOYAGER_API]: {\n url: `/ideaconcepts/${conceptId}/canvases/${canvasType}/images`,\n method: 'POST',\n data: getContent(image),\n type: UPLOAD_CANVAS_IMAGE\n }\n });\n\nexport const STORE_IMAGES = 'canvas/image/store';\n/**\n * Stores one or more items as canvas images in Redux\n * @param {CanvasImage|CanvasImage[]} payload\n * @returns {import('redux').Action}\n */\nexport const storeImages = payload => ({\n type: STORE_IMAGES,\n payload: forceArray(payload),\n meta: { canvasId: S_ID }\n});\n\nexport const IMAGE_RECEIVED = 'IMAGE_RECEIVED';\nexport const imageReceived = (response, messageType) => dispatch => {\n const image = normaliseImageReceivedMsg(response);\n dispatch({\n type: IMAGE_RECEIVED,\n payload: image,\n meta: { messageType, id: image.imageId, canvasId: S_ID }\n });\n dispatch(\n storeCanvasItemPosition(\n { id: getImageId(image), posX: image.posX, posY: image.posY },\n 'external'\n )\n );\n};\n\nconst DELETE_CANVAS_IMAGE = asyncActionType('DELETE_CANVAS_IMAGE');\nexport const deleteImage = (conceptId, canvasType, imageId) => dispatch =>\n dispatch({\n [VOYAGER_API]: {\n url: `/ideaconcepts/${conceptId}/canvases/${canvasType}/images/${imageId}`,\n method: 'DELETE',\n type: DELETE_CANVAS_IMAGE\n }\n });\n\nexport const IMAGE_DELETED = 'IMAGE_DELETED';\nexport const imageDeleted = (response, messageType) => ({\n type: IMAGE_DELETED,\n payload: response,\n meta: { messageType, canvasId: S_ID }\n});\n\nexport const openImageSelectorModal = onSelect => dispatch => {\n dispatch(\n openModal({\n modalType: IMAGE_SELECTOR_MODAL,\n modalProps: {\n size: 'large',\n isCloseButtonShown: false,\n onImageSelect: onSelect,\n uploadImageType: 'blob'\n }\n })\n );\n};\n","import flow from 'lodash/flow';\nimport { SOCKET_MSG as MSG, S_ID } from '../../constants';\nimport { sendSocketMessage } from '../../../common/actions/socket';\nimport {\n mapPositionToMsg,\n mapPositionFromMsg,\n mapOwnerIdFromMsg\n} from './_mappers';\n\n// Requests\n\nexport const deleteImageMsg = imageId =>\n sendSocketMessage(S_ID, MSG.IMAGE_DELETE_REQ, imageId);\n\nexport const submitImgMsg = (image, posX, posY, posZ, section = null) => {\n const payload = [image, mapPositionToMsg({ posX, posY, posZ }), section];\n return sendSocketMessage(S_ID, MSG.IMAGE_SUBMIT, payload);\n};\n\n// Responses\n\nexport const normaliseImageReceivedMsg = (msg = []) =>\n flow(\n mapPositionFromMsg,\n mapOwnerIdFromMsg\n )(msg);\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport './Progress.css';\n\nfunction Progress({ animate, thickness }) {\n const classes = classNames({\n Progress: true,\n 'Progress--animate': animate,\n [`Progress--${thickness}`]: !!thickness\n });\n return
    ;\n}\n\nProgress.propTypes = {\n animate: PropTypes.bool,\n thickness: PropTypes.oneOf(['thin', 'thick'])\n};\n\nProgress.defaultProps = {\n animate: false\n};\n\nexport default Progress;\n","import Progress from './Progress';\nexport default Progress;\n","import { SeverityLevel } from '@microsoft/applicationinsights-web';\nimport { Severity } from '../constants';\nexport const AZURE_ROLE_NAME = 'app-web';\n\nexport const MonitoringSeverity = {\n [Severity.Verbose]: SeverityLevel.Verbose,\n [Severity.Info]: SeverityLevel.Information,\n [Severity.Warning]: SeverityLevel.Warning,\n [Severity.Error]: SeverityLevel.Error,\n [Severity.Critical]: SeverityLevel.Critical\n};\n","import forceArray from '../../utils/forceArray';\n\nexport const FILTER_ITEMS_BY = 'FILTER_ITEMS_BY';\nexport const REMOVE_FILTER = 'REMOVE_FILTER';\nexport const REMOVE_FILTER_TYPE = 'REMOVE_FILTER_TYPE';\n\nexport const filterItemsBy = reducerId => (\n key,\n value,\n overwriteExisting = false\n) => ({\n type: FILTER_ITEMS_BY,\n payload: { key, value },\n meta: { reducerId, overwrite: overwriteExisting }\n});\n\nexport const removeAllFiltersWithKey = reducerId => key => ({\n type: REMOVE_FILTER_TYPE,\n payload: key,\n meta: { reducerId }\n});\n\nexport const removeFilter = reducerId => (key, value) => {\n if (!value) {\n return removeAllFiltersWithKey(reducerId)(key);\n }\n\n return {\n type: REMOVE_FILTER,\n payload: { key, value: forceArray(value) },\n meta: { reducerId }\n };\n};\n","import React from 'react';\nimport { Field } from 'redux-form';\nimport { Trans, translate } from 'react-i18next';\nimport { required } from '../../../utils/validation';\nimport { CheckboxFormControl } from '..';\nimport { userConsentKeys } from '../../../constants';\n\nfunction AcceptCheckboxField({ t, name }) {\n return (\n \n \n \n label\n \n \n label\n \n \n \n );\n}\n\nAcceptCheckboxField.defaultProps = {\n name: userConsentKeys.TERMS_AND_PRIVACY_ACCEPTED\n};\n\nexport default translate()(AcceptCheckboxField);\n","import AcceptCheckboxField from './AcceptCheckboxField';\n\nexport default AcceptCheckboxField;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport './CheckboxButton.css';\n\nclass CheckboxButton extends Component {\n static propTypes = {\n input: PropTypes.shape({\n checked: PropTypes.bool,\n disabled: PropTypes.bool\n }),\n meta: PropTypes.object,\n children: PropTypes.node\n };\n\n handleChange = event => {\n const { onChange, value } = this.props.input;\n onChange(value, event.target.checked);\n };\n\n render() {\n const { input, children, theme } = this.props;\n const classes = classNames(theme.container, {\n [theme.checked]: input.checked,\n [theme.disabled]: input.disabled\n });\n\n return (\n \n );\n }\n}\n\nexport default CheckboxButton;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport without from 'lodash/fp/without';\nimport union from 'lodash/fp/union';\nimport includes from 'lodash/fp/includes';\nimport CheckboxButton from './CheckboxButton';\n\nconst THEME_DEFAULT = {\n container: 'CheckboxButtonGroup',\n checkbox: {\n container: 'CheckboxButton',\n checked: 'CheckboxButton--checked',\n disabled: 'CheckboxButton--disabled',\n input: 'CheckboxButton__Input'\n }\n};\n\nclass CheckboxButtonGroup extends Component {\n static propTypes = {\n choices: PropTypes.arrayOf(\n PropTypes.shape({\n value: PropTypes.any.isRequired,\n disabled: PropTypes.bool,\n label: PropTypes.string,\n icon: PropTypes.node\n })\n ),\n hasIcon: PropTypes.bool,\n input: PropTypes.object,\n meta: PropTypes.object,\n name: PropTypes.string,\n separator: PropTypes.string\n };\n\n static defaultProps = {\n theme: THEME_DEFAULT\n };\n\n handleChange = (value, checked) => {\n const { input } = this.props;\n const prevValue = input.value || [];\n const nextValue = checked\n ? union([value], prevValue)\n : without([value], prevValue);\n\n input.onChange(nextValue);\n };\n\n handleBlur = () => {\n const { input } = this.props;\n input.onBlur(input.value);\n };\n\n render() {\n const { theme, choices, input, meta } = this.props;\n const choiceItems = choices.reduce(\n (acc, choice, index) => [\n ...acc,\n \n {choice.label}\n \n ],\n []\n );\n\n return (\n
    \n {choiceItems}\n
    \n );\n }\n}\n\nexport default CheckboxButtonGroup;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport './DumbTextarea.css';\n\nclass DumbTextarea extends Component {\n static propTypes = {\n type: PropTypes.string.isRequired,\n input: PropTypes.object,\n meta: PropTypes.object,\n placeholder: PropTypes.string,\n marked: PropTypes.bool,\n rows: PropTypes.number,\n resizable: PropTypes.bool\n };\n\n static defaultProps = {\n input: { value: '' },\n marked: false,\n type: 'text',\n readOnly: false,\n disabled: false,\n defaultValue: '',\n meta: {},\n rows: 3\n };\n\n focus() {\n if (this.el) {\n this.el.focus();\n }\n }\n\n render() {\n const {\n input,\n meta,\n placeholder,\n marked,\n readOnly,\n disabled,\n defaultValue,\n rounded,\n rows,\n resizable\n } = this.props;\n const { active, touched, error, warning, submitFailed, submitting } = meta;\n\n const classes = classNames('Textarea', {\n 'Textarea--error': (touched || submitFailed || submitting) && error,\n 'Textarea--warning': (touched || submitFailed || submitting) && warning,\n 'Textarea--marked': marked,\n 'Textarea--active': active,\n 'Textarea--rounded': rounded,\n 'Textarea--resizable': resizable\n });\n\n return (\n (this.el = el)}\n placeholder={placeholder}\n readOnly={readOnly}\n disabled={disabled}\n rows={rows}\n className={classes}\n />\n );\n }\n}\n\nexport default DumbTextarea;\n","import DumbTextarea from './DumbTextarea';\n\nexport default DumbTextarea;\n","import FadeSlideUpTransition from './FadeSlideUpTransition';\n\nexport default FadeSlideUpTransition;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { prependBase64Content } from '../../../utils/payloadUtils/image';\nimport Icon from '../Icon';\nimport './ImagePreview.css';\n\nImagePreview.propTypes = {\n previewLabel: PropTypes.func.isRequired,\n onClick: PropTypes.func.isRequired,\n input: PropTypes.shape({\n value: PropTypes.object\n }).isRequired\n};\n\nfunction ImagePreview(props) {\n const { input, style, onClick, previewLabel } = props;\n const { value } = input;\n const classes = classNames('ImagePreview', {\n 'ImagePreview--selected': !!value\n });\n\n return (\n
    \n {value && (\n \n )}\n \n
    \n );\n}\n\nexport default ImagePreview;\n","import ImagePreview from './ImagePreview';\n\nexport default ImagePreview;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\nimport './RightSlideTransition.css';\n\nconst ANIM_MS = 300;\n\nRightSlideTransition.propTypes = {\n speed: PropTypes.number\n};\nRightSlideTransition.defaultProps = {\n speed: ANIM_MS\n};\nexport default function RightSlideTransition({ speed, ...props }) {\n return (\n \n );\n}\n","import RightSlideTransition from './RightSlideTransition';\n\nexport default RightSlideTransition;\n","import invariant from 'invariant';\nimport { objectToQueryString } from '../../../utils';\n\nexport function facebook(url, { title, description, picture, hashtag }) {\n invariant(url, 'facebook.url');\n\n return (\n 'https://www.facebook.com/sharer/sharer.php' +\n objectToQueryString({\n u: url,\n title,\n description,\n picture,\n hashtag\n })\n );\n}\n\nexport function twitter(url, { title, via, hashtags = [] }) {\n invariant(url, 'twitter.url');\n invariant(Array.isArray(hashtags), 'twitter.hashtags is not an array');\n\n return (\n 'https://twitter.com/share' +\n objectToQueryString({\n url,\n text: title,\n via: via || 'benovative',\n hashtags: hashtags.join(',')\n })\n );\n}\n\nexport function linkedin(url, { title, description }) {\n invariant(url, 'linkedin.url');\n\n return (\n 'https://linkedin.com/shareArticle' +\n objectToQueryString({\n url,\n title,\n summary: description\n })\n );\n}\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport Button from '@bit/be-novative.kit.button';\nimport Icon from '../Icon';\nimport { windowOpen } from '../../../utils';\nimport * as links from './shareLinks';\n\nconst supportedNetworks = Object.keys(links);\n\nclass ShareButton extends Component {\n handleClick = e => {\n const {\n disabled,\n windowWidth,\n windowHeight,\n network,\n onClick\n } = this.props;\n\n if (!disabled) {\n e.preventDefault();\n\n const windowOptions = {\n height: windowHeight,\n width: windowWidth\n };\n\n onClick(network);\n windowOpen(this.link(), windowOptions);\n }\n };\n\n link() {\n const { url, opts = {}, network } = this.props;\n return links[network](url, opts);\n }\n\n render() {\n const { children, network, disabled, opts, url, ...rest } = this.props;\n\n return (\n \n \n {children}\n \n );\n }\n}\n\nShareButton.propTypes = {\n children: PropTypes.node,\n disabled: PropTypes.bool,\n network: PropTypes.oneOf(supportedNetworks),\n opts: PropTypes.object,\n url: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired\n};\n\nShareButton.networks = supportedNetworks;\n\nexport default ShareButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport './Text.css';\n\nfunction Text({ variant, className, ...props }) {\n return (\n \n );\n}\n\nText.propTypes = {\n variant: PropTypes.oneOf(['success']).isRequired\n};\n\nexport default Text;\n","import React, { Component, cloneElement } from 'react';\nimport truncate from 'lodash/truncate';\nimport PropTypes from 'prop-types';\n\nexport default class TruncatedText extends Component {\n static propTypes = {\n length: PropTypes.number,\n triggerComponent: PropTypes.element.isRequired\n };\n\n static defaultProps = {\n length: 300\n };\n\n state = {\n expanded: false\n };\n\n getButtonProps = () => ({\n expanded: this.state.expanded,\n onClick: this.toggleCollapse\n });\n\n toggleCollapse = () => {\n this.setState(({ expanded }) => ({ expanded: !expanded }));\n };\n\n render() {\n const { className, triggerComponent } = this.props;\n const isTruncateNecessary =\n this.renderExpanded().length !== this.renderTruncated().length;\n\n return (\n
    \n {this.state.expanded ? this.renderExpanded() : this.renderTruncated()}\n {isTruncateNecessary && (\n
    {cloneElement(triggerComponent, this.getButtonProps())}
    \n )}\n
    \n );\n }\n\n renderExpanded = () => this.props.children;\n\n renderTruncated = () => {\n const { children, length } = this.props;\n return truncate(children, { length });\n };\n}\n","import TruncatedText from './TruncatedText';\n\nexport default TruncatedText;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '../Grid';\n\nTwoColumnLayout.propTypes = {\n main: PropTypes.element.isRequired,\n side: PropTypes.element,\n mainBreakpoints: PropTypes.object,\n sideBreakpoints: PropTypes.object\n};\nTwoColumnLayout.defaultProps = {\n side: null,\n mainBreakpoints: {\n xsGutter: 2,\n md: 10,\n lg: 8,\n xl: 7,\n mdOffset: 1,\n lgOffset: 0,\n xlOffset: 1\n },\n sideBreakpoints: {\n xsGutter: 2,\n lg: 4,\n xl: 3,\n mediaHiddenDown: 'lg'\n }\n};\nfunction TwoColumnLayout({ main, side, mainBreakpoints, sideBreakpoints }) {\n return (\n \n {main}\n {side}\n \n );\n}\n\nexport default TwoColumnLayout;\n","import AcceptCheckboxField from './AcceptCheckboxField';\nimport Alerts from './Alerts';\nimport Autosuggest from './Autosuggest';\nimport Avatar from './Avatar';\nimport Backdrop from './Backdrop';\nimport BranchByFeature from './BranchByFeature';\nimport BulletedList from './BulletedList';\nimport Button from '@bit/be-novative.kit.button';\nimport Callout from './Callout';\nimport CategorySelector from './CategorySelector';\nimport ChallengeInfoModal from './ChallengeInfoModal';\nimport Checkbox from '@bit/be-novative.kit.checkbox';\nimport CheckboxButtonGroup from './CheckboxButtonGroup';\nimport CheckboxGroup from './CheckboxGroup';\nimport CircleSpinner from './CircleSpinner';\nimport Close from './Close';\nimport Collapse from './Collapse';\nimport ConfirmDialog from './ConfirmDialog';\nimport CookieConsent from './CookieConsent';\nimport CountrySelect from './CountrySelect';\nimport DateTime from './DateTime';\nimport DateTimeInput from './DateTimeInput';\nimport DateTimePicker from './DateTimePicker';\nimport DateTimeRangeInput from './DateTimeRangeInput';\nimport DateTimeRangePicker from './DateTimeRangePicker';\nimport Dot from './Dot';\nimport DumbTextarea from './DumbTextarea';\nimport EditableText from './EditableText';\nimport EditButton from './EditButton';\nimport Ellipsis from './Ellipsis';\nimport Embed from './Embed';\nimport FadeSlideUpTransition from './FadeSlideUpTransition';\nimport FadeTransition from './FadeTransition';\nimport formControl from '@bit/be-novative.kit.form-control';\nimport FullScreen from './FullScreen';\nimport Grid from './Grid';\nimport GridList from './GridList';\nimport Heading from './Heading';\nimport Heart from './Heart';\nimport HelpIcon from './HelpIcon';\nimport Icon from './Icon';\nimport ImagePreview from './ImagePreview';\nimport Input from '@bit/be-novative.kit.input';\nimport IntercomClient from './IntercomClient';\nimport Label from './Label';\nimport LanguageDropdown from './LanguageDropdown';\nimport LegalUpdateModal from './LegalUpdateModal';\nimport LinkifiedSafeHtml from './LinkifiedSafeHtml';\nimport Media, { MediaList } from './Media';\nimport Modal from './Modal';\nimport MutedText from './MutedText';\nimport Navbar from './Navbar';\nimport NonIdealState from './NonIdealState';\nimport Notice from './Notice';\nimport OverflowCounter from '@bit/be-novative.kit.overflow-counter';\nimport OverlayAction from './OverlayAction';\nimport Pagination from './Pagination';\nimport Panel from './Panel';\nimport Paragraph from './Paragraph';\nimport Password from '@bit/be-novative.kit.password';\nimport Popover from './Popover';\nimport PrimaryNavigation from './PrimaryNavigation';\nimport Progress from './Progress';\nimport RadioButtonGroup from './RadioButtonGroup';\nimport RadioGroup from './RadioGroup';\nimport Responsive, { withResponsive } from './Responsive';\nimport RichText from './RichText';\nimport RightSlideTransition from './RightSlideTransition';\nimport Select from '@bit/be-novative.kit.select';\nimport Separator from './Separator';\nimport ShareButton from './ShareButton';\nimport SliderInput from './SliderInput';\nimport Spinner from '@bit/be-novative.kit.spinner';\nimport Table from './Table';\nimport TagsInput from './TagsInput';\nimport Text from './Text';\nimport TruncatedText from './TruncatedText';\nimport Textarea from './Textarea';\nimport Tooltip, { withTooltip } from './Tooltip';\nimport TwoColumnLayout from './TwoColumnLayout';\nimport UrlInput from './UrlInput';\nimport UserItem from './UserItem';\n\nexport const AutosuggestFormControl = formControl(Autosuggest);\nexport const CheckboxFormControl = formControl(Checkbox);\nexport const CheckboxGroupFormControl = formControl(CheckboxGroup);\nexport const CountrySelectFormControl = formControl(CountrySelect);\nexport const DateTimeInputFormControl = formControl(DateTimeInput);\nexport const DateTimeRangeInputFormControl = formControl(DateTimeRangeInput);\nexport const DumbTextareaFormControl = formControl(DumbTextarea);\nexport const InlineEditableAutosuggest = EditableText.inlineEditable(\n Autosuggest\n);\nexport const InlineEditableDateTimeInput = EditableText.inlineEditable(\n DateTimeInput\n);\nexport const InputFormControl = formControl(Input);\nexport const ImagePreviewFormControl = formControl(ImagePreview);\nexport const PasswordFormControl = formControl(Password);\nexport const RadioButtonGroupFormControl = formControl(RadioButtonGroup);\nexport const RadioGroupFormControl = formControl(RadioGroup);\nexport const RichTextFormControl = formControl(RichText);\nexport const SelectFormControl = formControl(Select);\nexport const TagsInputFormControl = formControl(TagsInput);\nexport const TextareaFormControl = formControl(Textarea);\nexport const SliderInputFormControl = formControl(SliderInput);\nexport const UrlInputFormControl = formControl(UrlInput);\n\nexport {\n AcceptCheckboxField,\n Alerts,\n Autosuggest,\n Avatar,\n Backdrop,\n BranchByFeature,\n BulletedList,\n Button,\n Callout,\n CategorySelector,\n ChallengeInfoModal,\n Checkbox,\n CheckboxButtonGroup,\n CheckboxGroup,\n CircleSpinner,\n Close,\n Collapse,\n ConfirmDialog,\n CookieConsent,\n DateTime,\n DateTimeInput,\n DateTimePicker,\n DateTimeRangePicker,\n Dot,\n DumbTextarea,\n EditableText,\n EditButton,\n Ellipsis,\n Embed,\n FadeSlideUpTransition,\n FadeTransition,\n formControl,\n FullScreen,\n Grid,\n GridList,\n Heading,\n Heart,\n HelpIcon,\n Icon,\n Input,\n IntercomClient,\n Label,\n LanguageDropdown,\n LegalUpdateModal,\n LinkifiedSafeHtml,\n Media,\n MediaList,\n Modal,\n MutedText,\n Navbar,\n NonIdealState,\n Notice,\n OverflowCounter,\n OverlayAction,\n Pagination,\n Panel,\n Paragraph,\n Popover,\n PrimaryNavigation,\n Progress,\n RadioButtonGroup,\n Responsive,\n RichText,\n RightSlideTransition,\n Separator,\n ShareButton,\n SliderInput,\n Spinner,\n Table,\n TagsInput,\n Text,\n TruncatedText,\n Textarea,\n Tooltip,\n UserItem,\n TwoColumnLayout,\n withResponsive,\n withTooltip\n};\n","import React, { useCallback } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom';\nimport cn from 'classnames';\nimport scss from './Tab.module.scss';\n\nTabButton.propTypes = {\n active: PropTypes.bool,\n disabled: PropTypes.bool,\n onClick: PropTypes.func\n};\nTabButton.defaultProps = {\n onClick: () => {}\n};\nfunction TabButton({\n active,\n ariaId,\n className,\n children,\n disabled,\n onClick,\n to\n}) {\n const classes = cn(\n scss.Btn,\n {\n [scss.active]: active\n },\n className\n );\n const handleClick = useCallback(\n function maybePreventClick(event) {\n if (disabled) {\n event.preventDefault();\n } else if (isFunction(onClick)) {\n event.persist();\n onClick(event);\n }\n },\n [disabled, onClick]\n );\n\n const props = {\n children,\n onClick: handleClick,\n disabled,\n className: classes\n };\n const btnAria = ariaId\n ? {\n role: 'tab',\n 'aria-selected': active,\n 'aria-controls': ariaId,\n id: ariaId\n }\n : {};\n\n return to ? (\n \n ) : (\n \n\n {isSubmitFailed && (\n \n {t('legalUpdate/submitFail')}\n \n )}\n \n );\n }\n}\n\nconst mapStateToProps = state => ({\n userConsent: flow(\n ownProfileSelector,\n getUserConsent\n )(state)\n});\n\nconst mapDispatchToProps = {\n closeModal,\n updatePrivacy\n};\n\nexport default compose(\n translate(),\n connect(\n mapStateToProps,\n mapDispatchToProps\n ),\n withModal()\n)(LegalUpdateModal);\n","import LegalUpdateModal from './LegalUpdateModal';\n\nexport default LegalUpdateModal;\nexport * from './LegalUpdateModal';\n","import PropTypes from 'prop-types';\n\nexport const alignType = PropTypes.oneOf([\n 'start',\n 'left',\n 'center',\n 'middle',\n 'end',\n 'right'\n]);\n\nexport const categoryType = PropTypes.shape({\n categoryId: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired\n});\n\nexport const historyType = PropTypes.shape({\n push: PropTypes.func.isRequired\n});\n\nexport const imageDetailsType = PropTypes.shape({\n '@type': PropTypes.oneOf(['preset', 'external', 'uploaded']),\n url: PropTypes.string,\n content: PropTypes.string,\n width: PropTypes.number,\n height: PropTypes.number\n});\n\nexport const userCoreInfoType = PropTypes.shape({\n userId: PropTypes.string.isRequired,\n fullName: PropTypes.shape({\n firstName: PropTypes.string.isRequired,\n lastName: PropTypes.string.isRequired\n }).isRequired,\n name: PropTypes.string.isRequired,\n image: imageDetailsType\n});\n\nexport const refType = PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n]);\n","import flow from 'lodash/flow';\nimport get from 'lodash/get';\nimport { createSelector } from 'reselect';\nimport { entities } from '../../constants';\nimport { getEntity, getEntityMap } from './entities';\nimport { convertUserToInvitee } from '../../utils/payloadUtils/invitee';\n\n// Collection selectors\n\nexport const getUserEntity = getEntity(entities.USER);\n\nexport const getUserById = getUserEntity;\n\nexport const makeGetUserEntity = () =>\n createSelector(\n getEntityMap(entities.USER),\n (_, userId) => userId,\n (users, id) => get(users, id)\n );\n\nexport const getUserByIdAsInvitee = userId => state =>\n flow(\n getUserEntity(userId),\n convertUserToInvitee\n )(state);\n","import findIndexFp from 'lodash/fp/findIndex';\nimport flow from 'lodash/flow';\nimport get from 'lodash/get';\nimport getFp from 'lodash/fp/get';\nimport head from 'lodash/head';\nimport isEqualFp from 'lodash/fp/isEqual';\nimport maxByFp from 'lodash/fp/maxBy';\nimport sortBy from 'lodash/sortBy';\nimport toPairs from 'lodash/toPairs';\nimport tail from 'lodash/tail';\nimport { createSelector } from 'reselect';\nimport { rootSelector } from '.';\n\nconst getMovementRoot = flow(\n rootSelector,\n getFp('movement')\n);\n\nconst getPositionMap = state =>\n flow(\n getMovementRoot,\n getFp('position')\n )(state);\n\nexport const getCanvasItemPosition = createSelector(\n getPositionMap,\n (_, itemId) => itemId,\n (positionMap, itemId) => get(positionMap, itemId, [0, 0])\n);\n\nexport const makeGetCanvasItemPosition = () => getCanvasItemPosition;\n\nexport const getUserMovedItemId = state =>\n flow(\n getMovementRoot,\n getFp('itemMovedByUser')\n )(state);\n\nconst getLastMovementMap = flow(\n getMovementRoot,\n getFp('lastMoved')\n);\n\nconst sortByLastMoveAsc = tuples => sortBy(tuples, tail);\nconst findHighestByTupleTail = maxByFp(tail);\n\nexport const getLastUserMovedItemId = createSelector(\n getLastMovementMap,\n movementMap =>\n flow(\n toPairs,\n sortByLastMoveAsc,\n findHighestByTupleTail,\n head\n )(movementMap)\n);\n\nconst getZIndexByItemId = createSelector(\n getLastMovementMap,\n (_, itemId) => itemId,\n (movementMap, itemId) => {\n const isEqualToItemId = flow(\n head,\n String,\n isEqualFp(String(itemId))\n );\n const getZIndexByMoveOrder = flow(\n toPairs,\n sortByLastMoveAsc,\n findIndexFp(isEqualToItemId)\n );\n return Math.max(1, getZIndexByMoveOrder(movementMap) + 1);\n }\n);\n\nexport const makeGetZIndexByItemId = () => getZIndexByItemId;\n","import PropTypes from 'prop-types';\n\nconst stringOrNumberProp = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n]);\n\nexport const tag = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n\nexport const column = PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.oneOf(['auto'])\n]);\n\nexport const spacing = PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n PropTypes.shape({\n x: stringOrNumberProp,\n y: stringOrNumberProp\n })\n]);\n\nexport default {\n tag,\n column,\n spacing\n};\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport GridPropTypes from './PropTypes';\nimport { withResponsive } from '../Responsive';\nimport './Row.css';\n\nconst Row = props => {\n const { className, tag: Tag, gutter, align, noWrap, ...rest } = props;\n\n const classes = classNames(className, 'Row', `Row--${gutter}`, {\n [`Row--${align}`]: align,\n 'Row--no-wrap': !!noWrap\n });\n\n return ;\n};\n\nRow.propTypes = {\n tag: GridPropTypes.tag,\n className: PropTypes.string,\n gutter: PropTypes.number,\n noWrap: PropTypes.bool,\n align: PropTypes.oneOf(['center', 'stretch'])\n};\n\nRow.defaultProps = {\n tag: 'div',\n gutter: 2\n};\n\nexport default withResponsive(Row);\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport isUndefined from 'lodash/isUndefined';\nimport kebabCase from 'lodash/kebabCase';\nimport GridPropTypes from './PropTypes';\nimport { withResponsive } from '../Responsive';\nimport './Col.css';\n\nconst widths = ['xs', 'sm', 'md', 'lg', 'xl'];\n\nconst responsiveSuffix = value => (value === 'xs' ? '' : `@${value}`);\n\nconst popProp = (acc, size, props, suffix) => {\n const propName = size + suffix;\n const value = props[propName];\n if (isUndefined(value)) {\n return;\n }\n\n let className = `Col--${suffix ? `${kebabCase(suffix)}-` : ''}${value}${suffix\n ? ''\n : '-12'}`;\n\n className += responsiveSuffix(size);\n\n delete props[propName];\n acc.push(className);\n};\n\nfunction Col(props) {\n const {\n className,\n tag: Tag,\n stretch,\n first,\n last,\n unordered,\n ...rest\n } = props;\n\n const colClasses = widths.reduce((acc, size, i) => {\n popProp(acc, size, rest, '');\n popProp(acc, size, rest, 'Offset');\n popProp(acc, size, rest, 'Gutter');\n popProp(acc, size, rest, 'GutterX');\n popProp(acc, size, rest, 'GutterY');\n return acc;\n }, []);\n\n const classes = classNames(className, 'Col', ...colClasses, {\n 'Col--stretch': stretch,\n [`Col--first${responsiveSuffix(first)}`]: !!first,\n [`Col--last${responsiveSuffix(last)}`]: !!last,\n [`Col--unordered${responsiveSuffix(unordered)}`]: !!unordered\n });\n\n return ;\n}\n\nCol.propTypes = {\n tag: GridPropTypes.tag,\n xs: GridPropTypes.column,\n sm: GridPropTypes.column,\n md: GridPropTypes.column,\n lg: GridPropTypes.column,\n xl: GridPropTypes.column,\n xsOffset: PropTypes.number,\n smOffset: PropTypes.number,\n mdOffset: PropTypes.number,\n lgOffset: PropTypes.number,\n xlOffset: PropTypes.number,\n xsGutter: PropTypes.number,\n smGutter: PropTypes.number,\n mdGutter: PropTypes.number,\n lgGutter: PropTypes.number,\n xlGutter: PropTypes.number,\n xsGutterX: PropTypes.number,\n smGutterX: PropTypes.number,\n mdGutterX: PropTypes.number,\n lgGutterX: PropTypes.number,\n xlGutterX: PropTypes.number,\n xsGutterY: PropTypes.number,\n smGutterY: PropTypes.number,\n mdGutterY: PropTypes.number,\n lgGutterY: PropTypes.number,\n xlGutterY: PropTypes.number,\n className: PropTypes.string,\n stretch: PropTypes.bool,\n first: PropTypes.oneOf(widths),\n last: PropTypes.oneOf(widths),\n unordered: PropTypes.oneOf(widths)\n};\n\nCol.defaultProps = {\n tag: 'div',\n stretch: false\n};\n\nexport default withResponsive(Col);\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport GridPropTypes from './PropTypes';\nimport './Container.css';\n\nconst widths = ['sm', 'md', 'lg', 'xl'];\n\nconst Container = props => {\n const { className, fluid, children, tag: Tag, ...rest } = props;\n\n const classes = classNames(\n className,\n fluid ? 'Container--fluid' : 'Container',\n ...widths.filter(width => rest[width]).map(width => `Container@${width}`)\n );\n\n return {children};\n};\n\nContainer.propTypes = {\n tag: GridPropTypes.tag,\n fluid: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n sm: PropTypes.bool,\n md: PropTypes.bool,\n lg: PropTypes.bool,\n xl: PropTypes.bool\n};\n\nContainer.defaultProps = {\n tag: 'div',\n fluid: false\n};\n\nexport default Container;\n","import Row from './Row';\nimport Col from './Col';\nimport Container from './Container';\n\nconst Grid = {\n Row,\n Col,\n Container\n};\n\nexport default Grid;\nexport { Row, Col, Container };\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport './Media.css';\n\nMedia.propTypes = {\n active: PropTypes.bool,\n align: PropTypes.oneOf(['left', 'right']),\n bodyAlign: PropTypes.oneOf(['middle', 'top', 'bottom']),\n children: PropTypes.node,\n hideOverflow: PropTypes.bool,\n mediaObject: PropTypes.node,\n onClick: PropTypes.func\n};\n\nMedia.defaultProps = {\n align: 'left',\n bodyAlign: 'top',\n hideOverflow: true\n};\n\nfunction Media({\n active,\n align,\n bodyAlign,\n children,\n className,\n hideOverflow,\n mediaObject,\n onClick,\n to\n}) {\n const classes = classNames('Media', className, {\n 'Media--clickable': !!onClick,\n 'Media--active': active,\n 'Media--hideOverflow': hideOverflow,\n [`Media--align-${bodyAlign}`]: !!bodyAlign\n });\n const bodyClasses = classNames('Media__Body', {});\n const Tag = onClick || to ? Link : 'div';\n\n return (\n \n {align === 'left' &&
    {mediaObject}
    }\n
    {children}
    \n {align === 'right' &&
    {mediaObject}
    }\n
    \n );\n}\n\nexport default Media;\n","import React, { Children } from 'react';\nimport classNames from 'classnames';\nimport './MediaList.css';\n\nexport default function MediaList({ children, className, condensed }) {\n const classes = classNames(\n 'MediaList',\n {\n 'MediaList--condensed': condensed\n },\n className\n );\n\n return (\n
      \n {Children.map(children, child => (\n
    • {child}
    • \n ))}\n
    \n );\n}\n","import startsWith from 'lodash/startsWith';\nimport * as Sentry from '@sentry/browser';\nimport { stringifyQueryParams } from '../utils/parseQueryString';\n\nexport const login = redirectPath => {\n let loginPath = '/login';\n\n if (redirectPath) {\n loginPath += `?redirect=${redirectPath}`;\n }\n\n if (startsWith(loginPath, '//')) {\n Sentry.captureException(new Error('Invalid redirect target'));\n }\n\n return loginPath;\n};\n\nexport const registration = query =>\n `/registration${stringifyQueryParams(query)}`;\n\nexport const socialSignup = () => '/social';\n\nexport default {\n registration,\n socialSignup,\n login\n};\n","import snakeCase from 'lodash/snakeCase';\nimport toUpper from 'lodash/toUpper';\nimport * as Sentry from '@sentry/browser';\nimport { Severity } from './constants';\nimport { ErrorLoggerSeverity } from './errorLogging/constants';\nimport trackTrace from './monitoring/trackTrace';\nimport { MonitoringSeverity } from './monitoring/constants';\n\nconst DEFAULTS = {\n level: Severity.Info,\n data: undefined,\n category: undefined\n};\n\n/**\n * @typedef {Object} BreadcrumbConfig\n * @property {Severity} [level] - Log level. Defaults to Info.\n * @property {import('./types/jsdoc').BreadcrumbCategory} [category] - Feature or domain, e.g. `\"challenge\", \"bootstrap\"`. In Sentry, this is also set as the custom `feature` tag for the error report.\n * @property {Object} [data] - Optional log data object\n */\n\n/**\n * Submits a breadcrumb to telemetry providers\n * @param {string} message - Message to be logged in telemetry services\n * @param {BreadcrumbConfig} options - Optional configuration object\n * @return {void}\n */\n\nexport default function addBreadcrumb(message, options = DEFAULTS) {\n const { data, level, category } = {\n ...DEFAULTS,\n ...options\n };\n trackTrace(\n `[${toUpper(category)}] ${message}`,\n data,\n MonitoringSeverity[level]\n );\n if (message instanceof Error) {\n Sentry.captureException(message, {\n tags: { feature: snakeCase(category) }\n });\n } else {\n Sentry.addBreadcrumb({\n message,\n level: ErrorLoggerSeverity[level],\n data,\n category\n });\n }\n}\n\nexport { Severity };\n","// login\n\nexport const LOGIN_BUTTON_CLICK = 'LOGIN_BUTTON_CLICK';\nexport const loginButtonClick = {\n type: LOGIN_BUTTON_CLICK\n};\n\n// signup\n\nexport const USER_SIGNUP = 'USER_SIGNUP';\nexport const signUpButtonClick = withInvitation => ({\n type: USER_SIGNUP,\n meta: {\n metrics: {\n withInvitation\n }\n }\n});\n\nexport const CONTINUE_SIGNUP_BUTTON_CLICK = 'CONTINUE_SIGNUP_BUTTON_CLICK';\nexport const continueSignUp = () => dispatch => {\n dispatch({\n type: CONTINUE_SIGNUP_BUTTON_CLICK\n });\n};\n\n// social\n\nexport const SOCIAL_LOGIN_CLICKED = 'SOCIAL_LOGIN_CLICKED';\nexport const socialLoginClicked = provider => ({\n type: SOCIAL_LOGIN_CLICKED,\n meta: { provider }\n});\n\nexport const SOCIAL_SIGN_UP_BUTTON_CLICK = 'SOCIAL_SIGN_UP_BUTTON_CLICK';\nexport const socialSignUpButtonClick = provider => ({\n type: SOCIAL_SIGN_UP_BUTTON_CLICK,\n meta: {\n metrics: {\n provider\n }\n }\n});\n","import flow from 'lodash/flow';\nimport get from 'lodash/fp/get';\nimport { handleActions } from 'redux-actions';\nimport { SESSION_STATUS, S_ID } from '../constants';\nimport { rootSelector } from '../selectors';\n\nexport const UPDATE_SESSION_STATUS = 'UPDATE_SESSION_STATUS';\nexport const updateSessionStatus = sessionStatus => ({\n type: UPDATE_SESSION_STATUS,\n payload: sessionStatus,\n meta: { canvasId: S_ID }\n});\n\nconst status = handleActions(\n {\n [UPDATE_SESSION_STATUS]: (_, { payload }) => payload\n },\n SESSION_STATUS.INACTIVE\n);\n\nexport const getSessionStatus = state =>\n flow(\n rootSelector,\n get('status')\n )(state);\n\nexport default status;\n","import {\n SUBDOMAIN_VALIDATE,\n FETCH_UPDATE_PAYMENT_METHOD_URL,\n ACKNOWLEDGE_UPDATE_PAYMENT\n} from '../../constants';\nimport { VOYAGER_API, IDENTITY_API } from '../../api/constants';\n\n/**\n * @deprecated\n */\nexport const getUpdatePaymentMethodURL = () => ({\n [VOYAGER_API]: {\n url: '/company/payment/update',\n method: 'GET',\n type: FETCH_UPDATE_PAYMENT_METHOD_URL\n }\n});\n\n/**\n * @deprecated\n */\nexport const acknowledgeUpdatePayment = hostedPageId => ({\n [VOYAGER_API]: {\n url: '/company/payment/update/acknowledge',\n method: 'POST',\n type: ACKNOWLEDGE_UPDATE_PAYMENT,\n data: { hostedPageId }\n }\n});\n\n/**\n * @deprecated\n * Still working, 409 if already exists, 200 if ok\n * todo move to subfolder api\n */\nexport const validateSubdomain = subdomain => {\n return {\n [IDENTITY_API]: {\n url: `/subdomains/${subdomain}/available`,\n method: 'GET',\n type: SUBDOMAIN_VALIDATE\n }\n };\n};\n","import { createAction } from 'redux-actions';\nimport {\n NAVIGATION_CONFIRM,\n NAVIGATION_CONFIRM_CLEAR,\n ROUTE_CHANGE\n} from '../../constants';\n\nexport const confirmNavigation = createAction(NAVIGATION_CONFIRM);\nexport const clearNavigationConfirm = createAction(NAVIGATION_CONFIRM_CLEAR);\nexport const routeChange = createAction(ROUTE_CHANGE);\n","import { EMAIL_VALIDATE } from '../../constants';\nimport { IDENTITY_API } from '../../api/constants';\n\nexport const validateEmail = email => {\n return {\n [IDENTITY_API]: {\n url: `registration/email-availability/${email}`,\n method: 'GET',\n type: EMAIL_VALIDATE\n }\n };\n};\n","import { createAction } from 'redux-actions';\nimport {\n NOTIFICATIONS_INIT,\n NOTIFICATION_RECEIVED,\n NOTIFICATION_READ\n} from '../../constants';\nimport { SOCKET_ID } from '../../api/constants';\nimport { SOCKET_SUBSCRIBE, SOCKET_UNSUBSCRIBE } from './socket';\n\nconst initNotifications = createAction(NOTIFICATIONS_INIT);\nconst receivedNotification = createAction(NOTIFICATION_RECEIVED);\nconst markNotificationRead = createAction(NOTIFICATION_READ);\n\nconst serverEvents = {\n 'com.benovative.voyager.api.websocket.NotificationList': initNotifications,\n 'com.benovative.voyager.api.websocket.Notification': receivedNotification,\n 'com.benovative.voyager.api.websocket.NotificationRead': markNotificationRead\n};\n\nexport { initNotifications, receivedNotification, markNotificationRead };\n\nexport const subscribeNotifications = () => {\n return {\n type: SOCKET_SUBSCRIBE,\n payload: serverEvents,\n meta: { socketId: SOCKET_ID.NOTIFICATION }\n };\n};\n\nexport const unsubscribeNotifications = () => {\n return {\n type: SOCKET_UNSUBSCRIBE,\n payload: serverEvents,\n meta: { socketId: SOCKET_ID.NOTIFICATION }\n };\n};\n","import { createAction } from 'redux-actions';\nimport { INTERNET_STATUS_CHANGE } from '../../constants';\n\nexport const changeInternetStatus = createAction(INTERNET_STATUS_CHANGE);\n","import { createAction } from 'redux-actions';\nimport { ONBOARDING_ENTER, ONBOARDING_LEAVE } from '../../constants';\n\nexport const enterOnboarding = createAction(ONBOARDING_ENTER);\nexport const leaveOnboarding = createAction(ONBOARDING_LEAVE);\n","import trim from 'lodash/trim';\nimport i18n from 'i18next';\nimport {\n SUCCESS_LANGUAGE_CHANGE,\n FAILURE_LANGUAGE_CHANGE,\n SIDENAV_CLOSE,\n SIDENAV_OPEN,\n SHARE_BUTTON_INSIDE_THE_SHARE_MODAL_CLICK,\n COPY_TO_CLIPBOARD_BUTTON_CLICK\n} from '../../constants';\nimport { persistPreferredLanguage } from '../../utils/storage';\nimport { updatePreferredLocale } from '../../profile/state/profile';\n\nexport * from './alert';\nexport * from './modal';\nexport * from './challenges';\nexport * from './love';\nexport * from './company';\nexport * from './navigation';\nexport * from './users';\nexport * from './profile';\nexport * from './notifications';\nexport * from './network';\nexport * from './suggestions';\nexport * from './onboarding';\nexport * from './ideaConcepts';\n\nexport function changeLanguage(lang) {\n return function(dispatch) {\n if (trim(lang).length) {\n i18n.changeLanguage(lang, err => {\n if (err) {\n return dispatch({\n type: FAILURE_LANGUAGE_CHANGE,\n payload: err\n });\n }\n persistPreferredLanguage(lang);\n dispatch(updatePreferredLocale(lang));\n dispatch({\n type: SUCCESS_LANGUAGE_CHANGE,\n payload: lang\n });\n });\n }\n };\n}\n\nexport function openSidenav() {\n return {\n type: SIDENAV_OPEN\n };\n}\n\nexport function closeSidenav() {\n return {\n type: SIDENAV_CLOSE\n };\n}\n\nexport const shareButtonClick = network => dispatch => {\n dispatch({\n type: SHARE_BUTTON_INSIDE_THE_SHARE_MODAL_CLICK,\n meta: {\n metrics: {\n provider: network\n }\n }\n });\n};\n\nexport const ERASE_STORES = 'ERASE_STORES';\n\nexport const eraseStores = { type: ERASE_STORES };\n\nexport const copyToClipboardClicked = () => dispatch => {\n dispatch({\n type: COPY_TO_CLIPBOARD_BUTTON_CLICK\n });\n};\n","import * as ConfigCat from 'configcat-js';\nimport { getPlatformName } from '../utils/platform';\n\nconst POLLING_INTERVAL = 60;\n\nconst targetingData = { custom: { platformName: getPlatformName() } };\n\nconst logger = ConfigCat.createConsoleLogger(1);\n\nconst configCatClient = ConfigCat.createClientWithLazyLoad(\n process.env.REACT_APP_CONFIGCAT_SDK_KEY,\n {\n cacheTimeToLiveSeconds: POLLING_INTERVAL,\n logger\n }\n);\n\nexport async function getFeatureFlagAsync(flagKey, fallbackValue) {\n return configCatClient.getValueAsync(flagKey, fallbackValue, targetingData);\n}\n\nexport function getAllFeatureFlagKeys(callback) {\n return configCatClient.getAllKeys(callback);\n}\n","import trim from 'lodash/trim';\nimport LocalStorage from 'store2';\nimport { PREFERRED_LANGUAGE_LOCALSTORAGE_KEY } from '../constants';\n\nexport function persistPreferredLanguage(lang) {\n if (trim(lang)) {\n LocalStorage.set(PREFERRED_LANGUAGE_LOCALSTORAGE_KEY, lang);\n }\n}\n\nexport function getPreferredLanguage() {\n return LocalStorage.get(PREFERRED_LANGUAGE_LOCALSTORAGE_KEY);\n}\n","import cloneDeep from 'lodash/cloneDeep';\nimport filter from 'lodash/filter';\nimport flow from 'lodash/flow';\nimport get from 'lodash/fp/get';\nimport includes from 'lodash/includes';\nimport isEmpty from 'lodash/fp/isEmpty';\nimport isEqual from 'lodash/fp/isEqual';\nimport negate from 'lodash/negate';\nimport unset from 'lodash/unset';\nimport { handleActions } from 'redux-actions';\nimport forceArray from '../../../utils/forceArray';\nimport {\n FILTER_ITEMS_BY,\n REMOVE_FILTER,\n REMOVE_FILTER_TYPE\n} from '../../actions/meta';\n\nconst addOrUpdateFilter = (filters = {}, action = {}) => {\n const { key, value } = action.payload;\n const shouldOverwrite = get(['meta', 'overwrite'])(action);\n\n if (shouldOverwrite) {\n return {\n ...filters,\n [key]: forceArray(value)\n };\n } else {\n const existingValues = filters[key] || [];\n\n return {\n ...filters,\n [key]: [...existingValues, value]\n };\n }\n};\n\nconst removeFilter = (filters = {}, action = {}) => {\n const { key, value: arrayOfTargetValues } = action.payload;\n const existingVals = filters[key];\n const dropTargets = negate(val => includes(arrayOfTargetValues, val));\n const updatedFilter = filter(existingVals, dropTargets);\n\n return {\n ...filters,\n [key]: isEmpty(updatedFilter) ? undefined : updatedFilter\n };\n};\n\nconst removeAllFiltersWithKey = (filters = {}, action = {}) => {\n const key = action.payload;\n const updatedFilters = cloneDeep(filters);\n\n unset(updatedFilters, key);\n\n return updatedFilters;\n};\n\nconst filterReducerFactory = (reducerId, defaultFilters = {}) => {\n const reducerIdMatches = flow(\n get(['meta', 'reducerId']),\n isEqual(reducerId)\n );\n\n return handleActions(\n {\n [FILTER_ITEMS_BY](state, action) {\n if (reducerIdMatches(action)) {\n return addOrUpdateFilter(state, action);\n }\n return state;\n },\n [REMOVE_FILTER](state, action) {\n if (reducerIdMatches(action)) {\n return removeFilter(state, action);\n }\n return state;\n },\n [REMOVE_FILTER_TYPE](state, action) {\n if (reducerIdMatches(action)) {\n return removeAllFiltersWithKey(state, action);\n }\n return state;\n }\n },\n defaultFilters\n );\n};\n\nexport default filterReducerFactory;\n","import get from 'lodash/get';\nimport { handleActions } from 'redux-actions';\n\nconst DEFAULT = {\n sortBy: '',\n sortDirection: ''\n};\n\nconst sortingReducerFactory = (actionType, defaultState = DEFAULT) => {\n return handleActions(\n {\n [actionType.SUCCESS](state, currentAction) {\n return {\n sortBy: get(currentAction, ['meta', 'sortBy'], get(state, 'sortBy')),\n sortDirection: get(\n currentAction,\n ['meta', 'sortDirection'],\n get(state, 'sortDirection')\n )\n };\n }\n },\n defaultState\n );\n};\n\nexport default sortingReducerFactory;\n","import flow from 'lodash/flow';\nimport getFp from 'lodash/fp/get';\nimport isEqual from 'lodash/fp/isEqual';\nimport filteredReducerCall from '../../utils/filteredReducerCall';\nimport { FLUSH_CONCEPT_IDS } from '../constants';\n\nconst actionMatchesStage = (action, stageId) =>\n flow(\n getFp(['meta', 'activeTab']),\n isEqual(stageId)\n )(action);\n\nconst isFlushAction = flow(\n getFp('type'),\n isEqual(FLUSH_CONCEPT_IDS)\n);\n\nexport default function reduceStageFiltersToReducers(stageIds = [], reducerFn) {\n return stageIds.reduce((reducerMap, stageId) => {\n reducerMap[stageId] = filteredReducerCall(\n action => actionMatchesStage(action, stageId) || isFlushAction(action),\n reducerFn\n );\n return reducerMap;\n }, {});\n}\n","import { combineReducers } from 'redux';\nimport {\n FETCH_IDEA_CONCEPTS,\n idProps,\n CREATE_IDEA_CONCEPT,\n FLUSH_CONCEPT_IDS,\n stagesWithOwnFilters,\n OTHER_FILTER_ID,\n conceptListFilterKeys,\n stagesWithOwnFiltersCepheid\n} from '../constants';\nimport {\n CONCEPT_LIST_DEFAULT_STAGE_FILTER,\n CONCEPT_LIST_DEFAULT_SORT,\n CONCEPT_LIST_PAGE_SIZE\n} from '../config';\nimport {\n entityIdReducerFactory,\n errorReducerFactory,\n loadingReducerFactory,\n paginationReducerFactory\n} from '../../common/reducers/factories';\nimport filterReducerFactory from '../../common/reducers/factories/filter';\nimport sortingReducerFactory from '../../common/reducers/factories/sorting';\nimport reduceFiltersToReducers from '../utils/listReducer';\nimport { isCepheidVariant } from '../../utils/variants';\n\nexport const REDUCER_ID = 'conceptList';\nconst stageFilters = isCepheidVariant()\n ? stagesWithOwnFiltersCepheid\n : stagesWithOwnFilters;\n\nconst paginationReducer = paginationReducerFactory(\n {\n successActions: FETCH_IDEA_CONCEPTS.SUCCESS,\n flushActions: FLUSH_CONCEPT_IDS\n },\n {\n cursorBased: true,\n limit: CONCEPT_LIST_PAGE_SIZE\n }\n);\n\nexport default combineReducers({\n loading: loadingReducerFactory(FETCH_IDEA_CONCEPTS),\n error: errorReducerFactory(FETCH_IDEA_CONCEPTS),\n filterBy: filterReducerFactory(REDUCER_ID, {\n [conceptListFilterKeys.STAGE]: CONCEPT_LIST_DEFAULT_STAGE_FILTER\n }),\n pagination: combineReducers({\n ...reduceFiltersToReducers(\n [...stageFilters, OTHER_FILTER_ID],\n paginationReducer\n )\n }),\n sort: sortingReducerFactory(FETCH_IDEA_CONCEPTS, CONCEPT_LIST_DEFAULT_SORT),\n visibleIds: entityIdReducerFactory(\n {\n successActions: [\n FETCH_IDEA_CONCEPTS.SUCCESS,\n CREATE_IDEA_CONCEPT.SUCCESS\n ],\n flushActions: FLUSH_CONCEPT_IDS\n },\n {\n idProp: idProps.IDEA_CONCEPT_ID\n }\n )\n});\n","import values from 'lodash/values';\nimport pick from 'lodash/pick';\nimport { produce } from 'immer';\nimport { maybeHtmlFromState } from '@bit/be-novative.kit.richtext-utils';\nimport { PROFILE_FORM_FIELDS, TERMS_AND_PRIVACY_ACCEPTED } from '../constants';\nimport isValidImageObject from '../../utils/isValidImageObject';\n\nconst { DESCRIPTION, IMAGE } = PROFILE_FORM_FIELDS;\n\nexport const pickValidProfileKeys = formData =>\n pick(formData, values(PROFILE_FORM_FIELDS));\n\n/**\n * Sanitizes the form model for the API and converts rich text into HTML string\n * @param {OwnProfilePayload} formData - The form editor form model\n * @return {OwnProfilePayload} The sanitized payload\n */\n\nexport const createProfilePayload = formData => ({\n ...pickValidProfileKeys(formData),\n [DESCRIPTION]: maybeHtmlFromState(formData[DESCRIPTION]),\n [IMAGE]: isValidImageObject(formData[IMAGE]) ? formData[IMAGE] : null\n});\n\n/**\n * Arranges the user's existing and updated consent booleans into the map required by the API\n * @param {Object} existingConsent - The existing consent map in the user's profile\n * @param {Object} newSettings - The new consent settings\n * @return {Object} The composed and namespaced consent map\n */\n\nexport const createPrivacyPayload = (existingConsent, newSettings) => ({\n ...newSettings,\n [TERMS_AND_PRIVACY_ACCEPTED]:\n newSettings[TERMS_AND_PRIVACY_ACCEPTED] ||\n existingConsent[TERMS_AND_PRIVACY_ACCEPTED]\n});\n\n/**\n * Scrubs personal data from a profile payload intended for the API\n * @param {OwnProfilePayload} payload\n * @returns {OwnProfilePayload} The scrubbed payload\n */\nexport const scrubProfilePayload = produce(payload => {\n payload[PROFILE_FORM_FIELDS.FIRST_NAME] = '[scrubbed]';\n payload[PROFILE_FORM_FIELDS.LAST_NAME] = '[scrubbed]';\n payload[PROFILE_FORM_FIELDS.WORKPLACE] = '[scrubbed]';\n payload[PROFILE_FORM_FIELDS.POSITION] = '[scrubbed]';\n});\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Wrapper\":\"ConceptImageInput_Wrapper__3fdyf\",\"ContentWrapper\":\"ConceptImageInput_ContentWrapper__xaAqp\",\"Img\":\"ConceptImageInput_Img__1_T4W\",\"Tools\":\"ConceptImageInput_Tools__1l3sp\"};","import React, { memo, useEffect } from 'react';\nimport isEmpty from 'lodash/isEmpty';\nimport upperFirst from 'lodash/upperFirst';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { Field } from 'react-final-form';\nimport { translate } from 'react-i18next';\nimport { required } from '../../../utils/validation';\nimport { sendAlert } from '../../actions/alert';\nimport { isLoadingNew, hasFailed } from '../../selectors/meta';\nimport { selectors as categSelectors } from '../../state/categories';\nimport useFetchCategories from '../../hooks/useFetchCategories';\nimport formControl from '@bit/be-novative.kit.form-control';\nimport Select from '@bit/be-novative.kit.select';\n\nconst SelectFormControl = formControl(Select);\n\nCategorySelector.propTypes = {\n defaultValue: PropTypes.string,\n name: PropTypes.string.isRequired,\n showAllCategs: PropTypes.bool,\n t: PropTypes.func.isRequired\n};\nexport function CategorySelector({\n defaultValue,\n name,\n showAllCategs,\n t,\n ...restOfProps\n}) {\n const dispatch = useDispatch();\n const categories = useFetchCategories({ showAllCategs });\n const categStatus = useSelector(categSelectors.getStatus);\n const isLoading = isLoadingNew(categStatus);\n const hasError = hasFailed(categStatus);\n const isDisabled = isLoading || hasError || isEmpty(categories);\n\n useEffect(\n function showError() {\n if (hasError) {\n dispatch(\n sendAlert({\n kind: 'danger',\n message: t('common/prop/category/loadError')\n })\n );\n }\n },\n [dispatch, hasError, t]\n );\n\n return (\n \n \n {categories.map(({ categoryId, name }) => (\n \n ))}\n \n );\n}\n\nexport default compose(\n memo,\n translate()\n)(CategorySelector);\n","import CategorySelector from './CategorySelector';\n\nexport default CategorySelector;\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport isEqual from 'lodash/isEqual';\nimport { denormalize } from 'normalizr';\nimport { getEntities, hasEntityFailed } from '../../common/selectors/entities';\nimport { getConceptById } from '../selectors/ideaConcepts';\nimport { fetchIdeaConceptById } from '../../common/actions/ideaConcepts';\nimport schemas from '../schemas';\nimport { entities } from '../constants';\n\n/**\n * @typedef {Object} IdeaConceptHookApi\n * @property {() => boolean} isLoading - Returns whether the concept is being fetched\n * @property {() => boolean} getError - Returns whether the error if concept fetch has failed\n * @property {() => Promise} fetch - Callback for triggering concept re-fetch\n * @property {() => IdeaConcept} denorm - Expensive function for denormalising the idea concept\n */\n\n/**\n * Provides a normalised idea concept,\n * which is fetched from the server if it's not available in the Redux state.\n *\n * Getters are provided for status indicators, as well as for the denormalised idea concept.\n * @param {string} conceptId\n * @returns {[IdeaConcept, api: IdeaConceptHookApi]} A tuple of the idea concept and its related API\n */\nexport default function useIdeaConcept(conceptId) {\n const normalisedConcept = useSelector(getConceptById(conceptId), isEqual);\n const [loading, setLoading] = useState(false);\n const error = useSelector(hasEntityFailed(entities.IDEA_CONCEPT)(conceptId));\n\n const dispatch = useDispatch();\n const fetchConcept = useCallback(\n async function fetchConcept() {\n if (!conceptId || loading) {\n return;\n }\n try {\n setLoading(true);\n await dispatch(fetchIdeaConceptById(conceptId));\n } catch (error) {\n console.error(error);\n }\n setLoading(false);\n },\n [dispatch, conceptId, loading]\n );\n\n useEffect(\n function fetchIfEmpty() {\n if (!normalisedConcept && !loading && !error && conceptId) {\n fetchConcept();\n }\n },\n [conceptId, error, fetchConcept, loading, normalisedConcept]\n );\n\n const existingEntities = useSelector(getEntities);\n const denorm = useCallback(\n function denorm() {\n if (!normalisedConcept) {\n return {};\n }\n return denormalize(\n normalisedConcept,\n schemas.IDEA_CONCEPT,\n existingEntities\n );\n },\n [existingEntities, normalisedConcept]\n );\n\n const api = useMemo(\n () => ({\n isLoading: () => loading,\n getError: () => error,\n fetch: fetchConcept,\n denorm\n }),\n [loading, error, fetchConcept, denorm]\n );\n\n return [normalisedConcept, api];\n}\n","import React, { useCallback, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { translate } from 'react-i18next';\nimport Button from '@bit/be-novative.kit.button';\nimport Callout from '../../components/Callout';\nimport signupApi from '../../../authentication/api/signupApi';\nimport { getToken } from '../../../authentication/services/token.service';\nimport { sendAlert } from '../../actions/alert';\n\nexport function EmailConfirmationCallout({ t }) {\n const dispatch = useDispatch();\n const [submitting, setSubmitting] = useState(false);\n const [success, setSuccess] = useState(false);\n\n const handleRequestEmail = useCallback(() => {\n setSubmitting(true);\n signupApi\n .resendAccountVerificationEmail(getToken())\n .then(() => {\n setSuccess(true);\n dispatch(\n sendAlert({\n kind: 'success',\n message: t('authentication/accountConfirm/success')\n })\n );\n })\n .catch(() => {\n dispatch(\n sendAlert({\n kind: 'danger',\n message: t('authentication/accountConfirm/error')\n })\n );\n })\n .finally(() => {\n setSubmitting(false);\n });\n }, [dispatch, t]);\n\n return (\n \n {t('authentication/accountConfirm/description')}{' '}\n {!success && (\n \n {t('authentication/accountConfirm/resendCTA')}\n \n )}\n \n );\n}\n\nexport default translate()(EmailConfirmationCallout);\n","import EmailConfirmationCallout from './EmailConfirmationCallout';\n\nexport default EmailConfirmationCallout;\n","import paths from '../paths';\nimport { conceptSubpage } from '../ideaConcept/paths';\nimport { ChallengeIdeasSortBy } from '../challenge/constants';\n\nexport const NotificationType = {\n CHALLENGE_STARTED: {\n name: 'CHALLENGE_STARTED',\n iconType: 'rocket',\n color: 'warning'\n },\n CHALLENGE_ENDED: {\n name: 'CHALLENGE_ENDED',\n iconType: 'clock',\n color: 'info'\n },\n CHALLENGE_INVITATION: {\n name: 'CHALLENGE_INVITATION',\n iconType: 'airplane',\n color: 'info'\n },\n GROUP_IDEATION_TIME_CHANGED: {\n name: 'GROUP_IDEATION_TIME_CHANGED',\n iconType: 'clock',\n color: 'info'\n },\n CHALLENGE_LOVED: {\n name: 'CHALLENGE_LOVED',\n iconType: 'heart',\n color: 'danger'\n },\n IDEA_LOVED: {\n name: 'IDEA_LOVED',\n iconType: 'heart',\n color: 'danger'\n },\n REVEAL_IDEA: {\n name: 'REVEAL_IDEA',\n iconType: 'anonymous',\n color: 'info'\n },\n NEW_IDEA: {\n name: 'NEW_IDEA',\n iconType: 'bubble',\n color: 'success'\n },\n IDEA_CONCEPT_INVITATION: {\n name: 'IDEA_CONCEPT_INVITATION',\n iconType: 'teams',\n color: 'success'\n }\n};\n\nexport const NotificationGroups = {\n CHALLENGES: [\n NotificationType.CHALLENGE_STARTED.name,\n NotificationType.CHALLENGE_ENDED.name,\n NotificationType.CHALLENGE_INVITATION.name,\n NotificationType.GROUP_IDEATION_TIME_CHANGED.name,\n NotificationType.CHALLENGE_LOVED.name\n ],\n IDEAS: [\n NotificationType.IDEA_LOVED.name,\n NotificationType.REVEAL_IDEA.name,\n NotificationType.NEW_IDEA.name\n ],\n IDEA_CONCEPTS: [NotificationType.IDEA_CONCEPT_INVITATION.name]\n};\n\nexport const NotificationAction = {\n [NotificationType.CHALLENGE_STARTED.name](notification) {\n return paths.results(notification.challengeId);\n },\n [NotificationType.CHALLENGE_ENDED.name](notification) {\n return paths.results(notification.challengeId);\n },\n [NotificationType.CHALLENGE_INVITATION.name](notification) {\n return paths.feedDetails(notification.challengeId);\n },\n [NotificationType.GROUP_IDEATION_TIME_CHANGED.name](notification) {\n return paths.feedDetails(notification.challengeId);\n },\n [NotificationType.CHALLENGE_LOVED.name](notification) {\n return paths.results(notification.challengeId);\n },\n [NotificationType.IDEA_LOVED.name](notification) {\n return paths.results(\n notification.challengeId,\n {\n owned: true,\n sortBy: ChallengeIdeasSortBy.Popularity\n },\n 'IdeaList'\n );\n },\n [NotificationType.REVEAL_IDEA.name](notification) {\n return paths.reveal(notification.challengeId);\n },\n [NotificationType.NEW_IDEA.name](notification) {\n return paths.ideation(notification.challengeId);\n },\n [NotificationType.IDEA_CONCEPT_INVITATION.name](notification) {\n return conceptSubpage(notification.ideaConceptId);\n }\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { translate } from 'react-i18next';\nimport { Size } from '../../../constants';\nimport Avatar from '../../../common/components/Avatar';\nimport Icon from '../../../common/components/Icon';\nimport Media from '../../../common/components/Media';\nimport MutedText from '../../../common/components/MutedText';\nimport { NotificationType, NotificationAction } from '../../constants';\nimport { getUserAvatar } from '../../../common/getters/users';\nimport localiseUserName from '../../../utils/localiseUserName';\nimport { notificationType } from '../../types';\n\nexport class NotificationRow extends Component {\n static propTypes = {\n condensed: PropTypes.bool,\n notification: notificationType,\n onClick: PropTypes.func,\n t: PropTypes.func\n };\n\n handleClick = () => {\n const { onClick, notification } = this.props;\n onClick(notification);\n };\n\n render() {\n const { notification, t, className, condensed } = this.props;\n const {\n notificationId,\n linkedUser,\n createdAt,\n groupIdeationDateTime,\n title,\n ideaConceptId\n } = notification;\n const type = notification['@type'];\n const link = NotificationAction[type] || (() => null);\n const { iconType, color } = NotificationType[type];\n const userName = localiseUserName(t, linkedUser);\n return (\n \n }\n onClick={this.handleClick}\n to={link(notification)}\n className={className}\n active={!notification.read}>\n {t(`notifications/${notification['@type']}`, {\n name: userName,\n title,\n groupIdeationDateTime,\n ideaConceptId\n })}\n
    \n \n {' '}\n \n \n \n );\n }\n}\n\nexport default translate()(NotificationRow);\n","import PropTypes from 'prop-types';\nimport { userCoreInfoType } from '../common/types';\n\nexport const notificationType = PropTypes.shape({\n notificationId: PropTypes.string.isRequired,\n linkedUser: userCoreInfoType,\n createdAt: PropTypes.string\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport NotificationRow from './NotificationRow';\nimport { notificationType } from '../../types';\nimport { MediaList } from '../../../common/components';\nimport { withNonIdealState } from '../../../common/containers';\n\nNotificationList.propTypes = {\n condensed: PropTypes.bool,\n loading: PropTypes.bool,\n notifications: PropTypes.arrayOf(notificationType),\n onNotificationClick: PropTypes.func.isRequired\n};\n\nexport function NotificationList({\n notifications,\n onNotificationClick,\n condensed\n}) {\n return (\n \n {notifications.map(notification => (\n \n ))}\n \n );\n}\n\nexport default compose(\n withNonIdealState({\n isEmpty: ({ notifications }) => !notifications.length\n })\n)(NotificationList);\n","import NotificationList from './NotificationList';\n\nexport default NotificationList;\n","import React, { Component } from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { notificationsSelector } from '../../../common/reducers';\nimport { NotificationList } from '../../components';\nimport { markNotifications } from '../../actions';\n\nclass NotificationsPopover extends Component {\n handleNotificationClick = notification => {\n const { onClose, markNotifications } = this.props;\n\n if (!notification.read) {\n markNotifications([notification.notificationId]);\n }\n\n onClose();\n };\n\n render() {\n const { notifications } = this.props;\n return (\n \n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n notifications: notificationsSelector(state)\n };\n}\n\nexport default compose(connect(mapStateToProps, { markNotifications }))(\n NotificationsPopover\n);\n","import { FETCH_NOTIFICATIONS, NOTIFICATIONS_MARK } from '../../constants';\nimport { VOYAGER_API } from '../../api/constants';\nimport { NotificationGroups } from '../constants';\n\nexport const fetchNotifications = ({ groupId, page }) => {\n return {\n [VOYAGER_API]: {\n url: '/notifications',\n method: 'GET',\n type: FETCH_NOTIFICATIONS,\n page,\n params: {\n ...(groupId ? { types: NotificationGroups[groupId] } : {})\n }\n },\n meta: {\n authenticated: true\n }\n };\n};\n\nexport const markNotifications = notificationIds => {\n return {\n [VOYAGER_API]: {\n url: '/notifications/read',\n method: 'PUT',\n data: notificationIds,\n type: NOTIFICATIONS_MARK\n },\n meta: {\n authenticated: true\n }\n };\n};\n","import React from 'react';\nimport { translate } from 'react-i18next';\nimport Icon from '../Icon';\nimport './TutorialButton.css';\n\nfunction TutorialButton({ t }) {\n return (\n \n
    \n \n \n \n\n {t('common/Tutorials')}\n
    \n \n );\n}\n\nexport default translate()(TutorialButton);\n","import React, { useState, useCallback } from 'react';\nimport get from 'lodash/get';\nimport PropTypes from 'prop-types';\nimport { translate } from 'react-i18next';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { Link, NavLink } from 'react-router-dom';\nimport cn from 'classnames';\nimport EmailConfirmationCallout from '../../containers/EmailConfirmationCallout';\nimport Progress from '../Progress';\nimport NotificationsPopover from '../../../notifications/containers/NotificationsPopover';\nimport NetworkErrorCallout from '../../containers/NetworkErrorCallout';\nimport Avatar from '../Avatar';\nimport Badge from '../Badge';\nimport Button from '@bit/be-novative.kit.button';\nimport Icon from '../Icon';\nimport PageHeader, { Section, Item } from '../PageHeader';\nimport PlatformLogo from '../PlatformLogo';\nimport Popover from '../Popover';\nimport Responsive from '../Responsive';\nimport TutorialButton from '../TutorialButton';\nimport { openSidenav } from '../../actions';\nimport { unreadNotificationCountSelector } from '../../reducers/latestNotifications';\nimport { ownProfileSelector } from '../../../profile/state/profile';\nimport { getUserAvatar } from '../../getters/users';\nimport useTooltip from '../../hooks/useTooltip';\nimport useWindowSize from '../../hooks/useWindowSize';\nimport paths from '../../../paths';\nimport { conceptListPage } from '../../../ideaConcept/paths';\nimport { BREAKPOINTS, Size } from '../../../constants';\nimport { ColorVariantHex } from '../../styled/colors.styled';\nimport localiseUserName from '../../../utils/localiseUserName';\nimport { getPlatformName } from '../../../utils/platform';\nimport scss from './GlobalPageHeader.module.scss';\n\nGlobalPageHeader.propTypes = {\n cta: PropTypes.node,\n lastChild: PropTypes.bool\n};\nGlobalPageHeader.defaultProps = {\n lastChild: true\n};\nfunction GlobalPageHeader({ cta, lastChild, t }) {\n const dispatch = useDispatch();\n const profile = useSelector(ownProfileSelector);\n const avatar = getUserAvatar(profile);\n const userName = localiseUserName(t, profile);\n const avatarTooltipProps = useTooltip(t('common/Profile'), 'down');\n const isConfirmed = get(profile, 'confirmed');\n\n const [showNotifications, setShowNotifications] = useState(false);\n const openNotifMenu = useCallback(() => {\n setShowNotifications(true);\n }, []);\n const closeNotifMenu = useCallback(() => {\n setShowNotifications(false);\n }, []);\n const unreadCount = useSelector(unreadNotificationCountSelector);\n\n const openDrawer = useCallback(() => {\n dispatch(openSidenav());\n }, [dispatch]);\n\n const { width } = useWindowSize();\n const showCompactLogo = width < BREAKPOINTS.SM;\n const logoClasses = cn({\n [scss.alignWithMenu]: !showCompactLogo\n });\n\n return (\n
    \n {profile && isConfirmed && }\n {profile && !isConfirmed && }\n \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n {t('common/navMenu/challenges')}\n \n \n \n \n {t('common/navMenu/ideaConcepts', {\n context: getPlatformName()\n })}\n \n \n
    \n
    \n\n
    \n \n {cta}\n \n\n \n \n \n \n \n\n \n \n \n \n \n \n \n\n {false && (\n \n }\n popoverStyle={{ width: 300 }}\n action={\n \n }\n show={showNotifications}\n onClose={closeNotifMenu}>\n \n \n \n \n \n )}\n\n \n \n \n
    \n
    \n\n \n
    {cta}
    \n
    \n \n
    \n );\n}\n\nexport default translate()(GlobalPageHeader);\n","import { createSelector } from 'reselect';\nimport concat from 'lodash/concat';\nimport find from 'lodash/fp/find';\nimport filter from 'lodash/filter';\nimport filterFp from 'lodash/fp/filter';\nimport get from 'lodash/fp/get';\nimport getOr from 'lodash/fp/getOr';\nimport map from 'lodash/map';\nimport mapFp from 'lodash/fp/map';\nimport max from 'lodash/max';\nimport flow from 'lodash/flow';\nimport isEqual from 'lodash/fp/isEqual';\nimport orderBy from 'lodash/fp/orderBy';\nimport includes from 'lodash/includes';\nimport includesFp from 'lodash/fp/includes';\nimport {\n MAX_ITEMS_IN_ROOM,\n ideationIdProps,\n DRAGGABLE_TYPES,\n IdeationPhaseType\n} from '../constants';\nimport produce from 'immer';\nimport { ownProfileSelector } from '../../profile/state/profile';\nimport { getUserId } from '../../common/getters/users';\nimport { getAllIdsFrom } from '../../common/selectors/entities';\nimport { getIdeaId } from '../../common/selectors/ideas';\nimport { getCreateTime } from '../../common/selectors/meta';\nimport { getZIndex } from '../../dndCanvas/selectors/canvasItem';\nimport getNumOrZero from '../../utils/getNumOrZero';\nimport { selectors as phaseSelectors } from '../state/phases';\n\nexport const rootSelector = get('ideation');\n\nexport const hummingbirdLoveCountSelector = state =>\n flow(\n rootSelector,\n getOr(0, 'hummingbirdLoveCount')\n )(state);\nexport const lovedIdeasSelector = state =>\n flow(\n rootSelector,\n getOr([], 'lovedIdeas')\n )(state);\n\n// settings\nexport const roomSpecificUserIdSelector = state =>\n flow(\n rootSelector,\n get('roomSpecificUserId')\n )(state);\nexport const roomIdSelector = state =>\n flow(\n rootSelector,\n get('roomId')\n )(state);\n\nconst getById = get('byId');\nconst getIdeas = flow(\n rootSelector,\n get('ideas')\n);\nconst getImages = flow(\n rootSelector,\n get('images')\n);\nconst getWords = flow(\n rootSelector,\n get('words')\n);\n\nexport const getItemsMovedByUser = get('ideation.itemsMovedByUser');\n\nexport const isItemMovedByUser = (state, itemId) =>\n flow(\n getItemsMovedByUser,\n includesFp(itemId)\n )(state);\n\nexport const visibleEntitiesSelector = createSelector(\n flow(\n getIdeas,\n getAllIdsFrom\n ),\n flow(\n getIdeas,\n getById\n ),\n flow(\n getImages,\n getAllIdsFrom\n ),\n flow(\n getImages,\n getById\n ),\n (ideaIds, ideasById, imageIds, imagesById) => {\n return [\n ...map(ideaIds, id => ideasById[id]),\n ...map(imageIds, id => imagesById[id])\n ]\n .sort((a, b) => (getCreateTime(a) < getCreateTime(b) ? 1 : -1))\n .splice(0, MAX_ITEMS_IN_ROOM);\n }\n);\n\nconst visibleIdeasSelector = createSelector(\n visibleEntitiesSelector,\n filterFp(getIdeaId)\n);\n\nexport const getImageId = get(ideationIdProps.IMAGE_ID);\n\nconst visibleImagesSelector = createSelector(\n phaseSelectors.getCurrentPhase,\n visibleEntitiesSelector,\n (phaseConfig, visibleItems) => {\n const preselectedImages = phaseConfig.images || [];\n return concat(preselectedImages, filter(visibleItems, getImageId));\n }\n);\n\nexport const wordsSelector = createSelector(\n phaseSelectors.getCurrentPhase,\n flow(\n getWords,\n getById\n ),\n flow(\n getWords,\n getAllIdsFrom\n ),\n getItemsMovedByUser,\n (phaseConfig, byId, allIds, itemsMovedByUser) => {\n const preselectedWords = phaseConfig.words || [];\n const allWords = concat(preselectedWords, map(allIds, id => byId[id]));\n return map(\n allWords,\n produce(word => {\n word.movedByUser = includes(itemsMovedByUser, word.wordId);\n })\n );\n }\n);\n\nexport const ideasSelector = createSelector(\n visibleIdeasSelector,\n flow(\n rootSelector,\n getOr([], ['unseenIdeas'])\n ),\n lovedIdeasSelector,\n roomSpecificUserIdSelector,\n phaseSelectors.getCurrentPhaseType,\n getItemsMovedByUser,\n (visibleIdeas, unseenIdeas, lovedIdeas, userId, phase, itemsMovedByUser) =>\n map(visibleIdeas, idea => {\n return {\n ...idea,\n loved: includes(lovedIdeas, idea.ideaId),\n unseen: includes(unseenIdeas, idea.ideaId),\n own: idea.owner === userId,\n redacted: idea.owner !== userId && phase === IdeationPhaseType.Redacted,\n movedByUser: includes(itemsMovedByUser, idea.ideaId)\n };\n })\n);\n\nexport const imagesSelector = createSelector(\n visibleImagesSelector,\n roomSpecificUserIdSelector,\n getItemsMovedByUser,\n (visibleImages, userId, itemsMovedByUser) =>\n map(visibleImages, image => {\n return {\n ...image,\n own: image.owner === userId,\n movedByUser: includes(itemsMovedByUser, image.imageId)\n };\n })\n);\n\nexport const getAllCanvasItems = createSelector(\n ideasSelector,\n imagesSelector,\n wordsSelector,\n (ideas, images, words) =>\n [...ideas, ...images, ...words]\n .sort((a, b) => (getCreateTime(a) < getCreateTime(b) ? 1 : -1))\n .splice(0, MAX_ITEMS_IN_ROOM)\n);\n\nconst ideationRootSelector = get('ideation');\n\nexport const usersSelector = flow(\n ideationRootSelector,\n get('users')\n);\n\nexport const usersOrderByLoveSelector = createSelector(\n flow(\n usersSelector,\n getOr({}, 'byId')\n ),\n flow(\n usersSelector,\n getOr([], 'allIds')\n ),\n (byId, allIds) =>\n flow(\n mapFp(id => byId[id]),\n orderBy(['loveCount'], ['desc'])\n )(allIds)\n);\n\n/**\n * Used for handling edge cases, e.g. multiple browser tabs, or the user being kicked from the server side.\n * Depending on the challenge scenario config, ideation users may contain their account IDs, or temporarily assigned user IDs.\n * Therefore, both types of IDs must be checked for the current user.\n * @summary Checks if a user is still in the room by comparing IDs of participants against user's own IDs\n * @param {Object} state - Redux state\n * @return {boolean} `true` if the user's temporary or account ID is still included in the participant list\n */\n\nexport const isCurrentUserInRoom = createSelector(\n roomSpecificUserIdSelector,\n flow(\n ownProfileSelector,\n getUserId\n ),\n flow(\n usersSelector,\n getOr([], 'allIds')\n ),\n (ownTempId, ownAccountId, participantIds) =>\n includes(participantIds, ownTempId) ||\n includes(participantIds, ownAccountId)\n);\n\nconst TYPE_SELECTORS = {\n [DRAGGABLE_TYPES.IDEA]: ideasSelector,\n [DRAGGABLE_TYPES.IMAGE]: visibleImagesSelector,\n [DRAGGABLE_TYPES.WORD]: wordsSelector\n};\n\nexport const getZIndexForItem = (type, id) => state =>\n flow(\n TYPE_SELECTORS[type],\n find(\n flow(\n get(DRAGGABLE_TYPES[type]),\n isEqual(id)\n )\n ),\n getZIndex,\n getNumOrZero\n )(state);\n\nexport const getMaxZIndexForType = type => state =>\n flow(\n TYPE_SELECTORS[type],\n mapFp(getZIndex),\n max,\n getNumOrZero\n )(state);\n\nexport const isOnline = user => get('online')(user);\n\nexport const isUserOnline = createSelector(\n state => state.ideation.users.byId,\n (_, userId) => userId,\n (users, userId) =>\n flow(\n get(userId),\n isOnline\n )(users)\n);\n","import PropTypes from 'prop-types';\nimport React, { cloneElement } from 'react';\nimport classNames from 'classnames';\nimport scss from './Radio.module.scss';\n\nfunction Radio({ icon, label, className, checked, disabled, name, ...rest }) {\n const classes = classNames(scss.Radio, className, {\n [scss.checked]: checked,\n [scss.disabled]: disabled\n });\n return (\n \n );\n}\n\nRadio.propTypes = {\n checked: PropTypes.bool,\n className: PropTypes.string,\n icon: PropTypes.element,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node])\n};\n\nexport default Radio;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Field } from 'react-final-form';\nimport cn from 'classnames';\nimport Radio from './Radio';\n\nfunction RadioGroup({\n initialValue,\n name,\n choices,\n theme = {},\n parse,\n required,\n validate\n}) {\n return (\n
    \n {choices.map(choice => {\n return (\n
    \n \n {({ input }) => {\n const classes = cn(theme.radio, {\n [theme.radioChecked]: input.checked,\n [theme.radioDisabled]: input.disabled\n });\n return (\n \n );\n }}\n \n
    \n );\n })}\n
    \n );\n}\n\nRadioGroup.propTypes = {\n choices: PropTypes.arrayOf(\n PropTypes.shape({\n value: PropTypes.any.isRequired,\n disabled: PropTypes.bool,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node])\n })\n ).isRequired,\n initialValue: PropTypes.any,\n name: PropTypes.string.isRequired,\n theme: PropTypes.shape({\n wrapper: PropTypes.string,\n radio: PropTypes.string,\n radioChecked: PropTypes.string,\n radioDisabled: PropTypes.string\n })\n};\n\nexport default RadioGroup;\n","import RadioGroup from './RadioGroup';\nimport Radio from './Radio';\n\nexport { Radio };\nexport default RadioGroup;\n","import get from 'lodash/fp/get';\nimport getOr from 'lodash/fp/getOr';\n\nexport const isOwn = get('own');\n\nexport const getPosX = getOr(0, 'posX');\n\nexport const getPosY = getOr(0, 'posY');\n\nexport const getZIndex = getOr(1, 'posZ');\n","import React, { Suspense } from 'react';\nimport Spinner from '@bit/be-novative.kit.spinner';\n\nfunction LazyComponent({ children, fallback }) {\n return (\n }>\n {children}\n \n );\n}\n\nexport default LazyComponent;\n","import React from 'react';\nimport omit from 'lodash/omit';\nimport PropTypes from 'prop-types';\nimport { compose, lifecycle, mapProps, withProps } from 'recompose';\nimport classNames from 'classnames';\nimport svg4everybody from 'svg4everybody';\nimport spriteUrl from './symbol/sprite.symbol.svg';\nimport { isIE } from '../../../utils/userAgent';\nimport { withTooltip } from '../Tooltip';\nimport './Icon.css';\n\nconst colors = ['danger', 'info', 'success', 'warning', 'neutral', 'light'];\n\nconst types = [\n 'account',\n 'airplane',\n 'angle-down',\n 'angle-up',\n 'angle-left',\n 'angle-right',\n 'anonymous',\n 'arrow-up',\n 'atom',\n 'attachment',\n 'bin',\n 'bold',\n 'box-3d',\n 'branching',\n 'bubble',\n 'bubble-square',\n 'bulb',\n 'calendar',\n 'camera',\n 'caution',\n 'chain',\n 'chalice',\n 'chat',\n 'chat-2',\n 'check',\n 'check-circle',\n 'circle',\n 'clock',\n 'cog',\n 'coordinate-system',\n 'costs',\n 'cross',\n 'date',\n 'dnd',\n 'download',\n 'email',\n 'exit',\n 'expand',\n 'experiment',\n 'facebook',\n 'feed',\n 'file',\n 'fire',\n 'forward-framed',\n 'forward',\n 'galaxy',\n 'glasses',\n 'globe',\n 'google',\n 'graduation_cap',\n 'group-ideas',\n 'head',\n 'heart-full',\n 'heart-ideation',\n 'heart',\n 'help',\n 'hidden',\n 'highlight',\n 'highlight-2',\n 'home',\n 'hummingbird',\n 'idea',\n 'ideas',\n 'image',\n 'info',\n 'info2',\n 'italic',\n 'language',\n 'leaderboard',\n 'lightbulb',\n 'link',\n 'linkedin',\n 'list-ol',\n 'list-ul',\n 'lock',\n 'lock-circle',\n 'marker',\n 'medal',\n 'menu',\n 'merge-ideas',\n 'meter',\n 'monitor',\n 'network',\n 'notifications',\n 'pen',\n 'pencil-2',\n 'pencil',\n 'plus',\n 'polygon-1',\n 'polygon-2',\n 'private',\n 'projectboard',\n 'reload',\n 'return',\n 'rewind',\n 'rocket',\n 'search',\n 'settings',\n 'settings-horizontal',\n 'share',\n 'stackoverflow',\n 'stat',\n 'subscribe',\n 'success',\n 'sunglasses',\n 'team',\n 'teams',\n 'twitter',\n 'underline',\n 'unlink',\n 'unlock',\n 'upload',\n 'zoom-in'\n];\n\nfunction Icon({\n type,\n className,\n children,\n onClick,\n size,\n color,\n wrapperClass,\n ...rest\n}) {\n const wrapperClasses = classNames('IconWrapper', wrapperClass, {\n 'Icon--clickable': onClick\n });\n const iconClass = classNames('Icon', `Icon--${type}`, className, {\n [`Icon--${size}`]: !!size,\n [`Icon--color-${color}`]: !!color\n });\n\n return (\n \n \n \n \n {children}\n \n );\n}\n\nexport const ICON_SIZES = ['xs', 'sm', 'md', 'lg', 'xl'];\n\nIcon.propTypes = {\n color: PropTypes.oneOf(colors),\n type: PropTypes.oneOf(types).isRequired,\n size: PropTypes.oneOf(ICON_SIZES),\n className: PropTypes.string\n};\n\nconst checkIfIE = withProps({\n shouldFallBackToIE: isIE()\n});\n\nexport const withSVGFallbackForIE = {\n componentDidMount() {\n if (this.props.shouldFallBackToIE) {\n svg4everybody();\n }\n },\n componentDidUpdate(prevProps) {\n const { type, shouldFallBackToIE } = this.props;\n if (shouldFallBackToIE && type !== prevProps.type) {\n svg4everybody();\n }\n }\n};\n\nconst removeIEProp = mapProps(props =>\n omit(props, ['shouldFallBackToIE', 'dispatch'])\n);\n\nexport default compose(\n withTooltip,\n checkIfIE,\n lifecycle(withSVGFallbackForIE),\n removeIEProp\n)(Icon);\nexport { Icon, types };\n","import { useSelector } from 'react-redux';\nimport useFeatureFlag from '../../common/hooks/useFeatureFlag';\nimport { isAdminSelector } from '../../profile/state/profile';\nimport FeatureFlag from '../../featureFlags/constants';\n\nexport default function useCanReviewConcepts() {\n const isAdmin = useSelector(isAdminSelector);\n const canAllUsersReview = useFeatureFlag(\n FeatureFlag.canAllUsersReviewConcepts\n );\n return isAdmin || canAllUsersReview;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport useFormattedDateTime from '../../hooks/useFormattedDateTime';\n\nDateTime.propTypes = {\n children: PropTypes.string,\n date: PropTypes.bool,\n time: PropTypes.bool\n};\nfunction DateTime({ children, date = true, time }) {\n const formattedTime = useFormattedDateTime(children, date, time);\n\n if (!children) {\n return null;\n }\n\n return ;\n}\n\nexport default React.memo(DateTime);\n","import DateTime from './DateTime';\n\nexport default DateTime;\n","import flow from 'lodash/flow';\nimport getFp from 'lodash/fp/get';\nimport { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\nimport { PROFILE_FORM_FIELDS } from '../constants';\nimport { AsyncStatus } from '../../constants';\nimport { isTokenValid } from '../../authentication/services/token.service';\nimport profileApi from '../api/profileApi';\nimport {\n createPrivacyPayload,\n createProfilePayload\n} from '../utils/payloadUtils';\nimport handleApiCallAction from '../../utils/handleApiCallAction';\nimport { getAdminStatus, getUserConsent } from '../getters';\n\nconst fetchOwnProfile = createAsyncThunk(\n 'fetchProfile',\n async () => await profileApi.fetchOwnProfile()\n);\n\nconst updateOwnProfile = createAsyncThunk(\n 'updateProfile',\n handleApiCallAction(profileApi.updateProfile, (formData, state) =>\n createProfilePayload({\n ...ownProfileSelector(state),\n ...formData\n })\n ),\n { condition: () => isTokenValid() }\n);\n\nconst updatePreferredLocale = createAsyncThunk(\n 'updatePreferredLanguage',\n handleApiCallAction(profileApi.updateProfile, (language, state) =>\n createProfilePayload({\n ...ownProfileSelector(state),\n [PROFILE_FORM_FIELDS.LANGUAGE]: language\n })\n ),\n {\n condition: () => isTokenValid()\n }\n);\n\nconst updatePrivacy = createAsyncThunk(\n 'updatePrivacySettings',\n handleApiCallAction(profileApi.updateProfile, (consentSettings, state) =>\n createProfilePayload({\n ...ownProfileSelector(state),\n [PROFILE_FORM_FIELDS.CONSENT]: createPrivacyPayload(\n flow(\n ownProfileSelector,\n getUserConsent\n )(state),\n consentSettings\n )\n })\n )\n);\n\nconst deleteProfile = createAsyncThunk(\n 'deleteAccount',\n handleApiCallAction(profileApi.deleteProfile)\n);\n\nconst initialState = {\n data: {},\n status: AsyncStatus.Idle,\n error: null\n};\n\nconst profileSlice = createSlice({\n name: 'ownProfile',\n initialState,\n extraReducers: {\n [fetchOwnProfile.pending]: state => {\n state.status = AsyncStatus.Loading;\n state.error = null;\n },\n [fetchOwnProfile.fulfilled]: (state, action) => {\n state.data = action.payload;\n state.status = AsyncStatus.Succeeded;\n },\n [fetchOwnProfile.rejected]: (state, action) => {\n state.status = AsyncStatus.Failed;\n state.error = action.error;\n }\n }\n});\n\nconst getProfileStore = getFp('ownProfile');\n\nfunction ownProfileSelector(state) {\n return flow(\n getProfileStore,\n getFp('data')\n )(state);\n}\n\nconst isAdminSelector = flow(\n ownProfileSelector,\n getAdminStatus\n);\n\nexport {\n getProfileStore,\n ownProfileSelector,\n isAdminSelector,\n fetchOwnProfile,\n updateOwnProfile,\n updatePrivacy,\n updatePreferredLocale,\n deleteProfile\n};\n\nexport default profileSlice;\n","export default function objectToQueryString(object) {\n return (\n '?' +\n Object.keys(object)\n .filter(key => !!object[key])\n .map(key => `${key}=${encodeURIComponent(object[key])}`)\n .join('&')\n );\n}\n","export default function setDocumentTitle(title) {\n return (document.title = title);\n}\n","export default function windowOpen(url, { name, height = 400, width = 550 }) {\n const left =\n window.outerWidth / 2 +\n (window.screenX || window.screenLeft || 0) -\n width / 2;\n const top =\n window.outerHeight / 2 +\n (window.screenY || window.screenTop || 0) -\n height / 2;\n\n const config = {\n height,\n width,\n left,\n top,\n location: 'no',\n toolbar: 'no',\n status: 'no',\n directories: 'no',\n menubar: 'no',\n scrollbars: 'yes',\n resizable: 'no',\n centerscreen: 'yes',\n chrome: 'yes'\n };\n\n return window.open(\n url,\n name,\n Object.keys(config).map(key => `${key}=${config[key]}`).join(', ')\n );\n}\n","import client from '../../api/client';\nimport { getApiResponseData } from '../../api/utils/apiResponse';\n\n/**\n * Queries the API with the search string. The consumer should handle debouncing requests and waiting for a minimum query length.\n * @param {string} query - The search string\n * @return {Promise} The platform configuration extracted from the response\n */\n\nfunction queryUsers(query = '') {\n return client\n .get('/users/find', {\n params: {\n q: query\n }\n })\n .then(getApiResponseData);\n}\n\nexport default {\n queryUsers\n};\n","import flow from 'lodash/flow';\nimport getFp from 'lodash/fp/get';\nimport map from 'lodash/map';\nimport size from 'lodash/size';\nimport {\n createAsyncThunk,\n createEntityAdapter,\n createSlice\n} from '@reduxjs/toolkit';\nimport { API_QUERY_STRING_MINLENGTH } from '../../api/constants';\nimport { AsyncStatus } from '../../constants';\nimport usersApi from '../api/usersApi';\nimport handleApiCallAction from '../../utils/handleApiCallAction';\nimport { getEntities_new } from '../selectors/entities';\nimport { getStoreStatus } from '../selectors/meta';\nimport { getUserId } from '../getters/users';\n\nconst searchUsers = createAsyncThunk(\n 'searchUsers',\n handleApiCallAction(usersApi.queryUsers),\n {\n condition: query => API_QUERY_STRING_MINLENGTH <= size(query)\n }\n);\n\nconst usersAdapter = createEntityAdapter({\n selectId: getUserId\n});\n\nconst initialState = {\n entities: usersAdapter.getInitialState(),\n searchHits: [],\n status: AsyncStatus.Idle,\n error: null\n};\n\nconst usersSlice = createSlice({\n name: 'users',\n initialState,\n reducers: {\n flushUserHits(state) {\n state.searchHits = [];\n }\n },\n extraReducers: {\n [searchUsers.pending]: state => {\n state.status = AsyncStatus.Loading;\n state.searchHits = [];\n state.error = null;\n },\n [searchUsers.fulfilled]: (state, { payload }) => {\n if (payload) {\n state.entities = usersAdapter.setAll(state.entities, payload);\n state.searchHits = map(payload);\n state.status = AsyncStatus.Succeeded;\n }\n },\n [searchUsers.rejected]: (state, action) => {\n state.status = AsyncStatus.Failed;\n state.searchHits = [];\n state.error = action.error;\n }\n }\n});\n\nconst { flushUserHits } = usersSlice.actions;\n\nconst usersStoreSelector = getFp('users');\n\nconst selectors = {\n ...usersAdapter.getSelectors(\n flow(\n usersStoreSelector,\n getEntities_new\n )\n ),\n getSearchHits: flow(\n usersStoreSelector,\n getFp('searchHits')\n ),\n getStatus: flow(\n usersStoreSelector,\n getStoreStatus\n )\n};\n\nexport { searchUsers, flushUserHits, selectors, initialState };\n\nexport default usersSlice;\n","import client from '../../api';\nimport { getApiResponseData } from '../../api/utils/apiResponse';\nimport logRequestFailure from '../../api/utils/logRequestFailure';\nimport addBreadcrumb from '../../telemetry/addBreadcrumb';\n\nasync function fetchConceptById(conceptId) {\n addBreadcrumb('Fetching idea concept...', {\n category: 'idea-concept',\n data: { conceptId }\n });\n try {\n const result = await client.get(`/ideaconcepts/ideaconcept/${conceptId}`);\n return getApiResponseData(result);\n } catch (error) {\n logRequestFailure(error, 'Could not fetch idea concept', 'idea-concept');\n throw error;\n }\n}\n\nasync function updateConcept(conceptId, payload) {\n addBreadcrumb('Updating idea concept...', {\n category: 'idea-concept',\n data: { conceptId, payload }\n });\n try {\n return await client.put(`/ideaconcepts/${conceptId}`, payload);\n } catch (error) {\n logRequestFailure(error, 'Could not update idea concept', 'idea-concept');\n throw error;\n }\n}\n\nexport default {\n fetchConceptById,\n updateConcept\n};\n","import { denormalize } from 'normalizr';\nimport { useCallback } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { fetchIdeaConceptById } from '../../common/actions';\nimport { getEntities } from '../../common/selectors/entities';\nimport conceptApi from '../api/conceptApi';\nimport schemas from '../schemas';\nimport { getConceptById } from '../selectors/ideaConcepts';\nimport createConceptPayload from '../utils/payloadUtils';\n\nexport default function useEditConcept(conceptId) {\n const allEntities = useSelector(getEntities);\n const oldEntity = useSelector(getConceptById(conceptId));\n const dispatch = useDispatch();\n const handleSubmit = useCallback(\n async newData => {\n const existingData = denormalize(\n oldEntity,\n schemas.IDEA_CONCEPT,\n allEntities\n );\n const payload = createConceptPayload({\n ...existingData,\n ...newData\n });\n try {\n await conceptApi.updateConcept(conceptId, payload);\n dispatch(fetchIdeaConceptById(conceptId));\n } catch (error) {\n throw error;\n }\n },\n [allEntities, conceptId, dispatch, oldEntity]\n );\n return handleSubmit;\n}\n","import size from 'lodash/size';\nimport {\n composeValidators,\n required,\n maxlength,\n validateInvitedUsers\n} from '../../utils/validation';\nimport {\n IDEA_CONCEPT_DETAILS_FIELD_MAXLENGTH,\n IDEA_CONCEPT_TITLE_FIELD_MAXLENGTH\n} from '../config';\n\nexport const matchesMinItems = (collection, minItems) =>\n size(collection) >= minItems;\n\nexport const validateConceptTitle = (\n t,\n charLimit = IDEA_CONCEPT_TITLE_FIELD_MAXLENGTH\n) => composeValidators(required(t), maxlength(t, charLimit));\n\nexport const validateConceptDescription = (\n t,\n charLimit = IDEA_CONCEPT_DETAILS_FIELD_MAXLENGTH\n) => composeValidators(required(t), maxlength(t, charLimit));\n\nexport const validateTeamMembers = (t, { minMembers, emailRegex }) =>\n composeValidators(validateInvitedUsers(t, emailRegex), members =>\n matchesMinItems(members, minMembers)\n ? undefined\n : t('ideaConcepts/validationErrors/teamMinimum', {\n count: minMembers\n })\n );\n","import { useSelector } from 'react-redux';\nimport { getListPageStore } from '../../selectors/conceptList';\nimport { isLoading } from '../../../common/selectors/meta';\n\nexport default function useIsListLoading() {\n const listStore = useSelector(getListPageStore);\n return isLoading(listStore);\n}\n","const PREFIX = '[SOCKET]';\nexport const SOCKET_INIT_CONNECTION = `${PREFIX} INIT_CONNECTION`;\nexport const SOCKET_CLOSE_CONNECTION = `${PREFIX} CLOSE_CONNECTION`;\nexport const SOCKET_CONNECTING = `${PREFIX} CONNECTING`;\nexport const SOCKET_CONNECTED = `${PREFIX} CONNECTED`;\nexport const SOCKET_DISCONNECTED = `${PREFIX} DISCONNECTED`;\nexport const SOCKET_ERROR = `${PREFIX} ERROR`;\nexport const SOCKET_SEND_MESSAGE = `${PREFIX} SEND_MESSAGE`;\nexport const SOCKET_SUBSCRIBE = `${PREFIX} EVENT_SUBSCRIBE`;\nexport const SOCKET_UNSUBSCRIBE = `${PREFIX} EVENT_UNSUBSCRIBE`;\n\nexport const connectToSocket = socketId => ({\n type: SOCKET_INIT_CONNECTION,\n meta: { socketId }\n});\n\nexport const disconnectFromSocket = socketId => ({\n type: SOCKET_CLOSE_CONNECTION,\n meta: { socketId }\n});\n\nexport const socketConnecting = socketId => ({\n type: SOCKET_CONNECTING,\n meta: { socketId }\n});\n\nexport const socketConnected = socketId => ({\n type: SOCKET_CONNECTED,\n meta: { socketId }\n});\n\nexport const socketDisconnected = socketId => ({\n type: SOCKET_DISCONNECTED,\n meta: { socketId }\n});\n\nexport const socketError = (socketId, error) => ({\n type: SOCKET_ERROR,\n payload: error,\n meta: { socketId }\n});\n\nexport const subscribeToEvents = (socketId, events = []) => ({\n type: SOCKET_SUBSCRIBE,\n payload: events,\n meta: {\n socketId\n }\n});\n\nexport const unsubscribeFromEvents = (socketId, events = []) => ({\n type: SOCKET_UNSUBSCRIBE,\n payload: events,\n meta: {\n socketId\n }\n});\n\nexport const sendSocketMessage = (\n socketId,\n messageType,\n payload,\n throttleMs\n) => ({\n type: SOCKET_SEND_MESSAGE,\n payload,\n meta: {\n messageType,\n socketId,\n throttle: throttleMs\n }\n});\n","import React from 'react';\nimport './Ellipsis.css';\n\nEllipsis.defaultProps = {\n tag: 'span'\n};\n\nfunction Ellipsis({ children, tag: Tag }) {\n return (\n \n {children}\n \n );\n}\n\nexport default Ellipsis;\n","import Ellipsis from './Ellipsis';\n\nexport default Ellipsis;\n","const FILENAME_REGEX = /filename=[\"|'](.*)[\"|']/;\n\n// TODO move to api folder\nexport default function getFilenameFromAjaxHeader(headerString) {\n if (typeof headerString !== 'string') {\n return '';\n }\n\n const match = headerString.match(FILENAME_REGEX);\n\n return match ? match[1] : '';\n}\n","import flow from 'lodash/flow';\nimport get from 'lodash/fp/get';\nimport isEqual from 'lodash/fp/isEqual';\nimport { combineReducers } from 'redux';\nimport { handleActions } from 'redux-actions';\nimport { MODAL_CLOSE, MODAL_OPEN, ROUTE_CHANGE } from '../../constants';\nimport { MODAL_CLOSE_ALL } from '../actions';\n\nconst stack = handleActions(\n {\n [MODAL_CLOSE](state) {\n return state.length > 0 ? state.slice(1) : state;\n },\n [MODAL_OPEN](state, { payload }) {\n return [payload, ...state];\n },\n [MODAL_CLOSE_ALL]() {\n return [];\n },\n [ROUTE_CHANGE]() {\n return [];\n }\n },\n []\n);\n\nexport default combineReducers({\n stack\n});\n\nexport const activeModalSelector = get('modal.stack[0]');\n\nexport const isModalOpen = name => state =>\n flow(\n activeModalSelector,\n get('modalType'),\n isEqual(name)\n )(state);\n","import { combineReducers } from 'redux';\nimport { createSelector } from 'reselect';\nimport { handleActions } from 'redux-actions';\nimport keyBy from 'lodash/fp/keyBy';\nimport map from 'lodash/fp/map';\nimport {\n NOTIFICATIONS_INIT,\n NOTIFICATION_RECEIVED,\n NOTIFICATION_READ\n} from '../../constants';\n\nconst unreadCount = handleActions(\n {\n [NOTIFICATIONS_INIT](state, { payload }) {\n return payload.unreadCount || 0;\n },\n [NOTIFICATION_RECEIVED](state, { payload }) {\n return payload.notification.read === false ? state + 1 : state;\n },\n [NOTIFICATION_READ](state, { payload }) {\n return Math.max(state - 1, 0);\n }\n },\n 0\n);\n\nconst allIds = handleActions(\n {\n [NOTIFICATIONS_INIT](state, { payload }) {\n return map('notificationId')(payload.notifications);\n },\n [NOTIFICATION_RECEIVED](state, { payload }) {\n return [payload.notification.notificationId, ...state];\n }\n },\n []\n);\n\nconst byId = handleActions(\n {\n [NOTIFICATIONS_INIT](state, { payload }) {\n return keyBy('notificationId')(payload.notifications);\n },\n [NOTIFICATION_RECEIVED](state, { payload }) {\n const { notification } = payload;\n return {\n ...state,\n [notification.notificationId]: notification\n };\n },\n [NOTIFICATION_READ](state, { payload }) {\n const notification = state[payload.notificationId];\n\n if (!notification) {\n return state;\n }\n\n return {\n ...state,\n [notification.notificationId]: {\n ...notification,\n read: true\n }\n };\n }\n },\n {}\n);\n\nexport default combineReducers({\n unreadCount,\n allIds,\n byId\n});\n\nexport const unreadNotificationCountSelector = state =>\n state.latestNotifications.unreadCount;\n\nexport const notificationsSelector = createSelector(\n state => state.latestNotifications.allIds,\n state => state.latestNotifications.byId,\n (allIds, byId) => map(id => byId[id], allIds)\n);\n","import get from 'lodash/get';\nimport BitSet from 'bitset.js';\nimport { combineReducers } from 'redux';\nimport { handleActions } from 'redux-actions';\nimport { createSelector } from 'reselect';\nimport { ownProfileSelector } from '../../profile/state/profile';\nimport { activeModalSelector } from './modal';\nimport { ONBOARDING_ENTER, ONBOARDING_LEAVE } from '../../constants';\n\nconst tips = handleActions(\n {\n [ONBOARDING_ENTER](state, { payload }) {\n return payload;\n },\n [ONBOARDING_LEAVE]() {\n return null;\n }\n },\n null\n);\n\nexport default combineReducers({\n tips\n});\n\nexport const getOnboardingBitSet = createSelector(\n ownProfileSelector,\n profile => {\n const onboardingHex = get(profile, 'onboarding');\n\n if (onboardingHex) {\n return BitSet.fromHexString(onboardingHex);\n }\n }\n);\n\nexport const onboardingTipsSelector = state =>\n get(state, 'onboarding.tips', []);\n\nexport const onboardingTipSelector = tip =>\n createSelector(\n getOnboardingBitSet,\n flags => flags && flags.get(tip) === 0\n );\n\nexport const isOnboardingTipActiveSelectorFactory = tip =>\n createSelector(\n onboardingTipsSelector,\n getOnboardingBitSet,\n activeModalSelector,\n (tips, flags, activeModal) => {\n if (!tips || !flags || activeModal) {\n return null;\n }\n const active = tips.find(tip => flags.get(tip) === 0);\n return active === tip;\n }\n );\n","import isEmpty from 'lodash/isEmpty';\n\n/**\n * Creates spreadable object of props for displaying a tooltip\n * @param {string} tip\n * @param {string} [position] - `up|down|left|right`\n * @param {string} [length] - `small|medium|large|xlarge|fit`\n * @return {Object.} Spreadable props for the component that should anchor the tooltip\n */\n\nexport default function useTooltip(tip, position = 'up', length) {\n if (isEmpty(tip)) {\n return {};\n }\n\n return {\n 'aria-label': tip,\n 'data-balloon': tip,\n 'data-balloon-pos': position,\n 'data-balloon-length': length\n };\n}\n","export const intercomDimensions = {\n width: 60,\n height: 60,\n vPadding: 20,\n hPadding: 20\n};\n","import { useMemo, useState } from 'react';\nimport { ImageTypes } from '../../../constants';\nimport GoogleImagesTab from './GoogleImagesTab';\nimport PresetTab from './PresetTab';\nimport UploadImageTab from './UploadImageTab';\n\nconst tabs = [\n [ImageTypes.UPLOADED, UploadImageTab],\n [ImageTypes.GOOGLE, GoogleImagesTab],\n [ImageTypes.PRESET, PresetTab]\n];\n\nexport default function useActiveImagePicker(\n defaultType = ImageTypes.UPLOADED\n) {\n const [activePickerType, setActivePickerType] = useState(defaultType);\n const api = useMemo(\n () => ({\n getComponent: () => tabs.find(([tabId]) => tabId === activePickerType)[1],\n getType: () => activePickerType,\n setType: setActivePickerType\n }),\n [activePickerType]\n );\n return api;\n}\n","import camelCase from 'lodash/camelCase';\nimport {\n conceptListStageFilterIds,\n conceptListStageFilterIdsCepheid,\n stagesWithOwnFilters,\n stagesWithOwnFiltersCepheid\n} from '../../ideaConcept/constants';\nimport { isCepheidVariant } from '../../utils/variants';\nimport { getPlatformName } from '../../utils/platform';\n\nfunction getStageTranslation(stage, t) {\n return t(`ideaConcept/implementationStage/indicator/${camelCase(stage)}`, {\n context: isCepheidVariant() ? 'cepheid' : getPlatformName()\n });\n}\n\nfunction getStageFilters() {\n return isCepheidVariant()\n ? stagesWithOwnFiltersCepheid\n : stagesWithOwnFilters;\n}\n\nfunction getStageFilterIds() {\n return isCepheidVariant()\n ? conceptListStageFilterIdsCepheid\n : conceptListStageFilterIds;\n}\n\nexport { getStageFilters, getStageFilterIds, getStageTranslation };\n","import React from 'react';\nimport values from 'lodash/values';\nimport PropTypes from 'prop-types';\nimport { translate } from 'react-i18next';\nimport cn from 'classnames';\nimport { getStageTranslation } from '../../../ideaConceptCanvas/utils/translateConceptStage';\nimport { IdeaConceptImplementationStatusCepheid } from '../../constants';\nimport './StageIndicator.css';\n\nconst stageEnum = values(IdeaConceptImplementationStatusCepheid);\nconst BASE_CLASS = 'StageIndicator';\n\nStageIndicator.propTypes = {\n stage: PropTypes.oneOf(stageEnum)\n};\nfunction StageIndicator({ stage, t }) {\n return (\n \n {getStageTranslation(stage, t)}\n \n );\n}\n\nexport default translate()(StageIndicator);\n","import StageIndicator from './StageIndicator';\n\nexport default StageIndicator;\n","import React from 'react';\nimport Button from '@bit/be-novative.kit.button';\nimport StageIndicator from '../StageIndicator';\n\nexport default function StageIndicatorMenuItem({ className, onClick, stage }) {\n return (\n \n \n \n );\n}\n","import React, { useState, useCallback } from 'react';\nimport values from 'lodash/values';\nimport PropTypes from 'prop-types';\nimport Button from '@bit/be-novative.kit.button';\nimport { isCepheidVariant } from '../../../utils/variants';\nimport {\n IdeaConceptImplementationStatus,\n IdeaConceptImplementationStatusCepheid\n} from '../../constants';\nimport Popover from '../../../common/components/Popover';\nimport Icon from '../../../common/components/Icon';\nimport StageIndicator from '../StageIndicator';\nimport MenuItem from './MenuItem';\n\nconst ANIM_SPEED_MS = 300;\nconst stageEnum = values(\n isCepheidVariant()\n ? IdeaConceptImplementationStatusCepheid\n : IdeaConceptImplementationStatus\n);\n\nStageDropdown.propTypes = {\n ideaConceptId: PropTypes.string,\n onSelect: PropTypes.func.isRequired\n};\nexport function StageDropdown({ onSelect, stage }) {\n const [showPopover, setShowPopover] = useState(false);\n const toggleVisibility = useCallback(\n () => setShowPopover(isVisible => !isVisible),\n []\n );\n const handleClose = useCallback(() => setShowPopover(false), []);\n const handleSelect = useCallback(\n stage => () => {\n onSelect(stage);\n handleClose();\n },\n [onSelect, handleClose]\n );\n\n return (\n \n {stageEnum.map(stage => (\n \n ))}\n \n }\n onClose={handleClose}\n animationSpeed={ANIM_SPEED_MS}>\n \n <>\n \n \n \n \n \n );\n}\n\nexport default StageDropdown;\n","import StageDropdown from './StageDropdown';\nimport MenuItem from './MenuItem';\n\nexport default StageDropdown;\nexport { MenuItem };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { translate } from 'react-i18next';\nimport StageDropdown from '../StageDropdown';\nimport StageIndicator from '../StageIndicator';\nimport useConceptStatusUpdate from '../../hooks/useConceptStatusUpdate';\n\nStageSelector.propTypes = {\n ideaConceptId: PropTypes.string.isRequired\n};\nexport function StageSelector({ ideaConceptId, t }) {\n const [stage, canEdit, onSelect] = useConceptStatusUpdate(\n ideaConceptId,\n t('common/saveFailed')\n );\n\n return canEdit ? (\n \n ) : (\n \n );\n}\n\nexport default translate()(StageSelector);\n","import { useSelector, useDispatch } from 'react-redux';\nimport {\n canEditConcept,\n getStatus,\n getConceptById\n} from '../selectors/ideaConcepts';\nimport { useState, useEffect, useCallback } from 'react';\nimport { sendAlert } from '../../common/actions/alert';\nimport { conceptEditorFormFields } from '../constants';\nimport { changeConceptStageMetrics } from '../actions/metrics';\nimport useEditConcept from './useEditConcept';\n\nexport default function useConceptStatusUpdate(ideaConceptId, errorMessage) {\n const concept = useSelector(getConceptById(ideaConceptId));\n const canEdit = canEditConcept(concept);\n const stage = getStatus(concept);\n\n const [displayedStage, setDisplayedStage] = useState();\n useEffect(\n function changeStageOnConceptUpdate() {\n setDisplayedStage(stage);\n },\n [stage]\n );\n\n const dispatch = useDispatch();\n const editConcept = useEditConcept(ideaConceptId);\n const onSelect = useCallback(\n newStage => {\n setDisplayedStage(newStage);\n editConcept({\n [conceptEditorFormFields.CONCEPT_STATE]: newStage\n })\n .then(() => {\n changeConceptStageMetrics(ideaConceptId, newStage);\n })\n .catch(() => {\n setDisplayedStage(stage);\n dispatch(\n sendAlert({\n kind: 'danger',\n message: errorMessage\n })\n );\n });\n },\n [editConcept, ideaConceptId, stage, dispatch, errorMessage]\n );\n\n return [displayedStage, canEdit, onSelect];\n}\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport Icon from '../Icon';\n\nfunction Alert(props) {\n const {\n actionLabel,\n id,\n kind,\n message,\n onActionClick,\n status,\n statusIcon\n } = props;\n\n const handleActionClick = e => {\n e.preventDefault();\n\n if (!onActionClick) {\n return;\n }\n\n onActionClick(id);\n };\n\n return (\n
    \n
    {message}
    \n {actionLabel &&\n \n \n }\n {status &&\n
    \n {statusIcon && }\n {status}\n
    }\n
    \n );\n}\n\nAlert.defaultProps = {\n kind: 'info'\n};\n\nAlert.propTypes = {\n actionLabel: PropTypes.string,\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n kind: PropTypes.oneOf(['success', 'info', 'warning', 'danger']).isRequired,\n message: PropTypes.string.isRequired,\n onActionClick: PropTypes.func\n};\n\nexport default Alert;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport groupBy from 'lodash/groupBy';\nimport { useSelector } from 'react-redux';\nimport { TransitionGroup, CSSTransition } from 'react-transition-group';\nimport { ALERT_TOAST } from '../../../constants/e2e';\nimport Alert from './Alert';\nimport './Alerts.css';\n\nfunction Alerts({\n transitionEnterTimeout = 600,\n transitionLeaveTimeout = 600\n}) {\n const alerts = useSelector(state =>\n state.alerts.map(alert => ({\n ...alert,\n position: alert.position || 'top'\n }))\n );\n const groupedAlerts = groupBy(alerts, 'position');\n\n return (\n \n {Object.keys(groupedAlerts).map(position => (\n \n \n \n
    \n {groupedAlerts[position].map(alert => (\n \n ))}\n
    \n \n
    \n \n ))}\n \n );\n}\n\nAlerts.propTypes = {\n transitionEnterTimeout: PropTypes.number,\n transitionLeaveTimeout: PropTypes.number\n};\n\nexport default Alerts;\n","import Alerts from './Alerts';\nexport default Alerts;\n","import memoize from 'lodash/memoize';\n\nconst mapVisibilityInfo = ({\n creatorId,\n currentUserId,\n forceReveal,\n ownerId,\n revealedAt\n}) =>\n memoize(memberId => {\n const isCreator = creatorId === memberId;\n const isSelf = currentUserId === memberId;\n const isVisible =\n (isCreator && revealedAt) || !isCreator || isSelf || forceReveal;\n\n return {\n isCreator,\n isOwner: ownerId === memberId,\n isSelf,\n isVisible,\n key: memberId,\n userId: isVisible ? memberId : null\n };\n });\n\nexport default mapVisibilityInfo;\n","import React, { useContext } from 'react';\nimport values from 'lodash/values';\nimport PropTypes from 'prop-types';\nimport { useSelector } from 'react-redux';\nimport { Size } from '../../../constants';\nimport { getCreator } from '../../../common/selectors/meta';\nimport { AuthContext } from '../../../authentication/components/AuthProvider';\nimport {\n getConceptById,\n getOwner,\n getRevealTime,\n getTeam,\n isQuickIdeaConcept\n} from '../../selectors/ideaConcepts';\nimport ConnectedAvatarList from '../ConnectedAvatarList';\nimport mapVisibilityInfo from './mapVisibilityInfo';\n\nConceptTeamAvatars.propTypes = {\n avatarClassName: PropTypes.string,\n avatarSize: PropTypes.oneOf(values(Size)),\n ideaConceptId: PropTypes.string.isRequired,\n maxDisplay: PropTypes.number\n};\nexport default function ConceptTeamAvatars({\n avatarClassName,\n avatarSize,\n className,\n ideaConceptId,\n maxDisplay\n}) {\n const { userId: currentUserId } = useContext(AuthContext);\n const concept = useSelector(getConceptById(ideaConceptId));\n const creatorId = getCreator(concept);\n const ownerId = getOwner(concept);\n const revealedAt = getRevealTime(concept);\n const forceReveal = isQuickIdeaConcept(concept);\n const team = getTeam(concept);\n const visibilityMapper = mapVisibilityInfo({\n creatorId,\n currentUserId,\n forceReveal,\n ownerId,\n revealedAt\n });\n const mappedMembers = team.map(visibilityMapper);\n return (\n \n );\n}\n","import { Component } from 'react';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { translate } from 'react-i18next';\nimport 'cookieconsent';\nimport { getCurrentLanguage } from '../../selectors/language';\nimport { CONSENTCOOKIE_ID } from '../../../constants';\n\nclass CookieConsent extends Component {\n state = {\n isInitialized: false\n };\n\n componentWillReceiveProps() {\n if (!this.props) return;\n\n if (!this.state.isInitialized) {\n this.initialize();\n }\n }\n\n initialize() {\n if (window.cookieconsent) {\n this.instance = window.cookieconsent.initialise(\n this.getCookieConsentConfig()\n );\n this.setState({ isInitialized: true });\n }\n }\n\n getCookieConsentConfig() {\n const { t } = this.props;\n\n return {\n type: 'opt-out',\n cookie: {\n name: CONSENTCOOKIE_ID\n },\n content: {\n href: `//${t('URIs/www.be-novative.com/privacy_policy.html')}`,\n message:\n `

    ${t('legalCookieBar/title')}

    ` +\n t('legalCookieBar/description'),\n allow: t('legalCookieBar/accept'),\n deny: t('legalCookieBar/decline'),\n link: t('legalCookieBar/policyLink')\n },\n revokable: false\n };\n }\n\n render() {\n return null;\n }\n}\n\nconst mapStateToProps = state => ({\n language: getCurrentLanguage(state)\n});\n\nexport default compose(\n translate(),\n connect(mapStateToProps)\n)(CookieConsent);\n","import CookieConsent from './CookieConsent';\n\nexport default CookieConsent;\n","import React from 'react';\nimport isEmpty from 'lodash/isEmpty';\nimport { branch, compose, renderNothing } from 'recompose';\nimport Intercom from 'react-intercom';\nimport { connect } from 'react-redux';\nimport { ownProfileSelector } from '../../../profile/state/profile';\nimport { isCookieConsentDenied } from '../../../utils/cookieConsent';\nimport { intercomDimensions } from '../../styled/variables.styled';\n\nconst APP_ID = process.env.REACT_APP_INTERCOM_APP_ID;\nconst { vPadding, hPadding } = intercomDimensions;\n\nIntercomClient.defaultProps = {\n userProfile: {}\n};\nexport function IntercomClient({ userProfile }) {\n const userData = {};\n\n if (!isEmpty(userProfile)) {\n const { firstName, lastName, userId } = userProfile;\n userData.user_id = userId;\n userData.name = `${firstName} ${lastName}`;\n }\n\n return (\n \n );\n}\n\nconst mapStateToProps = state => ({\n userProfile: ownProfileSelector(state)\n});\n\nexport default compose(\n connect(mapStateToProps),\n branch(isCookieConsentDenied, renderNothing)\n)(IntercomClient);\n","import IntercomClient from './IntercomClient';\n\nexport default IntercomClient;\n","import FileSaver from 'file-saver';\n\nexport const DEFAULT_FILE_NAME = 'download';\nexport const DEFAULT_MIME = 'application/octet-stream';\n\nexport function saveFile(\n data,\n fileName = DEFAULT_FILE_NAME,\n mimeType = DEFAULT_MIME\n) {\n try {\n const file = new Blob([data], {\n type: mimeType\n });\n return FileSaver.saveAs(file, fileName);\n } catch (err) {\n throw new Error(err);\n }\n}\n\nexport function saveJson(data, fileName) {\n return saveFile(\n JSON.stringify(data),\n fileName,\n 'application/json;charset=utf-8'\n );\n}\n\nexport function saveExcel(data, fileName) {\n return saveFile(data, fileName, 'application/excel;charset=utf-8');\n}\n","import { normalize, schema } from 'normalizr';\nimport flow from 'lodash/flow';\nimport { createAction } from 'redux-actions';\nimport sanitizeForJson from '@bit/be-novative.kit.sanitize-for-json';\nimport { VOYAGER_API } from '../../api/constants';\nimport { asyncActionType } from '../../utils';\nimport { entities } from '../constants';\nimport {\n getApiResponseData,\n getEmbeddedItems,\n getHalSelfLink,\n getIdFromHref\n} from '../../api/utils/apiResponse';\nimport { FETCH_SCHEMA_DATA } from '../../constants';\nimport schemas from '../../schemas';\nimport { updateEntity } from '../../common/actions/entities';\n\nconst EMBEDDED_KEY = '_embedded';\n\nconst conceptPostSchema = new schema.Entity(\n entities.CONCEPT_POST,\n {\n [EMBEDDED_KEY]: {\n user: schemas.USER\n }\n },\n {\n idAttribute: value =>\n flow(\n getHalSelfLink,\n getIdFromHref\n )(value)\n }\n);\n\nconst headers = {\n Accept: 'application/hal+json'\n};\n\nexport const FETCH_CONCEPT_POSTS = asyncActionType('FETCH_CONCEPT_POSTS');\nexport const STORE_CONCEPT_POST_IDS = 'STORE_CONCEPT_POST_IDS';\nexport const fetchPosts = ideaConceptId => async dispatch => {\n const response = await dispatch({\n [VOYAGER_API]: {\n url: `/ideaconcepts/${ideaConceptId}/activities`,\n method: 'GET',\n headers,\n type: FETCH_CONCEPT_POSTS\n }\n });\n const normalisedResult = flow(\n getApiResponseData,\n getEmbeddedItems,\n items => normalize(items, [conceptPostSchema])\n )(response);\n\n dispatch({\n type: FETCH_SCHEMA_DATA.SUCCESS,\n payload: normalisedResult,\n meta: {\n entityType: entities.CONCEPT_POST\n }\n });\n\n dispatch({\n type: STORE_CONCEPT_POST_IDS,\n payload: normalisedResult.result\n });\n return response;\n};\n\nexport const SUBMIT_CONCEPT_POST = asyncActionType('SUBMIT_CONCEPT_POST');\nexport const submitPost = (ideaConceptId, text) => dispatch =>\n dispatch({\n [VOYAGER_API]: {\n url: `/ideaconcepts/${ideaConceptId}/activities`,\n method: 'POST',\n headers,\n type: SUBMIT_CONCEPT_POST,\n data: { description: sanitizeForJson(text) }\n }\n });\n\nexport const EDIT_CONCEPT_POST = asyncActionType('EDIT_CONCEPT_POST');\nexport const editPost = (ideaConceptId, postId, text) => dispatch =>\n dispatch({\n [VOYAGER_API]: {\n url: `/ideaconcepts/${ideaConceptId}/activities/${postId}`,\n method: 'PUT',\n type: EDIT_CONCEPT_POST,\n headers,\n data: { description: sanitizeForJson(text) }\n }\n }).then(() => {\n dispatch(\n updateEntity(entities.CONCEPT_POST, postId)({ description: text })\n );\n });\n\nexport const saveConceptPost = (updatedText, postId, ideaConceptId) =>\n postId\n ? editPost(ideaConceptId, postId, updatedText)\n : submitPost(ideaConceptId, updatedText);\n\nexport const DELETE_CONCEPT_POST = asyncActionType('DELETE_CONCEPT_POST');\nexport const deleteConceptPost = (ideaConceptId, postId) => dispatch =>\n dispatch({\n [VOYAGER_API]: {\n url: `/ideaconcepts/${ideaConceptId}/activities/${postId}`,\n method: 'DELETE',\n type: DELETE_CONCEPT_POST,\n postId\n }\n });\n\nexport const FLUSH_CONCEPT_POST_LIST = 'FLUSH_CONCEPT_POST_LIST';\nexport const flushConceptPosts = createAction(FLUSH_CONCEPT_POST_LIST);\n","// Config\n\nexport const CHALLENGE_DESCRIPTION_MAXLENGTH = 2000;\nexport const CHALLENGE_IMAGE_ASPECT_RATIO = 1.45;\nexport const CHALLENGE_IMAGE_CROP_HEIGHT = 240;\nexport const CHALLENGE_TITLE_MAXLENGTH = 200;\nexport const EVALUATION_AXIS_LABEL_LENGTH = 40;\nexport const INVITE_EMAIL_MAXLENGTH = 1000;\nexport const CHALLENGE_SENSITIVE_MIN_PARTICIPANTS_FOR_LIST = 10;\n\n// Definitions\n\n/**\n * @see ChallengePayloadForSubmission\n */\nexport const CHALLENGE_FORM_FIELDS = {\n AXIS_X: 'evaluationXAxis',\n AXIS_Y: 'evaluationYAxis',\n CATEGORY: 'categoryId',\n CLOSE_TIME: 'closesAt',\n CONCEPT_EVAL_CRITERIA: 'ideaConceptEvaluationCriteria',\n CRITERION: {\n ID: 'criterionId',\n NAME: 'name'\n },\n CREATOR: 'challengeCreator',\n DEFAULT_CONCEPT_OWNER: 'defaultIdeaConceptUser',\n DESCRIPTION: 'description',\n DURATION_CUSTOM: 'duration',\n DURATION_PRESET: 'range',\n FACILITATED: 'isFacilitated',\n FEATURED: 'highlighted',\n GROUP_IDEATION_TIME: 'groupIdeationDateTime',\n GROUP_IDEATION_TIMEZONE: 'groupIdeationTimeZone',\n HASHTAGS: 'hashtags',\n IDEATION_PHASES: 'ideationPhases',\n IDEATION_ROOM_MAX_SIZE: 'maximumNumberOfParticipantsPerRoom',\n IMAGE: 'image',\n INVITE_EMAIL: 'personalizedEmailBody',\n INVITE_ALL_USERS: 'sendEmailForAllRegisteredUsers',\n INVITED_USERS: 'invitedUsers',\n LANGUAGE: 'language',\n SCENARIO: 'scenario',\n START_PHASE: 'startPhase',\n START_TIME: 'startsAt',\n TITLE: 'title',\n VISIBILITY: 'visibility'\n};\n\n/**\n * @enum {string}\n * ISO-8601 duration presets for defining challenge start and close times\n */\nexport const ChallengeDurations = {\n oneDay: 'P1D',\n twoDays: 'P2D',\n oneWeek: 'P1W',\n twoWeeks: 'P2W'\n};\n\n/**\n * @enum {string}\n * @readonly\n */\nexport const ChallengePhases = {\n /** The challenge starts with sharing ideas. Default setting. */\n IDEATION: 'IDEATION',\n /** Joining users are directed to evaluating ideas */\n EVALUATION: 'EVALUATION'\n};\n\n/**\n * Determines how various app behaviour is configured in order to fit the most common usage scenarios.\n * @enum {string}\n * @readonly\n */\nexport const ChallengeScenario = {\n /** A classic challenge with the original app behaviour. */\n Default: 'DEFAULT',\n /** A sensitive challenge, where ideators and suggestion authors are completely hidden, without an option to reveal them. */\n Sensitive: 'SENSITIVE'\n};\n\n/**\n * Determines who will be the initial owner of idea concepts that are created during the challenge. Defaults to the challenge owner.\n * @enum {string}\n * @readonly\n */\nexport const DefaultConceptOwner = {\n /** The user who created the challenge will be the owner of all resulting idea concepts */\n ChallengeOwner: 'CHALLENGE_OWNER',\n /** Each concept ownership will be attributed to the user who wrote the original idea that later became the idea concept */\n IdeaCreator: 'IDEA_CREATOR'\n};\n\n/**\n * @enum {string}\n * @readonly\n */\nexport const ChallengeStatus = {\n /** The challenge is open. Ideas can be shared, evaluated and commented. */\n OPEN: 'OPEN',\n /** The challenge is closed. Content can no longer be added, but results are visible. */\n CLOSED: 'CLOSED',\n /** The challenge has not started yet. Content cannot be added yet, but the challenge is already visible. */\n ANNOUNCED: 'ANNOUNCED',\n /** The challenge has been deleted, and is no longer visible to users */\n DELETED: 'DELETED'\n};\n\n/**\n * Describes which users or groups can see and join a challenge.\n * @enum {string}\n * @readonly\n */\nexport const ChallengeVisiblity = {\n /** Only the challenge creator, the invited users and admins can see and join the challenge */\n PRIVATE: 'PRIVATE',\n /** All platform users can see and join the challenge */\n PUBLIC: 'COMPANY_WIDE'\n};\n\n/**\n * @enum {string} Properties for sorting ideas in the challenge idea list\n * @readonly\n */\n\nexport const ChallengeIdeasSortBy = {\n /** Sort by evaluation score weighted with number of likes */\n CombinedScore: 'COMBINED_SCORE',\n /** Sort by evaluation score */\n Score: 'SCORE',\n /** Sort by number of likes */\n Popularity: 'POPULARITY',\n /** Sort by X-axis score */\n ValueX: 'X_AXIS_VALUE',\n /** Sort by Y-axis score */\n ValueY: 'Y_AXIS_VALUE',\n /** Sort by creation time */\n CreatedAt: 'CREATED_AT'\n};\n\n// modals\n\nexport const DELETE_CHALLENGE_MODAL = 'DELETE_CHALLENGE_MODAL';\nexport const EDIT_CHALLENGE = 'EDIT_CHALLENGE';\n","import { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { flushConceptIds, fetchAllIdeaConcepts } from '../../actions';\nimport { conceptListFilterKeys } from '../../constants';\nimport useActiveStageFilter from './useActiveStageFilter';\n\nconst { STAGE } = conceptListFilterKeys;\n\nexport default function useListFetcher() {\n const dispatch = useDispatch();\n const activeStagePathParam = useActiveStageFilter();\n const refreshList = useCallback(\n (args = { query: null, flushList: false }) => {\n if (args.flushList) {\n dispatch(flushConceptIds());\n }\n dispatch(\n fetchAllIdeaConcepts({\n ...args.query,\n [STAGE]: activeStagePathParam\n })\n );\n },\n [dispatch, activeStagePathParam]\n );\n\n return refreshList;\n}\n","import { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport {\n getGroupCommentByConceptId,\n getUserCommentForConcept\n} from '../../state/internalComments';\nimport {\n getGroupFeedbackByConceptId,\n getUserFeedbackForConcept\n} from '../../state/reviewerFeedback';\n\nconst getSelectorFor = {\n internalComment: isGroupComment =>\n isGroupComment ? getGroupCommentByConceptId : getUserCommentForConcept,\n feedback: isGroupComment =>\n isGroupComment ? getGroupFeedbackByConceptId : getUserFeedbackForConcept\n};\n\n/**\n * Returns an internal comment or a feedback from Redux\n * @param {\"internalComment\" | \"feedback\"} commentType - Determines which endpoint will be called for fetching the comment\n * @param {string|number} conceptId - Parent concept ID\n * @param {string|number} authorId - If the author's user ID is present, their comment is returned. Otherwise the group comment is returned.\n * @returns {Function}\n */\nexport default function useGetCommentLike(commentType, conceptId, authorId) {\n if (!['internalComment', 'feedback'].includes(commentType))\n throw Error(`Invalid commentType: ${commentType}`);\n\n const isGroupComment = !authorId;\n const commentSelector = useMemo(\n () => getSelectorFor[commentType](isGroupComment),\n [commentType, isGroupComment]\n );\n return useSelector(state => commentSelector(state, conceptId, authorId));\n}\n","import flow from 'lodash/flow';\nimport get from 'lodash/get';\nimport getFp from 'lodash/fp/get';\nimport isEqualFp from 'lodash/fp/isEqual';\nimport { AsyncStatus } from '../../constants';\n\nexport const hasFailed = isEqualFp(AsyncStatus.Failed);\n\nexport const isLoading = getFp('loading');\n\nexport const isLoadingNew = isEqualFp(AsyncStatus.Loading);\n\nexport const getStoreStatus = getFp('status');\n\n/**\n * @param {Object} itemWithCreator - An entity with a creator\n * @return {User} The user who created the entity\n */\n\nexport const getCreator = itemWithCreator => get(itemWithCreator, 'creator');\n\nexport const getOwner = idea => get(idea, 'owner');\n\nexport const getCreateTime = item => get(item, 'createdAt');\n\nexport const getEditTime = item => get(item, 'modifiedAt');\n\nexport const getFilterBy = flow(getFp('filterBy'));\n\nexport const getLimit = getFp('limit');\n\nexport const getNextStart = getFp('nextStart');\n\nexport const getStart = getFp('start');\n\nexport const getTotal = getFp('total');\n\nexport const getVisibleIds = state => get(state, 'visibleIds', []);\n\nexport const getPagination = getFp('pagination');\n\nexport const getSort = getFp('sort');\n\nexport const getCurrentPage = flow(\n getPagination,\n getFp('currentPage')\n);\n\nexport const getNextPage = flow(\n getPagination,\n getFp('nextPage')\n);\n\nexport const getPrevPage = flow(\n getPagination,\n getFp('prevPage')\n);\n\nexport const getLastPage = flow(\n getPagination,\n getFp('lastPage')\n);\n\nexport const getCurrentCursor = flow(\n getPagination,\n getStart\n);\n\nexport const getNextCursor = flow(\n getPagination,\n getNextStart\n);\n\nexport const getPageSize = flow(\n getPagination,\n getLimit\n);\n\nexport const getSortBy = flow(\n getSort,\n getFp('sortBy')\n);\n\nexport const getSortDirection = flow(\n getSort,\n getFp('sortDirection')\n);\n","import DayPicker from 'react-day-picker';\nimport MomentLocaleUtils from 'react-day-picker/moment';\nimport './DayPicker.css';\n\nexport default DayPicker;\nexport { MomentLocaleUtils };\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Screen\":\"BootstrapSpinner_Screen__2o1G6\",\"Wrapper\":\"BootstrapSpinner_Wrapper__3u1Ce\",\"Spinner\":\"BootstrapSpinner_Spinner__yGq9K\",\"CenterBox\":\"BootstrapSpinner_CenterBox__2r7FQ\",\"Content\":\"BootstrapSpinner_Content__2jgRt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Table\":\"ReviewScoreDetails_Table__3P-mE\",\"Header\":\"ReviewScoreDetails_Header__1ZrD0\",\"longLabels\":\"ReviewScoreDetails_longLabels__VSS_b\",\"BarGraph\":\"ReviewScoreDetails_BarGraph__AEX0y\",\"Score\":\"ReviewScoreDetails_Score__3mDJe\",\"grow\":\"ReviewScoreDetails_grow__1QDKn\"};","/**\n * CSS units for position and size calculations, and for defining CSS rules as JS template literals\n * @enum {string}\n * @readonly\n */\nexport const SIZE_UNITS = {\n /** `\"px\"` */\n PX: 'px',\n /** `\"%\"` */\n PERCENT: '%'\n};\n\nconst NO_NETWORK = 'NO_NETWORK';\nconst SOCKET_FAILED = 'SOCKET_FAILED';\nconst SOCKET_RETRY = 'SOCKET_RETRY';\n\nexport const CanvasIdProps = {\n Idea: 'ideaId',\n Image: 'imageId'\n};\n\n/**\n * Network- and socket-related error codes\n * @enum {string}\n * @readonly\n */\nexport const NETWORK_ERROR = {\n /** Browser is not connected */\n NO_NETWORK,\n /** Socket connection wasn't established or has failed */\n SOCKET_FAILED,\n /** Socket is trying to reconnect */\n SOCKET_RETRY\n};\n\nexport const NETWORK_ERROR_CALLOUT_TYPES = {\n [NO_NETWORK]: { type: 'danger', label: 'common/error/network' },\n [SOCKET_FAILED]: {\n type: 'danger',\n label: 'dndCanvas/socketError/status'\n },\n [SOCKET_RETRY]: {\n type: 'warning',\n label: 'dndCanvas/socketRetry/status'\n }\n};\n","import flow from 'lodash/flow';\nimport get from 'lodash/get';\nimport getFp from 'lodash/fp/get';\nimport maxByFp from 'lodash/fp/maxBy';\nimport { createSelector } from 'reselect';\nimport { getAllIdsFrom } from '../../common/selectors/entities';\nimport { getEditTime } from '../../common/selectors/meta';\nimport { rootSelector } from '.';\n\nconst ideasRoot = flow(\n rootSelector,\n getFp('ideas')\n);\n\nexport const getCanvasIdeaIds = state =>\n flow(\n ideasRoot,\n getAllIdsFrom\n )(state);\n\nexport const getCanvasIdeas = state =>\n flow(\n ideasRoot,\n getFp('byId')\n )(state);\n\nexport const getCanvasIdeaById = createSelector(\n getCanvasIdeas,\n (_, ideaId) => ideaId,\n (ideaMap, id) => get(ideaMap, id)\n);\n\nexport const makeGetCanvasIdeaById = () => getCanvasIdeaById;\n\nexport const findLastModifyTime = (items = []) =>\n flow(\n maxByFp(\n flow(\n getEditTime,\n timestamp => new Date(timestamp)\n )\n ),\n getEditTime\n )(items);\n\nexport const getOwnerId = idea => get(idea, 'owner');\n","import React from 'react';\nimport withTooltip from './withTooltip';\nimport './Tooltip.css';\n\nfunction Tooltip({ children, className, tag: Tag, ...rest }) {\n return {children};\n}\n\nTooltip.defaultProps = {\n tag: 'span'\n};\n\nexport default withTooltip(Tooltip);\n","/**\n * @enum {string} AuthException\n * @readonly\n */\nexport const AuthException = {\n AlreadyHasAccount: 'USER_IS_ALREADY_REGISTERED',\n PlatformNotFound: 'COMPANY_NOT_FOUND',\n EmailNotAllowed: 'EMAIL_ADDRESS_IS_NOT_ALLOWED',\n InvalidInvitation: 'INVALID_INVITATION_CODE',\n InvalidLogin: 'INVALID_LOGIN',\n SignupForInvited: 'REGISTRATION_IS_ONLY_ALLOWED_FOR_INVITED_PEOPLE'\n};\n\nexport const UNKNOWN_ERROR = 'UNKNOWN_ERROR';\n\nexport const SOCIAL_EXCEPTIONS = {\n NOT_READY: 'NOT_READY',\n NOT_AUTHORIZED: 'NOT_AUTHORIZED',\n NOT_LOGGED_IN: 'NOT_LOGGED_IN',\n UNKNOWN_ERROR,\n UNKNOWN_PROVIDER: 'UNKNOWN_PROVIDER'\n};\n\n/**\n * @enum {string} SSOProvider\n * @readonly\n */\nexport const SSO_Provider = {\n GOOGLE: 'GOOGLE',\n FACEBOOK: 'FACEBOOK',\n LINKEDIN: 'LINKEDIN'\n};\n\n/**\n * @enum {string} SignupFormFields\n * @readonly\n * @see {UserSignupPayload}\n */\nexport const SignupFormFields = {\n firstName: 'firstName',\n lastName: 'lastName',\n email: 'email',\n password: 'password',\n countryCode: 'countryCode',\n userConsent: 'userConsent'\n};\n","import get from 'lodash/get';\nimport memoize from 'lodash/memoize';\n\nexport const getUserId = memoize(user => get(user, 'userId'));\n\nexport const getFirstName = user => get(user, 'firstName', '');\n\nexport const getLastName = user => get(user, 'lastName', '');\n\n/**\n * Returns the user's avatar image data\n * @param {User} user\n * @return {ImageObject} The image may contain a public URL or a Base64-encoded image\n */\n\nexport const getUserAvatar = user => get(user, 'image', {});\n\nexport const getUserEmail = memoize(user => get(user, 'email'), getUserId);\n\nexport const isOnline = user => get(user, 'online');\n\n// Invitee-specific selectors\n\nexport const getUserHash = user => get(user, 'hash', '');\n\nexport const getUserDisplayName = user => get(user, 'displayName', '');\n","import flow from 'lodash/flow';\nimport deburr from 'lodash/deburr';\nimport trim from 'lodash/trim';\nimport isString from 'lodash/isString';\n\n/**\n * Converts slanted/curly quotes to regular double quotes.\n * @param {string} str - String containing slanted/curly quotes\n * @returns Sanitized string\n */\nexport function convertDoubleQuotes(str) {\n return String(str).replace(/[\\u201C\\u201D]/g, '\"');\n}\n\n/**\n * Normalises user inputs typically for form values.\n * * It removes accented characters\n * * Converts the string to lower case\n * * Trims leading and trailing whitespace characters\n * @param {string} str String to be normalised\n * @returns {string}\n */\nexport default function strNormalise(str) {\n if (!isString(str)) {\n return '';\n }\n\n return flow(\n deburr,\n trim,\n s => s.toLowerCase() // _.lowerCase would insert spaces in case of camelCase\n )(str);\n}\n","import { Component } from 'react';\nimport noop from 'lodash/noop';\nimport PropTypes from 'prop-types';\nimport withClickOutside from 'react-onclickoutside';\nimport './Dropdown.css';\n\nexport class Dropdown extends Component {\n static propTypes = {\n onHide: PropTypes.func,\n onSelect: PropTypes.func,\n onShow: PropTypes.func\n };\n static defaultProps = {\n onHide: noop,\n onSelect: noop,\n onShow: noop\n };\n\n state = {\n isActive: false\n };\n\n handleHide = () => {\n this.setState({\n isActive: false\n });\n this.props.onHide();\n };\n\n handleShow = () => {\n this.setState({\n isActive: true\n });\n this.props.onShow();\n };\n\n handleClickOutside = () => {\n this.handleHide();\n };\n\n handleToggle = () => {\n this.state.isActive ? this.handleHide() : this.handleShow();\n };\n\n handleSelect = (...args) => {\n this.props.onSelect(...args);\n this.handleHide();\n };\n\n getChildProps = () => ({\n handleShow: this.handleShow,\n handleHide: this.handleHide,\n handleToggle: this.handleToggle,\n handleSelect: this.handleSelect,\n isActive: this.state.isActive\n });\n\n render() {\n return this.props.children(this.getChildProps());\n }\n}\n\nexport default withClickOutside(Dropdown);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { refType } from '../../types';\n\nDropdownContent.propTypes = {\n bubble: PropTypes.oneOf(['left', 'center', 'right']),\n children: PropTypes.node,\n className: PropTypes.string,\n forwardedRef: refType\n};\nfunction DropdownContent({\n bubble,\n children,\n className,\n forwardedRef,\n ...rest\n}) {\n const baseClass = 'Dropdown__content';\n const classes = classNames(baseClass, className, {\n [`${baseClass}--bubble-${bubble}`]: bubble\n });\n return (\n
    \n {children}\n
    \n );\n}\n\nexport default DropdownContent;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { getDisplayName } from '../../../utils';\n\nconst renderOnCondition = (condition, component = null) => WrappedComponent => {\n function RenderOnCondition({ isVisible, ...rest }) {\n return isVisible ? : component;\n }\n\n function mapStateToProps(state) {\n return {\n isVisible: condition(state)\n };\n }\n\n RenderOnCondition.dispayname = `renderOnCondition(${getDisplayName(\n WrappedComponent\n )})`;\n\n return connect(mapStateToProps)(RenderOnCondition);\n};\n\nexport default renderOnCondition;\n","import React from 'react';\nimport constant from 'lodash/constant';\nimport flow from 'lodash/flow';\nimport getFp from 'lodash/fp/get';\nimport negate from 'lodash/negate';\nimport { Redirect } from 'react-router-dom';\nimport {\n isAdminSelector,\n ownProfileSelector\n} from '../../../profile/state/profile';\nimport platform from '../../../utils/platform';\nimport paths from '../../../paths';\nimport renderOnCondition from './renderOnCondition';\nimport { isTokenValid } from '../../../authentication/services/token.service';\n\n// HOCs\n\nconst isAuthenticated = flow(\n ownProfileSelector,\n getFp('userId'),\n Boolean,\n hasProfile => hasProfile || isTokenValid()\n);\n\nexport const renderWhenAuthenticated = renderOnCondition(isAuthenticated);\n\nexport const renderWhenUnauthenticated = renderOnCondition(\n negate(isAuthenticated)\n);\n\nexport const renderWhenPublicPlatform = renderOnCondition(\n constant(platform.isPublic(window.location.hostname))\n);\n\nexport const requireAdminRole = renderOnCondition(\n isAdminSelector,\n \n);\n\nexport const renderWhenAdmin = renderOnCondition(isAdminSelector);\n\nexport default {\n requireAdminRole,\n renderOnCondition,\n renderWhenAuthenticated,\n renderWhenUnauthenticated,\n renderWhenPublicPlatform,\n renderWhenAdmin\n};\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport get from 'lodash/get';\nimport includes from 'lodash/fp/includes';\nimport isFunction from 'lodash/isFunction';\nimport union from 'lodash/fp/union';\nimport without from 'lodash/fp/without';\nimport cn from 'classnames';\nimport Checkbox from '@bit/be-novative.kit.checkbox';\nimport './CheckboxGroup.css';\n\nclass CheckboxGroup extends Component {\n static propTypes = {\n choices: PropTypes.arrayOf(\n PropTypes.shape({\n value: PropTypes.any.isRequired,\n disabled: PropTypes.bool,\n label: PropTypes.string\n })\n ).isRequired,\n input: PropTypes.object,\n layout: PropTypes.oneOf(['horizontal', 'vertical']),\n meta: PropTypes.object\n };\n\n static defaultProps = {\n input: {\n onChange: null,\n onBlur: null\n },\n layout: 'vertical'\n };\n\n handleChange = event => {\n const { onChange, value: inputValue } = this.props.input;\n const { value, checked } = event.target;\n\n if (!isFunction(onChange)) {\n console.warn('input.onChange is not a function, skipping');\n return;\n }\n\n const activeCheckboxes = checked\n ? union([value], inputValue || [])\n : without([value], inputValue);\n const currentChange = { [value]: checked };\n\n onChange(activeCheckboxes, currentChange);\n };\n\n handleBlur = () => {\n const { input } = this.props;\n\n if (isFunction(input.onBlur)) {\n input.onBlur(input.value);\n } else {\n console.warn('input.onBlur is not a function, skipping');\n }\n };\n\n render() {\n const { input, meta, choices, className, layout } = this.props;\n\n return (\n
      \n {choices.map(choice => (\n
    • \n \n
    • \n ))}\n
    \n );\n }\n}\n\nexport default CheckboxGroup;\n","import CheckboxGroup from './CheckboxGroup';\n\nexport default CheckboxGroup;\n","import get from 'lodash/get';\n\nconst getItemByIdFrom = collection => itemId => get(collection, itemId);\n\nexport default getItemByIdFrom;\n","import flow from 'lodash/flow';\nimport isString from 'lodash/isString';\nimport map from 'lodash/fp/map';\nimport uniq from 'lodash/uniq';\nimport { maybeHtmlFromState } from '@bit/be-novative.kit.richtext-utils';\nimport { conceptEditorFormFields } from '../constants';\nimport { convertInviteeToIdString } from '../../utils/payloadUtils/invitee';\nimport { getCategoryId } from '../../common/getters/categories';\n\nconst {\n BENEFITS,\n CATEGORY,\n CATEGORY_ID,\n COSTS,\n FOLLOW_UP_CHALLENGE,\n IDEA_TEXT,\n IMAGE,\n INVITED_USERS,\n IS_PRIVATE,\n PLANNED_ACTIVITIES,\n CONCEPT_STATE,\n TEAM,\n TITLE\n} = conceptEditorFormFields;\n\nexport default function createConceptPayload(payload = {}) {\n const benefitsHtml = maybeHtmlFromState(payload[BENEFITS]);\n const costsHtml = maybeHtmlFromState(payload[COSTS]);\n const ideaTextHtml = maybeHtmlFromState(payload[IDEA_TEXT]);\n const plannedActivitiesHtml = maybeHtmlFromState(payload[PLANNED_ACTIVITIES]);\n const state = payload[CONCEPT_STATE];\n\n const category = payload[CATEGORY] || payload[CATEGORY_ID];\n const categoryId = isString(category) ? category : getCategoryId(category);\n\n const mappedInvitedUsers = flow(\n map(convertInviteeToIdString),\n uniq\n )(payload[TEAM]);\n\n return {\n [TITLE]: payload[TITLE],\n [IDEA_TEXT]: ideaTextHtml,\n [BENEFITS]: benefitsHtml,\n [COSTS]: costsHtml,\n [PLANNED_ACTIVITIES]: plannedActivitiesHtml,\n [IMAGE]: payload[IMAGE],\n [CONCEPT_STATE]: state,\n [IS_PRIVATE]: Boolean(payload[IS_PRIVATE]),\n [INVITED_USERS]: mappedInvitedUsers, // GET endpoint sends `team`, PUT/POST expects `invitedUsers`\n [CATEGORY_ID]: categoryId,\n [FOLLOW_UP_CHALLENGE]: payload[FOLLOW_UP_CHALLENGE]\n };\n}\n","import flow from 'lodash/flow';\nimport forEachFp from 'lodash/fp/forEach';\nimport isPlainObject from 'lodash/isPlainObject';\nimport isString from 'lodash/isString';\nimport toPairs from 'lodash/toPairs';\nimport values from 'lodash/values';\nimport { parseQueryString } from '../../utils';\nimport forceArray from '../../utils/forceArray';\nimport { isCepheidVariant } from '../../utils/variants';\nimport {\n conceptListFilterEnums,\n conceptListFilterKeys,\n IdeaConceptImplementationStatus,\n IdeaConceptImplementationStatusCepheid\n} from '../constants';\n\nconst ERR = 'Concept filter query validation failed.';\nconst { STAGE, CONCEPT_TYPE, CHALLENGE, CATEGORY } = conceptListFilterKeys;\nconst conceptStages = isCepheidVariant()\n ? IdeaConceptImplementationStatusCepheid\n : IdeaConceptImplementationStatus;\n\n/**\n * Validates elements of a query map, and throws if unknown keys or invalid values are used.\n * Sorting and pagination (both page- and cursor-based) params are ignored\n * @param {Object} query - Query string or a map of query params\n * @returns {void} Returns `undefined` if the query is valid, or throws if it's invalid.\n */\nexport default function validateConceptFilterQuery(query) {\n let q;\n if (!query) {\n return;\n } else if (isString(query)) {\n q = parseQueryString(query);\n } else if (isPlainObject(query)) {\n q = query;\n } else {\n throw new Error(`query must be a string or an object, got: ${query}`);\n }\n\n Object.keys(q).forEach(key => {\n if (!values(conceptListFilterKeys).includes(key)) {\n throw new Error(`${ERR} Filter key is invalid: ${key}`);\n }\n });\n\n const validatorMap = {\n [STAGE]: validateFilter(val => values(conceptStages).includes(val)),\n [CONCEPT_TYPE]: validateFilter(val =>\n values(conceptListFilterEnums).includes(val)\n ),\n [CHALLENGE]: validateFilter(isString),\n [CATEGORY]: validateFilter(isString)\n };\n\n flow(\n toPairs,\n forEachFp(([key, val]) => validatorMap[key](key, val))\n )(q);\n}\n\nfunction validateFilter(validatorFn) {\n return (key, val) => {\n if (!val) {\n return;\n }\n\n const valueArr = forceArray(val);\n if (!valueArr.every(filterVal => validatorFn(filterVal))) {\n throw new Error(\n `${ERR} Filter value is invalid. Key: ${key}, value: ${val}`\n );\n }\n };\n}\n","import entityIdReducerFactory from './entityId';\nimport errorReducerFactory from './error';\nimport loadingReducerFactory from './loading';\nimport paginationReducerFactory from './pagination';\n\nexport {\n entityIdReducerFactory,\n errorReducerFactory,\n loadingReducerFactory,\n paginationReducerFactory\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"StageRow\":\"ConceptListToolbar_StageRow__1OTNB\",\"StageFilters\":\"ConceptListToolbar_StageFilters__2pDR8\",\"ChboxWrapper\":\"ConceptListToolbar_ChboxWrapper__3yx7q\"};","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport moment from 'moment';\nimport {\n parseUTCISOString as parseDate,\n formatLocalDateToUTCISOString as formatDate\n} from '../../../utils/date';\nimport './TimeInput.css';\n\nconst loop = (min, max) => value => {\n if (min > value) {\n return max;\n }\n if (max < value) {\n return min;\n }\n return value;\n};\n\nconst loopHour = loop(0, 23);\nconst loopMinute = loop(0, 59);\n\nconst zeroPad = num => (num < 10 ? '0' + num : num);\n\nclass TimeInput extends Component {\n handleHourChange = event => {\n const { onChange, value } = this.props;\n const localDate = parseDate(value);\n const hour = loopHour(event.target.value);\n if (localDate) {\n onChange(formatDate(localDate.setHours(hour)));\n }\n };\n\n handleMinuteChange = event => {\n const { onChange, value } = this.props;\n const localDate = parseDate(value);\n const minute = loopMinute(event.target.value);\n if (localDate) {\n onChange(formatDate(localDate.setMinutes(minute)));\n }\n };\n\n isMeridiemUsed() {\n const { locale } = this.props;\n const localeData = moment.localeData(locale);\n return /a/gi.test(localeData.longDateFormat('LT'));\n }\n\n render() {\n const { value, onFocus, onBlur } = this.props;\n const localDate = parseDate(value);\n\n return (\n
    \n \n : \n \n
    \n );\n }\n}\n\nTimeInput.propTypes = {\n value: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n locale: PropTypes.string\n};\n\nTimeInput.defaultProps = {\n locale: 'en'\n};\n\nexport default TimeInput;\n","import TimeInput from './TimeInput';\n\nexport default TimeInput;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Radio\":\"Radio_Radio__349Iq\",\"checked\":\"Radio_checked__2D1Ut\",\"disabled\":\"Radio_disabled__25cSr\",\"Icon\":\"Radio_Icon__jxiIm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Wrapper\":\"RadioButtonGroup_Wrapper__38CX2\",\"Item\":\"RadioButtonGroup_Item__1RLgj\",\"checked\":\"RadioButtonGroup_checked__3MgfD\",\"disabled\":\"RadioButtonGroup_disabled__3SrEA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"PageHeader\":\"PageHeader_PageHeader__26oil\",\"Section\":\"PageHeader_Section__3ADno\",\"last-child\":\"PageHeader_last-child__2_L8Z\",\"Item\":\"PageHeader_Item__39dcQ\"};","import flow from 'lodash/flow';\nimport get from 'lodash/fp/get';\nimport getOr from 'lodash/fp/getOr';\nimport { handleActions } from 'redux-actions';\nimport { combineReducers } from 'redux';\nimport { CHALLENGE_PERMISSIONS, FETCH_HASHTAGS } from '../../constants';\n\nconst sendEmailToEveryone = handleActions(\n {\n [CHALLENGE_PERMISSIONS.SUCCESS]: (state, { payload }) =>\n payload.sendEmailToEveryone\n },\n false\n);\n\nconst featuredChallengeCanBeSet = handleActions(\n {\n [CHALLENGE_PERMISSIONS.SUCCESS]: (state, { payload }) =>\n payload.featuredChallengeCanBeSet\n },\n false\n);\n\nconst companyWideChallengeCanBePublished = handleActions(\n {\n [CHALLENGE_PERMISSIONS.SUCCESS]: (state, { payload }) =>\n payload.companyWideChallengeCanBePublished\n },\n true\n);\n\nconst customCreatorCanBeSet = handleActions(\n {\n [CHALLENGE_PERMISSIONS.SUCCESS]: (state, { payload }) =>\n payload.customCreatorCanBeSet\n },\n false\n);\n\nconst hashtags = handleActions(\n {\n [FETCH_HASHTAGS.SUCCESS]: (state, { payload }) => payload\n },\n []\n);\n\nexport default combineReducers({\n sendEmailToEveryone,\n featuredChallengeCanBeSet,\n companyWideChallengeCanBePublished,\n customCreatorCanBeSet,\n hashtags\n});\n\nexport const getChallengeRoot = get('challengeSettings');\nexport const hashtagsSelector = state =>\n flow(\n getChallengeRoot,\n getOr([], 'hashtags')\n )(state);\nexport const isAllSendAllowedSelector = state =>\n flow(\n getChallengeRoot,\n get('sendEmailToEveryone')\n )(state);\nexport const isFeaturedAllowedSelector = state =>\n flow(\n getChallengeRoot,\n get('featuredChallengeCanBeSet')\n )(state);\nexport const isPublicAllowedSelector = state =>\n flow(\n getChallengeRoot,\n get('companyWideChallengeCanBePublished')\n )(state);\nexport const isCreatorEditableSelector = state =>\n flow(\n getChallengeRoot,\n get('customCreatorCanBeSet')\n )(state);\n","import { useState } from 'react';\nimport throttle from 'lodash/throttle';\nimport useMountEffect from './useMountEffect';\n\n// Based on\n// Added `useMountEffect` and throttling options\n/**\n * Returns the viewport width and height.\n * Based on https://usehooks.com/useWindowSize/,\n * but added internal `useMountEffect` hook\n * and throttling options.\n * @param {Object} options\n * @param {number} [options.throttleMs] - Optional sampling interval in milliseconds. Defaults to `150`.\n * @returns {{ width: number, height: number }} The current viewport size\n */\nexport default function useWindowSize(options = { throttleMs: 100 }) {\n const isClient = typeof window === 'object';\n\n function getSize() {\n return {\n width: isClient ? window.innerWidth : undefined,\n height: isClient ? window.innerHeight : undefined\n };\n }\n\n const [windowSize, setWindowSize] = useState(getSize);\n\n useMountEffect(() => {\n if (!isClient) {\n return false;\n }\n\n const handleResize = throttle(() => {\n setWindowSize(getSize());\n }, options.throttleMs);\n\n function maybeResize() {\n handleResize();\n }\n\n window.addEventListener('resize', maybeResize);\n return function cleanUp() {\n window.removeEventListener('resize', maybeResize);\n };\n }, []);\n\n return windowSize;\n}\n","import find from 'lodash/find';\nimport findIndex from 'lodash/findIndex';\nimport flow from 'lodash/flow';\nimport getFp from 'lodash/fp/get';\nimport isEqualFp from 'lodash/fp/isEqual';\nimport {\n createAsyncThunk,\n createSlice,\n createSelector\n} from '@reduxjs/toolkit';\nimport { JOIN_CHALLENGE } from '../../constants';\nimport addBreadcrumb from '../../telemetry/addBreadcrumb';\nimport {\n normalisePhaseChangedWithConfigMsg,\n reqPhaseChangeMsg\n} from '../utils/socketMsg/phases';\n\nconst initialState = {\n canUserChangePhase: false,\n currentPhaseId: null,\n configs: []\n};\n\nconst phasesSlice = createSlice({\n name: 'phases',\n initialState,\n reducers: {\n phaseChangedWithConfig: (state, action) => {\n const { currentPhaseId, phases } = normalisePhaseChangedWithConfigMsg(\n action.payload\n );\n if (!Array.isArray(phases)) {\n throw new Error('phases must be an array, got ' + typeof phases);\n }\n state.currentPhaseId = currentPhaseId;\n state.configs = phases;\n },\n toggleManualChange: (state, action) => {\n state.canUserChangePhase = Boolean(action.payload);\n }\n },\n extraReducers: builder => {\n builder.addCase(JOIN_CHALLENGE.SUCCESS, (state, action) => {\n const { ideationPhaseId, ideationPhases } = action.payload;\n if (!Array.isArray(ideationPhases)) {\n throw new Error('phases must be an array, got ' + typeof phases);\n }\n state.currentPhaseId = ideationPhaseId;\n state.configs = ideationPhases;\n });\n builder.addCase('RESET_IDEATION', () => initialState);\n }\n});\n\nconst rootSelector = getFp(['ideation', 'phases']);\nconst idMatches = (phase, targetId) =>\n flow(\n getFp('id'),\n isEqualFp(targetId)\n )(phase);\nconst getCurrentPhaseId = createSelector(\n rootSelector,\n state => state.currentPhaseId\n);\nconst getAllPhaseConfigs = createSelector(\n rootSelector,\n state => state.configs\n);\nconst getPhaseById = createSelector(\n getAllPhaseConfigs,\n (_, targetId) => targetId,\n (phases, targetId) => find(phases, phase => idMatches(phase, targetId))\n);\nconst getCurrentPhase = createSelector(\n getAllPhaseConfigs,\n getCurrentPhaseId,\n (phases, currentId) => find(phases, phase => idMatches(phase, currentId))\n);\nconst getCurrentPhaseType = createSelector(\n getCurrentPhase,\n getFp('type')\n);\nconst getCanUserChangePhase = createSelector(\n rootSelector,\n state => state.canUserChangePhase\n);\nconst getNextPhaseId = createSelector(\n getAllPhaseConfigs,\n getCurrentPhaseId,\n (phases, currentId) => {\n const currentIx = findIndex(\n phases,\n flow(\n getFp('id'),\n isEqualFp(currentId)\n )\n );\n if (currentIx === phases.length) {\n addBreadcrumb(\n new Error('Range error: Trying to go past final ideation phase', {\n category: 'ideation'\n })\n );\n }\n const nextIx = Math.min(currentIx + 1, phases.length - 1);\n return phases[nextIx].id;\n }\n);\n\nconst selectors = {\n getAllPhaseConfigs,\n getPhaseById,\n getNextPhaseId,\n getCurrentPhase,\n getCurrentPhaseId,\n getCurrentPhaseType,\n getCanUserChangePhase\n};\n\nconst advancePhase = createAsyncThunk('phases/goToNext', (_, thunkApi) => {\n const nextPhaseId = getNextPhaseId(thunkApi.getState());\n // Socket messages don't have replies (apart from successfully delivering the message),\n // so no need for handling an async response.\n thunkApi.dispatch(reqPhaseChangeMsg(nextPhaseId));\n});\n// TODO is there an idiomatic way for augmenting the state slice actions?\nphasesSlice.actions.advancePhase = advancePhase;\n\nexport { initialState, selectors };\nexport default phasesSlice;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { closeModal } from '../../../common/actions';\nimport withModal from '../../containers/withModal';\nimport { Button, Panel } from '../';\nimport './ConfirmDialog.css';\n\nexport class ConfirmDialog extends Component {\n static propTypes = {\n title: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n okLabel: PropTypes.string.isRequired,\n cancelLabel: PropTypes.string.isRequired,\n okCallback: PropTypes.func,\n cancelCallback: PropTypes.func,\n autoClose: PropTypes.bool,\n isLoading: PropTypes.bool,\n variant: PropTypes.string\n };\n\n static defaultProps = {\n okCallback: () => {},\n cancelCallback: () => {},\n variant: 'primary',\n autoClose: true\n };\n\n onConfirm = () => {\n const { autoClose, closeModal, okCallback } = this.props;\n\n okCallback();\n\n if (autoClose) {\n closeModal();\n }\n };\n\n onCancel = () => {\n const { closeModal, cancelCallback } = this.props;\n\n cancelCallback();\n closeModal();\n };\n\n render() {\n const className = 'ConfirmDialog';\n const {\n title,\n text,\n children,\n okLabel,\n cancelLabel,\n variant,\n isLoading\n } = this.props;\n\n return (\n \n

    {title}

    \n
    \n

    {text}

    \n {children}\n
    \n
    \n \n {cancelLabel}\n \n \n {okLabel}\n \n
    \n
    \n );\n }\n}\n\nconst mapStateToProps = () => ({});\n\nconst mapDispatchToProps = {\n closeModal\n};\n\nexport default compose(withModal(mapStateToProps, mapDispatchToProps))(\n ConfirmDialog\n);\n","import ConfirmDialog from './ConfirmDialog';\n\nexport default ConfirmDialog;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport './Label.css';\n\nconst BASE_CLASS = 'Label';\n\nLabel.propTypes = {\n bgColor: PropTypes.string,\n color: PropTypes.string,\n rounded: PropTypes.bool,\n variant: PropTypes.oneOf(['default', 'info', 'success'])\n};\nLabel.defaultProps = {\n variant: 'default'\n};\nfunction Label({ bgColor, children, className, color, rounded, variant }) {\n const classes = classNames(\n BASE_CLASS,\n {\n [`${BASE_CLASS}--${variant}`]: !!variant,\n [`${BASE_CLASS}--rounded`]: !!rounded\n },\n className\n );\n return (\n \n {children}\n \n );\n}\n\nexport default Label;\n","import Label from './Label';\n\nexport default Label;\n","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport { ImageTypes } from '../../../constants';\nimport Button from '@bit/be-novative.kit.button';\nimport Close from '../../components/Close';\nimport Grid from '../../components/Grid';\nimport Icon from '../../components/Icon';\nimport Panel from '../../components/Panel';\nimport Responsive from '../../components/Responsive';\nimport withModal from '../withModal';\nimport useActiveImagePicker from './useActiveImagePicker';\n\nconst { PRESET, GOOGLE, UPLOADED } = ImageTypes;\nexport const Icons = {\n [PRESET]: 'rewind',\n [GOOGLE]: 'search',\n [UPLOADED]: 'upload'\n};\n\nImageSearchModal.propTypes = {\n onClose: PropTypes.func.isRequired,\n onImageSelect: PropTypes.func.isRequired\n};\nfunction ImageSearchModal({ t, onClose, onImageSelect }) {\n const defaultType = PRESET;\n const tabs = useActiveImagePicker(defaultType);\n const Tab = tabs.getComponent();\n const activeType = tabs.getType();\n const shouldShowNavToDefaultTab = activeType !== defaultType;\n const handleSelect = useCallback(\n image => {\n image['@type'] = activeType;\n onImageSelect(image, activeType);\n onClose();\n },\n [onClose, onImageSelect, activeType]\n );\n return (\n
    \n \n \n {shouldShowNavToDefaultTab && (\n tabs.setType(defaultType)}>\n \n \n {t(`common/imagePicker/${defaultType}/navButton`)}\n \n \n )}\n \n \n tabs.setType(GOOGLE)}\n style={{ marginLeft: 5 }}>\n \n {t(`common/imagePicker/${GOOGLE}/navButton`)}\n \n tabs.setType(UPLOADED)}\n style={{ marginLeft: 5 }}>\n \n {t(`common/imagePicker/${UPLOADED}/navButton`)}\n \n \n \n
    \n \n {t('common/userAction/close')}\n \n \n
    \n
    \n );\n}\n\nexport default withModal()(ImageSearchModal);\n","import GoogleImagesTab from './GoogleImagesTab';\nimport ImageSearchModal from './ImageSearchModal';\nimport PresetTab from './PresetTab';\nimport UploadImageTab from './UploadImageTab';\nimport useActiveImagePicker from './useActiveImagePicker';\n\nexport default ImageSearchModal;\nexport { GoogleImagesTab, PresetTab, UploadImageTab, useActiveImagePicker };\n","import { openModal } from '../../common/actions';\nimport { BASIC_CONCEPT_EDITOR } from '../../challengeResults/constants';\nimport {\n ACTIVITIES_EDITOR,\n BENEFITS_EDITOR,\n CONCEPT_FIELD_EDITOR,\n CONCEPT_MAP_PREVIEW,\n CONCEPT_PREVIEW,\n CONCEPT_OWNER_FORM,\n COSTS_EDITOR,\n DESCRIBE_IDEA_CONCEPT_FORM,\n TEAM_EDITOR\n} from '../constants';\nimport { CanvasBackgroundType } from '../../ideaConceptCanvas/constants';\n\nexport const openConceptEditor = (\n ideaConceptId,\n props = {\n customFormPayload: null,\n expanded: false,\n focusedField: null,\n formTitle: null,\n formSubmitLabel: null,\n onSuccess: undefined\n }\n) => dispatch =>\n dispatch(\n openModal({\n modalType: DESCRIBE_IDEA_CONCEPT_FORM,\n modalProps: {\n customFormPayload: props.customFormPayload,\n expanded: props.expanded,\n focusedField: props.focusedField,\n formTitle: props.formTitle,\n formSubmitLabel: props.formSubmitLabel,\n ideaConceptId,\n itsATrap: true,\n onSuccess: props.onSuccess,\n size: 'large'\n }\n })\n );\n\nexport const openConceptPreview = ideaConceptId => dispatch =>\n dispatch(\n openModal({\n modalType: CONCEPT_PREVIEW,\n modalProps: {\n ideaConceptId\n }\n })\n );\n\nexport const openConceptOwnerForm = (\n ideaConceptId,\n props = {\n onSubmit: undefined\n }\n) => dispatch =>\n dispatch(\n openModal({\n modalType: CONCEPT_OWNER_FORM,\n modalProps: {\n ideaConceptId,\n itsATrap: true,\n onSubmit: props.onSubmit\n }\n })\n );\n\nexport const openBasicConceptEditorModal = (\n ideaConceptId,\n props = {\n onSubmit: undefined\n }\n) => dispatch =>\n dispatch(\n openModal({\n modalType: BASIC_CONCEPT_EDITOR,\n modalProps: {\n ideaConceptId,\n itsATrap: true,\n onSubmitSuccess: props.onSubmit,\n size: 'large'\n }\n })\n );\n\nexport const openConceptFieldEditorModal = (\n ideaConceptId,\n fieldName,\n props = {\n onSubmit: undefined,\n isRequired: false,\n title: ''\n }\n) => dispatch =>\n dispatch(\n openModal({\n modalType: CONCEPT_FIELD_EDITOR,\n modalProps: {\n ideaConceptId,\n fieldName,\n itsATrap: true,\n onSubmitSuccess: props.onSubmit,\n isRequired: props.isRequired,\n size: 'large',\n title: props.title\n }\n })\n );\n\nexport const openActivitiesEditorModal = (\n ideaConceptId,\n props = {\n onSubmit: undefined,\n isRequired: false\n }\n) =>\n openModal({\n modalType: ACTIVITIES_EDITOR,\n modalProps: {\n ideaConceptId,\n itsATrap: true,\n onSubmitSuccess: props.onSubmit,\n isRequired: props.isRequired,\n size: 'large'\n }\n });\n\nexport const openBenefitsEditorModal = (\n ideaConceptId,\n props = {\n onSubmit: undefined,\n isRequired: false\n }\n) =>\n openModal({\n modalType: BENEFITS_EDITOR,\n modalProps: {\n ideaConceptId,\n isRequired: props.isRequired,\n itsATrap: true,\n onSubmitSuccess: props.onSubmit,\n size: 'large'\n }\n });\n\nexport const openCostsEditorModal = (\n ideaConceptId,\n props = {\n onSubmit: undefined,\n isRequired: false\n }\n) =>\n openModal({\n modalType: COSTS_EDITOR,\n modalProps: {\n ideaConceptId,\n isRequired: props.isRequired,\n itsATrap: true,\n onSubmitSuccess: props.onSubmit,\n size: 'large'\n }\n });\n\nexport const openTeamEditorModal = (\n ideaConceptId,\n props = {\n onSubmit: undefined\n }\n) =>\n openModal({\n modalType: TEAM_EDITOR,\n modalProps: {\n ideaConceptId,\n itsATrap: true,\n onSubmitSuccess: props.onSubmit,\n size: 'large'\n }\n });\n\nexport const openConceptMapModal = (ideaConceptId, ideas, title) =>\n openModal({\n modalType: CONCEPT_MAP_PREVIEW,\n modalProps: {\n backdropType: 'light',\n canvasType: CanvasBackgroundType.ConceptMap,\n ideaConceptId,\n ideas,\n title,\n size: 'full'\n }\n });\n","import React from 'react';\nimport classNames from 'classnames';\nimport './MutedText.css';\n\nMutedText.defaultProps = {\n tag: 'div'\n};\n\nfunction MutedText({ children, className, tag: Tag, ...rest }) {\n const classes = classNames(className, 'MutedText');\n return (\n \n {children}\n \n );\n}\n\nexport default MutedText;\n","import MutedText from './MutedText';\n\nexport default MutedText;\n","import hasFp from 'lodash/fp/has';\nimport includes from 'lodash/includes';\nimport memo from 'lodash/memoize';\nimport isPlainObject from 'lodash/isPlainObject';\nimport { conceptEvalCriteriaDefaults, EMPTY_NUMBER } from '../constants';\n\n/**\n * Converts the object map of criterion IDs and score values to an array of objects for the API\n * @param {Object} mapOfValues\n * @returns {IdeaConceptEvaluationScore[]}\n */\n\nexport const mapEvaluationModelToPayload = mapOfValues => {\n if (!isPlainObject(mapOfValues)) {\n throw new Error(`Expected plain object, got ${typeof mapOfValues}`);\n }\n\n return Object.keys(mapOfValues).reduce(\n (evalArray, evalKey) => [\n ...evalArray,\n {\n criterionId: evalKey,\n value: mapOfValues[evalKey]\n }\n ],\n []\n );\n};\n\nconst isDefaultInputLabel = memo(label =>\n includes(conceptEvalCriteriaDefaults, label)\n);\n\n/**\n * Checks if criterion labels are custom values. If so, they are not translated. If labels are default system values, they are translated.\n * @param {Function} t - The translator function\n * @returns {Function} - Curried function that performs the optional translation\n */\n\nexport const maybeTranslateCriterionLabel = t => label =>\n isDefaultInputLabel(label)\n ? t(`ideaConcept/evaluation/form/fields/${label}/label`)\n : label;\n\n/**\n * Generates config props for the concept evaluation sliders, based on the intended form behaviour.\n * @param {import('../config').IdeaConceptEvaluationFormConfig} formConfig\n * @returns {SliderConfig}\n */\n\nexport const mapFormConfigToSliderProps = formConfig => {\n const defaultMarkers = Array.from(\n Array(formConfig.CRITERION_MAX).keys()\n ).reduce(\n (markers, num) => {\n markers[num + 1] = { label: (num + 1).toString() };\n return markers;\n },\n {\n 0: { label: EMPTY_NUMBER }\n }\n );\n\n if (formConfig.markers && !formConfig.markers.every(hasFp('label'))) {\n throw new Error('formConfig.markers array items must have a label prop');\n }\n\n return {\n min: formConfig.CRITERION_MIN,\n max: formConfig.CRITERION_MAX,\n step: formConfig.CRITERION_STEP,\n markers: formConfig.markers || defaultMarkers\n };\n};\n","import React from 'react';\nimport { translate } from 'react-i18next';\nimport Button from '@bit/be-novative.kit.button';\nimport Icon from '../Icon';\nimport './EditButton.css';\n\nexport function EditButton({ t, className, onClick, ...props }) {\n return (\n \n \n  \n {t('common/userAction/edit')}\n \n );\n}\n\nexport default translate()(EditButton);\n","import EditButton from './EditButton';\n\nexport default EditButton;\n","import { denormalize } from 'normalizr';\nimport {\n EDIT_IDEA_CONCEPT,\n FETCH_IDEA_CONCEPT_BY_ID,\n REVEAL_IDEACONCEPT_IDENTITY\n} from '../../constants';\nimport { VOYAGER_API } from '../../api/constants';\nimport { CREATE_IDEA_CONCEPT, entities } from '../../ideaConcept/constants';\nimport schemas from '../../ideaConcept/schemas';\nimport { getConceptById } from '../../ideaConcept/selectors/ideaConcepts';\nimport { getEntities } from '../selectors/entities';\nimport createConceptPayload from '../../ideaConcept/utils/payloadUtils';\nimport addBreadcrumb from '../../telemetry/addBreadcrumb';\nimport logRequestFailure from '../../api/utils/logRequestFailure';\nimport { convertApiErrorToStatusCode } from '../../api/utils/apiError';\n\nexport const createIdeaConcept = payload => async dispatch => {\n const data = createConceptPayload(payload);\n addBreadcrumb('Creating idea concept...', {\n category: 'idea-concept',\n data: payload\n });\n\n try {\n return await dispatch({\n [VOYAGER_API]: {\n url: `/ideaconcepts`,\n method: 'POST',\n data,\n metrics: {},\n type: CREATE_IDEA_CONCEPT,\n mostRecent: true,\n schema: schemas.IDEA_CONCEPT,\n entityType: entities.IDEA_CONCEPT\n }\n });\n } catch (error) {\n logRequestFailure(error, 'Could not create idea concept', 'idea-concept');\n throw convertApiErrorToStatusCode(error);\n }\n};\n\nexport const editIdeaConcept = (ideaConceptId, payload) => async (\n dispatch,\n getState\n) => {\n const existingData = getConceptById(ideaConceptId)(getState());\n const denormalizedConcept = denormalize(\n existingData,\n schemas.IDEA_CONCEPT,\n getEntities(getState())\n );\n\n const sanitizedData = createConceptPayload({\n ...denormalizedConcept,\n ...payload\n });\n\n addBreadcrumb('Updating idea concept...', {\n category: 'idea-concept',\n data: sanitizedData\n });\n\n try {\n const req = await dispatch({\n [VOYAGER_API]: {\n url: `/ideaconcepts/${ideaConceptId}`,\n method: 'PUT',\n data: sanitizedData,\n type: EDIT_IDEA_CONCEPT,\n ideaConceptId\n },\n metrics: { ideaConceptId }\n });\n dispatch(fetchIdeaConceptById(ideaConceptId));\n return req;\n } catch (error) {\n logRequestFailure(error, 'Could not update idea concept', 'idea-concept');\n throw convertApiErrorToStatusCode(error);\n }\n};\n\nexport const fetchIdeaConceptById = ideaConceptId => async dispatch => {\n addBreadcrumb('Fetching idea concept...', {\n category: 'idea-concept',\n data: ideaConceptId\n });\n try {\n return await dispatch({\n [VOYAGER_API]: {\n url: `/ideaconcepts/ideaconcept/${ideaConceptId}`,\n method: 'GET',\n type: FETCH_IDEA_CONCEPT_BY_ID,\n schema: schemas.IDEA_CONCEPT,\n entityType: entities.IDEA_CONCEPT,\n id: ideaConceptId\n }\n });\n } catch (error) {\n logRequestFailure(error, 'Could not fetch idea concept', 'idea-concept');\n throw convertApiErrorToStatusCode(error);\n }\n};\n\nexport const revealIdentity = ideaConceptId => dispatch =>\n dispatch({\n [VOYAGER_API]: {\n url: `/ideaconcepts/reveal`,\n method: 'POST',\n data: [ideaConceptId],\n type: REVEAL_IDEACONCEPT_IDENTITY\n },\n metrics: {}\n }).then(() => {\n dispatch(fetchIdeaConceptById(ideaConceptId));\n });\n","import { useContext } from 'react';\nimport { FeatureFlagContext } from '../../featureFlags/components/FeatureFlagProvider';\n\n/**\n * Returns whether the specified feature flag is enabled.\n * @param {import('../../featureFlags/constants').FeatureFlag} flagId\n * @returns {Boolean}\n */\nexport default function useFeatureFlag(flagId) {\n const isFeatureEnabled = useContext(FeatureFlagContext);\n return isFeatureEnabled(flagId);\n}\n","import identity from 'lodash/identity';\nimport { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { createSelector } from '@reduxjs/toolkit';\nimport { selectors } from '../state/categories';\n\nconst makeGetCategoryById = () =>\n createSelector(\n selectors.selectById,\n identity\n );\n\n/**\n * Returns the category corresponding to the supplied ID\n * @param {string} categoryId\n * @return {Category}\n */\n\nexport default function useCategory(categoryId) {\n const getCateg = useMemo(makeGetCategoryById, []);\n const category = useSelector(state => getCateg(state, categoryId));\n return category;\n}\n","import flow from 'lodash/flow';\nimport get from 'lodash/fp/get';\nimport isEqual from 'lodash/fp/isEqual';\nimport { combineReducers } from 'redux';\nimport { handleActions, combineActions } from 'redux-actions';\nimport { SOCKET_EVENTS } from '../../api/constants';\nimport {\n SOCKET_CONNECTING,\n SOCKET_CONNECTED,\n SOCKET_DISCONNECTED,\n SOCKET_ERROR\n} from '../actions/socket';\n\nconst status = handleActions(\n {\n [SOCKET_CONNECTING](state, { meta }) {\n return {\n ...state,\n [meta.socketId]: SOCKET_EVENTS.CONNECTING\n };\n },\n [SOCKET_CONNECTED](state, { meta }) {\n return {\n ...state,\n [meta.socketId]: SOCKET_EVENTS.CONNECTED\n };\n },\n [SOCKET_DISCONNECTED](state, { meta }) {\n return {\n ...state,\n [meta.socketId]: SOCKET_EVENTS.DISCONNECTED\n };\n }\n },\n {}\n);\n\nconst error = handleActions(\n {\n [SOCKET_ERROR](state, { payload, meta }) {\n return {\n ...state,\n [meta.socketId]: payload\n };\n },\n [combineActions(SOCKET_CONNECTED, SOCKET_CONNECTING, SOCKET_DISCONNECTED)](\n state,\n { meta }\n ) {\n return {\n ...state,\n [meta.socketId]: null\n };\n }\n },\n {}\n);\n\nexport default combineReducers({\n status,\n error\n});\n\nconst rootSelector = get('socket');\nexport const socketStatusSelector = socketId => state =>\n flow(\n rootSelector,\n get(['status', socketId])\n )(state);\nexport const isSocketConnected = socketId => state =>\n flow(\n socketStatusSelector(socketId),\n isEqual(SOCKET_EVENTS.CONNECTED)\n )(state);\nexport const socketErrorSelector = socketId => state =>\n flow(\n rootSelector,\n get(['error', socketId])\n )(state);\n","import PropTypes from 'prop-types';\nimport React from 'react';\n\nexport default function withTooltip(WrappedComponent) {\n function Tooltip(props) {\n let tooltipProps = {};\n const {\n tooltip,\n tooltipPosition,\n tooltipLength,\n tooltipVisible,\n ...rest\n } = props;\n\n if (tooltip && tooltipVisible !== false) {\n tooltipProps = {\n 'aria-label': tooltip,\n 'data-balloon': tooltip,\n 'data-balloon-pos': tooltipPosition,\n 'data-balloon-length': tooltipLength\n };\n\n if (tooltipVisible) {\n tooltipProps['data-balloon-visible'] = true;\n }\n }\n\n return ;\n }\n\n Tooltip.propTypes = {\n tooltip: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n tooltipPosition: PropTypes.oneOf(['up', 'down', 'left', 'right']),\n tooltipLength: PropTypes.oneOf([\n 'small',\n 'medium',\n 'large',\n 'xlarge',\n 'fit'\n ]),\n tooltipVisible: PropTypes.bool\n };\n Tooltip.defaultProps = {\n tooltipPosition: 'up'\n };\n\n return Tooltip;\n}\n","import LocalStorage from 'store2';\nimport {\n FETCH_FEEDCARDS,\n HIDE_FEED_PRIVACY_BANNER,\n HIDE_FEED_PRIVACY_BANNER_LOCALSTORAGE_KEY\n} from '../../constants';\nimport { VOYAGER_API } from '../../api/constants';\nimport schemas, { entityKeys } from '../../challenge/schemas';\nimport { asyncActionType } from '../../utils';\n\nexport const FETCH_CARD_BY_ID = asyncActionType('FETCH_CARD_BY_ID');\nexport const DROP_CARD_BY_ID = 'DROP_CARD_BY_ID';\n\nexport const hidePrivacyBanner = () => {\n LocalStorage.set(HIDE_FEED_PRIVACY_BANNER_LOCALSTORAGE_KEY, true);\n\n return {\n type: HIDE_FEED_PRIVACY_BANNER\n };\n};\n\nexport function fetchFeed(page = 0) {\n return {\n [VOYAGER_API]: {\n url: '/feedcards',\n page,\n type: FETCH_FEEDCARDS,\n schema: schemas.CHALLENGE_ARRAY,\n entityType: entityKeys.CHALLENGE\n }\n };\n}\n\nexport const fetchCardById = challengeId => ({\n [VOYAGER_API]: {\n url: `/feedcards/challenges/${challengeId}`,\n type: FETCH_CARD_BY_ID,\n challengeId,\n schema: schemas.CHALLENGE,\n entityType: entityKeys.CHALLENGE,\n id: challengeId\n }\n});\n\nexport const dropFeedCardById = challengeId => ({\n type: DROP_CARD_BY_ID,\n payload: challengeId,\n meta: { challengeId }\n});\n","import React from 'react';\nimport { Sticky } from 'react-sticky';\n\nfunction defaultHeaderRowRenderer({ className, columns, width, dimensions }) {\n return (\n \n {params => {\n const { style, isSticky, calculatedHeight } = params;\n\n if (isSticky) {\n return (\n \n \n {columns}\n \n \n );\n }\n\n return (\n \n {columns}\n \n );\n }}\n \n );\n}\n\nexport default defaultHeaderRowRenderer;\n","import React from 'react';\n\nfunction defaultRowRenderer({\n className,\n columns,\n index,\n key,\n rowData,\n style\n}) {\n const a11yProps = {};\n\n return (\n \n {columns}\n \n );\n}\n\nexport default defaultRowRenderer;\n","import React, { Component, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { StickyContainer } from 'react-sticky';\nimport classNames from 'classnames';\nimport times from 'lodash/times';\nimport Measure from 'react-measure';\nimport { SortDirection } from '../../../constants';\nimport defaultHeaderRowRenderer from './defaultHeaderRowRenderer';\nimport defaultRowRenderer from './defaultRowRenderer';\nimport './Table.css';\n\nconst BODY_CLASS = 'Table__Body';\n\nclass Table extends Component {\n static propTypes = {\n bodyColumnClassName: PropTypes.string,\n headerColumnClassName: PropTypes.string,\n headerRowRenderer: PropTypes.func,\n id: PropTypes.string,\n rowClassName: PropTypes.string,\n rowCount: PropTypes.number.isRequired,\n rowGetter: PropTypes.func,\n rowRenderer: PropTypes.func,\n rowStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n sort: PropTypes.func,\n sortBy: PropTypes.string,\n sortDirection: PropTypes.string\n };\n\n static defaultProps = {\n headerRowRenderer: defaultHeaderRowRenderer,\n rowGetter: item => item,\n rowRenderer: defaultRowRenderer\n };\n\n getFlexStyleForColumn(column, customStyle = {}) {\n const flexValue = `${column.props.flexGrow} ${column.props.flexShrink} ${column.props.width}px`;\n\n const style = {\n ...customStyle,\n flex: flexValue,\n msFlex: flexValue,\n WebkitFlex: flexValue\n };\n\n if (column.props.maxWidth) {\n style.maxWidth = column.props.maxWidth;\n }\n\n if (column.props.minWidth) {\n style.minWidth = column.props.minWidth;\n }\n\n return style;\n }\n\n getHeaderColumns(children) {\n return children.map((column, index) =>\n column ? this.createHeader({ column, index }) : null\n );\n }\n\n createHeader({ column, index }) {\n const { sort, sortBy, sortDirection } = this.props;\n const {\n dataKey,\n disableSort,\n headerClassName,\n headerRenderer,\n id,\n label,\n columnData,\n align\n } = column.props;\n const sortEnabled = !disableSort && sort;\n\n const classes = classNames(\n 'Table__HeaderCol',\n {\n 'Table__HeaderCol--sortable': sortEnabled,\n [`Table__HeaderCol--${align}`]: !!align\n },\n headerClassName\n );\n const style = this.getFlexStyleForColumn(column);\n\n const renderedHeader = headerRenderer({\n columnData,\n dataKey,\n disableSort,\n label,\n sortBy,\n sortDirection\n });\n\n const a11yProps = {\n role: 'columnheader'\n };\n\n if (sortEnabled) {\n // If this is a sortable header, clicking it should update the table data's sorting.\n const newSortDirection =\n sortBy !== dataKey || sortDirection === SortDirection.DESC\n ? SortDirection.ASC\n : SortDirection.DESC;\n\n const onClick = event => {\n sortEnabled &&\n sort({\n sortBy: dataKey,\n sortDirection: newSortDirection\n });\n };\n\n const onKeyDown = event => {\n if (event.key === 'Enter' || event.key === ' ') {\n onClick(event);\n }\n };\n\n a11yProps['aria-label'] = column.props['aria-label'] || label || dataKey;\n a11yProps.tabIndex = 0;\n a11yProps.onClick = onClick;\n a11yProps.onKeyDown = onKeyDown;\n }\n if (sortBy === dataKey) {\n a11yProps['aria-sort'] =\n sortDirection === SortDirection.ASC ? 'ascending' : 'descending';\n }\n\n if (id) {\n a11yProps.id = id;\n }\n\n return (\n \n {renderedHeader}\n \n );\n }\n\n createRow({ rowIndex: index, key, style, columns }) {\n const { rowClassName, rowGetter, rowRenderer, rowStyle } = this.props;\n\n const rowClass =\n typeof rowClassName === 'function'\n ? rowClassName({ index })\n : rowClassName;\n const rowStyleObject =\n typeof rowStyle === 'function' ? rowStyle({ index }) : rowStyle;\n const rowData = rowGetter({ index });\n\n const className = classNames('Table__Row', rowClass);\n const flattenedStyle = {\n ...style,\n ...rowStyleObject\n };\n\n return rowRenderer({\n className,\n columns,\n index,\n key,\n rowData,\n style: flattenedStyle\n });\n }\n\n createColumn({ column, columnIndex, rowData, rowIndex }) {\n if (!column) {\n return null;\n }\n\n const {\n cellDataGetter,\n cellRenderer,\n className,\n columnData,\n dataKey,\n id,\n align\n } = column.props;\n\n const cellData = cellDataGetter({ columnData, dataKey, rowData });\n const renderedCell = cellRenderer({\n cellData,\n columnData,\n columnIndex,\n dataKey,\n rowData,\n rowIndex\n });\n\n const style = this.columnStyles[columnIndex];\n\n const title = typeof renderedCell === 'string' ? renderedCell : null;\n\n const a11yProps = {\n role: columnIndex === 0 ? 'rowheader' : 'cell'\n };\n\n if (id) {\n a11yProps['aria-describedby'] = id;\n }\n\n return (\n \n {renderedCell}\n \n );\n }\n\n render() {\n const {\n bodyColumnClassName,\n children,\n id,\n style,\n headerColumnClassName,\n headerRowRenderer,\n rowCount,\n rowGetter\n } = this.props;\n const childrenArray = Children.toArray(children);\n const [fixedColumn, ...fluidColumns] = childrenArray;\n\n const headerColClasses = classNames(\n BODY_CLASS,\n `${BODY_CLASS}--fixed`,\n headerColumnClassName\n );\n const bodyColClasses = classNames(\n BODY_CLASS,\n `${BODY_CLASS}--scroll`,\n bodyColumnClassName\n );\n\n this.columnStyles = childrenArray.map(column => ({\n ...this.getFlexStyleForColumn(column, column.props.style)\n }));\n\n return (\n \n
    \n \n {({ measureRef, contentRect }) => (\n \n {headerRowRenderer({\n className: 'Table__HeaderRow',\n columns: this.getHeaderColumns([fixedColumn]),\n dimensions: contentRect.bounds,\n width: '100%'\n })}\n {times(rowCount, index =>\n this.createRow({\n rowIndex: index,\n key: `Row${index}`,\n columns: [\n this.createColumn({\n column: fixedColumn,\n columnIndex: 0,\n rowData: rowGetter({ index }),\n rowIndex: index\n })\n ]\n })\n )}\n
    \n )}\n \n \n {({ measureRef, contentRect }) => (\n
    \n {headerRowRenderer({\n className: 'Table__HeaderRow',\n columns: this.getHeaderColumns(fluidColumns),\n dimensions: contentRect.bounds,\n width: fluidColumns.reduce(\n (acc, column) => acc + column.props.width,\n 0\n )\n })}\n {times(rowCount, index =>\n this.createRow({\n rowIndex: index,\n key: `Row${index}`,\n columns: fluidColumns.map((column, columnIndex) =>\n this.createColumn({\n column,\n columnIndex: columnIndex + 1,\n rowData: rowGetter({ index }),\n rowIndex: index\n })\n )\n })\n )}\n
    \n )}\n
    \n \n
    \n );\n }\n}\n\nexport default Table;\n","import Table from './Table';\nimport Column from './Column';\n\nTable.Column = Column;\n\nexport default Table;\n","import { SOCKET_ID } from '../api/constants';\n\n// Config\n\nexport const MOVE_THROTTLE_MS = 500;\nexport const MAX_ITEMS_IN_ROOM = 20;\n\n// Definitions\n\nexport const SMALL_HEIGHT_BREAKPOINT = 640;\n\nexport const ideationIdProps = {\n IMAGE_ID: 'imageId',\n WORD_ID: 'wordId'\n};\n\n// TODO migrate consumers to new enum\nexport const DRAGGABLE_TYPES = {\n IDEA: 'IDEA',\n IMAGE: 'IMAGE',\n WORD: 'WORD',\n // internal to UI\n EDITOR: 'EDITOR'\n};\n\nexport const DRAGGABLE_ID_PROP = {\n WORD: ideationIdProps.WORD_ID\n};\n\n/**\n * IDs for the sequence of ideation phases.\n * Also contains IDs for the evaluation and finished phases.\n * @enum {string}\n * @readonly\n */\nexport const IDEATION_PHASES = {\n /** 1st phase, where ideas of other users are obscured */\n REDACTED: 'REDACTED',\n /** 2nd phase, where all ideas are visible */\n PEER: 'PEER',\n /** 3rd phase, where images can be added */\n IMAGES: 'IMAGES',\n /** 4th and final phase, where random word cards are displayed */\n WORDS: 'WORDS',\n EVALUATION: 'EVALUATION',\n FINISHED: 'FINISHED'\n};\n\n/**\n * IDs that describe the behaviour of a phase.\n * The UI also relies on these strings to determine if a phase name has been customised,\n * and so it shouldn't be localised.\n * @enum {Object} IdeationPhaseType\n * @readonly\n */\nexport const IdeationPhaseType = {\n /** In the case of a facilitated challenge, participants are waiting in this phase until the facilitator launches the event. */\n Lobby: 'LOBBY',\n /** Ideas of other users are obscured; the user only sees their own ideas. 1st phase of the classic sequence. */\n Redacted: 'REDACTED',\n /** All ideas are visible to all users. 2nd phase of the classic sequence. */\n Peer: 'PEER',\n /** Random images are added to the canvas by participants, and by the system. 3rd phase of the classic sequence. */\n Images: 'IMAGES',\n /** Random words are added to the canvas by the system. 4th phase of the classic sequence. */\n Words: 'WORDS',\n /** Ideation is still possible, but evaluation is also open. 5th phase of the classic sequence. */\n Evaluation: 'EVALUATION',\n /** Ideation and evaluation are finished. 6th and final phase of the classic sequence. */\n Finished: 'FINISHED'\n};\n\n/**\n * These config objects define the default flow of an ideation process.\n *\n * When creating a challenge, `Evaluation` and `Finished` must also be present,\n * even if they don't have corresponding form inputs,\n * otherwise the API would exhibit severe bugs.\n * @type {IdeationPhase[]}\n * @readonly\n */\nexport const DefaultIdeationPhaseConfig = [\n {\n name: IdeationPhaseType.Redacted,\n ideationPhaseType: IdeationPhaseType.Redacted,\n idleTimeoutInSeconds: 60,\n minLengthInSeconds: 120,\n maxLengthInSeconds: 300,\n optimalNumberOfIdeas: 4,\n optimalNumberOfImages: 0,\n optimalNumberOfWords: 0\n },\n {\n name: IdeationPhaseType.Peer,\n ideationPhaseType: IdeationPhaseType.Peer,\n idleTimeoutInSeconds: 60,\n minLengthInSeconds: 120,\n maxLengthInSeconds: 300,\n optimalNumberOfIdeas: 4,\n optimalNumberOfImages: 0,\n optimalNumberOfWords: 0\n },\n {\n name: IdeationPhaseType.Images,\n ideationPhaseType: IdeationPhaseType.Images,\n idleTimeoutInSeconds: 60,\n minLengthInSeconds: 120,\n maxLengthInSeconds: 300,\n optimalNumberOfIdeas: 8,\n optimalNumberOfImages: 3,\n optimalNumberOfWords: 0\n },\n {\n name: IdeationPhaseType.Words,\n ideationPhaseType: IdeationPhaseType.Words,\n idleTimeoutInSeconds: 60,\n minLengthInSeconds: 120,\n maxLengthInSeconds: 300,\n optimalNumberOfIdeas: 12,\n optimalNumberOfImages: 3,\n optimalNumberOfWords: 3\n },\n {\n name: IdeationPhaseType.Evaluation,\n ideationPhaseType: IdeationPhaseType.Evaluation,\n idleTimeoutInSeconds: null,\n minLengthInSeconds: null,\n maxLengthInSeconds: 900,\n optimalNumberOfIdeas: null,\n optimalNumberOfImages: null,\n optimalNumberOfWords: null\n },\n {\n name: IdeationPhaseType.Finished,\n ideationPhaseType: IdeationPhaseType.Finished,\n idleTimeoutInSeconds: null,\n minLengthInSeconds: null,\n maxLengthInSeconds: null,\n optimalNumberOfIdeas: null,\n optimalNumberOfImages: null,\n optimalNumberOfWords: null\n }\n];\n\n/**\n * IDs for the ideation state combining socket status and user's presence in room\n */\nexport const IDEATION_STATUS = {\n /** Socket is already connected, and user initiated request to join a session */\n JOINING: 'JOINING',\n /** Socket is connected, user is in room */\n ACTIVE: 'ACTIVE',\n /** User is exiting the session */\n LEAVING_IDEATION: 'LEAVING_IDEATION',\n /** User is exiting the session, and simultaneously abandoning their assigned room */\n LEAVING_ROOM: 'LEAVING_ROOM',\n /** User is not in room, either because they haven't connected yet or the socket connection is dropping/failing */\n INACTIVE: 'INACTIVE',\n /** User couldn't join the session */\n ERROR: 'ERROR'\n};\n\n// Modals\n\nexport const CONN_ERROR_MODAL = 'CONN_ERROR_MODAL';\nexport const IMAGE_SELECTOR_MODAL = 'IMAGE_SELECTOR_MODAL';\n\n// Web socket messages\n\nexport const S_ID = SOCKET_ID.IDEATION;\n\nexport const SOCKET_MSG = {\n CHALLENGE_JOIN_REQ: 'JoinChallenge',\n CHALLENGE_JOIN_RES: 'ChallengeJoined',\n CHALLENGE_LEAVE_IDEATION: 'LeaveIdeation',\n CHALLENGE_LEAVE_ROOM: 'LeaveRoom',\n CHALLENGE_STATUS_CHANGED: 'ChallengeStatusChanged',\n IDEA_DELETE_REQ: 'DeleteIdea',\n IDEA_DELETED: 'IdeaDeleted',\n IDEA_EDIT_REQ: 'EditIdea2',\n IDEA_EDITED: 'IdeaEdited',\n IDEA_LIKE_REQ: 'LikeIdea',\n IDEA_UNLIKE_REQ: 'UnlikeIdea',\n IDEA_MOVE_REQ: 'MoveIdea',\n IDEA_MOVED: 'IdeaMoved',\n IDEA_RECEIVED: 'IdeaAdded',\n IDEA_SUBMIT: 'AddIdea',\n IMAGE_DELETE_REQ: 'DeleteImage',\n IMAGE_DELETED: 'ImageDeleted',\n IMAGE_MOVED: 'ImageMoved',\n IMAGE_MOVE_REQ: 'MoveImage',\n IMAGE_RECEIVED: 'ImageAdded',\n IMAGE_SUBMIT: 'AddImage',\n LIKE_COUNT_CHANGED: 'LikeCountChanged',\n PHASE_CAN_MODIFY: 'ManualPhaseForwardEnablement',\n PHASE_CHANGED_USER_DATA: 'PhaseChanged',\n PHASE_CHANGED_WITH_CONFIG: 'PhaseChanged2',\n PHASE_CHANGE_REQ: 'MoveToPhase',\n USER_DISCONNECTED: 'UserDisconnected', // also user left ideation\n USER_LEFT_IDEATION: 'UserDisconnected',\n USER_JOINED: 'UserJoinedRoom',\n USER_LEFT_ROOM: 'UserLeftRoom',\n WORD_MOVE_REQ: 'MoveWord',\n WORD_MOVED: 'WordMoved',\n WORDS_RECEIVED: 'WordsAdded'\n};\n","import classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport capitalize from 'lodash/capitalize';\nimport './Collapse.css';\n\nconst MARGINS = {\n height: ['marginTop', 'marginBottom'],\n width: ['marginLeft', 'marginRight']\n};\n\n// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nfunction triggerBrowserReflow(node) {\n node.offsetHeight; // eslint-disable-line no-unused-expressions\n}\n\nfunction getDimensionValue(dimension, elem) {\n let value = elem[`offset${capitalize(dimension)}`];\n let margins = MARGINS[dimension];\n\n return (\n value +\n (parseInt(elem.style[margins[0]], 10) || 0) +\n (parseInt(elem.style[margins[1]], 10) || 0)\n );\n}\n\nfunction appendUnit(num, unit = 'px') {\n return num + unit;\n}\n\nconst propTypes = {\n /**\n * Show the component; triggers the expand or collapse animation\n */\n in: PropTypes.bool,\n\n /**\n * Wait until the first \"enter\" transition to mount the component (add it to the DOM)\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * Unmount the component (remove it from the DOM) when it is collapsed\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Run the expand animation when the component mounts, if it is initially\n * shown\n */\n transitionAppear: PropTypes.bool,\n\n /**\n * Duration of the collapse animation in milliseconds, to ensure that\n * finishing callbacks are fired even if the original browser transition end\n * events are canceled\n */\n timeout: PropTypes.number,\n\n closedSize: PropTypes.number,\n\n /**\n * Callback fired before the component expands\n */\n onEnter: PropTypes.func,\n /**\n * Callback fired after the component starts to expand\n */\n onEntering: PropTypes.func,\n /**\n * Callback fired after the component has expanded\n */\n onEntered: PropTypes.func,\n /**\n * Callback fired before the component collapses\n */\n onExit: PropTypes.func,\n /**\n * Callback fired after the component starts to collapse\n */\n onExiting: PropTypes.func,\n /**\n * Callback fired after the component has collapsed\n */\n onExited: PropTypes.func,\n\n /**\n * The dimension used when collapsing, or a function that returns the\n * dimension\n *\n * _Note: Bootstrap only partially supports 'width'!\n * You will need to supply your own CSS animation for the `.width` CSS class._\n */\n dimension: PropTypes.oneOfType([\n PropTypes.oneOf(['height', 'width']),\n PropTypes.func\n ]),\n\n /**\n * Function that returns the height or width of the animating DOM node\n *\n * Allows for providing some custom logic for how much the Collapse component\n * should animate in its specified dimension. Called with the current\n * dimension prop value and the DOM node.\n */\n getDimensionValue: PropTypes.func,\n\n /**\n * ARIA role of collapsible element\n */\n role: PropTypes.string\n};\n\nconst defaultProps = {\n closedSize: 0,\n in: false,\n timeout: 300,\n mountOnEnter: false,\n unmountOnExit: true,\n transitionAppear: false,\n\n dimension: 'height',\n getDimensionValue,\n onEnter: () => {},\n onEntering: () => {},\n onEntered: () => {},\n onExit: () => {},\n onExiting: () => {}\n};\n\nclass Collapse extends React.Component {\n /* -- Expanding -- */\n handleEnter = elem => {\n const dimension = this._dimension();\n elem.style[dimension] = appendUnit(this.props.closedSize);\n this.props.onEnter();\n };\n\n handleEntering = elem => {\n const dimension = this._dimension();\n elem.style[dimension] = this._getScrollDimensionValue(elem, dimension);\n this.props.onEntering();\n };\n\n handleEntered = elem => {\n const dimension = this._dimension();\n elem.style[dimension] = null;\n this.props.onEntered();\n };\n\n /* -- Collapsing -- */\n handleExit = elem => {\n const dimension = this._dimension();\n elem.style[dimension] = appendUnit(\n this.props.getDimensionValue(dimension, elem)\n );\n triggerBrowserReflow(elem);\n this.props.onExit();\n };\n\n handleExiting = elem => {\n const dimension = this._dimension();\n elem.style[dimension] = appendUnit(this.props.closedSize);\n this.props.onExiting();\n };\n\n _dimension() {\n return typeof this.props.dimension === 'function'\n ? this.props.dimension()\n : this.props.dimension;\n }\n\n // for testing\n _getScrollDimensionValue(elem, dimension) {\n return `${elem[`scroll${capitalize(dimension)}`]}px`;\n }\n\n render() {\n const {\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n className,\n ...props\n } = this.props;\n\n delete props.dimension;\n delete props.getDimensionValue;\n\n const classes = {\n width: this._dimension() === 'width'\n };\n\n return (\n \n );\n }\n}\n\nCollapse.propTypes = propTypes;\nCollapse.defaultProps = defaultProps;\n\nexport default Collapse;\n","import Collapse from './Collapse';\n\nexport default Collapse;\n","import React from 'react';\nimport isFinite from 'lodash/isFinite';\nimport cn from 'classnames';\nimport { Size } from '../../../constants';\nimport Counter from '../Counter';\nimport scss from './Badge.module.scss';\n\n/**\n * Used for the `origin` prop that controls the badge position relative to the wrapped element\n * @enum {string}\n * @readonly\n */\nconst BadgeOrigin = {\n left: 'left',\n right: 'right',\n top: 'top',\n bottom: 'bottom'\n};\n\n/**\n * Allows adjusting badge position to fit the child's shape\n * @enum {string}\n * @readonly\n */\nconst BadgeChildShape = {\n circle: 'circle',\n rectangle: 'rectangle'\n};\n\nfunction Badge({\n ariaLabel,\n ariaRole,\n badgeClass,\n children,\n className,\n value,\n max = 99,\n dot,\n origin = { horizontal: BadgeOrigin.right, vertical: BadgeOrigin.top },\n shape = BadgeChildShape.circle,\n size = Size.md,\n variant,\n visible\n}) {\n const commonClasses = cn(\n scss.Badge,\n scss[`shape-${shape}`],\n scss[origin.horizontal],\n scss[origin.vertical],\n badgeClass,\n {\n [scss.visible]: visible\n }\n );\n const badgeClasses = cn(\n commonClasses,\n scss.SimpleBadge,\n scss[`size-${size}`],\n {\n [scss.dot]: dot\n }\n );\n\n const isComponent = React.isValidElement(value);\n const showBadgeContent = visible && !dot;\n const isNumberBadge = isFinite(parseInt(value));\n\n return (\n
    \n {children}\n {isComponent ? (\n \n {visible ? value : null}\n
    \n ) : (\n \n {showBadgeContent && isNumberBadge && (\n {value}\n )}\n {showBadgeContent && !isNumberBadge && value}\n \n )}\n \n );\n}\n\nexport default Badge;\nexport { BadgeOrigin, BadgeChildShape };\n","import { handleActions, combineActions } from 'redux-actions';\n\nconst loadingReducerFactory = (action, initialState = false) =>\n handleActions(\n {\n [combineActions(action.ERROR, action.SUCCESS)]: () => false,\n [action.PENDING]: () => true\n },\n initialState\n );\n\nexport default loadingReducerFactory;\n","import React from 'react';\nimport { CSSTransition } from 'react-transition-group';\n\nfunction ModalTransition(props) {\n return ;\n}\n\nexport default ModalTransition;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { Modal as ReactModal } from 'react-overlays';\nimport classNames from 'classnames';\nimport Backdrop, { backdropClassNames } from '../Backdrop';\nimport Close from '../Close';\nimport ModalTransition from './ModalTransition';\nimport './Modal.css';\nclass Modal extends Component {\n renderBackdrop = () => {\n const backdropClasses = classNames(\n backdropClassNames.base,\n backdropClassNames[this.props.overlay],\n 'modal-backdrop'\n );\n\n return (\n \n );\n };\n\n render() {\n const {\n children,\n className,\n isCloseButtonShown,\n isOpen,\n itsATrap,\n onClose,\n rounded,\n size\n } = this.props;\n\n const modalClasses = classNames('modal', `modal--${size}`, className, {\n 'modal--rounded': rounded\n });\n\n const backdrop = itsATrap ? 'static' : true;\n\n // @see https://github.com/react-bootstrap/react-bootstrap/blob/master/src/Modal.js\n return (\n \n
    \n {children}\n {isCloseButtonShown && }\n
    \n \n );\n }\n}\n\nModal.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n isCloseButtonShown: PropTypes.bool,\n isOpen: PropTypes.bool.isRequired,\n itsATrap: PropTypes.bool, // @see https://gph.to/2GUc0wy\n onClose: PropTypes.func,\n overlay: PropTypes.oneOf(['brainstorming', 'dark', 'light']),\n size: PropTypes.oneOf(['small', 'medium', 'large', 'full'])\n};\n\nModal.defaultProps = {\n isCloseButtonShown: false,\n itsATrap: false,\n overlay: 'dark',\n rounded: false,\n size: 'medium'\n};\n\nexport default Modal;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'classnames';\nimport Button from '@bit/be-novative.kit.button';\nimport Modal from './Modal';\nimport Panel from '../Panel';\n\nfunction Alert({\n isOpen,\n confirmButtonText,\n cancelButtonText,\n onCancel,\n onConfirm,\n children\n}) {\n const footerClasses = cn('modal__footer', {\n 'modal__footer--confirm': onCancel\n });\n\n return (\n \n \n {children}\n
    \n {onCancel && (\n \n )}\n \n
    \n
    \n
    \n );\n}\n\nAlert.propTypes = {\n isOpen: PropTypes.bool.isRequired,\n cancelButtonText: PropTypes.string,\n confirmButtonText: PropTypes.string,\n onCancel: PropTypes.func,\n onConfirm: PropTypes.func.isRequired\n};\n\nAlert.defaultProps = {\n cancelButtonText: 'Cancel',\n confirmButtonText: 'Confirm'\n};\n\nexport default Alert;\n","import Modal from './Modal';\nimport Alert from './Alert';\n\nModal.Alert = Alert;\n\nexport default Modal;\n","import flow from 'lodash/flow';\nimport get from 'lodash/get';\nimport getFp from 'lodash/fp/get';\nimport getOr from 'lodash/fp/getOr';\n\nexport const getEntities = state => get(state, ['entities', 'store'], {});\n\nexport const getEntities_new = state => get(state, 'entities', {});\n\nexport const getEntity = entityType => entityId => state =>\n flow(\n getEntities,\n entities =>\n get(entities, [entityType, entityId]) ||\n get(entities, [entityType, String(entityId).toUpperCase()]) ||\n get(entities, [entityType, String(entityId).toLowerCase()])\n )(state);\n\nexport const isEntityLoading = entityType => entityId => state =>\n flow(getFp(['entities', 'loading', `${entityType}_${entityId}`]))(state);\n\nexport const hasEntityFailed = entityType => entityId => state =>\n flow(getFp(['entities', 'error', `${entityType}_${entityId}`]))(state);\n\nexport const getEntityMap = entityType => state =>\n flow(\n getEntities,\n entities => get(entities, entityType, {})\n )(state);\n\nexport const getAllIdsFrom = getOr([], 'allIds');\n\nexport const getAllIds = flow(\n getEntities,\n getAllIdsFrom\n);\n\nexport const getEntityIds = entityType => state =>\n flow(\n getAllIds,\n idMap => get(idMap, entityType, [])\n )(state);\n","import asyncActionType from '../utils/asyncActionType';\n\n// action types\nexport const CREATE_IDEA_CONCEPT = asyncActionType('CREATE_IDEA_CONCEPT');\nexport const UPDATE_CONCEPT_OWNER = asyncActionType('UPDATE_CONCEPT_OWNER');\nexport const FETCH_IDEA_CONCEPTS = asyncActionType('FETCH_IDEA_CONCEPTS');\nexport const FETCH_CHALLENGE_IDEA_CONCEPTS = asyncActionType(\n 'FETCH_CHALLENGE_IDEA_CONCEPTS'\n);\nexport const FLUSH_CONCEPT_IDS = 'FLUSH_CONCEPT_IDS';\nexport const UPLOAD_CONCEPT_ATTACHMENT = asyncActionType(\n 'UPLOAD_CONCEPT_ATTACHMENT'\n);\nexport const DOWNLOAD_CONCEPT_ATTACHMENT = asyncActionType(\n 'DOWNLOAD_CONCEPT_ATTACHMENT'\n);\n\n// dedicated metrics action types\nexport const CHANGE_CONCEPT_STAGE = 'CHANGE_CONCEPT_STAGE';\nexport const CREATE_QUICK_CONCEPT_FORM_OPEN = 'CREATE_QUICK_CONCEPT_FORM_OPEN';\nexport const CONCEPT_LIST_CHANGE_SORT = 'CONCEPT_LIST_CHANGE_SORT';\nexport const CONCEPT_LIST_CHANGE_STAGE_FILTER =\n 'CONCEPT_LIST_CHANGE_STAGE_FILTER';\nexport const CONCEPT_STATUS_UPDATE_CANCEL = 'CONCEPT_STATUS_UPDATE_CANCEL';\nexport const CLOSE_INTRO_MESSAGE = 'CLOSE_INTRO_MESSAGE';\nexport const PAGINATE_IDEA_CARDS = 'PAGINATE_IDEA_CARDS';\nexport const SKIP_SUGGESTIONS = 'SKIP_SUGGESTIONS';\nexport const VIEW_CHALLENGE_INFO = 'VIEW_CHALLENGE_INFO';\n\n// definitions\nexport const EMPTY_NUMBER = 'N/A';\n\nexport const conceptEditorFormFields = {\n BENEFITS: 'benefits',\n COSTS: 'costs',\n IDEA_TEXT: 'ideaText',\n PLANNED_ACTIVITIES: 'plannedActivities',\n TITLE: 'title',\n CONCEPT_STATE: 'ideaConceptState',\n FOLLOW_UP_CHALLENGE: 'followUpChallengeId',\n IS_PRIVATE: 'isPrivate',\n // sent by GET endpoint\n CATEGORY: 'category',\n IMAGE_URL: 'imageUrl',\n TEAM: 'team',\n // expected by POST/PUT endpoint\n CATEGORY_ID: 'categoryId',\n INVITED_USERS: 'invitedUsers',\n IMAGE: 'image'\n};\n\nexport const conceptEvalCriteriaDefaults = [\n 'Size of the impact',\n 'Business viability',\n 'Technological feasibility',\n 'Team composition',\n 'Disruptiveness of the idea'\n];\n\n/**\n * @enum {string} IdeaConceptImplementationStatus\n * @readonly\n */\nexport const IdeaConceptImplementationStatus = {\n ACTIVE: 'ACTIVE',\n VALIDATION: 'VALIDATION',\n IMPLEMENTING: 'IMPLEMENTING',\n DONE: 'DONE',\n LATER: 'SAVE_FOR_LATER',\n STOP: 'STOPPED'\n};\n\n/**\n * @enum {string} IdeaConceptImplementationStatus\n * @readonly\n */\nexport const IdeaConceptImplementationStatusCepheid = {\n ACTIVE: 'ACTIVE',\n VALIDATION: 'VALIDATION',\n IMPLEMENTING: 'IMPLEMENTING',\n FINAL_ASSESSMENT: 'FINAL_ASSESSMENT',\n COACHING: 'COACHING',\n DONE: 'DONE',\n LATER: 'SAVE_FOR_LATER',\n STOP: 'STOPPED'\n};\n\nexport const stagesWithOwnFilters = [\n IdeaConceptImplementationStatus.ACTIVE,\n IdeaConceptImplementationStatus.VALIDATION,\n IdeaConceptImplementationStatus.IMPLEMENTING,\n IdeaConceptImplementationStatus.DONE\n];\nexport const stagesWithOwnFiltersCepheid = [\n IdeaConceptImplementationStatusCepheid.ACTIVE,\n IdeaConceptImplementationStatusCepheid.VALIDATION,\n IdeaConceptImplementationStatusCepheid.IMPLEMENTING,\n IdeaConceptImplementationStatusCepheid.FINAL_ASSESSMENT,\n IdeaConceptImplementationStatusCepheid.COACHING,\n IdeaConceptImplementationStatusCepheid.DONE\n];\nexport const OTHER_FILTER_ID = 'OTHER';\n\nexport const conceptListColumns = {\n TITLE: 'title',\n OWNER: 'owner',\n TEAM: 'team',\n CREATE_TIME: 'createTime',\n EVAL_SCORE: 'evalScore',\n STAGE: 'stage',\n INTERNAL_COMMENT: 'internalComment',\n REVIEWER_FEEDBACK: 'REVIEWER_FEEDBACK'\n};\n\nexport const conceptListSortIds = {\n [conceptListColumns.TITLE]: 'TITLE',\n [conceptListColumns.OWNER]: 'OWNER',\n [conceptListColumns.TEAM]: 'TEAM_SIZE',\n [conceptListColumns.CREATE_TIME]: 'CREATED_AT',\n [conceptListColumns.EVAL_SCORE]: 'REVIEW_SCORE',\n [conceptListColumns.STAGE]: 'STATUS'\n};\n\nexport const conceptListFilterKeys = {\n CATEGORY: 'category',\n CHALLENGE: 'challengeid',\n CONCEPT_TYPE: 'filter', // undefined (normal concept) | quick concepts\n INVOLVEMENT: 'filter', // created by me | with my contribution\n STAGE: 'state'\n};\n\nexport const conceptListFilterEnums = {\n OWN_CONCEPTS: 'onlymyconcepts',\n MY_CONTRIBUTIONS: 'contributedbyme',\n QUICK_CONCEPTS: 'onlyquickideaconcepts'\n};\n\nexport const conceptListStageFilterIds = {\n [IdeaConceptImplementationStatus.ACTIVE]:\n IdeaConceptImplementationStatus.ACTIVE,\n [IdeaConceptImplementationStatus.VALIDATION]:\n IdeaConceptImplementationStatus.VALIDATION,\n [IdeaConceptImplementationStatus.IMPLEMENTING]:\n IdeaConceptImplementationStatus.IMPLEMENTING,\n [IdeaConceptImplementationStatus.DONE]: IdeaConceptImplementationStatus.DONE,\n [OTHER_FILTER_ID]: [\n IdeaConceptImplementationStatus.LATER,\n IdeaConceptImplementationStatus.STOP\n ]\n};\nexport const conceptListStageFilterIdsCepheid = {\n [IdeaConceptImplementationStatusCepheid.ACTIVE]:\n IdeaConceptImplementationStatusCepheid.ACTIVE,\n [IdeaConceptImplementationStatusCepheid.VALIDATION]:\n IdeaConceptImplementationStatusCepheid.VALIDATION,\n [IdeaConceptImplementationStatusCepheid.IMPLEMENTING]:\n IdeaConceptImplementationStatusCepheid.IMPLEMENTING,\n [IdeaConceptImplementationStatusCepheid.FINAL_ASSESSMENT]:\n IdeaConceptImplementationStatusCepheid.FINAL_ASSESSMENT,\n [IdeaConceptImplementationStatusCepheid.COACHING]:\n IdeaConceptImplementationStatusCepheid.COACHING,\n [IdeaConceptImplementationStatusCepheid.DONE]:\n IdeaConceptImplementationStatusCepheid.DONE,\n [OTHER_FILTER_ID]: [\n IdeaConceptImplementationStatusCepheid.LATER,\n IdeaConceptImplementationStatusCepheid.STOP\n ]\n};\n\n// modals\nexport const ACTIVITIES_EDITOR = 'ACTIVITIES_EDITOR';\nexport const BENEFITS_EDITOR = 'BENEFITS_EDITOR';\nexport const CONCEPT_FIELD_EDITOR = 'CONCEPT_FIELD_EDITOR';\nexport const CONCEPT_MAP_PREVIEW = 'CONCEPT_MAP_PREVIEW';\nexport const CONCEPT_OWNER_FORM = 'CONCEPT_OWNER_FORM';\nexport const CONCEPT_PREVIEW = 'CONCEPT_PREVIEW';\nexport const COSTS_EDITOR = 'COSTS_EDITOR';\nexport const DESCRIBE_IDEA_CONCEPT_FORM = 'DESCRIBE_IDEA_CONCEPT_FORM';\nexport const CONCEPT_COMMENT_EDITOR = 'CONCEPT_COMMENT_EDITOR';\nexport const CONCEPT_COMMENT_DISPLAY = 'CONCEPT_COMMENT_DISPLAY';\nexport const TEAM_EDITOR = 'TEAM_EDITOR';\nexport const VISIBILITY_EDITOR = 'VISIBILITY_EDITOR';\n\n// schema IDs\nexport const entities = {\n ATTACHMENT: 'attachments',\n CONCEPT_POST: 'conceptPosts',\n IDEA_CONCEPT: 'ideaConcepts',\n SUGGESTION: 'suggestions'\n};\n\n// entity ID props\nexport const idProps = {\n ATTACHMENT_ID: 'attachmentId',\n IDEA_CONCEPT_ID: 'ideaConceptId',\n SUGGESTION_ID: 'suggestionId'\n};\n","import { handleActions, combineActions } from 'redux-actions';\nimport get from 'lodash/get';\n\nconst errorReducerFactory = action =>\n handleActions(\n {\n [combineActions(action.PENDING, action.SUCCESS)]: () => false,\n [action.ERROR]: (_, { payload, meta }) =>\n get(meta, 'status') || payload || true\n },\n false\n );\n\nexport default errorReducerFactory;\n","const prependBase64Content = (content, mimeType = 'image/jpeg') =>\n `data:${mimeType};base64,${content}`;\n\nexport { prependBase64Content };\n","import includes from 'lodash/includes';\nimport { SUPPORTED_UI_LANGUAGES } from '../constants';\n\nexport function detectLanguage() {\n try {\n return navigator.language;\n } catch (e) {\n console.error('Could not detect user agent language');\n }\n}\n\nexport const getLanguageShortCode = langCode =>\n langCode && langCode.toString().slice(0, 2);\n\nexport function determineUiLanguage(\n preferred,\n browser,\n fallback = SUPPORTED_UI_LANGUAGES[0]\n) {\n if (includes(SUPPORTED_UI_LANGUAGES, preferred)) {\n return preferred;\n } else if (includes(SUPPORTED_UI_LANGUAGES, browser)) {\n return browser;\n } else {\n return fallback;\n }\n}\n","import { useCallback, useEffect, useRef } from 'react';\nimport isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\nimport invariant from 'invariant';\nimport { useDispatch, useSelector } from 'react-redux';\nimport forceArray from '../../../utils/forceArray';\nimport { filterItemsBy, removeFilter } from '../../../common/actions/meta';\nimport { REDUCER_ID } from '../../reducers/conceptList';\nimport { getConceptListFilters } from '../../selectors/conceptList';\nimport useListFetcher from './useListFetcher';\n\nconst setFilter = filterItemsBy(REDUCER_ID);\nconst unsetFilter = removeFilter(REDUCER_ID);\n\nconst DEFAULTS = { overwriteValue: false, autoRefetch: true };\n\nexport default function useSetFilter() {\n const dispatch = useDispatch();\n const refreshList = useListFetcher();\n const filters = useSelector(getConceptListFilters);\n const lastFilters = useRef(filters);\n\n useEffect(\n function storeLastFilters() {\n lastFilters.current = filters;\n },\n [filters]\n );\n\n const filterSetter = useCallback(\n (filterKey, filterValue, options = DEFAULTS) => {\n invariant(filterKey, '`filterKey` not found');\n\n const config = { ...DEFAULTS, ...options };\n\n if (isEmpty(filterValue)) {\n dispatch(unsetFilter(filterKey));\n } else {\n dispatch(setFilter(filterKey, filterValue, config.overwriteValue));\n }\n\n const lastFilterValue = lastFilters.current[filterKey];\n const isFilterValueSame = isEqual(\n forceArray(lastFilterValue),\n forceArray(filterValue)\n );\n if (config.autoRefetch && !isFilterValueSame) {\n refreshList({ flushList: true });\n }\n },\n [dispatch, refreshList, lastFilters]\n );\n\n return filterSetter;\n}\n","import { useCallback } from 'react';\nimport invariant from 'invariant';\nimport { useDispatch } from 'react-redux';\nimport { REDUCER_ID } from '../../reducers/conceptList';\nimport { removeFilter } from '../../../common/actions/meta';\nimport useListFetcher from './useListFetcher';\n\nconst unsetFilter = removeFilter(REDUCER_ID);\n\nexport default function useUnsetFilter() {\n const dispatch = useDispatch();\n const refreshList = useListFetcher();\n\n const filterUnsetter = useCallback(\n (filterKey, filterValue, options = { autoRefetch: true }) => {\n invariant(filterKey, '`filterKey` not found');\n\n dispatch(unsetFilter(filterKey, filterValue));\n\n if (options.autoRefetch) {\n refreshList({ flushList: true });\n }\n },\n [dispatch, refreshList]\n );\n\n return filterUnsetter;\n}\n","export const isLoadingSelector = ideaConceptState => ideaConceptState.loading;\n\nexport const isErrorSelector = ideaConceptState => ideaConceptState.error;\n\nexport const dropById = id => arr => arr.filter(item => item !== id);\n","import get from 'lodash/get';\nimport { combineActions, handleActions } from 'redux-actions';\nimport { REVEAL_IDEACONCEPT_IDENTITY } from '../../../constants';\nimport { dropById } from './commonMethods';\n\nconst getIdFromPayload = payload => get(payload, 'meta.data[0]');\n\nconst revealReducer = handleActions(\n {\n [REVEAL_IDEACONCEPT_IDENTITY.PENDING](state, payload) {\n return [...state, getIdFromPayload(payload)];\n },\n [combineActions(\n REVEAL_IDEACONCEPT_IDENTITY.SUCCESS,\n REVEAL_IDEACONCEPT_IDENTITY.ERROR\n )](state, payload) {\n return dropById(getIdFromPayload(payload))(state);\n }\n },\n []\n);\n\nexport default {\n reducer: revealReducer,\n isRevealPendingSelector: stateSelector => conceptId => state =>\n stateSelector(state).includes(conceptId)\n};\n","import includes from 'lodash/includes';\nimport { combineActions, handleActions } from 'redux-actions';\nimport { EDIT_IDEA_CONCEPT } from '../../../constants';\nimport { dropById } from './commonMethods';\n\nconst pendingEditReducer = handleActions(\n {\n [EDIT_IDEA_CONCEPT.PENDING](\n state,\n {\n meta: { ideaConceptId }\n }\n ) {\n return [...state, ideaConceptId];\n },\n [combineActions(EDIT_IDEA_CONCEPT.SUCCESS, EDIT_IDEA_CONCEPT.ERROR)](\n state,\n {\n meta: { ideaConceptId }\n }\n ) {\n return dropById(ideaConceptId)(state);\n }\n },\n []\n);\n\nexport default {\n reducer: pendingEditReducer,\n isEditPendingSelector: stateSelector => conceptId => state =>\n includes(stateSelector(state), conceptId)\n};\n","import flow from 'lodash/flow';\nimport { combineReducers } from 'redux';\nimport { combineActions, handleActions } from 'redux-actions';\nimport { createSelector } from 'reselect';\nimport { FETCH_IDEA_CONCEPT_BY_ID } from '../../../constants';\nimport { FETCH_CHALLENGE_IDEA_CONCEPTS } from '../../../ideaConcept/constants';\nimport { isLoadingSelector, isErrorSelector } from './commonMethods';\nimport pendingConceptRevealsFactory from './conceptRevealReducerFactory';\nimport pendingEditFactory from './pendingEditReducerFactory';\n\nconst loadingReducer = handleActions(\n {\n [FETCH_CHALLENGE_IDEA_CONCEPTS.PENDING]() {\n return true;\n },\n [combineActions(\n FETCH_CHALLENGE_IDEA_CONCEPTS.SUCCESS,\n FETCH_CHALLENGE_IDEA_CONCEPTS.ERROR\n )]() {\n return false;\n }\n },\n false\n);\n\nconst errorReducer = handleActions(\n {\n [combineActions(\n FETCH_CHALLENGE_IDEA_CONCEPTS.PENDING,\n FETCH_CHALLENGE_IDEA_CONCEPTS.SUCCESS\n )]() {\n return false;\n },\n [FETCH_CHALLENGE_IDEA_CONCEPTS.ERROR]() {\n return true;\n }\n },\n false\n);\n\nconst loadingByIdReducer = handleActions(\n {\n [FETCH_IDEA_CONCEPT_BY_ID.PENDING]() {\n return true;\n },\n [combineActions(\n FETCH_IDEA_CONCEPT_BY_ID.SUCCESS,\n FETCH_IDEA_CONCEPT_BY_ID.ERROR\n )]() {\n return false;\n }\n },\n false\n);\n\nconst errorByIdReducer = handleActions(\n {\n [combineActions(\n FETCH_IDEA_CONCEPT_BY_ID.PENDING,\n FETCH_IDEA_CONCEPT_BY_ID.SUCCESS\n )]() {\n return false;\n },\n [FETCH_IDEA_CONCEPT_BY_ID.ERROR]() {\n return true;\n }\n },\n false\n);\n\nexport default function ideaConceptsReducerFactory(rootSelector) {\n const getStateRoot = state => rootSelector(state);\n\n const bulkConceptSelectors = {\n isIdeaConceptLoadingSelector: createSelector(\n getStateRoot,\n isLoadingSelector\n ),\n isIdeaConceptErrorSelector: createSelector(getStateRoot, isErrorSelector)\n };\n\n const conceptByIdSelectors = {\n isIdeaConceptByIdLoadingSelector: createSelector(\n getStateRoot,\n state => state.byIdLoading\n ),\n isIdeaConceptByIdErrorSelector: createSelector(\n getStateRoot,\n state => state.byIdError\n )\n };\n\n const { isRevealPendingSelector } = pendingConceptRevealsFactory;\n const { isEditPendingSelector } = pendingEditFactory;\n\n return {\n reducer: combineReducers({\n loading: loadingReducer,\n error: errorReducer,\n byIdLoading: loadingByIdReducer,\n byIdError: errorByIdReducer,\n pendingReveals: pendingConceptRevealsFactory.reducer,\n pendingEdits: pendingEditFactory.reducer\n }),\n ...bulkConceptSelectors,\n ...conceptByIdSelectors,\n isRevealPendingSelector: isRevealPendingSelector(\n flow(getStateRoot, state => state.pendingReveals)\n ),\n isEditPendingSelector: isEditPendingSelector(\n flow(getStateRoot, state => state.pendingEdits)\n )\n };\n}\n","import get from 'lodash/get';\nimport ideaConceptsReducerFactory from './ideaConcepts/ideaConceptsReducerFactory';\n\nconst ideaConcepts = ideaConceptsReducerFactory(state =>\n get(state, 'ideaConcepts', [])\n);\n\nexport const {\n ideaConceptByIdSelector,\n isIdeaConceptLoadingSelector,\n isIdeaConceptErrorSelector,\n isIdeaConceptByIdLoadingSelector,\n isIdeaConceptByIdErrorSelector,\n isRevealPendingSelector,\n isEditPendingSelector\n} = ideaConcepts;\n\nexport default ideaConcepts.reducer;\n","import React, { useCallback } from 'react';\nimport { translate } from 'react-i18next';\nimport { PrimaryNavigation } from '../../../common/components';\nimport TabButton from '../../../common/components/TabButton';\nimport useActiveImagePicker from '../../../common/containers/ImageSearchModal/useActiveImagePicker';\nimport { ImageTypes } from '../../../constants';\n\nconst types = [ImageTypes.UPLOADED, ImageTypes.PRESET, ImageTypes.GOOGLE];\n\nfunction PickerWithTabNav({ onSelect, t }) {\n const tabs = useActiveImagePicker(ImageTypes.UPLOADED);\n const activeType = tabs.getType();\n const Picker = tabs.getComponent();\n const handleSelect = useCallback(\n image => {\n image['@type'] = activeType;\n onSelect(image, activeType);\n },\n [onSelect, activeType]\n );\n return (\n <>\n \n {types.map(tabId => (\n tabs.setType(tabId)}>\n {t(`common/imagePicker/${tabId}/navButton`)}\n \n ))}\n \n \n \n );\n}\n\nexport default translate()(PickerWithTabNav);\n","import React, { useCallback, useState } from 'react';\nimport get from 'lodash/get';\nimport values from 'lodash/values';\nimport PropTypes from 'prop-types';\nimport { translate } from 'react-i18next';\nimport Button from '@bit/be-novative.kit.button';\nimport Icon from '../../../common/components/Icon';\nimport { ImageTypes, Size } from '../../../constants';\nimport { prependBase64Content } from '../../../utils/payloadUtils/image';\nimport PickerWithTabNav from './PickerWithTabNav';\nimport scss from './ConceptImageInput.module.scss';\n\nConceptImageInput.propTypes = {\n input: PropTypes.shape({\n value: PropTypes.shape({\n '@type': PropTypes.oneOf(values(ImageTypes)).isRequired,\n url: PropTypes.string,\n content: PropTypes.string\n })\n })\n};\nfunction ConceptImageInput({ input = {}, t }) {\n const { onChange, value } = input;\n const [shouldShowPicker, setShouldShowPicker] = useState(false);\n const shouldShowEmpty =\n !get(value, 'url') && !get(value, 'content') && !shouldShowPicker;\n\n const handleSelect = useCallback(\n image => {\n onChange(image);\n setShouldShowPicker(false);\n },\n [onChange]\n );\n\n if (shouldShowEmpty) {\n return (\n
    \n \n
    \n );\n }\n\n if (shouldShowPicker) {\n return (\n
    \n \n
    \n );\n }\n\n const url = value.url || prependBase64Content(value.content);\n\n return (\n
    \n
    \n \"\"\n
    \n \n \n
    \n
    \n
    \n );\n}\n\nexport default translate()(ConceptImageInput);\n","import React, { cloneElement } from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'classnames';\nimport './Embed.css';\n\nfunction Embed(props) {\n const { children, ratio } = props;\n return (\n
    \n {cloneElement(children, { className: 'Embed__Item' })}\n
    \n );\n}\n\nEmbed.propTypes = {\n ratio: PropTypes.oneOf(['16by9'])\n};\n\nEmbed.defaultProps = {\n ratio: '16by9'\n};\n\nexport default Embed;\n","import Embed from './Embed';\n\nexport default Embed;\n","import PropTypes from 'prop-types';\nimport useFeatureFlag from '../../hooks/useFeatureFlag';\n\nBranchByFeature.propTypes = {\n fallbackComponent: PropTypes.node,\n feature: PropTypes.string.isRequired\n};\nfunction BranchByFeature({ children, fallbackComponent, feature }) {\n const isFeatureEnabled = useFeatureFlag(feature);\n\n if (isFeatureEnabled) {\n return children;\n } else if (fallbackComponent) {\n return fallbackComponent;\n } else {\n return null;\n }\n}\n\nexport default BranchByFeature;\n","import BranchByFeature from './BranchByFeature';\n\nexport default BranchByFeature;\n","import React from 'react';\nimport './Dot.css';\n\nfunction Dot(props) {\n return (\n \n •\n \n );\n}\n\nexport default Dot;\n","import Dot from './Dot';\n\nexport default Dot;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { translate } from 'react-i18next';\nimport cn from 'classnames';\nimport Backdrop from '../Backdrop';\nimport Button from '@bit/be-novative.kit.button';\nimport Icon, { ICON_SIZES } from '../Icon';\nimport Heading from '../Heading';\nimport Popover from '../Popover';\nimport './HelpIcon.css';\n\nconst baseClass = 'HelpIcon';\n\nexport const Tip = ({ title, description }) => (\n
    \n \n {title}\n \n

    {description}

    \n
    \n);\n\nexport const FooterButton = ({ onClick, t }) => (\n
    \n \n {t('common/helpIconCloseActionLabel')}\n \n
    \n);\n\nconst TranslatedFooterButton = translate()(FooterButton);\n\nHelpIcon.propTypes = {\n iconClass: PropTypes.string,\n iconSize: PropTypes.oneOf(ICON_SIZES)\n};\nHelpIcon.defaultProps = {\n iconSize: 'md'\n};\nexport function HelpIcon({\n children,\n className,\n description,\n iconClass,\n iconSize,\n title\n}) {\n const [isOpen, setIsOpen] = useState(false);\n\n const handleOpen = () => setIsOpen(true);\n const handleClose = () => setIsOpen(false);\n\n return (\n \n }\n popoverClassName={`${baseClass}__Popover`}\n action={}\n closeable={true}\n showFooterStripe={false}\n onClose={handleClose}\n show={isOpen}>\n \n \n {children}\n \n \n \n \n );\n}\n\nexport default HelpIcon;\n","import HelpIcon from './HelpIcon';\n\nexport default HelpIcon;\n","import React, { memo } from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { translate } from 'react-i18next';\nimport { Field } from 'react-final-form';\nimport { InputFormControl } from '../../../common/components';\nimport { validateConceptTitle } from '../../utils/formValidation';\nimport { IDEA_CONCEPT_TITLE_FIELD_MAXLENGTH } from '../../config';\n\nConceptTitleInput.propTypes = {\n autoFocus: PropTypes.bool,\n name: PropTypes.string.isRequired,\n t: PropTypes.func.isRequired\n};\nexport function ConceptTitleInput({ autoFocus, name, t, ...restOfProps }) {\n return (\n \n );\n}\n\nexport default compose(\n memo,\n translate()\n)(ConceptTitleInput);\n","import ConceptTitleInput from './ConceptTitleInput';\n\nexport default ConceptTitleInput;\n","import React, { memo } from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { translate } from 'react-i18next';\nimport { IDEA_CONCEPT_DETAILS_FIELD_MAXLENGTH } from '../../config';\nimport { validateConceptDescription } from '../../utils/formValidation';\nimport ConceptRichTextField from '../ConceptRichTextField';\n\nConceptDescriptionInput.propTypes = {\n autoFocus: PropTypes.bool,\n name: PropTypes.string.isRequired,\n t: PropTypes.func.isRequired\n};\nexport function ConceptDescriptionInput({\n autoFocus,\n name,\n t,\n ...restOfProps\n}) {\n return (\n \n );\n}\n\nexport default compose(\n memo,\n translate()\n)(ConceptDescriptionInput);\n","import ConceptDescriptionInput from './ConceptDescriptionInput';\n\nexport default ConceptDescriptionInput;\n","import client from '../../api/client';\n\n/**\n * Logs in the user with either a password or a 3rd-party token\n * @param {string} email - The account email\n * @param {Object} secret\n * @param {string} [secret.password] - The account password if the user signed up with a password\n * @param {import(\"../types/jsdoc\").SSOToken} [secret.token] - The SSO token if the user signed up through a provider\n * @return {Promise} The pending request\n */\n\nfunction loginWithEmail(email, { password, token }) {\n return client.post('/login', {\n email,\n authenticationToken: token || {\n '@type': 'password',\n password\n }\n });\n}\n\n/**\n * Logs in the user with the single-use magic code received via email\n * @param {string} code - The single-use access code\n * @return {Promise} The pending request\n */\n\nfunction loginWithOneTimeCode(code) {\n return client.get(`/magiclink/${code}`);\n}\n\n/**\n * Triggers sending a one-time login email to the user\n * @param {string} email - The account email\n * @return {Promise} The pending request\n */\n\nfunction requestOneTimeCode(email) {\n return client.get(`/magiclink/${email}/request`);\n}\n\n/**\n * Re-authenticates the user on another platform\n * @param {string} platformId - The target platform's ID\n * @return {Promise} The pending request\n */\n\nfunction switchPlatform(platformId) {\n return client.post('/switch-company', { companyId: platformId });\n}\n\nexport default {\n loginWithEmail,\n loginWithOneTimeCode,\n requestOneTimeCode,\n switchPlatform\n};\n","import client from '../../api/client';\nimport logRequestFailure from '../../api/utils/logRequestFailure';\nimport addBreadcrumb from '../../telemetry/addBreadcrumb';\n\n/**\n * Creates a user account\n * @param {UserSignupPayload} userData - The account details\n * @param {string} captchaToken - Token that must be sent to the API for verification\n * @param {string} [invitationCode] - The invitation code decoded from a magic link, in case the user was invited to the platform\n * @return {Promise} The pending request\n */\n\nfunction signupUser(userData, captchaToken, invitationCode) {\n const config = invitationCode\n ? {\n headers: {\n 'X-INVITATION-CODE': invitationCode\n }\n }\n : undefined;\n\n return client.post(`/registration?captcha=${captchaToken}`, userData, config);\n}\n\n/**\n * Verifies the user account\n * @param {string} userId\n * @param {string} platformId\n * @param {string} verificationKey - The key received in the confirmation email\n * @return {Promise} The pending request\n */\n\nfunction verifyAccount(userId, platformId, verificationKey) {\n addBreadcrumb('Verifying user account...', {\n data: { userId, platformId, key: verificationKey }\n });\n try {\n return client.post('/users/confirm', {\n userId,\n companyId: platformId,\n key: verificationKey\n });\n } catch (error) {\n logRequestFailure(error, 'Could not verify user account', 'authentication');\n throw error;\n }\n}\n\n/**\n * Triggers re-sending the account verification email for the user\n * @param {string} token - The user's valid token\n * @return {Promise} The pending request\n */\n\nfunction resendAccountVerificationEmail(token) {\n return client.get('/registration/resend-email', {\n headers: {\n Authorization: token\n }\n });\n}\n\nexport default {\n signupUser,\n verifyAccount,\n resendAccountVerificationEmail\n};\n","import * as Sentry from '@sentry/browser';\nimport platform from '../../utils/platform';\nimport { UPDATE_ONBOARDING, OnboardingTips } from '../../constants';\nimport { IDENTITY_API } from '../../api/constants';\nimport {\n getOnboardingBitSet,\n onboardingTipsSelector,\n onboardingTipSelector\n} from '../reducers';\nimport { openModal } from './modal';\n\n// TODO convert into onboarding state slice\nexport const maybeOpenWelcomeModal = () => (dispatch, getState) => {\n const isWelcomeActive = onboardingTipSelector(OnboardingTips.WELCOME)(\n getState()\n );\n\n if (isWelcomeActive && !platform.isPublic(window.location.hostname)) {\n dispatch(\n openModal({\n modalType: 'WELCOME',\n modalProps: {\n size: 'large'\n }\n })\n );\n }\n};\n\nexport const updateOnboarding = (flags, value = true) => (\n dispatch,\n getState\n) => {\n const onboarding = getOnboardingBitSet(getState());\n\n if (!onboarding) {\n Sentry.captureException(\n new Error('Cannot update onboarding because onboarding data is empty')\n );\n return;\n }\n\n if (Array.isArray(flags)) {\n flags.forEach(flag => onboarding.set(flag, value === true ? 1 : 0));\n } else {\n onboarding.set(flags, value === true ? 1 : 0);\n }\n\n let hex = onboarding.toString(16);\n\n if (hex.length % 2) {\n hex = `0${hex}`;\n }\n\n return dispatch({\n [IDENTITY_API]: {\n url: '/profile/onboarding',\n method: 'PUT',\n data: hex,\n type: UPDATE_ONBOARDING\n }\n });\n};\n\nexport const skipOnboarding = () => (dispatch, getState) => {\n const tips = onboardingTipsSelector(getState());\n if (tips) {\n return dispatch(updateOnboarding(tips, true));\n }\n};\n\nexport const resetOnboarding = () => (dispatch, getState) => {\n const tips = onboardingTipsSelector(getState());\n if (tips) {\n return dispatch(updateOnboarding(tips, false));\n }\n};\n","import isEmpty from 'lodash/isEmpty';\nimport { useCallback } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { fetchCategories, selectors } from '../state/categories';\nimport useMountEffect from './useMountEffect';\n\nexport default function useFetchCategories(options = { showAllCategs: false }) {\n const { showAllCategs } = options;\n const dispatch = useDispatch();\n const categories = useSelector(selectors.selectAll);\n\n const handleFetch = useCallback(() => {\n dispatch(fetchCategories());\n }, [dispatch]);\n\n useMountEffect(function maybeFetchCategs() {\n if (isEmpty(categories) && showAllCategs) {\n handleFetch();\n }\n });\n\n const cepheidCategs = [\n {\n categoryId: '35a4bc57-db81-ec11-94f6-e42aac654314',\n name: 'Business Model Innovation',\n rank: 4\n },\n {\n categoryId: '36a4bc57-db81-ec11-94f6-e42aac654314',\n name: 'Product Innovation',\n rank: 5\n },\n {\n categoryId: '37a4bc57-db81-ec11-94f6-e42aac654314',\n name: 'Manufacturing/Operations Innovation',\n rank: 6\n },\n {\n categoryId: '38a4bc57-db81-ec11-94f6-e42aac654314',\n name: 'Other',\n rank: 7\n }\n ];\n\n return showAllCategs ? categories : cepheidCategs;\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { translate } from 'react-i18next';\nimport ImageGallery from './ImageGallery';\nimport client from '../../../api/client';\nimport useImageSearch from './useImageFetch';\n\nPresetImagePicker.propTypes = {\n onSelect: PropTypes.func.isRequired\n};\nfunction PresetImagePicker({ onSelect, t }) {\n const resource = useMemo(\n () => ({\n fetch: () => client.get('/gallery/preset').then(res => res.data)\n }),\n []\n );\n const presetApi = useImageSearch(resource);\n const handleNextPage = useCallback(() => {\n presetApi.fetch(presetApi.pageIx);\n }, [presetApi]);\n\n const [didInitialFetch, setDidInitialFetch] = useState();\n useEffect(() => {\n if (presetApi.pageIx === 0 && !didInitialFetch) {\n presetApi.fetch(0);\n setDidInitialFetch(true);\n }\n }, [didInitialFetch, presetApi]);\n\n return (\n
    \n
    \n

    \n {t('common/imagePicker/preset/title')}\n

    \n
    \n \n
    \n );\n}\n\nexport default translate()(PresetImagePicker);\n","import React, { Component } from 'react';\nimport get from 'lodash/get';\nimport PropTypes from 'prop-types';\nimport Dropzone from 'react-dropzone';\nimport { translate } from 'react-i18next';\nimport ReactCrop from 'react-image-crop';\nimport Button from '@bit/be-novative.kit.button';\nimport { ImageTypes } from '../../../constants';\nimport 'react-image-crop/dist/ReactCrop.css';\nimport scss from './ImagePicker.module.scss';\n\nconst MB_MAX_SIZE = 10;\nconst ACCEPT_TYPES = ['jpeg', 'png'];\nexport const BLOB = 'blob';\nexport const BASE_64 = 'base64';\n\nconst getImgType = image => get(image, 'type', 'image/jpeg');\n\nclass UploadImageTab extends Component {\n static propTypes = {\n dataType: PropTypes.oneOf([BLOB, BASE_64]),\n onSelect: PropTypes.func,\n crop: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number,\n width: PropTypes.number,\n height: PropTypes.number\n })\n };\n\n static defaultProps = {\n dataType: BASE_64,\n crop: {\n x: 10,\n y: 10,\n width: 80,\n height: 80\n }\n };\n\n state = {\n image: null,\n error: false\n };\n\n componentWillUnmount() {\n const { image } = this.props;\n if (image) {\n window.URL.revokeObjectURL(image.preview);\n }\n }\n\n handleDropAccepted = accepted => {\n this.setState({\n image: accepted[0],\n error: false\n });\n };\n\n handleDropRejected = () => {\n this.setState({\n error: true\n });\n };\n\n handleSelect = () => {\n this.loadImage()\n .then(this.cropImage)\n .then(canvas => {\n if (this.props.dataType === BLOB) {\n canvas.toBlob(this.submitImage, this.state.imageFileType);\n } else {\n const imgData = canvas\n .toDataURL(getImgType(this.state.image))\n // API throws error for non-base64 characters\n .replace(/data:image\\/\\w+;base64,/i, '');\n this.submitImage(imgData);\n }\n });\n };\n\n submitImage = content => {\n this.props.onSelect({\n '@type': ImageTypes.UPLOADED,\n content,\n dataType: this.props.dataType,\n fileType: getImgType(this.state.image)\n });\n };\n\n loadImage = () => {\n return new Promise((resolve, reject) => {\n const image = new Image();\n image.onload = () => resolve(image);\n image.onerror = () => reject();\n image.src = this.state.image.preview;\n });\n };\n\n cropImage = image => {\n const crop = this.state.crop || this.props.crop;\n const imageWidth = image.naturalWidth;\n const imageHeight = image.naturalHeight;\n\n const cropX = (crop.x / 100) * imageWidth;\n const cropY = (crop.y / 100) * imageHeight;\n\n const cropWidth = (crop.width / 100) * imageWidth;\n const cropHeight = (crop.height / 100) * imageHeight;\n\n const canvas = document.createElement('canvas');\n canvas.width = cropWidth;\n canvas.height = cropHeight;\n const ctx = canvas.getContext('2d');\n\n ctx.drawImage(\n image,\n cropX,\n cropY,\n cropWidth,\n cropHeight,\n 0,\n 0,\n cropWidth,\n cropHeight\n );\n\n return canvas;\n };\n\n handleCropChange = crop => {\n this.setState({\n crop\n });\n };\n\n handleImageLoaded = crop => {\n this.setState({\n crop\n });\n };\n\n render() {\n const { t, crop } = this.props;\n const { image, error } = this.state;\n\n return (\n
    \n
    \n

    {t('common/imagePicker/uploaded/title')}

    \n
    \n {!image && (\n `image/${type}`).join(', ')}\n maxSize={MB_MAX_SIZE * 1024 * 1024}\n multiple={false}\n className={scss.DropZone}\n activeClassName={scss.active}\n rejectClassName={scss.rejected}>\n {!error &&

    {t('common/imagePicker/uploaded/help')}

    }\n {error && (\n

    \n {t('common/imagePicker/error/imageUploadFailed')}\n
    \n {t('common/imagePicker/error/uploadedImageInvalid', {\n types: ACCEPT_TYPES.join(', '),\n size: `${MB_MAX_SIZE}Mb`\n })}\n

    \n )}\n \n )}\n {image && (\n
    \n \n \n
    \n )}\n
    \n );\n }\n}\n\nexport default translate()(UploadImageTab);\n","import {\n CHANGE_CONCEPT_STAGE,\n CONCEPT_STATUS_UPDATE_CANCEL,\n CONCEPT_LIST_CHANGE_STAGE_FILTER,\n CONCEPT_LIST_CHANGE_SORT,\n CREATE_QUICK_CONCEPT_FORM_OPEN\n} from '../constants';\n\nexport const cancelConceptStatusFormMetrics = ideaConceptId => ({\n type: CONCEPT_STATUS_UPDATE_CANCEL,\n metrics: { ideaConceptId }\n});\n\nexport const openQuickConceptFormMetrics = () => ({\n type: CREATE_QUICK_CONCEPT_FORM_OPEN,\n metrics: {}\n});\n\nexport const changeConceptStageMetrics = (ideaConceptId, stage) => ({\n type: CHANGE_CONCEPT_STAGE,\n metrics: {\n ideaConceptId,\n stage\n }\n});\n\nexport const changeListSortMetrics = ({ sortBy, sortDirection }) => ({\n type: CONCEPT_LIST_CHANGE_SORT,\n metrics: {\n sortBy,\n sortDirection\n }\n});\n\nexport const changeListStageFilterMetrics = stage => ({\n type: CONCEPT_LIST_CHANGE_STAGE_FILTER,\n metrics: {\n stage\n }\n});\n","import isFunction from 'lodash/isFunction';\nimport { FORM_ERROR } from 'final-form';\nimport { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { createIdeaConcept } from '../../common/actions';\n\nexport default function useSubmitQuickConceptForm({ onSuccess }) {\n const dispatch = useDispatch();\n const submitInsight = useCallback(\n async values => {\n try {\n await dispatch(createIdeaConcept(values));\n if (isFunction(onSuccess)) {\n onSuccess();\n }\n } catch (error) {\n return { [FORM_ERROR]: error };\n }\n },\n [dispatch, onSuccess]\n );\n return submitInsight;\n}\n","import { unwrapResult } from '@reduxjs/toolkit';\nimport get from 'lodash/get';\nimport React, { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { openModal } from '../../../common/actions/modal';\nimport Icon from '../../../common/components/Icon';\nimport { CONCEPT_COMMENT_EDITOR } from '../../constants';\nimport { editComment, fetchComments } from '../../state/internalComments';\nimport { editFeedback, fetchFeedback } from '../../state/reviewerFeedback';\nimport useGetCommentLike from './useGetCommentLike';\n\nconst fetchAction = {\n internalComment: fetchComments,\n feedback: fetchFeedback\n};\n\nconst editAction = {\n internalComment: editComment,\n feedback: editFeedback\n};\n\nconst editorProps = {\n internalComment: t => ({\n title: t('ideaConcept/evaluation/comment/title', { context: 'internal' }),\n description: (\n <>\n \n {t('ideaConcept/evaluation/comment/visibility')}\n \n )\n }),\n feedback: (t, isGroupComment) => ({\n title: t('ideaConcept/evaluation/comment/title', { context: 'feedback' }),\n description: isGroupComment ? (\n <>\n \n {t('ideaConcept/evaluation/comment/groupFeedbackEmail')}\n \n ) : null\n })\n};\n\n/**\n * Returns an edit callback for the given comment type\n * @param {\"internalComment\" | \"feedback\"} commentType - Determines which endpoint will be called for editing the comment\n * @param {string|number} conceptId - Parent concept ID\n * @param {string|number} [authorId] - Used for opening the modal dialog. If the author's user ID is present, the comment will be saved on their behalf. Otherwise it will be saved on behalf of the jury group.\n * @param {Function} [t] - Localisation function used for rendering the modal dialog\n * @returns {[openEditor: Function, submitComment: Function]}\n */\nexport default function useEditCommentLike(\n commentType,\n conceptId,\n authorId,\n t\n) {\n if (!['internalComment', 'feedback'].includes(commentType))\n throw Error(`Invalid commentType: ${commentType}`);\n\n const isGroupComment = !authorId;\n const comment = useGetCommentLike(commentType, conceptId, authorId);\n const text = get(comment, 'text', '');\n\n const dispatch = useDispatch();\n const submitComment = useCallback(\n async (text, isGroupComment) => {\n try {\n const res = await dispatch(\n editAction[commentType]({\n authorId,\n conceptId,\n isGroupComment,\n text\n })\n );\n unwrapResult(res);\n dispatch(fetchAction[commentType](conceptId));\n return res;\n } catch (error) {\n throw error;\n }\n },\n [authorId, conceptId, dispatch, commentType]\n );\n // TODO extract to useOpenCommentLikeEditor\n const openEditor = useCallback(\n () =>\n dispatch(\n openModal({\n modalType: CONCEPT_COMMENT_EDITOR,\n modalProps: {\n initialValue: text,\n onSubmit: submitComment,\n size: 'large',\n isGroupComment,\n ...editorProps[commentType](t, isGroupComment)\n }\n })\n ),\n [commentType, dispatch, isGroupComment, submitComment, t, text]\n );\n\n return [openEditor, submitComment];\n}\n","import { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { fetchComments } from '../../state/internalComments';\nimport { fetchFeedback } from '../../state/reviewerFeedback';\n\nconst fetchAction = {\n internalComment: fetchComments,\n feedback: fetchFeedback\n};\n\n/**\n * Returns a fetch callback for the given comment type\n * @param {Function} t - Localisation function\n * @param {\"internalComment\" | \"feedback\"} commentType - Determines which endpoint will be called for fetching the comment\n * @param {string|number} conceptId - Parent concept ID\n * @returns {Function}\n */\nexport default function useFetchCommentLike(commentType, conceptId) {\n if (!['internalComment', 'feedback'].includes(commentType))\n throw Error(`Invalid commentType: ${commentType}`);\n\n const dispatch = useDispatch();\n const fetch = useCallback(\n () => dispatch(fetchAction[commentType](conceptId)),\n [dispatch, conceptId, commentType]\n );\n return fetch;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Field, Form } from 'react-final-form';\nimport getDisplayName from '../../../utils/getDisplayName';\n\nFinalFormWrapper.propTypes = {\n component: PropTypes.oneOfType([PropTypes.element, PropTypes.func])\n .isRequired,\n onSubmit: PropTypes.func.isRequired\n};\nFinalFormWrapper.defaultProps = {\n inputName: 'value'\n};\nexport default function FinalFormWrapper({\n component,\n initialValues,\n inputName,\n onCancel,\n onSave,\n onStartEdit,\n onSubmit,\n ...restOfProps\n}) {\n FinalFormWrapper.displayName = `FinalFormWrapper(${getDisplayName(\n component\n )})`;\n\n return (\n
    \n {({ form, handleSubmit, pristine, valid }) => {\n const { reset, submit } = form;\n const fieldProps = {\n ...restOfProps,\n component,\n name: inputName,\n onCancel,\n onSave,\n onStartEdit,\n pristine,\n reset,\n submit,\n valid\n };\n return (\n \n \n \n );\n }}\n \n );\n}\n","import inlineEditable from './inlineEditable';\nimport FinalFormWrapper from './finalFormWrapper';\n\nexport { FinalFormWrapper, inlineEditable };\nexport default { FinalFormWrapper, inlineEditable };\n","import React, { Component } from 'react';\nimport noop from 'lodash/noop';\nimport PropTypes from 'prop-types';\nimport cn from 'classnames';\nimport { compose } from 'redux';\nimport { translate } from 'react-i18next';\nimport * as Sentry from '@sentry/browser';\nimport withHandleClickOutside from 'react-onclickoutside';\nimport { Size } from '../../../constants';\nimport getDisplayName from '../../../utils/getDisplayName';\nimport Button from '@bit/be-novative.kit.button';\nimport EditButton from '../EditButton';\nimport Icon from '../Icon';\nimport './inlineEditable.css';\n\nexport default function inlineEditableFactory(WrappedComponent) {\n const TOOLBAR_LOCATIONS = { top: 'top', bottom: 'bottom' };\n class InlineEditable extends Component {\n static propTypes = {\n closeOnClickOutside: PropTypes.bool,\n compactToolbar: PropTypes.bool,\n input: PropTypes.shape({\n name: PropTypes.string.isRequired,\n value: PropTypes.any.isRequired\n }),\n meta: PropTypes.object,\n onCancel: PropTypes.func,\n onStartEdit: PropTypes.func,\n onSave: PropTypes.func,\n readonly: PropTypes.bool,\n renderInline: PropTypes.func,\n reset: PropTypes.func,\n // Promise\n submit: PropTypes.func.isRequired,\n toolbarPosition: PropTypes.oneOf([\n TOOLBAR_LOCATIONS.top,\n TOOLBAR_LOCATIONS.bottom\n ])\n };\n\n static defaultProps = {\n closeOnClickOutside: true,\n compactToolbar: true,\n onCancel: () => {},\n onStartEdit: () => {},\n onSave: () => {},\n renderInline: value => value,\n reset: noop,\n toolbarPosition: TOOLBAR_LOCATIONS.bottom\n };\n\n state = {\n edit: false,\n submitFailed: false,\n submitting: false\n };\n\n setWrappedComponentRef = el => {\n this.wrappedEl = el;\n };\n\n stopEdit() {\n this.setState({\n edit: false\n });\n }\n\n startEdit() {\n this.setState(\n {\n edit: true,\n valueBeforeEdit: this.props.input.value\n },\n this.focusInput\n );\n }\n\n focusInput = () => {\n if (this.wrappedEl && this.wrappedEl.focus) {\n this.wrappedEl.focus();\n }\n };\n\n submitForm = () => {\n if (this.state.submitting) {\n return;\n }\n\n this.setState(\n {\n submitting: true,\n submitFailed: false\n },\n this.callApi\n );\n };\n\n callApi = async () => {\n const { input, submit } = this.props;\n const payload = { [input.name]: input.value };\n\n try {\n await submit(payload);\n this.handleSuccess(payload);\n } catch (e) {\n Sentry.captureException(e);\n this.setSubmitFail();\n }\n };\n\n restoreForm = () => {\n const { onCancel, reset } = this.props;\n\n reset();\n onCancel();\n this.stopEdit();\n this.setSubmitFail(false);\n };\n\n setSubmitFail = (submitFailed = true) => {\n this.setState({ submitFailed, submitting: false });\n };\n\n getMetaProps() {\n if (this.props.meta) {\n return { ...this.props.meta };\n }\n\n const { pristine, valid } = this.props;\n\n return {\n pristine,\n valid\n };\n }\n\n handleSuccess = payload => {\n const { onSave } = this.props;\n onSave(payload);\n this.stopEdit();\n this.setState({ submitting: false, submitFailed: false });\n };\n\n handleClickOutside = () => {\n const { closeOnClickOutside } = this.props;\n const { pristine, valid } = this.getMetaProps();\n\n if (!this.state.edit || !closeOnClickOutside) {\n return;\n }\n\n if (valid && !pristine) {\n this.submitForm();\n } else {\n this.restoreForm();\n }\n };\n\n handleStartEditClick = event => {\n event.preventDefault();\n this.props.onStartEdit();\n this.startEdit();\n };\n\n handleCommitChangeClick = event => {\n const { valid, pristine } = this.getMetaProps();\n\n if (!valid) {\n return;\n }\n\n if (!pristine) {\n this.submitForm();\n }\n };\n\n handleKeyPress = e => {\n const isEnter = e.keyCode === 13;\n const isEscape = e.keyCode === 27;\n\n if (isEnter) {\n e.preventDefault();\n this.submitForm();\n }\n\n if (isEscape) {\n this.restoreForm();\n }\n };\n\n render() {\n const { edit, submitFailed } = this.state;\n const {\n className,\n compactToolbar,\n input,\n meta,\n renderInline,\n readonly,\n required,\n t,\n toolbarPosition,\n ...rest\n } = this.props;\n const { value } = input;\n const classNames = cn('InlineEditable', className);\n const actionClasses = cn(\n 'InlineEditable__Actions',\n `InlineEditable__Actions--${toolbarPosition}`\n );\n\n if (readonly === true) {\n return
    {renderInline(value)}
    ;\n }\n\n return (\n
    \n {!edit && (\n \n {renderInline(value)}{' '}\n \n \n )}\n {edit && (\n
    \n \n {(submitFailed || meta.error) && (\n \n {meta.error || t('common/saveFailed')}\n
    \n )}\n \n \n {' '}\n {compactToolbar ? null : t('common/userAction/save')}\n {' '}\n \n {' '}\n {compactToolbar ? null : t('common/userAction/cancel')}\n \n \n
    \n )}\n \n );\n }\n }\n\n InlineEditable.displayName = `inlineEditable(${getDisplayName(\n WrappedComponent\n )})`;\n\n return compose(\n translate(),\n withHandleClickOutside\n )(InlineEditable);\n}\n","import React, { Component } from 'react';\nimport cn from 'classnames';\nimport './CircleSpinner.css';\n\nlet id = 0;\n\nclass CircleSpinner extends Component {\n instanceId = ++id;\n circles = [160, 150, 135];\n\n render() {\n const gradientId = `CircleSpinner__LinearGradient${this.instanceId}`;\n return (\n \n \n \n \n \n \n \n \n\n \n {this.circles.map(r => (\n \n ))}\n \n \n \n \n );\n }\n}\n\nexport default CircleSpinner;\n","import CircleSpinner from './CircleSpinner';\n\nexport default CircleSpinner;\n","import some from 'lodash/some';\nimport { shouldUpdate } from 'recompose';\nimport getDisplayName from '../../../utils/getDisplayName';\n\nconst valueChange = (props, nextProps) => props.value !== nextProps.value;\nconst labelChange = (props, nextProps) => props.label !== nextProps.label;\nconst secondaryLabelChange = (props, nextProps) =>\n props.secondaryLabel !== nextProps.secondaryLabel;\n\nconst diffByValueOrLocaleChange = (...args) =>\n some([\n valueChange(...args),\n labelChange(...args),\n secondaryLabelChange(...args)\n ]);\n\nexport default function withManualDiff(diffingFn = diffByValueOrLocaleChange) {\n return WrappedComponent => {\n const newComponent = shouldUpdate(diffingFn)(WrappedComponent);\n\n newComponent.displayName = `WithManualDiff(${getDisplayName(\n WrappedComponent\n )})`;\n return newComponent;\n };\n}\n","import withManualDiff from './withManualDiff';\n\nexport default withManualDiff;\n","import React, { Component } from 'react';\nimport { compose } from 'redux';\nimport { translate } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { Callout } from '../../components';\nimport { internetStatusSelector } from '../../reducers';\nimport { InternetStatus } from '../../../constants';\nimport {\n RECONNECTED_MESSAGE_TIMEOUT_MS,\n TIME_TILL_NETWORK_ERRORMSG_MS\n} from '../../../api/constants';\n\nconst Message = {\n NOTHING: 'NOTHING',\n INTERNET_DISCONNECTED: 'INTERNET_DISCONNECTED',\n INTERNET_RECONNECTED: 'INTERNET_RECONNECTED',\n SERVER_UNAVAILABLE: 'SERVER_UNAVAILABLE'\n};\n\nclass NetworkErrorCallout extends Component {\n state = {\n message: Message.NOTHING\n };\n\n isInternetDisconnected(nextProps) {\n return (\n this.props.internetStatus === InternetStatus.CONNECTED &&\n nextProps.internetStatus === InternetStatus.DISCONNECTED\n );\n }\n\n isServerUnavailable(nextProps) {\n return (\n this.props.internetStatus === InternetStatus.CONNECTED &&\n nextProps.internetStatus === InternetStatus.SERVER_UNAVAILABLE\n );\n }\n\n isWebsocketDisconnected(nextProps) {\n return (\n this.props.internetStatus === InternetStatus.CONNECTED &&\n nextProps.internetStatus === InternetStatus.WEBSOCKET_DISCONNECTED\n );\n }\n\n isInternetReconnected(nextProps) {\n return (\n this.props.internetStatus !== InternetStatus.CONNECTED &&\n nextProps.internetStatus === InternetStatus.CONNECTED\n );\n }\n\n waitUntilTimeoutThenShowMessage(message, timeout) {\n setTimeout(() => {\n if (this.props.internetStatus !== InternetStatus.CONNECTED) {\n this.setState({ message });\n }\n }, timeout);\n }\n\n showReconnectedThenHideAfterAWhile() {\n const { message } = this.state;\n\n if (\n message === Message.INTERNET_DISCONNECTED ||\n message === Message.SERVER_UNAVAILABLE\n ) {\n this.setState({ message: Message.INTERNET_RECONNECTED });\n\n setTimeout(() => {\n if (this.state.message === Message.INTERNET_RECONNECTED) {\n this.setState({ message: Message.NOTHING });\n }\n }, RECONNECTED_MESSAGE_TIMEOUT_MS);\n }\n }\n\n componentWillReceiveProps(nextProps) {\n const internetDisconnected = this.isInternetDisconnected(nextProps);\n const websocketDisconnected = this.isWebsocketDisconnected(nextProps);\n const internetReconnected = this.isInternetReconnected(nextProps);\n const serverIsUnavailable = this.isServerUnavailable(nextProps);\n\n if (internetReconnected) {\n this.showReconnectedThenHideAfterAWhile();\n } else if (internetDisconnected) {\n this.waitUntilTimeoutThenShowMessage(\n Message.INTERNET_DISCONNECTED,\n TIME_TILL_NETWORK_ERRORMSG_MS\n );\n } else if (serverIsUnavailable) {\n this.waitUntilTimeoutThenShowMessage(\n Message.SERVER_UNAVAILABLE,\n TIME_TILL_NETWORK_ERRORMSG_MS\n );\n } else if (websocketDisconnected) {\n this.waitUntilTimeoutThenShowMessage(\n Message.INTERNET_DISCONNECTED,\n TIME_TILL_NETWORK_ERRORMSG_MS\n );\n }\n }\n\n render() {\n const { t } = this.props;\n\n switch (this.state.message) {\n case Message.INTERNET_DISCONNECTED:\n return (\n {t('common/No Internet Connection')}\n );\n case Message.SERVER_UNAVAILABLE:\n return (\n {t('common/Server Unavailable')}\n );\n case Message.INTERNET_RECONNECTED:\n return {t('common/Reconnected')};\n case Message.NOTHING:\n default:\n return null;\n }\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n internetStatus: internetStatusSelector(state)\n };\n}\n\nexport default compose(\n translate(),\n connect(mapStateToProps)\n)(NetworkErrorCallout);\n","import NetworkErrorCallout from './NetworkErrorCallout';\n\nexport default NetworkErrorCallout;\n","import startsWith from 'lodash/startsWith';\nimport { stringify } from 'qs';\nimport * as Sentry from '@sentry/browser';\nimport { ChallengeIdeasSortBy } from './challenge/constants';\n\nfunction appendHash(path, hash) {\n if (!hash) {\n return path;\n }\n return `${path}#${hash}`;\n}\n\nconst paths = {\n root() {\n return '/';\n },\n profile() {\n return '/profile';\n },\n profileSettings() {\n return `${paths.profile()}/settings`;\n },\n profilePasswordSettings() {\n return `${paths.profileSettings()}/password`;\n },\n profileLanguageSettings() {\n return `${paths.profileSettings()}/language`;\n },\n profilePrivacySettings() {\n return `${paths.profileSettings()}/privacy`;\n },\n exportProfile() {\n return `${paths.profileSettings()}/export`;\n },\n deleteProfile() {\n return `${paths.profileSettings()}/delete`;\n },\n duePayments() {\n return '/due-payments';\n },\n feed(categoryId) {\n let path = '/feed';\n\n if (categoryId) {\n path += `/category/${categoryId}`;\n }\n\n return path;\n },\n feedDetails(challengeId, autostart = false) {\n let path = paths.feed();\n\n if (challengeId) {\n path += `/${challengeId}`;\n }\n\n if (autostart) {\n path += '?autostart=true';\n }\n\n if (startsWith(path, '//')) {\n Sentry.captureException(new Error('Invalid redirect target'));\n }\n\n return path;\n },\n ideation(challengeId) {\n return `/ideation/${challengeId}`;\n },\n results(challengeId, query = {}, hash) {\n let path = `/results/${challengeId}${stringify(\n { sortBy: ChallengeIdeasSortBy.CombinedScore, ...query },\n { addQueryPrefix: true }\n )}`;\n path = appendHash(path, hash);\n return path;\n },\n reveal(challengeId) {\n return `${paths.results(challengeId)}/reveal`;\n },\n createChallenge() {\n return '/challenge/create';\n },\n evaluation(challengeId) {\n return `/evaluation/${challengeId}`;\n },\n error(query) {\n return `/error${stringify(query, { addQueryPrefix: true })}`;\n },\n notifications(group) {\n let path = '/notifications';\n if (group) {\n path += `/${group}`;\n }\n return path;\n },\n generalAdmin() {\n return '/admin';\n },\n /**\n * @deprecated\n */\n companies(companyId) {\n let path = '/system-admin';\n\n if (companyId) {\n path += `/${companyId}`;\n }\n\n return path;\n },\n suggestions(challengeId) {\n return `/suggestions/${challengeId}`;\n },\n users(userId) {\n let path = '/admin/users';\n\n if (userId) {\n path += `/${userId}`;\n }\n\n return path;\n },\n usersRights() {\n return '/admin/user-rights';\n }\n};\n\nexport default paths;\n","import axios from 'axios';\nimport get from 'lodash/get';\nimport { useCallback } from 'react';\n\nconst baseQueryParams = {\n cx: process.env.REACT_APP_GOOGLE_SEARCH_ENGINE_ID,\n searchType: 'image',\n key: process.env.REACT_APP_GOOGLE_CUSTOM_SEARCH_API_KEY,\n safe: 'high'\n};\nconst PAGE_COUNT = 10;\n\nexport default function useGoogleImageSearch() {\n return useCallback((searchTerm, start = 0) => {\n return searchTerm\n ? axios\n .get('https://www.googleapis.com/customsearch/v1', {\n params: {\n ...baseQueryParams,\n q: searchTerm,\n start: start * PAGE_COUNT\n }\n })\n .then(response =>\n get(response, 'data.items', []).map(item => ({\n url: item.image.thumbnailLink\n }))\n )\n .catch(error => {\n throw new Error(error.response.data);\n })\n : Promise.resolve();\n }, []);\n}\n","import React, { useCallback, useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { translate } from 'react-i18next';\nimport ImageGallery from './ImageGallery';\nimport useGoogleImageSearch from './useGoogleImageSearch';\nimport useImageFetch from './useImageFetch';\nimport scss from './ImagePicker.module.scss';\n\nGoogleImageSearch.propTypes = {\n onSelect: PropTypes.func.isRequired\n};\nfunction GoogleImageSearch({ onSelect, t }) {\n const googleSearch = useGoogleImageSearch();\n const [searchTerm, setSearchTerm] = useState('');\n const resource = useMemo(\n () => ({\n fetch: pageIx => googleSearch(searchTerm, pageIx)\n }),\n [googleSearch, searchTerm]\n );\n const searchApi = useImageFetch(resource);\n const handleSubmit = useCallback(\n event => {\n if (event.keyCode === 13) {\n event.preventDefault(); // Prevent parent form submit when hitting enter in search field\n searchApi.reset();\n searchApi.fetch(searchApi.pageIx);\n }\n },\n [searchApi]\n );\n\n const handleNextPage = useCallback(() => {\n searchApi.fetch(searchApi.pageIx);\n }, [searchApi]);\n\n return (\n
    \n
    \n

    \n {t('common/imagePicker/external/title')}\n

    \n setSearchTerm(event.target.value)}\n onKeyDown={handleSubmit}\n placeholder={t('common/imagePicker/external/placeholder')}\n />\n

    \n \n {t('common/imagePicker/external/help')}\n \n

    \n
    \n \n
    \n );\n}\n\nexport default translate()(GoogleImageSearch);\n","import isFunction from 'lodash/isFunction';\nimport PropTypes from 'prop-types';\nimport React, { Component, cloneElement } from 'react';\nimport classNames from 'classnames';\nimport Button from '@bit/be-novative.kit.button';\nimport Popover from '../Popover';\nimport Icon from '../Icon';\nimport {\n formatLocalDateToUTCISOString as formatDate,\n formatUTCISOStringToLocalDate as formatLocal,\n parseLocalDateString as parseLocal\n} from '../../../utils/date';\nimport './DateTimeInput.css';\n\nclass DateTimeInput extends Component {\n static propTypes = {\n picker: PropTypes.node.isRequired,\n input: PropTypes.shape({\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n value: PropTypes.string\n }),\n meta: PropTypes.shape({\n active: PropTypes.bool\n })\n };\n\n static defaultProps = {\n showIcon: true\n };\n\n constructor(props) {\n super(props);\n this.state = {\n inputValue: formatLocal(props.input.value) || '',\n open: false\n };\n }\n\n componentWillReceiveProps(nextProps) {\n const { value: nextValue } = nextProps.input;\n const { value: prevValue } = this.props.input;\n\n if (nextValue && nextValue !== prevValue) {\n this.setState(() => ({\n inputValue: formatLocal(nextValue) || ''\n }));\n }\n\n if (\n this.props.meta.active !== nextProps.meta.active &&\n nextProps.meta.active\n ) {\n this.setState(() => ({\n open: nextProps.meta.active\n }));\n }\n }\n\n setInputRef = el => {\n this.input = el;\n };\n\n handleInputChange = e => {\n const { onChange } = this.props.input;\n const { value } = e.target;\n const localDate = parseLocal(value);\n\n if (localDate) {\n onChange(formatDate(localDate));\n } else {\n onChange(null);\n }\n\n this.setState({\n inputValue: value\n });\n };\n\n handleBlur = e => {\n const { input } = this.props;\n const { onBlur, value } = input;\n onBlur(value);\n };\n\n handleClose = () => {\n this.setState(() => ({\n open: false\n }));\n };\n\n handleIconClick = () => {\n this.focus();\n };\n\n focus() {\n if (isFunction(this.input.focus)) {\n this.input.focus();\n }\n }\n\n render() {\n const { input, meta, picker, showIcon } = this.props;\n const { onFocus, value, onChange, name, required } = input;\n const { active, touched, error, warning, submitFailed, submitting } = meta;\n const { inputValue, open } = this.state;\n\n const popover = cloneElement(picker, {\n value: value,\n ref: el => (this.picker = el),\n onBlur: this.handleBlur,\n onChange,\n onFocus,\n closeButton: picker.props.closeButton\n ? cloneElement(picker.props.closeButton, {\n onClick: this.handleClose\n })\n : null\n });\n\n const classes = classNames('DateTimeInput', {\n 'DateTimeInput--error': (touched || submitFailed || submitting) && error,\n 'DateTimeInput--warning':\n (touched || submitFailed || submitting) && warning,\n 'DateTimeInput--active': active\n });\n\n return (\n \n
    \n \n {showIcon && (\n
    \n \n
    \n )}\n
    \n \n );\n }\n}\n\nexport default DateTimeInput;\n","import DateTimeInput from './DateTimeInput';\n\nexport default DateTimeInput;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport Button from '@bit/be-novative.kit.button';\nimport Dropdown, { DropdownContent } from '../Dropdown';\nimport Icon from '../Icon';\nimport FadeTransition from '../FadeTransition';\nimport Responsive from '../Responsive';\nimport { SUPPORTED_UI_LANGUAGES_NATIVE } from '../../../constants';\n\nLanguageDropdown.propTypes = {\n currentLanguage: PropTypes.string.isRequired,\n availableLanguages: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired\n};\nexport default function LanguageDropdown({\n currentLanguage,\n availableLanguages,\n onChange\n}) {\n const currentLang = SUPPORTED_UI_LANGUAGES_NATIVE[currentLanguage];\n\n return (\n \n {({ handleSelect, handleToggle, isActive }) => (\n
    \n \n \n \n \n \n {currentLang}\n \n \n \n\n \n {isActive && (\n \n \n {availableLanguages.map(lang => (\n handleSelect(lang)}\n variant=\"secondary\"\n fillParent>\n {SUPPORTED_UI_LANGUAGES_NATIVE[lang]}\n \n ))}\n \n \n )}\n \n
    \n )}\n
    \n );\n}\n","import React, { memo } from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { translate } from 'react-i18next';\nimport { Field } from 'react-final-form';\nimport { getPlatformName } from '../../../utils/platform';\nimport { validateInvitedUsers } from '../../../utils/validation';\nimport { validateTeamMembers } from '../../utils/formValidation';\nimport UserTagsInputFormControl from '../../../challenge/containers/UserTagsInputFormControl';\n\nTeamInput.propTypes = {\n autoFocus: PropTypes.bool,\n disableDelete: PropTypes.bool,\n emailRegex: PropTypes.instanceOf(RegExp),\n customLabel: PropTypes.string,\n name: PropTypes.string.isRequired,\n minLength: PropTypes.number,\n t: PropTypes.func.isRequired\n};\nexport function TeamInput({\n autoFocus,\n emailRegex = /.*/,\n customLabel,\n minLength = 0,\n name,\n t,\n disableDelete,\n ...restOfProps\n}) {\n const minLengthNum = Number(minLength);\n const required = minLengthNum > 0;\n const hintLabel = required\n ? t('ideaConcept/prop/team/hint', {\n count: minLengthNum\n })\n : t('ideaConcept/prop/team/hintOptional');\n const secondaryLabel = required ? null : t('common/description/optional');\n const validation = required\n ? validateTeamMembers(t, {\n emailRegex,\n minMembers: minLengthNum\n })\n : validateInvitedUsers(t, emailRegex);\n\n return (\n \n );\n}\n\nexport default compose(\n memo,\n translate()\n)(TeamInput);\n","import TeamInput from './TeamInput';\n\nexport default TeamInput;\n","import * as Sentry from '@sentry/browser';\nimport appInsights from './monitoring';\n\n/**\n * Sets user details for telemetry tools\n * @param {string} userId - ID of logged in user\n * @param {string} email - Account email of logged in user\n */\n\nexport default function setUserContext(userId, email) {\n Sentry.setUser({ email, id: userId });\n appInsights.setAuthenticatedUserContext(userId, null, true);\n}\n","import toUpper from 'lodash/toUpper';\nimport appInsights from '.';\nimport { MonitoringSeverity } from './constants';\n\n/**\n * Logs a trace to Azure App Insights\n * @param {string} message - The trace message\n * @param {Object} [data] - Optional contextual data\n * @param {MonitoringSeverity} [severity] - Trace level. Defaults to Info.\n * @param {string} [category] - Message category, e.g. `'challenge'`, `'profile'`, etc.\n * @return {void}\n */\n\nexport default function trackTrace(\n message,\n data = {},\n severity = MonitoringSeverity.INFO,\n category = ''\n) {\n const trace = ['[UI]'];\n if (category) {\n trace.push(`[${toUpper(category)}]`);\n }\n trace.push(message);\n appInsights.trackTrace({\n message: trace.join(' '),\n properties: { ...data, timestamp: Date.now() },\n severityLevel: MonitoringSeverity[severity]\n });\n}\n","/**\n * Wraps a Redux reducer function so it's only called when the action satisfies some condition.\n * @param {(action: import('redux').Action) => boolean} evalFn - A predicate function that evaluates the current action and returns whether the reducer should be called with it.\n * @param {Function} reducerFn - A reducer function\n * @returns {Function} The reducer function wrapped with the filter logic\n */\nexport default function filteredReducerCall(evalFn, reducerFn) {\n const defaultState = reducerFn(undefined, {});\n return (state = defaultState, action) =>\n evalFn(action) ? reducerFn(state, action) : state;\n}\n","import filter from 'lodash/filter';\nimport find from 'lodash/find';\nimport flow from 'lodash/flow';\nimport get from 'lodash/get';\nimport getFp from 'lodash/fp/get';\nimport mapFp from 'lodash/fp/map';\nimport {\n createAsyncThunk,\n createSlice,\n createEntityAdapter,\n createSelector\n} from '@reduxjs/toolkit';\nimport { AsyncStatus } from '../../constants';\nimport { convertApiErrorToStatusCode } from '../../api/utils/apiError';\nimport handleApiCallAction from '../../utils/handleApiCallAction';\n\n/**\n * @typedef {Object} ActionMap\n * @property {Function} editComment - Calls the resource provided in `options.editFn` to edit a comment\n * @property {Function>} fetchComments - Calls the resource provided in `options.fetchFn` and stores the received comments in the state\n */\n\n/**\n * @typedef {Object} SelectorMap\n * @property {Function} getGroupCommentByConceptId - Returns a group comment (i.e. without a `user` prop) by its parent concept ID\n * @property {Function} getUserCommentForConcept - Returns an individual comment (i.e. with a `user` prop) by its parent concept ID\n */\n\n/**\n * Generates an RTK state slice for handling concept comments,\n * and allows customising some options to handle the minor differences between\n * endpoints and object shapes.\n * @param {Object} options\n * @param {Function} options.editFn - Callback for editing a comment\n * @param {Function>} options.fetchFn - Callback for fetching comments for an idea concept\n * @param {Function} options.entityPropNormalizerFn - Mapper function for normalizing unique prop names of items\n * @param {string} options.entityLabel - Entity name to be used in Redux action strings\n * @param {string} options.sliceName - Name and path for the generated state slice\n * @returns {{ slice: import('@reduxjs/toolkit').Slice, actions: ActionMap, selectors: SelectorMap }}\n */\nexport default function commentSliceFactory({\n editFn,\n fetchFn,\n entityPropNormalizerFn,\n entityLabel,\n sliceName\n}) {\n const createCommentUuid = (conceptId, authorId = 'group') =>\n `${conceptId}_${authorId}`;\n\n const fetchComments = createAsyncThunk(\n `fetch${entityLabel}s`,\n handleApiCallAction(fetchFn)\n );\n\n const editComment = createAsyncThunk(\n `edit${entityLabel}`,\n async (args, thunkApi) => {\n try {\n const { authorId, conceptId, isGroupComment, text } = args;\n await editFn(conceptId, text, isGroupComment);\n return { conceptId, authorId, text };\n } catch (error) {\n return thunkApi.rejectWithValue({\n code: convertApiErrorToStatusCode(),\n error\n });\n }\n }\n );\n\n const commentsAdapter = createEntityAdapter({\n selectId: comment => comment.commentId\n });\n\n const initialState = {\n entities: commentsAdapter.getInitialState(),\n status: AsyncStatus.Idle,\n error: null\n };\n\n const commentsSlice = createSlice({\n name: sliceName,\n initialState,\n extraReducers: builder =>\n builder\n .addCase(fetchComments.pending, state => {\n state.status = AsyncStatus.Loading;\n state.error = null;\n })\n .addCase(fetchComments.fulfilled, (state, action) => {\n const conceptId = action.meta.arg;\n state.entities = commentsAdapter.upsertMany(\n state.entities,\n flow(\n mapFp(comment => ({\n ...comment,\n ideaConceptId: conceptId,\n commentId: createCommentUuid(\n conceptId,\n get(comment, 'user.userId')\n )\n })),\n mapFp(entityPropNormalizerFn)\n )(action.payload)\n );\n state.status = AsyncStatus.Succeeded;\n })\n .addCase(fetchComments.rejected, (state, action) => {\n state.status = AsyncStatus.Failed;\n state.error = action.error;\n })\n });\n\n const getSlice = getFp(sliceName);\n const getCommentMap = flow(\n getSlice,\n getFp('entities.entities')\n );\n\n const getCommentsByConceptId = createSelector(\n getCommentMap,\n (state, conceptId) => conceptId,\n (commentMap, conceptId) =>\n filter(commentMap, comment => comment.ideaConceptId === conceptId)\n );\n\n const hasUserInfo = obj => obj.user !== null;\n\n const getUserCommentForConcept = createSelector(\n getCommentMap,\n (state, conceptId) => conceptId,\n (state, conceptId, userId) => userId,\n (commentMap, conceptId, userId) =>\n find(\n commentMap,\n comment =>\n comment.ideaConceptId === conceptId &&\n get(comment, 'user.userId') === userId\n )\n );\n\n const getGroupCommentByConceptId = createSelector(\n (state, conceptId) => getCommentsByConceptId(state, conceptId),\n comments => find(comments, comment => !hasUserInfo(comment))\n );\n\n return {\n slice: commentsSlice,\n actions: {\n fetchComments,\n editComment\n },\n selectors: {\n getCommentsByConceptId,\n getGroupCommentByConceptId,\n getUserCommentForConcept\n }\n };\n}\n","// common ui\nexport const ALERT_TOAST = 'alertToast';\nexport const ONBOARDING_LAYER = 'onboardingLayer';\n\n// login page\nexport const LOGIN_SUBMIT_BTN = 'submit';\n\n// feed page\nexport const FEEDCARD_PRIMARY_CTA = 'feedPrimaryCTA';\nexport const FEEDCARD_SECONDARY_CTA = 'feedSecondaryCTA';\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { SortDirection } from '../../../constants';\n\nfunction SortIndicator({ sortDirection, style }) {\n return (\n \n {sortDirection === SortDirection.ASC && }\n {sortDirection === SortDirection.DESC && }\n {!sortDirection && (\n \n \n \n \n )}\n \n );\n}\n\nSortIndicator.propTypes = {\n sortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC])\n};\n\nexport default SortIndicator;\n","/* eslint jsx-a11y/anchor-is-valid: 0 */\nimport React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport VisibilitySensor from 'react-visibility-sensor';\nimport { translate } from 'react-i18next';\nimport Spinner from '@bit/be-novative.kit.spinner';\nimport Callout from '../../components/Callout';\nimport { getUrl } from '../../selectors/images';\nimport scss from './ImagePicker.module.scss';\n\nImageGallery.propTypes = {\n images: PropTypes.arrayOf(\n PropTypes.shape({\n url: PropTypes.string\n })\n ),\n onImageSelect: PropTypes.func,\n onNextPage: PropTypes.func,\n t: PropTypes.func.isRequired\n};\nexport function ImageGallery({\n hasError,\n images = [],\n isLoading,\n onImageSelect,\n onNextPage = () => {},\n onSelect,\n searchResource,\n t,\n ...rest\n}) {\n const onScrollEnd = useCallback(\n isEndOfPage => {\n if (isEndOfPage) {\n onNextPage();\n }\n },\n [onNextPage]\n );\n return (\n
    \n
    \n {/* Google search results have identical URLs that can't be used as keys */}\n {images.map((image, ix) => (\n \n ))}\n
    \n {images.length > 0 && (\n \n
    \n \n )}\n {isLoading && }\n {!isLoading && hasError && (\n \n {t('common/imagePicker/error/imageLoadFailed')}\n \n )}\n
    \n );\n}\n\nexport default translate()(ImageGallery);\n","import { useCallback, useMemo, useState } from 'react';\n\nexport default function useImageFetch(resource) {\n if (typeof resource.fetch !== 'function') {\n throw new Error('resource.fetch must be a function');\n }\n const [images, setImages] = useState([]);\n const [pageIx, setPageIx] = useState(0);\n const [isLoading, setIsLoading] = useState(false);\n const [hasError, setHasError] = useState(false);\n const handleFetch = useCallback(async () => {\n try {\n setIsLoading(true);\n setHasError(false);\n const result = await resource.fetch(pageIx);\n setImages(prevImages => prevImages.concat(result));\n setIsLoading(false);\n setPageIx(ix => ix + 1);\n } catch (error) {\n setIsLoading(false);\n setHasError(true);\n }\n }, [pageIx, resource]);\n\n return useMemo(\n () => ({\n images,\n pageIx,\n isLoading,\n hasError,\n fetch: handleFetch,\n reset: () => setImages([])\n }),\n [images, pageIx, isLoading, hasError, handleFetch]\n );\n}\n","/* eslint-disable */\nimport React, { useState, useCallback, useEffect, useRef } from 'react';\nimport get from 'lodash/get';\nimport isEqual from 'lodash/isEqual';\nimport size from 'lodash/size';\nimport zipObject from 'lodash/zipObject';\nimport * as Sentry from '@sentry/browser';\nimport useInterval from '../../../common/hooks/useInterval';\nimport { getPlatformName } from '../../../utils/platform';\nimport addBreadcrumb, { Severity } from '../../../telemetry/addBreadcrumb';\nimport {\n FEATURE_FLAG_FIRST_LOAD_ERROR_TIMEOUT_MS,\n FEATURE_FLAG_FIRST_LOAD_TIMEOUT_MS,\n FEATURE_FLAG_UPDATE_INTERVAL_MS\n} from '../../config';\nimport { getAllFeatureFlagKeys, getFeatureFlagAsync } from '../../client';\nimport BootstrapSpinner from '../../../common/components/BootstrapSpinner';\n\nconst targetingData = { custom: { platformName: getPlatformName() } };\n\nfunction FeatureFlagProvider({ children }) {\n const [isLoadingSlowly, setIsLoadingSlowly] = useState(false);\n const slowErrorReportTimerRef = useRef();\n\n const [hasReportedError, setHasReportedError] = useState(false);\n const slowLoadTimerRef = useRef();\n const reportLoadError = useCallback(\n function reportLoadError() {\n if (hasReportedError) {\n addBreadcrumb('Feature flags not loaded within time limit', {\n category: 'bootstrap',\n level: Severity.Critical\n });\n Sentry.captureException();\n setHasReportedError(true);\n }\n },\n [hasReportedError]\n );\n\n const [flagKeys, setFlagKeys] = useState([]);\n const [flags, setFlags] = useState({});\n const hasLoadedFlags = size(flags) > 0;\n const getFlagKeys = useCallback(() => getAllFeatureFlagKeys(setFlagKeys), []);\n\n useEffect(\n function beginInitialLoad() {\n const isLoadingForFirstTime = !hasLoadedFlags;\n\n if (isLoadingForFirstTime) {\n slowLoadTimerRef.current = setTimeout(() => {\n setIsLoadingSlowly(true);\n }, FEATURE_FLAG_FIRST_LOAD_TIMEOUT_MS);\n\n slowErrorReportTimerRef.current = setTimeout(\n reportLoadError,\n FEATURE_FLAG_FIRST_LOAD_ERROR_TIMEOUT_MS\n );\n\n getFlagKeys();\n } else {\n clearTimeout(slowLoadTimerRef.current);\n clearTimeout(slowErrorReportTimerRef.current);\n }\n },\n [hasLoadedFlags, flagKeys, getFlagKeys, reportLoadError]\n );\n\n useInterval(getFlagKeys, FEATURE_FLAG_UPDATE_INTERVAL_MS);\n\n useEffect(\n function syncFlags() {\n async function sync() {\n const latestValues = await Promise.all(\n flagKeys.map(key => getFeatureFlagAsync(key, null, targetingData), {})\n );\n const latestFlags = zipObject(flagKeys, latestValues);\n\n if (!isEqual(flags, latestFlags)) {\n setFlags(latestFlags);\n }\n }\n sync();\n },\n [flags, flagKeys]\n );\n\n const getter = useCallback(flagId => get(flags, flagId, null), [flags]);\n\n const showSpinner = !hasLoadedFlags && isLoadingSlowly;\n\n return (\n \n {hasLoadedFlags && children}\n {showSpinner && }\n \n );\n}\n\nexport const FeatureFlagContext = React.createContext(() => null);\n\nexport default FeatureFlagProvider;\n","export const FEATURE_FLAG_FIRST_LOAD_TIMEOUT_MS = 500;\nexport const FEATURE_FLAG_FIRST_LOAD_ERROR_TIMEOUT_MS = 5000;\nexport const FEATURE_FLAG_UPDATE_INTERVAL_MS = 60000;\n","import { useEffect, useRef } from 'react';\n\n// @see https://overreacted.io/making-setinterval-declarative-with-react-hooks/\nexport default function useInterval(callback, delay) {\n const savedCallback = useRef();\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval.\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n let id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n}\n","import FeatureFlagProvider, { FeatureFlagContext } from './FeatureFlagProvider';\n\nexport { FeatureFlagContext };\nexport default FeatureFlagProvider;\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { translate, Trans } from 'react-i18next';\nimport { DIAGNOSTICS_PATH } from '../../../constants';\nimport Button from '@bit/be-novative.kit.button';\nimport CircleSpinner from '../CircleSpinner';\nimport FullScreen from '../FullScreen';\nimport scss from './BootstrapSpinner.module.scss';\n\nfunction BootstrapSpinner({ t, timeoutMs = 5000 }) {\n const [showWarning, setShowWarning] = useState(false);\n useEffect(\n function launchTimer() {\n let timer;\n if (!showWarning && !timer && timeoutMs > 0) {\n timer = setTimeout(() => {\n setShowWarning(true);\n }, timeoutMs);\n }\n return () => {\n clearTimeout(timer);\n };\n },\n [showWarning, timeoutMs]\n );\n\n const handleReload = useCallback(() => {\n if (window) {\n window.location.reload();\n }\n }, []);\n\n const diagUrl =\n window &&\n `${window.location.protocol}//${window.location.hostname}/${DIAGNOSTICS_PATH}`;\n\n return (\n \n
    \n
    \n \n {showWarning && (\n
    \n

    {t('bootstrap/warning')}

    \n

    \n \n \n diagPage\n \n \n \n

    \n
    \n )}\n
    \n
    \n
    \n );\n}\n\nexport default translate()(BootstrapSpinner);\n","import React, { Component } from 'react';\nimport { Input } from '../';\n\nconst protocolRegExp = /^https?:\\/\\//;\n\nclass UrlInput extends Component {\n addProtocol(value) {\n return `http://${value}`;\n }\n\n handleChange = event => {\n const { onChange } = this.props.input;\n const value = event.target.value || '';\n if (value.length < 8 || protocolRegExp.test(value)) {\n onChange(value);\n } else {\n onChange(this.addProtocol(value));\n }\n };\n\n handleBlur = event => {\n const { onBlur } = this.props.input;\n const value = event.target.value || '';\n if (!value || protocolRegExp.test(value)) {\n onBlur(value);\n } else {\n onBlur(this.addProtocol(value));\n }\n };\n\n render() {\n const { input, ...rest } = this.props;\n return (\n \n );\n }\n}\n\nexport default UrlInput;\n","import UrlInput from './UrlInput';\n\nexport default UrlInput;\n","import flow from 'lodash/flow';\nimport linkify from 'linkifyjs/html';\nimport { quotesFromSlantedToDouble } from '@bit/be-novative.kit.sanitize-for-json';\n\nexport const LINKIFY_CONFIG = {\n attributes: {\n rel: 'nofollow noopener'\n },\n className: 'inline-link',\n defaultProtocol: 'https',\n format: {\n url: val => (val.length > 50 ? val.slice(0, 50) + '…' : val)\n },\n ignoreTags: ['script', 'style'],\n target: '_blank',\n validate: true\n};\n\n// @see https://linkify.js.org/docs/\nexport default function linkifyHtml(htmlString, options = LINKIFY_CONFIG) {\n if (typeof htmlString !== 'string') {\n return;\n }\n\n return flow(\n str => linkify(str, options),\n quotesFromSlantedToDouble\n )(htmlString);\n}\n\nwindow.linkify = linkify;\n","import React, { memo } from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'classnames';\nimport SanitizedHTML from 'react-sanitized-html';\nimport linkifyHtml from '../../../utils/linkify';\nimport scss from './LinkifiedSafeHtml.module.scss';\n\nconst ALLOWED_ATTR = { a: ['href', 'rel', 'class', 'target', 'id'] };\n\nLinkifiedSafeHtml.propTypes = {\n html: PropTypes.string\n};\n\nfunction LinkifiedSafeHtml({ html, className, ...rest }) {\n if (typeof html !== 'string') {\n return null;\n }\n\n return (\n \n );\n}\n\nexport default memo(LinkifiedSafeHtml);\n","import React from 'react';\nimport get from 'lodash/get';\nimport isFunction from 'lodash/isFunction';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Editor, EditorState, ContentState } from 'draft-js';\nimport { markOverflow } from '@bit/be-novative.kit.richtext-utils';\nimport './Textarea.css';\n\nconst CUSTOM_STYLE_MAP = {\n OVERFLOW: {\n background: '#f7d7d7'\n }\n};\n\nconst createEditorState = props => {\n return markOverflow(\n EditorState.createWithContent(\n ContentState.createFromText(props.input.value)\n ),\n props.maxLength,\n 'OVERFLOW'\n );\n};\n\nconst toPlainText = editorState => {\n const contentState = editorState.getCurrentContent();\n return contentState.getPlainText();\n};\n\nclass Textarea extends React.Component {\n static propTypes = {\n autoFocus: PropTypes.bool,\n input: PropTypes.object,\n meta: PropTypes.object,\n placeholder: PropTypes.string,\n minRows: PropTypes.number,\n maxLength: PropTypes.number,\n counter: PropTypes.node,\n onEnter: PropTypes.func,\n onEscape: PropTypes.func\n };\n\n static defaultProps = {\n meta: {},\n minRows: 3,\n maxLength: Infinity\n };\n\n state = {\n editorState: createEditorState(this.props)\n };\n\n componentDidMount() {\n const { inputRef, autoFocus } = this.props;\n const ref = inputRef || this.editor;\n if (autoFocus && isFunction(get(ref, 'focus'))) {\n ref.focus();\n }\n }\n\n componentWillReceiveProps(nextProps) {\n if (toPlainText(this.state.editorState) !== nextProps.input.value) {\n this.setState(() => ({\n editorState: createEditorState(nextProps)\n }));\n }\n }\n\n setEditorRef = el => {\n this.editor = el;\n };\n\n focus = () => {\n const { editorState } = this.state;\n const { onFocus = () => {} } = this.props.input;\n const selection = editorState.getSelection();\n if (!selection.getHasFocus()) {\n onFocus();\n this.setState(({ editorState }) => ({\n editorState: EditorState.moveFocusToEnd(editorState)\n }));\n }\n };\n\n handleChange = editorState => {\n const plainText = toPlainText(editorState);\n const { value, onChange } = this.props.input;\n const isValueChanged = plainText !== value;\n const shouldMarkOverflow =\n isValueChanged && value.length > this.props.maxLength;\n\n this.setState(\n (prevState, { maxLength }) => ({\n editorState: shouldMarkOverflow\n ? markOverflow(editorState, maxLength, 'OVERFLOW')\n : editorState\n }),\n () => {\n if (isFunction(onChange) && isValueChanged) {\n onChange(plainText);\n }\n }\n );\n };\n\n handleBlur = () => {\n const { value, onBlur = () => {} } = this.props.input;\n onBlur(value);\n };\n\n handleReturn = event => {\n const { onEnter } = this.props;\n if (onEnter && !event.shiftKey) {\n onEnter(event);\n return 'handled';\n }\n return 'not-handled';\n };\n\n render() {\n const {\n meta,\n input,\n inputRef,\n readOnly,\n placeholder,\n className,\n minRows,\n onEscape\n } = this.props;\n const { editorState } = this.state;\n const { onFocus } = input;\n const editorStyle = {\n minHeight: `${minRows * 1.2 + 0.6}em`\n };\n const { active, dirty, error, submitFailed } = meta;\n const classes = classNames('Textarea', className, {\n 'Textarea--active': active,\n 'Textarea--error': (dirty || submitFailed) && error\n });\n const selection = editorState.getSelection();\n\n return (\n \n \n
    \n );\n }\n}\n\nexport default Textarea;\n","import React from 'react';\nimport { translate } from 'react-i18next';\nimport Button from '@bit/be-novative.kit.button';\nimport Dot from '../../components/Dot';\nimport Grid from '../../components/Grid';\nimport './OnboardingTipPopover.css';\n\nfunction OnboardingTipPopover({\n onNextTip,\n onSkipTips,\n skipLabel,\n nextLabel,\n finalLabel,\n t,\n tip,\n tips\n}) {\n const title = t(`onboarding/tip-${tip}-title`).trim();\n const description = t(`onboarding/tip-${tip}-description`);\n const activeIndex = tips.indexOf(tip);\n const isLastTip = activeIndex + 1 === tips.length;\n\n return (\n
    \n {title && (\n
    {title}
    \n )}\n

    {description}

    \n
    \n \n \n \n \n \n {tips.map((tip, index) => (\n activeIndex} key={tip} />\n ))}\n \n \n \n \n \n \n \n
    \n
    \n );\n}\n\nexport { OnboardingTipPopover };\nexport default translate()(OnboardingTipPopover);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport get from 'lodash/get';\nimport invariant from 'invariant';\nimport isPlainObject from 'lodash/isPlainObject';\nimport isNumber from 'lodash/isNumber';\nimport without from 'lodash/without';\nimport { connect } from 'react-redux';\nimport cn from 'classnames';\nimport { ONBOARDING_LAYER } from '../../../constants/e2e';\nimport Backdrop from '../../components/Backdrop';\nimport Popover from '../../components/Popover';\nimport { updateOnboarding, skipOnboarding } from '../../actions';\nimport { getDisplayName } from '../../../utils';\nimport OnboardingTipPopover from './OnboardingTipPopover';\nimport {\n isOnboardingTipActiveSelectorFactory,\n onboardingTipsSelector\n} from '../../reducers';\n\nconst popoverModifiers = {\n preventOverflow: {\n boundariesElement: 'viewport'\n }\n};\n\nconst popoverStyle = {\n width: 300\n};\n\nconst onboardingHighlightCssClass = 'onboarding-highlight';\n\nconst withOnboardingTip = options => WrappedComponent => {\n invariant(isPlainObject(options), 'options must be an object');\n invariant(isNumber(options.tip), 'options.tip must be a number');\n const {\n tip,\n skipLabel = t => t('onboarding/Skip intro'),\n nextLabel = t => t('onboarding/Next tip'),\n finalLabel = t => t('onboarding/OK'),\n singleton = true,\n ...popoverProps\n } = options;\n const isTipActiveSelector = isOnboardingTipActiveSelectorFactory(tip);\n\n class WithOnboardingTip extends Component {\n static displayName = `withOnboardingTip(${getDisplayName(\n WrappedComponent\n )})`;\n\n static propTypes = {\n isTipActive: PropTypes.bool,\n onNextTip: PropTypes.func.isRequired,\n onSkipTips: PropTypes.func.isRequired,\n tips: PropTypes.arrayOf(PropTypes.number)\n };\n\n static defaultProps = {\n isTipActive: false,\n tips: []\n };\n\n static instances = [];\n\n constructor(props) {\n super(props);\n WithOnboardingTip.instances = [...WithOnboardingTip.instances, this];\n }\n\n componentWillUnmount() {\n const shouldUpdate = WithOnboardingTip.instances[0] === this;\n WithOnboardingTip.instances = without(WithOnboardingTip.instances, this);\n if (WithOnboardingTip.instances[0] && shouldUpdate) {\n WithOnboardingTip.instances[0].forceUpdate();\n }\n }\n\n handleSkipTips = () => {\n const { onSkipTips, tips } = this.props;\n onSkipTips(tips);\n };\n\n render() {\n const { isTipActive, onNextTip, onSkipTips, tips, ...rest } = this.props;\n const className = get(this, 'props.className');\n const wrappedClassName = isTipActive\n ? cn(className, onboardingHighlightCssClass)\n : className;\n const popover = (\n \n );\n\n // allow a single instance only\n if (singleton && WithOnboardingTip.instances[0] !== this) {\n return ;\n }\n\n return (\n \n \n \n \n \n \n );\n }\n }\n\n function mapStateToProps(state) {\n return {\n isTipActive: isTipActiveSelector(state),\n tips: onboardingTipsSelector(state)\n };\n }\n\n const mapDispatchToProps = {\n onNextTip: () => updateOnboarding(tip),\n onSkipTips: () => skipOnboarding()\n };\n\n return connect(\n mapStateToProps,\n mapDispatchToProps\n )(WithOnboardingTip);\n};\n\nexport default withOnboardingTip;\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { getDisplayName } from '../../../utils';\nimport { enterOnboarding, leaveOnboarding } from '../../actions';\n\nconst withOnboardingManager = tips => WrappedComponent => {\n class WithOnboardingManager extends Component {\n static displayName = `withOnboardingManager${getDisplayName(\n WrappedComponent\n )}`;\n\n componentDidMount() {\n this.props.enterOnboarding(tips);\n }\n\n componentWillUnmount() {\n this.props.leaveOnboarding();\n }\n\n render() {\n return ;\n }\n }\n\n return connect(null, { enterOnboarding, leaveOnboarding })(\n WithOnboardingManager\n );\n};\n\nexport default withOnboardingManager;\n","import withOnboardingTip from './withOnboardingTip';\nimport withOnboardingManager from './withOnboardingManager';\n\nexport { withOnboardingManager };\nexport default withOnboardingTip;\n","import { CanvasContentRef } from '../constants';\n\nconst splitRef = string => {\n try {\n return string.split(CanvasContentRef.Separator);\n } catch (error) {\n return [];\n }\n};\n\nconst getConceptIdFromRef = ideaTextWithRef => {\n const [, refId] = splitRef(String(ideaTextWithRef));\n return refId || null;\n};\n\nconst isConceptRef = string => {\n const [refType] = splitRef(string);\n return refType === CanvasContentRef.Concept;\n};\n\nconst createConceptRef = conceptId =>\n CanvasContentRef.Concept + CanvasContentRef.Separator + conceptId;\n\nexport { createConceptRef, getConceptIdFromRef, isConceptRef };\n","//\n// Regular Expression for URL validation\n//\n// Author: Diego Perini\n// Updated: 2010/12/05\n// License: MIT\n//\n// Copyright (c) 2010-2013 Diego Perini (http://www.iport.it)\n//\n// Permission is hereby granted, free of charge, to any person\n// obtaining a copy of this software and associated documentation\n// files (the \"Software\"), to deal in the Software without\n// restriction, including without limitation the rights to use,\n// copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the\n// Software is furnished to do so, subject to the following\n// conditions:\n//\n// The above copyright notice and this permission notice shall be\n// included in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n// OTHER DEALINGS IN THE SOFTWARE.\n//\n// the regular expression composed & commented\n// could be easily tweaked for RFC compliance,\n// it was expressly modified to fit & satisfy\n// these test for an URL shortener:\n//\n// http://mathiasbynens.be/demo/url-regex\n//\n// Notes on possible differences from a standard/generic validation:\n//\n// - utf-8 char class take in consideration the full Unicode range\n// - TLDs have been made mandatory so single names like \"localhost\" fails\n// - protocols have been restricted to ftp, http and https only as requested\n//\n// Changes:\n//\n// - IP address dotted notation validation, range: 1.0.0.0 - 223.255.255.255\n// first and last IP address of each class is considered invalid\n// (since they are broadcast/network addresses)\n//\n// - Added exclusion of private, reserved and/or local networks ranges\n//\n// - Made starting path slash optional (http://example.com?foo=bar)\n//\n// - Allow a dot (.) at the end of hostnames (http://example.com.)\n//\n// Compressed one-line versions:\n//\n// Javascript version\n//\n// /^(?:(?:https?|ftp):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))\\.?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/i\n//\n// PHP version\n//\n// _^(?:(?:https?|ftp)://)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\x{00a1}-\\x{ffff}0-9]-*)*[a-z\\x{00a1}-\\x{ffff}0-9]+)(?:\\.(?:[a-z\\x{00a1}-\\x{ffff}0-9]-*)*[a-z\\x{00a1}-\\x{ffff}0-9]+)*(?:\\.(?:[a-z\\x{00a1}-\\x{ffff}]{2,}))\\.?)(?::\\d{2,5})?(?:[/?#]\\S*)?$_iuS\n//\nvar urlRegex = new RegExp(\n '^' +\n // protocol identifier\n '(?:(?:https?|ftp)://)' +\n // user:pass authentication\n '(?:\\\\S+(?::\\\\S*)?@)?' +\n '(?:' +\n // IP address exclusion\n // private & local networks\n '(?!(?:10|127)(?:\\\\.\\\\d{1,3}){3})' +\n '(?!(?:169\\\\.254|192\\\\.168)(?:\\\\.\\\\d{1,3}){2})' +\n '(?!172\\\\.(?:1[6-9]|2\\\\d|3[0-1])(?:\\\\.\\\\d{1,3}){2})' +\n // IP address dotted notation octets\n // excludes loopback network 0.0.0.0\n // excludes reserved space >= 224.0.0.0\n // excludes network & broacast addresses\n // (first & last IP address of each class)\n '(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])' +\n '(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}' +\n '(?:\\\\.(?:[1-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))' +\n '|' +\n // host name\n '(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)' +\n // domain name\n '(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*' +\n // TLD identifier\n '(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))' +\n // TLD may end with dot\n '\\\\.?' +\n ')' +\n // port number\n '(?::\\\\d{2,5})?' +\n // resource path\n '(?:[/?#]\\\\S*)?' +\n '$',\n 'i'\n);\n\nexport default urlRegex;\n","import get from 'lodash/get';\nimport includes from 'lodash/fp/includes';\nimport isArray from 'lodash/isArray';\nimport isEmpty from 'lodash/isEmpty';\nimport isFunction from 'lodash/isFunction';\nimport isObject from 'lodash/isObject';\nimport isString from 'lodash/isString';\nimport size from 'lodash/size';\nimport some from 'lodash/some';\nimport trim from 'lodash/trim';\nimport urlRegex from './regex/url';\nimport invariant from 'invariant';\nimport moment from 'moment';\nimport { isEditorState } from '@bit/be-novative.kit.richtext-utils';\nimport { userConsentKeys } from '../constants';\nimport {\n ChallengeVisiblity,\n CHALLENGE_FORM_FIELDS\n} from '../challenge/constants';\nimport { CHALLENGE_TITLE_MAXLENGTH } from '../challenge/constants';\nimport { getEmailFromInviteeDisplayName } from './payloadUtils/invitee';\nimport { getUserId } from '../common/getters/users';\nimport { getCloseTime, getStartTime } from '../common/selectors/challenges';\n\nexport const EMAIL_VALIDATION_REGEX = /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/;\nexport const HASHTAG_REGEX = /^#?[A-Za-z0-9]*$/;\nexport const PHONE_NUMBER_REGEX = /^\\+?\\d{1,20}$/;\n\nconst REQUIRED = 'common/Required';\nconst INVALID = 'common/Invalid';\nconst INVALID_USER_INVITE = 'validationErrors/userAutosuggest/regexFail';\n\nexport function composeValidators(...validators) {\n return (...args) =>\n validators.reduce(\n (error, validator) => error || validator(...args),\n undefined\n );\n}\n\nexport function renderError(t, defaultError) {\n if (isString(t)) {\n return t;\n } else if (isFunction(t)) {\n return t(defaultError);\n } else {\n throw Error('The t argument must be a string or a function');\n }\n}\n\nfunction getLength(value) {\n if (isString(value)) {\n return value.length;\n }\n\n if (isEditorState(value)) {\n const contentState = value.getCurrentContent();\n return contentState.getPlainText().length;\n }\n\n return 0;\n}\n\nexport function required(t) {\n return value => {\n const isEmptyObject = isObject(value) && isEmpty(value);\n const isEmptyString = isString(value) && isEmpty(trim(value));\n const isEmptyRichText = isEditorState(value) && !getLength(value);\n\n if (\n isEmptyObject ||\n isEmptyString ||\n isEmptyRichText ||\n value === undefined ||\n value === false ||\n value === null\n ) {\n return renderError(t, REQUIRED);\n }\n };\n}\n\nexport function email(t) {\n return value => {\n if (value && !EMAIL_VALIDATION_REGEX.test(value)) {\n return renderError(t, 'common/user/formFields/email/validation/invalid');\n }\n };\n}\n\nexport function phoneNumber(t) {\n return value => {\n if (value && !PHONE_NUMBER_REGEX.test(value)) {\n return renderError(t, 'common/Invalid phone number');\n }\n };\n}\n\nexport function validatePasswordWithPolicy(\n password,\n policy = {\n minLength: 6,\n minLowercase: 1,\n minUppercase: 1,\n minNumber: 1,\n minSpecChars: 1\n }\n) {\n invariant(isString(password), 'Password must be a string');\n const longEnough = size(password) >= policy.minLength;\n const matchesLower =\n (password.match(/[a-z]/g) || []).length >= policy.minLowercase;\n const matchesUpper =\n (password.match(/[A-Z]/g) || []).length >= policy.minUppercase;\n const matchesNumeric =\n (password.match(/\\d/g) || []).length >= policy.minNumber;\n const matchesSpecChars =\n (password.match(/[^a-zA-Z0-9]/g) || []).length >= policy.minSpecChars;\n return {\n matchesLower,\n matchesUpper,\n matchesNumeric,\n matchesSpecChars,\n longEnough\n };\n}\n\nexport function password(t, policy) {\n return value => {\n if (!value) {\n return;\n }\n const passwordQuality = validatePasswordWithPolicy(value, policy);\n if (some(passwordQuality, criterionFulfilled => !criterionFulfilled)) {\n return renderError(\n t,\n 'common/user/formFields/password/validation/complexity'\n );\n }\n };\n}\n\nexport function maxlength(t, maxlength) {\n return value => {\n const length = getLength(value);\n const remainingChars = maxlength - length;\n\n if (remainingChars < 0) {\n return isString(t)\n ? t\n : t('common/You have exceeded the {{maxlength}} character limit.', {\n maxlength\n });\n }\n };\n}\n\nexport function url(t) {\n return value => {\n if (value && !urlRegex.test(value)) {\n return renderError(t, 'common/Invalid URL');\n }\n };\n}\n\n// TODO necessary?\n// see https://tools.ietf.org/html/rfc1034\nexport function domainName(t) {\n return value => {\n if (value && !/[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?/.test(value)) {\n return renderError(t, 'common/Invalid domain name');\n }\n };\n}\n\nexport function positiveInt(t) {\n return value => {\n if (value && !/^\\d+$/.test(value)) {\n return renderError(t, 'common/Invalid number');\n }\n };\n}\n\n// TODO write test against valid substrings despite invalid characters\n// see https://tools.ietf.org/html/rfc1034\nexport function subdomainName(t) {\n return value => {\n if (\n value &&\n !/^[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?$/.test(value)\n ) {\n return renderError(t, 'common/Invalid subdomain');\n }\n };\n}\n\nexport function isConsentCheckboxRequired(sectionName) {\n return sectionName === userConsentKeys.ACCOUNT_MANAGEMENT_CONSENT;\n}\n\n// Challenges\n// TODO move to challenge folder\n\nfunction hasRangeOrCustomDate(t) {\n return (value, allValues) => {\n if (!allValues[CHALLENGE_FORM_FIELDS.DURATION_PRESET] && !value) {\n return t(REQUIRED);\n } else if (isArray(value) && size(value) < 2) {\n return t('validationErrors/dateRange/stub');\n }\n };\n}\n\nfunction hasDateRangeCorrectOrder(t) {\n return value => {\n if (!isArray(value)) {\n return;\n }\n const [from, to] = value;\n if (moment(to).isBefore(moment(from))) {\n return t('validationErrors/dateRange/order');\n }\n };\n}\n\nfunction doesRangeEndInPast(t) {\n return value => {\n if (!isArray(value)) {\n return;\n }\n const to = value[1];\n const now = moment();\n if (moment(to).isBefore(now)) {\n return t('validationErrors/dateRange/past');\n }\n };\n}\n\nexport function validateCustomDuration(t) {\n return composeValidators(\n hasRangeOrCustomDate(t),\n doesRangeEndInPast(t),\n hasDateRangeCorrectOrder(t)\n );\n}\n\nexport function validateCustomDurationSingleInput(t) {\n return (_, allValues) => {\n const range = [getStartTime(allValues), getCloseTime(allValues)];\n return validateCustomDuration(t)(range, allValues);\n };\n}\n\nexport function languageChoice(t, languages) {\n return (_, allValues) => {\n if (allValues.language && !includes(allValues.language, languages)) {\n return t(INVALID);\n }\n };\n}\n\nexport function requiredUser(t) {\n return value => {\n if (isEmpty(getUserId(value))) {\n return t(REQUIRED);\n }\n };\n}\n\nexport function isUserInviteRequired(t) {\n return (value, allValues) => {\n if (allValues.visibility === ChallengeVisiblity.PRIVATE && isEmpty(value)) {\n return t(REQUIRED);\n }\n };\n}\n\nexport function isInvitedUserValid(allowedEmailRegex) {\n return user => {\n const hash = get(user, 'hash');\n\n if (hash) {\n return hash;\n }\n\n const email = getEmailFromInviteeDisplayName(user);\n return allowedEmailRegex.test(email);\n };\n}\n\nexport function validateInvitedUsers(t, validationRegex) {\n return value => {\n if (!value) {\n return;\n }\n\n const users = isArray(value) ? value : [value];\n\n if (!users.every(isInvitedUserValid(validationRegex))) {\n return renderError(t, INVALID_USER_INVITE);\n }\n };\n}\n\nexport const validateInvitees = (t, validationRegex) =>\n composeValidators(\n isUserInviteRequired(t),\n validateInvitedUsers(t, validationRegex)\n );\n\nexport function validateGroupIdeationDateTime(t) {\n return (value, allValues) => {\n if (allValues.groupIdeationTimeZone && !value) {\n return t(REQUIRED);\n }\n };\n}\n\nexport function validateGroupIdeationTimeZone(t) {\n return (value, allValues) => {\n if (allValues.groupIdeationDateTime && !value) {\n return t(REQUIRED);\n }\n };\n}\n\nexport const validateTitle = t =>\n composeValidators(required(t), maxlength(t, CHALLENGE_TITLE_MAXLENGTH));\n\nexport const validateLoginEmail = t => composeValidators(required(t), email(t));\n","/* eslint jsx-a11y/anchor-is-valid: 0 */\nimport PropTypes from 'prop-types';\nimport isFunction from 'lodash/isFunction';\nimport noop from 'lodash/noop';\nimport trim from 'lodash/trim';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport ReactTagsInput from 'react-tagsinput';\nimport set from 'lodash/set';\nimport FormFeedback from '@bit/be-novative.kit.form-feedback';\nimport Autosuggest from '../Autosuggest';\nimport keycode from 'keycode';\nimport './TagsInput.css';\n\nclass TagsInput extends Component {\n static propTypes = {\n addKeys: PropTypes.arrayOf(PropTypes.number),\n deleteDisabled: PropTypes.bool,\n getSuggestionValue: PropTypes.func,\n input: PropTypes.shape({\n autoFocus: PropTypes.bool,\n value: PropTypes.arrayOf(PropTypes.string),\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func\n }),\n meta: PropTypes.shape({\n active: PropTypes.bool\n }),\n onSuggestionsClearRequested: PropTypes.func,\n onSuggestionsFetchRequested: PropTypes.func,\n renderSuggestion: PropTypes.func,\n separators: PropTypes.arrayOf(PropTypes.string),\n suggestions: PropTypes.array,\n tagDisplayProp: PropTypes.string,\n validationRegex: PropTypes.instanceOf(RegExp),\n validationError: PropTypes.string,\n maxLength: PropTypes.number,\n theme: PropTypes.shape({\n container: PropTypes.string,\n focused: PropTypes.string,\n input: PropTypes.string,\n tag: PropTypes.string,\n remove: PropTypes.string\n })\n };\n\n static defaultProps = {\n addKeys: [keycode('tab'), keycode('enter'), keycode('space')],\n suggestions: [],\n getSuggestionValue: suggestion => suggestion,\n getTagClassName: noop,\n onSuggestionsClearRequested: () => {},\n onSuggestionsFetchRequested: () => {},\n renderSuggestion: suggestion => {suggestion},\n renderTag: tag => tag,\n separators: [';', '\\\\(', '\\\\)', '\\\\*', '/', ':', '\\\\?', '\\n', '\\r'],\n placeholder: 'Add a tag',\n label: 'Remove',\n validationRegex: /.*/,\n validationError: '',\n theme: {\n container: 'TagsInput',\n focused: 'TagsInput--focused',\n marked: 'TagsInput__Input--marked',\n input: 'TagsInput__Input',\n tag: 'TagsInput__Tag',\n remove: 'TagsInput__Remove'\n }\n };\n\n pasteSplit = data =>\n data.split(new RegExp(this.props.separators.join('|'))).map(trim);\n\n shouldRenderSuggestions = value => trim(value).length > 0;\n\n render() {\n const {\n tagDisplayProp,\n validationRegex,\n addKeys,\n input,\n placeholder,\n theme,\n marked,\n maxLength,\n meta\n } = this.props;\n const { onChange, onFocus, name, value } = input;\n\n return (\n \n );\n }\n\n renderAutocomplete = ({ addTag, ...props }) => {\n const {\n getSuggestionValue,\n suggestions,\n renderSuggestion,\n input,\n meta,\n onSuggestionsClearRequested,\n onSuggestionsFetchRequested,\n validationRegex,\n validationError,\n marked,\n tagDisplayProp\n } = this.props;\n\n // TODO [CLOUD-3482] figure out why these events need to be handled in a separate render fn\n const handleOnChange = (e, { newValue, method }) => {\n if (method === 'enter') {\n e.preventDefault();\n } else {\n props.onChange(e);\n }\n };\n\n const handleBlur = e => {\n if (props.value) {\n const tag = tagDisplayProp\n ? set({}, tagDisplayProp, props.value)\n : props.value;\n addTag(tag);\n }\n };\n\n const handleSuggestionSelect = (e, { suggestion }) => {\n addTag(suggestion);\n };\n\n const invalid = props.value && !validationRegex.test(props.value);\n\n return (\n
    \n \n {invalid && (\n {validationError}\n )}\n
    \n );\n };\n\n renderTag = props => {\n const { input, renderTag, getTagClassName, label } = this.props;\n const {\n tag,\n key,\n className,\n classNameRemove,\n disabled,\n onRemove,\n getTagDisplayValue,\n ...other\n } = props;\n const getDisplayVal = isFunction(this.props.getTagDisplayValue)\n ? this.props.getTagDisplayValue\n : getTagDisplayValue;\n const tagClasses = classNames(className, getTagClassName(tag));\n const showDeleteBtn = !disabled && !input.disableDelete;\n\n return (\n \n {renderTag(getDisplayVal(tag))}\n {showDeleteBtn && (\n onRemove(key)}\n aria-label={label}>\n ×\n \n )}\n \n );\n };\n}\n\nexport default TagsInput;\n","import TagsInput from './TagsInput';\n\nexport default TagsInput;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport RadioGroup from '../RadioGroup';\nimport scss from './RadioButtonGroup.module.scss';\n\nRadioButtonGroup.propTypes = {\n choices: PropTypes.arrayOf(\n PropTypes.shape({\n value: PropTypes.any.isRequired,\n disabled: PropTypes.bool,\n label: PropTypes.string,\n icon: PropTypes.node\n })\n ),\n name: PropTypes.string.isRequired\n};\n\nfunction RadioButtonGroup({ choices, name, parse }) {\n return (\n \n );\n}\n\nexport default RadioButtonGroup;\n","import RadioButtonGroup from './RadioButtonGroup';\n\nexport default RadioButtonGroup;\n","import React, { createContext, useCallback, useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useDispatch } from 'react-redux';\nimport paths from '../../paths';\nimport { eraseStores } from '../../../common/actions';\nimport AuthSvc from '../../services/auth.service';\nimport { isTokenValid, getTokenData } from '../../services/token.service';\n\nexport const AuthContext = createContext({});\n\nexport default function AuthProvider(props) {\n const { login, magicLogin, logout, signup } = AuthSvc;\n const dispatch = useDispatch();\n const history = useHistory();\n const [loggedIn, setLoggedIn] = useState(isTokenValid());\n const tokenData = getTokenData();\n const [userId, setUserId] = useState(tokenData.userId);\n const [userEmail, setUserEmail] = useState(tokenData.email);\n const [companyId, setCompanyId] = useState(tokenData.companyId);\n\n useEffect(\n function updateUserData() {\n setUserId(tokenData.userId);\n setUserEmail(tokenData.email);\n setCompanyId(tokenData.companyId);\n },\n [loggedIn, tokenData]\n );\n\n const loginUser = useCallback(\n credentials =>\n login(credentials)\n .then(() => {\n setLoggedIn(true);\n })\n .catch(error => {\n setLoggedIn(false);\n throw error;\n }),\n [login]\n );\n\n const handleMagicLogin = useCallback(\n code =>\n magicLogin(code)\n .then(() => {\n setLoggedIn(true);\n })\n .catch(error => {\n setLoggedIn(false);\n throw error;\n }),\n [magicLogin]\n );\n\n const logoutUser = useCallback(\n (forced = false) => {\n if (!forced) {\n history.push(paths.login());\n dispatch(eraseStores);\n }\n logout(forced);\n setLoggedIn(false);\n },\n [dispatch, history, logout]\n );\n\n const signupUser = useCallback(\n (formData, captchaToken, invitationCode) =>\n signup(formData, captchaToken, invitationCode)\n .then(() => {\n setLoggedIn(true);\n })\n .catch(error => {\n setLoggedIn(false);\n throw error;\n }),\n [signup]\n );\n\n const handlePlatformSwitch = useCallback(companyId => {\n AuthSvc.switchPlatform(companyId).then(({ token, subdomain }) => {\n if (window) {\n const { protocol, host } = window.location;\n window.location.href = `${protocol}//${host.replace(\n /^[^.]*/,\n subdomain\n )}/switch/${token}`;\n }\n });\n }, []);\n\n return (\n \n );\n}\n","import flow from 'lodash/flow';\nimport filter from 'lodash/filter';\nimport has from 'lodash/has';\nimport get from 'lodash/get';\nimport mapFp from 'lodash/fp/map';\nimport startsWith from 'lodash/startsWith';\nimport zipWith from 'lodash/zipWith';\nimport { CHALLENGE_FORM_FIELDS } from '../constants';\n\nconst { CONCEPT_EVAL_CRITERIA, CRITERION } = CHALLENGE_FORM_FIELDS;\n\nconst getCriterionId = criterion => get(criterion, CRITERION.ID);\nconst getCriterionName = criterion => get(criterion, CRITERION.NAME);\n\nexport const areConceptEvalCriteriaSet = formModel =>\n has(formModel, `${CONCEPT_EVAL_CRITERIA}_0`);\n\nconst mapCriteriaToArray = payload =>\n flow(\n model =>\n filter(model, (_, key) => startsWith(key, `${CONCEPT_EVAL_CRITERIA}_`)),\n mapFp(name => ({ name }))\n )(payload);\n\nconst mapCriteriaToExistingIds = (oldItemsWithId = [], updatedItems = []) =>\n zipWith(oldItemsWithId, updatedItems, (oldItem, newItem) => ({\n [CRITERION.ID]: getCriterionId(oldItem),\n [CRITERION.NAME]: getCriterionName(newItem) || getCriterionName(oldItem)\n }));\n\nexport const createCriteriaConfig = payload => {\n const newItems = mapCriteriaToArray(payload);\n if (has(payload, CONCEPT_EVAL_CRITERIA)) {\n return mapCriteriaToExistingIds(payload[CONCEPT_EVAL_CRITERIA], newItems);\n } else {\n return newItems;\n }\n};\n\nexport const mapEvalCriteriaToChallengeInputs = (criteria = []) =>\n criteria.reduce((inputMap, criterion, ix) => {\n inputMap[`${CONCEPT_EVAL_CRITERIA}_${ix}`] = get(\n criterion,\n CRITERION.NAME,\n ''\n );\n return inputMap;\n }, {});\n","import flow from 'lodash/flow';\nimport get from 'lodash/get';\nimport getFp from 'lodash/fp/get';\nimport last from 'lodash/last';\nimport split from 'lodash/fp/split';\nimport toNumber from 'lodash/toNumber';\n\n/**\n * Returns the complete result of an API call, including the HTTP code and any payload\n * @param {Object}\n * @return {import('axios').AxiosResponse}\n */\n\nexport const getApiResponse = getFp('response');\n\n/**\n * Returns the HTTP error code from an API response\n * @param {Object} error - The raw API request, as received from the API handler\n * @returns {Number} The HTTP error code\n */\n\nexport const getApiResponseCode = error =>\n flow(\n getApiResponse,\n getFp('status'),\n toNumber\n )(error);\n\n/**\n * Returns the payload from the API response\n * @param {Object} apiResponse - The unprocessed API response\n * @return {Object} The received payload\n */\n\nexport const getApiResponseData = apiResponse => get(apiResponse, 'data');\n\n/**\n * Returns all raw headers from the API response\n * @param {Object} apiResponse - The unprocessed API response\n * @return {Object} The headers extracted from the API response\n */\n\nexport const getApiResponseHeaders = apiResponse => get(apiResponse, 'headers');\n\nexport const getEmbedded = data => get(data, '_embedded');\n\nexport const getEmbeddedItems = data =>\n flow(\n getEmbedded,\n getFp('items')\n )(data);\n\nexport const getHalRefs = data => get(data, '_links', {});\n\nexport const getHalSelfLink = data =>\n flow(\n getHalRefs,\n getFp('_self')\n )(data);\n\nexport const getIdFromHref = data =>\n flow(\n getFp('href'),\n flow(\n split('/'),\n last\n )\n )(data);\n","import get from 'lodash/get';\nimport split from 'lodash/split';\nimport includes from 'lodash/includes';\n\nexport function getPlatformName() {\n return get(window, 'location.host', '').split('.')[0];\n}\n\n/**\n * Checks if the current platform is a public platform based on the subdomain\n * @param {string} [hostname] - The current hostname by default\n * @returns {boolean}\n */\n\nexport function isPublic(hostname = getPlatformName()) {\n return includes(\n split(process.env.REACT_APP_PUBLIC_PLATFORM_NAMES, ','),\n hostname\n );\n}\n\nexport function isLocalhost(hostname = getPlatformName()) {\n const hostStr = hostname.toString();\n\n return hostStr.includes('localhost') || hostStr.includes('127.0.0.1');\n}\n\nexport function isStaging(hostname) {\n return includes(\n split(process.env.REACT_APP_STAGING_PLATFORM_NAMES, ','),\n hostname\n );\n}\n\n/**\n * @param {string} [hostname] - Host name from a URL\n * @return {boolean} Returns `true` if the hostname points to `localhost` or an internal staging platform\n */\n\nexport function isInternal(hostname = getPlatformName()) {\n return isLocalhost(hostname) || isStaging(hostname);\n}\n\nexport default {\n isPublic,\n isLocalhost,\n isInternal\n};\n","// GDPR\n// TODO [CLOUD-5368] duplicates `UserConsentKeys`. See `src/constants.js`\n\nexport const ACCOUNT_MANAGEMENT_CONSENT = 'accountManagementConsent';\nexport const COOKIES_AND_LOGS_ACCEPTED = 'cookiesAndLogsAccepted';\nexport const PERSONAL_DATA_MANAGEMENT_ACCEPTED =\n 'personalDataManagementAccepted';\n\nexport const EMAIL_NOTIFICATIONS_CONSENT = 'emailNotificationsConsent';\nexport const CHALLENGE_INVITATIONS_ACCEPTED = 'challengeInvitationsAccepted';\n\nexport const MARKETING_EMAILS_CONSENT = 'marketingEmailsConsent';\nexport const MARKETING_EMAILS_ACCEPTED = 'marketingEmailsAccepted';\nexport const NEWSLETTER_ACCEPTED = 'newsletterAccepted';\n\nexport const TERMS_AND_PRIVACY_ACCEPTED = 'termsAndPrivacyAccepted';\n\nexport const MVM_PRIVACY_URL =\n 'https://prod-benovative-client-assets.s3.eu-central-1.amazonaws.com/mvm-csoport/mvm-csoport_adatkezelesi_tajekoztato.pdf';\n\n// configuration\n\nexport const POSITION_MAXLENGTH = 200;\nexport const WORKPLACE_MAXLENGTH = 200;\nexport const PROFILE_IMAGE_ASPECT_RATIO = 1;\nexport const PROFILE_IMAGE_CROP_HEIGHT = 200;\n\n// definitions\n\n/**\n * @enum {string} PROFILE_FORM_FIELDS\n * @readonly\n * @see OwnProfilePayload\n */\nexport const PROFILE_FORM_FIELDS = {\n DESCRIPTION: 'aboutMe',\n FIRST_NAME: 'firstName',\n IMAGE: 'image',\n LANGUAGE: 'language',\n LAST_NAME: 'lastName',\n POSITION: 'position',\n WORKPLACE: 'workplace',\n WEBSITE_URL: 'websiteUrl',\n LINKEDIN_URL: 'linkedInUrl',\n CHALLENGE_LANGS: 'preferredChallengeLanguages',\n CONSENT: 'userConsent'\n};\n","import moment from 'moment';\n\nexport function parseUTCISOString(isoDate) {\n const date = moment(isoDate);\n return isoDate && date.isValid() ? date.local().toDate() : null;\n}\n\nexport function parseLocalDateString(localDateString) {\n const date = moment(localDateString, 'L LT', true);\n return date.isValid() ? date.toDate() : null;\n}\n\nexport function formatLocalDateToUTCISOString(localDate) {\n const date = moment(localDate);\n return localDate && date.isValid() ? date.utc().format() : null;\n}\n\nexport function formatUTCISOStringToLocalDate(isoDate) {\n const date = moment(isoDate);\n return isoDate && date.isValid() ? date.local().format('L LT') : null;\n}\n","import React from 'react';\nimport get from 'lodash/get';\nimport PropTypes from 'prop-types';\nimport cn from 'classnames';\nimport Slider from 'rc-slider';\nimport 'rc-slider/assets/index.css';\nimport './SliderInput.css';\n\nSliderInput.propTypes = {\n min: PropTypes.number.isRequired,\n max: PropTypes.number.isRequired,\n step: PropTypes.number,\n markers: PropTypes.object,\n onChange: PropTypes.func,\n tabIndex: PropTypes.number,\n ariaLabel: PropTypes.string.isRequired,\n vertical: PropTypes.bool\n};\nSliderInput.defaultProps = {\n step: 1,\n markers: {},\n onChange: () => {},\n tabIndex: 0\n};\nfunction SliderInput({\n ariaLabel,\n className,\n disabled,\n error,\n input,\n min,\n max,\n step,\n markers,\n onChange,\n tabIndex,\n value,\n vertical\n}) {\n const classes = cn('SliderInput', className, { disabled, vertical, error });\n return (\n \n );\n}\n\nexport default SliderInput;\n","import SliderInput from './SliderInput';\n\nexport default SliderInput;\n","import isNumber from 'lodash/isNumber';\n\nconst getNumOrZero = num => (isNumber(num) ? num : 0);\n\nexport default getNumOrZero;\n","import map from 'lodash/map';\nimport { SOCKET_MSG as MSG, S_ID } from '../../constants';\nimport { sendSocketMessage } from '../../../common/actions/socket';\nimport { normaliseParticipant } from './users';\nimport { mapPhaseProps } from './_mappers';\n\n/**\n * Handles when the user wants to advance to the next ideation phase\n * @param {(string|number)} nextPhaseId - The current phase ID from where the user wants to advance\n * @returns {import('redux').Action}\n */\nexport const reqPhaseChangeMsg = nextPhaseId =>\n sendSocketMessage(S_ID, MSG.PHASE_CHANGE_REQ, nextPhaseId);\n\n/**\n * @param {[phaseType: string, users: User[], botLoveCount: number]} msg - The raw socket message\n * @returns {{phase: string, users: User[], hummingbirdLoveCount:number}}\n */\nexport const normalisePhaseChangeMsg = msg => {\n const [phase, users, hummingbirdLoveCount] = msg;\n return {\n phase,\n users: map(users, normaliseParticipant),\n hummingbirdLoveCount\n };\n};\n\n/**\n * @param {[number: phaseId, phases: IdeationPhaseBehaviour[]]} msg - The raw socket message\n * @returns {{ currentPhaseId: number, phases: IdeationPhaseBehaviour[]}}\n */\nexport const normalisePhaseChangedWithConfigMsg = msg => {\n const [currentPhaseId, phases] = msg;\n return {\n currentPhaseId,\n phases: phases.map(mapPhaseProps)\n };\n};\n","import React, { useEffect, useState } from 'react';\nimport { useForm } from 'react-final-form';\nimport { translate } from 'react-i18next';\nimport PrivateConceptInput from '../../components/PrivateConceptInput';\nimport TeamInput from '../../components/TeamInput';\nimport { conceptEditorFormFields } from '../../constants';\n\nconst { TEAM, IS_PRIVATE } = conceptEditorFormFields;\n\nfunction VisibilityInputs({\n autoFocus,\n emailRegex,\n teamMinLength,\n labelContext,\n t\n}) {\n const formApi = useForm();\n const [hasAnimated, setHasAnimated] = useState(false);\n useEffect(\n function animateVisibilityChange() {\n let timer;\n if (autoFocus && !hasAnimated) {\n timer = setTimeout(() => {\n formApi.change(IS_PRIVATE, 1);\n setHasAnimated(true);\n }, 1000);\n }\n return () => clearTimeout(timer);\n },\n [autoFocus, formApi, hasAnimated]\n );\n\n return (\n <>\n \n\n \n \n );\n}\n\nexport default translate()(VisibilityInputs);\n","import React, { useCallback, useState } from 'react';\nimport flow from 'lodash/flow';\nimport get from 'lodash/get';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { translate } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Field, Form } from 'react-final-form';\nimport produce from 'immer';\nimport formControl from '@bit/be-novative.kit.form-control';\nimport { parseEditorState } from '@bit/be-novative.kit.richtext-utils';\nimport formConfig from '../../utils/formConfig';\nimport { conceptEditorFormFields } from '../../constants';\nimport { closeModal } from '../../../common/actions/modal';\nimport { platformDataSelector } from '../../../common/state/platform';\nimport { getAllowedEmailDomains } from '../../../common/getters/platform';\nimport { getConceptFormModelById } from '../../selectors/ideaConcepts';\nimport withModal from '../../../common/containers/withModal';\nimport Button from '@bit/be-novative.kit.button';\nimport Callout from '../../../common/components/Callout';\nimport CategorySelector from '../../../common/components/CategorySelector';\nimport Panel from '../../../common/components/Panel';\nimport Paragraph from '../../../common/components/Paragraph';\nimport ConceptImageInput from '../../components/ConceptImageInput';\nimport ConceptRichTextField from '../../components/ConceptRichTextField';\nimport ConceptTitleInput from '../../components/ConceptTitleInput';\nimport ConceptDescriptionInput from '../../components/ConceptDescriptionInput';\nimport useSubmitQuickConceptForm from '../../hooks/useSubmitQuickConceptForm';\nimport { isCepheidVariant } from '../../../utils/variants';\nimport translateApiErrorMessage from '../../../utils/translateApiErrorMessage';\nimport VisibilityInputs from './VisibilityInputs';\nimport './QuickConceptForm.css';\n\nconst BASE_CLASS = 'QuickConceptForm';\nconst ControlledConceptImageInput = formControl(ConceptImageInput);\n\nconst {\n TITLE,\n IDEA_TEXT,\n CATEGORY_ID,\n TEAM,\n BENEFITS,\n PLANNED_ACTIVITIES,\n COSTS,\n IS_PRIVATE,\n IMAGE\n} = conceptEditorFormFields;\n\nQuickConceptForm.propTypes = {\n expanded: PropTypes.bool,\n ideaConceptId: PropTypes.string\n};\nexport function QuickConceptForm({\n customFormPayload,\n expanded,\n focusedField = TITLE,\n formTitle,\n ideaConceptId,\n onSuccess = () => {},\n t\n}) {\n const [isExpanded, setIsExpanded] = useState(expanded);\n const dispatch = useDispatch();\n const closeEditor = useCallback(\n function closeEditor() {\n dispatch(closeModal());\n },\n [dispatch]\n );\n const handleSuccess = useCallback(\n function handleSuccess() {\n onSuccess();\n closeEditor();\n },\n [closeEditor, onSuccess]\n );\n const createConcept = useSubmitQuickConceptForm({ onSuccess: handleSuccess });\n\n const title = formTitle || t('ideaConcepts/subpage/describeForm/formTitle');\n const config = formConfig.getFormConfig({ insightForm: true });\n const labelContext = formConfig.getLabelNamespace({ insightForm: true });\n const alwaysShowVisibilityInputs = focusedField === TEAM;\n const emailRegex = useSelector(\n flow(\n platformDataSelector,\n getAllowedEmailDomains\n )\n );\n const defaultFormModel = useSelector(getConceptFormModelById(ideaConceptId));\n const formModel = customFormPayload\n ? normaliseFormModel(customFormPayload)\n : defaultFormModel;\n\n return (\n \n {/*\n keepDirtyOnReinitialize\n formModel.invitedUsers array contains invitee objects created on the fly from user objects\n array reference is not the same, and updating the field would reinit the form\n */}\n \n {({ handleSubmit, submitting, submitError, values }) => (\n
    \n
    \n \n\n \n\n \n\n {alwaysShowVisibilityInputs && (\n \n )}\n\n \n {!isExpanded && !config.forceExpanded && (\n setIsExpanded(true)}\n data-test=\"expand\">\n {t('ideaConcepts/subpage/describeForm/expandCTA')}\n \n )}\n
    \n \n {t('ideaConcepts/subpage/describeForm/expandHint')}\n \n \n }\n collapsible={!config.forceExpanded}\n expanded={isExpanded}\n shadowed={false}>\n {!alwaysShowVisibilityInputs && (\n \n )}\n\n \n\n {get(config, [BENEFITS, 'hidden']) ? null : (\n \n )}\n\n {get(config, [PLANNED_ACTIVITIES, 'hidden']) ? null : (\n \n )}\n\n {get(config, [COSTS, 'hidden']) ? null : (\n \n )}\n \n
    \n\n
    \n\n {submitError && (\n \n {translateApiErrorMessage(t, submitError)}\n \n )}\n\n
    \n \n \n {t('ideaConcepts/subpage/describeForm/submitCTA')}\n \n
    \n
    \n )}\n \n \n );\n}\n\nfunction normaliseFormModel(formModel) {\n return produce(model => {\n model[IS_PRIVATE] = Number(Boolean(model[IS_PRIVATE]));\n model[IDEA_TEXT] = parseEditorState(model[IDEA_TEXT]);\n model[BENEFITS] = parseEditorState(model[BENEFITS]);\n model[PLANNED_ACTIVITIES] = parseEditorState(model[PLANNED_ACTIVITIES]);\n model[COSTS] = parseEditorState(model[COSTS]);\n })(formModel);\n}\n\nexport default compose(\n translate(),\n withModal()\n)(QuickConceptForm);\n","import React, { useCallback, useState } from 'react';\nimport flow from 'lodash/flow';\nimport get from 'lodash/get';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { translate } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Field, Form } from 'react-final-form';\nimport produce from 'immer';\nimport formControl from '@bit/be-novative.kit.form-control';\nimport { parseEditorState } from '@bit/be-novative.kit.richtext-utils';\nimport formConfig from '../../utils/formConfig';\nimport { conceptEditorFormFields } from '../../constants';\nimport { closeModal } from '../../../common/actions/modal';\nimport { platformDataSelector } from '../../../common/state/platform';\nimport { getAllowedEmailDomains } from '../../../common/getters/platform';\nimport { getConceptFormModelById } from '../../selectors/ideaConcepts';\nimport withModal from '../../../common/containers/withModal';\nimport Button from '@bit/be-novative.kit.button';\nimport Callout from '../../../common/components/Callout';\nimport CategorySelector from '../../../common/components/CategorySelector';\nimport Panel from '../../../common/components/Panel';\nimport Paragraph from '../../../common/components/Paragraph';\nimport ConceptImageInput from '../../components/ConceptImageInput';\nimport ConceptRichTextField from '../../components/ConceptRichTextField';\nimport ConceptTitleInput from '../../components/ConceptTitleInput';\nimport ConceptDescriptionInput from '../../components/ConceptDescriptionInput';\nimport useSubmitQuickConceptForm from '../../hooks/useSubmitQuickConceptForm';\nimport { isCepheidVariant } from '../../../utils/variants';\nimport translateApiErrorMessage from '../../../utils/translateApiErrorMessage';\nimport VisibilityInputs from './VisibilityInputs';\nimport './QuickConceptForm.css';\n\nconst BASE_CLASS = 'QuickConceptForm';\nconst ControlledConceptImageInput = formControl(ConceptImageInput);\n\nconst {\n TITLE,\n IDEA_TEXT,\n CATEGORY_ID,\n TEAM,\n BENEFITS,\n PLANNED_ACTIVITIES,\n COSTS,\n IS_PRIVATE,\n IMAGE\n} = conceptEditorFormFields;\n\nQuickConceptFormAmdocs.propTypes = {\n expanded: PropTypes.bool,\n ideaConceptId: PropTypes.string\n};\nexport function QuickConceptFormAmdocs({\n customFormPayload,\n expanded,\n focusedField = TITLE,\n formTitle,\n ideaConceptId,\n onSuccess = () => {},\n t\n}) {\n const [isExpanded, setIsExpanded] = useState(expanded);\n const dispatch = useDispatch();\n const closeEditor = useCallback(\n function closeEditor() {\n dispatch(closeModal());\n },\n [dispatch]\n );\n const handleSuccess = useCallback(\n function handleSuccess() {\n onSuccess();\n closeEditor();\n },\n [closeEditor, onSuccess]\n );\n const createConcept = useSubmitQuickConceptForm({ onSuccess: handleSuccess });\n\n const title = formTitle || t('ideaConcepts/subpage/describeForm/formTitle');\n const config = formConfig.getFormConfig({ insightForm: true });\n const labelContext = formConfig.getLabelNamespace({ insightForm: true });\n const alwaysShowVisibilityInputs = focusedField === TEAM;\n const emailRegex = useSelector(\n flow(\n platformDataSelector,\n getAllowedEmailDomains\n )\n );\n const defaultFormModel = useSelector(getConceptFormModelById(ideaConceptId));\n const formModel = customFormPayload\n ? normaliseFormModel(customFormPayload)\n : defaultFormModel;\n\n return (\n \n {/*\n keepDirtyOnReinitialize\n formModel.invitedUsers array contains invitee objects created on the fly from user objects\n array reference is not the same, and updating the field would reinit the form\n */}\n \n {({ handleSubmit, submitting, submitError, values }) => (\n
    \n
    \n \n\n \n\n \n\n {alwaysShowVisibilityInputs && (\n \n )}\n\n \n {!isExpanded && !config.forceExpanded && (\n setIsExpanded(true)}\n data-test=\"expand\">\n {t('ideaConcepts/subpage/describeForm/expandCTA')}\n \n )}\n
    \n \n {t('ideaConcepts/subpage/describeForm/expandHint')}\n \n \n }\n collapsible={!config.forceExpanded}\n expanded={isExpanded}\n shadowed={false}>\n {!alwaysShowVisibilityInputs && (\n \n )}\n\n \n\n {get(config, [PLANNED_ACTIVITIES, 'hidden']) ? null : (\n \n )}\n \n
    \n\n
    \n\n {submitError && (\n \n {translateApiErrorMessage(t, submitError)}\n \n )}\n\n
    \n \n \n {t('ideaConcepts/subpage/describeForm/submitCTA')}\n \n
    \n
    \n )}\n \n \n );\n}\n\nfunction normaliseFormModel(formModel) {\n return produce(model => {\n model[IS_PRIVATE] = Number(Boolean(model[IS_PRIVATE]));\n model[IDEA_TEXT] = parseEditorState(model[IDEA_TEXT]);\n model[BENEFITS] = parseEditorState(model[BENEFITS]);\n model[PLANNED_ACTIVITIES] = parseEditorState(model[PLANNED_ACTIVITIES]);\n model[COSTS] = parseEditorState(model[COSTS]);\n })(formModel);\n}\n\nexport default compose(\n translate(),\n withModal()\n)(QuickConceptFormAmdocs);\n","import QuickConceptForm from './QuickConceptForm';\nimport QuickConceptFormAmdocs from './QuickConceptFormAmdocs';\n\nexport default QuickConceptForm;\nexport { QuickConceptFormAmdocs };\n","import isEqual from 'lodash/fp/isEqual';\nimport flow from 'lodash/flow';\nimport get from 'lodash/get';\nimport getFp from 'lodash/fp/get';\nimport { CommonException } from '../constants';\nimport { getApiResponse, getApiResponseCode } from './apiResponse';\n\nconst isMissingError = errorCode => errorCode === 404;\n\nconst isNetworkError = error =>\n !isTimeoutError(error) && !getApiResponse(error) && error.isAxiosError;\n\nconst isServerError = errorCode => errorCode >= 500;\n\nconst isTimeoutError = error =>\n flow(\n getFp('code'),\n isEqual('ECONNABORTED')\n )(error);\n\nconst isBadRequest = errorCode => errorCode === 400;\n\nconst isUnauthenticated = errorCode => errorCode === 401;\n\nfunction convertStatusToInternalCode(errorCode) {\n if (isMissingError(errorCode)) {\n return CommonException.NotFound;\n } else if (isServerError(errorCode)) {\n return CommonException.ServerError;\n } else if (isBadRequest(errorCode)) {\n return CommonException.BadRequest;\n } else if (isUnauthenticated(errorCode)) {\n return CommonException.Unauthenticated;\n } else {\n return CommonException.General;\n }\n}\n\n/**\n * Converts an API response error object to an error code internal to the UI\n * @summary The function distinguishes 404 and 500 errors, timeouts and network errors. Other errors are classified as _general_.\n * @param {Error} apiError - The error object returned from a failed API request\n * @return {CommonException} The error's internal representation\n */\n\nfunction convertApiErrorToStatusCode(apiError) {\n if (isTimeoutError(apiError)) {\n return CommonException.Timeout;\n } else if (isNetworkError(apiError)) {\n return CommonException.NetworkError;\n } else {\n return flow(\n getApiResponseCode,\n convertStatusToInternalCode\n )(apiError);\n }\n}\n\n/**\n * Converts a websocket error to an error code internal to the UI\n * @summary The function distinguishes 404 and 500 errors, timeouts and network errors. Other errors are classified as _general_.\n * @param {Error} apiError - The error object returned from a failed API request\n * @return {CommonException} The error's internal representation\n */\n\nfunction convertSocketErrorToStatusCode(socketError) {\n const socketErrorCode = get(socketError, 'statusCode');\n if (socketErrorCode === 0) {\n // CORS or network error\n return CommonException.NetworkError;\n } else {\n return convertStatusToInternalCode(socketErrorCode);\n }\n}\n\nexport { convertApiErrorToStatusCode, convertSocketErrorToStatusCode };\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Item\":\"BulletedList_Item__14ccR\",\"Icon\":\"BulletedList_Icon__UbYSv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"MobileCta\":\"GlobalPageHeader_MobileCta__2_UOl\",\"alignWithMenu\":\"GlobalPageHeader_alignWithMenu__qaZdZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Btn\":\"Tab_Btn__2sQwE\",\"active\":\"Tab_active__RlOUI\"};","import { useCallback, useEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport isEqual from 'lodash/isEqual';\nimport { denormalize } from 'normalizr';\nimport { getEntities, hasEntityFailed } from '../../common/selectors/entities';\nimport {\n getChallengeById,\n isChallengeLoading\n} from '../../common/selectors/challenges';\nimport { fetchChallenge } from '../../common/actions/challenges';\nimport schemas from '../schemas';\nimport { entities } from '../../constants';\n\n/**\n * @typedef {Object} ChallengeHookApi\n * @property {() => boolean} isLoading - Returns whether the challenge is being fetched\n * @property {() => Error} getError - Returns whether the error if challenge fetch has failed\n * @property {() => Promise} fetch - Callback for triggering challenge re-fetch\n * @property {() => Challenge} denorm - Expensive function for denormalising the challenge\n */\n\n/**\n * Provides a normalised challenge,\n * which is fetched from the server if it's not available in the Redux state.\n *\n * Getters are provided for status indicators, as well as for the denormalised challenge.\n * @param {string} challengeId\n * @returns {[Challenge, api: ChallengeHookApi]} A tuple of the challenge and its related API\n */\nexport default function useChallenge(challengeId) {\n const normalisedChallenge = useSelector(\n getChallengeById(challengeId),\n isEqual\n );\n const loading = useSelector(isChallengeLoading(challengeId));\n const error = useSelector(hasEntityFailed(entities.CHALLENGE)(challengeId));\n\n const dispatch = useDispatch();\n const fetch = useCallback(\n async function fetch() {\n if (!challengeId || loading || error) {\n return;\n }\n try {\n await dispatch(fetchChallenge(challengeId));\n } catch (error) {\n console.error(error);\n }\n },\n [dispatch, challengeId, error, loading]\n );\n\n useEffect(\n function fetchIfEmpty() {\n if (!normalisedChallenge && !error) {\n fetch();\n }\n },\n [challengeId, error, fetch, loading, normalisedChallenge]\n );\n\n const existingEntities = useSelector(getEntities);\n const denorm = useCallback(\n function denorm() {\n if (!normalisedChallenge) {\n return {};\n }\n return denormalize(\n normalisedChallenge,\n schemas.CHALLENGE,\n existingEntities\n );\n },\n [existingEntities, normalisedChallenge]\n );\n\n const api = useMemo(\n () => ({\n isLoading: () => loading,\n getError: () => error,\n fetch,\n denorm\n }),\n [loading, error, fetch, denorm]\n );\n\n return [normalisedChallenge, api];\n}\n","import { normalize } from 'normalizr';\nimport { stringify } from 'qs';\nimport createChallengeRequest from '../utils/payloadUtils';\nimport {\n CHALLENGE_PERMISSIONS,\n CHALLENGE_CREATE,\n CHALLENGE_DELETE,\n CHALLENGE_REOPEN,\n FETCH_HASHTAGS,\n FETCH_SCHEMA_DATA\n} from '../../constants';\nimport { VOYAGER_API, SEARCH_API } from '../../api/constants';\nimport schemas, { entityKeys } from '../schemas';\nimport { dropFeedCardById } from '../../feed/actions';\nimport { fetchChallenge } from '../../common/actions/challenges';\nimport asyncActionType from '../../utils/asyncActionType';\nimport { getApiResponseData } from '../../api/utils/apiResponse';\nimport { convertApiErrorToStatusCode } from '../../api/utils/apiError';\nimport logRequestFailure from '../../api/utils/logRequestFailure';\nimport addBreadcrumb from '../../telemetry/addBreadcrumb';\n\nexport const ADD_NEW_CHALLENGE_TO_FEED = 'ADD_NEW_CHALLENGE_TO_FEED';\nexport const SEARCH_CHALLENGES = asyncActionType('SEARCH_CHALLENGES');\n\nexport const publishChallenge = (challenge, captchaToken) => async dispatch => {\n const data = createChallengeRequest(challenge, { isImageUpdated: true });\n try {\n addBreadcrumb('Creating challenge...', {\n data: { ...data, captchaToken },\n category: 'challenge'\n });\n const result = await dispatch({\n [VOYAGER_API]: {\n url: `/challenges?captcha=${captchaToken}`,\n method: 'POST',\n data,\n type: CHALLENGE_CREATE\n }\n });\n const challengeId = getApiResponseData(result);\n dispatch({\n type: ADD_NEW_CHALLENGE_TO_FEED,\n payload: { challengeId },\n // push returned challengeId to front of feed array\n meta: { mostRecent: true }\n });\n return result;\n } catch (error) {\n logRequestFailure(error, 'Could not create challenge', 'challenge', data);\n throw convertApiErrorToStatusCode(error);\n }\n};\n\nexport const deleteChallenge = challengeId => async dispatch => {\n try {\n await dispatch({\n [VOYAGER_API]: {\n url: `challenges/${challengeId}`,\n method: 'DELETE',\n type: CHALLENGE_DELETE\n }\n });\n dispatch(dropFeedCardById(challengeId));\n } catch (error) {\n logRequestFailure(error, 'Could not delete challenge', 'challenge');\n throw convertApiErrorToStatusCode(error);\n }\n};\n\nexport const reopenChallenge = ({\n challengeId,\n startsAt,\n closesAt\n}) => async dispatch => {\n try {\n await dispatch({\n [VOYAGER_API]: {\n url: `challenges/${challengeId}/reopen`,\n method: 'POST',\n data: { startsAt, closesAt },\n type: CHALLENGE_REOPEN\n }\n });\n dispatch(fetchChallenge(challengeId));\n } catch (error) {\n logRequestFailure(error, 'Could not reopen challenge', 'challenge', {\n challengeId,\n startsAt,\n closesAt\n });\n throw convertApiErrorToStatusCode(error);\n }\n};\nexport const searchChallenges = ({\n query,\n start = 0,\n limit = 25,\n orderBy = '',\n descending = false\n}) => async dispatch => {\n const queryString = stringify({\n query,\n skip: start,\n limit,\n orderBy,\n descending\n });\n\n try {\n const response = await dispatch({\n [SEARCH_API]: {\n url: `/challenges?${queryString}`,\n method: 'GET',\n type: SEARCH_CHALLENGES\n }\n });\n const challenges = getApiResponseData(response);\n\n dispatch({\n type: FETCH_SCHEMA_DATA.SUCCESS,\n payload: normalize(challenges, schemas.CHALLENGE_ARRAY),\n meta: {\n entityType: entityKeys.CHALLENGE\n }\n });\n\n return challenges;\n } catch (error) {\n logRequestFailure(error, 'Challenge search failed', 'challenge', {\n queryString\n });\n throw convertApiErrorToStatusCode(error);\n }\n};\n\nexport const fetchPermissions = () => {\n return {\n type: CHALLENGE_PERMISSIONS,\n [VOYAGER_API]: {\n url: '/challenges/save-permissions',\n method: 'GET',\n type: CHALLENGE_PERMISSIONS\n }\n };\n};\n\nexport const fetchHashtags = () => {\n return {\n type: FETCH_HASHTAGS,\n [VOYAGER_API]: {\n url: '/hashtags',\n method: 'GET',\n type: FETCH_HASHTAGS\n }\n };\n};\n","import flow from 'lodash/flow';\nimport getFp from 'lodash/fp/get';\nimport isEqualFp from 'lodash/fp/isEqual';\nimport filteredReducerCall from '../../utils/filteredReducerCall';\n\n/**\n * A filter utility that only calls the reducer if the action targets the correct socket ID.\n * @param {string} canvasId - Unique ID that will be compared to the action's `meta.canvasId` value. (This doesn't have to be a valid canvas type.)\n * @param {Function} reducer - Reducer function to be called if the `canvasId` matches\n * @returns {Function}\n */\n\nexport default function filterActionByCanvasId(canvasId, reducer) {\n return filteredReducerCall(\n flow(\n getFp(['meta', 'canvasId']),\n isEqualFp(canvasId)\n ),\n reducer\n );\n}\n","import getFp from 'lodash/fp/get';\nimport getOrFp from 'lodash/fp/getOr';\n\nexport const isHidden = getFp('redacted');\nexport const isLoved = getFp('loved');\nexport const isUnseen = getFp('unseen');\nexport const getMergedIdeas = getOrFp([], 'mergedIdeas');\n","import React, { useEffect, useState } from 'react';\nimport isNumber from 'lodash/isNumber';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Size } from '../../../constants';\nimport usePrevious from '../../hooks/usePrevious';\nimport Badge, { BadgeChildShape } from '../Badge';\nimport Icon from '../Icon';\nimport scss from './Heart.module.scss';\n\nHeart.propTypes = {\n badge: PropTypes.number,\n checked: PropTypes.bool,\n onChange: PropTypes.func,\n disabled: PropTypes.bool\n};\n\nfunction Heart({\n badge = 0,\n checked,\n onChange,\n className,\n disabled,\n size,\n ...rest\n}) {\n // Animation disabled on first render to prevent animating initial `checked` state\n const [animate, setAnimate] = useState(false);\n const prevChecked = usePrevious(checked);\n useEffect(\n function enableAnimationAfterFirstRender() {\n if (prevChecked !== undefined && prevChecked !== checked) {\n setAnimate(true);\n }\n },\n [checked, prevChecked]\n );\n const classes = classNames(scss.Heart, className, {\n [scss.checked]: checked,\n [scss.animate]: animate,\n [scss.disabled]: disabled\n });\n\n return (\n \n );\n}\n\nexport default Heart;\n","import Heart from './Heart';\n\nexport default Heart;\n","import flow from 'lodash/flow';\nimport get from 'lodash/get';\nimport getFp from 'lodash/fp/get';\nimport { createSelector } from 'reselect';\nimport { getAllIdsFrom } from '../../common/selectors/entities';\n\nexport const rootSelector = state => get(state, 'evaluation');\n\nconst offsetSelector = state =>\n flow(\n rootSelector,\n getFp('offset')\n )(state);\n\nconst allIdsSelector = state =>\n flow(\n rootSelector,\n getAllIdsFrom\n )(state);\n\nconst byIdSelector = state =>\n flow(\n rootSelector,\n getFp('byId')\n )(state);\n\nexport const activeIdeaSelector = createSelector(\n byIdSelector,\n allIdsSelector,\n offsetSelector,\n (byId, allIds, offset) => byId[allIds[offset]]\n);\n\nexport const isFetchingNextIdeaSelector = state =>\n flow(\n rootSelector,\n getFp('fetching')\n )(state);\n\nexport const targetCountSelector = state =>\n flow(\n rootSelector,\n getFp('targetCount')\n )(state);\n\nexport const evaluatedCountSelector = state =>\n flow(\n rootSelector,\n getFp('evaluatedCount')\n )(state);\n\nexport const skippedCountSelector = state =>\n flow(\n rootSelector,\n getFp('skippedCount')\n )(state);\n\nexport const overallProgressSelector = state =>\n flow(\n rootSelector,\n getFp('overallProgress')\n )(state);\n\nexport const isAllEvaluatedSelector = state =>\n flow(\n rootSelector,\n getFp('isAllEvaluated')\n )(state);\n\nexport const isSkipAvailableSelector = state =>\n flow(\n rootSelector,\n getFp('isSkipAvailable')\n )(state);\n\nexport const remainedCountSelector = createSelector(\n targetCountSelector,\n evaluatedCountSelector,\n (targetCount, evaluatedCount) => Math.max(targetCount - evaluatedCount, 0)\n);\n\nexport const hasNextSelector = createSelector(\n offsetSelector,\n offset => offset > 0\n);\n\nexport const hasPrevSelector = createSelector(\n offsetSelector,\n allIdsSelector,\n (offset, allIds) => offset < allIds.length - 1\n);\n\nexport const hasUserPerformedSuggestion = state =>\n get(state, 'performedSuggestion');\n\nexport const isSuggestionCompletionLoaded = state =>\n flow(\n hasUserPerformedSuggestion,\n state => state !== null\n )(state);\n","import React from 'react';\nimport map from 'lodash/map';\nimport PropTypes from 'prop-types';\nimport cn from 'classnames';\nimport Icon, { ICON_TYPES } from '../Icon';\nimport scss from './BulletedList.module.scss';\n\nBulletedList.propTypes = {\n bullet: PropTypes.oneOf(ICON_TYPES),\n iconClass: PropTypes.string,\n items: PropTypes.array\n};\nexport default function BulletedList({\n bullet = 'hummingbird',\n className,\n iconClass,\n items = []\n}) {\n return (\n
      \n {map(items, (item, index) => (\n
    • \n {item}\n
    • \n ))}\n
    \n );\n}\n","import get from 'lodash/fp/get';\n\nexport const isDeletable = get('deletable');\n\nexport const isEditable = get('editable');\n\nexport const isOwnerEditable = get('ownerEditable');\n\nexport const isReopenable = get('reopenable');\n","import { useRef, useEffect } from 'react';\n\nexport default function usePrevious(value, initialValue) {\n const ref = useRef(initialValue);\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}\n","// modals\nexport const BASIC_CONCEPT_EDITOR = 'BASIC_CONCEPT_EDITOR';\nexport const BULK_REVEAL_IDEAS = 'BULK_REVEAL_IDEAS';\nexport const CONFIRM_DELETE_IDEA = 'CONFIRM_DELETE_IDEA';\nexport const IDEATORS = 'IDEATORS';\nexport const INVITED_USERS = 'INVITED_USERS';\nexport const REOPEN_CHALLENGE = 'REOPEN_CHALLENGE';\n\n// other constants\nexport const CHALLENGE_DETAILS_FORM = 'CHALLENGE_DETAILS_FORM';\nexport const FILTER = 'FILTER';\nexport const PAGINATION = 'PAGINATION';\n","import { CanvasIdProps } from '../../dndCanvas/constants';\nimport {\n MOVE_THROTTLE_MS,\n DRAGGABLE_ID_PROP,\n DRAGGABLE_TYPES,\n S_ID\n} from '../constants';\nimport { normaliseMoveMsg } from '../utils/socketMsg/itemMovement';\nimport { moveIdeaMsg } from '../utils/socketMsg/ideas';\nimport { moveImageMsg } from '../utils/socketMsg/images';\nimport { moveWordMsg } from '../utils/socketMsg/words';\nimport {\n getMaxZIndexForType,\n getZIndexForItem,\n isItemMovedByUser\n} from '../selectors';\n\nexport const ITEM_MOVED = 'ITEM_MOVED';\nexport const USER_MOVE_ITEM = 'USER_MOVE_ITEM';\nexport const USER_MOVE_ITEM_STOP = 'USER_MOVE_ITEM_STOP';\n\nconst { IDEA, IMAGE, WORD } = DRAGGABLE_TYPES;\n\nexport const updatePosition = (itemType, itemId, position) => {\n const { posX, posY, posZ } = position;\n return {\n type: ITEM_MOVED,\n payload: {\n posX,\n posY,\n posZ\n },\n meta: { itemType, itemId, canvasId: S_ID }\n };\n};\n\nconst handleItemMoved = (response, itemType) => (dispatch, getState) => {\n const { itemId, posX, posY, posZ } = normaliseMoveMsg(response);\n\n if (!isItemMovedByUser(getState(), itemId)) {\n return dispatch(\n updatePosition(itemType, itemId, {\n posX,\n posY,\n posZ\n })\n );\n }\n};\n\nexport const handleIdeaMoved = response => handleItemMoved(response, IDEA);\n\nexport const handleImageMoved = response => handleItemMoved(response, IMAGE);\n\nexport const handleWordMoved = response => handleItemMoved(response, WORD);\n\n// TODO adjust type annotation\n\n/**\n * @typedef ItemMovementData\n * @property {string} id - ID of the moved item\n * @property {string} type - internal draggable type of the moved item\n * @property {number} posX - X coordinate of the item's new position\n * @property {number} posY - Y coordinate of the item's new position\n * @property {boolean} [dropped] - Whether this is the last move message\n * @todo Annotate `type` with dndCanvas draggable type enum\n */\n\n/**\n * Sends item movement message to the API\n * @param {ItemMovementData} movementData - Description of the current movement\n */\n\nexport const moveObject = ({ id, type, posX, posY, dropped }) => (\n dispatch,\n getState\n) => {\n let idProp, moveMsg;\n\n switch (type) {\n case DRAGGABLE_TYPES.IDEA:\n idProp = CanvasIdProps.Idea;\n moveMsg = moveIdeaMsg;\n break;\n case DRAGGABLE_TYPES.IMAGE:\n idProp = CanvasIdProps.Image;\n moveMsg = moveImageMsg;\n break;\n case DRAGGABLE_TYPES.WORD:\n idProp = DRAGGABLE_ID_PROP.WORD;\n moveMsg = moveWordMsg;\n break;\n default:\n }\n\n if (!idProp) {\n return;\n }\n\n const ownZ = getZIndexForItem(type, id)(getState());\n\n if (dropped) {\n const highestZ = getMaxZIndexForType(type)(getState());\n const posZ = ownZ === highestZ ? ownZ : highestZ + 1;\n\n dispatch(\n updatePosition(type, id, {\n posX,\n posY,\n posZ\n })\n );\n setTimeout(\n () =>\n dispatch({\n type: USER_MOVE_ITEM_STOP,\n payload: null,\n meta: { canvasId: S_ID, itemId: id }\n }),\n MOVE_THROTTLE_MS\n );\n return;\n }\n\n if (!moveMsg) {\n return;\n }\n\n const moveAction = moveMsg(id, posX, posY, ownZ);\n\n dispatch({\n ...moveAction,\n meta: {\n ...moveAction.meta,\n throttle: MOVE_THROTTLE_MS,\n canvasId: S_ID\n }\n });\n\n // Prevent move animation of element being dragged\n setTimeout(\n () =>\n dispatch({\n type: USER_MOVE_ITEM,\n payload: null,\n meta: { canvasId: S_ID, itemId: id }\n }),\n MOVE_THROTTLE_MS\n );\n};\n","import { mapPositionFromMsg } from './_mappers';\n\nexport const normaliseMoveMsg = msg => {\n const [itemId, position, actorUserId] = msg;\n return {\n ...mapPositionFromMsg({ position }),\n itemId,\n userId: actorUserId\n };\n};\n","import React, { useCallback } from 'react';\nimport noop from 'lodash/noop';\nimport PropTypes from 'prop-types';\nimport { Form } from 'react-final-form';\nimport { FORM_ERROR } from 'final-form';\nimport { useDispatch } from 'react-redux';\nimport { compose } from 'redux';\nimport { translate } from 'react-i18next';\nimport translateApiErrorMessage from '../../../utils/translateApiErrorMessage';\nimport { closeModal } from '../../../common/actions/modal';\nimport Button from '@bit/be-novative.kit.button';\nimport Callout from '../../../common/components/Callout';\nimport Panel from '../../../common/components/Panel';\nimport withModal from '../../../common/containers/withModal';\nimport useEditConcept from '../../hooks/useEditConcept';\n\nConceptEditorForm.propTypes = {\n ideaConceptId: PropTypes.string.isRequired,\n onSubmitSuccess: PropTypes.func,\n title: PropTypes.string,\n values: PropTypes.object.isRequired\n};\nfunction ConceptEditorForm({\n children,\n ideaConceptId,\n onSubmitSuccess = noop,\n t,\n title,\n values\n}) {\n const dispatch = useDispatch();\n const editConcept = useEditConcept(ideaConceptId);\n const onSubmit = useCallback(\n async function onSubmit(formVals) {\n try {\n const req = await editConcept(formVals);\n onSubmitSuccess();\n dispatch(closeModal());\n return req;\n } catch (error) {\n return { [FORM_ERROR]: translateApiErrorMessage(t, error) };\n }\n },\n [dispatch, editConcept, onSubmitSuccess, t]\n );\n\n return (\n \n {({ form, handleSubmit }) => {\n const { submitting, submitError } = form.getState();\n return (\n \n
    \n {children}\n \n \n {t('ideaConcepts/subpage/describeForm/submitCTA')}\n \n \n {submitError && (\n \n {submitError}\n \n )}\n \n
    \n );\n }}\n \n );\n}\n\nexport default compose(\n withModal(),\n translate()\n)(ConceptEditorForm);\n","import ConceptEditorForm from './ConceptEditorForm';\n\nexport default ConceptEditorForm;\n","import { createSelector } from 'reselect';\nimport chunk from 'lodash/fp/chunk';\nimport drop from 'lodash/fp/drop';\nimport filter from 'lodash/fp/filter';\nimport flatten from 'lodash/flatten';\nimport flow from 'lodash/flow';\nimport get from 'lodash/get';\nimport head from 'lodash/fp/head';\nimport identity from 'lodash/identity';\nimport isEqual from 'lodash/fp/isEqual';\nimport map from 'lodash/fp/map';\nimport uniq from 'lodash/fp/uniq';\nimport {\n IdeaConceptsFilterBy,\n RESULTS_PAGE_TRENDING_CONCEPT_GET_LIMIT\n} from '../../constants';\nimport getItemByIdFrom from '../../utils/getItemByIdFrom';\nimport { entities } from '../../ideaConcept/constants';\nimport { getEntityMap } from '../../common/selectors/entities';\nimport { getCreator } from '../../common/selectors/meta';\nimport {\n getIdeaConceptId,\n hasConceptSuggestionFromUser\n} from '../../ideaConcept/selectors/ideaConcepts';\n\nexport const rootSelector = state => get(state, 'challengeResults');\n\nexport const getConceptScores = state =>\n state.challengeResults.conceptTrendingScores;\n\nconst getOrderedChunkedTuples = flow(\n getConceptScores,\n chunk(RESULTS_PAGE_TRENDING_CONCEPT_GET_LIMIT)\n);\n\nconst getTrendingTupleChunk = head;\n\nconst getRestOfTupleChunks = flow(\n drop(1),\n flatten\n);\n\nconst getIdsFromTuples = map(head);\n\nexport const getTrendingConcepts = flow(\n getOrderedChunkedTuples,\n getTrendingTupleChunk,\n getIdsFromTuples\n);\n\nexport const getNormalConcepts = flow(\n getOrderedChunkedTuples,\n getRestOfTupleChunks,\n getIdsFromTuples\n);\n\nexport const getActiveTrendingConceptFilters = state =>\n state.challengeResults.trendingConceptFilters;\n\nexport const getConceptIdsBelongingToUser = createSelector(\n (_, userId) => userId,\n getTrendingConcepts,\n getEntityMap(entities.IDEA_CONCEPT),\n (currentUserId, trendingConceptIds, ideaConceptMap) =>\n flow(\n map(getItemByIdFrom(ideaConceptMap)),\n filter(\n flow(\n getCreator,\n isEqual(currentUserId)\n )\n ),\n map(getIdeaConceptId)\n )(trendingConceptIds)\n);\n\nexport const getConceptIdsWithSuggestionFromUser = createSelector(\n getTrendingConcepts,\n identity,\n (_, userId) => userId,\n (trendingConceptIds, state, userId) =>\n filter(\n conceptId => hasConceptSuggestionFromUser(conceptId, userId)(state),\n trendingConceptIds\n )\n);\n\nconst ideaConceptFilterMap = {\n [IdeaConceptsFilterBy.MY_IDEA_CONCEPTS]: getConceptIdsBelongingToUser,\n [IdeaConceptsFilterBy.WROTE_SUGGESTION]: getConceptIdsWithSuggestionFromUser\n};\n\nconst callWithState = (state, userId) => fn => fn(state, userId);\n\nexport const getFilteredTrendingConcepts = createSelector(\n getActiveTrendingConceptFilters,\n getTrendingConcepts,\n identity,\n (_, userId) => userId,\n (activeFilterIds, trendingConceptIds, state, userId) => {\n if (activeFilterIds.length) {\n return flow(\n map(\n flow(\n getItemByIdFrom(ideaConceptFilterMap),\n callWithState(state, userId)\n )\n ),\n flatten,\n uniq\n )(activeFilterIds);\n }\n\n return trendingConceptIds;\n }\n);\n","import get from 'lodash/get';\n\n// TODO move to getters folder\n\n/**\n * Returns the maximum amount of time (in seconds) until ideation participants remain\n * in the current ideation phase. A phase change occurs after this time is expired,\n * regardless of the participant activity.\n * @param {IdeationPhase} phaseConfig\n * @returns {number} The maximum length of this\n */\nexport const getMaxTime = phaseConfig => get(phaseConfig, 'maxLengthInSeconds');\n\n/**\n * Returns the phase name that should be displayed for participants during ideation.\n * It is either a string constant for default values, or a custom value entered by the challenge creator\n * @param {IdeationPhase} phaseConfig\n * @returns {(string|DefaultIdeationPhaseName)}\n */\nexport const getPhaseName = phaseConfig => get(phaseConfig, 'name');\n\n/**\n * Returns the phase type that dictates phase behaviour during ideation\n * @param {IdeationPhase} phaseConfig\n * @returns {IdeationPhaseType}\n */\nexport const getPhaseType = phaseConfig =>\n get(phaseConfig, 'ideationPhaseType');\n\n/**\n * @param {IdeationPhase} phaseConfig\n * @returns {string}\n */\nexport const getPhaseId = phaseConfig => get(phaseConfig, 'ideationPhaseId');\n","import { SortDirection } from '../constants';\nimport { CanvasBackgroundType } from '../ideaConceptCanvas/constants';\nimport { isCepheidVariant } from '../utils/variants';\nimport {\n conceptEditorFormFields,\n conceptListColumns,\n IdeaConceptImplementationStatus\n} from './constants';\n\nexport const IDEA_CONCEPT_ATTACHMENT_EXTENSIONS = [\n 'txt',\n 'pdf',\n 'ppt',\n 'pptx',\n 'xls',\n 'xlsx',\n 'doc',\n 'docx',\n 'png',\n 'jpg'\n];\nexport const IDEA_CONCEPT_ATTACHMENT_NAME_MAX_LENGTH = 50;\nexport const IDEA_CONCEPT_ATTACHMENT_SIZE_MB = 20;\nexport const IDEA_CONCEPT_TITLE_FIELD_MAXLENGTH = 128;\nexport const IDEA_CONCEPT_DETAILS_FIELD_MAXLENGTH = isCepheidVariant()\n ? 500\n : 5000;\n\n/**\n * @typedef {Object} ConceptSubpageConfig\n * Controls which platform displays which concept template.\n * Keys are platform names, values are template IDs used in\n * `` and ``.\n */\nexport const ConceptSubpageConfig = {\n _default: 'base',\n amdocsavishkar: 'amdocsavishkar',\n budapestglobal: 'classic',\n cepheid: 'cepheid',\n cepheiddemo: 'cepheid',\n cloud: 'classic',\n demo: 'classic',\n experiencing: 'classic',\n financing: 'classic',\n future: 'classic',\n givaudanint: 'givaudanint',\n hackathonnagraduates: 'hackathonnagraduates',\n innovationaward: 'classic',\n m: 'merck',\n 'm-apac': 'merck',\n mav: 'classic',\n mccvezetokepzoakademia: 'mcc',\n 'mvm-csoport': 'classic',\n 'mvm-catalyst': 'classic',\n smu: 'smu',\n snt: 'classic',\n team: 'smu',\n trial: 'cepheid'\n};\n\nexport const ConceptCanvasConfig = {\n _default: CanvasBackgroundType.EmpathyMap,\n 'conference-board': CanvasBackgroundType.ProblemOpportunityMap,\n 'iknow-who': CanvasBackgroundType.ProblemOpportunityMap,\n 'm-apac': [\n CanvasBackgroundType.ProblemDeconstruction,\n CanvasBackgroundType.BusinessModel\n ],\n 'mvm-csoport': CanvasBackgroundType.ProblemOpportunityMap,\n 'mvm-catalyst': CanvasBackgroundType.ProblemOpportunityMap,\n alfaped: CanvasBackgroundType.InsightCanvas,\n amdocsavishkar: [\n CanvasBackgroundType.BusinessModel,\n CanvasBackgroundType.InsightCanvas,\n CanvasBackgroundType.RiskAnalysis,\n CanvasBackgroundType.StakeholderMap\n ],\n blee: CanvasBackgroundType.ProblemOpportunityMap,\n cepheid: CanvasBackgroundType.CepheidBusinessModel,\n cepheiddemo: CanvasBackgroundType.CepheidBusinessModel,\n cloud: CanvasBackgroundType.ProblemOpportunityMap,\n egis: CanvasBackgroundType.ProblemOpportunityMap,\n experiencecon: CanvasBackgroundType.ProblemOpportunityMap,\n experiencing: CanvasBackgroundType.ProblemOpportunityMap,\n financing: CanvasBackgroundType.SmuValueProposition,\n future: CanvasBackgroundType.SocialImpactMap,\n givaudanint: CanvasBackgroundType.GivaudanInt,\n gthree: CanvasBackgroundType.ProblemOpportunityMap,\n hackathonnagraduates: CanvasBackgroundType.ProblemOpportunityMap,\n ihub: CanvasBackgroundType.ProblemOpportunityMap,\n ilumalabs: CanvasBackgroundType.ProblemOpportunityMap,\n innovationaward: CanvasBackgroundType.BusinessModel,\n lantmannen: CanvasBackgroundType.InsightCanvas,\n m: [\n CanvasBackgroundType.ProblemDeconstruction,\n CanvasBackgroundType.BusinessModel\n ],\n mav: CanvasBackgroundType.ProblemOpportunityMap,\n mccvezetokepzoakademia: CanvasBackgroundType.MissionModel,\n partnerhub: CanvasBackgroundType.ProblemOpportunityMap,\n richter: CanvasBackgroundType.ProblemOpportunityMap,\n snt: CanvasBackgroundType.RiskAnalysis,\n smu: [\n CanvasBackgroundType.BusinessModel,\n CanvasBackgroundType.BusinessModel2,\n CanvasBackgroundType.InsightCanvas,\n CanvasBackgroundType.SmuValueProposition,\n CanvasBackgroundType.SmuZones\n ],\n spaceforfood: CanvasBackgroundType.ProblemDeconstruction,\n team: [\n CanvasBackgroundType.BusinessModel,\n CanvasBackgroundType.SmuValueProposition\n ],\n trial: CanvasBackgroundType.CepheidBusinessModel,\n upthereeverywhere: CanvasBackgroundType.ProblemOpportunityMap\n};\n\n/**\n * Config objects keyed by platform names and concept form fields.\n * These settings are consumed by the concept subpage forms.\n */\nexport const ConceptFormConfig = {\n 'mvm-csoport': {\n [conceptEditorFormFields.BENEFITS]: {\n required: true\n },\n [conceptEditorFormFields.COSTS]: {\n required: true\n },\n [conceptEditorFormFields.PLANNED_ACTIVITIES]: {\n required: true\n }\n },\n 'mvm-catalyst': {\n [conceptEditorFormFields.BENEFITS]: {\n required: true\n },\n [conceptEditorFormFields.COSTS]: {\n required: true\n },\n [conceptEditorFormFields.PLANNED_ACTIVITIES]: {\n required: true\n }\n }\n};\n\n/**\n * Config objects keyed by platform names and concept form fields.\n * These settings are consumed by the quick concept form.\n */\nexport const InsightFormConfig = {\n givaudanint: {\n [conceptEditorFormFields.BENEFITS]: {\n hidden: true\n },\n [conceptEditorFormFields.COSTS]: {\n hidden: true\n },\n labelContext: 'givaudanint'\n },\n innovationaward: {\n [conceptEditorFormFields.BENEFITS]: {\n required: true\n },\n [conceptEditorFormFields.COSTS]: {\n required: true\n },\n [conceptEditorFormFields.PLANNED_ACTIVITIES]: {\n required: true\n },\n [conceptEditorFormFields.TEAM]: {\n minLength: 1\n },\n forceExpanded: true,\n labelContext: 'innoawardinsight'\n },\n 'mvm-csoport': {\n forceExpanded: true,\n ...ConceptFormConfig['mvm-csoport']\n },\n 'mvm-catalyst': {\n forceExpanded: true,\n ...ConceptFormConfig['mvm-csoport']\n }\n};\n\n/**\n * @enum {number} IdeaConceptEvaluationFormConfig\n * Controls the range and steps of concept evaluation criteria\n * @readonly\n */\nexport const IdeaConceptEvaluationFormConfig = {\n /** The minimum selectable value, intended for skipping evaluation for the given criterion. This value isn't taken into account by the API when calculating the score. */\n CRITERION_MIN: 0,\n /** The maximum selectable value for the criterion */\n CRITERION_MAX: 10,\n /** The incremental value by which scores can be changed in the input fields */\n CRITERION_STEP: 1\n};\nexport const CepheidConceptEvaluationFormConfig = {\n /** The minimum selectable value, intended for skipping evaluation for the given criterion. This value isn't taken into account by the API when calculating the score. */\n CRITERION_MIN: 0,\n /** The maximum selectable value for the criterion */\n CRITERION_MAX: 3,\n /** The incremental value by which scores can be changed in the input fields */\n CRITERION_STEP: 1\n};\nexport const CONCEPT_EVAL_CRITERIA_MAXLENGTH = 40;\n\nexport const CONCEPT_LIST_PAGE_SIZE = 10;\nexport const CONCEPT_LIST_ITEM_MAX_WORD_COUNT = 200;\nexport const CONCEPT_LIST_DEFAULT_SORT = {\n sortBy: conceptListColumns.CREATE_TIME,\n sortDirection: SortDirection.DESC\n};\nexport const CONCEPT_LIST_DEFAULT_STAGE_FILTER =\n IdeaConceptImplementationStatus.VALIDATION;\n","export function getFullPath() {\n return window.location.href;\n}\n\nexport function getBasePath() {\n return `${window.location.protocol}//${window.location.host}`;\n}\n","import { ADD_SUGGESTION_TO_IDEA } from '../../constants';\nimport { VOYAGER_API } from '../../api/constants';\nimport {\n CLOSE_INTRO_MESSAGE,\n VIEW_CHALLENGE_INFO,\n PAGINATE_IDEA_CARDS,\n SKIP_SUGGESTIONS\n} from '../../ideaConcept/constants';\nimport { convertApiErrorToStatusCode } from '../../api/utils/apiError';\n\nexport const addSuggestionToIdea = (suggestion, ideaId) => async dispatch => {\n try {\n await dispatch({\n [VOYAGER_API]: {\n url: `/ideas/${ideaId}/suggestion`,\n method: 'POST',\n type: ADD_SUGGESTION_TO_IDEA,\n data: { text: suggestion }\n }\n });\n } catch (error) {\n const code = convertApiErrorToStatusCode(error);\n throw new Error({ error, code });\n }\n};\n\nexport const addSuggestionToConcept = (text, conceptId) => async dispatch => {\n try {\n await dispatch({\n [VOYAGER_API]: {\n url: `/idea-concepts/${conceptId}/suggestions`,\n method: 'POST',\n type: ADD_SUGGESTION_TO_IDEA,\n data: { text }\n }\n });\n } catch (error) {\n const code = convertApiErrorToStatusCode(error);\n throw new Error({ error, code });\n }\n};\n\nexport const closeIntroMessage = challengeId => ({\n type: CLOSE_INTRO_MESSAGE,\n metrics: { challengeId }\n});\n\nexport const openChallengeInfoModal = challengeId => ({\n type: VIEW_CHALLENGE_INFO,\n metrics: { challengeId }\n});\n\nexport const paginateIdeas = (\n challengeId,\n currentPage,\n pageCount,\n feature\n) => ({\n type: PAGINATE_IDEA_CARDS,\n metrics: {\n challengeId,\n currentPage,\n page: feature,\n pageCount\n }\n});\n\nexport const skipSuggestions = challengeId => ({\n type: SKIP_SUGGESTIONS,\n metrics: { challengeId }\n});\n","import { useLocation } from 'react-router-dom';\nimport { parseQueryString } from '../../utils';\n\n/**\n * Extracts the URL query params through `react-router-dom`, and converts the string to an object\n * @returns {Object.}\n */\nexport default function useQueryParams() {\n return parseQueryString(useLocation().search);\n}\n","import React, { useEffect, useState } from 'react';\nimport flow from 'lodash/flow';\nimport getFp from 'lodash/fp/get';\nimport PropTypes from 'prop-types';\nimport Logo from '@bit/be-novative.kit.logo';\nimport { useSelector } from 'react-redux';\nimport { platformDataSelector } from '../../state/platform';\nimport { getPlatformName } from '../../getters/platform';\nimport { getUrl } from '../../selectors/images';\n\nPlatformLogo.propTypes = {\n fluid: PropTypes.bool,\n compact: PropTypes.bool\n};\nfunction PlatformLogo(props) {\n const platformData = useSelector(platformDataSelector);\n const platformName = getPlatformName(platformData);\n const customLogoUrl = flow(\n getFp('image'),\n getUrl\n )(platformData);\n\n const [hasImg, setHasImg] = useState(false);\n const [hasTriedLoading, setHasTriedLoading] = useState(false);\n\n useEffect(\n function downloadPlatformLogo() {\n const logoImg = new Image();\n logoImg.onload = () => {\n setHasImg(true);\n setHasTriedLoading(true);\n };\n logoImg.onerror = () => setHasTriedLoading(true);\n logoImg.src = customLogoUrl;\n },\n [customLogoUrl]\n );\n\n const imgUrl = hasImg ? customLogoUrl : null;\n const showLogo = !customLogoUrl || hasTriedLoading;\n\n return (\n \n );\n}\n\nexport default PlatformLogo;\n","import flow from 'lodash/flow';\nimport mapFp from 'lodash/fp/map';\nimport isEmpty from 'lodash/isEmpty';\nimport mapValues from 'lodash/mapValues';\nimport merge from 'lodash/merge';\nimport pickFp from 'lodash/fp/pick';\nimport uniq from 'lodash/uniq';\nimport uniqBy from 'lodash/uniqBy';\nimport upperCase from 'lodash/upperCase';\nimport moment from 'moment';\nimport {\n maybeHtmlFromState,\n htmlFromState\n} from '@bit/be-novative.kit.richtext-utils';\nimport sanitizeForJSON from '@bit/be-novative.kit.sanitize-for-json';\nimport { convertInviteeToIdString } from '../../utils/payloadUtils/invitee';\nimport {\n areConceptEvalCriteriaSet,\n createCriteriaConfig\n} from './conceptEvalUtils';\nimport {\n ChallengeScenario,\n ChallengeVisiblity,\n CHALLENGE_FORM_FIELDS as FIELDS\n} from '../constants';\nimport { getCategoryId } from '../../common/getters/categories';\nimport { getUserId } from '../../common/getters/users';\nimport { getPhaseId } from '../../ideation/selectors/ideationPhase';\nimport { convertDoubleQuotes } from '../../utils/strNormalise';\n\nconst {\n AXIS_X,\n AXIS_Y,\n CATEGORY,\n CLOSE_TIME,\n CONCEPT_EVAL_CRITERIA,\n CREATOR,\n DEFAULT_CONCEPT_OWNER,\n DESCRIPTION,\n DURATION_CUSTOM,\n DURATION_PRESET,\n FACILITATED,\n FEATURED,\n GROUP_IDEATION_TIME,\n GROUP_IDEATION_TIMEZONE,\n HASHTAGS,\n IDEATION_PHASES,\n IDEATION_ROOM_MAX_SIZE,\n IMAGE,\n INVITE_EMAIL,\n INVITE_ALL_USERS,\n INVITED_USERS,\n LANGUAGE,\n SCENARIO,\n START_TIME,\n START_PHASE,\n TITLE,\n VISIBILITY\n} = FIELDS;\n\n/**\n * Field values that don't require any conversion or sanitisation\n */\nconst VALID_CHALLENGE_KEYS = [\n AXIS_X,\n AXIS_Y,\n CATEGORY,\n CLOSE_TIME,\n CREATOR,\n DEFAULT_CONCEPT_OWNER,\n DESCRIPTION,\n FACILITATED,\n FEATURED,\n GROUP_IDEATION_TIME,\n GROUP_IDEATION_TIMEZONE,\n HASHTAGS,\n IDEATION_PHASES,\n IDEATION_ROOM_MAX_SIZE,\n IMAGE,\n INVITE_ALL_USERS,\n INVITE_EMAIL,\n INVITED_USERS,\n LANGUAGE,\n SCENARIO,\n START_TIME,\n START_PHASE,\n TITLE,\n VISIBILITY\n];\n\nexport const getChallengeDates = (presetRange, customDuration = []) => {\n if (presetRange) {\n return {\n [START_TIME]: moment()\n .utc()\n .format(),\n [CLOSE_TIME]: moment()\n .add(moment.duration(presetRange))\n .utc()\n .format()\n };\n }\n\n if (!isEmpty(customDuration)) {\n const [startsAt, closesAt] = customDuration;\n\n return { [START_TIME]: startsAt, [CLOSE_TIME]: closesAt };\n }\n\n return {};\n};\n\nexport const pickChallengeKeys = pickFp(VALID_CHALLENGE_KEYS);\n\n/**\n * Normalises the challenge payload for submission to the API\n * @param {Challenge} changedValues - The new challenge values. When editing a challenge, only the changed fields should be present in this argument.\n * @param {Object} options\n * @param {Challenge} options.existingData - Existing challenge data should be supplied when editing a challenge. This is necessary because the merge strategy must be adjusted on a per-field basis.\n * @param {boolean} options.isImageUpdated - Must be set to `true` explicitly, as the API expects `null` when the challenge image isn't updated\n * @return {ChallengePayloadForSubmission} The normalised challenge payload ready for submission\n */\n\nconst createChallengeRequest = (\n changedValues,\n options = { existingData: {}, isImageUpdated: false }\n) => {\n const mergedValues = merge(options.existingData, changedValues);\n const payload = mapValues(mergedValues, function replaceArraysWithNewest(\n mergedVal,\n key\n ) {\n return Array.isArray(changedValues[key]) ? changedValues[key] : mergedVal;\n });\n const datesFromDuration = getChallengeDates(\n payload[DURATION_PRESET],\n payload[DURATION_CUSTOM]\n );\n const startTime = payload[START_TIME] || datesFromDuration[START_TIME];\n const closeTime = payload[CLOSE_TIME] || datesFromDuration[CLOSE_TIME];\n const phases = isEmpty(options.existingData)\n ? payload[IDEATION_PHASES]\n : uniqBy(payload[IDEATION_PHASES], getPhaseId);\n\n return {\n ...pickChallengeKeys(payload),\n [CATEGORY]: payload[CATEGORY] || getCategoryId(payload.category), // `categoryId` if categ was edited; denormalized `category` if it wasn't touched\n [CREATOR]: getUserId(payload[CREATOR]) || undefined,\n [CLOSE_TIME]: closeTime,\n [DESCRIPTION]: flow(\n maybeHtmlFromState,\n convertDoubleQuotes\n )(payload[DESCRIPTION]),\n [AXIS_X]: payload[AXIS_X] || null,\n [AXIS_Y]: payload[AXIS_Y] || null,\n [CONCEPT_EVAL_CRITERIA]: areConceptEvalCriteriaSet(payload)\n ? createCriteriaConfig(payload)\n : undefined,\n [IMAGE]: options.isImageUpdated ? payload[IMAGE] : null, // null should be sent when image is not updated\n [INVITED_USERS]: flow(\n mapFp(convertInviteeToIdString),\n uniq\n )(payload[INVITED_USERS]),\n [LANGUAGE]: upperCase(payload[LANGUAGE]),\n [IDEATION_PHASES]: phases,\n [INVITE_EMAIL]: htmlFromState(payload[INVITE_EMAIL]),\n [INVITE_ALL_USERS]:\n payload[INVITE_ALL_USERS] &&\n payload[VISIBILITY] === ChallengeVisiblity.PUBLIC,\n [SCENARIO]: payload[SCENARIO] || ChallengeScenario.Default,\n [START_TIME]: startTime,\n [TITLE]: sanitizeForJSON(payload[TITLE])\n };\n};\n\nexport default createChallengeRequest;\n","import get from 'lodash/get';\nimport { ConceptCanvasConfig } from '../../ideaConcept/config';\nimport { getPlatformName } from '../../utils/platform';\n\n/**\n * Returns the ID of the allowed concept canvas background type by checking the concept config file.\n * If the platform has no setting, a default canvas type is returned.\n * @return {(CanvasBackgroundType|CanvasBackgroundType[])} One or more canvas background types\n */\nexport default function useAllowedCanvasBackgroundType() {\n return get(\n ConceptCanvasConfig,\n getPlatformName(),\n ConceptCanvasConfig._default\n );\n}\n","import React from 'react';\nimport cn from 'classnames';\nimport './GridList.css';\n\nfunction GridList({ className, children }) {\n return
    {children}
    ;\n}\n\nexport default GridList;\n","import GridList from './GridList';\n\nexport default GridList;\n","import React, { Component } from 'react';\nimport debounce from 'lodash/debounce';\nimport get from 'lodash/get';\nimport size from 'lodash/size';\nimport isNumber from 'lodash/isNumber';\nimport isObject from 'lodash/isObject';\nimport PropTypes from 'prop-types';\nimport { translate } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { compose } from 'redux';\nimport { TagsInputFormControl } from '../../../common/components';\nimport {\n searchUsers,\n flushUserHits,\n selectors as userSelectors\n} from '../../../common/state/users';\nimport { USER_AUTOSELECT_TAG_DISPLAY_PROP } from '../../../constants';\nimport { API_QUERY_DEBOUNCE } from '../../../api/constants';\nimport localiseUserName from '../../../utils/localiseUserName';\nimport { isInvitedUserValid } from '../../../utils/validation';\n\nconst INVALID_TAG_CLASSNAME = 'TagsInput__Tag--invalid';\n\nclass UserTagsInputFormControl extends Component {\n static propTypes = {\n autoFocus: PropTypes.bool,\n minCount: PropTypes.number,\n validationRegex: PropTypes.object.isRequired,\n input: PropTypes.object.isRequired\n };\n\n componentWillUnmount() {\n this.props.flushUserHits();\n }\n\n handleSuggestionsFetchRequested = ({ value }) => {\n this.props.searchUsers(value);\n };\n\n getDisplayName = sug => {\n const localisedName = localiseUserName(this.props.t, sug);\n\n if (localisedName) {\n return localisedName;\n }\n\n return get(sug, USER_AUTOSELECT_TAG_DISPLAY_PROP, '').toString();\n };\n\n renderSuggestion = sug => {this.getDisplayName(sug)};\n\n getTagClassName = tag => (this.isTagValid(tag) ? '' : INVALID_TAG_CLASSNAME);\n\n convertDisplayValueForRendering = tag => {\n if (isObject(tag)) {\n return {\n ...tag,\n [USER_AUTOSELECT_TAG_DISPLAY_PROP]: this.getDisplayName(\n tag\n ).toLowerCase()\n };\n }\n\n return {\n [USER_AUTOSELECT_TAG_DISPLAY_PROP]: tag\n };\n };\n\n isTagValid = isInvitedUserValid(this.props.validationRegex);\n\n handleChange = (tags = []) => {\n const { input } = this.props;\n const mappedTags = tags.map(this.convertDisplayValueForRendering);\n\n input.onChange(mappedTags);\n };\n\n render() {\n const {\n autoFocus,\n validationRegex,\n suggestions,\n input,\n meta,\n minCount,\n ...rest\n } = this.props;\n const disableDelete = isNumber(minCount)\n ? size(get(input, 'value', [])) <= minCount\n : false;\n\n return (\n \n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n suggestions: userSelectors.getSearchHits(state)\n };\n}\n\nconst mapDispatchToProps = dispatch => ({\n searchUsers: debounce(\n (...args) => dispatch(searchUsers(...args)),\n API_QUERY_DEBOUNCE\n ),\n flushUserHits: () => dispatch(flushUserHits())\n});\n\nexport { UserTagsInputFormControl };\n\nexport default compose(\n translate(),\n connect(\n mapStateToProps,\n mapDispatchToProps\n )\n)(UserTagsInputFormControl);\n","import UserTagsInputFormControl from './UserTagsInputFormControl';\n\nexport default UserTagsInputFormControl;\n","import get from 'lodash/get';\nimport memoize from 'lodash/memoize';\nimport LocalStorage from 'store2';\nimport * as Sentry from '@sentry/browser';\nimport setUserContext from '../../telemetry/setUserContext';\n\nexport const TOKEN_KEY = 'jwt_token';\nconst LOG_CATEG = 'authentication';\n\nexport function getToken() {\n return LocalStorage.get(TOKEN_KEY);\n}\n\nexport function setToken(token) {\n Sentry.addBreadcrumb({\n category: LOG_CATEG,\n message: 'Setting new token...',\n data: { token }\n });\n\n if (token && isTokenValid(token)) {\n Sentry.addBreadcrumb({\n category: LOG_CATEG,\n message: 'Token is valid'\n });\n LocalStorage.set(TOKEN_KEY, token, true);\n setTelemetryContextWithUser(getTokenData());\n } else {\n Sentry.addBreadcrumb({\n category: LOG_CATEG,\n level: Sentry.Severity.Warning,\n message: 'Token is invalid'\n });\n throw new Error('Invalid token');\n }\n}\n\nexport function clearToken() {\n LocalStorage.remove(TOKEN_KEY);\n Sentry.addBreadcrumb({\n category: LOG_CATEG,\n message: 'User logout'\n });\n setTelemetryContextWithUser({ email: null, userId: null });\n}\n\nfunction setTelemetryContextWithUser({ email, userId }) {\n setUserContext(userId, email);\n}\n\nexport function isTokenValid(token = getToken()) {\n if (!token) {\n return false;\n }\n\n try {\n return _temp_isTokenValid(decodeToken(token));\n } catch (error) {\n return false;\n }\n}\n\n// Temporary to handle difference between new and old API\n// New API doesn't contain custom `expires` prop in payload,\n// but the old API incorrectly sets `exp` to be the current time\nfunction _temp_getExpiration(tokenData = {}) {\n if (_temp_isNewApi()) {\n return Number(get(tokenData, 'exp'));\n }\n return new Date(get(tokenData, ['payload', 'expires']));\n}\n\nfunction _temp_isTokenValid(tokenData) {\n const expiration = _temp_getExpiration(tokenData);\n let now = Date.now() / 1000;\n return expiration > now;\n}\n\nfunction _temp_isNewApi() {\n return (\n process.env.REACT_APP_VOYAGER_API_BASE_URL ===\n 'https://api-eu.be-novative.dev/api'\n );\n}\n\nfunction decodeToken(token) {\n try {\n const [, rawPayload] = token.split('.');\n const { sub, ...otherData } = JSON.parse(atob(rawPayload));\n return {\n payload: JSON.parse(sub),\n ...otherData\n };\n } catch (e) {\n throw new Error('Cannot deserialize JWT token!');\n }\n}\n\nconst decodeTokenMemo = memoize(decodeToken);\n\n/**\n * @typedef {Object} Token\n * @property {string} email - User email\n * @property {string} userId - User ID\n * @property {string} copmanyId - Platform ID\n */\n\n/**\n * Extracts user ID, email, and company ID from the token\n * @param {string} [token] - Encoded token to extract. By default, it fetches the token from local storage.\n * @return {Token} Token data or an empty object if token extraction fails\n */\n\nexport function getTokenData(token = getToken()) {\n try {\n const { payload } = decodeTokenMemo(token);\n\n return {\n email: get(payload, 'email'),\n userId: get(payload, 'userId'),\n companyId: get(payload, 'companyId')\n };\n } catch (error) {\n return {};\n }\n}\n","import flow from 'lodash/flow';\nimport head from 'lodash/head';\nimport get from 'lodash/fp/get';\nimport isEqual from 'lodash/isEqual';\nimport { ALERT_SEND, ALERT_DISMISS, ALERT_CLEAR } from '../../constants';\n\nexport default function(state = [], action) {\n if (!action || !action.type) return state;\n\n switch (action.type) {\n case ALERT_SEND:\n return [\n action.payload,\n ...state.filter(({ id }) => id !== action.payload.id)\n ];\n case ALERT_DISMISS:\n return state.filter(alert => alert.id !== action.payload);\n case ALERT_CLEAR:\n return [];\n default:\n return state;\n }\n}\n\nconst getId = get('id');\n\nexport const getCurrentAlert = state => head(state);\n\nexport const getCurrentAlertId = state =>\n flow(\n getCurrentAlert,\n getId\n )(state);\n\nexport const isAlertActive = alertId => state =>\n flow(\n getCurrentAlert,\n getId,\n isEqual(alertId)\n )(state);\n","import get from 'lodash/get';\nimport isNumber from 'lodash/isNumber';\nimport size from 'lodash/size';\nimport invariant from 'invariant';\nimport { handleActions, combineActions } from 'redux-actions';\nimport forceArray from '../../../utils/forceArray';\n\nconst paginationInitialState = {\n currentPage: 0,\n nextPage: -1,\n prevPage: -1,\n lastPage: -1\n};\n\nexport const getInfiniteScrollData = action => {\n const { payload, meta } = action;\n const start = get(meta, 'start', 0);\n const limit = get(meta, 'limit');\n const collectionSize = size(payload);\n let nextStart = start;\n\n if (collectionSize > 0) {\n nextStart += collectionSize || limit;\n }\n\n return {\n start,\n limit,\n nextStart\n };\n};\n\nexport const getPagerData = action => {\n const { meta } = action;\n\n return {\n currentPage: get(meta, 'currentPage', 0),\n nextPage: get(meta, 'nextPage', -1),\n prevPage: get(meta, 'prevPage', -1),\n lastPage: get(meta, 'lastPage', -1)\n };\n};\n\nconst NO_ACTION = Symbol('empty');\n\n/**\n * @typedef {Object} PaginationReducerActionArgs\n * @property {(Array|string)} [successActions] - Action(s) that contain updated pagination data\n * @property {(Array|string)} [flushActions] - Action(s) that trigger the reducer to reset to the first page\n */\n\nconst ACTION_DEFAULTS = {\n successActions: [NO_ACTION],\n flushActions: [NO_ACTION]\n};\n\n/**\n * @typedef {Object} PaginationReducerConfig\n * @property {number} [currentPage] - The initial page index for pagination reducers\n * @property {number} [start] - The initial start position for infinite-scroll reducers\n * @property {number} [limit] - The page size for infinite-scroll reducers\n * @property {boolean} [cursorBased] - Whether the generated reducer function is used for infinite scroll. Defaults to `true`.\n */\n\nconst CONFIG_DEFAULTS = {\n currentPage: 0,\n start: 0,\n limit: 0,\n cursorBased: true\n};\n\n/**\n * Generates a reducer function for storing pagination or infinite-scroll data\n * @param {PaginationReducerActionArgs} actionTypes - One or more Redux actions that trigger the generated reducer function to store or drop pagination data\n * @param {PaginationReducerConfig} [options] - Reducer configuration\n * @returns {Function} The generated reducer function\n */\n\nconst paginationReducerFactory = (\n actionTypes = ACTION_DEFAULTS,\n options = CONFIG_DEFAULTS\n) => {\n const actions = { ...ACTION_DEFAULTS, ...actionTypes };\n const config = { ...CONFIG_DEFAULTS, ...options };\n const { currentPage, start, limit, cursorBased } = config;\n\n if (cursorBased) {\n invariant(isNumber(start), 'Default `start` value must be an integer');\n invariant(\n isNumber(limit) && limit > 0,\n 'Default `limit` value must be a positive integer'\n );\n } else {\n invariant(\n isNumber(currentPage),\n 'Default `currentPage` value must be an integer'\n );\n }\n\n const defaultState = cursorBased\n ? { start, nextStart: start, limit }\n : { ...paginationInitialState, currentPage };\n\n return handleActions(\n {\n [combineActions(...forceArray(actions.successActions))](\n _,\n currentAction\n ) {\n return cursorBased\n ? getInfiniteScrollData(currentAction)\n : getPagerData(currentAction);\n },\n [combineActions(...forceArray(actions.flushActions))](state) {\n return cursorBased\n ? { ...state, start: 0, nextStart: 0 }\n : { ...state, currentPage: 0, nextPage: 0, prevPage: -1 };\n }\n },\n defaultState\n );\n};\n\nexport default paginationReducerFactory;\n","import get from 'lodash/get';\nimport { handleActions, combineActions } from 'redux-actions';\nimport { VOYAGER_API } from '../../api/constants';\nimport asyncActionType from '../../utils/asyncActionType';\nimport { saveExcel } from '../../utils/saveFile';\nimport getFilenameFromAjaxHeader from '../../utils/getFilenameFromAjaxHeader';\n\nexport const EXPORT_IDEAS = asyncActionType('EXPORT_IDEAS');\nexport const exportChallengeIdeas = challengeId => async dispatch => {\n try {\n const promise = await dispatch({\n [VOYAGER_API]: {\n url: `challenges/${challengeId}/export`,\n method: 'GET',\n responseType: 'blob',\n type: EXPORT_IDEAS,\n metrics: {\n challengeId\n }\n }\n });\n const defaultFileName = 'ideas_export.xlsx';\n const fileName = getFilenameFromAjaxHeader(\n get(promise, 'headers[content-disposition]')\n );\n\n saveExcel(promise.data, fileName || defaultFileName);\n } catch (error) {\n console.error(error);\n throw error;\n }\n};\n\n// TODO [CLOUD-5589] unnecessary reducer, load/fail states are handled by consumer hook\nconst exportPending = handleActions(\n {\n [EXPORT_IDEAS.PENDING]: () => true,\n [combineActions(EXPORT_IDEAS.SUCCESS, EXPORT_IDEAS.ERROR)]: () => false\n },\n false\n);\n\nexport default exportPending;\n","export default function calculateSurplusItems(items = [], maxItems) {\n const maxDisplay = Math.floor(maxItems) || 0;\n const shouldTruncate = maxDisplay > 0;\n\n if (!Array.isArray(items)) {\n throw new Error(`items should be an array, found ${typeof items} instead`);\n }\n\n const surplus = shouldTruncate ? Math.max(items.length - maxDisplay, 0) : 0;\n const visibleItems = shouldTruncate ? items.slice(0, maxDisplay) : items;\n\n return [visibleItems, surplus];\n}\n","import React, { Component } from 'react';\nimport chunk from 'lodash/chunk';\nimport noop from 'lodash/noop';\nimport slice from 'lodash/slice';\nimport PropTypes from 'prop-types';\nimport { ViewPager, Frame } from 'react-view-pager';\n\nexport default class Container extends Component {\n static propTypes = {\n animated: PropTypes.bool,\n paginateBy: PropTypes.number.isRequired\n };\n static defaultProps = {\n animated: false,\n children: () => null,\n items: [],\n onNext: noop,\n onPrev: noop\n };\n\n state = {\n currentPage: 0\n };\n\n getPageCount() {\n const { items, paginateBy } = this.props;\n\n return paginateBy < 1 ? 1 : Math.ceil(items.length / paginateBy);\n }\n\n getAllPages() {\n const { items, paginateBy } = this.props;\n\n return chunk(items, paginateBy);\n }\n\n getCurrentPage() {\n return this.getItemsForPage(this.state.currentPage);\n }\n\n getItemsForPage(page) {\n const { items, paginateBy } = this.props;\n const sliceStart = page * paginateBy;\n const sliceEnd = sliceStart + paginateBy;\n\n return slice(items, sliceStart, sliceEnd);\n }\n\n getVisibleItems() {\n return this.props.animated ? this.getAllPages() : this.getCurrentPage();\n }\n\n getChildProps() {\n const oneBasedCurrentPage = this.state.currentPage + 1;\n\n return {\n currentPage: oneBasedCurrentPage,\n items: this.getVisibleItems(),\n pageCount: this.getPageCount(),\n navProps: {\n onNext: this.handleNext,\n onPrev: this.handlePrev\n },\n slideTrackProps: this.getSlideTrackProps()\n };\n }\n\n getSlideTrackProps() {\n if (this.props.animated) {\n return {\n currentView: this.state.currentPage,\n onViewChange: this.handleSwipeFinish,\n ref: ref => (this.slider = ref)\n };\n }\n }\n\n handleNext = event => {\n this.setState(\n state => ({ currentPage: state.currentPage + 1 }),\n () =>\n this.props.onNext(event, this.state.currentPage, this.getPageCount())\n );\n };\n\n handlePrev = event => {\n this.setState(\n state => ({ currentPage: state.currentPage - 1 }),\n () =>\n this.props.onPrev(event, this.state.currentPage, this.getPageCount())\n );\n };\n\n handleSwipeFinish = ([currentPage]) => {\n if (this.state.currentPage !== currentPage) {\n this.setState({ currentPage });\n }\n };\n\n render() {\n const shouldAnimate = this.props.animated && this.getPageCount() > 1;\n\n return shouldAnimate\n ? this.renderAnimated()\n : this.props.children({ ...this.getChildProps() });\n }\n\n renderAnimated() {\n return (\n \n {this.props.children({ ...this.getChildProps() })}\n \n );\n }\n}\n","import Container from './Container';\nimport Navigation from './Navigation';\n\nexport default { Container, Navigation };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@bit/be-novative.kit.button';\nimport Icon from '../../components/Icon';\nimport './PaginationHorizontal.css';\n\nNavigation.propTypes = {\n disablePrev: PropTypes.bool,\n disableNext: PropTypes.bool,\n onNext: PropTypes.func,\n onPrev: PropTypes.func\n};\nexport default function Navigation({\n className,\n currentPage,\n disableNext,\n disablePrev,\n onNext,\n onPrev,\n pageCount\n}) {\n const disablePrevBtn = disablePrev || currentPage === 1;\n const disableNextBtn = disableNext || pageCount - currentPage === 0;\n\n return (\n
    \n {disablePrevBtn ? (\n
    \n ) : (\n \n \n \n )}\n {disableNextBtn ? (\n
    \n ) : (\n \n \n \n )}\n
    \n );\n}\n","import { Field } from 'react-final-form';\nimport withManualDiff from '../withManualDiff';\n\nconst FieldWithManualDiff = withManualDiff()(Field);\n\nexport default FieldWithManualDiff;\n","import FieldWithManualDiff from './FieldWithManualDiff';\n\nexport default FieldWithManualDiff;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport CopyToClipboard from 'react-copy-to-clipboard';\nimport { compose } from 'redux';\nimport { translate } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport * as actions from '../../../common/actions';\nimport { Button, Modal, Panel, Grid, Icon } from '../../../common/components';\n\nclass ShareModal extends Component {\n static propTypes = {\n closeModal: PropTypes.func.isRequired,\n opts: PropTypes.object,\n sendAlert: PropTypes.func.isRequired,\n shareButtonClick: PropTypes.func,\n showLinkCopy: PropTypes.bool,\n subtitle: PropTypes.string,\n title: PropTypes.string,\n url: PropTypes.string.isRequired\n };\n\n static defaultProps = {\n shareButtonClick: () => {},\n showLinkCopy: true\n };\n\n copyToClipboard = () => {\n const { sendAlert, copyToClipboardClicked, url, t } = this.props;\n\n copyToClipboardClicked();\n\n this.inputEl.focus();\n this.inputEl.setSelectionRange(0, url.length);\n\n sendAlert({\n message: t('common/Link copied to clipboard'),\n kind: 'success'\n });\n };\n\n setInputRef = el => {\n this.inputEl = el;\n };\n\n render() {\n const { t, url, title, subtitle, showLinkCopy, closeModal } = this.props;\n\n return (\n \n \n
    \n

    {title || t('common/Share this')}

    \n

    \n {subtitle}\n

    \n
    \n {showLinkCopy && (\n \n \n \n \n \n \n \n \n \n \n \n \n )}\n
    \n \n );\n }\n}\n\nexport { ShareModal };\n\nexport default compose(translate(), connect(null, actions))(ShareModal);\n","import ShareModal from './ShareModal';\nexport default ShareModal;\n","import React from 'react';\nimport Panel from '../Panel';\nimport withModal from '../../containers/withModal';\nimport LinkifiedSafeHtml from '../LinkifiedSafeHtml';\n\nfunction ChallengeInfoModal({ title, description }) {\n return (\n \n \n \n );\n}\n\nexport default withModal()(ChallengeInfoModal);\n","import ChallengeInfoModal from './ChallengeInfoModal';\n\nexport default ChallengeInfoModal;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport moment from 'moment';\nimport DayPicker, { MomentLocaleUtils } from '../DayPicker';\nimport {\n parseUTCISOString as parseDate,\n formatLocalDateToUTCISOString as formatDate\n} from '../../../utils/date';\nimport TimeInput from '../TimeInput';\nimport './DateTimeRangePicker.css';\n\nclass DateTimeRangePicker extends Component {\n state = {\n isSelectingLastDay: false\n };\n\n today = moment().toDate();\n\n handleDayClick = (day, modifiers = {}) => {\n const { isSelectingLastDay } = this.state;\n const { value, onChange } = this.props;\n const [from] = value || [];\n const fromLocalDate = parseDate(from);\n\n if (modifiers.disabled) {\n return;\n }\n\n // Enable day selection on mouse enter\n if (!isSelectingLastDay) {\n this.setState(() => ({\n isSelectingLastDay: true\n }));\n onChange([formatDate(day), formatDate(day)]);\n }\n\n if (isSelectingLastDay && fromLocalDate && day < fromLocalDate) {\n // Reset the from-day if the clicked day is before the current from-day\n onChange([formatDate(day), null]);\n }\n\n if (isSelectingLastDay) {\n // Unset the day selection on mouse enter\n this.setState(() => ({\n isSelectingLastDay: false\n }));\n }\n };\n\n handleDayMouseEnter = day => {\n const { isSelectingLastDay } = this.state;\n const { value, onChange } = this.props;\n const [from] = value || [];\n const fromLocalDate = parseDate(from);\n\n if (!isSelectingLastDay || (fromLocalDate && day < fromLocalDate)) {\n return;\n }\n\n onChange([from, formatDate(day)]);\n };\n\n handleFromTimeChange = from => {\n const { value, onChange } = this.props;\n const [, to] = value || [];\n onChange([from, to]);\n };\n\n handleToTimeChange = to => {\n const { value, onChange } = this.props;\n const [from] = value || [];\n onChange([from, to]);\n };\n\n render() {\n const { value, onFocus, onBlur, locale, labels, closeButton } = this.props;\n const [from, to] = value || [];\n const fromLocalDate = parseDate(from);\n const toLocalDate = parseDate(to);\n const selectedDays = [];\n const now = moment()\n .local()\n .toDate();\n const disabledDays = {\n before: now\n };\n\n if (fromLocalDate) {\n selectedDays.push(selectedDays);\n }\n if (fromLocalDate && toLocalDate) {\n selectedDays.push({\n from: fromLocalDate,\n to: toLocalDate\n });\n }\n\n return (\n \n \n
    \n \n \n
    \n
    {closeButton}
    \n
    \n );\n }\n}\n\nDateTimeRangePicker.propTypes = {\n closeButton: PropTypes.element,\n locale: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ])\n};\n\nDateTimeRangePicker.defaultProps = {\n locale: 'en',\n onChange: () => {}\n};\n\nexport default DateTimeRangePicker;\n","import DateTimeRangePicker from './DateTimeRangePicker';\n\nexport default DateTimeRangePicker;\n","import React from 'react';\nimport get from 'lodash/get';\nimport PropTypes from 'prop-types';\nimport { useSelector } from 'react-redux';\nimport { platformDataSelector } from '../../../common/state/platform';\nimport { getAllowedEmailDomains } from '../../../common/getters/platform';\nimport { conceptEditorFormFields } from '../../constants';\nimport {\n getConceptFormModelById,\n isQuickIdeaConcept\n} from '../../selectors/ideaConcepts';\nimport useIdeaConcept from '../../hooks/useIdeaConcept';\nimport formConfig from '../../utils/formConfig';\nimport ConceptEditorForm from '../../containers/ConceptEditorForm';\nimport TeamInput from '../TeamInput';\n\nconst { TEAM } = conceptEditorFormFields;\n\nConceptTeamEditor.propTypes = {\n ideaConceptId: PropTypes.string.isRequired,\n t: PropTypes.func.isRequired,\n values: PropTypes.object\n};\nexport function ConceptTeamEditor({ ideaConceptId }) {\n const platformData = useSelector(platformDataSelector);\n const emailRegex = getAllowedEmailDomains(platformData);\n const [concept] = useIdeaConcept(ideaConceptId);\n const isInsight = isQuickIdeaConcept(concept);\n const config = formConfig.getFormConfig({ insightForm: isInsight });\n const formModel = useSelector(getConceptFormModelById(ideaConceptId));\n const values = {\n [TEAM]: get(formModel, TEAM, [])\n };\n\n return (\n \n \n \n );\n}\n\nexport default ConceptTeamEditor;\n","import ConceptTeamEditor from './ConceptTeamEditor';\n\nexport default ConceptTeamEditor;\n","import flow from 'lodash/flow';\nimport { mapImageUrlFromMsg, mapUserNameFromMsg } from './_mappers';\n\n// Responses\n\nexport const normaliseParticipant = flow(\n mapImageUrlFromMsg,\n mapUserNameFromMsg\n);\n","import { LOVE_CHALLENGE, LOVE_IDEA, entities } from '../../constants';\nimport { VOYAGER_API } from '../../api/constants';\nimport { updateEntity } from './entities';\nimport { getTokenData } from '../../authentication/services/token.service';\n\nexport const loveChallenge = (\n challengeId,\n isLoved = true,\n metrics\n) => dispatch => {\n return dispatch({\n [VOYAGER_API]: {\n url: `/challenges/${challengeId}/love`,\n method: 'PUT',\n type: LOVE_CHALLENGE,\n challengeId,\n data: {\n loved: isLoved\n },\n metrics: { ...metrics, loved: isLoved }\n }\n }).then(() => {\n dispatch(updateEntity(entities.CHALLENGE, challengeId)({ loved: isLoved }));\n });\n};\n\nexport const loveIdea = (ideaId, isLoved = true, metrics) => dispatch => {\n const { userId } = getTokenData();\n return dispatch({\n [VOYAGER_API]: {\n url: `/ideas/${ideaId}/love`,\n method: 'PUT',\n type: LOVE_IDEA,\n ideaId,\n userId,\n data: {\n loved: isLoved\n },\n metrics: metrics ? { ...metrics, loved: isLoved } : undefined\n },\n meta: {\n authenticated: {\n redirect: '/login'\n }\n }\n });\n};\n","import invariant from 'invariant';\nimport { handleActions, combineActions } from 'redux-actions';\nimport concat from 'lodash/fp/concat';\nimport flow from 'lodash/flow';\nimport get from 'lodash/get';\nimport getFp from 'lodash/fp/get';\nimport isArray from 'lodash/isArray';\nimport isEmpty from 'lodash/isEmpty';\nimport isString from 'lodash/isString';\nimport map from 'lodash/fp/map';\nimport uniq from 'lodash/fp/uniq';\nimport without from 'lodash/without';\nimport forceArray from '../../../utils/forceArray';\n\nconst NO_ACTION = Symbol('empty');\nconst ACTION_DEFAULTS = {\n successActions: [NO_ACTION],\n dropActions: [NO_ACTION],\n flushActions: [NO_ACTION]\n};\nconst CONFIG_DEFAULTS = {\n idProp: '',\n initialState: [],\n overwriteExisting: false\n};\nconst entityIdReducerFactory = (\n actionTypes = ACTION_DEFAULTS,\n options = CONFIG_DEFAULTS\n) => {\n const { successActions, dropActions, flushActions } = actionTypes;\n const { idProp, initialState, overwriteExisting } = {\n ...CONFIG_DEFAULTS,\n ...options\n };\n const mapEntityIds = map(getFp(idProp));\n\n invariant(\n isString(idProp) && !isEmpty(idProp),\n 'Config object must contain idProp string'\n );\n invariant(isArray(initialState), 'initialState must be an array');\n\n const reducerMap = {\n [combineActions(...forceArray(successActions))]: (\n state,\n { meta, payload }\n ) => {\n const mergeWithState = get(meta, 'mostRecent')\n ? items => [...items, ...state]\n : concat(state);\n const ids = flow(\n forceArray,\n mapEntityIds\n )(payload);\n\n if (overwriteExisting) {\n return ids;\n }\n\n return flow(\n mergeWithState,\n uniq\n )(ids);\n }\n };\n\n if (!isEmpty(flushActions)) {\n reducerMap[combineActions(...forceArray(flushActions))] = () => [];\n }\n\n if (!isEmpty(dropActions)) {\n reducerMap[combineActions(...forceArray(dropActions))] = (\n state,\n { payload }\n ) => without(state, payload);\n }\n\n return handleActions(reducerMap, initialState);\n};\n\nexport default entityIdReducerFactory;\n","import {\n createAsyncThunk,\n createSelector,\n createSlice\n} from '@reduxjs/toolkit';\nimport flow from 'lodash/flow';\nimport getFp from 'lodash/fp/get';\nimport head from 'lodash/head';\nimport takeRight from 'lodash/takeRight';\nimport { normalize } from 'normalizr';\nimport { convertApiErrorToStatusCode } from '../../api/utils/apiError';\nimport { addEntity } from '../../common/actions/entities';\nimport { getVisibleIds } from '../../common/selectors/meta';\nimport { AsyncStatus } from '../../constants';\nimport handleApiCallAction from '../../utils/handleApiCallAction';\nimport conceptReviewApi from '../api/conceptReviewApi';\nimport { entities } from '../constants';\nimport schemas from '../schemas';\nimport { getIdeaConceptId } from '../selectors/ideaConcepts';\n\n/**\n * Calls the API to fetch the first item of a session for review.\n * @param {Object} query - A valid concept filter query map\n * @returns {Promise}\n */\nconst fetchFirstConcept = createAsyncThunk(\n 'fetchFirstConcept',\n async (arg, thunkApi) => {\n try {\n const result = await handleApiCallAction(conceptReviewApi.initSession)(\n arg,\n thunkApi\n );\n if (result) {\n thunkApi.dispatch(\n addEntity(\n entities.IDEA_CONCEPT,\n normalize(result, schemas.IDEA_CONCEPT)\n )\n );\n return getIdeaConceptId(result);\n } else {\n return result;\n }\n } catch (error) {\n const code = convertApiErrorToStatusCode(error);\n return thunkApi.rejectWithValue({ error, code });\n }\n }\n);\n\nconst reviewConcept = createAsyncThunk(\n 'reviewConcept',\n async (arg, thunkApi) => {\n try {\n const [\n lastConcept,\n currentConcept\n ] = await conceptReviewApi.reviewConcept(\n arg.conceptId,\n arg.query,\n arg.scores\n );\n if (lastConcept) {\n thunkApi.dispatch(\n addEntity(\n entities.IDEA_CONCEPT,\n normalize(lastConcept, schemas.IDEA_CONCEPT)\n )\n );\n }\n if (currentConcept) {\n thunkApi.dispatch(\n addEntity(\n entities.IDEA_CONCEPT,\n normalize(currentConcept, schemas.IDEA_CONCEPT)\n )\n );\n }\n return getIdeaConceptId(currentConcept);\n } catch (error) {\n const code = convertApiErrorToStatusCode(error);\n return thunkApi.rejectWithValue({ error, code });\n }\n }\n);\n\nconst initialState = {\n visibleIds: [],\n status: AsyncStatus.Idle,\n error: null,\n hasFetchedAllAvailableItems: false,\n offset: 0\n};\n\nconst conceptReviewSlice = createSlice({\n name: 'conceptReview',\n initialState,\n reducers: {\n flushSession() {\n return initialState;\n }\n },\n extraReducers: builder => {\n function handleLoad(state) {\n state.status = AsyncStatus.Loading;\n state.error = null;\n }\n function handleSuccess(state, action) {\n state.status = AsyncStatus.Succeeded;\n state.offset = 0;\n if (action.payload && !state.visibleIds.includes(action.payload)) {\n state.visibleIds.push(action.payload);\n } else if (!action.payload) {\n state.hasFetchedAllAvailableItems = true;\n }\n }\n function handleError(state, action) {\n state.status = AsyncStatus.Failed;\n state.error = action.payload;\n }\n builder\n .addCase(fetchFirstConcept.pending, handleLoad)\n .addCase(fetchFirstConcept.fulfilled, handleSuccess)\n .addCase(fetchFirstConcept.rejected, handleError)\n .addCase(reviewConcept.pending, handleLoad)\n .addCase(reviewConcept.fulfilled, handleSuccess)\n .addCase(reviewConcept.rejected, handleError);\n }\n});\n\nconst getReviewStore = getFp('conceptReview');\n\nconst selectors = {\n getCurrentReviewedConcept: createSelector(\n flow(\n getReviewStore,\n getVisibleIds\n ),\n flow(\n getReviewStore,\n getFp('offset')\n ),\n (ids, offset) => {\n return head(takeRight(ids, Math.abs(offset) + 1)); // 0 offset returns empty array\n }\n ),\n isStackEmpty: flow(\n getReviewStore,\n getFp('hasFetchedAllAvailableItems')\n )\n // session status selector: ready when offset === 0 && hasfetchedallavailable === true\n};\n\nconst { flushSession } = conceptReviewSlice.actions;\nexport {\n fetchFirstConcept,\n reviewConcept,\n flushSession,\n selectors,\n initialState\n};\nexport default conceptReviewSlice;\n","import React from 'react';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport identity from 'lodash/identity';\nimport { Trans } from 'react-i18next';\nimport {\n ACCOUNT_MANAGEMENT_CONSENT,\n PERSONAL_DATA_MANAGEMENT_ACCEPTED,\n COOKIES_AND_LOGS_ACCEPTED,\n MVM_PRIVACY_URL\n} from '../profile/constants';\nimport { getPlatformName } from './platform';\n\nconst PLATFORM_NAME = getPlatformName();\n\nconst getDefaultConsentModel = t => [\n {\n name: ACCOUNT_MANAGEMENT_CONSENT,\n label: t('legalConsent/accountMgmt'),\n warning: {\n variant: 'danger',\n title: t('profile/deleteAccount/confirmDialog/title'),\n text: t('profile/deleteAccount/confirmDialog/details'),\n okLabel: t('profile/deleteAccount/confirmDialog/okCTA'),\n cancelLabel: t('profile/deleteAccount/confirmDialog/cancelCTA')\n },\n choices: [\n {\n name: PERSONAL_DATA_MANAGEMENT_ACCEPTED,\n label: t('legalConsent/personalDataMgmt')\n },\n {\n name: COOKIES_AND_LOGS_ACCEPTED,\n label: t('legalConsent/cookiesAndLogs')\n }\n ]\n }\n];\n\nconst getConsentModel = (t = identity) => {\n const CUSTOM_MODELS = {\n 'mvm-csoport': [\n {\n ...getDefaultConsentModel(t)[0],\n choices: [\n {\n name: 'OVER_18',\n label: t('legalConsent/mvm-csoport/over18')\n },\n {\n name: 'MVM_PRIVACY',\n label: (\n \n \n label\n \n \n )\n }\n ]\n }\n ]\n };\n return get(CUSTOM_MODELS, PLATFORM_NAME);\n};\n\nexport const generateConsentModel = t =>\n getConsentModel(t) || getDefaultConsentModel(t);\n\nexport const hasPlatformCustomConsent = () => !isEmpty(getConsentModel());\n","import flow from 'lodash/flow';\nimport get from 'lodash/get';\nimport getFp from 'lodash/fp/get';\nimport pick from 'lodash/pick';\nimport forceArray from '../../utils/forceArray';\nimport parseQueryString from '../../utils/parseQueryString';\n\nexport const rootSelector = state => get(state, 'router');\n\nexport const getLocation = state =>\n flow(\n rootSelector,\n getFp('location')\n )(state);\n\nexport const getRoute = state =>\n flow(\n getLocation,\n location => get(location, 'pathname', '')\n )(state);\n\nconst getQueryString = state =>\n flow(\n getLocation,\n location => get(location, 'search', '')\n )(state);\n\nconst getQueryParams = state =>\n flow(\n getQueryString,\n parseQueryString\n )(state);\n\nexport const pickQueryParams = paramNames => state =>\n flow(\n getQueryParams,\n queryParams => {\n const params = forceArray(paramNames);\n return pick(queryParams, params);\n }\n )(state);\n\nexport const getRedirectTarget = state =>\n flow(\n getQueryParams,\n getFp('redirect')\n )(state);\n\nexport default {\n getRoute,\n getQueryString,\n getQueryParams,\n pickQueryParams\n};\n","import React from 'react';\nimport lowerCase from 'lodash/lowerCase';\nimport { translate } from 'react-i18next';\nimport useActiveStageFilter from '../../hooks/conceptList/useActiveStageFilter';\nimport NonIdealState from '../../../common/components/NonIdealState';\n\nfunction Placeholder({ i18n, t }) {\n const activeStageFilter = useActiveStageFilter();\n const context = lowerCase(activeStageFilter);\n const title = t('ideaConcepts/listPage/empty/title', { context });\n const desc = 'ideaConcepts/listPage/empty/description';\n const description = i18n.exists(desc, { context }) && t(desc, { context });\n\n return (\n \n );\n}\n\nexport default translate()(Placeholder);\n","import has from 'lodash/has';\nimport values from 'lodash/values';\nimport { CanvasBackgroundType } from './constants';\n\nexport const CONCEPT_CANVAS_ROOT = 'canvas';\n\nexport function conceptCanvasPage(ideaConceptId, canvasType) {\n if (!has(CanvasBackgroundType, canvasType)) {\n throw new Error(\n `canvasType must be one of ${values(\n CanvasBackgroundType\n )}, got ${canvasType}`\n );\n }\n return `/${CONCEPT_CANVAS_ROOT}/${ideaConceptId}?canvas=${canvasType}`;\n}\n\nexport function conceptMapCanvasPage(ideaConceptId) {\n return `/${CONCEPT_CANVAS_ROOT}/${ideaConceptId}/conceptmap`;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ConnectedAvatar from '../../../common/containers/ConnectedAvatar';\nimport scss from './ConceptOwnerAvatar.module.scss';\n\nConceptOwnerAvatar.propTypes = {\n userId: PropTypes.string.isRequired\n};\n\nfunction ConceptOwnerAvatar({ userId, ...rest }) {\n return ;\n}\n\nexport default ConceptOwnerAvatar;\n","import styled from 'styled-components';\n\nexport const Wrapper = styled.div`\n position: relative;\n color: #6b6b6b;\n`;\n\nexport const Toolbar = styled.nav`\n display: flex;\n flex-wrap: wrap;\n`;\n\nexport const Attrib = styled.span`\n display: flex;\n align-items: center;\n margin-right: 24px;\n margin-bottom: 1em;\n\n ${({ small }) => ({\n fontSize: small && '.8em'\n })}\n\n dt, dd {\n display: inline;\n margin-right: 5px;\n font-weight: normal;\n }\n\n button {\n padding: 0;\n }\n`;\n\nexport const CloseWrapper = styled.span`\n position: absolute;\n z-index: 2;\n right: 6px;\n top: 24px;\n`;\n\nexport const ConceptTitle = styled.header`\n margin: 1em auto 0.625em;\n`;\n\nexport const ChallengeTitle = styled.aside`\n margin: 1em 0;\n padding: 12px;\n border: 1px solid #d9d9d9;\n font-size: 0.875em;\n background: #f3f3f3;\n color: #a0a0a0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n dt,\n dd {\n display: inline;\n margin-right: 3px;\n }\n`;\n\nexport const Description = styled.main`\n margin: 1.5em 0 0;\n font-size: 0.875em;\n line-height: 1.5em;\n`;\n\nexport const Team = styled.section`\n display: flex;\n justify-content: flex-start;\n align-items: center;\n\n > * {\n margin-right: 15px;\n }\n\n .TeamMember {\n border: 3px solid white;\n }\n`;\n\nexport const OwnerWrapper = styled.div`\n display: inline-block;\n > .Heading {\n margin: 0;\n font-weight: 400;\n text-align: center;\n }\n h6 {\n transform: translateY(-1em);\n }\n`;\n\nexport const OwnerAvatar = styled.span`\n > .OwnerAvatar {\n margin: 5px 0;\n }\n`;\n\nexport const AddMemberBtn = styled.button`\n width: 32px;\n height: 32px;\n margin-top: -4px;\n padding: 0;\n border-radius: 100%;\n background: #d8d8d8;\n`;\n","import React, { memo, useCallback } from 'react';\nimport isNumber from 'lodash/isNumber';\nimport truncate from 'lodash/truncate';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { useDispatch } from 'react-redux';\nimport { translate } from 'react-i18next';\nimport { Size } from '../../../constants';\nimport { EMPTY_NUMBER } from '../../constants';\nimport { conceptSubpage } from '../../paths';\nimport { openTeamEditorModal } from '../../actions';\nimport { getCategoryName } from '../../../common/getters/categories';\nimport { getTitle as getChallengeTitle } from '../../../common/selectors/challenges';\nimport { getCreateTime } from '../../../common/selectors/meta';\nimport {\n getChallengeId,\n getIdeaText,\n getOwner,\n getCompositeEvalScore,\n getTitle as getConceptTitle,\n getCategory,\n getEvalScoreArray\n} from '../../selectors/ideaConcepts';\nimport useCategory from '../../../common/hooks/useCategory';\nimport useChallenge from '../../../challenge/hooks/useChallenge';\nimport useEditConcept from '../../hooks/useEditConcept';\nimport useIdeaConcept from '../../hooks/useIdeaConcept';\nimport Button from '@bit/be-novative.kit.button';\nimport DateTime from '../../../common/components/DateTime';\nimport Heading from '../../../common/components/Heading';\nimport Icon from '../../../common/components/Icon';\nimport LinkifiedSafeHtml from '../../../common/components/LinkifiedSafeHtml';\nimport ConceptOwnerAvatar from '../../components/ConceptOwnerAvatar';\nimport ConceptTeamAvatars from '../../components/ConceptTeamAvatars';\nimport StageSelector from '../../components/StageSelector';\nimport ReviewScoreDetails from '../../components/ReviewScoreDetails';\nimport {\n AddMemberBtn,\n Attrib,\n ChallengeTitle,\n CloseWrapper,\n ConceptTitle,\n Description,\n OwnerAvatar,\n OwnerWrapper,\n Team,\n Toolbar,\n Wrapper\n} from './ConceptPreview.styled';\n\nconst CATEG_MAX_LENGTH = 25;\nconst DESC_MAX_LENGTH = 500;\n\nConceptPreview.propTypes = {\n ideaConceptId: PropTypes.string.isRequired,\n onClose: PropTypes.func.isRequired\n};\nfunction ConceptPreview({ ideaConceptId, onClose, style, t }) {\n const [concept] = useIdeaConcept(ideaConceptId);\n const categoryId = getCategory(concept);\n const createdAt = getCreateTime(concept);\n const description = getIdeaText(concept);\n const ownerId = getOwner(concept);\n const reviewScore = getCompositeEvalScore(concept);\n const detailedScores = getEvalScoreArray(concept);\n const title = getConceptTitle(concept);\n const challengeId = getChallengeId(concept);\n const [challenge] = useChallenge(challengeId);\n const challengeTitle = getChallengeTitle(challenge);\n\n const dispatch = useDispatch();\n const editConcept = useEditConcept(ideaConceptId);\n const onTeamClick = useCallback(\n () =>\n dispatch(\n openTeamEditorModal(ideaConceptId, {\n onSubmit: formData => editConcept(formData)\n })\n ),\n [dispatch, editConcept, ideaConceptId]\n );\n\n const category = useCategory(categoryId);\n\n return (\n \n \n \n
    {t('common/prop/category/label')}:
    \n
    \n {getCategoryName(category, CATEG_MAX_LENGTH)}\n
    \n
    \n \n
    {t('ideaConcept/prop/decision')}:
    \n
    \n \n
    \n
    \n \n
    {t('ideaConcept/prop/reviewScore', { context: 'short' })}:
    \n
    \n {isNumber(reviewScore) ? reviewScore.toFixed(1) : EMPTY_NUMBER}\n
    \n
    \n \n \n \n \n \n
    \n\n \n {title}\n \n \n
    {t('ideaConcept/prop/createdAt')}:
    \n
    \n {createdAt}\n
    \n
    \n\n {challengeTitle && (\n \n
    {t('ideaConcept/prop/parentChallenge')}:
    \n
    {challengeTitle}
    \n
    \n )}\n\n \n \n \n {t('ideaConcept/prop/team/label')}\n \n \n \n {t('ideaConcept/prop/owner')}\n \n \n \n \n \n \n \n\n \n \n \n\n \n\n
    \n \n
    \n
    \n );\n}\n\nexport default compose(\n translate(),\n memo\n)(ConceptPreview);\n","import ConceptPreview from './ConceptPreview';\n\nexport default ConceptPreview;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport { withResponsive } from '../Responsive';\nimport { isCookieConsentVisible } from '../../../utils/cookieConsent';\nimport './Navbar.css';\n\nfunction Navbar({ children, right, fixed, className, layout, verticalOffset }) {\n const isStickyBottom = fixed === 'bottom';\n const navbarClasses = classNames(className, 'Navbar', `Navbar--${layout}`, {\n 'Navbar--bottom': isStickyBottom\n });\n\n const navbarCenterClasses = classNames('Navbar__Center');\n const style =\n isStickyBottom && isCookieConsentVisible()\n ? { bottom: verticalOffset }\n : {};\n\n return (\n
    \n
      {children}
    \n {right &&
      {right}
    }\n
    \n );\n}\n\nNavbar.propTypes = {\n children: PropTypes.node.isRequired,\n right: PropTypes.node,\n fixed: PropTypes.oneOf(['bottom']),\n layout: PropTypes.oneOf(['default', 'feed', 'login']),\n className: PropTypes.string\n};\n\nNavbar.defaultProps = {\n layout: 'default'\n};\n\nexport { Navbar };\nexport default withResponsive(Navbar);\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport { withResponsive } from '../Responsive';\nimport './NavbarItem.css';\n\nfunction NavbarItem({ children, push = false, ...rest }) {\n const className = classNames(rest.className, 'NavbarItem', {\n 'NavbarItem--push': push\n });\n\n return (\n
  • \n {children}\n
  • \n );\n}\n\nNavbarItem.propTypes = {\n children: PropTypes.node,\n push: PropTypes.bool,\n visible: PropTypes.oneOf(['small', 'medium']),\n hidden: PropTypes.oneOf(['small', 'medium'])\n};\n\nexport { NavbarItem };\nexport default withResponsive(NavbarItem);\n","import Navbar from './Navbar';\nimport NavbarItem from './NavbarItem';\n\nNavbar.NavbarItem = NavbarItem;\n\nexport default Navbar;\n","import classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport './PaginationItem.css';\n\nclass PaginationItem extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n eventKey: PropTypes.any,\n onSelect: PropTypes.func,\n disabled: PropTypes.bool,\n active: PropTypes.bool\n };\n\n static defaultProps = {\n active: false,\n disabled: false\n };\n\n handleClick = event => {\n const { disabled, onSelect, eventKey } = this.props;\n\n if (disabled) {\n return;\n }\n\n if (onSelect) {\n onSelect(eventKey, event);\n }\n };\n\n render() {\n const {\n active,\n disabled,\n className,\n style,\n onSelect,\n eventKey,\n ...props\n } = this.props;\n\n const classes = classNames(className, 'PaginationItem', {\n 'PaginationItem--active': active,\n 'PaginationItem--disabled': disabled\n });\n\n return (\n
  • \n \n
  • \n );\n }\n}\n\nexport default PaginationItem;\n","import classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport PaginationItem from './PaginationItem';\nimport './Pagination.css';\n\nclass Pagination extends React.Component {\n static propTypes = {\n activePage: PropTypes.number,\n items: PropTypes.number,\n maxButtons: PropTypes.number,\n boundaryLinks: PropTypes.bool,\n ellipsis: PropTypes.oneOfType([PropTypes.bool, PropTypes.node]),\n prev: PropTypes.oneOfType([PropTypes.bool, PropTypes.node]),\n next: PropTypes.oneOfType([PropTypes.bool, PropTypes.node]),\n onSelect: PropTypes.func\n };\n\n static defaultProps = {\n activePage: 1,\n items: 1,\n maxButtons: 5,\n prev: true,\n next: true,\n ellipsis: true,\n boundaryLinks: true\n };\n\n renderPageButtons(\n activePage,\n items,\n maxButtons,\n boundaryLinks,\n ellipsis,\n buttonProps\n ) {\n const pageButtons = [];\n\n let startPage;\n let endPage;\n\n if (maxButtons && maxButtons < items) {\n startPage = Math.max(\n Math.min(\n activePage - Math.floor(maxButtons / 2, 10),\n items - maxButtons + 1\n ),\n 1\n );\n endPage = startPage + maxButtons - 1;\n } else {\n startPage = 1;\n endPage = items;\n }\n\n for (let page = startPage; page <= endPage; ++page) {\n pageButtons.push(\n \n {page}\n \n );\n }\n\n if (ellipsis && boundaryLinks && startPage > 1) {\n if (startPage > 2) {\n pageButtons.unshift(\n \n \n {ellipsis === true ? '\\u2026' : ellipsis}\n \n \n );\n }\n\n pageButtons.unshift(\n \n 1\n \n );\n }\n\n if (ellipsis && endPage < items) {\n if (!boundaryLinks || endPage < items - 1) {\n pageButtons.push(\n \n \n {ellipsis === true ? '\\u2026' : ellipsis}\n \n \n );\n }\n\n if (boundaryLinks) {\n pageButtons.push(\n \n {items}\n \n );\n }\n }\n\n return pageButtons;\n }\n\n render() {\n const {\n activePage,\n items,\n maxButtons,\n boundaryLinks,\n ellipsis,\n prev,\n next,\n onSelect,\n className\n } = this.props;\n\n const classes = classNames(className, 'Pagination');\n\n const buttonProps = {\n onSelect\n };\n\n return (\n
      \n {prev &&\n \n \n {prev === true ? '\\u2039' : prev}\n \n }\n\n {this.renderPageButtons(\n activePage,\n items,\n maxButtons,\n boundaryLinks,\n ellipsis,\n buttonProps\n )}\n\n {next &&\n = items}>\n \n {next === true ? '\\u203a' : next}\n \n }\n
    \n );\n }\n}\nexport default Pagination;\n","import Pagination from './Pagination';\n\nexport default Pagination;\n","import forEach from 'lodash/forEach';\nimport get from 'lodash/get';\nimport isNumber from 'lodash/isNumber';\nimport invariant from 'invariant';\nimport { getType as getMimeType } from 'mime';\nimport { stringify } from 'qs';\nimport { FILE_UPLOAD_TIMEOUT_MS, VOYAGER_API } from '../../api/constants';\nimport {\n UPDATE_CONCEPT_OWNER,\n FETCH_IDEA_CONCEPTS,\n FETCH_CHALLENGE_IDEA_CONCEPTS,\n entities,\n UPLOAD_CONCEPT_ATTACHMENT,\n DOWNLOAD_CONCEPT_ATTACHMENT,\n conceptListSortIds,\n conceptListFilterKeys\n} from '../constants';\nimport schemas from '../schemas';\nimport { getFileName } from '../../utils/files';\nimport { saveFile } from '../../utils/saveFile';\nimport {\n isLoading,\n getSortBy,\n getSortDirection,\n getFilterBy,\n getPagination,\n getNextStart,\n getLimit\n} from '../../common/selectors/meta';\nimport { getListPageStore } from '../selectors/conceptList';\nimport { getAttachmentById, getAttachmentName } from '../selectors/attachments';\nimport validateConceptFilterQuery from '../utils/validateConceptFilterQuery';\n\nconst { STAGE } = conceptListFilterKeys;\n\nexport const fetchAllIdeaConcepts = fetchParams => (dispatch, getState) => {\n const listPageStore = getListPageStore(getState());\n\n if (isLoading(listPageStore)) {\n return;\n }\n\n const filters = getFilterBy(listPageStore);\n validateConceptFilterQuery(filters);\n\n const sortBy = get(fetchParams, 'sortBy', getSortBy(listPageStore));\n const sortDirection = get(\n fetchParams,\n 'sortDirection',\n getSortDirection(listPageStore)\n );\n\n const activeTab = get(fetchParams, STAGE);\n const paginationStore = getPagination(listPageStore)[activeTab];\n const limit = get(fetchParams, 'limit', getLimit(paginationStore));\n const start = get(fetchParams, 'start', getNextStart(paginationStore));\n\n invariant(\n isNumber(limit) && isNumber(start),\n 'start and limit must be integers'\n );\n\n const queryString = stringify(\n {\n ...filters,\n sortby: conceptListSortIds[sortBy],\n sortdir: sortDirection,\n limit,\n start\n },\n // endpoint doesn't handle bracket notation (key[]=val), only repeated variables\n { arrayFormat: 'repeat' }\n );\n\n return dispatch({\n [VOYAGER_API]: {\n url: `/idea-concepts?${queryString}`,\n method: 'GET',\n type: FETCH_IDEA_CONCEPTS,\n schema: schemas.IDEA_CONCEPT_ARRAY,\n entityType: entities.IDEA_CONCEPT,\n start,\n limit,\n sortBy,\n sortDirection,\n activeTab\n }\n });\n};\n\nexport const fetchChallengeIdeaConcepts = challengeId => dispatch =>\n dispatch({\n [VOYAGER_API]: {\n url: `/ideaconcepts/${challengeId}`,\n method: 'GET',\n type: FETCH_CHALLENGE_IDEA_CONCEPTS,\n schema: schemas.IDEA_CONCEPT_ARRAY,\n entityType: entities.IDEA_CONCEPT\n }\n });\n\nexport const editConceptOwner = (ideaConceptId, newOwnerId) => ({\n [VOYAGER_API]: {\n url: `/ideaconcepts/${ideaConceptId}/owner`,\n method: 'PUT',\n data: { newOwner: newOwnerId },\n type: UPDATE_CONCEPT_OWNER\n }\n});\n\nexport const uploadConceptAttachment = (\n ideaConceptId,\n attachments = []\n) => dispatch => {\n const form = new FormData();\n\n forEach(attachments, file => {\n form.append('file', file, getFileName(file));\n });\n\n return dispatch({\n [VOYAGER_API]: {\n url: `/idea-concepts/${ideaConceptId}/attachments`,\n method: 'POST',\n data: form,\n timeout: FILE_UPLOAD_TIMEOUT_MS,\n type: UPLOAD_CONCEPT_ATTACHMENT\n }\n });\n};\n\nexport const downloadAttachment = ({ attachmentId, ideaConceptId }) => async (\n dispatch,\n getState\n) => {\n try {\n const attachmentData = getAttachmentById(attachmentId)(getState());\n const fileName = getAttachmentName(attachmentData);\n const fileExtension = fileName.split('.').pop();\n const mime = getMimeType(fileExtension);\n const promise = await dispatch({\n [VOYAGER_API]: {\n url: `/ideaconcepts/${ideaConceptId}/attachments/${attachmentId}`,\n method: 'GET',\n responseType: 'blob',\n type: DOWNLOAD_CONCEPT_ATTACHMENT\n }\n });\n\n saveFile(promise.data, fileName, mime);\n } catch (error) {\n throw error;\n }\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Grid } from '../../components';\n\nSearchForm.propTypes = {\n onSubmit: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n placeholder: PropTypes.string\n};\nexport function SearchForm({ onSubmit, name, placeholder, label }) {\n const [query, setQuery] = useState('');\n const handleUpdate = e => {\n setQuery(e.target.value);\n };\n const submitHandler = e => {\n e.preventDefault();\n onSubmit(query);\n };\n\n return (\n
    \n \n \n {label}\n \n \n \n \n \n
    \n );\n}\n\nexport default SearchForm;\n","import SearchForm from './SearchForm';\n\nexport default SearchForm;\n","import React, { useCallback } from 'react';\nimport keys from 'lodash/keys';\nimport PropTypes from 'prop-types';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { translate } from 'react-i18next';\nimport { Link } from 'react-router-dom';\nimport Button from '@bit/be-novative.kit.button';\nimport Logo from '@bit/be-novative.kit.logo/dist/Logo';\nimport LanguageDropdown from '../../../common/components/LanguageDropdown';\nimport PageHeader, {\n Section,\n Item\n} from '../../../common/components/PageHeader/PageHeader';\nimport { changeLanguage } from '../../../common/actions';\nimport { getCurrentLanguage } from '../../../common/selectors/language';\nimport useWindowSize from '../../../common/hooks/useWindowSize';\nimport { SUPPORTED_UI_LANGUAGES_NATIVE } from '../../../constants';\nimport paths from '../../../paths';\nimport authPaths from '../../paths';\nimport { getPlatformName } from '../../../utils/platform';\nimport customLogo from './logo.jpg';\n\nconst hasCustomLogo = ['experiencing', 'financing', 'future'].includes(\n getPlatformName()\n);\n\nconst AVAILABLE_LANGS = keys(SUPPORTED_UI_LANGUAGES_NATIVE);\n\nAuthPageHeader.propTypes = {\n showAuthLinks: PropTypes.bool\n};\nexport function AuthPageHeader({ t, showAuthLinks = true, ...props }) {\n const { width } = useWindowSize();\n\n const dispatch = useDispatch();\n const currentLanguage = useSelector(getCurrentLanguage);\n const handleLanguageChange = useCallback(\n lang => {\n dispatch(changeLanguage(lang));\n },\n [dispatch]\n );\n\n return (\n \n
    \n \n \n {hasCustomLogo ? (\n \n ) : (\n \n )}\n \n \n
    \n\n
    \n {showAuthLinks && (\n
    \n \n \n \n \n \n \n
    \n )}\n\n
    \n \n \n \n
    \n
    \n
    \n );\n}\n\nexport default translate()(AuthPageHeader);\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport moment from 'moment';\nimport DayPicker, { MomentLocaleUtils } from '../DayPicker';\nimport {\n parseUTCISOString as parseDate,\n formatLocalDateToUTCISOString as formatDate\n} from '../../../utils/date';\nimport TimeInput from '../TimeInput';\nimport './DateTimePicker.css';\n\nclass DateTimePicker extends Component {\n handleDayClick = (day, { selected, disabled }) => {\n if (disabled) {\n return;\n }\n\n if (!selected) {\n this.props.onChange(formatDate(day));\n }\n };\n\n componentDidMount() {\n if (this.picker && this.props.value) {\n this.picker.showMonth(parseDate(this.props.value));\n }\n }\n\n componentWillReceiveProps(nextProps) {\n const nextLocalDate = parseDate(nextProps.value);\n if (this.picker && nextLocalDate && nextProps.value !== this.props.value) {\n this.picker.showMonth(nextLocalDate);\n }\n }\n\n setRef = el => {\n this.picker = el;\n };\n\n render() {\n const {\n value,\n onChange,\n onFocus,\n onBlur,\n locale,\n labels,\n closeButton\n } = this.props;\n const localDate = parseDate(value);\n const now = moment()\n .local()\n .toDate();\n const disabledDays = {\n before: now\n };\n\n return (\n \n \n \n
    {closeButton}
    \n
    \n );\n }\n}\n\nDateTimePicker.propTypes = {\n closeButton: PropTypes.element,\n value: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n locale: PropTypes.string,\n labels: PropTypes.shape({\n nextMonth: PropTypes.string,\n previousMonth: PropTypes.string\n })\n};\n\nDateTimePicker.defaultProps = {\n onChange: () => {},\n locale: 'en',\n labels: {\n nextMonth: 'Next Month',\n previousMonth: 'Previouse Month'\n }\n};\n\nexport default DateTimePicker;\n","import DateTimePicker from './DateTimePicker';\n\nexport default DateTimePicker;\n","import PropTypes from 'prop-types';\nimport React, { Component, cloneElement } from 'react';\nimport classNames from 'classnames';\nimport Popover from '../Popover';\nimport Icon from '../Icon';\nimport Button from '@bit/be-novative.kit.button';\nimport {\n formatLocalDateToUTCISOString as formatDate,\n formatUTCISOStringToLocalDate as formatLocal,\n parseLocalDateString as parseLocal\n} from '../../../utils/date';\nimport './DateTimeRangeInput.css';\n\nclass DateTimeRangeInput extends Component {\n static propTypes = {\n picker: PropTypes.node.isRequired,\n fromPlaceholder: PropTypes.string,\n toPlaceholder: PropTypes.string,\n input: PropTypes.shape({\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ])\n }),\n meta: PropTypes.shape({\n active: PropTypes.bool\n })\n };\n\n constructor(props) {\n super(props);\n const { value = [] } = props.input;\n const [from, to] = value;\n this.state = {\n fromInputValue: formatLocal(from),\n toInputValue: formatLocal(to),\n open: false\n };\n }\n\n componentWillReceiveProps(nextProps) {\n const { value: nextValue } = nextProps.input;\n const { value: prevValue } = this.props.input;\n\n if (!Array.isArray(nextValue)) {\n this.setState(() => ({\n fromInputValue: '',\n toInputValue: ''\n }));\n } else if (nextValue !== prevValue) {\n const [from, to] = nextValue;\n this.setState(() => ({\n fromInputValue: formatLocal(from),\n toInputValue: formatLocal(to)\n }));\n }\n\n if (\n this.props.meta.active !== nextProps.meta.active &&\n nextProps.meta.active &&\n !this.state.open\n ) {\n this.setState(() => ({\n open: nextProps.meta.active\n }));\n }\n }\n\n setFromInputRef = el => {\n this.fromInput = el;\n };\n\n setToInputRef = el => {\n this.toInput = el;\n };\n\n handleFromInputChange = e => {\n const { onChange, value = [] } = this.props.input;\n const [, to] = value;\n const fromLocalDate = parseLocal(e.target.value);\n\n if (fromLocalDate) {\n onChange([formatDate(fromLocalDate), to]);\n } else {\n onChange(null);\n }\n\n this.setState({\n fromInputValue: e.target.value\n });\n };\n\n handleToInputChange = e => {\n const { onChange, value = [] } = this.props.input;\n const [from] = value;\n const toLocalDate = parseLocal(e.target.value);\n\n if (toLocalDate) {\n onChange([from, formatDate(toLocalDate)]);\n } else {\n onChange(null);\n }\n\n this.setState({\n toInputValue: e.target.value\n });\n };\n\n handleBlur = e => {\n const { onBlur, value } = this.props.input;\n onBlur(value);\n };\n\n handleClose = () => {\n this.setState(() => ({\n open: false\n }));\n };\n\n handleIconClick = () => {\n if (this.fromInput) {\n this.fromInput.focus();\n }\n };\n\n render() {\n const { input, meta, picker, fromPlaceholder, toPlaceholder } = this.props;\n const { value, onChange, onFocus } = input;\n const { active, touched, error, warning, submitFailed, submitting } = meta;\n const { fromInputValue, toInputValue, open } = this.state;\n\n const popover = cloneElement(picker, {\n ref: el => (this.picker = el),\n onBlur: this.handleBlur,\n value,\n onChange,\n onFocus,\n closeButton: picker.props.closeButton\n ? cloneElement(picker.props.closeButton, {\n onClick: this.handleClose\n })\n : null\n });\n\n const classes = classNames('DateTimeRangeInput', {\n 'DateTimeRangeInput--error':\n (touched || submitFailed || submitting) && error,\n 'DateTimeRangeInput--warning':\n (touched || submitFailed || submitting) && warning,\n 'DateTimeRangeInput--active': active\n });\n\n return (\n \n
    \n \n \n \n
    \n \n
    \n
    \n \n );\n }\n}\n\nexport default DateTimeRangeInput;\n","import DateTimeRangeInput from './DateTimeRangeInput';\n\nexport default DateTimeRangeInput;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport './Notice.css';\n\nNotice.propTypes = {\n rounded: PropTypes.bool,\n variant: PropTypes.string\n};\nNotice.defaultProps = {\n rounded: true,\n variant: 'notice'\n};\nexport default function Notice({\n children,\n className,\n rounded,\n style,\n variant\n}) {\n const classes = classNames(`NoticePanel--${variant}`, className, {\n 'NoticePanel--isRounded': rounded\n });\n\n return (\n
    \n {children}\n
    \n );\n}\n","import Notice from './Notice';\n\nexport default Notice;\n","import React from 'react';\nimport './OverlayAction.css';\n\nfunction OverlayAction({ children, action, disabled }) {\n return (\n
    \n {children}\n {!disabled &&
    {action}
    }\n
    \n );\n}\n\nexport default OverlayAction;\n","import OverlayAction from './OverlayAction';\n\nexport default OverlayAction;\n","import React from 'react';\nimport './Separator.css';\n\nfunction Separator({ children }) {\n return (\n
    \n {children}\n
    \n );\n}\n\nexport default Separator;\n","export const CONCEPT_ROOT = 'ideaconcepts';\nexport const CONCEPT_LIST = 'list';\nexport const CONCEPT_SUBPAGE = 'concept';\nexport const CONCEPT_EVALUATION = 'review';\n\nexport function conceptListPage(conceptStage = '') {\n return `/${CONCEPT_ROOT}/${CONCEPT_LIST}/${conceptStage}`;\n}\n\nexport function conceptSubpage(conceptId, bookmark) {\n let path = `/${CONCEPT_ROOT}/${CONCEPT_SUBPAGE}/${conceptId}`;\n if (bookmark) {\n path += `#${bookmark}`;\n }\n return path;\n}\n\n/**\n * Returns the path for the concept evaluation page.\n * @param {IdeaConceptEvaluationFilterKey} filterKey - Specifies what type of filter will be used for fetching concepts for review.\n * @param {string} filterValue - Specifies which concepts will be fetched for review.\n * @param {(\"subpage\" | undefined)} [redirectTo] - Sets where to redirect after a successful review was submitted.\n * @returns {string} The page path with correct query params\n */\nexport function conceptEvalPage(filterKey, filterValue, redirectTo) {\n if (!filterKey || (filterKey !== 'conceptList' && !filterValue)) {\n throw new Error(\n `filterKey and filterValue must be specified. filterKey = ${filterKey}, filterValue = ${filterValue}`\n );\n }\n switch (filterKey) {\n case 'conceptId':\n const target = redirectTo ? `target=${redirectTo}` : '';\n return `/${CONCEPT_ROOT}/${CONCEPT_EVALUATION}?conceptId=${filterValue}&${target}`;\n case 'challengeId':\n return `/${CONCEPT_ROOT}/${CONCEPT_EVALUATION}?challengeId=${filterValue}`;\n case 'conceptList':\n return `/${CONCEPT_ROOT}/${CONCEPT_EVALUATION}?conceptList=true`;\n default:\n throw new Error(`filterKey is invalid: ${filterKey}`);\n }\n}\n\nexport function conceptEvalById(ideaConceptId) {\n return `${conceptSubpage(ideaConceptId)}/review`;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useSelector } from 'react-redux';\nimport { translate } from 'react-i18next';\nimport { Size } from '../../../constants';\nimport localiseUserName from '../../../utils/localiseUserName';\nimport { getUserEntity } from '../../selectors/users';\nimport { getUserAvatar } from '../../getters/users';\nimport Avatar from '../Avatar';\nimport Media from '../Media';\n\nUserItem.propTypes = {\n userId: PropTypes.string.isRequired\n};\nexport function UserItem({ t, userId }) {\n const user = useSelector(getUserEntity(userId));\n const avatar = getUserAvatar(user);\n const name = localiseUserName(t, user);\n\n return (\n \n }\n bodyAlign=\"middle\">\n {name}\n \n );\n}\n\nexport default translate()(UserItem);\n","import UserItem from './UserItem';\n\nexport default UserItem;\n","import React, { cloneElement, useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { TransitionGroup } from 'react-transition-group';\nimport styled from 'styled-components';\nimport { RightSlideTransition, Backdrop } from '../../components';\nimport { closeModal } from '../../actions/modal';\nimport { intercomDimensions } from '../../styled/variables.styled';\n\nconst ANIM_SPEED = 300;\nconst CHILD_STYLE = {\n position: 'relative',\n width: '100%',\n flexGrow: 1,\n overflowY: 'auto'\n};\nconst DEFAULT_BG_COLOR = 'white';\nconst Z_INDEX = 10500;\nconst { vPadding, height } = intercomDimensions;\n\nconst Overlay = styled.aside`\n position: fixed;\n z-index: ${Z_INDEX};\n top: 0;\n right: 0;\n bottom: 0;\n display: flex;\n width: 565px;\n max-width: 90em;\n box-shadow: -5px 1px 17px 0 rgba(128, 128, 128, 0.5);\n padding: 24px 24px ${vPadding + height}px 24px;\n color: #6b6b6b;\n ${({ bgColor }) => ({\n background: bgColor\n })}\n`;\n\nSideOverlay.propTypes = {\n bgColor: PropTypes.string,\n isActive: PropTypes.bool\n};\nSideOverlay.defaultProps = {\n bgColor: DEFAULT_BG_COLOR\n};\nexport function SideOverlay({ bgColor, children, closeModal, ...childProps }) {\n const [active, setActive] = useState(false);\n\n useEffect(() => {\n setActive(true);\n }, []);\n\n const handleClose = () => {\n setActive(false);\n setTimeout(closeModal, ANIM_SPEED);\n };\n\n return (\n <>\n \n \n {active && (\n \n \n {cloneElement(children, {\n ...childProps,\n onClose: handleClose,\n style: CHILD_STYLE\n })}\n \n \n )}\n \n \n );\n}\n\nconst mapDispatchToProps = {\n closeModal\n};\n\nexport default connect(\n null,\n mapDispatchToProps\n)(SideOverlay);\n","import SideOverlay from './SideOverlay';\n\nexport default SideOverlay;\n","import isArray from 'lodash/isArray';\n\nconst forceArray = itemOrArray =>\n isArray(itemOrArray) ? itemOrArray : [itemOrArray];\n\nexport default forceArray;\n"],"sourceRoot":""}