{"version":3,"file":"js/app-stats-f924194290b27de9729d.js","mappings":"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","sources":["webpack://AYTM/./app/_stock/webpack/app/stats/page/ sync ^\\.\\/.*$","webpack://AYTM/./app/_stock/webpack/app/lib/regex.js","webpack://AYTM/./app/_stock/webpack/lib/stui/Checkbox.svelte","webpack://AYTM/./app/_stock/webpack/lib/stui/InlineDropdown.svelte","webpack://AYTM/./app/_stock/webpack/lib/stui/InlineDropdownList.svelte","webpack://AYTM/./app/_stock/webpack/app/stats/data-views/CompareItems/CompareItemsHeader.svelte","webpack://AYTM/./app/_stock/webpack/lib/stui/BarLoader.svelte","webpack://AYTM/./app/_stock/webpack/app/stats/data-views/CompareItems/CompareItemsRow.svelte","webpack://AYTM/./app/_stock/webpack/lib/stui/actions/portal.js","webpack://AYTM/./app/_stock/webpack/lib/stui/FullScreen.svelte","webpack://AYTM/./app/_stock/webpack/lib/stui/actions/shown.js","webpack://AYTM/./app/_stock/webpack/app/stats/data-views/CompareItems/CompareItems.svelte","webpack://AYTM/./app/_stock/webpack/app/stats/data-views/CompareItems.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/fetch.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/linkify-text.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/refs.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/assets/index.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/assets/jobs/AssetDeleteJob.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/assets/jobs/AssetUploadJob.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/assets/jobs/AssetUploadManager.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/actions.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/apiCalls.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/OEItem.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/PageDataComments.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/PageDataQA.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/Response.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/components/Approve.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/components/Fade.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/components/Kudos.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/components/NotificationPopup.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/components/OEQuestionResponse.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/components/OEQuestionResponse/AudioResponse.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/components/OEQuestionResponse/ImageResponse.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/components/OEQuestionResponse/TextReponse.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/components/OEQuestionResponse/VideoResponse.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/components/OEQuestionTitle.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/components/Reject.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/components/ResponseDropdown.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/components/SearchInput.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/components/Sentiment.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/components/SentimentIcon.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/components/SurveyDropdown.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/components/SurveyHeaderComments.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/components/ToolBox.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/components/Traits.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/hooks/useCodeBooks.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/hooks/useComments.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/hooks/useFetchDataComments.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/hooks/useTags.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/index.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/image-responses/ImageResponse.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/image-responses/ImageResponseItem.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/image-responses/PageDataImageResponses.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/image-responses/components/SurveyHeaderImageResponses.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/image-responses/hooks/useFetchDataImageResponses.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/image-responses/hooks/useImageResponses.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/image-responses/index.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/index.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/lib/download/invoke.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/lib/download/runtime.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/lib/hooks/useEventListener.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/lib/hooks/useNonInitialEffect.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/lib/hooks/useResponseStatus.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/reducers.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/video-responses/index.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/lib/draft-js/autocompletePlugin/lib/extract-aytm-logic.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/draft-js/autocompletePlugin/lib/extract-selection.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/draft-js/autocompletePlugin/lib/extract-parser-result.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/draft-js/autocompletePlugin/lib/tokens.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/draft-js/autocompletePlugin/lib/insert-spaces.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/draft-js/autocompletePlugin/lib/insert-token.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/draft-js/autocompletePlugin/lib/process-suggestion-data.js","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/advanced/lib/draft-js/suggestionsPlugin/lib/extract-longest-labels.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/draft-js/autocompletePlugin/builders/question-suggestion.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/draft-js/autocompletePlugin/builders/trait-suggestion.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/draft-js/autocompletePlugin/builders/index.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/draft-js/autocompletePlugin/builders/operator-suggestion.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/draft-js/autocompletePlugin/builders/cluster-suggestion.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/draft-js/autocompletePlugin/builders/variable-suggestion.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/draft-js/autocompletePlugin/builders/codebook-suggestion.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/draft-js/autocompletePlugin/builders/tag-suggestion.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/draft-js/autocompletePlugin/components/SuggestionItem.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/lib/draft-js/autocompletePlugin/components/Suggestions.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/lib/draft-js/decorators/errors-decorator-strategy.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/draft-js/decorators/warnings-decorator-strategy.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/components/AdvancedFilter.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/components/SearchInput.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/export.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/ad/Controls.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/cl-mapping/Component.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/cl/Component.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/cn/Controls.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/Component.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/QuestionAnnotation.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/QuestionBody.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/QuestionHeader.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/QuestionTitle.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/TextEditor.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/component/Controls.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/component/Footer.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/lib/TextEditor/__tests__/converters.spec.ts","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/lib/TextEditor/converters.ts","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/lib/TextEditor/linkDecorators.tsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/lib/constants.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/lib/hooks/useSingleAndDoubleClick.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/lib/skipper-links/attributes.ts","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/lib/skipper-links/click.ts","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/lib/skipper-links/const.ts","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/lib/skipper-links/link-types/correlation-finder-vq.ts","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/lib/skipper-links/link-types/correlation-finder.ts","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/lib/skipper-links/link-types/virtual-question.ts","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/lib/skipper-links/open-sidebar.ts","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/lib/templates.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/mapping/Attribute.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/mapping/Attributes.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/mapping/Component.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/mapping/Controls.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/mapping/Entities.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/mapping/Entity.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/mapping/Footer.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/mapping/Sources.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/mapping/Variable.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/mapping/Variables.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/mapping/lib.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/mapping/reducers.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/cq/Batch.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/cq/Component.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/cq/Controls.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/cq/reducers.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/data-cleaning/Controls.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/data-cleaning/Responses.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/hm/HeatMapPopup.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/oe/Controls.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/oe/components/Controls/Tags.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/oe/components/Controls/Verbatim.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/oe/components/Controls/ViewModes.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/oe/components/Controls/Wordcloud.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/sn/Component.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/tl-mapping/Component.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/tl/Component.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/vq/AnswerVariant.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/vq/AnswerVariantMX.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/vq/AnswerVariantOE.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/vq/AnswerVariantOEX.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/vq/AnswerVariantOptions.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/vq/Component.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/vq/Controls.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/vq/ModeToggle.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/vq/reducers.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/xq/Component.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/xq/Controls.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/xq/ScriptItemSelect.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/xq/ScriptItemText.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/coding/CodingCodebook.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/coding/CodingPanel.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/coding/CodingSkipper.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/coding/CodingTag.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/coding/components/CodebookSettings.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/coding/components/InputNew.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/coding/components/InputUpdate.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/coding/components/SettingsButton.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/coding/components/SettingsDropdown.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/coding/components/TagSettings.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/coding/lib/constants.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/coding/lib/hooks/useDrag.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/components/CustomQuestionButton.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/components/DropTargetContainer.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/components/PinnedCustomQuestion.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/components/SidebarPopup.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/components/reducers.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/crosstab/CrosstabPanel.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/data-cleaning/DataCleaningPanel.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/data-lab/DataLabPanel.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/export/ExportSpecific.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/filters/FiltersAdvanced.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/filters/FiltersGroup.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/filters/FiltersPanel.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/filters/FiltersRow.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/filters/actions.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/filters/reducers.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/mapping/MappingPanel.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/palettes/ColorThemes.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/palettes/PalettePicker.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/palettes/PalettesPanel.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/palettes/lib/constants.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/palettes/lib/func.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/reports/Report.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/reports/ReportControls.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/reports/ReportPopup.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/reports/ReportPopupComponents/ReportPopupDescription.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/reports/ReportPopupComponents/ReportPopupSharing.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/reports/ReportsPanel.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/reports/actions-state.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/reports/actions.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/weighting/WeightingItem.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/weighting/WeightingList.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/weighting/WeightingPanel.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/xperts-debug/JsonFileUpload.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/xperts-debug/XpertsDebugPopup.jsx","webpack://AYTM/./app/_stock/webpack/app/survey/editor/lib/logic/labels/labelMatch.js","webpack://AYTM/./app/_stock/webpack/app/survey/editor/lib/logic/statements.js","webpack://AYTM/./app/_stock/webpack/app/survey/editor/lib/text-count.js","webpack://AYTM/./app/_stock/webpack/app/survey/editor/resources/features.js","webpack://AYTM/./app/_stock/webpack/app/survey/editor/resources/urls.js","webpack://AYTM/./app/_stock/webpack/lib/AsyncJobManager/jobs/assets/ImageAssetUploadJob.js","webpack://AYTM/./app/_stock/webpack/lib/AsyncJobManager/jobs/assets/VideoAssetUploadJob.js","webpack://AYTM/./app/_stock/webpack/lib/common/assets.ts","webpack://AYTM/./app/_stock/webpack/lib/common/components/decorators/ContextProvider.jsx","webpack://AYTM/./app/_stock/webpack/lib/common/components/decorators/ContextSubscriber.jsx","webpack://AYTM/./app/_stock/webpack/lib/common/components/pure-component.jsx","webpack://AYTM/./app/_stock/webpack/lib/common/copy-to-clipboard.js","webpack://AYTM/./app/_stock/webpack/lib/common/upload-with-progress.js","webpack://AYTM/./app/_stock/webpack/lib/hooks/useIsVisible.js","webpack://AYTM/./app/_stock/webpack/lib/layout/container-expander.js","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/advanced/color-picker-popup.jsx","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/advanced/color-picker.jsx","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/advanced/lib/draft-js/decorators/ErrorsDecoratorFactory.js","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/advanced/lib/draft-js/suggestionsPlugin/components/SuggestionItem.jsx","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/advanced/lib/draft-js/suggestionsPlugin/components/Suggestions.jsx","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/advanced/lib/draft-js/suggestionsPlugin/lib/default-process-text.js","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/advanced/lib/draft-js/suggestionsPlugin/decorators/compound-decorator.js","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/advanced/lib/draft-js/suggestionsPlugin/index.js","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/advanced/lib/draft-js/suggestionsPlugin/suggestions-builder.js","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/advanced/lib/draft-js/suggestionsPlugin/lib/get-selection-coords.js","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/advanced/pagination.jsx","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/assets/jobs/video-asset-upload-manager.js","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/styles/assets/asset-files-uploader.module.scss?fad6","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/assets/asset-files-uploader.jsx","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/assets/jobs/image-asset-upload-manager.js","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/styles/assets/upload-assets-button.module.scss?2991","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/assets/upload-assets-button.jsx","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/basic/button.jsx","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/basic/dropdown.jsx","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/basic/light-box.jsx","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/styles/basic/loader-dots.module.scss?b7a9","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/basic/loader-dots.jsx","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/basic/loader-wave.jsx","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/basic/masked-input.jsx","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/basic/select.jsx","webpack://AYTM/./app/_stock/webpack/lib/common/string.ts","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/basic/text-field.jsx","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/basic/text-popup.jsx","webpack://AYTM/./app/_stock/webpack/lib/storage/index.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/assets/styles/index.module.scss?963f","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/styles/OEItem.module.scss?9e4b","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/styles/OEQuestionTitle.module.scss?733d","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/styles/Response.module.scss?56b5","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/styles/SearchInput.module.scss?8512","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/styles/Sentiments.module.scss?298a","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/styles/ToolBox.module.scss?b4a7","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/comments/styles/Traits.module.scss?1efb","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/image-responses/styles/ImageResponse.module.scss?81db","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/styles/index.module.scss?c20f","webpack://AYTM/./app/_stock/webpack/app/stats/page/components/styles/AdvancedFilter.module.scss?53a3","webpack://AYTM/./app/_stock/webpack/app/stats/page/components/styles/SearchInput.module.scss?5787","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/ad/styles/Controls.module.scss?b807","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/cn/styles/Controls.module.scss?3f10","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/mapping/styles/Component.module.scss?95c4","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/styles/Component.module.scss?dd77","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/styles/Controls.module.scss?c118","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/styles/Footer.module.scss?d76c","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/styles/QuestionAnnotation.module.scss?61b7","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/styles/QuestionBody.module.scss?a7c3","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/styles/QuestionHeader.module.scss?37a3","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/styles/QuestionTitle.module.scss?3a37","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/styles/TextEditor.module.scss?41b1","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/components/styles/TextFormatting.module.scss?c6a4","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/cq/styles/Component.module.scss?7d3a","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/data-cleaning/styles/Responses.module.scss?0c8e","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/oe/styles/Controls.module.scss?4a85","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/sn/styles/Component.module.scss?3170","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/vq/styles/Component.module.scss?1d3f","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/xq/styles/Component.module.scss?7e06","webpack://AYTM/./app/_stock/webpack/app/stats/page/question-views/xq/styles/ScriptItem.module.scss?09d3","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/coding/styles/CodingPanel.module.scss?22a5","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/components/styles/CustomQuestion.module.scss?89c9","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/components/styles/DropTargetContainer.module.scss?fd5f","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/crosstab/styles/CrosstabPanel.module.scss?e627","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/data-cleaning/styles/DataCleaningPanel.module.scss?cc95","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/data-lab/styles/DataLabPanel.module.scss?2c0b","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/export/styles/ExportPanel.module.scss?fe44","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/filters/styles/FiltersPanel.module.scss?49ab","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/mapping/styles/MappingPanel.module.scss?e1aa","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/palettes/styles/PalettePicker.module.scss?28ec","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/palettes/styles/PalettesPanel.module.scss?2eb5","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/reports/styles/Report.module.scss?2a65","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/reports/styles/ReportControls.module.scss?747c","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/reports/styles/ReportPopup.module.scss?e525","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/reports/styles/ReportsPanel.module.scss?34ed","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/weighting/styles/WeightingItem.module.scss?0f28","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/weighting/styles/WeightingList.module.scss?3f52","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/weighting/styles/WeightingPanel.module.scss?4d4b","webpack://AYTM/./app/_stock/webpack/app/stats/page/xperts-debug/JsonFileUpload.module.scss?dc0b","webpack://AYTM/./app/_stock/webpack/app/stats/page/xperts-debug/XpertsDebugPopup.module.scss?f227","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/styles/SuggestionsComponent.module.scss?534c","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/styles/advanced/draft-js-decorators.module.scss?59d7"],"sourcesContent":["var map = {\n\t\"./assets\": 88603,\n\t\"./assets/\": 88603,\n\t\"./assets/index\": 88603,\n\t\"./assets/index.jsx\": 88603,\n\t\"./assets/jobs/AssetDeleteJob\": 86473,\n\t\"./assets/jobs/AssetDeleteJob.js\": 86473,\n\t\"./assets/jobs/AssetUploadJob\": 88881,\n\t\"./assets/jobs/AssetUploadJob.js\": 88881,\n\t\"./assets/jobs/AssetUploadManager\": 19154,\n\t\"./assets/jobs/AssetUploadManager.js\": 19154,\n\t\"./assets/styles/index.module.scss\": 88643,\n\t\"./comments\": 43997,\n\t\"./comments/\": 43997,\n\t\"./comments/actions\": 46841,\n\t\"./comments/actions.js\": 46841,\n\t\"./comments/apiCalls\": 96238,\n\t\"./comments/apiCalls.js\": 96238,\n\t\"./comments/comments\": 78033,\n\t\"./comments/comments/\": 78033,\n\t\"./comments/comments/OEItem\": 23990,\n\t\"./comments/comments/OEItem.jsx\": 23990,\n\t\"./comments/comments/PageDataComments\": 57859,\n\t\"./comments/comments/PageDataComments.jsx\": 57859,\n\t\"./comments/comments/PageDataQA\": 21947,\n\t\"./comments/comments/PageDataQA.jsx\": 21947,\n\t\"./comments/comments/Response\": 3156,\n\t\"./comments/comments/Response.jsx\": 3156,\n\t\"./comments/comments/components/Approve\": 85761,\n\t\"./comments/comments/components/Approve.jsx\": 85761,\n\t\"./comments/comments/components/Fade\": 92080,\n\t\"./comments/comments/components/Fade.jsx\": 92080,\n\t\"./comments/comments/components/Kudos\": 26768,\n\t\"./comments/comments/components/Kudos.jsx\": 26768,\n\t\"./comments/comments/components/NotificationPopup\": 17714,\n\t\"./comments/comments/components/NotificationPopup.jsx\": 17714,\n\t\"./comments/comments/components/OEQuestionResponse\": 84148,\n\t\"./comments/comments/components/OEQuestionResponse.jsx\": 84148,\n\t\"./comments/comments/components/OEQuestionResponse/AudioResponse\": 3098,\n\t\"./comments/comments/components/OEQuestionResponse/AudioResponse.jsx\": 3098,\n\t\"./comments/comments/components/OEQuestionResponse/ImageResponse\": 26692,\n\t\"./comments/comments/components/OEQuestionResponse/ImageResponse.jsx\": 26692,\n\t\"./comments/comments/components/OEQuestionResponse/TextReponse\": 61465,\n\t\"./comments/comments/components/OEQuestionResponse/TextReponse.jsx\": 61465,\n\t\"./comments/comments/components/OEQuestionResponse/VideoResponse\": 68288,\n\t\"./comments/comments/components/OEQuestionResponse/VideoResponse.jsx\": 68288,\n\t\"./comments/comments/components/OEQuestionTitle\": 63993,\n\t\"./comments/comments/components/OEQuestionTitle.jsx\": 63993,\n\t\"./comments/comments/components/Reject\": 36989,\n\t\"./comments/comments/components/Reject.jsx\": 36989,\n\t\"./comments/comments/components/ResponseDropdown\": 7728,\n\t\"./comments/comments/components/ResponseDropdown.jsx\": 7728,\n\t\"./comments/comments/components/SearchInput\": 55762,\n\t\"./comments/comments/components/SearchInput.jsx\": 55762,\n\t\"./comments/comments/components/Sentiment\": 32129,\n\t\"./comments/comments/components/Sentiment.jsx\": 32129,\n\t\"./comments/comments/components/SentimentIcon\": 97156,\n\t\"./comments/comments/components/SentimentIcon.jsx\": 97156,\n\t\"./comments/comments/components/SurveyDropdown\": 24442,\n\t\"./comments/comments/components/SurveyDropdown.jsx\": 24442,\n\t\"./comments/comments/components/SurveyHeaderComments\": 59282,\n\t\"./comments/comments/components/SurveyHeaderComments.jsx\": 59282,\n\t\"./comments/comments/components/ToolBox\": 96875,\n\t\"./comments/comments/components/ToolBox.jsx\": 96875,\n\t\"./comments/comments/components/Traits\": 79186,\n\t\"./comments/comments/components/Traits.jsx\": 79186,\n\t\"./comments/comments/hooks/useCodeBooks\": 40771,\n\t\"./comments/comments/hooks/useCodeBooks.js\": 40771,\n\t\"./comments/comments/hooks/useComments\": 23782,\n\t\"./comments/comments/hooks/useComments.js\": 23782,\n\t\"./comments/comments/hooks/useFetchDataComments\": 68867,\n\t\"./comments/comments/hooks/useFetchDataComments.js\": 68867,\n\t\"./comments/comments/hooks/useTags\": 27196,\n\t\"./comments/comments/hooks/useTags.js\": 27196,\n\t\"./comments/comments/index\": 78033,\n\t\"./comments/comments/index.jsx\": 78033,\n\t\"./comments/comments/styles/OEItem.module.scss\": 28587,\n\t\"./comments/comments/styles/OEQuestionTitle.module.scss\": 28284,\n\t\"./comments/comments/styles/Response.module.scss\": 34459,\n\t\"./comments/comments/styles/SearchInput.module.scss\": 97262,\n\t\"./comments/comments/styles/Sentiments.module.scss\": 40233,\n\t\"./comments/comments/styles/ToolBox.module.scss\": 53999,\n\t\"./comments/comments/styles/Traits.module.scss\": 7744,\n\t\"./comments/image-responses\": 73154,\n\t\"./comments/image-responses/\": 73154,\n\t\"./comments/image-responses/ImageResponse\": 68142,\n\t\"./comments/image-responses/ImageResponse.jsx\": 68142,\n\t\"./comments/image-responses/ImageResponseItem\": 91847,\n\t\"./comments/image-responses/ImageResponseItem.jsx\": 91847,\n\t\"./comments/image-responses/PageDataImageResponses\": 61406,\n\t\"./comments/image-responses/PageDataImageResponses.jsx\": 61406,\n\t\"./comments/image-responses/components/SurveyHeaderImageResponses\": 10497,\n\t\"./comments/image-responses/components/SurveyHeaderImageResponses.jsx\": 10497,\n\t\"./comments/image-responses/hooks/useFetchDataImageResponses\": 57856,\n\t\"./comments/image-responses/hooks/useFetchDataImageResponses.js\": 57856,\n\t\"./comments/image-responses/hooks/useImageResponses\": 35301,\n\t\"./comments/image-responses/hooks/useImageResponses.js\": 35301,\n\t\"./comments/image-responses/index\": 73154,\n\t\"./comments/image-responses/index.jsx\": 73154,\n\t\"./comments/image-responses/styles/ImageResponse.module.scss\": 57489,\n\t\"./comments/index\": 43997,\n\t\"./comments/index.jsx\": 43997,\n\t\"./comments/lib/constants\": 45216,\n\t\"./comments/lib/constants.js\": 45216,\n\t\"./comments/lib/download/invoke\": 43398,\n\t\"./comments/lib/download/invoke.js\": 43398,\n\t\"./comments/lib/download/runtime\": 16832,\n\t\"./comments/lib/download/runtime.js\": 16832,\n\t\"./comments/lib/hooks/useEventListener\": 36228,\n\t\"./comments/lib/hooks/useEventListener.js\": 36228,\n\t\"./comments/lib/hooks/useNonInitialEffect\": 399,\n\t\"./comments/lib/hooks/useNonInitialEffect.js\": 399,\n\t\"./comments/lib/hooks/useResponseStatus\": 34021,\n\t\"./comments/lib/hooks/useResponseStatus.js\": 34021,\n\t\"./comments/lib/utils\": 42140,\n\t\"./comments/lib/utils.js\": 42140,\n\t\"./comments/reducers\": 95690,\n\t\"./comments/reducers.js\": 95690,\n\t\"./comments/styles/index.module.scss\": 64075,\n\t\"./comments/styles/keyframes.scss\": 31757,\n\t\"./comments/styles/resources/_functions.scss\": 53767,\n\t\"./comments/styles/resources/_index.scss\": 3388,\n\t\"./comments/styles/resources/_mixins.scss\": 74543,\n\t\"./comments/styles/resources/_vars.scss\": 94691,\n\t\"./comments/video-responses\": 72450,\n\t\"./comments/video-responses/\": 72450,\n\t\"./comments/video-responses/index\": 72450,\n\t\"./comments/video-responses/index.jsx\": 72450,\n\t\"./components/AdvancedFilter\": 71686,\n\t\"./components/AdvancedFilter.jsx\": 71686,\n\t\"./components/SearchInput\": 26459,\n\t\"./components/SearchInput.jsx\": 26459,\n\t\"./components/styles/AdvancedFilter.module.scss\": 72580,\n\t\"./components/styles/SearchInput.module.scss\": 62540,\n\t\"./export\": 84134,\n\t\"./export.js\": 84134,\n\t\"./question-views/ad/Controls\": 10634,\n\t\"./question-views/ad/Controls.jsx\": 10634,\n\t\"./question-views/ad/styles/Controls.module.scss\": 965,\n\t\"./question-views/cl-mapping/Component\": 49431,\n\t\"./question-views/cl-mapping/Component.jsx\": 49431,\n\t\"./question-views/cl/Component\": 45200,\n\t\"./question-views/cl/Component.jsx\": 45200,\n\t\"./question-views/cn/Controls\": 12036,\n\t\"./question-views/cn/Controls.jsx\": 12036,\n\t\"./question-views/cn/styles/Controls.module.scss\": 49091,\n\t\"./question-views/components/Component\": 79763,\n\t\"./question-views/components/Component.jsx\": 79763,\n\t\"./question-views/components/QuestionAnnotation\": 36478,\n\t\"./question-views/components/QuestionAnnotation.jsx\": 36478,\n\t\"./question-views/components/QuestionBody\": 33683,\n\t\"./question-views/components/QuestionBody.jsx\": 33683,\n\t\"./question-views/components/QuestionHeader\": 77966,\n\t\"./question-views/components/QuestionHeader.jsx\": 77966,\n\t\"./question-views/components/QuestionTitle\": 56968,\n\t\"./question-views/components/QuestionTitle.jsx\": 56968,\n\t\"./question-views/components/TextEditor\": 4430,\n\t\"./question-views/components/TextEditor.jsx\": 4430,\n\t\"./question-views/components/component/Controls\": 39064,\n\t\"./question-views/components/component/Controls.jsx\": 39064,\n\t\"./question-views/components/component/Footer\": 61951,\n\t\"./question-views/components/component/Footer.jsx\": 61951,\n\t\"./question-views/components/lib/TextEditor/__tests__/converters.spec\": 64603,\n\t\"./question-views/components/lib/TextEditor/__tests__/converters.spec.ts\": 64603,\n\t\"./question-views/components/lib/TextEditor/converters\": 82896,\n\t\"./question-views/components/lib/TextEditor/converters.ts\": 82896,\n\t\"./question-views/components/lib/TextEditor/linkDecorators\": 73848,\n\t\"./question-views/components/lib/TextEditor/linkDecorators.tsx\": 73848,\n\t\"./question-views/components/lib/constants\": 6985,\n\t\"./question-views/components/lib/constants.js\": 6985,\n\t\"./question-views/components/lib/hooks/useSingleAndDoubleClick\": 72700,\n\t\"./question-views/components/lib/hooks/useSingleAndDoubleClick.js\": 72700,\n\t\"./question-views/components/lib/skipper-links/attributes\": 72515,\n\t\"./question-views/components/lib/skipper-links/attributes.ts\": 72515,\n\t\"./question-views/components/lib/skipper-links/click\": 98405,\n\t\"./question-views/components/lib/skipper-links/click.ts\": 98405,\n\t\"./question-views/components/lib/skipper-links/const\": 15872,\n\t\"./question-views/components/lib/skipper-links/const.ts\": 15872,\n\t\"./question-views/components/lib/skipper-links/link-types/correlation-finder\": 54416,\n\t\"./question-views/components/lib/skipper-links/link-types/correlation-finder-vq\": 41219,\n\t\"./question-views/components/lib/skipper-links/link-types/correlation-finder-vq.ts\": 41219,\n\t\"./question-views/components/lib/skipper-links/link-types/correlation-finder.ts\": 54416,\n\t\"./question-views/components/lib/skipper-links/link-types/virtual-question\": 89265,\n\t\"./question-views/components/lib/skipper-links/link-types/virtual-question.ts\": 89265,\n\t\"./question-views/components/lib/skipper-links/open-sidebar\": 17842,\n\t\"./question-views/components/lib/skipper-links/open-sidebar.ts\": 17842,\n\t\"./question-views/components/lib/skipper-links/types\": 61967,\n\t\"./question-views/components/lib/skipper-links/types.ts\": 61967,\n\t\"./question-views/components/lib/svg/radar.svg\": 87864,\n\t\"./question-views/components/lib/templates\": 35525,\n\t\"./question-views/components/lib/templates.js\": 35525,\n\t\"./question-views/components/mapping/Attribute\": 40895,\n\t\"./question-views/components/mapping/Attribute.jsx\": 40895,\n\t\"./question-views/components/mapping/Attributes\": 37914,\n\t\"./question-views/components/mapping/Attributes.jsx\": 37914,\n\t\"./question-views/components/mapping/Component\": 51747,\n\t\"./question-views/components/mapping/Component.jsx\": 51747,\n\t\"./question-views/components/mapping/Controls\": 26852,\n\t\"./question-views/components/mapping/Controls.jsx\": 26852,\n\t\"./question-views/components/mapping/Entities\": 52849,\n\t\"./question-views/components/mapping/Entities.jsx\": 52849,\n\t\"./question-views/components/mapping/Entity\": 99340,\n\t\"./question-views/components/mapping/Entity.jsx\": 99340,\n\t\"./question-views/components/mapping/Footer\": 55470,\n\t\"./question-views/components/mapping/Footer.jsx\": 55470,\n\t\"./question-views/components/mapping/Sources\": 97955,\n\t\"./question-views/components/mapping/Sources.jsx\": 97955,\n\t\"./question-views/components/mapping/Variable\": 54184,\n\t\"./question-views/components/mapping/Variable.jsx\": 54184,\n\t\"./question-views/components/mapping/Variables\": 40389,\n\t\"./question-views/components/mapping/Variables.jsx\": 40389,\n\t\"./question-views/components/mapping/lib\": 65201,\n\t\"./question-views/components/mapping/lib.js\": 65201,\n\t\"./question-views/components/mapping/reducers\": 58735,\n\t\"./question-views/components/mapping/reducers.js\": 58735,\n\t\"./question-views/components/mapping/styles/Component.module.scss\": 34593,\n\t\"./question-views/components/styles/Component.module.scss\": 48010,\n\t\"./question-views/components/styles/Controls.module.scss\": 78675,\n\t\"./question-views/components/styles/Footer.module.scss\": 7519,\n\t\"./question-views/components/styles/QuestionAnnotation.module.scss\": 89357,\n\t\"./question-views/components/styles/QuestionBody.module.scss\": 70930,\n\t\"./question-views/components/styles/QuestionHeader.module.scss\": 28322,\n\t\"./question-views/components/styles/QuestionTitle.module.scss\": 27276,\n\t\"./question-views/components/styles/TextEditor.module.scss\": 39245,\n\t\"./question-views/components/styles/TextFormatting.module.scss\": 12723,\n\t\"./question-views/components/styles/lib.scss\": 71237,\n\t\"./question-views/cq/Batch\": 73458,\n\t\"./question-views/cq/Batch.jsx\": 73458,\n\t\"./question-views/cq/Component\": 68500,\n\t\"./question-views/cq/Component.jsx\": 68500,\n\t\"./question-views/cq/Controls\": 69390,\n\t\"./question-views/cq/Controls.jsx\": 69390,\n\t\"./question-views/cq/reducers\": 96500,\n\t\"./question-views/cq/reducers.js\": 96500,\n\t\"./question-views/cq/styles/Component.module.scss\": 80047,\n\t\"./question-views/data-cleaning/Controls\": 7236,\n\t\"./question-views/data-cleaning/Controls.jsx\": 7236,\n\t\"./question-views/data-cleaning/Responses\": 65832,\n\t\"./question-views/data-cleaning/Responses.jsx\": 65832,\n\t\"./question-views/data-cleaning/styles/Responses.module.scss\": 28675,\n\t\"./question-views/hm/HeatMapPopup\": 11653,\n\t\"./question-views/hm/HeatMapPopup.jsx\": 11653,\n\t\"./question-views/oe/Controls\": 6730,\n\t\"./question-views/oe/Controls.jsx\": 6730,\n\t\"./question-views/oe/components/Controls/Tags\": 76075,\n\t\"./question-views/oe/components/Controls/Tags.jsx\": 76075,\n\t\"./question-views/oe/components/Controls/Verbatim\": 12795,\n\t\"./question-views/oe/components/Controls/Verbatim.jsx\": 12795,\n\t\"./question-views/oe/components/Controls/ViewModes\": 90463,\n\t\"./question-views/oe/components/Controls/ViewModes.jsx\": 90463,\n\t\"./question-views/oe/components/Controls/Wordcloud\": 64878,\n\t\"./question-views/oe/components/Controls/Wordcloud.jsx\": 64878,\n\t\"./question-views/oe/styles/Controls.module.scss\": 23870,\n\t\"./question-views/sn/Component\": 43352,\n\t\"./question-views/sn/Component.jsx\": 43352,\n\t\"./question-views/sn/styles/Component.module.scss\": 40523,\n\t\"./question-views/tl-mapping/Component\": 46267,\n\t\"./question-views/tl-mapping/Component.jsx\": 46267,\n\t\"./question-views/tl/Component\": 75627,\n\t\"./question-views/tl/Component.jsx\": 75627,\n\t\"./question-views/vq/AnswerVariant\": 29288,\n\t\"./question-views/vq/AnswerVariant.jsx\": 29288,\n\t\"./question-views/vq/AnswerVariantMX\": 84758,\n\t\"./question-views/vq/AnswerVariantMX.jsx\": 84758,\n\t\"./question-views/vq/AnswerVariantOE\": 6979,\n\t\"./question-views/vq/AnswerVariantOE.jsx\": 6979,\n\t\"./question-views/vq/AnswerVariantOEX\": 66326,\n\t\"./question-views/vq/AnswerVariantOEX.jsx\": 66326,\n\t\"./question-views/vq/AnswerVariantOptions\": 35628,\n\t\"./question-views/vq/AnswerVariantOptions.jsx\": 35628,\n\t\"./question-views/vq/Component\": 77837,\n\t\"./question-views/vq/Component.jsx\": 77837,\n\t\"./question-views/vq/Controls\": 58621,\n\t\"./question-views/vq/Controls.jsx\": 58621,\n\t\"./question-views/vq/ModeToggle\": 21087,\n\t\"./question-views/vq/ModeToggle.jsx\": 21087,\n\t\"./question-views/vq/reducers\": 5405,\n\t\"./question-views/vq/reducers.js\": 5405,\n\t\"./question-views/vq/styles/Component.module.scss\": 75027,\n\t\"./question-views/xq/Component\": 52640,\n\t\"./question-views/xq/Component.jsx\": 52640,\n\t\"./question-views/xq/Controls\": 34038,\n\t\"./question-views/xq/Controls.jsx\": 34038,\n\t\"./question-views/xq/ScriptItemSelect\": 88345,\n\t\"./question-views/xq/ScriptItemSelect.jsx\": 88345,\n\t\"./question-views/xq/ScriptItemText\": 8086,\n\t\"./question-views/xq/ScriptItemText.jsx\": 8086,\n\t\"./question-views/xq/styles/Component.module.scss\": 22204,\n\t\"./question-views/xq/styles/ScriptItem.module.scss\": 69623,\n\t\"./sidebar/coding/CodingCodebook\": 25199,\n\t\"./sidebar/coding/CodingCodebook.jsx\": 25199,\n\t\"./sidebar/coding/CodingPanel\": 41153,\n\t\"./sidebar/coding/CodingPanel.jsx\": 41153,\n\t\"./sidebar/coding/CodingSkipper\": 79092,\n\t\"./sidebar/coding/CodingSkipper.jsx\": 79092,\n\t\"./sidebar/coding/CodingTag\": 90507,\n\t\"./sidebar/coding/CodingTag.jsx\": 90507,\n\t\"./sidebar/coding/components/CodebookSettings\": 59893,\n\t\"./sidebar/coding/components/CodebookSettings.jsx\": 59893,\n\t\"./sidebar/coding/components/InputNew\": 7979,\n\t\"./sidebar/coding/components/InputNew.jsx\": 7979,\n\t\"./sidebar/coding/components/InputUpdate\": 72216,\n\t\"./sidebar/coding/components/InputUpdate.jsx\": 72216,\n\t\"./sidebar/coding/components/SettingsButton\": 33588,\n\t\"./sidebar/coding/components/SettingsButton.jsx\": 33588,\n\t\"./sidebar/coding/components/SettingsDropdown\": 40708,\n\t\"./sidebar/coding/components/SettingsDropdown.jsx\": 40708,\n\t\"./sidebar/coding/components/TagSettings\": 86674,\n\t\"./sidebar/coding/components/TagSettings.jsx\": 86674,\n\t\"./sidebar/coding/lib/constants\": 6968,\n\t\"./sidebar/coding/lib/constants.js\": 6968,\n\t\"./sidebar/coding/lib/hooks/useDrag\": 26207,\n\t\"./sidebar/coding/lib/hooks/useDrag.js\": 26207,\n\t\"./sidebar/coding/styles/CodingPanel.module.scss\": 77302,\n\t\"./sidebar/components/CustomQuestionButton\": 20207,\n\t\"./sidebar/components/CustomQuestionButton.jsx\": 20207,\n\t\"./sidebar/components/DropTargetContainer\": 16395,\n\t\"./sidebar/components/DropTargetContainer.jsx\": 16395,\n\t\"./sidebar/components/PinnedCustomQuestion\": 55286,\n\t\"./sidebar/components/PinnedCustomQuestion.jsx\": 55286,\n\t\"./sidebar/components/SidebarPopup\": 50143,\n\t\"./sidebar/components/SidebarPopup.jsx\": 50143,\n\t\"./sidebar/components/reducers\": 25953,\n\t\"./sidebar/components/reducers.jsx\": 25953,\n\t\"./sidebar/components/styles/CustomQuestion.module.scss\": 65115,\n\t\"./sidebar/components/styles/DropTargetContainer.module.scss\": 36762,\n\t\"./sidebar/components/styles/lib.scss\": 23228,\n\t\"./sidebar/crosstab/CrosstabPanel\": 3205,\n\t\"./sidebar/crosstab/CrosstabPanel.jsx\": 3205,\n\t\"./sidebar/crosstab/styles/CrosstabPanel.module.scss\": 35466,\n\t\"./sidebar/data-cleaning/DataCleaningPanel\": 37457,\n\t\"./sidebar/data-cleaning/DataCleaningPanel.jsx\": 37457,\n\t\"./sidebar/data-cleaning/styles/DataCleaningPanel.module.scss\": 14763,\n\t\"./sidebar/data-lab/DataLabPanel\": 94114,\n\t\"./sidebar/data-lab/DataLabPanel.jsx\": 94114,\n\t\"./sidebar/data-lab/styles/DataLabPanel.module.scss\": 56964,\n\t\"./sidebar/export/ExportSpecific\": 3158,\n\t\"./sidebar/export/ExportSpecific.jsx\": 3158,\n\t\"./sidebar/export/styles/ExportPanel.module.scss\": 57687,\n\t\"./sidebar/filters/FiltersAdvanced\": 42581,\n\t\"./sidebar/filters/FiltersAdvanced.jsx\": 42581,\n\t\"./sidebar/filters/FiltersGroup\": 73585,\n\t\"./sidebar/filters/FiltersGroup.jsx\": 73585,\n\t\"./sidebar/filters/FiltersPanel\": 41363,\n\t\"./sidebar/filters/FiltersPanel.jsx\": 41363,\n\t\"./sidebar/filters/FiltersRow\": 38807,\n\t\"./sidebar/filters/FiltersRow.jsx\": 38807,\n\t\"./sidebar/filters/actions\": 73118,\n\t\"./sidebar/filters/actions.js\": 73118,\n\t\"./sidebar/filters/reducers\": 39025,\n\t\"./sidebar/filters/reducers.js\": 39025,\n\t\"./sidebar/filters/styles/FiltersPanel.module.scss\": 88940,\n\t\"./sidebar/mapping/MappingPanel\": 64481,\n\t\"./sidebar/mapping/MappingPanel.jsx\": 64481,\n\t\"./sidebar/mapping/styles/MappingPanel.module.scss\": 64935,\n\t\"./sidebar/palettes/ColorThemes\": 19099,\n\t\"./sidebar/palettes/ColorThemes.jsx\": 19099,\n\t\"./sidebar/palettes/PalettePicker\": 72544,\n\t\"./sidebar/palettes/PalettePicker.jsx\": 72544,\n\t\"./sidebar/palettes/PalettesPanel\": 48213,\n\t\"./sidebar/palettes/PalettesPanel.jsx\": 48213,\n\t\"./sidebar/palettes/lib/constants\": 14608,\n\t\"./sidebar/palettes/lib/constants.js\": 14608,\n\t\"./sidebar/palettes/lib/func\": 75434,\n\t\"./sidebar/palettes/lib/func.js\": 75434,\n\t\"./sidebar/palettes/styles/PalettePicker.module.scss\": 71456,\n\t\"./sidebar/palettes/styles/PalettesPanel.module.scss\": 37574,\n\t\"./sidebar/reports/Report\": 6142,\n\t\"./sidebar/reports/Report.jsx\": 6142,\n\t\"./sidebar/reports/ReportControls\": 75354,\n\t\"./sidebar/reports/ReportControls.jsx\": 75354,\n\t\"./sidebar/reports/ReportPopup\": 61574,\n\t\"./sidebar/reports/ReportPopup.jsx\": 61574,\n\t\"./sidebar/reports/ReportPopupComponents/ReportPopupDescription\": 66673,\n\t\"./sidebar/reports/ReportPopupComponents/ReportPopupDescription.jsx\": 66673,\n\t\"./sidebar/reports/ReportPopupComponents/ReportPopupSharing\": 85794,\n\t\"./sidebar/reports/ReportPopupComponents/ReportPopupSharing.jsx\": 85794,\n\t\"./sidebar/reports/ReportsPanel\": 80534,\n\t\"./sidebar/reports/ReportsPanel.jsx\": 80534,\n\t\"./sidebar/reports/actions\": 14732,\n\t\"./sidebar/reports/actions-state\": 24437,\n\t\"./sidebar/reports/actions-state.js\": 24437,\n\t\"./sidebar/reports/actions.js\": 14732,\n\t\"./sidebar/reports/styles/Report.module.scss\": 19284,\n\t\"./sidebar/reports/styles/ReportControls.module.scss\": 73730,\n\t\"./sidebar/reports/styles/ReportPopup.module.scss\": 6038,\n\t\"./sidebar/reports/styles/ReportsPanel.module.scss\": 94007,\n\t\"./sidebar/weighting/WeightingItem\": 37806,\n\t\"./sidebar/weighting/WeightingItem.jsx\": 37806,\n\t\"./sidebar/weighting/WeightingList\": 10210,\n\t\"./sidebar/weighting/WeightingList.jsx\": 10210,\n\t\"./sidebar/weighting/WeightingPanel\": 28349,\n\t\"./sidebar/weighting/WeightingPanel.jsx\": 28349,\n\t\"./sidebar/weighting/styles/WeightingItem.module.scss\": 76942,\n\t\"./sidebar/weighting/styles/WeightingList.module.scss\": 33206,\n\t\"./sidebar/weighting/styles/WeightingPanel.module.scss\": 71829,\n\t\"./styles/globals.scss\": 82439,\n\t\"./styles/lib.scss\": 52073,\n\t\"./xperts-debug/JsonFileUpload\": 52854,\n\t\"./xperts-debug/JsonFileUpload.jsx\": 52854,\n\t\"./xperts-debug/JsonFileUpload.module.scss\": 7492,\n\t\"./xperts-debug/XpertsDebugPopup\": 71900,\n\t\"./xperts-debug/XpertsDebugPopup.jsx\": 71900,\n\t\"./xperts-debug/XpertsDebugPopup.module.scss\": 37899\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 14798;","export const EMAIL_REGEX =\n // eslint-disable-next-line unicorn/no-unsafe-regex\n /^(([^\\s\"(),.:;<>@[\\\\\\]]+(\\.[^\\s\"(),.:;<>@[\\\\\\]]+)*)|(\".+\"))@((\\[(?:\\d{1,3}\\.){3}\\d{1,3}])|(([\\dA-Za-z-]+\\.)+[A-Za-z]{2,}))$/\n","<svelte:options immutable />\n\n<script src=\"./Checkbox.svelte.js\">\n</script>\n\n<div class=\"Checkbox\" class:Checkbox-checked={checked}>\n <span class=\"Checkbox-component\">\n <span class=\"Checkbox-hidden\">\n <input type=\"checkbox\" bind:checked />\n </span>\n <span class=\"Checkbox-box\" on:click={toggle}><i class=\"Checkbox-icon icon-aytmfd-checkmark\" /></span>\n </span>\n {#if label}\n <span class=\"Checkbox-label\" on:click={toggle}>{label}</span>\n {/if}\n</div>\n\n<style src=\"./Checkbox.svelte.scss\" lang=\"scss\">\n</style>\n","<svelte:options immutable />\n\n<script context=\"module\">\n export const contextKey = { context: 'InlineDropdown' }\n</script>\n\n<script src=\"./InlineDropdown.svelte.js\">\n</script>\n\n<!-- svelte-ignore a11y-label-has-associated-control -->\n<div\n bind:this={component}\n class=\"InlineDropdown\"\n class:InlineDropdown-opened={opened}\n class:InlineDropdown-disabled={readOnly}\n tabindex=\"0\"\n style=\"width:\n {null != width ? ('string' === typeof width ? width : `${width}px`) : 'auto'}; height:\n {fullHeight ? '100%' : 'auto'}; min-width:{minWidth\n ? 'string' === typeof minWidth\n ? minWidth\n : `${minWidth}px`\n : 'none'}; max-width: {maxWidth ? ('string' === typeof maxWidth ? maxWidth : `${maxWidth}px`) : 'none'};\"\n>\n <div\n class=\"InlineDropdown-label\"\n class:InlineDropdown-label-full={fullText}\n on:click|stopPropagation={opened ? close : open}\n style=\"height: {fullHeight ? '100%' : 'auto'}\"\n >\n <div class=\"InlineDropdown-label-text\"><slot name=\"label\" /></div>\n <span class=\"InlineDropdown-label-arrow\" style={arrowStyle} />\n </div>\n {#if opened}\n <div\n class=\"InlineDropdown-dropdown{'right' == position ? ' InlineDropdown-dropdown-right' : ''}\"\n style=\"width: {null != width ? ('string' === typeof width ? width : `${width}px`) : 'auto'};\n min-width:{dropdownMinWidth\n ? 'string' === typeof dropdownMinWidth\n ? dropdownMinWidth\n : `${dropdownMinWidth}px`\n : width\n ? 'string' === typeof width\n ? width\n : `${width}px`\n : '100%'}; max-width: {dropdownMaxWidth\n ? 'string' === typeof dropdownMaxWidth\n ? dropdownMaxWidth\n : `${dropdownMaxWidth}px`\n : 'none'}; max-height: {dropdownMaxHeight\n ? 'string' === typeof dropdownMaxHeight\n ? dropdownMaxHeight\n : `${dropdownMaxHeight}px`\n : 'none'};\n margin: {dropdownOffset\n ? 'string' === typeof dropdownOffset\n ? `0 0 0 -${dropdownOffset}`\n : `0 0 0 -${dropdownOffset}px`\n : '0'};\n padding: {dropdownOffset\n ? 'string' === typeof dropdownOffset\n ? `0 ${dropdownOffset} 0 0`\n : `0 ${dropdownOffset}px 0 0`\n : '0'};\"\n >\n <div\n style=\"margin: 0 {dropdownOffset\n ? 'string' === typeof dropdownOffset\n ? `-${dropdownOffset}`\n : `-${dropdownOffset}px`\n : '0'}\n 0 0;\"\n >\n <slot name=\"dropdown\" />\n </div>\n </div>\n {/if}\n</div>\n\n<style src=\"./InlineDropdown.svelte.scss\" lang=\"scss\">\n</style>\n","<svelte:options immutable />\n\n<script src=\"./InlineDropdownList.svelte.js\">\n</script>\n\n<div class=\"InlineDropdownList\">\n {#if filter}\n <div class=\"InlineDropdownList-filter\">\n <input\n type=\"text\"\n placeholder={filterPlaceholder}\n class=\"InlineDropdownList-filter-input\"\n bind:this={filterInput}\n bind:value={filterValue}\n on:keydown={filterKeyDown}\n />\n {#if filterValue}\n <div class=\"InlineDropdownList-filter-clear\" on:click={clearFilterValue} />\n {/if}\n </div>\n {/if}\n {#if viewItems.length}\n {#each viewItems as item, itemIndex (item.id)}\n {#if item.hidden != true}\n <div\n class=\"InlineDropdownList-item\"\n class:InlineDropdownList-item-selected={selected === item.id}\n class:InlineDropdownList-item-nowrap={!itemTextWrap}\n style=\"padding: 4px {dropdownOffset\n ? 'string' === typeof dropdownOffset\n ? dropdownOffset + itemPadding\n : `${dropdownOffset + itemPadding}px`\n : `${itemPadding}px`}\"\n on:click={() => select(itemIndex)}\n >\n {#if item.html}\n {@html item.html}\n {:else if item.text}{item.text}{/if}\n </div>\n {/if}\n {/each}\n {:else}\n <div class=\"InlineDropdownList-empty\">\n {#if nothingFoundText}{nothingFoundText}{:else} {/if}\n </div>\n {/if}\n</div>\n\n<style src=\"./InlineDropdownList.svelte.scss\" lang=\"scss\">\n</style>\n","<svelte:options immutable />\n\n<script src=\"./CompareItemsHeader.svelte.js\">\n</script>\n\n<template>\n {#if showImages}\n <div class=\"CompareItemsHeader\">\n <div\n class=\"CompareItemsHeader-attributes\"\n style=\"flex: {autoWidth\n ? '0'\n : '1'} 1 {attributesColumnWidth}px; height: {imageHeight}px; min-width: {attributesColumnWidth}px; {autoWidth\n ? `${attributesColumnWidth}px`\n : 'auto'};\"\n >\n <div\n class=\"CompareItemsHeader-decViewIndex\"\n class:CompareItemsHeader-decViewIndex-hidden={0 >= viewIndex}\n on:click={decViewIndex}\n on:wheel|nonpassive={onWheel}\n title=\"use mouse wheel to scroll faster\"\n >\n <div\n class=\"CompareItemsHeader-decViewIndex-arrow\"\n style=\"border-top-width: {imageHeight / 2}px; border-bottom-width: {imageHeight / 2}px;\"\n />\n </div>\n </div>\n {#each viewItems as item, itemIndex (item._index)}\n <div\n class=\"CompareItemsHeader-item-image\"\n class:CompareItemsHeader-item-image-disabled={hoverStateDisabled}\n style=\"flex: 0 1 {itemFlex}px; min-width: {itemFlex}px;\"\n on:wheel|nonpassive={scrollOnImages ? onWheel : void 0}\n >\n <div class=\"CompareItemsHeader-item-image-content\" style=\"width: {columnWidth}px; height: {imageHeight}px;\">\n {#if 'function' === typeof getImageURL && item.image}\n <img\n src={getImageURL(item, columnWidth, imageHeight)}\n alt={`${itemName} ${item.position}`}\n style=\"width: {columnWidth}px; height: {imageHeight}px;\"\n />\n <span class=\"CompareItemsHeader-item-show-image\" on:click={() => onClickImage(item._index)}\n ><i class=\"icon-aytmfd-zoom\" /></span\n >\n {:else}\n <div class=\"CompareItemsHeader-item-image-content-empty\">\n <svg width=\"1000\" height=\"1000\" viewBox=\"0 0 1000 1000\">\n <path\n d=\"M615 181c0-19-15-34-34-34H437c-19 0-34 15-34 34V420h212C616 420 616 181 615 181zM599 286c-1 2-3 4-5 5l-55 17c-2 1-4 3-5 5l-17 55c-1 4-6 6-10 5-2-1-4-3-5-5l-17-55c-1-2-3-4-5-5l-55-17c-4-1-6-6-5-10 1-2 3-4 5-5L480 260c2-1 4-3 5-5l17-55c1-4 6-6 10-5 2 1 4 3 5 5l17 55c1 2 3 4 5 5l55 17C598 278 600 282 599 286zM347 208H234c-15 0-26 12-26 26v186h166V235C373 220 361 208 347 208zM348 323c0 2-2 3-3 3l-36 11c-2 0-3 2-3 3l-11 36c-1 3-4 4-6 3-2 0-3-2-3-3l-11-36c0-2-2-3-3-3l-36-11c-3-1-4-4-3-6 0-2 2-3 3-3l36-11c2 0 3-2 3-3l11-35c1-3 4-4 6-3 2 0 3 2 3 3l11 35c0 2 2 3 3 3l36 11C348 318 349 321 348 323zM783 208H670c-15 0-26 12-26 26v186h166V235C809 220 798 208 783 208zM785 323c-1 2-2 3-3 3l-36 11c-2 0-3 2-3 3l-11 36c-1 3-4 4-6 3-2 0-3-2-3-3l-11-36c-1-2-2-3-3-3l-36-11c-3-1-4-4-3-6 1-2 2-3 3-3l36-11c2 0 3-2 3-3l11-35c1-3 4-4 6-3 2 0 3 2 3 3l11 35c1 2 2 3 3 3l36 11C784 318 785 321 785 323zM403 442h212v421c0 19-15 34-34 34H437c-19 0-34-15-34-34V442zM208 442h166V770c0 15-12 26-26 26H234c-15 0-26-12-26-26C208 770 208 442 208 442zM644 442h166V770l0 0c0 15-12 26-26 26H670c-15 0-26-12-26-26V442zM938 344l-31 9c-1 0-2 2-3 3l-9 31c0 1-2 2-3 3-2 1-5-1-6-3l-9-31c0-1-2-2-3-3l-31-9c-1 0-2-2-3-3-1-2 1-5 3-5l31-9c1 0 2-2 3-3l9-31c0-1 2-2 3-3 2-1 5 1 6 3l9 31c0 1 2 2 3 3l31 9c1 0 2 2 3 3C942 341 941 343 938 344zM173 338c1 2-1 5-3 5l-31 9c-1 0-2 2-3 3l-9 31c0 1-1 2-3 3-2 1-5-1-6-3l-9-31c0-1-1-2-3-3l-31-9c-1 0-2-2-3-3-1-2 1-5 3-5l31-9c1 0 3-2 3-3l9-31c0-1 1-2 3-3 2-1 5 1 6 3l9 31c0 1 1 2 3 3l31 9C172 336 173 337 173 338zM170 335L170 335 170 335 170 335 170 335z\"\n />\n </svg>\n </div>\n {/if}\n {#if showScrollToDetails}\n <div class=\"CompareItemsHeader-item-scroll-to-details\" on:click={() => onClickItem(item._index)}>\n {scrollToDetailsText}\n </div>\n {/if}\n </div>\n {#if null != viewItemRanks[itemIndex]}\n <div\n class=\"CompareItemsHeader-item-rank-badge\"\n style=\"background: {null == viewItemRanks[itemIndex]\n ? '#CCCCCC'\n : colorTheme[(viewItemRanks[itemIndex] - 1) % colorTheme.length] || '#CCCCCC'}\"\n >\n {viewItemRanks[itemIndex]}\n </div>\n {/if}\n {#if enablePresets}\n <div\n class=\"CompareItemsHeader-item-remove\"\n title=\"Remove {itemName}\"\n on:click={() => onRemoveItem(item._index)}\n />\n {/if}\n </div>\n {/each}\n {#each emptyCols as emptyCol, emptyColIndex (emptyCol)}\n {#if 0 === emptyColIndex}\n <div class=\"CompareItemsHeader-add-item\" style=\"flex: 0 1 {itemFlex}px; min-width: {itemFlex}px;\">\n <div\n class=\"CompareItemsHeader-add-item-content\"\n on:click={() => {\n addColumnDropdownOpened = !addColumnDropdownOpened\n }}\n >\n <svg\n width={plusSignSize}\n height={plusSignSize}\n viewBox=\"0 0 28 28\"\n style=\"width: {plusSignSize}px; height: {plusSignSize}px; margin: {imageHeight / 2 -\n plusSignSize / 2}px 0 0 {columnWidth / 2 - plusSignSize / 2}px;\"\n >\n <defs>\n <filter id=\"plussignshadow\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\".5\" flood-color=\"#666\" result=\"flood\" />\n <feComposite in=\"flood\" in2=\"SourceGraphic\" operator=\"in\" result=\"composite1\" />\n <feGaussianBlur in=\"composite1\" stdDeviation=\"0.8\" result=\"blur\" />\n <feOffset result=\"offset\" />\n <feComposite in=\"SourceGraphic\" in2=\"offset\" result=\"composite2\" />\n </filter>\n </defs>\n <path\n style=\"isolation:auto;mix-blend-mode:normal\"\n d=\"M14.8 270.2a12 12 0 0 0-12 12 12 12 0 0 0 12 12 12 12 0 0 0 12-12 12 12 0 0 0-12-12zm-.24 5.98h.48c.274 0 .494.22.494.494v4.827H20.2c.323 0 .584.26.584.584v.23c0 .324-.26.584-.584.584h-4.667v4.827c0 .273-.22.494-.494.494h-.48a.492.492 0 0 1-.494-.494v-4.827H9.4a.583.583 0 0 1-.584-.584v-.23c0-.324.26-.584.584-.584h4.667v-4.827c0-.273.22-.494.494-.494z\"\n color=\"#c7edea\"\n overflow=\"visible\"\n fill=\"#c7edea\"\n enable-background=\"accumulate\"\n filter=\"url(#plussignshadow)\"\n transform=\"translate(-0.8 -268.2)\"\n />\n </svg>\n </div>\n </div>\n {:else}\n <div class=\"CompareItemsHeader-item-image\" style=\"flex: 0 1 {itemFlex}px; min-width: {itemFlex}px;\" />\n {/if}\n {/each}\n <div\n class=\"CompareItemsHeader-incViewIndex\"\n class:CompareItemsHeader-incViewIndex-hidden={viewIndex >= maxViewIndex}\n on:click={incViewIndex}\n on:wheel|nonpassive={onWheel}\n title=\"use mouse wheel to scroll faster\"\n >\n <div\n class=\"CompareItemsHeader-incViewIndex-arrow\"\n style=\"border-top-width: {imageHeight / 2}px; border-bottom-width: {imageHeight / 2}px;\"\n />\n </div>\n </div>\n {/if}\n <div class=\"CompareItemsHeader\">\n <div\n class=\"CompareItemsHeader-attributes\"\n style=\"flex: {autoWidth ? '0' : '1'} 1 {attributesColumnWidth}px; min-width: {attributesColumnWidth}px; {autoWidth\n ? `${attributesColumnWidth}px`\n : 'auto'};\"\n >\n {#if !showImages}\n <div\n class=\"CompareItemsHeader-decViewIndex\"\n class:CompareItemsHeader-decViewIndex-hidden={0 >= viewIndex}\n on:click={decViewIndex}\n on:wheel|nonpassive={onWheel}\n title=\"use mouse wheel to scroll faster\"\n >\n <div class=\"CompareItemsHeader-decViewIndex-arrow\" />\n </div>\n {/if}\n </div>\n {#each viewItems as item, itemIndex (item._index)}\n <div\n class=\"CompareItemsHeader-item-text\"\n class:CompareItemsHeader-item-text-full={fullTexts}\n class:CompareItemsHeader-item-text-with-scroll={!showImages && showScrollToDetails}\n class:CompareItemsHeader-item-text-disabled={hoverStateDisabled}\n style=\"flex: 0 1 {itemFlex}px; min-width: {itemFlex}px;\"\n >\n {#if enablePresets}\n <InlineDropdown\n width={columnWidth}\n dropdownMaxHeight={0 < tableHeight\n ? Math.min(selectItemDropdownMaxHeight, tableHeight)\n : selectItemDropdownMaxHeight}\n fullText={fullTexts}\n fullHeight={true}\n >\n <span slot=\"label\">\n <b class=\"CompareItemsHeader-item-text-position\">{itemName} {item.position}.</b>\n <br />\n {#if 0 < item.text.trim().length}\n {@html item.text}\n {:else}\n \n {/if}\n {#if sigtestLetters}\n <span class=\"CompareItemsHeader-item-text-sigtestletter\">{sigtestLetters[item._itemIndex] || ''}</span>\n {/if}\n </span>\n <div slot=\"dropdown\">\n <InlineDropdownList\n selected={item.position}\n items={itemOptions}\n itemPadding={6}\n filter={5 < itemOptions.length}\n filterPlaceholder={`search ${itemPluralName}...`}\n on:select={event => replaceItem(item._index, event.detail.item.id)}\n />\n </div>\n </InlineDropdown>\n {:else}\n <div class=\"CompareItemsHeader-item-text-inactive\" style=\"width: {columnWidth}px; height: 100%;\">\n {#if 0 < item.text.trim().length}\n {@html item.text}\n {:else}\n \n {/if}\n {#if sigtestLetters}\n <span class=\"CompareItemsHeader-item-text-sigtestletter\">{sigtestLetters[item._itemIndex] || ''}</span>\n {/if}\n </div>\n {/if}\n {#if !showImages}\n {#if showScrollToDetails}\n <div class=\"CompareItemsHeader-item-scroll-to-details\" on:click={() => onClickItem(item._index)}>\n {scrollToDetailsText}\n </div>\n {/if}\n {#if null != viewItemRanks[itemIndex]}\n <div\n class=\"CompareItemsHeader-item-rank-badge\"\n style=\"background: {null == viewItemRanks[itemIndex]\n ? '#CCCCCC'\n : colorTheme[(viewItemRanks[itemIndex] - 1) % colorTheme.length] || '#CCCCCC'}\"\n >\n {viewItemRanks[itemIndex]}\n </div>\n {/if}\n {#if enablePresets}\n <div\n class=\"CompareItemsHeader-item-remove\"\n title=\"Remove {itemName}\"\n on:click={() => onRemoveItem(item._index)}\n />\n {/if}\n {/if}\n </div>\n {/each}\n {#each emptyCols as emptyCol, emptyColIndex (emptyCol)}\n {#if enablePresets && 0 === emptyColIndex}\n <div\n class=\"CompareItemsHeader-item-text\"\n class:CompareItemsHeader-item-text-full={fullTexts}\n class:CompareItemsHeader-item-text-with-scroll={!showImages && showScrollToDetails}\n class:CompareItemsHeader-item-text-disabled={hoverStateDisabled}\n style=\"flex: 0 1 {itemFlex}px; min-width: {itemFlex}px;\"\n >\n <InlineDropdown\n width={columnWidth}\n dropdownMaxHeight={0 < tableHeight\n ? Math.min(selectItemDropdownMaxHeight, tableHeight)\n : selectItemDropdownMaxHeight}\n opened={addColumnDropdownOpened}\n fullText={fullTexts}\n fullHeight={true}\n on:open={() => {\n addColumnDropdownOpened = true\n }}\n on:close={() => {\n addColumnDropdownOpened = false\n }}\n >\n <span slot=\"label\">\n Choose another<br />\n {itemName}\n </span>\n <div slot=\"dropdown\">\n <InlineDropdownList\n items={itemOptions}\n itemPadding={6}\n filter={5 < itemOptions.length}\n filterPlaceholder={`search ${itemPluralName}...`}\n on:select={event => {\n addItem(event.detail.item.id)\n }}\n />\n </div>\n </InlineDropdown>\n </div>\n {:else}\n <div class=\"CompareItemsHeader-item-image\" style=\"flex: 0 1 {itemFlex}px; min-width: {itemFlex}px;\" />\n {/if}\n {/each}\n {#if !showImages}\n <div\n class=\"CompareItemsHeader-incViewIndex\"\n class:CompareItemsHeader-incViewIndex-hidden={viewIndex >= maxViewIndex}\n on:click={incViewIndex}\n on:wheel|nonpassive={onWheel}\n title=\"use mouse wheel to scroll faster\"\n >\n <div class=\"CompareItemsHeader-incViewIndex-arrow\" />\n </div>\n {/if}\n {#if enablePresets && (showImages || viewIndex >= maxViewIndex)}\n {#if showAppendAddColumn}\n <div\n class=\"CompareItemsHeader-add-column CompareItemsHeader-add-column-append\"\n title={`add ${itemName}`}\n on:click={appendAddColumn}\n >\n +\n </div>\n {:else if showRemoveAddColumn}\n <div class=\"CompareItemsHeader-add-column CompareItemsHeader-add-column-remove\" on:click={removeAddColumn}>\n +\n </div>\n {/if}\n {/if}\n </div>\n</template>\n\n<style src=\"./CompareItemsHeader.svelte.scss\" lang=\"scss\">\n</style>\n","<svelte:options immutable />\n\n<script src=\"./BarLoader.svelte.js\">\n</script>\n\n<span class=\"BarLoader\" style=\"height:{heightStyle};line-height:{heightStyle}\">\n {#each barsIter as _, barIndex}<span class=\"BarLoader-bar BarLoader-bar-{barIndex}\" />{/each}\n</span>\n\n<style src=\"./BarLoader.svelte.scss\" lang=\"scss\">\n</style>\n","<svelte:options immutable />\n\n<script src=\"./CompareItemsRow.svelte.js\">\n</script>\n\n<template>\n <div class=\"CompareItemsRow\" class:CompareItemsRow-info={attr.info}>\n <div\n class=\"CompareItemsRow-attributeName\"\n style=\"flex: {autoWidth\n ? '0'\n : '1'} 1 {attributesColumnWidth}px; min-width: {attributesColumnWidth}px; max-width: {autoWidth\n ? `${attributesColumnWidth}px`\n : 'auto'};\"\n >\n <div class=\"CompareItemsRow-attributeName-content\" on:click={onAttributeClick}>\n {#if attrPosition}\n <b class=\"CompareItemsRow-attributeName-position\">{attrPosition}:</b>\n {/if}\n {#if activeAttributeIndex == attrIndex}\n <span class=\"CompareItemsRow-attributeName-text\"><b>{@html attr.text}</b></span>\n <span\n class=\"CompareItemsRow-attributeName-sort CompareItemsRow-attributeName-sort-{reverseSortOrder\n ? 'up'\n : 'down'}\"\n />\n {:else}<span class=\"CompareItemsRow-attributeName-text\">{@html attr.text}</span>{/if}\n </div>\n {#if attr.custom}\n <div class=\"CompareItemsRow-attributeName-remove\" title=\"Remove {attributeName}\" on:click={onRemoveRowClick} />\n {/if}\n </div>\n {#each viewItems as item (item._index)}\n <div class=\"CompareItemsRow-stat\" style=\"flex: 0 1 {itemFlex}px; min-width: {itemFlex}px\">\n {#if item.attributes && item.attributes[attrIndex]}\n <div\n class=\"CompareItemsRow-stat-content\"\n class:CompareItemsRow-stat-content-empty={item.attributes[attrIndex].empty}\n >\n <span\n class=\"CompareItemsRow-stat-content-text{item.attributes[attrIndex].low ? '-low' : ''}\"\n title={item.attributes[attrIndex].title}\n >\n {#if sigtestStats}\n {#if null != item.attributes[attrIndex].sigtext}\n {@html item.attributes[attrIndex].sigtext}\n {:else if item.attributes[attrIndex].percents != undefined && null != item.attributes[attrIndex].percents}\n {0 === item.attributes[attrIndex].percents ? 0 : item.attributes[attrIndex].percents.toFixed(1)}%\n {:else if item.attributes[attrIndex].amount != undefined && null != item.attributes[attrIndex].amount}\n {0 === item.attributes[attrIndex].amount ? 0 : item.attributes[attrIndex].amount.toFixed(2)}\n {/if}\n {:else if item.attributes[attrIndex].text != undefined && null != item.attributes[attrIndex].text}\n {@html item.attributes[attrIndex].text}\n {:else if item.attributes[attrIndex].percents != undefined && null != item.attributes[attrIndex].percents}\n {0 === item.attributes[attrIndex].percents ? 0 : item.attributes[attrIndex].percents.toFixed(1)}%\n {:else if item.attributes[attrIndex].amount != undefined && null != item.attributes[attrIndex].amount}\n {0 === item.attributes[attrIndex].amount ? 0 : item.attributes[attrIndex].amount.toFixed(2)}\n {/if}\n </span>\n {#if sigtestStats}\n <span class=\"CompareItemsRow-stat-content-sigtest\">\n {#each sigtestStats[item._itemIndex][attrIndex] as sigtestValue}\n <span class=\"CompareItemsRow-stat-content-sigtest-value\" title={sigtestValue.title}>\n {sigtestValue.letter || ''}\n </span>\n {/each}\n </span>\n {/if}\n </div>\n {:else if 0 === attrIndex}\n <BarLoader bars={8} height={'0.8em'} />\n {/if}\n </div>\n {/each}\n {#each emptyCols as emptyCol (emptyCol)}\n <div class=\"CompareItemsRow-stat\" style=\"flex: 0 1 {itemFlex}px; min-width: {itemFlex}px\"> </div>\n {/each}\n </div>\n</template>\n\n<style src=\"./CompareItemsRow.svelte.scss\" lang=\"scss\">\n</style>\n","export default function portal(node) {\n if ('undefined' === typeof document || 'undefined' === typeof document.body) {\n return {}\n }\n if (node) {\n document.body.appendChild(node)\n }\n return {\n destroy() {\n setTimeout(function () {\n if (node && node.parentNode === document.body) {\n document.body.removeChild(node)\n }\n }, 0)\n }\n }\n}\n","<script context=\"module\">\n export const BACKDROP_COLORS = {\n dark: 'rgba(50, 50, 50, 0.85)',\n darkBlur: 'rgba(50, 50, 50, 0.5)',\n emerald: 'rgba(136, 209, 205, 0.85)',\n emeraldBlur: 'rgba(136, 209, 205, 0.5)'\n }\n export const DEFAULT_Z_INDEX = 9000\n</script>\n\n<script src=\"./FullScreen.svelte.js\">\n</script>\n\n<div\n class=\"backdrop\"\n style=\"{backdropColor\n ? `background: ${BACKDROP_COLORS[backdropColor] ? BACKDROP_COLORS[backdropColor] : backdropColor}`\n : ''};\n z-index: {zIndex}\"\n use:portal\n>\n <div class=\"content\">\n <slot />\n </div>\n</div>\n\n<style src=\"./FullScreen.svelte.scss\" lang=\"scss\">\n</style>\n","function isVisible(node) {\n if (!(node instanceof Element)) return false\n\n if (null === node.offsetParent) return false\n\n const style = window.getComputedStyle(node)\n if ('none' === style.display) return false\n if ('visible' !== style.visibility) return false\n\n // const rect = node.getBoundingClientRect()\n // return (\n // (rect.top + rect.height >= 0 &&\n // rect.top + rect.height <= (window.innerHeight || document.documentElement.clientHeight)) ||\n // (rect.bottom - rect.height >= 0 &&\n // rect.bottom - rect.height <= (window.innerHeight || document.documentElement.clientHeight))\n // )\n\n return true\n}\n\nexport default function shown(node, { onShown = () => {}, debounce = 200 } = {}) {\n let actualOnShown = onShown\n\n let timer = null\n let mutationObserverInstance = null\n\n const MutationObserver =\n 'undefined' !== typeof window ? window.MutationObserver || window.WebKitMutationObserver : null\n\n timer = setTimeout(function () {\n timer = null\n\n if (isVisible(node)) {\n actualOnShown()\n return\n }\n\n if (null != MutationObserver && 'undefined' !== typeof document && 'undefined' !== typeof document.body) {\n mutationObserverInstance = new MutationObserver(function () {\n if (null != timer) {\n clearTimeout(timer)\n }\n timer = setTimeout(function () {\n timer = null\n\n if (isVisible(node)) {\n mutationObserverInstance.disconnect()\n mutationObserverInstance = null\n actualOnShown()\n }\n }, debounce)\n })\n mutationObserverInstance.observe(document.body, {\n subtree: true,\n attributes: true,\n attributeFilter: ['style', 'class']\n })\n } else {\n const checkVisible = function () {\n if (isVisible(node)) {\n actualOnShown()\n } else {\n timer = setTimeout(checkVisible, 1000)\n }\n }\n timer = setTimeout(checkVisible, 1000)\n }\n }, 100)\n\n return {\n update(onShown) {\n actualOnShown = onShown\n },\n destroy() {\n if (null != mutationObserverInstance) {\n mutationObserverInstance.disconnect()\n mutationObserverInstance = null\n }\n if (null != timer) {\n clearTimeout(timer)\n timer = null\n }\n }\n }\n}\n","<svelte:options immutable />\n\n<script context=\"module\">\n export const DEFAULT_COLOR_THEME = [\n '#8CC63F',\n '#60AC66',\n '#419982',\n '#1D83A2',\n '#1868A6',\n '#135182',\n '#003863',\n '#a9d46f',\n '#9bd49f',\n '#71b3a1',\n '#56a2b9',\n '#528ebc',\n '#4e7da1',\n '#406a8a',\n '#c6e39f',\n '#bce2bf',\n '#a0ccc1',\n '#8ec1d1',\n '#8cb4d3',\n '#89a8c1',\n '#809cb1'\n ]\n export const TABLE_PADDING = 7\n export const ATTRIBUTES_COLUMN_WIDTH = 110\n export const FULLSCREEN_ATTRIBUTES_COLUMN_WIDTH = 140\n export const DEFAULT_ITEMS_PER_PAGE = 4\n export const DEFAULT_COLUMN_WIDTH = 130\n export const DEFAULT_IMAGE_RATIO = 1.5\n export const DEFAULT_FULLSCREEN_IMAGE_RATIO = 0.7\n export const DEFAULT_AUTO_WIDTH = false\n export const DEFAULT_MIN_ITEMS_PER_PAGE = 3\n export const DEFAULT_MAX_ITEMS_PER_PAGE = Number.POSITIVE_INFINITY\n export const DEFAULT_SELECT_ITEM_DROPDOWN_MAX_HEIGHT = 155\n</script>\n\n<script src=\"./CompareItems.svelte.js\">\n</script>\n\n<svelte:window bind:innerWidth={windowWidth} bind:innerHeight={windowHeight} />\n\n<template>\n {#if showComponent}\n <div class=\"CompareItems\" class:CompareItems-autoWidth={autoWidth} bind:clientWidth={componentWidth}>\n <div class=\"CompareItems-header\">\n {#if showTitle}\n <div class=\"CompareItems-title\">\n {@html title || ''}\n </div>\n {/if}\n <div class=\"CompareItems-controls\">\n {#if showExportButton}\n <div\n class=\"CompareItems-ExportButton\"\n class:CompareItems-ExportButton-disabled={exporting}\n title=\"Export\"\n on:click={exporting ? null : exportStarted}\n >\n {#if exporting}\n <i class=\"icon-aytmfd-refresh afd-spin\" />\n {:else}\n <i class=\"icon-aytmfd-export\" />\n {/if}\n </div>\n {/if}\n {#if showFullScreenButton}\n <div class=\"CompareItems-FullScreenButton\" title=\"Expand to full screen\" on:click={switchToFullScreen}>\n <svg width=\"100\" height=\"100\" viewBox=\"0 0 100 100\">\n <path\n d=\"M12.38,22.45V65.88h77V22.45Zm72,38.41H17.42V27.48H84.33ZM32.06,53l-7.44-8.86,7.44-8.87V42H70.39V35.3l7.45,8.87L70.39,53V46.32H32.06Z\"\n />\n </svg>\n </div>\n {/if}\n </div>\n </div>\n <div class=\"CompareItems-filters\">\n {#if enableSigtestAnalysis}\n <div class=\"analysis-mode\">\n Analysis:\n <InlineDropdown maxWidth={110} dropdownMaxHeight={130} dropdownOffset={10}>\n <span slot=\"label\">{'sigtest' === analysisMode ? sigtestAnalysisName : mainAnalysisName}</span>\n <div slot=\"dropdown\">\n <InlineDropdownList\n bind:selected={analysisMode}\n items={analysisModeOptions}\n itemTextWrap={false}\n dropdownOffset={10}\n />\n </div>\n </InlineDropdown>\n </div>\n {/if}\n {#if itemsHasImages}\n <Checkbox bind:checked={showImages} label={'Show images'} />\n {/if}\n {#if itemsHasFullTexts}\n <Checkbox bind:checked={fullTexts} label={'Full text'} />\n {/if}\n {#if additionalFilters && 0 < additionalFilters.length}\n {#each additionalFilters as filter, index}\n {filter.title}\n <InlineDropdown maxWidth={110} dropdownMaxHeight={130} dropdownOffset={10}>\n <span slot=\"label\">{filter.options[additionalFilterIndexes[index] ?? 0].label}</span>\n <div slot=\"dropdown\">\n <InlineDropdownList\n items={filter.options.map((v, i) => ({ id: i, text: v.label }))}\n selected={additionalFilterIndexes[index]}\n itemTextWrap={false}\n dropdownOffset={10}\n on:select={event => selectAdditionalFilter(event.detail.item, index)}\n />\n </div>\n </InlineDropdown>\n {/each}\n {/if}\n {#if enablePresets}\n {#if presets && 0 < presets.length}\n Show:\n <InlineDropdown position={'right'} maxWidth={110} dropdownMaxHeight={130} dropdownOffset={10}>\n <span slot=\"label\">\n {presetFetching\n ? '......'\n : 0 <= presetIndex\n ? (presets[presetIndex] || { text: 'custom' }).text\n : 'custom'}\n </span>\n <div slot=\"dropdown\">\n <InlineDropdownList\n bind:selected={presetIndex}\n items={presetOptions}\n itemTextWrap={false}\n dropdownOffset={10}\n />\n </div>\n </InlineDropdown>\n {/if}\n {/if}\n {#if enableRankBy}\n Rank by:\n <InlineDropdown\n position={'right'}\n maxWidth={110}\n dropdownMinWidth={140}\n dropdownMaxWidth={200}\n dropdownMaxHeight={130}\n dropdownOffset={10}\n >\n <span slot=\"label\">\n {@html sortByAttributeIndexText}\n </span>\n <div slot=\"dropdown\">\n <InlineDropdownList\n bind:selected={sortByAttributeIndex}\n items={sortByAttributeIndexOptions}\n itemTextWrap={true}\n dropdownOffset={10}\n />\n </div>\n </InlineDropdown>\n {/if}\n </div>\n <div bind:clientHeight={headerHeight}>\n <CompareItemsHeader\n bind:viewIndex\n itemOptions={itemHeaderOptions}\n selectedItemsAmount={(selectedItems && selectedItems.length) || 0}\n autoItemsPerPage={'auto' === itemsPerPage}\n itemsPerPage={actualItemsPerPage}\n showScrollToDetails={'function' === typeof onClickItem}\n {viewItems}\n {columnWidth}\n {autoWidth}\n {imageRatio}\n {emptyCols}\n {itemName}\n {itemPluralName}\n {activeAttributeIndex}\n {sortByAttributeIndex}\n {colorTheme}\n {sigtestLetters}\n {scrollToDetailsText}\n {getImageURL}\n {tableHeight}\n {minItemsPerPage}\n {showImages}\n {fullTexts}\n {scrollOnImages}\n {selectItemDropdownMaxHeight}\n {fullScreen}\n {enablePresets}\n on:replaceItem={replaceItem}\n on:addItem={addItem}\n on:removeItem={removeItem}\n on:appendAddColumn={appendAddColumn}\n on:removeAddColumn={removeAddColumn}\n on:clickItem={clickOnItem}\n on:clickImage={clickOnImage}\n />\n </div>\n <div\n bind:clientHeight={tableHeight}\n class=\"CompareItems-table\"\n style=\"max-height: {0 < maxTableHeight ? `${maxTableHeight}px` : 'unset'}; overflow-y: {0 < maxTableHeight\n ? 'auto'\n : 'unset'};\"\n >\n {#if attributes && 0 < attributes.length}\n {#each selectedAttributes as attr (attr._index)}\n <CompareItemsRow\n bind:sortByAttributeIndex\n bind:reverseSortOrder\n attrIndex={attr._attributeIndex}\n attrPosition={attr._attributePosition}\n rowIndex={attr._index}\n itemsPerPage={actualItemsPerPage}\n {attr}\n {columnWidth}\n {autoWidth}\n {emptyCols}\n {viewItems}\n {viewIndex}\n {activeAttributeIndex}\n {sigtestStats}\n {attributeName}\n {fullScreen}\n on:removeAttributeRow={removeAttributeRow}\n />\n {/each}\n {:else}\n <CompareItemsRow\n attr={{ position: 1, text: '', main: true, hidden: false }}\n attrIndex={0}\n attrPosition=\".\"\n itemsPerPage={actualItemsPerPage}\n {columnWidth}\n {autoWidth}\n {emptyCols}\n {viewItems}\n {viewIndex}\n {activeAttributeIndex}\n {fullScreen}\n />\n {/if}\n </div>\n </div>\n {:else if null === showComponent}\n <div\n style=\"display: block; width: 100%; height: 1px; background: transparent;\"\n use:shownAction={{\n onShown: () => {\n showComponent = true\n 'function' === typeof onLoad && onLoad()\n }\n }}\n >\n \n </div>\n {/if}\n {#if showFullScreen}\n <div class=\"CompareItems-FullScreen-anchor\" bind:this={fullScreenAnchorNode} />\n <FullScreen backdropColor=\"emeraldBlur\" applyBlurTo={applyFullScreenBlurTo}>\n <div class=\"CompareItems-FullScreen\">\n <div class=\"CompareItems-title\" bind:clientHeight={titleHeight}>\n {@html title || placeholder || ' '}\n </div>\n <div class=\"CompareItems-FullScreen-close\" on:click={switchOffFullScreen} />\n <svelte:self\n bind:analysisMode={fullScreenAnalysisMode}\n bind:presetIndex={fullScreenPresetIndex}\n bind:sortByAttributeIndex={fullScreenSortByAttributeIndex}\n bind:selectedIndexes={fullScreenSelectedIndexes}\n bind:selectedAttributeIndexes={fullScreenSelectedAttributeIndexes}\n bind:reverseSortOrder={fullScreenReverseSortOrder}\n bind:showImages={fullScreenShowImages}\n bind:fullTexts={fullScreenFullTexts}\n {additionalFilters}\n {additionalFilterIndexes}\n {onAdditionalFilterIndexesUpdated}\n {itemName}\n {itemPluralName}\n {attributeName}\n {attributes}\n {items}\n {presets}\n {minItemsPerPage}\n {columnWidth}\n {colorTheme}\n {imagesDomain}\n {mainAnalysisName}\n {sigtestAnalysisName}\n {scrollToDetailsText}\n {scrollOnImages}\n {selectItemDropdownMaxHeight}\n {enableSigtestAnalysis}\n {enablePresets}\n {enableRankBy}\n {customAttributes}\n {getImageURL}\n {sigtestLetterFromPosition}\n {resortItems}\n {titleHeight}\n {itemsHasImages}\n {onClickImage}\n title={null}\n itemsPerPage=\"auto\"\n imageRatio={fullScreenImageRatio}\n maxItemsPerPage={fullScreenMaxItemsPerPage}\n fullScreen={true}\n autoWidth={true}\n showComponent={null}\n showTitle={false}\n showFullScreen={false}\n showFullScreenButton={false}\n showExportButton={false}\n countMaxTableHeight={true}\n />\n </div>\n </FullScreen>\n {/if}\n</template>\n\n<style src=\"./CompareItems.svelte.scss\" lang=\"scss\">\n</style>\n","import CompareItems from '@aytm/app/stats/data-views/CompareItems/CompareItems.svelte'\n\nexport default function render({ target, props, clear } = {}) {\n if (target) {\n if (clear) {\n target.innerHTML = ''\n }\n const component = new CompareItems({ target, props })\n return component\n }\n return null\n}\n\nexport function unlink(component) {\n if (component) {\n component.$destroy()\n return true\n }\n return false\n}\n\nexport function update(component, props) {\n if (component) {\n component.$set(props)\n return true\n }\n return false\n}\n","// import { Storage } from '@aytm/lib/storage'\nimport { abortableFetch } from 'abortcontroller-polyfill/dist/cjs-ponyfill'\nimport * as _isomorphicFetch from 'isomorphic-fetch'\n\n/* compat/compat disabled because polyfill is used */\n// eslint-disable-next-line compat/compat\nconst fetch = (window.AbortController && _isomorphicFetch) || abortableFetch(_isomorphicFetch).fetch\n\nexport const sendJSONData = async ({ url, method, data, signal }) =>\n // Storage.Encode(data)\n // .then(_bsfz =>\n fetch(url, {\n method: method,\n mode: 'cors',\n cache: 'no-cache',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ...data\n }),\n signal\n })\n // )\n .then(response => response.json())\n\nexport const sendRawJSONData = async ({ url, method, data, signal }) =>\n fetch(url, {\n method: method,\n mode: 'cors',\n cache: 'no-cache',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(data),\n signal\n }).then(response => response.json())\n\nexport const sendJobJSONData = async ({ url, method, data, signal }) =>\n fetch(url, {\n method: method,\n cache: 'no-cache',\n crossDomain: true,\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(data),\n signal\n }).then(response => response.json())\n\nexport const sendFormData = async ({ url, method = 'POST', data = {}, signal }) => {\n const formData = new FormData()\n Object.keys(data).forEach(name => {\n formData.append(name, data[name])\n })\n // return Storage.Encode(data)\n // .then(_bsfz =>\n return (\n fetch(url, {\n method: method,\n cache: 'no-cache',\n body: JSON.stringify({\n ...data\n // _bsfz\n }),\n signal\n })\n // )\n .then(response => response.json())\n )\n}\n","export function linkifyText(text) {\n if ('string' === typeof text) {\n let linkifiedText = text\n const REGEX_URL = /(https?:\\/\\/|www\\.)[^\\s'<]+/gi\n\n linkifiedText = linkifiedText.replace(REGEX_URL, match => {\n try {\n const uri = ('www' === match.slice(0, 3).toLowerCase() ? 'https://' : '') + match\n const [link, shortName, other] = uri.split(/[()]/)\n const name = shortName ? shortName.replace(/_/g, ' ') : null\n return `<a href='${link}' target='_blank' rel='noopener'>${\n name || decodeURIComponent(new URL(link).hostname)\n }</a>${other || ''}`\n } catch {\n return match\n }\n })\n return linkifiedText\n }\n return text\n}\n","// eslint-disable-next-line unicorn/no-unsafe-regex\nconst REF_REG = new RegExp(/^([VX]?Q\\d+(?:_\\d+)?)/, 'i')\n\nexport const getLogicData = (tags, codebooks, r, error) =>\n error\n ? { codebook: [], tag: [] }\n : {\n codebook: Object.keys(r.expression.status.codebooks || {}).reduce((acc, cur) => {\n r.expression.status.codebooks[cur].alias.length &&\n !codebooks.some(codebook => codebook.title.toUpperCase() == cur)\n ? acc.concat(r.expression.status.codebooks[cur].alias.map(v => `${cur}.${v}`))\n : acc.push(cur)\n return acc\n }, []),\n tag: Object.keys(r.expression.status.tags || {}).reduce((acc, cur) => {\n r.expression.status.tags[cur].alias.length &&\n !tags.manual.some(tag => tag.toUpperCase() == cur) &&\n !tags.skipper.some(tag => tag.toUpperCase() == cur)\n ? acc.concat(r.expression.status.tags[cur].alias.map(v => `${cur}.${v}`))\n : acc.push(cur)\n return acc\n }, [])\n }\n\nexport const getRefs = r =>\n Object.keys(r.expression.status.refs)\n .filter(v => null !== v.match(REF_REG))\n .concat(r.expression.status.errors.filter(v => 'ref' == v.type && null !== v.text.match(REF_REG)).map(v => v.text))\n .filter((x, i, a) => a.indexOf(x) == i)\n\nexport const getClustersRefs = (clusters, r) =>\n Object.keys(r.expression.status.refs)\n .filter(v =>\n clusters.some(c => {\n const reg = new RegExp(`^${c.qid}(?:SQ(\\\\d+))?R$`, 'i')\n return null !== v.match(reg)\n })\n )\n .concat(r.expression.status.errors.filter(v => 'cluster' == v.type).map(v => `${v.scope.toUpperCase()}R`))\n .map(v => {\n const indexes = r.expression.status.tokens.map((t, i) => (t.match == v ? i + 2 : '')).filter(String)\n const titles = indexes.map(index => r.expression.status.tokens[Number(index)].match.slice(1, -1))\n return titles.map(title => [v, title])\n })\n .filter((x, i, a) => a.findIndex(v => v[0] == x[0] && v[1] == x[1]) == i)\n","// lib\nimport React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport classNames from 'classnames'\nimport ADND from '@aytm/lib/adnd/ADND'\nimport Popup, { PopupCloseButton } from '@aytm/lib/rfd-ui/components/basic/popup'\nimport uploadAsset from '@aytm/app/stats/page/assets/jobs/AssetUploadManager'\n\n// styles\nimport '@aytm/app/stats/page/styles/globals.scss'\n\nimport style from '@aytm/app/stats/page/assets/styles/index.module.scss'\n\nexport default class AssetFileUploader extends Component {\n static propTypes = {\n text: PropTypes.string,\n type: PropTypes.string,\n contentType: PropTypes.string,\n uploadUrl: PropTypes.string,\n statusUrl: PropTypes.string,\n upgradePackage: PropTypes.object,\n disabled: PropTypes.bool,\n getAccessKey: PropTypes.func,\n onFileUploaded: PropTypes.func,\n onFileError: PropTypes.func,\n onClosePopup: PropTypes.func\n }\n\n state = {\n dragOver: false,\n acceptFile: true,\n uploading: false,\n processing: false,\n progress: null,\n warnings: [],\n errors: []\n }\n\n inputRef = React.createRef()\n\n dropAssetFileTarget = ADND.targets\n .files()\n .onDrop(this.onAssetFileDrop)\n .onEnter(this.onAssetFileDragEnter)\n .onLeave(this.onAssetFileDragLeave)\n .acceptDrop(this.acceptAssetFileDrop)\n\n @autobind\n connectDropTarget(ref) {\n this.dropAssetFileTarget.connect(ref)\n }\n\n @autobind\n onAssetFileDragEnter() {\n this.setState(state => {\n return {\n ...state,\n dragOver: true\n }\n })\n }\n\n @autobind\n onAssetFileDragLeave() {\n this.setState(state => {\n return {\n ...state,\n dragOver: false\n }\n })\n }\n\n @autobind\n acceptAssetFileDrop() {\n const { acceptFile = true } = this.state\n return acceptFile\n }\n\n @autobind\n onAssetFileDrop(...files) {\n 0 < files.length && this.onDropFile(files[0])\n }\n\n @autobind\n inputFileSelected() {\n if (this.inputRef.current && this.inputRef.current.files && 0 < this.inputRef.current.files.length) {\n this.onDropFile(this.inputRef.current.files[0])\n }\n }\n\n @autobind\n onUploadFailed(error) {\n if (!this.mounted) return\n\n const { onFileError } = this.props\n const errors = error.errors && 0 < error.errors.length ? error.errors : [\"We couldn't process your file\"]\n const warnings = error.warnings || []\n this.setState(\n state => {\n return {\n ...state,\n acceptFile: true,\n uploading: false,\n processing: false,\n progress: null,\n errors,\n warnings\n }\n },\n () => {\n 'function' === typeof onFileError && onFileError(errors)\n }\n )\n }\n\n @autobind\n onUploadSuccess({ asset, result }) {\n if (!this.mounted) return\n\n const { onFileUploaded } = this.props\n const warnings = (result && result.warnings) || []\n\n this.setState(\n state => {\n return {\n ...state,\n warnings\n }\n },\n () => {\n onFileUploaded(asset, warnings)\n .then(() => {\n if (this.mounted) {\n this.setState(state => {\n return {\n ...state,\n acceptFile: true,\n uploading: false,\n processing: false,\n progress: null\n }\n })\n }\n })\n .catch(this.onUploadFailed)\n }\n )\n }\n\n @autobind\n onDropFile(file) {\n const { uploadUrl, statusUrl, contentType, getAccessKey, onFileUploaded } = this.props\n const { acceptFile = true } = this.state\n\n if (!acceptFile) return\n\n this.closePopup()\n\n if ('function' === typeof getAccessKey && 'function' === typeof onFileUploaded) {\n this.setState(\n state => {\n return {\n ...state,\n dragOver: false,\n acceptFile: false,\n uploading: true\n }\n },\n () => {\n getAccessKey().then(accessKey => {\n uploadAsset(file, uploadUrl, statusUrl, contentType, accessKey, (progress, totalProgress) => {\n if (this.mounted) {\n const percents = (100 * progress) / totalProgress\n this.setState(state => {\n return {\n ...state,\n uploading: 95 >= percents,\n processing: 95 < percents,\n progress: percents\n }\n })\n }\n })\n .then(this.onUploadSuccess)\n .catch(this.onUploadFailed)\n })\n }\n )\n }\n }\n\n @autobind\n closePopup() {\n const { onClosePopup } = this.props\n this.setState(\n state => {\n return {\n ...state,\n warnings: [],\n errors: []\n }\n },\n () => {\n 'function' === typeof onClosePopup && onClosePopup()\n }\n )\n }\n\n componentDidMount() {\n this.mounted = true\n }\n\n componentWillUnmount() {\n this.mounted = false\n this.dropAssetFileTarget.disconnect()\n }\n\n @autobind\n renderActiveState() {\n const { text, type } = this.props\n const { dragOver, acceptFile = true, uploading, processing, warnings, errors } = this.state\n\n return (\n <>\n {!uploading && !processing && (0 < warnings.length || 0 < errors.length) && (\n <Popup\n className={classNames('rfd-ui-popup-notification', {\n 'rfd-ui-popup-notification-note': 0 < warnings.length,\n 'rfd-ui-popup-notification-error': 0 < errors.length\n })}\n width=\"254px\"\n direction=\"topleft\"\n show={true}\n content={() => (\n <div>\n <PopupCloseButton onClose={this.closePopup}>\n <i className=\"icon-aytmfd-close\" />\n </PopupCloseButton>\n <div dangerouslySetInnerHTML={{ __html: errors.concat(warnings).join('<br/><br/>') }}></div>\n </div>\n )}\n >\n <span className={style['component-popup-anchor']}></span>\n </Popup>\n )}\n <label\n ref={this.connectDropTarget}\n className={classNames(style.button, {\n [style['button-active']]: dragOver\n })}\n >\n {acceptFile ? (\n <input\n ref={this.inputRef}\n className={style.input}\n type=\"file\"\n name=\"file\"\n accept={type || '*'}\n multiple={false}\n tabIndex=\"-1\"\n onChange={this.inputFileSelected}\n />\n ) : null}\n {uploading || processing ? (\n <>\n <span className={style.icon}>\n <i className=\"afd-spin icon-aytmfd-refresh\"></i>\n </span>\n <span className={style.label}>{uploading ? 'Uploading...' : 'Processing...'}</span>\n </>\n ) : (\n <>\n <span className={style.icon}>\n <i className=\"icon-aytmfd-export-excel\"></i>\n </span>\n <span className={style.label} dangerouslySetInnerHTML={{ __html: text }}></span>\n </>\n )}\n <span className={style['upload-icon']}>\n <i className=\"icon-aytmfd-export\"></i>\n </span>\n </label>\n </>\n )\n }\n\n @autobind\n renderDisabledState() {\n const { text, upgradePackage = null } = this.props\n\n return null !== upgradePackage ? (\n <Popup\n className=\"rfd-ui-popup-notification rfd-ui-popup-notification-warning\"\n targetClassName=\"p-field p-col-12\"\n width=\"254px\"\n trigger=\"hover\"\n direction=\"topleft\"\n content={() => (\n <div>\n <p>\n <span className={`stat-upgrade-icon stat-upgrade-icon-${upgradePackage.id}`}>\n <i className={`icon-aytmfd-${upgradePackage.id}`}></i>\n </span>\n Upgrade to <span className=\"stat-upgrade-plan\">{upgradePackage.name}</span> plan to use this functionality\n </p>\n </div>\n )}\n >\n <a className={style.button} href={upgradePackage.upgradeURL} target=\"_blank\" rel=\"noreferrer\">\n <span className={style.icon}>\n <i className=\"icon-aytmfd-export-excel\"></i>\n </span>\n <span className={style.label} dangerouslySetInnerHTML={{ __html: text }}></span>\n <span className={style['lock-icon']}>\n <i className=\"icon-aytmfd-lock\"></i>\n </span>\n </a>\n </Popup>\n ) : (\n <label className={style.button}>\n <span className={style.icon}>\n <i className=\"icon-aytmfd-export-excel\"></i>\n </span>\n <span className={style.label} dangerouslySetInnerHTML={{ __html: text }}></span>\n <span className={style['lock-icon']}>\n <i className=\"icon-aytmfd-lock\"></i>\n </span>\n </label>\n )\n }\n\n render() {\n const { upgradePackage = null, disabled } = this.props\n const { acceptFile = true, warnings, errors } = this.state\n\n return (\n <div\n className={classNames(`${style.component} p-fluid`, {\n [style['component-note']]: 0 < warnings.length,\n [style['component-error']]: 0 < errors.length,\n [style['component-warning']]: null !== upgradePackage,\n [style['component-disabled']]: (disabled && null === upgradePackage) || !acceptFile\n })}\n >\n {disabled ? this.renderDisabledState() : this.renderActiveState()}\n </div>\n )\n }\n}\n","import ProgressivePromise from '@aytm/lib/AsyncJobManager/ProgressivePromise'\nimport railsPostFetch from '@aytm/lib/common/rails-post-fetch'\n\nexport default function AssetDeleteJob({ variable, deleteUrl, statusUrl, params = {} } = {}) {\n return new ProgressivePromise((resolve, reject) => {\n const deleteParams = Object.assign({}, params, {\n variable\n })\n\n railsPostFetch(deleteUrl, {\n method: 'DELETE',\n credentials: 'omit',\n mode: 'cors',\n cache: 'no-cache',\n body: JSON.stringify(deleteParams)\n })\n .then(response => (response.ok ? response.json() : {}))\n .then(data => {\n if (data.status && 'OK' == data.status) {\n return Promise.resolve()\n } else if (data.token) {\n const statusParams = Object.assign({}, params, {\n token: data.token\n })\n return new Promise((resolve, reject) => {\n const checkStatus = () => {\n railsPostFetch(statusUrl, {\n method: 'DELETE',\n credentials: 'omit',\n mode: 'cors',\n cache: 'no-cache',\n body: JSON.stringify(statusParams)\n })\n .then(response => (response.ok ? response.json() : {}))\n .then(deleteStatus => {\n switch (deleteStatus.status) {\n case 'OK': {\n resolve()\n break\n }\n case 'RUNNING': {\n setTimeout(checkStatus, 1000)\n break\n }\n default: {\n reject(deleteStatus)\n break\n }\n }\n })\n .catch(_error => {\n setTimeout(checkStatus, 1000)\n })\n }\n setTimeout(checkStatus, 500)\n })\n } else {\n return Promise.reject(new Error('AssetDeleteJob - unable to finish delete'))\n }\n })\n .then(resolve, reject)\n .catch(error => reject(error))\n })\n}\n","import ProgressivePromise from '@aytm/lib/AsyncJobManager/ProgressivePromise'\nimport railsPostFetch, { getCSRFToken } from '@aytm/lib/common/rails-post-fetch'\nimport fetch from 'isomorphic-fetch'\nimport uploadWithProgress from '@aytm/lib/common/upload-with-progress'\n\nexport default function AssetUploadJob({ file, uploadUrl, statusUrl, contentType, params = {} } = {}) {\n return new ProgressivePromise((resolve, reject, progress) => {\n const totalProgress = file.size\n // CREATE ASSET\n\n progress(0, totalProgress) // set progress to 0\n\n const uploadParams = Object.assign({}, params, {\n filename: file.name\n })\n\n const asset = {}\n\n railsPostFetch(uploadUrl, {\n credentials: 'omit',\n mode: 'cors',\n cache: 'no-cache',\n body: JSON.stringify(uploadParams)\n })\n .then(response => (response.ok ? response.json() : {}))\n\n // UPLOAD ASSET\n .then(data => {\n if (!data || !data.url) {\n return Promise.reject(new Error('AssetUploadJob - invalid response data'))\n }\n\n Object.assign(asset, { id: data.fileId })\n\n return uploadWithProgress(\n data.url,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': contentType || file.type\n },\n body: file\n },\n progressEvent => {\n progress(Math.round(progressEvent.loaded * 0.9), totalProgress) // set progress for uploaded bytes with correction 100% -> 90%\n }\n )\n })\n\n // FINISH UPLOAD\n .then(() =>\n fetch(`${statusUrl}/${asset.id}`, {\n method: 'POST',\n credentials: 'omit',\n mode: 'cors',\n cache: 'no-cache',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': getCSRFToken()\n },\n Accept: 'application/json',\n body: JSON.stringify(uploadParams)\n })\n )\n .then(response => (response.ok ? response.json() : {}))\n\n // CHECK STATUS\n .then(data => {\n if (data.file) {\n Object.assign(asset, { md5: data.file.md5 })\n\n progress(Math.round(file.size * 0.95), totalProgress) // set progress to 95%\n return new Promise((resolve, reject) => {\n const checkStatus = () => {\n fetch(`${statusUrl}/${asset.id}/${asset.md5}`, {\n method: 'POST',\n credentials: 'omit',\n mode: 'cors',\n cache: 'no-cache',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': getCSRFToken()\n },\n Accept: 'application/json',\n body: JSON.stringify(params)\n })\n .then(response => (response.ok ? response.json() : {}))\n .then(uploadStatus => {\n switch (uploadStatus.status) {\n case 'OK': {\n progress(totalProgress, totalProgress) // set progress to 100%\n resolve({ asset, result: uploadStatus })\n break\n }\n case 'RUNNING': {\n setTimeout(checkStatus, 1000)\n break\n }\n default: {\n reject(uploadStatus)\n break\n }\n }\n })\n .catch(_error => {\n setTimeout(checkStatus, 1000)\n })\n }\n setTimeout(checkStatus, 500)\n })\n } else {\n return Promise.reject(new Error('AssetUploadJob - unable to finish upload'))\n }\n })\n .then(resolve, reject)\n .catch(error => reject(error))\n })\n}\n","import AssetUploadJob from '@aytm/app/stats/page/assets/jobs/AssetUploadJob'\n\nexport default function upload(file, uploadUrl, statusUrl, contentType, accessKey, onProgress) {\n return new Promise((resolve, reject) => {\n AssetUploadJob({\n file,\n uploadUrl,\n statusUrl,\n contentType,\n params: { key: accessKey }\n })\n .then(\n data => {\n resolve(data)\n },\n null,\n (progress, totalProgress) => {\n onProgress(progress, totalProgress)\n }\n )\n .catch(error => {\n reject(error)\n })\n })\n}\n","import {\n approve,\n reject,\n toggleKudos,\n setTag,\n setCodebook,\n setResponseTag,\n setSurveyTag,\n setSurveyCodebook,\n runSurveySkipper\n} from '@aytm/app/stats/page/comments/apiCalls'\nimport { AbortController as _abortControllerPolyfill } from 'abortcontroller-polyfill/dist/cjs-ponyfill'\nimport { DEFAULT_PER_PAGE, DEFAULT_PER_PAGE_QA } from '@aytm/app/stats/page/comments/lib/constants'\n\n/* compat/compat disabled because polyfill is used */\n// eslint-disable-next-line compat/compat\nconst AbortController = window.AbortController || _abortControllerPolyfill\n\nlet fetchTimerDelay = 1000\n\n// const abortSignal = () => {\n// if (fetchTimer) {\n// clearTimeout(fetchTimer)\n// fetchTimer = null\n// }\n\n// if (null !== abortController) {\n// abortController.abort()\n// const abortController = null\n// }\n// }\n\nexport const setPageData = ({ dispatch, pageData = [], extra = {} }) => {\n dispatch({\n type: 'SET_PARAMS',\n request: {\n value: {\n pageData,\n ...extra\n }\n }\n })\n}\n\nexport const setQAMode = ({\n dispatch,\n currentPage,\n pageSize,\n totalRespondents,\n isQAMode,\n onQAModeChange,\n fetchDataDelay\n}) => {\n setPageData({ dispatch, pageData: [], extra: { qaCounter: null } })\n\n const defaultPageSize = isQAMode ? DEFAULT_PER_PAGE_QA : DEFAULT_PER_PAGE\n\n if (1 == currentPage && pageSize == defaultPageSize) {\n fetchDataDelay()\n } else {\n dispatch({\n type: 'SET_REQUEST_PARAM_SET',\n request: {\n pageSize: defaultPageSize,\n currentPage: 1\n }\n })\n }\n\n if (isQAMode) {\n window.localStorage.setItem(`totalRespondentsCounter${window.surveyId}`, totalRespondents)\n }\n\n if (onQAModeChange && 'function' == typeof onQAModeChange) {\n onQAModeChange(isQAMode)\n }\n}\n\nexport const updateQACounter = ({ dispatch, qaCounter, qaTotal, uidsToApprove = null }) => {\n const amount = uidsToApprove ? uidsToApprove.reduce((cnt, item) => (!item.isRejected ? cnt + 1 : cnt), 0) : 1\n const totalRespondentsLocalStorage = parseInt(\n window.localStorage.getItem(`totalRespondentsCounter${window.surveyId}`),\n 10\n )\n const counter = null !== qaCounter ? parseInt(qaCounter, 10) + amount : amount\n\n if (counter <= totalRespondentsLocalStorage) {\n dispatch({\n type: 'SET_PARAMS',\n request: {\n value: {\n qaTotal: parseInt(qaTotal, 10) - amount > 0 ? parseInt(qaTotal, 10) - amount : 0,\n qaCounter: counter\n }\n }\n })\n\n window.localStorage.setItem(`qaCounter${window.surveyId}`, counter.toString())\n }\n}\n\nexport const changeResponseCommentStatus = async ({\n type,\n responseId,\n reason,\n scope,\n CSRF,\n commentStatusesState,\n dispatchCommentStatuses,\n onSuccess,\n onInvalidKey\n}) => {\n const abortController = new AbortController()\n\n const { signal } = abortController\n\n const prevStatus = commentStatusesState[scope] && commentStatusesState[scope][responseId]\n const data = 'reject' == type ? { scope, responseId, reason } : { scope, responseId }\n\n const errorCallback = async message => {\n await dispatchCommentStatuses({\n type: 'SET_STATUS',\n data: { ...data, status: { type: 'error', message: message || 'Oops. Something is wrong.' } }\n })\n\n setTimeout(\n async () =>\n await dispatchCommentStatuses({\n type: prevStatus ? 'SET_STATUS' : 'CLEANUP',\n data: { ...data, status: prevStatus }\n }),\n 3000\n )\n }\n\n await dispatchCommentStatuses({ type: 'SET_STATUS', data: { ...data, status: 'loading' } })\n\n try {\n const res =\n 'reject' == type\n ? await reject({\n responseId,\n message: reason,\n authenticity_token: CSRF,\n signal\n })\n : 'approve' == type\n ? await approve({\n responseId,\n signal\n })\n : await toggleKudos({ responseId, type, signal })\n\n switch (res.status) {\n case 'OK': {\n await dispatchCommentStatuses({\n type: 'unkudos' == type ? 'CLEANUP' : 'SET_STATUS',\n data: 'unkudos' == type ? data : { ...data, status: 'reject' == type ? 'true' : 'revertable' }\n })\n if (onSuccess && 'function' == typeof onSuccess) {\n onSuccess()\n }\n break\n }\n case 'INVALID KEY': {\n if (onInvalidKey && 'function' == typeof onInvalidKey) {\n onInvalidKey(() =>\n changeResponseCommentStatus({\n type,\n responseId,\n reason,\n scope,\n CSRF,\n commentStatusesState,\n dispatchCommentStatuses,\n onSuccess,\n onInvalidKey\n })\n )\n } else errorCallback()\n break\n }\n case 'FAIL':\n default: {\n errorCallback(res.error)\n break\n }\n }\n } catch (error) {\n errorCallback(error.error?.message || error.message)\n }\n}\n\n// one response tag create/delete handler\nexport const changeResponseTagState = async ({\n tag,\n type,\n responseId,\n path,\n action = 'creates',\n onUpdateSchema,\n dispatch,\n dispatchCommentStatuses,\n onInvalidKey\n}) => {\n const errorCallback = message => {\n dispatchCommentStatuses({\n type: 'SET_TAG_STATUS',\n data: {\n scope: 'sentiment' == tag.type ? 'sentiment' : 'tags',\n responseId,\n path,\n status: { type: 'error', message: message || 'Oops. Something is wrong.' }\n }\n })\n setTimeout(\n () =>\n dispatchCommentStatuses({\n type: 'CLEANUP_TAG_STATUS',\n data: { scope: 'sentiment' == tag.type ? 'sentiment' : 'tags', responseId, path }\n }),\n 3000\n )\n }\n\n try {\n const abortController = new AbortController()\n\n const { signal } = abortController\n const res = await setResponseTag({ tag, responseId, path, action, signal })\n\n switch (res.status) {\n case 'OK': {\n type && dispatch({ type, data: { tag, responseId, path, action } })\n if (onUpdateSchema && 'function' == typeof onUpdateSchema) {\n onUpdateSchema(res, { tag, responseId, path, action })\n }\n break\n }\n case 'INVALID KEY': {\n if (onInvalidKey && 'function' == typeof onInvalidKey) {\n onInvalidKey(() =>\n changeResponseTagState({\n tag,\n type,\n responseId,\n path,\n action,\n onUpdateSchema,\n dispatch,\n dispatchCommentStatuses,\n onInvalidKey\n })\n )\n } else errorCallback()\n break\n }\n case 'FAIL':\n default: {\n errorCallback(res.error)\n break\n }\n }\n } catch (error) {\n errorCallback(error.error?.message || error.message)\n }\n}\n\n// mass assign tag create/delete handler\nexport const changeTagState = async ({\n tag,\n request = {},\n responseId = '*',\n path = '*',\n action = 'create',\n onFetch,\n onError = () => {},\n setIsLoading = () => {},\n onInvalidKey\n}) => {\n let fetchTimer = null\n\n const errorCallback = message => {\n if (fetchTimer) {\n clearTimeout(fetchTimer)\n fetchTimer = null\n fetchTimerDelay = 1000\n }\n\n onError({\n tag: tag.tag,\n codebook: tag.codebook,\n name: `${action}Error`,\n message: message || 'Oops. Something is wrong.'\n })\n setIsLoading(false, true)\n }\n\n try {\n const abortController = new AbortController()\n\n setIsLoading(true)\n\n const { signal } = abortController\n const res = await setTag({ tag, request, responseId, path, action, signal })\n\n switch (res.status) {\n case 'OK': {\n if (fetchTimer) {\n clearTimeout(fetchTimer)\n fetchTimer = null\n fetchTimerDelay = 1000\n }\n if (onFetch && 'function' == typeof onFetch) {\n onFetch(res, { tag, request, responseId, path, action })\n }\n setIsLoading(false)\n break\n }\n case 'RUNNING': {\n fetchTimer = setTimeout(() => {\n changeTagState({\n tag,\n request,\n responseId,\n path,\n action,\n onError,\n onFetch,\n setIsLoading\n })\n }, fetchTimerDelay)\n fetchTimerDelay *= 1.5\n break\n }\n case 'INVALID KEY': {\n if (onInvalidKey && 'function' == typeof onInvalidKey) {\n onInvalidKey(() =>\n changeTagState({\n tag,\n request,\n responseId,\n path,\n action,\n onError,\n onFetch,\n setIsLoading\n })\n )\n } else errorCallback()\n break\n }\n case 'FAIL':\n default: {\n errorCallback(res.error)\n break\n }\n }\n } catch (error) {\n errorCallback(error.error?.message || error.message)\n }\n}\n\n// survey(schema) level tag create/update/delete handler\nexport const changeSurveyTagState = async ({\n tag,\n newValue = null,\n action = 'create',\n onFetch,\n onError = () => {},\n setIsLoading = () => {},\n onInvalidKey\n}) => {\n let fetchTimer = null\n\n const errorCallback = message => {\n if (fetchTimer) {\n clearTimeout(fetchTimer)\n fetchTimer = null\n fetchTimerDelay = 1000\n }\n\n onError({\n tag: tag.tag,\n codebook: tag.codebook,\n name: `${action}Error`,\n message: message || 'Oops. Something is wrong.'\n })\n setIsLoading(false, true)\n }\n\n try {\n const abortController = new AbortController()\n\n setIsLoading(true)\n\n const { signal } = abortController\n const res =\n 'update' == action && newValue && tag.tag.trim() == newValue.trim()\n ? {\n error: 'cannot rename tag to itself',\n status: 'FAIL'\n }\n : await setSurveyTag({ tag, newValue, action, signal })\n\n switch (res.status) {\n case 'OK': {\n if (fetchTimer) {\n clearTimeout(fetchTimer)\n fetchTimer = null\n fetchTimerDelay = 1000\n }\n if (onFetch && 'function' == typeof onFetch) {\n onFetch(res, { tag, newValue, action })\n }\n setIsLoading(false)\n break\n }\n case 'RUNNING': {\n fetchTimer = setTimeout(() => {\n changeSurveyTagState({\n tag,\n newValue,\n action,\n setIsLoading,\n onFetch,\n onError\n })\n }, fetchTimerDelay)\n fetchTimerDelay *= 1.5\n break\n }\n case 'INVALID KEY': {\n if (onInvalidKey && 'function' == typeof onInvalidKey) {\n onInvalidKey(() =>\n changeSurveyTagState({\n tag,\n newValue,\n action,\n setIsLoading,\n onFetch,\n onError\n })\n )\n } else errorCallback()\n break\n }\n case 'FAIL':\n default: {\n errorCallback(res.error)\n break\n }\n }\n } catch (error) {\n errorCallback(error.error?.message || error.message)\n }\n}\n\n// mass assign tag create/delete handler\nexport const changeCodebookState = async ({\n codebook,\n request = {},\n responseId = '*',\n path = '*',\n action = 'create',\n onFetch,\n onError = () => {},\n setIsLoading = () => {},\n onInvalidKey\n}) => {\n let fetchTimer = null\n\n const errorCallback = message => {\n if (fetchTimer) {\n clearTimeout(fetchTimer)\n fetchTimer = null\n fetchTimerDelay = 1000\n }\n\n onError({ codebook: codebook.codebook, name: `${action}Error`, message: message || 'Oops. Something is wrong.' })\n setIsLoading(false, true)\n }\n\n try {\n const abortController = new AbortController()\n\n setIsLoading(true)\n\n const { signal } = abortController\n const res = await setCodebook({ codebook, request, responseId, path, action, signal })\n\n switch (res.status) {\n case 'OK': {\n if (fetchTimer) {\n clearTimeout(fetchTimer)\n fetchTimer = null\n fetchTimerDelay = 1000\n }\n if (onFetch && 'function' == typeof onFetch) {\n onFetch(res, { codebook, request, responseId, path, action })\n }\n setIsLoading(false)\n break\n }\n case 'RUNNING': {\n fetchTimer = setTimeout(() => {\n changeCodebookState({\n codebook,\n request,\n responseId,\n path,\n action,\n onError,\n onFetch,\n setIsLoading\n })\n }, fetchTimerDelay)\n fetchTimerDelay *= 1.5\n break\n }\n case 'INVALID KEY': {\n if (onInvalidKey && 'function' == typeof onInvalidKey) {\n onInvalidKey(() =>\n changeCodebookState({\n codebook,\n request,\n responseId,\n path,\n action,\n onError,\n onFetch,\n setIsLoading\n })\n )\n } else errorCallback()\n break\n }\n case 'FAIL':\n default: {\n errorCallback(res.error)\n break\n }\n }\n } catch (error) {\n errorCallback(error.error?.message || error.message)\n }\n}\n\n// survey(schema) level tag create/update/delete handler\nexport const changeSurveyCodebookState = async ({\n codebook,\n newValue = null,\n action = 'create',\n onFetch,\n onError = () => {},\n setIsLoading = () => {},\n onInvalidKey\n}) => {\n let fetchTimer = null\n\n const errorCallback = message => {\n if (fetchTimer) {\n clearTimeout(fetchTimer)\n fetchTimer = null\n fetchTimerDelay = 1000\n }\n\n onError({ codebook: codebook.codebook, name: `${action}Error`, message: message || 'Oops. Something is wrong.' })\n setIsLoading(false, true)\n }\n\n try {\n const abortController = new AbortController()\n\n setIsLoading(true)\n\n const { signal } = abortController\n const res =\n 'update' == action && newValue && codebook.codebook.trim() == newValue.trim()\n ? {\n error: 'cannot rename codebook to itself',\n status: 'FAIL'\n }\n : await setSurveyCodebook({ codebook, newValue, action, signal })\n\n switch (res.status) {\n case 'OK': {\n if (fetchTimer) {\n clearTimeout(fetchTimer)\n fetchTimer = null\n fetchTimerDelay = 1000\n }\n if (onFetch && 'function' == typeof onFetch) {\n onFetch(res, { codebook, newValue, action })\n }\n setIsLoading(false)\n break\n }\n case 'RUNNING': {\n fetchTimer = setTimeout(() => {\n changeSurveyCodebookState({\n codebook,\n action,\n newValue,\n setIsLoading,\n onFetch,\n onError\n })\n }, fetchTimerDelay)\n fetchTimerDelay *= 1.5\n break\n }\n case 'INVALID KEY': {\n if (onInvalidKey && 'function' == typeof onInvalidKey) {\n onInvalidKey(() =>\n changeSurveyCodebookState({\n codebook,\n action,\n newValue,\n setIsLoading,\n onFetch,\n onError\n })\n )\n } else errorCallback()\n break\n }\n case 'FAIL':\n default: {\n errorCallback(res.error)\n break\n }\n }\n } catch (error) {\n errorCallback(error.error?.message || error.message)\n }\n}\n\n// mass assign tag create/delete handler\nexport const generateSurveySkipper = async ({\n job,\n codebook,\n selectedQuestion = '*',\n guided = false,\n onFetch,\n onError = () => {},\n onProgress = () => {},\n setIsLoading = () => {},\n onInvalidKey\n}) => {\n let fetchTimer = null\n\n const errorCallback = message => {\n if (fetchTimer) {\n clearTimeout(fetchTimer)\n fetchTimer = null\n }\n\n const params = { name: 'skipperError', message: message || 'Oops. Something is wrong.' }\n if (codebook != undefined) params.codebook = codebook.codebook\n\n onError(params)\n setIsLoading(false, true)\n }\n\n try {\n const abortController = new AbortController()\n\n setIsLoading(true)\n\n const { signal } = abortController\n const res = await runSurveySkipper({ job, codebook, selectedQuestion, guided, signal })\n\n switch (res.status) {\n case 'OK':\n case 'NOT FOUND': {\n if (fetchTimer) {\n clearTimeout(fetchTimer)\n fetchTimer = null\n }\n\n onProgress(100)\n\n if (onFetch && 'function' == typeof onFetch) {\n onFetch(true, () => setIsLoading(false))\n }\n break\n }\n case 'RUNNING': {\n if (res && Object.hasOwn(res, 'token')) {\n onProgress(res.progress || 0)\n\n fetchTimer = setTimeout(() => {\n generateSurveySkipper({\n job: res,\n codebook,\n selectedQuestion,\n guided,\n onFetch,\n onError,\n onProgress,\n setIsLoading\n })\n }, 5000)\n } else {\n if (fetchTimer) {\n clearTimeout(fetchTimer)\n fetchTimer = null\n }\n\n if (onFetch && 'function' == typeof onFetch) {\n onFetch(true, () => setIsLoading(false))\n }\n }\n break\n }\n case 'INVALID KEY': {\n if (onInvalidKey && 'function' == typeof onInvalidKey) {\n onInvalidKey(() =>\n generateSurveySkipper({\n codebook,\n selectedQuestion,\n guided,\n onFetch,\n onError,\n onProgress,\n setIsLoading\n })\n )\n } else errorCallback()\n break\n }\n case 'FAIL':\n default: {\n errorCallback(res.error)\n break\n }\n }\n } catch (error) {\n errorCallback(error.error?.message || error.message)\n }\n}\n\nexport default {}\n","import { mapSearchDataForFetch } from '@aytm/app/stats/lib/comments'\nimport {\n DEFAULT_ORDER_BY,\n DEFAULT_ORDER_DIRECTION,\n DEFAULT_SELECTED_QUESTION,\n kudosText\n} from '@aytm/app/stats/page/comments/lib/constants'\nimport { cleanSearchData, getDottedQuestionName } from '@aytm/app/stats/page/comments/lib/utils'\n\nimport { sendJSONData, sendRawJSONData, sendFormData } from '@aytm/app/stats/lib/fetch'\n\nlet csApiKey = ''\nlet statUrl = ''\nlet csUrl = ''\nlet statActionsUrl = ''\n\nexport const setCsApiKey = apiKey => (csApiKey = (apiKey != undefined && apiKey.code) || '')\nexport const setStatUrl = url => {\n statUrl = url\n csUrl = `${url}/cs`\n}\nexport const setStatActionsUrl = url => (statActionsUrl = url)\n\nconst getCSRFParam = () => document.querySelector('meta[name=\"csrf-param\"]').getAttribute('content')\nconst getCSRFToken = () => document.querySelector('meta[name=\"csrf-token\"]').getAttribute('content')\nconst addCSRF = data => {\n data[getCSRFParam()] = getCSRFToken()\n return data\n}\n\nexport const fetchSearchResults = async ({\n query,\n selectedQuestion,\n currentPage,\n pageSize,\n orderBy,\n isQAMode = false,\n nocache = false,\n orderDirection = 'asc',\n includeSchema,\n flattenAnswers = null,\n uidsToApprove = null,\n signal\n}) => {\n const request = {\n query,\n selectedQuestion: selectedQuestion,\n currentPage,\n pageSize,\n orderBy,\n orderDirection,\n includeSchema,\n isQAMode,\n flattenAnswers,\n uidsToApprove,\n nocache\n }\n\n return sendJSONData({\n url: `${csUrl}?key=${csApiKey}`,\n method: 'POST',\n data: mapSearchDataForFetch(request),\n signal\n })\n}\n\nexport const reject = async ({ responseId, authenticity_token = null, message = null, signal }) =>\n sendRawJSONData({\n url: `${statActionsUrl.replace(':responseId', responseId)}/reject`,\n method: 'POST',\n data: {\n message,\n authenticity_token\n },\n signal\n })\n\nexport const approve = async ({ responseId, signal }) =>\n sendJSONData({\n url: `${csUrl}/${responseId}/approve?key=${csApiKey}`,\n method: 'POST',\n data: {},\n signal\n })\n\nexport const toggleKudos = async ({ responseId, message = null, type = 'kudos', signal }) =>\n sendFormData({\n url: `${statActionsUrl.replace(':responseId', responseId)}/${type}`,\n data: {\n message: message || kudosText\n },\n signal\n })\n\nexport const tagsList = async ({ query, selectedQuestion, currentPage, pageSize, signal }) => {\n const search =\n null !== query\n ? Object.assign(\n {},\n null !== query ? { query } : {},\n selectedQuestion !== DEFAULT_SELECTED_QUESTION\n ? { scope: selectedQuestion.replace(/(\\d)(\\w)/gi, '$1.$2') }\n : {}\n )\n : null\n const data = Object.assign(\n {\n action: 'list',\n page: currentPage,\n pageSize\n },\n Object.keys(search).length ? { search } : void 0\n )\n return sendJSONData({\n url: `${csUrl}/tags?key=${csApiKey}`,\n method: 'POST',\n data,\n signal\n })\n}\n\nexport const setResponseTag = async ({ tag, responseId, path, action = 'create', signal }) => {\n const data = {\n tag: tag.codebook == undefined || null === tag.codebook ? tag.tag : tag.label,\n type: tag.type,\n codebook: tag.codebook || null,\n path\n }\n return sendJSONData({\n url: `${csUrl}/${responseId}/tags/${action}?key=${csApiKey}`,\n method: 'POST',\n data,\n signal\n })\n}\n\nexport const setTag = async ({ tag, request = {}, responseId = '*', path = '*', action = 'create', signal }) => {\n const search = {\n query: cleanSearchData(request.query) || [],\n order: request.orderBy || DEFAULT_ORDER_BY,\n direction: request.orderDirection || DEFAULT_ORDER_DIRECTION\n }\n if (request.selectedQuestion && request.selectedQuestion !== DEFAULT_SELECTED_QUESTION) {\n search.scope = getDottedQuestionName(request.selectedQuestion)\n }\n\n const data = {\n tag: tag.codebook == undefined || null === tag.codebook ? tag.tag : tag.label,\n type: tag.type,\n codebook: tag.codebook || null,\n responseId,\n search,\n path\n }\n return sendJSONData({\n url: `${csUrl}/tags/${action}?key=${csApiKey}`,\n method: 'POST',\n data,\n signal\n })\n}\n\nexport const setCodebook = async ({\n codebook,\n responseId = '*',\n request = {},\n path = '*',\n action = 'create',\n signal\n}) => {\n const search = {\n order: request.orderBy || DEFAULT_ORDER_BY,\n direction: request.orderDirection || DEFAULT_ORDER_DIRECTION,\n query: cleanSearchData(request.query) || []\n }\n if (request.selectedQuestion && request.selectedQuestion !== DEFAULT_SELECTED_QUESTION) {\n search.scope = getDottedQuestionName(request.selectedQuestion)\n }\n const data = {\n codebook: codebook.codebook,\n type: codebook.type,\n responseId,\n search,\n path\n }\n return sendJSONData({\n url: `${csUrl}/codebooks/${action}?key=${csApiKey}`,\n method: 'POST',\n data,\n signal\n })\n}\n\nexport const setSurveyTag = async ({ tag, newValue = null, action = 'add', signal }) => {\n const data = {\n tag: tag.codebook == undefined || null === tag.codebook ? tag.tag : tag.label,\n type: tag.type,\n codebook: tag.codebook || null,\n count: tag.count || 0\n }\n if (null !== newValue) {\n data.update = newValue\n }\n if ('merge' == action) {\n data.merge = true\n }\n if (Object.hasOwn(tag, 'destination') && null !== tag.destination) {\n data.destination = tag.destination.codebook || null\n }\n return sendJSONData({\n url: `${statUrl}/tags/${'merge' == action ? (tag.update && 'update') || 'clone' : action}?key=${csApiKey}`,\n method: 'POST',\n data,\n signal\n })\n}\n\nexport const setSurveyCodebook = async ({ codebook, newValue = null, action = 'add', signal }) => {\n const data = {\n codebook: codebook.codebook,\n type: codebook.type,\n tags: codebook.tags,\n count: codebook.count\n }\n if (null !== newValue) {\n data.update = newValue\n }\n return sendJSONData({\n url: `${statUrl}/codebooks/${action}?key=${csApiKey}`,\n method: 'POST',\n data,\n signal\n })\n}\n\nexport const runSurveySkipper = async ({ job = null, codebook, selectedQuestion, guided = false, signal }) => {\n if (null !== job) {\n return sendJSONData({\n url: `${csUrl}/job?key=${csApiKey}`,\n method: 'POST',\n data: { key: csApiKey, token: job.token },\n signal\n })\n } else {\n const data = { command: 'ai.oeCoding' }\n if (codebook) {\n data.codebook = {\n title: codebook.codebook,\n type: codebook.type,\n tags: codebook.tags\n }\n }\n if (selectedQuestion && selectedQuestion !== DEFAULT_SELECTED_QUESTION) {\n data.include = getDottedQuestionName(selectedQuestion)\n }\n if (guided) data.guided = true\n return sendJSONData({\n url: window.statJobApiUrl,\n method: 'POST',\n data: addCSRF(data),\n signal\n })\n }\n}\n","import React, { Fragment, memo, useMemo, useContext } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport {\n checkSentimentStatus,\n getDottedQuestionName,\n getNestedSentiment,\n getQuestionOptions,\n getSentiment,\n hasNestedQuestions,\n isVideoOrImageType,\n isXpertOrVirtualType,\n pathQuestionIdToOld\n} from '@aytm/app/stats/page/comments/lib/utils'\nimport OEQuestionTitle from '@aytm/app/stats/page/comments/comments/components/OEQuestionTitle'\nimport OEQuestionResponse from '@aytm/app/stats/page/comments/comments/components/OEQuestionResponse'\nimport style from '@aytm/app/stats/page/comments/comments/styles/OEItem.module.scss'\nimport { DEFAULT_SELECTED_QUESTION, PIPING_MASK_REGEX } from '@aytm/app/stats/page/comments/lib/constants'\nimport { OEContext } from '@aytm/app/stats/page/comments/index'\n\nconst OEItem = memo(\n ({\n dataId,\n responseId,\n path,\n answer,\n survey,\n question,\n tags,\n selectedQuestion,\n pipingMask,\n toolBoxOptions,\n isRejected,\n onUpdateSchema,\n voiceBusy,\n setVoiceBusy\n }) => {\n const { imagesData, searchState } = useContext(OEContext)\n const { sentimentOptions, isQAMode, isShowAllTools, isShowSentiments, isTagsManagementDisabled } = searchState\n\n const isVirtualOrXpert = isXpertOrVirtualType(question)\n const isVideoOrImage = isVideoOrImageType(question)\n\n const { best_span_str } =\n useMemo(\n () => !isTagsManagementDisabled && (tags || []).find(t => 'comprehension' == t.type),\n [tags, isTagsManagementDisabled]\n ) || {}\n const questionOptions = useMemo(() => getQuestionOptions(question, survey, false, true), [survey, question])\n\n const renderQuestionWithAnswers = (node, path, showTitle = false) => {\n const nodeData = node.data ? node.data : node\n const nodeOptions = questionOptions.find(item => item.value && item.value.replace(/sq(\\d+)/i, 'b$1') == path)\n if (!nodeOptions || !nodeOptions.value) return null\n\n const itemPath = pathQuestionIdToOld(getDottedQuestionName(path))\n const itemTags = tags.filter(t => t.path == itemPath)\n const itemHasNestedQuestions = hasNestedQuestions(questionOptions, nodeOptions, selectedQuestion)\n\n let sentimentStatus = checkSentimentStatus(itemPath, sentimentOptions)\n let sentiment = isVirtualOrXpert || isVideoOrImage || !sentimentStatus ? null : getSentiment(itemPath, itemTags)\n\n if (null === sentiment) {\n sentiment = getNestedSentiment(tags, itemPath, nodeData, sentimentOptions)\n if (false == sentiment || isVideoOrImage) {\n sentiment = { tag: '' }\n sentimentStatus = false\n }\n if (null === sentiment) sentiment = { tag: '' }\n }\n\n const nodeQuestionPath = nodeOptions.value\n if (selectedQuestion !== DEFAULT_SELECTED_QUESTION) {\n let selectedQuestionSubstring = selectedQuestion.slice(0, nodeQuestionPath.length)\n if (-1 == nodeQuestionPath.indexOf(selectedQuestionSubstring)) {\n return null\n } else if (nodeQuestionPath.length > selectedQuestion.length) {\n selectedQuestionSubstring = nodeQuestionPath.slice(selectedQuestion.length, selectedQuestion.length + 1)\n if (!Number.isNaN(Number(selectedQuestionSubstring))) return null\n } else if (nodeQuestionPath.length < selectedQuestion.length) {\n selectedQuestionSubstring = selectedQuestion.slice(nodeQuestionPath.length, nodeQuestionPath.length + 1)\n if (!Number.isNaN(Number(selectedQuestionSubstring))) return null\n }\n }\n\n const hasPiping =\n (pipingMask && Object.hasOwn(pipingMask, `___${nodeOptions.value}t`)) ||\n PIPING_MASK_REGEX.test(nodeOptions.questionText)\n const hasTitle =\n !nodeOptions.isOptionHidden &&\n (showTitle ||\n selectedQuestion == DEFAULT_SELECTED_QUESTION ||\n (selectedQuestion != DEFAULT_SELECTED_QUESTION &&\n ((selectedQuestion != nodeOptions.value && itemHasNestedQuestions) || hasPiping)))\n const hasHeader =\n !nodeOptions.isOptionHidden &&\n (selectedQuestion == DEFAULT_SELECTED_QUESTION ||\n (selectedQuestion != DEFAULT_SELECTED_QUESTION && !itemHasNestedQuestions && !hasPiping))\n\n const showNestedTitle =\n showTitle ||\n (!nodeOptions.isOptionHidden &&\n (showTitle ||\n selectedQuestion == DEFAULT_SELECTED_QUESTION ||\n (selectedQuestion != DEFAULT_SELECTED_QUESTION && (itemHasNestedQuestions || hasPiping))))\n\n return (\n <Fragment key={`${responseId}-question-item-${itemPath}-${nodeOptions.lvl}`}>\n <div\n className={classNames(style['comment-body-item'], {\n [style['no-header']]: !showTitle && !hasHeader\n })}\n >\n {hasTitle || (!nodeOptions.lvl && !nodeOptions.isOptionHidden) ? (\n <div\n key={`OEQuestionTitle-${responseId}-${itemPath}-${nodeOptions.lvl}-cont`}\n className={classNames(style['comment-header'], {\n [style['active']]: hasTitle && !isQAMode && isShowAllTools,\n [style[`question-offset-${nodeOptions.lvl}`]]: true,\n [style[`sentiment-${sentiment.tag || 'None'}`]]: sentimentStatus && isShowSentiments\n })}\n >\n {hasTitle ? (\n <OEQuestionTitle\n key={`OEQuestionTitle-${responseId}-${itemPath}-${nodeOptions.lvl}-inner`}\n pipingMask={pipingMask}\n questionText={nodeOptions.questionText}\n nodeOptions={nodeOptions}\n imagesData={imagesData}\n />\n ) : null}\n </div>\n ) : null}\n {(nodeData.t || nodeData.v || nodeData.i) && (\n <OEQuestionResponse\n key={`OEQuestionResponse-${responseId}-${itemPath}-${nodeOptions.lvl}`}\n path={itemPath}\n responseId={responseId}\n dataId={dataId}\n answer={answer}\n question={question}\n isVirtualOrXpert={isVirtualOrXpert}\n isVideoOrImage={isVideoOrImage}\n hasTitle={Boolean(\n hasTitle ||\n selectedQuestion == DEFAULT_SELECTED_QUESTION ||\n (!hasTitle && ((selectedQuestion != nodeOptions.value && itemHasNestedQuestions) || hasPiping))\n )}\n node={nodeData}\n nodeOptions={nodeOptions}\n toolBoxOptions={toolBoxOptions}\n tags={itemTags}\n best_span_str={best_span_str}\n sentiment={sentiment.tag ? sentiment.tag : 'None'}\n isRejected={isRejected}\n onUpdateSchema={onUpdateSchema}\n voiceBusy={voiceBusy}\n setVoiceBusy={setVoiceBusy}\n />\n )}\n </div>\n {nodeData.t || nodeData.v || nodeData.i\n ? (selectedQuestion == DEFAULT_SELECTED_QUESTION ||\n (selectedQuestion !== DEFAULT_SELECTED_QUESTION && selectedQuestion !== nodeOptions.value)) &&\n Object.keys(nodeData)\n .filter(itemKey => !['t', 'te', 'i', 'v'].includes(itemKey))\n .map(itemKey => renderQuestionWithAnswers(nodeData[itemKey], `${path}${itemKey}`, showNestedTitle))\n : Object.keys(nodeData).map(itemKey =>\n renderQuestionWithAnswers(nodeData[itemKey], `${path}${itemKey}`, showNestedTitle)\n )}\n </Fragment>\n )\n }\n\n return (\n <div className={style['comment-container']} data-id={dataId}>\n <div className={style['comment-body']}>{renderQuestionWithAnswers(answer, path)}</div>\n </div>\n )\n }\n)\n\nOEItem.propTypes = {\n dataId: PropTypes.string,\n responseId: PropTypes.number,\n path: PropTypes.string,\n answer: PropTypes.object,\n survey: PropTypes.object,\n question: PropTypes.object,\n tags: PropTypes.array,\n selectedQuestion: PropTypes.string,\n pipingMask: PropTypes.object,\n toolBoxOptions: PropTypes.array,\n isRejected: PropTypes.bool,\n onUpdateSchema: PropTypes.func,\n voiceBusy: PropTypes.bool,\n setVoiceBusy: PropTypes.func\n}\n\nOEItem.displayName = 'OEItem'\n\nexport default OEItem\n","import React, { memo, useContext, useRef, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport style from '@aytm/app/stats/page/comments/styles/index.module.scss'\nimport classNames from 'classnames'\nimport { range, getToolBoxOptions } from '@aytm/app/stats/page/comments/lib/utils'\n\nimport { OEContext } from '@aytm/app/stats/page/comments'\n\nimport Button from '@aytm/lib/rfd-ui/components/basic/button'\nimport Response from '@aytm/app/stats/page/comments/comments/Response'\n\nimport scrollToElement from 'scroll-to-element'\n\nlet scrollToElementTimer\n\nconst PageDataComments = memo(\n ({\n reportId,\n apiKey,\n survey,\n responsesOptions,\n responsesRef,\n showTraitsRef,\n responseOrderRef,\n popupNotificationsDisabled,\n isShowHiddenFilters,\n currentResponseRef,\n setCurrentResponse,\n onCloseNotification,\n onUpdateParams,\n onUpdateSchema,\n onPageChange\n }) => {\n const { searchState } = useContext(OEContext)\n\n const { request, tagsList, totalPages, isLoading, isProcessing, isQAMode, isShowAllTools, isVideoResponsesMode } =\n searchState\n const { currentPage } = request\n\n const searchStateRef = useRef()\n searchStateRef.current = searchState\n\n const toolBoxOptions = useMemo(() => getToolBoxOptions(survey, tagsList) || [], [survey, tagsList])\n\n const trackCurrentResponse = useCallback(() => {\n const bodyPosition = document.body.getBoundingClientRect()\n if (0 < bodyPosition.top) setCurrentResponse(null)\n else {\n for (const responseRef of responsesRef.current) {\n if (!responseRef || null === responseRef.node) continue\n const position = responseRef.node.getBoundingClientRect()\n if (position.top >= 150 || position.top + position.height > bodyPosition.height) {\n setCurrentResponse({ uid: responseRef.uid, index: responseRef.index })\n break\n }\n }\n }\n }, [setCurrentResponse, responsesRef])\n\n useEffect(() => {\n document.removeEventListener('scroll', trackCurrentResponse)\n\n if (isLoading || isProcessing) return\n\n document.addEventListener('scroll', trackCurrentResponse)\n\n // eslint-disable-next-line consistent-return\n return () => document.removeEventListener('scroll', trackCurrentResponse)\n }, [isLoading, isProcessing, trackCurrentResponse])\n\n useEffect(() => {\n if (searchStateRef.current.isLoading || searchStateRef.current.isProcessing) return\n\n null !== scrollToElementTimer && clearTimeout(scrollToElementTimer)\n scrollToElementTimer = null\n\n setCurrentResponse(null)\n // eslint-disable-next-line consistent-return\n return () => {\n null !== scrollToElementTimer && clearTimeout(scrollToElementTimer)\n }\n }, [apiKey, request, setCurrentResponse])\n\n useEffect(() => {\n if (searchStateRef.current.isLoading || isProcessing) return\n\n null !== scrollToElementTimer && clearTimeout(scrollToElementTimer)\n scrollToElementTimer = null\n\n if (currentResponseRef?.current) {\n const currentResponseNode = (responsesRef.current || []).find(\n item => item.uid == currentResponseRef.current.uid\n )\n scrollToElementTimer = setTimeout(() => {\n scrollToElementTimer = null\n currentResponseNode\n ? scrollToElement(currentResponseNode.node, {\n offset: -150,\n align: 'top',\n duration: 250\n })\n : trackCurrentResponse()\n }, 100)\n }\n\n // eslint-disable-next-line consistent-return\n return () => null !== scrollToElementTimer && clearTimeout(scrollToElementTimer)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isProcessing, trackCurrentResponse, responsesRef, isShowAllTools])\n\n useEffect(() => {\n if (!isLoading) return\n\n scrollToElement('#header', {\n offset: 0,\n align: 'top',\n duration: 250\n })\n }, [isLoading])\n\n return (\n <>\n <div className={style['responses']}>\n {responsesOptions.pageData && 0 < responsesOptions.pageData.length ? (\n responsesOptions.pageData.map((item, i) => (\n <div\n key={`PageDataResponse_${item.response.uid}`}\n ref={el => (responsesRef.current[i] = { uid: item.response.uid, node: el, index: i })}\n >\n <Response\n dataId={`Response_${item.response.uid}`}\n reportId={reportId}\n survey={responsesOptions.survey}\n reportVirtual={responsesOptions.reportVirtual}\n reportSchema={responsesOptions.reportSchema}\n response={item}\n toolBoxOptions={toolBoxOptions}\n showTraitsRef={showTraitsRef}\n responseOrderRef={responseOrderRef}\n popupNotificationsDisabled={popupNotificationsDisabled}\n isShowHiddenFilters={isShowHiddenFilters}\n onUpdateParams={onUpdateParams}\n onCloseNotification={onCloseNotification}\n onUpdateSchema={onUpdateSchema}\n />\n </div>\n ))\n ) : (\n <div className={style['no-results']}>\n {!isLoading && <>{isVideoResponsesMode ? 'No videos found' : 'No comments found'}</>}\n </div>\n )}\n {(isLoading || isProcessing) && (\n <div\n className={classNames(style['status-loader'], {\n [style['status-loader-static']]: !responsesOptions.pageData || !responsesOptions.pageData.length\n })}\n >\n <span className={`afd-loader afd-loader-long`}>\n {range(0, 80).map(id => (\n <span key={`loading-span-${id}`} />\n ))}\n </span>\n </div>\n )}\n </div>\n {!isQAMode && !isLoading && !isProcessing ? (\n <>\n <div className={style['responses-bottom-paginaton']}>\n <div className={style['right']}>\n {currentPage < totalPages ? (\n <Button\n label=\"NEXT PAGE\"\n disabled={Boolean(isLoading || isProcessing)}\n onClick={isLoading || isProcessing ? null : onPageChange.bind(this, currentPage + 1, null)}\n />\n ) : null}\n </div>\n <div className={style['left']}>\n {currentPage > 1 ? (\n <Button\n label=\"PREVIOUS PAGE\"\n disabled={isLoading || isProcessing}\n onClick={isLoading || isProcessing ? null : onPageChange.bind(this, currentPage - 1, null)}\n />\n ) : null}\n </div>\n </div>\n </>\n ) : null}\n </>\n )\n }\n)\n\nPageDataComments.propTypes = {\n reportId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n apiKey: PropTypes.object,\n survey: PropTypes.object,\n popupNotificationsDisabled: PropTypes.object,\n responsesOptions: PropTypes.object,\n responsesRef: PropTypes.object,\n showTraitsRef: PropTypes.object,\n responseOrderRef: PropTypes.object,\n currentResponseRef: PropTypes.object,\n isShowHiddenFilters: PropTypes.bool,\n setCurrentResponse: PropTypes.func,\n onCloseNotification: PropTypes.func,\n onUpdateParams: PropTypes.func,\n onUpdateSchema: PropTypes.func,\n onPageChange: PropTypes.func\n}\n\nPageDataComments.displayName = 'PageDataComments'\n\nexport default PageDataComments\n","import React, { useContext, useEffect, useMemo, useCallback, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport style from '@aytm/app/stats/page/comments/styles/index.module.scss'\nimport classNames from 'classnames'\nimport { range } from '@aytm/app/stats/page/comments/lib/utils'\n\nimport { OEContext } from '@aytm/app/stats/page/comments'\n\nimport Fade from '@aytm/app/stats/page/comments/comments/components/Fade'\nimport Button from '@aytm/lib/rfd-ui/components/basic/button'\nimport Response from '@aytm/app/stats/page/comments/comments/Response'\n\nimport scrollToElement from 'scroll-to-element'\n\nconst PageDataQA = ({\n reportId,\n responsesOptions,\n showTraitsRef,\n responseOrderRef,\n popupNotificationsDisabled,\n isShowHiddenFilters,\n onCloseNotification,\n onPageChange\n}) => {\n const { searchState, commentStatusesState } = useContext(OEContext)\n const { request, isLoading, isProcessing, isQALoading, qaProcessedResponseId } = searchState\n const { reject } = commentStatusesState\n const { currentPage, pageSize } = request\n\n const isOnePerPage = useMemo(() => 1 == pageSize, [pageSize])\n\n const onApproveAll = () => {\n // collecting uids to approve\n const uidsToApprove = responsesOptions.pageData.reduce((ret, item) => {\n ret.push({\n uid: item.response.uid.toString(36),\n isRejected: reject[item.response.uid] || 'true' == reject[item.response.uid]\n })\n return ret\n }, [])\n if (onPageChange && 'function' == typeof onPageChange) {\n onPageChange(currentPage + 1, uidsToApprove)\n }\n scrollToElement('#header', {\n offset: 0,\n align: 'top',\n duration: 250\n })\n }\n const onApproveAllRef = useRef()\n onApproveAllRef.current = onApproveAll\n\n const onKeyDownHandler = useCallback(event => {\n if ((49 == event.keyCode || 97 == event.keyCode || 35 == event.keyCode) && event.shiftKey) {\n onApproveAllRef.current()\n }\n }, [])\n\n useEffect(() => {\n if (!isOnePerPage) window.addEventListener('keydown', onKeyDownHandler)\n else window.removeEventListener('keydown', onKeyDownHandler)\n return () => {\n window.removeEventListener('keydown', onKeyDownHandler)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOnePerPage])\n\n const renderResponse = item => (\n <div key={`PageDataQAResponse_${item.response.uid}`}>\n <Response\n dataId={`Response_${item.response.uid}`}\n reportId={reportId}\n survey={responsesOptions.survey}\n reportVirtual={responsesOptions.reportVirtual}\n reportSchema={responsesOptions.reportSchema}\n response={item}\n showTraitsRef={showTraitsRef}\n responseOrderRef={responseOrderRef}\n popupNotificationsDisabled={popupNotificationsDisabled}\n isShowHiddenFilters={isShowHiddenFilters}\n onCloseNotification={onCloseNotification}\n />\n </div>\n )\n\n return (\n <>\n <div\n className={classNames({\n [style['responses']]: true,\n [style['is-qa']]: true\n })}\n >\n {responsesOptions.pageData[0] ? (\n isOnePerPage ? (\n <Fade show={!qaProcessedResponseId || qaProcessedResponseId !== responsesOptions.pageData[0].response.uid}>\n {renderResponse(responsesOptions.pageData[0])}\n </Fade>\n ) : (\n responsesOptions.pageData.map(item => renderResponse(item))\n )\n ) : (\n <div className={style['no-results']}>{!isLoading && !isProcessing ? 'All done!' : 'Loading...'}</div>\n )}\n {isQALoading ||\n (!isOnePerPage && (isLoading || isProcessing) && (\n <div\n className={classNames(style['status-loader'], {\n [style['status-loader-static']]: !responsesOptions.pageData || !responsesOptions.pageData.length\n })}\n >\n <span className={`afd-loader afd-loader-long`}>\n {range(0, 80).map(id => (\n <span key={`loading-span-${id}`} />\n ))}\n </span>\n </div>\n ))}\n </div>\n {!isOnePerPage ? (\n <>\n <div className={style['responses-bottom-paginaton']}>\n <div className={style['right']}>\n {!isLoading && !isProcessing && responsesOptions.pageData.length ? (\n <Button\n label=\"APPROVE ALL\"\n disabled={Boolean(isLoading || isProcessing)}\n onClick={!isLoading && !isProcessing ? onApproveAll : null}\n />\n ) : null}\n </div>\n </div>\n </>\n ) : null}\n </>\n )\n}\n\nPageDataQA.propTypes = {\n reportId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n survey: PropTypes.object,\n popupNotificationsDisabled: PropTypes.object,\n responsesOptions: PropTypes.object,\n responsesRef: PropTypes.object,\n showTraitsRef: PropTypes.object,\n responseOrderRef: PropTypes.object,\n isShowHiddenFilters: PropTypes.bool,\n onCloseNotification: PropTypes.func,\n onPageChange: PropTypes.func\n}\n\nPageDataQA.displayName = 'PageDataQA'\n\nexport default PageDataQA\n","import React, { memo, useContext, useState, useMemo, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport moment from 'moment'\n\nimport {\n checkSentimentStatus,\n getLastItemPath,\n getLastSentimentValue,\n isVideoOrImageType,\n isXpertOrVirtualType,\n pathQuestionIdToOld,\n questionByPath,\n questionOldIdToId,\n responseTagsByPath\n} from '@aytm/app/stats/page/comments/lib/utils'\nimport { updateQACounter, changeResponseCommentStatus } from '@aytm/app/stats/page/comments/actions'\nimport { DEFAULT_SELECTED_QUESTION } from '@aytm/app/stats/page/comments/lib/constants'\n\nimport Popup from '@aytm/lib/rfd-ui/components/basic/popup'\n\nimport OEItem from '@aytm/app/stats/page/comments/comments/OEItem'\nimport Traits from '@aytm/app/stats/page/comments/comments/components/Traits'\nimport Kudos from '@aytm/app/stats/page/comments/comments/components/Kudos'\nimport Reject from '@aytm/app/stats/page/comments/comments/components/Reject'\nimport Approve from '@aytm/app/stats/page/comments/comments/components/Approve'\nimport ResponseDropdown from '@aytm/app/stats/page/comments/comments/components/ResponseDropdown'\n\nimport { OEContext } from '@aytm/app/stats/page/comments/index'\n\nimport style from '@aytm/app/stats/page/comments/comments/styles/Response.module.scss'\n\nconst Response = memo(\n ({\n dataId,\n survey,\n reportVirtual,\n reportSchema,\n response,\n toolBoxOptions,\n showTraitsRef,\n responseOrderRef,\n popupNotificationsDisabled,\n isShowHiddenFilters,\n onUpdateSchema,\n onUpdateParams,\n onCloseNotification\n }) => {\n const { dispatch, searchState, commentStatusesState, dispatchCommentStatuses } = useContext(OEContext)\n const {\n isShowAllTraits,\n isShowSentiments,\n isTagsManagementDisabled,\n isAdmin,\n isSurveyGuest,\n isRejectAvailable,\n isSurveyOwner,\n isQAMode,\n CSRF,\n qaTotal,\n qaCounter,\n request,\n sentimentOptions,\n isVideoResponsesMode\n } = searchState\n\n const { uid: responseId } = response.response\n\n const { pageSize, selectedQuestion } = request\n\n const rejectStatus = commentStatusesState.reject[responseId]\n const [voiceBusy, setVoiceBusy] = useState(false)\n\n const isOnePerPage = isQAMode && 1 == pageSize\n const isRejected = !(isQAMode && isOnePerPage) && rejectStatus && 'true' == rejectStatus\n\n const hasTraits = Boolean(response.trait && Object.keys(response.trait).length > 4)\n const hasQuestionOrder = Boolean(response.session && response.session.order)\n\n const responseDate = moment(\n new Date(response.sessionFinishAt ? response.sessionFinishAt : response.completedAt)\n ).utcOffset(window.surveyTimeZone.offset)\n\n const [rejectReason, setRejectReason] = useState()\n const [kudosConfirm, setKudosConfirm] = useState()\n const [isResponseOrder, setIsResponseOrder] = useState(searchState.isResponseOrder || false)\n const [isShowToolsDropdown, setIsShowToolsDropdown] = useState(false)\n const [isShowTraits, setIsShowTraits] = useState(isShowAllTraits || false)\n const [isShowOtherResponses, setIsShowOtherResponses] = useState(false)\n\n useEffect(() => {\n showTraitsRef.current[responseId] = setIsShowTraits\n if (hasQuestionOrder) {\n responseOrderRef.current[responseId] = setIsResponseOrder\n }\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n delete showTraitsRef.current[responseId]\n if (hasQuestionOrder) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n delete responseOrderRef.current[responseId]\n }\n }\n }, [response, isShowAllTraits, hasQuestionOrder, responseId, responseOrderRef, showTraitsRef])\n\n const onChangeResponseStatus = async (responseId, action, reason = null) => {\n const params = {\n type: action,\n responseId,\n scope: action,\n commentStatusesState,\n dispatchCommentStatuses,\n CSRF,\n onSuccess: () => {\n if (isQAMode) {\n if (isOnePerPage) {\n dispatch({\n type: 'SET_PARAMS',\n request: {\n value: {\n qaProcessedResponseId: responseId,\n qaAction: action\n }\n }\n })\n }\n dispatch({\n type: 'ADD_PROCESSED_QA',\n request: {\n responseId\n }\n })\n // delayed counter update to allow animation ends for isOnePerPage\n setTimeout(\n () => {\n updateQACounter({ dispatch, qaTotal, qaCounter })\n },\n isOnePerPage ? 600 : 0\n )\n }\n }\n }\n if (reason) {\n params.reason = reason\n }\n await changeResponseCommentStatus(params)\n }\n\n const onToggleOtherResponses = () => {\n setIsShowOtherResponses(!isShowOtherResponses)\n }\n\n const onToggleToolsDropdown = () => {\n setIsShowToolsDropdown(!isShowToolsDropdown)\n }\n\n const onToggleResponseOrder = isResponseOrder => {\n setIsResponseOrder(isResponseOrder)\n }\n\n const onToggleTraits = () => {\n setIsShowTraits(!isShowTraits)\n }\n\n const questionsKeys = useMemo(() => {\n const answers =\n hasQuestionOrder && isResponseOrder\n ? response.session.order.filter(keyName => {\n const newKeyName = questionOldIdToId(keyName, survey)\n return (reportSchema.length\n ? reportSchema.some(schemaKey => newKeyName == questionOldIdToId(schemaKey, survey))\n : true) &&\n selectedQuestion !== DEFAULT_SELECTED_QUESTION &&\n !isShowOtherResponses\n ? 0 == selectedQuestion.indexOf(newKeyName)\n : true\n })\n : (reportSchema.length ? reportSchema : Object.keys(response.answer)).reduce((acc, cur) => {\n const newKeyName = questionOldIdToId(cur, survey)\n if (\n selectedQuestion == DEFAULT_SELECTED_QUESTION ||\n (selectedQuestion !== DEFAULT_SELECTED_QUESTION &&\n !isShowOtherResponses &&\n 0 == selectedQuestion.indexOf(newKeyName))\n )\n response.answer[cur] && acc.push(cur)\n return acc\n }, [])\n return answers.map(keyName => {\n return {\n keyName,\n path: questionOldIdToId(keyName, survey),\n question: questionByPath(keyName, survey, reportVirtual)\n }\n })\n }, [\n response,\n isShowOtherResponses,\n isResponseOrder,\n hasQuestionOrder,\n reportSchema,\n reportVirtual,\n selectedQuestion,\n survey\n ])\n\n const lastItemPath = getLastItemPath(questionsKeys, selectedQuestion, response)\n const lastItem = lastItemPath ? questionByPath(lastItemPath, survey, reportVirtual) : null\n const lastSentimentValue = lastItemPath ? getLastSentimentValue(lastItemPath, response) : 'None'\n const sentimentStatus =\n !lastItem || (lastItem && (isXpertOrVirtualType(lastItem) || isVideoOrImageType(lastItem)))\n ? false\n : checkSentimentStatus(lastItemPath, sentimentOptions)\n\n const panelValue = (response.trait && response.trait.panel) || (response.variables && response.variables.panel)\n\n return questionsKeys.length ? (\n <div\n className={classNames({\n [style['response-container']]: true,\n [style['noborder']]: isTagsManagementDisabled,\n [style['is-rejected']]: isRejected\n })}\n data-id={dataId}\n >\n {isRejected && response.rejection ? (\n <div className={style['response-rejected-info']}>\n by {response.rejection.rejected_by},{' '}\n {moment(new Date(response.rejection.rejected_at)).format('MM/DD/YYYY [at] hh:mm A')}\n </div>\n ) : null}\n <div className={style['response-header']}>\n <div className={style['response-header-title']}>\n <i\n className={classNames({\n 'icon-aytmfd-singleuser': true,\n 'afd-disabled': !hasTraits\n })}\n onClick={hasTraits ? onToggleTraits : null}\n />\n <Popup\n trigger={panelValue && isAdmin && isShowHiddenFilters ? 'hover' : 'none'}\n direction=\"top\"\n popupOffset={-10}\n show={panelValue && isAdmin && isShowHiddenFilters ? null : false}\n hideOtherPopupsOnShow={true}\n content={() => <div>{panelValue ? `Panel: ${panelValue}` : null}</div>}\n contentTheme={'compact-black'}\n >\n <b>Response ID:</b> {responseId}\n </Popup>\n <Popup\n trigger=\"hover\"\n direction=\"top\"\n popupOffset={-10}\n hideOtherPopupsOnShow={true}\n content={() => (\n <div>{responseDate.format(`hh:mma [${window.surveyTimeZone.name}] dddd MMMM DD, YYYY`)}</div>\n )}\n contentTheme={'compact-black'}\n >\n <div className={style['response-header-title-time']}>{responseDate.format('ddd hh:mma')}</div>\n </Popup>\n </div>\n <div className={style['response-header-right']}>\n {isQAMode && isOnePerPage && !isRejected && !rejectReason && !kudosConfirm && (\n <Approve\n response={response}\n responseId={responseId}\n onChangeResponseStatus={onChangeResponseStatus}\n isRejected={isRejected}\n />\n )}\n {!kudosConfirm && !isSurveyGuest && (isAdmin || isSurveyOwner) && isRejectAvailable && (\n <Reject\n popupNotificationsDisabled={popupNotificationsDisabled}\n response={response}\n responseId={responseId}\n rejectReason={rejectReason}\n setRejectReason={setRejectReason}\n onCloseNotification={onCloseNotification}\n onChangeResponseStatus={onChangeResponseStatus}\n isRejected={isRejected}\n />\n )}\n {!rejectReason && !isRejected && !isSurveyGuest && (isAdmin || isSurveyOwner) && (\n <Kudos\n popupNotificationsDisabled={popupNotificationsDisabled}\n response={response}\n responseId={responseId}\n kudosConfirm={kudosConfirm}\n setKudosConfirm={setKudosConfirm}\n onCloseNotification={onCloseNotification}\n />\n )}\n {/* eslint-disable-next-line max-len */}\n {!isRejected &&\n !rejectReason &&\n !kudosConfirm &&\n (hasTraits || (!hasTraits && isVideoResponsesMode) || hasQuestionOrder || isShowOtherResponses) && (\n <div className={style['response-header-menu']}>\n <i\n className={classNames({\n 'icon-aytmfd-hotdog': true,\n 'afd-disabled': !hasQuestionOrder && !hasTraits && !isVideoResponsesMode\n })}\n title={`${isShowToolsDropdown ? 'Hide' : 'Show'} all tools`}\n onClick={!hasQuestionOrder && !hasTraits && !isVideoResponsesMode ? null : onToggleToolsDropdown}\n />\n <ResponseDropdown\n width={200}\n align={'right'}\n onUpdateParams={onUpdateParams}\n opened={isShowToolsDropdown}\n hasQuestionOrder={hasQuestionOrder}\n responseId={responseId}\n isResponseOrder={isResponseOrder}\n isShowOtherResponses={isShowOtherResponses}\n isShowTraits={isShowTraits}\n onToggleOtherResponses={onToggleOtherResponses}\n onToggleResponseOrder={onToggleResponseOrder}\n onToggleTraits={hasTraits ? onToggleTraits : null}\n onClickOutside={onToggleToolsDropdown}\n />\n </div>\n )}\n </div>\n </div>\n {isShowTraits /*&& !isRejected*/ && hasTraits && (\n <div className={style['response-traits']}>\n <Traits response={response} survey={survey} />\n </div>\n )}\n <div className={style['response-body']}>\n {questionsKeys.map(({ keyName, path, question }) =>\n question ? (\n <OEItem\n key={`Response${responseId}_Question${keyName}`}\n dataId={`Response${responseId}_Question${keyName}`}\n responseId={responseId}\n path={path}\n answer={response.answer[keyName]}\n survey={survey}\n question={question}\n tags={responseTagsByPath(response, pathQuestionIdToOld(path))}\n selectedQuestion={selectedQuestion}\n pipingMask={response.pipingMask}\n toolBoxOptions={toolBoxOptions}\n isRejected={isRejected}\n voiceBusy={voiceBusy}\n setVoiceBusy={setVoiceBusy}\n onUpdateSchema={onUpdateSchema}\n />\n ) : null\n )}\n </div>\n\n <svg\n viewBox=\"0 0 100 100\"\n className={classNames({\n [style['response-dialog-triangle']]: true,\n [style[`sentiment-${lastSentimentValue ? lastSentimentValue : 'None'}`]]:\n isShowSentiments && sentimentStatus && false !== lastSentimentValue\n })}\n >\n <polygon points=\"0,0 100,0 0,100\" />\n </svg>\n </div>\n ) : null\n }\n)\n\nResponse.propTypes = {\n dataId: PropTypes.string,\n reportId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n survey: PropTypes.object,\n reportVirtual: PropTypes.object,\n reportSchema: PropTypes.array,\n response: PropTypes.object,\n toolBoxOptions: PropTypes.array,\n showTraitsRef: PropTypes.object,\n responseOrderRef: PropTypes.object,\n popupNotificationsDisabled: PropTypes.object,\n isShowHiddenFilters: PropTypes.bool,\n onUpdateParams: PropTypes.func,\n onUpdateSchema: PropTypes.func,\n onCloseNotification: PropTypes.func\n}\n\nResponse.displayName = 'Response'\n\nexport default Response\n","import React, { memo } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { OEContext } from '@aytm/app/stats/page/comments'\nimport style from '@aytm/app/stats/page/comments/comments/styles/Response.module.scss'\nimport useResponseStatus from '@aytm/app/stats/page/comments/lib/hooks/useResponseStatus'\n\nconst Approve = memo(({ responseId, onChangeResponseStatus }) => {\n const onApprove = () => {\n if (onChangeResponseStatus) {\n onChangeResponseStatus(responseId, 'approve')\n }\n }\n\n const { status, isQAMode, qaAction, qaProcessedResponseId } = useResponseStatus(\n OEContext,\n responseId,\n 'approve',\n event => {\n if ((49 == event.keyCode || 97 == event.keyCode || 35 == event.keyCode) && event.shiftKey) {\n onApprove()\n }\n }\n )\n\n switch (true) {\n case 'loading' == status || (isQAMode && 'approve' == qaAction && qaProcessedResponseId == responseId):\n return <i className=\"icon-aytmfd-spin aytmfd-spin\" />\n case 'object' == typeof status && 'error' == status.type:\n return <>Error</>\n default: {\n return (\n <div\n className={classNames({\n [style['response-header-approve']]: true\n })}\n >\n <i\n className={classNames({\n 'icon-aytmfd-thumbsUp': true\n })}\n onClick={onApprove}\n />\n </div>\n )\n }\n }\n})\n\nApprove.propTypes = {\n response: PropTypes.object,\n responseId: PropTypes.number,\n isRejected: PropTypes.bool,\n onChangeResponseStatus: PropTypes.func\n}\n\nApprove.displayName = 'Approve'\n\nexport default Approve\n","import React, { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\n\nconst Fade = ({ show, children }) => {\n const [shouldRender, setRender] = useState(show)\n\n useEffect(() => {\n if (show) setRender(true)\n }, [show])\n\n const onAnimationEnd = () => {\n if (!show) setRender(false)\n }\n\n return (\n shouldRender && (\n <div style={{ animation: `${show ? 'responseFadeIn' : 'responseFadeOut'} .5s` }} onAnimationEnd={onAnimationEnd}>\n {children}\n </div>\n )\n )\n}\n\nFade.propTypes = {\n show: PropTypes.bool,\n children: PropTypes.node\n}\n\nexport default Fade\n","import React, { memo, useContext } from 'react'\nimport PropTypes from 'prop-types'\nimport style from '@aytm/app/stats/page/comments/comments/styles/Response.module.scss'\nimport NotificationPopup from '@aytm/app/stats/page/comments/comments/components/NotificationPopup'\nimport classNames from 'classnames'\nimport Popup from '@aytm/lib/rfd-ui/components/basic/popup'\nimport { OEContext } from '@aytm/app/stats/page/comments'\nimport { changeResponseCommentStatus } from '@aytm/app/stats/page/comments/actions'\n\nconst Kudos = memo(({ responseId, kudosConfirm, setKudosConfirm, onCloseNotification, popupNotificationsDisabled }) => {\n const { dispatchCommentStatuses, commentStatusesState, searchState } = useContext(OEContext)\n const { CSRF, isAdmin } = searchState\n const kudosStatus = commentStatusesState.kudos[responseId]\n\n const onToggleKudosResponse = async (responseId, type) => {\n await changeResponseCommentStatus({\n type,\n responseId,\n reason: null,\n scope: 'kudos',\n commentStatusesState,\n dispatchCommentStatuses,\n CSRF\n })\n }\n\n const onToggleKudos = async type => {\n if ('unkudos' == type) {\n await onToggleKudosResponse(responseId, type)\n setKudosConfirm('')\n } else {\n setKudosConfirm(type)\n }\n }\n\n const onConfirmToggleKudos = async () => {\n await onToggleKudosResponse(responseId, kudosConfirm)\n setKudosConfirm('')\n }\n\n const onCancelToggleKudos = () => {\n setKudosConfirm('')\n }\n\n switch (true) {\n case 'true' == kudosStatus:\n case 'revertable' == kudosStatus:\n return (\n <NotificationPopup\n action=\"unkudos\"\n disabled={popupNotificationsDisabled['unkudos']}\n onClosePopup={onCloseNotification}\n type=\"kudos\"\n status={kudosStatus}\n >\n <span\n className={classNames({\n [style['response-header-kudos']]: true,\n [style['kudos-revertable']]: 'revertable' == kudosStatus\n })}\n onClick={'revertable' == kudosStatus ? onToggleKudos.bind(this, 'unkudos') : undefined}\n >\n <em>Kudos! </em> <i className=\"icon-aytmfd-heart\" />\n </span>\n </NotificationPopup>\n )\n case 'loading' == kudosStatus:\n return <i className=\"icon-aytmfd-spin aytmfd-spin\" />\n case 'object' == typeof kudosStatus && 'error' == kudosStatus.type:\n return (\n <Popup\n className=\"rfd-ui-popup-notification rfd-ui-popup-notification-error\"\n width=\"215px\"\n direction=\"topleft\"\n popupOffset={15}\n portal={true}\n show={null !== kudosStatus.message}\n hideOtherPopupsOnShow={true}\n content={() => (\n <div>\n <div className={style['response-header-notification-text']}>{kudosStatus.message}</div>\n </div>\n )}\n >\n <span className={style['kudos']}>Error</span>\n </Popup>\n )\n default:\n switch (true) {\n case Boolean(kudosConfirm): {\n return (\n <div className={style['response-header-confirmation']}>\n <span\n className={style['response-header-confirmation-button']}\n onClick={onCancelToggleKudos}\n rel=\"noreferrer\"\n >\n Cancel\n </span>\n <span\n className={style['response-header-confirmation-button']}\n onClick={onConfirmToggleKudos}\n rel=\"noreferrer\"\n >\n <span className={style['kudos-confirm']}>Give Kudos</span>\n <i className=\"icon-aytmfd-heart-empty\" />\n </span>\n </div>\n )\n }\n default:\n return (\n <div\n className={classNames({\n [style['response-header-kudos']]: true,\n [style['has-notification']]:\n !popupNotificationsDisabled[['true', 'revertable'].includes(kudosStatus) ? 'unkudos' : 'kudos'] &&\n !isAdmin\n })}\n >\n <NotificationPopup\n action=\"kudos\"\n disabled={popupNotificationsDisabled['kudos'] || isAdmin}\n onClosePopup={onCloseNotification}\n type=\"kudos\"\n status=\"no\"\n >\n <span className={style['non-kudos']} onClick={onToggleKudos.bind(this, 'kudos')}>\n <em>Give Kudos?</em> <i className=\"icon-aytmfd-heart-empty\" />\n </span>\n </NotificationPopup>\n </div>\n )\n }\n }\n})\n\nKudos.propTypes = {\n popupNotificationsDisabled: PropTypes.object,\n onCloseNotification: PropTypes.func,\n response: PropTypes.object,\n responseId: PropTypes.number,\n kudosConfirm: PropTypes.string,\n setKudosConfirm: PropTypes.func,\n onToggleKudosResponse: PropTypes.func\n}\n\nKudos.displayName = 'Kudos'\n\nexport default Kudos\n","import React, { useCallback } from 'react'\nimport PropTypes from 'prop-types'\nimport Popup, { PopupCloseButton } from '@aytm/lib/rfd-ui/components/basic/popup'\n\nconst statuses = {\n kudos: {\n no: 'We\\'ll send a \"Thank you note\" to the respondent on your behalf if you find their answer especially thoughtful and helpful',\n revertable:\n \"This response was given a kudos but we haven't sent it yet. You can still remove it by clicking the icon again.\",\n true: 'This response was given a kudos and respondent received a \"Thank you\" note on your behalf.'\n },\n reject: {\n no: \"You can reject up to 5% of the respondents based on suboptimal open ends within a week after fielding. We'll auto-replace them with fresh responses free of charge.\"\n },\n approve: {\n no: \"You can reject up to 5% of the respondents based on suboptimal open ends within a week after fielding. We'll auto-replace them with fresh responses free of charge.\"\n }\n}\n\nconst NotificationPopup = ({ type, status, children, onClosePopup, disabled, action }) => {\n const closePopup = useCallback(() => {\n onClosePopup(action)\n }, [action, onClosePopup])\n\n return disabled ? (\n <>{children}</>\n ) : (\n <Popup\n className=\"rfd-ui-popup-notification\"\n trigger=\"hover\"\n width=\"215px\"\n direction=\"topleft\"\n popupOffset={25}\n portal={true}\n hideOtherPopupsOnShow={true}\n content={() => (\n <div>\n <PopupCloseButton onClose={closePopup}>\n <i className=\"icon-aytmfd-close\" />\n </PopupCloseButton>\n <div className=\"response-header-notification-text\">{statuses[type][status]}</div>\n </div>\n )}\n >\n {children}\n </Popup>\n )\n}\n\nNotificationPopup.propTypes = {\n disabled: PropTypes.bool,\n type: PropTypes.string,\n action: PropTypes.string,\n status: PropTypes.string,\n onClosePopup: PropTypes.func,\n children: PropTypes.any\n}\n\nNotificationPopup.displayName = 'NotificationPopup'\n\nexport default NotificationPopup\n","import React, { memo, useContext, useState, useRef, useMemo, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport ADND from '@aytm/lib/adnd/ADND'\n\nimport { DEFAULT_CODEBOOK } from '@aytm/app/stats/page/sidebar/coding/lib/constants'\n\nimport { changeResponseTagState } from '@aytm/app/stats/page/comments/actions'\nimport { checkSentimentStatus, getDownloadUrl } from '@aytm/app/stats/page/comments/lib/utils'\n\nimport ImageResponse from '@aytm/app/stats/page/comments/comments/components/OEQuestionResponse/ImageResponse'\nimport VideoResponse from '@aytm/app/stats/page/comments/comments/components/OEQuestionResponse/VideoResponse'\nimport AudioResponse from '@aytm/app/stats/page/comments/comments/components/OEQuestionResponse/AudioResponse'\nimport TextReponse from '@aytm/app/stats/page/comments/comments/components/OEQuestionResponse/TextReponse'\n\nimport ToolBox from '@aytm/app/stats/page/comments/comments/components/ToolBox'\nimport Sentiment from '@aytm/app/stats/page/comments/comments/components/Sentiment'\nimport useEventListener from '@aytm/app/stats/page/comments/lib/hooks/useEventListener'\n\nimport { OEContext } from '@aytm/app/stats/page/comments'\n\nimport style from '@aytm/app/stats/page/comments/comments/styles/OEItem.module.scss'\n\nconst OEQuestionResponse = memo(\n ({\n node,\n nodeOptions,\n toolBoxOptions,\n path,\n responseId,\n dataId,\n tags,\n answer,\n question,\n sentiment,\n best_span_str,\n onUpdateSchema,\n isRejected,\n isVirtualOrXpert,\n isVideoOrImage,\n hasTitle,\n voiceBusy,\n setVoiceBusy\n }) => {\n const { windowUID, searchState, dispatch, dispatchCommentStatuses } = useContext(OEContext)\n\n const { sentimentOptions, isShowAllTools, isShowSentiments, isTagsManagementDisabled, isQAMode } = searchState\n const sentimentStatus = checkSentimentStatus(path, sentimentOptions)\n\n const [isDisabledToolBox, setIsDisabledToolBox] = useState(false)\n\n const dndTagTargetRef = useRef(null)\n\n const downloadUrl = useMemo(() => getDownloadUrl(question, answer), [question, answer])\n\n const onAddTag = async (tag, responseId, path, action) => {\n let type\n switch (tag.type) {\n case 'sentiment': {\n type = 'SENTIMENT_CHANGED'\n tag.currentValue = sentiment\n break\n }\n default: {\n if ('modify' != action) {\n type = 'TAG_ADDED'\n }\n }\n }\n tag.tag = tag.tag.trim()\n await changeResponseTagState({\n tag,\n type,\n responseId,\n path,\n action,\n onUpdateSchema,\n dispatch,\n dispatchCommentStatuses\n })\n }\n\n const onRemoveTag = async (tag, responseId, path) => {\n await changeResponseTagState({\n tag,\n type: 'TAG_REMOVED',\n responseId,\n path,\n action: 'delete',\n onUpdateSchema,\n dispatch,\n dispatchCommentStatuses\n })\n }\n\n const onDNDEnter = () => {\n dndTagTargetRef.current.classList.add(style['comment-answer-dnd-active'])\n }\n\n const onDNDLeave = () => {\n dndTagTargetRef.current.classList.remove(style['comment-answer-dnd-active'])\n }\n\n const onDNDDrop = async dropData => {\n const { tag, type, value, label, codebook } = dropData.data\n\n if (windowUID != dropData.data.windowUID) {\n if ('sentiment' == type) return\n if (tags.some(item => item.tag.toLowerCase() == `${DEFAULT_CODEBOOK}: ${label}`.toLowerCase())) return\n\n dndTagTargetRef.current.classList.remove(style['comment-answer-dnd-active'])\n\n setIsDisabledToolBox(true)\n await onAddTag(\n {\n tag: label,\n type: type || 'manual',\n label: label,\n codebook: null\n },\n responseId,\n path,\n 'create'\n )\n setIsDisabledToolBox(false)\n } else {\n if ('sentiment' == type && !sentimentStatus) return\n if ('sentiment' != type && tags.some(item => item.tag == tag)) return\n\n dndTagTargetRef.current.classList.remove(style['comment-answer-dnd-active'])\n\n setIsDisabledToolBox(true)\n await onAddTag(\n {\n tag: 'sentiment' == type ? value : codebook == undefined || null === codebook ? label : tag,\n type: type || 'manual',\n label: label,\n codebook: codebook == undefined || null === codebook ? null : codebook\n },\n responseId,\n path,\n 'create'\n )\n setIsDisabledToolBox(false)\n }\n }\n\n const dndTagTarget =\n !isQAMode && !isTagsManagementDisabled && !isRejected && !isVirtualOrXpert\n ? ADND.targets\n .data({\n acceptTypes: ['sidebar-tag', 'sidebar-tag-sentiment']\n })\n .onEnter(onDNDEnter)\n .onLeave(onDNDLeave)\n .onDrop(onDNDDrop)\n : null\n\n useEffect(() => {\n if (dndTagTarget) dndTagTarget.connect(dndTagTargetRef.current)\n\n return () => {\n if (dndTagTarget) dndTagTarget.disconnect()\n }\n }, [dndTagTarget])\n\n useEventListener('dndEndTag', () => {\n dndTagTargetRef.current.classList.remove(style['comment-answer-dnd-active'])\n })\n\n return (\n <div\n ref={dndTagTargetRef}\n className={classNames(style['comment-answer'], {\n [style['no-title']]: !hasTitle,\n [style['active']]: isShowAllTools && !isQAMode && !isVirtualOrXpert,\n [style[`sentiment-${sentiment}`]]: sentimentStatus && isShowSentiments && !isVideoOrImage\n })}\n >\n {sentimentStatus && isShowSentiments && !isQAMode && !isVirtualOrXpert && !isVideoOrImage ? (\n <Sentiment\n keyBase={`${responseId}-question-item-${path}-${nodeOptions.lvl}`}\n className={style['sentiment-container']}\n responseId={responseId}\n sentiment={sentiment ? sentiment : 'None'}\n path={path}\n onUpdateSchema={onUpdateSchema}\n />\n ) : null}\n {Object.hasOwn(node, 'i') ? (\n <ImageResponse node={node} />\n ) : Object.hasOwn(node, 'v') ? (\n <VideoResponse\n node={node}\n path={path}\n responseId={responseId}\n downloadUrl={downloadUrl}\n isRejected={isRejected}\n />\n ) : Object.hasOwn(node, 't') ? (\n 'object' == typeof node.t ? (\n <AudioResponse node={node} voiceBusy={voiceBusy} setVoiceBusy={setVoiceBusy} />\n ) : (\n <TextReponse node={node} best_span_str={best_span_str} />\n )\n ) : null}\n {isShowAllTools && !isQAMode && !isRejected && !isVirtualOrXpert && (\n <div className={style['comment-tools-container']}>\n <ToolBox\n tags={tags}\n dataId={dataId}\n responseId={responseId}\n downloadUrl={downloadUrl}\n question={question}\n path={path}\n answer={answer}\n sentiment={sentiment}\n toolBoxOptions={toolBoxOptions}\n isDisabledToolBox={isDisabledToolBox}\n onAddTag={onAddTag}\n onRemoveTag={onRemoveTag}\n />\n <div\n className={`${style['comment-tools-dnd-dropzone']} ${null !== downloadUrl ? style['has-download'] : ''}`}\n >\n <div className={style['comment-tools-dnd-dropzone-inner']}>\n <div className={style['comment-tools-dnd-dropzone-inner-text']}>+ Add tag</div>\n </div>\n </div>\n </div>\n )}\n </div>\n )\n }\n)\n\nOEQuestionResponse.propTypes = {\n node: PropTypes.object,\n nodeOptions: PropTypes.object,\n toolBoxOptions: PropTypes.array,\n path: PropTypes.string,\n tags: PropTypes.array,\n responseId: PropTypes.number,\n dataId: PropTypes.string,\n answer: PropTypes.object,\n question: PropTypes.object,\n sentiment: PropTypes.string,\n best_span_str: PropTypes.string,\n isVirtualOrXpert: PropTypes.bool,\n isVideoOrImage: PropTypes.bool,\n hasTitle: PropTypes.bool,\n isRejected: PropTypes.bool,\n onUpdateSchema: PropTypes.func,\n voiceBusy: PropTypes.bool,\n setVoiceBusy: PropTypes.func\n}\n\nOEQuestionResponse.displayName = 'QuestionResponse'\n\nexport default OEQuestionResponse\n\nADND().connect()\n","import React, { useState, useRef, useCallback } from 'react'\nimport PropTypes from 'prop-types'\nimport { AudioVisualizer } from 'react-audio-visualize'\n\nimport { stripHTML } from '@aytm/lib/common/func'\n\nimport useIsVisible from '@aytm/lib/hooks/useIsVisible'\n\nimport Popup from '@aytm/lib/rfd-ui/components/basic/popup'\n\nimport { Dropdown } from 'primereact/dropdown'\n\nimport style from '@aytm/app/stats/page/comments/comments/styles/OEItem.module.scss'\n\nconst synth = window.speechSynthesis\n\nconst getVoiceList = () => {\n if (0 < window.voicesListSelect?.length) return\n if (0 < synth.getVoices().length) {\n window.voicesListSelect = synth.getVoices().map((voice, i) => {\n return { text: `${voice.name} (${voice.lang})`, value: i }\n })\n } else setTimeout(getVoiceList, 500)\n}\ngetVoiceList()\n\nconst AudioResponse = ({ node, voiceBusy, setVoiceBusy }) => {\n const array = node.t\n\n const [blobs, setBlobs] = useState({})\n\n const [time, setTime] = useState(0)\n const [played, setPlayed] = useState('')\n const [playedAll, setPlayedAll] = useState(null)\n\n const [llmVoice, setLlmVoice] = useState(Number(window.localStorage.getItem('aytmLlmVoice') || 0))\n const [userVoice, setUserVoice] = useState(Number(window.localStorage.getItem('aytmUserVoice') || 0))\n\n const initRef = useRef(false)\n\n const audioRef = useRef(null)\n const blockRef = useRef(null)\n\n const currentPlayed = useRef(null)\n const utterThis = useRef(null)\n\n const isVisible = useIsVisible(blockRef)\n\n const updateLlmVoice = event => {\n setLlmVoice(Number(event.value || 0))\n window.localStorage.setItem('aytmLlmVoice', Number(event.value || 0))\n }\n\n const updateUserVoice = event => {\n setUserVoice(Number(event.value || 0))\n window.localStorage.setItem('aytmUserVoice', Number(event.value || 0))\n }\n\n const playAudio = uid => {\n if (!uid) return\n if (played == uid) {\n setPlayed(null)\n audioRef.current.pause()\n return\n }\n const reader = new FileReader()\n setPlayed(uid)\n reader.onload = event => {\n const srcUrl = event.target.result\n audioRef.current.src = srcUrl\n void audioRef.current.play()\n }\n reader.readAsDataURL(blobs[uid])\n audioRef.current.load()\n audioRef.current.onload = () => {\n void audioRef.current.play()\n }\n }\n\n const onTimeUpdate = () => {\n // console.log(i)\n // console.log(audioRef.current.currentTime)\n setTime(audioRef.current.currentTime)\n // setPrc(a)\n }\n\n const nextTrack = () => {\n setTimeout(() => {\n if (playedAll != null) setPlayedAll(playedAll < node.t.length - 1 ? playedAll + 1 : null)\n if (playedAll == node.t.length - 1) setVoiceBusy(false)\n }, 150)\n }\n\n const audioEnded = () => {\n setPlayed(null)\n nextTrack()\n }\n\n const playAll = () => {\n setPlayedAll(playedAll != null ? null : 0)\n if (playedAll != null && utterThis.current) {\n synth.cancel()\n utterThis.current = null\n setPlayedAll(null)\n currentPlayed.current = null\n setPlayed(null)\n if (audioRef.current) audioRef.current.pause()\n setVoiceBusy(false)\n }\n }\n\n const popupContent = useCallback(\n () => (\n <div className={style.popupContent}>\n <span className={style.spanPopup}>Skipper:</span>\n <Dropdown\n className={style.selectPopup}\n value={llmVoice}\n options={window.voicesListSelect}\n optionValue=\"value\"\n optionLabel=\"text\"\n fixedDropdownDir=\"bottom\"\n disabled={!window.voicesListSelect?.length}\n onChange={updateLlmVoice}\n />\n <span className={style.spanPopup}>Respondent:</span>\n <Dropdown\n className={style.selectPopup}\n value={userVoice}\n options={window.voicesListSelect}\n optionValue=\"value\"\n optionLabel=\"text\"\n fixedDropdownDir=\"bottom\"\n disabled={!window.voicesListSelect?.length}\n onChange={updateUserVoice}\n />\n </div>\n ),\n [llmVoice, userVoice]\n )\n\n if (!initRef.current && isVisible) {\n initRef.current = true\n node.t\n .filter(node => node.audio_uid)\n .forEach(node =>\n fetch(node.audio_url)\n .then(r => r.blob())\n .then(r => {\n blobs[node.audio_uid] = r\n setBlobs(Object.assign({}, blobs))\n })\n //eslint-disable-next-line no-console\n .catch(error => console.log(error))\n )\n }\n\n if (playedAll != null && playedAll != currentPlayed.current) {\n currentPlayed.current = playedAll\n setVoiceBusy(true)\n if (!node.t[playedAll].audio_uid) {\n utterThis.current = new SpeechSynthesisUtterance(stripHTML(node.t[playedAll].text))\n utterThis.current.voice = synth.getVoices()['llm' == node.t[playedAll].type ? llmVoice : userVoice]\n utterThis.current.onend = () => {\n nextTrack()\n }\n synth.speak(utterThis.current)\n } else playAudio(node.t[playedAll].audio_uid)\n }\n\n const renderBlock = (block, index) => (\n <div key={index + 1}>\n <div className={style['comment-answer-block-container']}>\n <div className={style['comment-answer-block-header']}>\n <i className={'llm' == block.type ? 'icon-aytmfd-qconversation-skipper' : 'icon-aytmfd-qconversation-user'} />\n <span>{'llm' == block.type ? 'Skipper' : 'Respondent'}</span>\n {block.audio_uid ? (\n blobs[block.audio_uid] ? (\n <>\n <AudioVisualizer\n blob={blobs[block.audio_uid]}\n width={100}\n height={25}\n currentTime={played == block.audio_uid ? time : null}\n barPlayedColor={'#73b0ac'}\n />\n <audio ref={audioRef} onTimeUpdate={onTimeUpdate} onEnded={audioEnded} />\n {!voiceBusy ? (\n <i\n className={`${style.icon} ${style.blue} ${\n played == block.audio_uid ? 'icon-aytmfd-stop' : 'icon-aytmfd-video-play'\n }`}\n onClick={() => playAudio(block.audio_uid)}\n />\n ) : null}\n <a href={block.audio_url} download target=\"blank\">\n Download audio\n </a>\n </>\n ) : (\n <i className={`${style['spinner']} icon-aytmfd-spin aytmfd-spin`} />\n )\n ) : null}\n </div>\n <div className={style['comment-answer-block-text']} dangerouslySetInnerHTML={{ __html: block.text }} />\n </div>\n </div>\n )\n\n const renderSvg = () => (\n <svg width=\"10px\" height=\"8px\" viewBox=\"0 0 10 8\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n <g\n id=\"Audio\"\n transform=\"translate(0.000000, 0.500000)\"\n stroke=\"currentColor\"\n stroke-width=\"1\"\n fill-rule=\"evenodd\"\n stroke-linecap=\"round\"\n >\n <line x1=\"8.5\" y1=\"0.493135\" x2=\"8.5\" y2=\"6.50687\" id=\"Line-5\">\n <animate\n attributeType=\"XML\"\n attributeName=\"y1\"\n values=\"2;0;2\"\n keyTimes=\"0;0.5;1\"\n dur=\".8s\"\n repeatCount=\"indefinite\"\n ></animate>\n <animate\n attributeType=\"XML\"\n attributeName=\"y2\"\n values=\"5;7;5\"\n keyTimes=\"0;0.5;1\"\n dur=\".8s\"\n repeatCount=\"indefinite\"\n ></animate>\n </line>\n <line x1=\"6.5\" y1=\"0.789016\" x2=\"6.5\" y2=\"6.21098\" id=\"Line-4\">\n <animate\n attributeType=\"XML\"\n attributeName=\"y1\"\n values=\"0;2;0\"\n keyTimes=\"0;0.5;1\"\n dur=\".5s\"\n repeatCount=\"indefinite\"\n ></animate>\n <animate\n attributeType=\"XML\"\n attributeName=\"y2\"\n values=\"7;5;7\"\n keyTimes=\"0;0.5;1\"\n dur=\".5s\"\n repeatCount=\"indefinite\"\n ></animate>\n </line>\n <line x1=\"4.5\" y1=\"1.67582\" x2=\"4.5\" y2=\"5.32418\" id=\"Line-3\">\n <animate\n attributeType=\"XML\"\n attributeName=\"y1\"\n values=\"1;3;1\"\n keyTimes=\"0;0.5;1\"\n dur=\".6s\"\n repeatCount=\"indefinite\"\n ></animate>\n <animate\n attributeType=\"XML\"\n attributeName=\"y2\"\n values=\"6;4;6\"\n keyTimes=\"0;0.5;1\"\n dur=\".6s\"\n repeatCount=\"indefinite\"\n ></animate>\n </line>\n <line x1=\"2.5\" y1=\"1.14678\" x2=\"2.5\" y2=\"5.85322\" id=\"Line-2\">\n <animate\n attributeType=\"XML\"\n attributeName=\"y1\"\n values=\"2;1;2\"\n keyTimes=\"0;0.5;1\"\n dur=\".7s\"\n repeatCount=\"indefinite\"\n ></animate>\n <animate\n attributeType=\"XML\"\n attributeName=\"y2\"\n values=\"5;6;5\"\n keyTimes=\"0;0.5;1\"\n dur=\".7s\"\n repeatCount=\"indefinite\"\n ></animate>\n </line>\n <line x1=\"0.5\" y1=\"1.67582\" x2=\"0.5\" y2=\"5.32418\" id=\"Line-1\">\n <animate\n attributeType=\"XML\"\n attributeName=\"y1\"\n values=\"3;0;3\"\n keyTimes=\"0;0.5;1\"\n dur=\".9s\"\n repeatCount=\"indefinite\"\n ></animate>\n <animate\n attributeType=\"XML\"\n attributeName=\"y2\"\n values=\"4;7;4\"\n keyTimes=\"0;0.5;1\"\n dur=\".9s\"\n repeatCount=\"indefinite\"\n ></animate>\n </line>\n </g>\n </svg>\n )\n\n return (\n <div className={style['comment-answer-block']} ref={blockRef}>\n {!voiceBusy || playedAll != null ? (\n <>\n <div className={style.iconAll}>\n <i\n className={` ${\n playedAll != null ? 'icon-aytmfd-stop ' + style.stop : 'icon-aytmfd-qconversation-playback'\n }`}\n title={`Respondents replied to Skipper's written prompts and were not offered voice-over, but you can listen to the synthesized conversation`}\n onClick={() => playAll()}\n />\n {playedAll != null ? renderSvg() : ''}\n </div>\n <Popup\n className=\"rfd-ui-popup-notification\"\n width=\"240px\"\n trigger=\"click\"\n direction=\"righttop\"\n popupOffset={19}\n content={popupContent}\n >\n <i className={`${style.iconAllConfig} ${'icon-aytmfd-config'}`} />\n </Popup>\n </>\n ) : null}\n\n {array.map((block, index) => renderBlock(block, index))}\n </div>\n )\n}\n\nAudioResponse.propTypes = {\n node: PropTypes.object,\n nodeOptions: PropTypes.object,\n toolBoxOptions: PropTypes.array,\n path: PropTypes.string,\n tags: PropTypes.array,\n responseId: PropTypes.number,\n dataId: PropTypes.string,\n survey: PropTypes.object,\n answer: PropTypes.object,\n question: PropTypes.object,\n sentiment: PropTypes.string,\n best_span_str: PropTypes.string,\n isVirtualOrXpert: PropTypes.bool,\n isVideoOrImage: PropTypes.bool,\n hasTitle: PropTypes.bool,\n isRejected: PropTypes.bool,\n onUpdateSchema: PropTypes.func,\n voiceBusy: PropTypes.bool,\n setVoiceBusy: PropTypes.func\n}\n\nAudioResponse.displayName = 'AudioResponse'\n\nexport default AudioResponse\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport style from '@aytm/app/stats/page/comments/comments/styles/OEItem.module.scss'\n\nconst ImageResponse = ({ node }) => {\n const { url, width, height } = node.i.original\n\n return (\n <div className={style['comment-answer-image']}>\n <img id={`commments-image-${node.i.uid}`} src={url} width={width} height={height} />\n </div>\n )\n}\n\nImageResponse.propTypes = {\n node: PropTypes.object\n}\n\nImageResponse.displayName = 'ImageResponse'\n\nexport default ImageResponse\n","import React, { useContext, useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { escapeRegExp } from '@aytm/lib/common/func'\nimport { showSpellcheckerDiff, highlightSearchString } from '@aytm/app/stats/page/comments/lib/utils'\nimport { OEContext } from '@aytm/app/stats/page/comments'\n\nimport style from '@aytm/app/stats/page/comments/comments/styles/OEItem.module.scss'\n\nconst TextResponse = ({ node, best_span_str }) => {\n const { searchState } = useContext(OEContext)\n\n const { request, correctionsLevel, isHighlightSearchTerms } = searchState\n\n const str = useMemo(\n () => showSpellcheckerDiff(node.t, node.te || node.t, correctionsLevel, style),\n [node.t, node.te, correctionsLevel]\n )\n\n const content = useMemo(() => {\n let content =\n null === best_span_str ||\n 2 > best_span_str?.length ||\n (0 < best_span_str?.length && new RegExp(`^${escapeRegExp(best_span_str)}([.,?!])?$`).test(node.t))\n ? str\n : str.replace(best_span_str, `<b>${best_span_str}</b>`)\n\n if (isHighlightSearchTerms) {\n content = highlightSearchString(content, request.query)\n }\n\n return content.replace(/\\n/gi, '<br/>')\n }, [node.t, str, best_span_str, request, isHighlightSearchTerms])\n\n return <div className={style['comment-answer-text']} dangerouslySetInnerHTML={{ __html: content }} />\n}\n\nTextResponse.propTypes = {\n node: PropTypes.object,\n best_span_str: PropTypes.string\n}\n\nTextResponse.displayName = 'TextResponse'\n\nexport default TextResponse\n","import React, { useContext, useState, useRef } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { OEContext } from '@aytm/app/stats/page/comments'\n\nimport style from '@aytm/app/stats/page/comments/comments/styles/OEItem.module.scss'\n\nconst VideoResponse = ({ node, path, responseId, downloadUrl, isRejected }) => {\n const { searchState } = useContext(OEContext)\n\n const { isShowAllTools, isQAMode } = searchState\n\n const { thumbnail_url, mp4File } = node.v\n\n const [isShowVideo, setIsShowVideo] = useState(false)\n\n const videoRef = useRef(null)\n\n return (\n <div className={style['comment-answer-video']}>\n {null !== downloadUrl && !isShowAllTools && !isRejected && !isQAMode ? (\n <a\n className={`rfd-ui-button with-padding ${style['download-button']}`}\n href={downloadUrl}\n download={`AYTM-Survey-${window.surveyId}-Video-Response-${responseId}_${path}.mp4`}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n DOWNLOAD\n </a>\n ) : null}\n {isShowVideo ? (\n <video ref={videoRef} controls width={'100%'} height={'auto'} autoPlay poster={thumbnail_url}>\n <source src={mp4File} />\n </video>\n ) : (\n <div className={style['comment-answer-video-poster']} onClick={() => setIsShowVideo(true)}>\n <img src={thumbnail_url} width={'100%'} height={'auto'} />\n </div>\n )}\n </div>\n )\n}\n\nVideoResponse.propTypes = {\n node: PropTypes.object,\n path: PropTypes.string,\n responseId: PropTypes.number,\n downloadUrl: PropTypes.string,\n isRejected: PropTypes.bool\n}\n\nVideoResponse.displayName = 'VideoResponse'\n\nexport default VideoResponse\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport Popup from '@aytm/lib/rfd-ui/components/basic/popup'\nimport { imageAsset as imageAssetUrl } from '@aytm/app/survey/editor/resources/urls'\nimport {\n IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT,\n IMAGE_ASSET_PATH_FILTER_RESIZE_AND_PAD\n} from '@aytm/lib/common/assets'\nimport {\n ALLOWED_HTML_TAGS,\n PIPING_MASK_REGEX,\n QUESTION_TITLE_PIPING_THUMB_HEIGHT,\n QUESTION_TITLE_PIPING_THUMB_WIDTH,\n QUESTION_TITLE_PIPING_IMAGE_MIN_WIDTH,\n QUESTION_TITLE_PIPING_IMAGE_MAX_WIDTH,\n QUESTION_TITLE_PIPING_IMAGE_MIN_HEIGHT,\n QUESTION_TITLE_PIPING_IMAGE_MAX_HEIGHT\n} from '@aytm/app/stats/page/comments/lib/constants'\nimport { removeLogicFromText } from '@aytm/app/stats/page/comments/lib/utils'\nimport style from '@aytm/app/stats/page/comments/comments/styles/OEQuestionTitle.module.scss'\nimport ImagePreview from '@aytm/app/survey/editor/components/content/assets/ImagePreview'\n\nconst OEQuestionTitle = ({ pipingMask, questionText, nodeOptions, imagesData }) => {\n let resultText = (pipingMask && pipingMask[`___${nodeOptions.value}t`]) || questionText\n let thumbPreview = null\n\n const renderQuestionThumbnail = image => (\n <div className={style['comment-header-question-title-thumbnail']}>\n <Popup\n trigger=\"hover\"\n direction=\"left\"\n portal={true}\n hideOtherPopupsOnShow={true}\n content={() => (\n <ImagePreview\n minWidth={`${QUESTION_TITLE_PIPING_IMAGE_MIN_WIDTH}px`}\n maxWidth={`${QUESTION_TITLE_PIPING_IMAGE_MAX_WIDTH}px`}\n minHeight={`${QUESTION_TITLE_PIPING_IMAGE_MIN_HEIGHT}px`}\n maxHeight={`${QUESTION_TITLE_PIPING_IMAGE_MAX_HEIGHT}px`}\n imageUrl={image.original_url}\n previewUrl={imageAssetUrl(image.original_path, {\n width: QUESTION_TITLE_PIPING_IMAGE_MAX_WIDTH,\n height: QUESTION_TITLE_PIPING_IMAGE_MAX_HEIGHT,\n filter: IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT,\n unsharp: true,\n backgroundColor: 'transparent'\n })}\n />\n )}\n contentTheme=\"thin-black\"\n >\n <img\n src={imageAssetUrl(image.original_path, {\n width: QUESTION_TITLE_PIPING_THUMB_WIDTH,\n height: QUESTION_TITLE_PIPING_THUMB_HEIGHT,\n filter: IMAGE_ASSET_PATH_FILTER_RESIZE_AND_PAD,\n unsharp: true,\n backgroundColor: 'white'\n })}\n />\n </Popup>\n </div>\n )\n\n if (nodeOptions.image) {\n if ('string' == typeof nodeOptions.image) {\n if (imagesData[nodeOptions.image]) {\n thumbPreview = renderQuestionThumbnail({\n original_url: imagesData[nodeOptions.image].original.url,\n original_path: imagesData[nodeOptions.image].original.path\n })\n }\n } else {\n thumbPreview = renderQuestionThumbnail({\n original_url: nodeOptions.image.original.url,\n original_path: nodeOptions.image.original.path\n })\n }\n }\n\n if ('string' === typeof resultText) {\n resultText.match(PIPING_MASK_REGEX)?.forEach(matchedItem => {\n const key = matchedItem.match(/\\[(.*)]/i)[1].toLowerCase()\n const mask = key && pipingMask ? pipingMask[key.toLowerCase()] : null\n if (mask) {\n if (mask.original_url) {\n resultText = resultText.replace(matchedItem, '')\n thumbPreview = renderQuestionThumbnail(mask)\n } else {\n resultText = resultText.replace(matchedItem, mask)\n }\n }\n })\n\n resultText = removeLogicFromText(resultText)\n if (ALLOWED_HTML_TAGS.test(resultText)) {\n resultText = <span dangerouslySetInnerHTML={{ __html: resultText }} />\n }\n }\n\n return (\n <>\n {thumbPreview}\n <strong className={style['comment-header-question-title-name']}>{nodeOptions.prefix}: </strong>\n {resultText}\n </>\n )\n}\n\nOEQuestionTitle.propTypes = {\n pipingMask: PropTypes.object,\n questionText: PropTypes.string,\n nodeOptions: PropTypes.object,\n imagesData: PropTypes.object\n}\n\nOEQuestionTitle.displayName = 'QuestionTitle'\n\nexport default OEQuestionTitle\n","import React, { memo, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport style from '@aytm/app/stats/page/comments/comments/styles/Response.module.scss'\nimport NotificationPopup from '@aytm/app/stats/page/comments/comments/components/NotificationPopup'\nimport TextField from '@aytm/lib/rfd-ui/components/basic/text-field'\nimport Button from '@aytm/lib/rfd-ui/components/basic/button'\nimport classNames from 'classnames'\nimport InlineSelect from '@aytm/lib/rfd-ui/components/basic/inline-select'\nimport { REJECTED_OPTIONS } from '@aytm/app/stats/page/comments/lib/constants'\nimport { OEContext } from '@aytm/app/stats/page/comments'\nimport useResponseStatus from '@aytm/app/stats/page/comments/lib/hooks/useResponseStatus'\n\nconst getRejectsOptions = () => REJECTED_OPTIONS\n// eslint-disable-next-line react/display-name\nconst WrappedInlineSelect = React.forwardRef((props, ref) => <InlineSelect innerRef={ref} {...props} />)\n\nconst Reject = memo(\n ({\n responseId,\n rejectReason,\n setRejectReason,\n onChangeResponseStatus,\n onCloseNotification,\n popupNotificationsDisabled\n }) => {\n const [otherReason, setOtherReason] = useState('')\n const { searchState } = useContext(OEContext)\n const { request } = searchState\n const { pageSize } = request\n const isOnePerPage = useMemo(() => 1 == pageSize, [pageSize])\n\n const { isAdmin } = searchState\n const rejectSelect = useRef()\n const otherInput = useRef()\n\n const { status, isQAMode, qaAction, qaProcessedResponseId } = useResponseStatus(\n OEContext,\n responseId,\n 'reject',\n event => {\n if (\n isOnePerPage &&\n (51 == event.keyCode || 99 == event.keyCode || 34 == event.keyCode) &&\n event.shiftKey &&\n rejectSelect.current\n ) {\n rejectSelect.current.click()\n }\n }\n )\n\n const onReject = useCallback(\n option => {\n const reason = option._root.entries[0][1]\n setRejectReason(reason)\n },\n [setRejectReason]\n )\n\n const onConfirmReject = useCallback(() => {\n onChangeResponseStatus(responseId, 'reject', rejectReason)\n setRejectReason(rejectReason)\n }, [onChangeResponseStatus, responseId, rejectReason, setRejectReason])\n\n const onCancelReject = useCallback(() => {\n setRejectReason('')\n }, [setRejectReason])\n\n const onChangeOtherReason = useCallback(reason => {\n setOtherReason(reason)\n }, [])\n\n const onOtherReject = useCallback(() => {\n if (otherReason) {\n onChangeResponseStatus(responseId, 'reject', otherReason)\n setRejectReason('')\n }\n }, [otherReason, onChangeResponseStatus, responseId, setRejectReason])\n\n const onRejectReasonKeyDown = useCallback(\n event => {\n if (27 == event.keyCode) {\n setOtherReason('')\n setRejectReason('')\n onCancelReject()\n }\n if (13 == event.keyCode) {\n if (rejectReason) {\n onConfirmReject()\n }\n if (otherReason) {\n onOtherReject()\n }\n }\n },\n [setRejectReason, onCancelReject, rejectReason, otherReason, onConfirmReject, onOtherReject]\n )\n\n useEffect(() => {\n if (rejectReason) {\n window.addEventListener('keydown', onRejectReasonKeyDown)\n }\n return () => {\n window.removeEventListener('keydown', onRejectReasonKeyDown)\n }\n }, [rejectReason, onRejectReasonKeyDown])\n\n switch (true) {\n case 'true' == status && !(isQAMode && isOnePerPage):\n return <>Rejected</>\n case 'loading' == status ||\n (isQAMode && 'reject' == qaAction && ('true' == status || qaProcessedResponseId == responseId)):\n return <i className=\"icon-aytmfd-spin aytmfd-spin\" />\n case 'object' == typeof status && 'error' == status.type:\n return <>Error</>\n default: {\n switch (true) {\n case 'other' == rejectReason: {\n return (\n <div className=\"reject-reason\">\n <span onClick={onCancelReject}>\n <i className=\"icon-aytmfd-close\" />\n </span>\n <TextField\n ref={otherInput}\n placeholder=\"Please type a reason for rejection...\"\n width=\"250px\"\n debounce={100}\n value={otherReason}\n autoFocus\n onKeyDown={onRejectReasonKeyDown}\n onChange={onChangeOtherReason}\n />\n <Button label=\"Reject\" disabled={!otherReason} onClick={onOtherReject} />\n </div>\n )\n }\n case Boolean(rejectReason): {\n return (\n <div\n className={classNames({\n [style['response-header-confirmation']]: true,\n [style['reject-confirmation']]: true\n })}\n >\n <span className={style['response-header-confirmation-button']} onClick={onCancelReject}>\n Cancel\n </span>\n <span className={style['response-header-confirmation-button']} onClick={onConfirmReject}>\n <span className={style['reject-confirm']}>Reject</span>\n </span>\n </div>\n )\n }\n default:\n return (\n <div\n className={classNames({\n [style['response-header-reject']]: true,\n [style['has-notification']]: !popupNotificationsDisabled['reject'] && !isAdmin\n })}\n >\n <NotificationPopup\n action=\"reject\"\n type=\"reject\"\n status=\"no\"\n disabled={popupNotificationsDisabled['reject'] || isAdmin}\n onClosePopup={onCloseNotification}\n >\n <WrappedInlineSelect\n ref={rejectSelect}\n className={style['response-header-reject-inline-select']}\n value={rejectReason}\n fetchOptions={getRejectsOptions}\n tabIndex=\"-1\"\n onSelect={onReject}\n >\n <em>Reject</em>\n </WrappedInlineSelect>\n </NotificationPopup>\n </div>\n )\n }\n }\n }\n }\n)\n\nReject.propTypes = {\n popupNotificationsDisabled: PropTypes.object,\n onCloseNotification: PropTypes.func,\n response: PropTypes.object,\n responseId: PropTypes.number,\n rejectReason: PropTypes.string,\n setRejectReason: PropTypes.func,\n isRejected: PropTypes.bool,\n onChangeResponseStatus: PropTypes.func\n}\n\nReject.displayName = 'Reject'\n\nexport default Reject\n","import React, { useContext } from 'react'\nimport PropTypes from 'prop-types'\nimport Dropdown from '@aytm/lib/rfd-ui/components/basic/dropdown'\nimport ClickOutside from '@aytm/lib/rfd-ui/components/basic/click-outside'\nimport RadioButton from '@aytm/lib/rfd-ui/components/basic/radio-button'\nimport CheckBox from '@aytm/lib/rfd-ui/components/basic/check-box'\nimport style from '@aytm/app/stats/page/comments/comments/styles/Response.module.scss'\nimport classNames from 'classnames'\nimport { OEContext } from '@aytm/app/stats/page/comments'\nimport { DEFAULT_SELECTED_QUESTION } from '@aytm/app/stats/page/comments/lib/constants'\n\nconst ResponseDropdown = ({\n width,\n align,\n opened,\n hasQuestionOrder,\n isResponseOrder,\n isShowOtherResponses,\n isShowTraits,\n responseId,\n onUpdateParams,\n onToggleResponseOrder,\n onToggleTraits,\n onClickOutside\n}) => {\n const { searchState } = useContext(OEContext)\n const { selectedQuestion } = searchState.request\n\n const onResponseClick = () => {\n onUpdateParams({ query: [{ value: responseId, label: responseId, type: 'uid' }] }, undefined, 'comments')\n }\n\n return (\n <Dropdown width={width} align={align} opened={opened}>\n {() => (\n <ClickOutside onClickOutside={event => setTimeout(() => onClickOutside(event))}>\n <div\n className={classNames({\n 'comments-toolbar-dropdown': true,\n [style['response-header-menu-dropdown']]: true\n })}\n >\n <ul className=\"comments-toolbar-dropdown-inner\">\n {(selectedQuestion == DEFAULT_SELECTED_QUESTION || isShowOtherResponses) && hasQuestionOrder && (\n <>\n <li\n onClick={hasQuestionOrder ? onToggleResponseOrder.bind(this, false) : null}\n className={classNames({\n disabled: !hasQuestionOrder\n })}\n >\n <RadioButton disabled={!hasQuestionOrder} checked={!isResponseOrder} label=\"Qs in survey order\" />\n </li>\n <li\n onClick={hasQuestionOrder ? onToggleResponseOrder.bind(this, true) : null}\n className={classNames({\n disabled: !hasQuestionOrder\n })}\n >\n <RadioButton disabled={!hasQuestionOrder} checked={isResponseOrder} label=\"Qs in response order\" />\n </li>\n {onToggleTraits && <hr />}\n </>\n )}\n {onToggleTraits && (\n <>\n <li onClick={onToggleTraits}>\n <CheckBox checked={isShowTraits} label=\"Show traits\" />\n </li>\n {searchState.isVideoResponsesMode && <hr />}\n </>\n )}\n {searchState.isVideoResponsesMode && (\n <>\n <li onClick={onResponseClick}>\n <span className=\"rfd-ui-checkbox rfd-ui-checkbox-group-default\">\n <i className=\"icon-aytmfd-qoeform\" role=\"presentation\" />\n <span className=\"rfd-ui-checkbox-label\">Open response</span>\n </span>\n </li>\n </>\n )}\n </ul>\n </div>\n </ClickOutside>\n )}\n </Dropdown>\n )\n}\n\nResponseDropdown.propTypes = {\n width: PropTypes.number,\n align: PropTypes.string,\n responseId: PropTypes.number,\n opened: PropTypes.bool,\n hasQuestionOrder: PropTypes.bool,\n isResponseOrder: PropTypes.bool,\n isShowOtherResponses: PropTypes.bool,\n isShowTraits: PropTypes.bool,\n onUpdateParams: PropTypes.func,\n onToggleOtherResponses: PropTypes.func,\n onToggleResponseOrder: PropTypes.func,\n onToggleTraits: PropTypes.func,\n onClickOutside: PropTypes.func\n}\n\nResponseDropdown.displayName = 'ResponseDropdown'\n\nexport default ResponseDropdown\n","/* eslint-disable react/prop-types, react/display-name */\nimport React, { useContext, useState, useRef, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport CreatableSelect from 'react-select/creatable'\n\nimport { components } from 'react-select'\n\nimport { encodeText, decodeText } from '@aytm/app/stats/lib/helpers'\n\nimport { ALLOWED_HTML_TAGS, SENTIMENTS_ICON_HASH } from '@aytm/app/stats/page/comments/lib/constants'\nimport { stripTags, getSearchInputOptions, sanitizeReactSelectOption } from '@aytm/app/stats/page/comments/lib/utils'\n\nimport { OEContext } from '@aytm/app/stats/page/comments'\n\nimport style from '@aytm/app/stats/page/comments/comments/styles/SearchInput.module.scss'\n\nconst { MenuList, MultiValue, Option, ClearIndicator, IndicatorsContainer } = components\n\nconst rsStyles = {\n option: (provided, state) => {\n return { ...provided, isDisabled: state.data.disabled }\n },\n multiValue: (provided, state) => {\n return { ...provided, backgroundColor: state.styles.backgroundColor }\n }\n}\n\nconst filterOption = (option, searchText) => {\n const text = searchText.trim().toLowerCase()\n return (\n option.data.__isNew__ ||\n option.data.label.toLowerCase().includes(encodeText(text, false)) ||\n ('codebook' == option.data.type &&\n option.data.tags.some(tag => tag.toLowerCase().includes(encodeText(text, false))))\n )\n}\n\nconst formatCreateLabel = value => `Search for: ${encodeText(value, false)}`\n\nconst isValidNewOption = value => 0 < value.trim().length\n\nconst SearchInput = ({ placeholder, survey, tagsList, questionsList, disabled }) => {\n const { searchState, dispatch } = useContext(OEContext)\n\n const { request, isLoading, isProcessing, isTagsManagementDisabled, isSentimentsManagementDisabled } = searchState\n const { query = [], selectedQuestion } = request\n\n const [inputValue, setInputValue] = useState(\n query.map(value => ('tag' == value.type ? { ...value, value: `${value.codebook}: ${value.label}` } : value))\n )\n const [isShowSearchIconOverlay, setIsShowSearchIconOverlay] = useState(false)\n\n const [options, setOptions] = useState(\n getSearchInputOptions(\n inputValue,\n survey,\n tagsList,\n questionsList,\n selectedQuestion,\n isTagsManagementDisabled,\n isSentimentsManagementDisabled\n ) || []\n )\n\n const inputEl = useRef(null)\n\n const tmpValue = useRef('')\n\n const convertInputValue = useCallback(\n () =>\n inputValue.map(value => {\n if ('codebook' == value.type) {\n Object.assign(value, {\n color: `#${survey.codeBooks.find(codebook => codebook.title == value.value)?.color || '88d1cd'}`\n })\n }\n if ('tag' == value.type) {\n Object.assign(value, {\n color: `#${\n survey.codeBooks.find(codebook => codebook.tags.some(tag => `${codebook.title}: ${tag}` == value.value))\n ?.color || '88d1cd'\n }`\n })\n }\n return value\n }) || [],\n [survey.codeBooks, inputValue]\n )\n\n const onChange = async (newValue, actionMeta) => {\n if ('clear' == actionMeta.action) {\n setInputValue([])\n dispatch({ type: 'SET_REQUEST_PARAM', request: { name: 'query', value: [] } })\n return\n }\n\n switch (actionMeta.action) {\n case 'pop-value':\n case 'remove-value': {\n setInputValue(newValue || [])\n break\n }\n case 'select-option': {\n setInputValue(\n newValue.map(value => {\n if ('codebook' == value.type) {\n return { type: 'codebook', label: value.label, value: value.value }\n }\n if ('tag' == value.type) {\n return { type: 'tag', label: value.label, value: value.value, codebook: value.codebook }\n }\n return value\n }) || []\n )\n break\n }\n case 'create-option':\n default: {\n const newOption = sanitizeReactSelectOption(newValue[newValue.length - 1])\n newOption.type = 'plain'\n if (!inputValue.some(item => item.value == newOption.value && 'plain' == newOption.type)) {\n setInputValue([...newValue])\n }\n break\n }\n }\n tmpValue.current = ''\n }\n\n const onMenuOpen = () => {\n if (inputEl.current?.state.inputValue) {\n setIsShowSearchIconOverlay(true)\n }\n }\n\n const onMenuClose = () => {\n if (inputEl.current.state.inputValue) {\n tmpValue.current = inputEl.current.state.inputValue\n }\n\n setTimeout(() => setIsShowSearchIconOverlay(false), 100)\n }\n\n const onKeyDown = event => {\n if (event && 'Enter' == event.key && !inputEl.current?.state?.menuIsOpen) {\n dispatch({ type: 'SET_PARAM', request: { name: 'isPreserveState', value: true } })\n dispatch({\n type: 'SET_REQUEST_PARAM_SET',\n request: {\n query: inputValue.map(value =>\n 'tag' == value.type ? { ...value, value: value.value.replace(`${value.codebook}: `, '') } : value\n ),\n currentPage: 1\n }\n })\n }\n }\n\n const onInputChange = useCallback(\n (value = '') => {\n // tricky way to add \"search by response UID option\n const updatedOptions = options.filter(opt => !['uid'].includes(opt.type))\n if (value.trim() && !isNaN(value)) {\n const uidOption = {\n type: 'uid',\n label: value,\n value: parseInt(value, 10)\n }\n updatedOptions.unshift(uidOption)\n }\n setOptions(updatedOptions)\n },\n [options]\n )\n\n const onSearchIconClick = useCallback(() => {\n inputEl.current.blur()\n inputEl.current.state.menuIsOpen = false\n inputEl.current.state.isFocused = false\n\n dispatch({ type: 'SET_PARAM', request: { name: 'isPreserveState', value: true } })\n dispatch({\n type: 'SET_REQUEST_PARAM_SET',\n request: {\n query: inputValue.map(value =>\n 'tag' == value.type ? { ...value, value: value.value.replace(`${value.codebook}: `, '') } : value\n ),\n currentPage: 1\n }\n })\n }, [inputValue, dispatch])\n\n const onSearchOverlayClick = useCallback(() => {\n if (\n tmpValue.current &&\n (!inputValue || (inputValue && !inputValue.some(item => item.value == tmpValue.current && 'plain' == item.type)))\n ) {\n dispatch({\n type: 'SET_REQUEST_PARAM',\n request: {\n name: 'query',\n value: [\n ...inputValue.map(value =>\n 'tag' == value.type ? { ...value, value: value.value.replace(`${value.codebook}: `, '') } : value\n ),\n { type: 'plain', label: tmpValue.current, value: tmpValue.current }\n ]\n }\n })\n tmpValue.current = ''\n }\n setIsShowSearchIconOverlay(false)\n }, [inputValue, dispatch])\n\n const showClearIndicator = useCallback(\n props => {\n const inputValue = props?.getValue() || []\n const difference = query\n .filter(\n _query =>\n !inputValue.some(_inputValue =>\n 'tag' == _query.type && 'tag' == _inputValue.type\n ? `${_query.codebook}: ${_query.value}` == _inputValue.value\n : _query.type == _inputValue.type && _query.value == _inputValue.value\n )\n )\n .concat(\n inputValue.filter(\n _inputValue =>\n !query.some(_query =>\n 'tag' == _query.type && 'tag' == _inputValue.type\n ? `${_query.codebook}: ${_query.value}` == _inputValue.value\n : _query.type == _inputValue.type && _query.value == _inputValue.value\n )\n )\n )\n\n return !difference.length && !inputEl.current?.state.inputValue\n },\n [query]\n )\n\n const rsComponents = useMemo(() => {\n return {\n DropdownIndicator: null,\n MenuList: ({ children, ...props }) =>\n children.length ? <MenuList {...props}>{children}</MenuList> : <MenuList className=\"is-hidden\" {...props} />,\n MultiValue: ({ children, data, ...props }) => (\n <div\n title={decodeText(\n stripTags(['codebook', 'sentiment', 'tag'].includes(data.type) ? data.value : data.label),\n false\n )}\n >\n <MultiValue\n data={data}\n styles={{ backgroundColor: ('batch' != data.type && data.color && `${data.color}90`) || '#efefef' }}\n {...props}\n >\n {'codebook' == data.type && <i className=\"icon-aytmfd-folder-closed\" />}\n {'sentiment' == data.type && <i className={`icon-aytmfd-sentiment-${SENTIMENTS_ICON_HASH[data.value]}`} />}\n {'tag' == data.type && <i className=\"icon-aytmfd-tag\" />}\n {'uid' == data.type && <i className=\"icon-aytmfd-singleuser\" />}\n {'cluster' == data.type && <i className=\"icon-aytmfd-heatmap-cluster\" />}\n {'batch' == data.type && <i className=\"icon-aytmfd-map-view\" style={{ color: data.color }} />}\n {'batch' == data.type && data.label && ALLOWED_HTML_TAGS.test(data.label) ? (\n <span dangerouslySetInnerHTML={{ __html: stripTags(children, 'b', 'i', 'u') }} />\n ) : (\n <span dangerouslySetInnerHTML={{ __html: children }} />\n )}\n </MultiValue>\n </div>\n ),\n Option: ({ children, data, ...props }) => (\n <Option data={data} {...props}>\n <span\n className={classNames(style['comments-search-input-value'], {\n [style['comments-search-input-sub-value']]: Object.hasOwn(data, 'codebook'),\n [style['comments-search-input-uid']]: 'uid' == data.type\n })}\n >\n {'codebook' == data.type && <i className=\"icon-aytmfd-folder-closed\" style={{ color: data.color }} />}\n {'sentiment' == data.type && <i className={`icon-aytmfd-sentiment-${SENTIMENTS_ICON_HASH[data.value]}`} />}\n {'tag' == data.type && <i className=\"icon-aytmfd-tag\" style={{ color: data.color }} />}\n {'uid' == data.type && <i className=\"icon-aytmfd-singleuser\" />}\n {'cluster' == data.type && <i className=\"icon-aytmfd-heatmap-cluster\" />}\n {'batch' == data.type && <i className=\"icon-aytmfd-map-view\" style={{ color: data.color }} />}\n {'batch' == data.type && data.label && ALLOWED_HTML_TAGS.test(data.label) ? (\n <span dangerouslySetInnerHTML={{ __html: stripTags(children, 'b', 'i', 'u') }} />\n ) : (\n <span dangerouslySetInnerHTML={{ __html: children }} />\n )}\n </span>\n </Option>\n ),\n NoOptionsMessage: () => null,\n IndicatorsContainer: props => (\n <IndicatorsContainer {...props}>\n {!props?.isDisabled && (!props?.hasValue || !showClearIndicator(props)) ? (\n <i\n onClick={onSearchIconClick}\n className={`${style['comments-search-icon']} comments-search-input__indicator icon-aytmfd-search`}\n />\n ) : null}\n {props?.children}\n </IndicatorsContainer>\n ),\n ClearIndicator: props => (showClearIndicator(props) ? <ClearIndicator {...props} /> : null)\n }\n }, [showClearIndicator, onSearchIconClick])\n\n useEffect(\n () => onInputChange(),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n )\n\n useEffect(\n () =>\n setInputValue(\n query.map(value => ('tag' == value.type ? { ...value, value: `${value.codebook}: ${value.label}` } : value))\n ),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [query, isLoading, isProcessing]\n )\n\n useEffect(() => {\n setOptions(\n getSearchInputOptions(\n inputValue,\n survey,\n tagsList,\n questionsList,\n selectedQuestion,\n isTagsManagementDisabled,\n isSentimentsManagementDisabled\n )\n )\n }, [\n inputValue,\n survey,\n tagsList,\n questionsList,\n selectedQuestion,\n isTagsManagementDisabled,\n isSentimentsManagementDisabled\n ])\n\n return (\n <div className={style['comments-search-input-container']}>\n <CreatableSelect\n ref={inputEl}\n className=\"comments-search-input\"\n classNamePrefix=\"comments-search-input\"\n components={rsComponents}\n styles={rsStyles}\n placeholder={placeholder}\n options={options}\n value={convertInputValue(inputValue)}\n createOptionPosition=\"first\"\n noResultsText={null}\n openMenuOnClick={true}\n openMenuOnFocus={false}\n cacheOptions\n isMulti\n isClearable\n isSearchable\n isLoading={isLoading || isProcessing}\n isDisabled={disabled || isLoading || isProcessing}\n isOptionDisabled={option => option.disabled}\n isValidNewOption={isValidNewOption}\n onMenuOpen={onMenuOpen}\n onMenuClose={onMenuClose}\n onKeyDown={onKeyDown}\n onChange={onChange}\n onInputChange={onInputChange}\n filterOption={filterOption}\n formatCreateLabel={formatCreateLabel}\n />\n {isShowSearchIconOverlay && (\n <div className={style['comments-search-icon-overlay']} onClick={onSearchOverlayClick} />\n )}\n </div>\n )\n}\n\nSearchInput.propTypes = {\n placeholder: PropTypes.string,\n survey: PropTypes.object,\n tagsList: PropTypes.array,\n questionsList: PropTypes.array,\n disabled: PropTypes.bool\n}\n\nSearchInput.displayName = 'SearchInput'\n\nexport default SearchInput\n","/* eslint-disable react/display-name */\n\nimport React, { memo, useContext, useState, useRef, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { changeResponseTagState } from '@aytm/app/stats/page/comments/actions'\n\nimport { OEContext } from '@aytm/app/stats/page/comments'\n\nimport Popup from '@aytm/lib/rfd-ui/components/basic/popup'\nimport ClickOutside from '@aytm/lib/rfd-ui/components/basic/click-outside'\nimport SentimentIcon from '@aytm/app/stats/page/comments/comments/components/SentimentIcon'\n\nimport style from '@aytm/app/stats/page/comments/comments/styles/Sentiments.module.scss'\n\nconst sentimentValues = [\n {\n sentiment: 'None',\n style: {\n left: '-20px',\n top: '-60px'\n },\n value: 0\n },\n {\n sentiment: 'Positive',\n style: {\n left: '-30px',\n top: '-38px'\n },\n value: 3\n },\n {\n sentiment: 'Mixed',\n style: {\n left: '-35px',\n top: '-15px'\n },\n value: 4\n },\n {\n sentiment: 'Negative',\n style: {\n left: '-30px',\n top: '8px'\n },\n value: 1\n },\n {\n sentiment: 'Neutral',\n style: {\n left: '-20px',\n top: '30px'\n },\n value: 2\n }\n]\n\nconst Sentiment = memo(({ sentiment = 'None', keyBase, responseId, path, onUpdateSchema, className }) => {\n const { commentStatusesState, dispatch, dispatchCommentStatuses } = useContext(OEContext)\n\n const sentimentStatus = commentStatusesState.sentiment[responseId] || {}\n\n const [isActive, setIsActive] = useState(false)\n const [inProgress, setInProgress] = useState(false)\n\n const [activeLabel, setActiveLabel] = useState(null)\n\n const sentimentPopupRef = useRef(null)\n const intersectionObserverRef = useRef(null)\n\n const onChangeSentiment = async value => {\n if (null === value) return\n\n setInProgress(true)\n await changeResponseTagState({\n tag: {\n tag: value.sentiment,\n type: 'sentiment',\n value: value.value,\n sentiment: value.sentiment.toUpperCase(),\n currentValue: sentiment\n },\n type: 'SENTIMENT_CHANGED',\n responseId,\n path,\n action: 'create',\n onUpdateSchema,\n dispatch,\n dispatchCommentStatuses\n })\n setInProgress(false)\n setIsActive(false)\n }\n\n const onClickOutside = () => {\n setIsActive(false)\n }\n\n useEffect(() => {\n if (isActive) {\n intersectionObserverRef.current ||= new window.IntersectionObserver(\n entries =>\n entries.forEach(entry => {\n if (entry.target != sentimentPopupRef.current) return\n !entry.isIntersecting && setIsActive(false)\n }),\n {\n rootMargin: '-200px 0px 0px 0px'\n }\n )\n intersectionObserverRef.current.observe(sentimentPopupRef.current)\n } else if (null !== intersectionObserverRef.current) intersectionObserverRef.current.disconnect()\n\n return () => {\n if (null !== intersectionObserverRef.current) intersectionObserverRef.current.disconnect()\n }\n }, [isActive])\n\n return (\n <ClickOutside onClickOutside={() => onClickOutside()}>\n <div\n className={classNames(className, style[`sentiment-container`], {\n [style['is-active']]: isActive\n })}\n onClick={() => setIsActive(true)}\n >\n {sentimentStatus[path] ? (\n <Popup\n portal={true}\n className=\"rfd-ui-popup-notification rfd-ui-popup-notification-error\"\n width=\"215px\"\n direction=\"topleft\"\n popupOffset={12}\n show={'error' == sentimentStatus[path].type}\n hideOtherPopupsOnShow={true}\n content={() => (\n <div className={style['response-header-notification-text']}>{sentimentStatus[path].message}</div>\n )}\n />\n ) : null}\n\n {isActive && !inProgress ? (\n <div className={style['sentiment-container-label']}>{activeLabel || sentiment}</div>\n ) : null}\n\n {inProgress ? (\n <i\n className={classNames('aytmfd-spin icon-aytmfd-spin', {\n [style['sentiment-container-item-loading']]: isActive\n })}\n />\n ) : (\n <SentimentIcon\n className={style[`sentiment-container-item`]}\n iconClassName={style[`sentiment-container-item-icon`]}\n sentiment={sentiment}\n />\n )}\n\n <div ref={sentimentPopupRef} className={style['sentiment-select']}>\n {sentimentValues.map(sentimentValue => (\n <SentimentIcon\n key={`${keyBase}-${sentimentValue.sentiment}`}\n className={classNames(style[`sentiment-select-item`], {\n [style['is-active']]: isActive\n })}\n iconClassName={style[`sentiment-select-item-icon`]}\n sentiment={sentimentValue.sentiment}\n style={isActive ? sentimentValue.style : {}}\n onMouseOver={() => setActiveLabel(sentimentValue.sentiment)}\n onMouseOut={() => {\n setActiveLabel(null)\n }}\n onClick={isActive ? () => onChangeSentiment(sentimentValue) : undefined}\n />\n ))}\n </div>\n </div>\n </ClickOutside>\n )\n})\n\nSentiment.propTypes = {\n sentiment: PropTypes.string,\n keyBase: PropTypes.string,\n className: PropTypes.string,\n responseId: PropTypes.number,\n path: PropTypes.string,\n onUpdateSchema: PropTypes.func\n}\n\nexport default Sentiment\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styles from '@aytm/app/stats/page/comments/comments/styles/Sentiments.module.scss'\nimport classNames from 'classnames'\nimport { SENTIMENTS_ICON_HASH } from '@aytm/app/stats/page/comments/lib/constants'\n\nconst SentimentIcon = ({\n sentiment = 'None',\n className = null,\n iconClassName = null,\n style = {},\n iconStyle = {},\n ...props\n}) => (\n <div\n className={classNames({\n [styles[`background-sentiment-${sentiment}`]]: true,\n [className]: Boolean(className)\n })}\n style={style}\n {...props}\n >\n <i\n className={classNames({\n [`icon-aytmfd-sentiment-${SENTIMENTS_ICON_HASH[sentiment]}`]: true,\n [styles[`color-sentiment-${sentiment}`]]: true,\n [iconClassName]: Boolean(className)\n })}\n style={iconStyle}\n />\n </div>\n)\n\nSentimentIcon.propTypes = {\n sentiment: PropTypes.string,\n style: PropTypes.object,\n iconStyle: PropTypes.object,\n className: PropTypes.string,\n iconClassName: PropTypes.string\n}\n\nexport default SentimentIcon\n","import React, { memo, useContext, useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n DEFAULT_SELECTED_QUESTION,\n CORRECTIONS,\n ORIGINALS,\n CORRECTED_SPELLING\n} from '@aytm/app/stats/page/comments/lib/constants'\nimport Dropdown from '@aytm/lib/rfd-ui/components/basic/dropdown'\nimport ClickOutside from '@aytm/lib/rfd-ui/components/basic/click-outside'\nimport RadioButton from '@aytm/lib/rfd-ui/components/basic/radio-button'\nimport CheckBox from '@aytm/lib/rfd-ui/components/basic/check-box'\nimport classNames from 'classnames'\nimport { OEContext } from '@aytm/app/stats/page/comments'\n\nconst SurveyDropdown = memo(\n ({\n width,\n align,\n opened,\n questionsList,\n responseOrderRef,\n isAdvancedFiltersDisabled,\n hasQuestionOrder,\n onNewFilter,\n onToggleQAMode,\n onClickOutside\n }) => {\n const { searchState, dispatch } = useContext(OEContext)\n\n const {\n request: { selectedQuestion, query },\n correctionsLevel,\n totalComments,\n totalImageResponses,\n totalVideoResponses,\n isHighlightSearchTerms,\n isResponseOrder,\n isSentimentsManagementDisabled,\n isShowCorrectionsDisabled,\n isShowSentiments,\n isQAModeDisabled,\n isVideoResponsesMode\n } = searchState\n\n const question = useMemo(\n () => questionsList.find(q => q.value == selectedQuestion) || null,\n [questionsList, selectedQuestion]\n )\n\n const isCreateFilterDisabled = useMemo(\n () => query.some(q => ['batch' /*, 'cluster'*/].includes(q.type)) || false,\n [query]\n )\n\n const onToggleShowSentiment = () => {\n dispatch({\n type: 'SET_PARAM',\n request: { name: 'isShowSentiments', value: !isShowSentiments }\n })\n }\n\n const onToggleCorrectionLevel = level => {\n dispatch({ type: 'SET_PARAM', request: { name: 'correctionsLevel', value: level } })\n }\n\n const onToggleResponseOrder = isResponseOrder => {\n dispatch({ type: 'SET_PARAM', request: { name: 'isResponseOrder', value: isResponseOrder } })\n Object.keys(responseOrderRef.current).forEach(key => {\n responseOrderRef.current[key](isResponseOrder)\n })\n }\n\n const onToggleHighlightSearchTerms = () => {\n dispatch({ type: 'SET_PARAM', request: { name: 'isHighlightSearchTerms', value: !isHighlightSearchTerms } })\n }\n\n return (\n <Dropdown width={width} align={align} opened={opened}>\n {() => (\n <ClickOutside onClickOutside={event => setTimeout(() => onClickOutside(event))}>\n <div className=\"comments-toolbar-dropdown\">\n <ul className=\"comments-toolbar-dropdown-inner\">\n {!isShowCorrectionsDisabled && (\n <>\n <li onClick={onToggleCorrectionLevel.bind(this, ORIGINALS)}>\n <RadioButton checked={correctionsLevel == ORIGINALS} label=\"Originals\" />\n </li>\n <li onClick={onToggleCorrectionLevel.bind(this, CORRECTIONS)}>\n <RadioButton checked={correctionsLevel == CORRECTIONS} label=\"Show corrections\" />\n </li>\n <li onClick={onToggleCorrectionLevel.bind(this, CORRECTED_SPELLING)}>\n <RadioButton checked={correctionsLevel == CORRECTED_SPELLING} label=\"Corrected spelling\" />\n </li>\n <hr />\n </>\n )}\n {selectedQuestion == DEFAULT_SELECTED_QUESTION && (\n <>\n <li\n className={classNames({\n disabled: !hasQuestionOrder\n })}\n onClick={hasQuestionOrder ? onToggleResponseOrder.bind(this, false) : null}\n >\n <RadioButton disabled={!hasQuestionOrder} checked={!isResponseOrder} label=\"Qs in survey order\" />\n </li>\n <li\n className={classNames({\n disabled: !hasQuestionOrder\n })}\n onClick={hasQuestionOrder ? onToggleResponseOrder.bind(this, true) : null}\n >\n <RadioButton\n disabled={!hasQuestionOrder}\n checked={isResponseOrder}\n label=\"Qs in response order\"\n />\n </li>\n <hr />\n </>\n )}\n <li onClick={onToggleHighlightSearchTerms}>\n <CheckBox checked={isHighlightSearchTerms} label=\"Highlight search terms\" />\n </li>\n {!isSentimentsManagementDisabled && (\n <li onClick={onToggleShowSentiment}>\n <CheckBox checked={isShowSentiments} label=\"Show sentiment\" />\n </li>\n )}\n {!isAdvancedFiltersDisabled && (null === question || !['ir', 'vr', 'va'].includes(question.type)) && (\n <>\n <hr />\n <li onClick={!isCreateFilterDisabled ? onNewFilter : undefined}>\n <span\n className={classNames('with-icon', 'rfd-ui-checkbox', {\n 'rfd-ui-checkbox-disabled': !onNewFilter || isCreateFilterDisabled\n })}\n >\n <i className=\"icon-aytmfd-filters\" />\n <span className=\"rfd-ui-checkbox-label with-icon\">Create filter</span>\n </span>\n </li>\n </>\n )}\n {!isQAModeDisabled && !isVideoResponsesMode && (\n <>\n <hr />\n <li onClick={onToggleQAMode}>\n <span\n className={classNames('with-icon', 'rfd-ui-checkbox', {\n 'rfd-ui-checkbox-disabled': !onToggleQAMode\n })}\n >\n <i className=\"icon-aytmfd-qa-mode\" style={{ top: '-1px' }} />\n <span className=\"rfd-ui-checkbox-label\">Enter QA mode</span>\n </span>\n </li>\n </>\n )}\n <li className=\"counters\">\n <div>\n {totalComments ? (\n <>\n <i className=\"icon-aytmfd-optional-oe\" />\n {totalComments}\n </>\n ) : null}\n </div>\n <div>\n {totalImageResponses ? (\n <>\n <i className=\"icon-aytmfd-qphoto\" />\n {totalImageResponses}\n </>\n ) : null}\n </div>\n <div>\n {totalVideoResponses ? (\n <>\n <i className=\"icon-aytmfd-qvideoresponse\" />\n {totalVideoResponses}\n </>\n ) : null}\n </div>\n </li>\n </ul>\n </div>\n </ClickOutside>\n )}\n </Dropdown>\n )\n }\n)\n\nSurveyDropdown.propTypes = {\n width: PropTypes.number,\n align: PropTypes.string,\n responseOrderRef: PropTypes.object,\n questionsList: PropTypes.array,\n opened: PropTypes.bool,\n hasQuestionOrder: PropTypes.bool,\n isAdvancedFiltersDisabled: PropTypes.bool,\n onNewFilter: PropTypes.func,\n onToggleQAMode: PropTypes.func,\n onClickOutside: PropTypes.func\n}\n\nSurveyDropdown.displayName = 'SurveyDropdown'\n\nexport default SurveyDropdown\n","import React, { useContext, useState, useRef, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\nimport style from '@aytm/app/stats/page/comments/styles/index.module.scss'\nimport classNames from 'classnames'\nimport { CSS_SUPPORTS_STICKY } from '@aytm/lib/common/func'\n\nimport ADND from '@aytm/lib/adnd/ADND'\n\nimport { OEContext } from '@aytm/app/stats/page/comments'\n\n//components\nimport Popup from '@aytm/lib/rfd-ui/components/basic/popup'\nimport Select from '@aytm/lib/rfd-ui/components/basic/select'\nimport SurveyDropdown from '@aytm/app/stats/page/comments/comments/components/SurveyDropdown'\nimport InlineSelect from '@aytm/lib/rfd-ui/components/basic/inline-select'\nimport Pagination from '@aytm/lib/rfd-ui/components/advanced/pagination'\nimport {\n getCommentsCount,\n hasDisabledSentimentInScope,\n hasVirtualOrXpert,\n questionOldIdToId,\n removeLogicFromText,\n searchToFilterLogic\n} from '@aytm/app/stats/page/comments/lib/utils'\nimport {\n DEFAULT_SELECTED_QUESTION,\n QA_PER_PAGE_OPTIONS,\n ORDER_BY_OPTIONS,\n PER_PAGE_OPTIONS,\n SENTIMENTS_ICON_HASH\n} from '@aytm/app/stats/page/comments/lib/constants'\nimport { changeTagState } from '@aytm/app/stats/page/comments/actions'\nimport useEventListener from '@aytm/app/stats/page/comments/lib/hooks/useEventListener'\nimport downloadAndPackImages from '@aytm/app/stats/page/comments/lib/download/invoke'\n\nimport Button from '@aytm/lib/rfd-ui/components/basic/button'\nimport SearchInput from '@aytm/app/stats/page/comments/comments/components/SearchInput'\n\nconst getPerPageOptions = (isQAMode = false, loadRejectedCS = 'completes') =>\n isQAMode\n ? ['rejected', 'completes_rejected'].includes(loadRejectedCS)\n ? QA_PER_PAGE_OPTIONS.slice(1)\n : QA_PER_PAGE_OPTIONS\n : PER_PAGE_OPTIONS\n\nconst onDNDDropCodebook = dropData => {\n const codebook = dropData.data\n\n dispatchEvent(new CustomEvent('tagsSidebarSkipper', { detail: { codebook } }))\n}\n\nconst SurveyHeaderComments = ({\n survey,\n readOnly,\n questionsOptionsList,\n isAdvancedFiltersDisabled,\n isSpecialsSortingDisabled,\n showTraitsRef,\n loadRejectedCS,\n responseOrderRef,\n currentResponseRef,\n onCreateFilter,\n onSelectedQuestionChange,\n onUpdateSchema,\n onPageChange,\n fetchData\n}) => {\n const { searchState, dispatch } = useContext(OEContext)\n const {\n request,\n pageData,\n isShowAllTraits,\n isTagsManagementDisabled,\n isQAMode,\n isQALoading,\n isLoading,\n isProcessing,\n isShowAllTools,\n qaCounter,\n qaTotal,\n totalPages,\n totalResponses,\n totalComments,\n totalImageResponses,\n totalVideoResponses,\n tagsList,\n isShowSentiments,\n isSurveyGuest,\n isVideoResponsesMode,\n sentimentOptions\n } = searchState\n const { selectedQuestion, query, orderBy, orderDirection, pageSize, currentPage } = request\n\n const questionsList = questionsOptionsList.toJS()\n\n const [isVirtualOrXpertInScope, isOnlyVirtualOrXpert] = hasVirtualOrXpert(questionsList, selectedQuestion)\n const [isDisabledSentimentInScope, isOnlyDisabledSentiment] = hasDisabledSentimentInScope(\n questionsList,\n sentimentOptions,\n selectedQuestion\n )\n\n const [error, setError] = useState(null)\n const [loading, setLoading] = useState(false)\n\n const [isShowToolsDropdown, setIsShowToolsDropdown] = useState(false)\n\n const [dndDroppedTag, setDndDroppedTag] = useState(null)\n\n const [isShowDNDDropzone, setIsShowDNDDropzone] = useState(false)\n\n const [downloadProgress, setDownloadProgress] = useState(0)\n const [downloadInProgress, setDownloadInProgress] = useState(false)\n\n const commentsOnPageCount =\n dndDroppedTag && !isOnlyVirtualOrXpert ? getCommentsCount(pageData, dndDroppedTag, sentimentOptions) : 0\n const totalCommentsSum =\n dndDroppedTag && 'sentiment' != dndDroppedTag.type\n ? totalComments + totalImageResponses + totalVideoResponses\n : totalComments + totalVideoResponses\n const totalCommentsCount =\n !isOnlyVirtualOrXpert && !(dndDroppedTag && 'sentiment' == dndDroppedTag.type && isOnlyDisabledSentiment)\n ? dndDroppedTag && Object.hasOwn(dndDroppedTag, 'count')\n ? totalCommentsSum >= dndDroppedTag.count\n ? totalCommentsSum - dndDroppedTag.count\n : 0\n : totalCommentsSum\n : 0\n\n const dndTargetCodebookRef = useRef(null)\n const dndTargetTagRef = useRef(null)\n\n const question = useMemo(\n () => questionsList.find(q => q.value == selectedQuestion) || null,\n [questionsList, selectedQuestion]\n )\n\n const isOnePerPage = useMemo(() => 1 == pageSize, [pageSize])\n\n const onTagCancel = () => {\n setDndDroppedTag(null)\n }\n\n const onTagApply = useCallback(\n (isForCurrentPage = false) => {\n const { tag, type, value, label, codebook } = dndDroppedTag\n\n setLoading(true)\n\n dispatchEvent(new CustomEvent('tagsSidebarLoading', { detail: { tag, isLoading: true } }))\n\n const data = {\n tag: {\n tag: 'sentiment' == type ? value : tag,\n type: type || 'manual',\n label: label,\n codebook: codebook || null\n },\n action: 'create',\n request,\n onFetch: onUpdateSchema,\n onError: error => {\n setError(error && error.message ? error.message : 'Something is wrong')\n setTimeout(\n () => {\n setError(null)\n setDndDroppedTag(null)\n },\n error ? 3000 : 0\n )\n },\n setIsLoading: flag => {\n if (flag) return\n\n setDndDroppedTag(null)\n\n setLoading(false)\n setIsShowDNDDropzone(false)\n\n dispatchEvent(new CustomEvent('tagsSidebarLoading', { detail: { isLoading: false } }))\n }\n }\n if (isForCurrentPage) {\n data.responseId = pageData.map(item => item.response.uid)\n }\n\n changeTagState(data)\n },\n [request, pageData, dndDroppedTag, onUpdateSchema]\n )\n\n const onDNDDropTag = dropData => {\n setDndDroppedTag(dropData.data)\n }\n\n const dndTargetCodebook = ADND.targets.data({ acceptTypes: ['sidebar-codebook'] }).onDrop(onDNDDropCodebook)\n\n const dndTargetTag = ADND.targets.data({ acceptTypes: ['sidebar-tag', 'sidebar-tag-sentiment'] }).onDrop(onDNDDropTag)\n\n const questionsOptionsListSelect = useMemo(\n () =>\n questionsOptionsList\n .filter(item => !item.get('isOptionHidden'))\n .map(item => item.set('text', removeLogicFromText(item.get('text').replace(/<br>/g, ' ')))),\n [questionsOptionsList]\n )\n\n const hasQuestionOrder = useMemo(() => survey && survey.options && survey.options.sessionOrder, [survey])\n const hasTraits = useMemo(() => Boolean(survey.traits != undefined && 1 < survey.traits.length), [survey.traits])\n const isEmptyScope = useMemo(\n () => !query.length && selectedQuestion == DEFAULT_SELECTED_QUESTION,\n [query, selectedQuestion]\n )\n\n const orderByOptions = useMemo(\n () =>\n ORDER_BY_OPTIONS.filter(item => {\n let visible = isSpecialsSortingDisabled ? item.get('isSimple') : true\n\n if ('sentiment' == item.get('value') && !isShowSentiments) visible = false\n\n if (\n 'similarity' == item.get('value') &&\n !questionsOptionsList.some(_item => _item.get('type') == item.get('forType'))\n )\n visible = false\n if ('similarity' == item.get('value') && 'on' != window.features.oe_sort_similarity?.status) visible = false\n\n if (\n question &&\n item.get('notForType') &&\n item.get('notForType').includes(question.type) &&\n ['sentiment', 'length'].includes(item.get('value'))\n )\n visible = false\n\n return visible\n }).map(item => {\n let newItem = item\n\n if (newItem.get('forType') && (!question || (question && question.type != newItem.get('forType')))) {\n newItem = newItem.set('disabled', true)\n }\n\n if (newItem.get('notForType') && question && newItem.get('notForType').includes(question.type)) {\n newItem = newItem.set('disabled', true)\n }\n\n if (orderBy == newItem.get('value')) {\n newItem = newItem.set('text', `${newItem.get('text')} ${'asc' == orderDirection ? '↑' : '↓'}`)\n }\n\n return newItem\n }),\n [question, questionsOptionsList, orderBy, orderDirection, isShowSentiments, isSpecialsSortingDisabled]\n )\n\n const onSelectQuestion = option => {\n const selected = option.get('value')\n dispatch({ type: 'SET_PARAM', request: { name: 'isPreserveState', value: true } })\n dispatch({\n type: 'SET_REQUEST_PARAM_SET',\n request: {\n selectedQuestion: selected,\n currentPage: 1\n }\n })\n if (onSelectedQuestionChange && 'function' == typeof onSelectedQuestionChange) {\n onSelectedQuestionChange(selected)\n }\n }\n\n const onEveryFileCallback = (percent = 0) => {\n setDownloadProgress(Math.ceil(percent))\n }\n\n const onFinishCallback = () => {\n setDownloadInProgress(false)\n setDownloadProgress(0)\n }\n\n const onToggleToolsDropdown = useCallback(\n (_, val) => {\n setIsShowToolsDropdown(val != undefined ? val : !isShowToolsDropdown)\n },\n [isShowToolsDropdown]\n )\n\n const onToggleAllTools = useCallback(\n (_, val = null) => {\n const value = null !== val ? val : !isShowAllTools\n dispatch({ type: 'SET_PARAM', request: { name: 'isShowAllTools', value } })\n },\n [dispatch, isShowAllTools]\n )\n\n const onToggleAllTraits = useCallback(() => {\n dispatch({ type: 'SET_PARAM', request: { name: 'isShowAllTraits', value: !isShowAllTraits } })\n Object.keys(showTraitsRef.current).forEach(key => {\n showTraitsRef.current[key](!isShowAllTraits)\n })\n }, [dispatch, showTraitsRef, isShowAllTraits])\n\n const onToggleQAMode = useCallback(() => {\n dispatch({ type: 'SET_QA_MODE', request: { value: !isQAMode } })\n setIsShowToolsDropdown(false)\n }, [dispatch, isQAMode])\n\n const onNewFilter = useCallback(() => {\n onToggleToolsDropdown(null, false)\n if (!query.length && selectedQuestion == DEFAULT_SELECTED_QUESTION) return\n onCreateFilter(searchToFilterLogic(query, selectedQuestion, questionsList, survey))\n }, [survey, query, selectedQuestion, questionsList, onCreateFilter, onToggleToolsDropdown])\n\n const onLoadPerPage = useCallback(\n option => {\n const newPageSize = option._root.entries[0][1]\n if (pageSize != newPageSize) {\n const newCurrentPage = Math.ceil(\n currentResponseRef?.current\n ? (pageSize * (currentPage - 1) + currentResponseRef.current?.index + 1) / newPageSize\n : 1\n )\n dispatch({\n type: 'SET_PARAMS',\n request: { value: { isProcessing: Math.ceil(totalResponses / newPageSize), isPreserveState: true } }\n })\n dispatch({\n type: 'SET_REQUEST_PARAM_SET',\n request: {\n pageSize: newPageSize,\n currentPage: newCurrentPage\n }\n })\n }\n },\n [dispatch, pageSize, currentPage, totalResponses, currentResponseRef]\n )\n\n const onSelectOrderBy = useCallback(\n option => {\n dispatch({ type: 'SET_PARAM', request: { name: 'isPreserveState', value: true } })\n const req = {\n currentPage: 1\n }\n if (option._root.entries[0][1] == orderBy) {\n req.orderDirection = 'asc' == orderDirection ? 'desc' : 'asc'\n } else {\n req.orderBy = option._root.entries[0][1]\n req.orderDirection = option._root.entries[3][1]\n }\n dispatch({\n type: 'SET_REQUEST_PARAM_SET',\n request: req\n })\n },\n [dispatch, orderBy, orderDirection]\n )\n\n const onDownloadAllClick = useCallback(() => {\n setDownloadInProgress(true)\n const filename = `AYTM-Survey-${window.surveyId}-Video-Response.zip`\n fetchData({\n customParams: {\n pageSize: totalVideoResponses,\n currentPage: 1\n },\n customFetchDataCallback: ({ cs }) => {\n const files = cs.reduce((acc, response) => {\n Object.keys(response.answer).forEach(k => {\n if (response.answer[k].v && response.answer[k].v.mp4File) {\n acc.push({\n filename: `AYTM-Survey-${window.surveyId}-Video-Response-${response.response.uid}_${questionOldIdToId(\n k\n )}.mp4`,\n url: response.answer[k].v.mp4File\n })\n }\n })\n return acc\n }, [])\n downloadAndPackImages(filename, files, onEveryFileCallback, onFinishCallback)\n }\n })\n }, [totalVideoResponses, fetchData])\n\n useEffect(() => {\n if (\n isLoading ||\n isProcessing ||\n (dndDroppedTag && 'manual' == dndDroppedTag.type && !tagsList.some(tag => tag.tag == dndDroppedTag.tag))\n ) {\n setDndDroppedTag(null)\n }\n }, [tagsList, dndDroppedTag, isLoading, isProcessing])\n\n useEffect(() => {\n if ('codebook' == isShowDNDDropzone && dndTargetCodebook && !isQAMode) {\n dndTargetCodebook.connect(dndTargetCodebookRef.current)\n }\n if ('codebook-guided' == isShowDNDDropzone && dndTargetCodebook && !isQAMode) {\n dndTargetCodebook.connect(dndTargetCodebookRef.current)\n }\n\n return () => {\n if (dndTargetCodebook) dndTargetCodebook.disconnect()\n }\n }, [dndTargetCodebook, isShowDNDDropzone, isQAMode])\n\n useEffect(() => {\n if ('tag' == isShowDNDDropzone && dndTargetTag && !isQAMode) {\n dndTargetTag.connect(dndTargetTagRef.current)\n }\n\n return () => {\n if (dndTargetTag) dndTargetTag.disconnect()\n }\n }, [dndTargetTag, isShowDNDDropzone, isQAMode])\n\n useEventListener('codingPanelOpened', () => {\n onToggleAllTools(null, true)\n })\n\n useEventListener('assignMultiple', event => {\n setDndDroppedTag(event.detail || null)\n })\n\n useEventListener('assignMultipleCancel', () => {\n setDndDroppedTag(null)\n })\n\n useEventListener('dndStartCodebook', event => {\n if (!isTagsManagementDisabled && !isQAMode) {\n setIsShowDNDDropzone(event.detail.guided ? 'codebook-guided' : 'codebook')\n }\n })\n\n useEventListener('dndEndCodebook', () => {\n setIsShowDNDDropzone(false)\n })\n\n useEventListener('dndStartTag', () => {\n if (!isTagsManagementDisabled && !isQAMode) {\n setIsShowDNDDropzone('tag')\n }\n })\n\n useEventListener('dndEndTag', () => {\n setIsShowDNDDropzone(false)\n })\n\n const renderHelpContent = useCallback(\n () => (\n <div>\n {orderByOptions.map(opt => (\n <p key={`descriptionpopup-${opt.get('value')}`} style={{ marginBottom: 10 }}>\n <b style={{ textTransform: 'capitalize' }}>\n {'id' == opt.get('value') ? opt.get('value').toUpperCase() : opt.get('value')}\n </b>{' '}\n - {opt.get('description')}\n </p>\n ))}\n </div>\n ),\n [orderByOptions]\n )\n\n return (\n <>\n <div\n className={classNames(`${style['comments-header']} stats-comments-header`, {\n 'stats-comments-header-static': !CSS_SUPPORTS_STICKY\n })}\n key=\"input\"\n >\n {'codebook' == isShowDNDDropzone && !isQAMode && (\n <div className={style['comments-header-dnd-dropzone']} ref={dndTargetCodebookRef}>\n <div className={style['comments-header-dnd-dropzone-inner']}>\n Drag the codebook here\n <br />\n to Skipper - apply ...\n </div>\n </div>\n )}\n {'codebook-guided' == isShowDNDDropzone && !isQAMode && (\n <div className={style['comments-header-dnd-dropzone']} ref={dndTargetCodebookRef}>\n <div className={style['comments-header-dnd-dropzone-inner']}>\n Drag the codebook here\n <br />\n to Skipper - finalize and apply ...\n </div>\n </div>\n )}\n {'tag' == isShowDNDDropzone && !isQAMode && (\n <div className={style['comments-header-dnd-dropzone']} ref={dndTargetTagRef}>\n <div className={style['comments-header-dnd-dropzone-inner']}>\n Drag the tag here\n <br />\n to apply to multiple comments ...\n </div>\n </div>\n )}\n {dndDroppedTag && !isQAMode && (\n <div className={style['comments-header-dnd-confirm']}>\n <div className={style['comments-header-dnd-confirm-title']}>\n {!error ? (\n <>\n <i\n className={\n 'sentiment' == dndDroppedTag.type\n ? `icon-aytmfd-sentiment-${SENTIMENTS_ICON_HASH[dndDroppedTag.tag]}`\n : 'icon-aytmfd-tag'\n }\n />\n <span\n dangerouslySetInnerHTML={{\n __html: loading ? `Assigning ${dndDroppedTag.tag}...` : dndDroppedTag.tag\n }}\n />\n </>\n ) : (\n 'Error'\n )}\n </div>\n {!loading && !error ? (\n <div className={style['comments-header-dnd-confirm-options']}>\n <div className={style['comments-header-dnd-confirm-options-item']}>\n All comments\n <br /> on this page:\n <Button\n label={`Apply to ${commentsOnPageCount}`}\n disabled={loading || !commentsOnPageCount}\n onClick={() => (!loading && commentsOnPageCount ? onTagApply(true) : {})}\n />\n </div>\n <div className={style['comments-header-dnd-confirm-options-item']}>\n All comments\n <br /> found:\n <Button\n label={`Apply to ${\n (isVirtualOrXpertInScope && !isOnlyVirtualOrXpert) ||\n (isDisabledSentimentInScope && 'sentiment' == dndDroppedTag.type && !isOnlyDisabledSentiment)\n ? 'all'\n : totalCommentsCount\n }`}\n disabled={loading || !totalCommentsCount}\n onClick={() => (!loading && totalCommentsCount ? onTagApply(false) : {})}\n />\n </div>\n <div className={style['comments-header-dnd-confirm-options-item']}>\n <Button disabled={loading} label=\"Cancel\" onClick={() => (!loading ? onTagCancel() : {})} />\n </div>\n </div>\n ) : (\n <div className={style['comments-header-dnd-confirm-status']}>\n {loading ? (\n <i className=\"icon-aytmfd-spin aytmfd-spin\" />\n ) : (\n <div className={style['comments-header-dnd-confirm-status-error']}>{error}</div>\n )}\n </div>\n )}\n </div>\n )}\n <div className={style['comments-header-toolbar']}>\n <div className={style['comments-header-toolbar-questions']}>\n <Select\n placeholder=\"Select Question\"\n options={questionsOptionsListSelect}\n value={selectedQuestion || DEFAULT_SELECTED_QUESTION}\n width={'100%'}\n showSelected={true}\n disabled={readOnly || isQAMode || isVideoResponsesMode}\n onSelect={onSelectQuestion}\n />\n </div>\n <div className={style['comments-header-toolbar-actions']}>\n <div className={style['comments-header-toolbar-actions-sort']}>\n {!isVideoResponsesMode && (!isQAMode || (isQAMode && !isOnePerPage)) ? (\n <>\n <Select\n placeholder=\"Sort\"\n options={orderByOptions}\n width={150}\n value={orderBy}\n allowReselection\n showSelected={true}\n disabled={readOnly}\n onSelect={onSelectOrderBy}\n />\n <Popup\n className=\"rfd-ui-popup-notification\"\n trigger=\"click\"\n width=\"300px\"\n direction=\"bottomright\"\n popupOffset={14}\n content={renderHelpContent}\n >\n <i className=\"icon-aytmfd-help\" />\n </Popup>\n </>\n ) : null}\n </div>\n {!isQAMode && (\n <>\n {(!isTagsManagementDisabled ||\n (isSurveyGuest &&\n window.features.oe_tags_management &&\n 'live' == window.features.oe_tags_management?.status)) && (\n <div\n className={classNames(style['comments-header-toolbar-actions-item'], {\n [style['comments-header-toolbar-actions-item-active']]: isShowAllTools,\n 'disabled-action': isQAMode\n })}\n onClick={onToggleAllTools}\n title={`${!isShowAllTools ? 'Show' : 'Hide'} all tools`}\n >\n <i className=\"icon-aytmfd-tag\" />\n </div>\n )}\n <div\n className={classNames(style['comments-header-toolbar-actions-item'], {\n [style['comments-header-toolbar-actions-item-active']]: isShowAllTraits,\n 'disabled-action': !hasTraits || isQAMode\n })}\n onClick={hasTraits ? onToggleAllTraits : null}\n title={`${!isShowAllTraits ? 'Show' : 'Hide'} all traits`}\n >\n <i className=\"icon-aytmfd-singleuser\" />\n </div>\n <div\n className={classNames(style['comments-header-toolbar-actions-item'], {\n 'disabled-action': isQAMode\n })}\n >\n <i\n className=\"icon-aytmfd-hotdog\"\n title={`${isShowToolsDropdown ? 'Hide' : 'Show'} all tools`}\n onClick={isShowToolsDropdown ? null : onToggleToolsDropdown}\n />\n <SurveyDropdown\n width={200}\n align={'right'}\n opened={isShowToolsDropdown}\n questionsList={questionsList}\n responseOrderRef={responseOrderRef}\n hasQuestionOrder={hasQuestionOrder}\n isAdvancedFiltersDisabled={isAdvancedFiltersDisabled}\n onNewFilter={!isEmptyScope ? onNewFilter : null}\n onToggleQAMode={onToggleQAMode}\n onClickOutside={onToggleToolsDropdown}\n />\n </div>\n </>\n )}\n </div>\n </div>\n <div className={style['comments-header-search']}>\n <div className={style['comments-header-search-input-block']}>\n <SearchInput\n placeholder=\"Search\"\n survey={survey}\n tagsList={tagsList}\n questionsList={questionsList}\n disabled={isQAMode}\n />\n </div>\n <div className={style['comments-header-toolbar-actions']}>\n {!isQAMode && isVideoResponsesMode ? (\n <a\n className={classNames(`rfd-ui-button ${style['download-button']}`, {\n [style['disabled']]: !totalVideoResponses || downloadInProgress || isLoading || isProcessing,\n [style['in-progress']]: downloadInProgress\n })}\n download\n onClick={onDownloadAllClick}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {downloadInProgress ? `Downloading ${downloadProgress}%` : 'DOWNLOAD'}\n </a>\n ) : null}\n {!isQAMode ? (\n <>\n <div className={style['comments-header-search-per-page']}>\n {totalResponses <= 10 ? (\n <>{totalResponses} found</>\n ) : (\n <InlineSelect\n fetchOptions={getPerPageOptions}\n width={100}\n value={pageSize}\n disabled={readOnly}\n onSelect={onLoadPerPage}\n >\n {totalResponses < pageSize ? (\n <>{totalResponses} found</>\n ) : (\n <>\n {pageSize}/{totalResponses}\n </>\n )}\n </InlineSelect>\n )}\n </div>\n <div className={style['comments-header-search-pagination']}>\n <Pagination\n page={currentPage}\n total={totalPages}\n prefix={totalPages < 100 ? 'Page ' : ''}\n separator={'/'}\n disabled={false}\n onPageChange={onPageChange}\n />\n </div>\n </>\n ) : (\n <div className={style['comments-header-search-qa']}>\n <div className={style['comments-header-search-qa-title']}>QA MODE</div>\n <span className={style['comments-header-search-qa-toggler']} onClick={onToggleQAMode}>\n EXIT\n </span>\n </div>\n )}\n </div>\n </div>\n </div>\n {isQAMode && (\n <div\n className={classNames('stats-comments', style['comments-qa-bar'], {\n [style['hidden']]: isQALoading\n })}\n >\n <div className={`${style['comments-qa-bar-item-left']}`}>\n <i className=\"icon-aytmfd-qa-mode\" />\n <span className={`${style['comments-qa-bar-item-left-hint']}`}>\n (Shift+1 to approve{isOnePerPage ? ', Shift+3 to reject' : ''})\n </span>\n </div>\n <div className={`${style['comments-qa-bar-item-right']}`}>\n <div className={style['comments-qa-bar-per-page']}>\n {0 < totalResponses ? (\n <InlineSelect\n fetchOptions={() => getPerPageOptions(true, loadRejectedCS)}\n value={pageSize}\n disabled={readOnly}\n onSelect={onLoadPerPage}\n >\n {totalResponses < pageSize ? <>{totalResponses} found</> : <>Show {pageSize} per page</>}\n </InlineSelect>\n ) : null}\n </div>\n <div className={style['comments-header-search-qa-count']}>\n <b>{qaCounter}</b> done / <b>{qaTotal || 0}</b> left\n </div>\n </div>\n </div>\n )}\n </>\n )\n}\n\nSurveyHeaderComments.propTypes = {\n survey: PropTypes.object,\n readOnly: PropTypes.bool,\n isHighlightSearchTerms: PropTypes.bool,\n isAdvancedFiltersDisabled: PropTypes.bool,\n isSpecialsSortingDisabled: PropTypes.bool,\n pageData: PropTypes.array,\n loadRejectedCS: PropTypes.string,\n questionsOptionsList: PropTypes.object,\n showTraitsRef: PropTypes.object,\n responseOrderRef: PropTypes.object,\n currentResponseRef: PropTypes.object,\n setIsHighlightSearchTerms: PropTypes.func,\n onCreateFilter: PropTypes.func,\n onSelectedQuestionChange: PropTypes.func,\n onPageChange: PropTypes.func,\n onUpdateSchema: PropTypes.func,\n fetchData: PropTypes.func\n}\n\nSurveyHeaderComments.displayName = 'SurveyHeader'\n\nexport default SurveyHeaderComments\n\nADND().connect()\n","/* eslint-disable react/prop-types, react/display-name */\n\nimport React, { memo, useContext, useState, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport CreatableSelect from 'react-select/creatable'\n\nimport { components } from 'react-select'\n\nimport { encodeText, decodeText } from '@aytm/app/stats/lib/helpers'\n\nimport { DEFAULT_CODEBOOK, FORBIDDEN_SYMBOLS } from '@aytm/app/stats/page/sidebar/coding//lib/constants'\nimport { HIDDEN_TAG_TYPES, TAG_MAX_LENGTH, TAG_MIN_LENGTH } from '@aytm/app/stats/page/comments/lib/constants'\n\nimport { OEContext } from '@aytm/app/stats/page/comments'\n\nimport Popup from '@aytm/lib/rfd-ui/components/basic/popup'\n\nimport style from '@aytm/app/stats/page/comments/comments/styles/ToolBox.module.scss'\n\nconst { MultiValue, Option } = components\n\nconst OPTION_REG = new RegExp(`^[^${FORBIDDEN_SYMBOLS}]*$`, 'i')\n\nconst rsStyles = {\n option: (provided, state) => {\n return { ...provided, isDisabled: 'codebook' == state.data?.type }\n },\n multiValue: (provided, state) => {\n return { ...provided, backgroundColor: state.styles.backgroundColor }\n }\n}\n\nconst rsComponents = {\n DropdownIndicator: null,\n MultiValue: ({ children, data, ...props }) => (\n <div title={decodeText(data.value, false)}>\n <MultiValue data={data} styles={{ backgroundColor: (data?.color && `${data.color}90`) || '#efefef' }} {...props}>\n <span dangerouslySetInnerHTML={{ __html: children }} />\n </MultiValue>\n </div>\n ),\n Option: ({ children, data, ...props }) => (\n <Option data={data} {...props}>\n <span\n className={classNames(style['comment-tools-tags-value'], {\n [style['comment-tools-tags-sub-value']]: Object.hasOwn(data, 'codebook')\n })}\n >\n <span dangerouslySetInnerHTML={{ __html: children }} />\n </span>\n </Option>\n )\n}\n\nconst rsFormatGroupLabel = data => (\n <span className={style['comment-tools-tags-group']} dangerouslySetInnerHTML={{ __html: data.label }}></span>\n)\n\nconst rsFormatCreateLabel = value => `Create: ${encodeText(value, false)}`\n\nconst ToolBox = memo(\n ({ tags, path, dataId, responseId, downloadUrl, toolBoxOptions, isDisabledToolBox, onAddTag, onRemoveTag }) => {\n const { searchState, commentStatusesState } = useContext(OEContext)\n\n const { tagsList, isTagsManagementDisabled } = searchState\n\n const tagsStatus = commentStatusesState.tags[responseId] || {}\n\n const [isDisabled, setIsDisabled] = useState(isDisabledToolBox || false)\n\n const inputValue = useMemo(\n () =>\n tags\n .filter(tagItem => !['junk', 'sentiment', HIDDEN_TAG_TYPES].includes(tagItem.type))\n .map(tagItem => tagsList.find(tag => tag.tag == tagItem.tag))\n .filter(tagItem => tagItem != undefined && null !== tagItem),\n [tags, tagsList]\n )\n\n const filterOption = useCallback(\n (option, searchText) => {\n const text = searchText.trim().toLowerCase()\n\n if (0 < text.length) {\n return (\n option.data.__isNew__ ||\n option.data.label.toLowerCase().includes(encodeText(text, false)) ||\n ('codebook' == option.data.type &&\n option.data.tags.some(tag => tag.toLowerCase().includes(encodeText(text, false))))\n )\n } else {\n const { label, value } = option\n return !inputValue.some(\n v =>\n v.label == label &&\n ('tag' == v.type\n ? (null !== v.codebook ? `${v.codebook}: ${v.value}` : v.value) == value\n : v.value == value)\n )\n }\n },\n [inputValue]\n )\n\n const isValidNewOption = useCallback(\n value => {\n const _value = value.trim()\n return (\n OPTION_REG.test(_value) &&\n _value.length >= TAG_MIN_LENGTH &&\n _value.length <= TAG_MAX_LENGTH &&\n !toolBoxOptions.some(group =>\n group.options.some(\n option =>\n _value.toLowerCase() == option.label.toLowerCase() &&\n DEFAULT_CODEBOOK.toLowerCase() == option.codebook.toLowerCase()\n )\n )\n )\n },\n [toolBoxOptions]\n )\n\n const onChange = async (newValue, actionMeta) => {\n switch (actionMeta.action) {\n case 'pop-value':\n case 'remove-value': {\n if (!Object.hasOwn(actionMeta, 'removedValue')) return\n\n const tag = {\n tag: actionMeta.removedValue.value,\n type: actionMeta.removedValue.type,\n label: actionMeta.removedValue.label,\n codebook: actionMeta.removedValue.codebook\n }\n\n setIsDisabled(true)\n await onRemoveTag(tag, responseId, path)\n setIsDisabled(false)\n\n break\n }\n case 'select-option':\n case 'create-option':\n default: {\n if (!Object.hasOwn(actionMeta, 'option') && !isValidNewOption(newValue[newValue.length - 1].value)) return\n\n const tag = Object.hasOwn(actionMeta, 'option')\n ? {\n tag: actionMeta.option.value,\n type: actionMeta.option.type,\n label: actionMeta.option.label,\n codebook: actionMeta.option.codebook\n }\n : {\n tag: encodeText(newValue[newValue.length - 1].value, false).trim(),\n type: 'manual',\n label: encodeText(newValue[newValue.length - 1].label, false).trim(),\n codebook: null\n }\n\n if (onAddTag && 'function' == typeof onAddTag) {\n setIsDisabled(true)\n await onAddTag(tag, responseId, path, 'create')\n setIsDisabled(false)\n }\n\n break\n }\n }\n }\n\n useEffect(() => {\n setIsDisabled(isDisabledToolBox)\n }, [isDisabledToolBox])\n\n return (\n <div id={dataId} className={style['comment-tools']}>\n <div className={style['controls-block']}>\n {null !== downloadUrl ? (\n <a\n className={`rfd-ui-button with-padding ${style['download-button']}`}\n href={downloadUrl}\n download={`AYTM-Survey-${window.surveyId}-Video-Response-${responseId}_${path}.mp4`}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n DOWNLOAD\n </a>\n ) : null}\n </div>\n {tagsStatus[path] ? (\n <Popup\n className=\"rfd-ui-popup-notification rfd-ui-popup-notification-error\"\n width=\"215px\"\n direction=\"topleft\"\n popupOffset={15}\n portal={true}\n show={'error' == tagsStatus[path].type}\n hideOtherPopupsOnShow={true}\n content={() => <div className={style['response-header-notification-text']}>{tagsStatus[path].message}</div>}\n />\n ) : null}\n <CreatableSelect\n key={`${dataId}-tagItem`}\n className=\"comment-tools-tags-input\"\n classNamePrefix=\"comment-tools-tags-input\"\n components={rsComponents}\n styles={rsStyles}\n placeholder={!isTagsManagementDisabled ? '+ add a tag' : ''}\n options={toolBoxOptions}\n value={inputValue}\n createOptionPosition=\"first\"\n cacheOptions\n isMulti\n isSearchable\n isClearable={false}\n isLoading={isDisabled}\n isDisabled={isDisabled || isTagsManagementDisabled}\n isValidNewOption={isValidNewOption}\n onChange={onChange}\n filterOption={filterOption}\n formatGroupLabel={rsFormatGroupLabel}\n formatCreateLabel={rsFormatCreateLabel}\n />\n </div>\n )\n }\n)\n\nToolBox.propTypes = {\n tags: PropTypes.array,\n path: PropTypes.string,\n dataId: PropTypes.string,\n responseId: PropTypes.number,\n downloadUrl: PropTypes.string,\n toolBoxOptions: PropTypes.array,\n isDisabledToolBox: PropTypes.bool,\n onAddTag: PropTypes.func,\n onRemoveTag: PropTypes.func\n}\n\nToolBox.displayName = 'ToolBox'\n\nexport default ToolBox\n","import React, { useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport style from '@aytm/app/stats/page/comments/comments/styles/Traits.module.scss'\n\nconst Traits = ({ response, survey }) => {\n const { trait } = response\n const { traits } = survey\n const { uid: responseId } = response.response\n\n const traitsOrder = useMemo(\n () =>\n traits\n .map(trait => ('country' == trait.id ? 'geo' : trait.id))\n .filter(traitName => !['county', 'state'].includes(traitName)),\n [traits]\n )\n\n const renderTraitItem = traitName => {\n const result = []\n const traitValue = trait[traitName]\n\n if (traitValue != undefined) {\n switch (traitName) {\n case 'age': {\n // ignore age if age_range trait exists\n if (!traits.some(t => 'age_range' == t?.id)) {\n result.push({\n l: `${trait[traitName]} Age`,\n r: 'at the time of response'\n })\n }\n break\n }\n case 'geo': {\n Object.keys(trait[traitName]).forEach(geoType => {\n switch (geoType) {\n case 'country': {\n result.push({\n l: trait[traitName][geoType].id,\n r: geoType\n })\n break\n }\n case 'county':\n case 'state': {\n result.push({\n l: trait[traitName][geoType].text,\n r: geoType\n })\n break\n }\n default:\n break\n }\n })\n break\n }\n default: {\n const _trait = traits.find(t => traitName == t?.id)\n if (_trait) {\n const traitValueArr = _trait.values.reduce((acc, item) => {\n if (Array.isArray(traitValue)) {\n if (traitValue.includes(item.id)) {\n acc.push(item.name)\n }\n } else {\n if (traitValue == item.id) {\n acc.push(item.name)\n }\n }\n return acc\n }, [])\n\n result.push({\n l: traitValueArr.join(', '),\n r: _trait.title\n })\n }\n break\n }\n }\n }\n\n return result.map((item, index) => (\n <li key={`response${responseId}-trait-${traitName}-${index}`} className={style['trait-item']}>\n <span>\n <em>{item.l}</em> - {item.r}\n </span>\n </li>\n ))\n }\n\n return <ul className={style['traits-container']}>{traitsOrder.map(traitName => renderTraitItem(traitName))}</ul>\n}\n\nTraits.propTypes = {\n survey: PropTypes.object,\n response: PropTypes.object\n}\n\nTraits.displayName = 'Traits'\n\nexport default Traits\n","import { isEqual } from 'lodash'\nimport { MASS_OPERATION_HASH } from '@aytm/app/stats/page/comments/lib/constants'\n\nconst useCodeBooks = ({ survey, tagsData, dispatch, setSurvey, onTagsFetch }) => {\n const _onFetch = (data, updated = {}) => {\n let updatedTagsData = JSON.parse(JSON.stringify(tagsData || {}))\n\n const updatedTags = JSON.parse(JSON.stringify(survey.tags || {}))\n const updatedCodeBooks = JSON.parse(JSON.stringify(survey.codeBooks || []))\n\n if (updated.codebook) {\n let index\n let codebookIndex\n\n updatedTagsData.tags ||= {}\n updatedTagsData.tags[updated.codebook.type] ||= []\n\n window.survey.tags[updated.codebook.type] ||= []\n\n updatedTags[updated.codebook.type] ||= []\n\n const tags = {}\n\n switch (updated.action) {\n case 'update':\n for (const tag of updated.codebook.tags) {\n const key = `${updated.newValue}: ${tag}`\n const oldKey = `${updated.codebook.codebook}: ${tag}`\n\n index = updatedTagsData.tags[updated.codebook.type].findIndex(tag => tag.tag == oldKey)\n if (0 <= index) {\n updatedTagsData.tags[updated.codebook.type][index].tag = key\n }\n\n index = window.survey.tags[updated.codebook.type].indexOf(oldKey)\n if (0 <= index) {\n window.survey.tags[updated.codebook.type][index] = key\n }\n\n index = updatedTags[updated.codebook.type].indexOf(oldKey)\n if (0 <= index) {\n updatedTags[updated.codebook.type][index] = key\n }\n\n for (const k of Object.keys(data.updatedTagsByPath || {})) {\n for (const attr of ['tagsStats', 'tagsByPath']) {\n updatedTagsData[attr][k] ||= {}\n updatedTagsData[attr][k][updated.codebook.type] ||= []\n\n index = updatedTagsData[attr][k][updated.codebook.type].findIndex(tag => tag.tag == oldKey)\n if (0 <= index) {\n updatedTagsData[attr][k][updated.codebook.type][index].tag = key\n }\n }\n }\n\n tags[oldKey] = {\n tag: oldKey,\n type: updated.codebook.type,\n newValue: key\n }\n }\n\n codebookIndex = updatedCodeBooks.findIndex(codebook => updated.codebook.codebook == codebook.title)\n if (0 <= codebookIndex) {\n updatedCodeBooks[codebookIndex].title = updated.newValue\n }\n\n dispatch({\n type: MASS_OPERATION_HASH[updated.action],\n data: { tags }\n })\n\n break\n case 'create':\n updatedCodeBooks.push(data.codebook)\n\n for (const tag of data.codebook.tags) {\n const key = `${data.codebook.title}: ${tag}`\n\n updatedTagsData.tags['manual'].push({\n tag: key,\n amount: 0\n })\n\n window.survey.tags['manual'].push(key)\n\n updatedTags['manual'] ||= []\n updatedTags['manual'].push(key)\n }\n break\n case 'clone':\n updatedCodeBooks.push({ ...data.codebook, type: 'manual' })\n\n for (const tag of data.codebook.tags) {\n const key = `${data.codebook.title}: ${tag}`\n const oldKey = `${updated.codebook.codebook}: ${tag}`\n\n index = updatedTagsData.tags[updated.codebook.type].findIndex(tag => tag.tag == oldKey)\n if (0 <= index) {\n updatedTagsData.tags['manual'].push({\n tag: key,\n amount: updatedTagsData.tags[updated.codebook.type][index].amount || 0\n })\n }\n\n window.survey.tags['manual'].push(key)\n\n updatedTags['manual'] ||= []\n updatedTags['manual'].push(key)\n\n for (const k of Object.keys(data.updatedTagsByPath || {})) {\n for (const attr of ['tagsStats', 'tagsByPath']) {\n updatedTagsData[attr][k] ||= {}\n updatedTagsData[attr][k]['manual'] ||= []\n\n index = updatedTagsData[attr][k][updated.codebook.type].findIndex(tag => tag.tag == oldKey)\n if (0 <= index) {\n updatedTagsData[attr][k]['manual'].push({\n tag: key,\n amount: updatedTagsData[attr][k][updated.codebook.type][index].amount || 0\n })\n }\n }\n }\n\n tags[oldKey] = {\n tag: oldKey,\n type: updated.codebook.type,\n newValue: key\n }\n }\n\n dispatch({\n type: MASS_OPERATION_HASH[updated.action],\n data: { tags }\n })\n\n break\n case 'delete':\n // delete from everywhere\n for (const tag of updated.codebook.tags) {\n const key = `${updated.codebook.codebook}: ${tag}`\n\n index = updatedTagsData.tags[updated.codebook.type].findIndex(tag => tag.tag == key)\n if (0 <= index) {\n updatedTagsData.tags[updated.codebook.type].splice(index, 1)\n }\n\n index = window.survey.tags[updated.codebook.type].indexOf(key)\n if (0 <= index) {\n window.survey.tags[updated.codebook.type].splice(index, 1)\n }\n\n index = updatedTags[updated.codebook.type].indexOf(key)\n if (0 <= index) {\n updatedTags[updated.codebook.type].splice(index, 1)\n }\n\n for (const k of Object.keys(data.updatedTagsByPath || {})) {\n for (const attr of ['tagsStats', 'tagsByPath']) {\n if (!updatedTagsData[attr][k]) continue\n\n updatedTagsData[attr][k][updated.codebook.type] ||= []\n\n index = updatedTagsData[attr][k][updated.codebook.type].findIndex(tag => tag.tag == key)\n if (0 <= index) {\n updatedTagsData[attr][k][updated.codebook.type].splice(index, 1)\n }\n }\n }\n\n tags[key] = { tag: key, type: updated.codebook.type }\n }\n\n codebookIndex = updatedCodeBooks.findIndex(codebook => updated.codebook.codebook == codebook.title)\n if (0 <= codebookIndex) {\n updatedCodeBooks.splice(codebookIndex, 1)\n }\n\n dispatch({\n type: MASS_OPERATION_HASH[updated.action],\n data: { tags }\n })\n\n break\n }\n } else {\n updatedTagsData = JSON.parse(JSON.stringify(data)) || {}\n }\n\n window.survey.codeBooks = updatedCodeBooks\n\n if (!isEqual(survey.codeBooks, updatedCodeBooks)) {\n setSurvey(Object.assign({}, survey, { tags: updatedTags, codeBooks: updatedCodeBooks }))\n } else setSurvey(Object.assign({}, survey, { tags: updatedTags }))\n\n if (!isEqual(tagsData, updatedTagsData)) {\n dispatch({ type: 'SET_PARAM', request: { name: 'tagsData', value: updatedTagsData } })\n }\n if (onTagsFetch && 'function' == typeof onTagsFetch) {\n onTagsFetch(updatedTagsData, updated)\n }\n }\n\n return [_onFetch]\n}\n\nexport default useCodeBooks\n","import { useRef, useEffect } from 'react'\nimport { difference, isEqual } from 'lodash'\nimport { convertTraits } from '@aytm/app/stats/lib/traits'\n\nimport { decodeText } from '@aytm/app/stats/lib/helpers'\nimport {\n mapReportSearchQuery,\n getTagsList,\n getRejectsAndKudos,\n getIsDefaultReportParams\n} from '@aytm/app/stats/page/comments/lib/utils'\nimport {\n DEFAULT_QUERY,\n DEFAULT_ORDER_BY,\n DEFAULT_ORDER_DIRECTION,\n DEFAULT_PER_PAGE,\n DEFAULT_PER_PAGE_IMAGE_RESPONSES,\n DEFAULT_PER_PAGE_VIDEO_RESPONSES,\n DEFAULT_SELECTED_QUESTION,\n ORDER_BY_OPTIONS\n} from '@aytm/app/stats/page/comments/lib/constants'\n\nconst useComments = ({\n dispatch,\n dispatchCommentStatuses,\n searchStateRef,\n reportParams,\n propsRef,\n responsesOptionsRef,\n survey,\n surveyData,\n sentimentOptions,\n setSurvey,\n specialMode,\n questionsOptionsList,\n onQuestionListChange,\n isShowSentiments,\n isSpecialsSortingDisabledRef,\n setResponsesOptions,\n responsesRef,\n reportVirtual,\n reportSchema,\n pageData\n}) => {\n const specialModeRef = useRef(null)\n specialModeRef.current = specialMode\n\n useEffect(() => {\n const traits = convertTraits(surveyData.survey || {})\n const _surveyData = Object.assign({}, surveyData.survey || {}, {\n traits,\n codeBooks: (surveyData.survey || {}).codeBooks || []\n })\n\n if (!isEqual(survey, _surveyData)) {\n setSurvey(_surveyData)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [surveyData])\n\n useEffect(() => {\n dispatch({\n type: 'SET_PARAM',\n request: { name: 'sentimentOptions', value: sentimentOptions }\n })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sentimentOptions])\n\n useEffect(() => {\n if (onQuestionListChange && 'function' == typeof onQuestionListChange) {\n onQuestionListChange(questionsOptionsList.toJS())\n }\n }, [questionsOptionsList, onQuestionListChange])\n\n useEffect(() => {\n // turned off for QA mode\n if (!searchStateRef.current.isQAMode) {\n if (reportParams.selectedQuestion && (!questionsOptionsList || questionsOptionsList.count() <= 1)) return\n const selectedOrderBy =\n reportParams.orderBy && ORDER_BY_OPTIONS.find(item => item.get('value') == reportParams.orderBy)\n const question =\n reportParams.selectedQuestion && reportParams.selectedQuestion !== DEFAULT_SELECTED_QUESTION\n ? questionsOptionsList.find(item => item.get('value') == reportParams.selectedQuestion)\n : null\n const isFailedOrderBy =\n selectedOrderBy &&\n ((isSpecialsSortingDisabledRef.current && !selectedOrderBy.get('isSimple')) ||\n (!isShowSentiments && 'sentiment' == selectedOrderBy.get('value')) ||\n ('similarity' == selectedOrderBy.get('value') && (!question || question?.get('type') !== 'ir')) ||\n ('similarity' == selectedOrderBy.get('value') && window.features?.oe_sort_similarity?.status !== 'on') ||\n (question && 'ir' == question.get('type') && !selectedOrderBy.get('isSimple')))\n\n const reportQuery = reportParams.query\n ? reportParams.query\n : reportParams.searchString\n ? [\n {\n value: decodeText(reportParams.searchString, false),\n label: decodeText(reportParams.searchString, false),\n type: 'plain'\n }\n ]\n : DEFAULT_QUERY\n\n const request = {\n query: reportParams.query ? reportParams.query : searchStateRef.current.request.query,\n selectedQuestion: reportParams.selectedQuestion || DEFAULT_SELECTED_QUESTION,\n pageSize:\n reportParams.pageSize ||\n ('image-responses' == specialModeRef.current\n ? DEFAULT_PER_PAGE_IMAGE_RESPONSES\n : 'video-responses' == specialModeRef.current\n ? DEFAULT_PER_PAGE_VIDEO_RESPONSES\n : DEFAULT_PER_PAGE),\n orderBy: !reportParams.orderBy || isFailedOrderBy ? DEFAULT_ORDER_BY : reportParams.orderBy,\n orderDirection:\n !reportParams.orderDirection || isFailedOrderBy ? DEFAULT_ORDER_DIRECTION : reportParams.orderDirection,\n currentPage: searchStateRef.current.request.currentPage\n }\n\n if (difference(searchStateRef.current.request.query, mapReportSearchQuery(reportQuery)).length) {\n request.query = mapReportSearchQuery(reportQuery)\n }\n\n dispatch({\n type: 'SET_REQUEST',\n request\n })\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [reportParams, questionsOptionsList, isShowSentiments])\n\n useEffect(() => {\n if (!searchStateRef.current.isProcessing) {\n setResponsesOptions({\n ...responsesOptionsRef.current\n })\n\n dispatch({\n type: 'SET_PARAM',\n request: {\n name: 'tagsList',\n value: getTagsList(survey.tags, { codeBooks: survey.codeBooks })\n }\n })\n }\n\n const { request = {}, totalRespondents, isPreserveState } = searchStateRef.current\n\n if (Array.isArray(request.query || [])) {\n const { tags = {}, codeBooks = [] } = survey\n\n const clearData = request.query.some(value =>\n 'tag' == value.type\n ? !Object.keys(tags).some(type => tags[type].includes(`${value.codebook}: ${value.value}`))\n : 'codebook' == value.type\n ? !codeBooks.some(codebook => codebook.title == value.value)\n : false\n )\n\n if (clearData) {\n dispatch({\n type: 'SEARCH_RESULTS',\n data: {\n data: {\n cs: [],\n tags: {},\n tagsByPath: {},\n totals: {\n responses: 0,\n totalRespondents,\n weighting: { stats: {} }\n }\n },\n pageSize:\n request.pageSize ||\n ('image-responses' == specialModeRef.current\n ? DEFAULT_PER_PAGE_IMAGE_RESPONSES\n : 'video-responses' == specialModeRef.current\n ? DEFAULT_PER_PAGE_VIDEO_RESPONSES\n : DEFAULT_PER_PAGE),\n specialMode: specialModeRef.current\n }\n })\n dispatchCommentStatuses({\n type: 'BATCH_DATA',\n data: { batchData: getRejectsAndKudos([]), isPreserveState }\n })\n dispatch({ type: 'SET_PARAM', request: { name: 'isPreserveState', value: false } })\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [survey.tags, survey.codeBooks])\n\n useEffect(() => {\n if (searchStateRef.current.isProcessing) {\n responsesRef.current = []\n\n setResponsesOptions({\n ...responsesOptionsRef.current,\n survey,\n reportVirtual,\n reportSchema\n })\n\n const params = {\n tagsList: getTagsList(survey.tags, { codeBooks: survey.codeBooks }),\n isProcessing: false\n }\n\n if (searchStateRef.current.isQAMode) {\n if (searchStateRef.current.qaAction) {\n params.qaAction = null\n }\n if (searchStateRef.current.isQALoading) {\n params.isQALoading = false\n }\n }\n\n dispatch({\n type: 'SET_PARAMS',\n request: {\n value: params\n }\n })\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [survey, reportVirtual, reportSchema])\n\n useEffect(() => {\n responsesOptionsRef.current.pageData = pageData\n setResponsesOptions({ ...responsesOptionsRef.current })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pageData])\n\n useEffect(() => {\n if (propsRef.current.onUpdateParams && !searchStateRef.current.isQAMode) {\n const params = JSON.parse(JSON.stringify(searchStateRef.current.request))\n propsRef.current.onUpdateParams(\n getIsDefaultReportParams(params, specialMode) ? null : params,\n undefined,\n specialMode\n )\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchStateRef.current.request, specialMode])\n}\n\nexport default useComments\n","import _ from 'lodash'\n\nimport scrollToElement from 'scroll-to-element'\nimport useNonInitialEffect from '@aytm/app/stats/page/comments/lib/hooks/useNonInitialEffect'\n\nimport { convertTraits } from '@aytm/app/stats/lib/traits'\nimport { getRejectsAndKudos } from '@aytm/app/stats/page/comments/lib/utils'\nimport { AbortController as _abortControllerPolyfill } from 'abortcontroller-polyfill/dist/cjs-ponyfill'\nimport { DEFAULT_FETCH_TIMEOUT, FETCH_TIMEOUT_STEP } from '@aytm/app/stats/page/comments/lib/constants'\nimport { setPageData, setQAMode, updateQACounter } from '@aytm/app/stats/page/comments/actions'\nimport { useRef, useMemo, useEffect } from 'react'\nimport { fetchSearchResults } from '@aytm/app/stats/page/comments/apiCalls'\n\n/* compat/compat disabled because polyfill is used */\n// eslint-disable-next-line compat/compat\nconst AbortController = window.AbortController || _abortControllerPolyfill\n\nlet fetchTimeout = DEFAULT_FETCH_TIMEOUT\nlet fetchDebounceTimeout = 0\nlet fetchTimer = null\nlet nocache = false\n\nconst useFetchDataComments = ({\n apiKey,\n dispatch,\n dispatchCommentStatuses,\n searchStateRef,\n propsRef,\n responsesOptionsRef,\n surveyData,\n survey,\n setSurvey,\n specialMode,\n onNoSchema,\n onBeforeFetch,\n onFetch,\n onInvalidKey,\n onQAModeChange\n}) => {\n const abortController = useRef(null)\n\n const { request, qaCounter, qaTotal, totalRespondents, isQAMode, isQAModeDelayed, isPreserveState } =\n searchStateRef.current\n const { query, selectedQuestion, pageSize, orderBy, orderDirection, currentPage, uidsToApprove } = request\n\n const isOnePerPage = useMemo(() => isQAMode && 1 == pageSize, [isQAMode, pageSize])\n\n const fetchDataCallback = async data => {\n const { cs, totals } = data\n\n // eslint-disable-next-line unicorn/consistent-destructuring\n const _survey = data.survey || surveyData.survey || {}\n\n if (isQAMode && null === qaCounter) {\n const qaCounterLocalStorage = parseInt(window.localStorage.getItem(`qaCounter${(survey || _survey).id}`), 10)\n dispatch({\n type: 'SET_PARAMS',\n request: {\n value: {\n qaCounter: null !== totals.qaModeCounter ? totals.qaModeCounter : qaCounterLocalStorage || 0\n }\n }\n })\n }\n dispatch({ type: 'SET_PARAM', request: { name: 'isProcessing', value: true } })\n\n const assets = data.assets || surveyData.survey.assets || {}\n const traits = convertTraits(_survey)\n\n let codeBooks = _survey.codeBooks\n if (!Array.isArray(codeBooks)) {\n codeBooks = Object.keys(codeBooks || {}).reduce(\n (acc, cur) => acc.concat(codeBooks[cur].map(codebook => Object.assign({ type: cur }, codebook))),\n []\n )\n }\n\n await setSurvey(\n Object.assign({}, _survey, {\n assets,\n traits,\n codeBooks\n })\n )\n\n dispatch({ type: 'SEARCH_RESULTS', data: { data, pageSize, specialMode } })\n dispatchCommentStatuses({\n type: 'BATCH_DATA',\n data: { batchData: getRejectsAndKudos(cs), isPreserveState }\n })\n dispatch({ type: 'SET_PARAM', request: { name: 'isPreserveState', value: false } })\n\n fetchTimeout = DEFAULT_FETCH_TIMEOUT\n }\n\n const fetchData = async (\n { includeSchema = false, customParams = {}, customFetchDataCallback = null } = {},\n fetchDataComplete = null\n ) => {\n try {\n if (null !== abortController.current) {\n abortController.current.abort()\n abortController.current = null\n }\n\n abortController.current = new AbortController()\n\n const { signal } = abortController.current\n const data = await fetchSearchResults({\n query,\n selectedQuestion,\n currentPage,\n pageSize,\n orderBy,\n orderDirection,\n isQAMode,\n nocache,\n // eslint-disable-next-line no-param-reassign\n includeSchema: (includeSchema ||= surveyData.survey == undefined && !customFetchDataCallback),\n uidsToApprove,\n signal,\n ...customParams\n })\n\n if (isQAMode && (nocache || !isOnePerPage)) {\n dispatch({ type: 'SET_PARAM', request: { name: 'isUpdateQATotal', value: true } })\n if (null !== uidsToApprove) {\n updateQACounter({ dispatch, qaCounter, qaTotal, uidsToApprove })\n dispatch({ type: 'SET_REQUEST_PARAM', request: { name: 'uidsToApprove', value: null } })\n }\n }\n\n nocache = false\n\n switch (data.status) {\n case 'OK': {\n if (null !== customFetchDataCallback) {\n dispatch({ type: 'SET_PARAM', request: { name: 'isLoading', value: false } })\n\n customFetchDataCallback(data)\n } else {\n if (\n window.shareKey == undefined &&\n data.survey != undefined &&\n data.survey.target_market.quotas == undefined\n ) {\n if (onNoSchema && 'function' == typeof onNoSchema) {\n onNoSchema(_data => {\n dispatch({ type: 'SET_PARAM', request: { name: 'isLoading', value: false } })\n\n fetchDataCallback(_data)\n if (fetchDataComplete && 'function' == typeof fetchDataComplete) {\n fetchDataComplete()\n }\n }, data)\n }\n } else {\n dispatch({ type: 'SET_PARAM', request: { name: 'isLoading', value: false } })\n\n fetchDataCallback(data)\n if (fetchDataComplete && 'function' == typeof fetchDataComplete) {\n fetchDataComplete()\n }\n\n if (onFetch && 'function' == typeof onFetch) {\n onFetch(data)\n }\n }\n }\n break\n }\n case 'RUNNING': {\n fetchTimeout += FETCH_TIMEOUT_STEP\n fetchTimer = setTimeout(() => {\n fetchTimer = null\n fetchData({ includeSchema, customParams, customFetchDataCallback }, fetchDataComplete)\n }, fetchTimeout)\n break\n }\n case 'NO SCHEMA': {\n if (onNoSchema && 'function' == typeof onNoSchema) {\n onNoSchema(_data => {\n dispatch({ type: 'SET_PARAM', request: { name: 'isLoading', value: false } })\n\n fetchDataCallback(_data)\n if (fetchDataComplete && 'function' == typeof fetchDataComplete) {\n fetchDataComplete()\n }\n }, data)\n }\n break\n }\n case 'INVALID KEY': {\n if (onInvalidKey && 'function' == typeof onInvalidKey) {\n onInvalidKey(fetchDataComplete)\n }\n break\n }\n default: {\n dispatch({ type: 'FAILURE', error: { name: 'CustomError', message: 'Something happen' } })\n }\n }\n fetchDebounceTimeout = 0\n\n abortController.current = null\n } catch (error) {\n if (!error.name || (error.name && 'AbortError' !== error.name)) {\n dispatch({ type: 'FAILURE', error })\n }\n\n fetchTimeout = DEFAULT_FETCH_TIMEOUT\n fetchDebounceTimeout = 0\n }\n }\n\n const fetchDataDelay = (force = false, fetchDataComplete) => {\n dispatch({ type: 'SEARCH_INIT' })\n onBeforeFetch && 'function' == typeof onBeforeFetch && onBeforeFetch()\n\n if (null !== fetchTimer) {\n clearTimeout(fetchTimer)\n fetchTimer = null\n }\n\n if (null !== abortController.current) {\n abortController.current.abort()\n abortController.current = null\n }\n\n const callback = () => {\n fetchTimer = null\n\n if (isQAMode || force) {\n nocache = true\n }\n\n if (null === apiKey) {\n // fetchDataCallback(getDefaultData())\n return\n }\n\n fetchData({ includeSchema: force }, fetchDataComplete)\n }\n\n if (0 < fetchDebounceTimeout) {\n fetchTimer = setTimeout(callback, fetchDebounceTimeout)\n } else callback()\n }\n\n // eslint-disable-next-line unicorn/consistent-function-scoping\n const fetchDataDestroy = () => {\n fetchTimeout = DEFAULT_FETCH_TIMEOUT\n fetchDebounceTimeout = 1000\n\n if (null !== fetchTimer) {\n clearTimeout(fetchTimer)\n fetchTimer = null\n }\n\n if (null !== abortController.current) {\n abortController.current.abort()\n abortController.current = null\n }\n }\n\n // common fetch data based on apiKey change\n useEffect(() => {\n if (isQAMode) {\n if (isQAModeDelayed) {\n // setQAMode(searchStateRef.current.isQAMode)\n setQAMode({\n dispatch,\n currentPage,\n pageSize,\n totalRespondents,\n isQAMode,\n onQAModeChange,\n fetchDataDelay\n })\n dispatch({ type: 'SET_PARAM', request: { name: 'isQAModeDelayed', value: false } })\n } else {\n fetchDataDelay()\n }\n }\n\n // eslint-disable-next-line consistent-return\n return () => (isQAMode && isQAModeDelayed ? null : fetchDataDestroy())\n // disabled: fetchDataDelay is const, setQAMode is const\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [apiKey])\n\n // normal mode fetch data effect\n useEffect(() => {\n if (!isQAMode) fetchDataDelay()\n\n // eslint-disable-next-line consistent-return\n return () => (isQAMode ? null : fetchDataDestroy())\n // disabled: fetchDataDelay is const\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [apiKey, query, selectedQuestion, pageSize, currentPage, orderBy, orderDirection])\n\n // QA mode fetch data effect for pageSize = 1 and changed qaCounter\n useEffect(() => {\n if (isOnePerPage && null !== qaCounter && responsesOptionsRef.current.pageData) {\n const newPageData = [...responsesOptionsRef.current.pageData.slice(1)]\n dispatch({ type: 'SET_PARAM', request: { name: 'pageData', value: newPageData } })\n if (3 >= newPageData.length) fetchDataDelay()\n }\n // disabled: fetchDataDelay is const, isOnePerPage is const\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [qaCounter])\n\n // QA mode fetch data effect for both pageSize modes in QA\n useEffect(() => {\n if (isQAMode) {\n setPageData({ dispatch, pageData: [] })\n fetchDataDelay()\n }\n\n // eslint-disable-next-line consistent-return\n return () => (isQAMode ? fetchDataDestroy() : null)\n // disabled: fetchDataDelay is const, fetchDataDestroy is const\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pageSize])\n\n // QA mode fetch data effect for pageSize > 1\n useEffect(() => {\n if (isQAMode && !isOnePerPage) {\n fetchDataDelay()\n scrollToElement('#header', {\n offset: 0,\n align: 'top',\n duration: 250\n })\n }\n\n // eslint-disable-next-line consistent-return\n return () => (isQAMode && !isOnePerPage ? fetchDataDestroy() : null)\n // disabled: isOnePerPage is const, fetchDataDestroy is const\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentPage, orderBy, orderDirection])\n\n useNonInitialEffect(() => {\n if (isQAMode && 'completes' !== propsRef.current.loadRejectedCS) {\n propsRef.current.onUpdateParams(null, 'completes', specialMode)\n dispatch({ type: 'SET_PARAM', request: { name: 'isQAModeDelayed', value: true } })\n } else {\n setQAMode({\n dispatch,\n currentPage,\n pageSize,\n totalRespondents,\n isQAMode,\n onQAModeChange,\n fetchDataDelay\n })\n }\n // disabled: isQAMode is const\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isQAMode])\n\n return { fetchData, fetchDataDelay }\n}\n\nexport default useFetchDataComments\n","import { isEqual } from 'lodash'\nimport { MASS_OPERATION_HASH } from '@aytm/app/stats/page/comments/lib/constants'\n\nconst useTags = ({ survey, tagsData, dispatch, setSurvey, onTagsFetch, onUpdateSchema }) => {\n const _onUpdateSchema = (data, updated = {}) => {\n let updatedTagsData\n\n const updatedTags = JSON.parse(JSON.stringify(survey.tags || {}))\n const updatedCodeBooks = JSON.parse(JSON.stringify(survey.codeBooks || []))\n\n if (updated.tag) {\n let index\n let count\n\n updatedTagsData = JSON.parse(JSON.stringify(tagsData || {}))\n\n updatedTagsData.tags ||= {}\n updatedTagsData.tags[updated.tag.type] ||= []\n\n window.survey.tags[updated.tag.type] ||= []\n\n updatedTags[updated.tag.type] ||= []\n\n if (\n Object.hasOwn(data, 'codebook') &&\n (!Object.hasOwn(updated.tag, 'codebook') || null === updated.tag.codebook)\n ) {\n updated.tag.label = updated.tag.tag\n updated.tag.tag = `${data.codebook.title}: ${updated.tag.label}`\n\n const codebookIndex = updatedCodeBooks.findIndex(codebook => codebook.title == data.codebook.title)\n if (0 <= codebookIndex) {\n index = updatedCodeBooks[codebookIndex].tags.indexOf(updated.tag.label)\n if (0 > index) updatedCodeBooks[codebookIndex].tags.push(updated.tag.label)\n } else updatedCodeBooks.push(data.codebook)\n }\n\n const quantity = data.updatedTagsCount || 1\n\n index = updatedTagsData.tags[updated.tag.type].findIndex(tag => tag.tag == updated.tag.tag)\n if (0 <= index) {\n count = updatedTagsData.tags[updated.tag.type][index].amount || 0\n count = 'create' == updated.action ? count + quantity : Math.max(0, count - quantity)\n updatedTagsData.tags[updated.tag.type][index].amount = count\n } else {\n updatedTagsData.tags[updated.tag.type].push({\n tag: updated.tag.tag,\n amount: 'create' == updated.action ? quantity : 0\n })\n }\n\n if ('create' == updated.action) {\n index = window.survey.tags[updated.tag.type].indexOf(updated.tag.tag)\n 0 > index && window.survey.tags[updated.tag.type].push(updated.tag.tag)\n\n index = updatedTags[updated.tag.type].indexOf(updated.tag.tag)\n 0 > index && updatedTags[updated.tag.type].push(updated.tag.tag)\n }\n\n // subtract from current sentiment count\n if ('sentiment' == updated.tag.type) {\n // one sentiment\n if (updated.tag.currentValue && null !== updatedTagsData.tags[updated.tag.type]) {\n index = updatedTagsData.tags[updated.tag.type].findIndex(tag => tag.tag == updated.tag.currentValue)\n if (0 <= index) {\n const currentCount = updatedTagsData.tags[updated.tag.type][index].amount || 0\n updatedTagsData.tags[updated.tag.type][index].amount = Math.max(0, currentCount - quantity)\n }\n // mass sentiment\n } else if (Array.isArray(data.removedTagsCount) && data.removedTagsCount.length) {\n data.removedTagsCount.forEach(removedItem => {\n index = updatedTagsData.tags[removedItem.type].findIndex(tag => tag.tag == removedItem.tag)\n if (0 <= index) {\n updatedTagsData.tags[removedItem.type][index].amount = Math.max(\n 0,\n updatedTagsData.tags[removedItem.type][index].amount - removedItem.count\n )\n }\n })\n }\n }\n\n for (const k of Object.keys(data.removedTagsByPath || {})) {\n for (const attr of ['tagsStats', 'tagsByPath']) {\n updatedTagsData[attr][k] ||= {}\n\n data.removedTagsByPath[k].forEach(t => {\n updatedTagsData[attr][k][t.type] ||= []\n\n index = updatedTagsData[attr][k][t.type].findIndex(tag => tag.tag == t.tag)\n if (0 <= index) {\n count = Math.max(0, updatedTagsData[attr][k][t.type][index].amount - t.count)\n if (0 < count) {\n updatedTagsData[attr][k][t.type][index].amount = count\n } else updatedTagsData[attr][k][t.type].splice(index, 1)\n }\n })\n }\n }\n\n for (const k of Object.keys(data.updatedTagsByPath || {})) {\n for (const attr of ['tagsStats', 'tagsByPath']) {\n updatedTagsData[attr][k] ||= {}\n updatedTagsData[attr][k][updated.tag.type] ||= []\n\n index = updatedTagsData[attr][k][updated.tag.type].findIndex(tag => tag.tag == updated.tag.tag)\n if (0 <= index) {\n updatedTagsData[attr][k][updated.tag.type][index].amount += data.updatedTagsByPath[k]\n } else {\n updatedTagsData[attr][k][updated.tag.type].push({ tag: updated.tag.tag, amount: data.updatedTagsByPath[k] })\n }\n }\n }\n\n if (updated.responseId) {\n dispatch({\n type: MASS_OPERATION_HASH[updated.action],\n data: { tag: updated.tag, path: updated.path, responseId: updated.responseId }\n })\n }\n } else {\n updatedTagsData = JSON.parse(JSON.stringify(data)) || {}\n }\n\n window.survey.codeBooks = updatedCodeBooks\n\n if (!isEqual(survey.codeBooks, updatedCodeBooks)) {\n setSurvey(Object.assign({}, survey, { tags: updatedTags, codeBooks: updatedCodeBooks }))\n } else if (!isEqual(survey.tags, updatedTags)) {\n setSurvey(Object.assign({}, survey, { tags: updatedTags }))\n }\n\n if (!isEqual(tagsData, updatedTagsData)) {\n dispatch({ type: 'SET_PARAM', request: { name: 'tagsData', value: updatedTagsData } })\n }\n if (onUpdateSchema && 'function' == typeof onUpdateSchema) {\n onUpdateSchema(updatedTagsData)\n }\n }\n\n const _onFetch = (data, updated = {}) => {\n let updatedTagsData = JSON.parse(JSON.stringify(tagsData || {}))\n\n const updatedTags = JSON.parse(JSON.stringify(survey.tags || {}))\n const updatedCodeBooks = JSON.parse(JSON.stringify(survey.codeBooks || []))\n\n if (updated.tag) {\n let index\n let count\n let codebookIndex\n\n updatedTagsData.tags ||= {}\n updatedTagsData.tags[updated.tag.type] ||= []\n\n window.survey.tags[updated.tag.type] ||= []\n\n updatedTags[updated.tag.type] ||= []\n\n switch (updated.action) {\n case 'update': {\n const key =\n Object.hasOwn(updated.tag, 'destination') && null !== updated.tag.destination\n ? null !== updated.tag.destination.codebook\n ? `${updated.tag.destination.codebook}: ${updated.newValue}`\n : updated.newValue\n : null !== updated.tag.codebook\n ? `${updated.tag.codebook}: ${updated.newValue}`\n : updated.newValue\n\n index = updatedTagsData.tags[updated.tag.type].findIndex(tag => tag.tag == updated.tag.tag)\n if (0 <= index) {\n updatedTagsData.tags[updated.tag.type][index].tag = key\n }\n\n index = window.survey.tags[updated.tag.type].indexOf(updated.tag.tag)\n if (0 <= index) {\n window.survey.tags[updated.tag.type][index] = key\n }\n\n index = updatedTags[updated.tag.type].indexOf(updated.tag.tag)\n if (0 <= index) {\n updatedTags[updated.tag.type][index] = key\n }\n\n codebookIndex = updatedCodeBooks.findIndex(codebook => codebook.title == updated.tag.codebook)\n if (0 <= codebookIndex) {\n index = updatedCodeBooks[codebookIndex].tags.indexOf(updated.tag.label)\n if (0 <= index) {\n updatedCodeBooks[codebookIndex].tags[index] = updated.newValue\n }\n }\n\n for (const k of Object.keys(data.updatedTagsByPath || {})) {\n for (const attr of ['tagsStats', 'tagsByPath']) {\n updatedTagsData[attr][k] ||= {}\n updatedTagsData[attr][k][updated.tag.type] ||= []\n\n index = updatedTagsData[attr][k][updated.tag.type].findIndex(tag => tag.tag == updated.tag.tag)\n if (0 <= index) {\n updatedTagsData[attr][k][updated.tag.type][index].tag = key\n }\n }\n }\n\n dispatch({\n type: MASS_OPERATION_HASH[updated.action],\n data: {\n tag: {\n tag: updated.tag.tag,\n type: updated.tag.type\n },\n newValue: key\n }\n })\n\n break\n }\n case 'create': {\n updatedTagsData.tags[updated.tag.type].push({ tag: updated.tag.tag, amount: 0 })\n\n window.survey.tags[updated.tag.type].push(updated.tag.tag)\n\n updatedTags[updated.tag.type].push(updated.tag.tag)\n\n codebookIndex = updatedCodeBooks.findIndex(codebook => codebook.title == updated.tag.codebook)\n if (0 <= codebookIndex) {\n updatedCodeBooks[codebookIndex].tags.push(updated.tag.label)\n }\n\n break\n }\n case 'clone': {\n const key =\n Object.hasOwn(updated.tag, 'destination') && null !== updated.tag.destination\n ? null !== updated.tag.destination.codebook\n ? `${updated.tag.destination.codebook}: ${updated.tag.label}`\n : updated.tag.label\n : null !== updated.tag.codebook\n ? `${updated.tag.codebook}: ${updated.tag.label}`\n : updated.tag.label\n\n index = updatedTagsData.tags[updated.tag.type].findIndex(tag => tag.tag == updated.tag.tag)\n if (0 <= index) {\n updatedTagsData.tags[updated.tag.destination.type] ||= []\n updatedTagsData.tags[updated.tag.destination.type].push({\n tag: key,\n amount: data.updatedTagsCount || 0\n })\n }\n\n window.survey.tags[updated.tag.destination.type] ||= []\n window.survey.tags[updated.tag.destination.type].push(key)\n\n updatedTags[updated.tag.destination.type] ||= []\n updatedTags[updated.tag.destination.type].push(key)\n\n codebookIndex = updatedCodeBooks.findIndex(codebook => codebook.title == updated.tag.destination.codebook)\n if (0 <= codebookIndex) {\n updatedCodeBooks[codebookIndex].tags.push(updated.tag.label)\n }\n\n for (const k of Object.keys(data.updatedTagsByPath || {})) {\n for (const attr of ['tagsStats', 'tagsByPath']) {\n updatedTagsData[attr][k] ||= {}\n updatedTagsData[attr][k][updated.tag.type] ||= []\n updatedTagsData[attr][k][updated.tag.destination.type] ||= []\n\n index = updatedTagsData[attr][k][updated.tag.type].findIndex(tag => tag.tag == updated.tag.tag)\n if (0 <= index) {\n updatedTagsData[attr][k][updated.tag.destination.type].push({\n tag: key,\n amount: data.updatedTagsByPath[k] || 0\n })\n }\n }\n }\n\n dispatch({\n type: MASS_OPERATION_HASH[updated.action],\n data: {\n tag: {\n tag: updated.tag.tag,\n type: updated.tag.type\n },\n newValue: key\n }\n })\n\n break\n }\n case 'merge': {\n const key =\n Object.hasOwn(updated.tag, 'destination') && null !== updated.tag.destination\n ? null !== updated.tag.destination.codebook\n ? `${updated.tag.destination.codebook}: ${updated.newValue}`\n : updated.newValue\n : null !== updated.tag.codebook\n ? `${updated.tag.codebook}: ${updated.newValue}`\n : updated.newValue\n\n index = updatedTagsData.tags[updated.tag.type].findIndex(tag => tag.tag == updated.tag.tag)\n if (0 <= index) {\n updatedTagsData.tags[updated.tag.destination.type] ||= []\n\n if (Object.hasOwn(updated.tag, 'update')) {\n updatedTagsData.tags[updated.tag.type].splice(index, 1)\n\n index = window.survey.tags[updated.tag.type].indexOf(updated.tag.tag)\n if (0 <= index) {\n window.survey.tags[updated.tag.type].splice(index, 1)\n }\n\n index = updatedTags[updated.tag.type].indexOf(updated.tag.tag)\n if (0 <= index) {\n updatedTags[updated.tag.type].splice(index, 1)\n }\n\n codebookIndex = updatedCodeBooks.findIndex(codebook => codebook.title == updated.tag.codebook)\n if (0 <= codebookIndex) {\n index = updatedCodeBooks[codebookIndex].tags.indexOf(updated.tag.label)\n if (0 <= index) {\n updatedCodeBooks[codebookIndex].tags.splice(index, 1)\n }\n }\n }\n\n // TODO\n index = updatedTagsData.tags[updated.tag.destination.type].findIndex(tag => tag.tag == key)\n if (0 <= index) {\n updatedTagsData.tags[updated.tag.destination.type][index].amount += data.updatedTagsCount\n } else {\n updatedTagsData.tags[updated.tag.destination.type].push({\n tag: key,\n amount: data.updatedTagsCount\n })\n }\n }\n\n for (const k of Object.keys(data.updatedTagsByPath || {})) {\n for (const attr of ['tagsStats', 'tagsByPath']) {\n updatedTagsData[attr][k] ||= {}\n updatedTagsData[attr][k][updated.tag.type] ||= []\n updatedTagsData[attr][k][updated.tag.destination.type] ||= []\n\n index = updatedTagsData[attr][k][updated.tag.type].findIndex(tag => tag.tag == updated.tag.tag)\n if (0 <= index) {\n if (Object.hasOwn(updated.tag, 'update')) {\n updatedTagsData[attr][k][updated.tag.type].splice(index, 1)\n }\n\n index = updatedTagsData[attr][k][updated.tag.destination.type].findIndex(tag => tag.tag == key)\n if (0 <= index) {\n updatedTagsData[attr][k][updated.tag.destination.type][index].amount += data.updatedTagsByPath[k]\n } else {\n updatedTagsData[attr][k][updated.tag.destination.type].push({\n tag: key,\n amount: data.updatedTagsByPath[k]\n })\n }\n }\n }\n }\n\n dispatch({\n type: MASS_OPERATION_HASH[updated.action],\n data: {\n tag: {\n tag: updated.tag.tag,\n type: updated.tag.type,\n codebook: updated.tag.codebook,\n destination: {\n tag: key,\n type: updated.tag.destination.type,\n codebook: updated.tag.destination.codebook\n }\n },\n update: Object.hasOwn(updated.tag, 'update')\n }\n })\n\n break\n }\n case 'delete': {\n index = updatedTagsData.tags[updated.tag.type].findIndex(tag => tag.tag == updated.tag.tag)\n\n // delete from everywhere\n if (!updated.path) {\n updatedTagsData.tags[updated.tag.type].splice(index, 1)\n\n index = window.survey.tags[updated.tag.type].indexOf(updated.tag.tag)\n if (0 <= index) {\n window.survey.tags[updated.tag.type].splice(index, 1)\n }\n\n index = updatedTags[updated.tag.type].indexOf(updated.tag.tag)\n if (0 <= index) {\n updatedTags[updated.tag.type].splice(index, 1)\n }\n\n codebookIndex = updatedCodeBooks.findIndex(codebook => codebook.title == updated.tag.codebook)\n if (0 <= codebookIndex) {\n index = updatedCodeBooks[codebookIndex].tags.indexOf(updated.tag.label)\n if (0 <= index) {\n updatedCodeBooks[codebookIndex].tags.splice(index, 1)\n }\n }\n } else {\n if ('*' == updated.responseId) {\n // delete from all responses\n count = 0\n } else {\n // delete from current page\n count = (0 <= index && updatedTagsData.tags[updated.tag.type][index].amount) || 0\n count = Math.max(0, count - data.updatedTagsCount) || 0\n }\n\n updatedTagsData.tags[updated.tag.type][index].amount = count\n\n if ('sentiment' == updated.tag.type && data.updatedTagsCount) {\n index = updatedTagsData.tags[updated.tag.type].findIndex(tag => 'None' == tag.tag)\n if (0 > index) {\n updatedTagsData.tags[updated.tag.type].push({ tag: 'None', amount: data.updatedTagsCount || 0 })\n } else updatedTagsData.tags[updated.tag.type][index].amount += data.updatedTagsCount || 0\n }\n }\n\n for (const k of Object.keys(data.updatedTagsByPath || {})) {\n for (const attr of ['tagsStats', 'tagsByPath']) {\n updatedTagsData[attr][k] ||= {}\n updatedTagsData[attr][k][updated.tag.type] ||= []\n\n index = updatedTagsData[attr][k][updated.tag.type].findIndex(tag => tag.tag == updated.tag.tag)\n if (0 <= index) {\n count = Math.max(\n 0,\n updatedTagsData[attr][k][updated.tag.type][index].amount - data.updatedTagsByPath[k]\n )\n }\n\n if (0 < count) {\n updatedTagsData[attr][k][updated.tag.type][index].amount = count\n } else updatedTagsData[attr][k][updated.tag.type].splice(index, 1)\n\n if ('sentiment' == updated.tag.type && data.updatedTagsByPath[k]) {\n index = updatedTagsData[attr][k][updated.tag.type].findIndex(tag => 'None' == tag.tag)\n if (0 > index) {\n updatedTagsData[attr][k][updated.tag.type].push({\n tag: 'None',\n amount: data.updatedTagsByPath[k] || 0\n })\n } else updatedTagsData[attr][k][updated.tag.type][index].amount += data.updatedTagsByPath[k] || 0\n }\n }\n }\n\n dispatch({\n type: MASS_OPERATION_HASH[updated.action],\n data: {\n tag: {\n tag: updated.tag.tag,\n type: updated.tag.type\n }\n }\n })\n\n break\n }\n }\n } else {\n updatedTagsData = JSON.parse(JSON.stringify(data)) || {}\n }\n\n window.survey.codeBooks = updatedCodeBooks\n\n if (!isEqual(survey.codeBooks, updatedCodeBooks)) {\n setSurvey(Object.assign({}, survey, { tags: updatedTags, codeBooks: updatedCodeBooks }))\n } else if (!isEqual(survey.tags, updatedTags)) {\n setSurvey(Object.assign({}, survey, { tags: updatedTags }))\n }\n\n if (!isEqual(tagsData, updatedTagsData)) {\n dispatch({ type: 'SET_PARAM', request: { name: 'tagsData', value: updatedTagsData } })\n }\n if (onTagsFetch && 'function' == typeof onTagsFetch) {\n onTagsFetch(updatedTagsData, updated)\n }\n }\n\n return [_onUpdateSchema, _onFetch]\n}\n\nexport default useTags\n","import React, { useState, useCallback, useMemo, useRef, useContext } from 'react'\nimport PropTypes from 'prop-types'\nimport { createPortal } from 'react-dom'\n\nimport { convertTraits } from '@aytm/app/stats/lib/traits'\nimport { DEFAULT_SELECTED_QUESTION } from '@aytm/app/stats/page/comments/lib/constants'\nimport {\n questionByPosition,\n questionIdToPosition,\n getQuestionsOptionsList\n} from '@aytm/app/stats/page/comments/lib/utils'\n\nimport { OEContext } from '@aytm/app/stats/page/comments'\n\n// styles\nimport '@aytm/app/stats/page/styles/globals.scss'\nimport '@aytm/app/stats/page/comments/styles/keyframes.scss'\n\nimport style from '@aytm/app/stats/page/comments/styles/index.module.scss'\n\nimport SurveyHeaderComments from '@aytm/app/stats/page/comments/comments/components/SurveyHeaderComments'\nimport PageDataComments from '@aytm/app/stats/page/comments/comments/PageDataComments'\nimport PageDataQA from '@aytm/app/stats/page/comments/comments/PageDataQA'\nimport useFetchDataComments from '@aytm/app/stats/page/comments/comments/hooks/useFetchDataComments'\nimport useComments from '@aytm/app/stats/page/comments/comments/hooks/useComments'\nimport useTags from '@aytm/app/stats/page/comments/comments/hooks/useTags'\nimport useCodeBooks from '@aytm/app/stats/page/comments/comments/hooks/useCodeBooks'\nimport CodingPanel from '@aytm/app/stats/page/sidebar/coding/CodingPanel'\n\nconst CommentsOpenEnded = props => {\n const {\n specialMode,\n surveyData,\n reportId,\n apiKey,\n sentimentOptions,\n reportParams = {},\n reportVirtual,\n reportSchema,\n reports,\n windowUID,\n loadRejectedCS,\n isShowHiddenFilters,\n isAdvancedFiltersDisabled,\n isSpecialsSortingDisabled,\n isAiAssistantsOECodingDisabled,\n onBeforeFetch,\n onFetch,\n onTagsFetch,\n onUpdateSchema,\n onNoSchema,\n onInvalidKey,\n onCreateFilter,\n onQuestionListChange,\n onSelectedQuestionChange,\n onQAModeChange\n } = props\n\n const { searchState, dispatch, dispatchCommentStatuses } = useContext(OEContext)\n\n const {\n pageData = [],\n tagsData,\n errors,\n disabled: readOnly,\n isQAMode,\n isQALoading,\n isShowSentiments,\n isTagsManagementDisabled,\n isSentimentsManagementDisabled\n } = searchState\n\n const [popupNotificationsDisabled, setPopupNotificationsDisabled] = useState({\n kudos: Boolean(window.localStorage.getItem('kudosNotificationsDisabled')) || false,\n unkudos: Boolean(window.localStorage.getItem('unkudosNotificationsDisabled')) || false,\n reject: Boolean(window.localStorage.getItem('rejectNotificationsDisabled')) || false\n })\n\n const [survey, setSurvey] = useState(\n Object.assign({}, surveyData.survey || {}, {\n traits: convertTraits(surveyData.survey || {}),\n codeBooks: (surveyData.survey || {}).codeBooks || []\n })\n )\n const [responsesOptions, setResponsesOptions] = useState({\n survey,\n reportParams,\n reportVirtual,\n reportSchema,\n selectedQuestion: reportParams.selectedQuestion || DEFAULT_SELECTED_QUESTION\n })\n\n const responsesRef = useRef([])\n const showTraitsRef = useRef({})\n const responseOrderRef = useRef({})\n const currentResponseRef = useRef()\n\n const searchStateRef = useRef()\n searchStateRef.current = searchState\n\n const responsesOptionsRef = useRef()\n responsesOptionsRef.current = responsesOptions\n\n const propsRef = useRef()\n propsRef.current = props\n const surveyRef = useRef()\n surveyRef.current = survey\n\n const isSpecialsSortingDisabledRef = useRef()\n isSpecialsSortingDisabledRef.current = isSpecialsSortingDisabled\n\n const questionsOptionsList = useMemo(\n () =>\n getQuestionsOptionsList(\n responsesOptions.survey,\n responsesOptions.reportVirtual,\n responsesOptions.reportSchema,\n responsesOptions.selectedQuestion,\n specialMode\n ),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n responsesOptions.survey.questions,\n responsesOptions.survey.scripts,\n responsesOptions.reportVirtual,\n responsesOptions.reportSchema,\n responsesOptions.selectedQuestion,\n specialMode\n ]\n )\n const question = useMemo(() => {\n if (reportParams.selectedQuestion && reportParams.selectedQuestion != DEFAULT_SELECTED_QUESTION) {\n const questionOption = questionsOptionsList.find(q => q.get('value') == reportParams.selectedQuestion)\n\n return questionOption ? questionByPosition(questionIdToPosition(questionOption.get('questionNumber'))) : null\n }\n return null\n }, [reportParams.selectedQuestion, questionsOptionsList])\n\n const PageDataComponent = useMemo(\n () => (isQAMode && !isQALoading ? PageDataQA : PageDataComments),\n [isQAMode, isQALoading]\n )\n\n const onPageChange = (page, uidsList = null) => {\n const request = {\n currentPage: page\n }\n if (uidsList) {\n request.uidsToApprove = uidsList\n }\n\n dispatch({ type: 'SET_PARAM', request: { name: 'isPreserveState', value: true } })\n dispatch({\n type: 'SET_REQUEST_PARAM_SET',\n request\n })\n }\n\n const onCloseNotification = useCallback(\n type => {\n setPopupNotificationsDisabled({\n ...popupNotificationsDisabled,\n [type]: true\n })\n window.localStorage.setItem(`${type}NotificationsDisabled`, true)\n },\n [popupNotificationsDisabled]\n )\n\n const { fetchData, fetchDataDelay } = useFetchDataComments({\n apiKey,\n dispatch,\n dispatchCommentStatuses,\n searchStateRef,\n propsRef,\n responsesOptionsRef,\n surveyData,\n survey,\n setSurvey,\n specialMode,\n onNoSchema,\n onFetch,\n onBeforeFetch,\n onInvalidKey,\n onQAModeChange\n })\n\n useComments({\n dispatch,\n dispatchCommentStatuses,\n searchStateRef,\n propsRef,\n responsesOptionsRef,\n surveyData,\n survey,\n setSurvey,\n specialMode,\n sentimentOptions,\n questionsOptionsList,\n onQuestionListChange,\n isShowSentiments,\n isSpecialsSortingDisabledRef,\n reportParams,\n setResponsesOptions,\n responsesRef,\n reportVirtual,\n reportSchema,\n pageData\n })\n\n const [_onTagsUpdateSchema, _onTagsFetch] = useTags({\n survey,\n tagsData,\n dispatch,\n setSurvey,\n onTagsFetch,\n onUpdateSchema\n })\n\n const [_onCodeBooksFetch] = useCodeBooks({\n survey,\n tagsData,\n dispatch,\n setSurvey,\n onTagsFetch\n })\n\n return (\n <div style={{ minHeight: 500 }}>\n {errors.length ? (\n <div className={style['comments-errors']}>\n <h3>Error</h3>\n {errors.map(error => (\n <div key={`error${error.name}`}>{error.message}</div>\n ))}\n </div>\n ) : (\n <>\n <div className={`${style['comments-container']} stats-comments`}>\n <div className={style['white-overlay']} />\n <SurveyHeaderComments\n survey={survey}\n readOnly={readOnly}\n pageData={responsesOptions.pageData}\n questionsOptionsList={questionsOptionsList}\n showTraitsRef={showTraitsRef}\n isAdvancedFiltersDisabled={isAdvancedFiltersDisabled}\n isSpecialsSortingDisabled={isSpecialsSortingDisabled}\n responseOrderRef={responseOrderRef}\n currentResponse={currentResponseRef}\n loadRejectedCS={loadRejectedCS}\n onCreateFilter={onCreateFilter}\n onSelectedQuestionChange={onSelectedQuestionChange}\n onUpdateSchema={_onTagsUpdateSchema}\n onPageChange={onPageChange}\n fetchData={fetchData}\n />\n <PageDataComponent\n reportId={reportId}\n apiKey={apiKey}\n survey={survey}\n responsesOptions={responsesOptions}\n setResponsesOptions={setResponsesOptions}\n responsesRef={responsesRef}\n showTraitsRef={showTraitsRef}\n responseOrderRef={responseOrderRef}\n popupNotificationsDisabled={popupNotificationsDisabled}\n isShowHiddenFilters={isShowHiddenFilters}\n currentResponse={currentResponseRef}\n setCurrentResponse={responseData => (currentResponseRef.current = responseData)}\n onUpdateSchema={_onTagsUpdateSchema}\n onPageChange={onPageChange}\n onCloseNotification={onCloseNotification}\n />\n </div>\n {document.querySelector('#coding-container') &&\n createPortal(\n <CodingPanel\n survey={survey}\n tagsData={{\n cs: pageData,\n tags: tagsData.tags,\n tagsStats: tagsData.tagsStats,\n tagsByPath: tagsData.tagsByPath,\n totals: tagsData.totals\n }}\n question={question}\n reports={reports}\n reportId={reportId}\n reportParams={reportParams}\n windowUID={windowUID}\n isTagsManagementDisabled={isTagsManagementDisabled}\n isSentimentsManagementDisabled={isSentimentsManagementDisabled}\n isAiAssistantsOECodingDisabled={isAiAssistantsOECodingDisabled}\n onCodeBooksFetch={_onCodeBooksFetch}\n onTagsFetch={_onTagsFetch}\n onFetch={fetchDataDelay}\n onInvalidKey={onInvalidKey}\n />,\n document.querySelector('#coding-container')\n )}\n </>\n )}\n </div>\n )\n}\n\nCommentsOpenEnded.propTypes = {\n specialMode: PropTypes.string,\n surveyData: PropTypes.object,\n reportId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n apiKey: PropTypes.object,\n statActionsUrl: PropTypes.string,\n questionId: PropTypes.string,\n loadRejectedCS: PropTypes.string,\n sentimentOptions: PropTypes.object,\n reportParams: PropTypes.object,\n reportVirtual: PropTypes.object,\n reportSchema: PropTypes.array,\n reports: PropTypes.array,\n windowUID: PropTypes.string,\n isShowHiddenFilters: PropTypes.bool,\n isAdvancedFiltersDisabled: PropTypes.bool,\n isQAModeDisabled: PropTypes.bool,\n isSpecialsSortingDisabled: PropTypes.bool,\n isAiAssistantsOECodingDisabled: PropTypes.bool,\n onBeforeFetch: PropTypes.func,\n onFetch: PropTypes.func,\n onTagsFetch: PropTypes.func,\n onNoSchema: PropTypes.func,\n onInvalidKey: PropTypes.func,\n onCreateFilter: PropTypes.func,\n onUpdateParams: PropTypes.func,\n onUpdateSchema: PropTypes.func,\n onQuestionListChange: PropTypes.func,\n onSelectedQuestionChange: PropTypes.func,\n onQAModeChange: PropTypes.func\n}\n\nCommentsOpenEnded.displayName = 'CommentsOpenEnded'\n\nexport default CommentsOpenEnded\n","import React, { memo, useContext, useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport ImageResponseItem from '@aytm/app/stats/page/comments/image-responses/ImageResponseItem'\nimport {\n pathQuestionIdToOld,\n questionByPath,\n questionOldIdToId,\n responseTagsByPath\n} from '@aytm/app/stats/page/comments/lib/utils'\nimport { OEContext } from '@aytm/app/stats/page/comments/index'\nimport { DEFAULT_SELECTED_QUESTION } from '@aytm/app/stats/page/comments/lib/constants'\n\nconst Response = memo(\n ({ survey, reportVirtual, reportSchema, response, onUpdateParams, isShowPopup, setIsShowPopup }) => {\n const { searchState, commentStatusesState } = useContext(OEContext)\n\n const { request, isResponseOrder } = searchState\n const { selectedQuestion } = request\n const { uid: responseId } = response.response\n const rejectStatus = commentStatusesState.reject[responseId]\n const hasQuestionOrder = Boolean(response.session && response.session.order)\n const isRejected = rejectStatus && 'true' == rejectStatus\n\n const questionsKeys = useMemo(() => {\n const answers =\n hasQuestionOrder && isResponseOrder\n ? response.session.order.filter(keyName => {\n const newKeyName = questionOldIdToId(keyName, survey)\n return (reportSchema.length\n ? reportSchema.some(schemaKey => newKeyName == questionOldIdToId(schemaKey, survey))\n : true) && selectedQuestion !== DEFAULT_SELECTED_QUESTION\n ? 0 == selectedQuestion.indexOf(newKeyName)\n : true\n })\n : (reportSchema.length ? reportSchema : Object.keys(response.answer)).reduce((acc, cur) => {\n const newKeyName = questionOldIdToId(cur, survey)\n if (\n selectedQuestion == DEFAULT_SELECTED_QUESTION ||\n (selectedQuestion !== DEFAULT_SELECTED_QUESTION && 0 == selectedQuestion.indexOf(newKeyName))\n )\n response.answer[cur] && acc.push(cur)\n return acc\n }, [])\n return answers.map(keyName => {\n return {\n keyName,\n path: questionOldIdToId(keyName, survey),\n question: questionByPath(keyName, survey, reportVirtual)\n }\n })\n }, [response, isResponseOrder, hasQuestionOrder, reportSchema, reportVirtual, selectedQuestion, survey])\n\n return questionsKeys.length ? (\n <>\n {questionsKeys.map(\n ({ keyName, path, question }) =>\n question && (\n <ImageResponseItem\n path={path}\n question={question}\n survey={survey}\n isRejected={isRejected}\n response={response}\n isShowPopup={isShowPopup}\n setIsShowPopup={setIsShowPopup}\n answer={response.answer[keyName]}\n pipingMask={response.pipingMask}\n tags={responseTagsByPath(response, pathQuestionIdToOld(path))}\n key={`Response${responseId}_Question${keyName}`}\n responseId={responseId}\n dataId={`Response${responseId}_Question${keyName}`}\n onUpdateParams={onUpdateParams}\n />\n )\n )}\n </>\n ) : null\n }\n)\n\nResponse.propTypes = {\n dataId: PropTypes.string,\n reportId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n survey: PropTypes.object,\n reportVirtual: PropTypes.object,\n reportSchema: PropTypes.array,\n response: PropTypes.object,\n showTraitsRef: PropTypes.object,\n responseOrderRef: PropTypes.object,\n isShowHiddenFilters: PropTypes.bool,\n isShowPopup: PropTypes.string,\n setIsShowPopup: PropTypes.func,\n onUpdateParams: PropTypes.func,\n onCloseNotification: PropTypes.func\n}\n\nResponse.displayName = 'Response'\n\nexport default Response\n","import React, { memo, useCallback, useContext, useMemo, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { getDottedQuestionName, getQuestionOptions, pathQuestionIdToOld } from '@aytm/app/stats/page/comments/lib/utils'\nimport style from '@aytm/app/stats/page/comments/image-responses/styles/ImageResponse.module.scss'\nimport moment from 'moment'\nimport {\n getImageAssetPath,\n IMAGE_ASSET_PATH_FILTER_RESIZE_TO_STRETCH,\n IMAGE_ASSET_PATH_FILTER_SMART_CROP\n} from '@aytm/lib/common/assets'\nimport classNames from 'classnames'\nimport ImagePopup from '@aytm/lib/rfd-ui/components/basic/image-popup'\nimport { OEContext } from '@aytm/app/stats/page/comments'\nimport { DEFAULT_SELECTED_QUESTION } from '@aytm/app/stats/page/comments/lib/constants'\n\nconst noImageSrc = getImageAssetPath({\n filter: IMAGE_ASSET_PATH_FILTER_RESIZE_TO_STRETCH,\n path: 'missing_image.png',\n width: 350,\n height: 200,\n backgroundColor: 'none'\n})\n\nconst ImageResponseItem = memo(\n ({\n dataId,\n responseId,\n path,\n question,\n survey,\n answer,\n response,\n isRejected,\n onUpdateParams,\n isShowPopup,\n setIsShowPopup\n }) => {\n const { searchState } = useContext(OEContext)\n\n const { request } = searchState\n const { selectedQuestion } = request\n\n const [isLoaded, setIsLoaded] = useState(false)\n const [isError, setIsError] = useState(false)\n\n const questionOptions = useMemo(() => getQuestionOptions(question, survey, false, true), [survey, question])\n\n const onResponseClick = () => {\n onUpdateParams({ query: [{ value: responseId, label: responseId, type: 'uid' }] }, undefined, 'comments')\n }\n\n const onLoadImage = useCallback(() => {\n setIsLoaded(true)\n }, [setIsLoaded])\n\n const onErrorImage = useCallback(\n ({ currentTarget }) => {\n setIsError(true)\n currentTarget.onerror = null\n currentTarget.src = noImageSrc\n },\n [setIsError]\n )\n\n const onImageDownload = useCallback(event => {\n event.stopPropagation()\n }, [])\n\n const renderQuestionWithAnswers = (node, path) => {\n const nodeData = node.data ? node.data : node\n const nodeOptions = questionOptions.find(item => item.value && item.value.replace(/sq(\\d+)/i, 'b$1') == path)\n if (!nodeOptions || !nodeOptions.value) {\n return null\n }\n const itemPath = pathQuestionIdToOld(getDottedQuestionName(path))\n const src = getImageAssetPath({\n filter: IMAGE_ASSET_PATH_FILTER_SMART_CROP,\n path: nodeData.i.original.path,\n backgroundColor: 'none'\n })\n\n return (\n <div className={style['image-response']}>\n {!isError && (\n <a\n className={style['image-response-download']}\n href={nodeData.i.original.url}\n download={`AYTM_Survey-${window.surveyId}_Image-Response_${response.response.uid}_${itemPath}.jpg`}\n onClick={onImageDownload}\n >\n <i className=\"icon-aytmfd-export icon-shadow\" />\n </a>\n )}\n {isRejected && response.rejection ? (\n <div className={style['response-rejected-info']}>\n by {response.rejection.rejected_by},{' '}\n {moment(new Date(response.rejection.rejected_at)).format('MM/DD/YYYY [at] hh:mm A')}\n </div>\n ) : null}\n <img\n alt={responseId}\n className={classNames({\n [style['image-response-image']]: true,\n [style['no-zoom']]: isError,\n [style['loading']]: !nodeData.i.original.preload_thumbnail && !isLoaded\n })}\n style={{\n backgroundImage:\n !isLoaded && nodeData.i.original.preload_thumbnail\n ? `url(${nodeData.i.original.preload_thumbnail})`\n : 'none',\n backgroundSize: 'cover'\n }}\n data-id={dataId}\n key={`${responseId}-question-item-${itemPath}-${nodeOptions.lvl}`}\n id={`response-image-${nodeData.i.uid}`}\n src={src}\n onError={onErrorImage}\n onClick={() => (!isError ? setIsShowPopup(`${responseId}_${path}`) : null)}\n onLoad={onLoadImage}\n />\n <ImagePopup\n src={nodeData.i.original.url}\n show={isShowPopup && isShowPopup == `${responseId}_${path}`}\n onClose={() => setIsShowPopup(null)}\n closeOnClick={true}\n />\n\n <div className={style['image-response-description']}>\n <div className={style['image-response-description-inner']} onClick={onResponseClick}>\n {!selectedQuestion || (selectedQuestion && selectedQuestion == DEFAULT_SELECTED_QUESTION) ? (\n <span className={style['image-response-description-inner-path']}>{path}</span>\n ) : null}\n <span className={style['image-response-description-inner-open']}>Open response</span>\n </div>\n <div className={style['image-response-description-id']}>{responseId}</div>\n </div>\n </div>\n )\n }\n\n return renderQuestionWithAnswers(answer, path)\n }\n)\n\nImageResponseItem.propTypes = {\n dataId: PropTypes.string,\n responseId: PropTypes.number,\n path: PropTypes.string,\n question: PropTypes.object,\n survey: PropTypes.object,\n isRejected: PropTypes.bool,\n response: PropTypes.object,\n pipingMask: PropTypes.object,\n answer: PropTypes.object,\n tags: PropTypes.array,\n isShowPopup: PropTypes.string,\n setIsShowPopup: PropTypes.func,\n onUpdateParams: PropTypes.func\n}\n\nImageResponseItem.displayName = 'ImageResponseItem'\n\nexport default ImageResponseItem\n","import React, { memo, useCallback, useContext, useEffect, useRef, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { OEContext } from '@aytm/app/stats/page/comments'\nimport ImageResponse from '@aytm/app/stats/page/comments/image-responses/ImageResponse'\nimport { range } from '@aytm/app/stats/page/comments/lib/utils'\nimport Button from '@aytm/lib/rfd-ui/components/basic/button'\nimport scrollToElement from 'scroll-to-element'\nimport { DEFAULT_SELECTED_QUESTION } from '@aytm/app/stats/page/comments/lib/constants'\n\nimport style from '@aytm/app/stats/page/comments/styles/index.module.scss'\n\nconst PageDataImageResponses = memo(\n ({\n reportId,\n responsesOptions,\n showTraitsRef,\n responseOrderRef,\n isFilterDuplicates,\n isShowHiddenFilters,\n currentResponse,\n onCloseNotification,\n onChangeFilterDuplicates,\n onUpdateParams,\n onPageChange\n }) => {\n const { searchState } = useContext(OEContext)\n\n const { request, totalPages, isLoading, isProcessing, isAdmin } = searchState\n const { currentPage, selectedQuestion } = request\n\n const [isShowPopup, setIsShowPopup] = useState(null)\n\n const searchStateRef = useRef()\n searchStateRef.current = searchState\n\n const currentResponseRef = useRef()\n currentResponseRef.current = currentResponse\n\n const onKeyDownHandler = useCallback(event => {\n if (27 == event.keyCode) {\n setIsShowPopup(null)\n }\n }, [])\n\n useEffect(() => {\n window.addEventListener('keydown', onKeyDownHandler)\n return () => {\n window.removeEventListener('keydown', onKeyDownHandler)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n useEffect(() => {\n if (!isLoading) return\n\n scrollToElement('#header', {\n offset: 0,\n align: 'top',\n duration: 250\n })\n }, [isLoading])\n\n return (\n <>\n <div className={style['image-responses']}>\n {responsesOptions.pageData && 0 < responsesOptions.pageData.length ? (\n responsesOptions.pageData.map(item => (\n <ImageResponse\n key={`PageDataResponse_${item.response.uid}_${Object.keys(item.answer).join('')}`}\n dataId={`Response_${item.response.uid}_${Object.keys(item.answer).join('')}`}\n reportId={reportId}\n survey={responsesOptions.survey}\n reportVirtual={responsesOptions.reportVirtual}\n reportSchema={responsesOptions.reportSchema}\n response={item}\n showTraitsRef={showTraitsRef}\n responseOrderRef={responseOrderRef}\n isShowHiddenFilters={isShowHiddenFilters}\n isShowPopup={isShowPopup}\n setIsShowPopup={setIsShowPopup}\n onCloseNotification={onCloseNotification}\n onUpdateParams={onUpdateParams}\n />\n ))\n ) : (\n <div className={style['no-results']}>{!isLoading && <>No image responses found</>}</div>\n )}\n {(isLoading || isProcessing) && (\n <div\n className={classNames(style['status-loader'], {\n [style['status-loader-static']]: !responsesOptions.pageData || !responsesOptions.pageData.length\n })}\n >\n <span className={`afd-loader afd-loader-long`}>\n {range(0, 80).map(id => (\n <span key={`loading-span-${id}`} />\n ))}\n </span>\n </div>\n )}\n <div style={{ width: 170, height: 0 }} />\n <div style={{ width: 170, height: 0 }} />\n <div style={{ width: 170, height: 0 }} />\n </div>\n {!isLoading && !isProcessing ? (\n <>\n <div className={style['responses-bottom-paginaton']}>\n <div className={style['right']}>\n {currentPage < totalPages ? (\n <Button\n label=\"NEXT PAGE\"\n disabled={Boolean(isLoading || isProcessing)}\n onClick={isLoading || isProcessing ? null : onPageChange.bind(this, currentPage + 1)}\n />\n ) : null}\n </div>\n <div className={style['left']}>\n {currentPage > 1 ? (\n <Button\n label=\"PREVIOUS PAGE\"\n disabled={isLoading || isProcessing}\n onClick={isLoading || isProcessing ? null : onPageChange.bind(this, currentPage - 1)}\n />\n ) : null}\n </div>\n </div>\n </>\n ) : null}\n <div>\n {isAdmin &&\n !isLoading &&\n !isProcessing &&\n selectedQuestion &&\n selectedQuestion !== DEFAULT_SELECTED_QUESTION ? (\n <div className={style['image-responses-duplicates-toggle']}>\n <span onClick={onChangeFilterDuplicates}>{!isFilterDuplicates ? 'Show' : 'Hide'} duplicates</span>\n </div>\n ) : null}\n </div>\n </>\n )\n }\n)\n\nPageDataImageResponses.propTypes = {\n reportId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n survey: PropTypes.object,\n responsesOptions: PropTypes.object,\n showTraitsRef: PropTypes.object,\n responseOrderRef: PropTypes.object,\n currentResponse: PropTypes.object,\n isShowHiddenFilters: PropTypes.bool,\n isFilterDuplicates: PropTypes.bool,\n setCurrentResponse: PropTypes.func,\n onCloseNotification: PropTypes.func,\n onUpdateParams: PropTypes.func,\n onPageChange: PropTypes.func,\n onChangeFilterDuplicates: PropTypes.func\n}\n\nPageDataImageResponses.displayName = 'PageDataImageResponses'\n\nexport default PageDataImageResponses\n","import React, { useContext, useCallback, useMemo, useState } from 'react'\nimport PropTypes from 'prop-types'\n\nimport style from '@aytm/app/stats/page/comments/styles/index.module.scss'\nimport classNames from 'classnames'\nimport { CSS_SUPPORTS_STICKY } from '@aytm/lib/common/func'\n\n//components\nimport Popup from '@aytm/lib/rfd-ui/components/basic/popup'\nimport Select from '@aytm/lib/rfd-ui/components/basic/select'\nimport InlineSelect from '@aytm/lib/rfd-ui/components/basic/inline-select'\nimport Pagination from '@aytm/lib/rfd-ui/components/advanced/pagination'\nimport { questionOldIdToId, removeLogicFromText } from '@aytm/app/stats/page/comments/lib/utils'\nimport {\n DEFAULT_SELECTED_QUESTION,\n IMAGE_RESPONSES_PER_PAGE_OPTIONS,\n ORDER_BY_OPTIONS_IMAGES\n} from '@aytm/app/stats/page/comments/lib/constants'\nimport { OEContext } from '@aytm/app/stats/page/comments'\nimport downloadAndPackImages from '@aytm/app/stats/page/comments/lib/download/invoke'\nconst getPerPageOptions = () => IMAGE_RESPONSES_PER_PAGE_OPTIONS\n\nconst SurveyHeaderComments = ({\n readOnly,\n questionsOptionsList,\n currentResponse,\n onSelectedQuestionChange,\n onPageChange,\n fetchData\n}) => {\n const { searchState, dispatch } = useContext(OEContext)\n\n const { request, totalPages, totalImageResponses, isQAMode, isLoading, isProcessing } = searchState\n const { selectedQuestion, pageSize, currentPage, orderBy, orderDirection } = request\n\n const [downloadInProgress, setDownloadInProgress] = useState(false)\n const [downloadProgress, setDownloadProgress] = useState(0)\n\n const question = useMemo(\n () => questionsOptionsList.toJS().find(q => q.value == selectedQuestion) || null,\n [questionsOptionsList, selectedQuestion]\n )\n const questionsOptionsListSelect = useMemo(\n () =>\n questionsOptionsList\n .filter(item => !item.get('isOptionHidden'))\n .map(item => item.set('text', removeLogicFromText(item.get('text').replace(/<br>/g, ' ')))),\n [questionsOptionsList]\n )\n\n const orderByOptions = useMemo(\n () =>\n ORDER_BY_OPTIONS_IMAGES.filter(item =>\n 'similarity' !== item.get('value')\n ? true\n : window.features.oe_sort_similarity && 'on' == window.features.oe_sort_similarity?.status\n ).map(item => {\n let newItem = item\n // disable for specific question type\n if (newItem.get('forType') && (!question || (question && question.type !== item.get('forType')))) {\n newItem = newItem.set('disabled', true)\n }\n if (newItem.get('value') == orderBy) {\n newItem = newItem.set('text', `${newItem.get('text')} ${'asc' == orderDirection ? '↑' : '↓'}`)\n }\n return newItem\n }),\n [orderDirection, orderBy, question]\n )\n\n const onSelectOrderBy = option => {\n dispatch({ type: 'SET_PARAM', request: { name: 'isPreserveState', value: true } })\n if (option._root.entries[0][1] == orderBy) {\n dispatch({\n type: 'SET_REQUEST_PARAM',\n request: {\n name: 'orderDirection',\n value: 'asc' == orderDirection ? 'desc' : 'asc'\n }\n })\n } else {\n dispatch({\n type: 'SET_REQUEST_PARAM_SET',\n request: {\n orderBy: option._root.entries[0][1],\n orderDirection: option._root.entries[3][1]\n }\n })\n }\n }\n\n const onSelectQuestion = option => {\n const selected = option.get('value')\n dispatch({ type: 'SET_PARAM', request: { name: 'isPreserveState', value: true } })\n dispatch({\n type: 'SET_REQUEST_PARAM_SET',\n request: {\n selectedQuestion: selected,\n currentPage: 1\n }\n })\n if (onSelectedQuestionChange && 'function' == typeof onSelectedQuestionChange) {\n onSelectedQuestionChange(selected)\n }\n }\n\n const onLoadPerPage = option => {\n const newPageSize = option._root.entries[0][1]\n if (pageSize !== newPageSize) {\n const newCurrentPage = Math.ceil(\n null !== currentResponse ? (pageSize * (currentPage - 1) + currentResponse.index + 1) / newPageSize : 1\n )\n dispatch({\n type: 'SET_PARAMS',\n request: { value: { isProcessing: Math.ceil(totalImageResponses / newPageSize), isPreserveState: true } }\n })\n dispatch({\n type: 'SET_REQUEST_PARAM_SET',\n request: {\n pageSize: newPageSize,\n currentPage: newCurrentPage\n }\n })\n }\n }\n\n const onEveryFileCallback = (percent = 0) => {\n setDownloadProgress(Math.ceil(percent))\n }\n\n const onFinishCallback = () => {\n setDownloadInProgress(false)\n setDownloadProgress(0)\n }\n\n const onDownloadAllClick = () => {\n setDownloadInProgress(true)\n const filename = `AYTM-Survey-${window.surveyId}-Image-Response-${\n selectedQuestion !== DEFAULT_SELECTED_QUESTION ? selectedQuestion : 'ALL'\n }.zip`\n fetchData({\n customParams: {\n pageSize: totalImageResponses,\n currentPage: 1\n },\n customFetchDataCallback: ({ cs }) => {\n const files = cs.reduce((acc, response) => {\n Object.keys(response.answer).forEach(k => {\n if (response.answer[k].i && response.answer[k].i.original) {\n acc.push({\n filename: `AYTM-Survey-${window.surveyId}-Image-Response-${response.response.uid}_${questionOldIdToId(\n k\n )}.jpg`,\n url: response.answer[k].i.original.url\n })\n }\n })\n return acc\n }, [])\n downloadAndPackImages(filename, files, onEveryFileCallback, onFinishCallback)\n }\n })\n }\n\n const renderHelpContent = useCallback(\n () => (\n <div>\n {orderByOptions.map(opt => (\n <p key={`descriptionpopup-${opt.get('value')}`} style={{ marginBottom: 10 }}>\n <b style={{ textTransform: 'capitalize' }}>\n {'id' == opt.get('value') ? opt.get('value').toUpperCase() : opt.get('value')}\n </b>{' '}\n - {opt.get('description')}\n </p>\n ))}\n </div>\n ),\n [orderByOptions]\n )\n\n return (\n <>\n <div\n className={classNames(`${style['comments-header']} stats-comments-header`, {\n 'stats-comments-header-static': !CSS_SUPPORTS_STICKY\n })}\n key=\"input\"\n >\n <div className={`${style['comments-header-toolbar']} ${style['imageResponses']}`}>\n <div className={style['comments-header-toolbar-questions']}>\n <Select\n placeholder=\"Select Question\"\n width={'100%'}\n options={questionsOptionsListSelect}\n value={selectedQuestion || DEFAULT_SELECTED_QUESTION}\n showSelected={true}\n error={false}\n disabled={readOnly || isQAMode}\n onSelect={onSelectQuestion}\n />\n </div>\n <div className={style['comments-header-toolbar-actions']}>\n <a\n className={classNames(`rfd-ui-button ${style['download-button']}`, {\n [style['disabled']]: !totalImageResponses || downloadInProgress || isLoading || isProcessing,\n [style['in-progress']]: downloadInProgress\n })}\n download\n onClick={onDownloadAllClick}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {downloadInProgress ? `Downloading ${downloadProgress}%` : 'DOWNLOAD'}\n </a>\n <div className={style['comments-header-toolbar-actions-sort']}>\n <Select\n allowReselection\n placeholder=\"Sort\"\n options={orderByOptions}\n width={140}\n disabled={readOnly}\n error={false}\n value={orderBy}\n showSelected={true}\n onSelect={onSelectOrderBy}\n />\n <Popup\n className=\"rfd-ui-popup-notification\"\n trigger=\"click\"\n width=\"300px\"\n direction=\"bottomright\"\n popupOffset={14}\n content={renderHelpContent}\n >\n <i className=\"icon-aytmfd-help\" />\n </Popup>\n </div>\n <div className={`${style['comments-header-search-per-page']} ${style['imageResponses']}`}>\n {totalImageResponses <= 12 ? (\n <>{totalImageResponses} found</>\n ) : (\n <InlineSelect\n fetchOptions={getPerPageOptions}\n width={100}\n value={pageSize}\n disabled={readOnly}\n onSelect={onLoadPerPage}\n >\n {totalImageResponses < pageSize ? (\n <>{totalImageResponses} found</>\n ) : (\n <>\n {pageSize}/{totalImageResponses}\n </>\n )}\n </InlineSelect>\n )}\n </div>\n <div className={style['comments-header-search-pagination']}>\n <Pagination\n page={currentPage}\n total={totalPages}\n prefix={totalPages < 100 ? 'Page ' : ''}\n separator={'/'}\n disabled={false}\n onPageChange={onPageChange}\n />\n </div>\n </div>\n </div>\n </div>\n </>\n )\n}\n\nSurveyHeaderComments.propTypes = {\n readOnly: PropTypes.bool,\n isHighlightSearchTerms: PropTypes.bool,\n pageData: PropTypes.array,\n questionsOptionsList: PropTypes.object,\n currentResponse: PropTypes.object,\n setIsHighlightSearchTerms: PropTypes.func,\n onSelectedQuestionChange: PropTypes.func,\n onPageChange: PropTypes.func,\n onUpdateSchema: PropTypes.func,\n fetchData: PropTypes.func\n}\n\nSurveyHeaderComments.displayName = 'SurveyHeader'\n\nexport default SurveyHeaderComments\n","import { useRef, useEffect } from 'react'\nimport { convertTraits } from '@aytm/app/stats/lib/traits'\nimport { getRejectsAndKudos } from '@aytm/app/stats/page/comments/lib/utils'\nimport { AbortController as _abortControllerPolyfill } from 'abortcontroller-polyfill/dist/cjs-ponyfill'\nimport { DEFAULT_FETCH_TIMEOUT, FETCH_TIMEOUT_STEP } from '@aytm/app/stats/page/comments/lib/constants'\nimport { fetchSearchResults } from '@aytm/app/stats/page/comments/apiCalls'\n\n/* compat/compat disabled because polyfill is used */\n// eslint-disable-next-line compat/compat\nconst AbortController = window.AbortController || _abortControllerPolyfill\n\nlet fetchTimeout = DEFAULT_FETCH_TIMEOUT\nlet fetchDebounceTimeout = 0\nlet fetchTimer = null\n\nconst useFetchDataImageResponses = ({\n apiKey,\n dispatch,\n dispatchCommentStatuses,\n searchStateRef,\n surveyData,\n setSurvey,\n specialMode,\n onNoSchema,\n onBeforeFetch,\n onFetch,\n onInvalidKey\n}) => {\n const abortController = useRef(null)\n\n const { isPreserveState, request } = searchStateRef.current\n const { query, selectedQuestion, pageSize, orderBy, orderDirection, currentPage } = request\n\n const fetchDataCallback = async data => {\n const { cs } = data\n\n dispatch({ type: 'SET_PARAM', request: { name: 'isProcessing', value: true } })\n\n // eslint-disable-next-line unicorn/consistent-destructuring\n const _survey = data.survey || surveyData.survey || {}\n\n const assets = data.assets || surveyData.survey.assets || {}\n const traits = convertTraits(_survey)\n\n let codeBooks = _survey.codeBooks\n if (!Array.isArray(codeBooks)) {\n codeBooks = Object.keys(codeBooks || {}).reduce(\n (acc, cur) => acc.concat(codeBooks[cur].map(codebook => Object.assign({ type: cur }, codebook))),\n []\n )\n }\n\n await setSurvey(\n Object.assign({}, _survey, {\n assets,\n traits,\n codeBooks\n })\n )\n\n dispatch({ type: 'SEARCH_RESULTS', data: { data, pageSize, specialMode } })\n dispatchCommentStatuses({\n type: 'BATCH_DATA',\n data: { batchData: getRejectsAndKudos(cs), isPreserveState }\n })\n dispatch({ type: 'SET_PARAM', request: { name: 'isPreserveState', value: false } })\n\n fetchTimeout = DEFAULT_FETCH_TIMEOUT\n }\n\n const fetchData = async (\n { includeSchema = false, customParams = {}, customFetchDataCallback = null } = {},\n fetchDataComplete = null\n ) => {\n try {\n if (null !== abortController.current) {\n abortController.current.abort()\n abortController.current = null\n }\n\n abortController.current = new AbortController()\n\n const { signal } = abortController.current\n const data = await fetchSearchResults({\n query,\n selectedQuestion,\n currentPage,\n pageSize,\n orderBy,\n orderDirection,\n flattenAnswers: true,\n includeSchema: includeSchema || (!customFetchDataCallback && surveyData.survey == undefined),\n signal,\n ...customParams\n })\n switch (data.status) {\n case 'OK': {\n if (null !== customFetchDataCallback) {\n dispatch({ type: 'SET_PARAM', request: { name: 'isLoading', value: false } })\n\n customFetchDataCallback(data)\n } else {\n if (\n window.shareKey == undefined &&\n data.survey != undefined &&\n data.survey.target_market.quotas == undefined\n ) {\n if (onNoSchema && 'function' == typeof onNoSchema) {\n onNoSchema(_data => {\n dispatch({ type: 'SET_PARAM', request: { name: 'isLoading', value: false } })\n\n fetchDataCallback(_data)\n if (fetchDataComplete && 'function' == typeof fetchDataComplete) {\n fetchDataComplete()\n }\n }, data)\n }\n } else {\n dispatch({ type: 'SET_PARAM', request: { name: 'isLoading', value: false } })\n\n fetchDataCallback(data)\n if (fetchDataComplete && 'function' == typeof fetchDataComplete) {\n fetchDataComplete()\n }\n\n if (onFetch && 'function' == typeof onFetch) {\n onFetch(data)\n }\n }\n }\n break\n }\n case 'RUNNING': {\n fetchTimeout += FETCH_TIMEOUT_STEP\n fetchTimer = setTimeout(() => {\n fetchTimer = null\n fetchData({ includeSchema, customParams, customFetchDataCallback }, fetchDataComplete)\n }, fetchTimeout)\n break\n }\n case 'NO SCHEMA': {\n if (onNoSchema && 'function' == typeof onNoSchema) {\n onNoSchema(_data => {\n dispatch({ type: 'SET_PARAM', request: { name: 'isLoading', value: false } })\n\n fetchDataCallback(_data)\n if (fetchDataComplete && 'function' == typeof fetchDataComplete) {\n fetchDataComplete()\n }\n }, data)\n }\n break\n }\n case 'INVALID KEY': {\n if (onInvalidKey && 'function' == typeof onInvalidKey) {\n onInvalidKey(fetchDataComplete)\n }\n break\n }\n default: {\n dispatch({ type: 'FAILURE', error: { name: 'CustomError', message: 'Something happen' } })\n }\n }\n fetchDebounceTimeout = 0\n\n abortController.current = null\n } catch (error) {\n if (!error.name || (error.name && 'AbortError' !== error.name)) {\n dispatch({ type: 'FAILURE', error })\n }\n\n fetchTimeout = DEFAULT_FETCH_TIMEOUT\n fetchDebounceTimeout = 0\n }\n }\n\n const fetchDataDelay = (force = false, fetchDataComplete) => {\n dispatch({ type: 'SEARCH_INIT' })\n onBeforeFetch && 'function' == typeof onBeforeFetch && onBeforeFetch()\n\n if (null !== fetchTimer) {\n clearTimeout(fetchTimer)\n fetchTimer = null\n }\n\n if (null !== abortController.current) {\n abortController.current.abort()\n abortController.current = null\n }\n\n const callback = () => {\n fetchTimer = null\n\n if (null === apiKey) {\n // fetchDataCallback(getDefaultData())\n return\n }\n\n fetchData({ includeSchema: force }, fetchDataComplete)\n }\n\n if (0 < fetchDebounceTimeout) {\n fetchTimer = setTimeout(callback, fetchDebounceTimeout)\n } else callback()\n }\n\n // eslint-disable-next-line unicorn/consistent-function-scoping\n const fetchDataDestroy = () => {\n fetchTimeout = DEFAULT_FETCH_TIMEOUT\n fetchDebounceTimeout = 1000\n\n if (null !== fetchTimer) {\n clearTimeout(fetchTimer)\n fetchTimer = null\n }\n\n if (null !== abortController.current) {\n abortController.current?.abort()\n abortController.current = null\n }\n }\n\n // normal mode fetch data effect\n useEffect(() => {\n fetchDataDelay()\n\n // eslint-disable-next-line consistent-return\n return () => fetchDataDestroy()\n // disabled: fetchDataDelay is const\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [apiKey, query, selectedQuestion, pageSize, currentPage, orderBy, orderDirection])\n\n return [fetchData, fetchDataDelay]\n}\n\nexport default useFetchDataImageResponses\n","import { useEffect } from 'react'\nimport { difference, isEqual } from 'lodash'\nimport { convertTraits } from '@aytm/app/stats/lib/traits'\n\nimport { decodeText } from '@aytm/app/stats/lib/helpers'\nimport { mapReportSearchQuery, getTagsList, getIsDefaultReportParams } from '@aytm/app/stats/page/comments/lib/utils'\nimport {\n DEFAULT_ORDER_BY,\n DEFAULT_PER_PAGE_IMAGE_RESPONSES,\n DEFAULT_SELECTED_QUESTION,\n ORDER_BY_OPTIONS_IMAGES\n} from '@aytm/app/stats/page/comments/lib/constants'\n\nconst useComments = ({\n dispatch,\n searchStateRef,\n reportParams,\n propsRef,\n responsesOptionsRef,\n survey,\n surveyData,\n setSurvey,\n specialMode,\n questionsOptionsList,\n onQuestionListChange,\n setResponsesOptions,\n reportVirtual,\n reportSchema,\n pageData\n}) => {\n useEffect(() => {\n const traits = convertTraits(surveyData.survey || {})\n const _surveyData = Object.assign({}, surveyData.survey || {}, {\n traits,\n codeBooks: (surveyData.survey || {}).codeBooks || []\n })\n\n if (!isEqual(survey, _surveyData)) {\n setSurvey(_surveyData)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [surveyData])\n\n useEffect(() => {\n if (onQuestionListChange && 'function' == typeof onQuestionListChange) {\n onQuestionListChange(questionsOptionsList.toJS())\n }\n }, [questionsOptionsList, onQuestionListChange])\n\n useEffect(() => {\n const selectedOrderBy =\n reportParams.orderBy && ORDER_BY_OPTIONS_IMAGES.find(item => item.get('value') == reportParams.orderBy)\n const question =\n reportParams.selectedQuestion && reportParams.selectedQuestion !== DEFAULT_SELECTED_QUESTION\n ? reportParams.selectedQuestion\n : null\n const isFailedOrderBy =\n selectedOrderBy &&\n (('similarity' == selectedOrderBy.get('value') && !question) ||\n ('similarity' == selectedOrderBy.get('value') && window.features?.oe_sort_similarity?.status !== 'on'))\n\n const request = {\n query: searchStateRef.current.request.query,\n currentPage: searchStateRef.current.request.currentPage,\n selectedQuestion: reportParams.selectedQuestion || DEFAULT_SELECTED_QUESTION,\n pageSize: reportParams.pageSize || DEFAULT_PER_PAGE_IMAGE_RESPONSES,\n orderBy: !reportParams.orderBy || isFailedOrderBy ? DEFAULT_ORDER_BY : reportParams.orderBy,\n orderDirection: !reportParams.orderDirection || isFailedOrderBy ? 'asc' : reportParams.orderDirection\n }\n\n const reportQuery = reportParams.query\n ? reportParams.query\n : reportParams.searchString\n ? [\n {\n value: decodeText(reportParams.searchString, false),\n label: decodeText(reportParams.searchString, false),\n type: 'plain'\n }\n ]\n : []\n\n if (difference(searchStateRef.current.request.query, mapReportSearchQuery(reportQuery)).length) {\n request.query = mapReportSearchQuery(reportQuery)\n }\n dispatch({\n type: 'SET_REQUEST',\n request: JSON.parse(JSON.stringify(request))\n })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [reportParams])\n\n useEffect(() => {\n if (searchStateRef.current.isProcessing) {\n setResponsesOptions({\n ...responsesOptionsRef.current,\n survey,\n reportVirtual,\n reportSchema\n })\n\n dispatch({\n type: 'SET_PARAMS',\n request: {\n value: { tagsList: getTagsList(survey.tags, { codeBooks: survey.codeBooks }), isProcessing: false }\n }\n })\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [survey, reportVirtual, reportSchema])\n\n useEffect(() => {\n responsesOptionsRef.current.pageData = pageData\n setResponsesOptions({ ...responsesOptionsRef.current })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pageData])\n\n useEffect(() => {\n if (propsRef.current.onUpdateParams) {\n const params = JSON.parse(JSON.stringify(searchStateRef.current.request))\n propsRef.current.onUpdateParams(\n getIsDefaultReportParams(params, specialMode) ? null : params,\n undefined,\n specialMode\n )\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchStateRef.current.request, specialMode])\n}\n\nexport default useComments\n","import React, { useState, useMemo, useRef, useContext } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { convertTraits } from '@aytm/app/stats/lib/traits'\nimport { DEFAULT_SELECTED_QUESTION } from '@aytm/app/stats/page/comments/lib/constants'\nimport { getQuestionsOptionsList } from '@aytm/app/stats/page/comments/lib/utils'\n\nimport { OEContext } from '@aytm/app/stats/page/comments'\n\n// styles\nimport '@aytm/app/stats/page/styles/globals.scss'\nimport '@aytm/app/stats/page/comments/styles/keyframes.scss'\n\nimport style from '@aytm/app/stats/page/comments/styles/index.module.scss'\n\nimport SurveyHeaderImageResponses from '@aytm/app/stats/page/comments/image-responses/components/SurveyHeaderImageResponses'\nimport PageDataImageResponses from '@aytm/app/stats/page/comments/image-responses/PageDataImageResponses'\nimport useFetchDataImageResponses from '@aytm/app/stats/page/comments/image-responses/hooks/useFetchDataImageResponses'\nimport useImageResponses from '@aytm/app/stats/page/comments/image-responses/hooks/useImageResponses'\n\nconst ImageResponses = props => {\n const {\n specialMode,\n surveyData,\n reportId,\n apiKey,\n reportParams = {},\n reportVirtual,\n reportSchema,\n loadRejectedCS,\n isShowHiddenFilters,\n isAdvancedFiltersDisabled,\n isSpecialsSortingDisabled,\n isFilterDuplicates,\n onBeforeFetch,\n onFetch,\n onUpdateSchema,\n onNoSchema,\n onInvalidKey,\n onCreateFilter,\n onQuestionListChange,\n onChangeFilterDuplicates,\n onSelectedQuestionChange\n } = props\n\n const { searchState, dispatch, dispatchCommentStatuses } = useContext(OEContext)\n\n const { pageData = [], disabled: readOnly, errors } = searchState\n\n const [survey, setSurvey] = useState(\n Object.assign({}, surveyData.survey || {}, {\n traits: convertTraits(surveyData.survey || {}),\n codeBooks: (surveyData.survey || {}).codeBooks || []\n })\n )\n const [currentResponse, setCurrentResponse] = useState(null)\n const [responsesOptions, setResponsesOptions] = useState({\n survey,\n reportParams,\n reportVirtual,\n reportSchema,\n selectedQuestion: reportParams.selectedQuestion || DEFAULT_SELECTED_QUESTION\n })\n\n const showTraitsRef = useRef({})\n const responseOrderRef = useRef({})\n\n const searchStateRef = useRef()\n searchStateRef.current = searchState\n\n const responsesOptionsRef = useRef()\n responsesOptionsRef.current = responsesOptions\n\n const propsRef = useRef()\n propsRef.current = props\n const surveyRef = useRef()\n surveyRef.current = survey\n\n const isSpecialsSortingDisabledRef = useRef()\n isSpecialsSortingDisabledRef.current = isSpecialsSortingDisabled\n\n const questionsOptionsList = useMemo(\n () =>\n getQuestionsOptionsList(\n responsesOptions.survey,\n responsesOptions.reportVirtual,\n responsesOptions.reportSchema,\n responsesOptions.selectedQuestion,\n specialMode\n ),\n [responsesOptions, specialMode]\n )\n\n const [fetchData] = useFetchDataImageResponses({\n apiKey,\n dispatch,\n dispatchCommentStatuses,\n searchStateRef,\n propsRef,\n responsesOptionsRef,\n surveyData,\n survey,\n setSurvey,\n specialMode,\n onNoSchema,\n onBeforeFetch,\n onFetch,\n onInvalidKey\n })\n\n useImageResponses({\n apiKey,\n dispatch,\n searchStateRef,\n reportParams,\n propsRef,\n responsesOptionsRef,\n surveyData,\n survey,\n setSurvey,\n specialMode,\n questionsOptionsList,\n onQuestionListChange,\n setResponsesOptions,\n reportVirtual,\n reportSchema,\n pageData\n })\n\n const onPageChange = page => {\n const request = {\n currentPage: page\n }\n dispatch({\n type: 'SET_REQUEST_PARAM_SET',\n request\n })\n }\n\n return (\n <div style={{ minHeight: 500 }}>\n {errors.length ? (\n <div className={style['comments-errors']}>\n <h3>Error</h3>\n {errors.map(error => (\n <div key={`error${error.name}`}>{error.message}</div>\n ))}\n </div>\n ) : (\n <div className={`${style['comments-container']} stats-comments`}>\n <div className={style['white-overlay']} />\n <SurveyHeaderImageResponses\n readOnly={readOnly}\n pageData={responsesOptions.pageData}\n questionsOptionsList={questionsOptionsList}\n showTraitsRef={showTraitsRef}\n isAdvancedFiltersDisabled={isAdvancedFiltersDisabled}\n isSpecialsSortingDisabled={isSpecialsSortingDisabled}\n responseOrderRef={responseOrderRef}\n currentResponse={currentResponse}\n loadRejectedCS={loadRejectedCS}\n onCreateFilter={onCreateFilter}\n onSelectedQuestionChange={onSelectedQuestionChange}\n onUpdateSchema={onUpdateSchema}\n onPageChange={onPageChange}\n fetchData={fetchData}\n />\n <PageDataImageResponses\n reportId={reportId}\n apiKey={apiKey}\n responsesOptions={responsesOptions}\n setResponsesOptions={setResponsesOptions}\n showTraitsRef={showTraitsRef}\n responseOrderRef={responseOrderRef}\n isShowHiddenFilters={isShowHiddenFilters}\n isFilterDuplicates={isFilterDuplicates}\n currentResponse={currentResponse}\n setCurrentResponse={setCurrentResponse}\n onChangeFilterDuplicates={onChangeFilterDuplicates}\n onUpdateParams={propsRef.current.onUpdateParams}\n onPageChange={onPageChange}\n />\n </div>\n )}\n </div>\n )\n}\n\nImageResponses.propTypes = {\n specialMode: PropTypes.string,\n surveyData: PropTypes.object,\n reportId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n apiKey: PropTypes.object,\n statUrl: PropTypes.string,\n statActionsUrl: PropTypes.string,\n CSRF: PropTypes.string,\n questionId: PropTypes.string,\n loadRejectedCS: PropTypes.string,\n reportParams: PropTypes.object,\n reportVirtual: PropTypes.object,\n reportSchema: PropTypes.array,\n isAdmin: PropTypes.bool,\n isSurveyGuest: PropTypes.bool,\n isShowHiddenFilters: PropTypes.bool,\n isAdvancedFiltersDisabled: PropTypes.bool,\n isTagsManagementDisabled: PropTypes.bool,\n isSentimentsManagementDisabled: PropTypes.bool,\n isSpecialsSortingDisabled: PropTypes.bool,\n isSurveyOwner: PropTypes.bool,\n isFilterDuplicates: PropTypes.bool,\n onChangeFilterDuplicates: PropTypes.func,\n onBeforeFetch: PropTypes.func,\n onFetch: PropTypes.func,\n onNoSchema: PropTypes.func,\n onInvalidKey: PropTypes.func,\n onCreateFilter: PropTypes.func,\n onUpdateParams: PropTypes.func,\n onUpdateSchema: PropTypes.func,\n onQuestionListChange: PropTypes.func,\n onSelectedQuestionChange: PropTypes.func,\n onQAModeChange: PropTypes.func\n}\n\nImageResponses.displayName = 'ImageResponses'\n\nexport default ImageResponses\n","import React, { useMemo, useReducer } from 'react'\nimport PropTypes from 'prop-types'\n\nimport CommentsOpenEnded from '@aytm/app/stats/page/comments/comments'\nimport ImageResponses from '@aytm/app/stats/page/comments/image-responses'\nimport VideoResponses from '@aytm/app/stats/page/comments/video-responses'\n\nimport { commentStatusesReducer, pageDataReducer } from '@aytm/app/stats/page/comments/reducers'\nimport {\n DEFAULT_COMMENT_STATUSES_STATE,\n DEFAULT_QUERY,\n DEFAULT_ORDER_BY,\n DEFAULT_ORDER_DIRECTION,\n DEFAULT_PER_PAGE,\n DEFAULT_PER_PAGE_IMAGE_RESPONSES,\n DEFAULT_PER_PAGE_VIDEO_RESPONSES,\n DEFAULT_SEARCH_STATE,\n DEFAULT_SELECTED_QUESTION\n} from '@aytm/app/stats/page/comments/lib/constants'\nimport { setCsApiKey, setStatActionsUrl, setStatUrl } from '@aytm/app/stats/page/comments/apiCalls'\n\nexport const OEContext = React.createContext()\n\nconst Comments = props => {\n const {\n specialMode = 'comments',\n imagesData,\n CSRF,\n apiKey,\n statUrl,\n statActionsUrl,\n reportParams,\n sentimentOptions,\n windowUID,\n isAdmin,\n isSurveyOwner,\n isSurveyGuest,\n isRejectAvailable,\n isShowAllTools,\n isQAModeDisabled,\n isTagsManagementDisabled,\n isSentimentsManagementDisabled,\n isShowCorrectionsDisabled,\n ...rest\n } = props\n\n // set API endpoints\n setCsApiKey(apiKey)\n setStatUrl(statUrl)\n setStatActionsUrl(statActionsUrl)\n\n const components = {\n comments: CommentsOpenEnded,\n 'image-responses': ImageResponses,\n 'video-responses': VideoResponses\n }\n\n const [searchState, dispatch] = useReducer(pageDataReducer, {\n ...DEFAULT_SEARCH_STATE,\n CSRF,\n sentimentOptions,\n request: {\n ...DEFAULT_SEARCH_STATE.request,\n query: reportParams.query || DEFAULT_QUERY,\n selectedQuestion: reportParams.selectedQuestion || DEFAULT_SELECTED_QUESTION,\n pageSize:\n reportParams.pageSize ||\n ('image-responses' == specialMode\n ? DEFAULT_PER_PAGE_IMAGE_RESPONSES\n : 'video-responses' == specialMode\n ? DEFAULT_PER_PAGE_VIDEO_RESPONSES\n : DEFAULT_PER_PAGE),\n orderBy: reportParams.orderBy || DEFAULT_ORDER_BY,\n orderDirection: reportParams.orderDirection || DEFAULT_ORDER_DIRECTION\n },\n isAdmin,\n isSurveyOwner,\n isSurveyGuest,\n isRejectAvailable,\n isShowAllTools: isShowAllTools || false,\n isShowAllTraits: false,\n isQAModeDisabled,\n isTagsManagementDisabled,\n isSentimentsManagementDisabled,\n isShowCorrectionsDisabled,\n isShowSentiments: !isSentimentsManagementDisabled,\n isVideoResponsesMode: 'video-responses' == specialMode\n })\n const [commentStatusesState, dispatchCommentStatuses] = useReducer(\n commentStatusesReducer,\n DEFAULT_COMMENT_STATUSES_STATE\n )\n\n const oeContextValue = useMemo(() => {\n return { windowUID, imagesData, searchState, dispatch, commentStatusesState, dispatchCommentStatuses }\n }, [windowUID, imagesData, searchState, dispatch, commentStatusesState, dispatchCommentStatuses])\n\n const Component = components[specialMode]\n\n return (\n <OEContext.Provider value={oeContextValue}>\n <Component\n apiKey={apiKey}\n specialMode={specialMode}\n reportParams={reportParams}\n sentimentOptions={sentimentOptions}\n windowUID={windowUID}\n {...rest}\n />\n </OEContext.Provider>\n )\n}\n\nComments.propTypes = {\n specialMode: PropTypes.string,\n surveyData: PropTypes.object,\n imagesData: PropTypes.object,\n reportId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n apiKey: PropTypes.object,\n statUrl: PropTypes.string,\n statActionsUrl: PropTypes.string,\n CSRF: PropTypes.string,\n questionId: PropTypes.string,\n loadRejectedCS: PropTypes.string,\n reportParams: PropTypes.object,\n sentimentOptions: PropTypes.object,\n reportVirtual: PropTypes.object,\n reports: PropTypes.array,\n reportSchema: PropTypes.array,\n windowUID: PropTypes.string,\n isAdmin: PropTypes.bool,\n isSurveyOwner: PropTypes.bool,\n isSurveyGuest: PropTypes.bool,\n isRejectAvailable: PropTypes.bool,\n isShowAllTools: PropTypes.bool,\n isShowHiddenFilters: PropTypes.bool,\n isFilterDuplicates: PropTypes.bool,\n isAdvancedFiltersDisabled: PropTypes.bool,\n isQAModeDisabled: PropTypes.bool,\n isTagsManagementDisabled: PropTypes.bool,\n isSentimentsManagementDisabled: PropTypes.bool,\n isShowCorrectionsDisabled: PropTypes.bool,\n isAiAssistantsOECodingDisabled: PropTypes.bool,\n isSpecialsSortingDisabled: PropTypes.bool,\n onTagsLoad: PropTypes.func,\n onTagsFetch: PropTypes.func,\n onBeforeFetch: PropTypes.func,\n onFetch: PropTypes.func,\n onNoSchema: PropTypes.func,\n onInvalidKey: PropTypes.func,\n onCreateFilter: PropTypes.func,\n onUpdateParams: PropTypes.func,\n onUpdateSchema: PropTypes.func,\n onQuestionListChange: PropTypes.func,\n onSelectedQuestionChange: PropTypes.func,\n onQAModeChange: PropTypes.func\n}\n\nComments.displayName = 'Comments'\n\nexport default Comments\n","export default function downloadAndPackImages(\n filename = '',\n files = [],\n onEveryFileCallback = null,\n onFinishCallback = null\n) {\n import('@aytm/app/stats/page/comments/lib/download/runtime').then(module => {\n module.download(filename, files, onEveryFileCallback, onFinishCallback)\n })\n}\n","import JSZip from 'jszip'\nimport StreamSaver from 'streamsaver'\nimport { WritableStream, TransformStream } from 'web-streams-polyfill/ponyfill'\n\nconst state = {\n downloading: false,\n eventWriter: null\n}\n\nconst resetState = function () {\n state.downloading = false\n state.eventWriter = null\n}\n\n// To test this method in dev env, run statistics page from localhost domain, i.e. http://localhost:3000/surveys/566199/stat\n// This technology uses service workers, which are not allowed to run in insecure context\nexport function download(filename = '', files = [], onEveryFileCallback = null, onFinishCallback = null) {\n if (state.downloading) return\n state.downloading = true\n\n const zip = new JSZip()\n const downloadingFiles = files.map(function (fileData) {\n const request = new XMLHttpRequest()\n const promise = new Promise(function (resolve, reject) {\n request.responseType = 'blob'\n request.onload = function (_event) {\n resolve(request.response)\n }\n request.onerror = request.onabort = function (event) {\n reject(event)\n }\n })\n\n promise.startRequest = function () {\n request.open('GET', fileData.url, true)\n request.send()\n }\n\n zip.file(fileData.filename, promise, { binary: true })\n return promise\n })\n\n const startNextFileDownload = function () {\n const nextFile = downloadingFiles.shift()\n nextFile && nextFile.startRequest()\n }\n\n StreamSaver.WritableStream = WritableStream\n StreamSaver.TransformStream ||= TransformStream\n StreamSaver.mitm = '/javascripts/lib/StreamSaver/mitm.html'\n\n const fileStream = StreamSaver.createWriteStream(filename)\n const writer = fileStream.getWriter()\n state.eventWriter = writer\n\n const zipStream = zip.generateInternalStream({\n type: 'uint8array',\n compression: 'DEFLATE',\n compressionOptions: { level: 9 }\n })\n let previousFile\n zipStream\n .on('data', function (data, meta) {\n if (meta.currentFile && previousFile != meta.currentFile) {\n previousFile = meta.currentFile\n if (onEveryFileCallback && 'function' == typeof onEveryFileCallback) {\n onEveryFileCallback(meta.percent)\n }\n startNextFileDownload()\n }\n writer.write(data)\n })\n .on('end', function () {\n writer.close()\n if (onFinishCallback && 'function' == typeof onFinishCallback) {\n onFinishCallback()\n }\n resetState()\n })\n .on('error', function () {\n writer.abort()\n if (onFinishCallback && 'function' == typeof onFinishCallback) {\n onFinishCallback()\n }\n resetState()\n })\n startNextFileDownload()\n zipStream.resume()\n}\n\nwindow.addEventListener('unload', function () {\n state.eventWriter && state.eventWriter.abort()\n})\n\nwindow.addEventListener('beforeunload', function (event) {\n if (state.downloading) {\n event.returnValue = 'Download in progress. Are you sure you want to leave?'\n }\n})\n","import { useEffect, useRef } from 'react'\n\nconst useEventListener = (eventName, handler, element = window) => {\n const savedHandler = useRef()\n\n // Update ref.current value if handler changes.\n // This allows our effect below to always get latest handler ...\n // ... without us needing to pass it in effect deps array ...\n // ... and potentially cause effect to re-run every render.\n useEffect(() => {\n savedHandler.current = handler\n }, [handler])\n\n useEffect(\n () => {\n const isSupported = element && element.addEventListener\n if (!isSupported) return\n const eventListener = event => savedHandler.current(event)\n element.addEventListener(eventName, eventListener)\n\n // eslint-disable-next-line consistent-return\n return () => {\n element.removeEventListener(eventName, eventListener)\n }\n },\n [eventName, element] // Re-run if eventName or element changes\n )\n}\n\nexport default useEventListener\n","import { useRef, useEffect } from 'react'\n\nconst useNonInitialEffect = (effect, deps) => {\n const initialRender = useRef(true)\n\n // eslint-disable-next-line consistent-return\n useEffect(() => {\n let effectReturns = () => {}\n\n if (initialRender.current) {\n initialRender.current = false\n } else {\n effectReturns = effect()\n }\n\n if (effectReturns && 'function' == typeof effectReturns) {\n return effectReturns\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps)\n}\n\nexport default useNonInitialEffect\n","import { useContext, useEffect } from 'react'\n\nconst useResponseStatus = (OEContext, responseId, action, onKeyDownHandler) => {\n const { searchState, commentStatusesState } = useContext(OEContext)\n const { isQAMode, qaAction, qaTotal, qaCounter, isLoading, isProcessing, qaProcessedResponseId } = searchState\n const status = commentStatusesState[action][responseId]\n\n useEffect(() => {\n if (isQAMode) {\n window.addEventListener('keydown', onKeyDownHandler)\n }\n return () => {\n window.removeEventListener('keydown', onKeyDownHandler)\n }\n }, [isQAMode, onKeyDownHandler])\n\n return { status, isQAMode, qaAction, qaTotal, qaCounter, isLoading, isProcessing, qaProcessedResponseId }\n}\n\nexport default useResponseStatus\n","import { isEqual } from 'lodash'\n\nimport { mergePageData, checkSentimentStatus, getNodeCommentablePaths } from '@aytm/app/stats/page/comments/lib/utils'\nimport { DEFAULT_SEARCH_STATE } from '@aytm/app/stats/page/comments/lib/constants'\n\nexport const pageDataReducer = (state = DEFAULT_SEARCH_STATE, action) => {\n switch (action.type) {\n case 'SEARCH_INIT': {\n return {\n ...state,\n errors: [],\n isLoading: true,\n disabled: true\n }\n }\n case 'SET_PARAM': {\n const { name, value } = action.request\n return {\n ...state,\n [name]: value\n }\n }\n case 'SET_PARAMS': {\n const { value } = action.request\n return {\n ...state,\n ...value\n }\n }\n case 'SET_QA_MODE': {\n const { value } = action.request\n return {\n ...state,\n isQAMode: value,\n isQALoading: value ? true : state.isQALoading\n }\n }\n case 'ADD_PROCESSED_QA': {\n const { responseId } = action.request\n if (!state.processedQA.includes(responseId)) {\n state.processedQA.push(responseId)\n }\n return {\n ...state,\n processedQA: [...state.processedQA]\n }\n }\n case 'SET_REQUEST': {\n const { request } = action\n return isEqual(request, state.request)\n ? state\n : {\n ...state,\n request\n }\n }\n case 'SET_REQUEST_PARAM': {\n const { name, value } = action.request\n return {\n ...state,\n request: {\n ...state.request,\n [name]: value\n }\n }\n }\n case 'SET_REQUEST_PARAM_SET': {\n const { request } = action\n return isEqual(request, state.request)\n ? state\n : {\n ...state,\n request: {\n ...state.request,\n ...request\n }\n }\n }\n case 'SEARCH_RESULTS': {\n const { data, pageSize, specialMode = 'comments' } = action.data\n const { survey, cs, tags, tagsByPath, totals } = data\n\n const isOnePerPage = state.isQAMode && 1 == pageSize\n const pageData = isOnePerPage\n ? mergePageData([...(state.pageData || [])], cs, state.processedQA)\n : [...(cs || [])] || []\n\n return {\n ...state,\n pageData,\n tagsData: {\n tags,\n tagsStats: survey?.tagsStats || state.tagsData?.tagsStats || {},\n tagsByPath,\n totals\n },\n totalPages:\n 'image-responses' == specialMode\n ? Math.ceil((totals && totals.totalImageResponses ? totals.totalImageResponses : 0) / pageSize)\n : Math.ceil((totals && totals.respondents ? totals.respondents : 0) / pageSize),\n totalComments: totals.totalComments || 0,\n totalImageResponses: totals.totalImageResponses || 0,\n totalVideoResponses: totals.totalVideoResponses || 0,\n totalResponses: state.isQAMode ? totals.respondents : totals.responses,\n totalRespondents: totals.totalRespondents,\n qaTotal: state.isQAMode\n ? (!state.qaTotal && pageData.length) || (isOnePerPage && totals.responses <= state.qaTotal)\n ? totals.responses\n : state.qaTotal\n : null,\n disabled: false,\n isUpdateQATotal: false\n }\n }\n case 'TAG_MASS_UPDATED': {\n const { tags, tag, newValue } = action.data\n return {\n ...state,\n pageData: tags\n ? state.pageData.map(item => {\n item.tags = (item.tags || []).map(itemTag => {\n if (Object.hasOwn(tags, itemTag.tag) && tags[itemTag.tag].type == itemTag.type) {\n itemTag.tag = tags[itemTag.tag].newValue\n }\n return itemTag\n })\n return item\n })\n : state.pageData.map(item => {\n item.tags = (item.tags || []).map(itemTag => {\n if (itemTag.tag == tag.tag && itemTag.type == tag.type) {\n itemTag.tag = newValue\n }\n return itemTag\n })\n return item\n })\n }\n }\n case 'TAG_MASS_ADDED': {\n const { tags, tag, path, responseId } = action.data\n\n const updateTag = (item, _tag, _path) => {\n if (!item.tags.some(itemTag => itemTag.tag == _tag.tag && itemTag.type == _tag.type && itemTag.path == _path)) {\n if ('sentiment' == _tag.type) {\n if (item.tags.some(itemTag => 'sentiment' == itemTag.type && itemTag.path == _path)) {\n item.tags = item.tags.map(itemTag => {\n if ('sentiment' == itemTag.type && itemTag.path == _path) {\n itemTag.tag = _tag.tag\n }\n return itemTag\n })\n } else if (checkSentimentStatus(_path, state.sentimentOptions)) {\n item.tags.push({ ..._tag, path: _path })\n }\n } else item.tags.push({ ..._tag, path: _path })\n }\n }\n\n return {\n ...state,\n pageData: tags\n ? state.pageData.map(item => {\n if (\n !responseId ||\n '*' == responseId ||\n item.response.uid == responseId ||\n (Array.isArray(responseId) && responseId.includes(item.response.uid))\n ) {\n item.tags ||= []\n Object.keys(tags).forEach(key => {\n if (path != undefined && '*' != path) {\n updateTag(item, tags[key], path)\n } else {\n getNodeCommentablePaths(item.answer, tags[key].type).forEach(path => {\n updateTag(item, tags[key], path)\n })\n }\n })\n }\n return item\n })\n : state.pageData.map(item => {\n if (\n !responseId ||\n '*' == responseId ||\n item.response.uid == responseId ||\n (Array.isArray(responseId) && responseId.includes(item.response.uid))\n ) {\n item.tags ||= []\n if (path != undefined && '*' != path) {\n updateTag(item, tag, path)\n } else {\n getNodeCommentablePaths(item.answer, tag.type).forEach(path => {\n updateTag(item, tag, path)\n })\n }\n }\n return item\n })\n }\n }\n case 'TAG_MASS_CLONED': {\n const { tags, tag, newValue } = action.data\n return {\n ...state,\n pageData: tags\n ? state.pageData.map(item => {\n item.tags = (item.tags || []).reduce((acc, cur) => {\n if (Object.hasOwn(tags, cur.tag) && cur.type == tags[cur.tag].type) {\n acc.push(Object.assign({}, cur, { tag: tags[cur.tag].newValue, type: 'manual' }))\n }\n acc.push(cur)\n return acc\n }, [])\n return item\n })\n : state.pageData.map(item => {\n item.tags = (item.tags || []).reduce((acc, cur) => {\n if (cur.tag == tag.tag && cur.type == tag.type) {\n acc.push(Object.assign({}, cur, { tag: newValue, type: 'manual' }))\n }\n acc.push(cur)\n return acc\n }, [])\n return item\n })\n }\n }\n case 'TAG_MASS_MERGED': {\n const { tags, tag, update = false } = action.data\n return {\n ...state,\n pageData: tags\n ? state.pageData.map(item => {\n item.tags = (item.tags || []).reduce((acc, cur) => {\n const hasDestinationTag = (item.tags || []).some(\n itemTag =>\n itemTag.tag == tags[cur.tag].destination.tag &&\n itemTag.type == tags[cur.tag].destination.type &&\n itemTag.path == cur.path\n )\n if (Object.hasOwn(tags, cur.tag) && cur.type == tags[cur.tag].type && !hasDestinationTag) {\n acc.push(\n Object.assign({}, cur, { tag: tags[cur.tag].destination.tag, type: tags[cur.tag].destination.type })\n )\n }\n if (!Object.hasOwn(tags, cur.tag) || !update) acc.push(cur)\n return acc\n }, [])\n return item\n })\n : state.pageData.map(item => {\n item.tags = (item.tags || []).reduce((acc, cur) => {\n const hasDestinationTag = (item.tags || []).some(\n itemTag =>\n itemTag.tag == tag.destination.tag &&\n itemTag.type == tag.destination.type &&\n itemTag.path == cur.path\n )\n if (cur.tag == tag.tag && cur.type == tag.type && !hasDestinationTag) {\n acc.push(Object.assign({}, cur, { tag: tag.destination.tag, type: tag.destination.type }))\n }\n if (cur.tag != tag.tag || !update) acc.push(cur)\n return acc\n }, [])\n return item\n })\n }\n }\n case 'TAG_MASS_REMOVED': {\n const { tags, tag, path, responseId } = action.data\n\n const updateTag = (item, _tag, _path) => {\n item.tags = item.tags\n .map(itemTag => {\n if (\n itemTag.tag == _tag.tag &&\n itemTag.type == _tag.type &&\n (_path == undefined || '*' == _path || itemTag.path == _path)\n ) {\n if ('sentiment' == _tag.type) itemTag.tag = 'None'\n else return null\n }\n return itemTag\n })\n .filter(itemTag => null !== itemTag)\n }\n\n return {\n ...state,\n pageData: tags\n ? state.pageData.map(item => {\n if (\n !responseId ||\n '*' == responseId ||\n item.response.uid == responseId ||\n (Array.isArray(responseId) && responseId.includes(item.response.uid))\n ) {\n item.tags ||= []\n Object.keys(tags).forEach(key => {\n updateTag(item, tags[key], path)\n })\n }\n return item\n })\n : state.pageData.map(item => {\n if (\n !responseId ||\n '*' == responseId ||\n item.response.uid == responseId ||\n (Array.isArray(responseId) && responseId.includes(item.response.uid))\n ) {\n item.tags ||= []\n updateTag(item, tag, path)\n }\n return item\n })\n }\n }\n case 'TAG_ADDED': {\n const { tag, responseId, path } = action.data\n return {\n ...state,\n pageData: state.pageData.map(item => {\n if (item.response.uid == responseId) {\n if (!item.tags) {\n item.tags = []\n }\n item.tags.push({ ...tag, type: 'manual', path })\n }\n return item\n })\n }\n }\n case 'TAG_REMOVED': {\n const { tag, responseId, path } = action.data\n return {\n ...state,\n pageData: state.pageData.map(item => {\n if (item.response.uid == responseId) {\n item.tags = item.tags.filter(\n itemTag =>\n (itemTag.type == tag.type && itemTag.tag != tag.tag && itemTag.path == path) ||\n itemTag.path !== path ||\n itemTag.type !== tag.type\n )\n }\n return item\n })\n }\n }\n case 'SENTIMENT_CHANGED': {\n const { tag, responseId, path } = action.data\n return {\n ...state,\n pageData: state.pageData.map(item => {\n if (item.response.uid == responseId) {\n if (!item.tags) {\n item.tags = []\n }\n const exisingTag = item.tags.find(itemTag => itemTag.type == tag.type && itemTag.path == path)\n if (exisingTag) Object.assign(exisingTag, tag)\n else item.tags.push({ ...tag, path })\n }\n return item\n })\n }\n }\n case 'FAILURE': {\n return {\n ...state,\n isLoading: false,\n disabled: false,\n pageData: [],\n errors: (Array.isArray(action.error) && action.error) || [action.error],\n totalPages: 0,\n totalResponses: 0\n }\n }\n default:\n throw new Error('Unknown action type')\n }\n}\n\nexport const commentStatusesReducer = (state, action) => {\n const { responseId, scope } = action.data\n switch (action.type) {\n case 'BATCH_DATA': {\n const { batchData, isPreserveState } = action.data\n let ret\n if (isPreserveState) {\n ret = { ...state }\n Object.keys(batchData).forEach(key => {\n ret[key] = {\n ...ret[key],\n ...batchData[key]\n }\n })\n } else {\n ret = {\n ...state,\n ...batchData\n }\n }\n return ret\n }\n case 'SET_STATUS': {\n const { status } = action.data\n return {\n ...state,\n [scope]: {\n ...state[scope],\n [responseId]: status\n }\n }\n }\n case 'CLEANUP': {\n const newState = { ...state }\n delete newState[scope][responseId]\n return newState\n }\n case 'SET_TAG_STATUS': {\n const { path, status } = action.data\n return {\n ...state,\n [scope]: {\n ...state[scope],\n [responseId]: {\n ...state[scope][responseId],\n [path]: status\n }\n }\n }\n }\n case 'CLEANUP_TAG_STATUS': {\n const { path } = action.data\n const newState = { ...state }\n if (newState[scope] && newState[scope][responseId]) {\n delete newState[scope][responseId][path]\n }\n return newState\n }\n default:\n throw new Error('Unknown action type')\n }\n}\n","import React, { useState, useCallback, useMemo, useRef, useContext } from 'react'\nimport PropTypes from 'prop-types'\nimport { createPortal } from 'react-dom'\n\nimport { convertTraits } from '@aytm/app/stats/lib/traits'\nimport { DEFAULT_SELECTED_QUESTION } from '@aytm/app/stats/page/comments/lib/constants'\nimport {\n questionByPosition,\n questionIdToPosition,\n getQuestionsOptionsList\n} from '@aytm/app/stats/page/comments/lib/utils'\n\nimport { OEContext } from '@aytm/app/stats/page/comments'\n\nimport SurveyHeaderComments from '@aytm/app/stats/page/comments/comments/components/SurveyHeaderComments'\nimport PageDataComments from '@aytm/app/stats/page/comments/comments/PageDataComments'\nimport useFetchDataComments from '@aytm/app/stats/page/comments/comments/hooks/useFetchDataComments'\nimport useComments from '@aytm/app/stats/page/comments/comments/hooks/useComments'\nimport useTags from '@aytm/app/stats/page/comments/comments/hooks/useTags'\nimport useCodeBooks from '@aytm/app/stats/page/comments/comments/hooks/useCodeBooks'\nimport CodingPanel from '@aytm/app/stats/page/sidebar/coding/CodingPanel'\n\n// styles\nimport '@aytm/app/stats/page/styles/globals.scss'\nimport '@aytm/app/stats/page/comments/styles/keyframes.scss'\n\nimport style from '@aytm/app/stats/page/comments/styles/index.module.scss'\n\nconst VideoResponses = props => {\n const {\n specialMode,\n surveyData,\n reportId,\n apiKey,\n sentimentOptions,\n reportParams = {},\n reportVirtual,\n reportSchema,\n reports,\n windowUID,\n loadRejectedCS,\n isShowHiddenFilters,\n isAdvancedFiltersDisabled,\n isSpecialsSortingDisabled = false,\n onBeforeFetch,\n onFetch,\n onTagsFetch,\n onUpdateParams,\n onUpdateSchema,\n onNoSchema,\n onInvalidKey,\n onCreateFilter,\n onQuestionListChange,\n onSelectedQuestionChange,\n onQAModeChange\n } = props\n\n const { searchState, dispatch, dispatchCommentStatuses } = useContext(OEContext)\n\n const {\n pageData = [],\n tagsData,\n disabled: readOnly,\n errors,\n isLoading,\n isProcessing,\n isShowSentiments,\n isTagsManagementDisabled,\n isSentimentsManagementDisabled\n } = searchState\n\n const [popupNotificationsDisabled, setPopupNotificationsDisabled] = useState({\n kudos: Boolean(window.localStorage.getItem('kudosNotificationsDisabled')) || false,\n unkudos: Boolean(window.localStorage.getItem('unkudosNotificationsDisabled')) || false,\n reject: Boolean(window.localStorage.getItem('rejectNotificationsDisabled')) || false\n })\n\n const [survey, setSurvey] = useState(\n Object.assign({}, surveyData.survey || {}, {\n traits: convertTraits(surveyData.survey || {}),\n codeBooks: (surveyData.survey || {}).codeBooks || []\n })\n )\n const [currentResponse, setCurrentResponse] = useState(null)\n const [responsesOptions, setResponsesOptions] = useState({\n survey,\n reportParams,\n reportVirtual,\n reportSchema,\n selectedQuestion: reportParams.selectedQuestion || DEFAULT_SELECTED_QUESTION\n })\n\n const responsesRef = useRef([])\n const showTraitsRef = useRef({})\n const responseOrderRef = useRef({})\n\n const searchStateRef = useRef()\n searchStateRef.current = searchState\n\n const isSpecialsSortingDisabledRef = useRef()\n isSpecialsSortingDisabledRef.current = isSpecialsSortingDisabled\n\n const propsRef = useRef()\n propsRef.current = props\n\n const surveyRef = useRef()\n surveyRef.current = survey\n\n const responsesOptionsRef = useRef()\n responsesOptionsRef.current = responsesOptions\n\n const questionsOptionsList = useMemo(\n () =>\n getQuestionsOptionsList(\n responsesOptions.survey,\n responsesOptions.reportVirtual,\n responsesOptions.reportSchema,\n responsesOptions.selectedQuestion,\n specialMode\n ),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n responsesOptions.survey.questions,\n responsesOptions.survey.scripts,\n responsesOptions.reportVirtual,\n responsesOptions.reportSchema,\n responsesOptions.selectedQuestion,\n specialMode\n ]\n )\n const question = useMemo(\n () =>\n questionsOptionsList.get(0).get('questionNumber')\n ? questionByPosition(questionIdToPosition(questionsOptionsList.get(0).get('questionNumber')))\n : null,\n [questionsOptionsList]\n )\n\n const onPageChange = (page, uidsList = null) => {\n const request = {\n currentPage: page\n }\n if (uidsList) {\n request.uidsToApprove = uidsList\n }\n dispatch({ type: 'SET_PARAM', request: { name: 'isPreserveState', value: true } })\n dispatch({\n type: 'SET_REQUEST_PARAM_SET',\n request\n })\n }\n\n const onCloseNotification = useCallback(\n type => {\n setPopupNotificationsDisabled({\n ...popupNotificationsDisabled,\n [type]: true\n })\n window.localStorage.setItem(`${type}NotificationsDisabled`, true)\n },\n [popupNotificationsDisabled]\n )\n\n const { fetchData, fetchDataDelay } = useFetchDataComments({\n apiKey,\n dispatch,\n dispatchCommentStatuses,\n searchStateRef,\n propsRef,\n responsesOptionsRef,\n surveyData,\n survey,\n setSurvey,\n specialMode,\n onNoSchema,\n onBeforeFetch,\n onFetch,\n onInvalidKey,\n onQAModeChange\n })\n\n useComments({\n dispatch,\n dispatchCommentStatuses,\n searchStateRef,\n propsRef,\n responsesOptionsRef,\n surveyData,\n survey,\n setSurvey,\n specialMode,\n sentimentOptions,\n questionsOptionsList,\n onQuestionListChange,\n isShowSentiments,\n isSpecialsSortingDisabledRef,\n reportParams,\n setResponsesOptions,\n responsesRef,\n reportVirtual,\n reportSchema,\n pageData\n })\n\n const [_onTagsUpdateSchema, _onTagsFetch] = useTags({\n survey,\n tagsData,\n dispatch,\n setSurvey,\n onTagsFetch,\n onUpdateSchema\n })\n\n const [_onCodeBooksFetch] = useCodeBooks({\n survey,\n tagsData,\n dispatch,\n setSurvey,\n onTagsFetch\n })\n\n return (\n <div style={{ minHeight: 500 }}>\n {errors.length ? (\n <div className={style['comments-errors']}>\n <h3>Error</h3>\n {errors.map(error => (\n <div key={`error${error.name}`}>{error.message}</div>\n ))}\n </div>\n ) : (\n <>\n <div className={`${style['comments-container']} stats-comments`}>\n <div className={style['white-overlay']} />\n <SurveyHeaderComments\n survey={survey}\n readOnly={readOnly}\n pageData={responsesOptions.pageData}\n questionsOptionsList={questionsOptionsList}\n showTraitsRef={showTraitsRef}\n isAdvancedFiltersDisabled={isAdvancedFiltersDisabled}\n isSpecialsSortingDisabled={isSpecialsSortingDisabled}\n responseOrderRef={responseOrderRef}\n currentResponse={currentResponse}\n loadRejectedCS={loadRejectedCS}\n onCreateFilter={onCreateFilter}\n onSelectedQuestionChange={onSelectedQuestionChange}\n onUpdateSchema={_onTagsUpdateSchema}\n onPageChange={onPageChange}\n fetchData={fetchData}\n />\n {question && !isLoading && !isProcessing ? (\n <div className={style['video-question']}>\n <div className={style['video-question-title']}>\n <strong>Q{question.visual_position}: </strong>\n <span dangerouslySetInnerHTML={{ __html: question.text }} />\n </div>\n <div\n className={style['video-question-instruction']}\n dangerouslySetInnerHTML={{ __html: question.va_instructions }}\n />\n </div>\n ) : null}\n <PageDataComments\n reportId={reportId}\n apiKey={apiKey}\n survey={survey}\n responsesOptions={responsesOptions}\n setResponsesOptions={setResponsesOptions}\n responsesRef={responsesRef}\n showTraitsRef={showTraitsRef}\n responseOrderRef={responseOrderRef}\n popupNotificationsDisabled={popupNotificationsDisabled}\n isShowHiddenFilters={isShowHiddenFilters}\n currentResponse={currentResponse}\n setCurrentResponse={setCurrentResponse}\n onCloseNotification={onCloseNotification}\n onUpdateParams={onUpdateParams}\n onUpdateSchema={_onTagsUpdateSchema}\n onPageChange={onPageChange}\n />\n </div>\n {document.querySelector('#coding-container') &&\n createPortal(\n <CodingPanel\n survey={survey}\n tagsData={{\n cs: pageData,\n tags: tagsData.tags,\n tagsStats: tagsData.tagsStats,\n tagsByPath: tagsData.tagsByPath,\n totals: tagsData.totals\n }}\n question={question}\n reports={reports}\n reportId={reportId}\n reportParams={reportParams}\n windowUID={windowUID}\n isTagsManagementDisabled={isTagsManagementDisabled}\n isSentimentsManagementDisabled={isSentimentsManagementDisabled}\n isAiAssistantsOECodingDisabled={true}\n onCodeBooksFetch={_onCodeBooksFetch}\n onTagsFetch={_onTagsFetch}\n onFetch={fetchDataDelay}\n onInvalidKey={onInvalidKey}\n />,\n document.querySelector('#coding-container')\n )}\n </>\n )}\n </div>\n )\n}\n\nVideoResponses.propTypes = {\n specialMode: PropTypes.string,\n surveyData: PropTypes.object,\n reportId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n apiKey: PropTypes.object,\n statActionsUrl: PropTypes.string,\n questionId: PropTypes.string,\n loadRejectedCS: PropTypes.string,\n sentimentOptions: PropTypes.object,\n reportParams: PropTypes.object,\n reportVirtual: PropTypes.object,\n reportSchema: PropTypes.array,\n reports: PropTypes.array,\n windowUID: PropTypes.string,\n isShowHiddenFilters: PropTypes.bool,\n isAdvancedFiltersDisabled: PropTypes.bool,\n isSpecialsSortingDisabled: PropTypes.bool,\n onBeforeFetch: PropTypes.func,\n onFetch: PropTypes.func,\n onTagsFetch: PropTypes.func,\n onNoSchema: PropTypes.func,\n onInvalidKey: PropTypes.func,\n onCreateFilter: PropTypes.func,\n onUpdateParams: PropTypes.func,\n onUpdateSchema: PropTypes.func,\n onQuestionListChange: PropTypes.func,\n onSelectedQuestionChange: PropTypes.func,\n onQAModeChange: PropTypes.func\n}\n\nVideoResponses.displayName = 'VideoResponses'\n\nexport default VideoResponses\n","const questionRegExp = /^[a-z]*q[a-z]?\\d+/i\nconst deepCopy = obj => JSON.parse(JSON.stringify(obj))\n\nconst ignoredVariables = ['GROUP', 'PANEL', 'STATUS', 'MSA', 'TAG']\n\nexport default aytmLogic => {\n const customVariables = aytmLogic.customVariables || {}\n\n const refs = Object.keys(aytmLogic.refsList)\n const refsList = deepCopy(aytmLogic.refsList)\n\n const questions = refs.filter(ref => questionRegExp.test(ref))\n const clusters = ((aytmLogic.assets || [])['hm.cluster'] || []).map(cluster => cluster.title)\n const traits = deepCopy(aytmLogic.traits)\n const variables = refs.filter(\n ref =>\n !questionRegExp.test(ref) &&\n -1 === ignoredVariables.indexOf(ref) &&\n (!Object.hasOwn(customVariables, ref.toLowerCase()) || 'x' !== customVariables[ref.toLowerCase()].type)\n )\n const codebooks = deepCopy(aytmLogic.codeBooks || {})\n const tags = deepCopy(aytmLogic.tags || {})\n\n return {\n refsList,\n questions,\n clusters,\n traits,\n variables,\n codebooks,\n tags\n }\n}\n","const extractSelection = (cursorSelection, editorState) => {\n if (!cursorSelection) {\n return null\n }\n\n const { startOffset, endOffset } = cursorSelection\n const plainText = editorState.getCurrentContent().getPlainText()\n\n return {\n range: {\n start: 0,\n end: endOffset\n },\n text: {\n beforeCursor: plainText.slice(0, startOffset),\n afterCursor: plainText.slice(endOffset)\n }\n }\n}\n\nexport default extractSelection\n","const extractTokens = parseResult =>\n parseResult &&\n parseResult.expression &&\n parseResult.expression.status &&\n parseResult.expression.status.tokens &&\n parseResult.expression.status.tokens.length\n ? parseResult.expression.status.tokens\n : null\n\nconst extractParseError = parseResult =>\n parseResult && parseResult.expression && parseResult.expression.status && parseResult.expression.status.errors\n ? parseResult.expression.status.errors.find(error => 'parse' === error.type)\n : null\n\nconst extractLastTokenProperty = (tokens, property, offset = 1) => {\n const lastToken = tokens ? tokens[tokens.length - offset] : null\n return lastToken ? lastToken[property] : null\n}\n\nconst extractBeforeCursor = (textBeforeCursor = '', tokens = [], eofToken, resultErrorParse) => {\n const parsedTokens = []\n const trimmed = textBeforeCursor.replace(/^\\s/, '')\n const errorPosition = resultErrorParse ? resultErrorParse.position : null\n\n let parsedPosition = 0\n\n if (!tokens || !tokens[0] || tokens[0].token !== 'EOF') {\n parsedTokens.push(eofToken)\n }\n\n if (tokens && tokens.length) {\n for (const token of tokens) {\n const position = token.position + token.match.length\n if (trimmed.length < position) {\n break\n }\n if (!errorPosition || (errorPosition && errorPosition >= position)) {\n parsedPosition = position\n parsedTokens.push(token)\n }\n }\n }\n\n const parsedText = trimmed.slice(0, parsedPosition)\n const nonParsedText = trimmed.slice(parsedPosition)\n\n return { parsedTokens, parsedText, nonParsedText }\n}\n\nexport default (textBeforeCursor, textAfterCursor, parseResultPattern, parseResultEof) => {\n const oefTokens = extractTokens(parseResultEof)\n const oefToken = oefTokens ? oefTokens[0] : null\n const resultParsedTokens = extractTokens(parseResultPattern)\n const resultErrorParse = extractParseError(parseResultPattern)\n\n if (oefToken && (resultParsedTokens || resultErrorParse)) {\n const { parsedTokens, parsedText, nonParsedText } = extractBeforeCursor(\n textBeforeCursor,\n resultParsedTokens,\n oefToken,\n resultErrorParse\n )\n\n const lastTokenType = extractLastTokenProperty(parsedTokens, 'token', 1)\n const lastExpectedTokens = extractLastTokenProperty(parsedTokens, 'expected', 1)\n const prelastTokenType = extractLastTokenProperty(parsedTokens, 'token', 2)\n const prelastExpectedTokens = extractLastTokenProperty(parsedTokens, 'expected', 2)\n\n return {\n text: {\n beforeCursor: textBeforeCursor,\n afterCursor: textAfterCursor,\n nonParsed: nonParsedText,\n parsed: parsedText\n },\n tokens: {\n type: {\n prelast: prelastTokenType,\n last: lastTokenType\n },\n expected: {\n prelast: prelastExpectedTokens,\n last: lastExpectedTokens\n },\n match: {\n prelast: extractLastTokenProperty(parsedTokens, 'match', 2),\n last: extractLastTokenProperty(parsedTokens, 'match', 1)\n }\n }\n }\n }\n\n return null\n}\n","const createStringLabels = textBefore => {\n const lastSingleQuoute = textBefore.lastIndexOf(\"'\")\n const lastDoubleQuoute = textBefore.lastIndexOf('\"')\n const numberOfSingleQuote = textBefore.split(\"'\").length - 1\n const numberOfDoubleQuote = textBefore.split('\"').length - 1\n\n if (0 === numberOfSingleQuote % 2 && 0 === numberOfDoubleQuote % 2) {\n return [\"'\", '\"']\n }\n\n if (-1 === lastSingleQuoute && -1 === lastDoubleQuoute) {\n return [\"'\", '\"']\n }\n\n if (lastSingleQuoute > lastDoubleQuoute && 1 === numberOfSingleQuote % 2) {\n return [\"'\"]\n }\n\n if (lastSingleQuoute < lastDoubleQuoute && 1 === numberOfDoubleQuote % 2) {\n return ['\"']\n }\n\n return []\n}\n\nexport const TOKENS_CAN_BE_COMPLETED = [\n 'TOKEN',\n 'NTOKEN',\n 'ATOKEN',\n 'ERROR',\n 'BREF',\n 'NREF',\n 'TRAIT',\n 'NTRAIT',\n 'ATRAIT',\n 'LIKE',\n 'AND',\n 'OR',\n 'IN',\n 'IN_SHAPE',\n 'NOT',\n 'NOT_IN',\n 'CODEBOOK_IN',\n 'CODEBOOK_EQ',\n 'CODEBOOK_NEQ',\n 'TAG_IN',\n 'TAG_EQ',\n 'TAG_NEQ',\n 'MAX',\n 'MAXPOS',\n 'MAXPOSITION',\n 'MIN',\n 'MINPOS',\n 'MINPOSITION',\n 'COUNT',\n 'TAG'\n]\n\nexport const TOKENS_OPERATOR_LABELS = {\n LIKE: 'like',\n AND: 'and',\n OR: 'or',\n IN: 'in',\n IN_SHAPE: 'in cluster',\n NOT: 'not',\n NOT_IN: 'not in',\n CODEBOOK_IN: 'codebook_in',\n CODEBOOK_EQ: 'codebook_eq',\n CODEBOOK_NEQ: 'codebook_neq',\n TAG_IN: 'tag_in',\n TAG_EQ: 'tag_eq',\n TAG_NEQ: 'tag_neq',\n MAX: 'max',\n MAXPOS: 'maxposition',\n MAXPOSITION: 'maxposition',\n MIN: 'min',\n MINPOS: 'minposition',\n MINPOSITION: 'minposition',\n COUNT: 'count',\n // string\n STR: createStringLabels,\n // compare\n EQ: '=',\n NEQ: '!=',\n LE: '<=',\n GE: '>=',\n LT: '<',\n GT: '>',\n // math\n MLT: '*',\n DIV: '/',\n ADD: '+',\n SUB: '-',\n // other\n COMMA: ',',\n LPAREN: '(',\n RPAREN: ')'\n}\n","const ALWAYS = 'ALWAYS'\nconst OPTIONAL = 'OPTIONAL'\nconst NONE = 'NONE'\n\nexport const SPACES = {\n ALWAYS,\n OPTIONAL,\n NONE\n}\n\nconst always = () => {\n return {\n before: SPACES.ALWAYS,\n after: SPACES.ALWAYS\n }\n}\n\nconst optional = () => {\n return {\n before: SPACES.OPTIONAL,\n after: SPACES.OPTIONAL\n }\n}\n\nconst none = () => {\n return {\n before: SPACES.NONE,\n after: SPACES.NONE\n }\n}\n\nconst reference = () => {\n return {\n before: SPACES.OPTIONAL,\n after: SPACES.ALWAYS\n }\n}\n\nconst operator = () => {\n return {\n before: SPACES.OPTIONAL,\n after: SPACES.ALWAYS\n }\n}\n\nconst TOKEN_DEFAULT_SPACES = optional\n\nconst TOKEN_SPACES = {\n EOF: none,\n TOKEN: optional,\n ISODATE: reference,\n // references\n BREF: reference,\n TREF: reference,\n NREF: reference,\n ARRAYREF: reference,\n TRAIT: reference,\n CODEBOOK: optional,\n TAG: optional,\n // values:\n NUMBER: optional,\n STR: (parserResult, token) => {\n const nonParsed = parserResult.text.nonParsed.trim()\n const parsed = parserResult.text.parsed.trim()\n const tokenIsQuote = '\"' === token || \"'\" === token\n\n return {\n before: !parsed || (nonParsed && tokenIsQuote) ? SPACES.NONE : SPACES.ALWAYS,\n after: SPACES.OPTIONAL\n }\n },\n // operators\n LIKE: operator,\n AND: operator,\n OR: operator,\n IN: operator,\n NOT: operator,\n NOT_IN: operator,\n CODEBOOK_IN: operator,\n CODEBOOK_EQ: operator,\n CODEBOOK_NEQ: operator,\n TAG_IN: operator,\n TAG_EQ: operator,\n TAG_NEQ: operator,\n IN_SHAPE: operator,\n // operators: compare\n EQ: always,\n NEQ: always,\n LE: always,\n GE: always,\n LT: always,\n GT: always,\n // operators\n MAX: operator,\n MAXPOS: operator,\n MAXPOSITION: operator,\n MIN: operator,\n MINPOS: operator,\n MINPOSITION: operator,\n COUNT: operator,\n // operators: math\n MLT: operator,\n DIV: operator,\n ADD: operator,\n SUB: operator,\n // other\n COMMA: () => {\n return {\n before: SPACES.NONE,\n after: SPACES.ALWAYS\n }\n },\n LPAREN: () => {\n return {\n before: SPACES.OPTIONAL,\n after: SPACES.NONE\n }\n },\n RPAREN: () => {\n return {\n before: SPACES.NONE,\n after: SPACES.OPTIONAL\n }\n }\n}\n\nconst detectTokenSpaces = (parserResult, token, label) =>\n (TOKEN_SPACES[token] || TOKEN_DEFAULT_SPACES)(parserResult, label)\n\nconst calculateSpaceBefore = ({ newTextBefore, prevTokenSpaceAfter, nextTokenSpaceBefore }) => {\n if (nextTokenSpaceBefore === SPACES.NONE) {\n return ''\n }\n if (prevTokenSpaceAfter === SPACES.ALWAYS || nextTokenSpaceBefore === SPACES.ALWAYS) {\n return ' '\n }\n if (prevTokenSpaceAfter === SPACES.NONE) {\n return ''\n }\n if (newTextBefore.trim()) {\n return ' '\n }\n return ''\n}\n\nconst calculateSpaceAfter = ({ newTextAfter, nextTokenSpaceAfter }) => {\n if (nextTokenSpaceAfter === SPACES.ALWAYS) {\n return ' '\n }\n\n if (nextTokenSpaceAfter === SPACES.NONE) {\n return ''\n }\n\n if (newTextAfter.trim()) {\n return ' '\n }\n\n return ''\n}\n\nexport default function insertSpaces({ newTextBefore, newTextAfter, token, label, previousToken, parserResult }) {\n const previousTokenSpaces = detectTokenSpaces(parserResult, previousToken, label)\n const currentTokenSpaces = detectTokenSpaces(parserResult, token, label)\n\n return {\n spaceBefore: calculateSpaceBefore({\n newTextBefore,\n prevTokenSpaceAfter: previousTokenSpaces.after,\n nextTokenSpaceBefore: currentTokenSpaces.before\n }),\n spaceAfter: calculateSpaceAfter({\n newTextAfter,\n nextTokenSpaceAfter: currentTokenSpaces.after\n })\n }\n}\n","const canCompleteLastWord = ({ parsed, nonParsed } = {}) =>\n (nonParsed && /\\S$/.test(nonParsed) && !/\"|'/.test(nonParsed) && !/ {2,}/.test(nonParsed)) ||\n (!nonParsed && /\\w$/.test(parsed))\n\nconst canCompleteLastQuote = ({ nonParsed } = {}) => nonParsed && /^\"([^\"]*)$|^'([^']*)$/.test(nonParsed.trim())\n\nconst parserWordRegExp = /([\\w\"']+)|(<>)|([<>!]=)|([.,:=<>-])/giu\n\nconst processText = text => {\n const trimmed = text.trim()\n const words = trimmed.match(parserWordRegExp)\n\n if (words && words.length) {\n const firstWord = words[0]\n const lastWord = words[words.length - 1]\n const withoutFirstWord = trimmed.slice(firstWord.length).trim()\n const withoutLastWord = trimmed.slice(0, -lastWord.length).trim()\n\n return {\n words,\n trimmed,\n lastWord,\n firstWord,\n withoutFirstWord,\n withoutLastWord,\n endsWith: { letter: !/\\s$/g.test(text) },\n startsWithLetter: !/^\\s/g.test(text)\n }\n }\n\n return {\n trimmed,\n words: [],\n lastWord: '',\n firstWord: '',\n withoutFirstWord: '',\n withoutLastWord: '',\n endsWith: { letter: !/\\s$/g.test(text) },\n startsWithLetter: !/^\\s/g.test(text)\n }\n}\n\nconst intersectionDistanceFromEnd = (baseString, comparedString) => {\n let distance = 0\n while (comparedString.length > distance) {\n const str = comparedString.slice(0, comparedString.length - distance)\n if (baseString.endsWith(str)) {\n return comparedString.length - distance\n }\n distance++\n }\n return 0\n}\n\nconst insertString = ({ canBeCompleted, parserResult }) => {\n const {\n text,\n text: { beforeCursor, afterCursor }\n } = parserResult\n if (canBeCompleted) {\n if (canCompleteLastQuote(text)) {\n return {\n newTextBefore: beforeCursor.trim(),\n newTextAfter: afterCursor.trim()\n }\n }\n } else {\n return {\n newTextBefore: beforeCursor.trim(),\n newTextAfter: afterCursor.trim()\n }\n }\n return null\n}\n\nconst insertValue = ({ parserResult }) => {\n return {\n newTextBefore: parserResult.text.parsed,\n newTextAfter: parserResult.text.afterCursor.trim()\n }\n}\n\nconst insertOperator = ({ canBeCompleted, token, label, parserResult }) => {\n const {\n text: { beforeCursor, afterCursor }\n } = parserResult\n\n if ('STR' === token) {\n return insertString({ canBeCompleted, parserResult })\n }\n\n const textBefore = processText(beforeCursor)\n const textAfter = processText(afterCursor)\n\n if (canBeCompleted) {\n const textLabel = processText(label)\n if (!textLabel.withoutFirstWord) {\n const lastWordCI = textBefore.lastWord.toLowerCase()\n\n if (label.startsWith(lastWordCI) && lastWordCI !== label) {\n return {\n fuzzy: textBefore.lastWord,\n fuzzyIndexOf: 0,\n offsetText: textBefore.lastWord,\n newTextBefore: textBefore.withoutLastWord,\n newTextAfter: textAfter.startsWithLetter ? textAfter.withoutFirstWord : textAfter.trimmed\n }\n }\n\n return null\n } else {\n const lower = beforeCursor.toLowerCase()\n const distance = intersectionDistanceFromEnd(lower, label)\n\n if (distance) {\n const char = beforeCursor[beforeCursor.length - 1 - distance]\n if (!/[a-z]/i.test(char)) {\n const tail = label.slice(distance)\n return {\n fuzzy: beforeCursor.slice(-distance),\n fuzzyIndexOf: 0,\n offsetText: beforeCursor.slice(-distance),\n newTextBefore: beforeCursor.slice(0, -distance).trim(),\n newTextAfter: afterCursor.toLowerCase().startsWith(tail)\n ? afterCursor.slice(tail.length).trim()\n : textAfter.trimmed\n }\n }\n }\n }\n return null\n }\n\n const newTextAfter =\n label.length > textAfter.trimmed.length\n ? label.startsWith(textAfter.trimmed)\n ? ''\n : textAfter.trimmed\n : textAfter.trimmed.startsWith(label)\n ? textAfter.trimmed.slice(label.length).trim()\n : textAfter.trimmed\n\n return {\n newTextBefore: textBefore.trimmed,\n newTextAfter\n }\n}\n\nconst insertByReplaceLastWord = ({ canBeCompleted, label, parserResult, startsWith }) => {\n const {\n text,\n text: { beforeCursor, afterCursor }\n } = parserResult\n\n const textBefore = processText(beforeCursor)\n const textAfter = processText(afterCursor)\n\n if (canBeCompleted) {\n if (canCompleteLastWord(text) && textBefore.lastWord.length < label.length) {\n const lastWordCI = textBefore.lastWord.toLowerCase()\n const labelCI = label.toLowerCase()\n const indexOf = labelCI.indexOf(lastWordCI)\n\n const canComplete = startsWith\n ? 0 === indexOf && lastWordCI !== labelCI\n : -1 !== indexOf && lastWordCI !== labelCI\n\n if (canComplete) {\n return {\n fuzzy: textBefore.lastWord,\n fuzzyIndexOf: indexOf,\n offsetText: textBefore.lastWord,\n newTextBefore: textBefore.withoutLastWord,\n newTextAfter: textAfter.startsWithLetter ? textAfter.withoutFirstWord : textAfter.trimmed\n }\n }\n }\n } else {\n const newTextAfter =\n label.length > textAfter.firstWord.length\n ? label.startsWith(textAfter.firstWord)\n ? textAfter.withoutFirstWord\n : textAfter.trimmed\n : textAfter.trimmed.startsWith(label)\n ? textAfter.trimmed.slice(label.length).trim()\n : textAfter.trimmed\n\n return {\n newTextBefore: textBefore.trimmed,\n newTextAfter\n }\n }\n\n return null\n}\n\nexport const LABEL_RULES = {\n uid: {\n denied: {\n after: ['GT', 'GE', 'LT', 'LE']\n }\n },\n completed: {\n allowed: {\n before: ['OR', 'TOKEN', 'AND', 'NOT', 'LPAREN', 'RPAREN', 'EQ', 'NEQ', 'LE', 'GE', 'LT', 'GT', 'EOF'],\n after: ['OR', 'TOKEN', 'AND', 'NOT', 'LPAREN', 'RPAREN', 'EQ', 'NEQ', 'LE', 'GE', 'LT', 'GT']\n }\n }\n}\n\nexport default function insertToken(type, { canBeCompleted, token, label, parserResult }) {\n const lastToken = parserResult.tokens.type.last\n const lastLabel = parserResult.tokens.match.last\n\n if ('operator' == type) {\n if ('UID' === lastLabel && -1 !== LABEL_RULES.uid.denied.after.indexOf(token)) {\n return null\n }\n\n if ('COMPLETED' === lastLabel && -1 === LABEL_RULES.completed.allowed.after.indexOf(token)) {\n return null\n }\n\n return insertOperator({ canBeCompleted, token, label, parserResult })\n }\n\n if ('value' === type) {\n return insertValue({ parserResult })\n }\n\n if ('question' == type) {\n return insertByReplaceLastWord({ canBeCompleted, label, parserResult, startsWith: true })\n }\n\n if ('variable' == type) {\n if ('uid' === label && 'SUB' === lastToken) {\n return null\n }\n\n if ('completed' === label && -1 === LABEL_RULES.completed.allowed.before.indexOf(lastToken)) {\n return null\n }\n\n return insertByReplaceLastWord({ canBeCompleted, token, label, parserResult })\n }\n\n if ('codebook' === type) {\n return insertByReplaceLastWord({ canBeCompleted, token, label, parserResult })\n }\n\n if ('tag' === type) {\n return insertByReplaceLastWord({ canBeCompleted, token, label, parserResult })\n }\n\n return null\n}\n","import insertSpaces from '@aytm/app/stats/lib/draft-js/autocompletePlugin/lib/insert-spaces'\nimport insertToken from '@aytm/app/stats/lib/draft-js/autocompletePlugin/lib/insert-token'\n\nexport default function processSuggestionData(\n type,\n { canBeCompleted, token, label, parserResult, completeAfterInsert, description }\n) {\n const processedText = insertToken(type, { canBeCompleted, token, label, parserResult })\n if (!processedText) {\n return null\n }\n\n const previousToken =\n canBeCompleted && !parserResult.text.nonParsed ? parserResult.tokens.type.prelast : parserResult.tokens.type.last\n\n const { newTextBefore, newTextAfter, fuzzy, fuzzyIndexOf, offsetText } = processedText\n const { spaceBefore, spaceAfter } = insertSpaces({\n newTextBefore,\n newTextAfter,\n previousToken,\n parserResult,\n token,\n label\n })\n\n const suggestion = {\n id: label,\n token,\n label,\n textBefore: completeAfterInsert\n ? newTextBefore + spaceBefore + label\n : newTextBefore + spaceBefore + label + spaceAfter,\n textAfter: completeAfterInsert ? (newTextAfter ? spaceAfter + newTextAfter : '') : newTextAfter\n }\n\n if (fuzzy) {\n suggestion.fuzzy = fuzzy\n }\n\n if (offsetText) {\n suggestion.offsetText = offsetText\n }\n\n if (fuzzyIndexOf) {\n suggestion.fuzzyIndexOf = fuzzyIndexOf\n }\n\n if (description) {\n suggestion.description = description\n }\n\n return suggestion\n}\n","const extractLongestLabel = labels => {\n if (!labels.length) {\n return null\n }\n\n const firstLabel = labels[0]\n\n const group = labels.reduce(\n (accumulator, label, index) => {\n if (label.startsWith(accumulator.label)) {\n accumulator.labels.push({ index, label })\n }\n return accumulator\n },\n { labels: [], label: firstLabel }\n )\n\n return group.labels.reduce(\n (accumulator, item, index) => {\n labels.splice(item.index - index, 1)\n\n if (accumulator.label.length == item.label.length) {\n accumulator.labels.push(item.label)\n } else if (accumulator.label.length < item.label.length) {\n accumulator.labels = [item.label]\n accumulator.label = item.label\n }\n\n return accumulator\n },\n { labels: [], label: firstLabel }\n )\n}\n\nexport default labels => {\n const copyOfLabels = labels.slice()\n let longestLabels = []\n let flag = true\n\n while (flag) {\n const extracted = extractLongestLabel(copyOfLabels)\n if (extracted) {\n longestLabels = longestLabels.concat(extracted.labels)\n } else {\n flag = false\n }\n }\n\n return longestLabels\n}\n","import { Observable, EMPTY as EMPTY_OBSERVABLE } from 'rxjs'\nimport { TOKENS_CAN_BE_COMPLETED } from '@aytm/app/stats/lib/draft-js/autocompletePlugin/lib/tokens'\nimport extractLongestLabels from '@aytm/lib/rfd-ui/components/advanced/lib/draft-js/suggestionsPlugin/lib/extract-longest-labels'\nimport processSuggestionData from '@aytm/app/stats/lib/draft-js/autocompletePlugin/lib/process-suggestion-data'\n\nconst escapeRegExp = string => string.replace(/[$()*+.?[\\\\\\]^{|}]/g, '\\\\$&')\n\nconst createFilterByRegExp = (canBeCompleted, textBefore) => {\n if (!canBeCompleted) {\n return token => /^[a-z]+$/i.test(token)\n }\n\n const lastWordCI = textBefore.lastWord.toUpperCase()\n const completeWithLetter = new RegExp('^' + escapeRegExp(lastWordCI) + '([A-Z]+)$')\n const completeWithNumber = new RegExp('^' + escapeRegExp(lastWordCI) + '([0-9]+)$')\n\n return token =>\n lastWordCI == token || !token.startsWith(lastWordCI)\n ? false\n : /\\d$/.test(token)\n ? completeWithNumber.test(token)\n : completeWithLetter.test(token)\n}\n\nconst filterDuplicates = (item, position, array) => array.indexOf(item) == position\n\nconst addTransitionQuestionTokens = tokens => {\n const tokensWithTransitions = []\n\n for (let i = -1, prevToken = ''; i < tokens.length - 1; i++) {\n const nextToken = tokens[i + 1]\n const shouldAddTransition = nextToken.startsWith(prevToken)\n ? /\\d+$/.test(nextToken) && prevToken.length < nextToken.length\n : /\\d+$/.test(nextToken)\n\n if (shouldAddTransition) {\n tokensWithTransitions.push(nextToken.replace(/\\d+$/, ''))\n }\n\n tokensWithTransitions.push(nextToken)\n prevToken = nextToken\n }\n\n return tokensWithTransitions\n}\n\nconst toToken = refType => ('a' === refType ? 'ARRAYREF' : refType.toUpperCase() + 'REF')\nconst extractIndex = label => {\n const match = label.match(/\\d+$/)\n return match && match[0] ? parseInt(match[0], 10) : 0\n}\n\nconst createFilterByTokenType = (refsList, tokens) => question =>\n refsList[question] && tokens && tokens.includes(toToken(refsList[question]))\nconst sortQuestionLabel = (a, b) => extractIndex(a.label) - extractIndex(b.label)\n\nexport default function createQuestionSuggestion(\n textBefore,\n _,\n {\n dependencies: {\n aytmLogic: { refsList, questions },\n parserResult\n }\n }\n) {\n if (!questions || !parserResult) {\n return EMPTY_OBSERVABLE\n }\n\n const longestQuestionLabels = extractLongestLabels(questions)\n\n const transformToSuggestion =\n ({ canBeCompleted, parserResult }) =>\n question => {\n const completeAfterInsert = !longestQuestionLabels.includes(question)\n const token = refsList[question] ? refsList[question].toUpperCase() + 'REF' : null\n const label = question\n\n return processSuggestionData('question', {\n canBeCompleted,\n token,\n label,\n parserResult,\n completeAfterInsert\n })\n }\n\n const createSuggestions = (tokens, canBeCompleted) => {\n const filterByRegExp = createFilterByRegExp(canBeCompleted, textBefore)\n const filterByTokenType = createFilterByTokenType(refsList, tokens)\n\n return addTransitionQuestionTokens(questions.filter(filterByTokenType))\n .filter(filterByRegExp)\n .filter(filterDuplicates)\n .map(transformToSuggestion({ canBeCompleted, parserResult }))\n .filter(suggestion => suggestion)\n .sort(sortQuestionLabel)\n }\n\n return new Observable(observer => {\n const {\n tokens: { expected, type },\n text: { nonParsed }\n } = parserResult\n\n const isLastTokenCompletable = TOKENS_CAN_BE_COMPLETED.includes(type.last)\n const hasNonParsedText = Boolean(nonParsed)\n const hasNonParsedTextTrimmed = Boolean(nonParsed.trim())\n const canBeCompleted = Boolean(hasNonParsedTextTrimmed || (!hasNonParsedText && isLastTokenCompletable))\n\n const suggestedLabels = []\n const suggestionTokens =\n !hasNonParsedText && isLastTokenCompletable ? expected.prelast || expected.last || [] : expected.last || []\n\n createSuggestions(suggestionTokens, canBeCompleted).forEach(suggestion => {\n suggestedLabels.push(suggestion.label)\n observer.next(suggestion)\n })\n\n if (canBeCompleted && suggestionTokens === expected.prelast) {\n createSuggestions(expected.last || [])\n .filter(suggestion => !suggestedLabels.includes(suggestion.label))\n .forEach(suggestion => observer.next(suggestion))\n }\n\n observer.complete()\n })\n}\n","import { Observable, EMPTY as EMPTY_OBSERVABLE } from 'rxjs'\nimport processSuggestionData from '@aytm/app/stats/lib/draft-js/autocompletePlugin/lib/process-suggestion-data'\n\nconst valueTokenType = 'STR'\nconst lastTypes = ['EQ', 'NEQ']\nconst prelastTypes = ['TRAIT']\nconst ignoredTokens = ['AGE', 'PANEL', 'STATUS', 'GROUP']\n\nexport default function createTraitSuggestion(\n _,\n __,\n {\n dependencies: {\n aytmLogic: { refsList, traits },\n parserResult\n }\n }\n) {\n if (!traits || !parserResult || !refsList) {\n return EMPTY_OBSERVABLE\n }\n\n const {\n tokens: { expected, match, type },\n text: { nonParsed }\n } = parserResult\n\n const canCreateSuggestion =\n lastTypes.includes(type.last) && prelastTypes.includes(type.prelast) && expected.last.includes(valueTokenType)\n\n if (!canCreateSuggestion) {\n return EMPTY_OBSERVABLE\n }\n\n const variable = match.prelast\n const hasCurrentVariable =\n 't' === refsList[variable] && !ignoredTokens.includes(variable) && traits.some(t => variable.toLowerCase() == t.id)\n\n if (!hasCurrentVariable) {\n return EMPTY_OBSERVABLE\n }\n\n const transformToSuggestion =\n ({ canBeCompleted, parserResult }) =>\n value => {\n const token = valueTokenType\n const label = `\"${value.id}\"`\n const description = value.id !== (value.name.en || value.name) ? value.name.en || value.name : null\n\n return processSuggestionData('value', { canBeCompleted, token, label, parserResult, description })\n }\n\n return new Observable(observer => {\n const canBeCompleted = Boolean(nonParsed)\n const trait = traits.find(t => variable.toLowerCase() == t.id)\n const values = (trait.values || []).map(v => v)\n\n values\n .map(transformToSuggestion({ canBeCompleted, parserResult }))\n .filter(suggestion => suggestion)\n .forEach(suggestion => observer.next(suggestion))\n\n observer.complete()\n })\n}\n","import operatorBuilder from './operator-suggestion'\nimport questionBuilder from './question-suggestion'\nimport clusterBuilder from './cluster-suggestion'\nimport traitBuilder from './trait-suggestion'\nimport variableBuilder from './variable-suggestion'\nimport codebookBuilder from './codebook-suggestion'\nimport tagBuilder from './tag-suggestion'\n\nexport default [\n operatorBuilder,\n questionBuilder,\n clusterBuilder,\n traitBuilder,\n variableBuilder,\n codebookBuilder,\n tagBuilder\n]\n","import { Observable, EMPTY as EMPTY_OBSERVABLE } from 'rxjs'\nimport {\n TOKENS_OPERATOR_LABELS,\n TOKENS_CAN_BE_COMPLETED\n} from '@aytm/app/stats/lib/draft-js/autocompletePlugin/lib/tokens'\nimport processSuggestionData from '@aytm/app/stats/lib/draft-js/autocompletePlugin/lib/process-suggestion-data'\n\nconst transformToSuggestion =\n ({ canBeCompleted, parserResult }) =>\n ({ token, label }) =>\n processSuggestionData('operator', { canBeCompleted, parserResult, token, label })\n\nexport const reduceTokensToOperators = textBefore => (operators, token) => {\n if (TOKENS_OPERATOR_LABELS[token]) {\n const label =\n 'function' === typeof TOKENS_OPERATOR_LABELS[token]\n ? TOKENS_OPERATOR_LABELS[token](textBefore)\n : TOKENS_OPERATOR_LABELS[token]\n if (Array.isArray(label)) {\n label.forEach(label => {\n operators.push({ token, label })\n })\n } else {\n operators.push({ token, label })\n }\n }\n return operators\n}\n\nexport default function createOperatorSuggestion(textBefore, _, { dependencies: { parserResult } }) {\n if (!parserResult) {\n return EMPTY_OBSERVABLE\n }\n\n const createSuggestions = (tokens, canBeCompleted) =>\n tokens\n .reduce(reduceTokensToOperators(textBefore.trimmed), [])\n .map(transformToSuggestion({ canBeCompleted, parserResult }))\n .filter(suggestion => suggestion)\n\n return new Observable(observer => {\n const {\n tokens: { expected, type },\n text: { nonParsed }\n } = parserResult\n\n const isLastTokenCompletable = TOKENS_CAN_BE_COMPLETED.includes(type.last)\n const hasNonParsedText = Boolean(nonParsed)\n const hasNonParsedTextTrimmed = Boolean(nonParsed.trim())\n const canBeCompleted = Boolean(hasNonParsedTextTrimmed || (!hasNonParsedText && isLastTokenCompletable))\n\n const suggestedLabels = []\n const suggestionTokens =\n !hasNonParsedText && isLastTokenCompletable ? expected.prelast || expected.last || [] : expected.last || []\n\n createSuggestions(suggestionTokens, canBeCompleted).forEach(suggestion => {\n suggestedLabels.push(suggestion.label)\n observer.next(suggestion)\n })\n\n if (canBeCompleted && suggestionTokens === expected.prelast) {\n createSuggestions(expected.last || [])\n .filter(suggestion => !suggestedLabels.includes(suggestion.label))\n .forEach(suggestion => observer.next(suggestion))\n }\n\n observer.complete()\n })\n}\n","import { Observable, EMPTY as EMPTY_OBSERVABLE } from 'rxjs'\nimport processSuggestionData from '@aytm/app/stats/lib/draft-js/autocompletePlugin/lib/process-suggestion-data'\n\nconst clusterTokenType = 'STR'\nconst insertAfterToken = 'IN_SHAPE'\n\nexport default function createClusterSuggestion(\n _,\n __,\n {\n dependencies: {\n aytmLogic: { clusters },\n parserResult\n }\n }\n) {\n if (!clusters || !clusters.length || !parserResult) {\n return EMPTY_OBSERVABLE\n }\n\n const {\n tokens: { expected, type },\n text: { nonParsed }\n } = parserResult\n\n if ((expected.last && !expected.last.includes(clusterTokenType)) || type.last !== insertAfterToken) {\n return EMPTY_OBSERVABLE\n }\n\n const transformToSuggestion =\n ({ canBeCompleted, parserResult }) =>\n value => {\n const token = clusterTokenType\n const label = '\"' + value.replace(/</g, '<').replace(/>/g, '>').replace(/&/g, '&') + '\"'\n\n return processSuggestionData('value', { canBeCompleted, token, label, parserResult })\n }\n\n return new Observable(observer => {\n const canBeCompleted = Boolean(nonParsed)\n\n clusters\n .map(transformToSuggestion({ canBeCompleted, parserResult }))\n .filter(suggestion => suggestion)\n .forEach(suggestion => observer.next(suggestion))\n\n observer.complete()\n })\n}\n","import { Observable, EMPTY as EMPTY_OBSERVABLE } from 'rxjs'\nimport { TOKENS_CAN_BE_COMPLETED } from '@aytm/app/stats/lib/draft-js/autocompletePlugin/lib/tokens'\nimport processSuggestionData from '@aytm/app/stats/lib/draft-js/autocompletePlugin/lib/process-suggestion-data'\n\nexport default function createVariableSuggestion(\n _,\n __,\n {\n dependencies: {\n aytmLogic: { refsList, traits, variables },\n parserResult\n }\n }\n) {\n if (!variables || !parserResult || !refsList) {\n return EMPTY_OBSERVABLE\n }\n\n const extractTokens = variable => {\n if (refsList[variable]) {\n const prefix = refsList[variable].toUpperCase()\n\n return 'D' === prefix ? ['ISODATE'] : [prefix + 'REF', 'TRAIT']\n }\n\n return []\n }\n\n const transformToSuggestion =\n ({ canBeCompleted, parserResult, suggestionTokens }) =>\n variable => {\n const tokens = extractTokens(variable)\n const token = suggestionTokens.find(suggestionToken => tokens.find(token => suggestionToken === token))\n const label = variable.toLowerCase()\n\n const trait = traits.find(t => String(t.id).toLowerCase() === label)\n const description = trait != undefined && trait.id !== trait.title ? trait.title : null\n\n return token\n ? null !== description\n ? processSuggestionData('variable', { canBeCompleted, token, label, parserResult, description })\n : processSuggestionData('variable', { canBeCompleted, token, label, parserResult })\n : null\n }\n\n const createSuggestions = (suggestionTokens, canBeCompleted) =>\n variables\n .map(transformToSuggestion({ canBeCompleted, parserResult, suggestionTokens }))\n .filter(suggestion => suggestion)\n\n return new Observable(observer => {\n const {\n tokens: { type, expected },\n text: { nonParsed }\n } = parserResult\n\n const isLastTokenCompletable = TOKENS_CAN_BE_COMPLETED.includes(type.last)\n const hasNonParsedText = Boolean(nonParsed)\n const hasNonParsedTextTrimmed = Boolean(nonParsed.trim())\n const canBeCompleted = Boolean(hasNonParsedTextTrimmed || (!hasNonParsedText && isLastTokenCompletable))\n\n const suggestedLabels = []\n const suggestionTokens =\n !hasNonParsedText && isLastTokenCompletable ? expected.prelast || expected.last || [] : expected.last || []\n\n createSuggestions(suggestionTokens, canBeCompleted).forEach(suggestion => {\n suggestedLabels.push(suggestion.label)\n observer.next(suggestion)\n })\n\n if (canBeCompleted && suggestionTokens === expected.prelast) {\n createSuggestions(expected.last || [])\n .filter(suggestion => !suggestedLabels.includes(suggestion.label))\n .forEach(suggestion => observer.next(suggestion))\n }\n\n observer.complete()\n })\n}\n","import { Observable, EMPTY as EMPTY_OBSERVABLE } from 'rxjs'\nimport { TOKENS_CAN_BE_COMPLETED } from '@aytm/app/stats/lib/draft-js/autocompletePlugin/lib/tokens'\nimport processSuggestionData from '@aytm/app/stats/lib/draft-js/autocompletePlugin/lib/process-suggestion-data'\n\nexport default function createCodebookSuggestion(\n _,\n __,\n {\n dependencies: {\n aytmLogic: { refsList, codebooks },\n parserResult\n }\n }\n) {\n if (!codebooks || !parserResult || !refsList) {\n return EMPTY_OBSERVABLE\n }\n\n const extractTokens = () => {\n if (refsList['CODEBOOK']) {\n return ['CODEBOOK']\n }\n\n return []\n }\n\n const transformToSuggestion = ({ canBeCompleted, parserResult, suggestionTokens }) => {\n const tokens = extractTokens()\n const token = suggestionTokens.find(suggestionToken => tokens.find(token => suggestionToken === token))\n const label = 'codebook'\n\n return token ? processSuggestionData('codebook', { canBeCompleted, token, label, parserResult }) : null\n }\n\n const createSuggestions = (suggestionTokens, canBeCompleted) =>\n [transformToSuggestion({ canBeCompleted, parserResult, suggestionTokens })].filter(suggestion => suggestion)\n\n return new Observable(observer => {\n const {\n tokens: { type, expected },\n text: { nonParsed }\n } = parserResult\n\n const isLastTokenCompletable = TOKENS_CAN_BE_COMPLETED.includes(type.last)\n const hasNonParsedText = Boolean(nonParsed)\n const hasNonParsedTextTrimmed = Boolean(nonParsed.trim())\n const canBeCompleted = Boolean(hasNonParsedTextTrimmed || (!hasNonParsedText && isLastTokenCompletable))\n\n const suggestedLabels = []\n const suggestionTokens =\n !hasNonParsedText && isLastTokenCompletable ? expected.prelast || expected.last || [] : expected.last || []\n\n createSuggestions(suggestionTokens, canBeCompleted).forEach(suggestion => {\n suggestedLabels.push(suggestion.label)\n observer.next(suggestion)\n })\n\n if (canBeCompleted && suggestionTokens === expected.prelast) {\n createSuggestions(expected.last || [])\n .filter(suggestion => !suggestedLabels.includes(suggestion.label))\n .forEach(suggestion => observer.next(suggestion))\n }\n\n observer.complete()\n })\n}\n","import { Observable, EMPTY as EMPTY_OBSERVABLE } from 'rxjs'\nimport { TOKENS_CAN_BE_COMPLETED } from '@aytm/app/stats/lib/draft-js/autocompletePlugin/lib/tokens'\nimport processSuggestionData from '@aytm/app/stats/lib/draft-js/autocompletePlugin/lib/process-suggestion-data'\n\nexport default function createTagSuggestion(\n _,\n __,\n {\n dependencies: {\n aytmLogic: { refsList, tags },\n parserResult\n }\n }\n) {\n if (!tags || !parserResult || !refsList) {\n return EMPTY_OBSERVABLE\n }\n\n const extractTokens = () => {\n if (refsList['TAG']) {\n return ['TAG']\n }\n\n return []\n }\n\n const transformToSuggestion = ({ canBeCompleted, parserResult, suggestionTokens }) => {\n const tokens = extractTokens()\n const token = suggestionTokens.find(suggestionToken => tokens.find(token => suggestionToken === token))\n const label = 'tag'\n\n return token ? processSuggestionData('tag', { canBeCompleted, token, label, parserResult }) : null\n }\n\n const createSuggestions = (suggestionTokens, canBeCompleted) =>\n [transformToSuggestion({ canBeCompleted, parserResult, suggestionTokens })].filter(suggestion => suggestion)\n\n return new Observable(observer => {\n const {\n tokens: { type, expected },\n text: { nonParsed }\n } = parserResult\n\n const isLastTokenCompletable = TOKENS_CAN_BE_COMPLETED.includes(type.last)\n const hasNonParsedText = Boolean(nonParsed)\n const hasNonParsedTextTrimmed = Boolean(nonParsed.trim())\n const canBeCompleted = Boolean(hasNonParsedTextTrimmed || (!hasNonParsedText && isLastTokenCompletable))\n\n const suggestedLabels = []\n const suggestionTokens =\n !hasNonParsedText && isLastTokenCompletable ? expected.prelast || expected.last || [] : expected.last || []\n\n createSuggestions(suggestionTokens, canBeCompleted).forEach(suggestion => {\n suggestedLabels.push(suggestion.label)\n observer.next(suggestion)\n })\n\n if (canBeCompleted && suggestionTokens === expected.prelast) {\n createSuggestions(expected.last || [])\n .filter(suggestion => !suggestedLabels.includes(suggestion.label))\n .forEach(suggestion => observer.next(suggestion))\n }\n\n observer.complete()\n })\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport styles from '@aytm/lib/rfd-ui/styles/SuggestionsComponent.module.scss'\n\nconst SuggestionItem = ({ suggestion, index, selectedIndex, selectSuggestion }) => (\n <div\n onMouseDown={event => {\n event.preventDefault()\n selectSuggestion(suggestion)\n }}\n id={'suggestion-item-' + index}\n className={classNames(styles.item, {\n [styles['item--active']]: index === selectedIndex\n })}\n >\n <div className={styles['content']}>\n <div className={styles['content-text']}>\n {suggestion.fuzzy ? (\n <span\n dangerouslySetInnerHTML={{\n __html: `${suggestion.label.replace(\n new RegExp(suggestion.fuzzy, 'i'),\n '<strong>' + suggestion.fuzzy + '</strong>'\n )}${suggestion.description != undefined ? ' (' + suggestion.description + ')' : ''}`\n }}\n />\n ) : (\n <>\n <strong>{suggestion.label}</strong>\n {suggestion.description != undefined ? ' (' + suggestion.description + ')' : ''}\n </>\n )}\n </div>\n </div>\n </div>\n)\n\nSuggestionItem.propTypes = {\n index: PropTypes.number,\n onSelect: PropTypes.func,\n suggestion: PropTypes.object,\n selectSuggestion: PropTypes.func,\n selectedIndex: PropTypes.number\n}\n\nexport default SuggestionItem\n","import React from 'react'\nimport autobind from 'autobind-decorator'\nimport getSelectionCoords from '@aytm/lib/rfd-ui/components/advanced/lib/draft-js/suggestionsPlugin/lib/get-selection-coords'\nimport SuggestionsComponent from '@aytm/lib/rfd-ui/components/advanced/lib/draft-js/suggestionsPlugin/components/Suggestions'\nimport SuggestionItem from './SuggestionItem'\nimport styles from '@aytm/lib/rfd-ui/styles/SuggestionsComponent.module.scss'\n\nconst DROPDOWN_OFFSET_Y = 24\n\nexport default class CustomSuggestionsComponent extends SuggestionsComponent {\n componentDidUpdate(prevProps, prevState, snapshot) {\n super.componentDidUpdate(prevProps, prevState, snapshot)\n if (prevState.visibility !== this.state.visibility) {\n if (this.state.visibility) {\n window.addEventListener('scroll', this.handleScroll)\n } else {\n window.removeEventListener('scroll', this.handleScroll)\n }\n }\n }\n\n componentDidMount() {\n super.componentDidMount()\n if (this.state.visibility) {\n window.addEventListener('scroll', this.handleScroll)\n }\n }\n\n componentWillUnmount() {\n super.componentWillUnmount()\n window.removeEventListener('scroll', this.handleScroll)\n }\n\n @autobind\n handleScroll() {\n this.updatePosition()\n }\n\n @autobind\n selectSuggestion(suggestion) {\n const { selectSuggestion, onBeforeSelect } = this.props\n\n onBeforeSelect(suggestion)\n selectSuggestion(suggestion)\n }\n\n @autobind\n updateItems(items, visibility) {\n const { fuzzyItems, nonFuzzyItems } = items.reduce(\n (accumulator, item) => {\n const group = item.fuzzy ? 'fuzzyItems' : 'nonFuzzyItems'\n accumulator[group].push(item)\n return accumulator\n },\n { fuzzyItems: [], nonFuzzyItems: [] }\n )\n\n const sortedFuzzyItems = fuzzyItems.sort((a, b) => a.fuzzyIndexOf || 0 - b.fuzzyIndexOf || 0)\n\n super.updateItems([...sortedFuzzyItems, ...nonFuzzyItems], visibility)\n }\n\n @autobind\n calculatePortalStyles(items = [], props) {\n if (this.refItems.current) {\n const itemsElement = this.refItems.current\n const itemsElementRects = itemsElement.getClientRects()\n\n if (itemsElementRects && itemsElementRects[0]) {\n const selectionCoords = getSelectionCoords()\n const dropdownOffsetLeft = this.calculateDropdownOffsetLeft({\n items,\n itemsElementRects,\n selectionCoords,\n props\n })\n\n return {\n position: 'fixed',\n left: Math.floor(selectionCoords.x + dropdownOffsetLeft),\n top: Math.floor(selectionCoords.y + DROPDOWN_OFFSET_Y)\n }\n }\n }\n\n return {\n visibility: 'hidden',\n x: 0,\n y: 0\n }\n }\n\n @autobind\n renderDropdown() {\n return (\n <div className={styles.items} ref={this.refItems}>\n {this.state.items.map((suggestion, index) => (\n <div\n key={index}\n onMouseMove={this.createSuggestionMouseHandler(index)}\n onMouseEnter={this.createSuggestionMouseHandler(index)}\n >\n <SuggestionItem\n key={index}\n index={index}\n selectSuggestion={this.selectSuggestion}\n selectedIndex={this.state.selectedIndex}\n suggestion={suggestion}\n />\n </div>\n ))}\n </div>\n )\n }\n}\n","const createErrorRefRegExp = error =>\n new RegExp('(^|\\\\b|\\\\s)' + error.get('text').replace(/[$()*+,./?[\\\\\\]^{|}-]/g, '\\\\$&') + '($|\\\\b|\\\\s)', 'gi')\nconst isDetectableError = (error, text) => 'parse' != error.get('type') || text.toUpperCase() != error.get('text')\nconst hasParseError = errors => errors.some(error => 'parse' === error.get('type'))\n\nconst strategy = {\n errorTypes: ['ref', 'trait', 'parse', 'cluster'],\n detectError: (errors, error, text, callback) => {\n if (!hasParseError(errors) && isDetectableError(error, text) && error.has('text')) {\n if ('cluster' === error.get('type')) {\n const start = error.get('position')\n const end = start + error.get('text').length + 2\n\n callback(start, end)\n } else {\n const reg = createErrorRefRegExp(error)\n let matchArr\n while ((matchArr = reg.exec(text)) !== null) {\n const start = matchArr.index\n const end = start + matchArr[0].length\n callback(start, end)\n }\n }\n }\n },\n detectErrors: (errors, text, callback) => {\n if (hasParseError(errors)) {\n callback(0, text.length)\n }\n }\n}\n\nexport default strategy\n","const createErrorRefRegExp = error =>\n new RegExp('(^|\\\\b|\\\\s)' + error.get('text').replace(/[$()*+,./?[\\\\\\]^{|}-]/g, '\\\\$&') + '($|\\\\b|\\\\s)', 'gi')\n\nexport default cursor => {\n if (!cursor) {\n return null\n }\n\n return {\n errorTypes: ['ref', 'alias', 'sref', 'old', 'cluster'],\n detectError: (_, error, text, callback) => {\n if ('cluster' === error.get('type')) {\n const start = error.get('position')\n const end = start + error.get('text').length + 2\n\n if (!(cursor.selection.end >= start && cursor.selection.end <= end)) {\n callback(start, end)\n }\n } else {\n const reg = createErrorRefRegExp(error)\n\n let matchArr\n while ((matchArr = reg.exec(text)) !== null) {\n const start = matchArr.index\n const end = start + matchArr[0].length\n if (!(cursor.selection.end >= start && cursor.selection.end <= end)) {\n callback(start, end)\n }\n }\n }\n }\n }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport classNames from 'classnames'\nimport { Map, List, fromJS } from 'immutable'\nimport { Modifier, EditorState, SelectionState } from 'draft-js'\n\n// suggestions plugin from rdf-ui\nimport createSuggestionsPlugin from '@aytm/lib/rfd-ui/components/advanced/lib/draft-js/suggestionsPlugin'\nimport ErrorsDecoratorFactory from '@aytm/lib/rfd-ui/components/advanced/lib/draft-js/decorators/ErrorsDecoratorFactory'\n\n// suggestions plugin from stats\nimport extractAytmLogic from '@aytm/app/stats/lib/draft-js/autocompletePlugin/lib/extract-aytm-logic'\nimport extractSelection from '@aytm/app/stats/lib/draft-js/autocompletePlugin/lib/extract-selection'\nimport extractParserResult from '@aytm/app/stats/lib/draft-js/autocompletePlugin/lib/extract-parser-result'\nimport suggestionsBuilders from '@aytm/app/stats/lib/draft-js/autocompletePlugin/builders'\nimport SuggestionsComponent from '@aytm/app/stats/lib/draft-js/autocompletePlugin/components/Suggestions'\n\nimport ErrorsDecoratorStrategy from '@aytm/app/stats/lib/draft-js/decorators/errors-decorator-strategy'\nimport WarningsDecoratorStrategy from '@aytm/app/stats/lib/draft-js/decorators/warnings-decorator-strategy'\n\n// components\nimport RichText from '@aytm/lib/rfd-ui/components/advanced/rich-text'\n\n// styles\nimport '@aytm/app/stats/page/styles/globals.scss'\n\nimport style from '@aytm/app/stats/page/components/styles/AdvancedFilter.module.scss'\n\nconst STORAGE_KEY = 'stats-autocomplete'\nconst EVENT_KEY = 'statsKeydownEvent'\nconst HOTKEYS = 'CTRL + ['\n\nconst toggleAutocomplete = () => {\n window.localStorage.setItem(STORAGE_KEY, window.localStorage.getItem(STORAGE_KEY) !== 'true')\n const event = document.createEvent('Event')\n event.initEvent(EVENT_KEY, true, true)\n dispatchEvent(event)\n}\n\nwindow.addEventListener('keydown', event => {\n if (event.ctrlKey && '[' === event.key) {\n toggleAutocomplete()\n }\n})\n\nexport default class AdvancedFilter extends React.Component {\n static propTypes = {\n locale: PropTypes.instanceOf(Map).isRequired,\n parserResultEof: PropTypes.object.isRequired,\n parserResultPattern: PropTypes.object.isRequired,\n surveySchema: PropTypes.object.isRequired,\n hintPosition: PropTypes.oneOf(['top', 'bottom']),\n pattern: PropTypes.string.isRequired,\n prefix: PropTypes.string,\n disabled: PropTypes.bool,\n onChange: PropTypes.func,\n onUpdate: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onActive: PropTypes.func\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const { parserResultPattern, pattern } = nextProps\n let newState = null\n\n if (pattern !== prevState.pattern) {\n newState = { pattern }\n }\n\n if (parserResultPattern !== prevState.parserResultPattern) {\n const parserState = {\n parserResultPattern,\n errors: fromJS(parserResultPattern.expression.status.errors)\n }\n newState = newState ? Object.assign({}, newState, parserState) : parserState\n }\n\n return newState\n }\n\n constructor(props) {\n super(props)\n const { parserResultEof, parserResultPattern, surveySchema, locale } = props\n\n this.state = {\n parserResultEof,\n surveySchema,\n active: false,\n hovered: false,\n cursorTextStyle: null,\n errors: List(),\n showHint: false\n }\n\n this.parserTimer = null\n\n this.refSuggestionsComponent = null\n\n this.pluginStore = {\n canAutocompleteBeActive: this.canAutocompleteBeActive,\n getSuggestionsData: (beforeCursor, afterCursor) => {\n return {\n aytmLogic: extractAytmLogic(surveySchema),\n parserResult: extractParserResult(beforeCursor, afterCursor, parserResultPattern, parserResultEof)\n }\n }\n }\n\n this.decoratorErrorsStore = {\n strategy: ErrorsDecoratorStrategy,\n getLocale: () => locale,\n getErrors: () => this.state.errors\n }\n\n this.plugins = this.createPlugins()\n this.decorators = this.createDecorators()\n }\n\n @autobind\n createDecorators() {\n return [ErrorsDecoratorFactory(this.decoratorErrorsStore)]\n }\n\n @autobind\n createPlugins() {\n return [\n createSuggestionsPlugin(this.pluginStore, {\n extractSelection,\n suggestionsBuilders,\n SuggestionsComponent\n })\n ]\n }\n\n @autobind\n canAutocompleteBeActive() {\n return true !== this.props.disabled && 'false' !== window.localStorage.getItem(STORAGE_KEY)\n }\n\n @autobind\n onAutocompleteUpdate() {\n this.forceUpdate(() => {\n this.updateSuggestionsComponent()\n })\n }\n\n @autobind\n onMouseEnter() {\n const { active, showHint } = this.state\n const { hintPosition } = this.props\n if (!showHint) {\n this.setState({\n showHint: 'top' === hintPosition || !active,\n hovered: true\n })\n } else {\n this.setState({\n hovered: true\n })\n }\n }\n\n @autobind\n onMouseLeave() {\n const { active, showHint } = this.state\n if (!active && showHint) {\n this.setState({\n showHint: false,\n hovered: false\n })\n } else {\n this.setState({\n hovered: false\n })\n }\n }\n\n @autobind\n onEditorChange(getContent) {\n const { onChange } = this.props\n const { html } = getContent({ text: false, html: true })\n\n setTimeout(() => {\n this.pluginStore.canAutocompleteBeActive = this.canAutocompleteBeActive\n\n this.updateSuggestionsComponent()\n })\n\n 'function' === typeof onChange && onChange(html)\n }\n\n @autobind\n onEditorUpdate(editorState, prevEditorState) {\n this.pluginStore.canAutocompleteBeActive = this.canAutocompleteBeActive\n\n const { onUpdate } = this.props\n const nextPattern = editorState.getCurrentContent().getPlainText()\n\n if (nextPattern != this.state.pattern) {\n this.pluginStore.canAutocompleteBeActive = () => false\n } else {\n setTimeout(() => {\n this.updateDecoratorErrors()\n })\n }\n\n 'function' === typeof onUpdate && onUpdate(editorState, prevEditorState)\n }\n\n @autobind\n onEditorFocus(event, editorState) {\n const { onFocus } = this.props\n 'function' === typeof onFocus && onFocus(event, editorState)\n\n this.setActiveState(true)\n }\n\n @autobind\n onEditorBlur(event, editorState) {\n const { onBlur } = this.props\n 'function' === typeof onBlur && onBlur(event, editorState)\n\n this.setActiveState(false)\n }\n\n @autobind\n handlePastedText(_text, _html, editorState, callback) {\n const parts = _text\n .split(/\\s*,\\s*/)\n .flatMap(v => v.split(/\\s+/))\n .filter(v => 0 < v.trim().length)\n\n if (parts.every(v => Number.isInteger(Number(v)))) {\n const text = parts.join(', ')\n\n const content = editorState.getCurrentContent()\n const selection = editorState.getSelection()\n\n const newContent = Modifier.replaceText(content, selection, text)\n\n const lastBlock = newContent.getLastBlock()\n const selectionState = new SelectionState({\n anchorKey: lastBlock.getKey(),\n anchorOffset: lastBlock.getLength(),\n focusKey: lastBlock.getKey(),\n focusOffset: lastBlock.getLength()\n })\n\n const newSelection = new SelectionState({\n anchorKey: content.getLastBlock().getKey(),\n anchorOffset: 0,\n focusKey: content.getFirstBlock().getKey(),\n focusOffset: content.getLastBlock().getLength()\n })\n const newText = Modifier.removeRange(newContent, selectionState, 'backward').getPlainText('\\n')\n const newEditorState = EditorState.push(editorState, Modifier.replaceText(content, newSelection, newText))\n\n const key = newEditorState.getCurrentContent().getLastBlock().getKey()\n const offset = Math.min(\n (selection.getIsBackward() ? selection.getFocusOffset() : selection.getAnchorOffset()) + text.length,\n newText.length\n )\n\n callback(\n EditorState.forceSelection(\n newEditorState,\n new SelectionState({\n anchorKey: key,\n anchorOffset: offset,\n focusKey: key,\n focusOffset: offset,\n hasFocus: true\n })\n )\n )\n\n return 'handled'\n }\n\n return 'non-handled'\n }\n\n @autobind\n onSuggestionsBeforeSelect() {\n this.pluginStore.canAutocompleteBeActive = this.canAutocompleteBeActive\n }\n\n @autobind\n setActiveState(active) {\n const { hovered } = this.state\n const { onActive, hintPosition = 'bottom' } = this.props\n const showHint = ((active || hovered) && 'top' === hintPosition) || (!active && 'top' !== hintPosition)\n\n 'function' === typeof onActive && onActive(active)\n\n this.setState({ active, showHint }, () => {\n this.parserTimer !== null && window.clearTimeout(this.parserTimer)\n this.parserTimer = null\n\n this.updateDecoratorErrors()\n this.refText.forceUpdateEditorState()\n })\n }\n\n @autobind\n updateDecoratorErrors() {\n const { active, errors } = this.state\n const plugin = this.getSuggestionPlugin()\n\n this.decoratorErrorsStore.getErrors = active\n ? () => errors.filter(error => 'parse' !== error.get('type'))\n : () => errors\n\n this.decoratorErrorsStore.strategy = active\n ? plugin\n ? WarningsDecoratorStrategy(plugin.getCursor())\n : null\n : ErrorsDecoratorStrategy\n }\n\n @autobind\n updateSuggestionsComponent() {\n if (this.refText && this.refText.refEditor) {\n this.refText.refEditor.onChange(this.refText.state.editorState)\n }\n }\n\n @autobind\n calculateCursorStyles() {\n if (\n this.refText &&\n this.refText.refEditor &&\n this.refText.refEditor.editor &&\n this.refText.refEditor.editor.editor\n ) {\n const element = this.refText.refEditor.editor.editor\n const style = window.getComputedStyle(element)\n\n this.setState({\n cursorTextStyle: style ? style.font : null\n })\n }\n }\n\n componentDidMount() {\n window.addEventListener(EVENT_KEY, this.onAutocompleteUpdate)\n\n setTimeout(() => {\n this.calculateCursorStyles()\n })\n }\n\n componentWillUnmount() {\n this.parserTimer !== null && window.clearTimeout(this.parserTimer)\n\n window.removeEventListener(EVENT_KEY, this.onAutocompleteUpdate)\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { parserResultEof, parserResultPattern, surveySchema, pattern, active } = this.state\n\n if (prevProps.surveySchema != surveySchema) {\n this.setState({\n surveySchema: prevProps.surveySchema\n })\n return\n }\n\n this.pluginStore.getSuggestionsData = (beforeCursor, afterCursor) => {\n return {\n aytmLogic: extractAytmLogic(surveySchema),\n parserResult: extractParserResult(beforeCursor, afterCursor, parserResultPattern, parserResultEof)\n }\n }\n\n if (prevState.parserResultPattern != parserResultPattern || prevState.pattern != pattern) {\n this.parserTimer !== null && window.clearTimeout(this.parserTimer)\n this.parserTimer = setTimeout(\n () => {\n this.parserTimer = null\n\n this.updateDecoratorErrors()\n this.refText.forceUpdateEditorState()\n },\n active ? 500 : 0\n )\n }\n }\n\n @autobind\n getSuggestionPlugin() {\n return this.plugins && this.plugins[0] ? this.plugins[0] : null\n }\n\n @autobind\n renderSuggestions() {\n const plugin = this.getSuggestionPlugin()\n\n if (!plugin || !plugin.SuggestionsComponent) {\n return null\n }\n\n const SuggestionsComponent = plugin.SuggestionsComponent\n\n return (\n <SuggestionsComponent\n ref={ref => (this.refSuggestionsComponent = ref)}\n onBeforeSelect={this.onSuggestionsBeforeSelect}\n cursorTextStyle={this.state.cursorTextStyle}\n />\n )\n }\n\n @autobind\n renderHint(targetPosition) {\n const { locale, hintPosition = 'bottom' } = this.props\n const { showHint } = this.state\n\n if (targetPosition !== hintPosition) {\n return null\n }\n\n return (\n <div\n className={classNames({\n [style['hint']]: true,\n [style['hint--top']]: 'top' === hintPosition,\n [style['hint--bottom']]: 'bottom' === hintPosition\n })}\n >\n <div\n className={classNames({\n [style['hint-text']]: true,\n [style['hint-text--active']]: showHint\n })}\n onClick={toggleAutocomplete}\n >\n {this.canAutocompleteBeActive()\n ? locale.get('disableAutocomplete').replace('{hotkeys}', HOTKEYS)\n : locale.get('enableAutocomplete').replace('{hotkeys}', HOTKEYS)}\n </div>\n </div>\n )\n }\n\n render() {\n const { prefix, disabled } = this.props\n const { pattern, active, errors } = this.state\n const refErrorsCount = errors.filter(v => ['ref', 'cluster'].includes(v.get('type'))).size\n const isWarning = pattern ? 0 < errors.size && refErrorsCount == errors.size : false\n const isError = pattern ? refErrorsCount != errors.size : false\n const readOnly = true === disabled\n const withReadOnly = fn => (readOnly ? undefined : fn)\n\n return (\n <div\n className={style['widget']}\n onMouseEnter={withReadOnly(this.onMouseEnter)}\n onMouseLeave={withReadOnly(this.onMouseLeave)}\n >\n {this.renderHint('top')}\n <div\n className={classNames(style.container, {\n [style['container-active']]: active,\n [style['container-warning']]: isWarning && !active,\n [style['container-error']]: isError && !active,\n [style['container-disabled']]: readOnly\n })}\n >\n <div className={style.text}>\n <div className={style['text-input']} key=\"input\">\n <div className={style['text-input-container']}>\n {prefix && <div className={style.prefix} dangerouslySetInnerHTML={{ __html: prefix }} />}\n {this.renderSuggestions()}\n <RichText\n ref={el => (this.refText = el)}\n html={pattern}\n plugins={this.plugins}\n decorators={this.decorators}\n allowUndo={true}\n multiline={false}\n spellCheck={false}\n disableFormatting={true}\n readOnly={readOnly}\n onChange={this.onEditorChange}\n onUpdate={this.onEditorUpdate}\n onFocus={withReadOnly(this.onEditorFocus)}\n onBlur={withReadOnly(this.onEditorBlur)}\n handlePastedText={this.handlePastedText}\n />\n </div>\n </div>\n </div>\n </div>\n {this.renderHint('bottom')}\n </div>\n )\n }\n}\n","/* eslint-disable react/prop-types, react/display-name */\nimport React, { useState, useRef, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport CreatableSelect from 'react-select/creatable'\n\nimport { components } from 'react-select'\n\nimport { encodeText, decodeText } from '@aytm/app/stats/lib/helpers'\n\nimport { ALLOWED_HTML_TAGS, SENTIMENTS_ICON_HASH } from '@aytm/app/stats/page/comments/lib/constants'\n\nimport { stripTags, sanitizeReactSelectOption, getSearchInputOptions } from '@aytm/app/stats/page/comments/lib/utils'\n\n// styles\nimport style from '@aytm/app/stats/page/components/styles/SearchInput.module.scss'\n\nconst { MenuList, MultiValue, Option, ClearIndicator, IndicatorsContainer } = components\n\nconst searchInputStyles = {\n option: (provided, state) => {\n return { ...provided, isDisabled: state.data.disabled }\n },\n multiValue: (provided, state) => {\n return { ...provided, backgroundColor: state.styles.backgroundColor }\n }\n}\n\nconst filterOption = (option, searchText) => {\n const text = searchText.trim().toLowerCase()\n return (\n option.data.__isNew__ ||\n option.data.label.toLowerCase().includes(encodeText(text, false)) ||\n ('codebook' == option.data.type &&\n option.data.tags.some(tag => tag.toLowerCase().includes(encodeText(text, false))))\n )\n}\n\nconst formatCreateLabel = value => `Search for: ${encodeText(value, false)}`\n\nconst isValidNewOption = value => 0 < value.trim().length\n\nconst SearchInput = ({\n survey,\n tagsList,\n search,\n disabled,\n isTagsManagementDisabled,\n isSentimentsManagementDisabled,\n onSearchChange\n}) => {\n const { query = [] } = search\n\n const [searchInputValue, setSearchInputValue] = useState(\n query.map(value => ('tag' == value.type ? { ...value, value: `${value.codebook}: ${value.label}` } : value))\n )\n const [isShowSearchIconOverlay, setIsShowSearchIconOverlay] = useState(false)\n\n const [searchInputOptions, setSearchInputOptions] = useState(\n () =>\n getSearchInputOptions(\n searchInputValue,\n { codeBooks: survey.codeBooks },\n tagsList,\n [],\n null,\n isTagsManagementDisabled,\n isSentimentsManagementDisabled\n ) || []\n )\n\n const menuTimer = useRef(null)\n\n const searchInputRef = useRef(null)\n const searchInputValueRef = useRef('')\n\n const convertSearchInputValue = useCallback(\n () =>\n searchInputValue.map(value => {\n if ('codebook' == value.type) {\n Object.assign(value, {\n color: `#${survey.codeBooks.find(codebook => codebook.title == value.value)?.color || '88d1cd'}`\n })\n }\n if ('tag' == value.type) {\n Object.assign(value, {\n color: `#${\n survey.codeBooks.find(codebook => codebook.tags.some(tag => `${codebook.title}: ${tag}` == value.value))\n ?.color || '88d1cd'\n }`\n })\n }\n return value\n }) || [],\n [searchInputValue, survey.codeBooks]\n )\n\n const onChange = useCallback(\n (newValue, actionMeta) => {\n if ('clear' == actionMeta.action) {\n setSearchInputValue([])\n return\n }\n\n switch (actionMeta.action) {\n case 'pop-value':\n case 'remove-value': {\n setSearchInputValue(newValue || [])\n break\n }\n case 'select-option': {\n setSearchInputValue(\n newValue.map(value => {\n if ('codebook' == value.type) {\n return { type: 'codebook', label: value.label, value: value.value }\n }\n if ('tag' == value.type) {\n return { type: 'tag', label: value.label, value: value.value, codebook: value.codebook }\n }\n return value\n }) || []\n )\n break\n }\n case 'create-option':\n default: {\n const newOption = sanitizeReactSelectOption(newValue[newValue.length - 1])\n newOption.type = 'plain'\n if (!searchInputValue.some(item => item.value == newOption.value && 'plain' == newOption.type)) {\n setSearchInputValue([...newValue])\n }\n break\n }\n }\n searchInputValueRef.current = ''\n },\n [searchInputValue]\n )\n\n const onMenuOpen = () => {\n if (searchInputRef.current?.state.inputValue) {\n setIsShowSearchIconOverlay(true)\n }\n }\n\n const onMenuClose = useCallback(() => {\n if (searchInputRef.current.state.inputValue) {\n searchInputValueRef.current = searchInputRef.current.state.inputValue\n }\n\n menuTimer.current && clearTimeout(menuTimer.current)\n menuTimer.current = setTimeout(() => setIsShowSearchIconOverlay(false), 100)\n\n return () => menuTimer.current && clearTimeout(menuTimer.current)\n }, [])\n\n const onKeyDown = useCallback(\n event => {\n if (event && 'Enter' === event.key && !searchInputRef.current?.state?.menuIsOpen) {\n onSearchChange({ query: searchInputValue })\n }\n },\n [searchInputValue, onSearchChange]\n )\n\n const onSearchInputIconClick = useCallback(() => {\n searchInputRef.current.blur()\n searchInputRef.current.state.menuIsOpen = false\n searchInputRef.current.state.isFocused = false\n\n onSearchChange({\n query: searchInputValue.map(value =>\n 'tag' == value.type ? { ...value, value: value.value.replace(`${value.codebook}: `, '') } : value\n )\n })\n }, [searchInputValue, onSearchChange])\n\n const onSearchOverlayClick = useCallback(() => {\n if (\n searchInputValueRef.current &&\n (!searchInputValue ||\n (searchInputValue &&\n !searchInputValue.some(item => item.value === searchInputValueRef.current && 'plain' === item.type)))\n ) {\n onSearchChange({\n query: [\n ...searchInputValue.map(value =>\n 'tag' == value.type ? { ...value, value: value.value.replace(`${value.codebook}: `, '') } : value\n ),\n { type: 'plain', label: searchInputValueRef.current, value: searchInputValueRef.current }\n ]\n })\n searchInputValueRef.current = ''\n }\n setIsShowSearchIconOverlay(false)\n }, [searchInputValue, onSearchChange])\n\n const showClearIndicator = useCallback(\n props => {\n const inputValue = props?.getValue() || []\n const difference = query\n .filter(\n _query =>\n !inputValue.some(_inputValue =>\n 'tag' == _query.type && 'tag' == _inputValue.type\n ? `${_query.codebook}: ${_query.value}` == _inputValue.value\n : _query.type == _inputValue.type && _query.value == _inputValue.value\n )\n )\n .concat(\n inputValue.filter(\n _inputValue =>\n !query.some(_query =>\n 'tag' == _query.type && 'tag' == _inputValue.type\n ? `${_query.codebook}: ${_query.value}` == _inputValue.value\n : _query.type == _inputValue.type && _query.value == _inputValue.value\n )\n )\n )\n\n return !difference.length && !searchInputRef.current?.state.inputValue\n },\n [query]\n )\n\n const searchInputComponents = useMemo(() => {\n return {\n DropdownIndicator: null,\n MenuList: ({ children, ...props }) =>\n children.length ? <MenuList {...props}>{children}</MenuList> : <MenuList className=\"is-hidden\" {...props} />,\n MultiValue: ({ children, data, ...props }) => (\n <div\n title={decodeText(\n stripTags(['codebook', 'sentiment', 'tag'].includes(data.type) ? data.value : data.label),\n false\n )}\n >\n <MultiValue\n data={data}\n styles={{ backgroundColor: ('batch' != data.type && data.color && `${data.color}90`) || '#efefef' }}\n {...props}\n >\n {'codebook' == data.type && <i className=\"icon-aytmfd-folder-closed\" />}\n {'sentiment' == data.type && <i className={`icon-aytmfd-sentiment-${SENTIMENTS_ICON_HASH[data.value]}`} />}\n {'tag' == data.type && <i className=\"icon-aytmfd-tag\" />}\n {'uid' == data.type && <i className=\"icon-aytmfd-singleuser\" />}\n {'cluster' == data.type && <i className=\"icon-aytmfd-heatmap-cluster\" />}\n {'batch' == data.type && <i className=\"icon-aytmfd-map-view\" style={{ color: data.color }} />}\n {'batch' == data.type && data.label && ALLOWED_HTML_TAGS.test(data.label) ? (\n <span dangerouslySetInnerHTML={{ __html: stripTags(children, 'b', 'i', 'u') }} />\n ) : (\n <span dangerouslySetInnerHTML={{ __html: children }} />\n )}\n </MultiValue>\n </div>\n ),\n Option: ({ children, data, ...props }) => (\n <Option data={data} {...props}>\n <span\n className={classNames(style['search-input-value'], {\n [style['search-input-sub-value']]: Object.hasOwn(data, 'codebook'),\n [style['search-input-uid']]: 'uid' == data.type\n })}\n >\n {'codebook' == data.type && <i className=\"icon-aytmfd-folder-closed\" style={{ color: data.color }} />}\n {'sentiment' == data.type && <i className={`icon-aytmfd-sentiment-${SENTIMENTS_ICON_HASH[data.value]}`} />}\n {'tag' == data.type && <i className=\"icon-aytmfd-tag\" style={{ color: data.color }} />}\n {'uid' == data.type && <i className=\"icon-aytmfd-singleuser\" />}\n {'cluster' == data.type && <i className=\"icon-aytmfd-heatmap-cluster\" />}\n {'batch' == data.type && <i className=\"icon-aytmfd-map-view\" style={{ color: data.color }} />}\n {'batch' == data.type && data.label && ALLOWED_HTML_TAGS.test(data.label) ? (\n <span dangerouslySetInnerHTML={{ __html: stripTags(children, 'b', 'i', 'u') }} />\n ) : (\n <span dangerouslySetInnerHTML={{ __html: children }} />\n )}\n </span>\n </Option>\n ),\n NoOptionsMessage: () => null,\n IndicatorsContainer: props => (\n <IndicatorsContainer {...props}>\n {props?.isDisabled || (props?.hasValue && showClearIndicator(props)) ? null : (\n <i\n className={`${style['search-icon']} search-input__indicator icon-aytmfd-search`}\n onClick={onSearchInputIconClick}\n />\n )}\n {props?.children}\n </IndicatorsContainer>\n ),\n ClearIndicator: props => (showClearIndicator(props) ? <ClearIndicator {...props} /> : null)\n }\n }, [showClearIndicator, onSearchInputIconClick])\n\n useEffect(\n () =>\n setSearchInputValue(\n query.map(value => ('tag' == value.type ? { ...value, value: `${value.codebook}: ${value.label}` } : value))\n ),\n [query]\n )\n\n useEffect(\n () =>\n setSearchInputOptions(\n getSearchInputOptions(\n searchInputValue,\n { codeBooks: survey.codeBooks },\n tagsList,\n [],\n null,\n isTagsManagementDisabled,\n isSentimentsManagementDisabled\n ) || []\n ),\n [searchInputValue, survey.codeBooks, tagsList, isTagsManagementDisabled, isSentimentsManagementDisabled]\n )\n\n return (\n <div className={style['search-input-container']}>\n <CreatableSelect\n ref={searchInputRef}\n className=\"search-input\"\n classNamePrefix=\"search-input\"\n components={searchInputComponents}\n styles={searchInputStyles}\n placeholder=\"Search...\"\n options={searchInputOptions}\n value={convertSearchInputValue(searchInputValue)}\n createOptionPosition=\"first\"\n noResultsText={null}\n openMenuOnClick={true}\n openMenuOnFocus={false}\n cacheOptions\n isMulti\n isClearable\n isSearchable\n isDisabled={disabled}\n isOptionDisabled={option => option.disabled}\n isValidNewOption={isValidNewOption}\n onMenuOpen={onMenuOpen}\n onMenuClose={onMenuClose}\n onKeyDown={onKeyDown}\n onChange={onChange}\n filterOption={filterOption}\n formatCreateLabel={formatCreateLabel}\n />\n {isShowSearchIconOverlay && <div className={style['search-icon-overlay']} onClick={onSearchOverlayClick} />}\n </div>\n )\n}\n\nSearchInput.propTypes = {\n survey: PropTypes.object,\n tagsList: PropTypes.array,\n search: PropTypes.object,\n disabled: PropTypes.bool,\n isTagsManagementDisabled: PropTypes.bool,\n isSentimentsManagementDisabled: PropTypes.bool,\n onSearchChange: PropTypes.func\n}\n\nSearchInput.displayName = 'SearchInput'\n\nexport default SearchInput\n","// import '@aytm/app/stats/page/styles/globals.scss'\n\nimport Highcharts from 'highcharts'\nimport HighchartsMore from 'highcharts/highcharts-more'\nimport HighchartsSunburst from 'highcharts/modules/sunburst'\nimport HighchartsTreemap from 'highcharts/modules/treemap'\nimport HighchartsTreegraph from 'highcharts/modules/treegraph'\nimport HighchartsExporting from 'highcharts/modules/exporting'\n\nHighchartsMore(Highcharts)\nHighchartsSunburst(Highcharts)\nHighchartsTreemap(Highcharts)\nHighchartsTreegraph(Highcharts)\nHighchartsExporting(Highcharts)\n\nimport { cleanSearchData, getIsDefaultReportParams } from '@aytm/app/stats/page/comments/lib/utils'\n\nimport { RenameAllCodebooks, RenameAllTags } from '@aytm/app/stats/page/sidebar/reports/actions'\n\nfunction renderComponent(props, element, path, component = 'default') {\n return new Promise((resolve, reject) => {\n if (null === element) {\n reject('element not specified')\n return\n }\n const React = require('react')\n const ReactDOM = require('react-dom')\n const reactEl = React.createElement(require(`@aytm/app/stats/page/${path}`)[component], props)\n resolve(ReactDOM.render(reactEl, element))\n })\n}\n\nexport function renderDataView(name, { target, props, clear }) {\n switch (name) {\n case 'CompareItems': {\n return require('@aytm/app/stats/data-views/CompareItems').default({ target, props, clear })\n }\n default:\n return null\n }\n}\n\nexport function updateDataView(name, component, props) {\n switch (name) {\n case 'CompareItems': {\n return require('@aytm/app/stats/data-views/CompareItems').update(component, props)\n }\n default:\n return false\n }\n}\n\nexport function unlinkDataView(name, component) {\n switch (name) {\n case 'CompareItems': {\n return require('@aytm/app/stats/data-views/CompareItems').unlink(component)\n }\n default:\n return false\n }\n}\n\nexport function renderSpecials(props, element) {\n return renderComponent(props, element, 'comments/index')\n}\n\nexport function renderReportsPanel(props, element) {\n return renderComponent(props, element, 'sidebar/reports/ReportsPanel')\n}\n\nexport function renderReportControls(props, element) {\n return renderComponent(props, element, 'sidebar/reports/ReportControls', 'ReportControls')\n}\n\nexport function renderPalettesPanel(props, element) {\n return renderComponent(props, element, 'sidebar/palettes/PalettesPanel')\n}\n\nexport function renderWeightingPanel(props, element) {\n return renderComponent(props, element, 'sidebar/weighting/WeightingPanel')\n}\n\nexport function renderFiltersPanel(props, element) {\n return renderComponent(props, element, 'sidebar/filters/FiltersPanel')\n}\n\nexport function renderDataCleaningPanel(props, element) {\n return renderComponent(props, element, 'sidebar/data-cleaning/DataCleaningPanel')\n}\n\nexport function renderDataLab(props, element) {\n return renderComponent(props, element, 'sidebar/data-lab/DataLabPanel')\n}\n\nexport function renderMapping(props, element) {\n return renderComponent(props, element, 'sidebar/mapping/MappingPanel')\n}\n\nexport function renderCrosstab(props, element) {\n return renderComponent(props, element, 'sidebar/crosstab/CrosstabPanel')\n}\n\nexport function renderExportSpecific(props, element) {\n return renderComponent(props, element, 'sidebar/export/ExportSpecific')\n}\n\nexport function renderHeatMapPopup(props, element) {\n return renderComponent(props, element, 'question-views/hm/HeatMapPopup')\n}\n\nexport function renderQuestionHeader(props, element) {\n return renderComponent(props, element, 'question-views/components/QuestionHeader')\n}\n\nexport function renderVQComponent(props, element) {\n return renderComponent(props, element, 'question-views/vq/Component')\n}\n\nexport function renderCQComponent(props, element) {\n return renderComponent(props, element, 'question-views/cq/Component')\n}\n\nexport function renderXQComponent(props, element) {\n return renderComponent(props, element, 'question-views/xq/Component')\n}\n\nexport function renderCLComponent(props, element) {\n return renderComponent(props, element, 'question-views/cl/Component')\n}\n\nexport function renderTLComponent(props, element) {\n return renderComponent(props, element, 'question-views/tl/Component')\n}\n\nexport function renderSNComponent(props, element) {\n return renderComponent(props, element, 'question-views/sn/Component')\n}\n\nexport function renderCLMappingComponent(props, element) {\n return renderComponent(props, element, 'question-views/cl-mapping/Component')\n}\n\nexport function renderTLMappingComponent(props, element) {\n return renderComponent(props, element, 'question-views/tl-mapping/Component')\n}\n\nexport function renderOEControls(props, element) {\n return renderComponent(props, element, 'question-views/oe/Controls')\n}\n\nexport function renderCNControls(props, element) {\n return renderComponent(props, element, 'question-views/cn/Controls')\n}\n\nexport function renderADControls(props, element) {\n return renderComponent(props, element, 'question-views/ad/Controls')\n}\n\nexport function renderDCControls(props, element) {\n return renderComponent(props, element, 'question-views/data-cleaning/Controls')\n}\n\nexport function renderDCResponses(props, element) {\n return renderComponent(props, element, 'question-views/data-cleaning/Responses')\n}\n\nexport function unlinkComponent(element) {\n return new Promise((resolve, reject) => {\n if (null === element) {\n reject('element not specified')\n return\n }\n const ReactDOM = require('react-dom')\n resolve(ReactDOM.unmountComponentAtNode(element))\n })\n}\n\nexport function initializeXpertsDebug() {\n return new Promise((resolve, _reject) => {\n const id = 'xperts-debug'\n let element = document.querySelector(`#${id}`)\n const exists = null !== element\n if (!exists) {\n element = document.createElement('div')\n element.id = id\n element.style.position = 'absolute'\n element.style.width = '100%'\n element.style.height = '80%'\n element.style.margin = '0 0 0 -100%'\n element.style.textAlign = 'left'\n element.style.zIndex = 1000\n document.querySelector('#page').appendChild(element)\n }\n if (element) {\n resolve(\n renderXpertsDebug({ text: 'Drop .json file here or click anywhere to open \"File open...\" dialog' }, element)\n )\n }\n })\n}\n\nexport function renderXpertsDebug(props, element) {\n return renderComponent(props, element, 'xperts-debug/XpertsDebugPopup')\n}\n\nif ('undefined' != typeof window) {\n window['Highcharts'] = Highcharts\n\n window['$STATS'] || (window['$STATS'] = {})\n\n window['$STATS']['renderDataView'] = renderDataView\n window['$STATS']['updateDataView'] = updateDataView\n window['$STATS']['unlinkDataView'] = unlinkDataView\n\n window['$STATS']['renderSpecials'] = renderSpecials\n\n window['$STATS']['renderReportsPanel'] = renderReportsPanel\n window['$STATS']['renderReportControls'] = renderReportControls\n window['$STATS']['renderPalettesPanel'] = renderPalettesPanel\n window['$STATS']['renderWeightingPanel'] = renderWeightingPanel\n window['$STATS']['renderFiltersPanel'] = renderFiltersPanel\n window['$STATS']['renderDataCleaningPanel'] = renderDataCleaningPanel\n window['$STATS']['renderDataLab'] = renderDataLab\n window['$STATS']['renderMapping'] = renderMapping\n window['$STATS']['renderCrosstab'] = renderCrosstab\n\n window['$STATS']['renderExportSpecific'] = renderExportSpecific\n\n window['$STATS']['renderHeatMapPopup'] = renderHeatMapPopup\n\n window['$STATS']['renderQuestionHeader'] = renderQuestionHeader\n\n window['$STATS']['renderVQComponent'] = renderVQComponent\n window['$STATS']['renderCQComponent'] = renderCQComponent\n window['$STATS']['renderXQComponent'] = renderXQComponent\n window['$STATS']['renderCLComponent'] = renderCLComponent\n window['$STATS']['renderTLComponent'] = renderTLComponent\n window['$STATS']['renderSNComponent'] = renderSNComponent\n\n window['$STATS']['renderCLMappingComponent'] = renderCLMappingComponent\n window['$STATS']['renderTLMappingComponent'] = renderTLMappingComponent\n\n window['$STATS']['renderCNControls'] = renderCNControls\n window['$STATS']['renderOEControls'] = renderOEControls\n window['$STATS']['renderDCControls'] = renderDCControls\n window['$STATS']['renderADControls'] = renderADControls\n\n window['$STATS']['renderDCResponses'] = renderDCResponses\n\n window['$STATS']['unlinkComponent'] = unlinkComponent\n\n window['$STATS']['XpertsDebug'] = initializeXpertsDebug\n window['$STATS']['renderXpertsDebug'] = renderXpertsDebug\n\n window['$STATS']['RenameAllCodebooks'] = RenameAllCodebooks\n window['$STATS']['RenameAllTags'] = RenameAllTags\n\n window['$STATS']['cleanSearchData'] = cleanSearchData\n window['$STATS']['isSpecialsDefault'] = getIsDefaultReportParams\n}\n","// lib\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport { MultiSelect } from 'primereact/multiselect'\nimport MultiSelectHeader from 'primereact-raytm-theme/MultiSelectHeader'\nimport MultiSelectFooter from 'primereact-raytm-theme/MultiSelectFooter'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/ad/styles/Controls.module.scss'\n\nconst Controls = ({ model, data, disabled, onConfigChange, isSurveyGuest }) => {\n const { config } = model\n\n const options = data.controls.metrics.options || []\n const values = config?.metrics || options.map(option => option.value)\n\n const buttonLabelTemplate = event => {\n const label =\n event != undefined && event.value != undefined && event.options.length === event.value.length\n ? `All`\n : event != undefined && event.value != undefined && 0 < event.value.length\n ? 1 === event.value.length\n ? `${event.options.find(o => o.value === event.value[0])[event.optionLabel]}`\n : `Filtered to ${event.value.length}`\n : event != undefined\n ? event.placeholder\n : 'Select...'\n\n return (\n <>\n <span dangerouslySetInnerHTML={{ __html: label }}></span>\n </>\n )\n }\n\n return isSurveyGuest ? null : (\n <div className={`${style.component} p-fluid p-col-12`}>\n <div className={`p-fluid p-field p-col`}>\n {data.controls.metrics && (\n <div className={style.control}>\n <label htmlFor=\"metrics\">Metric types</label>\n <div className=\"p-field p-col-5\">\n <MultiSelect\n placeholder=\"Select...\"\n value={values}\n options={options}\n optionValue=\"value\"\n optionLabel=\"label\"\n disabled={disabled || data.controls.metrics.disabled}\n filter={true}\n filterBy={'search,label'}\n filterPlaceholder=\"Search items\"\n buttonLabelTemplate={buttonLabelTemplate}\n panelHeaderTemplate={MultiSelectHeader}\n panelFooterTemplate={MultiSelectFooter}\n onChange={\n disabled || data.controls.metrics.disabled ? null : event => onConfigChange('metrics', event.value)\n }\n />\n </div>\n </div>\n )}\n </div>\n </div>\n )\n}\n\nControls.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n disabled: PropTypes.bool,\n isSurveyGuest: PropTypes.bool,\n onConfigChange: PropTypes.func\n}\n\nControls.displayName = 'Controls'\n\nexport default Controls\n","// lib\nimport React, { useReducer, useState, useRef, useMemo, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { isEqual } from 'lodash'\n\nimport { dataReducer } from '@aytm/app/stats/page/question-views/components/mapping/reducers'\n\n// components\nimport { default as ComponentContainer } from '@aytm/app/stats/page/question-views/components/mapping/Component'\n\nimport Entities from '@aytm/app/stats/page/question-views/components/mapping/Entities'\nimport Attributes from '@aytm/app/stats/page/question-views/components/mapping/Attributes'\nimport Variables from '@aytm/app/stats/page/question-views/components/mapping/Variables'\n\nimport Controls from '@aytm/app/stats/page/question-views/components/mapping/Controls'\nimport Sources from '@aytm/app/stats/page/question-views/components/mapping/Sources'\nimport Footer from '@aytm/app/stats/page/question-views/components/mapping/Footer'\n\nconst Component = ({\n model,\n data,\n states,\n disabled,\n onChange,\n onReset,\n onControlsChange,\n onModeChange,\n onUpdateData,\n onInvalidKey,\n onPublish,\n onPublished\n}) => {\n const [state, dispatch] = useReducer(dataReducer, {\n entities: JSON.parse(JSON.stringify(model.entities)),\n attributes: JSON.parse(JSON.stringify(model.attributes)),\n variables: JSON.parse(JSON.stringify(model.variables || [])),\n refs: {},\n errors: []\n })\n\n const [changed, setChanged] = useState(false)\n\n const timer = useRef(null)\n\n const stateRef = useRef()\n stateRef.current = state\n\n const attributesOptions = useMemo(\n () =>\n data.options.attributes.map(attribute => {\n const option = {\n icon: attribute.icon,\n label: attribute.label,\n search: attribute.search\n }\n\n const refs = state.entities.map(entity => {\n const i = data.options.entities.findIndex(v => v.pattern == entity.pattern)\n return attribute.refs[i]\n })\n\n option.key = refs.join(', ')\n option.text = `<b>${option.label}</b><br/>${option.key}`\n\n return option\n }),\n [data.options.entities, data.options.attributes, state.entities]\n )\n\n const checkModel = () => {\n const newData = {}\n if (!isEqual(state.entities, model.entities)) {\n newData.errors ||= JSON.parse(JSON.stringify(state.errors))\n for (const i in state.entities) {\n const index = newData.errors.indexOf(`e${Number(i) + 1}`)\n 0 <= index && newData.errors.splice(index, 1)\n }\n newData.entities = JSON.parse(JSON.stringify(model.entities))\n }\n if (!isEqual(state.attributes, model.attributes)) {\n newData.errors ||= JSON.parse(JSON.stringify(state.errors))\n for (const i in state.attributes) {\n const index = newData.errors.indexOf(`a${Number(i) + 1}`)\n 0 <= index && newData.errors.splice(index, 1)\n }\n newData.attributes = JSON.parse(JSON.stringify(model.attributes))\n }\n if (!isEqual(state.variables, model.variables)) {\n newData.refs = state.refs\n newData.errors ||= JSON.parse(JSON.stringify(state.errors))\n for (const vi in state.variables) {\n delete newData.refs[`v${Number(vi) + 1}`]\n const index = newData.errors.indexOf(`v${Number(vi) + 1}`)\n 0 <= index && newData.errors.splice(index, 1)\n }\n newData.variables = JSON.parse(JSON.stringify(model.variables))\n }\n return newData\n }\n const checkState = () => {\n const newData = {}\n if (!isEqual(state.entities, model.entities)) newData.entities = JSON.parse(JSON.stringify(state.entities))\n if (!isEqual(state.attributes, model.attributes)) newData.attributes = JSON.parse(JSON.stringify(state.attributes))\n if (!isEqual(state.variables, model.variables)) newData.variables = JSON.parse(JSON.stringify(state.variables))\n return newData\n }\n\n const checkError = () => {\n if (0 < state.errors.length || !state.entities.length || !state.attributes.length) {\n return { error: true }\n }\n if (state.attributes.some(attr => attr.refs.split(',').length < state.entities.length)) {\n return {\n error:\n 'For each attribute, please make sure there is a question number or subquestion number that corresponds to each entity.'\n }\n }\n return { error: false }\n }\n\n useEffect(() => {\n if (changed) return\n\n dispatch({\n type: 'RESET',\n data: { ...checkModel() }\n })\n\n setChanged(\n !isEqual(stateRef.current.entities, model.entities) ||\n !isEqual(stateRef.current.attributes, model.attributes) ||\n !isEqual(stateRef.current.variables, model.variables)\n )\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [model.entities, model.attributes, model.variables])\n\n useEffect(() => {\n setChanged(true)\n\n const newData = {\n refs: state.refs,\n ...checkError(),\n ...checkState()\n }\n\n timer.current && clearTimeout(timer.current)\n timer.current = setTimeout(() => {\n onChange(newData)\n\n setChanged(false)\n }, 300)\n\n return () => timer.current && clearTimeout(timer.current)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state])\n\n const dataContextValue = useMemo(() => {\n return {\n id: model.id,\n mode: model.mode,\n group: model.group,\n original: model.original,\n data,\n disabled,\n attributesOptions,\n dispatch\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [model.id, model.mode, model.group, model.original, data, disabled, attributesOptions, dispatch])\n\n return (\n <ComponentContainer\n Controls={Controls}\n Footer={Footer}\n model={model}\n data={data}\n states={states}\n prefix=\"Concept\"\n command=\"insights.publishConceptLab\"\n changed={changed}\n disabled={disabled}\n dataContextValue={dataContextValue}\n onControlsChange={onControlsChange}\n onUpdateData={onUpdateData}\n onInvalidKey={onInvalidKey}\n onPublish={onPublish}\n onPublished={onPublished}\n >\n <Sources source={model.source} data={data} entities={state.entities} disabled={disabled} dispatch={dispatch} />\n <Entities items={state.entities} onReset={onReset} />\n <Attributes items={state.attributes} dimension={state.entities.length} onModeChange={onModeChange} />\n <Variables items={state.variables} note=\"for filtering\" />\n </ComponentContainer>\n )\n}\n\nComponent.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n states: PropTypes.object,\n disabled: PropTypes.bool,\n onChange: PropTypes.func,\n onReset: PropTypes.func,\n onControlsChange: PropTypes.func,\n onModeChange: PropTypes.func,\n onUpdateData: PropTypes.func,\n onInvalidKey: PropTypes.func,\n onPublish: PropTypes.func,\n onPublished: PropTypes.func\n}\n\nComponent.displayName = 'Component'\n\nexport default Component\n","// lib\nimport React, { useReducer, useState, useRef, useMemo, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { isEqual } from 'lodash'\n\nimport { dataReducer } from '@aytm/app/stats/page/question-views/components/mapping/reducers'\n\n// components\nimport { default as ComponentContainer } from '@aytm/app/stats/page/question-views/components/mapping/Component'\n\nimport Entities from '@aytm/app/stats/page/question-views/components/mapping/Entities'\nimport Attributes from '@aytm/app/stats/page/question-views/components/mapping/Attributes'\n\nimport Controls from '@aytm/app/stats/page/question-views/components/mapping/Controls'\nimport Sources from '@aytm/app/stats/page/question-views/components/mapping/Sources'\nimport Footer from '@aytm/app/stats/page/question-views/components/component/Footer'\n\nconst Component = ({\n model,\n data,\n states,\n disabled,\n onChange,\n onReset,\n onFeaturesChange,\n onControlsChange,\n onModeChange,\n onUpdateData\n}) => {\n const [state, dispatch] = useReducer(dataReducer, {\n entities: JSON.parse(JSON.stringify(model.entities)),\n attributes: JSON.parse(JSON.stringify(model.attributes)),\n errors: []\n })\n\n const [changed, setChanged] = useState(false)\n\n const timer = useRef(null)\n\n const stateRef = useRef()\n stateRef.current = state\n\n const attributesOptions = useMemo(\n () =>\n data.options.attributes.map(attribute => {\n const option = {\n icon: attribute.icon,\n label: attribute.label,\n search: attribute.search\n }\n\n const refs = state.entities.map(entity => {\n const i = data.options.entities.findIndex(v => v.pattern == entity.pattern)\n return attribute.refs[i]\n })\n\n option.key = refs.join(', ')\n option.text = `<b>${option.label}</b><br/>${option.key}`\n\n return option\n }),\n [data.options.entities, data.options.attributes, state.entities]\n )\n\n const checkModel = () => {\n const newData = {}\n if (!isEqual(state.entities, model.entities)) {\n newData.errors ||= JSON.parse(JSON.stringify(state.errors))\n for (const i in state.entities) {\n const index = newData.errors.indexOf(`e${Number(i) + 1}`)\n 0 <= index && newData.errors.splice(index, 1)\n }\n newData.entities = JSON.parse(JSON.stringify(model.entities))\n }\n if (!isEqual(state.attributes, model.attributes)) {\n newData.errors ||= JSON.parse(JSON.stringify(state.errors))\n for (const i in state.attributes) {\n const index = newData.errors.indexOf(`a${Number(i) + 1}`)\n 0 <= index && newData.errors.splice(index, 1)\n }\n newData.attributes = JSON.parse(JSON.stringify(model.attributes))\n }\n return newData\n }\n const checkState = () => {\n const newData = {}\n if (!isEqual(state.entities, model.entities)) newData.entities = JSON.parse(JSON.stringify(state.entities))\n if (!isEqual(state.attributes, model.attributes)) newData.attributes = JSON.parse(JSON.stringify(state.attributes))\n return newData\n }\n\n const checkError = () => {\n if (0 < state.errors.length || !state.entities.length || !state.attributes.length) {\n return { error: true }\n }\n if (state.attributes.some(attr => attr.refs.split(',').length < state.entities.length)) {\n return {\n error:\n 'For each attribute, please make sure there is a question number or subquestion number that corresponds to each entity.'\n }\n }\n return { error: false }\n }\n\n useEffect(() => {\n if (changed) return\n\n dispatch({\n type: 'RESET',\n data: { ...checkModel() }\n })\n\n setChanged(\n !isEqual(stateRef.current.entities, model.entities) || !isEqual(stateRef.current.attributes, model.attributes)\n )\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [model.entities, model.attributes])\n\n useEffect(() => {\n setChanged(true)\n\n const newData = {\n ...checkError(),\n ...checkState()\n }\n\n timer.current && clearTimeout(timer.current)\n timer.current = setTimeout(() => {\n onChange(newData)\n\n setChanged(false)\n }, 300)\n\n return () => timer.current && clearTimeout(timer.current)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state])\n\n const dataContextValue = useMemo(() => {\n return {\n id: model.id,\n mode: model.mode,\n group: model.group,\n original: model.original,\n data,\n disabled,\n attributesOptions,\n dispatch\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [model.id, model.mode, model.group, model.original, data, disabled, attributesOptions, dispatch])\n\n return (\n <ComponentContainer\n Controls={Controls}\n Footer={Footer}\n model={model}\n data={data}\n states={states}\n prefix=\"Concept\"\n changed={changed}\n disabled={disabled}\n dataContextValue={dataContextValue}\n onFeaturesChange={onFeaturesChange}\n onControlsChange={onControlsChange}\n onUpdateData={onUpdateData}\n >\n <Sources source={model.source} data={data} entities={state.entities} disabled={disabled} dispatch={dispatch} />\n <Entities items={state.entities} onReset={onReset} />\n <Attributes items={state.attributes} dimension={state.entities.length} onModeChange={onModeChange} />\n </ComponentContainer>\n )\n}\n\nComponent.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n states: PropTypes.object,\n disabled: PropTypes.bool,\n onChange: PropTypes.func,\n onReset: PropTypes.func,\n onFeaturesChange: PropTypes.func,\n onControlsChange: PropTypes.func,\n onModeChange: PropTypes.func,\n onUpdateData: PropTypes.func\n}\n\nComponent.displayName = 'Component'\n\nexport default Component\n","// lib\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport { Dropdown } from 'primereact/dropdown'\n\nimport ViewModes from '@aytm/app/stats/page/question-views/oe/components/Controls/ViewModes'\nimport VerbatimControls from '@aytm/app/stats/page/question-views/oe/components/Controls/Verbatim'\nimport TagsControls from '@aytm/app/stats/page/question-views/oe/components/Controls/Tags'\nimport WordcloudControls from '@aytm/app/stats/page/question-views/oe/components/Controls/Wordcloud'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/cn/styles/Controls.module.scss'\n\nconst Controls = ({\n model,\n data,\n features,\n collapsed,\n disabled,\n isSurveyGuest,\n onViewModeChange,\n onConfigChange,\n onPresetChange,\n onApplyToAll,\n onExport,\n onToggle\n}) => {\n const { config, answerVariants, chartMode, viewMode } = model\n\n const answerOptions = [\n { key: '*', text: 'Entire conversation overview' },\n ...answerVariants.map(answerVariant => {\n return {\n key: answerVariant.id,\n text: answerVariant.text,\n index: `A${answerVariant.position}`\n }\n })\n ]\n\n const answerTemplate = option =>\n option.hidden ? null : (\n <>\n <b>{option.index ? option.index + ': ' : ''}</b>\n {option.text}\n </>\n )\n const answerValueTemplate = (option, _props) =>\n option ? (\n <>\n <b>{option.index ? option.index + ': ' : ''}</b>\n {option.text}\n </>\n ) : (\n <span dangerouslySetInnerHTML={{ __html: _props.placeholder || 'Select...' }}></span>\n )\n\n const onChange = event => onConfigChange('ids', '*' == event.value ? null : event.value)\n\n return disabled ? null : (\n <div className={`${style.component} p-fluid p-col-12`}>\n <div className={`${style.filter} p-field p-col`}>\n <Dropdown\n className=\"p-dropdown-rounded\"\n value={config.ids ? config.ids : '*'}\n options={answerOptions}\n optionValue=\"key\"\n optionLabel=\"text\"\n optionDisabled=\"disabled\"\n itemTemplate={answerTemplate}\n valueTemplate={answerValueTemplate}\n fixedDropdownDir=\"bottom\"\n disabled={data.controls.config.filter?.disabled}\n onChange={data.controls.config.filter?.disabled ? null : onChange}\n />\n </div>\n <div className={`${style.controls} ${style['component-body']} p-fluid p-col`}>\n {<ViewModes model={model} data={data} onViewModeChange={onViewModeChange} />}\n {'verbatim' == viewMode ? (\n <VerbatimControls model={model} data={data} features={features} onConfigChange={onConfigChange} />\n ) : null}\n {'tags' == viewMode ? <TagsControls model={model} onConfigChange={onConfigChange} /> : null}\n {'wordcloud' == viewMode && !['map', 'none'].includes(chartMode) ? (\n <WordcloudControls\n model={model}\n data={data}\n features={features}\n applyToAllLabel={'Apply to all'}\n collapsed={collapsed}\n isSurveyGuest={isSurveyGuest}\n onPresetChange={onPresetChange}\n onApplyToAll={onApplyToAll}\n onExport={onExport}\n onToggle={onToggle}\n />\n ) : null}\n </div>\n </div>\n )\n}\n\nControls.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n features: PropTypes.object,\n collapsed: PropTypes.bool,\n disabled: PropTypes.bool,\n isSurveyGuest: PropTypes.bool,\n onViewModeChange: PropTypes.func,\n onConfigChange: PropTypes.func,\n onPresetChange: PropTypes.func,\n onApplyToAll: PropTypes.func,\n onExport: PropTypes.func,\n onToggle: PropTypes.func\n}\n\nControls.displayName = 'Controls'\n\nexport default Controls\n","// lib\nimport React, { useState, useRef, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { Transition } from 'react-transition-group'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/components/styles/Component.module.scss'\n\nexport const DataContext = React.createContext()\n\nconst Component = ({ Controls, children, model, data, states, changed, disabled, ...props }) => {\n const [collapsed, setCollapsed] = useState(\n !states.error && states.loaded && (states.collapsed == undefined || states.collapsed)\n )\n const [maxHeight, setMaxHeight] = useState(0)\n\n const [transitionDuration, setTransitionDuration] = useState(500)\n\n const componentRef = useRef()\n\n const collapsedRef = useRef()\n collapsedRef.current = collapsed\n\n const onToggle = () => {\n setCollapsed(!collapsedRef.current)\n setTransitionDuration(500)\n }\n\n // TODO\n useEffect(() => {\n states.collapsed != undefined && setCollapsed(states.collapsed)\n }, [states.collapsed])\n\n useEffect(() => {\n setMaxHeight(componentRef.current ? componentRef.current.getBoundingClientRect().height : 0)\n setTransitionDuration(collapsed ? 500 : 10)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [children, states.error, collapsed, componentRef.current])\n\n useEffect(() => {\n collapsedRef.current && !changed && !states.loading && setCollapsed(!states.error && states.loaded)\n }, [states.error, states.loaded, states.loading, changed])\n\n return (\n <div className={style.component}>\n <Controls model={model} data={data} collapsed={collapsed} disabled={disabled} onToggle={onToggle} {...props} />\n <Transition in={!collapsed} timeout={transitionDuration}>\n {status => (\n <div\n className={`${style['transition-panel']}${status ? ' ' + style['transition-panel-' + status] : ''}`}\n style={{\n maxHeight: collapsed ? 0 : `${0 < maxHeight ? maxHeight + 40 : 10000}px`,\n transitionDuration: `${transitionDuration}ms`\n }}\n >\n <div ref={componentRef} className={style['component-children']}>\n {children}\n {'string' === typeof states.error && (\n <div className={`${style.row} ${style['row-error']} p-fluid p-col-12`}>{states.error}</div>\n )}\n </div>\n </div>\n )}\n </Transition>\n </div>\n )\n}\n\nComponent.propTypes = {\n Controls: PropTypes.any,\n children: PropTypes.any,\n model: PropTypes.object,\n data: PropTypes.object,\n states: PropTypes.object,\n changed: PropTypes.bool,\n disabled: PropTypes.bool\n}\n\nComponent.displayName = 'Component'\n\nexport default Component\n","// libs\nimport React, { useMemo, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport htmlReactParser, { domToReact } from 'html-react-parser'\nimport { linkifyText } from '@aytm/app/stats/lib/linkify-text'\nimport { prepareForEditing, applyEditing } from './lib/TextEditor/converters'\n\nimport linkDecorators from '@aytm/app/stats/page/question-views/components/lib/TextEditor/linkDecorators'\nimport { SKIPPER_LINK_NAMES } from '@aytm/app/stats/page/question-views/components/lib/skipper-links/const'\nimport openSidebarLink, { OPEN_SIDEBAR_LINK_NAME } from './lib/skipper-links/open-sidebar'\nimport { getAttributesFromLinkNode } from '@aytm/app/stats/page/question-views/components/lib/skipper-links/attributes'\nimport { onSkipperLinkClick } from '@aytm/app/stats/page/question-views/components/lib/skipper-links/click'\n\n// components\nimport { Button } from 'primereact/button'\n\nimport TextEditor from '@aytm/app/stats/page/question-views/components/TextEditor'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/components/styles/QuestionAnnotation.module.scss'\nimport styleTextFormatting from '@aytm/app/stats/page/question-views/components/styles/TextFormatting.module.scss'\n\nconst QuestionAnnotation = ({\n note,\n editing,\n isNoteEditable,\n disabled,\n setNote,\n onSaveEditing,\n onCancelEditing,\n onAIAddQuestionClick\n}) => {\n const transformedNote = useMemo(() => (note ? linkifyText(note) : note), [note])\n const parsedNode = useMemo(\n () =>\n transformedNote\n ? htmlReactParser(transformedNote, {\n trim: true,\n replace(domNode) {\n if (SKIPPER_LINK_NAMES.includes(domNode.name)) {\n const linkAttributes = getAttributesFromLinkNode(domNode)\n const title = linkAttributes.title\n return (\n <span\n className={`${style.annotationLink} -dtr-annotation-link -dtr-annotation-link--${\n linkAttributes.questionType || 'unknown'\n }`}\n tabIndex={0}\n onClick={() => {\n if (onAIAddQuestionClick) {\n onSkipperLinkClick({ attributes: linkAttributes, addQuestion: onAIAddQuestionClick })\n }\n }}\n >\n {'vq' === linkAttributes.questionType ? (\n <i className={`icon-aytmfd-virtual-question-solid ${style.annotationLinkIcon}`}></i>\n ) : 'cq' === linkAttributes.questionType ? (\n <i className={`icon-aytmfd-correlation-finder ${style.annotationLinkIcon}`}></i>\n ) : 'cvq' === linkAttributes.questionType ? (\n <i className={`icon-aytmfd-correlation-finder ${style.annotationLinkIcon}`}></i>\n ) : null}\n {title}\n </span>\n )\n } else if (OPEN_SIDEBAR_LINK_NAME === domNode.name) {\n const tab = domNode.attribs?.tab || ''\n const focus = domNode.attribs?.focus || ''\n const icon = domNode.attribs?.icon || ''\n return (\n <span\n className={`${style.annotationLink} -dtr-open-sidebar-link -dtr-open-sidebar-link-${tab} -dtr-open-sidebar-link-${focus}`}\n onClick={() => void openSidebarLink({ tab, focus })}\n >\n {icon ? <i className={`${icon} ${style.annotationLinkIcon}`} /> : null}\n {domToReact(domNode.children)}\n </span>\n )\n }\n return void 0\n }\n })\n : transformedNote,\n [transformedNote, onAIAddQuestionClick]\n )\n\n const editingMapsRef = useRef(null)\n if (null === editingMapsRef.current && editing && isNoteEditable) {\n editingMapsRef.current = prepareForEditing(note)\n editingMapsRef.current.decorators = linkDecorators(\n editingMapsRef.current.charsMap,\n editingMapsRef.current.charsRegexp\n )\n setTimeout(() => setNote(editingMapsRef.current.html), 0)\n }\n\n const onSave = () => {\n if (!disabled) {\n if (editingMapsRef.current) {\n const appliedNote = applyEditing(note, editingMapsRef.current.charsMap, editingMapsRef.current.charsRegexp)\n editingMapsRef.current = null\n onSaveEditing(appliedNote)\n } else {\n onSaveEditing()\n }\n }\n }\n\n const onCancel = () => {\n editingMapsRef.current = null\n onCancelEditing()\n }\n\n return note || (editing && isNoteEditable) ? (\n <div className={style.container}>\n {editing ? (\n <>\n {isNoteEditable && (\n <div className={`${style.row} p-fluid p-col-12`} key=\"question-storytelling\">\n <div className={`${style.editor} p-field p-col`}>\n <TextEditor\n text={note}\n decorators={editingMapsRef.current?.decorators}\n height={200}\n characters={9999}\n onChange={setNote}\n />\n </div>\n </div>\n )}\n <div className={`${style.row} p-fluid p-col-12`}>\n <div className=\"p-field p-col\"> </div>\n <div className={`${style.group} p-field p-right p-col-4`}>\n <Button\n className={classNames(style.button, style.cancel)}\n label=\"CANCEL\"\n severity=\"secondary\"\n onClick={onCancel}\n />\n <Button className={style.button} label=\"SAVE\" disabled={disabled} onClick={disabled ? null : onSave} />\n </div>\n </div>\n </>\n ) : (\n <div className={`${style.row} p-fluid p-col-12`}>\n <div className={`${style.text} ${styleTextFormatting.text} p-field p-col`}>{parsedNode}</div>\n </div>\n )}\n </div>\n ) : null\n}\n\nQuestionAnnotation.propTypes = {\n note: PropTypes.string,\n editing: PropTypes.bool,\n isNoteEditable: PropTypes.bool,\n disabled: PropTypes.bool,\n setNote: PropTypes.func,\n onSaveEditing: PropTypes.func,\n onCancelEditing: PropTypes.func,\n onAIAddQuestionClick: PropTypes.func\n}\n\nQuestionAnnotation.displayName = 'QuestionAnnotation'\n\nexport default QuestionAnnotation\n","// libs\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/components/styles/QuestionBody.module.scss'\n\nconst QuestionBody = ({ children, editing, isQuestionCollapsed }) => (\n <div className={classNames(style.container, !editing && style.readOnly, isQuestionCollapsed && style.collapsed)}>\n {children}\n </div>\n)\n\nQuestionBody.propTypes = {\n children: PropTypes.any,\n editing: PropTypes.bool,\n isQuestionCollapsed: PropTypes.bool\n}\n\nQuestionBody.displayName = 'QuestionBody'\n\nexport default QuestionBody\n","import React, { Fragment, useState, useRef, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport ADND from '@aytm/lib/adnd/ADND'\nimport { formatAmounts } from '@aytm/app/stats/lib/helpers'\nimport { getIsDefaultReportParams } from '@aytm/app/stats/page/comments/lib/utils'\nimport { imageAsset as imageAssetUrl } from '@aytm/app/survey/editor/resources/urls'\nimport htmlReactParser, { domToReact } from 'html-react-parser'\nimport openSidebarLink, { OPEN_SIDEBAR_LINK_NAME } from './lib/skipper-links/open-sidebar'\n\n// components\nimport Popup from '@aytm/lib/rfd-ui/components/basic/popup'\n\nimport QuestionTitle from '@aytm/app/stats/page/question-views/components/QuestionTitle'\nimport QuestionAnnotation from '@aytm/app/stats/page/question-views/components/QuestionAnnotation'\n\nimport ImagePreview from '@aytm/app/survey/editor/components/content/assets/ImagePreview'\n\n// hooks\nimport { useSingleAndDoubleClick } from '@aytm/app/stats/page/question-views/components/lib/hooks/useSingleAndDoubleClick'\nimport useMountedRef from '@aytm/lib/hooks/useMountedRef'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/components/styles/QuestionHeader.module.scss'\nimport annotationStyle from '@aytm/app/stats/page/question-views/components/styles/QuestionAnnotation.module.scss'\n\n// consts\nimport {\n IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT,\n IMAGE_ASSET_PATH_FILTER_RESIZE_AND_PAD\n} from '@aytm/lib/common/assets'\nimport {\n QUESTION_TITLE_THUMB_HEIGHT,\n QUESTION_TITLE_THUMB_WIDTH,\n QUESTION_TITLE_IMAGE_MIN_WIDTH,\n QUESTION_TITLE_IMAGE_MAX_WIDTH,\n QUESTION_TITLE_IMAGE_MIN_HEIGHT,\n QUESTION_TITLE_IMAGE_MAX_HEIGHT,\n TYPE_DND_MAP\n} from '@aytm/app/stats/page/question-views/components/lib/constants'\n\n// SVGs\nimport RadarSVG from '@aytm/app/stats/page/question-views/components/lib/svg/radar.svg'\n\nconst QuestionHeader = ({\n model = {},\n question,\n onScrollToSkip,\n reportId,\n features,\n windowUID,\n sortableList,\n questionView,\n isEditingExt,\n titleExt,\n isQuestionCollapsed,\n isReportXpert,\n isShared,\n getReportParams,\n onToggleCollapse,\n onUpdateParams,\n onTitleChange,\n onStorytellingNoteChange,\n oeSearchParams,\n onCloneQuestion,\n onAIAssistantsClick,\n onAIAddQuestionClick,\n onFinalizeDragLayerContent,\n onDndStart,\n onDndEnd,\n onSetTitleExt,\n onSetEditQuestionExt,\n onSaveExt,\n onAIAssistantsCancel\n}) => {\n const {\n id,\n key,\n parentID,\n disabled,\n type,\n icon,\n subType,\n pre_type,\n position,\n visual_position,\n text,\n header,\n storytellingNote,\n answer,\n image,\n skipsTo,\n aiAssistantsText,\n aiAssistantsHash,\n aiAssistantsTotalTime,\n aiAssistantsCurrentTime,\n aiProgressMessage\n } = model\n\n const [title, setTitle] = useState(\n titleExt != undefined && null !== titleExt ? titleExt : ('string' === typeof header && header) || text\n )\n const [note, setNote] = useState(storytellingNote)\n\n const [isEditing, setIsEditing] = useState(isEditingExt || false)\n const [isCollapsed, setIsCollapsed] = useState(isQuestionCollapsed)\n const [thumbnailPreviewOpened, setThumbnailPreviewOpened] = useState(false)\n\n const [aiAssistantPopupPosition, setAIAssistantPopupPosition] = useState('topright')\n const [aiAssistantRequestFailed, setAIAssistantRequestFailed] = useState(false)\n\n const mountedRef = useMountedRef()\n\n const componentRef = useRef(null)\n\n const savedValues = useRef(null)\n savedValues.current = {\n text: titleExt != undefined && null !== titleExt ? titleExt : ('string' === typeof header && header) || text,\n note: storytellingNote\n }\n\n const dndListItemRef = useRef(questionView)\n const dndListItemHandleRef = useRef()\n\n const isRadarEnabled =\n ['rb', 'cb', 'mx', 'sr', 'se', 'ro', 'aro', 'mp', 'qa', 'bpm', 'psc'].includes(type) && !features.radar.hidden\n\n const isAIAssistantsEnabled = 'dc' !== type && !isShared && !disabled && !features.ai_assistants.disabled\n\n const aiProgressMessageNode = useMemo(\n () =>\n aiProgressMessage\n ? htmlReactParser(aiProgressMessage, {\n trim: true,\n replace({ name, attribs, children }) {\n if (OPEN_SIDEBAR_LINK_NAME === name) {\n const tab = attribs?.tab || ''\n const focus = attribs?.focus || ''\n const icon = attribs?.icon || ''\n return (\n <span\n className={`${annotationStyle.annotationLink} -dtr-open-sidebar-link -dtr-open-sidebar-link-${tab} -dtr-open-sidebar-link-${focus}`}\n onClick={() => void openSidebarLink({ tab, focus })}\n >\n {icon ? <i className={`${icon} ${annotationStyle.annotationLinkIcon}`} /> : null}\n {domToReact(children)}\n </span>\n )\n }\n return void 0\n }\n })\n : '',\n [aiProgressMessage]\n )\n\n const isTitleEditable =\n 'dc' !== type && !isShared && !disabled && ('function' === typeof onTitleChange || 'function' === typeof onSaveExt)\n const isNoteEditable = 'dc' !== type && !isShared && !disabled && 'function' === typeof onStorytellingNoteChange\n const isAnnotationEditable = 'dc' !== type && !isShared && !disabled && !features.disabled\n\n const isNoteDisabled =\n isEditing &&\n (!title.trim().length || (title === (('string' === typeof header && header) || text) && note === storytellingNote))\n\n const isTogglable =\n !isEditing && !thumbnailPreviewOpened && !features.toggling.disabled && 'function' === typeof onToggleCollapse\n const isDraggable =\n 'dc' !== type && !disabled && !isEditing && !thumbnailPreviewOpened && !features.reorder_questions.disabled\n const isClonable =\n 'dc' !== type &&\n !position &&\n !disabled &&\n !isEditing &&\n !thumbnailPreviewOpened &&\n 'function' === typeof onCloneQuestion\n\n const questionId = useMemo(\n () =>\n 0 < position\n ? (pre_type != undefined ? 'PQ' : 'Q') + visual_position\n : 'sn' !== type && null !== parentID && visual_position != undefined && 0 < visual_position\n ? `${parentID.toUpperCase()}_${visual_position}`\n : id.toUpperCase(),\n [id, parentID, pre_type, type, position, visual_position]\n )\n\n const onShowCommentsPage = useCallback(\n (event, mode) => {\n event.preventDefault()\n\n const query = []\n const selectedQuestion = questionId.toLowerCase()\n const searchParams = oeSearchParams\n\n if (searchParams.selectedQuestion && selectedQuestion !== searchParams.selectedQuestion)\n searchParams.searchString = ''\n searchParams.selectedQuestion = 'vr' !== type ? selectedQuestion : ''\n searchParams.query = query\n\n const params = {}\n params[mode] = getIsDefaultReportParams(searchParams, mode) ? null : searchParams\n\n onUpdateParams(event, params, reportId, mode)\n },\n [type, questionId, reportId, oeSearchParams, onUpdateParams]\n )\n\n const onShowRadarPage = useCallback(\n event => {\n event.preventDefault()\n\n if (isReportXpert || !getReportParams) return\n const params = getReportParams()\n\n const justFiltersParams = {}\n Object.keys(params).forEach(pk => {\n const pv = params[pk]\n if (/^(filter|virtual|schema|psc\\d+)/.test(pk)) {\n justFiltersParams[pk] = pv\n }\n })\n if (id) justFiltersParams['q'] = Number(id)\n\n let meta = {}\n meta = window.StatPage.lib.addCSRF(meta)\n const url = window.StatPage.lib.getStatUrl(\n window.shareKey && window.shareKey.key ? `stat/${window.shareKey.key}/radar` : 'radar',\n true\n )\n\n window.$STRG.Encode(justFiltersParams).then(base64params => {\n meta._bsfz = base64params\n window.StatHelpers.DOM.submitHiddenForm(url, meta)\n })\n },\n [id, isReportXpert, getReportParams]\n )\n\n const dndType =\n 0 < position\n ? `question-${windowUID}`\n : `${TYPE_DND_MAP[type]}${model.features != undefined && model.features.insightsMapping ? '-mapping' : ''}`\n\n const dndListItem = isDraggable\n ? ADND.targets.itemsList\n .listItem({\n type: dndType,\n list: sortableList\n })\n .onFinalizeDragLayerContent(onFinalizeDragLayerContent)\n : null\n\n const dndListItemHandle = isDraggable\n ? ADND.sources\n .listItemHandle({\n type: dndType,\n item: dndListItem,\n lockX: false,\n clonable: isClonable\n })\n .onStart(() => onDndStart(dndType))\n .onEnd(onDndEnd)\n .fetchData(() => {\n return {\n key,\n model: question,\n windowUID\n }\n })\n : null\n\n const onHeaderSingleClick = () => {\n if (!isTogglable) return\n onToggleCollapse()\n }\n\n const onHeaderDoubleClick = () => {\n if (!isClonable) return\n onCloneQuestion()\n }\n\n const onCancelEditing = () => {\n if ('function' === typeof onSetEditQuestionExt) {\n onSetEditQuestionExt(false)\n } else {\n setTitle(savedValues.current.title)\n setNote(savedValues.current.note)\n setIsEditing(false)\n }\n }\n\n const onSaveEditing = (withThisNote = note) => {\n if (isNoteEditable && (storytellingNote !== withThisNote || note !== withThisNote)) {\n const updatedNote = withThisNote.replace(/<br\\s*\\/?>\\s*</g, '<').trim()\n // .replace(\n // /\\(CVQLINK\\)/g,\n // `<cvq-link\n // title=\"chart\"\n // qtitle=\"Household Income x Q5\"\n // variant=\"cb\"\n // vq-qtitle=\"Household Income\"\n // vq-a0-text=\"Less than $50K\"\n // vq-a0-pattern=\"income in '0-25k', '25k-50k'\"\n // vq-a1-text=\"$50K - $99K\"\n // vq-a1-pattern=\"income in '50k-75k', '75k-100k'\"\n // vq-a2-text=\"$100K+\"\n // vq-a2-pattern=\"income in '100k-200k', '200k+'\"\n // a-pattern=\"q5\"\n // a0-pattern=\"Q5A1\" a0-logic=\"q5.a1\"\n // a1-pattern=\"Q5A3\" a1-logic=\"q5.a3\"\n // a2-pattern=\"Q5A4\" a2-logic=\"q5.a4\"\n // a3-pattern=\"Q5A5\" a3-logic=\"q5.a5\"\n // ></cvq-link>`\n // )\n setNote(updatedNote)\n onStorytellingNoteChange(updatedNote)\n }\n\n if (isTitleEditable && title !== (('string' === typeof header && header) || text)) {\n onTitleChange(title)\n }\n\n if ('function' === typeof onSetEditQuestionExt) {\n onSetEditQuestionExt(false)\n } else {\n setIsEditing(false)\n }\n }\n\n const toggleQuestionAnnotation = event => {\n event.preventDefault()\n\n if ('dc' === type) return\n if (isCollapsed) onHeaderSingleClick()\n if (isEditing) {\n if ('function' === typeof onSaveExt) {\n onSaveExt()\n } else {\n onSaveEditing()\n }\n } else {\n if ('function' === typeof onSetEditQuestionExt) {\n onSetEditQuestionExt(!isEditing)\n } else {\n savedValues.current = { title, note }\n setIsEditing(!isEditing)\n }\n }\n }\n\n const onSkipToClick = (event, idx) => {\n event.preventDefault()\n\n if ('dc' === type) return\n if ('function' === typeof onScrollToSkip) {\n onScrollToSkip(idx)\n }\n }\n\n const onKeyDownHandler = event => {\n if (27 === event.keyCode) {\n onCancelEditing()\n }\n }\n\n const onHeaderClick = useSingleAndDoubleClick(\n isTogglable ? onHeaderSingleClick : null,\n isClonable ? onHeaderDoubleClick : null\n )\n\n const onScroll = () => {\n if (null === componentRef.current) {\n setAIAssistantPopupPosition('topright')\n } else {\n const header = document.querySelector('#header')\n const headerRect = header.getBoundingClientRect()\n const stickyPanel = document.querySelector('#sticky-panel')\n const stickyPanelRect = stickyPanel.getBoundingClientRect()\n const componentRect = componentRef.current.getBoundingClientRect()\n\n setAIAssistantPopupPosition(\n componentRect.y < headerRect.y + headerRect.height + stickyPanelRect.height + 220 ? 'bottomright' : 'topright'\n )\n }\n }\n\n useEffect(() => {\n if (aiAssistantRequestFailed) {\n document.addEventListener('scroll', onScroll, false)\n document.defaultView.addEventListener('resize', onScroll, false)\n }\n onScroll()\n\n return () => {\n document.removeEventListener('scroll', onScroll, false)\n document.defaultView.removeEventListener('resize', onScroll, false)\n }\n }, [aiAssistantRequestFailed])\n\n useEffect(() => {\n if (isEditing) window.addEventListener('keydown', onKeyDownHandler)\n else window.removeEventListener('keydown', onKeyDownHandler)\n return () => {\n window.removeEventListener('keydown', onKeyDownHandler)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isEditing])\n\n useEffect(() => {\n if (note !== storytellingNote) {\n setNote(storytellingNote)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [storytellingNote])\n\n useEffect(() => {\n if (isEditing && isQuestionCollapsed) {\n onCancelEditing()\n }\n setIsCollapsed(isQuestionCollapsed)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isQuestionCollapsed])\n\n useEffect(() => {\n setTitle(\n titleExt != undefined && null !== titleExt\n ? titleExt\n : isEditing\n ? title\n : ('string' === typeof header && header) || text\n )\n }, [titleExt, text, header, title, isEditing])\n\n useEffect(() => {\n if (null !== isEditingExt) {\n setIsEditing(isEditingExt)\n }\n }, [isEditingExt])\n\n useEffect(() => {\n if (null !== aiAssistantsHash) {\n onCancelEditing()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [aiAssistantsHash])\n\n useEffect(() => {\n if (dndListItem) dndListItem.connect(dndListItemRef.current)\n\n return () => {\n if (dndListItem) dndListItem.disconnect()\n }\n }, [dndListItem])\n\n useEffect(() => {\n if (dndListItemHandle) dndListItemHandle.connect(dndListItemHandleRef.current)\n\n return () => {\n if (dndListItemHandle) dndListItemHandle.disconnect()\n }\n }, [dndListItemHandle])\n\n useEffect(() => {\n if (dndListItemHandle)\n dndListItemHandle.fetchData(() => {\n return {\n key,\n model: question,\n windowUID\n }\n })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [question])\n\n const renderQuestionThumbnail = () => (\n <div className={style.thumbnail}>\n <Popup\n portal\n trigger=\"hover\"\n direction=\"left\"\n content={() => (\n <ImagePreview\n minWidth={`${QUESTION_TITLE_IMAGE_MIN_WIDTH}px`}\n maxWidth={`${QUESTION_TITLE_IMAGE_MAX_WIDTH}px`}\n minHeight={`${QUESTION_TITLE_IMAGE_MIN_HEIGHT}px`}\n maxHeight={`${QUESTION_TITLE_IMAGE_MAX_HEIGHT}px`}\n imageUrl={image.original.url}\n onImageOpen={() => setThumbnailPreviewOpened(true)}\n onImageHide={() => setThumbnailPreviewOpened(false)}\n previewUrl={imageAssetUrl(image.original.path, {\n width: QUESTION_TITLE_IMAGE_MAX_WIDTH,\n height: QUESTION_TITLE_IMAGE_MAX_HEIGHT,\n filter: IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT,\n unsharp: true,\n backgroundColor: 'transparent'\n })}\n />\n )}\n contentTheme=\"thin-black\"\n hideOtherPopupsOnShow\n >\n <img\n src={imageAssetUrl(image.original.path, {\n width: QUESTION_TITLE_THUMB_WIDTH,\n height: QUESTION_TITLE_THUMB_HEIGHT,\n filter: IMAGE_ASSET_PATH_FILTER_RESIZE_AND_PAD,\n unsharp: true,\n backgroundColor: 'white'\n })}\n />\n </Popup>\n </div>\n )\n\n const renderRadarLink = () => {\n const msg = features.radar.available ? (\n <p>\n <span\n className={classNames('stat-upgrade-icon', {\n [features.radar.onPackage.id]: true\n })}\n >\n <i className={`icon-aytmfd-${features.radar.onPackage.id}`} />\n </span>\n Upgrade to <span className=\"stat-upgrade-plan\">{features.radar.onPackage.name}</span> plan to use this\n functionality\n </p>\n ) : features.radar.disabled ? (\n 'PLEASE LOGIN/JOIN THE TEAM TO UNLOCK ALL FEATURES <br/>OF THE STAT REPORT'\n ) : null\n\n return (\n <div\n className={classNames(style.radar, {\n [style.disabled]: features.radar.disabled\n })}\n >\n <Popup\n className={'rfd-ui-popup-notification rfd-ui-popup-notification-warning'}\n width=\"254px\"\n trigger={null !== msg ? 'hover' : 'none'}\n direction=\"bottomright\"\n show={null !== msg ? null : false}\n hideOtherPopupsOnShow={true}\n content={() => (\n <div\n dangerouslySetInnerHTML={{\n __html: null !== msg ? msg : ''\n }}\n />\n )}\n >\n {features.radar.available ? (\n <a className={style.aRadar} href={features.radar.onPackage.upgradeURL} target={'_blank'} rel=\"noreferrer\">\n <img src={RadarSVG} alt=\"Radar\" />\n </a>\n ) : (\n <span className={style.aRadar} onClick={features.radar.disabled ? null : onShowRadarPage}>\n <img src={RadarSVG} alt=\"Radar\" />\n </span>\n )}\n </Popup>\n </div>\n )\n }\n\n // TODO remove window.StatPage\n const renderSkipToLinks = () => {\n let res\n if (skipsTo.length > 1) {\n const qSkipsLinks = skipsTo.map(qSkipTo => {\n let item\n if (qSkipTo > 0) {\n item = (\n <span key={`skipTo${qSkipTo}`} onClick={event => onSkipToClick(event, qSkipTo)}>\n {window.StatPage.lib.questionPositionToVP(qSkipTo)}\n </span>\n )\n } else if (-1 == qSkipTo) {\n item = 'EXIT'\n } else if (-99 == qSkipTo) {\n item = 'HIDDEN EXIT'\n }\n return item\n })\n res = (\n <>\n <span className={style.aSkipTo}>\n <i className=\"icon-aytmfd-random\"></i>\n </span>\n <span className={style.spanSkipTo}>\n (\n {qSkipsLinks.map((qSkipLink, idx) => (\n <Fragment key={`skipToLink${idx}`}>\n {idx ? ' or ' : null}\n {qSkipLink}\n {0 === (idx + 1) % 3 && qSkipsLinks.length > idx + 1 ? <br /> : null}\n </Fragment>\n ))}\n )\n </span>\n </>\n )\n } else {\n res = (\n <>\n <span className={style.aSkipTo} onClick={event => onSkipToClick(event, skipsTo[0])}>\n <i className=\"icon-aytmfd-skip\"></i>\n </span>\n <span className={style.spanSkipTo} onClick={event => onSkipToClick(event, skipsTo[0])}>\n {-1 == skipsTo[0]\n ? 'EXIT'\n : -99 == skipsTo[0]\n ? 'HIDDEN EXIT'\n : window.StatPage.lib.questionPositionToVP(skipsTo[0])}\n </span>\n </>\n )\n }\n\n return (\n <div\n className={classNames(style.skipTo, {\n [style.random]: skipsTo.length > 1,\n [style.exit]: 1 == skipsTo.length && skipsTo[0] < 0\n })}\n >\n {res}\n </div>\n )\n }\n\n const onAIAssistantsClickCallback = data => {\n if (mountedRef.current) {\n setAIAssistantRequestFailed(\n null == data || 'failed' == data.scope?.aiStatus || (!data.response && !data.scope?.summary)\n )\n }\n }\n\n return (\n <div ref={componentRef} className={classNames(style.container, isCollapsed && style.collapsed)}>\n {isTogglable && (\n <span className={`${style.collapseLink} head-expand`} onClick={onToggleCollapse}>\n {isCollapsed ? 'Expand' : 'Collapse'}\n </span>\n )}\n <div className={classNames(style.component, isTogglable && style.togglable, isDraggable && style.draggable)}>\n <div className={style.subcomponent} onClick={onHeaderClick}>\n {'dc' !== type && (\n <>\n <div className={style.questionType}>\n <i\n className={`icon-aytmfd-${\n window.icon_question_types[\n (icon || type) +\n ((model.features != undefined && model.features.insightsMapping && '-mapping') || '')\n ]\n }${'mp' === type ? ('radios' === subType ? '-rb' : '-cb') : ''}`}\n />\n </div>\n <div className={style.questionId}>{questionId}</div>\n </>\n )}\n\n <div className={style.questionTitleContainer}>\n <QuestionTitle\n question={model}\n title={title}\n editing={isEditing}\n disabled={!isTitleEditable}\n setTitle={'function' === typeof onSetTitleExt ? onSetTitleExt : setTitle}\n />\n </div>\n </div>\n\n {image != undefined && image.original != undefined ? renderQuestionThumbnail(image) : null}\n\n {'oe' === type && !features.comments_page.hidden ? (\n <span\n id={`comments_${position}`}\n className={classNames(\n style.comments,\n ('loading' == answer || !answer.comments || features.comments_page.disabled) && style['comments-disabled']\n )}\n title={\n !features.comments_page.disabled\n ? 'loading' != answer && null !== answer.comments && 0 < answer.comments\n ? `View ${formatAmounts(answer, 'comments')} custom answers`\n : 'No custom answers'\n : ''\n }\n onClick={\n 'loading' != answer && null !== answer.comments && 0 < answer.comments && !features.comments_page.disabled\n ? event => onShowCommentsPage(event, 'comments')\n : null\n }\n >\n {'loading' != answer && null !== answer.comments && 0 < answer.comments\n ? formatAmounts(answer, 'comments')\n : 0}\n <i className=\"icon-aytmfd-optional-oe\" />\n </span>\n ) : null}\n\n {'cn' === type && !features.comments_page.hidden ? (\n <span\n id={`comments_${position}`}\n className={classNames(\n style.comments,\n ('loading' == answer || !answer.total || features.comments_page.disabled) && style['comments-disabled']\n )}\n title={\n !features.comments_page.disabled\n ? 'loading' != answer && null !== answer.total && 0 < answer.total\n ? `View ${formatAmounts(answer, 'total')} custom answers`\n : 'No custom answers'\n : ''\n }\n onClick={\n 'loading' != answer && null !== answer.total && 0 < answer.total && !features.comments_page.disabled\n ? event => onShowCommentsPage(event, 'comments')\n : null\n }\n >\n {'loading' != answer && null !== answer.total && 0 < answer.total ? formatAmounts(answer, 'total') : 0}\n <i className=\"icon-aytmfd-optional-oe\" />\n </span>\n ) : null}\n\n {'ir' === type && !features.comments_page.hidden ? (\n <span\n id={`image_responses_${position}`}\n className={classNames(\n style.imageResponses,\n ('loading' == answer || !answer.images || features.comments_page.disabled) &&\n style['imageResponses-disabled']\n )}\n title={\n !features.comments_page.disabled\n ? 'loading' != answer && null !== answer.images && 0 < answer.images\n ? `View ${formatAmounts(answer, 'images')} image responses`\n : 'No image responses'\n : ''\n }\n onClick={\n 'loading' != answer && null !== answer.images && 0 < answer.images && !features.comments_page.disabled\n ? event => onShowCommentsPage(event, 'image-responses')\n : null\n }\n >\n {'loading' != answer && null !== answer.images && 0 < answer.images ? formatAmounts(answer, 'images') : 0}\n <i className=\"icon-aytmfd-image\" />\n </span>\n ) : null}\n\n {'va' === type && !features.comments_page.hidden ? (\n <span\n id={`videos_${position}`}\n className={classNames(\n style.videoResponses,\n ('loading' == answer || !answer.videos || features.comments_page.disabled) &&\n style['videoResponses-disabled']\n )}\n title={\n !features.comments_page.disabled\n ? 'loading' != answer && null !== answer.videos && 0 < answer.videos\n ? `View ${formatAmounts(answer, 'videos')} videos`\n : 'No videos responses'\n : ''\n }\n onClick={\n 'loading' != answer && null !== answer.videos && 0 < answer.videos && !features.comments_page.disabled\n ? event => onShowCommentsPage(event, 'video-responses')\n : null\n }\n >\n {'loading' != answer && null !== answer.videos && 0 < answer.videos ? formatAmounts(answer, 'videos') : 0}\n <i className=\"icon-aytmfd-qvideoresponse\" />\n </span>\n ) : null}\n\n {undefined !== skipsTo && skipsTo.length ? renderSkipToLinks() : null}\n\n {isAIAssistantsEnabled ? (\n <>\n {aiAssistantRequestFailed ? (\n <Popup\n className=\"rfd-ui-popup-notification rfd-ui-popup-notification-warning\"\n targetClassName={style['aiAssistants-requestFailedPopupTarget']}\n width=\"400px\"\n trigger=\"none\"\n direction={aiAssistantPopupPosition}\n show={true}\n hideOtherPopupsOnShow={false}\n popupOffset={-36}\n content={() => (\n <div\n className={style['aiAssistants-requestFailedPopupContent']}\n onClick={() => void setAIAssistantRequestFailed(false)}\n >\n <i className={`icon-aytmfd-close ${style['aiAssistants-requestFailedPopupClose']}`} />\n <i className={`icon-aytmfd-skipper ${style['aiAssistants-requestFailedPopupIcon']}`} />\n <b>\n Sorry, mate, I've lost my bearings!... \n <span className={style['aiAssistants-requestFailedPopupCompass']}>ðŸ§Â</span>\n </b>\n <br />\n <small>Let's give it another go in a bit</small>\n </div>\n )}\n >\n <span className={style['aiAssistants-requestFailedPopupAnchor']} />\n </Popup>\n ) : null}\n <span\n className={classNames(\n 'stat-skipper-question-button',\n '-dtr-stat-skipper-question-button',\n `-dtr-stat-skipper-question-button--${type || 'unknown'}`,\n style.aiAssistants,\n aiAssistantsHash && style['aiAssistants-processing'],\n aiAssistantsHash && style['aiAssistants-disabled']\n )}\n data-skipper-question-button={questionId}\n onClick={\n aiAssistantsHash\n ? null\n : () => void (setAIAssistantRequestFailed(false), onAIAssistantsClick(onAIAssistantsClickCallback))\n }\n >\n {aiAssistantsHash && (\n <span\n className={style['aiAssistants-fill']}\n style={{\n width: 0 < aiAssistantsTotalTime ? `${(100 * aiAssistantsCurrentTime) / aiAssistantsTotalTime}%` : 0\n }}\n ></span>\n )}\n <i className=\"icon-aytmfd-skipper\"></i>\n <span\n className={style['aiAssistants-text']}\n dangerouslySetInnerHTML={{ __html: aiAssistantsText }}\n ></span>\n </span>\n </>\n ) : null}\n\n {isAnnotationEditable ? (\n <span\n className={classNames(style.titleEdit, aiAssistantsHash && style['titleEdit-disabled'])}\n onClick={aiAssistantsHash ? null : toggleQuestionAnnotation}\n >\n <i className=\"icon-aytmfd-pencil\"></i>\n </span>\n ) : null}\n\n {isRadarEnabled ? renderRadarLink() : null}\n </div>\n\n {isDraggable && <div ref={dndListItemHandleRef} className={style.questionMove} onClick={onHeaderClick} />}\n\n {!isCollapsed && aiProgressMessage ? (\n <div className={style.aiProgressMessage}>\n {aiProgressMessageNode}\n {onAIAssistantsCancel ? (\n <>\n <br />\n <br />\n <div className={style.aiCancelButton} onClick={() => void onAIAssistantsCancel()}>\n Cancel\n </div>\n </>\n ) : null}\n </div>\n ) : null}\n\n {!isCollapsed && !onSaveExt && !aiProgressMessage && (\n <QuestionAnnotation\n note={note}\n editing={isEditing}\n isNoteEditable={isNoteEditable}\n disabled={isNoteDisabled}\n setNote={setNote}\n onSaveEditing={onSaveEditing}\n onCancelEditing={onCancelEditing}\n onAIAddQuestionClick={onAIAddQuestionClick}\n />\n )}\n </div>\n )\n}\n\nQuestionHeader.propTypes = {\n model: PropTypes.shape({\n id: PropTypes.string,\n key: PropTypes.string,\n parentID: PropTypes.string,\n disabled: PropTypes.bool,\n type: PropTypes.string,\n subType: PropTypes.string,\n pre_type: PropTypes.number,\n position: PropTypes.number,\n visual_position: PropTypes.number,\n header: PropTypes.string,\n text: PropTypes.string,\n textAppendix: PropTypes.string,\n answer: PropTypes.any,\n image: PropTypes.object,\n skipsTo: PropTypes.array,\n aiProgressMessage: PropTypes.string\n }),\n question: PropTypes.object,\n isReportXpert: PropTypes.bool,\n isShared: PropTypes.bool,\n reportId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n oeSearchParams: PropTypes.object,\n sortableList: PropTypes.object,\n features: PropTypes.object,\n isQuestionCollapsed: PropTypes.bool,\n windowUID: PropTypes.string,\n isEditingExt: PropTypes.bool,\n titleExt: PropTypes.string,\n questionView: PropTypes.any,\n getReportParams: PropTypes.func,\n onScrollToSkip: PropTypes.func,\n onToggleCollapse: PropTypes.func,\n onUpdateParams: PropTypes.func,\n onCloneQuestion: PropTypes.func,\n onAIAssistantsClick: PropTypes.func,\n onAIAddQuestionClick: PropTypes.func,\n onFinalizeDragLayerContent: PropTypes.func,\n onDndStart: PropTypes.func,\n onDndEnd: PropTypes.func,\n onTitleChange: PropTypes.func,\n onStorytellingNoteChange: PropTypes.func,\n onSetEditQuestionExt: PropTypes.func,\n onSaveExt: PropTypes.func,\n onSetTitleExt: PropTypes.func,\n onAIAssistantsCancel: PropTypes.func\n}\n\nQuestionHeader.displayName = 'QuestionHeader'\n\nexport default QuestionHeader\n\nADND().connect()\n","// libs\nimport React, { useRef, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { decodeText, encodeText } from '@aytm/app/stats/lib/helpers'\n\n// components\nimport { InputTextarea } from 'primereact/inputtextarea'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/components/styles/QuestionTitle.module.scss'\n\nconst MAX_TITLE_LENGTH = 240\n\nconst onKeyDown = event => 13 === event.keyCode && event.preventDefault()\n\n// TODO remove window.StatPage.model\nconst QuestionTitle = ({ question, title, editing, disabled, setTitle }) => {\n const callbackRef = useRef(null)\n\n const questionTitle = useMemo(\n () =>\n ['dlv', 'dlc', 'dlx', 'dld', 'dlt'].includes(question.type)\n ? question.text.length\n ? `${question.text}${question.textAppendix ? ' ' + question.textAppendix : ''}`\n : 'New custom chart'\n : window.StatPage.model.processText(('string' === typeof question.header && question.header) || question.text),\n [question.header, question.text, question.textAppendix, question.type]\n )\n\n const onChange = useCallback(\n event => {\n const text = encodeText(event.target.value)\n if (title == text) return\n\n setTitle(text)\n },\n [title, setTitle]\n )\n\n const onPaste = useCallback(\n event => {\n event.preventDefault()\n\n let text =\n (event.clipboardData || window.clipboardData).getData('Text') || event.clipboardData.getData('text/plain')\n text = text.replace(/(\\r\\n|\\n|\\r|\\t|\\v)/gm, ' ').trim()\n\n const el = event.currentTarget\n\n const l = text.length\n const start = el.selectionStart\n const end = el.selectionEnd\n\n const valueBefore = el.value.slice(0, start)\n const valueAfter = el.value.slice(end)\n text = encodeText(`${valueBefore}${text}${valueAfter}`.slice(0, MAX_TITLE_LENGTH))\n\n if (title != text) setTitle(text)\n\n callbackRef.current = () => {\n el.setSelectionRange(start + l, start + l)\n el.blur()\n el.focus()\n }\n },\n [title, setTitle]\n )\n\n useEffect(() => {\n if (null !== callbackRef.current && 'function' === typeof callbackRef.current) {\n callbackRef.current()\n callbackRef.current = null\n }\n }, [title])\n\n return editing && !disabled ? (\n <div className={`p-fluid`} key=\"question-title\">\n <InputTextarea\n id={`title-${question.id}`}\n className={`${style.title}${!title.trim().length ? ' p-invalid' : ''}`}\n value={decodeText(title)}\n placeholder=\"Full title for reporting purposes\"\n maxLength={MAX_TITLE_LENGTH}\n rows={1}\n autoResize={true}\n autoFocus\n onChange={onChange}\n onKeyDown={onKeyDown}\n onPaste={onPaste}\n />\n </div>\n ) : (\n <div className={style.text} dangerouslySetInnerHTML={{ __html: questionTitle }} />\n )\n}\n\nQuestionTitle.propTypes = {\n question: PropTypes.object,\n title: PropTypes.string,\n editing: PropTypes.bool,\n disabled: PropTypes.bool,\n setTitle: PropTypes.func\n}\n\nQuestionTitle.displayName = 'QuestionTitle'\n\nexport default QuestionTitle\n","// lib\nimport React, { useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport { Map } from 'immutable'\n\nimport countText from '@aytm/app/survey/editor/lib/text-count'\n\n// components\nimport RichTextCounter from '@aytm/lib/rfd-ui/components/advanced/rich-text-counter'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/components/styles/TextEditor.module.scss'\n\nexport const formatOptions = Map({\n BOLD: true,\n ITALIC: true,\n UNDERLINE: true,\n blockquote: true,\n 'header-one': true\n})\n\nconst TextEditor = ({ text, height = 230, characters = 250, className, disabled, decorators, onChange }) => {\n const refEditorField = useRef()\n\n const onFocus = () => {\n refEditorField.current.refRichText.refEditor.focus()\n }\n\n const onChangeText = getContent => {\n const { html } = getContent({ html: true, text: false })\n 'function' === typeof onChange && onChange(html)\n }\n\n return (\n <div className={style.component}>\n {!disabled ? (\n <div className={className ? ` ${className}` : ''} onClick={onFocus}>\n <RichTextCounter\n ref={refEditorField}\n readOnly={false}\n placeholder=\"Start typing...\"\n characters={characters}\n trimAt={0}\n allowUndo={true}\n countText={countText}\n html={text}\n minHeight={height}\n multiline={true}\n formatOptions={formatOptions}\n decorators={decorators}\n onChange={onChangeText}\n />\n </div>\n ) : (\n <div className={style.text} dangerouslySetInnerHTML={{ __html: text }} />\n )}\n </div>\n )\n}\n\nTextEditor.propTypes = {\n text: PropTypes.string,\n height: PropTypes.number,\n characters: PropTypes.number,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n decorators: PropTypes.array,\n onChange: PropTypes.func.isRequired\n}\n\nTextEditor.displayName = 'TextEditor'\n\nexport default TextEditor\n","import React, { useState, useRef, useCallback } from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport Popup from '@aytm/lib/rfd-ui/components/basic/popup'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/components/styles/Controls.module.scss'\n\nconst Controls = ({ children, data, collapsed, onToggle }) => {\n const [status, setStatus] = useState('')\n\n const timer = useRef(null)\n\n const toggle = useCallback(() => {\n setStatus('toggling')\n onToggle()\n\n timer.current && clearTimeout(timer.current)\n timer.current = setTimeout(() => 'toggling' === status && setStatus(''), 500)\n\n return () => timer.current && clearTimeout(timer.current)\n }, [status, onToggle])\n\n return (\n <div className={`${style.component} p-fluid p-col-12`}>\n {data.icon && (\n <div className={`${style.icon} p-field`}>\n <i className={data.icon.class} />\n <span dangerouslySetInnerHTML={{ __html: data.icon.text }}></span>\n </div>\n )}\n <div className={`${style.controls} p-fluid p-field p-right p-col`}>{children}</div>\n <div className={`p-field p-right`}>\n <span\n className={`${style.toggle} ${\n 'toggling' == status ? (collapsed ? style['toggle-spin-reverse'] : style['toggle-spin']) : ''\n }`}\n >\n <i className=\"icon-aytmfd-config\" onClick={toggle}></i>\n </span>\n </div>\n {data.help && (\n <div className={`${style.help} p-field p-right`}>\n <Popup\n className=\"rfd-ui-popup-stat\"\n trigger=\"click\"\n width=\"500px\"\n direction=\"bottomright\"\n hideOtherPopupsOnShow={true}\n header={() => <div> </div>}\n content={() => <div dangerouslySetInnerHTML={{ __html: data.help }}></div>}\n >\n <i className=\"icon-aytmfd-help\" />\n </Popup>\n </div>\n )}\n </div>\n )\n}\n\nControls.propTypes = {\n data: PropTypes.object,\n collapsed: PropTypes.bool,\n onToggle: PropTypes.func,\n children: PropTypes.any\n}\n\nControls.displayName = 'Controls'\n\nexport default Controls\n","// lib\nimport React, { useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport { Button } from 'primereact/button'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/components/styles/Footer.module.scss'\n\nconst Footer = ({ children, data, states, updateTextPrefix, onUpdateData }) => {\n const updateText = useMemo(\n () =>\n `${updateTextPrefix ? updateTextPrefix : states.updated ? 'Updat' : 'Generat'}${\n updateTextPrefix ? '' : states.loading ? 'ing' : 'e'\n } ${data.texts.update}`,\n [data.texts.update, states.loading, states.updated, updateTextPrefix]\n )\n const updateDisabled = useMemo(\n () => states.error || states.loaded || states.loading || states.disabled.update,\n [states.error, states.loaded, states.loading, states.disabled.update]\n )\n\n return (\n <>\n <div className={`${style.component} ${style.row} p-fluid p-col-12`}>\n <div className=\"p-field\">\n <Button\n className=\"p-button-grey p-button-rounded\"\n label={updateText}\n loading={states.loading}\n disabled={updateDisabled}\n onClick={updateDisabled ? null : onUpdateData}\n />\n </div>\n <div className={`${style.group} ${style.children} p-fluid p-field p-col`}>{children}</div>\n </div>\n </>\n )\n}\n\nFooter.propTypes = {\n children: PropTypes.any,\n data: PropTypes.object,\n states: PropTypes.object,\n updateTextPrefix: PropTypes.string,\n onUpdateData: PropTypes.func\n}\n\nFooter.displayName = 'Footer'\n\nexport default Footer\n","import { prepareForEditing, applyEditing } from '../converters'\n\ndescribe('TextEditor custom tag converters', () => {\n const replaceRegex = /<(cq-link|vq-link)[^>]*?>.*?<\\/\\1>/gs\n const charBase = 0xf222\n\n describe('prepareForEditing', () => {\n it('should replace cq-link and vq-link tags with special characters', () => {\n const html = '<p><cq-link href=\"example.com\">Link 1</cq-link> and <vq-link>Link 2</vq-link></p>'\n const result = prepareForEditing(html, replaceRegex, charBase)\n\n const expectedChar1 = String.fromCodePoint(charBase)\n const expectedChar2 = String.fromCodePoint(charBase + 1)\n\n expect(result.html).toBe(`<p>${expectedChar1} and ${expectedChar2}</p>`)\n expect(Object.keys(result.charsMap)).toHaveLength(2)\n expect(result.charsRegexp).toEqual(new RegExp(`[${expectedChar1}${expectedChar2}]`, 'g'))\n })\n\n it('should handle tags with attributes', () => {\n const html = '<cq-link id=\"link1\" class=\"external\">Link</cq-link>'\n const result = prepareForEditing(html, replaceRegex, charBase)\n\n const expectedChar = String.fromCodePoint(charBase)\n\n expect(result.html).toBe(expectedChar)\n expect(result.charsMap[expectedChar].text).toBe(html)\n expect(result.charsRegexp).toEqual(new RegExp(`[${expectedChar}]`, 'g'))\n })\n\n it('should not replace other HTML tags', () => {\n const html = '<p>Normal <a href=\"example.com\">link</a></p>'\n const result = prepareForEditing(html, replaceRegex, charBase)\n\n expect(result.html).toBe(html)\n expect(Object.keys(result.charsMap)).toHaveLength(0)\n expect(result.charsRegexp).toEqual(/a^/) // This regex will never match anything\n })\n })\n\n describe('applyEditing', () => {\n it('should restore original tags from special characters', () => {\n const originalHtml = '<p><cq-link>Link 1</cq-link> and <vq-link>Link 2</vq-link></p>'\n const prepared = prepareForEditing(originalHtml, replaceRegex, charBase)\n const restored = applyEditing(prepared.html, prepared.charsMap, prepared.charsRegexp)\n\n expect(restored).toBe(originalHtml)\n })\n\n it('should handle multiple occurrences of the same tag', () => {\n const originalHtml = '<cq-link>Link 1</cq-link> <cq-link>Link 2</cq-link>'\n const prepared = prepareForEditing(originalHtml, replaceRegex, charBase)\n const restored = applyEditing(prepared.html, prepared.charsMap, prepared.charsRegexp)\n\n expect(restored).toBe(originalHtml)\n })\n\n it('should not modify text without special characters', () => {\n const html = '<p>Normal text</p>'\n const charsMap = {}\n const charsRegexp = new RegExp(\n `[${String.fromCodePoint(charBase)}${String.fromCodePoint(charBase + 1)}${String.fromCodePoint(charBase + 2)}]`,\n 'g'\n )\n const result = applyEditing(html, charsMap, charsRegexp)\n\n expect(result).toBe(html)\n })\n\n it('should preserve character if no replacement found', () => {\n const specialChar = String.fromCodePoint(charBase)\n const html = `${specialChar} No replacement for this`\n const charsMap = {}\n const charsRegexp = new RegExp(`[${specialChar}]`, 'g')\n const result = applyEditing(html, charsMap, charsRegexp)\n\n expect(result).toBe(html)\n })\n })\n})\n","const prepareForEditing = (\n html: string,\n replaceRegex = /<(cq-link|vq-link|cvq-link)[^>]*?>.*?<\\/\\1>/g,\n charBase = 0xf222\n): { html: string; charsMap: { [char: string]: { text: string; title?: string } }; charsRegexp: RegExp } => {\n let currentChar = charBase\n const charsMap: { [char: string]: { text: string; title?: string } } = {}\n const usedChars: string[] = []\n\n const convertedHtml = html.replace(replaceRegex, match => {\n const char = String.fromCodePoint(currentChar)\n const titleMatch = match.match(/title=\"([^\"]*)\"/)\n const title = titleMatch ? titleMatch[1] : void 0\n\n charsMap[char] = { text: match, ...(title && { title }) }\n usedChars.push(char)\n currentChar++\n return char\n })\n\n const charsRegexp = usedChars.length > 0 ? new RegExp(`[${usedChars.join('')}]`, 'g') : new RegExp('a^')\n\n return {\n html: convertedHtml,\n charsMap: charsMap,\n charsRegexp\n }\n}\n\nconst applyEditing = (html: string, charsMap: { [char: string]: { text: string } }, charsRegexp: RegExp): string =>\n html.replace(charsRegexp, char => {\n const replacement = charsMap[char]\n if (!replacement) {\n return char\n }\n return replacement.text\n })\n\nexport { prepareForEditing, applyEditing }\n","import React, { useEffect, useRef } from 'react'\nimport { CompositeDecorator, ContentBlock } from 'draft-js'\n\nimport style from '@aytm/app/stats/page/question-views/components/styles/TextEditor.module.scss'\n\nlet linkDecoratorComponentID = 0\nconst linkDecoratorComponentIDPrefix = `${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`\n\nconst linkDecorators = (charsMap: { [char: string]: { text: string; title?: string } }, charsRegexp: RegExp) => {\n const LinkComponent = (props: { decoratedText: string; children: React.ReactNode }) => {\n const title = charsMap[props.decoratedText]?.title\n const idRef = useRef<number>(null)\n if (null === idRef.current) {\n idRef.current = linkDecoratorComponentID++\n }\n const id = `annotation-link-decorator-${linkDecoratorComponentIDPrefix}-${idRef.current}`\n const titleStyle = title ? `#${id}::before { content: \"${title}\"; }` : ''\n const titleStyleRef = useRef<HTMLStyleElement>(null)\n useEffect(() => {\n if (titleStyleRef.current) {\n titleStyleRef.current.innerText = titleStyle\n }\n }, [titleStyle])\n return (\n <>\n <style ref={titleStyleRef} />\n <span className={style.linkDecorator} id={id}>\n <span className={style.linkDecoratorAnchor}>{props.children}</span>\n </span>\n </>\n )\n }\n\n return [\n new CompositeDecorator([\n {\n strategy: (\n contentBlock: ContentBlock,\n callback: (start: number, end: number) => void\n /*,_contentState: unknown */\n ) => {\n const text = contentBlock.getText()\n let matchArr\n let start\n while ((matchArr = charsRegexp.exec(text)) !== null) {\n start = matchArr.index\n callback(start, start + matchArr[0].length)\n }\n },\n component: LinkComponent\n }\n ])\n ]\n}\n\nexport default linkDecorators\n","export const QUESTION_TITLE_THUMB_WIDTH = 27\nexport const QUESTION_TITLE_THUMB_HEIGHT = 27\nexport const QUESTION_TITLE_IMAGE_WIDTH = 320\nexport const QUESTION_TITLE_IMAGE_HEIGHT = 6000\nexport const QUESTION_TITLE_IMAGE_MIN_WIDTH = 70\nexport const QUESTION_TITLE_IMAGE_MAX_WIDTH = 265\nexport const QUESTION_TITLE_IMAGE_MIN_HEIGHT = 70\nexport const QUESTION_TITLE_IMAGE_MAX_HEIGHT = 265\n\nexport const TYPE_DND_MAP = {\n dlv: 'question-custom',\n dlc: 'question-custom-cf',\n dlx: 'question-custom-xpert',\n dld: 'question-custom-concept',\n dlt: 'question-custom-tracker',\n sn: 'question-custom-sn'\n}\n\nexport const TYPE_FEATURE_MAP = {\n dlv: 'data_lab_vq',\n dlc: 'data_lab_cf',\n dlx: 'data_lab_xpert',\n dld: 'data_lab_concept',\n dlt: 'data_lab_tracker',\n sn: 'data_lab_storytelling'\n}\n\nexport const TYPE_VARIANT_MAP = {\n dlv: 'vq',\n dlc: 'cq',\n dlx: 'xq',\n dld: 'cl',\n dlt: 'tl',\n sn: 'sn'\n}\n","import { useEffect, useState } from 'react'\n\nexport function useSingleAndDoubleClick(handleSingleClick, handleDoubleClick, delay = 250) {\n const [click, setClick] = useState(0)\n\n useEffect(() => {\n const timer = setTimeout(() => {\n if (1 === click && 'function' === typeof handleSingleClick) {\n handleSingleClick()\n }\n\n if (2 === click && 'function' === typeof handleDoubleClick) {\n handleDoubleClick()\n }\n\n setClick(0)\n }, delay)\n\n return () => clearTimeout(timer)\n }, [click, handleSingleClick, handleDoubleClick, delay])\n\n return event => setClick(event.detail)\n}\n","import { SKIPPER_CQ_LINK_NAME, SKIPPER_VQ_LINK_NAME, SKIPPER_CVQ_LINK_NAME } from './const'\nimport {\n skipperLinkAttributesToCorrelationFinderQuestion,\n skipperLinkCorrelationFinderAttributesFinalize\n} from './link-types/correlation-finder'\nimport {\n skipperLinkAttributesToCorrelationFinderVQQuestion,\n skipperLinkCorrelationFinderVQAttributesFinalize\n} from './link-types/correlation-finder-vq'\nimport {\n skipperLinkAttributesToVirtualQuestion,\n skipperLinkVirtualQuestionAttributesFinalize\n} from './link-types/virtual-question'\n\nimport {\n SkipperLinkAttributes,\n SkipperLinkCorrelationFinderQuestion,\n SkipperLinkCompositeQuestion,\n SkipperLinkVirtualQuestion\n} from './types'\n\nexport function skipperLinkAttributesToQuestion(\n attributes: SkipperLinkAttributes\n): SkipperLinkCorrelationFinderQuestion | SkipperLinkVirtualQuestion | SkipperLinkCompositeQuestion {\n switch (attributes.questionType) {\n case 'cq': {\n return skipperLinkAttributesToCorrelationFinderQuestion(attributes)\n }\n case 'vq': {\n return skipperLinkAttributesToVirtualQuestion(attributes)\n }\n case 'cvq': {\n return skipperLinkAttributesToCorrelationFinderVQQuestion(attributes)\n }\n default: {\n return null\n }\n }\n}\n\nexport function getAttributesFromLinkNode(node: Element): SkipperLinkAttributes {\n let attributes = Array.from(node.attributes).reduce((obj: SkipperLinkAttributes, attr) => {\n obj[attr.name] = attr.value\n return obj\n }, {})\n\n switch (node.tagName.toLowerCase()) {\n case SKIPPER_VQ_LINK_NAME: {\n attributes = skipperLinkVirtualQuestionAttributesFinalize(attributes)\n break\n }\n case SKIPPER_CQ_LINK_NAME: {\n attributes = skipperLinkCorrelationFinderAttributesFinalize(attributes)\n break\n }\n case SKIPPER_CVQ_LINK_NAME: {\n attributes = skipperLinkCorrelationFinderVQAttributesFinalize(attributes)\n break\n }\n default: {\n break\n }\n }\n\n return attributes\n}\n\nexport function collectArrayFromAttributes(\n attributes: SkipperLinkAttributes,\n prefix: string,\n keys: string[],\n mandatoryKeys: string[] = keys\n): { [key: string]: string }[] {\n const collected: { [key: string]: string }[] = []\n for (let i = 0; ; i++) {\n const attributeKeys = keys.map(key => `${prefix}${i}-${key}`)\n const mandatoryAttributeKeys = mandatoryKeys.map(key => `${prefix}${i}-${key}`)\n if (mandatoryAttributeKeys.some(key => !(key in attributes))) {\n break\n }\n const item = keys.reduce(\n (variants, key, index) => {\n variants[key] = attributes[attributeKeys[index]]\n return variants\n },\n {} as { [key: string]: string }\n )\n collected.push(item)\n }\n return collected\n}\n","import { skipperLinkAttributesToQuestion } from './attributes'\nimport { SkipperLinkAttributes, SkipperLinkQuestion } from './types'\n\nexport function onSkipperLinkClick({\n attributes,\n addQuestion\n}: {\n attributes: SkipperLinkAttributes\n addQuestion: (\n question: SkipperLinkQuestion,\n onDoneCallback?: (id: string, questionView: { toggleCollapse: () => void }) => boolean,\n positionShift?: number,\n onFoundQuestionCallback?: (question: SkipperLinkQuestion) => void\n ) => void\n}) {\n const question = skipperLinkAttributesToQuestion(attributes)\n\n if (Array.isArray(question)) {\n const prevQuestions: SkipperLinkQuestion[] = []\n\n const addNextQuestion = (questionIndex: number) => {\n const currentQuestion = question[questionIndex]\n const isLastQuestion = questionIndex === question.length - 1\n\n if (currentQuestion) {\n if ('function' === typeof currentQuestion) {\n const nextQuestionGenerator = currentQuestion\n let nextQuestion = nextQuestionGenerator(prevQuestions)\n if (nextQuestion) {\n nextQuestion = { ...nextQuestion }\n\n addQuestion(\n nextQuestion,\n (id, questionView) => {\n nextQuestion.id = id\n prevQuestions.push(nextQuestion)\n if (!isLastQuestion) {\n setTimeout(() => questionView?.toggleCollapse?.(), 100)\n }\n setTimeout(() => addNextQuestion(questionIndex + 1), 200)\n return void 0 /* !isLastQuestion */\n },\n questionIndex,\n foundQuestion => {\n prevQuestions.push(foundQuestion)\n\n setTimeout(() => void addNextQuestion(questionIndex + 1), 200)\n }\n )\n }\n } else {\n const nextQuestion = { ...currentQuestion }\n addQuestion(\n nextQuestion,\n (id, questionView) => {\n nextQuestion.id = id\n prevQuestions.push(nextQuestion)\n if (!isLastQuestion) {\n setTimeout(() => questionView?.toggleCollapse?.(), 100)\n }\n setTimeout(() => void addNextQuestion(questionIndex + 1), 200)\n return void 0 /* !isLastQuestion */\n },\n questionIndex,\n foundQuestion => {\n prevQuestions.push(foundQuestion)\n\n setTimeout(() => void addNextQuestion(questionIndex + 1), 200)\n }\n )\n }\n }\n }\n\n addNextQuestion(0)\n } else {\n addQuestion(question)\n }\n}\n","export const SKIPPER_CQ_LINK_NAME = 'cq-link'\nexport const SKIPPER_VQ_LINK_NAME = 'vq-link'\nexport const SKIPPER_CVQ_LINK_NAME = 'cvq-link'\n\nexport const SKIPPER_LINK_NAMES = [SKIPPER_CQ_LINK_NAME, SKIPPER_VQ_LINK_NAME, SKIPPER_CVQ_LINK_NAME] as const\n","import { SkipperLinkAttributes, SkipperLinkCompositeQuestion, SkipperLinkVirtualQuestion } from '../types'\nimport { skipperLinkAttributesToCorrelationFinderQuestion } from './correlation-finder'\nimport { skipperLinkAttributesToVirtualQuestion } from './virtual-question'\n\nexport function skipperLinkCorrelationFinderVQAttributesFinalize(attributes: SkipperLinkAttributes) {\n attributes.questionType = 'cvq'\n attributes.title ??= 'chart'\n attributes.qtitle ??= 'Correlation finder'\n attributes['vq-qtitle'] ??= 'Virtual question'\n return attributes\n}\n\nexport function skipperLinkAttributesToCorrelationFinderVQQuestion(\n attributes: SkipperLinkAttributes\n): SkipperLinkCompositeQuestion {\n const vqAttributes: SkipperLinkAttributes = {}\n for (const key in attributes) {\n if (key.startsWith('vq-')) {\n vqAttributes[key.slice(3)] = attributes[key]\n }\n }\n const virtualQuestion: SkipperLinkVirtualQuestion = skipperLinkAttributesToVirtualQuestion(vqAttributes)\n\n const compositeQuestion: SkipperLinkCompositeQuestion = [\n virtualQuestion,\n prevQuestions => {\n const virtualQuestion = prevQuestions[0] as SkipperLinkVirtualQuestion\n\n const correlationFinderAttributes: SkipperLinkAttributes = {}\n for (const key in attributes) {\n if (!key.startsWith('vq-')) {\n correlationFinderAttributes[key] = attributes[key]\n }\n }\n\n const vqID = virtualQuestion.id\n if (!vqID) {\n // eslint-disable-next-line no-console\n console.error('Virtual question id is required for correlation finder question')\n return null\n }\n const vqUID = vqID.toUpperCase()\n correlationFinderAttributes['b-pattern'] = vqID\n\n virtualQuestion.answerVariants.forEach((_, index) => {\n correlationFinderAttributes[`b${index}-pattern`] = `${vqUID}A${index + 1}`\n correlationFinderAttributes[`b${index}-logic`] = `${vqID}.a${index + 1}`\n })\n\n const correlationFinderQuestion = skipperLinkAttributesToCorrelationFinderQuestion(correlationFinderAttributes)\n return correlationFinderQuestion\n }\n ]\n\n return compositeQuestion\n}\n","import { collectArrayFromAttributes } from '../attributes'\nimport { SkipperLinkAttributes, SkipperLinkCorrelationFinderQuestion } from '../types'\n\nexport function skipperLinkCorrelationFinderAttributesFinalize(attributes: SkipperLinkAttributes) {\n attributes.questionType = 'cq'\n attributes.title ??= '(show correlation)'\n attributes.qtitle ??= 'Correlation finder'\n return attributes\n}\n\nexport function skipperLinkAttributesToCorrelationFinderQuestion(\n attributes: SkipperLinkAttributes\n): SkipperLinkCorrelationFinderQuestion {\n const question: SkipperLinkCorrelationFinderQuestion = {\n text: attributes.qtitle,\n type: 'dlc',\n variant: 'cf',\n mode: 'sigtest',\n batches: [\n {\n pattern: attributes['b-pattern'],\n position: 1,\n answerVariants: collectArrayFromAttributes(attributes, 'b', [\n 'pattern',\n 'logic'\n ]) as SkipperLinkCorrelationFinderQuestion['batches'][0]['answerVariants']\n },\n {\n pattern: attributes['a-pattern'],\n position: 2,\n answerVariants: collectArrayFromAttributes(attributes, 'a', [\n 'pattern',\n 'logic'\n ]) as SkipperLinkCorrelationFinderQuestion['batches'][0]['answerVariants']\n }\n ]\n }\n const finalizedQuestion = ensureCorrelationFinderQuestionIntegrity(question)\n if (finalizedQuestion) {\n return finalizedQuestion\n } else {\n // eslint-disable-next-line no-console\n console.error('Invalid question generated from link attributes', question)\n return null\n }\n}\n\nexport function ensureCorrelationFinderQuestionIntegrity(\n question: SkipperLinkCorrelationFinderQuestion\n): SkipperLinkCorrelationFinderQuestion {\n try {\n const traitsOptions = StatPage?.classes?.DataLab?.CorrelationFinder?.Lib?.traitsOptions || []\n const questionsOptions = StatPage?.classes?.DataLab?.CorrelationFinder?.Lib?.questionsOptions || []\n const ensureBatch = (batch: (typeof question.batches)[0]) => {\n // check if batch.answerVariants are a valid trait options\n const batchTraitOptions = traitsOptions.find(\n option => option.key.toLocaleLowerCase() === batch.pattern.toLocaleLowerCase()\n )\n if (batchTraitOptions) {\n batch.answerVariants = batch.answerVariants.filter(answerVariant =>\n batchTraitOptions.options.some(\n option =>\n option.pattern.toLocaleLowerCase() === answerVariant.pattern.toLocaleLowerCase() &&\n option.logic.toLocaleLowerCase() === answerVariant.logic.toLocaleLowerCase()\n )\n )\n return Boolean(batch.answerVariants.length)\n }\n\n // check if batch.answerVariants are a valid question options\n const batchQuestionOptions = questionsOptions.find(\n option => option.key.toLocaleLowerCase() === batch.pattern.toLocaleLowerCase()\n )\n if (batchQuestionOptions) {\n batch.answerVariants = batch.answerVariants.filter(answerVariant =>\n batchQuestionOptions.options.some(\n option =>\n option.pattern.toLocaleLowerCase() === answerVariant.pattern.toLocaleLowerCase() &&\n option.logic.toLocaleLowerCase() === answerVariant.logic.toLocaleLowerCase()\n )\n )\n return Boolean(batch.answerVariants.length)\n }\n\n return false\n }\n return ensureBatch(question.batches[0]) && ensureBatch(question.batches[1]) ? question : null\n } catch {\n return null\n }\n}\n","import { collectArrayFromAttributes } from '../attributes'\nimport { SkipperLinkAttributes, SkipperLinkVirtualQuestion } from '../types'\n\nexport function skipperLinkVirtualQuestionAttributesFinalize(attributes: SkipperLinkAttributes) {\n attributes.questionType = 'vq'\n attributes.title ??= '(show)'\n attributes.qtitle ??= 'Virtual Question'\n return attributes\n}\n\nexport function skipperLinkAttributesToVirtualQuestion(attributes: SkipperLinkAttributes): SkipperLinkVirtualQuestion {\n const question: SkipperLinkVirtualQuestion = {\n text: attributes.qtitle,\n type: 'dlv',\n variant: 'rb' === attributes.variant ? 'rb' : 'cb',\n answerVariants: collectArrayFromAttributes(\n attributes,\n 'a',\n ['text', 'pattern', 'other', 'base'],\n ['text', 'pattern']\n ).map((attribute, index) => {\n const vqAnswerVariant: SkipperLinkVirtualQuestion['answerVariants'][0] = {\n text: attribute.text,\n pattern: attribute.pattern,\n position: index + 1,\n options: { mode: 'basic' }\n }\n if (attribute.base) {\n vqAnswerVariant.base = attribute.base\n }\n if ('true' === attribute.other) {\n vqAnswerVariant.other = true\n }\n return vqAnswerVariant\n })\n }\n return question\n}\n","export const OPEN_SIDEBAR_LINK_NAME = 'open-sidebar'\n\nexport default function openSidebarLink({ tab, focus }: { tab: string; focus: string }) {\n if (tab) {\n StatPage?.sidebar?.openControlPanel?.(tab)\n }\n if (focus) {\n switch (focus) {\n case 'add-banner': {\n const focusOn = async () => {\n try {\n const addBannerDropdown: HTMLElement = await waitForSelector('#crosstab-panel-add-banner-dropdown')\n addBannerDropdown?.click()\n const filterInput = await waitForSelector('.p-dropdown-filter', addBannerDropdown)\n filterInput?.focus()\n } catch {\n // skip\n }\n }\n void focusOn()\n break\n }\n case 'confidence-level': {\n const focusOn = async () => {\n try {\n const confidenceLevelSlider: HTMLElement = await waitForSelector('#crosstab-panel-confidence-level-slider')\n if (confidenceLevelSlider) {\n const handle = await waitForSelector('.p-slider-handle', confidenceLevelSlider)\n await focusBlink(handle)\n handle.focus()\n }\n } catch {\n // skip\n }\n }\n void focusOn()\n break\n }\n case 'significance-level': {\n const focusOn = async () => {\n try {\n const significanceLevelSlider: HTMLElement = await waitForSelector(\n '#crosstab-panel-significance-level-slider'\n )\n if (significanceLevelSlider) {\n const handle = await waitForSelector('.p-slider-handle', significanceLevelSlider)\n await focusBlink(handle)\n handle.focus()\n }\n } catch {\n // skip\n }\n }\n void focusOn()\n break\n }\n default: {\n break\n }\n }\n }\n}\n\nfunction waitForSelector(selector: string, parent: ParentNode = document, retries = 20): Promise<HTMLElement> {\n let retriesLeft = retries\n return new Promise((resolve, reject) => {\n const interval = setInterval(() => {\n const element = parent.querySelector(selector)\n if (element) {\n clearInterval(interval)\n resolve(element as HTMLElement)\n }\n retriesLeft--\n if (retriesLeft <= 0) {\n clearInterval(interval)\n reject()\n }\n }, 100)\n })\n}\n\nasync function focusBlink(element: HTMLElement, stepDuration = 150, times = 3): Promise<void> {\n const waitTime = (resolve: (v: unknown) => void) => setTimeout(resolve, stepDuration)\n const blink = async () => {\n element.focus()\n await new Promise(waitTime)\n element.blur()\n await new Promise(waitTime)\n }\n for (let i = 0; i < times; i++) {\n await blink()\n }\n}\n","import React from 'react'\n\nexport const itemTemplate = option =>\n option.hidden ? null : option.disabled && option.icon == undefined ? (\n <span dangerouslySetInnerHTML={{ __html: option.text }}></span>\n ) : (\n <span className={`p-item-label p-item-${option.key}`}>\n {option.icon ? <i className={`icon-aytmfd-${option.icon}`} /> : null}\n <span dangerouslySetInnerHTML={{ __html: option.text }}></span>\n </span>\n )\nexport const valueTemplate = (option, _props) =>\n option ? (\n <>\n {option.icon ? <i className={`icon-aytmfd-${option.icon}`} /> : null}\n <span dangerouslySetInnerHTML={{ __html: option.label || option.text.split(':')[0] }}></span>\n </>\n ) : (\n <span dangerouslySetInnerHTML={{ __html: _props.placeholder || 'Select...' }}></span>\n )\n\nexport const optionGroupTemplate = option =>\n option.hidden || !option.text.trim().length ? null : (\n <span className=\"p-item-group-text\" dangerouslySetInnerHTML={{ __html: option.text }}></span>\n )\n","// lib\nimport React, { useContext, useState, useRef, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\nimport ADND from '@aytm/lib/adnd/ADND'\nimport { DataContext } from '@aytm/app/stats/page/question-views/components/mapping/Component'\n\nimport { getMethodOptions } from '@aytm/app/stats/page/question-views/components/mapping/lib'\nimport { generateUID, encodeText, decodeText } from '@aytm/app/stats/lib/helpers'\n\n// components\nimport { InputText } from 'primereact/inputtext'\nimport { Dropdown } from 'primereact/dropdown'\nimport { MultiSelect } from 'primereact/multiselect'\n\nimport MultiSelectHeader from 'primereact-raytm-theme/MultiSelectHeader'\nimport MultiSelectFooter from 'primereact-raytm-theme/MultiSelectFooter'\n\nimport Popup from '@aytm/lib/rfd-ui/components/basic/popup'\n\n// hooks\nimport { useSingleAndDoubleClick } from '@aytm/app/stats/page/question-views/components/lib/hooks/useSingleAndDoubleClick'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/components/mapping/styles/Component.module.scss'\n\nconst Attribute = ({ item, position, dimension, dndItemsList, onMethodFocus, onMethodBlur }) => {\n const { id, mode, data, disabled, attributesOptions = [], dispatch } = useContext(DataContext)\n\n const [methodsType, setMethodsType] = useState(null)\n const [methodsSubtype, setMethodsSubtype] = useState(null)\n\n const [selectedValue, setSelectedValue] = useState(null)\n\n const [itemMode, setItemMode] = useState(mode)\n\n const [input, setInput] = useState(item.refs)\n const [focused, setFocused] = useState(false)\n\n const timer = useRef(null)\n\n const changedRef = useRef(false)\n\n const dndListItemRef = useRef()\n const dndListItemHandleRef = useRef()\n\n const refsRef = useRef(null)\n refsRef.current = item.refs\n\n const focusedRef = useRef(focused)\n focusedRef.current = focused\n\n const methodRef = useRef(null)\n const methodValueRef = useRef(item.method)\n\n const methodsTypeRef = useRef(null)\n methodsTypeRef.current = methodsType\n\n const methodsSubtypeRef = useRef(null)\n methodsSubtypeRef.current = methodsSubtype\n\n const methodsOptions = useMemo(() => {\n const refs = item.refs\n .split(',')\n .map(v => v.trim())\n .slice(0, dimension)\n\n const { type, subtype, methods } = getMethodOptions(refs, data.questions)\n\n setMethodsType(type)\n setMethodsSubtype(subtype)\n\n return methods\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [item.refs, dimension, data.questions])\n\n const onMethodChange = useCallback(\n (methods, applyToAll = false) => {\n let method = methods\n if (Array.isArray(methods)) {\n method.sort((a, b) => Number(a.slice(1)) - Number(b.slice(1)))\n method = method.join(',')\n }\n\n if (applyToAll)\n dispatch({\n type: 'UPDATE_ATTRIBUTES_METHOD',\n data: {\n method: method\n }\n })\n else\n dispatch({\n type: 'UPDATE_ATTRIBUTE',\n data: {\n item: {\n ...item,\n method: method\n },\n position: position - 1\n }\n })\n },\n [item, position, dispatch]\n )\n\n const fetchData = useCallback(() => {\n return {\n id,\n item,\n position: position - 1,\n windowUID: data.windowUID,\n remove: () =>\n dispatch({\n type: 'DELETE_ATTRIBUTE',\n data: position - 1\n })\n }\n }, [item, position, id, data.windowUID, dispatch])\n\n const dndListItem = ADND.targets.itemsList.listItem({\n type: `dlq-attribute-${data.windowUID}`,\n list: dndItemsList\n })\n const dndListItemHandle = ADND.sources\n .listItemHandle({\n type: `dlq-attribute-${data.windowUID}`,\n item: dndListItem,\n cloneable: true\n })\n .fetchData(fetchData)\n\n const itemTemplate = option =>\n option.disabled && option.icon == undefined ? (\n <span dangerouslySetInnerHTML={{ __html: option.label }}></span>\n ) : (\n <span className={option.item ? '' : 'p-item-label'}>\n {option.icon ? <i className={`icon-aytmfd-${option.icon}`} /> : null}\n <span dangerouslySetInnerHTML={{ __html: option.text }}></span>\n </span>\n )\n const valueTemplate = (option, _props) =>\n option ? (\n <>\n {option.icon ? <i className={`icon-aytmfd-${option.icon}`} /> : null}\n <span dangerouslySetInnerHTML={{ __html: option.label || option.text }}></span>\n </>\n ) : (\n <span dangerouslySetInnerHTML={{ __html: _props.placeholder || 'Select...' }}></span>\n )\n\n const buttonLabelTemplate = event => {\n const methods =\n event != undefined && event.value != undefined && 0 < event.value.length\n ? methodsOptions.filter(o => event.value.includes(o.key))\n : []\n\n const text =\n 0 < methods.length\n ? methods.length == methodsOptions.length\n ? 'All'\n : 1 == methods.length\n ? methods[0].label\n : methods\n .map(o => o.key)\n .join(',')\n .toUpperCase()\n : 'Select...'\n return <span dangerouslySetInnerHTML={{ __html: text }}></span>\n }\n\n const onInputChange = event => setInput(event.target.value || '')\n\n const onInputFocus = () => setFocused(true)\n const onInputBlur = () => setFocused(false)\n\n const onSelectedChange = value => {\n if (value === refsRef.current) return\n\n const option = attributesOptions.find(v => v.key == value)\n\n changedRef.current = true\n\n dispatch({\n type: 'UPDATE_ATTRIBUTE',\n data: {\n item: {\n ...item,\n text: option ? option.label : item.text,\n refs: value || ''\n },\n position: position - 1\n }\n })\n }\n\n const onLabelChange = event => {\n dispatch({\n type: 'UPDATE_ATTRIBUTE',\n data: {\n item: {\n ...item,\n text: encodeText(event.target.value)\n },\n position: position - 1\n }\n })\n }\n\n const onDeleteClick = () => {\n dispatch({\n type: 'DELETE_ATTRIBUTE',\n data: position - 1\n })\n }\n\n const onHandleClick = useSingleAndDoubleClick(null, () => {\n dispatch({\n type: 'ADD_ATTRIBUTE',\n data: {\n item: {\n ...item,\n key: generateUID()\n },\n position: position\n }\n })\n })\n\n useEffect(() => {\n if (dndListItem) dndListItem.connect(dndListItemRef.current)\n\n return () => {\n if (dndListItem) dndListItem.disconnect()\n }\n }, [dndListItem])\n\n useEffect(() => {\n if (dndListItemHandle) dndListItemHandle.connect(dndListItemHandleRef.current)\n\n return () => {\n if (dndListItemHandle) dndListItemHandle.disconnect()\n }\n }, [dndListItemHandle])\n\n useEffect(() => {\n timer.current && clearTimeout(timer.current)\n\n focusedRef.current &&\n (timer.current = setTimeout(() => {\n onSelectedChange(input)\n }, 500))\n\n return () => timer.current && clearTimeout(timer.current)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [input])\n\n useEffect(() => {\n if (changedRef.current) {\n dispatch({\n type: 'UPDATE_ATTRIBUTE',\n data: {\n item: {\n ...item,\n method: 0 < methodsOptions.length ? methodsOptions[0].key : ''\n },\n position: position - 1\n }\n })\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [methodsType, methodsSubtype])\n\n useEffect(() => {\n dispatch({\n type: 'UPDATE_ERRORS',\n data: {\n id: `a${position}`,\n error:\n null === item.method || !item.method.length || !item.refs.split(',').filter(v => 0 < v.trim().length).length\n }\n })\n }, [item.method, item.refs, position, dispatch])\n\n useEffect(() => {\n timer.current && clearTimeout(timer.current)\n\n const refs = item.refs\n ? item.refs\n .split(',')\n .map(v => v.trim())\n .join(', ')\n : ''\n\n setSelectedValue(item.refs ? refs : null)\n\n if (!focusedRef.current) setInput(refs)\n\n changedRef.current = false\n }, [item.refs])\n\n useEffect(() => {\n if (!methodsOptions.length) {\n if (null !== item.method && 0 < item.method.length) onMethodChange('')\n } else {\n if (\n ['rb', 'mx', 'sr', 'se'].includes(methodsTypeRef.current) ||\n ('mp' == methodsTypeRef.current && 'radios' == methodsSubtypeRef.current)\n ) {\n if (!methodsOptions.some(option => option.key === item.method)) {\n onMethodChange(\n methodsOptions.some(option => option.key === methodValueRef.current)\n ? methodValueRef.current\n : methodsOptions[0].key\n )\n } else methodValueRef.current = item.method\n } else {\n if (0 < item.method.length) {\n const methods = item.method.split(',')\n if (methods.some(method => !methodsOptions.some(option => option.key === method))) {\n onMethodChange(\n methodValueRef.current.split(',').some(method => methodsOptions.some(option => option.key === method))\n ? methodValueRef.current\n .split(',')\n .filter(method => methodsOptions.some(option => option.key === method))\n .join(',')\n : methodsOptions.map(option => option.key).join(',')\n )\n } else methodValueRef.current = item.method\n } else methodValueRef.current = item.method\n }\n }\n }, [item.method, methodsOptions, onMethodChange])\n\n useEffect(() => {\n const isAdvanced =\n 'advanced' == mode ||\n !attributesOptions.length ||\n (null !== selectedValue && !attributesOptions.some(v => v.key == selectedValue))\n\n setItemMode(isAdvanced ? 'advanced' : mode)\n }, [mode, attributesOptions, selectedValue])\n\n const renderAdvanced = () => (\n <InputText\n className={`${0 < input.length ? '' : 'p-inputtext-empty'}${\n !focused && 0 < input.length && !methodsOptions.length ? 'p-invalid' : ''\n }`}\n placeholder={'Please type question numbers (ex: \"Q1, Q3, Q5...\")'}\n value={input}\n disabled={disabled}\n onChange={disabled ? null : onInputChange}\n onFocus={disabled ? null : onInputFocus}\n onBlur={disabled ? null : onInputBlur}\n />\n )\n const renderBasic = () => (\n <Dropdown\n placeholder=\"Select...\"\n value={selectedValue}\n options={attributesOptions}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n filter={true}\n filterBy={'search,text'}\n filterPlaceholder=\"Search items\"\n resetFilterOnHide={true}\n filterInputAutoFocus={false}\n fixedDropdownDir=\"bottom\"\n disabled={disabled}\n onChange={disabled ? null : event => onSelectedChange(event.value)}\n />\n )\n\n const renderComponent = () => (\n <>\n <div className={`${style.index} p-field`}>{position}.</div>\n <div\n className={`${style.group} ${style['group-av']}${\n disabled ? ' ' + style['group-av-disabled'] : ''\n } p-fluid p-field p-col`}\n >\n <div className=\"p-fluid p-field p-col-6\">\n <div className=\"p-field p-col-12\">\n {disabled || 'advanced' == itemMode ? renderAdvanced() : renderBasic()}\n </div>\n </div>\n <div ref={methodRef} className={`${style.group} ${style['group-composite']} p-fluid p-field p-col-6`}>\n <div className={`p-field p-col-5`}>\n {!methodsOptions.length ? (\n <MultiSelect\n className=\"p-composite\"\n placeholder=\"Select...\"\n fixedDropdownDir=\"bottom\"\n appendTo={methodRef.current || 'self'}\n disabled={true}\n />\n ) : ['rb', 'mx', 'sr', 'se'].includes(methodsType) ||\n ('mp' == methodsType && 'radios' == methodsSubtype) ? (\n <Dropdown\n className=\"p-composite\"\n placeholder=\"Select...\"\n value={item.method}\n options={methodsOptions}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n fixedDropdownDir=\"bottom\"\n appendTo={methodRef.current || 'self'}\n disabled={disabled}\n onChange={\n disabled\n ? null\n : event =>\n onMethodChange(\n event.value,\n event.originalEvent &&\n event.originalEvent.shiftKey &&\n !event.originalEvent.ctrlKey &&\n !event.originalEvent.altKey &&\n !event.originalEvent.metaKey\n )\n }\n onFocus={onMethodFocus}\n onBlur={onMethodBlur}\n />\n ) : (\n <MultiSelect\n className=\"p-composite\"\n placeholder=\"Select...\"\n value={0 < item.method.length ? item.method.split(',') : []}\n options={methodsOptions}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n buttonLabelTemplate={buttonLabelTemplate}\n panelHeaderTemplate={MultiSelectHeader}\n panelFooterTemplate={MultiSelectFooter}\n fixedDropdownDir=\"bottom\"\n appendTo={methodRef.current || 'self'}\n disabled={disabled}\n onChange={\n disabled\n ? null\n : event =>\n onMethodChange(\n event.value,\n event.originalEvent &&\n event.originalEvent.shiftKey &&\n !event.originalEvent.ctrlKey &&\n !event.originalEvent.altKey &&\n !event.originalEvent.metaKey\n )\n }\n onFocus={onMethodFocus}\n onBlur={onMethodBlur}\n />\n )}\n </div>\n <div className=\"p-field p-col\">\n <InputText\n className=\"p-composite\"\n placeholder=\"Please type a label...\"\n value={decodeText(item.text)}\n maxLength=\"120\"\n disabled={disabled}\n onChange={disabled ? null : onLabelChange}\n />\n </div>\n </div>\n </div>\n {disabled ? null : (\n <div className=\"p-field\">\n <span ref={dndListItemHandleRef} className={style.handle} onClick={disabled ? null : onHandleClick}>\n <i className=\"icon-aytmfd-handle\"></i>\n </span>\n </div>\n )}\n </>\n )\n\n return (\n <div ref={dndListItemRef} className={`${style.row} ${style['row-av']} p-fluid p-col-12`}>\n {disabled ? null : (\n <span className={style.delete} onClick={disabled ? null : onDeleteClick}>\n <i className=\"icon-aytmfd-delete\"></i>\n </span>\n )}\n <Popup\n className=\"rfd-ui-popup-notification rfd-ui-popup-notification-warning\"\n targetClassName=\"p-fluid p-field p-col-12\"\n width=\"254px\"\n trigger={0 < item.refs.length && !methodsOptions.length ? 'hover' : 'none'}\n direction=\"topleft\"\n popupOffset={46}\n show={0 < item.refs.length && !methodsOptions.length ? null : false}\n hideOtherPopupsOnShow={true}\n content={() => <p>Please list corresponding questions/subquestions for each run separated by commas.</p>}\n >\n {renderComponent()}\n </Popup>\n </div>\n )\n}\n\nAttribute.propTypes = {\n item: PropTypes.object,\n position: PropTypes.number,\n dimension: PropTypes.number,\n dndItemsList: PropTypes.any,\n onMethodFocus: PropTypes.func,\n onMethodBlur: PropTypes.func\n}\n\nAttribute.displayName = 'Attribute'\n\nexport default Attribute\n","// lib\nimport React, { useContext, useState, useRef, useEffect, useCallback } from 'react'\nimport PropTypes from 'prop-types'\n\nimport ADND from '@aytm/lib/adnd/ADND'\nimport { DataContext } from '@aytm/app/stats/page/question-views/components/mapping/Component'\n\nimport { generateUID } from '@aytm/app/stats/lib/helpers'\n\n// components\nimport Popup from '@aytm/lib/rfd-ui/components/basic/popup'\n\nimport Attribute from '@aytm/app/stats/page/question-views/components/mapping/Attribute'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/components/mapping/styles/Component.module.scss'\n\nconst onDNDPositionChange = ({ newPosition, dragItemUpdater } = {}) =>\n dragItemUpdater(node => {\n const itemPositionNode = node.querySelector(`.stats-Concept-Item-index`)\n if (null !== itemPositionNode) {\n itemPositionNode.innerHTML = null === `${newPosition + 1}.` ? '' : `${newPosition + 1}.`\n }\n })\n\nconst getDefaultAttribute = (item = {}) => {\n return {\n key: generateUID(),\n text: '',\n refs: '',\n method: '',\n ...item\n }\n}\n\nconst Attributes = ({ items, dimension, onModeChange }) => {\n const { id, mode, group, data, disabled, dispatch } = useContext(DataContext)\n\n const [activeLabel, setActiveLabel] = useState(' ')\n\n const dndItemsListRef = useRef()\n\n const methodTimer = useRef(null)\n\n const onDNDUpdateItemPositions = ({ hiddenItemIndex, placeholderIndex } = {}) => {\n const itemPositionNodes = dndItemsListRef.current.querySelectorAll(`.stats-Concept-Item .stats-Concept-Item-index`)\n\n for (const [i, itemPositionNode] of itemPositionNodes.entries()) {\n if (null !== itemPositionNode) {\n const visualItemIndex = i + (null !== hiddenItemIndex && hiddenItemIndex <= i ? -1 : 0)\n const newItemIndex =\n visualItemIndex + (null !== placeholderIndex && placeholderIndex <= visualItemIndex ? 1 : 0)\n itemPositionNode.innerHTML = null === `${newItemIndex + 1}` ? '' : `${newItemIndex + 1}.`\n }\n }\n }\n\n const onDNDDrop = res => {\n const { item, position, clone } = res\n\n if (clone) {\n dispatch({\n type: 'ADD_ATTRIBUTE',\n data: {\n item: {\n ...getDefaultAttribute(item.item),\n key: generateUID()\n },\n position\n }\n })\n } else if (item.id != id) {\n item.remove()\n dispatch({\n type: 'ADD_ATTRIBUTE',\n data: {\n item: {\n ...getDefaultAttribute(item.item),\n key: generateUID()\n },\n position\n }\n })\n } else if (item.position != position) {\n dispatch({\n type: 'REORDER_ATTRIBUTES',\n data: {\n from: item.position,\n to: position\n }\n })\n }\n\n onDNDUpdateItemPositions()\n }\n\n const dndItemsList = ADND.targets\n .itemsList(\n {\n acceptTypes: [`dlq-attribute-${data.windowUID}`],\n placeholderVMargin: 10\n },\n { capture: false }\n )\n .buildPlaceholder(() => {\n const placeholderNode = document.createElement('div')\n placeholderNode.className = `${style.placeholder}`\n return placeholderNode\n })\n .onPositionChange(onDNDPositionChange)\n .onUpdateItemPositions(onDNDUpdateItemPositions)\n .onEnter(onDNDUpdateItemPositions)\n .onLeave(onDNDUpdateItemPositions)\n .onDrop(onDNDDrop)\n\n const onAddClick = () => {\n dispatch({\n type: 'ADD_ATTRIBUTE',\n data: {\n item: getDefaultAttribute(),\n position: items.length\n }\n })\n }\n\n const onMethodBlur = () => {\n if (null !== methodTimer.current) return\n setActiveLabel(' ')\n }\n\n const onMethodFocus = useCallback(() => {\n methodTimer.current && clearTimeout(methodTimer.current)\n methodTimer.current = setTimeout(() => {\n methodTimer.current = null\n\n setActiveLabel('Hold <u>Shift</u> to apply to all')\n }, 200)\n\n return () => methodTimer.current && clearTimeout(methodTimer.current)\n }, [])\n\n useEffect(() => {\n dndItemsList.connect(dndItemsListRef.current)\n\n return () => {\n dndItemsList.disconnect()\n }\n }, [dndItemsList])\n\n return (\n <div className={style.component}>\n <div className={`${style.row} ${style['row-header']} p-fluid p-col-12`}>\n {disabled || group == undefined || null === group || ['custom', 'survey'].includes(group) ? (\n <b className={style.title}>\n {items.length} {1 == items.length ? 'attribute' : 'attributes'}\n </b>\n ) : (\n <>\n <div className=\"p-field p-col-4\">\n <b className={style.title}>\n {items.length} {1 == items.length ? 'attribute' : 'attributes'}\n </b>\n </div>\n <div className=\"p-field p-right p-col-8\">\n <span className={style.toggle} onClick={() => onModeChange('advanced' == mode ? 'basic' : 'advanced')}>\n {'advanced' == mode ? 'switch to basic mode' : 'switch to advanced mode'}\n </span>\n </div>\n </>\n )}\n </div>\n <div\n className={`${style.row} ${style['row-label']}${\n disabled ? ' ' + style['row-label-disabled'] : ''\n } p-fluid p-col-12`}\n >\n <div className={`p-field p-col-6`}>\n Questions/Subquestions\n <Popup\n className=\"rfd-ui-popup-stat\"\n trigger=\"click\"\n width=\"400px\"\n direction=\"righttop\"\n hideOtherPopupsOnShow={true}\n header={() => <div> </div>}\n content={() => (\n <>\n <p>Select the following for questions/subquestions:</p>\n <ol className=\"rfd-ui-popup-list\">\n <li>The question(s) or subquestion(s) you would like to include as attributes.</li>\n <li>\n How you would like the question/subquestion summarized (mean, box scores, or an individual answer\n option).\n </li>\n <li>\n Review definitions for mean and box score options \n <a\n href=\"https://helpcenter.aytm.com/hc/en-us/articles/11652523287053-Concept-Lab\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n here\n </a>\n </li>\n </ol>\n </>\n )}\n >\n <i className=\"icon-aytmfd-help\" />\n </Popup>\n </div>\n <div className={`${style.group} p-fluid p-field p-col`}>\n <div className={`p-field p-col-5`} dangerouslySetInnerHTML={{ __html: activeLabel }}></div>\n <div className={`p-field p-col`}>Label</div>\n </div>\n </div>\n <div ref={dndItemsListRef} className={style.attributes}>\n {items.map((item, index) => (\n <Attribute\n key={item.key}\n item={item}\n position={index + 1}\n dimension={dimension}\n dndItemsList={dndItemsList}\n onMethodFocus={onMethodFocus}\n onMethodBlur={onMethodBlur}\n />\n ))}\n </div>\n {disabled ? null : (\n <div className={`${style.row} ${style['row-add']} p-fluid p-col-12`}>\n <div className={`${style.index} p-field`}>{items.length + 1}.</div>\n <div className=\"p-field\">\n <span className={style.add} onClick={onAddClick}>\n Add an attribute\n </span>\n </div>\n </div>\n )}\n </div>\n )\n}\n\nAttributes.propTypes = {\n items: PropTypes.array,\n dimension: PropTypes.number,\n onModeChange: PropTypes.func\n}\n\nAttributes.displayName = 'Attributes'\n\nexport default Attributes\n\nADND().connect()\n","// lib\nimport React, { useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\nimport ADND from '@aytm/lib/adnd/ADND'\n\n// components\nimport Popup from '@aytm/lib/rfd-ui/components/basic/popup'\n\nimport { default as ComponentContainer } from '@aytm/app/stats/page/question-views/components/Component'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/components/mapping/styles/Component.module.scss'\n\nexport const DataContext = React.createContext()\n\nconst Component = ({\n Controls,\n Footer,\n children,\n model,\n data,\n states,\n prefix,\n command,\n changed,\n disabled,\n dataContextValue,\n onFeaturesChange,\n onControlsChange,\n onUpdateData,\n ...rest\n}) => {\n const showMapping = useMemo(\n () =>\n (model.features == undefined || !model.features.insightsMapping) &&\n !model.disabled &&\n 'function' === typeof onFeaturesChange,\n [model.features, model.disabled, onFeaturesChange]\n )\n\n return (\n <ComponentContainer\n Controls={Controls}\n model={model}\n data={data}\n states={states}\n changed={changed}\n disabled={disabled}\n onChange={onControlsChange}\n >\n <div className={style.component}>\n {showMapping ? (\n <div className={`${style.row} ${style['row-toggle']} p-fluid p-col-12`}>\n <div className=\"p-fluid p-field p-right p-col\">\n <span className={style.toggle} onClick={() => onFeaturesChange('insightsMapping', true)}>\n Convert to {prefix} Mapping\n </span>\n </div>\n <div className=\"p-field p-right\">\n <Popup\n className=\"rfd-ui-popup-stat\"\n trigger=\"click\"\n width=\"500px\"\n direction=\"bottomright\"\n hideOtherPopupsOnShow={true}\n header={() => <div> </div>}\n content={() => (\n <div>\n Convert this {prefix} Lab into a {prefix} Mapping to send the data to the Insights Portal.\n </div>\n )}\n >\n <i className=\"icon-aytmfd-help\" />\n </Popup>\n </div>\n </div>\n ) : null}\n <DataContext.Provider value={dataContextValue}>{children}</DataContext.Provider>\n </div>\n {!disabled && (\n <Footer\n model={model}\n data={data}\n states={states}\n prefix={prefix}\n command={command}\n updateTextPrefix={states.loading ? 'Running' : 'Run'}\n onChange={onControlsChange}\n onUpdateData={onUpdateData}\n {...rest}\n />\n )}\n </ComponentContainer>\n )\n}\n\nComponent.propTypes = {\n Controls: PropTypes.any,\n Footer: PropTypes.any,\n children: PropTypes.any,\n model: PropTypes.object,\n data: PropTypes.object,\n states: PropTypes.object,\n prefix: PropTypes.string,\n command: PropTypes.string,\n changed: PropTypes.bool,\n disabled: PropTypes.bool,\n dataContextValue: PropTypes.any,\n onControlsChange: PropTypes.func,\n onUpdateData: PropTypes.func,\n onInvalidKey: PropTypes.func,\n onPublish: PropTypes.func,\n onPublished: PropTypes.func,\n onFeaturesChange: PropTypes.func\n}\n\nComponent.displayName = 'Component'\n\nexport default Component\n\nADND().connect()\n","// lib\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport { Dropdown } from 'primereact/dropdown'\n\nimport { default as ControlsContainer } from '@aytm/app/stats/page/question-views/components/component/Controls'\n\nconst Controls = ({ model, data, collapsed, disabled, onToggle, onChange }) => {\n const itemTemplate = option =>\n option.disabled && option.icon == undefined ? (\n <span dangerouslySetInnerHTML={{ __html: option.text }}></span>\n ) : (\n <span className={`p-item-label${2 === option.lvl ? ' p-lvl-2' : ''}`}>\n {option.icon ? <i className={`icon-aytmfd-${option.icon}`} /> : null}\n <span dangerouslySetInnerHTML={{ __html: option.text }}></span>\n </span>\n )\n const valueTemplate = (option, _props) =>\n option ? (\n <>\n {option.icon ? <i className={`icon-aytmfd-${option.icon}`} /> : null}\n <span dangerouslySetInnerHTML={{ __html: option.label || option.text }}></span>\n </>\n ) : (\n <span dangerouslySetInnerHTML={{ __html: _props.placeholder || 'Select...' }}></span>\n )\n\n return (\n <ControlsContainer data={data} collapsed={collapsed} onToggle={onToggle}>\n <div className=\"p-field p-col-12\">\n <Dropdown\n className=\"p-dropdown-rounded\"\n placeholder={data.controls.source.placeholder}\n value={model.source}\n options={data.controls.source.options}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n fixedDropdownDir=\"bottom\"\n disabled={disabled || data.controls.source.disabled}\n onChange={disabled || data.controls.source.disabled ? null : event => onChange('source', event.value)}\n />\n </div>\n </ControlsContainer>\n )\n}\n\nControls.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n collapsed: PropTypes.bool,\n disabled: PropTypes.bool,\n onToggle: PropTypes.func,\n onChange: PropTypes.func\n}\n\nControls.displayName = 'Controls'\n\nexport default Controls\n","// lib\nimport React, { useContext, useRef, useMemo, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\nimport ADND from '@aytm/lib/adnd/ADND'\nimport { DataContext } from '@aytm/app/stats/page/question-views/components/mapping/Component'\n\nimport { generateUID } from '@aytm/app/stats/lib/helpers'\n\n// components\nimport Entity from '@aytm/app/stats/page/question-views/components/mapping/Entity'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/components/mapping/styles/Component.module.scss'\n\nconst getDefaultEntity = (item = {}) => {\n return {\n key: generateUID(),\n text: '',\n pattern: '',\n ...item\n }\n}\n\nconst onDNDPositionChange = ({ newPosition, dragItemUpdater } = {}) =>\n dragItemUpdater(node => {\n const itemPositionNode = node.querySelector(`.stats-Concept-Item-index`)\n if (null !== itemPositionNode) {\n itemPositionNode.innerHTML = null === `${newPosition + 1}.` ? '' : `${newPosition + 1}.`\n }\n })\n\nconst Entities = ({ items, imagesDisabled, onReset }) => {\n const { id, mode, data, original, disabled, dispatch } = useContext(DataContext)\n\n const dndItemsListRef = useRef()\n\n const textLabel = useMemo(() => (imagesDisabled ? 'Label' : 'Label & Image'), [imagesDisabled])\n\n const showReset = useMemo(\n () => !original && !disabled && 'function' === typeof onReset,\n [original, disabled, onReset]\n )\n\n const onDNDUpdateItemPositions = ({ hiddenItemIndex, placeholderIndex } = {}) => {\n const itemPositionNodes = dndItemsListRef.current.querySelectorAll(`.stats-Concept-Item .stats-Concept-Item-index`)\n\n for (const [i, itemPositionNode] of itemPositionNodes.entries()) {\n if (null !== itemPositionNode) {\n const visualItemIndex = i + (null !== hiddenItemIndex && hiddenItemIndex <= i ? -1 : 0)\n const newItemIndex =\n visualItemIndex + (null !== placeholderIndex && placeholderIndex <= visualItemIndex ? 1 : 0)\n itemPositionNode.innerHTML = null === `${newItemIndex + 1}` ? '' : `${newItemIndex + 1}.`\n }\n }\n }\n\n const onDNDDrop = res => {\n const { item, position, clone } = res\n\n if (clone) {\n dispatch({\n type: 'ADD_ENTITY',\n data: {\n item: {\n ...getDefaultEntity(item.item),\n pattern: '',\n key: generateUID()\n },\n position\n }\n })\n } else if (item.id != id) {\n item.remove()\n dispatch({\n type: 'ADD_ENTITY',\n data: {\n item: {\n ...getDefaultEntity(item.item),\n pattern: '',\n key: generateUID()\n },\n position\n }\n })\n } else if (item.position != position) {\n dispatch({\n type: 'REORDER_ENTITIES',\n data: {\n from: item.position,\n to: position\n }\n })\n }\n\n onDNDUpdateItemPositions()\n }\n\n const dndItemsList = ADND.targets\n .itemsList(\n {\n acceptTypes: [`dlq-entity-${data.windowUID}`],\n placeholderVMargin: 10\n },\n { capture: false }\n )\n .buildPlaceholder(() => {\n const placeholderNode = document.createElement('div')\n placeholderNode.className = `${style.placeholder}`\n return placeholderNode\n })\n .onPositionChange(onDNDPositionChange)\n .onUpdateItemPositions(onDNDUpdateItemPositions)\n .onEnter(onDNDUpdateItemPositions)\n .onLeave(onDNDUpdateItemPositions)\n .onDrop(onDNDDrop)\n\n const onAddClick = () => {\n dispatch({\n type: 'ADD_ENTITY',\n data: {\n item: getDefaultEntity(),\n position: items.length\n }\n })\n }\n\n useEffect(() => {\n dndItemsList.connect(dndItemsListRef.current)\n\n return () => {\n dndItemsList.disconnect()\n }\n }, [dndItemsList])\n\n return (\n <div className={style.component}>\n <div className={`${style.row} ${style['row-header']} p-fluid p-col-12`}>\n {showReset ? (\n <>\n <div className=\"p-field p-col-4\">\n <b className={style.title}>\n {items.length} {1 == items.length ? 'entity' : 'entities'}\n </b>\n </div>\n <div className=\"p-field p-right p-col-8\">\n <span className={style.toggle} onClick={onReset}>\n reset\n </span>\n </div>\n </>\n ) : (\n <b className={style.title}>\n {items.length} {1 == items.length ? 'entity' : 'entities'}\n </b>\n )}\n </div>\n <div\n className={`${style.row} ${style['row-label']}${\n disabled ? ' ' + style['row-label-disabled'] : ''\n } p-fluid p-col-12`}\n >\n {disabled || 'advanced' == mode ? (\n <div className=\"p-field p-col-12\">{textLabel}</div>\n ) : (\n <>\n <div className=\"p-field p-col-4\">Data source</div>\n <div className=\"p-field p-col-8\">{textLabel}</div>\n </>\n )}\n </div>\n <div ref={dndItemsListRef} className={style.entities}>\n {items.map((item, index) => (\n <Entity\n key={item.key}\n item={item}\n position={index + 1}\n imagesDisabled={imagesDisabled}\n dndItemsList={dndItemsList}\n />\n ))}\n </div>\n {disabled ? null : (\n <div className={`${style.row} ${style['row-add']} p-fluid p-col-12`}>\n <div className={`${style.index} p-field`}>{items.length + 1}.</div>\n <div className=\"p-field\">\n <span className={style.add} onClick={onAddClick}>\n Add an entity\n </span>\n </div>\n </div>\n )}\n </div>\n )\n}\n\nEntities.propTypes = {\n items: PropTypes.array,\n imagesDisabled: PropTypes.bool,\n onReset: PropTypes.func\n}\n\nEntities.displayName = 'Entities'\n\nexport default Entities\n\nADND().connect()\n","// lib\nimport React, { useContext, useRef, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\nimport ADND from '@aytm/lib/adnd/ADND'\nimport { DataContext } from '@aytm/app/stats/page/question-views/components/mapping/Component'\n\nimport { generateUID, encodeText, decodeText } from '@aytm/app/stats/lib/helpers'\n\n// components\nimport { InputText } from 'primereact/inputtext'\nimport { Dropdown } from 'primereact/dropdown'\n\n// hooks\nimport { useSingleAndDoubleClick } from '@aytm/app/stats/page/question-views/components/lib/hooks/useSingleAndDoubleClick'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/components/mapping/styles/Component.module.scss'\n\nconst Entity = ({ item, position, imagesDisabled, dndItemsList }) => {\n const { id, mode, data, disabled, dispatch } = useContext(DataContext)\n\n const dndListItemRef = useRef()\n const dndListItemHandleRef = useRef()\n\n const fetchData = useCallback(() => {\n return {\n id,\n item,\n position: position - 1,\n windowUID: data.windowUID,\n remove: () =>\n dispatch({\n type: 'DELETE_ENTITY',\n data: position - 1\n })\n }\n }, [item, position, id, data.windowUID, dispatch])\n\n const dndListItem = ADND.targets.itemsList.listItem({\n type: `dlq-entity-${data.windowUID}`,\n list: dndItemsList\n })\n const dndListItemHandle = ADND.sources\n .listItemHandle({\n type: `dlq-entity-${data.windowUID}`,\n item: dndListItem,\n cloneable: true\n })\n .fetchData(fetchData)\n\n const itemImageTemplate = option =>\n option ? (\n <>\n {option.src && <img width=\"23\" height=\"23\" src={option.src} alt=\"\" />}\n <span dangerouslySetInnerHTML={{ __html: option.text }}></span>\n </>\n ) : (\n <i className=\"icon-aytmfd-image\" />\n )\n const valueImageTemplate = option =>\n option && option.src ? <img width=\"23\" height=\"23\" src={option.src} alt=\"\" /> : <i className=\"icon-aytmfd-image\" />\n\n const onLabelChange = event => {\n dispatch({\n type: 'UPDATE_ENTITY',\n data: {\n item: {\n ...item,\n text: encodeText(event.target.value)\n },\n position: position - 1\n }\n })\n }\n\n const onImageChange = event => {\n if ('off' == event.value) delete item.image\n else item.image = event.value\n\n dispatch({\n type: 'UPDATE_ENTITY',\n data: {\n item: {\n ...item\n },\n position: position - 1\n }\n })\n }\n\n const onDeleteClick = () => {\n dispatch({\n type: 'DELETE_ENTITY',\n data: position - 1\n })\n }\n\n const onHandleClick = useSingleAndDoubleClick(null, () => {\n dispatch({\n type: 'ADD_ENTITY',\n data: {\n item: {\n ...item,\n pattern: '',\n key: generateUID()\n },\n position: position\n }\n })\n })\n\n useEffect(() => {\n if (dndListItem) dndListItem.connect(dndListItemRef.current)\n\n return () => {\n if (dndListItem) dndListItem.disconnect()\n }\n }, [dndListItem])\n\n useEffect(() => {\n if (dndListItemHandle) dndListItemHandle.connect(dndListItemHandleRef.current)\n\n return () => {\n if (dndListItemHandle) dndListItemHandle.disconnect()\n }\n }, [dndListItemHandle])\n\n const renderLabel = () =>\n imagesDisabled ? (\n <InputText\n placeholder=\"Please type a label...\"\n value={decodeText(item.text)}\n maxLength=\"120\"\n disabled={disabled}\n onChange={disabled ? null : onLabelChange}\n />\n ) : (\n <>\n <div className={`${style.images} p-field p-col-12`}>\n <InputText\n placeholder=\"Please type a label...\"\n value={decodeText(item.text)}\n maxLength=\"120\"\n disabled={disabled}\n onChange={disabled ? null : onLabelChange}\n />\n </div>\n <Dropdown\n className=\"p-dropdown-icon p-dropdown-right\"\n placeholder=\"\"\n value={item.image || ''}\n options={data.images}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemImageTemplate}\n valueTemplate={valueImageTemplate}\n fixedDropdownDir=\"bottom\"\n disabled={disabled}\n onChange={disabled ? null : onImageChange}\n />\n </>\n )\n\n const renderAdvanced = () => <div className={`${style.group} p-fluid p-field p-col-12`}>{renderLabel()}</div>\n const renderBasic = () => (\n <>\n <div className=\"p-fluid p-field p-col-4\">\n <InputText value={item.pattern} disabled={true} />\n </div>\n <div className={`${style.group} p-fluid p-field p-col`}>{renderLabel()}</div>\n </>\n )\n\n return (\n <div ref={dndListItemRef} className={`${style.row} ${style['row-av']} p-fluid p-col-12`}>\n {disabled ? null : (\n <span className={style.delete} onClick={onDeleteClick}>\n <i className=\"icon-aytmfd-delete\"></i>\n </span>\n )}\n <div className={`${style.index} p-field`}>{position}.</div>\n <div\n className={`${style.group} ${style['group-av']}${\n disabled ? ' ' + style['group-av-disabled'] : ''\n } p-fluid p-field p-col`}\n >\n {disabled || 'advanced' == mode ? renderAdvanced() : renderBasic()}\n </div>\n {disabled ? null : (\n <div className=\"p-field\">\n <span ref={dndListItemHandleRef} className={style.handle} onClick={onHandleClick}>\n <i className=\"icon-aytmfd-handle\"></i>\n </span>\n </div>\n )}\n </div>\n )\n}\n\nEntity.propTypes = {\n item: PropTypes.object,\n position: PropTypes.number,\n imagesDisabled: PropTypes.bool,\n dndItemsList: PropTypes.any\n}\n\nEntity.displayName = 'Entity'\n\nexport default Entity\n","// lib\nimport React, { useState, useRef, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { AbortController as _abortControllerPolyfill } from 'abortcontroller-polyfill/dist/cjs-ponyfill'\n\nimport { sendJobJSONData } from '@aytm/app/stats/lib/fetch'\n\n// components\nimport { Button } from 'primereact/button'\nimport { Dropdown } from 'primereact/dropdown'\n\nimport Popup from '@aytm/lib/rfd-ui/components/basic/popup'\n\nimport { default as FooterContainer } from '@aytm/app/stats/page/question-views/components/component/Footer'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/components/mapping/styles/Component.module.scss'\n\nconst DEFAULT_FETCH_TIMEOUT = 1000\nconst FETCH_TIMEOUT_STEP = 500\n\n/* compat/compat disabled because polyfill is used */\n// eslint-disable-next-line compat/compat\nconst AbortController = window.AbortController || _abortControllerPolyfill\n\nconst Footer = ({\n model,\n data,\n states,\n prefix,\n command,\n updateTextPrefix,\n onChange,\n onUpdateData,\n onInvalidKey,\n onPublish,\n onPublished,\n onError\n}) => {\n const { id, key, group, portal, variables } = model\n\n const [processing, setProcessing] = useState(false)\n const [published, setPublished] = useState(states.publish.published)\n\n const abortController = useRef(null)\n\n const apiKey = useRef(null)\n\n const portalRef = useRef(null)\n portalRef.current = portal\n\n const error = useMemo(\n () =>\n states.loaded &&\n (variables.some(item => !item.text.trim().length || !item.pattern.trim().length) ||\n (0 < data.controls.portals.options.length && !portal) ||\n states.publish.error),\n [variables, portal, data.controls.portals.options, states.loaded, states.publish.error]\n )\n\n const publishText = useMemo(\n () => `${processing ? 'PUSHING' : published ? 'PUSHED' : 'PUSH'} TO PORTAL${null === portal ? 'S' : ''}`,\n [portal, processing, published]\n )\n const publishDisabled = useMemo(\n () =>\n variables.some(item => !item.text.trim().length || !item.pattern.trim().length) ||\n (0 < data.controls.portals.options.length && !portal) ||\n !states.loaded ||\n states.publish.error ||\n states.disabled.publish ||\n processing ||\n published,\n [\n variables,\n portal,\n data.controls.portals.options,\n states.loaded,\n states.publish.error,\n states.disabled.publish,\n processing,\n published\n ]\n )\n\n let fetchTimeout = DEFAULT_FETCH_TIMEOUT\n let fetchDebounceTimeout = 0\n let fetchTimer = null\n\n const itemTemplate = option => <span dangerouslySetInnerHTML={{ __html: option.text }}></span>\n const valueTemplate = (option, _props) => (\n <span\n dangerouslySetInnerHTML={{ __html: option ? option.label || option.text : _props.placeholder || 'Select...' }}\n ></span>\n )\n\n const fetchDataDestroy = () => {\n setProcessing(false)\n\n apiKey.current = null\n\n fetchTimeout = DEFAULT_FETCH_TIMEOUT\n fetchDebounceTimeout = 1000\n\n if (null !== fetchTimer) {\n clearTimeout(fetchTimer)\n fetchTimer = null\n }\n\n if (null !== abortController.current) {\n abortController.current.abort()\n abortController.current = null\n }\n\n if (onError && 'function' === typeof onError) {\n onError(false)\n }\n }\n\n const fetchDataError = () => {\n setProcessing(false)\n\n apiKey.current = null\n\n fetchTimeout = DEFAULT_FETCH_TIMEOUT\n fetchDebounceTimeout = 1000\n\n if (onPublished && 'function' === typeof onPublished) {\n onPublished(false)\n }\n }\n\n const fetchData = async (request = {}) => {\n if (null === apiKey.current) {\n fetchDataError()\n return\n }\n\n request.data.key = apiKey.current.code\n\n try {\n if (null !== abortController.current) {\n abortController.current.abort()\n abortController.current = null\n }\n\n abortController.current = new AbortController()\n\n const { signal } = abortController.current\n const data = await sendJobJSONData({\n ...request,\n signal\n })\n\n switch (data.status) {\n case 'OK': {\n apiKey.current = null\n\n setPublished(true)\n setProcessing(false)\n\n if (onPublished && 'function' === typeof onPublished) {\n const extra = {}\n data.waves && (extra.trackersWaves = data.waves)\n data.portals && (extra.insightsDashboards = data.portals)\n\n onPublished(true, extra)\n }\n break\n }\n case 'RUNNING': {\n request.data.token = data.token\n\n fetchTimeout += FETCH_TIMEOUT_STEP\n fetchTimer = setTimeout(() => {\n fetchTimer = null\n\n fetchData(request)\n }, fetchTimeout)\n break\n }\n case 'INVALID KEY': {\n if (onInvalidKey && 'function' === typeof onInvalidKey) {\n onInvalidKey(key => {\n apiKey.current = JSON.parse(JSON.stringify(key))\n fetchData(request)\n })\n } else fetchDataError()\n break\n }\n default: {\n fetchDataError()\n }\n }\n\n abortController.current = null\n } catch (error) {\n if (!error.name || (error.name && 'AbortError' !== error.name)) {\n fetchDataError()\n }\n }\n }\n\n const fetchDataDelay = request => {\n if (null !== fetchTimer) {\n clearTimeout(fetchTimer)\n fetchTimer = null\n }\n\n if (null !== abortController.current) {\n abortController.current.abort()\n abortController.current = null\n }\n\n const callback = () => {\n fetchTimer = null\n\n fetchData(request)\n }\n\n const callbackTimer = () => {\n if (0 < fetchDebounceTimeout) {\n fetchTimer = setTimeout(callback, fetchDebounceTimeout)\n } else callback()\n }\n\n if (\n null === apiKey.current ||\n (apiKey.current.expire &&\n parseInt(apiKey.current.expire, 10) -\n new Date(window.server_time == undefined ? Date.now() : window.server_time).getTime() <\n 0)\n ) {\n if (onInvalidKey && 'function' === typeof onInvalidKey) {\n onInvalidKey(key => {\n apiKey.current = JSON.parse(JSON.stringify(key))\n callbackTimer()\n })\n } else setProcessing(false)\n } else callbackTimer()\n }\n\n const publishMapping = useCallback(() => {\n if (onPublish && 'function' === typeof onPublish) {\n onPublish()\n }\n\n const request = {\n url: data.urls.job,\n method: 'POST',\n data: {\n command,\n include: id,\n source: group,\n nocache: 0\n }\n }\n\n setProcessing(true)\n fetchDataDelay(request)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [id, group, data.urls, onPublish])\n\n useEffect(() => {\n if (\n 0 < data.controls.portals.options.length &&\n null !== portalRef.current &&\n !data.controls.portals.options.some(v => v.key == portalRef.current)\n )\n onChange('portal', data.controls.portals.options[0].key)\n }, [data.controls.portals.options, onChange])\n\n useEffect(() => {\n setPublished(states.publish.published)\n }, [states.publish.published])\n\n useEffect(() => {\n fetchDataDestroy()\n return () => fetchDataDestroy()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [states.error, states.updated])\n\n useEffect(() => {\n if (processing && (!data.publishState || data.publishState != key)) {\n fetchDataDestroy()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [key, group, data.publishState])\n\n const renderPublish = () => (\n <>\n {0 < data.controls.portals.options.length ? (\n <div className=\"p-field p-right\">\n <Dropdown\n className={`${style.portals} p-dropdown-rounded`}\n placeholder={data.controls.portals.placeholder}\n value={portal}\n options={data.controls.portals.options}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n fixedDropdownDir=\"bottom\"\n onChange={event => onChange('portal', event.value)}\n />\n </div>\n ) : (\n <div className={`${style.info} ${style['info-right']} p-field p-right`}>\n <span>\n Enabled in all {prefix} Portals\n <br />\n under <b>{data.account.name}</b> account\n </span>\n </div>\n )}\n <div className={`${style.group} p-field p-right p-col`}>\n <Popup\n className=\"rfd-ui-popup-notification rfd-ui-popup-notification-warning\"\n targetClassName=\"p-field p-col\"\n width=\"254px\"\n trigger={error ? 'hover' : 'none'}\n direction=\"bottomright\"\n show={error ? null : false}\n hideOtherPopupsOnShow={true}\n content={() => (\n <div\n dangerouslySetInnerHTML={{\n __html: error ? data.notes.publish[states.publish.error] : ''\n }}\n />\n )}\n >\n <Button\n className={`p-button-blue p-button-rounded${error ? ' p-button-warning' : ''}`}\n label={publishText}\n icon={published ? 'pi pi-check' : <i className={data.icons.publish} />}\n loading={processing && !published}\n disabled={publishDisabled}\n onClick={publishDisabled ? null : publishMapping}\n />\n </Popup>\n <Popup\n className=\"rfd-ui-popup-stat\"\n targetClassName=\"p-field\"\n width=\"400px\"\n trigger=\"click\"\n direction=\"bottomright\"\n hideOtherPopupsOnShow={true}\n header={() => <div> </div>}\n content={() => (\n <div\n dangerouslySetInnerHTML={{\n __html: data.notes.publish.help\n }}\n />\n )}\n >\n <i className=\"icon-aytmfd-help\" />\n </Popup>\n </div>\n </>\n )\n\n return (\n <FooterContainer data={data} states={states} updateTextPrefix={updateTextPrefix} onUpdateData={onUpdateData}>\n {states.disabled.publish ? null : renderPublish()}\n </FooterContainer>\n )\n}\n\nFooter.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n states: PropTypes.object,\n prefix: PropTypes.string,\n command: PropTypes.string,\n updateTextPrefix: PropTypes.string,\n onChange: PropTypes.func,\n onUpdateData: PropTypes.func,\n onInvalidKey: PropTypes.func,\n onPublish: PropTypes.func,\n onPublished: PropTypes.func,\n onError: PropTypes.func\n}\n\nFooter.displayName = 'Footer'\n\nexport default Footer\n","// lib\nimport React, { useRef, useMemo, useCallback } from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport { Dropdown } from 'primereact/dropdown'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/components/styles/Component.module.scss'\n\nconst Sources = ({ source, data, entities, disabled, dispatch }) => {\n const sourceRef = useRef(null)\n\n const labelsOptions = useMemo(() => {\n const options = data.controls.labels.options[source]\n return options || []\n }, [source, data.controls.labels])\n const selectedLabels = useMemo(() => {\n const option = labelsOptions.find(_option =>\n _option.values.every((v, i) => {\n const index = entities.findIndex(item => item.pattern == data.options.entities[i].pattern)\n return entities[0 <= index ? index : i] != undefined ? v === entities[0 <= index ? index : i].text : ''\n })\n )\n\n return option != undefined && null !== option ? option.key : null\n }, [data.options.entities, entities, labelsOptions])\n\n const imagesOptions = useMemo(() => {\n const options = data.controls.images.options[source]\n return options != undefined ? [{ key: '*', text: 'No images' }].concat(options) : []\n }, [source, data.controls.images])\n const selectedImages = useMemo(() => {\n const option = imagesOptions.find(\n _option =>\n '*' !== _option.key &&\n _option.values.every((v, i) => {\n const index = entities.findIndex(item => item.pattern == data.options.entities[i].pattern)\n return entities[0 <= index ? index : i] != undefined ? v === entities[0 <= index ? index : i].image : null\n })\n )\n\n return option != undefined && null !== option ? option.key : null\n }, [data.options.entities, entities, imagesOptions])\n\n const onLabelsChange = useCallback(\n value => {\n const options = data.controls.labels.options[source]\n const option = options.find(_option => _option.key === value)\n\n dispatch({\n type: 'RESET',\n data: {\n entities: entities.map(item => {\n const index = data.options.entities.findIndex(entity => item.pattern == entity.pattern)\n return {\n ...item,\n text: option.values[index]\n }\n })\n }\n })\n },\n [source, data.controls.labels, data.options.entities, entities, dispatch]\n )\n const onImagesChange = useCallback(\n value => {\n if ('*' === value) {\n dispatch({\n type: 'RESET',\n data: {\n entities: entities.map(item => {\n return {\n ...item,\n image: null\n }\n })\n }\n })\n } else {\n const options = data.controls.images.options[source]\n const option = options.find(_option => _option.key === value)\n\n dispatch({\n type: 'RESET',\n data: {\n entities: entities.map(item => {\n const index = data.options.entities.findIndex(entity => item.pattern == entity.pattern)\n return {\n ...item,\n image: option.values[index]\n }\n })\n }\n })\n }\n },\n [source, data.controls.images, data.options.entities, entities, dispatch]\n )\n\n const itemTemplate = option => <span dangerouslySetInnerHTML={{ __html: option.text }}></span>\n const valueTemplate = (option, _props) => (\n <span\n dangerouslySetInnerHTML={{ __html: option ? option.label || option.text : _props.placeholder || 'Select...' }}\n ></span>\n )\n\n return 0 < labelsOptions.length ? (\n <div className={`${style.row} p-fluid p-col-12`}>\n <div ref={sourceRef} className=\"p-composite-group p-fluid p-field p-right p-col-6\">\n <Dropdown\n className={`p-dropdown-rounded p-col-${0 < imagesOptions.length ? 6 : 12}`}\n placeholder=\"Labels...\"\n value={selectedLabels}\n options={labelsOptions}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n fixedDropdownDir=\"bottom\"\n appendTo={sourceRef.current || 'self'}\n disabled={disabled}\n onChange={disabled ? null : event => onLabelsChange(event.value)}\n />\n {0 < imagesOptions.length ? (\n <Dropdown\n className=\"p-dropdown-rounded p-col-6\"\n placeholder=\"Images...\"\n value={selectedImages}\n options={imagesOptions}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n fixedDropdownDir=\"bottom\"\n appendTo={sourceRef.current || 'self'}\n disabled={disabled}\n onChange={disabled ? null : event => onImagesChange(event.value)}\n />\n ) : null}\n </div>\n </div>\n ) : null\n}\n\nSources.propTypes = {\n source: PropTypes.string,\n data: PropTypes.object,\n entities: PropTypes.array,\n disabled: PropTypes.bool,\n dispatch: PropTypes.func\n}\n\nSources.displayName = 'Sources'\n\nexport default Sources\n","// lib\nimport React, { useContext, useState, useRef, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\nimport ADND from '@aytm/lib/adnd/ADND'\nimport { DataContext } from '@aytm/app/stats/page/question-views/components/mapping/Component'\n\nimport { generateUID, encodeText, decodeText } from '@aytm/app/stats/lib/helpers'\n\n// components\nimport { InputText } from 'primereact/inputtext'\nimport { Dropdown } from 'primereact/dropdown'\n\nimport {\n itemTemplate,\n valueTemplate,\n optionGroupTemplate\n} from '@aytm/app/stats/page/question-views/components/lib/templates'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/components/mapping/styles/Component.module.scss'\n\nconst Variable = ({ item, position, dndItemsList }) => {\n const { id, data, disabled, dispatch } = useContext(DataContext)\n\n const [selectedValue, setSelectedValue] = useState(null)\n\n const changedRef = useRef(false)\n\n const dndListItemRef = useRef()\n const dndListItemHandleRef = useRef()\n\n const selectedValueRef = useRef(null)\n selectedValueRef.current = selectedValue\n\n const fetchData = useCallback(() => {\n return {\n id,\n item,\n position: position - 1,\n windowUID: data.windowUID,\n remove: () =>\n dispatch({\n type: 'DELETE_VARIABLE',\n data: position - 1\n })\n }\n }, [item, position, id, data.windowUID, dispatch])\n\n const dndListItem = ADND.targets.itemsList.listItem({\n type: `dlq-variable-${data.windowUID}`,\n list: dndItemsList\n })\n const dndListItemHandle = ADND.sources\n .listItemHandle({\n type: `dlq-variable-${data.windowUID}`,\n item: dndListItem,\n cloneable: true\n })\n .fetchData(fetchData)\n\n const onSelectedChange = (value = null, _values) => {\n const group = data.filters.find(v => v.items.some(v => v.key == value)) || null\n if (null !== group && group.disabled) return\n\n const option = group.items.find(v => v.key == value) || null\n if (null !== option && option.disabled) return\n\n setSelectedValue(value)\n\n changedRef.current = true\n\n const options =\n null === option || option.options == undefined\n ? []\n : option.options.filter(_v => null !== _v.pattern && _v.pattern != undefined && 0 < _v.pattern.length)\n\n dispatch({\n type: 'UPDATE_VARIABLE',\n data: {\n item: {\n ...item,\n text: option.text,\n pattern: null === option ? '' : value,\n rules:\n null === option || option.options == undefined\n ? []\n : option.options.map(v =>\n v.other\n ? 0 < options.length\n ? `not (${options.map(_v => `(${_v.pattern})`).join(' or ')})`\n : ''\n : v.pattern\n )\n },\n position: position - 1\n }\n })\n }\n\n const onLabelChange = event => {\n dispatch({\n type: 'UPDATE_VARIABLE',\n data: {\n item: {\n ...item,\n text: encodeText(event.target.value)\n },\n position: position - 1\n }\n })\n }\n\n const onDeleteClick = () => {\n dispatch({\n type: 'DELETE_VARIABLE',\n data: position - 1\n })\n }\n\n const onHandleClick = event => {\n if (2 != event.detail) return\n\n dispatch({\n type: 'ADD_VARIABLE',\n data: {\n item: {\n ...item,\n key: generateUID()\n },\n position: position\n }\n })\n }\n\n useEffect(() => {\n if (dndListItem) dndListItem.connect(dndListItemRef.current)\n\n return () => {\n if (dndListItem) dndListItem.disconnect()\n }\n }, [dndListItem])\n\n useEffect(() => {\n if (dndListItemHandle) dndListItemHandle.connect(dndListItemHandleRef.current)\n\n return () => {\n if (dndListItemHandle) dndListItemHandle.disconnect()\n }\n }, [dndListItemHandle])\n\n useEffect(() => {\n const patternRefs = RegExp(/^(vq\\d+)/i).test(item.pattern) ? [item.pattern] : []\n\n dispatch({\n type: 'UPDATE_REFS',\n data: {\n id: `v${position}`,\n refs: [patternRefs, [], []]\n }\n })\n }, [item.pattern, position, dispatch])\n\n useEffect(() => {\n if (changedRef.current) {\n changedRef.current = false\n return\n }\n\n const option =\n data.filters\n .flatMap(v => v.items)\n .find(v => String(v.value || v.key).toLowerCase() == item.pattern.toLowerCase()) || null\n\n if (null === option) {\n setSelectedValue(null)\n } else {\n setSelectedValue(option.key)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [item.pattern])\n\n useEffect(\n () => {\n if (null !== selectedValueRef.current) {\n const option =\n data.filters\n .flatMap(v => v.items)\n .find(v => String(v.value || v.key).toLowerCase() == selectedValueRef.current.toLowerCase()) || null\n\n if (null === option || option.options == undefined) setSelectedValue(null)\n else {\n const options = option.options.filter(\n _v => null !== _v.pattern && _v.pattern != undefined && 0 < _v.pattern.length\n )\n\n dispatch({\n type: 'UPDATE_VARIABLE',\n data: {\n item: {\n ...item,\n rules: option.options.map(v =>\n v.other\n ? 0 < options.length\n ? `not (${options.map(_v => `(${_v.pattern})`).join(' or ')})`\n : ''\n : v.pattern\n )\n },\n position: position - 1\n }\n })\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [data.filters]\n )\n\n const renderOptions = () => (\n <Dropdown\n placeholder=\"Select...\"\n value={selectedValue}\n options={data.filters}\n optionValue=\"key\"\n optionLabel=\"text\"\n optionDisabled=\"disabled\"\n optionGroupLabel=\"text\"\n optionGroupChildren=\"items\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n optionGroupTemplate={optionGroupTemplate}\n filter={true}\n filterBy={'search,text'}\n filterPlaceholder=\"Search items\"\n resetFilterOnHide={true}\n filterInputAutoFocus={false}\n fixedDropdownDir=\"bottom\"\n disabled={disabled}\n onChange={disabled ? null : event => onSelectedChange(event.value)}\n />\n )\n\n return (\n <div ref={dndListItemRef} className={`${style.row} ${style['row-av']} p-fluid p-col-12`}>\n {disabled ? null : (\n <span className={style.delete} onClick={onDeleteClick}>\n <i className=\"icon-aytmfd-delete\"></i>\n </span>\n )}\n <div className={`${style.index} p-field`}>{position}.</div>\n <div\n className={`${style.group} ${style['group-av']}${\n disabled ? ' ' + style['group-av-disabled'] : ''\n } p-fluid p-field p-col`}\n >\n <div className={`p-field p-col-8`}>{renderOptions()}</div>\n <div className={`p-field p-col`}>\n <InputText\n placeholder=\"Please type a label...\"\n value={decodeText(item.text)}\n maxLength=\"120\"\n disabled={disabled}\n onChange={disabled ? null : onLabelChange}\n />\n </div>\n </div>\n {disabled ? null : (\n <div className=\"p-field\">\n <span ref={dndListItemHandleRef} className={style.handle} onClick={onHandleClick}>\n <i className=\"icon-aytmfd-handle\"></i>\n </span>\n </div>\n )}\n </div>\n )\n}\n\nVariable.propTypes = {\n item: PropTypes.object,\n position: PropTypes.number,\n dndItemsList: PropTypes.any\n}\n\nVariable.displayName = 'Variable'\n\nexport default Variable\n","// lib\nimport React, { useContext, useRef, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\nimport ADND from '@aytm/lib/adnd/ADND'\nimport { DataContext } from '@aytm/app/stats/page/question-views/components/mapping/Component'\n\nimport { generateUID } from '@aytm/app/stats/lib/helpers'\n\n// components\nimport Variable from '@aytm/app/stats/page/question-views/components/mapping/Variable'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/components/mapping/styles/Component.module.scss'\n\nconst onDNDPositionChange = ({ newPosition, dragItemUpdater } = {}) =>\n dragItemUpdater(node => {\n const itemPositionNode = node.querySelector(`.stats-Concept-Item-index`)\n if (null !== itemPositionNode) {\n itemPositionNode.innerHTML = null === `${newPosition + 1}.` ? '' : `${newPosition + 1}.`\n }\n })\n\nconst getDefaultVariable = (item = {}) => {\n return {\n key: generateUID(),\n text: '',\n pattern: '',\n rules: [],\n ...item\n }\n}\n\nconst Variables = ({ items, note }) => {\n const { id, data, disabled, dispatch } = useContext(DataContext)\n\n const dndItemsListRef = useRef()\n\n const onDNDUpdateItemPositions = ({ hiddenItemIndex, placeholderIndex } = {}) => {\n const itemPositionNodes = dndItemsListRef.current.querySelectorAll(`.stats-Concept-Item .stats-Concept-Item-index`)\n\n for (const [i, itemPositionNode] of itemPositionNodes.entries()) {\n if (null !== itemPositionNode) {\n const visualItemIndex = i + (null !== hiddenItemIndex && hiddenItemIndex <= i ? -1 : 0)\n const newItemIndex =\n visualItemIndex + (null !== placeholderIndex && placeholderIndex <= visualItemIndex ? 1 : 0)\n itemPositionNode.innerHTML = null === `${newItemIndex + 1}` ? '' : `${newItemIndex + 1}.`\n }\n }\n }\n\n const onDNDDrop = res => {\n const { item, position, clone } = res\n\n if (clone) {\n dispatch({\n type: 'ADD_VARIABLE',\n data: {\n item: {\n ...getDefaultVariable(item.item),\n key: generateUID()\n },\n position\n }\n })\n } else if (item.id != id) {\n item.remove()\n dispatch({\n type: 'ADD_VARIABLE',\n data: {\n item: {\n ...getDefaultVariable(item.item),\n key: generateUID()\n },\n position\n }\n })\n } else if (item.position != position) {\n dispatch({\n type: 'REORDER_VARIABLES',\n data: {\n from: item.position,\n to: position\n }\n })\n }\n\n onDNDUpdateItemPositions()\n }\n\n const dndItemsList = ADND.targets\n .itemsList(\n {\n acceptTypes: [`dlq-variable-${data.windowUID}`],\n placeholderVMargin: 10\n },\n { capture: false }\n )\n .buildPlaceholder(() => {\n const placeholderNode = document.createElement('div')\n placeholderNode.className = `${style.placeholder}`\n return placeholderNode\n })\n .onPositionChange(onDNDPositionChange)\n .onUpdateItemPositions(onDNDUpdateItemPositions)\n .onEnter(onDNDUpdateItemPositions)\n .onLeave(onDNDUpdateItemPositions)\n .onDrop(onDNDDrop)\n\n const onAddClick = () => {\n dispatch({\n type: 'ADD_VARIABLE',\n data: {\n item: getDefaultVariable(),\n position: items.length\n }\n })\n }\n\n useEffect(() => {\n dndItemsList.connect(dndItemsListRef.current)\n\n return () => {\n dndItemsList.disconnect()\n }\n }, [dndItemsList])\n\n return (\n <div className={style.component}>\n <div className={`${style.row} ${style['row-header']} p-fluid p-col-12`}>\n <b className={style.title}>\n {items.length} {1 == items.length ? 'variable' : 'variables'} {note}\n </b>\n </div>\n <div\n className={`${style.row} ${style['row-note']}${\n disabled ? ' ' + style['row-note-disabled'] : ''\n } p-fluid p-col-12`}\n ></div>\n <div ref={dndItemsListRef} className={style.variables}>\n {items.map((item, index) => (\n <Variable key={item.key} item={item} position={index + 1} dndItemsList={dndItemsList} />\n ))}\n </div>\n {disabled ? null : (\n <div className={`${style.row} ${style['row-add']} p-fluid p-col-12`}>\n <div className={`${style.index} p-field`}>{items.length + 1}.</div>\n <div className=\"p-field\">\n <span className={style.add} onClick={onAddClick}>\n Add a variable\n </span>\n </div>\n </div>\n )}\n </div>\n )\n}\n\nVariables.propTypes = {\n items: PropTypes.array,\n note: PropTypes.string\n}\n\nVariables.displayName = 'Variables'\n\nexport default Variables\n\nADND().connect()\n","// eslint-disable-next-line unicorn/no-unsafe-regex\nconst REF_REG = new RegExp(/^(P?Q\\d+)(?:SQ(\\d+))?$/, 'i')\n\nexport const getItems = (refs = [], questions = {}) => {\n let type = null\n let subtype = null\n let items = []\n\n for (const ref of refs) {\n if ('NULL' === ref) continue\n\n if (!ref.trim().length) {\n items = []\n break\n }\n\n const m = ref.trim().match(REF_REG)\n if (null === m) {\n items = []\n break\n }\n\n const q = questions[m[1].toUpperCase()]\n if (q == undefined) {\n items = []\n break\n }\n\n type ||= q.variant || q.type\n subtype = q.subtype\n if (type != (q.variant || q.type)) {\n type = null\n subtype = null\n items = []\n break\n }\n\n if (m[2] != undefined) {\n const b = q.batches != undefined && q.batches[Number(m[2]) - 1]\n if (b != undefined && b.answerVariants != undefined) items.push(b)\n } else if (q.answerVariants != undefined) items.push(q)\n }\n\n return { type, subtype, items }\n}\n\nconst getMultiMethodsOptions = items => {\n const methods = []\n\n if (!items.slice(1).some((item, i) => item.answerVariants.length != items[i].answerVariants.length)) {\n const answerVariants = items[0].answerVariants.map(av => av.text)\n if (2 > answerVariants.length) return methods\n\n for (const [avi, answerVariant] of answerVariants.entries()) {\n const key = `a${avi + 1}`\n methods.push({\n key,\n text: `<b>${answerVariant}</b><br/>${key.toUpperCase()}`,\n label: key.toUpperCase()\n })\n }\n }\n\n return methods\n}\n\nconst getSingleMethodOptions = items => {\n const methods = []\n\n if (!items.slice(1).some((item, i) => item.answerVariants.length != items[i].answerVariants.length)) {\n const answerVariants = items[0].answerVariants.map(av => av.text)\n if (2 > answerVariants.length) return methods\n\n methods.push({\n key: 'top1',\n text: `A1: <b>${answerVariants[0]}</b>`,\n label: 'A1'\n })\n\n if (2 < answerVariants.length) {\n for (const [avi, answerVariant] of answerVariants.slice(1, -1).entries()) {\n const key = `a${Number(avi) + 2}`\n methods.push({\n key,\n text: `${key.toUpperCase()}: <b>${answerVariant}</b>`,\n label: key.toUpperCase()\n })\n }\n }\n\n methods.push({\n key: 'bottom1',\n text: `A${answerVariants.length}: <b>${answerVariants[answerVariants.length - 1]}</b>`,\n label: `A${answerVariants.length}`\n })\n\n if (2 < answerVariants.length)\n methods.push({\n key: 'top2',\n text: `<b>Top 2 Box</b> (A1: ${answerVariants[0]}, A2: ${answerVariants[1]})`,\n label: 'Top 2 Box: A1-2'\n })\n if (3 < answerVariants.length)\n methods.push({\n key: 'top3',\n text: `<b>Top 3 Box</b> (A1: ${answerVariants[0]}, A2: ${answerVariants[1]}, A3: ${answerVariants[2]})`,\n label: 'Top 3 Box: A1-3'\n })\n if (2 < answerVariants.length)\n methods.push({\n key: 'top2w',\n text: `<b>T-Weighted</b> (100% A1: ${answerVariants[0]}, 50% A2: ${answerVariants[1]})`,\n label: 'T-Weighted: 100% A1 + 50% A2'\n })\n\n if (2 < answerVariants.length)\n methods.push({\n key: 'bottom2',\n text: `<b>Top 2 Box</b> (A${answerVariants.length - 1}: ${answerVariants[answerVariants.length - 2]}, A${\n answerVariants.length\n }: ${answerVariants[answerVariants.length - 1]})`,\n label: `Top 2 Box: A${answerVariants.length - 1}-${answerVariants.length}`\n })\n if (3 < answerVariants.length)\n methods.push({\n key: 'bottom3',\n text: `<b>Top 3 Box</b> (A${answerVariants.length - 2}: ${answerVariants[answerVariants.length - 3]}, A${\n answerVariants.length - 1\n }: ${answerVariants[answerVariants.length - 2]}, A${answerVariants.length}: ${\n answerVariants[answerVariants.length - 1]\n })`,\n label: `Top 3 Box: A${answerVariants.length - 2}-${answerVariants.length}`\n })\n if (2 < answerVariants.length)\n methods.push({\n key: 'bottom2w',\n text: `<b>T-Weighted</b> (50% A${answerVariants.length - 1}: ${\n answerVariants[answerVariants.length - 2]\n }, 100% A${answerVariants.length}: ${answerVariants[answerVariants.length - 1]})`,\n label: `T-Weighted: 50% A${answerVariants.length - 1} + 100% ${answerVariants.length}`\n })\n\n methods.push({\n key: 'means',\n text: '<b>Mean</b>',\n label: 'Mean'\n })\n methods.push({\n key: 'meansReversed',\n text: '<b>Mean</b> (reverse coded)',\n label: 'Mean (reverse coded)'\n })\n }\n\n return methods\n}\n\nexport const getMethodOptions = (refs = [], questions = {}) => {\n const { type, subtype, items } = getItems(refs, questions)\n\n const methods =\n 0 < items.length\n ? ['rb', 'mx', 'sr', 'se'].includes(type) || ('mp' == type && 'radios' == subtype)\n ? getSingleMethodOptions(items)\n : getMultiMethodsOptions(items)\n : []\n\n return { type, subtype, methods }\n}\n","export const dataReducer = (state = {}, action) => {\n switch (action.type) {\n case 'ADD_ENTITY': {\n const { entities } = state\n const { item, position } = action.data\n entities.splice(position, 0, item)\n\n return {\n ...state,\n entities: entities.slice()\n }\n }\n case 'UPDATE_ENTITY': {\n const { entities } = state\n const { item, position } = action.data\n entities[position] = item\n\n return {\n ...state,\n entities: entities.slice()\n }\n }\n case 'REORDER_ENTITIES': {\n const { entities, attributes } = state\n const { data } = action\n const { from, to } = data\n\n const broken = attributes.some(attr => attr.refs.split(',').length < entities.length)\n\n const item = entities.splice(from, 1)[0]\n entities.splice(to, 0, item)\n\n return {\n ...state,\n entities: entities.slice(),\n attributes: broken\n ? attributes\n : attributes.map(attr => {\n const refs = attr.refs.split(',').map(v => v.trim())\n\n const ref = refs.splice(from, 1)[0]\n refs.splice(to, 0, ref)\n\n return Object.assign(attr, {\n refs: refs.join(', ')\n })\n })\n }\n }\n case 'DELETE_ENTITY': {\n const { entities, attributes, errors } = state\n\n const broken = attributes.some(attr =>\n 0 < attr.refs.trim().length ? attr.refs.split(',').length < entities.length : true\n )\n\n entities.splice(action.data, 1)\n\n return {\n ...state,\n entities: entities.slice(),\n attributes: broken\n ? attributes\n : attributes.map(attr => {\n const refs = attr.refs.split(',').map(v => v.trim())\n refs.splice(action.data, 1)\n\n return Object.assign(attr, {\n refs: refs.join(', ')\n })\n }),\n errors: errors.filter(v => ('e' == v[0] && action.data >= Number(v.slice(1))) || 'a' == v[0] || 'v' == v[0])\n }\n }\n case 'ADD_ATTRIBUTE': {\n const { attributes } = state\n const { item, position } = action.data\n attributes.splice(position, 0, item)\n\n return {\n ...state,\n attributes: attributes.slice()\n }\n }\n case 'UPDATE_ATTRIBUTE': {\n const { attributes } = state\n const { item, position } = action.data\n attributes[position] = item\n\n return {\n ...state,\n attributes: attributes.slice()\n }\n }\n case 'UPDATE_ATTRIBUTES_METHOD': {\n const { attributes } = state\n const { method } = action.data\n\n return {\n ...state,\n attributes: attributes.map(attr =>\n Object.assign(attr, {\n method\n })\n )\n }\n }\n case 'REORDER_ATTRIBUTES': {\n const { attributes } = state\n const { from, to } = action.data\n const item = attributes.splice(from, 1)[0]\n attributes.splice(to, 0, item)\n\n return {\n ...state,\n attributes: attributes.slice()\n }\n }\n case 'DELETE_ATTRIBUTE': {\n const { attributes, errors } = state\n attributes.splice(action.data, 1)\n\n return {\n ...state,\n attributes: attributes.slice(),\n errors: errors.filter(v => 'e' == v[0] || ('a' == v[0] && action.data >= Number(v.slice(1))) || 'v' == v[0])\n }\n }\n case 'ADD_VARIABLE': {\n const { variables } = state\n const { item, position } = action.data\n variables.splice(position, 0, item)\n\n return {\n ...state,\n variables\n }\n }\n case 'UPDATE_VARIABLE': {\n const { variables } = state\n const { item, position } = action.data\n variables[position] = item\n\n return {\n ...state,\n variables\n }\n }\n case 'REORDER_VARIABLES': {\n const { variables } = state\n const { from, to } = action.data\n const item = variables.splice(from, 1)[0]\n variables.splice(to, 0, item)\n\n return {\n ...state,\n variables\n }\n }\n case 'DELETE_VARIABLE': {\n const { variables, errors } = state\n variables.splice(action.data, 1)\n\n return {\n ...state,\n variables,\n errors: errors.filter(v => 'e' == v[0] || 'a' == v[0] || ('v' == v[0] && action.data >= Number(v.slice(1))))\n }\n }\n case 'UPDATE_REFS': {\n const { refs } = state\n refs[action.data.id] = action.data.refs\n\n return {\n ...state,\n refs\n }\n }\n case 'UPDATE_ERRORS': {\n const { errors } = state\n const index = errors.indexOf(action.data.id)\n 0 <= index && errors.splice(index, 1)\n true == action.data.error && errors.push(action.data.id)\n\n return {\n ...state,\n errors\n }\n }\n case 'RESET': {\n return {\n ...state,\n ...action.data\n }\n }\n default:\n throw new Error('Unknown action type')\n }\n}\n","// lib\nimport React, { useContext, useState, useMemo, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\nimport SchemaRules from '@aytm/app/stats/lib/schema-rules'\nimport { DataContext } from '@aytm/app/stats/page/question-views/cq/Component'\nimport { convertTreeToValues } from '@aytm/app/stats/lib/converter'\n\n// components\nimport { Dropdown } from 'primereact/dropdown'\nimport { MultiSelect } from 'primereact/multiselect'\n\nimport MultiSelectHeader from 'primereact-raytm-theme/MultiSelectHeader'\nimport MultiSelectFooter from 'primereact-raytm-theme/MultiSelectFooter'\n\nimport {\n itemTemplate,\n valueTemplate,\n optionGroupTemplate\n} from '@aytm/app/stats/page/question-views/components/lib/templates'\n\nconst Batch = ({ item, position }) => {\n const { id, data, disabled, dispatch, basicFilters } = useContext(DataContext)\n\n const [changed, setChanged] = useState(false)\n\n const [selectedValue, setSelectedValue] = useState(null)\n const [selectedValues, setSelectedValues] = useState([])\n const [selectedOption, setSelectedOption] = useState(null)\n\n const options = useMemo(\n () =>\n data.options.map(option => {\n return {\n ...option,\n items: option.items.filter(item => !data.excluded[position - 1].includes(item.questionType))\n }\n }),\n [position, data.options, data.excluded]\n )\n\n const parserResultBasics = useMemo(\n () =>\n item.pattern == undefined || !item.pattern.length\n ? null\n : item.answerVariants.reduce((acc, av) => {\n const result = data.parser.analyzeString({\n id: id,\n filter: av.pattern,\n saveTokens: true\n })\n if (0 < result.expression.status.errors.length) return acc\n\n try {\n const resultBasic = basicFilters.convertToBasic(SchemaRules.flatten(result.expression.tree))\n if (!resultBasic) return acc\n\n acc.push(Object.values(resultBasic)[0])\n\n return acc\n } catch {\n return acc\n }\n }, []),\n [item.pattern, item.answerVariants, data.parser, id, basicFilters]\n )\n\n // eslint-disable-next-line unicorn/consistent-function-scoping\n const buttonLabelTemplate = event => {\n const text =\n 1 < event.options.length && event.options.length == event.value.length\n ? 'All'\n : 0 < event.value.length\n ? 1 == event.value.length\n ? event.options.find(o => o.key == event.value[0]).text\n : `Filtered to ${event.value.length}`\n : 'Select...'\n return <span dangerouslySetInnerHTML={{ __html: text }}></span>\n }\n\n const onSelectedChange = (value = null, _values) => {\n const option = options.flatMap(v => v.items).find(v => v.key == value) || null\n const values = _values || (null !== option ? option.options.map(v => v.key) : [])\n values.sort((a, b) => option.options.findIndex(v => v.key == a) - option.options.findIndex(v => v.key == b))\n\n setSelectedValue(value)\n setSelectedValues(values)\n setSelectedOption(option)\n\n setChanged(true)\n\n dispatch({\n type: 'UPDATE_BATCH',\n data: {\n item: {\n ...item,\n pattern: null !== option ? option.key : '',\n answerVariants: values.map(v => {\n const o = option.options.find(_v => _v.key == v)\n return {\n pattern: o.pattern,\n logic: o.logic\n }\n })\n },\n position: position - 1\n }\n })\n }\n\n useEffect(() => {\n if (changed) {\n setChanged(false)\n return\n }\n\n if (null === parserResultBasics) {\n setSelectedValue(null)\n setSelectedValues([])\n setSelectedOption(null)\n } else {\n const keys = Object.keys(parserResultBasics || {})\n\n if (0 < keys.length) {\n const option =\n options.flatMap(v => v.items).find(v => String(v.key).toLowerCase() == item.pattern.toLowerCase()) || null\n\n if (null === option) {\n setSelectedValue(null)\n setSelectedValues([])\n setSelectedOption(null)\n } else {\n const value = option.key\n const values =\n 'multistatemultiselect' == option.type\n ? parserResultBasics.map(tree => convertTreeToValues(option, tree)[0].value)\n : parserResultBasics.map(tree => convertTreeToValues(option, tree)[0])\n values.sort((a, b) => option.options.findIndex(v => v.key == a) - option.options.findIndex(v => v.key == b))\n\n setSelectedValue(value)\n setSelectedValues(values)\n setSelectedOption(option)\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [parserResultBasics])\n\n useEffect(() => {\n dispatch({\n type: 'UPDATE_ERRORS',\n data: {\n id: `b${position}`,\n error: !item.pattern.length || !item.answerVariants.length\n }\n })\n }, [item.pattern, item.answerVariants, position, dispatch])\n\n return (\n <>\n <div className=\"p-field p-col-6\">\n <Dropdown\n placeholder=\"Select...\"\n value={selectedValue}\n options={options}\n optionValue=\"key\"\n optionLabel=\"text\"\n optionGroupLabel=\"text\"\n optionGroupChildren=\"items\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n optionGroupTemplate={optionGroupTemplate}\n filter={true}\n filterBy={'search,text'}\n filterPlaceholder=\"Search items\"\n resetFilterOnHide={true}\n filterInputAutoFocus={false}\n fixedDropdownDir=\"bottom\"\n disabled={disabled}\n onChange={disabled ? null : event => onSelectedChange(event.value)}\n />\n </div>\n <div className=\"p-field p-col-6\">\n {null === selectedOption ? (\n <MultiSelect className=\"p-composite\" placeholder=\"Select...\" disabled={true} />\n ) : (\n <MultiSelect\n className=\"p-composite\"\n placeholder=\"Select...\"\n value={selectedValues}\n options={selectedOption.options}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n buttonLabelTemplate={buttonLabelTemplate}\n panelHeaderTemplate={MultiSelectHeader}\n panelFooterTemplate={MultiSelectFooter}\n filter={true}\n filterBy={'search,text'}\n filterPlaceholder=\"Search items\"\n resetFilterOnHide={true}\n fixedDropdownDir=\"bottom\"\n disabled={disabled}\n onChange={disabled ? null : event => onSelectedChange(selectedValue, event.value)}\n />\n )}\n </div>\n </>\n )\n}\n\nBatch.propTypes = {\n item: PropTypes.object,\n position: PropTypes.number\n}\n\nBatch.displayName = 'Batch'\n\nexport default Batch\n","// lib\nimport React, { useReducer, useState, useRef, useMemo, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { isEqual } from 'lodash'\n\nimport BasicFilters from '@aytm/app/stats/lib/basic-filters'\nimport { dataReducer } from '@aytm/app/stats/page/question-views/cq/reducers'\n\n// components\nimport { default as ComponentContainer } from '@aytm/app/stats/page/question-views/components/Component'\n\nimport Batch from '@aytm/app/stats/page/question-views/cq/Batch'\n\nimport Controls from '@aytm/app/stats/page/question-views/cq/Controls'\nimport Footer from '@aytm/app/stats/page/question-views/components/component/Footer'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/cq/styles/Component.module.scss'\n\nconst MAX_COMBINATIONS = 500\n\nexport const DataContext = React.createContext()\n\nconst Component = ({ model, data, states, disabled, isAdmin, onChange, onControlsChange, onUpdateData }) => {\n const [state, dispatch] = useReducer(dataReducer, {\n batches: JSON.parse(JSON.stringify(model.batches)),\n errors: []\n })\n\n const [changed, setChanged] = useState(false)\n\n const timer = useRef(null)\n\n const stateRef = useRef()\n stateRef.current = state\n\n const basicFilters = useMemo(\n () =>\n new BasicFilters({\n surveySchema: data.surveySchema,\n sflag: true,\n isAdmin\n }),\n [data.surveySchema, isAdmin]\n )\n\n const checkModel = () => {\n const newData = {}\n if (!isEqual(state.batches, model.batches)) {\n newData.errors = JSON.parse(JSON.stringify(state.errors))\n for (const bi in state.batches) {\n const index = newData.errors.indexOf(`b${Number(bi) + 1}`)\n 0 <= index && newData.errors.splice(index, 1)\n }\n newData.batches = JSON.parse(JSON.stringify(model.batches))\n }\n return newData\n }\n const checkState = () => {\n const newData = {}\n if (!isEqual(state.batches, model.batches)) newData.batches = JSON.parse(JSON.stringify(state.batches))\n return newData\n }\n\n const checkError = () => {\n if (0 < state.errors.length || 2 != state.batches.length) return { error: true }\n if (state.batches.some(b => !b.answerVariants.length || b.answerVariants.some(av => !av.pattern.length)))\n return { error: true }\n if (MAX_COMBINATIONS < state.batches[0].answerVariants.length * state.batches[1].answerVariants.length)\n return {\n error: `Your selection exceeds the allowed number of combinations (${MAX_COMBINATIONS}). Please limit the answer choices for your banner and/or attribute, or choose a different banner/attribute combination.`\n }\n return {\n error: false\n }\n }\n\n const onReverse = () => {\n dispatch({\n type: 'REVERSE_BATCHES'\n })\n }\n\n useEffect(() => {\n if (changed) return\n\n dispatch({\n type: 'RESET',\n data: { ...checkModel() }\n })\n\n setChanged(!isEqual(stateRef.current.batches, model.batches))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [model.batches])\n\n useEffect(() => {\n setChanged(true)\n\n const newData = {\n ...checkError(),\n ...checkState()\n }\n\n timer.current && clearTimeout(timer.current)\n timer.current = setTimeout(() => {\n onChange(newData)\n\n setChanged(false)\n }, 300)\n\n return () => timer.current && clearTimeout(timer.current)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state])\n\n const dataContextValue = useMemo(() => {\n return {\n id: model.id,\n data,\n disabled,\n dispatch,\n basicFilters\n }\n }, [model.id, data, disabled, dispatch, basicFilters])\n\n return (\n <ComponentContainer\n Controls={Controls}\n model={model}\n data={data}\n states={states}\n changed={changed}\n disabled={disabled}\n onChange={onControlsChange}\n >\n <div className={style.component}>\n <div className={`${style.row} p-fluid p-col-12`}>\n <div className={`${style.label} p-field p-col-5`}>\n <b>1. Choose a banner</b> - answers to a certain question, traits\n </div>\n <div className={`${style.label} p-field p-col-5`}>\n <b>2. Choose an attribute</b> to check for correlations\n </div>\n </div>\n <div className={`${style.list} ${style.row} p-fluid p-col-12`}>\n <DataContext.Provider value={dataContextValue}>\n <div className={`${style.column} ${style['column-av']} p-fluid p-field p-col-5`}>\n <Batch item={state.batches[0]} position={1} />\n </div>\n <div className={`${style.column} p-fluid p-field p-col`}>\n <span className={style.toggle} onClick={disabled ? null : onReverse}>\n <i></i>\n <i></i>\n <i></i>\n </span>\n </div>\n <div className={`${style.column} ${style['column-av']} p-fluid p-field p-col-5`}>\n <Batch item={state.batches[1]} position={2} />\n </div>\n </DataContext.Provider>\n </div>\n </div>\n {!disabled && <Footer data={data} states={states} onUpdateData={onUpdateData} />}\n </ComponentContainer>\n )\n}\n\nComponent.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n states: PropTypes.object,\n disabled: PropTypes.bool,\n isAdmin: PropTypes.bool,\n onChange: PropTypes.func,\n onControlsChange: PropTypes.func,\n onUpdateData: PropTypes.func\n}\n\nComponent.displayName = 'Component'\n\nexport default Component\n","// lib\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport { Dropdown } from 'primereact/dropdown'\n\nimport { default as ControlsContainer } from '@aytm/app/stats/page/question-views/components/component/Controls'\n\n// styles\n\nconst Controls = ({ model, data, collapsed, disabled, onToggle, onChange }) => {\n const itemTemplate = option => <span dangerouslySetInnerHTML={{ __html: option.text }}></span>\n const valueTemplate = (option, _props) => (\n <span\n dangerouslySetInnerHTML={{ __html: option ? option.label || option.text : _props.placeholder || 'Select...' }}\n ></span>\n )\n\n return (\n <ControlsContainer data={data} collapsed={collapsed} onToggle={onToggle}>\n <div className=\"p-field p-col-5\">\n <Dropdown\n className=\"p-dropdown-rounded\"\n value={model.mode}\n options={data.controls.mode.options}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n fixedDropdownDir=\"bottom\"\n disabled={disabled || data.controls.mode.disabled}\n onChange={disabled || data.controls.mode.disabled ? null : event => onChange('mode', event.value)}\n />\n </div>\n </ControlsContainer>\n )\n}\n\nControls.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n collapsed: PropTypes.bool,\n disabled: PropTypes.bool,\n onToggle: PropTypes.func,\n onChange: PropTypes.func\n}\n\nControls.displayName = 'Controls'\n\nexport default Controls\n","export const dataReducer = (state = {}, action) => {\n switch (action.type) {\n case 'REVERSE_BATCHES': {\n const { batches } = state\n\n return {\n ...state,\n batches: batches.reverse()\n }\n }\n case 'UPDATE_BATCH': {\n const { batches } = state\n const { item, position } = action.data\n batches[position] = item\n\n return {\n ...state,\n batches\n }\n }\n case 'UPDATE_ERRORS': {\n const { errors } = state\n const id = action.data.id || 'pattern'\n const index = errors.indexOf(id)\n 0 <= index && errors.splice(index, 1)\n true == action.data.error && errors.push(id)\n\n return {\n ...state,\n errors\n }\n }\n case 'RESET': {\n return {\n ...state,\n ...action.data\n }\n }\n default:\n throw new Error('Unknown action type')\n }\n}\n","// lib\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport { Button } from 'primereact/button'\nimport { Dropdown } from 'primereact/dropdown'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/components/styles/Controls.module.scss'\n\nconst Controls = ({ model, data, disabled, onChange, onFetch, onFilter }) => {\n const itemTemplate = option => (\n <span\n dangerouslySetInnerHTML={{\n __html: `<${option.tag} style='display: inline-block; width: 30px; text-align: right;'>${option.l}</${option.tag}> <${option.tag}>${option.text}</${option.tag}>`\n }}\n ></span>\n )\n const valueTemplate = (option, _props) => (\n <span dangerouslySetInnerHTML={{ __html: option ? option.text : _props.placeholder || 'Select...' }}></span>\n )\n\n return (\n <div className={`${style.component} p-fluid p-col-12`}>\n {data.icon && (\n <div className={`${style.icon} p-field`}>\n <i className={data.icon.class} />\n <span dangerouslySetInnerHTML={{ __html: data.icon.text }}></span>\n </div>\n )}\n <div className={`${style.controls} p-fluid p-field p-right p-col`}>\n {data.controls.suspiciousLevel && (\n <div className=\"p-field p-col-5\">\n <Dropdown\n className={`p-dropdown-rounded`}\n value={model.suspiciousLevel}\n options={data.controls.suspiciousLevel.options}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n fixedDropdownDir=\"bottom\"\n disabled={disabled || data.controls.suspiciousLevel.disabled}\n onChange={\n disabled || data.controls.suspiciousLevel.disabled\n ? null\n : event => onChange('suspiciousLevel', event.value)\n }\n />\n </div>\n )}\n {data.controls.job && (\n <div className=\"p-field\" style={{ position: 'relative' }}>\n <Button\n className=\"p-button-rounded\"\n label=\"Run Data Centrifuge\"\n disabled={disabled || data.controls.job.disabled}\n onClick={disabled || data.controls.job.disabled ? null : onFetch}\n />\n {0 < data.notAnalyzedCount ? (\n <span className={style.note}>{data.notAnalyzedCount} not analyzed</span>\n ) : null}\n </div>\n )}\n {data.controls.filter && (\n <div className={`${style.toggle} p-field${disabled || data.controls.filter.disabled ? ' p-disabled' : ''}`}>\n <i\n className=\"icon-aytmfd-filters\"\n onClick={disabled || data.controls.filter.disabled ? null : onFilter}\n ></i>\n </div>\n )}\n </div>\n </div>\n )\n}\n\nControls.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n components: PropTypes.object,\n disabled: PropTypes.bool,\n onChange: PropTypes.func,\n onFetch: PropTypes.func,\n onFilter: PropTypes.func\n}\n\nControls.displayName = 'Controls'\n\nexport default Controls\n","// lib\nimport React, { Fragment, useState, useRef, useMemo, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { Transition } from 'react-transition-group'\n\nimport { stopEvent } from '@aytm/lib/common/func'\n\nimport useEventListener from '@aytm/app/stats/page/comments/lib/hooks/useEventListener'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/data-cleaning/styles/Responses.module.scss'\n\nconst Response = ({ model, uid, item, selected }) => {\n const [collapsed, setCollapsed] = useState(true)\n const [maxHeight, setMaxHeight] = useState(0)\n\n const [transitionDuration, setTransitionDuration] = useState(500)\n\n const componentRef = useRef(null)\n const componentContentRef = useRef(null)\n\n const collapsedRef = useRef()\n collapsedRef.current = collapsed\n\n const total = useMemo(() => Object.keys(item.vectors || {}).length, [item.vectors])\n\n const onToggle = () => {\n setCollapsed(!collapsedRef.current)\n setTransitionDuration(500)\n }\n\n useEffect(() => {\n if (selected) {\n setCollapsed(false)\n componentRef.current.scrollIntoView({ block: 'center' })\n }\n }, [selected])\n\n useEffect(() => {\n setMaxHeight(componentContentRef.current ? componentContentRef.current.getBoundingClientRect().height : 0)\n setTransitionDuration(collapsed ? 500 : 10)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [collapsed, componentContentRef.current])\n\n return (\n <div ref={componentRef} className={style.response}>\n <div className={style['response-header']} onClick={onToggle}>\n <div>\n <span className={style['response-header-uid']} onClick={stopEvent}>\n {uid}\n </span>\n </div>\n <div>\n <b className={style['response-header-vectors']}>\n {total} vector{(1 != total && 's') || ''}\n </b>\n </div>\n </div>\n <Transition in={!collapsed} timeout={transitionDuration}>\n {status => (\n <div\n className={`${style['response-content']} ${style['transition-panel']}${\n status ? ' ' + style['transition-panel-' + status] : ''\n }`}\n style={{\n maxHeight: collapsed ? 0 : `${0 < maxHeight ? maxHeight : 1000}px`,\n transitionDuration: `${transitionDuration}ms`\n }}\n >\n <div ref={componentContentRef}>\n <div className={style['response-vector']}>\n <div> </div>\n <div className={style['response-vector-title']}>Vector</div>\n <div className={style['response-vector-details']}>Details</div>\n </div>\n {Object.keys(item.vectors).map(key => (\n <div className={style['response-vector']} key={`${uid}-${key}`}>\n <div className={style['response-vector-icon']}>\n <svg width=\"100\" height=\"100\" viewBox=\"0 0 100 100\">\n <path d={model.vectors.icons[key]} fill={model.vectors.colors[key]} />\n </svg>\n </div>\n <div className={style['response-vector-title']}>{model.vectors.titles[key]}</div>\n <div\n className={style['response-vector-details']}\n dangerouslySetInnerHTML={{ __html: item.explanations[key] || '' }}\n />\n </div>\n ))}\n </div>\n </div>\n )}\n </Transition>\n </div>\n )\n}\n\nResponse.propTypes = {\n model: PropTypes.object,\n uid: PropTypes.number,\n item: PropTypes.object,\n selected: PropTypes.bool\n}\n\nconst Responses = ({ model, data }) => {\n const [selectedUID, setSelectedUID] = useState(null)\n\n const UIDs = useMemo(\n () =>\n data.scores.reduce((acc, [uid, ...scores]) => {\n const level = model.suspiciousLevels.find(l => l[1] <= data.suspiciousScores[uid])\n if (level == undefined) return acc\n\n const status =\n Object.hasOwn(data.responses, uid) &&\n data.suspiciousLevel <= data.suspiciousScores[uid] &&\n scores.some((v, i) => !data.disabledVectors.includes(data.vectors[i].id) && 0 < v)\n if (!status) return acc\n\n acc[level[1]] ||= []\n acc[level[1]].push(uid)\n\n return acc\n }, {}),\n [model.suspiciousLevels, data]\n )\n\n useEffect(() => {\n if (null !== selectedUID) {\n setSelectedUID(null)\n }\n }, [selectedUID])\n\n useEventListener(`reviewResponse`, event => {\n setSelectedUID(Number(event.detail.uid))\n })\n\n return (\n <div className={`${style.component} p-fluid p-col-12`}>\n {model.suspiciousLevels.map(level => {\n const items = UIDs[level[1]]\n return items != undefined && 0 < items.length ? (\n <Fragment key={`level-${level[1]}`}>\n <div className={style.header}>\n CONCERN LEVEL: {level[0]} ({items.length})\n </div>\n {items.map(uid => (\n <Response key={uid} model={model} uid={uid} item={data.responses[uid]} selected={uid == selectedUID} />\n ))}\n </Fragment>\n ) : null\n })}\n </div>\n )\n}\n\nResponses.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object\n}\n\nResponses.displayName = 'Responses'\n\nexport default Responses\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\n// components\nimport LightBox from '@aytm/lib/rfd-ui/components/basic/light-box'\nimport ImagePopup from '@aytm/lib/rfd-ui/components/basic/image-popup'\n\n// <Component>\n\nconst FRAME_PADDING = 7\nconst SCROLLING_PADDING = 30\nconst LABEL_HEIGHT = 40\n\nexport default class HeatMapPopup extends ImagePopup {\n static propTypes = {\n src: PropTypes.string.isRequired,\n imgOriginalHeight: PropTypes.number.isRequired,\n imgOriginalWidth: PropTypes.number.isRequired,\n svgContent: PropTypes.string,\n show: PropTypes.bool.isRequired,\n showImg: PropTypes.bool.isRequired,\n scrolling: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n closeOnClick: PropTypes.bool.isRequired\n }\n\n constructor(props) {\n super(props)\n\n this.state = {\n ...this.state,\n opacityImg: 0\n }\n }\n\n componentDidMount() {\n const { showImg } = this.props\n super.componentDidMount()\n window.addEventListener('resize', this.handleWindowResize)\n if (showImg) {\n setTimeout(() => this.setState({ opacityImg: 1 }), 0)\n }\n }\n\n render() {\n const {\n src,\n label,\n show,\n scrolling,\n loadingIcon = 'icon-aytmfd-spin aytmfd-spin',\n failedIcon = 'icon-aytmfd-delete',\n closeIcon = 'icon-aytmfd-delete',\n closeOnClick = false,\n imgOriginalWidth,\n imgOriginalHeight,\n svgContent\n } = this.props\n const { loading, loaded, imageWidth, imageHeight, opacityImg } = this.state\n if (show) {\n const iWidth = imageWidth + (scrolling ? SCROLLING_PADDING : 0)\n const iHeight = imageHeight + (label && loaded ? LABEL_HEIGHT : 0)\n const scaleLightBox = iWidth / imgOriginalWidth\n\n return (\n <LightBox onClose={this.handleClose} fullSize={scrolling}>\n <div\n ref={this.saveRef('ImageFrame')}\n className={classNames('rfd-ui-image-popup-frame', {\n 'rfd-ui-image-popup-frame-loading': loading,\n 'rfd-ui-image-popup-frame-loaded': loaded,\n 'rfd-ui-image-popup-frame-scrolling': loaded && scrolling\n })}\n style={{\n width: `${iWidth}px`,\n height: `${iHeight}px`,\n margin: `-${iHeight / 2 + FRAME_PADDING}px 0 0 -${iWidth / 2 + FRAME_PADDING}px`,\n padding: `${FRAME_PADDING}px`\n }}\n onClick={closeOnClick ? this.handleClose : null}\n >\n <svg\n style={{\n position: 'absolute',\n top: `${FRAME_PADDING}px`,\n left: `${FRAME_PADDING}px`,\n transformOrigin: 'left top',\n transform: `scale(${scaleLightBox}) translateZ(0)`\n }}\n width={imgOriginalWidth}\n height={imgOriginalHeight}\n viewBox={`0 0 ${imgOriginalWidth} ${imgOriginalHeight}`}\n dangerouslySetInnerHTML={{ __html: svgContent }}\n />\n\n <div className=\"rfd-ui-image-popup-close-button\" onClick={closeOnClick ? null : this.handleClose}>\n <i className={closeIcon} />\n </div>\n\n <img\n src={src}\n width={`${imageWidth}px`}\n height={scrolling ? 'auto' : `${imageHeight}px`}\n onLoad={this.onLoad}\n onError={this.onError}\n style={{ opacity: opacityImg }}\n />\n\n {loading && !loaded && (\n <div className=\"rfd-ui-image-popup-image-loader\">\n <i className={loadingIcon} />\n </div>\n )}\n {!loading && !loaded && (\n <div className=\"rfd-ui-image-popup-image-failed\">\n <i className={failedIcon} />\n </div>\n )}\n </div>\n </LightBox>\n )\n } else return null\n }\n}\n","// lib\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport ViewModes from '@aytm/app/stats/page/question-views/oe/components/Controls/ViewModes'\nimport VerbatimControls from '@aytm/app/stats/page/question-views/oe/components/Controls/Verbatim'\nimport TagsControls from '@aytm/app/stats/page/question-views/oe/components/Controls/Tags'\nimport WordcloudControls from '@aytm/app/stats/page/question-views/oe/components/Controls/Wordcloud'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/oe/styles/Controls.module.scss'\n\nconst Controls = ({\n model,\n data,\n features,\n collapsed,\n disabled,\n isSurveyGuest,\n onViewModeChange,\n onConfigChange,\n onPresetChange,\n onApplyToAll,\n onExport,\n onToggle\n}) => {\n const { chartMode, viewMode } = model\n\n return disabled ? null : (\n <div className={`${style.component} p-fluid p-col-12`}>\n {<ViewModes model={model} data={data} onViewModeChange={onViewModeChange} />}\n {'verbatim' == viewMode ? (\n <VerbatimControls model={model} data={data} features={features} onConfigChange={onConfigChange} />\n ) : null}\n {'tags' == viewMode ? <TagsControls model={model} onConfigChange={onConfigChange} /> : null}\n {'wordcloud' == viewMode && !['map', 'none'].includes(chartMode) ? (\n <WordcloudControls\n model={model}\n data={data}\n features={features}\n applyToAllLabel={'Apply to all wordclouds'}\n collapsed={collapsed}\n isSurveyGuest={isSurveyGuest}\n onPresetChange={onPresetChange}\n onApplyToAll={onApplyToAll}\n onExport={onExport}\n onToggle={onToggle}\n />\n ) : null}\n </div>\n )\n}\n\nControls.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n features: PropTypes.object,\n collapsed: PropTypes.bool,\n disabled: PropTypes.bool,\n isSurveyGuest: PropTypes.bool,\n onViewModeChange: PropTypes.func,\n onConfigChange: PropTypes.func,\n onPresetChange: PropTypes.func,\n onApplyToAll: PropTypes.func,\n onExport: PropTypes.func,\n onToggle: PropTypes.func\n}\n\nControls.displayName = 'Controls'\n\nexport default Controls\n","// lib\nimport React, { useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport { Dropdown } from 'primereact/dropdown'\n\nconst TagsControls = ({ model, onConfigChange }) => {\n const { config, codeBooks = [] } = model\n\n const codeBooksOptions = useMemo(\n () =>\n codeBooks.map(codebook => {\n return {\n key: codebook.title,\n text: codebook.title\n }\n }),\n [codeBooks]\n )\n\n const itemTemplate = option =>\n option.hidden ? null : <span dangerouslySetInnerHTML={{ __html: option.text }}></span>\n const valueTemplate = option =>\n option ? <span dangerouslySetInnerHTML={{ __html: option.text }}></span> : 'Please select...'\n\n return 0 < codeBooksOptions.length ? (\n <div className=\"p-field p-col-param\">\n <Dropdown\n className=\"p-dropdown-rounded\"\n value={config.codebook || codeBooksOptions[0].text}\n options={codeBooksOptions}\n optionValue=\"key\"\n optionLabel=\"text\"\n optionDisabled=\"disabled\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n fixedDropdownDir=\"bottom\"\n onChange={event => onConfigChange('codebook', '*' == event.value ? null : event.value)}\n />\n </div>\n ) : null\n}\n\nTagsControls.propTypes = {\n model: PropTypes.object,\n onConfigChange: PropTypes.func\n}\n\nTagsControls.displayName = 'TagsControls'\n\nexport default TagsControls\n","// lib\nimport React, { useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport { Dropdown } from 'primereact/dropdown'\n\nimport SearchInput from '@aytm/app/stats/page/components/SearchInput'\n\nconst VerbatimControls = ({ model, data, features, onConfigChange }) => {\n const { config, survey, tagsList } = model\n\n const amount = useMemo(\n () =>\n Object.keys(data.controls.config.verbatim).filter(key => 0 < data.controls.config.verbatim[key].options?.length)\n .length + (2 > data.controls.viewModes.options.length || data.controls.viewModes.disabled ? 0 : 1),\n [data.controls.config.verbatim, data.controls.viewModes]\n )\n\n const itemTemplate = option =>\n option.hidden ? null : <span dangerouslySetInnerHTML={{ __html: option.text }}></span>\n\n return (\n <>\n {data.controls.config != undefined && data.controls.config.verbatim != undefined\n ? Object.keys(data.controls.config.verbatim).map(key =>\n 'search' == key ? (\n <div\n key=\"param-search\"\n className=\"p-fluid p-field p-col\"\n style={{\n width: `calc(100% - ${amount} * 30% - ${amount} * 10px)`\n }}\n >\n <SearchInput\n survey={survey}\n tagsList={tagsList}\n search={config.search}\n isTagsManagementDisabled={features.oe_tags_view.disabled}\n isSentimentsManagementDisabled={features.oe_sentiments_view.disabled}\n onSearchChange={value => onConfigChange('search', Object.assign({}, config.search, value))}\n />\n </div>\n ) : 0 < data.controls.config.verbatim[key].options.length ? (\n <div key={`param-${key}`} className=\"p-field p-col-param\">\n <Dropdown\n className=\"p-dropdown-rounded\"\n value={config[key]}\n options={data.controls.config.verbatim[key].options}\n optionValue=\"key\"\n optionLabel=\"text\"\n optionDisabled=\"disabled\"\n itemTemplate={itemTemplate}\n fixedDropdownDir=\"bottom\"\n disabled={data.controls.config.verbatim[key].disabled}\n onChange={\n data.controls.config.verbatim[key].disabled ? null : event => onConfigChange(key, event.value)\n }\n />\n </div>\n ) : null\n )\n : null}\n </>\n )\n}\n\nVerbatimControls.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n features: PropTypes.object,\n onConfigChange: PropTypes.func\n}\n\nVerbatimControls.displayName = 'VerbatimControls'\n\nexport default VerbatimControls\n","// lib\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport { Dropdown } from 'primereact/dropdown'\n\nconst ViewModes = ({ model, data, onViewModeChange }) => {\n const { viewMode } = model\n\n const itemTemplate = option =>\n option.hidden ? null : <span dangerouslySetInnerHTML={{ __html: option.text }}></span>\n\n return 2 > data.controls.viewModes.options.length || data.controls.viewModes.disabled ? null : (\n <div className=\"p-field p-col-param\">\n <Dropdown\n className=\"p-dropdown-rounded\"\n value={viewMode}\n options={data.controls.viewModes.options}\n optionValue=\"key\"\n optionLabel=\"text\"\n optionDisabled=\"disabled\"\n itemTemplate={itemTemplate}\n // valueTemplate={valueTemplate}\n fixedDropdownDir=\"bottom\"\n disabled={data.controls.viewModes.disabled}\n onChange={data.controls.viewModes.disabled ? null : event => onViewModeChange(event.value)}\n />\n </div>\n )\n}\n\nViewModes.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n onViewModeChange: PropTypes.func\n}\n\nViewModes.displayName = 'ViewModes'\n\nexport default ViewModes\n","// lib\nimport React, { useState, useRef, useCallback } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\n// components\nimport { Button } from 'primereact/button'\nimport { Dropdown } from 'primereact/dropdown'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/oe/styles/Controls.module.scss'\n\nconst WordcloudControls = ({\n model,\n data,\n features,\n applyToAllLabel,\n collapsed,\n isSurveyGuest,\n onPresetChange,\n onApplyToAll,\n onExport,\n onToggle\n}) => {\n const { preset } = model\n\n const [status, setStatus] = useState(null)\n\n const timer = useRef(null)\n\n const statusRef = useRef(null)\n statusRef.current = status\n\n const exportOptions = [\n { key: 'png', text: 'Download PNG image' },\n { key: 'pdf', text: 'Download PDF document' },\n { key: 'eps', text: 'Download EPS file' }\n ]\n window.Blob != undefined && exportOptions.push({ key: 'csv', text: 'Download CSV file' })\n\n const itemTemplate = option =>\n option.hidden ? null : <span dangerouslySetInnerHTML={{ __html: option.text }}></span>\n const valueTemplate = (option, _props) =>\n option ? (\n <span dangerouslySetInnerHTML={{ __html: `Preset: ${option.label || option.text}` }}></span>\n ) : (\n <span dangerouslySetInnerHTML={{ __html: _props.placeholder || 'Select...' }}></span>\n )\n\n const valueExportTemplate = () => <i className=\"icon-aytmfd-export\" />\n\n const onToggleClick = useCallback(() => {\n setStatus('toggling')\n 'function' === typeof onToggle && onToggle()\n\n timer.current && clearTimeout(timer.current)\n timer.current = setTimeout(() => 'toggling' == statusRef.current && setStatus(null), 500)\n\n return () => timer.current && clearTimeout(timer.current)\n }, [onToggle])\n\n return (\n <>\n {features.word_clouds.disabled ? null : (\n <>\n {data.controls.presets != undefined ? (\n <div className=\"p-field p-col-param\">\n <Dropdown\n className=\"p-dropdown-rounded\"\n placeholder={data.controls.presets.placeholder}\n value={preset}\n options={data.controls.presets.options}\n optionValue=\"key\"\n optionLabel=\"text\"\n optionDisabled=\"disabled\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n fixedDropdownDir=\"bottom\"\n disabled={data.controls.presets.disabled}\n onChange={data.controls.presets.disabled ? null : event => onPresetChange(event.value)}\n />\n </div>\n ) : null}\n <div className=\"p-field p-col-max\">\n <Button className=\"p-button-grey p-button-rounded\" label={applyToAllLabel} onClick={onApplyToAll} />\n </div>\n </>\n )}\n <div className=\"p-fluid p-field p-col p-right\">\n {features.word_clouds.disabled ? null : (\n <div className=\"p-field\">\n <span className={style.toggle} onClick={onToggleClick}>\n <i\n className={classNames('icon-aytmfd-config', {\n ['afd-spin-reverse']: 'toggling' == status && collapsed,\n ['afd-spin']: 'toggling' == status && !collapsed\n })}\n />\n </span>\n </div>\n )}\n {isSurveyGuest ? null : (\n <div className=\"p-field\">\n <Dropdown\n className=\"p-dropdown-icon p-dropdown-right\"\n placeholder=\"\"\n options={exportOptions}\n optionValue=\"key\"\n optionLabel=\"text\"\n valueTemplate={valueExportTemplate}\n fixedDropdownDir=\"bottom\"\n onChange={event => onExport(event.value)}\n />\n </div>\n )}\n </div>\n </>\n )\n}\n\nWordcloudControls.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n features: PropTypes.object,\n applyToAllLabel: PropTypes.string,\n collapsed: PropTypes.bool,\n isSurveyGuest: PropTypes.bool,\n onPresetChange: PropTypes.func,\n onApplyToAll: PropTypes.func,\n onExport: PropTypes.func,\n onToggle: PropTypes.func\n}\n\nWordcloudControls.displayName = 'WordcloudControls'\n\nexport default WordcloudControls\n","// lib\nimport React, { useState, useRef, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { linkifyText } from '@aytm/app/stats/lib/linkify-text'\nimport { getImageAssetPath, IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT } from '@aytm/lib/common/assets'\nimport { configure as configureImageAssetUploadManager } from '@aytm/lib/rfd-ui/components/assets/jobs/image-asset-upload-manager'\n\n// components\nimport { Button } from 'primereact/button'\nimport { Image } from 'primereact/image'\n\nimport UploadAssetsButton from '@aytm/lib/rfd-ui/components/assets/upload-assets-button'\n\nimport QuestionHeader from '@aytm/app/stats/page/question-views/components/QuestionHeader'\nimport QuestionBody from '@aytm/app/stats/page/question-views/components/QuestionBody'\nimport TextEditor from '@aytm/app/stats/page/question-views/components/TextEditor'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/sn/styles/Component.module.scss'\nimport styleTextFormatting from '@aytm/app/stats/page/question-views/components/styles/TextFormatting.module.scss'\n\nconst Component = ({ model, features, isQuestionCollapsed, onChange, onImageLoad, ...rest }) => {\n const [title, setTitle] = useState(model.text)\n const [asset, setAsset] = useState(model.asset)\n const [note, setNote] = useState(model.note)\n\n const [collapsed, setCollapsed] = useState(isQuestionCollapsed)\n\n const [loaded, setLoaded] = useState(false)\n\n const [editing, setEditing] = useState(false)\n const [uploading, setUploading] = useState(false)\n\n const [errorText, setErrorText] = useState(null)\n\n const timer = useRef(null)\n\n const imageRef = useRef()\n const imagePlaceholderHeightRef = useRef(0)\n\n const savedValues = useRef(null)\n savedValues.current = { title: model.text, note: model.note, asset: model.asset }\n\n const hasImage = asset && Object.hasOwn(asset, 'path')\n const { disabled } = features\n\n configureImageAssetUploadManager({\n createAssetPath: 'report/image_asset/create'\n })\n\n const getAssetLink = () => {\n const generatePath = getImageAssetPath({\n path: asset.path,\n filter: IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT,\n width: 1000,\n height: 1000\n })\n return generatePath\n }\n\n const onUploadAsset = res => {\n setUploading(false)\n\n if (res && res[0]) {\n const asset = res[0]\n const showError = asset && ['invalid', 'error', 'failed'].includes(asset.status)\n if (!showError) {\n const image = {\n uid: asset.assetUid,\n path: asset.imagePath,\n original: asset.original\n }\n\n if (imageRef.current) {\n const el = imageRef.current.getElement()\n const rect = el.getBoundingClientRect()\n imagePlaceholderHeightRef.current = rect.height\n }\n setErrorText(null)\n setAsset(image)\n } else {\n const error = asset.error?.length\n ? asset.error.join(' ')\n : \"We couldn't upload your file, please check your connection, file and try again. 30MB max.\"\n setErrorText(error)\n }\n }\n }\n\n const onDeleteAsset = () => {\n setAsset(null)\n }\n\n const onChangeText = html => {\n setNote(html)\n }\n\n const onStartEditing = () => {\n setEditing(true)\n }\n\n const onCancel = () => {\n setTitle(savedValues.current.title)\n setAsset(savedValues.current.asset)\n setNote(savedValues.current.note)\n setUploading(false)\n setErrorText(null)\n setEditing(false)\n }\n\n const onSetEditing = isEdit => {\n isEdit ? onStartEditing() : onCancel()\n }\n\n const onSave = () => {\n if (title !== savedValues.current.title || note !== model.note || asset !== savedValues.current.asset) {\n // eslint-disable-next-line unicorn/no-unsafe-regex\n const trimmedNote = note ? note.replace(/(<br\\s*(\\/)?>\\s*)*$/, '').trim() : null\n const updatedNote = '' == trimmedNote ? null : trimmedNote\n setNote(updatedNote)\n onChange({\n text: title,\n note: updatedNote,\n asset\n })\n }\n setUploading(false)\n setEditing(false)\n setErrorText(null)\n }\n\n const onLoad = () => {\n loaded && onImageLoad(imageRef.current.getElement(), imagePlaceholderHeightRef.current)\n setLoaded(true)\n }\n\n useEffect(() => {\n loaded && onImageLoad(imageRef.current.getElement(), imagePlaceholderHeightRef.current)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [loaded])\n\n useEffect(() => {\n timer.current && clearTimeout(timer.current)\n timer.current = setTimeout(\n () => {\n setCollapsed(isQuestionCollapsed)\n },\n !isQuestionCollapsed ? 0 : 1000\n )\n\n return () => timer.current && clearTimeout(timer.current)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isQuestionCollapsed])\n\n useEffect(() => {\n setTitle(model.text)\n setAsset(model.asset)\n setNote(model.note)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [model.text, model.asset.uid, model.note])\n\n const isSaveDisabled =\n disabled ||\n uploading ||\n title == undefined ||\n !title.trim().length ||\n (title === savedValues.current.title && note === model.note && asset === savedValues.current.asset)\n\n return (\n <>\n <QuestionHeader\n model={model}\n features={features}\n titleExt={title}\n isEditingExt={editing}\n isReportExpert={false}\n isQuestionCollapsed={isQuestionCollapsed}\n onSetTitleExt={setTitle}\n onSetEditQuestionExt={onSetEditing}\n onSaveExt={onSave}\n {...rest}\n />\n {!collapsed && (\n <QuestionBody editing={editing} isQuestionCollapsed={isQuestionCollapsed}>\n <div className={style.container}>\n {editing ? (\n <div className={`p-fluid p-col-12`}>\n <div className={`${style.row} p-fluid p-col-12`}>\n <div className={`${style.help} p-field p-col`}>\n Type in/paste your executive summary below. It will be added as a slide on PPTX exports.\n </div>\n <div className={`${style.changeAsset} p-field p-right p-col-4`}>\n <UploadAssetsButton\n type=\"image\"\n text={hasImage ? 'Replace illustration' : 'Add an illustration'}\n withOriginal={true}\n withErrors={true}\n renderProgressText={() => 'Uploading your image'}\n onFilesUpload={() => setUploading(true)}\n onFilesUploaded={onUploadAsset}\n />\n </div>\n </div>\n {errorText && <div className={style.error} dangerouslySetInnerHTML={{ __html: errorText }}></div>}\n </div>\n ) : null}\n {hasImage && (\n <div className={`${style.row} ${style['row-image']} p-fluid p-col-12`}>\n {editing && !uploading ? (\n <div onClick={onDeleteAsset} className={style.deleteAsset}>\n <i className=\"icon-aytmfd-trash\" />\n </div>\n ) : null}\n <div className={loaded ? '' : 'p-hidden'}>\n <Image\n ref={imageRef}\n src={getAssetLink()}\n alt={asset.uid}\n preview={true}\n previewSrc={asset.url}\n usePreviewRotate={false}\n onLoad={onLoad}\n />\n </div>\n </div>\n )}\n {editing ? (\n <>\n <div className={`${style.row} p-fluid p-col-12`}>\n <div className={`${style.editor} p-fluid p-col-12`}>\n <TextEditor text={note} characters={2000} disabled={disabled} onChange={onChangeText} />\n </div>\n </div>\n <div className={`${style.row} p-fluid p-col-12`}>\n <div className=\"p-field p-col\"> </div>\n <div className={`${style.group} p-field p-right p-col-4`}>\n <Button\n className={classNames(style.button, style.cancel)}\n label=\"CANCEL\"\n severity=\"secondary\"\n onClick={onCancel}\n />\n <Button\n className={style.button}\n label=\"SAVE\"\n disabled={isSaveDisabled}\n onClick={isSaveDisabled ? null : onSave}\n />\n </div>\n </div>\n </>\n ) : (\n <div className={`${style.row} p-fluid p-col-12`}>\n {note ? (\n <div\n className={`${style.text} ${styleTextFormatting.text} p-field p-col`}\n dangerouslySetInnerHTML={{\n __html: linkifyText(note)\n }}\n />\n ) : disabled || hasImage ? null : (\n <div className={`${style.help} p-field p-col`}>Add an executive summary/notes to your report.</div>\n )}\n </div>\n )}\n </div>\n </QuestionBody>\n )}\n </>\n )\n}\n\nComponent.propTypes = {\n model: PropTypes.shape({\n id: PropTypes.string,\n key: PropTypes.string,\n text: PropTypes.string,\n asset: PropTypes.object,\n note: PropTypes.string\n }),\n features: PropTypes.object,\n isQuestionCollapsed: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n onImageLoad: PropTypes.func\n}\n\nComponent.displayName = 'Component'\n\nexport default Component\n","// lib\nimport React, { useReducer, useState, useRef, useMemo, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { isEqual } from 'lodash'\n\nimport { dataReducer } from '@aytm/app/stats/page/question-views/components/mapping/reducers'\n\n// components\nimport { Dropdown } from 'primereact/dropdown'\n\nimport { default as ComponentContainer } from '@aytm/app/stats/page/question-views/components/mapping/Component'\n\nimport Entities from '@aytm/app/stats/page/question-views/components/mapping/Entities'\nimport Attributes from '@aytm/app/stats/page/question-views/components/mapping/Attributes'\nimport Variables from '@aytm/app/stats/page/question-views/components/mapping/Variables'\n\nimport Controls from '@aytm/app/stats/page/question-views/components/mapping/Controls'\nimport Sources from '@aytm/app/stats/page/question-views/components/mapping/Sources'\nimport Footer from '@aytm/app/stats/page/question-views/components/mapping/Footer'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/components/styles/Component.module.scss'\n\nconst Component = ({\n model,\n data,\n states,\n disabled,\n onChange,\n onReset,\n onControlsChange,\n onModeChange,\n onUpdateData,\n onInvalidKey,\n onPublish,\n onPublished\n}) => {\n const [state, dispatch] = useReducer(dataReducer, {\n entities: JSON.parse(JSON.stringify(model.entities)),\n attributes: JSON.parse(JSON.stringify(model.attributes)),\n variables: JSON.parse(JSON.stringify(model.variables)),\n refs: {},\n errors: []\n })\n\n const [changed, setChanged] = useState(false)\n\n const timer = useRef(null)\n\n const stateRef = useRef()\n stateRef.current = state\n\n const waveRef = useRef(null)\n waveRef.current = String(model.wave)\n\n const showReset = useMemo(\n () => !model.original && !disabled && 'function' === typeof onReset,\n [model.original, disabled, onReset]\n )\n\n const attributesOptions = useMemo(\n () =>\n data.options.attributes.map(attribute => {\n const option = {\n icon: attribute.icon,\n label: attribute.label,\n search: attribute.search\n }\n\n const refs = state.entities.map(entity => {\n const i = data.options.entities.findIndex(v => v.pattern == entity.pattern)\n return attribute.refs[i]\n })\n\n option.key = refs.join(', ')\n option.text = `<b>${option.label}</b><br/>${option.key}`\n\n return option\n }),\n [data.options.entities, data.options.attributes, state.entities]\n )\n\n const itemTemplate = option => <span dangerouslySetInnerHTML={{ __html: option.text }}></span>\n const valueTemplate = (option, _props) => (\n <span\n dangerouslySetInnerHTML={{ __html: option ? option.label || option.text : _props.placeholder || 'Select...' }}\n ></span>\n )\n\n const checkModel = () => {\n const newData = {}\n if (!isEqual(state.entities, model.entities)) {\n newData.errors ||= JSON.parse(JSON.stringify(state.errors))\n for (const i in state.entities) {\n const index = newData.errors.indexOf(`e${Number(i) + 1}`)\n 0 <= index && newData.errors.splice(index, 1)\n }\n newData.entities = JSON.parse(JSON.stringify(model.entities))\n }\n if (!isEqual(state.attributes, model.attributes)) {\n newData.errors ||= JSON.parse(JSON.stringify(state.errors))\n for (const i in state.attributes) {\n const index = newData.errors.indexOf(`a${Number(i) + 1}`)\n 0 <= index && newData.errors.splice(index, 1)\n }\n newData.attributes = JSON.parse(JSON.stringify(model.attributes))\n }\n if (!isEqual(state.variables, model.variables)) {\n newData.refs = state.refs\n newData.errors ||= JSON.parse(JSON.stringify(state.errors))\n for (const vi in state.variables) {\n delete newData.refs[`v${Number(vi) + 1}`]\n const index = newData.errors.indexOf(`v${Number(vi) + 1}`)\n 0 <= index && newData.errors.splice(index, 1)\n }\n newData.variables = JSON.parse(JSON.stringify(model.variables))\n }\n return newData\n }\n const checkState = () => {\n const newData = {}\n if (!isEqual(state.entities, model.entities)) newData.entities = JSON.parse(JSON.stringify(state.entities))\n if (!isEqual(state.attributes, model.attributes)) newData.attributes = JSON.parse(JSON.stringify(state.attributes))\n if (!isEqual(state.variables, model.variables)) newData.variables = JSON.parse(JSON.stringify(state.variables))\n return newData\n }\n\n const checkError = () => {\n if (0 < state.errors.length || ('survey' !== model.source && !state.entities.length) || !state.attributes.length) {\n return { error: true }\n }\n if (\n 'survey' !== model.source &&\n state.attributes.some(attr => attr.refs.split(',').length < state.entities.length)\n ) {\n return {\n error:\n 'For each attribute, please make sure there is a question number or subquestion number that corresponds to each entity.'\n }\n }\n if ('survey' === model.source && state.attributes.some(attr => attr.refs.split(',').length < 1)) {\n return {\n error: 'For each attribute, please make sure there is one question number or subquestion number.'\n }\n }\n return { error: false }\n }\n\n useEffect(() => {\n if (changed) return\n\n dispatch({\n type: 'RESET',\n data: { ...checkModel() }\n })\n\n setChanged(\n !isEqual(stateRef.current.entities, model.entities) ||\n !isEqual(stateRef.current.attributes, model.attributes) ||\n !isEqual(stateRef.current.variables, model.variables)\n )\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [model.entities, model.attributes, model.variables])\n\n useEffect(() => {\n setChanged(true)\n\n const newData = {\n refs: state.refs,\n ...checkError(),\n ...checkState()\n }\n\n timer.current && clearTimeout(timer.current)\n timer.current = setTimeout(() => {\n onChange(newData)\n\n setChanged(false)\n }, 300)\n\n return () => timer.current && clearTimeout(timer.current)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state])\n\n useEffect(() => {\n if (0 < data.controls.waves.options.length && !data.controls.waves.options.some(v => v.key == waveRef.current))\n onControlsChange('wave', data.controls.waves.options[data.controls.waves.options.length - 1].key)\n }, [data.controls.waves.options, onControlsChange])\n\n const dataContextValue = useMemo(() => {\n return {\n id: model.id,\n mode: model.mode,\n group: model.group,\n original: model.original,\n data,\n disabled,\n attributesOptions,\n dispatch\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [model.id, model.mode, model.group, model.original, data, disabled, attributesOptions, dispatch])\n\n return (\n <ComponentContainer\n Controls={Controls}\n Footer={Footer}\n model={model}\n data={data}\n states={states}\n state={state}\n prefix=\"Tracker\"\n command=\"insights.publishTrackerLab\"\n changed={changed}\n disabled={disabled}\n dataContextValue={dataContextValue}\n onControlsChange={onControlsChange}\n onUpdateData={onUpdateData}\n onInvalidKey={onInvalidKey}\n onPublish={onPublish}\n onPublished={onPublished}\n >\n {!disabled && 0 < data.controls.waves.options.length ? (\n <div className={`${style.row} ${style.controls} p-fluid p-col-12`}>\n <Dropdown\n className=\"p-dropdown-rounded p-field p-right p-col-4\"\n placeholder={data.controls.waves.placeholder}\n value={String(model.wave)}\n options={data.controls.waves.options}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n fixedDropdownDir=\"bottom\"\n onChange={event => onControlsChange('wave', Number(event.value))}\n />\n </div>\n ) : null}\n {'survey' === model.source ? (\n <>\n {showReset ? (\n <div className={`${style.row} ${style['row-header']} p-fluid p-col-12`}>\n <div className=\"p-field p-right p-col-8\">\n <span className={style.toggle} onClick={onReset}>\n reset\n </span>\n </div>\n </div>\n ) : null}\n <Attributes items={state.attributes} dimension={1} />\n </>\n ) : (\n <>\n <Sources\n source={model.source}\n data={data}\n entities={state.entities}\n disabled={disabled}\n dispatch={dispatch}\n />\n <Entities items={state.entities} imagesDisabled={true} onReset={onReset} />\n <Attributes items={state.attributes} dimension={state.entities.length} onModeChange={onModeChange} />\n </>\n )}\n <Variables items={state.variables} note=\"for filtering and data splits\" />\n </ComponentContainer>\n )\n}\n\nComponent.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n states: PropTypes.object,\n disabled: PropTypes.bool,\n onChange: PropTypes.func,\n onReset: PropTypes.func,\n onControlsChange: PropTypes.func,\n onModeChange: PropTypes.func,\n onUpdateData: PropTypes.func,\n onInvalidKey: PropTypes.func,\n onPublish: PropTypes.func,\n onPublished: PropTypes.func\n}\n\nComponent.displayName = 'Component'\n\nexport default Component\n","// lib\nimport React, { useReducer, useState, useRef, useMemo, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { isEqual } from 'lodash'\n\nimport { dataReducer } from '@aytm/app/stats/page/question-views/components/mapping/reducers'\n\n// components\nimport { default as ComponentContainer } from '@aytm/app/stats/page/question-views/components/mapping/Component'\n\nimport Entities from '@aytm/app/stats/page/question-views/components/mapping/Entities'\nimport Attributes from '@aytm/app/stats/page/question-views/components/mapping/Attributes'\n\nimport Controls from '@aytm/app/stats/page/question-views/components/mapping/Controls'\nimport Sources from '@aytm/app/stats/page/question-views/components/mapping/Sources'\nimport Footer from '@aytm/app/stats/page/question-views/components/component/Footer'\n\nconst Component = ({\n model,\n data,\n states,\n disabled,\n onChange,\n onReset,\n onFeaturesChange,\n onControlsChange,\n onModeChange,\n onUpdateData\n}) => {\n const [state, dispatch] = useReducer(dataReducer, {\n entities: JSON.parse(JSON.stringify(model.entities)),\n attributes: JSON.parse(JSON.stringify(model.attributes)),\n errors: []\n })\n\n const [changed, setChanged] = useState(false)\n\n const timer = useRef(null)\n\n const stateRef = useRef()\n stateRef.current = state\n\n const attributesOptions = useMemo(\n () =>\n data.options.attributes.map(attribute => {\n const option = {\n icon: attribute.icon,\n label: attribute.label,\n search: attribute.search\n }\n\n const refs = state.entities.map(entity => {\n const i = data.options.entities.findIndex(v => v.pattern == entity.pattern)\n return attribute.refs[i]\n })\n\n option.key = refs.join(', ')\n option.text = `<b>${option.label}</b><br/>${option.key}`\n\n return option\n }),\n [data.options.entities, data.options.attributes, state.entities]\n )\n\n const checkModel = () => {\n const newData = {}\n if (!isEqual(state.entities, model.entities)) {\n newData.errors ||= JSON.parse(JSON.stringify(state.errors))\n for (const i in state.entities) {\n const index = newData.errors.indexOf(`e${Number(i) + 1}`)\n 0 <= index && newData.errors.splice(index, 1)\n }\n newData.entities = JSON.parse(JSON.stringify(model.entities))\n }\n if (!isEqual(state.attributes, model.attributes)) {\n newData.errors ||= JSON.parse(JSON.stringify(state.errors))\n for (const i in state.attributes) {\n const index = newData.errors.indexOf(`a${Number(i) + 1}`)\n 0 <= index && newData.errors.splice(index, 1)\n }\n newData.attributes = JSON.parse(JSON.stringify(model.attributes))\n }\n return newData\n }\n const checkState = () => {\n const newData = {}\n if (!isEqual(state.entities, model.entities)) newData.entities = JSON.parse(JSON.stringify(state.entities))\n if (!isEqual(state.attributes, model.attributes)) newData.attributes = JSON.parse(JSON.stringify(state.attributes))\n return newData\n }\n\n const checkError = () => {\n if (0 < state.errors.length || ('custom' === model.source && !state.entities.length) || !state.attributes.length) {\n return { error: true }\n }\n if (\n 'custom' === model.source &&\n state.attributes.some(attr => attr.refs.split(',').length < state.entities.length)\n ) {\n return {\n error:\n 'For each attribute, please make sure there is a question number or subquestion number that corresponds to each entity.'\n }\n }\n if ('survey' === model.source && state.attributes.some(attr => attr.refs.split(',').length < 1)) {\n return {\n error: 'For each attribute, please make sure there is one question number or subquestion number.'\n }\n }\n return { error: false }\n }\n\n useEffect(() => {\n if (changed) return\n\n dispatch({\n type: 'RESET',\n data: { ...checkModel() }\n })\n\n setChanged(\n !isEqual(stateRef.current.entities, model.entities) || !isEqual(stateRef.current.attributes, model.attributes)\n )\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [model.entities, model.attributes])\n\n useEffect(() => {\n setChanged(true)\n\n const newData = {\n ...checkError(),\n ...checkState()\n }\n\n timer.current && clearTimeout(timer.current)\n timer.current = setTimeout(() => {\n onChange(newData)\n\n setChanged(false)\n }, 300)\n\n return () => timer.current && clearTimeout(timer.current)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state])\n\n const dataContextValue = useMemo(() => {\n return {\n id: model.id,\n mode: model.mode,\n group: model.group,\n original: model.original,\n data,\n disabled,\n attributesOptions,\n dispatch\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [model.id, model.mode, model.group, model.original, data, disabled, attributesOptions, dispatch])\n\n return (\n <ComponentContainer\n Controls={Controls}\n Footer={Footer}\n model={model}\n data={data}\n states={states}\n prefix=\"Tracker\"\n changed={changed}\n disabled={disabled}\n dataContextValue={dataContextValue}\n onFeaturesChange={onFeaturesChange}\n onControlsChange={onControlsChange}\n onUpdateData={onUpdateData}\n >\n {'survey' === model.source ? (\n <Attributes items={state.attributes} dimension={1} />\n ) : (\n <>\n <Sources\n source={model.source}\n data={data}\n entities={state.entities}\n disabled={disabled}\n dispatch={dispatch}\n />\n <Entities items={state.entities} imagesDisabled={true} onReset={onReset} />\n <Attributes items={state.attributes} dimension={state.entities.length} onModeChange={onModeChange} />\n </>\n )}\n </ComponentContainer>\n )\n}\n\nComponent.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n states: PropTypes.object,\n disabled: PropTypes.bool,\n onChange: PropTypes.func,\n onReset: PropTypes.func,\n onFeaturesChange: PropTypes.func,\n onControlsChange: PropTypes.func,\n onModeChange: PropTypes.func,\n onUpdateData: PropTypes.func\n}\n\nComponent.displayName = 'Component'\n\nexport default Component\n","// lib\nimport React, { useContext, useState, useRef, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\nimport ADND from '@aytm/lib/adnd/ADND'\nimport SchemaRules from '@aytm/app/stats/lib/schema-rules'\nimport { DataContext } from '@aytm/app/stats/page/question-views/vq/Component'\nimport { convertValuesToTree, convertTreeToValues } from '@aytm/app/stats/lib/converter'\n\nimport { generateUID, encodeText, decodeText } from '@aytm/app/stats/lib/helpers'\nimport { getLogicData, getRefs, getClustersRefs } from '@aytm/app/stats/lib/refs'\n\n// components\nimport { InputText } from 'primereact/inputtext'\nimport { Dropdown } from 'primereact/dropdown'\nimport { MultiSelect } from 'primereact/multiselect'\nimport { MultiStateMultiSelect } from 'primereact/multistatemultiselect'\n\nimport DropdownSlider from 'primereact-raytm-theme/DropdownSlider'\nimport MultiSelectHeader from 'primereact-raytm-theme/MultiSelectHeader'\nimport MultiSelectFooter from 'primereact-raytm-theme/MultiSelectFooter'\n\nimport TextPopup from '@aytm/lib/rfd-ui/components/basic/text-popup'\n\nimport AdvancedFilter from '@aytm/app/stats/page/components/AdvancedFilter'\nimport ModeToggle from '@aytm/app/stats/page/question-views/vq/ModeToggle'\nimport AnswerVariantOptions from '@aytm/app/stats/page/question-views/vq/AnswerVariantOptions'\n\nimport { itemTemplate, valueTemplate } from '@aytm/app/stats/page/question-views/components/lib/templates'\n\n// hooks\nimport { useSingleAndDoubleClick } from '@aytm/app/stats/page/question-views/components/lib/hooks/useSingleAndDoubleClick'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/vq/styles/Component.module.scss'\n\nconst AnswerVariant = ({ item, position, dndItemsList }) => {\n const { id, data, disabled, dispatch, dropdownsRef, parserResultPatternBasicsRef, basicFilters, parserResultEof } =\n useContext(DataContext)\n\n const [processing, setProcessing] = useState(false)\n\n const [baseMode, setBaseMode] = useState(false)\n\n const [basePattern, setBasePattern] = useState(item.base || '')\n\n const [selectedValue, setSelectedValue] = useState(null)\n const [selectedValues, setSelectedValues] = useState([])\n const [selectedOption, setSelectedOption] = useState(null)\n\n const [input, setInput] = useState('')\n\n const timer = useRef(null)\n\n const changedRef = useRef(false)\n\n const dndListItemRef = useRef()\n const dndListItemHandleRef = useRef()\n\n const callbackRef = useRef(null)\n\n const selectedOptionRef = useRef(null)\n selectedOptionRef.current = selectedOption\n\n const parserResultPattern = useMemo(\n () =>\n data.parser.analyzeString({\n id: id,\n filter: item.pattern.trim(),\n clusters: data.clusters,\n saveTokens: true\n }),\n [item.pattern, id, data.parser, data.clusters]\n )\n const parserResultPatternError = useMemo(\n () =>\n 0 < item.pattern.trim().length &&\n 0 < parserResultPattern.expression.status.errors.length &&\n parserResultPattern.expression.status.errors.some(v => !['ref', 'cluster'].includes(v.type)),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [parserResultPattern]\n )\n const parserResultPatternBasic = useMemo(() => {\n try {\n const tree = parserResultPatternError\n ? null\n : 0 < item.pattern.trim().length\n ? 0 < parserResultPattern.expression.status.errors.length\n ? null\n : basicFilters.convertToBasic(SchemaRules.flatten(parserResultPattern.expression.tree)) || null\n : {}\n return null === tree || 1 < Object.keys(tree).length ? null : tree\n } catch {\n return null\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [basicFilters, parserResultPattern, parserResultPatternError])\n\n const parserResultBase = useMemo(\n () =>\n data.parser.analyzeString({\n id: id,\n filter: basePattern,\n clusters: data.clusters,\n saveTokens: true,\n numberAllowed: true\n }),\n [id, data.parser, data.clusters, basePattern]\n )\n const parserResultBaseError = useMemo(\n () =>\n 0 < basePattern.length &&\n 0 < parserResultBase.expression.status.errors.length &&\n parserResultBase.expression.status.errors.some(v => !['ref', 'cluster'].includes(v.type)),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [parserResultBase]\n )\n\n const itemMode = useMemo(\n () =>\n 'advanced' == item.mode ||\n !data.options.some(group => 0 < group.items.length) ||\n disabled ||\n ((null === selectedOptionRef.current || 'inputtext' != selectedOptionRef.current.type) &&\n null === parserResultPatternBasic)\n ? 'advanced'\n : 'basic',\n [item.mode, data.options, disabled, parserResultPatternBasic]\n )\n\n const itemModeRef = useRef(null)\n itemModeRef.current = itemMode\n\n const textBase = useMemo(\n () =>\n (30 < item.base.length && 'Base: ' + item.base.slice(0, 27) + '...') ||\n (0 < item.base.length && 'Base: ' + item.base) ||\n 'Base',\n [item.base]\n )\n\n const fetchData = useCallback(() => {\n return {\n id,\n item,\n position: position - 1,\n windowUID: data.windowUID,\n remove: () =>\n dispatch({\n type: 'DELETE_ANSWER_VARIANT',\n data: position - 1\n })\n }\n }, [item, position, id, data.windowUID, dispatch])\n\n const onInputChange = event => setInput(event.target.value || '')\n\n const onInputPaste = event => {\n event.preventDefault()\n\n let text =\n (event.clipboardData || window.clipboardData).getData('Text') || event.clipboardData.getData('text/plain')\n text = text\n .replace(/(\\r\\n|\\n|\\r|\\t|\\v)/gm, ' ')\n .split(/\\s*,\\s*/)\n .flatMap(v => v.split(/\\s+/))\n .filter(v => 0 < v.trim().length)\n .join(', ')\n\n const el = event.currentTarget\n\n const start = el.selectionStart\n const end = el.selectionEnd\n\n const valueBefore = el.value.slice(0, start)\n const valueAfter = el.value.slice(end)\n const valueBeforeFormatted = valueBefore\n .trim()\n .split(/\\s*,\\s*/)\n .flatMap(v => v.split(/\\s+/))\n .filter(v => 0 < v.trim().length)\n .join(', ')\n const valueAfterFormatted = valueAfter\n .trim()\n .split(/\\s*,\\s*/)\n .flatMap(v => v.split(/\\s+/))\n .filter(v => 0 < v.trim().length)\n .join(', ')\n\n const l = text.length\n const p = start - (valueBefore.length - valueBeforeFormatted.length) + l + (0 < valueBeforeFormatted.length ? 2 : 0)\n\n text = `${valueBeforeFormatted}${0 < valueBeforeFormatted.length ? ', ' : ''}${text}${\n 0 < valueAfterFormatted.length ? ', ' : ''\n }${valueAfterFormatted}`\n\n setInput(text)\n\n callbackRef.current = () => {\n el.setSelectionRange(p, p)\n el.blur()\n el.focus()\n }\n }\n\n const onInputKeyPress = event => {\n const charCode = event.which == undefined ? event.keyCode : event.which\n const charString = String.fromCharCode(charCode)\n\n if ('inputtext' == selectedOption.type) {\n if (!/[\\d\\s,]/.test(charString)) event.preventDefault()\n\n const el = event.currentTarget\n\n const start = el.selectionStart\n const end = el.selectionEnd\n\n const valueBefore = el.value.slice(0, start)\n const valueAfter = el.value.slice(end)\n\n if ((/,/.test(charString) || /\\s/.test(charString)) && ',' !== valueBefore.trim().slice(-1)) {\n event.preventDefault()\n\n const text = `${valueBefore}, ${valueAfter}`\n\n setInput(text)\n\n callbackRef.current = () => {\n el.setSelectionRange(start + 2, start + 2)\n el.blur()\n el.focus()\n }\n }\n }\n }\n\n const dndListItem = ADND.targets.itemsList.listItem({\n type: item.other ? `dlq-answer-other-${id}-${data.windowUID}` : `dlq-answer-${data.windowUID}`,\n list: dndItemsList\n })\n const dndListItemHandle = ADND.sources\n .listItemHandle({\n type: item.other ? `dlq-answer-other-${id}-${data.windowUID}` : `dlq-answer-${data.windowUID}`,\n item: dndListItem,\n cloneable: true\n })\n .fetchData(fetchData)\n\n const labelTemplate = value =>\n 'sliderselect' == selectedOption.type ? (\n <span\n dangerouslySetInnerHTML={{\n __html: selectedOption.options[Math.min(Math.max(value, 1), selectedOption.options.length) - 1].text\n }}\n ></span>\n ) : (\n <span dangerouslySetInnerHTML={{ __html: selectedOption.options[value - 1].text }}></span>\n )\n\n const buttonLabelTemplate = event => {\n const text =\n 'sliderselect' == selectedOption.type\n ? `${selectedOption.options[Math.max(event.sliderProps.value[0], 1) - 1].text} – ${\n selectedOption.options[Math.min(event.sliderProps.value[1], selectedOption.options.length) - 1].text\n }`\n : 1 < selectedOption.options.length &&\n selectedOption.options.length == event.value.length &&\n ('multistatemultiselect' !== selectedOption.type || !event.value.some(item => !item.state))\n ? 'All'\n : 0 < event.value.length\n ? 1 == event.value.length && ('multistatemultiselect' !== selectedOption.type || event.value[0].state)\n ? selectedOption.options.find(\n o => o.key == ('multistatemultiselect' == selectedOption.type ? event.value[0].value : event.value[0])\n ).text\n : `Filtered to ${event.value.length}`\n : 'Select...'\n return <span dangerouslySetInnerHTML={{ __html: text }}></span>\n }\n\n const itemImageTemplate = option =>\n option ? (\n <>\n {option.src && <img width=\"23\" height=\"23\" src={option.src} alt=\"\" />}\n <span dangerouslySetInnerHTML={{ __html: option.text }}></span>\n </>\n ) : (\n <i className=\"icon-aytmfd-image\" />\n )\n const valueImageTemplate = option =>\n option && option.src ? <img width=\"23\" height=\"23\" src={option.src} alt=\"\" /> : <i className=\"icon-aytmfd-image\" />\n\n const onModeChange = (mode, applyToAll = false) => {\n if (applyToAll)\n dispatch({\n type: 'UPDATE_ANSWER_VARIANTS_MODE',\n data: {\n positions: Object.keys(parserResultPatternBasicsRef.current).filter(\n k => null !== parserResultPatternBasicsRef.current[k]\n ),\n mode: mode\n }\n })\n else\n dispatch({\n type: 'UPDATE_ANSWER_VARIANT',\n data: {\n item: {\n ...item,\n mode: mode || ('basic' === item.mode ? 'advanced' : 'basic')\n },\n position: position - 1\n }\n })\n }\n\n const onResetValues = () => {\n setInput('')\n\n setSelectedValue(null)\n setSelectedValues([])\n setSelectedOption(null)\n\n onModeChange('advanced')\n }\n\n const onSelectedChange = (value = null, _values) => {\n const group = data.options.find(v => v.items.some(v => v.key == value)) || null\n if (null !== group && group.disabled) return\n\n const option = group.items.find(v => v.key == value) || null\n if (null !== option && option.disabled) return\n\n const values = _values || (null !== option && 'sliderselect' == option.type ? [1, option.options.length] : [])\n\n if (null !== option && 'inputtext' != option.type) {\n values.sort((a, b) =>\n 'multistatemultiselect' == option.type\n ? option.options.findIndex(v => v.key == a.value) - option.options.findIndex(v => v.key == b.value)\n : 'sliderselect' == option.type\n ? a - b\n : option.options.findIndex(v => v.key == a) - option.options.findIndex(v => v.key == b)\n )\n }\n\n setSelectedValue(value)\n setSelectedValues(values)\n setSelectedOption(option)\n\n changedRef.current = true\n\n dispatch({\n type: 'UPDATE_ANSWER_VARIANT',\n data: {\n item: {\n ...item,\n pattern: null === option ? '' : basicFilters.convertToAdvanced(convertValuesToTree(option, value, values))\n },\n position: position - 1\n }\n })\n }\n\n const onPatternChange = value => {\n changedRef.current = true\n\n setProcessing(true)\n\n onResetValues()\n\n dispatch({\n type: 'UPDATE_ANSWER_VARIANT',\n data: {\n item: { ...item, pattern: value },\n position: position - 1\n }\n })\n }\n\n const onLabelChange = event => {\n dispatch({\n type: 'UPDATE_ANSWER_VARIANT',\n data: {\n item: {\n ...item,\n text: encodeText(event.target.value)\n },\n position: position - 1\n }\n })\n }\n\n const onBaseChange = value => {\n setBaseMode(false)\n setBasePattern(value)\n\n item.base != value &&\n dispatch({\n type: 'UPDATE_ANSWER_VARIANT',\n data: {\n item: {\n ...item,\n base: value\n },\n position: position - 1\n }\n })\n }\n\n const onImageChange = event => {\n if ('off' == event.value) delete item.image\n else item.image = event.value\n\n dispatch({\n type: 'UPDATE_ANSWER_VARIANT',\n data: {\n item: {\n ...item\n },\n position: position - 1\n }\n })\n }\n\n const onDeleteClick = () => {\n dispatch({\n type: 'DELETE_ANSWER_VARIANT',\n data: position - 1\n })\n }\n\n const onHandleClick = useSingleAndDoubleClick(null, () => {\n dispatch({\n type: 'ADD_ANSWER_VARIANT',\n data: {\n item: {\n ...item,\n key: generateUID()\n },\n position: position\n }\n })\n })\n\n const onChange = event =>\n 'sliderselect' == selectedOption.type\n ? onSelectedChange(selectedValue, [\n Math.max(event.value[0], 1),\n Math.min(event.value[1], selectedOption.options.length)\n ])\n : 'dropdown' == selectedOption.type\n ? onSelectedChange(selectedValue, [event.value])\n : onSelectedChange(selectedValue, event.value)\n\n useEffect(() => {\n null !== selectedOption && (dropdownsRef.current[position] = selectedOption.key)\n\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n delete dropdownsRef.current[position]\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [position, selectedOption]) // TODO\n\n useEffect(() => {\n const keys = Object.keys(parserResultPatternBasic || {})\n\n if (keys.length) {\n const option =\n data.options.flatMap(v => v.items).find(v => String(v.value || v.key).toLowerCase() == keys[0].toLowerCase()) ||\n null\n\n parserResultPatternBasicsRef.current[position] = null !== option ? parserResultPatternBasic : null\n } else parserResultPatternBasicsRef.current[position] = 0 < item.pattern.trim().length ? null : {}\n\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n delete parserResultPatternBasicsRef.current[position]\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [item.pattern, position, parserResultPatternBasic]) // TODO\n\n useEffect(() => {\n if (changedRef.current) {\n changedRef.current = false\n return\n }\n\n if (\n null !== selectedOptionRef.current &&\n 'inputtext' == selectedOptionRef.current.type &&\n 'basic' == itemModeRef.current\n ) {\n return\n }\n\n if (null === parserResultPatternBasic) {\n onResetValues()\n } else {\n const keys = Object.keys(parserResultPatternBasic || {})\n\n if (keys.length) {\n const option =\n data.options\n .flatMap(v => v.items)\n .find(v => String(v.value || v.key).toLowerCase() == keys[0].toLowerCase()) || null\n\n if (null === option) {\n onResetValues()\n } else {\n const tree = Object.values(parserResultPatternBasic)[0]\n\n const values = convertTreeToValues(option, tree)\n\n if ('inputtext' == option.type) {\n setInput(values.join(', '))\n } else {\n setInput('')\n\n values.sort((a, b) =>\n 'multistatemultiselect' == option.type\n ? option.options.findIndex(v => v.key == a.value) - option.options.findIndex(v => v.key == b.value)\n : 'sliderselect' == option.type\n ? a - b\n : option.options.findIndex(v => v.key == a) - option.options.findIndex(v => v.key == b)\n )\n }\n\n setSelectedValue(option.key)\n setSelectedValues(values)\n setSelectedOption(option)\n }\n }\n }\n\n setProcessing(false)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [parserResultPatternBasic])\n\n useEffect(() => {\n if (dndListItem) dndListItem.connect(dndListItemRef.current)\n\n return () => {\n if (dndListItem) dndListItem.disconnect()\n }\n }, [dndListItem])\n\n useEffect(() => {\n if (dndListItemHandle) dndListItemHandle.connect(dndListItemHandleRef.current)\n\n return () => {\n if (dndListItemHandle) dndListItemHandle.disconnect()\n }\n }, [dndListItemHandle])\n\n useEffect(() => {\n if (!changedRef.current || 'basic' == itemModeRef.current) {\n if (null === selectedOptionRef.current || 'inputtext' != selectedOptionRef.current.type) {\n callbackRef.current = null\n } else {\n if (null !== callbackRef.current && 'function' === typeof callbackRef.current) {\n callbackRef.current()\n callbackRef.current = null\n }\n\n timer.current && clearTimeout(timer.current)\n timer.current = setTimeout(() => {\n onSelectedChange(\n selectedValue,\n input.split(',').map(v => v.trim())\n )\n }, 300)\n }\n }\n\n return () => timer.current && clearTimeout(timer.current)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [input])\n\n useEffect(() => {\n dispatch({\n type: 'UPDATE_LOGIC_DATA',\n data: {\n id: `a${position}.pattern`,\n logicData: getLogicData(data.tags, data.codeBooks, parserResultPattern, parserResultPatternError)\n }\n })\n\n return () => {\n dispatch({\n type: 'UPDATE_LOGIC_DATA',\n data: {\n id: `a${position}.pattern`,\n logicData: null\n }\n })\n }\n }, [position, data.tags, data.codeBooks, dispatch, parserResultPattern, parserResultPatternError])\n useEffect(() => {\n dispatch({\n type: 'UPDATE_LOGIC_DATA',\n data: {\n id: `a${position}.base`,\n logicData: getLogicData(data.tags, data.codeBooks, data.codeBooks, parserResultBase, parserResultBaseError)\n }\n })\n\n return () => {\n dispatch({\n type: 'UPDATE_LOGIC_DATA',\n data: {\n id: `a${position}.base`,\n logicData: null\n }\n })\n }\n }, [position, data.tags, data.codeBooks, dispatch, parserResultBase, parserResultBaseError])\n useEffect(() => {\n const patternRefs = getRefs(parserResultPattern)\n const baseRefs = getRefs(parserResultBase)\n const clustersRefs = getClustersRefs(data.modelClusters, parserResultPattern).concat(\n getClustersRefs(data.modelClusters, parserResultBase)\n )\n\n dispatch({\n type: 'UPDATE_REFS',\n data: {\n id: `a${position}`,\n refs: [patternRefs, baseRefs, clustersRefs]\n }\n })\n\n return () => {\n dispatch({\n type: 'UPDATE_REFS',\n data: {\n id: `a${position}`,\n refs: null\n }\n })\n }\n }, [position, data.modelClusters, dispatch, parserResultPattern, parserResultBase])\n useEffect(() => {\n dispatch({\n type: 'UPDATE_ERRORS',\n data: {\n id: `a${position}`,\n error: item.other ? false : !item.pattern.trim().length || parserResultPatternError || parserResultBaseError\n }\n })\n\n return () => {\n dispatch({\n type: 'UPDATE_ERRORS',\n data: {\n id: `a${position}`,\n error: null\n }\n })\n }\n }, [item, position, dispatch, parserResultPatternError, parserResultBaseError])\n\n useEffect(\n () =>\n null !== selectedValue &&\n setSelectedOption(data.options.flatMap(v => v.items).find(v => v.key == selectedValue) || null),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [data.options]\n )\n\n useEffect(\n () => item.mode !== itemModeRef.current && onModeChange(itemModeRef.current),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [item.mode]\n )\n\n const renderValues = () => {\n if (null === selectedOption || 'none' == selectedOption.type) {\n return <MultiSelect className=\"p-composite\" placeholder=\"Select...\" disabled={true} />\n } else {\n switch (selectedOption.type) {\n case 'multistatemultiselect':\n return (\n <MultiStateMultiSelect\n className=\"p-composite\"\n placeholder=\"Select...\"\n value={selectedValues}\n options={selectedOption.options}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n buttonLabelTemplate={buttonLabelTemplate}\n panelHeaderTemplate={MultiSelectHeader}\n panelFooterTemplate={MultiSelectFooter}\n filter={true}\n filterBy={'search,text'}\n filterPlaceholder=\"Search items\"\n resetFilterOnHide={true}\n fixedDropdownDir=\"bottom\"\n disabled={disabled}\n onChange={disabled ? null : onChange}\n />\n )\n case 'sliderselect': {\n return (\n <DropdownSlider\n dropdownClassName=\"p-composite\"\n range\n min={1}\n max={selectedOption.options.length}\n value={selectedValues}\n labelTemplate={labelTemplate}\n buttonLabelTemplate={buttonLabelTemplate}\n // fixedDropdownDir=\"bottom\"\n onChange={disabled ? null : onChange}\n />\n )\n }\n case 'multiselect': {\n return (\n <MultiSelect\n className=\"p-composite\"\n placeholder=\"Select...\"\n value={selectedValues}\n options={selectedOption.options}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n buttonLabelTemplate={buttonLabelTemplate}\n panelHeaderTemplate={MultiSelectHeader}\n panelFooterTemplate={MultiSelectFooter}\n filter={true}\n filterBy={'search,text'}\n filterPlaceholder=\"Search items\"\n resetFilterOnHide={true}\n fixedDropdownDir=\"bottom\"\n disabled={disabled}\n onChange={disabled ? null : onChange}\n />\n )\n }\n case 'dropdown': {\n return (\n <Dropdown\n className=\"p-composite\"\n placeholder=\"Select...\"\n value={selectedValues[0]}\n options={selectedOption.options}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n filter={true}\n filterBy={'search,text'}\n filterPlaceholder=\"Search items\"\n resetFilterOnHide={true}\n filterInputAutoFocus={false}\n fixedDropdownDir=\"bottom\"\n disabled={disabled}\n onChange={disabled ? null : onChange}\n />\n )\n }\n case 'inputtext': {\n return (\n <InputText\n className=\"p-composite\"\n placeholder=\"\"\n value={input}\n disabled={disabled}\n onChange={disabled ? null : onInputChange}\n onPaste={disabled ? null : onInputPaste}\n onKeyPress={disabled ? null : onInputKeyPress}\n />\n )\n }\n default: {\n return (\n <MultiSelect className=\"p-composite\" placeholder=\"Select...\" fixedDropdownDir=\"bottom\" disabled={true} />\n )\n }\n }\n }\n }\n const renderOptions = () => (\n <AnswerVariantOptions\n position={position}\n value={selectedValue}\n options={data.options}\n dropdownsRef={dropdownsRef}\n onSelectedChange={onSelectedChange}\n />\n )\n\n const renderBaseMode = () => (\n <>\n <div className={`${style.base} p-field p-col-12`}>\n <AdvancedFilter\n className=\"p-component p-inputtext\"\n locale={data.locale}\n surveySchema={data.surveySchema}\n parserResultEof={parserResultEof}\n parserResultPattern={parserResultBase || parserResultEof}\n hintPosition=\"top\"\n pattern={basePattern}\n prefix=\"base = \"\n readOnly={disabled}\n onChange={disabled ? null : value => setBasePattern(value)}\n />\n </div>\n <span className={style.clear} onClick={disabled ? null : () => onBaseChange('')} title=\"Clear\">\n <i className=\"icon-aytmfd-delete\"></i>\n </span>\n <span\n className={style.apply}\n onClick={disabled || parserResultBaseError ? null : () => onBaseChange(basePattern.trim())}\n title=\"Apply\"\n >\n <i className=\"icon-aytmfd-checkmark\"></i>\n </span>\n </>\n )\n const renderLabelMode = () => (\n <>\n {item.other || (disabled && !item.base.length) ? null : (\n <span\n className={`${style['group-toggle']}${disabled ? ' ' + style['group-toggle-disabled'] : ''}`}\n onClick={disabled ? null : () => setBaseMode(true)}\n >\n {30 < item.base.length ? (\n <TextPopup portal={true} text={textBase} content={item.base} direction=\"bottomright\" />\n ) : (\n textBase\n )}\n </span>\n )}\n <div className={`${style.images} p-field p-col-12`}>\n <InputText\n placeholder=\"Please type a label...\"\n value={decodeText(item.text)}\n maxLength=\"120\"\n disabled={disabled}\n onChange={disabled ? null : onLabelChange}\n />\n </div>\n <Dropdown\n className=\"p-dropdown-icon p-dropdown-right\"\n placeholder=\"\"\n value={item.image || ''}\n options={data.images}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemImageTemplate}\n valueTemplate={valueImageTemplate}\n fixedDropdownDir=\"bottom\"\n disabled={disabled}\n onChange={disabled ? null : onImageChange}\n />\n </>\n )\n const renderModes = () => (baseMode ? renderBaseMode() : renderLabelMode())\n\n return (\n <div ref={dndListItemRef} className={`${style.row} ${style['row-av']} p-fluid p-col-12`}>\n {disabled ? null : (\n <span className={style.delete} onClick={onDeleteClick}>\n <i className=\"icon-aytmfd-delete\"></i>\n </span>\n )}\n <div className={`${style.index} p-field`}>A{position}.</div>\n <div\n className={`${style.group} ${style['group-av']}${\n disabled ? ' ' + style['group-av-disabled'] : ''\n } p-fluid p-field p-col`}\n >\n <div className={`${style.group} p-fluid p-field p-col-8`}>\n {item.other ? (\n <div className=\"p-field p-col-12\">\n <span className=\"p-component p-label\">Everyone else</span>\n </div>\n ) : (\n <>\n <ModeToggle\n mode={itemMode}\n processing={processing}\n toggleDisabled={null === parserResultPatternBasic}\n onModeChange={onModeChange}\n />\n {'advanced' == itemMode ? (\n <div className=\"p-field p-col-12\">\n <AdvancedFilter\n className=\"p-component p-inputtext\"\n locale={data.locale}\n surveySchema={data.surveySchema}\n parserResultEof={parserResultEof}\n parserResultPattern={parserResultPattern || parserResultEof}\n hintPosition=\"top\"\n pattern={item.pattern}\n disabled={disabled}\n onChange={disabled ? null : onPatternChange}\n />\n </div>\n ) : (\n <>\n <div className=\"p-field p-col-6\">{renderOptions()}</div>\n <div className=\"p-field p-col-6\">{renderValues()}</div>\n </>\n )}\n </>\n )}\n </div>\n <div className={`${style.group} p-fluid p-field p-col`}>{renderModes()}</div>\n </div>\n {disabled ? null : (\n <div className=\"p-field\">\n <span ref={dndListItemHandleRef} className={style.handle} onClick={item.other ? null : onHandleClick}>\n <i className=\"icon-aytmfd-handle\"></i>\n </span>\n </div>\n )}\n </div>\n )\n}\n\nAnswerVariant.propTypes = {\n item: PropTypes.object,\n position: PropTypes.number,\n dndItemsList: PropTypes.any\n}\n\nAnswerVariant.displayName = 'AnswerVariant'\n\nexport default AnswerVariant\n","// lib\nimport React, { useContext, useState, useRef, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\nimport ADND from '@aytm/lib/adnd/ADND'\nimport { DataContext } from '@aytm/app/stats/page/question-views/vq/Component'\n\nimport { generateUID, encodeText, decodeText } from '@aytm/app/stats/lib/helpers'\nimport { getLogicData, getRefs, getClustersRefs } from '@aytm/app/stats/lib/refs'\n\n// components\nimport { InputText } from 'primereact/inputtext'\nimport { Dropdown } from 'primereact/dropdown'\n\nimport TextPopup from '@aytm/lib/rfd-ui/components/basic/text-popup'\n\nimport AdvancedFilter from '@aytm/app/stats/page/components/AdvancedFilter'\nimport AnswerVariantOptions from '@aytm/app/stats/page/question-views/vq/AnswerVariantOptions'\n\n// hooks\nimport { useSingleAndDoubleClick } from '@aytm/app/stats/page/question-views/components/lib/hooks/useSingleAndDoubleClick'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/vq/styles/Component.module.scss'\n\nconst AnswerVariantMX = ({ item, position, dndItemsList }) => {\n const { id, data, disabled, dispatch, dropdownsRef, parserResultEof } = useContext(DataContext)\n\n const [baseMode, setBaseMode] = useState(false)\n\n const [basePattern, setBasePattern] = useState(item.base || '')\n\n const [selectedValue, setSelectedValue] = useState(null)\n\n const changedRef = useRef(false)\n\n const itemPatternRef = useRef(null)\n itemPatternRef.current = item.pattern\n\n const dndListItemRef = useRef()\n const dndListItemHandleRef = useRef()\n\n const parserResultPattern = useMemo(\n () =>\n data.parser.analyzeString({\n id: id,\n filter: item.pattern.trim(),\n clusters: data.clusters,\n saveTokens: true\n }),\n [item.pattern, id, data.parser, data.clusters]\n )\n const parserResultPatternError = useMemo(\n () => 0 < item.pattern.trim().length && 0 < parserResultPattern.expression.status.errors.length,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [parserResultPattern]\n )\n const parserResultPatternBasic = useMemo(() => {\n const tree = parserResultPatternError\n ? null\n : 0 < item.pattern.trim().length\n ? 0 < parserResultPattern.expression.status.errors.length\n ? null\n : { [item.pattern]: { x: true } }\n : {}\n return null === tree || 1 < Object.keys(tree).length ? null : tree\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [parserResultPattern, parserResultPatternError])\n\n const parserResultBase = useMemo(\n () =>\n data.parser.analyzeString({\n id: id,\n filter: basePattern,\n clusters: data.clusters,\n saveTokens: true,\n numberAllowed: true\n }),\n [id, data.parser, data.clusters, basePattern]\n )\n const parserResultBaseError = useMemo(\n () =>\n 0 < basePattern.length &&\n 0 < parserResultBase.expression.status.errors.length &&\n parserResultBase.expression.status.errors.some(v => !['ref', 'cluster'].includes(v.type)),\n [basePattern, parserResultBase]\n )\n\n const textBase = useMemo(\n () =>\n (30 < item.base.length && 'Base: ' + item.base.slice(0, 27) + '...') ||\n (0 < item.base.length && 'Base: ' + item.base) ||\n 'Base',\n [item.base]\n )\n\n const fetchData = useCallback(() => {\n return {\n id,\n item,\n position: position - 1,\n windowUID: data.windowUID,\n remove: () =>\n dispatch({\n type: 'DELETE_ANSWER_VARIANT',\n data: position - 1\n })\n }\n }, [item, position, id, data.windowUID, dispatch])\n\n const dndListItem = ADND.targets.itemsList.listItem({\n type: `dlq-answer-${data.windowUID}`,\n list: dndItemsList\n })\n const dndListItemHandle = ADND.sources\n .listItemHandle({\n type: `dlq-answer-${data.windowUID}`,\n item: dndListItem,\n cloneable: true\n })\n .fetchData(fetchData)\n\n const itemImageTemplate = option =>\n option ? (\n <>\n {option.src && <img width=\"23\" height=\"23\" src={option.src} alt=\"\" />}\n <span dangerouslySetInnerHTML={{ __html: option.text }}></span>\n </>\n ) : (\n <i className=\"icon-aytmfd-image\" />\n )\n const valueImageTemplate = option =>\n option && option.src ? <img width=\"23\" height=\"23\" src={option.src} alt=\"\" /> : <i className=\"icon-aytmfd-image\" />\n\n const onSelectedChange = (value = null, _values) => {\n const group = data.options.find(v => v.items.some(v => v.key == value))\n if (group.disabled) return\n\n const option = group.items.find(v => v.key == value) || null\n\n setSelectedValue(value)\n setBasePattern(value)\n\n setBaseMode(false)\n setBasePattern(value)\n\n changedRef.current = true\n\n dispatch({\n type: 'UPDATE_ANSWER_VARIANT',\n data: {\n item: {\n ...item,\n pattern: null === option ? '' : value,\n base: null === option ? '' : value\n },\n position: position - 1\n }\n })\n }\n\n const onLabelChange = event => {\n dispatch({\n type: 'UPDATE_ANSWER_VARIANT',\n data: {\n item: {\n ...item,\n text: encodeText(event.target.value)\n },\n position: position - 1\n }\n })\n }\n\n const onBaseChange = value => {\n setBaseMode(false)\n setBasePattern(value)\n\n item.base != value &&\n dispatch({\n type: 'UPDATE_ANSWER_VARIANT',\n data: {\n item: {\n ...item,\n base: value\n },\n position: position - 1\n }\n })\n }\n\n const onImageChange = event => {\n if ('off' == event.value) delete item.image\n else item.image = event.value\n\n dispatch({\n type: 'UPDATE_ANSWER_VARIANT',\n data: {\n item: {\n ...item\n },\n position: position - 1\n }\n })\n }\n\n const onDeleteClick = () => {\n dispatch({\n type: 'DELETE_ANSWER_VARIANT',\n data: position - 1\n })\n }\n\n const onHandleClick = useSingleAndDoubleClick(null, () => {\n dispatch({\n type: 'ADD_ANSWER_VARIANT',\n data: {\n item: {\n ...item,\n key: generateUID()\n },\n position: position\n }\n })\n })\n\n useEffect(() => {\n dropdownsRef.current[position] = selectedValue\n\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n delete dropdownsRef.current[position]\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [position, selectedValue]) // TODO\n\n useEffect(() => {\n if (changedRef.current) {\n changedRef.current = false\n return\n }\n\n const option =\n data.options\n .flatMap(v => v.items)\n .find(v => String(v.value || v.key).toLowerCase() == itemPatternRef.current.toLowerCase()) || null\n\n if (null === option) {\n setSelectedValue(null)\n } else {\n setSelectedValue(option.key)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [parserResultPatternBasic])\n\n useEffect(() => {\n if (dndListItem) dndListItem.connect(dndListItemRef.current)\n\n return () => {\n if (dndListItem) dndListItem.disconnect()\n }\n }, [dndListItem])\n\n useEffect(() => {\n if (dndListItemHandle) dndListItemHandle.connect(dndListItemHandleRef.current)\n\n return () => {\n if (dndListItemHandle) dndListItemHandle.disconnect()\n }\n }, [dndListItemHandle])\n\n useEffect(() => {\n dispatch({\n type: 'UPDATE_LOGIC_DATA',\n data: {\n id: `a${position}.pattern`,\n logicData: getLogicData(data.tags, data.codeBooks, parserResultPattern, parserResultPatternError)\n }\n })\n\n return () => {\n dispatch({\n type: 'UPDATE_LOGIC_DATA',\n data: {\n id: `a${position}.pattern`,\n logicData: null\n }\n })\n }\n }, [position, data.tags, data.codeBooks, dispatch, parserResultPattern, parserResultPatternError])\n useEffect(() => {\n dispatch({\n type: 'UPDATE_LOGIC_DATA',\n data: {\n id: `a${position}.base`,\n logicData: getLogicData(data.tags, data.codeBooks, parserResultBase, parserResultBaseError)\n }\n })\n\n return () => {\n dispatch({\n type: 'UPDATE_LOGIC_DATA',\n data: {\n id: `a${position}.base`,\n logicData: null\n }\n })\n }\n }, [position, data.tags, data.codeBooks, dispatch, parserResultBase, parserResultBaseError])\n useEffect(() => {\n const patternRefs = getRefs(parserResultPattern)\n const baseRefs = getRefs(parserResultBase)\n const clustersRefs = getClustersRefs(data.modelClusters, parserResultPattern).concat(\n getClustersRefs(data.modelClusters, parserResultBase)\n )\n\n dispatch({\n type: 'UPDATE_REFS',\n data: {\n id: `a${position}`,\n refs: [patternRefs, baseRefs, clustersRefs]\n }\n })\n\n return () => {\n dispatch({\n type: 'UPDATE_REFS',\n data: {\n id: `a${position}`,\n refs: null\n }\n })\n }\n }, [position, data.modelClusters, dispatch, parserResultPattern, parserResultBase])\n useEffect(() => {\n dispatch({\n type: 'UPDATE_ERRORS',\n data: {\n id: `a${position}`,\n error: !item.pattern.trim().length || parserResultPatternError || parserResultBaseError\n }\n })\n\n return () => {\n dispatch({\n type: 'UPDATE_ERRORS',\n data: {\n id: `a${position}`,\n error: null\n }\n })\n }\n }, [item, position, dispatch, parserResultPatternError, parserResultBaseError])\n\n const renderOptions = () => (\n <AnswerVariantOptions\n position={position}\n value={selectedValue}\n options={data.options}\n dropdownsRef={dropdownsRef}\n onSelectedChange={onSelectedChange}\n />\n )\n\n const renderBaseMode = () => (\n <>\n <div className={`${style.base} p-field p-col-12`}>\n <AdvancedFilter\n className=\"p-component p-inputtext\"\n locale={data.locale}\n surveySchema={data.surveySchema}\n parserResultEof={parserResultEof}\n parserResultPattern={parserResultBase || parserResultEof}\n hintPosition=\"top\"\n pattern={basePattern}\n prefix=\"base = \"\n readOnly={disabled}\n onChange={disabled ? null : value => setBasePattern(value)}\n />\n </div>\n <span className={style.clear} onClick={disabled ? null : () => onBaseChange('')} title=\"Clear\">\n <i className=\"icon-aytmfd-delete\"></i>\n </span>\n <span\n className={style.apply}\n onClick={disabled || parserResultBaseError ? null : () => onBaseChange(basePattern.trim())}\n title=\"Apply\"\n >\n <i className=\"icon-aytmfd-checkmark\"></i>\n </span>\n </>\n )\n const renderLabelMode = () => (\n <>\n {disabled && !item.base.length ? null : (\n <span\n className={`${style['group-toggle']}${disabled ? ' ' + style['group-toggle-disabled'] : ''}`}\n onClick={disabled ? null : () => setBaseMode(true)}\n >\n {30 < item.base.length ? (\n <TextPopup portal={true} text={textBase} content={item.base} direction=\"bottomright\" />\n ) : (\n textBase\n )}\n </span>\n )}\n <div className={`${style.images} p-field p-col-12`}>\n <InputText\n placeholder=\"Please type a label...\"\n value={decodeText(item.text)}\n maxLength=\"120\"\n disabled={disabled}\n onChange={disabled ? null : onLabelChange}\n />\n </div>\n <Dropdown\n className=\"p-dropdown-icon p-dropdown-right\"\n placeholder=\"\"\n value={item.image || ''}\n options={data.images}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemImageTemplate}\n valueTemplate={valueImageTemplate}\n fixedDropdownDir=\"bottom\"\n disabled={disabled}\n onChange={disabled ? null : onImageChange}\n />\n </>\n )\n const renderModes = () => (baseMode ? renderBaseMode() : renderLabelMode())\n\n return (\n <div ref={dndListItemRef} className={`${style.row} ${style['row-av']} p-fluid p-col-12`}>\n {disabled ? null : (\n <span className={style.delete} onClick={onDeleteClick}>\n <i className=\"icon-aytmfd-delete\"></i>\n </span>\n )}\n <div className={`${style.index} p-field`}>SQ{position}.</div>\n <div\n className={`${style.group} ${style['group-av']}${\n disabled ? ' ' + style['group-av-disabled'] : ''\n } p-fluid p-field p-col`}\n >\n <>\n <div className=\"p-fluid p-field p-col-4\">{renderOptions()}</div>\n <div className={`${style.group} p-fluid p-field p-col`}>{renderModes()}</div>\n </>\n </div>\n {disabled ? null : (\n <div className=\"p-field\">\n <span ref={dndListItemHandleRef} className={style.handle} onClick={onHandleClick}>\n <i className=\"icon-aytmfd-handle\"></i>\n </span>\n </div>\n )}\n </div>\n )\n}\n\nAnswerVariantMX.propTypes = {\n item: PropTypes.object,\n position: PropTypes.number,\n dndItemsList: PropTypes.any\n}\n\nAnswerVariantMX.displayName = 'AnswerVariantMX'\n\nexport default AnswerVariantMX\n","// lib\nimport React, { useContext, useState, useRef, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\nimport ADND from '@aytm/lib/adnd/ADND'\nimport SchemaRules from '@aytm/app/stats/lib/schema-rules'\nimport { DataContext } from '@aytm/app/stats/page/question-views/vq/Component'\nimport { convertValuesToTree, convertTreeToValues } from '@aytm/app/stats/lib/converter'\n\nimport { generateUID } from '@aytm/app/stats/lib/helpers'\nimport { getLogicData, getRefs, getClustersRefs } from '@aytm/app/stats/lib/refs'\n\n// components\nimport { Dropdown } from 'primereact/dropdown'\nimport { MultiSelect } from 'primereact/multiselect'\nimport { MultiStateMultiSelect } from 'primereact/multistatemultiselect'\n\nimport MultiSelectHeader from 'primereact-raytm-theme/MultiSelectHeader'\nimport MultiSelectFooter from 'primereact-raytm-theme/MultiSelectFooter'\n\nimport AdvancedFilter from '@aytm/app/stats/page/components/AdvancedFilter'\nimport ModeToggle from '@aytm/app/stats/page/question-views/vq/ModeToggle'\nimport AnswerVariantOptions from '@aytm/app/stats/page/question-views/vq/AnswerVariantOptions'\n\nimport { itemTemplate, valueTemplate } from '@aytm/app/stats/page/question-views/components/lib/templates'\n\n// hooks\nimport { useSingleAndDoubleClick } from '@aytm/app/stats/page/question-views/components/lib/hooks/useSingleAndDoubleClick'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/vq/styles/Component.module.scss'\n\nconst AnswerVariantOEX = ({ item, position, dndItemsList }) => {\n const { id, data, disabled, dispatch, dropdownsRef, parserResultPatternBasicsRef, basicFilters, parserResultEof } =\n useContext(DataContext)\n\n const [processing, setProcessing] = useState(false)\n\n const [selectedValue, setSelectedValue] = useState(null)\n const [selectedValues, setSelectedValues] = useState([])\n const [selectedOption, setSelectedOption] = useState(null)\n\n const changedRef = useRef(false)\n\n const dndListItemRef = useRef()\n const dndListItemHandleRef = useRef()\n\n const itemMode = useMemo(\n () =>\n 'advanced' == item.mode || !data.options.some(group => 0 < group.items.length) || disabled ? 'advanced' : 'basic',\n [item.mode, data.options, disabled]\n )\n\n const itemModeRef = useRef(null)\n itemModeRef.current = itemMode\n\n const parserResultPattern = useMemo(\n () =>\n data.parser.analyzeString({\n id: id,\n filter: item.pattern.trim(),\n clusters: data.clusters,\n saveTokens: true\n }),\n [item.pattern, id, data.parser, data.clusters]\n )\n const parserResultPatternError = useMemo(\n () =>\n 0 < item.pattern.trim().length &&\n 0 < parserResultPattern.expression.status.errors.length &&\n parserResultPattern.expression.status.errors.some(v => !['ref', 'cluster'].includes(v.type)),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [parserResultPattern]\n )\n const parserResultPatternBasic = useMemo(() => {\n try {\n const tree = parserResultPatternError\n ? null\n : 0 < item.pattern.trim().length\n ? 0 < parserResultPattern.expression.status.errors.length\n ? null\n : basicFilters.convertToBasic(SchemaRules.flatten(parserResultPattern.expression.tree)) || null\n : {}\n return null === tree || 1 < Object.keys(tree).length ? null : tree\n } catch {\n return null\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [basicFilters, parserResultPattern, parserResultPatternError])\n\n const fetchData = useCallback(() => {\n return {\n id,\n item,\n position: position - 1,\n windowUID: data.windowUID,\n remove: () =>\n dispatch({\n type: 'DELETE_ANSWER_VARIANT',\n data: position - 1\n })\n }\n }, [item, position, id, data.windowUID, dispatch])\n\n const dndListItem = ADND.targets.itemsList.listItem({\n type: `dlq-answer-${data.windowUID}`,\n list: dndItemsList\n })\n const dndListItemHandle = ADND.sources\n .listItemHandle({\n type: `dlq-answer-${data.windowUID}`,\n item: dndListItem,\n cloneable: true\n })\n .fetchData(fetchData)\n\n const buttonLabelTemplate = event => {\n const text =\n 1 < selectedOption.options.length &&\n selectedOption.options.length == event.value.length &&\n ('multistatemultiselect' !== selectedOption.type || !event.value.some(item => !item.state))\n ? 'All'\n : 0 < event.value.length\n ? 1 == event.value.length && ('multistatemultiselect' !== selectedOption.type || event.value[0].state)\n ? selectedOption.options.find(\n o => o.key == ('multistatemultiselect' == selectedOption.type ? event.value[0].value : event.value[0])\n ).text\n : `Filtered to ${event.value.length}`\n : 'Select...'\n return <span dangerouslySetInnerHTML={{ __html: text }}></span>\n }\n\n const onModeChange = (mode, applyToAll = false) => {\n if (applyToAll)\n dispatch({\n type: 'UPDATE_ANSWER_VARIANTS_MODE',\n data: {\n positions: Object.keys(parserResultPatternBasicsRef.current).filter(\n k => null !== parserResultPatternBasicsRef.current[k]\n ),\n mode: mode\n }\n })\n else\n dispatch({\n type: 'UPDATE_ANSWER_VARIANT',\n data: {\n item: {\n ...item,\n mode: mode || ('basic' === item.mode ? 'advanced' : 'basic')\n },\n position: position - 1\n }\n })\n }\n\n const onResetValues = () => {\n setSelectedValue(null)\n setSelectedValues([])\n setSelectedOption(null)\n\n onModeChange('advanced')\n }\n\n const onSelectedChange = (value = null, _values) => {\n const group = data.options.find(v => v.items.some(v => v.key == value)) || null\n if (null !== group && group.disabled) return\n\n const option = group.items.find(v => v.key == value) || null\n if (null !== option && option.disabled) return\n\n const values = _values || []\n values.sort((a, b) =>\n 'multistatemultiselect' == option.type\n ? option.options.findIndex(v => v.key == a.value) - option.options.findIndex(v => v.key == b.value)\n : option.options.findIndex(v => v.key == a) - option.options.findIndex(v => v.key == b)\n )\n\n setSelectedValue(value)\n setSelectedValues(values)\n setSelectedOption(option)\n\n changedRef.current = true\n\n dispatch({\n type: 'UPDATE_ANSWER_VARIANT',\n data: {\n item: {\n ...item,\n pattern: null === option ? '' : basicFilters.convertToAdvanced(convertValuesToTree(option, value, values))\n },\n position: position - 1\n }\n })\n }\n\n const onPatternChange = value => {\n changedRef.current = true\n\n setProcessing(true)\n\n onResetValues()\n\n dispatch({\n type: 'UPDATE_ANSWER_VARIANT',\n data: {\n item: { ...item, pattern: value },\n position: position - 1\n }\n })\n }\n\n const onDeleteClick = () => {\n dispatch({\n type: 'DELETE_ANSWER_VARIANT',\n data: position - 1,\n variant: 'oex'\n })\n }\n\n const onHandleClick = useSingleAndDoubleClick(null, () => {\n dispatch({\n type: 'ADD_ANSWER_VARIANT',\n data: {\n item: {\n ...item,\n key: generateUID()\n },\n position: position\n }\n })\n })\n\n const onChange = event =>\n 'dropdown' == selectedOption.type\n ? onSelectedChange(selectedValue, [event.value])\n : onSelectedChange(selectedValue, event.value)\n\n useEffect(() => {\n null !== selectedOption && (dropdownsRef.current[position] = selectedOption.key)\n\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n delete dropdownsRef.current[position]\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [position, selectedOption]) // TODO\n\n useEffect(() => {\n const keys = Object.keys(parserResultPatternBasic || {})\n\n if (keys.length) {\n const option =\n data.options.flatMap(v => v.items).find(v => (v.value || v.key).toLowerCase() == keys[0].toLowerCase()) || null\n\n parserResultPatternBasicsRef.current[position] = null !== option ? parserResultPatternBasic : null\n } else parserResultPatternBasicsRef.current[position] = 0 < item.pattern.trim().length ? null : {}\n\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n delete parserResultPatternBasicsRef.current[position]\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [item.pattern, position, parserResultPatternBasic]) // TODO\n\n useEffect(() => {\n if (changedRef.current) {\n changedRef.current = false\n return\n }\n\n if (null === parserResultPatternBasic) {\n onResetValues()\n } else {\n const keys = Object.keys(parserResultPatternBasic || {})\n\n if (keys.length) {\n const option =\n data.options.flatMap(v => v.items).find(v => (v.value || v.key).toLowerCase() == keys[0].toLowerCase()) ||\n null\n\n if (null === option) {\n onResetValues()\n } else {\n const tree = Object.values(parserResultPatternBasic)[0]\n\n const values = convertTreeToValues(option, tree)\n\n values.sort((a, b) =>\n 'multistatemultiselect' == option.type\n ? option.options.findIndex(v => v.key == a.value) - option.options.findIndex(v => v.key == b.value)\n : option.options.findIndex(v => v.key == a) - option.options.findIndex(v => v.key == b)\n )\n\n setSelectedValue(option.key)\n setSelectedValues(values)\n setSelectedOption(option)\n }\n }\n }\n\n setProcessing(false)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [parserResultPatternBasic])\n\n useEffect(() => {\n if (dndListItem) dndListItem.connect(dndListItemRef.current)\n\n return () => {\n if (dndListItem) dndListItem.disconnect()\n }\n }, [dndListItem])\n\n useEffect(() => {\n if (dndListItemHandle) dndListItemHandle.connect(dndListItemHandleRef.current)\n\n return () => {\n if (dndListItemHandle) dndListItemHandle.disconnect()\n }\n }, [dndListItemHandle])\n\n useEffect(() => {\n dispatch({\n type: 'UPDATE_LOGIC_DATA',\n data: {\n id: `a${position}.pattern`,\n logicData: getLogicData(data.tags, data.codeBooks, parserResultPattern, parserResultPatternError)\n }\n })\n\n return () => {\n dispatch({\n type: 'UPDATE_LOGIC_DATA',\n data: {\n id: `a${position}.pattern`,\n logicData: null\n }\n })\n }\n }, [position, data.tags, data.codeBooks, dispatch, parserResultPattern, parserResultPatternError])\n useEffect(() => {\n const patternRefs = getRefs(parserResultPattern)\n const clustersRefs = getClustersRefs(data.modelClusters, parserResultPattern)\n\n dispatch({\n type: 'UPDATE_REFS',\n data: {\n id: `a${position}`,\n refs: [patternRefs, [], clustersRefs]\n }\n })\n\n return () => {\n dispatch({\n type: 'UPDATE_REFS',\n data: {\n id: `a${position}`,\n refs: null\n }\n })\n }\n }, [position, data.modelClusters, dispatch, parserResultPattern])\n useEffect(() => {\n dispatch({\n type: 'UPDATE_ERRORS',\n data: {\n id: `a${position}`,\n error: !item.pattern.trim().length || parserResultPatternError\n }\n })\n\n return () => {\n dispatch({\n type: 'UPDATE_ERRORS',\n data: {\n id: `a${position}`,\n error: null\n }\n })\n }\n }, [item, position, dispatch, parserResultPatternError])\n\n useEffect(\n () =>\n null !== selectedValue &&\n setSelectedOption(data.options.flatMap(v => v.items).find(v => v.key == selectedValue) || null),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [data.options]\n )\n\n useEffect(\n () => item.mode !== itemModeRef.current && onModeChange(itemModeRef.current),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [item.mode]\n )\n\n const renderValues = () => {\n if (null === selectedOption || 'none' == selectedOption.type) {\n return <MultiSelect className=\"p-composite\" placeholder=\"Select...\" disabled={true} />\n } else {\n switch (selectedOption.type) {\n case 'multistatemultiselect':\n return (\n <MultiStateMultiSelect\n className=\"p-composite\"\n placeholder=\"Select...\"\n value={selectedValues}\n options={selectedOption.options}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n buttonLabelTemplate={buttonLabelTemplate}\n panelHeaderTemplate={MultiSelectHeader}\n panelFooterTemplate={MultiSelectFooter}\n filter={true}\n filterBy={'search,text'}\n filterPlaceholder=\"Search items\"\n resetFilterOnHide={true}\n fixedDropdownDir=\"bottom\"\n disabled={disabled}\n onChange={disabled ? null : onChange}\n />\n )\n case 'multiselect': {\n return (\n <MultiSelect\n className=\"p-composite\"\n placeholder=\"Select...\"\n value={selectedValues}\n options={selectedOption.options}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n buttonLabelTemplate={buttonLabelTemplate}\n panelHeaderTemplate={MultiSelectHeader}\n panelFooterTemplate={MultiSelectFooter}\n filter={true}\n filterBy={'search,text'}\n filterPlaceholder=\"Search items\"\n resetFilterOnHide={true}\n fixedDropdownDir=\"bottom\"\n disabled={disabled}\n onChange={disabled ? null : onChange}\n />\n )\n }\n case 'dropdown': {\n return (\n <Dropdown\n className=\"p-composite\"\n placeholder=\"Select...\"\n value={selectedValues[0]}\n options={selectedOption.options}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n filter={true}\n filterBy={'search,text'}\n filterPlaceholder=\"Search items\"\n resetFilterOnHide={true}\n filterInputAutoFocus={false}\n fixedDropdownDir=\"bottom\"\n disabled={disabled}\n onChange={disabled ? null : onChange}\n />\n )\n }\n default: {\n return <MultiSelect className=\"p-composite\" placeholder=\"Select...\" disabled={true} />\n }\n }\n }\n }\n const renderOptions = () => (\n <AnswerVariantOptions\n position={position}\n value={selectedValue}\n options={data.options}\n dropdownsRef={dropdownsRef}\n onSelectedChange={onSelectedChange}\n />\n )\n\n return (\n <div ref={dndListItemRef} className={`${style.row} ${style['row-av']} p-fluid p-col-12`}>\n {disabled ? null : (\n <span className={style.delete} onClick={onDeleteClick}>\n <i className=\"icon-aytmfd-delete\"></i>\n </span>\n )}\n <div className={`${style.index} p-field`}>Q{position}.</div>\n <div\n className={`${style.group} ${style['group-av']}${\n disabled ? ' ' + style['group-av-disabled'] : ''\n } p-fluid p-field p-col`}\n >\n <ModeToggle\n mode={itemMode}\n processing={processing}\n toggleDisabled={\n null === parserResultPatternBasic ||\n (0 < Object.keys(parserResultPatternBasic).length && null === selectedOption)\n }\n onModeChange={onModeChange}\n />\n <div className={`${style.group} p-fluid p-field p-col-12`}>\n {'advanced' == itemMode ? (\n <div className=\"p-field p-col-12\">\n <AdvancedFilter\n className=\"p-component p-inputtext\"\n locale={data.locale}\n surveySchema={data.surveySchema}\n parserResultEof={parserResultEof}\n parserResultPattern={parserResultPattern || parserResultEof}\n hintPosition=\"top\"\n pattern={item.pattern}\n disabled={disabled}\n onChange={disabled ? null : onPatternChange}\n />\n </div>\n ) : (\n <>\n <div className=\"p-field p-col-6\">{renderOptions()}</div>\n <div className=\"p-field p-col-6\">{renderValues()}</div>\n </>\n )}\n </div>\n </div>\n {disabled ? null : (\n <div className=\"p-field\">\n <span ref={dndListItemHandleRef} className={style.handle} onClick={onHandleClick}>\n <i className=\"icon-aytmfd-handle\"></i>\n </span>\n </div>\n )}\n </div>\n )\n}\n\nAnswerVariantOEX.propTypes = {\n item: PropTypes.object,\n position: PropTypes.number,\n dndItemsList: PropTypes.any\n}\n\nAnswerVariantOEX.displayName = 'AnswerVariantOEX'\n\nexport default AnswerVariantOEX\n","// lib\nimport React, { useContext, useState, useRef, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\nimport ADND from '@aytm/lib/adnd/ADND'\nimport SchemaRules from '@aytm/app/stats/lib/schema-rules'\nimport { DataContext } from '@aytm/app/stats/page/question-views/vq/Component'\nimport { convertValuesToTree, convertTreeToValues } from '@aytm/app/stats/lib/converter'\n\nimport { generateUID, encodeText, decodeText } from '@aytm/app/stats/lib/helpers'\nimport { getLogicData, getRefs, getClustersRefs } from '@aytm/app/stats/lib/refs'\n\n// components\nimport { InputText } from 'primereact/inputtext'\nimport { Dropdown } from 'primereact/dropdown'\nimport { MultiSelect } from 'primereact/multiselect'\nimport { MultiStateMultiSelect } from 'primereact/multistatemultiselect'\n\nimport MultiSelectHeader from 'primereact-raytm-theme/MultiSelectHeader'\nimport MultiSelectFooter from 'primereact-raytm-theme/MultiSelectFooter'\n\nimport AdvancedFilter from '@aytm/app/stats/page/components/AdvancedFilter'\nimport ModeToggle from '@aytm/app/stats/page/question-views/vq/ModeToggle'\nimport AnswerVariantOptions from '@aytm/app/stats/page/question-views/vq/AnswerVariantOptions'\n\nimport { itemTemplate, valueTemplate } from '@aytm/app/stats/page/question-views/components/lib/templates'\n\n// hooks\nimport { useSingleAndDoubleClick } from '@aytm/app/stats/page/question-views/components/lib/hooks/useSingleAndDoubleClick'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/vq/styles/Component.module.scss'\n\nconst AnswerVariantOEX = ({ item, position, dndItemsList }) => {\n const {\n id,\n data,\n disabled,\n dispatch,\n dropdownsRef,\n parserResultPatternBasicsRef,\n basicFilters,\n parserResultEof,\n answerVariantAmount\n } = useContext(DataContext)\n\n const [processing, setProcessing] = useState(false)\n\n const [selectedValue, setSelectedValue] = useState(null)\n const [selectedValues, setSelectedValues] = useState([])\n const [selectedOption, setSelectedOption] = useState(null)\n\n const changedRef = useRef(false)\n\n const dndListItemRef = useRef()\n const dndListItemHandleRef = useRef()\n\n const itemMode = useMemo(\n () =>\n 'advanced' == item.mode || !data.options.some(group => 0 < group.items.length) || disabled ? 'advanced' : 'basic',\n [item.mode, data.options, disabled]\n )\n\n const itemModeRef = useRef(null)\n itemModeRef.current = itemMode\n\n const parserResultPattern = useMemo(\n () =>\n data.parser.analyzeString({\n id: id,\n filter: item.pattern.trim(),\n clusters: data.clusters,\n saveTokens: true\n }),\n [item.pattern, id, data.parser, data.clusters]\n )\n const parserResultPatternError = useMemo(\n () =>\n 0 < item.pattern.trim().length &&\n 0 < parserResultPattern.expression.status.errors.length &&\n parserResultPattern.expression.status.errors.some(v => !['ref', 'cluster'].includes(v.type)),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [parserResultPattern]\n )\n const parserResultPatternBasic = useMemo(() => {\n try {\n const tree = parserResultPatternError\n ? null\n : 0 < item.pattern.trim().length\n ? 0 < parserResultPattern.expression.status.errors.length\n ? null\n : basicFilters.convertToBasic(SchemaRules.flatten(parserResultPattern.expression.tree)) || null\n : {}\n return null === tree || 1 < Object.keys(tree).length ? null : tree\n } catch {\n return null\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [basicFilters, parserResultPattern, parserResultPatternError])\n\n const fetchData = useCallback(() => {\n return {\n id,\n item,\n position: position - 1,\n windowUID: data.windowUID,\n remove: () =>\n dispatch({\n type: 'DELETE_ANSWER_VARIANT',\n data: position - 1\n })\n }\n }, [item, position, id, data.windowUID, dispatch])\n\n const dndListItem = ADND.targets.itemsList.listItem({\n type: `dlq-answer-${data.windowUID}`,\n list: dndItemsList\n })\n const dndListItemHandle = ADND.sources\n .listItemHandle({\n type: `dlq-answer-${data.windowUID}`,\n item: dndListItem,\n cloneable: true\n })\n .fetchData(fetchData)\n\n const buttonLabelTemplate = event => {\n const text =\n 1 < selectedOption.options.length &&\n selectedOption.options.length == event.value.length &&\n ('multistatemultiselect' !== selectedOption.type || !event.value.some(item => !item.state))\n ? 'All'\n : 0 < event.value.length\n ? 1 == event.value.length && ('multistatemultiselect' !== selectedOption.type || event.value[0].state)\n ? selectedOption.options.find(\n o => o.key == ('multistatemultiselect' == selectedOption.type ? event.value[0].value : event.value[0])\n ).text\n : `Filtered to ${event.value.length}`\n : 'Select...'\n return <span dangerouslySetInnerHTML={{ __html: text }}></span>\n }\n\n const onModeChange = (mode, applyToAll = false) => {\n if (applyToAll)\n dispatch({\n type: 'UPDATE_ANSWER_VARIANTS_MODE',\n data: {\n positions: Object.keys(parserResultPatternBasicsRef.current).filter(\n k => null !== parserResultPatternBasicsRef.current[k]\n ),\n mode: mode\n }\n })\n else\n dispatch({\n type: 'UPDATE_ANSWER_VARIANT',\n data: {\n item: {\n ...item,\n mode: mode || ('basic' === item.mode ? 'advanced' : 'basic')\n },\n position: position - 1\n }\n })\n }\n\n const onResetValues = () => {\n setSelectedValue(null)\n setSelectedValues([])\n setSelectedOption(null)\n\n onModeChange('advanced')\n }\n\n const onSelectedChange = (value = null, _values) => {\n const group = data.options.find(v => v.items.some(v => v.key == value)) || null\n if (null !== group && group.disabled) return\n\n const option = group.items.find(v => v.key == value) || null\n if (null !== option && option.disabled) return\n\n const values = _values || []\n values.sort((a, b) =>\n 'multistatemultiselect' == option.type\n ? option.options.findIndex(v => v.key == a.value) - option.options.findIndex(v => v.key == b.value)\n : option.options.findIndex(v => v.key == a) - option.options.findIndex(v => v.key == b)\n )\n\n setSelectedValue(value)\n setSelectedValues(values)\n setSelectedOption(option)\n\n changedRef.current = true\n\n dispatch({\n type: 'UPDATE_ANSWER_VARIANT',\n data: {\n item: {\n ...item,\n pattern: null === option ? '' : basicFilters.convertToAdvanced(convertValuesToTree(option, value, values))\n },\n position: position - 1\n }\n })\n }\n\n const onPatternChange = value => {\n changedRef.current = true\n\n setProcessing(true)\n\n onResetValues()\n\n dispatch({\n type: 'UPDATE_ANSWER_VARIANT',\n data: {\n item: { ...item, pattern: value },\n position: position - 1\n }\n })\n }\n\n const onLabelChange = event => {\n dispatch({\n type: 'UPDATE_ANSWER_VARIANT',\n data: {\n item: {\n ...item,\n text: encodeText(event.target.value)\n },\n position: position - 1\n }\n })\n }\n\n const onDeleteClick = () => {\n dispatch({\n type: 'DELETE_ANSWER_VARIANT',\n data: position - 1,\n variant: 'oex'\n })\n }\n\n const onHandleClick = useSingleAndDoubleClick(null, () => {\n dispatch({\n type: 'ADD_ANSWER_VARIANT',\n data: {\n item: {\n ...item,\n key: generateUID()\n },\n position: position\n }\n })\n })\n\n const onChange = event =>\n 'dropdown' == selectedOption.type\n ? onSelectedChange(selectedValue, [event.value])\n : onSelectedChange(selectedValue, event.value)\n\n useEffect(() => {\n null !== selectedOption && (dropdownsRef.current[position] = selectedOption.key)\n\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n delete dropdownsRef.current[position]\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [position, selectedOption]) // TODO\n\n useEffect(() => {\n const keys = Object.keys(parserResultPatternBasic || {})\n\n if (keys.length) {\n const option =\n data.options.flatMap(v => v.items).find(v => (v.value || v.key).toLowerCase() == keys[0].toLowerCase()) || null\n\n parserResultPatternBasicsRef.current[position] = null !== option ? parserResultPatternBasic : null\n } else parserResultPatternBasicsRef.current[position] = 0 < item.pattern.trim().length ? null : {}\n\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n delete parserResultPatternBasicsRef.current[position]\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [item.pattern, position, parserResultPatternBasic])\n\n useEffect(() => {\n if (changedRef.current) {\n changedRef.current = false\n return\n }\n\n if (null === parserResultPatternBasic) {\n onResetValues()\n } else {\n const keys = Object.keys(parserResultPatternBasic || {})\n\n if (keys.length) {\n const option =\n data.options.flatMap(v => v.items).find(v => (v.value || v.key).toLowerCase() == keys[0].toLowerCase()) ||\n null\n\n if (null === option) {\n onResetValues()\n } else {\n const tree = Object.values(parserResultPatternBasic)[0]\n\n const values = convertTreeToValues(option, tree)\n\n values.sort((a, b) =>\n 'multistatemultiselect' == option.type\n ? option.options.findIndex(v => v.key == a.value) - option.options.findIndex(v => v.key == b.value)\n : option.options.findIndex(v => v.key == a) - option.options.findIndex(v => v.key == b)\n )\n\n setSelectedValue(option.key)\n setSelectedValues(values)\n setSelectedOption(option)\n }\n }\n }\n\n setProcessing(false)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [parserResultPatternBasic])\n\n useEffect(() => {\n if (dndListItem) dndListItem.connect(dndListItemRef.current)\n\n return () => {\n if (dndListItem) dndListItem.disconnect()\n }\n }, [dndListItem])\n\n useEffect(() => {\n if (dndListItemHandle) dndListItemHandle.connect(dndListItemHandleRef.current)\n\n return () => {\n if (dndListItemHandle) dndListItemHandle.disconnect()\n }\n }, [dndListItemHandle])\n\n useEffect(() => {\n dispatch({\n type: 'UPDATE_LOGIC_DATA',\n data: {\n id: `a${position}.pattern`,\n logicData: getLogicData(data.tags, data.codeBooks, parserResultPattern, parserResultPatternError)\n }\n })\n\n return () => {\n dispatch({\n type: 'UPDATE_LOGIC_DATA',\n data: {\n id: `a${position}.pattern`,\n logicData: null\n }\n })\n }\n }, [position, data.tags, data.codeBooks, dispatch, parserResultPattern, parserResultPatternError])\n useEffect(() => {\n const patternRefs = getRefs(parserResultPattern)\n const clustersRefs = getClustersRefs(data.modelClusters, parserResultPattern)\n\n dispatch({\n type: 'UPDATE_REFS',\n data: {\n id: `a${position}`,\n refs: [patternRefs, [], clustersRefs]\n }\n })\n\n return () => {\n dispatch({\n type: 'UPDATE_REFS',\n data: {\n id: `a${position}`,\n refs: null\n }\n })\n }\n }, [position, data.modelClusters, dispatch, parserResultPattern])\n useEffect(() => {\n dispatch({\n type: 'UPDATE_ERRORS',\n data: {\n id: `a${position}`,\n error: !item.pattern.trim().length || parserResultPatternError\n }\n })\n\n return () => {\n dispatch({\n type: 'UPDATE_ERRORS',\n data: {\n id: `a${position}`,\n error: null\n }\n })\n }\n }, [item, position, dispatch, parserResultPatternError])\n\n useEffect(\n () =>\n null !== selectedValue &&\n setSelectedOption(data.options.flatMap(v => v.items).find(v => v.key == selectedValue) || null),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [data.options]\n )\n\n useEffect(\n () => item.mode !== itemModeRef.current && onModeChange(itemModeRef.current),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [item.mode]\n )\n\n const renderValues = () => {\n if (null === selectedOption || 'none' == selectedOption.type) {\n return <MultiSelect className=\"p-composite\" placeholder=\"Select...\" disabled={true} />\n } else {\n switch (selectedOption.type) {\n case 'multistatemultiselect':\n return (\n <MultiStateMultiSelect\n className=\"p-composite\"\n placeholder=\"Select...\"\n value={selectedValues}\n options={selectedOption.options}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n buttonLabelTemplate={buttonLabelTemplate}\n panelHeaderTemplate={MultiSelectHeader}\n panelFooterTemplate={MultiSelectFooter}\n filter={true}\n filterBy={'search,text'}\n filterPlaceholder=\"Search items\"\n resetFilterOnHide={true}\n fixedDropdownDir=\"bottom\"\n disabled={disabled}\n onChange={disabled ? null : onChange}\n />\n )\n case 'multiselect': {\n return (\n <MultiSelect\n className=\"p-composite\"\n placeholder=\"Select...\"\n value={selectedValues}\n options={selectedOption.options}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n buttonLabelTemplate={buttonLabelTemplate}\n panelHeaderTemplate={MultiSelectHeader}\n panelFooterTemplate={MultiSelectFooter}\n filter={true}\n filterBy={'search,text'}\n filterPlaceholder=\"Search items\"\n resetFilterOnHide={true}\n fixedDropdownDir=\"bottom\"\n disabled={disabled}\n onChange={disabled ? null : onChange}\n />\n )\n }\n case 'dropdown': {\n return (\n <Dropdown\n className=\"p-composite\"\n placeholder=\"Select...\"\n value={selectedValues[0]}\n options={selectedOption.options}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n filter={true}\n filterBy={'search,text'}\n filterPlaceholder=\"Search items\"\n resetFilterOnHide={true}\n filterInputAutoFocus={false}\n fixedDropdownDir=\"bottom\"\n disabled={disabled}\n onChange={disabled ? null : onChange}\n />\n )\n }\n default: {\n return <MultiSelect className=\"p-composite\" placeholder=\"Select...\" disabled={true} />\n }\n }\n }\n }\n const renderOptions = () => (\n <AnswerVariantOptions\n position={position}\n value={selectedValue}\n options={data.options}\n dropdownsRef={dropdownsRef}\n onSelectedChange={onSelectedChange}\n />\n )\n\n return (\n <div ref={dndListItemRef} className={`${style.row} ${style['row-av']} p-fluid p-col-12`}>\n {disabled ? null : (\n <span className={style.delete} onClick={onDeleteClick}>\n <i className=\"icon-aytmfd-delete\"></i>\n </span>\n )}\n <div className={`${style.index} p-field`}>Q{position}.</div>\n <div\n className={`${style.group} ${style['group-av']}${\n disabled ? ' ' + style['group-av-disabled'] : ''\n } p-fluid p-field p-col`}\n >\n <div className={`${style.group} p-fluid p-field p-col-${(1 < answerVariantAmount && 8) || 12}`}>\n <ModeToggle\n mode={itemMode}\n processing={processing}\n toggleDisabled={\n null === parserResultPatternBasic ||\n (0 < Object.keys(parserResultPatternBasic).length && null === selectedOption)\n }\n onModeChange={onModeChange}\n />\n {'advanced' == itemMode ? (\n <div className=\"p-field p-col-12\">\n <AdvancedFilter\n className=\"p-component p-inputtext\"\n locale={data.locale}\n surveySchema={data.surveySchema}\n parserResultEof={parserResultEof}\n parserResultPattern={parserResultPattern || parserResultEof}\n hintPosition=\"top\"\n pattern={item.pattern}\n disabled={disabled}\n onChange={disabled ? null : onPatternChange}\n />\n </div>\n ) : (\n <>\n <div className=\"p-field p-col-6\">{renderOptions()}</div>\n <div className=\"p-field p-col-6\">{renderValues()}</div>\n </>\n )}\n </div>\n {1 < answerVariantAmount ? (\n <div className=\"p-fluid p-field p-col\">\n <InputText\n placeholder=\"Please type a label...\"\n value={decodeText(item.text)}\n maxLength=\"120\"\n disabled={disabled}\n onChange={disabled ? null : onLabelChange}\n />\n </div>\n ) : null}\n </div>\n {disabled ? null : (\n <div className=\"p-field\">\n <span ref={dndListItemHandleRef} className={style.handle} onClick={onHandleClick}>\n <i className=\"icon-aytmfd-handle\"></i>\n </span>\n </div>\n )}\n </div>\n )\n}\n\nAnswerVariantOEX.propTypes = {\n item: PropTypes.object,\n position: PropTypes.number,\n dndItemsList: PropTypes.any\n}\n\nAnswerVariantOEX.displayName = 'AnswerVariantOEX'\n\nexport default AnswerVariantOEX\n","// lib\nimport React, { useContext, useRef, useCallback } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { DataContext } from '@aytm/app/stats/page/question-views/vq/Component'\n\n// components\nimport { Dropdown } from 'primereact/dropdown'\n\nimport {\n itemTemplate,\n valueTemplate,\n optionGroupTemplate\n} from '@aytm/app/stats/page/question-views/components/lib/templates'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/vq/styles/Component.module.scss'\n\nconst AnswerVariantOptions = ({ position, value, options, dropdownsRef, onSelectedChange }) => {\n const { disabled } = useContext(DataContext)\n\n const timer = useRef(null)\n\n const optionsRef = useRef(null)\n\n const onShow = useCallback(() => {\n if (!disabled) {\n const overlay = optionsRef.current.getOverlay()\n\n if (1 < position && null === value) {\n const key = dropdownsRef.current[position - 1]\n if (key != undefined && null !== key) {\n const item = overlay.querySelector(`.p-item-${key}`)\n\n if (item != undefined) {\n const parent = item.parentNode.parentNode.parentNode\n\n const parentRect = parent.getBoundingClientRect()\n const itemRect = item.parentNode.getBoundingClientRect()\n\n parent.scrollTop = itemRect.y - parentRect.y + parent.scrollTop\n }\n }\n }\n\n timer.current && clearTimeout(timer.current)\n timer.current = setTimeout(() => {\n overlay.classList.add('p-rendered')\n })\n }\n\n return () => timer.current && clearTimeout(timer.current)\n }, [position, value, dropdownsRef, disabled])\n\n return (\n <Dropdown\n ref={optionsRef}\n className={style.options}\n placeholder=\"Select...\"\n value={value}\n options={options}\n optionValue=\"key\"\n optionLabel=\"text\"\n optionDisabled=\"disabled\"\n optionGroupLabel=\"text\"\n optionGroupChildren=\"items\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n optionGroupTemplate={optionGroupTemplate}\n filter={true}\n filterBy={'search,text'}\n filterPlaceholder=\"Search items\"\n resetFilterOnHide={true}\n filterInputAutoFocus={false}\n fixedDropdownDir=\"bottom\"\n disabled={disabled}\n onChange={disabled ? null : event => onSelectedChange(event.value)}\n onShow={onShow}\n />\n )\n}\n\nAnswerVariantOptions.propTypes = {\n position: PropTypes.number,\n value: PropTypes.any,\n options: PropTypes.array,\n dropdownsRef: PropTypes.any,\n onSelectedChange: PropTypes.func\n}\n\nAnswerVariantOptions.displayName = 'AnswerVariantOptions'\n\nexport default AnswerVariantOptions\n","// lib\nimport React, { useReducer, useState, useRef, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { Transition } from 'react-transition-group'\nimport { isEqual } from 'lodash'\n\nimport ADND from '@aytm/lib/adnd/ADND'\nimport BasicFilters from '@aytm/app/stats/lib/basic-filters'\nimport { dataReducer } from '@aytm/app/stats/page/question-views/vq/reducers'\n\nimport { generateUID } from '@aytm/app/stats/lib/helpers'\nimport { getLogicData, getRefs, getClustersRefs } from '@aytm/app/stats/lib/refs'\n\n// components\nimport { default as ComponentContainer } from '@aytm/app/stats/page/question-views/components/Component'\n\nimport { Checkbox } from 'primereact/checkbox'\nimport { InputNumber } from 'primereact/inputnumber'\nimport { Dropdown } from 'primereact/dropdown'\n\nimport AdvancedFilter from '@aytm/app/stats/page/components/AdvancedFilter'\n\nimport AnswerVariant from '@aytm/app/stats/page/question-views/vq/AnswerVariant'\nimport AnswerVariantMX from '@aytm/app/stats/page/question-views/vq/AnswerVariantMX'\nimport AnswerVariantOE from '@aytm/app/stats/page/question-views/vq/AnswerVariantOE'\nimport AnswerVariantOEX from '@aytm/app/stats/page/question-views/vq/AnswerVariantOEX'\n\nimport Controls from '@aytm/app/stats/page/question-views/vq/Controls'\nimport Footer from '@aytm/app/stats/page/question-views/components/component/Footer'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/vq/styles/Component.module.scss'\n\nexport const DataContext = React.createContext()\n\nconst BaseOptions = [\n { text: 'Entire sample (N)', key: 'number' },\n { text: 'Sum of all VQ answers', key: 'sum' },\n { text: 'Custom', key: 'expression' }\n]\n\nconst getDefaultAnswerVariant = (av = {}) => {\n return {\n key: generateUID(),\n text: '',\n pattern: '',\n base: '',\n mode: 'basic',\n other: false,\n ...av\n }\n}\n\nconst itemBaseTemplate = option => option.text\nconst valueBaseTemplate = option => (option ? `Base: ${option.text}` : 'Base: N')\n\nconst Component = ({\n model,\n data,\n states,\n disabled,\n isAdmin,\n onChange,\n onControlsChange,\n onUpdateData,\n getTopsOptions,\n getLabelsOptions,\n getImagesOptions,\n getAnswerVariantsOptions\n}) => {\n const [state, dispatch] = useReducer(dataReducer, {\n pattern: model.pattern,\n patternType: model.patternType,\n answerVariants: JSON.parse(JSON.stringify(model.answerVariants)),\n logicData: { pattern: [], items: {} },\n refs: {},\n errors: []\n })\n\n const [changed, setChanged] = useState(false)\n\n const timer = useRef(null)\n\n const stateRef = useRef()\n stateRef.current = state\n\n const dndItemsListRef = useRef()\n\n const dropdownsRef = useRef({})\n const parserResultPatternBasicsRef = useRef({})\n\n const mode = useMemo(() => {\n const answerVariants = state.answerVariants.filter(\n (_av, index) => null !== parserResultPatternBasicsRef.current[index + 1]\n )\n return !answerVariants.length || 'mx' === model.variant\n ? null\n : answerVariants.every(av => 'basic' === av.mode)\n ? 'basic'\n : 'advanced'\n }, [model.variant, state])\n const modeDisabled = useMemo(\n () => !state.answerVariants.filter((_av, index) => null !== parserResultPatternBasicsRef.current[index + 1]).length,\n [state]\n )\n\n const AnswerVariantComponent = useMemo(\n () =>\n 'oex' === model.variant\n ? AnswerVariantOEX\n : 'oe' === model.variant\n ? AnswerVariantOE\n : 'mx' === model.variant\n ? AnswerVariantMX\n : AnswerVariant,\n [model.variant]\n )\n\n const answerVariantAmount = useMemo(() => state.answerVariants.length, [state])\n\n const answerVariantPrefix = useMemo(\n () => (['oe', 'oex'].includes(model.variant) ? 'Q' : 'mx' === model.variant ? 'SQ' : 'A'),\n [model.variant]\n )\n const answerVariantAddText = useMemo(\n () =>\n `Add ${window.NumberToWords(state.answerVariants.length + 1)} ${\n ['oe', 'oex'].includes(model.variant) ? 'Question' : 'mx' === model.variant ? 'Sub-Question' : 'Answer'\n }`,\n [model.variant, state]\n )\n\n const baseOptions = useMemo(() => {\n if (state.answerVariants.some(av => av.base && 0 < av.base.length && !Number.isNaN(Number(av.base)))) {\n if (['number', 'sum'].includes(state.patternType)) {\n dispatch({\n type: 'UPDATE_PATTERN',\n data: { pattern: '', patternType: null }\n })\n }\n\n return BaseOptions.map(o => (['number', 'sum'].includes(o.key) ? Object.assign({}, o, { disabled: true }) : o))\n } else if (state.answerVariants.some(av => av.base && 0 < av.base.length)) {\n if (['number'].includes(state.patternType)) {\n dispatch({\n type: 'UPDATE_PATTERN',\n data: { pattern: '', patternType: null }\n })\n }\n\n return BaseOptions.map(o => (['number'].includes(o.key) ? Object.assign({}, o, { disabled: true }) : o))\n } else {\n return BaseOptions\n }\n }, [state])\n\n const basicFilters = useMemo(\n () =>\n new BasicFilters({\n surveySchema: data.surveySchema,\n clusters: data.clusters,\n longAllowed: true,\n isAdmin\n }),\n [data.clusters, data.surveySchema, isAdmin]\n )\n\n const parserResultEof = useMemo(\n () =>\n data.parser.analyzeString({\n filter: '',\n saveTokens: true\n }),\n [data.parser]\n )\n const parserResultPattern = useMemo(\n () =>\n ('expression' == state.patternType &&\n data.parser.analyzeString({\n id: model.id,\n filter: state.pattern.trim(),\n clusters: data.clusters,\n saveTokens: true\n })) ||\n parserResultEof,\n [model.id, data.parser, data.clusters, state.pattern, state.patternType, parserResultEof]\n )\n const parserResultPatternError = useMemo(\n () =>\n 'expression' == state.patternType &&\n 0 < state.pattern.trim().length &&\n 0 < parserResultPattern.expression.status.errors.length &&\n parserResultPattern.expression.status.errors.some(v => !['ref', 'cluster'].includes(v.type)),\n [state.pattern, state.patternType, parserResultPattern]\n )\n\n const onDNDPositionChange = useCallback(\n ({ newPosition, dragItemUpdater } = {}) => {\n dragItemUpdater(node => {\n const itemPositionNode = node.querySelector('.stats-VQ-AnswerVariant-index')\n if (null !== itemPositionNode) {\n itemPositionNode.innerHTML =\n null === `${answerVariantPrefix}${newPosition + 1}.` ? '' : `${answerVariantPrefix}${newPosition + 1}.`\n }\n })\n },\n [answerVariantPrefix]\n )\n const onDNDUpdateItemPositions = useCallback(\n ({ hiddenItemIndex, placeholderIndex } = {}) => {\n const itemPositionNodes = dndItemsListRef.current.querySelectorAll(\n '.stats-VQ-AnswerVariant .stats-VQ-AnswerVariant-index'\n )\n\n for (const [i, itemPositionNode] of itemPositionNodes.entries()) {\n if (null !== itemPositionNode) {\n const visualItemIndex = i + (null !== hiddenItemIndex && hiddenItemIndex <= i ? -1 : 0)\n const newItemIndex =\n visualItemIndex + (null !== placeholderIndex && placeholderIndex <= visualItemIndex ? 1 : 0)\n itemPositionNode.innerHTML =\n null === `${answerVariantPrefix}${newItemIndex + 1}` ? '' : `${answerVariantPrefix}${newItemIndex + 1}.`\n }\n }\n },\n [answerVariantPrefix]\n )\n\n const onDNDDrop = res => {\n const { item, position, clone } = res\n\n if (clone) {\n dispatch({\n type: 'ADD_ANSWER_VARIANT',\n data: {\n item: {\n ...getDefaultAnswerVariant(item.item),\n key: generateUID()\n },\n position\n }\n })\n } else if (item.id != model.id) {\n item.remove()\n dispatch({\n type: 'ADD_ANSWER_VARIANT',\n data: {\n item: {\n ...getDefaultAnswerVariant(item.item),\n key: generateUID()\n },\n position\n }\n })\n } else if (item.position != position) {\n dispatch({\n type: 'REORDER_ANSWER_VARIANTS',\n data: {\n from: item.position,\n to: position\n }\n })\n }\n\n onDNDUpdateItemPositions()\n }\n\n const dndItemsList = ADND.targets\n .itemsList(\n {\n acceptTypes: [`dlq-answer-${data.windowUID}`, `dlq-answer-other-${model.id}-${data.windowUID}`],\n placeholderVMargin: 10\n },\n { capture: false }\n )\n .buildPlaceholder(() => {\n const placeholderNode = document.createElement('div')\n placeholderNode.className = `${style.placeholder}`\n return placeholderNode\n })\n .onPositionChange(onDNDPositionChange)\n .onUpdateItemPositions(onDNDUpdateItemPositions)\n .onEnter(onDNDUpdateItemPositions)\n .onLeave(onDNDUpdateItemPositions)\n .onDrop(onDNDDrop)\n\n const checkModel = () => {\n const newData = {}\n if (state.pattern != model.pattern) newData.pattern = model.pattern\n if (state.patternType != model.patternType) newData.patternType = model.patternType\n if (!isEqual(state.answerVariants, model.answerVariants)) {\n newData.logicData = state.logicData\n newData.refs = state.refs\n newData.errors = JSON.parse(JSON.stringify(state.errors))\n for (const avi in state.answerVariants) {\n delete newData.logicData.items[`a${Number(avi) + 1}`]\n delete newData.refs[`a${Number(avi) + 1}`]\n const index = newData.errors.indexOf(`a${Number(avi) + 1}`)\n 0 <= index && newData.errors.splice(index, 1)\n }\n newData.answerVariants = JSON.parse(JSON.stringify(model.answerVariants))\n }\n return newData\n }\n const checkState = () => {\n const newData = {}\n if (state.pattern != model.pattern) newData.pattern = state.pattern\n if (state.patternType != model.patternType) newData.patternType = state.patternType\n if (!isEqual(state.answerVariants, model.answerVariants))\n newData.answerVariants = JSON.parse(JSON.stringify(state.answerVariants))\n return newData\n }\n\n const checkError = () => {\n if (0 < state.errors.length || !state.answerVariants.length) return { error: true }\n if ('mx' === model.variant) {\n if (2 > state.answerVariants.length) return { error: true }\n const l = state.answerVariants.reduce((acc, cur) => {\n const option = data.options.flatMap(v => v.items).find(v => v.key == cur.pattern)\n if (option == undefined) return acc\n return [...acc, option.options.length].filter((v, i, a) => a.indexOf(v) == i)\n }, []).length\n if (1 != l) {\n return { error: 'Each sub-question must have the same number of answer options.' }\n }\n }\n return { error: false }\n }\n\n const onModeChange = () => {\n dispatch({\n type: 'UPDATE_ANSWER_VARIANTS_MODE',\n data: {\n positions: Object.keys(parserResultPatternBasicsRef.current).filter(\n k => null !== parserResultPatternBasicsRef.current[k]\n ),\n mode: 'advanced' === mode ? 'basic' : 'advanced'\n }\n })\n }\n\n const onAddClick = () => {\n const { answerVariants } = state\n const index = answerVariants.findIndex(av => av.other)\n\n dispatch({\n type: 'ADD_ANSWER_VARIANT',\n data: {\n item: getDefaultAnswerVariant({ mode: mode || 'basic' }),\n position: 0 <= index && index + 1 == answerVariants.length ? index : answerVariants.length\n }\n })\n }\n\n const onPatternChange = (value = '') => {\n dispatch({\n type: 'UPDATE_PATTERN',\n data: { pattern: value }\n })\n }\n\n const onPatternTypeChange = (patternType = null) => {\n dispatch({\n type: 'UPDATE_PATTERN',\n data: { pattern: '', patternType }\n })\n }\n\n const onOtherChange = () => {\n const answerVariants = state.answerVariants\n const index = answerVariants.findIndex(av => av.other)\n\n 0 > index\n ? dispatch({\n type: 'ADD_ANSWER_VARIANT',\n data: {\n item: getDefaultAnswerVariant({\n key: data.otherUID,\n text: 'Other',\n other: true\n }),\n position: answerVariants.length\n }\n })\n : dispatch({\n type: 'DELETE_ANSWER_VARIANT',\n data: index\n })\n }\n\n useEffect(() => {\n dispatch({\n type: 'UPDATE_LOGIC_DATA',\n data: {\n id: 'pattern',\n logicData: getLogicData(data.tags, data.codeBooks, parserResultPattern, parserResultPatternError)\n }\n })\n }, [data.tags, data.codeBooks, parserResultPattern, parserResultPatternError])\n useEffect(() => {\n const patternRefs = getRefs(parserResultPattern)\n const clustersRefs = getClustersRefs(data.modelClusters, parserResultPattern)\n\n dispatch({\n type: 'UPDATE_REFS',\n data: {\n id: `pattern`,\n refs: [patternRefs, clustersRefs]\n }\n })\n }, [data.modelClusters, parserResultPattern])\n useEffect(() => {\n dispatch({\n type: 'UPDATE_ERRORS',\n data: {\n id: 'pattern',\n error: parserResultPatternError\n }\n })\n }, [parserResultPatternError])\n\n useEffect(() => {\n dndItemsList.connect(dndItemsListRef.current)\n\n return () => {\n dndItemsList.disconnect()\n }\n }, [dndItemsList])\n\n useEffect(() => {\n if (changed) return\n\n dispatch({\n type: 'RESET',\n data: { ...checkModel() }\n })\n\n setChanged(\n stateRef.current.variant != model.variant ||\n stateRef.current.pattern != model.pattern ||\n stateRef.current.patternType != model.patternType ||\n !isEqual(stateRef.current.answerVariants, model.answerVariants)\n )\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [model.pattern, model.patternType, model.answerVariants])\n\n useEffect(() => {\n setChanged(true)\n\n const newData = {\n logicData: state.logicData,\n refs: state.refs,\n ...checkError(),\n ...checkState()\n }\n\n timer.current && clearTimeout(timer.current)\n timer.current = setTimeout(() => {\n if (Object.hasOwn(newData, 'answerVariants')) {\n dispatchEvent(\n new CustomEvent('customQuestionChanged', {\n detail: {\n id: model.id.toUpperCase(),\n items: newData.answerVariants.reduce((acc, cur, i) => {\n switch (model.variant) {\n case 'mx': {\n const option = data.options.flatMap(v => v.items).find(v => v.key == cur.pattern)\n acc[cur.key] = {\n key: `SQ${i + 1}`,\n size: option != undefined ? option.options.length : 0\n }\n break\n }\n default: {\n acc[cur.key] = `A${i + 1}`\n }\n }\n return acc\n }, {}),\n delay: newData.answerVariants.length > model.answerVariants.length\n }\n })\n )\n }\n\n onChange(newData)\n\n setChanged(false)\n }, 300)\n\n return () => timer.current && clearTimeout(timer.current)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state])\n\n const dataContextValue = useMemo(() => {\n return {\n id: model.id,\n data,\n disabled,\n dispatch,\n dropdownsRef,\n parserResultPatternBasicsRef,\n basicFilters,\n parserResultEof,\n answerVariantAmount\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n model.id,\n data,\n disabled,\n dispatch,\n dropdownsRef,\n parserResultPatternBasicsRef,\n basicFilters,\n parserResultEof,\n answerVariantAmount\n ])\n\n const renderPatternOptions = () => (\n <>\n <div className=\"p-field p-right p-col\">\n <Dropdown\n className=\"p-dropdown-simple p-dropdown-right\"\n placeholder=\"Base: N\"\n value={state.patternType}\n options={baseOptions}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemBaseTemplate}\n valueTemplate={valueBaseTemplate}\n fixedDropdownDir=\"bottom\"\n disabled={disabled}\n onChange={disabled ? null : event => onPatternTypeChange(event.value)}\n />\n </div>\n <Transition in={['number', 'expression'].includes(state.patternType)} timeout={500}>\n {status => (\n <div\n className={`p-fluid p-field p-right p-col ${style['transition-base']} ${\n status ? style['transition-base-' + status] : ''\n }`}\n >\n <div className=\"p-field p-col-12\">\n {'number' == state.patternType && (\n <InputNumber\n placeholder=\"\"\n min={0}\n mode=\"decimal\"\n value={state.pattern || ''}\n showButtons\n useGrouping={false}\n disabled={disabled}\n onChange={disabled ? null : event => onPatternChange(String(event.value || ''))}\n onBlur={disabled || 0 < state.pattern.trim().length ? null : () => onPatternTypeChange()}\n />\n )}\n {'expression' == state.patternType && (\n <AdvancedFilter\n className=\"p-component p-inputtext\"\n locale={data.locale}\n surveySchema={data.surveySchema}\n parserResultEof={parserResultEof}\n parserResultPattern={parserResultPattern || parserResultEof}\n hintPosition=\"top\"\n pattern={state.pattern || ''}\n disabled={disabled}\n onChange={disabled ? null : value => onPatternChange(value)}\n onBlur={disabled || 0 < state.pattern.trim().length ? null : () => onPatternTypeChange()}\n />\n )}\n </div>\n </div>\n )}\n </Transition>\n </>\n )\n\n return (\n <ComponentContainer\n Controls={Controls}\n model={model}\n data={data}\n states={states}\n changed={changed}\n disabled={disabled}\n onChange={onControlsChange}\n getTopsOptions={getTopsOptions}\n getLabelsOptions={getLabelsOptions}\n getImagesOptions={getImagesOptions}\n getAnswerVariantsOptions={getAnswerVariantsOptions}\n >\n <div className={style.component}>\n {null === mode || !data.options.some(group => 0 < group.items.length) || disabled ? null : (\n <div className={`${style.row} p-field p-col-12`}>\n <span\n className={`${style.toggle}${modeDisabled ? ' ' + style['toggle-disabled'] : ''}`}\n onClick={modeDisabled ? null : onModeChange}\n >\n switch ALL to {'basic' === mode ? 'advanced' : 'basic'} mode\n </span>\n </div>\n )}\n <div ref={dndItemsListRef} className={style.list}>\n <DataContext.Provider value={dataContextValue}>\n {state.answerVariants.map((item, index) => (\n <AnswerVariantComponent key={item.key} item={item} position={index + 1} dndItemsList={dndItemsList} />\n ))}\n </DataContext.Provider>\n </div>\n {disabled &&\n ['mx', 'oe', 'oex'].includes(model.variant) &&\n !state.pattern.length &&\n 'sum' != state.patternType ? null : (\n <div className={`${style.row} p-fluid p-field p-col-12`}>\n {disabled ? null : (\n <>\n <div className={`${style.index} p-field`}>\n {answerVariantPrefix}\n {state.answerVariants.length + 1}.\n </div>\n <div className=\"p-field\">\n <span className={style.add} onClick={onAddClick}>\n {answerVariantAddText}\n </span>\n </div>\n <div className={`${style.group} ${style['group-checkbox']} p-field`}>\n <Checkbox\n inputId={`other-${model.id}-${data.windowUID}`}\n name={`other-${model.id}-${data.windowUID}`}\n value=\"other\"\n checked={state.answerVariants.some(av => av.other)}\n onChange={onOtherChange}\n />\n <label onClick={onOtherChange}>Everyone else</label>\n </div>\n </>\n )}\n {['mx', 'oe', 'oex'].includes(model.variant) ? null : renderPatternOptions()}\n </div>\n )}\n </div>\n {!disabled && <Footer data={data} states={states} onUpdateData={onUpdateData} />}\n </ComponentContainer>\n )\n}\n\nComponent.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n states: PropTypes.object,\n disabled: PropTypes.bool,\n isAdmin: PropTypes.bool,\n onChange: PropTypes.func,\n onControlsChange: PropTypes.func,\n onUpdateData: PropTypes.func,\n getTopsOptions: PropTypes.func,\n getLabelsOptions: PropTypes.func,\n getImagesOptions: PropTypes.func,\n getAnswerVariantsOptions: PropTypes.func\n}\n\nComponent.displayName = 'Component'\n\nexport default Component\n\nADND().connect()\n","// lib\nimport React, { useState, useRef, useMemo, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport { Dropdown } from 'primereact/dropdown'\nimport { MultiSelect } from 'primereact/multiselect'\n\nimport MultiSelectHeader from 'primereact-raytm-theme/MultiSelectHeader'\nimport MultiSelectFooter from 'primereact-raytm-theme/MultiSelectFooter'\n\nimport { optionGroupTemplate } from '@aytm/app/stats/page/question-views/components/lib/templates'\n\nimport { default as ControlsContainer } from '@aytm/app/stats/page/question-views/components/component/Controls'\n\nconst Controls = ({\n model,\n data,\n collapsed,\n disabled,\n onToggle,\n onChange,\n getTopsOptions,\n getLabelsOptions,\n getImagesOptions,\n getAnswerVariantsOptions\n}) => {\n const [source, setSource] = useState(null)\n\n const [top, setTop] = useState(null)\n const [label, setLabel] = useState(null)\n const [image, setImage] = useState(null)\n\n const [answerVariants, setAnswerVariants] = useState(null)\n\n const sourceRef = useRef(null)\n const optionsRef = useRef(null)\n\n const sourceGroup = useMemo(() => (null !== source && source.split('.').slice(0, 2).join('.')) || null, [source])\n\n const sourceGroupRef = useRef(null)\n sourceGroupRef.current = sourceGroup\n\n const topsOptions = useMemo(() => (null !== source ? getTopsOptions(source) : []), [source, getTopsOptions])\n const labelsOptions = useMemo(() => (null !== source ? getLabelsOptions(source) : []), [source, getLabelsOptions])\n const imagesOptions = useMemo(() => (null !== source ? getImagesOptions(source) : []), [source, getImagesOptions])\n\n const answerVariantsOptions = useMemo(\n () => (null !== source ? getAnswerVariantsOptions(source) : []),\n [source, getAnswerVariantsOptions]\n )\n\n const itemTemplate = option =>\n option.disabled && option.icon == undefined ? (\n <span dangerouslySetInnerHTML={{ __html: option.text }}></span>\n ) : (\n <span className={`p-item-label${2 === option.lvl ? ' p-lvl-2' : ''}`}>\n {option.icon ? <i className={`icon-aytmfd-${option.icon}`} /> : null}\n <span dangerouslySetInnerHTML={{ __html: option.text }}></span>\n </span>\n )\n const valueTemplate = (option, _props) =>\n option ? (\n <>\n {option.icon ? <i className={`icon-aytmfd-${option.icon}`} /> : null}\n <span dangerouslySetInnerHTML={{ __html: option.label || option.text }}></span>\n </>\n ) : (\n <span dangerouslySetInnerHTML={{ __html: _props.placeholder || 'Select...' }}></span>\n )\n\n const buttonLabelTemplate = event => {\n const text =\n event != undefined && event.value != undefined && 0 < event.value.length\n ? event.options.length === event.value.length\n ? 'All'\n : answerVariantsOptions\n .filter(o => event.value.includes(o.key))\n .map(o => o.label)\n .join(', ')\n : 'Select...'\n return <span dangerouslySetInnerHTML={{ __html: text || ' ' }}></span>\n }\n\n useEffect(() => setTop(0 < topsOptions.length ? topsOptions[0].key : null), [topsOptions])\n useEffect(() => {\n const index = labelsOptions.findIndex(v => v != undefined && v.default)\n setLabel(0 < labelsOptions.length ? labelsOptions[(-1 < index && index) || 0].key : null)\n }, [labelsOptions])\n useEffect(() => {\n const index = imagesOptions.findIndex(v => v != undefined && v.default)\n setImage(0 < imagesOptions.length ? imagesOptions[(-1 < index && index) || 0].key : null)\n }, [imagesOptions])\n\n useEffect(\n () => setAnswerVariants(0 < answerVariantsOptions.length ? [answerVariantsOptions[0].key] : null),\n [answerVariantsOptions]\n )\n\n useEffect(\n () => null !== source && onChange('source', { top: null !== top ? top : source, label, image, answerVariants }),\n [source, top, label, image, answerVariants, onChange]\n )\n\n useEffect(() => {\n if (null === source) return\n\n const option = data.controls.source.options\n .flatMap(v => (v != undefined && v.items) || [])\n .find(v => source == v.key)\n\n if (option.variant === model.variant || (!option.variant && ['rb', 'cb'].includes(model.variant))) return\n\n setSource(null)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [model.variant, data.controls.source.options])\n\n return (\n <ControlsContainer data={data} collapsed={collapsed} onToggle={onToggle}>\n {0 < data.controls.source.options.flatMap(v => (v != undefined && v.items) || []).length ? (\n <div ref={sourceRef} className=\"p-composite-group p-fluid p-field p-col-6\">\n <Dropdown\n className={`p-dropdown-rounded p-col-${0 < topsOptions.length ? 6 : 12}`}\n placeholder={data.controls.source.placeholder}\n value={source}\n options={data.controls.source.options}\n optionValue=\"key\"\n optionLabel=\"text\"\n optionGroupLabel=\"text\"\n optionGroupChildren=\"items\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n optionGroupTemplate={optionGroupTemplate}\n filter={true}\n filterBy={'search,text'}\n filterPlaceholder=\"Search items\"\n resetFilterOnHide={true}\n filterInputAutoFocus={false}\n fixedDropdownDir=\"bottom\"\n appendTo={sourceRef.current || 'self'}\n disabled={disabled || data.controls.source.disabled}\n onChange={disabled || data.controls.source.disabled ? null : event => setSource(event.value)}\n />\n {0 < topsOptions.length && (\n <Dropdown\n className=\"p-dropdown-rounded p-col-6\"\n value={top}\n options={topsOptions}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n fixedDropdownDir=\"bottom\"\n appendTo={sourceRef.current || 'self'}\n disabled={disabled || data.controls.source.disabled}\n onChange={disabled || data.controls.source.disabled ? null : event => setTop(event.value)}\n />\n )}\n </div>\n ) : null}\n {0 < labelsOptions.length ? (\n <div ref={optionsRef} className=\"p-composite-group p-fluid p-field p-col-6\">\n <Dropdown\n className={`p-dropdown-rounded p-col-${0 < imagesOptions.length ? 6 : 12}`}\n value={label}\n options={labelsOptions}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n fixedDropdownDir=\"bottom\"\n appendTo={optionsRef.current || 'self'}\n disabled={disabled || data.controls.source.disabled}\n onChange={disabled || data.controls.source.disabled ? null : event => setLabel(event.value)}\n />\n {0 < imagesOptions.length && (\n <Dropdown\n className=\"p-dropdown-rounded p-col-6\"\n value={image}\n options={imagesOptions}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n fixedDropdownDir=\"bottom\"\n appendTo={optionsRef.current || 'self'}\n disabled={disabled || data.controls.source.disabled}\n onChange={disabled || data.controls.source.disabled ? null : event => setImage(event.value)}\n />\n )}\n </div>\n ) : 0 < answerVariantsOptions.length ? (\n <div className=\"p-field p-col-6\">\n <MultiSelect\n className=\"p-multiselect-rounded\"\n placeholder=\"Select...\"\n value={answerVariants || []}\n options={answerVariantsOptions}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n buttonLabelTemplate={buttonLabelTemplate}\n panelHeaderTemplate={MultiSelectHeader}\n panelFooterTemplate={MultiSelectFooter}\n fixedDropdownDir=\"bottom\"\n disabled={disabled || data.controls.source.disabled}\n onChange={disabled || data.controls.source.disabled ? null : event => setAnswerVariants(event.value)}\n />\n </div>\n ) : (\n <div className=\"p-field p-col-6 p-float-label\">\n <Dropdown\n id={`variant-${model.id}`}\n className=\"p-dropdown-rounded\"\n value={model.variant}\n options={data.controls.variant.options}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n fixedDropdownDir=\"bottom\"\n disabled={disabled || data.controls.variant.disabled}\n onChange={disabled || data.controls.variant.disabled ? null : event => onChange('variant', event.value)}\n />\n {0 < data.controls.variant.note.length && <label>{data.controls.variant.note}</label>}\n </div>\n )}\n </ControlsContainer>\n )\n}\n\nControls.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n collapsed: PropTypes.bool,\n disabled: PropTypes.bool,\n onToggle: PropTypes.func,\n onChange: PropTypes.func,\n getTopsOptions: PropTypes.func,\n getLabelsOptions: PropTypes.func,\n getImagesOptions: PropTypes.func,\n getAnswerVariantsOptions: PropTypes.func\n}\n\nControls.displayName = 'Controls'\n\nexport default Controls\n","// lib\nimport React, { useContext, useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { DataContext } from '@aytm/app/stats/page/question-views/vq/Component'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/vq/styles/Component.module.scss'\n\nconst ModeToggle = ({ mode, processing, toggleDisabled, onModeChange }) => {\n const { data, disabled } = useContext(DataContext)\n\n const basicDisabled = useMemo(\n () => !data.options.some(group => 0 < group.items.length) || disabled,\n [data.options, disabled]\n )\n\n const onClick = event =>\n onModeChange(\n 'advanced' == mode ? 'basic' : 'advanced',\n event.shiftKey && !event.ctrlKey && !event.altKey && !event.metaKey\n )\n\n return basicDisabled ? null : 'advanced' == mode ? (\n <span\n className={`${style['group-toggle']}${toggleDisabled ? ' ' + style['group-toggle-disabled'] : ''}`}\n onClick={toggleDisabled || processing ? null : onClick}\n >\n {toggleDisabled ? 'Simplify/clear logic to switch to the basic mode' : 'switch to basic mode'}\n </span>\n ) : (\n <span className={style['group-toggle']} onClick={onClick}>\n switch to advanced mode\n </span>\n )\n}\n\nModeToggle.propTypes = {\n mode: PropTypes.string,\n processing: PropTypes.bool,\n toggleDisabled: PropTypes.bool,\n onModeChange: PropTypes.func\n}\n\nModeToggle.displayName = 'ModeToggle'\n\nexport default ModeToggle\n","export const dataReducer = (state = {}, action) => {\n switch (action.type) {\n case 'UPDATE_PATTERN': {\n return {\n ...state,\n ...action.data\n }\n }\n case 'ADD_ANSWER_VARIANT': {\n const { answerVariants } = state\n const { item, position } = action.data\n answerVariants.splice(position, 0, item)\n\n return {\n ...state,\n answerVariants\n }\n }\n case 'UPDATE_ANSWER_VARIANT': {\n const { answerVariants } = state\n const { item, position } = action.data\n answerVariants[position] = item\n\n return {\n ...state,\n answerVariants\n }\n }\n case 'UPDATE_ANSWER_VARIANTS_MODE': {\n const { answerVariants } = state\n const { positions, mode } = action.data\n\n return {\n ...state,\n answerVariants: answerVariants.map((av, index) =>\n positions.includes(String(index + 1))\n ? Object.assign(av, {\n mode: av.other ? 'basic' : mode\n })\n : av\n )\n }\n }\n case 'REORDER_ANSWER_VARIANTS': {\n const { answerVariants } = state\n const { from, to } = action.data\n const item = answerVariants.splice(from, 1)[0]\n answerVariants.splice(to, 0, item)\n\n return {\n ...state,\n answerVariants\n }\n }\n case 'DELETE_ANSWER_VARIANT': {\n const { answerVariants, errors } = state\n answerVariants.splice(action.data, 1)\n\n return {\n ...state,\n answerVariants,\n errors: errors.filter(v => 'pattern' == v || action.data >= Number(v.slice(1)))\n }\n }\n case 'UPDATE_LOGIC_DATA': {\n const { logicData } = state\n const path = action.data.id.split('.')\n if (1 < path.length) {\n if (null === action.data.logicData) {\n delete logicData.items[path[0]]\n } else {\n logicData.items[path[0]] ||= {}\n logicData.items[path[0]][path[1]] = action.data.logicData\n }\n } else {\n logicData[path[0]] = action.data.logicData\n }\n\n return {\n ...state,\n logicData\n }\n }\n case 'UPDATE_REFS': {\n const { refs } = state\n\n if (null === action.data.refs) {\n delete refs[action.data.id]\n } else refs[action.data.id] = action.data.refs\n\n return {\n ...state,\n refs\n }\n }\n case 'UPDATE_ERRORS': {\n const { errors } = state\n const id = action.data.id || 'pattern'\n const index = errors.indexOf(id)\n 0 <= index && errors.splice(index, 1)\n true == action.data.error && errors.push(id)\n\n return {\n ...state,\n errors\n }\n }\n case 'RESET': {\n return {\n ...state,\n ...action.data\n }\n }\n default:\n throw new Error('Unknown action type')\n }\n}\n","// lib\nimport React, { useRef, useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport { default as ComponentContainer } from '@aytm/app/stats/page/question-views/components/Component'\n\nimport { Dropdown } from 'primereact/dropdown'\n\nimport ScriptItemText from '@aytm/app/stats/page/question-views/xq/ScriptItemText'\nimport ScriptItemSelect from '@aytm/app/stats/page/question-views/xq/ScriptItemSelect'\n\nimport Controls from '@aytm/app/stats/page/question-views/xq/Controls'\nimport Footer from '@aytm/app/stats/page/question-views/components/component/Footer'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/xq/styles/Component.module.scss'\n\nexport const DataContext = React.createContext()\n\nconst Component = ({ model, data, basic, scripts, states, disabled, onSelect, onChange, onUpdateData }) => {\n const { script, args } = model\n\n const scriptsRef = useRef()\n\n const scriptsOptions = useMemo(\n () =>\n scripts.map(r =>\n r instanceof Object\n ? { key: r.value, text: r.text, description: r.description }\n : { key: r, text: r, description: r }\n ),\n [scripts]\n )\n\n const setTitle = description => {\n const element = scriptsRef.current.querySelectorAll('.p-dropdown-info')[0]\n if (element == undefined) {\n element.style.setProperty('--description', '')\n return\n }\n\n const txt = document.createElement('textarea')\n\n txt.innerHTML = description || (script && script.description) || ''\n\n element.style.setProperty('--description', `\"${txt.value.replace(/\\n/g, ' ')}\"`)\n }\n\n const itemTemplate = option => (\n <span onMouseEnter={() => setTitle(option.description)} dangerouslySetInnerHTML={{ __html: option.text }}></span>\n )\n const valueTemplate = option =>\n option ? <span dangerouslySetInnerHTML={{ __html: option.text }}></span> : 'Please select...'\n\n const dataContextValue = useMemo(() => {\n return {\n model,\n data,\n disabled,\n onChange\n }\n }, [model, data, disabled, onChange])\n\n const renderScriptItem = item => {\n const value = args[item.id]\n\n switch (item.input) {\n case 'select': {\n return <ScriptItemSelect key={item.id} item={item} value={value} multiple={false} />\n }\n case 'multi-select': {\n return <ScriptItemSelect key={item.id} item={item} value={value} multiple={true} />\n }\n default: {\n return <ScriptItemText key={item.id} item={item} value={value} basic={(basic && basic[item.id]) || []} />\n }\n }\n }\n\n return (\n <ComponentContainer Controls={Controls} model={model} data={data} states={states} disabled={disabled}>\n <div className={style.component}>\n {0 < scripts.length ? (\n <>\n <div className={`${style.row} p-fluid p-col-12`}>\n <div ref={scriptsRef} className={`p-field p-col`} onMouseLeave={() => setTitle()}>\n <Dropdown\n className=\"p-dropdown-info\"\n placeholder={'Please select...'}\n value={(script && script.id) || null}\n options={scriptsOptions}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n fixedDropdownDir=\"bottom\"\n disabled={disabled}\n onChange={\n disabled\n ? null\n : event => {\n const description = scripts.find(v => event.value === v.value).description\n setTitle(description)\n onSelect(event.value)\n }\n }\n />\n </div>\n </div>\n <div className={style.list}>\n <DataContext.Provider value={dataContextValue}>\n {script != undefined && script.args.map(item => renderScriptItem(script.manifest[item.id]))}\n </DataContext.Provider>\n </div>\n </>\n ) : (\n <div className={`${style.row} p-col-12`}>Loading scripts...</div>\n )}\n </div>\n {!disabled && <Footer data={data} states={states} onUpdateData={onUpdateData} />}\n </ComponentContainer>\n )\n}\n\nComponent.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n basic: PropTypes.object,\n scripts: PropTypes.array,\n states: PropTypes.object,\n disabled: PropTypes.bool,\n onSelect: PropTypes.func,\n onChange: PropTypes.func,\n onUpdateData: PropTypes.func\n}\n\nComponent.displayName = 'Component'\n\nexport default Component\n","// lib\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport { default as ControlsContainer } from '@aytm/app/stats/page/question-views/components/component/Controls'\n\nconst Controls = ({ model, data, collapsed, onToggle }) => (\n <ControlsContainer data={data} collapsed={collapsed} onToggle={onToggle}>\n <div className=\"p-field\" dangerouslySetInnerHTML={{ __html: model.script ? model.script.title : '' }}></div>\n </ControlsContainer>\n)\n\nControls.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n collapsed: PropTypes.bool,\n disabled: PropTypes.bool,\n onToggle: PropTypes.func\n}\n\nControls.displayName = 'Controls'\n\nexport default Controls\n","// lib\nimport React, { useContext, useMemo, useCallback } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { DataContext } from '@aytm/app/stats/page/question-views/xq/Component'\n\n// components\nimport { Dropdown } from 'primereact/dropdown'\nimport { MultiSelect } from 'primereact/multiselect'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/xq/styles/ScriptItem.module.scss'\n\nconst ScriptItemSelect = ({ item, value, multiple }) => {\n const { model, disabled, onChange } = useContext(DataContext)\n\n const itemOptions = useMemo(\n () => item.options.map(r => (r instanceof Object ? { key: r.value, text: r.text } : { key: r, text: r })),\n [item.options]\n )\n\n const onValueChange = useCallback(\n option => {\n const options = Array.isArray(option)\n ? option.map(r => (r instanceof Object ? r.value : r))\n : option instanceof Object\n ? option.value\n : option\n\n if (value != options) {\n model.args[item.id] = options\n onChange(model)\n }\n },\n [item.id, value, model, onChange]\n )\n\n return (\n <div className={`${style.item} p-fluid`}>\n {disabled ? (\n <div\n className=\"p-field p-col-12\"\n dangerouslySetInnerHTML={{ __html: Array.isArray(value) ? value.join(', ') : value }}\n />\n ) : (\n <>\n <div\n className={`${style['item-title']} p-field p-col-4`}\n dangerouslySetInnerHTML={{ __html: item.text || item.id }}\n />\n <div className={`p-field p-col-8`}>\n {multiple ? (\n <MultiSelect\n placeholder=\"Select...\"\n value={value}\n options={itemOptions}\n optionValue=\"key\"\n optionLabel=\"text\"\n maxSelectedLabels={1}\n showSelectAll={false}\n fixedDropdownDir=\"bottom\"\n onChange={event => onValueChange(event.value)}\n />\n ) : (\n <Dropdown\n placeholder=\"Select...\"\n value={value}\n options={itemOptions}\n optionValue=\"key\"\n optionLabel=\"text\"\n fixedDropdownDir=\"bottom\"\n onChange={event => onValueChange(event.value)}\n />\n )}\n </div>\n </>\n )}\n </div>\n )\n}\n\nScriptItemSelect.propTypes = {\n item: PropTypes.object,\n value: PropTypes.any,\n multiple: PropTypes.bool\n}\n\nScriptItemSelect.displayName = 'ScriptItemSelect'\n\nexport default ScriptItemSelect\n","// lib\nimport React, { useContext, useState, useRef, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport { DataContext } from '@aytm/app/stats/page/question-views/xq/Component'\n\nimport { encodeText, decodeText } from '@aytm/app/stats/lib/helpers'\n\n// components\nimport { InputTextarea } from 'primereact/inputtextarea'\nimport { Dropdown } from 'primereact/dropdown'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/xq/styles/ScriptItem.module.scss'\n\nconst MODE_TEXTS = {\n advanced: 'switch to basic mode',\n basic: 'switch to advanced mode',\n basicDisabled: 'simplify/clear logic to switch to the basic mode'\n}\nconst TEXT_WIDTH = 448\nconst TEXT_VPADDING = 9\nconst TEXT_FONT_SIZE = 14\nconst TEXT_LINE_HEIGHT = 16\nconst TEXT_MIN_HEIGHT = 34\nconst TEXT_MAX_HEIGHT = 80\n\nconst onScriptItemValueKeyDown = event => 13 === event.keyCode && event.preventDefault()\n\nconst ScriptItemText = ({ item, value, basic }) => {\n const { model, disabled, onChange } = useContext(DataContext)\n\n const [height, setHeight] = useState(TEXT_MIN_HEIGHT)\n const [minHeight, setMinHeight] = useState(TEXT_MIN_HEIGHT)\n\n const [mode, setMode] = useState('advanced')\n const [error, setError] = useState(false)\n const [basicDisabled, setBasicDisabled] = useState(false)\n\n const editRef = useRef(false)\n const callbackRef = useRef(null)\n\n const basicOptions = useMemo(\n () =>\n basic && 0 < basic.length\n ? basic.map(r => {\n return { text: r.text, key: r.value }\n })\n : null,\n [basic]\n )\n\n const onBasicChange = useCallback(\n option => {\n if (value == option) return\n\n model.args[item.id] = option\n onChange(model)\n },\n [item.id, value, model, onChange]\n )\n\n const onScriptItemValueChange = useCallback(\n event => {\n const text = encodeText(event.target.value)\n if (value == text) return\n\n model.args[item.id] = text\n onChange(model)\n },\n [item.id, value, model, onChange]\n )\n\n const onScriptItemValuePaste = useCallback(\n event => {\n event.preventDefault()\n\n let text =\n (event.clipboardData || window.clipboardData).getData('Text') || event.clipboardData.getData('text/plain')\n text = text.replace(/(\\r\\n|\\n|\\r|\\t|\\v)/gm, ' ')\n\n const el = event.currentTarget\n\n const l = text.length\n const start = el.selectionStart\n const end = el.selectionEnd\n\n const valueBefore = el.value.slice(0, start)\n const valueAfter = el.value.slice(end)\n text = encodeText(`${valueBefore}${text}${valueAfter}`)\n\n if (value != text) {\n model.args[item.id] = text\n onChange(model)\n }\n\n callbackRef.current = () => {\n el.setSelectionRange(start + l, start + l)\n el.blur()\n el.focus()\n }\n },\n [item.id, value, model, onChange]\n )\n\n const onScriptItemValueFocus = () => (editRef.current = true)\n\n const onScriptItemValueBlur = useCallback(() => {\n editRef.current = true\n\n setError(item.required && !value.trim().length)\n }, [item.required, value])\n\n useEffect(() => {\n if (null !== callbackRef.current && 'function' === typeof callbackRef.current) {\n callbackRef.current()\n callbackRef.current = null\n }\n }, [value])\n\n useEffect(() => {\n const basicDisabled = 0 < value.length && basic && 0 < basic.length && basic.findIndex(r => r.value == value) < 0\n\n setMode(basicDisabled || !basic || !basic.length ? 'advanced' : mode)\n setBasicDisabled(basicDisabled)\n\n editRef.current && setError(item.required && !value.trim().length)\n }, [item.required, value, basic, mode])\n\n useEffect(() => {\n const div = document.createElement('div')\n\n document.body.appendChild(div)\n\n div.style.position = 'absolute'\n div.style.left = '-1000px'\n div.style.top = '-1000px'\n div.style.width = `${TEXT_WIDTH}px`\n div.style.fontSize = `${TEXT_FONT_SIZE}px`\n div.style.lineHeight = `${TEXT_LINE_HEIGHT}px`\n\n div.style.overflow = 'hidden'\n div.style['overflow-wrap'] = 'break-word'\n\n div.innerHTML = value || ' '\n setHeight(Math.min(div.clientHeight + 2 * TEXT_VPADDING, TEXT_MAX_HEIGHT))\n\n div.innerHTML = item.default || item.placeholder || ' '\n setMinHeight(Math.min(div.clientHeight + 2 * TEXT_VPADDING, TEXT_MAX_HEIGHT))\n\n div.parentNode.removeChild(div)\n }, [item.default, item.placeholder, value])\n\n const renderAdvancedMode = () => (\n <InputTextarea\n className={error ? 'p-invalid' : ''}\n value={decodeText(value)}\n placeholder={item.placeholder || ''}\n rows={1}\n autoResize={true}\n onChange={onScriptItemValueChange}\n onKeyDown={onScriptItemValueKeyDown}\n onPaste={onScriptItemValuePaste}\n onFocus={onScriptItemValueFocus}\n onBlur={onScriptItemValueBlur}\n style={{\n height,\n minHeight,\n maxHeight: TEXT_MAX_HEIGHT\n }}\n />\n )\n\n const renderBasicMode = () => (\n <Dropdown\n className={error ? 'p-invalid' : ''}\n placeholder=\"\"\n value={value}\n options={basicOptions}\n optionValue=\"key\"\n optionLabel=\"text\"\n fixedDropdownDir=\"bottom\"\n onChange={event => onBasicChange(event.value)}\n />\n )\n\n return (\n <div className={`${style.item} p-fluid`}>\n {disabled ? (\n <div className=\"p-field p-col-12\" dangerouslySetInnerHTML={{ __html: value }} />\n ) : (\n <>\n <div\n className={`${style['item-title']} p-field p-col-4`}\n dangerouslySetInnerHTML={{ __html: item.text || item.id }}\n />\n <div className={`${style['item-component']} p-field p-col-8`}>\n <span className={style['item-note']}>Type: {item.type}</span>\n {basic && 0 < basic.length ? (\n <span\n className={classNames(style['item-toggle'], {\n [style['item-toggle-disabled']]: basicDisabled\n })}\n onClick={basicDisabled ? null : () => setMode('basic' == mode ? 'advanced' : 'basic')}\n >\n {MODE_TEXTS[basicDisabled ? 'basicDisabled' : mode]}\n </span>\n ) : null}\n {'advanced' == mode ? renderAdvancedMode() : renderBasicMode()}\n </div>\n </>\n )}\n </div>\n )\n}\n\nScriptItemText.propTypes = {\n item: PropTypes.object,\n value: PropTypes.any,\n basic: PropTypes.array\n}\n\nScriptItemText.displayName = 'ScriptItemText'\n\nexport default ScriptItemText\n","import React, { useContext, useState, useRef, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { Transition } from 'react-transition-group'\nimport { collator, encodeText } from '@aytm/app/stats/lib/helpers'\n\nimport ADND from '@aytm/lib/adnd/ADND'\nimport { DataContext } from '@aytm/app/stats/page/sidebar/coding/CodingPanel'\n\nimport {\n CODEBOOK_MIN_LENGTH,\n CODEBOOK_MAX_LENGTH,\n TAG_MIN_LENGTH,\n TAG_MAX_LENGTH,\n DEFAULT_SELECTED_QUESTION\n} from '@aytm/app/stats/page/comments/lib/constants'\n\nimport { Button } from 'primereact/button'\n\nimport CodingTag from '@aytm/app/stats/page/sidebar/coding/CodingTag'\nimport InputNew from '@aytm/app/stats/page/sidebar/coding/components/InputNew'\nimport InputUpdate from '@aytm/app/stats/page/sidebar/coding/components/InputUpdate'\nimport CodebookSettings from '@aytm/app/stats/page/sidebar/coding/components/CodebookSettings'\n\nimport style from '@aytm/app/stats/page/sidebar/coding/styles/CodingPanel.module.scss'\n\nlet dndTimer = null\n\nconst CodingCodebook = ({\n codebook,\n progress,\n error,\n newItem,\n editingItem,\n processingItem,\n processingTag,\n settingsItem,\n collapsedRefs,\n isEditing,\n isProcessing,\n isLoading,\n isCurrentLoading,\n isSkipperLoading,\n onDNDStart,\n onDNDEnd,\n onCollapse\n}) => {\n const {\n tagsList,\n tagsCodebooks,\n selectedQuestion,\n windowUID,\n isSkipperDisabled,\n isTagsManagementDisabled,\n isAiAssistantsOECodingDisabled,\n onError,\n onConfirm,\n onCloseDropdown,\n onCancelEditing,\n onToggleNew\n } = useContext(DataContext)\n\n const [collapsed, setCollapsed] = useState(\n Object.hasOwn(collapsedRefs.current, codebook.codebook) ? collapsedRefs.current[codebook.codebook] : true\n )\n\n const [maxHeight, setMaxHeight] = useState(0)\n\n const [transitionDuration, setTransitionDuration] = useState(500)\n\n const [dndDroppedTag, setDndDroppedTag] = useState(null)\n\n const dndComponentRef = useRef(null)\n const dndItemRef = useRef(null)\n\n const componentRef = useRef(null)\n\n const collapsedRef = useRef()\n collapsedRef.current = collapsed\n\n const inputValueRef = useRef(codebook.codebook)\n\n const isDragging = useRef(false)\n\n const tags = useMemo(() => {\n const _tags = codebook.tags.reduce((acc, cur) => {\n const _tag = tagsList.find(tag =>\n 'sentiment' == codebook.type\n ? cur == tag.tag\n : `${codebook.codebook}: ${cur}` == tag.tag && codebook.type == tag.type\n )\n return _tag && null !== _tag ? acc.concat(_tag) : acc\n }, [])\n if ('sentiment' != codebook.type) {\n _tags.sort((a, b) => collator.compare(a.label, b.label))\n }\n return _tags\n }, [codebook, tagsList])\n\n const onDNDStartTag = () => {\n isDragging.current = true\n dispatchEvent(new CustomEvent('dndStartTag'))\n }\n const onDNDEndTag = () => {\n if (dndTimer) clearTimeout(dndTimer)\n dndTimer = setTimeout(() => {\n isDragging.current = false\n }, 300)\n dispatchEvent(new CustomEvent('dndEndTag'))\n }\n\n const onDNDEnter = useCallback(() => {\n if (isDragging.current) return\n dndComponentRef.current.classList.add(style['component-active'])\n }, [isDragging])\n const onDNDLeave = useCallback(() => {\n if (isDragging.current) return\n dndComponentRef.current.classList.remove(style['component-active'])\n }, [isDragging])\n\n const onDNDDrop = useCallback(\n data => {\n if (isDragging.current) return\n\n const item = data.item || data.data\n if (null === item || (item.windowUID == windowUID && item.codebook == codebook.codebook)) return\n\n const newValue = 'sentiment' == codebook.type ? item.label : `${codebook.codebook}: ${item.label}`\n\n setCollapsed(false)\n\n if (item.windowUID == windowUID) {\n if (tagsList.some(tag => newValue.toLowerCase() == tag.tag.toLowerCase())) {\n onCloseDropdown()\n onCancelEditing()\n\n setDndDroppedTag(item)\n } else {\n onConfirm(\n {\n ...item,\n destination: {\n codebook: 'sentiment' == codebook.type ? null : codebook.codebook,\n type: codebook.type\n }\n },\n 'clone'\n )\n }\n } else {\n onConfirm(\n {\n tag: newValue,\n type: codebook.type,\n label: item.label,\n value: newValue,\n codebook: 'sentiment' == codebook.type ? null : codebook.codebook\n },\n 'create'\n )\n }\n\n setCollapsed(false)\n },\n [codebook, tagsList, windowUID, onConfirm, onCloseDropdown, onCancelEditing]\n )\n\n const onDNDStartCodebook = () => {\n onDNDStart(dndItemRef.current)\n !isSkipperDisabled &&\n !isAiAssistantsOECodingDisabled &&\n dispatchEvent(new CustomEvent('dndStartCodebook', { detail: { guided: !codebook.tags.length } }))\n }\n const onDNDEndCodebook = () => {\n onDNDEnd()\n !isSkipperDisabled && !isAiAssistantsOECodingDisabled && dispatchEvent(new CustomEvent('dndEndCodebook'))\n }\n\n const fetchData = useCallback(() => {\n return { ...codebook, windowUID }\n }, [codebook, windowUID])\n\n const dndComponent =\n !codebook.disabled && !isEditing && !isLoading && !isTagsManagementDisabled\n ? ADND.targets\n .data(\n {\n acceptTypes: ['sidebar-tag'],\n dynamicPosition: true\n },\n { capture: false }\n )\n .onEnter(onDNDEnter)\n .onLeave(onDNDLeave)\n .onDrop(onDNDDrop)\n : null\n\n const dndItem =\n !codebook.disabled && !isEditing && !isLoading && !isTagsManagementDisabled\n ? ADND.sources\n .data({\n type: 'sidebar-codebook',\n clearDragImage: false\n })\n .onStart(onDNDStartCodebook)\n .onEnd(onDNDEndCodebook)\n .fetchData(fetchData)\n : null\n\n const onToggle = () => {\n setCollapsed(!collapsedRef.current)\n setTransitionDuration(500)\n }\n\n const onActionConfirm = useCallback(\n action => {\n const _inputValue = inputValueRef.current.trim()\n const newValue = encodeText(_inputValue, false)\n\n if ('update' == action && newValue == codebook.codebook) {\n onCloseDropdown()\n onCancelEditing()\n } else if (\n 'update' == action &&\n (_inputValue.length < CODEBOOK_MIN_LENGTH || _inputValue.length > CODEBOOK_MAX_LENGTH)\n ) {\n onError({\n codebook: codebook.codebook,\n name: 'updateError',\n message: `A codebook length should be between ${CODEBOOK_MIN_LENGTH} and ${CODEBOOK_MAX_LENGTH} characters`\n })\n } else if (\n 'update' == action &&\n ('sentiments' == _inputValue.toLowerCase() ||\n tagsCodebooks.some(item => newValue.toLowerCase() == item.codebook.toLowerCase()))\n ) {\n onError({\n codebook: codebook.codebook,\n name: 'updateError',\n message: 'A codebook with the same name already exists'\n })\n } else {\n onConfirm(codebook, action, newValue)\n }\n },\n [codebook, tagsCodebooks, onError, onConfirm, onCloseDropdown, onCancelEditing]\n )\n\n const onMergeTag = useCallback(async () => {\n await onConfirm(\n {\n ...dndDroppedTag,\n destination: {\n codebook: 'sentiment' == codebook.type ? null : codebook.codebook,\n type: codebook.type\n }\n },\n 'merge',\n dndDroppedTag.update || dndDroppedTag.label\n )\n setDndDroppedTag(null)\n }, [codebook, dndDroppedTag, onConfirm])\n\n const onAddTag = useCallback(\n value => {\n const _value = value.trim()\n const newValue = 'sentiment' == codebook.type ? _value : `${codebook.codebook}: ${encodeText(_value, false)}`\n\n if (_value.length < TAG_MIN_LENGTH || _value.length > TAG_MAX_LENGTH) {\n onError({\n codebook: codebook.codebook,\n tag: newValue,\n name: 'createError',\n message: `A tag length should be between ${TAG_MIN_LENGTH} and ${TAG_MAX_LENGTH} characters`\n })\n } else if (tagsList.some(tag => newValue.toLowerCase() == tag.tag.toLowerCase())) {\n onError({\n codebook: codebook.codebook,\n tag: newValue,\n name: 'createError',\n message: 'A tag with the same name already exists'\n })\n } else {\n onConfirm(\n {\n tag: newValue,\n type: 'manual',\n label: encodeText(_value, false),\n value: newValue,\n codebook: 'sentiment' == codebook.type ? null : codebook.codebook\n },\n 'create'\n )\n }\n },\n [codebook, tagsList, onError, onConfirm]\n )\n\n useEffect(() => {\n if (dndComponent) dndComponent.connect(dndComponentRef.current)\n\n return () => {\n if (dndComponent) dndComponent.disconnect()\n }\n }, [dndComponent])\n\n useEffect(() => {\n if (dndItem) dndItem.connect(dndItemRef.current)\n\n return () => {\n if (dndItem) dndItem.disconnect()\n }\n }, [dndItem])\n\n useEffect(\n () => processingItem && tags.some(tag => processingItem.tag == tag.tag) && setCollapsed(false),\n [tags, processingItem]\n )\n\n useEffect(() => isProcessing && dndItemRef.current.scrollIntoView(), [isProcessing])\n\n useEffect(() => {\n setMaxHeight(componentRef.current ? componentRef.current.getBoundingClientRect().height : 0)\n setTransitionDuration(collapsed ? 500 : 10)\n\n onCollapse(codebook.codebook, collapsed)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tags, error, collapsed, dndDroppedTag, componentRef.current])\n\n return (\n <div\n ref={dndComponentRef}\n className={classNames(style.codebook, {\n [style['codebook-editting']]: isEditing,\n [style['codebook-processing']]: isCurrentLoading && isSkipperLoading,\n [style['codebook-disabled']]: isProcessing,\n [style['blink']]: isProcessing\n })}\n >\n <div\n className={classNames(style['codebook-header'], {\n [style['codebook-header-collapsed']]: collapsed\n })}\n >\n <div\n ref={dndItemRef}\n className={classNames(style['codebook-subheader'], {\n [style['draggable']]:\n 'sentiment' != codebook.type &&\n selectedQuestion != DEFAULT_SELECTED_QUESTION &&\n !isEditing &&\n !isLoading &&\n !isTagsManagementDisabled\n })}\n onClick={isEditing || isProcessing ? null : onToggle}\n >\n {isCurrentLoading && isSkipperLoading ? (\n <span className={style['codebook-header-fill']} style={{ width: `${progress}%` }}></span>\n ) : null}\n <span className={style['codebook-header-icon']}>\n <i\n className={collapsed ? 'icon-aytmfd-folder-closed' : 'icon-aytmfd-folder-opened'}\n style={{ color: codebook.color }}\n />\n </span>\n <span className={style['codebook-header-title']}>\n <InputUpdate\n value={codebook.codebook}\n maxLength={CODEBOOK_MAX_LENGTH}\n isEditing={isEditing}\n isLoading={isCurrentLoading}\n onChange={inputValue => (inputValueRef.current = inputValue)}\n onConfirm={() => onActionConfirm('update')}\n onCancel={onCancelEditing}\n />\n </span>\n {isEditing || isProcessing ? null : (\n <span className={style['codebook-header-toggle']}>\n <i className=\"icon-aytmfd-chevron-bracket\" />\n </span>\n )}\n </div>\n {isTagsManagementDisabled ? null : (\n <CodebookSettings\n codebookRef={dndItemRef}\n codebook={codebook}\n opened={\n (settingsItem &&\n settingsItem.item == codebook.codebook &&\n settingsItem.type == codebook.type &&\n settingsItem.codebook === undefined) ||\n false\n }\n isEditing={isEditing}\n isLoading={isLoading}\n isCurrentLoading={isCurrentLoading}\n isSkipperLoading={isSkipperLoading}\n onConfirm={onActionConfirm}\n />\n )}\n </div>\n\n {error &&\n error.message &&\n 'createError' != error.name &&\n codebook.codebook == error.codebook &&\n !Object.hasOwn(error, 'tag') && <div className={style['component-error']}>{error.message}</div>}\n\n <Transition in={!collapsed} timeout={transitionDuration}>\n {status => (\n <div\n className={`${style['transition-panel']}${status ? ' ' + style['transition-panel-' + status] : ''}`}\n style={{\n maxHeight: collapsed ? 0 : `${0 < maxHeight ? maxHeight + 40 : 10000}px`,\n transitionDuration: `${transitionDuration}ms`\n }}\n >\n <div ref={componentRef} className={style['codebook-body']}>\n {0 < tags.length ? (\n <div className={style['codebook-items']}>\n {tags.map((tag, index) => (\n <CodingTag\n key={`tag-${tag.type}-${tag.tag}-${index + 1}`}\n tag={tag}\n error={error}\n settingsItem={settingsItem}\n isEditing={editingItem && editingItem.tag == tag.tag}\n isProcessing={processingItem && processingItem.tag == tag.tag}\n isLoading={isLoading}\n isCurrentLoading={isLoading && processingTag.current && processingTag.current.tag == tag.tag}\n onDNDStart={onDNDStartTag}\n onDNDEnd={onDNDEndTag}\n setDndDroppedTag={setDndDroppedTag}\n />\n ))}\n </div>\n ) : null}\n\n {null !== dndDroppedTag ? (\n <div className={style['component-merge']}>\n <div className={style['component-note']}>A tag with the same name already exists</div>\n <div className={style['component-merge-buttons']}>\n <Button\n className=\"p-button-secondary\"\n label=\"Cancel\"\n disabled={isLoading}\n onClick={isLoading ? null : () => setDndDroppedTag(null)}\n />\n <Button\n label=\"Merge tags\"\n loading={isLoading}\n disabled={isLoading}\n onClick={isLoading ? null : () => onMergeTag()}\n />\n </div>\n </div>\n ) : null}\n\n {codebook.disabled || isTagsManagementDisabled ? null : (\n <InputNew\n placeholder=\"New tag\"\n maxLength={TAG_MAX_LENGTH}\n error={\n error &&\n error.message &&\n 'createError' == error.name &&\n codebook.codebook == error.codebook &&\n Object.hasOwn(error, 'tag')\n ? error\n : null\n }\n isAdding={`${codebook.codebook} - tag` == newItem}\n isLoading={isLoading}\n onAdd={onAddTag}\n onToggle={value => onToggleNew(value ? `${codebook.codebook} - tag` : null)}\n />\n )}\n </div>\n </div>\n )}\n </Transition>\n </div>\n )\n}\n\nCodingCodebook.propTypes = {\n codebook: PropTypes.object,\n progress: PropTypes.number,\n error: PropTypes.object,\n newItem: PropTypes.string,\n editingItem: PropTypes.object,\n processingItem: PropTypes.object,\n processingTag: PropTypes.object,\n settingsItem: PropTypes.object,\n collapsedRefs: PropTypes.any,\n isEditing: PropTypes.bool,\n isProcessing: PropTypes.bool,\n isLoading: PropTypes.bool,\n isCurrentLoading: PropTypes.bool,\n isSkipperLoading: PropTypes.bool,\n onDNDStart: PropTypes.func,\n onDNDEnd: PropTypes.func,\n onCollapse: PropTypes.func\n}\n\nCodingCodebook.displayName = 'CodingCodebook'\n\nexport default CodingCodebook\n","import React, { useState, useRef, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport useIsVisible from '@aytm/lib/hooks/useIsVisible'\nimport { encodeText } from '@aytm/app/stats/lib/helpers'\n\nimport ADND from '@aytm/lib/adnd/ADND'\n\nimport { DEFAULT_CODEBOOK } from '@aytm/app/stats/page/sidebar/coding/lib/constants'\nimport {\n CUSTOM_QUESTION_REG,\n SENTIMENTS,\n DEFAULT_SELECTED_QUESTION,\n DEFAULT_ORDER_BY,\n DEFAULT_PER_PAGE,\n DEFAULT_SEARCH_STATE,\n CODEBOOK_MIN_LENGTH,\n CODEBOOK_MAX_LENGTH\n} from '@aytm/app/stats/page/comments/lib/constants'\nimport { getTagsList, questionPositionToId } from '@aytm/app/stats/page/comments/lib/utils'\nimport {\n changeSurveyCodebookState,\n changeSurveyTagState,\n changeTagState,\n generateSurveySkipper\n} from '@aytm/app/stats/page/comments/actions'\n\nimport useDrag from '@aytm/app/stats/page/sidebar/coding/lib/hooks/useDrag'\nimport useEventListener from '@aytm/app/stats/page/comments/lib/hooks/useEventListener'\n\nimport CodingSkipper from '@aytm/app/stats/page/sidebar/coding/CodingSkipper'\nimport CodingCodebook from '@aytm/app/stats/page/sidebar/coding/CodingCodebook'\nimport InputNew from '@aytm/app/stats/page/sidebar/coding/components/InputNew'\n\nimport style from '@aytm/app/stats/page/sidebar/coding/styles/CodingPanel.module.scss'\n\nconst STORAGE_KEY = `${window.surveyId}${window.userId || 0}-codebooks`\n\nlet dndTimer = null\nlet errorTimer = null\n\nexport const DataContext = React.createContext()\n\nconst CodingPanel = ({\n survey = {},\n tagsData = {},\n question = null,\n reports = [],\n reportId,\n reportParams = {},\n windowUID,\n isTagsManagementDisabled = false,\n isSentimentsManagementDisabled = false,\n isAiAssistantsOECodingDisabled,\n onFetch,\n onCodeBooksFetch,\n onTagsFetch,\n onInvalidKey\n}) => {\n const root = document.querySelector('#statistics-contents')\n\n const { tags, codeBooks } = survey\n\n let { selectedQuestion } = reportParams\n selectedQuestion ||= DEFAULT_SELECTED_QUESTION\n\n const [newItem, setNewItem] = useState(null)\n const [editingItem, setEditingItem] = useState(null)\n const [processingItem, setProcessingItem] = useState(null)\n\n const [settingsItem, setSettingsItem] = useState(null)\n\n const [isLoading, setIsLoading] = useState(false)\n const [isSkipperLoading, setIsSkipperLoading] = useState(false)\n\n const [progress, setProgress] = useState(0)\n\n const [error, setError] = useState({})\n\n const dndComponentRef = useRef(null)\n const dndItemRef = useRef(null)\n\n const processingCodebook = useRef(null)\n const processingTag = useRef(null)\n\n const progressRef = useRef()\n progressRef.current = progress\n\n const collapsedRefs = useRef({})\n\n const isVisible = useIsVisible(dndComponentRef && dndComponentRef.current ? dndComponentRef : null)\n\n const tagsList = useMemo(() => {\n const _tags = JSON.parse(JSON.stringify(tags || {}))\n const _codeBooks = JSON.parse(JSON.stringify(codeBooks || []))\n\n if (null !== processingItem && Object.hasOwn(processingItem, 'tag')) {\n _tags[processingItem.type].push(processingItem.tag)\n\n const codebookIndex = _codeBooks.findIndex(codebook => processingItem.codebook == codebook.title)\n if (0 <= codebookIndex) _codeBooks[codebookIndex].tags.push(processingItem.label)\n }\n\n return getTagsList(_tags || {}, {\n codeBooks: _codeBooks,\n cs: tagsData.cs,\n tagsCounters: tagsData.tags || {},\n selectedQuestion,\n isSentimentsManagementDisabled\n })\n }, [processingItem, tags, codeBooks, tagsData.cs, tagsData.tags, selectedQuestion, isSentimentsManagementDisabled])\n\n const tagsCodebooks = useMemo(() => {\n const collapsedStorage = JSON.parse(window.localStorage.getItem(STORAGE_KEY) || '{}')\n\n const _codeBooks = JSON.parse(JSON.stringify(codeBooks || []))\n\n if (null !== processingItem) {\n if (Object.hasOwn(processingItem, 'tag')) {\n const codebookIndex = _codeBooks.findIndex(codebook => processingItem.codebook == codebook.title)\n if (0 <= codebookIndex) _codeBooks[codebookIndex].tags.push(processingItem.label)\n } else {\n _codeBooks.push({\n title: processingItem.codebook,\n type: processingItem.type,\n tags: [],\n ts: processingItem.ts,\n disabled: true\n })\n }\n }\n\n const codebooks = _codeBooks.map(codebook => {\n collapsedRefs.current[codebook.title] = Object.hasOwn(collapsedStorage, codebook.title)\n ? collapsedStorage[codebook.title]\n : Object.hasOwn(collapsedRefs.current, codebook.title)\n ? collapsedRefs.current[codebook.title]\n : 1 < codeBooks.length || DEFAULT_CODEBOOK.toLowerCase() != codebook.title.toLowerCase()\n\n return {\n codebook: codebook.title,\n type: codebook.type,\n label: codebook.title,\n tags: codebook.tags.filter((v, i, a) => a.indexOf(v) == i),\n count: codebook.tags.reduce(\n (acc, cur) => acc + (tagsList.find(tag => `${codebook.title}: ${cur}` == tag.tag)?.count || 0),\n 0\n ),\n question: codebook.qid || null,\n color: `#${codebook.color || '414141'}`,\n ts: 'string' == typeof codebook.ts ? new Date(codebook.ts).getTime() : codebook.ts || 0,\n disabled: codebook.disabled\n }\n })\n codebooks.sort((a, b) => a.ts - b.ts)\n\n if (!isSentimentsManagementDisabled) {\n collapsedRefs.current['Sentiments'] = Object.hasOwn(collapsedStorage, 'Sentiments')\n ? collapsedStorage['Sentiments']\n : Object.hasOwn(collapsedRefs.current, 'Sentiments')\n ? collapsedRefs.current['Sentiments']\n : true\n\n codebooks.splice(0, 0, {\n codebook: 'Sentiments',\n type: 'sentiment',\n label: 'Sentiments',\n tags: SENTIMENTS.map(tag => tag.value),\n count: tagsList.filter(tag => 'sentiment' == tag.type).reduce((acc, cur) => acc + (cur.count || 0), 0),\n color: '#414141',\n disabled: true\n })\n }\n\n window.localStorage.setItem(STORAGE_KEY, JSON.stringify(collapsedRefs.current))\n\n return codebooks\n }, [processingItem, tagsList, codeBooks, isSentimentsManagementDisabled])\n\n const isSkipperDisabled = useMemo(\n () =>\n !selectedQuestion ||\n selectedQuestion == DEFAULT_SELECTED_QUESTION ||\n CUSTOM_QUESTION_REG.test(selectedQuestion) ||\n (null !== question && ['ir', 'va'].includes(question.type)) ||\n (null !== question &&\n ['oex', 'cn'].includes(question.type) &&\n selectedQuestion == questionPositionToId(question.position, survey)),\n [survey, question, selectedQuestion]\n )\n\n const onError = useCallback(error => {\n setError(error)\n\n if (errorTimer) clearTimeout(errorTimer)\n errorTimer = setTimeout(() => setError({}), 5000)\n\n return () => {\n if (errorTimer) clearTimeout(errorTimer)\n }\n }, [])\n\n const onProgress = useCallback(value => {\n if (Number(value) === value)\n setProgress(\n Math.min(\n 100,\n progressRef.current > value ? progressRef.current + 4 / (progressRef.current - value) : value + 0.5\n )\n )\n else setProgress(Math.min(100, value ? progressRef.current + 1 : 0))\n }, [])\n\n const onCloseDropdown = useCallback(() => setSettingsItem(null), [])\n\n const onCancelEditing = useCallback(() => {\n setError({})\n setEditingItem(null)\n }, [])\n\n const onToggleNew = useCallback(\n value => {\n if (!editingItem) {\n setNewItem(value)\n setError({})\n }\n },\n [editingItem]\n )\n\n const onCollapse = (codebook, state) => {\n if (null === state) delete collapsedRefs.current[codebook]\n else collapsedRefs.current[codebook] = state\n\n window.localStorage.setItem(STORAGE_KEY, JSON.stringify(collapsedRefs.current))\n }\n\n const onCodebookConfirm = useCallback(\n async (codebook, action, newValue = null) => {\n switch (action) {\n case 'update':\n case 'create':\n case 'clone':\n case 'delete': {\n delete codebook.windowUID\n\n const params = {\n codebook,\n action,\n onFetch: (data, updated) => {\n if ('update' == action) {\n onCollapse(codebook.codebook, null)\n }\n\n if (['create', 'clone'].includes(action) && data.codebook) {\n onCollapse(data.codebook.title, false)\n }\n\n if ('delete' == action) {\n onCollapse(codebook.codebook, null)\n }\n\n onCodeBooksFetch(data, updated)\n },\n onError: error => {\n if ('update' == action && newValue) {\n onCollapse(newValue, null)\n }\n\n onError(error)\n },\n setIsLoading: (value, error) => {\n if (!value) {\n processingCodebook.current = null\n setProcessingItem(null)\n\n !error && onToggleNew(null)\n }\n\n setIsLoading(value)\n },\n onInvalidKey\n }\n\n if ('update' == action && newValue) {\n if (\n codebook.codebook.toLowerCase() != newValue.toLowerCase() &&\n tagsCodebooks.some(item => item.codebook.toLowerCase() == newValue.toLowerCase())\n ) {\n onError({\n codebook: codebook.codebook,\n name: `${action}Error`,\n message: 'A codebook with the same name already exists'\n })\n break\n }\n params.newValue = newValue\n\n onCollapse(newValue, collapsedRefs.current[codebook.codebook])\n }\n\n if ('create' == action && null === newItem) {\n const newCodebook = {\n codebook: `${codebook.codebook} ...`,\n type: 'manual',\n label: `${codebook.codebook} ...`,\n tags: [],\n ts: Date.now()\n }\n\n processingCodebook.current = newCodebook\n setProcessingItem(newCodebook)\n }\n\n if ('clone' == action) {\n const newCodebook = {\n codebook: `${codebook.codebook} ...`,\n type: 'manual',\n label: `${codebook.codebook} ...`,\n tags: [],\n ts: Date.now()\n }\n\n processingCodebook.current = newCodebook\n setProcessingItem(newCodebook)\n } else if ('create' != action) {\n processingCodebook.current = codebook\n }\n\n onCloseDropdown()\n onCancelEditing()\n\n await changeSurveyCodebookState(params)\n break\n }\n case 'skipper':\n case 'skipper-guided': {\n const params = {\n codebook,\n selectedQuestion,\n onFetch,\n onError,\n onProgress,\n setIsLoading: value => {\n if (!value) {\n processingCodebook.current = null\n\n onProgress(value)\n }\n\n setIsLoading(value)\n setIsSkipperLoading(value)\n },\n onInvalidKey\n }\n\n if ('skipper-guided' == action) {\n params.guided = true\n }\n\n processingCodebook.current = codebook\n\n onCloseDropdown()\n onCancelEditing()\n\n await generateSurveySkipper(params)\n break\n }\n default:\n break\n }\n },\n [\n tagsCodebooks,\n selectedQuestion,\n newItem,\n onError,\n onProgress,\n onFetch,\n onCodeBooksFetch,\n onInvalidKey,\n onCancelEditing,\n onCloseDropdown,\n onToggleNew\n ]\n )\n\n const onTagConfirm = useCallback(\n async (tag, action, newValue = null) => {\n switch (action) {\n case 'update':\n case 'create':\n case 'clone':\n case 'delete': {\n delete tag.windowUID\n\n const params = {\n tag,\n action,\n onFetch: onTagsFetch,\n onError: onError,\n setIsLoading: (value, error) => {\n if (!value) {\n processingTag.current = null\n setProcessingItem(null)\n\n !error && onToggleNew(null)\n }\n\n setIsLoading(value)\n },\n onInvalidKey\n }\n\n if ('update' == action && newValue) {\n if (\n tag.tag.toLowerCase() != newValue.toLowerCase() &&\n tagsList.some(item => item.tag.toLowerCase() == newValue.toLowerCase())\n ) {\n onError({\n tag: tag.tag,\n codebook: tag.codebook,\n name: `${action}Error`,\n message: 'A tag with the same name already exists'\n })\n break\n }\n params.newValue = newValue\n }\n\n if ('create' == action && null === newItem) {\n const newTag = Object.assign({}, tag)\n\n processingTag.current = newTag\n setProcessingItem(newTag)\n }\n\n if ('clone' == action) {\n const newTag = Object.assign({}, tag, tag.destination, {\n tag: null !== tag.destination.codebook ? `${tag.destination.codebook}: ${tag.label}` : tag.label,\n value: null !== tag.destination.codebook ? `${tag.destination.codebook}: ${tag.label}` : tag.label\n })\n\n processingTag.current = newTag\n setProcessingItem(newTag)\n } else if ('create' != action) {\n processingTag.current = tag\n }\n\n onCloseDropdown()\n onCancelEditing()\n\n await changeSurveyTagState(params)\n break\n }\n case 'merge': {\n const params = {\n tag,\n action,\n onFetch,\n onError: onError,\n setIsLoading,\n onInvalidKey\n }\n\n params.newValue = newValue\n\n onCloseDropdown()\n onCancelEditing()\n\n await changeSurveyTagState(params)\n break\n }\n case 'remove_found':\n case 'remove_page': {\n const { query, pageSize, orderBy, orderDirection } = reportParams\n\n const params = {\n tag,\n action: 'delete',\n request: {\n ...DEFAULT_SEARCH_STATE.request,\n query: query || [],\n selectedQuestion: selectedQuestion || DEFAULT_SELECTED_QUESTION,\n pageSize: pageSize || DEFAULT_PER_PAGE,\n orderBy: orderBy || DEFAULT_ORDER_BY,\n orderDirection: orderDirection || 'asc'\n },\n onFetch: onTagsFetch,\n onError: onError,\n setIsLoading: value => {\n if (!value) {\n processingTag.current = null\n }\n\n setIsLoading(value)\n },\n onInvalidKey\n }\n\n // eslint-enable unicorn/consistent-destructuring\n if ('remove_page' == action) {\n params.responseId = tagsData.cs.map(item => item.response.uid)\n }\n\n processingTag.current = tag\n\n onCloseDropdown()\n onCancelEditing()\n\n await changeTagState(params)\n break\n }\n default:\n break\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n tagsList,\n tagsData.cs,\n reportParams,\n newItem,\n onError,\n onProgress,\n onFetch,\n onTagsFetch,\n onInvalidKey,\n onCancelEditing,\n onCloseDropdown,\n onToggleNew\n ]\n )\n\n const onConfirm = useCallback(\n (item, action, newValue = null) =>\n Object.hasOwn(item, 'tag') ? onTagConfirm(item, action, newValue) : onCodebookConfirm(item, action, newValue),\n [onCodebookConfirm, onTagConfirm]\n )\n\n const onAddCodebook = useCallback(\n (value, tags) => {\n const _value = value.trim()\n const newValue = encodeText(_value, false)\n\n if (_value.length < CODEBOOK_MIN_LENGTH || _value.length > CODEBOOK_MAX_LENGTH) {\n onError({\n codebook: newValue,\n name: 'createError',\n message: `A codebook length should be between ${CODEBOOK_MIN_LENGTH} and ${CODEBOOK_MAX_LENGTH} characters`\n })\n } else if (\n 'sentiments' == _value.toLowerCase() ||\n (!Array.isArray(tags) && tagsCodebooks.some(item => newValue.toLowerCase() == item.codebook.toLowerCase()))\n ) {\n onError({\n codebook: newValue,\n name: 'createError',\n message: 'A codebook with the same name already exists'\n })\n } else {\n const codebook = { codebook: newValue, type: 'manual' }\n if (Array.isArray(tags)) {\n codebook.tags = tags.map(tag => encodeText(tag.trim(), false))\n }\n\n onCodebookConfirm(codebook, 'create')\n }\n },\n [tagsCodebooks, onError, onCodebookConfirm]\n )\n\n const onClickOutside = useCallback(() => {\n if (!editingItem) setSettingsItem(null)\n }, [editingItem])\n\n const onToggleSettings = useCallback(\n (item, type, codebook) => {\n if (!editingItem) {\n setSettingsItem(\n settingsItem && settingsItem.item == item && settingsItem.type == type && settingsItem.codebook === codebook\n ? null\n : { item, type, codebook }\n )\n\n onToggleNew(null)\n }\n },\n [editingItem, settingsItem, onToggleNew]\n )\n\n const onKeyDownHandler = useCallback(\n event => {\n if (27 == event.keyCode) {\n onCloseDropdown()\n onCancelEditing()\n }\n },\n [onCancelEditing, onCloseDropdown]\n )\n\n const onAction = useCallback(\n (item, action) => {\n if (Object.hasOwn(item, 'tag')) {\n dispatchEvent(new CustomEvent('assignMultipleCancel'))\n if ('update' == action) {\n onToggleNew(null)\n setEditingItem(item)\n }\n if ('assign' == action) {\n setSettingsItem(null)\n dispatchEvent(new CustomEvent('assignMultiple', { detail: item }))\n }\n } else {\n if ('update' == action) {\n onToggleNew(null)\n setEditingItem(item)\n }\n }\n },\n [onToggleNew]\n )\n\n const onDNDStart = ref => {\n dndItemRef.current = ref\n }\n const onDNDEnd = () => {\n if (dndTimer) clearTimeout(dndTimer)\n dndTimer = setTimeout(() => {\n dndItemRef.current = null\n }, 300)\n }\n\n const onDNDEnter = () => {\n if (null !== dndItemRef.current) return\n dndComponentRef.current.classList.add(style['component-active'])\n }\n const onDNDLeave = () => {\n if (null !== dndItemRef.current) return\n dndComponentRef.current.classList.remove(style['component-active'])\n }\n\n const onDNDDrop = useCallback(\n data => {\n if (null !== dndItemRef.current) return\n\n const item = data.item || data.data\n if (null === item || item.windowUID == windowUID) return\n\n onCodebookConfirm(item, 'create')\n },\n [windowUID, onCodebookConfirm]\n )\n\n const dndComponent =\n !editingItem && !processingItem && !isLoading && !isTagsManagementDisabled\n ? ADND.targets\n .data(\n {\n acceptTypes: ['sidebar-codebook']\n },\n { capture: false }\n )\n .onEnter(onDNDEnter)\n .onLeave(onDNDLeave)\n .onDrop(onDNDDrop)\n : null\n\n useEffect(() => {\n if (dndComponent) dndComponent.connect(dndComponentRef.current)\n\n return () => {\n if (dndComponent) dndComponent.disconnect()\n }\n }, [dndComponent])\n\n useEffect(() => {\n if (settingsItem) {\n window.addEventListener('keydown', onKeyDownHandler)\n }\n\n return () => {\n window.removeEventListener('keydown', onKeyDownHandler)\n }\n }, [settingsItem, onKeyDownHandler])\n\n useEffect(() => {\n if (isVisible) return\n\n onCloseDropdown()\n onCancelEditing()\n }, [isVisible, onCloseDropdown, onCancelEditing])\n\n useDrag(root, isVisible)\n\n useEventListener('tagsSidebarSkipper', event => {\n if (event.detail) {\n const { codebook } = event.detail\n\n onCodebookConfirm(codebook, 0 < codebook.tags.length ? 'skipper' : 'skipper-guided')\n }\n })\n\n useEventListener('tagsSidebarLoading', event => {\n if (event.detail) {\n const { codebook, tag, isLoading: eventIsLoading } = event.detail\n processingCodebook.current = codebook || null\n processingTag.current = tag || null\n\n setIsLoading(eventIsLoading)\n\n if (tag != undefined && !eventIsLoading) {\n dispatchEvent(new CustomEvent('assignMultiple', { detail: tagsList.find(t => t.tag == tag) }))\n }\n }\n })\n\n const dataContextValue = useMemo(() => {\n return {\n tagsList,\n tagsCodebooks,\n reportId,\n reports,\n selectedQuestion,\n windowUID,\n isSkipperDisabled,\n isTagsManagementDisabled,\n isAiAssistantsOECodingDisabled,\n onError,\n onAction,\n onConfirm,\n onClickOutside,\n onCloseDropdown,\n onCancelEditing,\n onToggleNew,\n onToggleSettings\n }\n }, [\n tagsList,\n tagsCodebooks,\n reportId,\n reports,\n selectedQuestion,\n windowUID,\n isSkipperDisabled,\n isTagsManagementDisabled,\n isAiAssistantsOECodingDisabled,\n onError,\n onAction,\n onConfirm,\n onClickOutside,\n onCloseDropdown,\n onCancelEditing,\n onToggleNew,\n onToggleSettings\n ])\n\n return (\n <div className={style.component}>\n <DataContext.Provider value={dataContextValue}>\n <div ref={dndComponentRef}>\n {0 < tagsCodebooks.length\n ? tagsCodebooks.map((codebook, index) => (\n <CodingCodebook\n key={`codebook-${codebook.type}-${codebook.codebook}-${index + 1}`}\n codebook={codebook}\n progress={progress}\n error={error}\n newItem={newItem}\n editingItem={editingItem}\n processingItem={processingItem}\n processingTag={processingTag}\n settingsItem={settingsItem}\n collapsedRefs={collapsedRefs}\n isEditing={editingItem && editingItem.codebook == codebook.codebook && !editingItem.tag}\n isProcessing={processingItem && processingItem.codebook == codebook.codebook && !processingItem.tag}\n isLoading={isLoading}\n isCurrentLoading={\n isLoading && processingCodebook.current && processingCodebook.current.codebook == codebook.codebook\n }\n isSkipperLoading={isSkipperLoading}\n onDNDStart={onDNDStart}\n onDNDEnd={onDNDEnd}\n onCollapse={onCollapse}\n />\n ))\n : null}\n </div>\n\n {isTagsManagementDisabled ? null : (\n <>\n <InputNew\n placeholder=\"New codebook\"\n maxLength={CODEBOOK_MAX_LENGTH}\n error={\n error &&\n error.message &&\n 'createError' == error.name &&\n Object.hasOwn(error, 'codebook') &&\n !Object.hasOwn(error, 'tag')\n ? error\n : null\n }\n multiline\n isAdding={'codebook' == newItem}\n isLoading={isLoading}\n onAdd={onAddCodebook}\n onToggle={value => onToggleNew(value ? 'codebook' : null)}\n />\n\n {error &&\n error.message &&\n 'skipperError' != error.name &&\n !Object.hasOwn(error, 'codebook') &&\n !Object.hasOwn(error, 'tag') && <div className={style['component-error']}>{error.message}</div>}\n\n <CodingSkipper\n root={root}\n error={error}\n progress={progress}\n isLoading={isLoading}\n isSkipperLoading={null === processingCodebook.current && isSkipperLoading}\n setIsLoading={setIsLoading}\n setIsSkipperLoading={setIsSkipperLoading}\n onProgress={onProgress}\n onFetch={onFetch}\n onInvalidKey={onInvalidKey}\n />\n </>\n )}\n </DataContext.Provider>\n </div>\n )\n}\n\nCodingPanel.propTypes = {\n survey: PropTypes.object,\n tagsData: PropTypes.object,\n question: PropTypes.object,\n reports: PropTypes.array,\n reportId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n reportParams: PropTypes.object,\n windowUID: PropTypes.string,\n isTagsManagementDisabled: PropTypes.bool,\n isSentimentsManagementDisabled: PropTypes.bool,\n isAiAssistantsOECodingDisabled: PropTypes.bool,\n onFetch: PropTypes.func,\n onCodeBooksFetch: PropTypes.func,\n onTagsFetch: PropTypes.func,\n onInvalidKey: PropTypes.func\n}\n\nCodingPanel.displayName = 'CodingPanel'\n\nexport default CodingPanel\n\nADND().connect()\n","import React, { useContext, useState, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport { DataContext } from '@aytm/app/stats/page/sidebar/coding/CodingPanel'\n\nimport { generateSurveySkipper } from '@aytm/app/stats/page/comments/actions'\n\nimport SidebarPopup from '@aytm/app/stats/page/sidebar/components/SidebarPopup'\n\nimport style from '@aytm/app/stats/page/sidebar/coding/styles/CodingPanel.module.scss'\n\nconst SKIPPER_ACTIVE_HELP =\n 'Leverage automatic topical analysis to categorize and quantify your unstructured data effortlessly. <b>\"Skipper - auto code\"</b> will read all verbatim responses under the selected question, create a codebook with relevant tags, and assign them accordingly. You\\'ll be able to review and edit the results, if needed.<br /><br /><b>Pro tip:</b> Need more control? Manually create a custom codebook and use the <b>\"Skipper - apply\"</b> command (found under the codebook\\'s gear icon) to automatically tag responses with your custom tags. You can also create a custom codebook, give it a meaningful name and click <b>\"Skipper - clone, finalize, and apply\"</b> to let Skipper clone your codebook, edit existing tags (if there are any), create new ones and assign them to responses.'\nconst SKIPPER_DISABLED_HELP =\n '<b>Start by selecting an open ended question on the right.</b> Leverage automatic topical analysis to categorize and quantify your unstructured data effortlessly. <b>\"Skipper - auto code\"</b> will read all verbatim responses under the selected question, create a codebook with relevant tags, and assign them accordingly. You\\'ll be able to review and edit the results, if needed.<br /><br /><b>Pro tip:</b> Need more control? Manually create a custom codebook and use the <b>\"Skipper - apply\"</b> command (found under the codebook\\'s gear icon) to automatically tag responses with your custom tags. You can also create a custom codebook, give it a meaningful name and click <b>\"Skipper - clone, finalize, and apply\"</b> to let Skipper clone your codebook, edit existing tags (if there are any), create new ones and assign them to responses.'\n\nconst CodingSkipper = ({\n root,\n error,\n progress,\n isLoading,\n isSkipperLoading,\n setIsLoading,\n setIsSkipperLoading,\n onProgress,\n onFetch,\n onInvalidKey\n}) => {\n const {\n selectedQuestion,\n isSkipperDisabled,\n isAiAssistantsOECodingDisabled,\n onError,\n onCloseDropdown,\n onCancelEditing\n } = useContext(DataContext)\n\n const [progressQuestion, setProgressQuestion] = useState(selectedQuestion)\n\n const onSkipperConfirm = useCallback(async () => {\n const params = {\n selectedQuestion,\n onFetch,\n onError,\n onProgress,\n setIsLoading: value => {\n if (!value) {\n onProgress(value)\n }\n\n setIsLoading(value)\n setIsSkipperLoading(value)\n },\n onInvalidKey\n }\n\n setProgressQuestion(selectedQuestion)\n\n onCloseDropdown()\n onCancelEditing()\n\n await generateSurveySkipper(params)\n }, [\n selectedQuestion,\n setIsLoading,\n setIsSkipperLoading,\n onError,\n onProgress,\n onFetch,\n onInvalidKey,\n onCloseDropdown,\n onCancelEditing\n ])\n\n useEffect(\n () => setProgressQuestion(isSkipperLoading ? progressQuestion : selectedQuestion),\n [selectedQuestion, progressQuestion, isSkipperLoading]\n )\n\n return (\n <>\n {isAiAssistantsOECodingDisabled ? null : (\n <div className={`${style.row} ${style['row-skipper']}`}>\n <div\n className={classNames(style.skipper, {\n [style['skipper-processing']]: isSkipperLoading,\n [style['skipper-disabled']]: isLoading || isSkipperDisabled\n })}\n >\n {isSkipperLoading ? (\n <span className={style['skipper-fill']} style={{ width: `${progress}%` }}></span>\n ) : null}\n <span\n className={classNames(\n 'stat-skipper-tags-button',\n '-dtr-stat-skipper-tags-button',\n style['skipper-button']\n )}\n onClick={isLoading || isSkipperDisabled ? null : onSkipperConfirm}\n >\n <i className=\"icon-aytmfd-skipper\"></i>\n Skipper - auto code\n {isSkipperDisabled ? null : ` ${progressQuestion.toUpperCase()}`}\n </span>\n </div>\n\n <SidebarPopup\n id=\"tags-skipper\"\n root={root}\n help={isSkipperDisabled ? SKIPPER_DISABLED_HELP : SKIPPER_ACTIVE_HELP}\n />\n </div>\n )}\n\n {error &&\n error.message &&\n 'skipperError' == error.name &&\n !Object.hasOwn(error, 'codebook') &&\n !Object.hasOwn(error, 'tag') && <div className={style['component-error']}>{error.message}</div>}\n </>\n )\n}\n\nCodingSkipper.propTypes = {\n root: PropTypes.any,\n error: PropTypes.any,\n progress: PropTypes.any,\n isLoading: PropTypes.bool,\n isSkipperLoading: PropTypes.bool,\n setIsLoading: PropTypes.func,\n setIsSkipperLoading: PropTypes.func,\n onProgress: PropTypes.func,\n onFetch: PropTypes.func,\n onInvalidKey: PropTypes.func\n}\n\nCodingSkipper.displayName = 'CodingSkipper'\n\nexport default CodingSkipper\n","import React, { memo, useContext, useRef, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { encodeText } from '@aytm/app/stats/lib/helpers'\n\nimport ADND from '@aytm/lib/adnd/ADND'\nimport { DataContext } from '@aytm/app/stats/page/sidebar/coding/CodingPanel'\n\nimport { SENTIMENTS_ICON_HASH, TAG_MAX_LENGTH, TAG_MIN_LENGTH } from '@aytm/app/stats/page/comments/lib/constants'\n\nimport InputUpdate from '@aytm/app/stats/page/sidebar/coding/components/InputUpdate'\nimport TagSettings from '@aytm/app/stats/page/sidebar/coding/components/TagSettings'\n\nimport style from '@aytm/app/stats/page/sidebar/coding/styles/CodingPanel.module.scss'\n\nconst CodingTag = memo(\n ({\n tag,\n error,\n settingsItem,\n isEditing,\n isProcessing,\n isLoading,\n isCurrentLoading,\n onDNDStart,\n onDNDEnd,\n setDndDroppedTag\n }) => {\n const { tagsList, windowUID, isTagsManagementDisabled, onError, onConfirm, onCloseDropdown, onCancelEditing } =\n useContext(DataContext)\n\n const dndItemRef = useRef(null)\n\n const inputValueRef = useRef(tag.label)\n\n const fetchData = useCallback(() => {\n return { ...tag, windowUID }\n }, [tag, windowUID])\n\n const onActionConfirm = useCallback(\n action => {\n const _inputValue = inputValueRef.current.trim()\n const newValue =\n 'update' == action\n ? 'sentiment' == tag.type\n ? _inputValue\n : `${tag.codebook}: ${encodeText(_inputValue, false)}`\n : null\n\n if ('update' == action && newValue == tag.tag) {\n onCloseDropdown()\n onCancelEditing()\n } else if ('update' == action && (_inputValue.length < TAG_MIN_LENGTH || _inputValue.length > TAG_MAX_LENGTH)) {\n onError({\n codebook: tag.codebook,\n tag: tag.tag,\n name: 'updateError',\n message: `A tag length should be between ${TAG_MIN_LENGTH} and ${TAG_MAX_LENGTH} characters`\n })\n } else if ('update' == action && tagsList.some(tag => newValue.toLowerCase() == tag.tag.toLowerCase())) {\n onCloseDropdown()\n onCancelEditing()\n\n setDndDroppedTag({ ...tag, update: _inputValue })\n } else {\n onConfirm(\n {\n ...tag,\n destination:\n 'update' == action\n ? {\n codebook: 'sentiment' == tag.type ? null : tag.codebook,\n type: tag.type\n }\n : null\n },\n action,\n encodeText(_inputValue, false)\n )\n }\n },\n [tag, tagsList, onError, onConfirm, onCloseDropdown, onCancelEditing, setDndDroppedTag]\n )\n\n const dndItem =\n !isEditing && !isLoading && !isTagsManagementDisabled\n ? ADND.sources\n .data({\n type: 'sentiment' == tag.type ? 'sidebar-tag-sentiment' : 'sidebar-tag',\n clearDragImage: false\n })\n .onStart(onDNDStart)\n .onEnd(onDNDEnd)\n .fetchData(fetchData)\n : null\n\n useEffect(() => {\n if (dndItem) dndItem.connect(dndItemRef.current)\n\n return () => {\n if (dndItem) dndItem.disconnect()\n }\n }, [dndItem])\n\n useEffect(() => isProcessing && dndItemRef.current.scrollIntoView(), [isProcessing])\n\n return (\n <>\n <div\n className={classNames(style['codebook-item'], {\n [style['codebook-item-disabled']]: isProcessing,\n [style['blink']]: isProcessing\n })}\n type={tag.type}\n >\n <div\n ref={dndItemRef}\n className={classNames(style['codebook-subitem'], {\n [style['draggable']]: !isEditing && !isLoading && !isTagsManagementDisabled\n })}\n >\n <span className={style['codebook-item-icon']}>\n <i\n className={classNames({\n ['icon-aytmfd-tag']: 'sentiment' != tag.type,\n [`icon-aytmfd-sentiment-${SENTIMENTS_ICON_HASH[tag.value]}`]: 'sentiment' == tag.type\n })}\n />\n </span>\n <div className={style['codebook-item-tag']}>\n <InputUpdate\n value={tag.label}\n maxLength={TAG_MAX_LENGTH}\n isEditing={isEditing}\n isLoading={isCurrentLoading}\n onChange={inputValue => (inputValueRef.current = inputValue)}\n onConfirm={() => onActionConfirm('update')}\n onCancel={onCancelEditing}\n />\n </div>\n </div>\n {isEditing || isProcessing ? null : <div className={style['codebook-item-count']}>{tag.count}</div>}\n {isTagsManagementDisabled ? null : (\n <TagSettings\n tagRef={dndItemRef}\n tag={tag}\n opened={\n (settingsItem &&\n settingsItem.item == tag.tag &&\n settingsItem.type == tag.type &&\n settingsItem.codebook === tag.codebook) ||\n false\n }\n isEditing={isEditing}\n isLoading={isLoading}\n isCurrentLoading={isCurrentLoading}\n onConfirm={onActionConfirm}\n />\n )}\n </div>\n\n {error &&\n error.message &&\n 'createError' != error.name &&\n tag.codebook == error.codebook &&\n tag.tag == error.tag && <div className={style['component-error']}>{error.message}</div>}\n </>\n )\n }\n)\n\nCodingTag.propTypes = {\n tag: PropTypes.object,\n error: PropTypes.object,\n settingsItem: PropTypes.object,\n isEditing: PropTypes.bool,\n isProcessing: PropTypes.bool,\n isCurrentLoading: PropTypes.bool,\n isLoading: PropTypes.bool,\n onDNDStart: PropTypes.func,\n onDNDEnd: PropTypes.func,\n setDndDroppedTag: PropTypes.func\n}\n\nCodingTag.displayName = 'CodingTag'\n\nexport default CodingTag\n","import React, { useContext, useState, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { DataContext } from '@aytm/app/stats/page/sidebar/coding/CodingPanel'\n\nimport { getCodebooksItemOptionsList } from '@aytm/app/stats/page/comments/lib/utils'\n\nimport SettingsButton from '@aytm/app/stats/page/sidebar/coding/components/SettingsButton'\n\nlet statusTimer = null\n\nconst CodebookSettings = ({\n codebookRef,\n codebook,\n opened = false,\n isEditing = false,\n isLoading = false,\n isCurrentLoading = false,\n isSkipperLoading = false,\n onConfirm\n}) => {\n const {\n reports,\n reportId,\n selectedQuestion,\n isSkipperDisabled,\n isAiAssistantsOECodingDisabled,\n onAction,\n onCancelEditing,\n onToggleSettings\n } = useContext(DataContext)\n\n const [selectedAction, setSelectedAction] = useState(null)\n const [selectedActionStatus, setSelectedActionStatus] = useState(null)\n const [usedReportsCount, setUsedReportsCount] = useState(0)\n\n const onActionCancel = useCallback(() => {\n setSelectedAction(null)\n if (isEditing) onCancelEditing()\n }, [isEditing, onCancelEditing])\n\n const onActionConfirm = useCallback(() => {\n onConfirm(selectedAction)\n }, [selectedAction, onConfirm])\n\n const onActionClick = useCallback(\n action => {\n if ('copy' == action) {\n if (statusTimer) clearTimeout(statusTimer)\n\n const text = [codebook.codebook].concat(codebook.tags).join('\\n')\n if (window.navigator?.clipboard) {\n const type = 'text/plain'\n const blob = new Blob([text], { type })\n const data = [new ClipboardItem({ [type]: blob })]\n window.navigator.clipboard.write(data)\n } else {\n const textarea = document.createElement('textarea')\n textarea.value = text\n textarea.style.position = 'fixed'\n textarea.style.left = '-999999px'\n document.body.appendChild(textarea)\n textarea.select()\n document.execCommand('copy')\n document.body.removeChild(textarea)\n }\n setSelectedActionStatus('copied')\n } else {\n if ('assign' != action) setSelectedAction(action)\n if (onAction) onAction(codebook, action)\n }\n },\n [codebook, onAction]\n )\n\n const onToggle = useCallback(() => onToggleSettings(codebook.codebook, codebook.type), [codebook, onToggleSettings])\n\n const options = useMemo(\n () =>\n getCodebooksItemOptionsList({\n codebook,\n selectedQuestion,\n selectedAction,\n selectedActionStatus,\n isSkipperDisabled,\n isAiAssistantsOECodingDisabled,\n onActionCancel,\n onActionConfirm,\n onActionClick\n }),\n [\n codebook,\n selectedQuestion,\n selectedAction,\n selectedActionStatus,\n isSkipperDisabled,\n isAiAssistantsOECodingDisabled,\n onActionCancel,\n onActionConfirm,\n onActionClick\n ]\n )\n\n useEffect(() => {\n if (statusTimer) clearTimeout(statusTimer)\n statusTimer = setTimeout(() => setSelectedActionStatus(null), 1500)\n\n return () => {\n if (statusTimer) clearTimeout(statusTimer)\n }\n }, [selectedActionStatus])\n\n useEffect(() => {\n if (['update', 'delete'].includes(selectedAction)) {\n const usedReports = reports\n .filter(\n report =>\n report.logicData &&\n report.logicData.some(\n item => Object.hasOwn(item, 'codebook') && item.codebook == codebook.codebook.toUpperCase()\n )\n )\n .map(report => report.id)\n .concat(\n codebook.tags.reduce(\n (acc, tag) =>\n acc.concat(\n reports\n .filter(\n report =>\n report.logicData &&\n report.logicData.some(\n item => Object.hasOwn(item, 'tag') && item.tag == `${codebook.codebook}: ${tag}`.toUpperCase()\n )\n )\n .map(report => report.id)\n ),\n []\n )\n )\n .filter((v, i, a) => i == a.indexOf(v))\n setUsedReportsCount(usedReports.length)\n } else setUsedReportsCount(0)\n }, [codebook.codebook, codebook.tags, reportId, reports, selectedAction])\n\n return 0 < options.length ? (\n <SettingsButton\n itemRef={codebookRef}\n options={options}\n warning={\n selectedAction && ['update', 'delete'].includes(selectedAction) && 0 < usedReportsCount\n ? `This codebook or its tags is used in ${usedReportsCount} report${\n 1 == usedReportsCount ? '' : 's'\n }. They will also be affected`\n : null\n }\n opened={opened}\n isEditing={isEditing}\n isLoading={isLoading}\n isCurrentLoading={isCurrentLoading}\n isSkipperLoading={isSkipperLoading}\n onActionCancel={onActionCancel}\n onToggle={onToggle}\n />\n ) : null\n}\n\nCodebookSettings.propTypes = {\n codebookRef: PropTypes.any,\n codebook: PropTypes.object,\n opened: PropTypes.bool,\n isEditing: PropTypes.bool,\n isLoading: PropTypes.bool,\n isCurrentLoading: PropTypes.bool,\n isSkipperLoading: PropTypes.bool,\n onConfirm: PropTypes.func\n}\n\nCodebookSettings.displayName = 'CodebookSettings'\n\nexport default CodebookSettings\n","import React, { useState, useRef, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { stopEvent } from '@aytm/lib/common/func'\n\nimport { FORBIDDEN_SYMBOLS } from '@aytm/app/stats/page/sidebar/coding//lib/constants'\n\nimport { Button } from 'primereact/button'\nimport { InputTextarea } from 'primereact/inputtextarea'\n\nimport style from '@aytm/app/stats/page/sidebar/coding/styles/CodingPanel.module.scss'\n\nconst onInputKeyDown = event => {\n if (13 == event.keyCode) stopEvent(event)\n}\n\nexport const DataContext = React.createContext()\n\nconst InputNew = ({ placeholder, maxLength, error, multiline, isAdding, isLoading, onAdd, onToggle }) => {\n const [inputValue, setInputValue] = useState('')\n\n const callbackRef = useRef(null)\n\n const onInputKeyUp = useCallback(\n event => {\n if (13 == event.keyCode) onAdd(inputValue)\n if (27 == event.keyCode) onToggle(false)\n },\n [inputValue, onAdd, onToggle]\n )\n\n const onInputChange = event => setInputValue(event.target.value)\n\n const onInputPaste = useCallback(\n event => {\n event.preventDefault()\n\n let text =\n (event.clipboardData || window.clipboardData).getData('Text') || event.clipboardData.getData('text/plain')\n text = text.replace(new RegExp(`[${FORBIDDEN_SYMBOLS}]`, 'gi'), '')\n\n const paste = () => {\n text = text.replace(/(\\r\\n|\\n|\\r|\\t|\\v)/gm, ' ').trim()\n\n const el = event.currentTarget\n\n const l = text.length\n const start = el.selectionStart\n const end = el.selectionEnd\n\n const valueBefore = el.value.slice(0, start)\n const valueAfter = el.value.slice(end)\n\n text = `${valueBefore}${text}${valueAfter}`.slice(0, maxLength)\n\n setInputValue(text)\n callbackRef.current = () => {\n el.setSelectionRange(start + l, start + l)\n el.blur()\n el.focus()\n }\n }\n\n if (multiline) {\n let textLines = (text && 0 < text.length ? text.split(/(\\r\\n|\\n|\\r)/gm) : []).filter(t => 0 < t.trim().length)\n\n const item = textLines.shift()\n textLines = textLines.filter((v, i, a) => a.indexOf(v) == i)\n\n if (0 < textLines.length) {\n onAdd(item, textLines)\n } else paste()\n } else {\n paste()\n }\n },\n [maxLength, multiline, onAdd]\n )\n\n useEffect(() => {\n if (null !== callbackRef.current && 'function' === typeof callbackRef.current) {\n callbackRef.current()\n callbackRef.current = null\n }\n }, [inputValue])\n\n useEffect(() => !isAdding && setInputValue(''), [isAdding])\n\n return (\n <div className={style['component-add']}>\n {isAdding ? (\n <>\n <div className={style['component-textarea']}>\n <InputTextarea\n className=\"p-composite\"\n placeholder={placeholder}\n value={inputValue}\n maxLength={maxLength}\n keyfilter={new RegExp(`^[^${FORBIDDEN_SYMBOLS}]*$`, 'i')}\n rows={1}\n autoFocus\n autoResize\n disabled={isLoading}\n onKeyDown={isLoading ? null : onInputKeyDown}\n onKeyUp={isLoading ? null : onInputKeyUp}\n onChange={isLoading ? null : onInputChange}\n onPaste={isLoading ? null : onInputPaste}\n />\n <span className={style['component-textarea-count']}>{maxLength - inputValue.length}</span>\n </div>\n\n {error && <div className={style['component-error']}>{error.message}</div>}\n\n <div className={style['component-add-buttons']}>\n <Button\n className=\"p-button-secondary\"\n label=\"Cancel\"\n disabled={isLoading}\n onClick={isLoading ? null : () => onToggle(false)}\n />\n <Button\n label=\"Ok\"\n loading={isLoading}\n disabled={isLoading}\n onClick={isLoading ? null : () => onAdd(inputValue)}\n />\n </div>\n </>\n ) : (\n <span\n className={classNames(style['component-add-button'], {\n [style['disabled']]: isLoading\n })}\n onClick={isLoading ? null : () => onToggle(true)}\n >\n <i className=\"icon-aytmfd-add\" />\n Add a {placeholder.toLowerCase()}\n </span>\n )}\n </div>\n )\n}\n\nInputNew.propTypes = {\n placeholder: PropTypes.string,\n maxLength: PropTypes.number,\n error: PropTypes.object,\n multiline: PropTypes.bool,\n isAdding: PropTypes.bool,\n isLoading: PropTypes.bool,\n onAdd: PropTypes.func,\n onToggle: PropTypes.func\n}\n\nInputNew.displayName = 'InputNew'\n\nexport default InputNew\n","import React, { useState, useRef, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { stopEvent } from '@aytm/lib/common/func'\nimport { decodeText } from '@aytm/app/stats/lib/helpers'\n\nimport { FORBIDDEN_SYMBOLS } from '@aytm/app/stats/page/sidebar/coding//lib/constants'\n\nimport { InputTextarea } from 'primereact/inputtextarea'\n\nimport style from '@aytm/app/stats/page/sidebar/coding/styles/CodingPanel.module.scss'\n\nconst onInputKeyDown = event => {\n if (13 == event.keyCode) stopEvent(event)\n}\n\nexport const DataContext = React.createContext()\n\nconst InputUpdate = ({ value, maxLength, isEditing, isLoading, onChange, onConfirm, onCancel }) => {\n const [inputValue, setInputValue] = useState(decodeText(value, false))\n\n const callbackRef = useRef(null)\n\n const onInputKeyUp = event => {\n if (13 == event.keyCode) onConfirm(inputValue)\n if (27 == event.keyCode) onCancel()\n }\n\n const onInputChange = event => setInputValue(event.target.value)\n\n const onInputPaste = useCallback(\n event => {\n event.preventDefault()\n\n let text =\n (event.clipboardData || window.clipboardData).getData('Text') || event.clipboardData.getData('text/plain')\n text = text\n .replace(new RegExp(`[${FORBIDDEN_SYMBOLS}]`, 'gi'), '')\n .replace(/(\\r\\n|\\n|\\r|\\t|\\v)/gm, ' ')\n .trim()\n\n const el = event.currentTarget\n\n const l = text.length\n const start = el.selectionStart\n const end = el.selectionEnd\n\n const valueBefore = el.value.slice(0, start)\n const valueAfter = el.value.slice(end)\n\n text = `${valueBefore}${text}${valueAfter}`.slice(0, maxLength)\n\n setInputValue(text)\n callbackRef.current = () => {\n el.setSelectionRange(start + l, start + l)\n el.blur()\n el.focus()\n }\n },\n [maxLength]\n )\n\n useEffect(() => {\n if (null !== callbackRef.current && 'function' === typeof callbackRef.current) {\n callbackRef.current()\n callbackRef.current = null\n }\n }, [inputValue])\n\n useEffect(() => {\n onChange(inputValue)\n }, [inputValue, onChange])\n\n useEffect(() => {\n !isEditing && setInputValue(decodeText(value, false))\n }, [value, isEditing])\n\n return isEditing ? (\n <div className={style['component-textarea']}>\n <InputTextarea\n className=\"p-composite\"\n value={inputValue}\n maxLength={maxLength}\n keyfilter={new RegExp(`^[^${FORBIDDEN_SYMBOLS}]*$`, 'i')}\n rows={1}\n autoFocus\n autoResize\n disabled={isLoading}\n onKeyDown={isLoading ? null : onInputKeyDown}\n onKeyUp={isLoading ? null : onInputKeyUp}\n onChange={isLoading ? null : onInputChange}\n onPaste={isLoading ? null : onInputPaste}\n />\n <span className={style['component-textarea-count']}>{maxLength - inputValue.length}</span>\n </div>\n ) : (\n <span dangerouslySetInnerHTML={{ __html: value }} />\n )\n}\n\nInputUpdate.propTypes = {\n value: PropTypes.string,\n maxLength: PropTypes.number,\n isEditing: PropTypes.bool,\n isLoading: PropTypes.bool,\n onChange: PropTypes.func,\n onConfirm: PropTypes.func,\n onCancel: PropTypes.func\n}\n\nInputUpdate.displayName = 'InputUpdate'\n\nexport default InputUpdate\n","import React, { useContext, useRef, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport useIsVisible from '@aytm/lib/hooks/useIsVisible'\n\nimport { DataContext } from '@aytm/app/stats/page/sidebar/coding/CodingPanel'\n\nimport SettingsDropdown from '@aytm/app/stats/page/sidebar/coding/components/SettingsDropdown'\n\nimport Portal from '@aytm/lib/rfd-ui/components/basic/portal'\nimport ClickOutside from '@aytm/lib/rfd-ui/components/basic/click-outside'\n\nimport style from '@aytm/app/stats/page/sidebar/coding/styles/CodingPanel.module.scss'\n\nconst SettingsButton = ({\n itemRef,\n options,\n warning,\n opened = false,\n isEditing = false,\n isLoading = false,\n isCurrentLoading = false,\n isSkipperLoading = false,\n onActionCancel,\n onToggle\n}) => {\n const { onClickOutside } = useContext(DataContext)\n\n const buttonRef = useRef(null)\n\n const isVisible = useIsVisible(opened && buttonRef && buttonRef.current ? buttonRef : null)\n\n useEffect(() => {\n if (!opened) onActionCancel()\n }, [opened, onActionCancel])\n\n useEffect(() => {\n if (!isEditing) onActionCancel()\n }, [isEditing, onActionCancel])\n\n return isLoading && !isCurrentLoading ? null : (\n <div\n className={classNames(style['component-settings'], {\n [style['component-settings-opened']]: opened || isCurrentLoading,\n [style['codebook-item-settings-inactive']]: isLoading\n })}\n >\n {isCurrentLoading ? (\n isSkipperLoading ? (\n <span className={style['component-settings-icon']}>\n <i className=\"icon-aytmfd-skipper\" />\n </span>\n ) : (\n <span className={style['component-settings-icon']}>\n <i className=\"icon-aytmfd-spin aytmfd-spin\" />\n </span>\n )\n ) : isLoading ? null : (\n <span ref={buttonRef} className={style['component-settings-icon']} onClick={onToggle}>\n <i className=\"icon-aytmfd-config\" />\n </span>\n )}\n {opened ? (\n <Portal>\n <ClickOutside\n onClickOutside={event => {\n if (buttonRef.current.contains(event.target) || buttonRef.current.isEqualNode(event.target)) return\n\n onClickOutside()\n }}\n >\n {isVisible ? (\n <SettingsDropdown itemRef={itemRef} buttonRef={buttonRef} options={options} warning={warning} />\n ) : null}\n </ClickOutside>\n </Portal>\n ) : null}\n </div>\n )\n}\n\nSettingsButton.propTypes = {\n itemRef: PropTypes.any,\n options: PropTypes.array,\n warning: PropTypes.string,\n opened: PropTypes.bool,\n isEditing: PropTypes.bool,\n isLoading: PropTypes.bool,\n isCurrentLoading: PropTypes.bool,\n isSkipperLoading: PropTypes.bool,\n onActionCancel: PropTypes.func,\n onToggle: PropTypes.func\n}\n\nSettingsButton.displayName = 'SettingsButton'\n\nexport default SettingsButton\n","import React, { useRef, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport Dropdown from '@aytm/lib/rfd-ui/components/basic/dropdown'\n\nimport style from '@aytm/app/stats/page/sidebar/coding/styles/CodingPanel.module.scss'\n\nlet updateTimer = null\n\nconst SettingsDropdown = ({ itemRef, buttonRef, options, warning }) => {\n const dropdownRef = useRef(null)\n\n const resizeObserverRef = useRef(null)\n\n const updateDropdownPosition = (repeat = false) => {\n if (!dropdownRef.current) return\n\n const buttonRect = buttonRef.current.getBoundingClientRect()\n const dropdownRect = dropdownRef.current.getBoundingClientRect()\n\n const scrollTop = window.scrollY || document.documentElement.scrollTop\n const innerHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight\n\n dropdownRef.current.style.top =\n innerHeight < buttonRect.top + buttonRect.height + dropdownRect.height\n ? `${scrollTop + buttonRect.top - dropdownRect.height}px`\n : `${scrollTop + buttonRect.top + buttonRect.height}px`\n dropdownRef.current.style.left = `${buttonRect.left}px`\n\n updateTimer && clearTimeout(updateTimer)\n if (repeat) {\n updateTimer = setTimeout(() => {\n updateTimer = null\n if (!dropdownRef.current) return\n\n updateDropdownPosition()\n }, 100)\n }\n }\n const updateDropdownPositionHandler = () => updateDropdownPosition(true)\n\n useEffect(\n () => updateDropdownPosition(),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [options]\n )\n\n useEffect(() => {\n const container = document.querySelector('#statistics-contents')\n\n updateDropdownPosition()\n\n window.addEventListener('scroll', updateDropdownPositionHandler)\n window.addEventListener('resize', updateDropdownPositionHandler)\n\n container.addEventListener('scroll', updateDropdownPositionHandler)\n\n // eslint-disable-next-line compat/compat\n resizeObserverRef.current ||= new ResizeObserver(() => updateDropdownPosition())\n if (itemRef.current) resizeObserverRef.current.observe(itemRef.current)\n\n return () => {\n window.removeEventListener('scroll', updateDropdownPositionHandler)\n window.removeEventListener('resize', updateDropdownPositionHandler)\n\n container.removeEventListener('scroll', updateDropdownPositionHandler)\n\n resizeObserverRef.current.disconnect()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n return (\n <Dropdown dropdownRef={dropdownRef} width=\"auto\" opened={true}>\n {() => (\n <div className={`comments-toolbar-dropdown ${style['component-dropdown']}`}>\n {warning ? <div className={style['component-dropdown-warning']}>{warning}</div> : null}\n <ul className=\"comments-toolbar-dropdown-inner\">\n {options.map((option, idx) => (\n <li\n key={`dropdown-option-${idx}`}\n className={classNames(style['component-dropdown-option'], {\n [style['component-dropdown-option-disabled']]: option.disabled\n })}\n onClick={option.onClick}\n >\n {option.icon ? <i className={option.icon} /> : null}\n <span\n className={style['component-dropdown-option-text']}\n dangerouslySetInnerHTML={{ __html: option.label }}\n ></span>\n {option.status ? (\n <span className={style['component-dropdown-option-status']}>{option.status}</span>\n ) : null}\n </li>\n ))}\n </ul>\n </div>\n )}\n </Dropdown>\n )\n}\n\nSettingsDropdown.propTypes = {\n itemRef: PropTypes.any,\n buttonRef: PropTypes.any,\n options: PropTypes.array,\n warning: PropTypes.string,\n opened: PropTypes.bool\n}\n\nSettingsDropdown.displayName = 'SettingsDropdown'\n\nexport default SettingsDropdown\n","import React, { useContext, useState, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { DataContext } from '@aytm/app/stats/page/sidebar/coding/CodingPanel'\n\nimport { getTagsItemOptionsList } from '@aytm/app/stats/page/comments/lib/utils'\n\nimport SettingsButton from '@aytm/app/stats/page/sidebar/coding/components/SettingsButton'\n\nconst TagSettings = ({\n tagRef,\n tag,\n opened = false,\n isEditing = false,\n isLoading = false,\n isCurrentLoading = false,\n onConfirm\n}) => {\n const { reports, reportId, onAction, onCancelEditing, onToggleSettings } = useContext(DataContext)\n\n const [selectedAction, setSelectedAction] = useState(null)\n const [usedReportsCount, setUsedReportsCount] = useState(0)\n\n const onActionCancel = useCallback(() => {\n setSelectedAction(null)\n if (isEditing) onCancelEditing()\n }, [isEditing, onCancelEditing])\n\n const onActionConfirm = useCallback(() => {\n onConfirm(selectedAction)\n }, [selectedAction, onConfirm])\n\n const onActionClick = useCallback(\n action => {\n if ('assign' != action) setSelectedAction(action)\n if (onAction) onAction(tag, action)\n },\n [tag, onAction]\n )\n\n const onToggle = useCallback(() => onToggleSettings(tag.tag, tag.type, tag.codebook || null), [tag, onToggleSettings])\n\n const options = useMemo(\n () =>\n getTagsItemOptionsList({\n tag,\n selectedAction,\n onActionCancel,\n onActionConfirm,\n onActionClick\n }),\n [tag, selectedAction, onActionCancel, onActionConfirm, onActionClick]\n )\n\n useEffect(() => {\n if (['update', 'delete'].includes(selectedAction)) {\n const usedReports = reports\n .filter(\n report =>\n report.logicData &&\n report.logicData.some(item => Object.hasOwn(item, 'tag') && item.tag == tag.tag.toUpperCase())\n )\n .map(report => report.id)\n .filter((v, i, a) => i == a.indexOf(v))\n setUsedReportsCount(usedReports.length)\n } else setUsedReportsCount(0)\n }, [tag.tag, reportId, reports, selectedAction])\n\n return 0 < options.length ? (\n <SettingsButton\n itemRef={tagRef}\n options={options}\n warning={\n selectedAction && ['update', 'delete'].includes(selectedAction) && 0 < usedReportsCount\n ? `This tag is used in ${usedReportsCount} report${\n 1 == usedReportsCount ? '' : 's'\n }. They will also be affected`\n : null\n }\n opened={opened}\n isEditing={isEditing}\n isLoading={isLoading}\n isCurrentLoading={isCurrentLoading}\n onActionCancel={onActionCancel}\n onToggle={onToggle}\n />\n ) : null\n}\n\nTagSettings.propTypes = {\n tagRef: PropTypes.any,\n tag: PropTypes.object,\n opened: PropTypes.bool,\n isEditing: PropTypes.bool,\n isLoading: PropTypes.bool,\n isCurrentLoading: PropTypes.bool,\n onConfirm: PropTypes.func\n}\n\nTagSettings.displayName = 'TagSettings'\n\nexport default TagSettings\n","export const DEFAULT_CODEBOOK = 'Default codebook'\n\nexport const FORBIDDEN_SYMBOLS = '\"\\':;&<>'\n","import { useState, useEffect, useLayoutEffect } from 'react'\nimport { stopEvent } from '@aytm/lib/common/func'\nimport { itemTypeFromEvent } from '@aytm/lib/adnd/ADNDHelpers'\n\nconst useDrag = (root, isVisible) => {\n const [isDragging, setIsDragging] = useState(false)\n\n const onDragLeaveHandler = () => {\n setIsDragging(false)\n }\n\n const onDragOverHandler = event => {\n const type = itemTypeFromEvent(event)\n if ('sidebar-tag' != type) return\n\n const rootRect = root.getBoundingClientRect()\n\n if (\n event.clientY >= rootRect.top &&\n event.clientY <= rootRect.top + rootRect.height &&\n event.clientX >= rootRect.x &&\n event.clientX <= rootRect.x + rootRect.width\n ) {\n setIsDragging(true)\n\n if (\n event.clientY >= rootRect.top &&\n event.clientY <= rootRect.top + 80 &&\n event.clientX >= rootRect.x &&\n event.clientX <= rootRect.x + rootRect.width\n ) {\n root.scrollBy(0, -10)\n }\n\n if (\n event.clientY >= rootRect.top + rootRect.height - 80 &&\n event.clientY <= rootRect.top + rootRect.height &&\n event.clientX >= rootRect.x &&\n event.clientX <= rootRect.x + rootRect.width\n ) {\n root.scrollBy(0, 10)\n }\n } else setIsDragging(false)\n }\n\n useEffect(() => {\n if (isVisible) {\n document.addEventListener('dragover', onDragOverHandler)\n } else {\n onDragLeaveHandler()\n\n document.removeEventListener('dragover', onDragOverHandler)\n }\n\n return () => {\n onDragLeaveHandler()\n\n document.removeEventListener('dragover', onDragOverHandler)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isVisible])\n\n useLayoutEffect(() => {\n const currentScrollY = window.scrollY\n\n const preventDocumentScroll = event => {\n stopEvent(event)\n\n window.scrollTo({ top: currentScrollY, behavior: 'instant' })\n // window.scrollTo({ top: currentScrollY })\n }\n\n if (isDragging) {\n document.addEventListener('scroll', preventDocumentScroll, true)\n document.addEventListener('dragleave', onDragLeaveHandler)\n document.addEventListener('dragend', onDragLeaveHandler)\n } else {\n document.removeEventListener('scroll', preventDocumentScroll, true)\n document.removeEventListener('dragleave', onDragLeaveHandler)\n document.removeEventListener('dragend', onDragLeaveHandler)\n }\n\n return () => {\n document.removeEventListener('scroll', preventDocumentScroll, true)\n document.removeEventListener('dragleave', onDragLeaveHandler)\n document.removeEventListener('dragend', onDragLeaveHandler)\n }\n }, [isDragging])\n}\n\nexport default useDrag\n","// lib\nimport React, { useState, useRef, useEffect, useCallback } from 'react'\nimport PropTypes from 'prop-types'\n\nimport ADND from '@aytm/lib/adnd/ADND'\n\n// components\nimport Popup from '@aytm/lib/rfd-ui/components/basic/popup'\nimport SidebarPopup from '@aytm/app/stats/page/sidebar/components/SidebarPopup'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/components/styles/CustomQuestion.module.scss'\n\nconst CustomQuestionButton = ({ root, item, features, windowUID, addCustomQuestion, onDNDStart, onDNDEnd }) => {\n const [disabled, setDisabled] = useState(false)\n\n const timer = useRef(null)\n\n const dndListItemRef = useRef()\n\n const createCustomQuestion = useCallback(() => Object.assign({}, item.default), [item])\n\n const onClick = useCallback(() => {\n setDisabled(true)\n\n const question = createCustomQuestion()\n addCustomQuestion(question)\n\n timer.current && clearTimeout(timer.current)\n timer.current = setTimeout(() => setDisabled(false), 1000)\n\n return () => timer.current && clearTimeout(timer.current)\n }, [addCustomQuestion, createCustomQuestion])\n\n const dndListItem = features[item.feature].disabled\n ? null\n : ADND.sources\n .data({\n type: `question-custom-${windowUID}`,\n clearDragImage: false\n })\n .onStart(onDNDStart)\n .onEnd(onDNDEnd)\n .fetchData(createCustomQuestion)\n\n useEffect(() => {\n if (dndListItem) dndListItem.connect(dndListItemRef.current)\n\n return () => {\n if (dndListItem) dndListItem.disconnect()\n }\n }, [dndListItem])\n\n return (\n <div ref={dndListItemRef} className={`${style.row} p-fluid`}>\n {features[item.feature].available ? (\n <Popup\n className=\"rfd-ui-popup-notification rfd-ui-popup-notification-warning\"\n targetClassName=\"p-field p-col-12\"\n width=\"254px\"\n trigger=\"hover\"\n direction=\"topleft\"\n content={() => (\n <div>\n <p>\n <span className={`stat-upgrade-icon stat-upgrade-icon-${features[item.feature].onPackage.id}`}>\n <i className={`icon-aytmfd-${features[item.feature].onPackage.id}`}></i>\n </span>\n Upgrade to <span className=\"stat-upgrade-plan\">{features[item.feature].onPackage.name}</span> plan to\n use this functionality\n </p>\n </div>\n )}\n >\n <a\n className={style.button}\n href={features[item.feature].onPackage.upgradeURL}\n target={'_blank'}\n rel=\"noreferrer\"\n >\n <div className={style['button-text']}>\n {item.icon ? <i className={`icon-aytmfd-${item.icon}`} /> : null}\n <span dangerouslySetInnerHTML={{ __html: item.text }}></span>\n </div>\n <span className={style['button-lock-icon']}>\n <i className=\"icon-aytmfd-lock\"></i>\n </span>\n </a>\n </Popup>\n ) : features[item.feature].disabled ? (\n <Popup\n className=\"rfd-ui-popup-notification rfd-ui-popup-notification-warning\"\n targetClassName=\"p-field p-col-12\"\n width=\"254px\"\n trigger=\"hover\"\n direction=\"topleft\"\n content={() => (\n <div>\n <p>\n PLEASE LOGIN/JOIN THE TEAM TO UNLOCK ALL FEATURES <br />\n OF THE STAT REPORT\n </p>\n </div>\n )}\n >\n <div className={style.button}>\n <div className={style['button-text']}>\n {item.icon ? <i className={`icon-aytmfd-${item.icon}`} /> : null}\n {item.text}\n </div>\n <span className={style['button-lock-icon']}>\n <i className=\"icon-aytmfd-lock\"></i>\n </span>\n </div>\n </Popup>\n ) : (\n <div className={style.button} onClick={disabled ? null : onClick}>\n <div className={style['button-text']}>\n {item.icon ? <i className={`icon-aytmfd-${item.icon}`} /> : null}\n {item.text}\n </div>\n <span className={style['button-handle']}>\n <i className=\"icon-aytmfd-handle\"></i>\n </span>\n </div>\n )}\n {0 < item.help.length ? <SidebarPopup root={root} width=\"300px\" help={item.help} /> : null}\n </div>\n )\n}\n\nCustomQuestionButton.propTypes = {\n root: PropTypes.any,\n item: PropTypes.object,\n features: PropTypes.object,\n windowUID: PropTypes.string,\n addCustomQuestion: PropTypes.func,\n onDNDStart: PropTypes.func,\n onDNDEnd: PropTypes.func\n}\n\nCustomQuestionButton.displayName = 'CustomQuestionButton'\n\nexport default CustomQuestionButton\n\nADND().connect()\n","// lib\nimport React, { useRef, useEffect, useReducer } from 'react'\n// import ReactDOM from 'react-dom'\nimport PropTypes from 'prop-types'\n\nimport ADND from '@aytm/lib/adnd/ADND'\n\nimport useEventListener from '@aytm/app/stats/page/comments/lib/hooks/useEventListener'\n\nimport { dropTargetReducer } from '@aytm/app/stats/page/sidebar/components/reducers'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/components/styles/DropTargetContainer.module.scss'\n\nconst DropTargetContainer = ({ children, root, acceptTypes, typesTitles, windowUID, onDNDDrop }) => {\n const [state, dispatch] = useReducer(dropTargetReducer, {\n showDropTarget: false,\n dropTargetHTML: ''\n })\n\n const dndDropTargetRef = useRef(null)\n\n const dndDropTarget = state.showDropTarget\n ? ADND.targets\n .data({\n acceptTypes,\n dynamicPosition: true\n })\n .onDrop(data => {\n if (windowUID != data.data.windowUID) return\n onDNDDrop(data.data)\n })\n : null\n\n useEffect(() => {\n if (state.showDropTarget && null === dndDropTargetRef.current) {\n dndDropTargetRef.current = document.createElement('div')\n dndDropTargetRef.current.className = style['drop-target']\n root.appendChild(dndDropTargetRef.current)\n }\n\n if (dndDropTarget) dndDropTarget.connect(dndDropTargetRef.current)\n\n return () => {\n if (dndDropTarget) dndDropTarget.disconnect()\n\n if (root.contains(dndDropTargetRef.current)) {\n root.removeChild(dndDropTargetRef.current)\n }\n dndDropTargetRef.current = null\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dndDropTarget])\n\n useEventListener('showDropTarget', event => {\n if (Object.hasOwn(event.detail, 'type') && acceptTypes.includes(event.detail.type)) {\n if (event.detail.show) {\n const type = typesTitles[event.detail.type]\n const html = `<b>Drop your ${type} here</b><br/>if you want to use it's clone in a different report of this survey.<br/><br/>Original ${type} will remain in the report on the right and its clone will be temporary saved in this tab and available for some time in your browser.`\n\n dispatch({ type: 'SHOW_DROP_TARGET', request: { html } })\n } else dispatch({ type: 'HIDE_DROP_TARGET' })\n } else dispatch({ type: 'HIDE_DROP_TARGET' })\n })\n\n return state.showDropTarget ? (\n <div className={style.component} dangerouslySetInnerHTML={{ __html: state.dropTargetHTML }}></div>\n ) : (\n <>{children}</>\n )\n}\n\nDropTargetContainer.propTypes = {\n children: PropTypes.any,\n root: PropTypes.any,\n acceptTypes: PropTypes.array,\n typesTitles: PropTypes.object,\n windowUID: PropTypes.string,\n onDNDDrop: PropTypes.func\n}\n\nDropTargetContainer.displayName = 'DropTargetContainer'\n\nexport default DropTargetContainer\n\nADND().connect()\n","// lib\nimport React, { useState, useRef, useEffect, useCallback } from 'react'\nimport PropTypes from 'prop-types'\n\nimport ADND from '@aytm/lib/adnd/ADND'\n\n// components\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/components/styles/CustomQuestion.module.scss'\n\nconst PinnedCustomQuestion = ({ item, addCustomQuestion, removePinnedQuestion, onDNDStart, onDNDEnd }) => {\n const [disabled, setDisabled] = useState(false)\n\n const timer = useRef(null)\n\n const dndListItemRef = useRef()\n\n const createCustomQuestion = useCallback(() => Object.assign({}, item.data), [item])\n\n const onClick = useCallback(() => {\n setDisabled(true)\n\n const question = createCustomQuestion()\n addCustomQuestion(question)\n\n timer.current && clearTimeout(timer.current)\n timer.current = setTimeout(() => setDisabled(false), 1000)\n\n return () => timer.current && clearTimeout(timer.current)\n }, [addCustomQuestion, createCustomQuestion])\n\n const dndListItem = ADND.sources\n .data({\n type: 'pinned-question-custom',\n clearDragImage: false\n })\n .onStart(onDNDStart)\n .onEnd(onDNDEnd)\n .fetchData(createCustomQuestion)\n\n useEffect(() => {\n if (dndListItem) dndListItem.connect(dndListItemRef.current)\n\n return () => {\n if (dndListItem) dndListItem.disconnect()\n }\n }, [dndListItem])\n\n return (\n <div ref={dndListItemRef} className={`${style.row} p-fluid`}>\n {'function' == typeof removePinnedQuestion ? (\n <span className={`${style['remove']}`} onClick={() => removePinnedQuestion(item.index)}>\n <i className=\"icon-aytmfd-delete\" />\n </span>\n ) : null}\n <div className={style.button} onClick={disabled ? null : onClick}>\n <div className={style['button-text']}>\n {item.icon ? <i className={`icon-aytmfd-${item.icon}`} /> : null}\n <span dangerouslySetInnerHTML={{ __html: item.text }}></span>\n </div>\n <span className={style['button-handle']}>\n <i className=\"icon-aytmfd-handle\"></i>\n </span>\n </div>\n </div>\n )\n}\n\nPinnedCustomQuestion.propTypes = {\n item: PropTypes.object,\n addCustomQuestion: PropTypes.func,\n removePinnedQuestion: PropTypes.func,\n onDNDStart: PropTypes.func,\n onDNDEnd: PropTypes.func\n}\n\nPinnedCustomQuestion.displayName = 'PinnedCustomQuestion'\n\nexport default PinnedCustomQuestion\n\nADND().connect()\n","// lib\nimport React, { useState, useRef, useCallback } from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport Popup from '@aytm/lib/rfd-ui/components/basic/popup'\n\nimport ClickOutside from '@aytm/lib/rfd-ui/components/basic/click-outside'\n\n// styles\n\nconst SidebarPopup = ({ id, root, width, help }) => {\n const [show, setShow] = useState(false)\n const [offset, setOffset] = useState(0)\n\n const popupRef = useRef(null)\n\n const scrollCallback = useCallback(() => {\n setShow(false)\n }, [setShow])\n\n const countOffset = () => {\n if (!popupRef.current || !popupRef.current.refPopup) {\n setOffset(0)\n return\n }\n const rect = popupRef.current.refPopup.refPopup.getBoundingClientRect()\n const clientHeight = document.documentElement.clientHeight\n setOffset(Math.max(0, rect.bottom - clientHeight + 10))\n }\n\n return (\n <Popup\n ref={popupRef}\n className=\"rfd-ui-popup-stat\"\n targetClassName={id != undefined ? `pendo-help-stat-${id}` : ''}\n width={width || '600px'}\n direction=\"righttop\"\n arrowOffset={offset}\n popupOffset={-offset}\n portal={true}\n show={Boolean(show)}\n hideOtherPopupsOnShow={true}\n header={() => <div> </div>}\n content={() => (\n <ClickOutside\n style={{ display: 'inline-block' }}\n onClickOutside={event => {\n if (\n popupRef.current.refPopupTarget.contains(event.target) ||\n event.target.isSameNode(popupRef.current.refPopupTarget) ||\n popupRef.current.refPopup.refPopup.contains(event.target) ||\n event.target.isSameNode(popupRef.current.refPopup.refPopup)\n )\n return\n setShow(false)\n }}\n >\n <div dangerouslySetInnerHTML={{ __html: help }}></div>\n </ClickOutside>\n )}\n onShow={() => {\n window.addEventListener('scroll', scrollCallback)\n window.addEventListener('resize', scrollCallback)\n root && root.addEventListener('scroll', scrollCallback)\n countOffset()\n }}\n onHide={() => {\n window.removeEventListener('scroll', scrollCallback)\n window.removeEventListener('resize', scrollCallback)\n root && root.removeEventListener('scroll', scrollCallback)\n countOffset()\n }}\n >\n <i className=\"icon-aytmfd-help\" onClick={() => setShow(!show)} />\n </Popup>\n )\n}\n\nSidebarPopup.propTypes = {\n id: PropTypes.string,\n root: PropTypes.any,\n width: PropTypes.string,\n help: PropTypes.string\n}\n\nSidebarPopup.displayName = 'SidebarPopup'\n\nexport default SidebarPopup\n","const DEFAULT_STATE = {\n showDropTarget: false,\n dropTargetHTML: ''\n}\n\nexport const dropTargetReducer = (state = DEFAULT_STATE, action) => {\n switch (action.type) {\n case 'SHOW_DROP_TARGET': {\n return {\n ...state,\n showDropTarget: true,\n dropTargetHTML: action.request.html\n }\n }\n case 'HIDE_DROP_TARGET': {\n return {\n ...state,\n showDropTarget: false,\n dropTargetHTML: ''\n }\n }\n default:\n throw new Error('Unknown action type')\n }\n}\n","// lib\nimport React, { useState, useRef, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\nimport useEventListener from '@aytm/app/stats/page/comments/lib/hooks/useEventListener'\n\n// components\nimport { Button } from 'primereact/button'\nimport { RadioButton } from 'primereact/radiobutton'\nimport { Checkbox } from 'primereact/checkbox'\nimport { Slider } from 'primereact/slider'\nimport { Dropdown } from 'primereact/dropdown'\n\nimport SidebarPopup from '@aytm/app/stats/page/sidebar/components/SidebarPopup'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/crosstab/styles/CrosstabPanel.module.scss'\n\nconst getQuestionId = question =>\n 0 < question.position ? `${(question.pre_type && 'pq') || 'q'}${question.visual_position}` : question.id\n\nconst getQuestionIcon = question =>\n 'mp' == question.type\n ? 'radios' == question.subType\n ? `${window.icon_question_types[question.type]}-rb`\n : `${window.icon_question_types[question.type]}-cb`\n : window.icon_question_types[question.type]\n\nconst getBannerKey = question => {\n const id = getQuestionId(question)\n\n const type = question.variant || question.type\n const key = `${id}${'psc' == type ? 'psc' : ''}`\n\n return 'dlx' == question.type\n ? Object.hasOwn(question, 'batches')\n ? `${key}:${question.batches.map(b => `sq${b.position}`).join('-')}`\n : `${key}:${question.answerVariants.map(av => `a${av.position}`).join('-')}`\n : key\n}\n\nconst toggleCheckbox = (event, callback) => {\n if ('Enter' === event.key || 13 === event.keyCode) {\n callback()\n }\n}\n\nconst CrosstabPanel = ({ root, model, data, disabled, onBannersSelect, onLevelsChange, onExport }) => {\n const { totalNumberOfConnections } = data\n\n const { responses, totalRespondents } = model\n const { traits, variables, questions, topsModes, levels, unlockNumber } = data\n\n const [banners, setBanners] = useState([])\n\n const [showCounts, setShowCounts] = useState(true)\n const [showPercents, setShowPercents] = useState(true)\n\n const [confidenceLevel, setConfidenceLevel] = useState(model.confidenceLevel || 0.95)\n const [significanceLevel, setSignificanceLevel] = useState(model.significanceLevel || 0.9)\n\n const [showTesting, setShowTesting] = useState(true)\n\n const [top2Box, setTop2Box] = useState(false)\n const [top3Box, setTop3Box] = useState(false)\n const [top15Box, setTop15Box] = useState(false)\n\n const [showMean, setShowMean] = useState(false)\n\n const [failed, setFailed] = useState(false)\n const [processing, setProcessing] = useState(false)\n\n const timer = useRef(null)\n\n const optionsRef = useRef(null)\n const optionsScrollTopRef = useRef(null)\n\n const bannersRef = useRef(null)\n bannersRef.current = banners\n\n const extra = useRef({})\n extra.current = {\n confidenceLevel,\n significanceLevel,\n showCounts,\n showPercents,\n showTesting,\n showPValues: true,\n top15Box,\n top2Box,\n top3Box,\n showMean\n }\n\n const bannerOptions = useMemo(\n () =>\n traits\n .reduce(\n (acc, trait) =>\n banners.some(banner => banner.key == trait.id)\n ? acc\n : acc.concat([{ key: trait.id, text: trait.title, value: trait, type: 'trait' }]),\n []\n )\n .concat(\n variables.reduce(\n (acc, variable) =>\n banners.some(banner => banner.key == variable.key)\n ? acc\n : acc.concat([{ key: variable.key, text: variable.key, value: variable, type: 'variable' }]),\n []\n )\n )\n .concat(\n questions.reduce((acc, question) => {\n const id = getQuestionId(question)\n const key = getBannerKey(question)\n\n const text = `${id.toUpperCase()}: ${question.text}`\n\n const icon = getQuestionIcon(question)\n\n return banners.some(banner => banner.key == key)\n ? acc\n : acc.concat([{ key, text, icon, value: question, type: 'question' }])\n }, [])\n ),\n [traits, variables, questions, banners]\n )\n\n const overLimit = useMemo(() => {\n const numberOfConnections = banners.reduce((amount, banner) => {\n if (['trait', 'variable'].includes(banner.type)) {\n return amount + banner.value.values.length || 0\n }\n\n if ('question' == banner.type) {\n const question = banner.value\n\n const type = question.variant || question.type\n\n if (['rb', 'cb', 'scx', 'sft'].includes(type))\n return amount + (question.answerVariants.length * (question.answerVariants.length - 1)) / 2\n if (['mx', 'se', 'sr', 'mp'].includes(type))\n return (\n amount +\n (question.batches.length *\n question.batches[0].answerVariants.length *\n (question.batches[0].answerVariants.length - 1)) /\n 2\n )\n if (['qa', 'bpm'].includes(type))\n return (\n amount + (question.questionVariants.length * question.batches.length * (question.batches.length - 1)) / 2\n )\n if (['ro', 'aro'].includes(type))\n return amount + (question.batches.length * question.batches.length * (question.batches.length - 1)) / 2\n if (['psc'].includes(type)) return amount + 3 * question.batches.length\n }\n\n return amount\n }, 0)\n\n return totalNumberOfConnections <= numberOfConnections\n }, [totalNumberOfConnections, banners])\n\n const exportDisabled = useMemo(\n () => responses < unlockNumber || totalRespondents < unlockNumber || !questions.length || disabled || overLimit,\n [responses, totalRespondents, questions, unlockNumber, disabled, overLimit]\n )\n\n const crossByLogic = useMemo(() => {\n const option = bannerOptions.find(banner => 'question' == banner.type)\n\n return ((0 < banners.length && banners) || (option != undefined && [option]) || []).reduce((acc, banner) => {\n if (['trait', 'variable'].includes(banner.type)) {\n acc.push(banner.key)\n }\n\n if ('question' == banner.type) {\n const question = banner.value\n\n const key =\n 0 < question.position\n ? `${(question.pre_type && 'PQ') || 'Q'}${question.visual_position}`\n : question.id.toUpperCase()\n const type = question.variant || question.type\n\n if (Object.hasOwn(question, 'questionVariants') && Object.hasOwn(question, 'batches')) {\n for (const qv of question.questionVariants) {\n for (const b of question.batches) {\n acc.push(`${key}E${qv.position}SQ${b.position}`)\n }\n }\n } else if (Object.hasOwn(question, 'batches')) {\n for (const b of question.batches) {\n acc.push(`${key}${['ro', 'aro'].includes(type) ? 'A' : 'SQ'}${b.position}`)\n }\n } else acc.push(`${key}`)\n }\n\n return acc\n }, [])\n }, [banners, bannerOptions])\n\n const itemTemplate = option =>\n option.disabled && option.icon == undefined ? (\n <span dangerouslySetInnerHTML={{ __html: option.label }}></span>\n ) : (\n <span className={option.item ? '' : 'p-item-label'}>\n {option.icon ? <i className={`icon-aytmfd-${option.icon}`} /> : null}\n <span dangerouslySetInnerHTML={{ __html: option.text }}></span>\n </span>\n )\n const valueTemplate = (option, _props) =>\n option ? (\n <>\n {option.icon && <i className={`icon-aytmfd-${option.icon}`} />}\n <span dangerouslySetInnerHTML={{ __html: option.label || option.text }}></span>\n </>\n ) : (\n <span dangerouslySetInnerHTML={{ __html: _props.placeholder || 'Select...' }}></span>\n )\n\n const onDataFormatChange = (counts, percents) => {\n setShowCounts(counts)\n setShowPercents(percents)\n }\n\n const onBannerHide = () => {\n const overlay = optionsRef.current.getOverlay()\n\n const wrapper = overlay.querySelector('.p-dropdown-items-wrapper')\n optionsScrollTopRef.current = wrapper.scrollTop\n }\n\n const onBannerShow = useCallback(() => {\n const overlay = optionsRef.current.getOverlay()\n\n const wrapper = overlay.querySelector('.p-dropdown-items-wrapper')\n wrapper.scrollTop = optionsScrollTopRef.current\n\n timer.current && clearTimeout(timer.current)\n timer.current = setTimeout(() => {\n overlay.classList.add('p-rendered')\n })\n\n return () => timer.current && clearTimeout(timer.current)\n }, [])\n\n const onBannerSelect = useCallback(\n value => {\n const option = bannerOptions.find(_option => _option.key == value)\n setBanners(banners.concat([option]))\n },\n [banners, bannerOptions]\n )\n\n const onBannerRemove = useCallback(value => setBanners(banners.filter(_banner => _banner.key != value)), [banners])\n\n const onClick = useCallback(() => {\n setFailed(false)\n setProcessing(true)\n\n onExport(crossByLogic, extra.current)\n }, [crossByLogic, onExport])\n\n useEffect(\n () => {\n optionsScrollTopRef.current = 0\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [traits, variables, questions]\n )\n\n useEffect(\n () => onLevelsChange(confidenceLevel, Math.min(extra.current.significanceLevel, confidenceLevel)),\n [confidenceLevel, onLevelsChange]\n )\n useEffect(\n () => onLevelsChange(Math.max(extra.current.confidenceLevel, significanceLevel), significanceLevel),\n [significanceLevel, onLevelsChange]\n )\n\n useEffect(() => {\n if (disabled) setBanners([])\n else {\n setBanners(\n bannersRef.current\n .map(banner => {\n if ('trait' == banner.type) {\n const trait = traits.find(_trait => _trait.id == banner.key)\n if (trait != undefined) {\n banner.value = trait\n return banner\n }\n }\n if ('variable' == banner.type) {\n const variable = variables.find(_variable => _variable.key == banner.key)\n if (variable != undefined) {\n banner.value = variable\n return banner\n }\n }\n if ('question' == banner.type) {\n const question = questions.find(_question => getBannerKey(_question) == banner.key)\n if (question != undefined) {\n banner.value = question\n return banner\n }\n }\n\n return null\n })\n .filter(banner => null !== banner)\n )\n }\n }, [traits, variables, questions, disabled])\n\n useEffect(() => {\n if (disabled) {\n setTop2Box(false)\n setTop3Box(false)\n setTop15Box(false)\n setShowMean(false)\n } else {\n const [_top2Box, _top3Box, _top15Box, _showMean] = questions.reduce(\n (acc, question) => {\n const topsMode = topsModes[(0 < question.position && question.position) || question.id]\n return [\n acc[0] || ['top2', 'bottom2'].includes(topsMode) || false,\n acc[1] || ['top3', 'bottom3'].includes(topsMode) || false,\n acc[2] || ['top2w', 'bottom2w'].includes(topsMode) || false,\n acc[3] || ['means', 'meansReversed'].includes(topsMode) || false\n ]\n },\n [false, false, false, false]\n )\n\n setTop2Box(_top2Box)\n setTop3Box(_top3Box)\n setTop15Box(_top15Box)\n setShowMean(_showMean)\n }\n }, [questions, topsModes, disabled])\n\n useEffect(() => {\n setConfidenceLevel(model.confidenceLevel)\n setSignificanceLevel(model.significanceLevel)\n }, [model.confidenceLevel, model.significanceLevel])\n\n useEffect(() => onBannersSelect(banners, crossByLogic), [banners, crossByLogic, onBannersSelect])\n\n useEventListener(`crosstabExportSuccess`, () => setProcessing(false))\n\n useEventListener(`crosstabExportFailed`, () => {\n setFailed(true)\n setProcessing(false)\n })\n\n const renderBanner = banner => (\n <div className={style.button}>\n <span className={style['button-remove']} onClick={() => onBannerRemove(banner.key)}>\n <i className=\"icon-aytmfd-delete\" />\n </span>\n {banner.icon ? <i className={`icon-aytmfd-${banner.icon}`} /> : null}\n <span className={style['button-text']}>\n {'question' == banner.type ? getQuestionId(banner.value).toUpperCase() : banner.text}\n </span>\n </div>\n )\n\n const renderBannersGroup = () => (\n <div className={style.section}>\n <div className={`${style.row} ${style['section-title']} p-fluid`}>\n <b>Banner Groups</b>\n <SidebarPopup\n root={root}\n help=\"Choose subgroups or categories for your analysis. Selected subgroups will make up the headers in your banner tables export. <br/><br/> <a href='https://helpcenter.aytm.com/hc/en-us/articles/17200144374029-Banner-Tables' target='_blank'>Learn more</a>\"\n />\n </div>\n {banners.map(banner => (\n <div key={banner.key} className={`${style.row} p-fluid`}>\n {renderBanner(banner)}\n </div>\n ))}\n <div className={`${style.row} p-fluid`}>\n <div className=\"p-field p-col-12\">\n <Dropdown\n ref={optionsRef}\n className={style.options}\n id=\"crosstab-panel-add-banner-dropdown\"\n placeholder=\"Add banner\"\n value={null}\n options={bannerOptions}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n filter={true}\n filterBy={'search,text'}\n filterPlaceholder=\"Search items\"\n resetFilterOnHide={true}\n filterInputAutoFocus={false}\n fixedDropdownDir=\"bottom\"\n confirmKeyboardSelect\n disabled={disabled || overLimit}\n onChange={disabled || overLimit ? null : event => onBannerSelect(event.value)}\n onShow={disabled || overLimit ? null : onBannerShow}\n onHide={disabled || overLimit ? null : onBannerHide}\n />\n </div>\n </div>\n </div>\n )\n\n const renderDataFormat = () => (\n <div className={style.section}>\n <div className={`${style.row} ${style['section-title']} p-fluid`}>\n <b>Data Format</b>\n </div>\n <div className={`${style.row} p-fluid${disabled ? '' : ' p-subtheme-contrast'}`}>\n <RadioButton\n inputId=\"data-format-showCounts\"\n name=\"data-format\"\n value=\"showCounts\"\n checked={showCounts && !showPercents}\n disabled={disabled}\n onChange={disabled ? null : () => onDataFormatChange(true, false)}\n />\n <label\n htmlFor=\"data-format-showCounts\"\n className={disabled ? 'p-disabled' : ''}\n onClick={disabled ? null : () => onDataFormatChange(true, false)}\n >\n Show counts\n </label>\n </div>\n <div className={`${style.row} p-fluid${disabled ? '' : ' p-subtheme-contrast'}`}>\n <RadioButton\n inputId=\"data-format-showPercents\"\n name=\"data-format\"\n value=\"showPercents\"\n checked={!showCounts && showPercents}\n disabled={disabled}\n onChange={disabled ? null : () => onDataFormatChange(false, true)}\n />\n <label\n htmlFor=\"data-format-showPercents\"\n className={disabled ? 'p-disabled' : ''}\n onClick={disabled ? null : () => onDataFormatChange(false, true)}\n >\n Show percentages\n </label>\n </div>\n <div className={`${style.row} p-fluid${disabled ? '' : ' p-subtheme-contrast'}`}>\n <RadioButton\n inputId=\"data-format-showBoth\"\n name=\"data-format\"\n value=\"showBoth\"\n checked={showCounts && showPercents}\n disabled={disabled}\n onChange={disabled ? null : () => onDataFormatChange(true, true)}\n />\n <label\n htmlFor=\"data-format-showBoth\"\n className={disabled ? 'p-disabled' : ''}\n onClick={disabled ? null : () => onDataFormatChange(true, true)}\n >\n Show both\n </label>\n </div>\n </div>\n )\n\n const renderSignificanceTesting = () => (\n <>\n <div className={style.section}>\n <div className={`${style.row} ${style['section-title']} p-fluid`}>\n <b>Significance Testing</b>\n <SidebarPopup\n root={root}\n help=\"Confidence level determines how certain a researcher can be regarding their sample accurately revealing the attitudes of the total population being tested. Primary CL, usually set to 95% for market research purposes, is used for a variety of significance tests on this page and in statistical reports. In Banner Table reports, Primary CL designates statistically significant difference at 95% and is marked with upper case letters. Secondary CL defaults to 90% and is signified with lower case letters. <br/><br/> <a href='https://helpcenter.aytm.com/hc/en-us/articles/360059216031-Significance-Testing-with-aytm' target='_blank'>Learn more about Significance Testing with aytm</a>\"\n />\n </div>\n <div className={`${style.row} ${style['row-slider']} p-fluid`}>\n <div className=\"p-field p-col-12\">\n <Slider\n id=\"crosstab-panel-confidence-level-slider\"\n min={0}\n max={levels.length - 1}\n value={levels.findIndex(v => v[0] == confidenceLevel)}\n labelTemplate={value => levels[value][1]}\n disabled={disabled}\n onChange={disabled ? null : event => setConfidenceLevel(levels[event.value][0])}\n />\n </div>\n </div>\n <div className={`${style.row} ${style['row-slider-label']} p-fluid`}>\n <span>Confidence level</span>\n </div>\n <div className={`${style.row} ${style['row-slider']} p-fluid`}>\n <div className=\"p-field p-col-12\">\n <Slider\n id=\"crosstab-panel-significance-level-slider\"\n min={0}\n max={levels.length - 1}\n value={levels.findIndex(v => v[0] == significanceLevel)}\n labelTemplate={value => levels[value][1]}\n disabled={disabled}\n onChange={disabled ? null : event => setSignificanceLevel(levels[event.value][0])}\n />\n </div>\n </div>\n <div className={`${style.row} ${style['row-slider-label']} p-fluid`}>\n <span>Secondary Confidence level</span>\n </div>\n </div>\n <div className={style.section}>\n <div className={`${style.row} p-fluid${disabled ? '' : ' p-subtheme-contrast'}`}>\n <Checkbox\n value=\"testing\"\n checked={showTesting}\n disabled={disabled}\n onChange={disabled ? null : () => setShowTesting(!showTesting)}\n onKeyDown={disabled ? null : event => toggleCheckbox(event, () => setShowTesting(!showTesting))}\n />\n <label onClick={disabled ? null : () => setShowTesting(!showTesting)}>Show significance testing</label>\n </div>\n </div>\n </>\n )\n\n const renderSummaryMetrics = () => (\n <div className={style.section}>\n <div className={`${style.row} ${style['section-title']} p-fluid`}>\n <b>Summary Metrics</b>\n <SidebarPopup\n root={root}\n help=\"Select box scores or metrics to include in your export. Summary metrics will automatically be applied to all applicable question types: radio buttons, progressive matrix, sliders (matrix), and star/smiley rating. <br/><br/> <a href='https://helpcenter.aytm.com/hc/en-us/articles/17200144374029-Banner-Tables' target='_blank'>Learn more about Banner Tables</a>\"\n />\n </div>\n <div className={`${style.row} p-fluid${disabled ? '' : ' p-subtheme-contrast'}`}>\n <Checkbox\n value=\"top2box\"\n checked={top2Box}\n disabled={disabled}\n onChange={disabled ? null : () => setTop2Box(!top2Box)}\n onKeyDown={disabled ? null : event => toggleCheckbox(event, () => setTop2Box(!top2Box))}\n />\n <label onClick={disabled ? null : () => setTop2Box(!top2Box)}>Top and Bottom 2 Box</label>\n </div>\n <div className={`${style.row} p-fluid${disabled ? '' : ' p-subtheme-contrast'}`}>\n <Checkbox\n value=\"top3box\"\n checked={top3Box}\n disabled={disabled}\n onChange={disabled ? null : () => setTop3Box(!top3Box)}\n onKeyDown={disabled ? null : event => toggleCheckbox(event, () => setTop3Box(!top3Box))}\n />\n <label onClick={disabled ? null : () => setTop3Box(!top3Box)}>Top and Bottom 3 Box</label>\n </div>\n <div className={`${style.row} p-fluid${disabled ? '' : ' p-subtheme-contrast'}`}>\n <Checkbox\n value=\"top15box\"\n checked={top15Box}\n disabled={disabled}\n onChange={disabled ? null : () => setTop15Box(!top15Box)}\n onKeyDown={disabled ? null : event => toggleCheckbox(event, () => setTop15Box(!top15Box))}\n />\n <label onClick={disabled ? null : () => setTop15Box(!top15Box)}>Top and Bottom 1.5 Box</label>\n </div>\n <div className={`${style.row} p-fluid${disabled ? '' : ' p-subtheme-contrast'}`}>\n <Checkbox\n value=\"mean\"\n checked={showMean}\n disabled={disabled}\n onChange={disabled ? null : () => setShowMean(!showMean)}\n onKeyDown={disabled ? null : event => toggleCheckbox(event, () => setShowMean(!showMean))}\n />\n <label onClick={disabled ? null : () => setShowMean(!showMean)}>Mean</label>\n </div>\n </div>\n )\n\n return (\n <div className={style.component}>\n {renderBannersGroup()}\n {renderDataFormat()}\n {renderSignificanceTesting()}\n {renderSummaryMetrics()}\n\n <div className={style.section}>\n <div className={`${style.row} p-fluid`}>\n <Button\n className=\"p-button-lg p-button-grey-green\"\n label=\"RUN AND DOWNLOAD\"\n loading={processing}\n disabled={exportDisabled}\n onClick={exportDisabled ? null : onClick}\n />\n </div>\n\n {failed ? (\n <div className={`${style.row} ${style['row-error']} p-fluid`}>\n An error occurred while performing selected analysis operation. If the problem is reproducible please\n contact Support team.\n </div>\n ) : overLimit ? (\n <div className={`${style.row} ${style['row-error']} p-fluid`}>\n Please reduce the number of banners selected in order to run and download banner tables.\n </div>\n ) : responses < unlockNumber ? (\n <div className={`${style.row} ${style['row-error']} p-fluid`}>\n You need at least {unlockNumber} respondent{1 == unlockNumber ? '' : 's'} to create banner tables. Current\n filter settings show {responses} respondent{1 == responses ? '' : 's'}. Remove some filters or order more\n respondents to proceed.\n </div>\n ) : totalRespondents < unlockNumber ? (\n <div className={`${style.row} ${style['row-error']} p-fluid`}>\n You need at least {unlockNumber} respondent{1 == unlockNumber ? '' : 's'} to create banner tables. This\n survey currently contains only {totalRespondents} complete{1 == totalRespondents ? '' : 's'}.\n </div>\n ) : !questions.length ? (\n <div className={`${style.row} ${style['row-error']} p-fluid`}>\n You need at least 1 question in order to run and download banner tables.\n </div>\n ) : null}\n </div>\n </div>\n )\n}\n\nCrosstabPanel.propTypes = {\n root: PropTypes.any,\n model: PropTypes.object,\n data: PropTypes.object,\n features: PropTypes.object,\n disabled: PropTypes.bool,\n onBannersSelect: PropTypes.func,\n onLevelsChange: PropTypes.func,\n onExport: PropTypes.func\n}\n\nCrosstabPanel.displayName = 'CrosstabPanel'\n\nexport default CrosstabPanel\n","// lib\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport { Checkbox } from 'primereact/checkbox'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/data-cleaning/styles/DataCleaningPanel.module.scss'\n\nconst DataCleaningPanel = ({ mode, total, scores, vectors, onCheck, onSelect }) => (\n <div className={style.component}>\n <div className={`${style.row} ${style.note} p-fluid`}>\n {'cleaning' == mode &&\n `During aytm patent-pending automatic data cleaning process we have identified ${scores.length} questionable and low quality responses.`}\n {'centrifuge' == mode &&\n `During aytm proprietary Data Centrifuge process we have identified ${scores.length} questionable responses.`}\n </div>\n <div className={`${style.row} ${style.text} p-fluid`}>Data centrifuge vectors</div>\n <div className={`${style.row} ${style.vector} p-fluid`}>\n <div className=\"p-field p-col-12\">\n <div className={style['vector-button']} onClick={() => onSelect('all')}>\n ALL VECTORS\n <span className={style['vector-total']}>{total}</span>\n </div>\n </div>\n </div>\n {vectors.map(vector => (\n <div key={`vector-${vector.id}`} className={`${style.row} ${style.vector} p-fluid`}>\n <div className=\"p-field p-col-1\">\n <Checkbox\n value={vector.text}\n checked={vector.disabled ? false : vector.checked}\n disabled={vector.disabled}\n onChange={vector.disabled ? null : () => onCheck(vector.id, !vector.checked)}\n />\n </div>\n <div className=\"p-field p-col\">\n <div\n className={`${style['vector-button']}${vector.disabled ? ' p-disabled' : ''}`}\n style={{ borderLeftColor: vector.disabled ? '#aeaeae' : vector.color }}\n onClick={vector.disabled ? null : () => onSelect(vector.id)}\n >\n {vector.text}\n <span className={style['vector-total']}>{vector.total}</span>\n </div>\n </div>\n </div>\n ))}\n </div>\n)\n\nDataCleaningPanel.propTypes = {\n mode: PropTypes.string,\n total: PropTypes.number,\n scores: PropTypes.array,\n vectors: PropTypes.array,\n onCheck: PropTypes.func,\n onSelect: PropTypes.func\n}\n\nDataCleaningPanel.displayName = 'DataCleaningPanel'\n\nexport default DataCleaningPanel\n","// lib\nimport React, { useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport DropTargetContainer from '@aytm/app/stats/page/sidebar/components/DropTargetContainer'\n\nimport CustomQuestionButton from '@aytm/app/stats/page/sidebar/components/CustomQuestionButton'\nimport PinnedCustomQuestion from '@aytm/app/stats/page/sidebar/components/PinnedCustomQuestion'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/data-lab/styles/DataLabPanel.module.scss'\n\nconst DataLabPanel = ({\n sidebar,\n root,\n model,\n features,\n buttons,\n questions,\n addCustomQuestion,\n addPinnedQuestion,\n removePinnedQuestion,\n onDNDStart,\n onDNDEnd\n}) => {\n const acceptTypes = useMemo(\n () =>\n buttons.reduce((acc, cur) => {\n if (!features[cur.feature].disabled) acc.push(cur.adndType)\n return acc\n }, []),\n [buttons, features]\n )\n\n const typesTitles = useMemo(\n () =>\n buttons.reduce((acc, cur) => {\n if (!features[cur.feature].disabled) acc[cur.adndType] = cur.text\n return acc\n }, {}),\n [buttons, features]\n )\n\n return (\n <div className={style.component}>\n <DropTargetContainer\n root={sidebar}\n acceptTypes={acceptTypes}\n typesTitles={typesTitles}\n windowUID={model.windowUID}\n onDNDDrop={addPinnedQuestion}\n >\n {buttons.map(item =>\n features[item.feature].hidden ? null : (\n <CustomQuestionButton\n key={item.type}\n root={root}\n item={item}\n features={features}\n windowUID={model.windowUID}\n addCustomQuestion={addCustomQuestion}\n onDNDStart={onDNDStart}\n onDNDEnd={onDNDEnd}\n />\n )\n )}\n <div className={`${style.row} ${style.note} p-fluid`}>\n Click the button or drag it to the right to add your new chart exactly where you want it.\n </div>\n {0 < questions.length && (\n <>\n <div className={`${style.row} ${style.section} p-fluid`}>Pinned questions</div>\n {questions.map(item => (\n <PinnedCustomQuestion\n key={`question-${item.index}`}\n item={item}\n features={features}\n addCustomQuestion={addCustomQuestion}\n removePinnedQuestion={removePinnedQuestion}\n onDNDStart={onDNDStart}\n onDNDEnd={onDNDEnd}\n />\n ))}\n </>\n )}\n </DropTargetContainer>\n </div>\n )\n}\n\nDataLabPanel.propTypes = {\n sidebar: PropTypes.any,\n root: PropTypes.any,\n model: PropTypes.object,\n features: PropTypes.object,\n buttons: PropTypes.array,\n questions: PropTypes.array,\n addCustomQuestion: PropTypes.func,\n addPinnedQuestion: PropTypes.func,\n removePinnedQuestion: PropTypes.func,\n onDNDStart: PropTypes.func,\n onDNDEnd: PropTypes.func\n}\n\nDataLabPanel.displayName = 'DataLabPanel'\n\nexport default DataLabPanel\n","// lib\nimport React, { useState, useRef, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { Transition } from 'react-transition-group'\nimport { DOMchildOf } from '@aytm/lib/common/func'\n\nimport useEventListener from '@aytm/app/stats/page/comments/lib/hooks/useEventListener'\n\n// components\nimport { RadioButton } from 'primereact/radiobutton'\nimport { Slider } from 'primereact/slider'\nimport { Dropdown } from 'primereact/dropdown'\n\nimport Popup from '@aytm/lib/rfd-ui/components/basic/popup'\nimport SidebarPopup from '@aytm/app/stats/page/sidebar/components/SidebarPopup'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/export/styles/ExportPanel.module.scss'\n\nconst BUTTON_TEXTS = {\n turf: 'TURF',\n emd: 'Impression Dial',\n concept_lab: 'Concept Lab',\n concept_mapping: 'Concept Mapping',\n tracker_lab: 'Tracker Lab',\n tracker_mapping: 'Tracker Mapping'\n}\n\nconst THRESHOLD_OPTIONS = [\n { key: '0.2', text: '20%' },\n { key: '0.25', text: '25%' },\n { key: '0.333', text: '33.3%' },\n { key: '0.5', text: '50%' },\n { key: '0.6', text: '60%' },\n { key: '0.7', text: '70%' },\n { key: '0.8', text: '80%' }\n]\nconst DEFAULT_THRESHOLD_OPTION = '0.7'\n\nconst DEFAULT_ITEMS_PER_SET = 4\n\nconst ExportSpecificButton = ({ item, processing, disabled, onExport }) => {\n const onClick = useCallback(() => {\n 'function' == typeof onExport && onExport({ method: item.key, methodText: item.xlsxText, ...item.exportOptions })\n }, [item, onExport])\n\n return (\n <div className={`${style.row} p-fluid`}>\n <div\n className={`${style.button}${processing || disabled ? ' p-disabled' : ''}`}\n onClick={processing || disabled ? null : onClick}\n >\n <div className={style['button-text']}>{BUTTON_TEXTS[item.key]}</div>\n <span className={style['button-handle']}>\n <i className={processing ? 'icon-aytmfd-spin aytmfd-spin' : 'icon-aytmfd-export'} />\n </span>\n </div>\n </div>\n )\n}\n\nExportSpecificButton.propTypes = {\n item: PropTypes.object,\n processing: PropTypes.bool,\n disabled: PropTypes.bool,\n onExport: PropTypes.func\n}\n\nconst ExportSpecificMdOptions = ({ root, model, question, options, processing, disabled, onExport }) => {\n const [collapsed, setCollapsed] = useState(true)\n\n const [method, setMethod] = useState(model.turf.default)\n const [threshold, setThreshold] = useState(null)\n\n const gearRef = useRef(null)\n const panelRef = useRef(null)\n\n const thresholdRef = useRef(null)\n thresholdRef.current = threshold\n\n const methodObj = useMemo(() => options.find(option => option.key == method) || null, [method, options])\n\n const hideOnGlobalClick = event => {\n if (\n (!gearRef.current || !DOMchildOf(event.target, gearRef.current)) &&\n (!panelRef.current || !DOMchildOf(event.target, panelRef.current))\n ) {\n setCollapsed(true)\n }\n }\n\n const onClick = useCallback(\n event => {\n if (\n (!gearRef.current || !DOMchildOf(event.target, gearRef.current)) &&\n (!panelRef.current || !DOMchildOf(event.target, panelRef.current))\n ) {\n setCollapsed(true)\n 'function' == typeof onExport &&\n onExport({ method, methodText: methodObj.xlsxText, threshold, ...methodObj.exportOptions })\n }\n },\n [methodObj, method, threshold, onExport]\n )\n\n useEffect(() => {\n collapsed\n ? document.removeEventListener('click', hideOnGlobalClick, true)\n : document.addEventListener('click', hideOnGlobalClick, true)\n\n return () => {\n document.removeEventListener('click', hideOnGlobalClick, true)\n }\n }, [collapsed])\n\n useEffect(\n () =>\n methodObj.threshold\n ? setThreshold(null === thresholdRef.current ? DEFAULT_THRESHOLD_OPTION : thresholdRef.current)\n : setThreshold(null),\n [methodObj]\n )\n\n useEffect(() => setCollapsed(true), [question.key, processing])\n\n return (\n <>\n <div className={`${style.row} p-fluid`}>\n <div\n className={`${style.button}${processing || disabled ? ' p-disabled' : ''}`}\n onClick={processing || disabled ? null : onClick}\n >\n <div className={style['button-text']}>{null !== methodObj ? methodObj.text : ' '}</div>\n <span className={style['button-handle']}>\n <i className={processing ? 'icon-aytmfd-spin aytmfd-spin' : 'icon-aytmfd-export'} />\n </span>\n <Transition in={!collapsed} timeout={500}>\n {status => (\n <div\n ref={panelRef}\n className={`${style['button-panel']} ${style['transition-panel']}${\n status ? ' ' + style['transition-panel-' + status] : ''\n }`}\n >\n <div className={style['button-panel-wrapper']}>\n <ul className={style['button-panel-items']}>\n {options.map((item, index) => (\n <li key={`${item.key}-${index}`} className={style['button-panel-item']}>\n <RadioButton\n inputId={`export-method-${item.key}`}\n name=\"export-method\"\n value={item.key}\n checked={method == item.key}\n disabled={processing || disabled}\n onChange={processing || disabled ? null : () => setMethod(item.key)}\n />\n <label\n htmlFor={`export-method-${item.key}`}\n className={processing || disabled ? 'p-disabled' : ''}\n onClick={processing || disabled ? null : () => setMethod(item.key)}\n >\n {item.text}\n </label>\n </li>\n ))}\n </ul>\n </div>\n </div>\n )}\n </Transition>\n </div>\n <div\n ref={gearRef}\n className={`${style['button-config']}${!collapsed ? ' ' + style['button-config-active'] : ''}${\n processing || disabled ? ' p-disabled' : ''\n }`}\n onClick={processing || disabled ? null : () => setCollapsed(!collapsed)}\n >\n <i className=\"icon-aytmfd-config\"></i>\n </div>\n {model.turf.help ? (\n <SidebarPopup\n root={root}\n width=\"300px\"\n help={model.turf.help.replace('{{itemsPerSet}}', question.items_per_set || DEFAULT_ITEMS_PER_SET)}\n />\n ) : null}\n </div>\n {methodObj.threshold && null !== threshold ? (\n <div className={`${style.row} ${style['row-slider']} p-fluid`}>\n <div className=\"p-field p-col-12\">\n <Slider\n min={0}\n max={THRESHOLD_OPTIONS.length - 1}\n value={THRESHOLD_OPTIONS.findIndex(value => value.key == threshold) || 0}\n labelTemplate={value => THRESHOLD_OPTIONS[value].text}\n disabled={processing || disabled}\n onChange={processing || disabled ? null : event => setThreshold(THRESHOLD_OPTIONS[event.value].key)}\n />\n </div>\n </div>\n ) : null}\n </>\n )\n}\n\nExportSpecificMdOptions.propTypes = {\n root: PropTypes.any,\n model: PropTypes.object,\n question: PropTypes.object,\n options: PropTypes.array,\n processing: PropTypes.bool,\n disabled: PropTypes.bool,\n onExport: PropTypes.func\n}\n\nconst ExportSpecificTurfOptions = ({ question, options, processing, disabled, onExport }) => {\n const [collapsed, setCollapsed] = useState(true)\n\n const gearRef = useRef(null)\n const panelRef = useRef(null)\n\n const hideOnGlobalClick = event => {\n if (\n (!gearRef.current || !DOMchildOf(event.target, gearRef.current)) &&\n (!panelRef.current || !DOMchildOf(event.target, panelRef.current))\n ) {\n setCollapsed(true)\n }\n }\n\n const onClick = useCallback(\n item => {\n setCollapsed(true)\n 'function' == typeof onExport && onExport({ method: item.key, methodText: item.xlsxText, ...item.exportOptions })\n },\n [onExport]\n )\n\n useEffect(() => {\n collapsed\n ? document.removeEventListener('click', hideOnGlobalClick, true)\n : document.addEventListener('click', hideOnGlobalClick, true)\n\n return () => {\n document.removeEventListener('click', hideOnGlobalClick, true)\n }\n }, [collapsed])\n\n useEffect(() => setCollapsed(true), [question.key, processing])\n\n return (\n <div className={`${style.row} p-fluid`}>\n <div\n className={`${style.button}${processing || disabled ? ' p-disabled' : ''}`}\n onClick={processing || disabled ? null : () => setCollapsed(!collapsed)}\n >\n <div className={style['button-text']}>Select available options</div>\n <span ref={gearRef} className={style['button-handle']}>\n <i className={processing ? 'icon-aytmfd-spin aytmfd-spin' : 'icon-aytmfd-download-combobox'} />\n </span>\n <Transition in={!collapsed} timeout={500}>\n {status => (\n <div\n ref={panelRef}\n className={`${style['button-panel']} ${style['transition-panel']}${\n status ? ' ' + style['transition-panel-' + status] : ''\n }`}\n >\n <div className={style['button-panel-wrapper']}>\n <ul className={style['button-panel-items']}>\n {options.map((item, index) => (\n <li\n key={`${item.key}-${index}`}\n className={style['button-panel-item']}\n onClick={processing || disabled ? null : () => onClick(item)}\n >\n {item.text}\n </li>\n ))}\n </ul>\n </div>\n </div>\n )}\n </Transition>\n </div>\n </div>\n )\n}\n\nExportSpecificTurfOptions.propTypes = {\n question: PropTypes.object,\n options: PropTypes.array,\n processing: PropTypes.bool,\n disabled: PropTypes.bool,\n onExport: PropTypes.func\n}\n\nconst ExportSpecific = ({ root, model, data, features, disabled, onExport }) => {\n const [processing, setProcessing] = useState(false)\n\n const [exportType, setExportType] = useState(null)\n const [exportQuestion, setExportQuestion] = useState(null)\n\n const exportTypeRef = useRef(null)\n exportTypeRef.current = exportType\n\n const exportQuestionRef = useRef(null)\n exportQuestionRef.current = exportQuestion\n\n const isTurfEnabled = useMemo(\n () => 0 < data.turf.length && !features.turf.disabled && !disabled,\n [data.turf, features.turf.disabled, disabled]\n )\n const isCjExportEnabled = useMemo(() => 0 < data.conjoint.length && !disabled, [data.conjoint, disabled])\n const isEmdExportEnabled = useMemo(\n () => 0 < data.emd.length && !features.authorized_exports.disabled && !disabled,\n [data.emd, features.authorized_exports.disabled, disabled]\n )\n const isCLExportEnabled = useMemo(\n () => 0 < data.concept_lab.length && !features.authorized_exports.disabled && !disabled,\n [data.concept_lab, features.authorized_exports.disabled, disabled]\n )\n const isCLMappingExportEnabled = useMemo(\n () => 0 < data.concept_mapping.length && !features.authorized_exports.disabled && !disabled,\n [data.concept_mapping, features.authorized_exports.disabled, disabled]\n )\n const isTLExportEnabled = useMemo(\n () => 0 < data.tracker_lab.length && !features.authorized_exports.disabled && !disabled,\n [data.tracker_lab, features.authorized_exports.disabled, disabled]\n )\n const isTLMappingExportEnabled = useMemo(\n () => 0 < data.tracker_mapping.length && !features.authorized_exports.disabled && !disabled,\n [data.tracker_mapping, features.authorized_exports.disabled, disabled]\n )\n\n const exportTypeOptions = useMemo(() => {\n const options = []\n isTurfEnabled && options.push({ text: 'TURF ANALYSES', key: 'turf', exportType: 'turf' })\n isCjExportEnabled && options.push({ text: 'CONJOINT ANALYSES', key: 'conjoint', exportType: 'conjoint' })\n isEmdExportEnabled && options.push({ text: 'IMPRESSION DIAL ANALYSES', key: 'emd', exportType: 'emd' })\n isCLExportEnabled && options.push({ text: 'CONCEPT LAB', key: 'concept_lab', exportType: 'concept_lab' })\n isCLMappingExportEnabled &&\n options.push({ text: 'CONCEPT MAPPING', key: 'concept_mapping', exportType: 'concept_lab' })\n isTLExportEnabled && options.push({ text: 'TRACKER LAB', key: 'tracker_lab', exportType: 'tracker_lab' })\n isTLMappingExportEnabled &&\n options.push({ text: 'TRACKER MAPPING', key: 'tracker_mapping', exportType: 'tracker_lab' })\n return options\n }, [\n isTurfEnabled,\n isCjExportEnabled,\n isEmdExportEnabled,\n isCLExportEnabled,\n isCLMappingExportEnabled,\n isTLExportEnabled,\n isTLMappingExportEnabled\n ])\n\n const defaultExportType = useMemo(\n () => (0 < exportTypeOptions.length ? exportTypeOptions[0].key : null),\n [exportTypeOptions]\n )\n\n const exportTypeObj = useMemo(() => {\n const option = exportTypeOptions.find(option => option.key == exportType)\n if (option == undefined) return null\n\n return option\n }, [exportType, exportTypeOptions])\n\n const exportQuestionsOptions = useMemo(() => data[exportType] || [], [data, exportType])\n\n const exportQuestionObj = useMemo(() => {\n const option = exportQuestionsOptions.find(option => option.key == exportQuestion)\n if (option == undefined) return null\n\n return option\n }, [exportQuestion, exportQuestionsOptions])\n\n const exportQuestionOptions = useMemo(() => {\n if (null === exportQuestionObj) return null\n\n const exportOptionsDefaults = {\n key: exportQuestionObj.key,\n link: exportQuestionObj.link || null,\n position: exportQuestionObj.position\n }\n\n if (['cb', 'emd', 'cl', 'tl'].includes(exportQuestionObj.type)) {\n if (null === exportTypeObj) return null\n\n return {\n key: exportTypeObj.key,\n exportOptions: {\n ...exportOptionsDefaults,\n ...('cb' == exportQuestionObj.type\n ? {\n fileType: 'binary',\n exportType: 'turf',\n turfType: 'answers'\n }\n : {\n fileType: 'emd' == exportQuestionObj.type ? 'csv' : 'xlsx',\n exportType: exportTypeObj.exportType\n })\n }\n }\n }\n\n if ('cjc' == exportQuestionObj.type) {\n const exportOptions = {\n ...exportOptionsDefaults,\n fileType: 'csv'\n }\n return [\n {\n key: 'conjointPkgs',\n text: 'Ranked List of Packages',\n exportOptions: { exportType: 'conjointPkgs', ...exportOptions }\n },\n {\n key: 'conjointDesign',\n text: 'Design Sheet by aytm',\n exportOptions: { exportType: 'conjointDesign', ...exportOptions }\n }\n ]\n }\n\n if ('cjd' == exportQuestionObj.type) {\n const exportOptions = {\n ...exportOptionsDefaults,\n fileType: 'csv'\n }\n return [\n {\n key: 'conjoint',\n text: 'Raw Utility Scores',\n exportOptions: { exportType: 'conjoint', ...exportOptions }\n },\n {\n key: 'conjointPkgs',\n text: 'Ranked List of Packages',\n exportOptions: { exportType: 'conjointPkgs', ...exportOptions }\n },\n {\n key: 'conjointDesign',\n text: 'Design Sheet by aytm',\n exportOptions: { exportType: 'conjointDesign', ...exportOptions }\n }\n ]\n }\n\n if ('md' == exportQuestionObj.type) {\n const exportOptions = {\n ...exportOptionsDefaults,\n exportType: 'turf'\n }\n return Object.entries(model.turf.available).map(([key, value]) => {\n return {\n key,\n text: value.text.replace('{{itemsPerSet}}', exportQuestionObj.items_per_set || DEFAULT_ITEMS_PER_SET),\n xlsxText: value.xlsxText.replace('{{itemsPerSet}}', exportQuestionObj.items_per_set || DEFAULT_ITEMS_PER_SET),\n threshold: value.threshold || false,\n exportOptions: { fileType: value.fileType, ...exportOptions }\n }\n })\n }\n\n const options = []\n const exportOptions = {\n ...exportOptionsDefaults,\n fileType: 'binary',\n exportType: 'turf',\n turfType: 'batches'\n }\n const answerVariants = exportQuestionObj.batches[0].answerVariants\n\n options.push({\n key: 'bottom1',\n text: `TURF TOP 1 box (A${answerVariants.length})`,\n exportOptions: { method: 'top1', positive: [answerVariants.length], ...exportOptions }\n })\n if (3 < answerVariants.length) {\n options.push({\n key: 'bottom2',\n text: `TURF TOP 2 box (A${answerVariants.length - 1} & A${answerVariants.length})`,\n exportOptions: {\n method: 'top2',\n positive: [answerVariants.length - 1, answerVariants.length],\n ...exportOptions\n }\n })\n options.push({\n key: 'top2',\n text: `TURF TOP 2 box (A1 & A2)`,\n exportOptions: { method: 'top2', positive: [1, 2], ...exportOptions }\n })\n }\n options.push({\n key: 'top1',\n text: `TURF TOP 1 box (A1)`,\n exportOptions: { method: 'top1', positive: [1], ...exportOptions }\n })\n\n return options\n }, [model.turf, exportTypeObj, exportQuestionObj])\n\n const itemTemplate = option =>\n option.disabled && option.icon == undefined ? (\n <span dangerouslySetInnerHTML={{ __html: option.label }}></span>\n ) : (\n <span className={option.item ? '' : 'p-item-label'}>\n {option.icon ? <i className={`icon-aytmfd-${option.icon}`} /> : null}\n <span dangerouslySetInnerHTML={{ __html: `${option.key.toUpperCase()}. ${option.text}` }}></span>\n </span>\n )\n const valueTemplate = (option, _props) =>\n option ? (\n <>\n {option.icon && <i className={`icon-aytmfd-${option.icon}`} />}\n <span dangerouslySetInnerHTML={{ __html: `${option.key.toUpperCase()}. ${option.text}` }}></span>\n </>\n ) : (\n <span dangerouslySetInnerHTML={{ __html: _props.placeholder || 'Select...' }}></span>\n )\n\n const onExportClick = params => {\n setProcessing(true)\n\n 'function' == typeof onExport && onExport(params)\n }\n\n useEffect(\n () =>\n setExportType(\n exportTypeOptions.some(option => option.key == exportTypeRef.current)\n ? exportTypeRef.current\n : defaultExportType\n ),\n [exportTypeOptions, defaultExportType]\n )\n\n useEffect(() => setExportQuestion(null), [exportType])\n\n useEventListener('exportSpecificStopped', () => setProcessing(false))\n\n return 0 < exportTypeOptions.length ? (\n <div className={style.component}>\n {1 < exportTypeOptions.length ? (\n <>\n <div className={`${style.row} ${style['row-title']} p-fluid`}>Research Analyses</div>\n <div className={`${style.row} p-fluid`}>\n <div className=\"p-field p-col-12\">\n <Dropdown\n value={exportType}\n options={exportTypeOptions}\n optionValue=\"key\"\n optionLabel=\"text\"\n filter={false}\n fixedDropdownDir=\"bottom\"\n disabled={processing || disabled}\n onChange={processing || disabled ? null : event => setExportType(event.value)}\n />\n </div>\n </div>\n </>\n ) : (\n <div className={`${style.row} ${style['row-title']} p-fluid`}>{exportTypeOptions[0].text}</div>\n )}\n\n {0 < exportQuestionsOptions.length ? (\n 'turf' == exportType && features.turf.available ? (\n <Popup\n className=\"rfd-ui-popup-notification rfd-ui-popup-notification-warning\"\n targetClassName=\"p-field p-col-12\"\n width=\"254px\"\n trigger=\"hover\"\n direction=\"topleft\"\n content={() => (\n <div>\n <p>\n <span className={`stat-upgrade-icon stat-upgrade-icon-${features.turf.onPackage.id}`}>\n <i className={`icon-aytmfd-${features.turf.onPackage.id}`}></i>\n </span>\n Upgrade to <span className=\"stat-upgrade-plan\">{features.turf.onPackage.name}</span> plan to use this\n functionality\n </p>\n </div>\n )}\n >\n <a className={style.button} href={features.turf.onPackage.upgradeURL} target={'_blank'} rel=\"noreferrer\">\n <div className={style['button-text']}>Select a question</div>\n <span className={style['button-lock-icon']}>\n <i className=\"icon-aytmfd-lock\"></i>\n </span>\n </a>\n </Popup>\n ) : 'turf' == exportType && features.turf.locked ? (\n <Popup\n className=\"rfd-ui-popup-notification rfd-ui-popup-notification-warning\"\n targetClassName=\"p-field p-col-12\"\n width=\"254px\"\n trigger=\"hover\"\n direction=\"topleft\"\n content={() => (\n <div>\n <p>\n PLEASE LOGIN/JOIN THE TEAM TO UNLOCK ALL FEATURES <br />\n OF THE STAT REPORT\n </p>\n </div>\n )}\n >\n <div className={style.button}>\n <div className={style['button-text']}>Select a question</div>\n <span className={style['button-lock-icon']}>\n <i className=\"icon-aytmfd-lock\"></i>\n </span>\n </div>\n </Popup>\n ) : (\n <div className={`${style.row} p-fluid`}>\n <div className=\"p-field p-col-12\">\n <Dropdown\n placeholder=\"Select a question\"\n value={exportQuestion}\n options={exportQuestionsOptions}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n filter={true}\n filterBy={'search,text'}\n filterPlaceholder=\"Search items\"\n resetFilterOnHide={true}\n filterInputAutoFocus={false}\n fixedDropdownDir=\"bottom\"\n disabled={processing || disabled}\n onChange={processing || disabled ? null : event => setExportQuestion(event.value)}\n />\n </div>\n </div>\n )\n ) : null}\n\n {null !== exportQuestionObj ? (\n ['cb', 'emd', 'cl', 'tl'].includes(exportQuestionObj.type) ? (\n <ExportSpecificButton\n question={exportQuestionObj}\n item={exportQuestionOptions}\n processing={processing}\n disabled={disabled}\n onExport={onExportClick}\n />\n ) : 'md' == exportQuestionObj.type ? (\n <ExportSpecificMdOptions\n root={root}\n model={model}\n question={exportQuestionObj}\n options={exportQuestionOptions}\n processing={processing}\n disabled={disabled}\n onExport={onExportClick}\n />\n ) : (\n <ExportSpecificTurfOptions\n question={exportQuestionObj}\n options={exportQuestionOptions}\n processing={processing}\n disabled={disabled}\n onExport={onExportClick}\n />\n )\n ) : null}\n </div>\n ) : null\n}\n\nExportSpecific.propTypes = {\n root: PropTypes.any,\n model: PropTypes.object,\n data: PropTypes.object,\n features: PropTypes.object,\n disabled: PropTypes.bool,\n onExport: PropTypes.func\n}\n\nExportSpecific.displayName = 'ExportSpecific'\n\nexport default ExportSpecific\n","// lib\nimport React, { useContext } from 'react'\nimport PropTypes from 'prop-types'\nimport { Map } from 'immutable'\n\nimport { DataContext } from '@aytm/app/stats/page/sidebar/filters/FiltersPanel'\n\n// components\nimport SidebarPopup from '@aytm/app/stats/page/sidebar/components/SidebarPopup'\n\nimport AdvancedFilter from '@aytm/app/stats/page/components/AdvancedFilter'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/filters/styles/FiltersPanel.module.scss'\n\nconst FiltersAdvanced = ({ locale, surveySchema, parserResultEof, parserResultPattern }) => {\n const { root, features, state, disabled, onChangeAdvancedFilter } = useContext(DataContext)\n\n return (\n <div className={`${style['advanced-container']} p-field p-col-12`}>\n <div className={style['filter-header']}>\n <span className={style['filter-title']}>CUSTOM FILTERS</span>\n <SidebarPopup\n root={root}\n help='Custom filters give you a greater control over filtering conditions, such as using an \"OR\" operator, grouping conditions in parentheses etc. You can define your desired filtering criteria using the standard aytm Logic expressions (without square brakets). For example, <b>Q1A1</b> or <b>Q2A1</b>. Option to switch back to the basic mode will be available as long as your filter expression is supported by our user interface. Once filter becomes too complex, you will be able to continue using the advanced mode only.'\n />\n </div>\n <AdvancedFilter\n locale={locale}\n surveySchema={surveySchema}\n parserResultEof={parserResultEof}\n parserResultPattern={parserResultPattern || parserResultEof}\n hintPosition=\"bottom\"\n pattern={state.advanced}\n disabled={disabled || features.advanced.disabled}\n onChange={onChangeAdvancedFilter}\n />\n </div>\n )\n}\n\nFiltersAdvanced.propTypes = {\n locale: PropTypes.instanceOf(Map),\n surveySchema: PropTypes.object,\n parserResultEof: PropTypes.object.isRequired,\n parserResultPattern: PropTypes.object.isRequired\n}\n\nFiltersAdvanced.displayName = 'FiltersAdvanced'\n\nexport default FiltersAdvanced\n","// lib\nimport React, { useContext, useState, useRef, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { Transition } from 'react-transition-group'\n\nimport ADND from '@aytm/lib/adnd/ADND'\nimport { DataContext } from '@aytm/app/stats/page/sidebar/filters/FiltersPanel'\nimport { convertTreeToValues } from '@aytm/app/stats/lib/converter'\n\n// components\nimport FiltersRow from '@aytm/app/stats/page/sidebar/filters/FiltersRow'\nimport SidebarPopup from '@aytm/app/stats/page/sidebar/components/SidebarPopup'\n\nimport AssetFileUploader from '@aytm/app/stats/page/assets/index'\nimport AssetDeleteJob from '@aytm/app/stats/page/assets/jobs/AssetDeleteJob'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/filters/styles/FiltersPanel.module.scss'\nconst FiltersGroup = ({ group }) => {\n const { root, state, externalData, onShowHiddenGroup, onDNDStart, onDNDEnd, getApiKey } = useContext(DataContext)\n\n const [hidden, setHidden] = useState(group.hidden || false)\n const [collapsed, setCollapsed] = useState(group.toggle || false)\n const [maxHeight, setMaxHeight] = useState(0)\n\n const [errorList, setErrorList] = useState([])\n const [processingList, setProcessingList] = useState([])\n\n const groupRef = useRef()\n const groupUploaderRef = useRef()\n\n const uploadQueue = useRef([])\n const uploadQueueCallbacks = useRef({})\n\n const getFilterValues = useCallback(\n (filter, index) => {\n const value = filter.disabled\n ? null\n : group.external\n ? externalData.some(data => data.key == group.key) && externalData.find(data => data.key == group.key).values\n ? externalData.find(data => data.key == group.key).values[index]\n : null\n : null !== state.basic &&\n state.basic[filter.key.toUpperCase()] != undefined &&\n 0 < Object.keys(state.basic[filter.key.toUpperCase()]).length\n ? convertTreeToValues(filter, state.basic[filter.key.toUpperCase()], 'value')\n : 'sliderselect' == filter.type\n ? [1, filter.options.length]\n : null\n\n return null !== value ? JSON.stringify(value) : value\n },\n [group.key, group.external, externalData, state.basic]\n )\n\n const getFilterOptions = useCallback(\n filter => {\n if (filter.parent) {\n const vals = filter.parent.map(v => state.basic && state.basic[filter.key] && state.basic[filter.key][v])\n const keys = filter.parent.reduce((acc, cur, i) => {\n const value =\n vals[i] != undefined && null !== vals[i] ? (Array.isArray(vals[i].v) ? vals[i].v[0] : vals[i].v) : null\n const parent = group.values.find(v => v.key == filter.key && v.subkey == cur)\n const options = Array.isArray(parent.options)\n ? ['multistatemultiselect', 'multiselect'].includes(parent.type) && parent.group\n ? parent.options.flatMap(option => option.items)\n : parent.options\n : parent.options[acc.join('-')]\n const item = (options != undefined && options.find(opt => opt.value == value)) || null\n acc.push(null !== item ? item.position : null)\n return acc\n }, [])\n return filter.options[keys.join('-')] || []\n }\n return filter.options\n },\n [group.values, state.basic]\n )\n\n const getFilterError = useCallback(\n filter =>\n Object.hasOwn(filter, 'derived')\n ? errorList.some(key => 0 <= filter.derived.indexOf(key))\n : errorList.includes(filter.key),\n [errorList]\n )\n const getFilterProcessing = useCallback(\n filter =>\n Object.hasOwn(filter, 'derived')\n ? processingList.some(key => 0 <= filter.derived.indexOf(key))\n : processingList.includes(filter.key),\n [processingList]\n )\n\n const checkQueueCallbacks = () => {\n if (!uploadQueue.current.length) return\n\n if (uploadQueue.current.length == Object.keys(uploadQueueCallbacks.current).length) {\n let i = 0\n while (!uploadQueueCallbacks.current[uploadQueue.current[i]]) i++\n\n uploadQueueCallbacks.current[uploadQueue.current[i]]()\n delete uploadQueueCallbacks.current[uploadQueue.current[i]]\n }\n }\n\n const checkApiKey = async (variable, callback) => {\n if (!variable || 'function' != typeof callback) return false\n\n const apiKey = await getApiKey()\n\n uploadQueue.current.push(variable)\n uploadQueueCallbacks.current[variable] = callback\n\n checkQueueCallbacks()\n\n return apiKey\n }\n\n const checkUploadQueue = variable => {\n const index = uploadQueue.current.indexOf(variable)\n uploadQueue.current.splice(index, 1)\n\n if (0 < uploadQueue.current.length) {\n checkQueueCallbacks()\n } else {\n group.onSuccess()\n }\n }\n const checkUploadQueueError = variable => {\n const index = uploadQueue.current.indexOf(variable)\n uploadQueue.current.splice(index, 1)\n\n setErrorList([...errorList, variable].filter((v, i, a) => a.indexOf(v) == i))\n setProcessingList(processingList.filter(v => v == variable))\n\n checkQueueCallbacks()\n }\n\n const onDeleteFilter = variable => {\n if (0 <= uploadQueue.current.indexOf(variable)) return false\n\n setErrorList(errorList.filter(v => v == variable))\n setProcessingList([...processingList, variable].filter((v, i, a) => a.indexOf(v) == i))\n\n checkApiKey(variable, async () => {\n const apiKey = await getApiKey()\n\n AssetDeleteJob({\n variable,\n ...group.remove,\n params: {\n key: apiKey\n }\n })\n .then(() => {\n if ('function' == typeof group.remove.onVariableRemoved) {\n group.remove.onVariableRemoved(variable)\n }\n\n checkUploadQueue(variable)\n })\n .catch(() => checkUploadQueueError(variable))\n })\n\n return true\n }\n\n useEffect(() => setProcessingList([]), [group.values])\n\n useEffect(() => {\n setMaxHeight(groupRef.current ? groupRef.current.getBoundingClientRect().height : 0)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [group.upload, collapsed, groupRef.current])\n\n return 0 < group.values.length || group.upload ? (\n hidden ? (\n <div\n className={style['filter-switch']}\n onClick={() => {\n onShowHiddenGroup()\n return setHidden(false)\n }}\n >\n Show {group.title.toLowerCase()}\n </div>\n ) : (\n <>\n <div id={`FiltersPanel-group-${group.key}`} className={style['filter-header']}>\n <span className={style['filter-title']}>{group.title}</span>\n {group.help && <SidebarPopup root={root} help={group.help} />}\n {group.toggle && (\n <span className={style['filter-toggle']} onClick={() => setCollapsed(!collapsed)}>\n {collapsed ? 'EXPAND' : 'COLLAPSE'}\n </span>\n )}\n </div>\n <Transition in={!collapsed} timeout={500}>\n {status => (\n <div\n className={`${style['filter-container']} ${style['transition-panel']}${\n status ? ' ' + style['transition-panel-' + status] : ''\n }`}\n style={{\n maxHeight: group.toggle\n ? collapsed\n ? 0\n : `${0 < maxHeight ? maxHeight + (group.upload ? 30 : 0) : 10000}px`\n : 'unset'\n }}\n >\n <div ref={groupRef}>\n {group.values.map((filter, index) => (\n <FiltersRow\n key={filter.subkey ? `${filter.key}${filter.subkey}` : filter.key}\n mode={state.mode}\n group={group}\n filter={filter}\n filterValues={getFilterValues(filter, index)}\n filterOptions={getFilterOptions(filter)}\n error={getFilterError(filter)}\n processing={getFilterProcessing(filter)}\n onDeleteFilter={onDeleteFilter}\n onDNDStart={onDNDStart}\n onDNDEnd={onDNDEnd}\n />\n ))}\n {group.upload && (\n <div ref={groupUploaderRef} className={`${style['filter-row']} ${style['filter-upload']} p-fluid`}>\n <AssetFileUploader\n text={group.upload.text}\n type={group.upload.type}\n uploadUrl={group.upload.uploadUrl}\n statusUrl={group.upload.statusUrl}\n contentType={group.upload.contentType}\n upgradePackage={group.upload.upgradePackage}\n disabled={group.upload.disabled}\n getAccessKey={async () => await checkApiKey('upload', async () => await getApiKey())}\n onFileUploaded={async (asset, warnings) => {\n checkUploadQueue('upload')\n if ('function' == typeof group.upload.onFileUploaded) {\n await group.upload.onFileUploaded(asset, warnings)\n groupUploaderRef.current.scrollIntoView(false)\n }\n }}\n onFileError={errors => {\n checkUploadQueue('upload', () => {\n if ('function' == typeof group.upload.onFileError) {\n group.upload.onFileError(errors)\n groupUploaderRef.current.scrollIntoView(false)\n }\n })\n }}\n />\n </div>\n )}\n </div>\n </div>\n )}\n </Transition>\n </>\n )\n ) : null\n}\n\nFiltersGroup.propTypes = {\n group: PropTypes.object\n}\n\nFiltersGroup.displayName = 'FiltersGroup'\n\nexport default FiltersGroup\n\nADND().connect()\n","// lib\nimport React, { useReducer, useState, useRef, useMemo, useEffect, useCallback } from 'react'\nimport PropTypes from 'prop-types'\nimport { Map } from 'immutable'\nimport { isEqual, truncate } from 'lodash'\n\nimport containerExpander from '@aytm/lib/layout/container-expander'\nimport SchemaRules from '@aytm/app/stats/lib/schema-rules'\nimport BasicFilters from '@aytm/app/stats/lib/basic-filters'\n\nimport useEventListener from '@aytm/app/stats/page/comments/lib/hooks/useEventListener'\n\nimport { filtersReducer } from '@aytm/app/stats/page/sidebar/filters/reducers'\nimport {\n changeBasicValue,\n deleteBasicValue,\n deleteCascadeBasicValue,\n setAdvancedValue,\n setBasicValue,\n switchMode,\n updateCascadeBasicValue\n} from '@aytm/app/stats/page/sidebar/filters/actions'\n\nimport { getLogicData } from '@aytm/app/stats/lib/refs'\nimport { convertValuesToTree, convertTreeToValues } from '@aytm/app/stats/lib/converter'\n\n// components\nimport { Button } from 'primereact/button'\n\nimport TextPopup from '@aytm/lib/rfd-ui/components/basic/text-popup'\n\nimport FiltersAdvanced from '@aytm/app/stats/page/sidebar/filters/FiltersAdvanced'\nimport FiltersGroup from '@aytm/app/stats/page/sidebar/filters/FiltersGroup'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/filters/styles/FiltersPanel.module.scss'\n\nexport const DataContext = React.createContext()\n\nconst FiltersPanel = ({\n root,\n model,\n features,\n parser,\n locale,\n filtersMode = 'basic',\n filtersPattern = '',\n externalData = [],\n filters,\n tags,\n codeBooks,\n clusters,\n surveySchema,\n disabled,\n isAdmin,\n onChange,\n onScrollToQuestion,\n onSwitchMode,\n onShowHiddenGroup,\n onLoad,\n onDNDStart,\n onDNDEnd,\n restoreQuestion,\n getApiKey\n}) => {\n const [state, dispatch] = useReducer(filtersReducer, {\n mode: filtersMode,\n basic: null,\n advanced: filtersPattern\n })\n\n const [filtersApplying, setFiltersApplying] = useState(false)\n const [filtersReleasing, setFiltersReleasing] = useState(false)\n const [filtersCountApplied, setFiltersCountApplied] = useState(null)\n\n const questionsCallback = useRef(null)\n const dropdownCallback = useRef(null)\n\n const componentRef = useRef()\n const dropdownsRef = useRef({})\n\n const overlayRef = useRef(null)\n\n const stateRef = useRef()\n stateRef.current = state\n\n const filtersPatternRef = useRef()\n filtersPatternRef.current = filtersPattern\n\n const basicFilters = useMemo(\n () =>\n new BasicFilters({\n clusters: clusters,\n surveySchema: surveySchema,\n deepAllowed: true,\n tagsAllowed: true,\n sentimentsAllowed: true,\n isAdmin\n }),\n [clusters, surveySchema, isAdmin]\n )\n\n const basicFiltersRef = useRef()\n basicFiltersRef.current = basicFilters\n\n const filtersChangingRef = useRef(false)\n const filtersApplyingRef = useRef(true)\n\n const contentContainerExpanderRef = useRef()\n\n const filtersChanged = useMemo(() => state.advanced != filtersPattern, [state.advanced, filtersPattern])\n\n const parserResultEof = useMemo(\n () =>\n parser.analyzeString({\n filter: '',\n saveTokens: true\n }),\n [parser]\n )\n const parserResultPattern = useMemo(\n () =>\n parser.analyzeString({\n filter: state.advanced.trim(),\n clusters: clusters,\n saveTokens: true\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [parser, clusters, surveySchema, state.advanced]\n )\n const parserResultPatternError = useMemo(\n () =>\n 0 < state.advanced.trim().length &&\n 0 < parserResultPattern.expression.status.errors.length &&\n parserResultPattern.expression.status.errors.some(v => !['ref', 'cluster'].includes(v.type)),\n [state.advanced, parserResultPattern]\n )\n const parserResultPatternBasic = useMemo(() => {\n try {\n const tree = parserResultPatternError\n ? null\n : 0 < state.advanced.trim().length\n ? 0 < parserResultPattern.expression.status.errors.length\n ? null\n : (basicFilters && basicFilters.convertToBasic(SchemaRules.flatten(parserResultPattern.expression.tree))) ||\n null\n : {}\n if (stateRef.current.basic && null === tree) {\n filtersChangingRef.current = true\n }\n return tree\n } catch {\n return null\n }\n }, [state.advanced, basicFilters, parserResultPattern, parserResultPatternError])\n const parserResultPatternLogicData = useMemo(\n () => getLogicData(tags, codeBooks, parserResultPattern, parserResultPatternError),\n [tags, codeBooks, parserResultPattern, parserResultPatternError]\n )\n\n const filtersUIDs = useMemo(() => {\n const questions = filters.find(group => 'questions' == group.key)\n if (questions == undefined) return {}\n\n return null === parserResultPatternBasic\n ? {}\n : Object.keys(parserResultPatternBasic).reduce((acc, cur) => {\n const question = questions.values.find(q => cur == q.key)\n\n if (question != undefined && question.uid != undefined) {\n acc[question.key] = question.uid\n } else if (question != undefined && question.options.some(option => option.uid != undefined)) {\n acc[cur] = question.options.reduce((_acc, _cur) => {\n _acc[_cur.value] = _cur.uid\n return _acc\n }, {})\n }\n\n return acc\n }, {})\n }, [filters, parserResultPatternBasic])\n\n const filtersCount = useMemo(\n () => (null !== parserResultPatternBasic ? Object.keys(parserResultPatternBasic).length : 0),\n [parserResultPatternBasic]\n )\n\n const scrollAdjustment = useCallback(\n overlay => {\n const rootRect = root.getBoundingClientRect()\n const overlayRect = overlay.getBoundingClientRect()\n if (rootRect.top > overlayRect.top || rootRect.bottom < overlayRect.bottom) {\n overlay.scrollIntoView(false)\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [root]\n )\n\n const scrollCallback = useCallback(\n key => {\n const dropdownNode = dropdownsRef.current[key].current\n const overlay = dropdownNode.getOverlay()\n if (null === overlay) {\n setTimeout(() => dropdownNode.show(), 10)\n } else {\n scrollAdjustment(overlay)\n }\n },\n [scrollAdjustment]\n )\n\n useEffect(() => {\n if (stateRef.current.advanced != filtersPattern) {\n filtersChangingRef.current = true\n if (!filtersApplyingRef.current) {\n setBasicValue(dispatch, null)\n }\n setAdvancedValue(dispatch, filtersPattern)\n }\n setFiltersApplying(false)\n setFiltersReleasing(false)\n }, [model.stateDisabled, filtersPattern])\n\n useEffect(() => {\n if (stateRef.current.mode != filtersMode) {\n switchMode(dispatch, filtersMode)\n }\n }, [model.stateDisabled, filtersMode])\n\n useEffect(() => {\n if (onSwitchMode && 'function' == typeof onSwitchMode) {\n onSwitchMode({\n filtersCount: filtersCountApplied,\n filtersMode:\n ((parserResultPatternError || null === parserResultPatternBasic) &&\n 0 < stateRef.current.advanced.length &&\n 'advanced') ||\n state.mode\n })\n\n root.scroll({\n top: 0,\n left: 0\n })\n }\n // onSwitchMode is const\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state.mode])\n\n useEffect(\n () =>\n 'advanced' == stateRef.current.mode &&\n null !== parserResultPatternBasic &&\n features.advanced.disabled &&\n switchMode(dispatch, 'basic'),\n [features, parserResultPatternBasic]\n )\n\n useEffect(() => {\n if (!parserResultPatternError && null !== parserResultPatternBasic) {\n if (!isEqual(stateRef.current.basic, parserResultPatternBasic)) {\n setBasicValue(dispatch, parserResultPatternBasic)\n }\n if (\n 'advanced' == stateRef.current.mode &&\n !stateRef.current.advanced.trim().length &&\n features.advanced.disabled\n ) {\n root.scroll({\n top: 0,\n left: 0\n })\n\n switchMode(dispatch, 'basic')\n }\n } else if (\n stateRef.current.advanced == filtersPattern &&\n (parserResultPatternError || null === parserResultPatternBasic)\n ) {\n if ('basic' == stateRef.current.mode) {\n root.scroll({\n top: 0,\n left: 0\n })\n }\n\n switchMode(dispatch, 'advanced')\n setBasicValue(dispatch, null)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filtersPattern, parserResultPatternError, parserResultPatternBasic])\n\n useEffect(() => {\n if (\n 'basic' == stateRef.current.mode &&\n // state.advanced == filtersPatternRef.current &&\n !filtersApplyingRef.current &&\n !parserResultPatternError &&\n null === parserResultPatternBasic\n ) {\n root.scroll({\n top: 0,\n left: 0\n })\n\n switchMode(dispatch, 'advanced')\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state.advanced, parserResultPatternError, parserResultPatternBasic])\n\n useEffect(() => {\n if (filtersChangingRef.current) {\n filtersChangingRef.current = false\n } else if (state.basic && !parserResultPatternError && !isEqual(state.basic, parserResultPatternBasic)) {\n filtersChangingRef.current = true\n setAdvancedValue(dispatch, basicFiltersRef.current.convertToAdvanced(state.basic))\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state.basic, parserResultPatternError, parserResultPatternBasic])\n\n useEffect(() => {\n if (state.advanced == filtersPattern) {\n setFiltersCountApplied(filtersCount)\n }\n }, [state.advanced, filtersPattern, filtersCount])\n\n useEffect(() => {\n if (stateRef.current.advanced == filtersPatternRef.current) {\n filtersApplyingRef.current = false\n }\n }, [parserResultPatternBasic])\n\n useEffect(() => {\n if (state.advanced == filtersPattern && onLoad && 'function' == typeof onLoad) {\n onLoad({\n filtersCount: filtersCountApplied,\n filtersMode: stateRef.current.mode,\n filtersModeDisabled: null === parserResultPatternBasic\n })\n }\n // onLoad is const\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state.advanced, filtersPattern, filtersCountApplied, parserResultPatternBasic])\n\n useEffect(() => {\n 'function' == typeof questionsCallback.current && questionsCallback.current()\n questionsCallback.current = null\n }, [filters])\n\n useEffect(() => {\n if (null !== dropdownCallback.current && dropdownsRef.current[dropdownCallback.current] != undefined) {\n scrollCallback(dropdownCallback.current)\n dropdownCallback.current = null\n }\n // scrollCallback is const\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state.basic])\n\n useEffect(\n () => (contentContainerExpanderRef.current = containerExpander(componentRef.current, { margin: 0 })),\n [componentRef]\n )\n\n const onApplyFilters = useCallback(() => {\n setFiltersApplying(true)\n\n filtersApplyingRef.current = true\n\n onChange({\n filtersCount,\n filtersPattern: state.advanced,\n filtersMode: state.mode,\n filtersModeDisabled: null === parserResultPatternBasic,\n logicData: parserResultPatternLogicData\n })\n }, [state.advanced, state.mode, parserResultPatternBasic, parserResultPatternLogicData, onChange, filtersCount])\n\n const onReleaseActiveFilters = useCallback(() => {\n setFiltersReleasing(true)\n\n onChange({\n filtersCount: 0,\n filtersPattern: '',\n filtersMode: state.mode,\n filtersModeDisabled: false,\n logicData: []\n })\n }, [state.mode, onChange])\n\n // ONCHANGE FILTER HANDLERS\n const onChangeAdvancedFilter = useCallback(\n (value = '') => {\n if (!value || (value && value.trim())) {\n filtersChangingRef.current = true\n setAdvancedValue(dispatch, value)\n }\n },\n [dispatch]\n )\n const onChangeBasicFilter = useCallback(\n (filter, _values) => {\n const values =\n null === _values ||\n ('sliderselect' == filter.type &&\n (_values[0] < 1 ||\n _values[1] > filter.options.length ||\n (1 == _values[0] && _values[1] == filter.options.length)))\n ? 'sliderselect' == filter.type && !(1 == _values[0] && _values[1] == filter.options.length)\n ? [1, filter.options.length]\n : []\n : _values\n const treeValue = convertValuesToTree(filter, filter.key, values, 'value')\n if ('dropdown' == filter.type && filter.subkey != undefined) {\n updateCascadeBasicValue(dispatch, filter.key.toUpperCase(), filter.subkey.toUpperCase(), treeValue)\n } else if ('button' == filter.type && state.basic[filter.key.toUpperCase()]) {\n deleteBasicValue(dispatch, filter.key)\n } else {\n if (0 < Object.keys(treeValue[filter.key.toUpperCase()]).length) {\n changeBasicValue(dispatch, treeValue)\n } else deleteBasicValue(dispatch, filter.key)\n }\n },\n [state.basic, dispatch]\n )\n const onResetBasicFilter = useCallback(\n filter => {\n if ('dropdown' == filter.type && filter.subkey != undefined) {\n deleteCascadeBasicValue(dispatch, filter.key.toUpperCase(), filter.subkey.toUpperCase())\n } else {\n deleteBasicValue(dispatch, filter.key)\n }\n },\n [dispatch]\n )\n\n const onShowFilterDropdown = useCallback(\n dropdownNode => {\n const overlay = dropdownNode.getOverlay()\n contentContainerExpanderRef.current.expand(overlay)\n setTimeout(() => {\n scrollAdjustment(overlay)\n }, 50)\n\n overlayRef.current = overlay\n },\n [scrollAdjustment]\n )\n\n const onHideFilterDropdown = useCallback(\n dropdownNode => {\n const overlay = dropdownNode.getOverlay()\n contentContainerExpanderRef.current.unexpand(overlay)\n setTimeout(() => {\n scrollAdjustment(overlay)\n }, 50)\n\n overlayRef.current = null\n },\n [scrollAdjustment]\n )\n\n useEventListener(`applyAnswerValue`, event => {\n if (disabled || null === parserResultPatternBasic) return\n\n const filter = filters\n .filter(group => ['questions', 'excluded'].includes(group.key))\n .flatMap(group => group.values)\n .find(opt => opt.key == event.detail.key)\n if (filter == undefined) return\n\n if (dropdownsRef.current[event.detail.key] && dropdownsRef.current[event.detail.key].current) {\n scrollCallback(event.detail.key)\n } else {\n dropdownCallback.current = event.detail.key\n }\n\n const values = convertTreeToValues(filter, state.basic[event.detail.key], 'value')\n const index = values.findIndex(v =>\n 'multiselect' == filter.type ? v == event.detail.value : v.value == event.detail.value\n )\n\n switchMode(dispatch, 'basic')\n\n if (0 > index) {\n const option = 'multiselect' == filter.type ? event.detail.value : { state: true, value: event.detail.value }\n onChangeBasicFilter(filter, [...values, option])\n } else {\n const _values = [...values]\n if ('multiselect' == filter.type) _values.splice(index, 1)\n else {\n if (true == _values[index].state) _values[index].state = false\n else _values.splice(index, 1)\n }\n onChangeBasicFilter(filter, _values)\n }\n })\n\n useEventListener('applyUserFilter', event => {\n if (disabled || features.advanced.disabled) return\n\n const { pattern, filter } = event.detail\n\n const currentAdvPart = state.advanced.trim()\n const regexp = new RegExp(`\\\\(\\\\(\\\\(${pattern}\\\\)\\\\)\\\\)`, 'i')\n\n let newFilter = ''\n if (!parserResultPatternError && '' != currentAdvPart) {\n newFilter = regexp.test(currentAdvPart)\n ? currentAdvPart.replace(regexp, filter)\n : `${currentAdvPart} ${\n currentAdvPart.endsWith(' and') || currentAdvPart.endsWith(' or') ? '' : 'and'\n } ${filter}`\n } else {\n newFilter = filter\n }\n\n filtersChangingRef.current = true\n\n switchMode(dispatch, 'advanced')\n setAdvancedValue(dispatch, newFilter)\n })\n\n useEventListener('customQuestionRemoved', event => {\n if (null === parserResultPatternBasic) return\n\n deleteBasicValue(dispatch, event.detail)\n })\n\n useEventListener('customQuestionChanged', event => {\n if (null === parserResultPatternBasic) return\n\n if (Object.hasOwn(event.detail, 'variant')) {\n if (filtersApplyingRef.current) return\n\n filtersChangingRef.current = true\n setBasicValue(dispatch, null)\n\n return\n }\n\n const treeValue = {}\n\n if (filtersUIDs[event.detail.id]) {\n const basic = state.basic[event.detail.id]\n if (basic == undefined) return\n\n const treeKeys = Object.keys(basic)\n\n for (const treeKey of treeKeys) {\n const newKey = event.detail.items[filtersUIDs[event.detail.id][treeKey]]\n if (newKey == undefined) continue\n\n treeValue[newKey] = basic[treeKey]\n }\n\n if (0 < Object.keys(treeValue).length) {\n if (event.detail.delay) {\n questionsCallback.current = () => changeBasicValue(dispatch, { [event.detail.id]: treeValue })\n } else {\n changeBasicValue(dispatch, { [event.detail.id]: treeValue })\n }\n } else deleteBasicValue(dispatch, event.detail.id)\n } else {\n const items = Object.values(event.detail.items)\n\n const treeKeys = Object.keys(filtersUIDs).filter(\n key => null !== key.match(new RegExp(`^${event.detail.id}(?!\\\\d)`, 'gi'))\n )\n\n if (0 < treeKeys.length) {\n for (const key of treeKeys) {\n const basic = state.basic[key]\n if (basic == undefined) continue\n\n treeValue[key] ||= null\n\n const item = event.detail.items[filtersUIDs[key]]\n if (item == undefined) continue\n\n const newKeys = Object.keys(basic).filter(v => Number(v.slice(1)) <= items[0].size)\n\n if (0 < newKeys.length)\n treeValue[`${event.detail.id}${item.key}`] = newKeys.reduce((acc, cur) => {\n acc[cur] = basic[cur]\n return acc\n }, {})\n else treeValue[`${event.detail.id}${item.key}`] = null\n }\n\n if (event.detail.delay) {\n questionsCallback.current = () => changeBasicValue(dispatch, treeValue)\n } else {\n changeBasicValue(dispatch, treeValue)\n }\n }\n }\n })\n\n const dataContextValue = useMemo(() => {\n return {\n root,\n features,\n state,\n dispatch,\n windowUID: model.windowUID,\n externalData,\n disabled,\n dropdownsRef,\n restoreQuestion,\n getApiKey,\n onScrollToQuestion,\n onChangeAdvancedFilter,\n onChangeBasicFilter,\n onResetBasicFilter,\n onShowFilterDropdown,\n onHideFilterDropdown,\n onShowHiddenGroup,\n onDNDStart,\n onDNDEnd\n }\n }, [\n root,\n features,\n state,\n dispatch,\n model.windowUID,\n externalData,\n disabled,\n dropdownsRef,\n restoreQuestion,\n getApiKey,\n onScrollToQuestion,\n onChangeAdvancedFilter,\n onChangeBasicFilter,\n onResetBasicFilter,\n onShowFilterDropdown,\n onHideFilterDropdown,\n onShowHiddenGroup,\n onDNDStart,\n onDNDEnd\n ])\n\n return (\n <div\n ref={componentRef}\n className={`${style.component}${\n disabled || ('advanced' == state.mode && features.advanced.disabled) ? ' ' + style['component-disabled'] : ''\n }`}\n >\n <div\n className={`${style.header}${\n disabled || ('advanced' == state.mode && features.advanced.disabled) ? ' ' + style['header-disabled'] : ''\n } p-fluid`}\n >\n {'advanced' == state.mode || !features.advanced.disabled ? (\n 'advanced' == state.mode && null === parserResultPatternBasic ? (\n <div className={`${style.toggle} ${style['toggle-disabled']} p-field p-col-12`}>\n Simplify/clear logic to switch to the basic mode\n </div>\n ) : (\n <div\n className={`${style.toggle} p-field p-col-12`}\n onClick={() => switchMode(dispatch, 'advanced' == state.mode ? 'basic' : 'advanced')}\n >\n {'basic' == state.mode && 0 < state.advanced.length && !features.advanced.hidden ? (\n <TextPopup\n portal={true}\n text={`switch to ${'advanced' == state.mode ? 'basic mode' : 'advanced mode'}`}\n content={truncate(state.advanced, { length: 500, separator: ' ' })}\n direction=\"bottomleft\"\n />\n ) : 'basic' == state.mode && features.advanced.hidden ? null : (\n <>switch to {'advanced' == state.mode ? 'basic mode' : 'advanced mode'}</>\n )}\n </div>\n )\n ) : null}\n {disabled ? null : (\n <div className={`${style.apply} p-field p-col-12`}>\n {filtersChanged && !filtersReleasing ? (\n <Button\n label={`CLICK HERE TO ${!state.advanced.length ? 'CLEAR' : 'APPLY'} FILTERS`}\n disabled={filtersApplying || parserResultPatternError}\n onClick={filtersApplying || parserResultPatternError ? null : onApplyFilters}\n />\n ) : 0 < filtersPattern.length ? (\n <Button\n label={\n 'basic' == state.mode && null !== parserResultPatternBasic\n ? `RELEASE ${filtersCountApplied} ACTIVE FILTER${1 < filtersCountApplied ? 'S' : ''}`\n : 'RELEASE ACTIVE FILTERS'\n }\n disabled={filtersApplying || filtersReleasing}\n onClick={filtersApplying || filtersReleasing ? null : onReleaseActiveFilters}\n />\n ) : null}\n </div>\n )}\n </div>\n <DataContext.Provider value={dataContextValue}>\n {('advanced' == state.mode || null === parserResultPatternBasic) && (\n <FiltersAdvanced\n locale={locale}\n surveySchema={surveySchema}\n parserResultEof={parserResultEof}\n parserResultPattern={parserResultPattern || parserResultEof}\n />\n )}\n {filters\n .filter(filter =>\n 'advanced' == state.mode || null === parserResultPatternBasic ? filter.advanced : filter.basic\n )\n .map(filter => (\n <FiltersGroup key={filter.key} group={filter} />\n ))}\n </DataContext.Provider>\n </div>\n )\n}\n\nFiltersPanel.propTypes = {\n root: PropTypes.any,\n model: PropTypes.object,\n features: PropTypes.object,\n parser: PropTypes.any.isRequired,\n locale: PropTypes.instanceOf(Map),\n filtersMode: PropTypes.string,\n filtersPattern: PropTypes.string,\n externalData: PropTypes.array,\n filters: PropTypes.array,\n tags: PropTypes.object,\n codeBooks: PropTypes.array,\n clusters: PropTypes.object,\n surveySchema: PropTypes.object,\n disabled: PropTypes.bool,\n isAdmin: PropTypes.bool,\n onChange: PropTypes.func,\n onScrollToQuestion: PropTypes.func,\n onSwitchMode: PropTypes.func,\n onShowHiddenGroup: PropTypes.func,\n onLoad: PropTypes.func,\n onDNDStart: PropTypes.func,\n onDNDEnd: PropTypes.func,\n restoreQuestion: PropTypes.func,\n getApiKey: PropTypes.func\n}\n\nFiltersPanel.displayName = 'FiltersPanel'\n\nexport default FiltersPanel\n","// lib\nimport React, { useContext, useState, useRef, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\nimport ADND from '@aytm/lib/adnd/ADND'\nimport { DataContext } from '@aytm/app/stats/page/sidebar/filters/FiltersPanel'\n\n// components\nimport { RadioButton } from 'primereact/radiobutton'\nimport { Dropdown } from 'primereact/dropdown'\nimport { MultiSelect } from 'primereact/multiselect'\nimport { MultiStateMultiSelect } from 'primereact/multistatemultiselect'\n\nimport DropdownSlider from 'primereact-raytm-theme/DropdownSlider'\nimport MultiSelectHeader from 'primereact-raytm-theme/MultiSelectHeader'\nimport MultiSelectFooter from 'primereact-raytm-theme/MultiSelectFooter'\n\nimport { optionGroupTemplate } from '@aytm/app/stats/page/question-views/components/lib/templates'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/filters/styles/FiltersPanel.module.scss'\n\nconst FiltersRow = ({\n mode,\n group,\n filter,\n filterValues,\n filterOptions,\n error,\n processing,\n onDeleteFilter,\n onDNDStart,\n onDNDEnd\n}) => {\n const {\n windowUID,\n disabled,\n dropdownsRef,\n restoreQuestion,\n onScrollToQuestion,\n onChangeBasicFilter,\n onResetBasicFilter,\n onShowFilterDropdown,\n onHideFilterDropdown\n } = useContext(DataContext)\n\n const [values, setValues] = useState(null !== filterValues ? JSON.parse(filterValues) : filterValues)\n const [options, setOptions] = useState(filterOptions)\n\n const [restoreDisabled, setRestoreDisabled] = useState(false)\n\n const filterRef = useRef(null)\n\n const dndListItemRef = useRef()\n\n const filterDisabled = useMemo(\n () => disabled || filter.disabled || (group.external && 'function' != typeof group.onChange),\n [disabled, filter.disabled, group.external, group.onChange]\n )\n const filterSelected = useMemo(\n () =>\n 'advanced' == mode || 'radiobutton' == filter.type || filterDisabled\n ? false\n : 'basic' == mode || group.external\n ? 'sliderselect' == filter.type\n ? `1-${options.length}` != values.join('-')\n : null !== values && (0 < values.length || 'button' == filter.type)\n : false,\n [mode, filter.type, group.external, values, options, filterDisabled]\n )\n\n const filterFlatOptions = useMemo(\n () =>\n ['multistatemultiselect', 'multiselect'].includes(filter.type) && filter.group\n ? options.flatMap(option => option.items)\n : options,\n [filter.type, filter.group, options]\n )\n\n const onChangeSlider = useCallback(\n event => {\n const values = [Math.max(event.value[0], 1), Math.min(event.value[1], options.length)]\n values.sort((a, b) => a - b)\n\n setValues(values)\n },\n [options]\n )\n\n const onChangeFilter = useCallback(\n event => {\n if (group.external) group.onChange(event)\n else {\n switch (filter.type) {\n case 'sliderselect': {\n const values = [Math.max(event.value[0], 1), Math.min(event.value[1], options.length)]\n values.sort((a, b) => a - b)\n\n onChangeBasicFilter(filter, values)\n break\n }\n case 'dropdown': {\n const values = [event.value]\n\n onChangeBasicFilter(filter, values)\n break\n }\n case 'multistatemultiselect': {\n const values = event.value\n values.sort(\n (a, b) =>\n filterFlatOptions.findIndex(v => v.value == a.value) -\n filterFlatOptions.findIndex(v => v.value == b.value)\n )\n\n onChangeBasicFilter(filter, values)\n break\n }\n case 'multiselect': {\n const values = event.value\n values.sort(\n (a, b) => filterFlatOptions.findIndex(v => v.value == a) - filterFlatOptions.findIndex(v => v.value == b)\n )\n\n onChangeBasicFilter(filter, values)\n break\n }\n case 'button': {\n onChangeBasicFilter(filter, null)\n break\n }\n case 'radiobutton': {\n onChangeBasicFilter(filter, event.value)\n break\n }\n default: {\n break\n }\n }\n }\n },\n [filter, group, options, filterFlatOptions, onChangeBasicFilter]\n )\n\n const fetchData = {\n key: (filter.id || filter.key).split('-')[1],\n model: null,\n windowUID\n }\n const dndListItem =\n !disabled && filter.hasHandle\n ? ADND.sources\n .data({\n type: `${group.type}-${windowUID}`,\n clearDragImage: false\n })\n .onStart(onDNDStart)\n .onEnd(onDNDEnd)\n .fetchData(() => fetchData)\n : null\n\n const onRestoreQuestion = () => {\n setRestoreDisabled(true)\n restoreQuestion(filter.id)\n }\n\n const onShowDropdown = () => {\n if (null === filterRef.current) return\n onShowFilterDropdown(filterRef.current)\n }\n\n const onHideDropdown = () => {\n if (null === filterRef.current) return\n onHideFilterDropdown(filterRef.current)\n }\n\n const onDeleteClick = () => {\n if (Object.hasOwn(filter, 'derived')) {\n for (const v of filter.derived) {\n onDeleteFilter(v)\n }\n } else onDeleteFilter(filter.key)\n }\n\n const itemTemplate = option =>\n option.disabled && option.icon == undefined ? (\n <span dangerouslySetInnerHTML={{ __html: option.label }}></span>\n ) : (\n <span className=\"p-item-label\">\n {option.icon ? <i className={`icon-aytmfd-${option.icon}`} /> : null}\n <span dangerouslySetInnerHTML={{ __html: option.label }}></span>\n </span>\n )\n\n const labelTemplate = useCallback(\n value =>\n 'sliderselect' == filter.type ? (\n <span\n dangerouslySetInnerHTML={{\n __html: options[Math.min(Math.max(value, 1), options.length) - 1].label\n }}\n ></span>\n ) : null,\n [filter.type, options]\n )\n\n const buttonLabelTemplate = useCallback(\n event => {\n let label = filter.title\n\n if ('sliderselect' == filter.type) {\n label =\n event.sliderProps != undefined && event.sliderProps.value != undefined && 2 <= event.sliderProps.value.length\n ? `${event.sliderProps.min}-${event.sliderProps.max}` == event.sliderProps.value.join('-')\n ? filter.title\n : `${filter.title}: ${options[event.sliderProps.value[0] - 1].label} – ${\n options[event.sliderProps.value[1] - 1].label\n }`\n : filter.title\n } else if ('dropdown' == filter.type) {\n if (values != undefined && 0 < values.length) label = `${filter.title}: ${values[0]}`\n } else if (event != undefined && event.value != undefined) {\n if (\n (('multistatemultiselect' == filter.type && !event.value.some(item => !item.state)) ||\n 'multiselect' == filter.type) &&\n filterFlatOptions.length == event.value.length\n ) {\n label = `${event.placeholder}: All`\n } else if (0 < event.value.length) {\n label =\n 1 == event.value.length && ('multiselect' == filter.type || event.value[0].state)\n ? `${event.placeholder}: ${\n filterFlatOptions.find(\n o => o.value == ('multiselect' == filter.type ? event.value[0] : event.value[0][event.optionValue])\n )[event.optionLabel]\n }`\n : `${event.placeholder}: Filtered to ${event.value.length}`\n }\n } else if (event != undefined) label = event.placeholder\n\n return (\n <>\n {filter.icon ? <i className={`icon-aytmfd-${filter.icon}`} /> : null}\n <span dangerouslySetInnerHTML={{ __html: label }}></span>\n </>\n )\n },\n [filter, values, options, filterFlatOptions]\n )\n\n useEffect(() => {\n if (dndListItem) dndListItem.connect(dndListItemRef.current)\n\n return () => {\n if (dndListItem) dndListItem.disconnect()\n }\n }, [dndListItem])\n\n useEffect(() => {\n const _values = null !== filterValues ? JSON.parse(filterValues) : filterValues\n setValues(_values)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filterValues])\n useEffect(() => {\n setOptions(filterOptions)\n }, [filterOptions])\n\n useEffect(() => {\n if ('questions' == group.key && ['dropdown', 'multistatemultiselect', 'multiselect'].includes(filter.type)) {\n dropdownsRef.current[filter.key] = filterRef\n }\n\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n delete dropdownsRef.current[filter.key]\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filter, group, filterRef, dropdownsRef.current]) // TODO\n\n const renderComponent = () => {\n switch (filter.type) {\n case 'sliderselect': {\n return (\n <DropdownSlider\n dropdownClassName={\n null !== values && `1-${options.length}` != values.join('-') ? 'p-subtheme-contrast' : ''\n }\n range\n min={1}\n max={options.length}\n value={values}\n labelTemplate={labelTemplate}\n buttonLabelTemplate={buttonLabelTemplate}\n disabled={filterDisabled || !options.length}\n onSlideEnd={filterDisabled || !options.length ? null : onChangeFilter}\n onChange={filterDisabled || !options.length ? null : onChangeSlider}\n />\n )\n }\n case 'dropdown': {\n return (\n <Dropdown\n ref={filterRef}\n className={null !== values && 0 < values.length ? 'p-subtheme-contrast' : ''}\n placeholder={filter.title}\n value={values}\n options={options}\n optionValue=\"value\"\n optionLabel=\"label\"\n itemTemplate={itemTemplate}\n valueTemplate={buttonLabelTemplate}\n filter={filter && Array.isArray(options) && options.some(o => !o.disabled)}\n filterBy={'search,label'}\n filterPlaceholder=\"Search items\"\n resetFilterOnHide={true}\n filterInputAutoFocus={false}\n fixedDropdownDir=\"bottom\"\n disabled={filterDisabled || !options.length}\n onChange={filterDisabled || !options.length ? null : onChangeFilter}\n onShow={filterDisabled || !options.length ? null : onShowDropdown}\n onHide={filterDisabled || !options.length ? null : onHideDropdown}\n />\n )\n }\n case 'multistatemultiselect': {\n return (\n <MultiStateMultiSelect\n ref={filterRef}\n className={null !== values && 0 < values.length ? 'p-subtheme-contrast' : ''}\n placeholder={filter.title}\n value={values}\n options={options}\n optionValue=\"value\"\n optionLabel=\"label\"\n optionGroupLabel={filter.group ? 'text' : null}\n optionGroupChildren={filter.group ? 'items' : null}\n itemTemplate={itemTemplate}\n optionGroupTemplate={filter.group ? optionGroupTemplate : null}\n buttonLabelTemplate={buttonLabelTemplate}\n panelHeaderTemplate={MultiSelectHeader}\n panelFooterTemplate={MultiSelectFooter}\n filter={filterFlatOptions.some(o => !o.disabled)}\n filterBy={'search,label'}\n filterPlaceholder=\"Search items\"\n resetFilterOnHide={true}\n // filterInputAutoFocus={false}\n fixedDropdownDir=\"bottom\"\n disabled={filterDisabled || !options.length}\n onChange={filterDisabled || !options.length ? null : onChangeFilter}\n onShow={filterDisabled || !options.length ? null : onShowDropdown}\n onHide={filterDisabled || !options.length ? null : onHideDropdown}\n />\n )\n }\n case 'multiselect': {\n return (\n <MultiSelect\n ref={filterRef}\n className={null !== values && 0 < values.length ? 'p-subtheme-contrast' : ''}\n placeholder={filter.title}\n value={values}\n options={options}\n optionValue=\"value\"\n optionLabel=\"label\"\n optionGroupLabel={filter.group ? 'text' : null}\n optionGroupChildren={filter.group ? 'items' : null}\n itemTemplate={itemTemplate}\n optionGroupTemplate={filter.group ? optionGroupTemplate : null}\n buttonLabelTemplate={buttonLabelTemplate}\n panelHeaderTemplate={MultiSelectHeader}\n panelFooterTemplate={MultiSelectFooter}\n filter={filterFlatOptions.some(o => !o.disabled)}\n filterBy={'search,label'}\n filterPlaceholder=\"Search items\"\n resetFilterOnHide={true}\n // filterInputAutoFocus={false}\n fixedDropdownDir=\"bottom\"\n disabled={filterDisabled || !options.length}\n onChange={filterDisabled || !options.length ? null : onChangeFilter}\n onShow={filterDisabled || !options.length ? null : onShowDropdown}\n onHide={filterDisabled || !options.length ? null : onHideDropdown}\n />\n )\n }\n case 'button': {\n return (\n <div\n className={`${style['filter-button']}${\n null !== values ? ' ' + style['filter-button-active'] + ' p-subtheme-contrast' : ''\n }${filterDisabled ? ' ' + style['filter-button-disabled'] + ' p-disabled' : ''}`}\n onClick={filterDisabled ? null : onChangeFilter}\n >\n {filter.icon ? <i className={`icon-aytmfd-${filter.icon}`} /> : null}\n <span dangerouslySetInnerHTML={{ __html: filter.title }}></span>\n </div>\n )\n }\n case 'radiobutton': {\n return options.map(option => (\n <div\n key={`${filter.key}-${option.value}`}\n className={`${style['filter-radio']}${filterDisabled ? '' : ' p-subtheme-contrast'}`}\n >\n <RadioButton\n inputId={`filter-${filter.key}-${option.value}`}\n name={filter.key}\n value={option.value}\n checked={values == option.value}\n disabled={filterDisabled}\n onChange={filterDisabled ? null : onChangeFilter}\n />\n <label\n htmlFor={`filter-${filter.key}-${option.value}`}\n className={filterDisabled ? 'p-disabled' : ''}\n onClick={filterDisabled ? null : onChangeFilter.bind(this, option)}\n dangerouslySetInnerHTML={{ __html: option.label }}\n ></label>\n </div>\n ))\n }\n default: {\n return null\n }\n }\n }\n\n return (\n <div className={`${style['filter-row']} ${style[`offset-${filter.lvl || 0}`]} p-fluid`} data-id={filter.key}>\n {filterSelected && (\n <span\n className={`${style['filter-reset']}${filterDisabled ? ' p-disabled' : ''}`}\n onClick={filterDisabled ? null : group.external ? group.onChange : () => onResetBasicFilter(filter)}\n >\n <i className=\"icon-aytmfd-delete\" />\n </span>\n )}\n <div ref={dndListItemRef}>\n {'basic' == mode || group.external ? (\n renderComponent()\n ) : (\n <div className={`${style['filter-button']} p-disabled`}>\n {filter.icon ? <i className={`icon-aytmfd-${filter.icon}`} /> : null}\n <span dangerouslySetInnerHTML={{ __html: filter.title }}></span>\n </div>\n )}\n {group.remove && !group.remove.disabled && !filterDisabled && (\n <span className={style['filter-remove']} onClick={group.external ? group.onChange : onDeleteClick}>\n <i className={processing ? 'icon-aytmfd-spin aytmfd-spin' : 'icon-aytmfd-trash'} />\n </span>\n )}\n {!disabled && filter.hasHandle && (\n <span className={style['filter-handle']}>\n <i className=\"icon-aytmfd-handle\"></i>\n </span>\n )}\n </div>\n {!disabled && filter.hasHandle && (\n <span className={style['filter-restore']} onClick={restoreDisabled ? null : onRestoreQuestion} />\n )}\n {filter.hasScrollTo && (\n <span className={style['filter-scroll']} data-id={filter.id} onClick={() => onScrollToQuestion(filter.id)} />\n )}\n {error && <div className={style['filter-error-message']}>There was some problem during deletion</div>}\n </div>\n )\n}\n\nFiltersRow.propTypes = {\n mode: PropTypes.string,\n group: PropTypes.object,\n filter: PropTypes.object,\n filterValues: PropTypes.any,\n filterOptions: PropTypes.any,\n error: PropTypes.bool,\n processing: PropTypes.bool,\n onDeleteFilter: PropTypes.func,\n onDNDStart: PropTypes.func,\n onDNDEnd: PropTypes.func\n}\n\nFiltersRow.displayName = 'FiltersRow'\n\nexport default FiltersRow\n\nADND().connect()\n","export const switchMode = (dispatch, mode = 'basic') => {\n dispatch({\n type: 'SWITCH_MODE',\n request: {\n mode\n }\n })\n}\n\nexport const setHelpPopup = (dispatch, helpPopup = null) => {\n dispatch({\n type: 'SET_HELP_POPUP',\n request: {\n helpPopup\n }\n })\n}\n\nexport const setAdvancedValue = (dispatch, value = '') => {\n dispatch({\n type: 'SET_ADVANCED_VALUE',\n request: {\n value\n }\n })\n}\nexport const setBasicValue = (dispatch, value = {}) => {\n dispatch({\n type: 'SET_BASIC_VALUE',\n request: {\n value\n }\n })\n}\n\nexport const changeBasicValue = (dispatch, value = {}) => {\n dispatch({\n type: 'CHANGE_BASIC_VALUE',\n request: {\n value\n }\n })\n}\n\nexport const updateCascadeBasicValue = (dispatch, key, subkey, value = {}) => {\n dispatch({\n type: 'UPDATE_CASCADE_BASIC_VALUE',\n request: {\n key,\n subkey,\n value\n }\n })\n}\n\nexport const deleteCascadeBasicValue = (dispatch, key, subkey) => {\n dispatch({\n type: 'DELETE_CASCADE_BASIC_VALUE',\n request: {\n key,\n subkey\n }\n })\n}\n\nexport const deleteBasicValue = (dispatch, keys) => {\n dispatch({\n type: 'DELETE_BASIC_VALUE',\n request: {\n keys\n }\n })\n}\n\nexport const resetFilters = dispatch => {\n dispatch({\n type: 'RESET_FILTERS'\n })\n}\n","import { cloneDeep } from 'lodash'\n\nconst DEFAULT_STATE = {\n mode: 'basic',\n basic: {},\n advanced: ''\n}\nexport const filtersReducer = (state = DEFAULT_STATE, action) => {\n switch (action.type) {\n case 'SWITCH_MODE': {\n return {\n ...state,\n mode: action.request.mode\n }\n }\n case 'SET_HELP_POPUP': {\n return {\n ...state,\n helpPopup: action.request.helpPopup\n }\n }\n case 'SET_ADVANCED_VALUE': {\n return {\n ...state,\n advanced: action.request.value\n }\n }\n case 'SET_BASIC_VALUE': {\n return {\n ...state,\n basic: action.request.value\n }\n }\n case 'CHANGE_BASIC_VALUE': {\n const basic = { ...state.basic, ...action.request.value }\n\n return {\n ...state,\n basic: Object.fromEntries(Object.entries(basic).filter(([_, value]) => null !== value))\n }\n }\n case 'UPDATE_CASCADE_BASIC_VALUE': {\n const result = {\n ...state,\n basic: {\n ...state.basic,\n [action.request.key]: {\n ...(state.basic[action.request.key] || {}),\n ...action.request.value[action.request.key]\n }\n }\n }\n if (action.request.subkey[1]) {\n const level = Number(action.request.subkey[1])\n Object.keys(result.basic[action.request.key]).forEach(subkey => {\n if (Number(subkey[1]) > level) {\n delete result.basic[action.request.key][subkey]\n }\n })\n }\n return result\n }\n\n case 'DELETE_CASCADE_BASIC_VALUE': {\n const basic = cloneDeep(state.basic)\n if (basic[action.request.key] && basic[action.request.key][action.request.subkey])\n delete basic[action.request.key][action.request.subkey]\n const level = Number(action.request.subkey[1])\n Object.keys(basic[action.request.key]).forEach(subkey => {\n if (Number(subkey[1]) > level) {\n delete basic[action.request.key][subkey]\n }\n })\n return {\n ...state,\n basic\n }\n }\n\n case 'DELETE_BASIC_VALUE': {\n const basic = { ...state.basic }\n\n const keys = Array.isArray(action.request.keys) ? action.request.keys : [action.request.keys]\n for (const key of keys) delete basic[key.toUpperCase()]\n\n return {\n ...state,\n basic\n }\n }\n case 'RESET_FILTERS': {\n return {\n ...state,\n basic: {}\n }\n }\n default:\n throw new Error('Unknown action type')\n }\n}\n","// lib\nimport React, { useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport DropTargetContainer from '@aytm/app/stats/page/sidebar/components/DropTargetContainer'\n\nimport CustomQuestionButton from '@aytm/app/stats/page/sidebar/components/CustomQuestionButton'\nimport PinnedCustomQuestion from '@aytm/app/stats/page/sidebar/components/PinnedCustomQuestion'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/mapping/styles/MappingPanel.module.scss'\n\nconst MappingPanel = ({\n sidebar,\n root,\n model,\n features,\n buttons,\n mappings,\n questions,\n addCustomQuestion,\n addPinnedQuestion,\n removePinnedQuestion,\n onDNDStart,\n onDNDEnd\n}) => {\n const acceptTypes = useMemo(\n () =>\n buttons.reduce((acc, cur) => {\n if (!features[cur.feature].disabled) acc.push(cur.adndType)\n return acc\n }, []),\n [buttons, features]\n )\n\n const typesTitles = useMemo(\n () =>\n buttons.reduce((acc, cur) => {\n if (!features[cur.feature].disabled) acc[cur.adndType] = cur.text\n return acc\n }, {}),\n [buttons, features]\n )\n\n return (\n <div className={style.component}>\n <DropTargetContainer\n root={sidebar}\n acceptTypes={acceptTypes}\n typesTitles={typesTitles}\n windowUID={model.windowUID}\n onDNDDrop={addPinnedQuestion}\n >\n <div className={`${style.row} ${style.paragraph} p-fluid`}>\n Add data from this survey to Insights Portal by creating a new mapping or editing an existing mapping. You can\n send concepts, attributes, and variables to your portals.\n </div>\n <div className={`${style.row} ${style.section} p-fluid`}>Create new mapping</div>\n {buttons.map(item =>\n features[item.feature].hidden ? null : (\n <CustomQuestionButton\n key={item.type}\n root={root}\n item={item}\n features={features}\n windowUID={model.windowUID}\n addCustomQuestion={addCustomQuestion}\n onDNDStart={onDNDStart}\n onDNDEnd={onDNDEnd}\n />\n )\n )}\n {0 < mappings.length && (\n <>\n <div className={`${style.row} ${style.section} p-fluid`}>Saved mappings</div>\n <div className={`${style.row} ${style.note} p-fluid`}>\n Note: if a mapping is deleted from the report it's saved in, it will also be permanently removed from\n this list of saved mappings.\n </div>\n {mappings.map(item => (\n <PinnedCustomQuestion\n key={item.key}\n item={item}\n features={features}\n addCustomQuestion={addCustomQuestion}\n onDNDStart={onDNDStart}\n onDNDEnd={onDNDEnd}\n />\n ))}\n </>\n )}\n {0 < questions.length && (\n <>\n <div className={`${style.row} ${style.section} p-fluid`}>Pinned mappings</div>\n {questions.map(item => (\n <PinnedCustomQuestion\n key={`question-${item.index}`}\n item={item}\n features={features}\n addCustomQuestion={addCustomQuestion}\n removePinnedQuestion={removePinnedQuestion}\n onDNDStart={onDNDStart}\n onDNDEnd={onDNDEnd}\n />\n ))}\n </>\n )}\n </DropTargetContainer>\n </div>\n )\n}\n\nMappingPanel.propTypes = {\n sidebar: PropTypes.any,\n root: PropTypes.any,\n model: PropTypes.object,\n features: PropTypes.object,\n buttons: PropTypes.array,\n mappings: PropTypes.array,\n questions: PropTypes.array,\n addCustomQuestion: PropTypes.func,\n addPinnedQuestion: PropTypes.func,\n removePinnedQuestion: PropTypes.func,\n onDNDStart: PropTypes.func,\n onDNDEnd: PropTypes.func\n}\n\nMappingPanel.displayName = 'MappingPanel'\n\nexport default MappingPanel\n","import React, { useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport { fromJS, List, Map } from 'immutable'\n\nimport RadioButton from '@aytm/lib/rfd-ui/components/basic/radio-button'\n\nimport style from '@aytm/app/stats/page/sidebar/palettes/styles/PalettesPanel.module.scss'\n\nconst ColorThemes = ({\n disabled,\n colorThemes,\n reportColorTheme,\n palettes,\n reportPalette,\n isAdmin,\n isSurveyOwner,\n onSelect,\n onPaletteAdd\n}) => {\n const copyAvailable = useMemo(\n () => !disabled && (isAdmin || isSurveyOwner) && 3 > palettes.size,\n [disabled, palettes, isAdmin, isSurveyOwner]\n )\n\n const showReportPalette = useMemo(\n () => null !== reportPalette && !palettes.some(palette => reportPalette.equals(palette.get('data'))),\n [palettes, reportPalette]\n )\n\n const onColorThemeSelect = value => {\n if ('number' == typeof value) onSelect(value, null)\n else onSelect(null, value)\n }\n\n const onColorThemeCopy = value => {\n if ('number' == typeof value) {\n const palette = fromJS({\n colors: colorThemes.get(value).slice(0, 7),\n saturation: 10,\n luminosity: 15\n })\n onPaletteAdd(palette)\n } else {\n onPaletteAdd(value)\n }\n }\n\n return (\n <div className={style['palettes-list']}>\n {colorThemes.map((colorTheme, index) => (\n <div key={`colorTheme-${index}`} className={style['palettes-list-item']}>\n <RadioButton\n disabled={disabled}\n checked={null !== reportColorTheme && reportColorTheme == index}\n onClick={disabled ? null : () => onColorThemeSelect(index)}\n />\n <div\n className={style['palettes-list-item-colors']}\n onClick={disabled ? null : () => onColorThemeSelect(index)}\n >\n {colorTheme.map((color, colorIndex) =>\n 7 > colorIndex ? (\n <span\n key={`colorTheme-${index}-color-${colorIndex}`}\n className={style['palettes-list-item-colors-item']}\n style={{ backgroundColor: color }}\n ></span>\n ) : null\n )}\n </div>\n {copyAvailable && (\n <span className={style['palettes-list-item-edit']} onClick={() => onColorThemeCopy(index)}>\n copy\n </span>\n )}\n </div>\n ))}\n {showReportPalette && (\n <div className={style['palettes-list-item']}>\n <RadioButton\n disabled={disabled}\n checked={true}\n onClick={disabled ? null : () => onColorThemeSelect(reportPalette)}\n />\n <div\n className={style['palettes-list-item-colors']}\n onClick={disabled ? null : () => onColorThemeSelect(reportPalette)}\n >\n {reportPalette.get('colors').map((color, colorIndex) => (\n <span\n key={`colorTheme-custom-color-${colorIndex}`}\n className={style['palettes-list-item-colors-item']}\n style={{ backgroundColor: color }}\n ></span>\n ))}\n </div>\n {copyAvailable && (\n <span className={style['palettes-list-item-edit']} onClick={() => onColorThemeCopy(reportPalette)}>\n copy\n </span>\n )}\n </div>\n )}\n </div>\n )\n}\n\nColorThemes.propTypes = {\n disabled: PropTypes.bool,\n colorThemes: PropTypes.instanceOf(List),\n reportColorTheme: PropTypes.number,\n palettes: PropTypes.instanceOf(List),\n reportPalette: PropTypes.instanceOf(Map),\n isAdmin: PropTypes.bool,\n isSurveyOwner: PropTypes.bool,\n isSurveyGuest: PropTypes.bool,\n onSelect: PropTypes.func,\n onPaletteAdd: PropTypes.func\n}\n\nColorThemes.displayName = 'ColorThemes'\n\nexport default ColorThemes\n","import React, { createRef, useState, useRef, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { Map } from 'immutable'\nimport { DOMElementRect } from '@aytm/lib/common/func'\nimport { calculate } from '@aytm/app/stats/lib/colors'\nimport { COLORS_TOTAL, COLOR_METHOD_OPTIONS } from '@aytm/app/stats/page/sidebar/palettes/lib/constants'\n\nimport Select from '@aytm/lib/rfd-ui/components/basic/select'\nimport ColorPickerPopup from 'lib/rfd-ui/components/advanced/color-picker-popup'\n\nimport style from '@aytm/app/stats/page/sidebar/palettes/styles/PalettePicker.module.scss'\n\nconst PalettePicker = ({ palette = [], container, onChange }) => {\n const [colors, setColors] = useState(palette.get('colors'))\n const [colorsRefs, setColorsRefs] = useState([])\n const [currentColor, setCurrentColor] = useState(null)\n const [currentColorId, setCurrentColorId] = useState(null)\n const [currentColorMethod, setCurrentColorMethod] = useState('*')\n\n const pickerRef = useRef(null)\n const colorPickerRef = useRef(null)\n\n const pickerTopRef = useRef()\n pickerTopRef.current = 0\n\n const onColorMethodChangeRef = useRef()\n onColorMethodChangeRef.current = event => {\n const value = event.get('value')\n\n if (currentColorMethod != value) {\n setCurrentColorMethod(value)\n if ('*' !== value) onChange(calculate(colors.get(0), value, COLORS_TOTAL))\n }\n }\n const onColorsRandomRef = useRef()\n onColorsRandomRef.current = () => {\n onChange(\n calculate(\n '*' === currentColorMethod ? null : colors.get(0),\n '*' === currentColorMethod ? 'random' : currentColorMethod,\n COLORS_TOTAL\n )\n )\n }\n const onColorChangeRef = useRef()\n onColorChangeRef.current = value => {\n setCurrentColor(value.hex)\n if (0 === currentColorId && '*' !== currentColorMethod) {\n onChange(calculate(value.hex.toUpperCase(), currentColorMethod, COLORS_TOTAL))\n } else {\n setCurrentColorMethod('*')\n onChange(colors.set(currentColorId, value.hex.toUpperCase()))\n }\n }\n\n const onClose = () => {\n setCurrentColor(null)\n setCurrentColorId(null)\n }\n\n const clickHandler = useCallback(() => {\n if (!container) return\n\n if (pickerRef.current && null === pickerRef.current.offsetParent) {\n onClose()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [container, pickerRef.current])\n\n const scrollHandler = useCallback(() => {\n if (!container) return\n\n const pickerRect = DOMElementRect(pickerRef.current)\n if (pickerRect.top != pickerTopRef.current) {\n const containerRect = DOMElementRect(container)\n const popupRect = DOMElementRect(colorPickerRef.current.popup)\n\n colorPickerRef.current.popup.style.top = `${Math.min(\n containerRect.height - popupRect.height,\n Math.max(0, popupRect.top + (pickerRect.top - pickerTopRef.current))\n )}px`\n }\n\n pickerTopRef.current = pickerRect.top\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [container, pickerRef.current, pickerTopRef.current, colorPickerRef.current])\n\n const onColorSelect = value => {\n setCurrentColor(colors.get(value))\n setCurrentColorId(value)\n }\n\n useEffect(() => setColors(palette.get('colors')), [palette])\n useEffect(() => {\n setColorsRefs(ref =>\n Array(colors.size)\n .fill()\n .map((_, i) => ref[i] || createRef())\n )\n if (null !== currentColorId) {\n setCurrentColor(colors.get(currentColorId))\n }\n }, [colors, currentColorId])\n\n useEffect(() => {\n if (null !== pickerRef.current) {\n const pickerRect = DOMElementRect(pickerRef.current)\n pickerTopRef.current = pickerRect.top\n }\n\n document.removeEventListener('click', clickHandler)\n document.removeEventListener('scroll', scrollHandler)\n\n if (null !== colorPickerRef.current) {\n document.addEventListener('click', clickHandler)\n document.addEventListener('scroll', scrollHandler)\n }\n\n return () => {\n document.removeEventListener('click', clickHandler)\n document.removeEventListener('scroll', scrollHandler)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pickerRef.current, pickerTopRef.current, colorPickerRef.current])\n\n return (\n <div ref={pickerRef} className={style['palette-picker']}>\n <div className={style['palette-picker-colors']}>\n {colors.map((color, index) => (\n <span\n key={`color-${index}`}\n ref={colorsRefs[index]}\n className={`${style['palette-picker-colors-item']}${\n index == currentColorId ? ' ' + style['palette-picker-colors-item-current'] : ''\n }`}\n style={{ backgroundColor: color }}\n onClick={() => onColorSelect(index)}\n ></span>\n ))}\n </div>\n\n {0 === currentColorId && (\n <div className={style['palette-picker-methods']}>\n <Select\n width={172}\n theme=\"medium\"\n options={COLOR_METHOD_OPTIONS}\n value={currentColorMethod}\n onSelect={onColorMethodChangeRef.current}\n />\n {0 > ['monochromatic', 'analogous'].indexOf(currentColorMethod) && (\n <span className={style['palette-picker-methods-random']} onClick={onColorsRandomRef.current}>\n <i className=\"icon-aytmfd-refresh\" />\n </span>\n )}\n </div>\n )}\n\n {null !== currentColor && null !== currentColorId && (\n <ColorPickerPopup\n ref={colorPickerRef}\n target={colorsRefs[currentColorId].current}\n color={currentColor}\n pickerTopRef={-30}\n offsetLeft={260 - 24 * currentColorId}\n container={container}\n onChange={onColorChangeRef.current}\n onClose={onClose}\n />\n )}\n </div>\n )\n}\n\nPalettePicker.propTypes = {\n palette: PropTypes.instanceOf(Map),\n container: PropTypes.any,\n onChange: PropTypes.func\n}\n\nPalettePicker.displayName = 'PalettePicker'\n\nexport default PalettePicker\n","import React, { useState, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { List, Map } from 'immutable'\nimport { wrappedPostFetch } from '@aytm/app/stats/page/sidebar/palettes/lib/func'\nimport { DEFAULT_PALETTE } from '@aytm/app/stats/page/sidebar/palettes/lib/constants'\n\nimport RadioButton from '@aytm/lib/rfd-ui/components/basic/radio-button'\n\nimport ColorThemes from '@aytm/app/stats/page/sidebar/palettes/ColorThemes'\nimport PalettePicker from '@aytm/app/stats/page/sidebar/palettes/PalettePicker'\n\nimport style from '@aytm/app/stats/page/sidebar/palettes/styles/PalettesPanel.module.scss'\n\nconst PalettesPanel = ({\n disabled,\n colorThemes,\n reportColorTheme,\n palettes,\n reportPalette,\n palettesUrl,\n container,\n isAdmin,\n isSurveyOwner,\n isSurveyGuest,\n onSelect,\n onUpdate,\n onError\n}) => {\n const [currentStatus, setCurrentStatus] = useState(new Map())\n const [currentPalette, setCurrentPalette] = useState(null)\n const [currentPaletteId, setCurrentPaletteId] = useState(null)\n\n const reportPaletteId = useMemo(() => {\n const palette =\n (null !== reportPalette && palettes.find(palette => reportPalette.equals(palette.get('data')))) || null\n return null !== palette ? palette.get('id') : null\n }, [palettes, reportPalette])\n\n const paletteListAvailable = useMemo(\n () => 0 < palettes.size || isAdmin || isSurveyOwner,\n [palettes, isAdmin, isSurveyOwner]\n )\n const editAvailable = useMemo(() => !disabled && (isAdmin || isSurveyOwner), [disabled, isAdmin, isSurveyOwner])\n const addAvailable = useMemo(\n () => !disabled && (isAdmin || isSurveyOwner) && 7 > palettes.size && null === currentPaletteId,\n [disabled, palettes, isAdmin, isSurveyOwner, currentPaletteId]\n )\n const saveAvailable = useMemo(\n () =>\n (isAdmin || isSurveyOwner) &&\n null !== currentPalette &&\n !colorThemes.some(colorTheme => currentPalette.get('colors').equals(colorTheme.slice(0, 7))) &&\n !palettes.some(palette => currentPalette.equals(palette.get('data'))),\n [colorThemes, palettes, isAdmin, isSurveyOwner, currentPalette]\n )\n\n const updateCurrentStatus = (status, type, id, value) => {\n setCurrentStatus(null === value ? status.deleteIn([type, id]) : status.setIn([type, id], value))\n }\n\n const fetchSaveData = useCallback(() => {\n updateCurrentStatus(currentStatus, 'update', currentPaletteId, 'update')\n try {\n wrappedPostFetch(palettesUrl, { data: currentPalette.toJS() }).then(data => {\n updateCurrentStatus(currentStatus, 'update', currentPaletteId, null)\n switch (data.status) {\n case 'OK': {\n onUpdate(data.palettes)\n\n setCurrentPalette(null)\n setCurrentPaletteId(null)\n\n break\n }\n default: {\n onError(data.palettes)\n break\n }\n }\n })\n } catch {\n updateCurrentStatus(currentStatus, 'update', currentPaletteId, null)\n onError()\n }\n }, [palettesUrl, currentStatus, currentPalette, currentPaletteId, onUpdate, onError])\n const fetchUpdateData = useCallback(() => {\n updateCurrentStatus(currentStatus, 'update', currentPaletteId, 'update')\n try {\n wrappedPostFetch(`${palettesUrl}/${currentPaletteId}/update`, { data: currentPalette.toJS() }).then(data => {\n updateCurrentStatus(currentStatus, 'update', currentPaletteId, null)\n switch (data.status) {\n case 'OK': {\n if (currentPaletteId == reportPaletteId) {\n onSelect(null, currentPalette)\n }\n\n onUpdate(data.palettes)\n\n setCurrentPalette(null)\n setCurrentPaletteId(null)\n\n break\n }\n default: {\n onError(data.palettes)\n break\n }\n }\n })\n } catch {\n updateCurrentStatus(currentStatus, 'update', currentPaletteId, null)\n onError()\n }\n }, [palettesUrl, currentStatus, currentPalette, currentPaletteId, reportPaletteId, onSelect, onUpdate, onError])\n const fetchRemoveData = useCallback(\n paletteId => {\n updateCurrentStatus(currentStatus, 'remove', paletteId, 'remove')\n try {\n wrappedPostFetch(`${palettesUrl}/${paletteId}/remove`).then(data => {\n updateCurrentStatus(currentStatus, 'remove', paletteId, null)\n switch (data.status) {\n case 'OK': {\n onUpdate(data.palettes)\n\n if (paletteId == currentPaletteId) {\n setCurrentPalette(null)\n setCurrentPaletteId(null)\n }\n\n break\n }\n default: {\n onError(data.palettes)\n break\n }\n }\n })\n } catch {\n updateCurrentStatus(currentStatus, 'remove', paletteId, null)\n onError()\n }\n },\n [palettesUrl, currentStatus, currentPaletteId, onUpdate, onError]\n )\n\n const onPaletteAdd = value => {\n setCurrentPalette(value || DEFAULT_PALETTE)\n setCurrentPaletteId(-1)\n }\n const onPaletteEdit = value => {\n setCurrentPalette(value.get('data'))\n setCurrentPaletteId(value.get('id'))\n }\n const onPaletteChange = value => {\n setCurrentPalette(currentPalette.set('colors', value))\n }\n const onPaletteSave = value => {\n if (0 < value) fetchUpdateData()\n else fetchSaveData()\n }\n const onPaletteRemove = value => {\n fetchRemoveData(value)\n }\n const onPaletteCancel = () => {\n setCurrentPalette(null)\n setCurrentPaletteId(null)\n }\n\n useEffect(() => {\n if (\n disabled ||\n (null !== currentPaletteId &&\n 0 < currentPaletteId &&\n !palettes.some(palette => currentPaletteId == palette.get('id')))\n ) {\n setCurrentPalette(null)\n setCurrentPaletteId(null)\n }\n }, [disabled, palettes, currentPaletteId])\n\n return (\n <>\n <ColorThemes\n disabled={disabled}\n colorThemes={colorThemes}\n reportColorTheme={reportColorTheme}\n palettes={palettes}\n reportPalette={reportPalette}\n isAdmin={isAdmin}\n isSurveyOwner={isSurveyOwner}\n isSurveyGuest={isSurveyGuest}\n onSelect={onSelect}\n onPaletteAdd={onPaletteAdd}\n />\n {paletteListAvailable ? (\n <div className={style['palettes-list']}>\n <div className={style['palettes-list-title']}>Custom Colors</div>\n {palettes.map(palette => (\n <div key={`palette-${palette.get('id')}`} className={style['palettes-list-item']}>\n <RadioButton\n disabled={disabled}\n checked={reportPaletteId == palette.get('id')}\n onClick={disabled ? null : () => onSelect(null, palette.get('data'))}\n />\n <div\n className={style['palettes-list-item-colors']}\n onClick={disabled ? null : () => onSelect(null, palette.get('data'))}\n >\n {palette.getIn(['data', 'colors']).map((color, index) => (\n <span\n key={`palette-${palette.get('id')}-color-${index}`}\n className={style['palettes-list-item-colors-item']}\n style={{ backgroundColor: color }}\n ></span>\n ))}\n </div>\n {editAvailable &&\n ('remove' == currentStatus.getIn(['remove', palette.get('id')]) ? (\n <span className={style['palettes-list-item-spin']}>\n <i className=\"icon-aytmfd-spin afd-spin\" />\n </span>\n ) : (\n <>\n <span className={style['palettes-list-item-edit']} onClick={() => onPaletteEdit(palette)}>\n edit\n </span>\n <span\n className={style['palettes-list-item-remove']}\n onClick={() => updateCurrentStatus(currentStatus, 'remove', palette.get('id'), 'confirm')}\n >\n <i className=\"icon-aytmfd-delete\" />\n </span>\n </>\n ))}\n {'confirm' == currentStatus.getIn(['remove', palette.get('id')]) && (\n <div className={style['palettes-list-item-confirm-remove']}>\n <span\n className={style['palettes-list-item-confirm-remove-yes']}\n onClick={() => onPaletteRemove(palette.get('id'))}\n >\n delete forever?\n </span>\n <span\n className={style['palettes-list-item-confirm-remove-no']}\n onClick={() => updateCurrentStatus(currentStatus, 'remove', palette.get('id'), null)}\n >\n nevermind\n </span>\n </div>\n )}\n </div>\n ))}\n\n {addAvailable && (\n <div className={style['palettes-list-add']}>\n <span className={style['palettes-list-add-button']} onClick={() => onPaletteAdd(null)}>\n add new\n </span>\n </div>\n )}\n\n {null !== currentPalette && (\n <div className={style['palettes-list-picker']}>\n <span className={style['palettes-list-picker-cancel']} onClick={onPaletteCancel}>\n <i className=\"icon-aytmfd-delete\" />\n </span>\n <PalettePicker palette={currentPalette} container={container} onChange={onPaletteChange} />\n {'update' == currentStatus.getIn(['update', currentPaletteId]) ? (\n <span className={style['palettes-list-picker-spin']}>\n <i className=\"icon-aytmfd-spin afd-spin\" />\n </span>\n ) : (\n <span\n className={`${style['palettes-list-picker-save']}${\n saveAvailable ? '' : ' ' + style['palettes-list-picker-save-disabled']\n }`}\n onClick={saveAvailable ? () => onPaletteSave(currentPaletteId) : null}\n >\n {0 < currentPaletteId ? 'update' : 'save'}\n </span>\n )}\n </div>\n )}\n </div>\n ) : null}\n </>\n )\n}\n\nPalettesPanel.propTypes = {\n disabled: PropTypes.bool,\n colorThemes: PropTypes.instanceOf(List),\n reportColorTheme: PropTypes.number,\n palettes: PropTypes.instanceOf(List),\n defaultPalette: PropTypes.instanceOf(Map),\n reportPalette: PropTypes.instanceOf(Map),\n palettesUrl: PropTypes.string,\n container: PropTypes.any,\n isAdmin: PropTypes.bool,\n isSurveyOwner: PropTypes.bool,\n isSurveyGuest: PropTypes.bool,\n onSelect: PropTypes.func,\n onUpdate: PropTypes.func,\n onError: PropTypes.func\n}\n\nPalettesPanel.displayName = 'PalettesPanel'\n\nexport default PalettesPanel\n","import { fromJS } from 'immutable'\n\nexport const COLORS_TOTAL = 7\n\nexport const COLOR_METHOD_OPTIONS = fromJS([\n { text: 'auto', listText: 'auto', value: '*' },\n { text: 'monochromatic', listText: 'monochromatic', value: 'monochromatic' },\n { text: 'complementary', listText: 'complementary', value: 'complementary' },\n { text: 'color zebra', listText: 'color zebra', value: 'split_complementary' },\n // { text: 'triadic', listText: 'triadic (modified)', value: 'triadic' },\n // { text: 'tetradic', listText: 'tetradic (modified)', value: 'tetradic' },\n { text: 'rainbow', listText: 'rainbow', value: 'analogous' },\n // { text: 'hue', listText: 'hue', value: 'analogous_hue' },\n { text: 'analogous', listText: 'analogous', value: 'analogous_random' }\n])\n\nexport const DEFAULT_PALETTE = fromJS({\n colors: ['#CCCCCC', '#B2B2B2', '#999999', '#808080', '#666666', '#4D4D4D', '#333333'],\n saturation: 10,\n luminosity: 15\n})\n","import { Storage } from '@aytm/lib/storage'\nimport railsPostFetch from '@aytm/lib/common/rails-post-fetch'\n\nexport const wrappedPostFetch = (url, data = {}) =>\n Storage.Encode(data)\n .then(_bsfz =>\n railsPostFetch(url, {\n body: JSON.stringify({ _bsfz })\n })\n )\n .then(response => response.json())\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport { Map } from 'immutable'\nimport ContextSubscriber from '@aytm/lib/common/components/decorators/ContextSubscriber'\nimport ContextProvider from '@aytm/lib/common/components/decorators/ContextProvider'\nimport ManagedRenderComponent from '@aytm/lib/common/components/ManagedRenderComponent'\nimport ADND from '@aytm/lib/adnd/ADND'\nimport { updateListState } from '@aytm/app/stats/page/sidebar/reports/actions-state'\n\n// components\nimport ReportPopup from '@aytm/app/stats/page/sidebar/reports/ReportPopup'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/reports/styles/Report.module.scss'\n\n// <Component>\n@ContextSubscriber({\n name: 'reportList',\n contextTypes: {\n state: PropTypes.instanceOf(Map).isRequired,\n statePath: PropTypes.array.isRequired,\n model: PropTypes.instanceOf(Map).isRequired,\n modelPath: PropTypes.array.isRequired,\n actions: PropTypes.object.isRequired,\n windowUID: PropTypes.string.isRequired,\n currentReportId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n virtualReportsIds: PropTypes.array.isRequired,\n disabled: PropTypes.bool,\n isSurveyGuest: PropTypes.bool,\n isSurveyViewer: PropTypes.bool\n },\n mapToProps(values) {\n return {\n listState: values.state,\n listStatePath: values.statePath,\n listModel: values.model,\n listModelPath: values.modelPath,\n actions: values.actions,\n windowUID: values.windowUID,\n currentReportId: values.currentReportId,\n virtualReportsIds: values.virtualReportsIds,\n disabled: values.disabled,\n isSurveyGuest: values.isSurveyGuest,\n isSurveyViewer: values.isSurveyViewer\n }\n }\n})\n@ContextProvider({\n name: 'report',\n propTypes: {\n state: PropTypes.instanceOf(Map).isRequired,\n statePath: PropTypes.array.isRequired,\n model: PropTypes.instanceOf(Map).isRequired,\n modelPath: PropTypes.array.isRequired,\n position: PropTypes.number.isRequired\n },\n contextTypes: {\n state: PropTypes.instanceOf(Map).isRequired,\n statePath: PropTypes.array.isRequired,\n model: PropTypes.instanceOf(Map).isRequired,\n modelPath: PropTypes.array.isRequired,\n position: PropTypes.number.isRequired\n },\n values(props) {\n return {\n state: props.state,\n statePath: props.statePath,\n model: props.model,\n modelPath: props.modelPath,\n position: props.position\n }\n },\n shouldUpdate(nextProps, prevProps) {\n return (\n nextProps.state != prevProps.state ||\n nextProps.model != prevProps.model ||\n nextProps.position != prevProps.position\n )\n },\n mapToProps(values) {\n return {\n state: values.state,\n statePath: values.statePath,\n model: values.model,\n modelPath: values.modelPath,\n position: values.position\n }\n }\n})\nexport default class Report extends ManagedRenderComponent {\n static propTypes = {\n state: PropTypes.instanceOf(Map).isRequired,\n statePath: PropTypes.array.isRequired,\n model: PropTypes.instanceOf(Map).isRequired,\n modelPath: PropTypes.array.isRequired,\n position: PropTypes.number.isRequired,\n dndItemsList: PropTypes.object\n }\n static updateOnProps(nextProps, prevProps) {\n return (\n nextProps.state != prevProps.state ||\n nextProps.model != prevProps.model ||\n nextProps.position != prevProps.position ||\n nextProps.currentReportId != prevProps.currentReportId ||\n nextProps.disabled != prevProps.disabled\n )\n }\n\n state = {\n sliding: false,\n overflow: false\n }\n\n constructor(props, context) {\n super(props, context)\n\n this.dndListItem =\n null !== props.dndItemsList\n ? ADND.targets.itemsList.listItem({\n type: `report-${props.windowUID}`,\n list: props.dndItemsList\n })\n : null\n this.dndListItemHandle =\n null !== props.dndItemsList\n ? ADND.sources\n .listItemHandle({\n type: `report-${props.windowUID}`,\n item: this.dndListItem,\n cloneable: false,\n edgeScrolling: false\n })\n .onStart(this.dndStart.bind(this))\n .onEnd(this.dndEnd.bind(this))\n .fetchData(this.dndFetchData.bind(this))\n : null\n }\n\n dndStart() {\n const { listState, listStatePath, actions } = this.props\n updateListState({\n updates: [\n { path: [...listStatePath, 'reorder'], value: true },\n { path: [...listStatePath, 'scrolling'], value: true }\n ],\n listState,\n actions\n })\n }\n\n dndEnd() {\n const { listState, listStatePath, actions } = this.props\n updateListState({\n updates: [\n { path: [...listStatePath, 'reorder'], value: null },\n { path: [...listStatePath, 'scrolling'], value: null }\n ],\n listState,\n actions\n })\n }\n\n dndFetchData() {\n const { model, modelPath } = this.props\n return { model: model.toJS(), modelPath }\n }\n\n @autobind\n saveListItemRef(ref) {\n this.saveRef('Component')(ref)\n this.connectDNDListItem(ref)\n }\n\n @autobind\n connectDNDListItem(ref) {\n null !== this.dndListItem && this.dndListItem.connect(ref)\n }\n\n @autobind\n connectDNDListItemHandle(ref) {\n null !== this.dndListItemHandle && this.dndListItemHandle.connect(ref)\n }\n\n @autobind\n onReportDelete() {\n const { statePath, listState, actions } = this.props\n updateListState({\n updates: [\n { path: [...statePath, 'active'], value: true },\n { path: [...statePath, 'mode'], value: 'delete' }\n ],\n listState,\n actions\n })\n }\n\n @autobind\n onReportSelect(event) {\n event.preventDefault()\n\n const { model, actions } = this.props\n actions.updateCurrentReportId(model.get('id'))\n }\n\n @autobind\n checkOverflow() {\n if (!this.refTitle) return\n\n const div = document.createElement('div')\n\n document.body.appendChild(div)\n\n div.style.position = 'absolute'\n div.style.left = '-1000px'\n div.style.top = '-1000px'\n div.style.width = '194px'\n\n div.style.fontSize = window.getComputedStyle(this.refTitle, null).getPropertyValue('font-size') || '14px'\n div.style.lineHeight = window.getComputedStyle(this.refTitle, null).getPropertyValue('line-height') || '16px'\n\n div.style.overflow = 'hidden'\n div.style['overflow-wrap'] = 'break-word'\n\n div.innerHTML = this.refTitle.innerHTML\n this.setState({ overflow: 80 < div.clientHeight })\n\n div.parentNode.removeChild(div)\n }\n\n componentDidMount() {\n if (true === this.props.state.get('new')) {\n updateListState({\n updates: [{ path: [...this.props.statePath, 'new'], value: null }],\n listState: this.props.listState,\n actions: this.props.actions\n })\n\n this.refComponent.scrollIntoView(false)\n }\n\n this.checkOverflow()\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.state.get('new') != prevProps.state.get('new')) {\n this.setState({ sliding: true })\n setTimeout(() => {\n this.setState({ sliding: false })\n }, 500)\n }\n if (this.props.state.get('deleted') != prevProps.state.get('deleted')) {\n this.setState({ sliding: true })\n }\n\n if (this.props.model.get('title') != prevProps.model.get('title')) {\n this.checkOverflow()\n }\n }\n\n componentWillUnmount() {\n null !== this.dndListItem && this.dndListItem.disconnect()\n null !== this.dndListItemHandle && this.dndListItemHandle.disconnect()\n }\n\n @autobind\n renderTitle() {\n const { model } = this.props\n const { overflow } = this.state\n\n const title = model.get('title')\n\n return (\n <span\n ref={this.saveRef('Title')}\n className={`${style['title-text']}${overflow ? ' ' + style['title-text-overflow'] : ''}`}\n dangerouslySetInnerHTML={{\n __html:\n 'xpert' == model.get('type')\n ? `${\n 0 < title.length && 'xpert report' != title.trim().replace(/\\s+/, ' ').toLowerCase()\n ? `Xpert Report: ${title}`\n : 'Xpert Report'\n }`\n : title\n }}\n />\n )\n }\n\n render() {\n const { state, model, virtualReportsIds, currentReportId, disabled, isSurveyGuest, isSurveyViewer } = this.props\n const { sliding } = this.state\n const isNew = true === state.get('new')\n const isDeleted = true === state.get('deleted')\n const isActive = true === state.get('active')\n const isCurrent = currentReportId == model.get('id')\n const isChanged = true === state.get('changed')\n const isDeleting = isActive && 'delete' == state.get('mode')\n const isDisabled = disabled\n const isLocked =\n ['original', 'xpert', 'widget', ...virtualReportsIds].includes(model.get('type')) ||\n isDisabled ||\n isSurveyGuest ||\n isSurveyViewer\n\n return (\n <div\n ref={this.saveListItemRef || this.saveRef('Component')}\n className={`${style.component}${sliding ? ' ' + style['component-sliding'] : ''}${\n isNew ? ' ' + style['component-new'] : ''\n }${isActive ? ' ' + style['component-active'] : ''}${isChanged ? ' ' + style['component-warning'] : ''}${\n isDeleting ? ' ' + style['component-error'] : ''\n }${isDeleted ? ' ' + style['component-deleted'] : ''}${isDisabled ? ' ' + style['component-disabled'] : ''}`}\n >\n {isCurrent && <div className={style.arrow} />}\n {isDisabled ? (\n <span\n key=\"text\"\n className={`${style.title} ${style['title-' + model.get('type')]}${\n isCurrent ? ' ' + style['title-current'] : ''\n }`}\n >\n {this.renderTitle()}\n </span>\n ) : (\n <>\n {!isLocked && !model.get('protected') && (\n <div className={style.deleteButton} onClick={this.onReportDelete}>\n <i className=\"icon-aytmfd-delete\" />\n </div>\n )}\n <a\n key=\"text\"\n href={`#charts/${model.get('id')}`}\n className={`${style.title} ${style['title-' + model.get('type')]}${\n isCurrent ? ' ' + style['title-current'] : ''\n }`}\n onClick={this.onReportSelect}\n >\n {this.renderTitle()}\n </a>\n </>\n )}\n <ReportPopup />\n {!virtualReportsIds.includes(model.get('type')) && !isDisabled && (\n <div ref={this.connectDNDListItemHandle} className={style.handle}>\n <i className=\"icon-aytmfd-handle\" />\n </div>\n )}\n </div>\n )\n }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport { Map } from 'immutable'\nimport ContextSubscriber from '@aytm/lib/common/components/decorators/ContextSubscriber'\nimport ManagedRenderComponent from '@aytm/lib/common/components/ManagedRenderComponent'\nimport { addListItem, revertListItem, updateListItem } from '@aytm/app/stats/page/sidebar/reports/actions'\n\n// components\nimport Button from '@aytm/lib/rfd-ui/components/basic/button'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/reports/styles/ReportControls.module.scss'\n\n// <Component>\nexport function ReportControlsWithContext() {\n return ContextSubscriber(\n {\n name: 'report',\n contextTypes: {\n state: PropTypes.instanceOf(Map).isRequired,\n statePath: PropTypes.array.isRequired,\n model: PropTypes.instanceOf(Map).isRequired,\n modelPath: PropTypes.array.isRequired\n },\n mapToProps(values) {\n return {\n state: values.state,\n statePath: values.statePath,\n model: values.model,\n modelPath: values.modelPath\n }\n }\n },\n {\n name: 'reportList',\n contextTypes: {\n url: PropTypes.string.isRequired,\n state: PropTypes.instanceOf(Map).isRequired,\n statePath: PropTypes.array.isRequired,\n model: PropTypes.instanceOf(Map).isRequired,\n modelPath: PropTypes.array.isRequired,\n limits: PropTypes.instanceOf(Map).isRequired,\n actions: PropTypes.object.isRequired,\n virtualReportsIds: PropTypes.array.isRequired,\n disabled: PropTypes.bool,\n isSurveyGuest: PropTypes.bool,\n isSurveyViewer: PropTypes.bool\n },\n mapToProps(values) {\n return {\n url: values.url,\n listState: values.state,\n listStatePath: values.statePath,\n listModel: values.model,\n listModelPath: values.modelPath,\n limits: values.limits,\n actions: values.actions,\n virtualReportsIds: values.virtualReportsIds,\n disabled: values.disabled,\n isSurveyGuest: values.isSurveyGuest,\n isSurveyViewer: values.isSurveyViewer\n }\n }\n }\n )(ReportControls)\n}\n\nexport class ReportControls extends ManagedRenderComponent {\n static propTypes = {\n url: PropTypes.string.isRequired,\n state: PropTypes.instanceOf(Map).isRequired,\n statePath: PropTypes.array.isRequired,\n model: PropTypes.instanceOf(Map).isRequired,\n modelPath: PropTypes.array.isRequired,\n listState: PropTypes.instanceOf(Map).isRequired,\n listStatePath: PropTypes.array.isRequired,\n listModel: PropTypes.instanceOf(Map).isRequired,\n listModelPath: PropTypes.array.isRequired,\n limits: PropTypes.instanceOf(Map).isRequired,\n actions: PropTypes.object.isRequired,\n virtualReportsIds: PropTypes.array.isRequired,\n disabled: PropTypes.bool,\n isCompact: PropTypes.bool,\n isSurveyGuest: PropTypes.bool,\n isSurveyViewer: PropTypes.bool\n }\n static updateOnProps(nextProps, prevProps) {\n return (\n nextProps.state != prevProps.state ||\n nextProps.model != prevProps.model ||\n nextProps.limits != prevProps.limits ||\n nextProps.listState != prevProps.listState ||\n nextProps.disabled != prevProps.disabled\n )\n }\n\n @autobind\n getModelProps() {\n const { url, state, statePath, model, modelPath, listState, listStatePath, listModel, listModelPath, actions } =\n this.props\n\n return {\n url,\n listState,\n listStatePath,\n listModel,\n listModelPath,\n state,\n statePath,\n model,\n modelPath,\n actions\n }\n }\n\n @autobind\n onReportAdd() {\n addListItem({ ...this.getModelProps() })\n }\n\n @autobind\n onReportRevert() {\n revertListItem({ ...this.getModelProps() })\n }\n\n @autobind\n onReportUpdate() {\n updateListItem({ ...this.getModelProps() })\n }\n\n render() {\n const {\n state,\n model,\n listState,\n listModel,\n virtualReportsIds,\n limits,\n disabled,\n isCompact,\n isSurveyGuest,\n isSurveyViewer\n } = this.props\n const schema = model.get('schema')\n const isChanged = true === state.get('changed')\n const isProcessing = state.has('process')\n const isEditable =\n state.get('editable') && !['original', 'xpert', 'widget', ...virtualReportsIds].includes(model.get('type'))\n const isEmpty = !['xpert', 'xpert_custom'].includes(model.get('type')) && null !== schema && !schema.size\n const isDisabled =\n disabled || true === listState.get('disabled') || listModel.get('items').size >= limits.getIn(['reports', 'max'])\n const isLocked = ['widget'].includes(model.get('type')) || isProcessing || isSurveyGuest || isSurveyViewer\n const isAdding = isProcessing && 'add' == state.get('process')\n const isSaving = isProcessing && 'save' == state.get('process')\n\n return (\n <div className={`${style.component}${isCompact ? ' ' + style['component-compact'] : ''}`}>\n {isCompact ? (\n isChanged ? (\n <>\n <Button\n className=\"bg-gray\"\n label={\n isEditable\n ? 'REVERT'\n : ['original', 'xpert', 'widget', ...virtualReportsIds].includes(model.get('type'))\n ? 'RESET'\n : 'UPDATE'\n }\n icon={isProcessing && 'revert' == state.get('process') ? 'icon-aytmfd-spin afd-spin' : null}\n compact={true}\n theme=\"small\"\n disabled={disabled || isProcessing}\n onClick={disabled || isProcessing ? null : this.onReportRevert}\n />\n <Button\n className=\"bg-gray\"\n label={isAdding ? 'Saving' : isEditable ? 'SAVE AS...' : 'SAVE AS A NEW REPORT'}\n icon={isAdding ? 'icon-aytmfd-spin afd-spin' : null}\n compact={true}\n theme=\"small\"\n disabled={isEmpty || isDisabled || isLocked}\n onClick={isEmpty || isDisabled || isLocked ? null : this.onReportAdd}\n />\n {isEditable && (\n <Button\n label={`<i class=\"icon-aytmfd-save rfd-ui-button-save-icon\"></i>${\n isSaving ? 'Saving' : 'SAVE CHANGES'\n }`}\n icon={isSaving ? 'icon-aytmfd-spin afd-spin' : null}\n compact={true}\n theme=\"small\"\n disabled={disabled || isEmpty || isLocked}\n onClick={disabled || isEmpty || isLocked ? null : this.onReportUpdate}\n />\n )}\n </>\n ) : (\n <Button\n className=\"bg-gray\"\n label={isAdding ? 'Saving' : 'SAVE AS A NEW REPORT'}\n icon={isAdding ? 'icon-aytmfd-spin afd-spin' : null}\n compact={true}\n theme=\"small\"\n disabled={isEmpty || isDisabled || isLocked}\n onClick={isEmpty || isDisabled || isLocked ? null : this.onReportAdd}\n />\n )\n ) : isChanged ? (\n <>\n <Button\n width={120}\n label={\n isEditable\n ? 'REVERT'\n : ['original', 'xpert', 'widget', ...virtualReportsIds].includes(model.get('type'))\n ? 'RESET'\n : 'UPDATE'\n }\n icon={isProcessing && 'revert' == state.get('process') ? 'icon-aytmfd-spin afd-spin' : null}\n disabled={disabled || isProcessing}\n onClick={disabled || isProcessing ? null : this.onReportRevert}\n />\n {isEditable ? (\n <Button\n width={240}\n label={isAdding || isSaving ? 'SAVING' : 'SAVE FOR EVERYONE'}\n icon={isAdding || isSaving ? 'icon-aytmfd-spin afd-spin' : null}\n disabled={disabled || isEmpty || isLocked}\n onClick={disabled || isEmpty || isLocked ? null : this.onReportUpdate}\n />\n ) : (\n <Button\n width={240}\n label={isAdding || isSaving ? 'SAVING' : 'SAVE AS A NEW REPORT'}\n icon={isAdding || isSaving ? 'icon-aytmfd-spin afd-spin' : null}\n disabled={isEmpty || isDisabled || isLocked}\n onClick={isEmpty || isDisabled || isLocked ? null : this.onReportAdd}\n />\n )}\n </>\n ) : null}\n </div>\n )\n }\n}\n\nexport default ReportControlsWithContext()\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport { Map } from 'immutable'\nimport { Transition } from 'react-transition-group'\nimport { Modifier, EditorState, SelectionState } from 'draft-js'\nimport ContextSubscriber from '@aytm/lib/common/components/decorators/ContextSubscriber'\nimport ManagedRenderComponent from '@aytm/lib/common/components/ManagedRenderComponent'\nimport { deleteListItem, updateItemModel, updateItemShareLink } from '@aytm/app/stats/page/sidebar/reports/actions'\nimport { updateListState } from '@aytm/app/stats/page/sidebar/reports/actions-state'\nimport copyToClipboard from '@aytm/lib/common/copy-to-clipboard'\nimport { decodeText } from '@aytm/app/stats/lib/helpers'\n\n// components\nimport ReportPopupDescription from '@aytm/app/stats/page/sidebar/reports/ReportPopupComponents/ReportPopupDescription'\nimport ReportPopupSharing from '@aytm/app/stats/page/sidebar/reports/ReportPopupComponents/ReportPopupSharing'\nimport ReportControlsWithContext from '@aytm/app/stats/page/sidebar/reports/ReportControls'\nimport RichTextCounter from '@aytm/lib/rfd-ui/components/advanced/rich-text-counter'\nimport ClickOutside from '@aytm/lib/rfd-ui/components/basic/click-outside'\nimport Portal from '@aytm/lib/rfd-ui/components/basic/portal'\nimport TextField from '@aytm/lib/rfd-ui/components/basic/text-field'\nimport Button from '@aytm/lib/rfd-ui/components/basic/button'\n\n// styles\nimport reportStyle from '@aytm/app/stats/page/sidebar/reports/styles/Report.module.scss'\nimport style from '@aytm/app/stats/page/sidebar/reports/styles/ReportPopup.module.scss'\n\nconst PORTAL_ID = 'report-popup-portal'\n\nconst TITLE_MAX = 250\n\n// <Component>\n@ContextSubscriber(\n {\n name: 'report',\n contextTypes: {\n state: PropTypes.instanceOf(Map).isRequired,\n statePath: PropTypes.array.isRequired,\n model: PropTypes.instanceOf(Map).isRequired,\n modelPath: PropTypes.array.isRequired,\n position: PropTypes.number.isRequired\n },\n mapToProps(values) {\n return {\n state: values.state,\n statePath: values.statePath,\n model: values.model,\n modelPath: values.modelPath,\n position: values.position\n }\n }\n },\n {\n name: 'reportList',\n contextTypes: {\n url: PropTypes.string.isRequired,\n state: PropTypes.instanceOf(Map).isRequired,\n statePath: PropTypes.array.isRequired,\n model: PropTypes.instanceOf(Map).isRequired,\n modelPath: PropTypes.array.isRequired,\n actions: PropTypes.object.isRequired,\n container: PropTypes.string.isRequired,\n currentReportId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n virtualReportsIds: PropTypes.array.isRequired,\n shareLinkHash: PropTypes.string,\n timeZone: PropTypes.instanceOf(Map),\n disabled: PropTypes.bool,\n isSurveyOwner: PropTypes.bool,\n isSurveyGuest: PropTypes.bool,\n isSurveyViewer: PropTypes.bool\n },\n mapToProps(values) {\n return {\n url: values.url,\n listState: values.state,\n listStatePath: values.statePath,\n listModel: values.model,\n listModelPath: values.modelPath,\n actions: values.actions,\n container: values.container,\n currentReportId: values.currentReportId,\n virtualReportsIds: values.virtualReportsIds,\n shareLinkHash: values.shareLinkHash,\n timeZone: values.timeZone,\n disabled: values.disabled,\n isSurveyOwner: values.isSurveyOwner,\n isSurveyGuest: values.isSurveyGuest,\n isSurveyViewer: values.isSurveyViewer\n }\n }\n }\n)\nexport default class ReportPopup extends ManagedRenderComponent {\n static propTypes = {}\n static updateOnProps(nextProps, prevProps) {\n return (\n nextProps.state != prevProps.state ||\n nextProps.model != prevProps.model ||\n nextProps.position != prevProps.position ||\n nextProps.shareLinkHash != prevProps.shareLinkHash ||\n nextProps.disabled != prevProps.disabled\n )\n }\n\n state = {\n hidden: true,\n opened: false,\n focused: null,\n copied: false\n }\n\n constructor(props, context) {\n super(props, context)\n\n this.timer = null\n this.updateTimer = null\n this.updatePosition = false\n this.scrollTop = 0\n\n this.escHandler = event => 27 === event.keyCode && this.closePopup()\n this.scrollHandler = () => this.scrollPopupContainer()\n this.positionHandler = () => this.updatePopupPosition(true)\n }\n\n @autobind\n getModelProps() {\n const { url, state, statePath, model, modelPath, listState, listStatePath, listModel, listModelPath, actions } =\n this.props\n\n return {\n url,\n listState,\n listStatePath,\n listModel,\n listModelPath,\n state,\n statePath,\n model,\n modelPath,\n actions\n }\n }\n\n @autobind\n scrollPopupContainer() {\n const container = document.querySelector(this.props.container)\n\n if (container.scrollTop != this.scrollTop) {\n this.closePopup()\n }\n\n this.scrollTop = container.scrollTop\n }\n\n @autobind\n openPopup() {\n const { statePath, listState, actions } = this.props\n updateListState({\n updates: [{ path: [...statePath, 'active'], value: true }],\n listState,\n actions\n })\n }\n\n @autobind\n closePopup() {\n if (true === this.updatePosition) return\n\n const { statePath, listState, actions } = this.props\n updateListState({\n updates: [\n { path: [...statePath, 'active'], value: false },\n { path: [...statePath, 'mode'], value: null }\n ],\n listState,\n actions\n })\n }\n\n @autobind\n hidePopup() {\n this.setState({\n hidden: true\n })\n }\n\n @autobind\n focusMe(val) {\n this.setState({ focused: val })\n }\n\n @autobind\n blurMe() {\n this.setState({ focused: null })\n }\n\n @autobind\n onReportTitleChange(getContent) {\n const { model, modelPath } = this.props\n const { html } = getContent({ html: true })\n\n const text = decodeText(html)\n\n const error = !text.length || text.length > TITLE_MAX\n if (!error) {\n updateItemModel({\n ...this.getModelProps(),\n data: { do: 'title', id: model.get('id'), title: html },\n updates: [{ path: [...modelPath, 'title'], value: html }]\n })\n }\n }\n\n @autobind\n handleReportTitlePastedText(_text, _html, editorState, callback) {\n const content = editorState.getCurrentContent()\n const selection = editorState.getSelection()\n\n const newContent = Modifier.replaceText(content, selection, _text)\n const text = newContent.getPlainText('\\n')\n const textLength = text.length\n\n // With 1 block\n if (textLength > TITLE_MAX) {\n const lastBlock = newContent.getLastBlock()\n const selectionState = new SelectionState({\n anchorKey: lastBlock.getKey(),\n anchorOffset: TITLE_MAX,\n focusKey: lastBlock.getKey(),\n focusOffset: lastBlock.getLength()\n })\n\n const newSelection = new SelectionState({\n anchorKey: content.getLastBlock().getKey(),\n anchorOffset: 0,\n focusKey: content.getFirstBlock().getKey(),\n focusOffset: content.getLastBlock().getLength()\n })\n const newText = Modifier.removeRange(newContent, selectionState, 'backward').getPlainText('\\n')\n const newEditorState = EditorState.push(editorState, Modifier.replaceText(content, newSelection, newText))\n\n const key = newEditorState.getCurrentContent().getLastBlock().getKey()\n const offset = Math.min(\n (selection.getIsBackward() ? selection.getAnchorOffset() : selection.getFocusOffset()) + _text.length,\n newText.length\n )\n callback(\n EditorState.forceSelection(\n newEditorState,\n new SelectionState({\n anchorKey: key,\n anchorOffset: offset,\n focusKey: key,\n focusOffset: offset,\n hasFocus: true\n })\n )\n )\n\n return 'handled'\n }\n\n return 'not-handled'\n }\n\n @autobind\n onReportDelete() {\n deleteListItem({\n ...this.getModelProps()\n })\n }\n\n @autobind\n onReportDeleteCancel() {\n const { statePath, listState, actions } = this.props\n updateListState({\n updates: [{ path: [...statePath, 'mode'], value: null }],\n listState,\n actions\n })\n }\n\n @autobind\n updateShareLink(share) {\n updateItemShareLink({\n ...this.getModelProps(),\n share: share\n })\n }\n\n @autobind\n copyLink() {\n const { model } = this.props\n\n copyToClipboard(model.get('shareLink'))\n\n this.setState({ copied: true })\n setTimeout(() => this.setState({ copied: false }), 1000)\n }\n\n @autobind\n selectValue(event, val) {\n event.target.parentElement.querySelector('input').select()\n this.focusMe(val)\n }\n\n @autobind\n updateContainerPosition() {\n const container = document.querySelector(this.props.container)\n\n const buttonRect = this.refButton.getBoundingClientRect()\n const containerRect = container.getBoundingClientRect()\n\n const d = buttonRect.top + buttonRect.height - (containerRect.top + containerRect.height)\n 0 < d && (container.scrollTop = container.scrollTop + d)\n }\n\n @autobind\n updatePopupPosition(repeat = false) {\n if (this.refPopup) {\n if (this.refDescription) {\n this.refDescription.refDescriptionContentBody.style.maxHeight = '0px'\n const descriptionComputedStyle = window.getComputedStyle(this.refDescription.refDescription)\n const descriptionContentComputedStyle = window.getComputedStyle(this.refDescription.refDescriptionContent)\n let maxHeight =\n this.refContent.clientHeight -\n this.refDescription.refDescriptionHead.clientHeight -\n this.refDescription.refDescriptionContentHead.clientHeight -\n parseInt(descriptionComputedStyle.getPropertyValue('padding-top') || 0, 10) -\n parseInt(descriptionComputedStyle.getPropertyValue('padding-bottom') || 0, 10) -\n parseInt(descriptionContentComputedStyle.getPropertyValue('padding-top') || 0, 10) -\n parseInt(descriptionContentComputedStyle.getPropertyValue('padding-bottom') || 0, 10)\n if (this.refDescription.refDescriptionFooter) {\n maxHeight = maxHeight - this.refDescription.refDescriptionFooter.clientHeight\n }\n this.refDescription.refDescriptionContentBody.style.maxHeight = `${maxHeight}px`\n }\n\n this.updatePosition = repeat\n\n this.updateContainerPosition()\n\n const buttonRect = this.refButton.getBoundingClientRect()\n const popupRect = this.refPopup.getBoundingClientRect()\n\n const h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight\n\n const d = buttonRect.top + buttonRect.height / 2 + popupRect.height - h - 150\n if (d < 0) {\n this.refPopup.style.top = `${buttonRect.top + buttonRect.height / 2 - 150}px`\n this.refPopupArrow.style.top = '115px'\n } else if (115 + d < popupRect.height - 90) {\n this.refPopup.style.top = `${h - popupRect.height}px`\n this.refPopupArrow.style.top = `${115 + d}px`\n } else {\n this.refPopup.style.top = `${buttonRect.top + buttonRect.height / 2 - popupRect.height + 56}px`\n this.refPopupArrow.style.top = `${popupRect.height - 90}px`\n }\n this.refPopup.style.left = `${buttonRect.left + buttonRect.width + 22}px`\n\n this.updateTimer && clearTimeout(this.updateTimer)\n if (repeat) {\n this.updateTimer = setTimeout(() => {\n this.updateTimer = null\n this.updatePosition = false\n\n if (this.state.opened) {\n this.updatePopupPosition()\n }\n }, 100)\n }\n }\n }\n\n @autobind\n onActive() {\n const container = document.querySelector(this.props.container)\n this.scrollTop = container.scrollTop\n\n this.updatePopupPosition()\n\n window.addEventListener('scroll', this.positionHandler)\n window.addEventListener('resize', this.positionHandler)\n\n container.addEventListener('scroll', this.scrollHandler)\n }\n\n @autobind\n offActive() {\n const container = document.querySelector(this.props.container)\n this.scrollTop = container.scrollTop\n\n window.removeEventListener('scroll', this.positionHandler)\n window.removeEventListener('resize', this.positionHandler)\n\n container.removeEventListener('scroll', this.scrollHandler)\n }\n\n componentDidMount() {\n if (true === this.props.state.get('active')) {\n this.setState({\n hidden: false\n })\n this.timer = setTimeout(() => {\n this.timer = null\n this.setState({\n opened: true\n })\n this.onActive()\n }, 10)\n }\n }\n\n componentDidUpdate(prevProps) {\n const oldProcess = prevProps.state.get('process')\n const newProcess = this.props.state.get('process')\n if (newProcess != oldProcess) {\n this.updatePopupPosition()\n }\n const oldActive = prevProps.state.get('active')\n const newActive = this.props.state.get('active')\n if (newActive != oldActive) {\n this.emails = ''\n this.timer && clearTimeout(this.timer)\n this.setState({\n [true === newActive ? 'hidden' : 'opened']: false\n })\n this.timer = setTimeout(\n () => {\n this.timer = null\n this.setState({\n [true === newActive ? 'opened' : 'hidden']: true\n })\n true === newActive ? this.onActive() : this.offActive()\n },\n true === newActive ? 10 : 250\n )\n\n if (true === newActive) document.addEventListener('keydown', this.escHandler, false)\n else document.removeEventListener('keydown', this.escHandler, false)\n }\n }\n\n componentWillUnmount() {\n this.timer && clearTimeout(this.timer)\n\n window.removeEventListener('scroll', this.positionHandler)\n window.removeEventListener('resize', this.positionHandler)\n\n document.removeEventListener('keydown', this.escHandler, false)\n\n const container = document.querySelector(this.props.container)\n container.removeEventListener('scroll', this.scrollHandler)\n }\n\n @autobind\n renderDescription() {\n return <ReportPopupDescription ref={this.saveRef('Description')} />\n }\n\n @autobind\n renderDeleteReport() {\n const { state } = this.props\n const isProcessing = state.has('process')\n\n return (\n <div>\n <div className={style['content-row']}>\n <div className={`${style['content-row-column']} ${style['content-row-column-title']}`}>DELETE REPORT?</div>\n </div>\n <div className={style['content-row']}>\n <div className={`${style['content-row-column']} ${style['content-row-column-icon']}`} />\n <div className={`${style['content-row-column']} ${style['content-row-column-text']}`}>\n You are about to delete this report. <b>This operation can not be undone</b>. Anyone with the share link,\n associated with this report will be redirected to aytm home page or dashboard if they are logged in users\n next time they try to access it or refresh their browser window.\n <br />\n <br />\n Do you still want to delete this report and associated share link?\n </div>\n </div>\n <div className={style['content-row']}>\n <div\n className={`${style['content-row-column']} ${style['content-row-column-icon']} ${style['content-row-column-icon-error']}`}\n >\n <i className=\"icon-aytmfd-trash\" />\n </div>\n <div className={style['content-row-column']}>\n <Button width={130} label=\"CANCEL\" disabled={isProcessing} onClick={this.onReportDeleteCancel} />\n </div>\n <div className={style['content-row-column']}>\n <Button\n width={230}\n label=\"DELETE REPORT\"\n icon={isProcessing && 'delete' == state.get('process') ? 'icon-aytmfd-spin afd-spin' : null}\n disabled={isProcessing}\n onClick={isProcessing ? null : this.onReportDelete}\n />\n </div>\n </div>\n <div className={style['content-row']}>\n <div className={`${style['content-row-column']} ${style['content-row-column-icon']}`} />\n <div className={`${style['content-row-column']} ${style['content-row-column-text']}`}>\n <b>Alternatively</b> - if you want to block access to this report but don't wish to delete the report\n itself, click "x" in the field below to delete the share link. You'll be able to generate a\n new share link at any time.\n </div>\n </div>\n </div>\n )\n }\n\n @autobind\n renderCurrentReportVersion() {\n const { state, model, virtualReportsIds, isSurveyGuest, isSurveyViewer } = this.props\n const schema = model.get('schema')\n const isEditable =\n state.get('editable') && !['original', 'xpert', 'widget', ...virtualReportsIds].includes(model.get('type'))\n const isDisabled = !['xpert', 'xpert_custom'].includes(model.get('type')) && null !== schema && !schema.size\n\n return (\n <div>\n <div className={style['content-row']}>\n <div className={`${style['content-row-column']} ${style['content-row-column-title']}`}>REPORT VERSIONS</div>\n </div>\n <div className={style['content-row']}>\n <div className={`${style['content-row-column']} ${style['content-row-column-icon']}`} />\n <div className={`${style['content-row-column']} ${style['content-row-column-text']}`}>\n {isSurveyGuest || isSurveyViewer ? (\n <>\n <b>Please note:</b> your copy of the report may be outdated, comparing to the latest copy, we have\n online. Your version is stored locally for now in this browser.\n {isEditable && (\n <>\n <br />\n <br />\n Click "REVERT" to replace your version with the latest one.\n </>\n )}\n </>\n ) : !isEditable && !['original', 'xpert', 'widget', ...virtualReportsIds].includes(model.get('type')) ? (\n <>\n <b>Please note:</b> your copy of the report may be outdated, comparing to the latest copy, we have\n online. Your version is stored locally for now in this browser.\n <br />\n <br />\n Click "UPDATE" to replace your version with the latest one. Click "SAVE AS A NEW\n REPORT" to save your version as a clone.\n </>\n ) : (\n <>\n <b>Please note:</b> you have modified this report, comparing to the copy, we have online. Your changes\n are stored locally for now in this browser. The latest version of the report is your current view of the\n stats page.\n {isEditable && !isSurveyGuest && !isSurveyViewer && (\n <>\n <br />\n <br />\n If you click "SAVE FOR EVERYONE" below, anyone with the existing share link will be able\n to see <b>your current view</b> next time they open the link or refresh their page.\n </>\n )}\n </>\n )}\n {isDisabled && (\n <>\n <br />\n <br />\n <b>Please add at least one question in order to save this report.</b>\n </>\n )}\n </div>\n </div>\n <div className={style['content-row']}>\n <div\n className={`${style['content-row-column']} ${style['content-row-column-icon']} ${style['content-row-column-icon-warning']}`}\n >\n <i className=\"icon-aytmfd-save\" />\n </div>\n <div className={style['content-row-column']}>\n <ReportControlsWithContext />\n </div>\n </div>\n </div>\n )\n }\n\n @autobind\n renderSharingOptions() {\n return (\n <ReportPopupSharing\n onFocus={() => {\n this.focusMe('email')\n }}\n onBlur={this.blurMe}\n />\n )\n }\n\n @autobind\n renderContent() {\n const { state, model, virtualReportsIds, isSurveyGuest, isSurveyViewer, shareLinkHash } = this.props\n const { focused, copied } = this.state\n const shareLinkExist = model.get('shareLink') && 0 < model.get('shareLink').length\n const isChanged = true === state.get('changed')\n const isProcessing = state.has('process')\n const isDeleting = 'delete' == state.get('mode')\n const isLocked =\n ['original', 'xpert', 'widget', 'external', ...virtualReportsIds].includes(model.get('type')) ||\n isDeleting ||\n isSurveyGuest ||\n isSurveyViewer\n const isUnremovable = ['external', ...virtualReportsIds].includes(model.get('type'))\n\n return (\n <div ref={this.saveRef('Content')} className={style.content}>\n <div className={style['content-row']}>\n <div className={`${style['content-row-column']} ${style['content-row-column-label']}`}>REPORT TITLE</div>\n <div className={style['content-row-column']}>\n <div className={`${style['content-input']}${isLocked ? ' ' + style['content-input-readonly'] : ''}`}>\n <div className={style['content-input-container']}>\n <RichTextCounter\n html={model.get('title')}\n trimAt={0}\n debounce={1000}\n characters={TITLE_MAX}\n multiline={false}\n disableFormatting={true}\n readOnly={isLocked}\n onChange={isLocked ? null : this.onReportTitleChange}\n onUpdate={isLocked ? null : this.updatePopupPosition}\n handlePastedText={isLocked ? null : this.handleReportTitlePastedText}\n />\n </div>\n </div>\n </div>\n </div>\n {isDeleting\n ? this.renderDeleteReport()\n : isChanged\n ? this.renderCurrentReportVersion()\n : this.renderSharingOptions()}\n <div className={style['content-row']}>\n <div className={`${style['content-row-column']} ${style['content-row-column-note']}`}>\n REPORT LINK (Anyone with the link can view this report)\n </div>\n </div>\n <div className={`${style['content-row']}${'link' == focused ? ' ' + style['content-row-focused'] : ''}`}>\n <div className={`${style['content-row-column']} ${style['content-row-column-icon']}`}>\n <i className=\"icon-aytmfd-link\" />\n </div>\n <div className={style['content-row-column']}>\n <TextField\n width={\n shareLinkExist\n ? copied\n ? 273\n : 303\n : isSurveyGuest || isSurveyViewer\n ? 363\n : isProcessing && 'share' == state.get('process')\n ? 243\n : 263\n }\n value={shareLinkExist ? `${model.get('shareLink')}${shareLinkHash}` : ''}\n readOnly={true}\n icon={\n isProcessing && 'unshare' == state.get('process')\n ? 'icon-aytmfd-spin afd-spin'\n : !isSurveyGuest && !isSurveyViewer && shareLinkExist && !isUnremovable\n ? 'icon-aytmfd-x'\n : null\n }\n iconColor={isProcessing ? '#cccccc' : '#d05817'}\n onIconClick={\n shareLinkExist && !isSurveyGuest && !isSurveyViewer ? () => this.updateShareLink(false) : null\n }\n onFocus={event => this.selectValue(event, 'link')}\n onBlur={this.blurMe}\n />\n {!(shareLinkExist || isSurveyGuest || isSurveyViewer) && (\n <Button\n width={isProcessing && 'share' == state.get('process') ? 120 : 100}\n label=\"GENERATE\"\n compact={true}\n icon={isProcessing && 'share' == state.get('process') ? 'icon-aytmfd-spin afd-spin' : null}\n disabled={virtualReportsIds.includes(model.get('type')) || isProcessing}\n onClick={\n virtualReportsIds.includes(model.get('type')) || isProcessing\n ? null\n : () => this.updateShareLink(true)\n }\n />\n )}\n {shareLinkExist && (\n <Button\n width={copied ? 90 : 60}\n label={copied ? 'COPIED' : 'COPY'}\n compact={true}\n disabled={virtualReportsIds.includes(model.get('type')) || isProcessing || copied}\n onClick={virtualReportsIds.includes(model.get('type')) || isProcessing || copied ? null : this.copyLink}\n />\n )}\n </div>\n </div>\n </div>\n )\n }\n\n render() {\n const { model, disabled } = this.props\n const { hidden, opened } = this.state\n\n return [\n <div\n key=\"button\"\n ref={this.saveRef('Button')}\n className={`${reportStyle.popupButton} ${reportStyle['popupButton-' + (opened ? 'opened' : 'closed')]}${\n disabled ? ' ' + reportStyle['popupButton-disabled'] : ''\n }`}\n onClick={!opened && !disabled && hidden ? this.openPopup : null}\n >\n <i className=\"icon-aytmfd-config\" />\n </div>,\n !disabled && !hidden ? (\n <Portal key=\"popup\" nodeID={`${PORTAL_ID}-${model.get('id')}`}>\n <ClickOutside onClickOutside={this.closePopup}>\n <Transition in={opened} timeout={250} onExited={this.hidePopup}>\n {status => (\n <div\n ref={this.saveRef('Popup')}\n className={`${style['transition-panel']} ${status ? style['transition-panel-' + status] : ''}`}\n >\n <div className={`${style['component']} ${status ? style['component-' + status] : ''}`}>\n <div ref={this.saveRef('PopupArrow')} className={style.arrow} />\n <div className={style.closeButton} onClick={this.closePopup}>\n <i className=\"icon-aytmfd-x\" />\n </div>\n {this.renderDescription()}\n {this.renderContent()}\n </div>\n </div>\n )}\n </Transition>\n </ClickOutside>\n </Portal>\n ) : null\n ]\n }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport { Map, List } from 'immutable'\nimport moment from 'moment'\nimport ContextSubscriber from '@aytm/lib/common/components/decorators/ContextSubscriber'\nimport ManagedRenderComponent from '@aytm/lib/common/components/ManagedRenderComponent'\nimport { updateItemModel } from '@aytm/app/stats/page/sidebar/reports/actions'\n\n// components\nimport CheckBox from '@aytm/lib/rfd-ui/components/basic/check-box'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/reports/styles/ReportPopup.module.scss'\n\n// <Component>\n@ContextSubscriber(\n {\n name: 'report',\n contextTypes: {\n state: PropTypes.instanceOf(Map).isRequired,\n statePath: PropTypes.array.isRequired,\n model: PropTypes.instanceOf(Map).isRequired,\n modelPath: PropTypes.array.isRequired,\n position: PropTypes.number.isRequired\n },\n mapToProps(values) {\n return {\n state: values.state,\n statePath: values.statePath,\n model: values.model,\n modelPath: values.modelPath,\n position: values.position\n }\n }\n },\n {\n name: 'reportList',\n contextTypes: {\n url: PropTypes.string.isRequired,\n state: PropTypes.instanceOf(Map).isRequired,\n statePath: PropTypes.array.isRequired,\n model: PropTypes.instanceOf(Map).isRequired,\n modelPath: PropTypes.array.isRequired,\n actions: PropTypes.object.isRequired,\n container: PropTypes.string.isRequired,\n currentReportId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n virtualReportsIds: PropTypes.array.isRequired,\n isAdmin: PropTypes.bool,\n isSurveyGuest: PropTypes.bool,\n isSurveyViewer: PropTypes.bool,\n timeZone: PropTypes.instanceOf(Map)\n },\n mapToProps(values) {\n return {\n url: values.url,\n listState: values.state,\n listStatePath: values.statePath,\n listModel: values.model,\n listModelPath: values.modelPath,\n actions: values.actions,\n container: values.container,\n currentReportId: values.currentReportId,\n virtualReportsIds: values.virtualReportsIds,\n isAdmin: values.isAdmin,\n isSurveyGuest: values.isSurveyGuest,\n isSurveyViewer: values.isSurveyViewer,\n timeZone: values.timeZone\n }\n }\n }\n)\nexport default class ReportPopupDescription extends ManagedRenderComponent {\n static propTypes = {}\n static updateOnProps(nextProps, prevProps) {\n return (\n nextProps.state != prevProps.state ||\n nextProps.model != prevProps.model ||\n nextProps.position != prevProps.position\n )\n }\n\n constructor(props, context) {\n super(props, context)\n\n this.timestepInterval = null\n }\n\n @autobind\n getModelProps() {\n const { url, state, statePath, model, modelPath, listState, listStatePath, listModel, listModelPath, actions } =\n this.props\n\n return {\n url,\n listState,\n listStatePath,\n listModel,\n listModelPath,\n state,\n statePath,\n model,\n modelPath,\n actions\n }\n }\n\n @autobind\n onHiddenChange() {\n const { model, modelPath } = this.props\n\n updateItemModel({\n ...this.getModelProps(),\n data: {\n do: 'flags',\n id: model.get('id'),\n flags: { hidden: !model.get('hidden'), protected: model.get('protected') }\n },\n updates: [{ path: [...modelPath, 'hidden'], value: !model.get('hidden') }]\n })\n }\n\n @autobind\n onProtectedChange() {\n const { model, modelPath } = this.props\n\n updateItemModel({\n ...this.getModelProps(),\n data: {\n do: 'flags',\n id: model.get('id'),\n flags: { hidden: model.get('hidden'), protected: !model.get('protected') }\n },\n updates: [{ path: [...modelPath, 'protected'], value: !model.get('protected') }]\n })\n }\n\n @autobind\n getDateApproximation(timestep) {\n const localDate = moment(1000 * timestep).utcOffset(\n this.props.timeZone.has('offset') ? this.props.timeZone.get('offset') : moment().utcOffset()\n )\n\n const minutesDiff = Math.floor(moment().diff(localDate, 'minutes'))\n const hoursDiff = Math.floor(moment().diff(localDate, 'hours'))\n const daysDiff = Math.floor(moment().diff(localDate, 'days'))\n const monthsDiff = Math.floor(moment().diff(localDate, 'months'))\n const yearsDiff = Math.floor(moment().diff(localDate, 'years'))\n\n if (minutesDiff < 1) {\n return `just now`\n }\n if (hoursDiff < 1) {\n return `${minutesDiff} ${1 === minutesDiff ? 'minute' : 'minutes'} ago`\n }\n if (daysDiff < 1) {\n return `${hoursDiff} ${1 === hoursDiff ? 'hour' : 'hours'} ago`\n }\n if (monthsDiff < 1) {\n return `${daysDiff} ${1 === daysDiff ? 'day' : 'days'} ago`\n }\n if (yearsDiff < 1) {\n return `${monthsDiff} ${1 === monthsDiff ? 'month' : 'months'} ago`\n }\n return `${yearsDiff} ${1 === yearsDiff ? 'year' : 'years'} ago`\n }\n\n @autobind\n componentDidMount() {\n this.timestepInterval = setInterval(() => {\n if (this.refCreatedTimestep) {\n this.refCreatedTimestep.innerHTML = this.getDateApproximation(this.props.model.get('created'))\n }\n if (this.refEditedTimestep) {\n this.refEditedTimestep.innerHTML = this.getDateApproximation(this.props.model.get('edited'))\n }\n }, 60000)\n }\n\n @autobind\n componentWillUnmount() {\n clearInterval(this.timestepInterval)\n }\n\n @autobind\n render() {\n const { state, model, virtualReportsIds, position, isAdmin, isSurveyGuest, isSurveyViewer } = this.props\n const isProcessing = state.has('process')\n const isDefault = 1 == position\n const isLocked =\n ['original', 'widget', ...virtualReportsIds].includes(model.get('type')) || isDefault || isProcessing\n const filters = state.get('filters') || List()\n const creator = model.get('creator')\n const editor = model.get('editor')\n\n return (\n <div ref={this.saveRef('Description')} className={style.description}>\n <div ref={this.saveRef('DescriptionHead')} className={style['description-head']}>\n {!['original', 'xpert', 'widget', ...virtualReportsIds].includes(model.get('type')) &&\n 'number' === typeof model.get('created') && (\n <div>\n Created{' '}\n {!isSurveyGuest &&\n !isSurveyViewer &&\n 'string' === typeof creator &&\n 0 < creator.length &&\n `by ${creator} `}\n <b ref={this.saveRef('CreatedTimestep')}>{this.getDateApproximation(model.get('created'))}</b>\n </div>\n )}\n {!['original', 'xpert', 'widget', ...virtualReportsIds].includes(model.get('type')) &&\n 'number' === typeof model.get('edited') && (\n <div>\n Modified{' '}\n {!isSurveyGuest &&\n !isSurveyViewer &&\n 'string' === typeof editor &&\n 0 < editor.length &&\n `by ${editor} `}\n <b ref={this.saveRef('EditedTimestep')}>{this.getDateApproximation(model.get('edited'))}</b>\n </div>\n )}\n </div>\n <div ref={this.saveRef('DescriptionContent')} className={style['description-content']}>\n <div ref={this.saveRef('DescriptionContentHead')} className={style['description-content-head']}>\n APPLIED FILTERS, CUSTOMIZATIONS\n </div>\n <div ref={this.saveRef('DescriptionContentBody')} className={style['description-content-body']}>\n <div className={style['description-content-body-content']}>\n {0 < filters.size\n ? (() =>\n filters\n .map((filter, index) =>\n filter.get('value') ? (\n <div key={`filter-${index}`} className={style['description-content-body-content-row']}>\n <b>{filter.get('title')}:</b>\n <br />\n <div dangerouslySetInnerHTML={{ __html: filter.get('value') }} />\n </div>\n ) : (\n <div key={`filter-${index}`} className={style['description-content-body-content-row']}>\n <b>{filter.get('title')}</b>\n </div>\n )\n )\n .toArray())()\n : 'None'}\n </div>\n </div>\n </div>\n {isAdmin && (\n <div ref={this.saveRef('DescriptionFooter')} className={style['description-footer']}>\n <CheckBox\n label=\"Invisible to client\"\n checked={model.get('hidden')}\n disabled={isLocked}\n onChange={isLocked ? null : this.onHiddenChange}\n />\n <CheckBox\n label=\"Unkillable\"\n checked={model.get('protected')}\n disabled={isLocked}\n onChange={isLocked ? null : this.onProtectedChange}\n />\n </div>\n )}\n </div>\n )\n }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport { Map } from 'immutable'\nimport { EMAIL_REGEX } from '@aytm/app/lib/regex'\nimport { updateListState } from '@aytm/app/stats/page/sidebar/reports/actions-state'\nimport railsPostFetch from '@aytm/lib/common/rails-post-fetch'\nimport ContextSubscriber from '@aytm/lib/common/components/decorators/ContextSubscriber'\nimport ManagedRenderComponent from '@aytm/lib/common/components/ManagedRenderComponent'\n\n// components\nimport TextField from '@aytm/lib/rfd-ui/components/basic/text-field'\nimport Button from '@aytm/lib/rfd-ui/components/basic/button'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/reports/styles/ReportPopup.module.scss'\n\nconst EMAILS_MAX = 10\n\n// <Component>\n@ContextSubscriber(\n {\n name: 'report',\n contextTypes: {\n state: PropTypes.instanceOf(Map).isRequired,\n statePath: PropTypes.array.isRequired,\n model: PropTypes.instanceOf(Map).isRequired,\n modelPath: PropTypes.array.isRequired\n },\n mapToProps(values) {\n return {\n state: values.state,\n statePath: values.statePath,\n model: values.model,\n modelPath: values.modelPath\n }\n }\n },\n {\n name: 'reportList',\n contextTypes: {\n url: PropTypes.string.isRequired,\n state: PropTypes.instanceOf(Map).isRequired,\n statePath: PropTypes.array.isRequired,\n actions: PropTypes.object.isRequired,\n virtualReportsIds: PropTypes.array.isRequired,\n isSurveyGuest: PropTypes.bool,\n isSurveyViewer: PropTypes.bool\n },\n mapToProps(values) {\n return {\n url: values.url,\n listState: values.state,\n listStatePath: values.statePath,\n actions: values.actions,\n virtualReportsIds: values.virtualReportsIds,\n isSurveyGuest: values.isSurveyGuest,\n isSurveyViewer: values.isSurveyViewer\n }\n }\n }\n)\nexport default class ReportPopupSharing extends ManagedRenderComponent {\n static propTypes = {\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onChange: PropTypes.func\n }\n static updateOnProps(nextProps, prevProps) {\n return nextProps.state != prevProps.state || nextProps.model != prevProps.model\n }\n\n state = {\n focused: null,\n emailsReady: true,\n emailsSuccess: false,\n emailsError: false,\n emailsSentCount: 0,\n emailsInvalid: '',\n emailsChanged: false\n }\n\n constructor(props, context) {\n super(props, context)\n\n this.emails = ''\n }\n\n @autobind\n onFocus(val) {\n const { onFocus } = this.props\n 'function' === typeof onFocus && onFocus()\n\n this.setState({ focused: val })\n }\n\n @autobind\n onBlur() {\n const { onBlur } = this.props\n 'function' === typeof onBlur && onBlur()\n\n this.setState({ focused: null })\n }\n\n @autobind\n onChange(value) {\n const { onChange } = this.props\n 'function' === typeof onChange && onChange()\n\n this.emails = value\n\n this.setState({\n emailsReady: 0 < this.emails.length,\n emailsSuccess: false,\n emailsError: false,\n emailsSentCount: 0,\n emailsInvalid: '',\n emailsChanged: true\n })\n }\n\n @autobind\n checkEmails() {\n const emails = this.emails\n .replace(/[\\s,:;]/g, ' ')\n .split(' ')\n .map(v => v.trim())\n .filter(v => 0 < v.length)\n const valid = 0 < emails.length && emails.length <= EMAILS_MAX && emails.every(v => null !== v.match(EMAIL_REGEX))\n return valid\n }\n\n @autobind\n sendEmails() {\n const { url, statePath, model, listState, actions } = this.props\n if (!this.checkEmails()) this.setState({ emailsReady: false })\n else {\n const newListState = updateListState({\n updates: [{ path: [...statePath, 'process'], value: 'send' }],\n listState: listState,\n actions\n })\n railsPostFetch(url, {\n body: JSON.stringify({ do: 'email', id: model.get('id'), emails: this.emails })\n })\n .then(response => response.json())\n .then(data => {\n updateListState({\n updates: [{ path: [...statePath, 'process'], value: null }],\n listState: newListState,\n actions\n })\n if (data.status) {\n this.setState({\n emailsSuccess: true,\n emailsError: false,\n emailsSentCount: data.sent_count || this.emails.length,\n emailsInvalid: data.invalid_emails ? data.invalid_emails.reduce((p, c) => p + ', ' + c) : '',\n emailsChanged: false\n })\n } else {\n this.setState({ emailsError: true })\n }\n this.tickToHideEmails()\n })\n .catch(() => {\n this.tickToHideEmails()\n\n updateListState({\n updates: [{ path: [...statePath, 'process'], value: null }],\n listState: newListState,\n actions\n })\n })\n }\n }\n\n @autobind\n tickToHideEmails() {\n setTimeout(() => {\n this.setState({ emailsSuccess: false, emailsError: false, emailsSentCount: 0, emailsInvalid: '' })\n }, 15000)\n }\n\n @autobind\n render() {\n const { state, model, virtualReportsIds, isSurveyGuest, isSurveyViewer } = this.props\n const { focused, emailsReady, emailsSuccess, emailsError, emailsSentCount, emailsInvalid, emailsChanged } =\n this.state\n const shareLinkExist = model.get('shareLink') && 0 < model.get('shareLink').length\n const isProcessing = state.has('process')\n const isDisabled =\n !this.emails.length || !shareLinkExist || !emailsReady || isProcessing || isSurveyGuest || isSurveyViewer\n\n return (\n <div>\n <div className={style['content-row']}>\n <div className={`${style['content-row-column']} ${style['content-row-column-title']}`}>\n REPORT SHARING OPTIONS\n </div>\n </div>\n <div className={style['content-row']}>\n <div className={`${style['content-row-column']} ${style['content-row-column-note']}`}>\n SHARE REPORT BY EMAIL (Enter up to 10 emails below)\n </div>\n </div>\n <div className={`${style['content-row']}${'email' == focused ? ' ' + style['content-row-focused'] : ''}`}>\n <div className={`${style['content-row-column']} ${style['content-row-column-icon']}`}>\n <i className=\"icon-aytmfd-email\" />\n </div>\n <div className={style['content-row-column']}>\n <TextField\n width={303}\n value={this.emails}\n error={emailsChanged && !emailsReady && 0 < this.emails.length}\n readOnly={virtualReportsIds.includes(model.get('type')) || isSurveyGuest || isSurveyViewer}\n onChange={\n virtualReportsIds.includes(model.get('type')) || isSurveyGuest || isSurveyViewer ? null : this.onChange\n }\n onFocus={() => {\n this.onFocus('email')\n }}\n onBlur={this.onBlur}\n />\n </div>\n <div className={style['content-row-column']}>\n <Button\n width={isProcessing && 'send' == state.get('process') ? 80 : 60}\n label=\"SEND\"\n compact={true}\n icon={isProcessing && 'send' == state.get('process') ? 'icon-aytmfd-spin afd-spin' : null}\n disabled={virtualReportsIds.includes(model.get('type')) || isDisabled}\n onClick={virtualReportsIds.includes(model.get('type')) || isDisabled ? null : this.sendEmails}\n />\n </div>\n </div>\n <div className={style['content-row']} hidden={!emailsSuccess && !emailsError}>\n <div className={`${style['content-row-column']} ${style['content-row-column-icon']}`} />\n <div\n className={`${style['content-row-column']} ${style['content-row-column-text']} ${style['content-row-column-success']}`}\n hidden={!emailsSuccess}\n >\n {0 == emailsSentCount && 'No emails sent'}\n {1 == emailsSentCount && 'Email was sent'}\n {emailsSentCount > 1 && 'Emails were sent'}\n {emailsInvalid != '' && emailsSentCount > 0 && ', except'}\n {emailsInvalid != '' && emailsSentCount > 0 && (\n <span className={style['content-row-column-error']}> {emailsInvalid} </span>\n )}\n </div>\n <div\n className={`${style['content-row-column']} ${style['content-row-column-text']} ${style['content-row-column-error']}`}\n hidden={!emailsError}\n >\n Something went wrong, please try again later\n </div>\n </div>\n </div>\n )\n }\n}\n","// lib\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport { List, Map, fromJS } from 'immutable'\nimport ContextSubscriber from '@aytm/lib/common/components/decorators/ContextSubscriber'\nimport ContextProvider from '@aytm/lib/common/components/decorators/ContextProvider'\nimport ManagedRenderComponent from '@aytm/lib/common/components/ManagedRenderComponent'\nimport ADND from '@aytm/lib/adnd/ADND'\nimport { updateListState } from '@aytm/app/stats/page/sidebar/reports/actions-state'\nimport { dropListItem, addListItem } from '@aytm/app/stats/page/sidebar/reports/actions'\nimport { generateUID } from '@aytm/app/stats/lib/helpers'\n\n// components\nimport { Button } from 'primereact/button'\n\nimport Report from '@aytm/app/stats/page/sidebar/reports/Report'\n\n// styles\nimport '@aytm/app/stats/page/styles/globals.scss'\n\nimport style from '@aytm/app/stats/page/sidebar/reports/styles/ReportsPanel.module.scss'\n\n// <Component>\n@ContextProvider({\n name: 'reportList',\n propTypes: {\n url: PropTypes.string.isRequired,\n state: PropTypes.instanceOf(Map).isRequired,\n statePath: PropTypes.array.isRequired,\n model: PropTypes.instanceOf(Map).isRequired,\n modelPath: PropTypes.array.isRequired,\n limits: PropTypes.instanceOf(Map).isRequired,\n actions: PropTypes.object.isRequired,\n container: PropTypes.string.isRequired,\n windowUID: PropTypes.string.isRequired,\n currentReportId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n virtualReportsIds: PropTypes.array.isRequired,\n shareLinkHash: PropTypes.string,\n timeZone: PropTypes.instanceOf(Map),\n disabled: PropTypes.bool,\n disabledDataLab: PropTypes.bool,\n isAdmin: PropTypes.bool,\n isSurveyOwner: PropTypes.bool,\n isSurveyGuest: PropTypes.bool,\n isSurveyViewer: PropTypes.bool\n },\n contextTypes: {\n url: PropTypes.string.isRequired,\n state: PropTypes.instanceOf(Map).isRequired,\n statePath: PropTypes.array.isRequired,\n model: PropTypes.instanceOf(Map).isRequired,\n modelPath: PropTypes.array.isRequired,\n limits: PropTypes.instanceOf(Map).isRequired,\n actions: PropTypes.object.isRequired,\n container: PropTypes.string.isRequired,\n windowUID: PropTypes.string.isRequired,\n currentReportId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n virtualReportsIds: PropTypes.array.isRequired,\n shareLinkHash: PropTypes.string,\n timeZone: PropTypes.instanceOf(Map),\n disabled: PropTypes.bool,\n disabledDataLab: PropTypes.bool,\n isAdmin: PropTypes.bool,\n isSurveyOwner: PropTypes.bool,\n isSurveyGuest: PropTypes.bool,\n isSurveyViewer: PropTypes.bool\n },\n values(props) {\n return {\n url: props.url,\n state: props.state,\n statePath: props.statePath,\n model: props.model,\n modelPath: props.modelPath,\n limits: props.limits,\n actions: props.actions,\n container: props.container,\n windowUID: props.windowUID,\n currentReportId: props.currentReportId,\n virtualReportsIds: props.virtualReportsIds,\n shareLinkHash: props.shareLinkHash,\n timeZone: props.timeZone,\n disabled: props.disabled,\n disabledDataLab: props.disabledDataLab,\n isAdmin: props.isAdmin,\n isSurveyOwner: props.isSurveyOwner,\n isSurveyGuest: props.isSurveyGuest,\n isSurveyViewer: props.isSurveyViewer\n }\n },\n shouldUpdate(nextProps, prevProps) {\n return (\n nextProps.state != prevProps.state ||\n nextProps.model != prevProps.model ||\n nextProps.limits != prevProps.limits ||\n nextProps.currentReportId != prevProps.currentReportId ||\n nextProps.disabled != prevProps.disabled ||\n nextProps.disabledDataLab != prevProps.disabledDataLab\n )\n }\n})\nexport default class ReportsPanel extends ManagedRenderComponent {\n static propTypes = {\n url: PropTypes.string.isRequired,\n state: PropTypes.instanceOf(Map).isRequired,\n statePath: PropTypes.array.isRequired,\n model: PropTypes.instanceOf(Map).isRequired,\n modelPath: PropTypes.array.isRequired,\n limits: PropTypes.instanceOf(Map).isRequired,\n actions: PropTypes.object.isRequired,\n container: PropTypes.string.isRequired,\n windowUID: PropTypes.string.isRequired,\n currentReportId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n virtualReportsIds: PropTypes.array.isRequired,\n shareLinkHash: PropTypes.string,\n timeZone: PropTypes.instanceOf(Map),\n disabled: PropTypes.bool,\n disabledDataLab: PropTypes.bool,\n isAdmin: PropTypes.bool,\n isSurveyOwner: PropTypes.bool,\n isSurveyGuest: PropTypes.bool,\n isSurveyViewer: PropTypes.bool,\n onLoad: PropTypes.func\n }\n static updateOnProps(nextProps, prevProps) {\n return (\n nextProps.name != prevProps.name ||\n nextProps.state != prevProps.state ||\n nextProps.model != prevProps.model ||\n nextProps.limits != prevProps.limits ||\n nextProps.currentReportId != prevProps.currentReportId ||\n nextProps.disabled != prevProps.disabled ||\n nextProps.disabledDataLab != prevProps.disabledDataLab\n )\n }\n\n constructor(props, context) {\n super(props, context)\n\n this.dndItemsList = ADND.targets\n .itemsList(\n {\n acceptTypes: [`report-${props.windowUID}`]\n },\n { capture: false }\n )\n .buildPlaceholder(() => {\n const placeholderNode = document.createElement('div')\n placeholderNode.className = `${style.placeholder}`\n return placeholderNode\n })\n .onUpdateItemPositions(this.onDNDUpdateItemPositions.bind(this))\n .onDrop(this.onDNDDrop.bind(this))\n }\n\n onDNDUpdateItemPositions({ hiddenItemIndex, placeholderIndex } = {}) {\n if (null !== this.refComponent) {\n this.togglePlaceholder(hiddenItemIndex, placeholderIndex)\n setTimeout(() => {\n this.togglePlaceholder(hiddenItemIndex, placeholderIndex)\n }, 10)\n }\n }\n\n onDNDDrop(dropData) {\n const { item, position } = dropData\n const { model, modelPath } = item\n const {\n url,\n state: listState,\n statePath: listStatePath,\n model: listModel,\n modelPath: listModelPath,\n actions\n } = this.props\n\n if (\n null !== model &&\n null !== model.id &&\n null !== position &&\n listModel.get('items').findIndex(_item => _item.get('id') == model.id) != position\n ) {\n const cloneModel = Object.assign({}, model)\n\n dropListItem({\n url,\n listIndex: position,\n listState,\n listStatePath,\n listModel,\n listModelPath,\n model: cloneModel,\n modelPath,\n actions\n })\n } else {\n updateListState({\n updates: [\n { path: [...listStatePath, 'reorder'], value: null },\n { path: [...listStatePath, 'scrolling'], value: null }\n ],\n listState,\n actions\n })\n }\n }\n\n @autobind\n togglePlaceholder(hiddenItemIndex, placeholderIndex) {\n const { model } = this.props\n const item = model.getIn(['items', hiddenItemIndex])\n if (item != undefined && true === item.get('hidden')) {\n const placeholder = this.refComponent.querySelector(`.${style['placeholder']}`)\n if (placeholder) {\n placeholder.style.display = null === placeholderIndex ? 'none' : 'block'\n }\n }\n }\n\n @autobind\n saveListRef(ref) {\n this.saveRef('Component')(ref)\n this.connectDNDItemsList(ref)\n }\n\n @autobind\n connectDNDItemsList(ref) {\n this.dndItemsList.connect(ref)\n }\n\n @autobind\n itemModelPath(listModelPath, position) {\n return [...listModelPath, 'items', position - 1]\n }\n\n @autobind\n itemStatePath(listStatePath, model) {\n return [...listStatePath, 'items', model.get('id')]\n }\n\n componentDidMount() {\n const { onLoad } = this.props\n 'function' === typeof onLoad && onLoad()\n }\n\n componentDidUpdate() {\n const { onLoad } = this.props\n 'function' === typeof onLoad && onLoad()\n }\n\n @autobind\n renderItem(model, position) {\n const { state: listState, statePath: listStatePath, modelPath: listModelPath } = this.props\n const statePath = this.itemStatePath(listStatePath, model)\n\n return (\n <Report\n key={model.get('id')}\n state={listState.getIn(statePath) || Map()}\n statePath={statePath}\n model={model}\n modelPath={this.itemModelPath(listModelPath, position)}\n position={position}\n dndItemsList={0 < position ? this.dndItemsList : null}\n />\n )\n }\n\n @autobind\n renderItemsList(items, d) {\n return items.map((itemModel, itemIndex) => this.renderItem(itemModel, itemIndex + d))\n }\n\n @autobind\n renderList() {\n const { model, virtualReportsIds, isSurveyGuest, isSurveyViewer } = this.props\n const items = model.get('items')\n const itemSeq = items.valueSeq()\n\n const virtualItemSeq = itemSeq.filter(r => virtualReportsIds.includes(r.get('type')))\n const virtualItemSeqLength = virtualItemSeq.toArray().length\n\n const defaultItemSeq = itemSeq\n .filter(r => !virtualReportsIds.includes(r.get('type')))\n .filter((_, itemIndex) => 1 > itemIndex)\n\n const otherItemSeq = itemSeq\n .filter(r => !virtualReportsIds.includes(r.get('type')))\n .filter((_, itemIndex) => 0 < itemIndex)\n const otherItemSeqLength = otherItemSeq.toArray().length\n\n return [\n <div key=\"label-default\" className={`${style.label} ${style['label-default']}`}>\n Default Report\n </div>,\n this.renderItemsList(defaultItemSeq, 1),\n 0 < virtualItemSeqLength\n ? [\n <div key=\"label-virtual\" className={style.label}>\n Automated Term Report\n </div>,\n this.renderItemsList(virtualItemSeq, 2)\n ]\n : null,\n (!isSurveyGuest || isSurveyViewer) && 0 < otherItemSeqLength\n ? [\n <div key=\"label-other\" className={style.label}>\n Other Reports\n </div>,\n this.renderItemsList(otherItemSeq, virtualItemSeqLength + 2)\n ]\n : null\n ]\n }\n\n @autobind\n renderAddItem() {\n const { state, statePath, model, modelPath, currentReportId } = this.props\n const position = model.get('items').findIndex(item => item.get('id') == currentReportId)\n const itemModel = model.getIn(['items', position])\n const itemStatePath = this.itemStatePath(statePath, itemModel)\n\n return (\n <AddReport\n state={state.getIn(itemStatePath) || Map()}\n statePath={itemStatePath}\n model={itemModel}\n modelPath={this.itemModelPath(modelPath, position)}\n />\n )\n }\n\n render() {\n const { model, isSurveyGuest, isSurveyViewer } = this.props\n\n return (\n <div ref={this.saveListRef || this.saveRef('Component')} className={style.component}>\n {0 < model.get('items').size && (\n <>\n {!isSurveyGuest && !isSurveyViewer && this.renderAddItem()}\n {this.renderList()}\n </>\n )}\n </div>\n )\n }\n}\n\n// <Component>\n@ContextSubscriber({\n name: 'reportList',\n contextTypes: {\n url: PropTypes.string.isRequired,\n state: PropTypes.instanceOf(Map).isRequired,\n statePath: PropTypes.array.isRequired,\n model: PropTypes.instanceOf(Map).isRequired,\n modelPath: PropTypes.array.isRequired,\n limits: PropTypes.instanceOf(Map).isRequired,\n actions: PropTypes.object.isRequired,\n currentReportId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n disabled: PropTypes.bool,\n disabledDataLab: PropTypes.bool,\n isSurveyGuest: PropTypes.bool,\n isSurveyViewer: PropTypes.bool\n },\n mapToProps(values) {\n return {\n url: values.url,\n listState: values.state,\n listStatePath: values.statePath,\n listModel: values.model,\n listModelPath: values.modelPath,\n limits: values.limits,\n actions: values.actions,\n currentReportId: values.currentReportId,\n disabled: values.disabled,\n disabledDataLab: values.disabledDataLab,\n isSurveyGuest: values.isSurveyGuest,\n isSurveyViewer: values.isSurveyViewer\n }\n }\n})\nexport class AddReport extends ManagedRenderComponent {\n static propTypes = {\n state: PropTypes.instanceOf(Map).isRequired,\n statePath: PropTypes.array.isRequired,\n model: PropTypes.instanceOf(Map).isRequired,\n modelPath: PropTypes.array.isRequired\n }\n static updateOnProps(nextProps, prevProps) {\n return (\n nextProps.state != prevProps.state ||\n nextProps.model != prevProps.model ||\n nextProps.listState != prevProps.listState ||\n nextProps.limits != prevProps.limits ||\n nextProps.currentReportId != prevProps.currentReportId ||\n nextProps.disabled != prevProps.disabled ||\n nextProps.disabledDataLab != prevProps.disabledDataLab\n )\n }\n\n @autobind\n onReportAdd() {\n const { url, state, statePath, model, modelPath, listState, listStatePath, listModel, listModelPath, actions } =\n this.props\n\n addListItem({\n url,\n listState,\n listStatePath,\n listModel,\n listModelPath,\n state,\n statePath,\n model,\n modelPath,\n actions\n })\n }\n\n @autobind\n onReportBlankAdd() {\n const { url, listState, listStatePath, listModel, listModelPath, actions } = this.props\n\n const index = listModel.get('items').findIndex(v => 'original' == v.get('type'))\n\n const model = listModel.getIn(['items', index]).withMutations(map => {\n map\n .set('params', new Map())\n .set('config', new Map())\n .set(\n 'virtual',\n fromJS({\n vq1: {\n id: 'vq1',\n text: 'Virtual Question',\n type: 'dlv',\n variant: 'rb',\n position: 0,\n answerVariants: [\n {\n text: '',\n pattern: '',\n position: 1,\n options: {\n uid: generateUID(),\n mode: 'basic'\n }\n },\n {\n text: '',\n pattern: '',\n position: 2,\n options: {\n uid: generateUID(),\n mode: 'basic'\n }\n }\n ]\n }\n })\n )\n .set('schema', new List(['vq1']))\n .set('logicTags', new Map())\n .set('storytellings', new Map())\n .set('storytellingNotes', new Map())\n .set('scripts', null)\n })\n\n addListItem({\n url,\n listState,\n listStatePath,\n listModel,\n listModelPath,\n model,\n actions\n })\n }\n\n render() {\n const {\n model,\n listState,\n listStatePath,\n listModel,\n limits,\n disabled,\n disabledDataLab,\n isSurveyGuest,\n isSurveyViewer\n } = this.props\n const schema = model.get('schema')\n const isAdding = true === listState.getIn([...listStatePath, 'add'])\n const isXpert = ['xpert', 'xpert_custom'].includes(model.get('type'))\n const isEmpty = !isXpert && null !== schema && !schema.size\n const isDisabled =\n disabled || true === listState.get('disabled') || listModel.get('items').size >= limits.getIn(['reports', 'max'])\n const isLocked = ['widget'].includes(model.get('type')) || isAdding || isSurveyGuest || isSurveyViewer\n const isBlankAllowed = !disabledDataLab && !isSurveyGuest && !isSurveyViewer\n\n return (\n <div className={`${style.header} p-fluid`}>\n <div className=\"p-field p-col-12\">\n <Button\n className=\"p-button-lg p-button-grey-green\"\n label=\"SAVE AS A NEW REPORT\"\n disabled={isEmpty || isDisabled || isLocked}\n onClick={isEmpty || isDisabled || isLocked ? null : this.onReportAdd}\n />\n </div>\n {isBlankAllowed && (\n <div className=\"p-field p-col-12\">\n <Button\n className=\"p-button-lg p-button-grey-green\"\n label=\"CREATE A BLANK REPORT\"\n disabled={isXpert || isDisabled || isLocked}\n onClick={isXpert || isDisabled || isLocked ? null : this.onReportBlankAdd}\n />\n </div>\n )}\n </div>\n )\n }\n}\n\nADND().connect()\n","export const updateListState = ({ updates, listState, actions } = {}) => {\n const newListState = listState.withMutations(map => {\n updates.forEach(x => {\n null !== x.value ? map.setIn([...x.path], x.value) : map.deleteIn([...x.path])\n })\n })\n actions.updateState(newListState)\n\n return newListState\n}\n","import { List, Map, fromJS } from 'immutable'\nimport railsPostFetch from '@aytm/lib/common/rails-post-fetch'\nimport { Storage } from '@aytm/lib/storage'\n\nimport { updateListState } from '@aytm/app/stats/page/sidebar/reports/actions-state'\n\nconst ERROR = 'we are having a hard time completing your request.'\n\nconst VIRTUAL_REPORTS_IDS = ['term-report']\n\nconst wrappedPostFetch = (url, data = {}) =>\n Storage.Encode(data)\n .then(_bsfz =>\n railsPostFetch(url, {\n body: JSON.stringify({\n _bsfz\n })\n })\n )\n .then(response => response.json())\n\nconst getModelData = model => {\n const params = model.get('params')\n const config = model.get('config')\n const virtual = model.get('virtual')\n const schema = model.get('schema')\n const storytellings = model.get('storytellings')\n const storytellingNotes = model.get('storytellingNotes')\n const logicTags = model.get('logicTags')\n\n const _virtual = Object.entries(null !== virtual ? virtual.toJS() : {}).reduce((acc, [key, value]) => {\n delete value.preset\n acc[key] = value\n return acc\n }, {})\n\n const data = {\n reportId: model.get('id'),\n params: params.toJS(),\n config: config != undefined && null !== config ? config.toJS() : null,\n virtual: _virtual != undefined && null !== _virtual ? _virtual : null,\n schema: schema != undefined && null !== schema ? schema.toJS() : null,\n storytellings: storytellings != undefined && null !== storytellings ? storytellings.toJS() : {},\n storytellingNotes: storytellingNotes != undefined && null !== storytellingNotes ? storytellingNotes.toJS() : {},\n logicTags: logicTags != undefined && null !== logicTags ? logicTags.toJS() : null\n }\n\n const scripts = model.get('scripts')\n scripts && 0 < scripts.size && (data.scripts = scripts.toJS())\n\n return data\n}\n\nconst setModelData = (state, listModel, modelPath) => {\n const initials = state.get('initials')\n return listModel.withMutations(map => {\n if (initials != undefined) {\n map\n .setIn([...modelPath, 'params'], fromJS(initials.get('params')))\n .setIn([...modelPath, 'config'], fromJS(initials.get('config')))\n .setIn([...modelPath, 'virtual'], fromJS(initials.get('virtual')))\n .setIn([...modelPath, 'schema'], fromJS(initials.get('schema')))\n .setIn([...modelPath, 'logicTags'], fromJS(initials.get('logicTags')))\n\n const scripts = fromJS(initials.get('scripts') || {})\n scripts && 0 < scripts.size && map.setIn([...modelPath, 'scripts'], scripts)\n }\n })\n}\n\nconst decodeModelData = listModel =>\n listModel.withMutations(map => {\n map.update('items', List(), items => items.filter(r => !VIRTUAL_REPORTS_IDS.includes(r.get('type'))))\n })\nconst encodeModelData = (listModel, newListModel) => {\n const virtualReports = listModel.get('items').filter(r => VIRTUAL_REPORTS_IDS.includes(r.get('type')))\n return newListModel.withMutations(map => {\n for (const virtualReport of virtualReports) {\n map.update('items', List(), items => items.insert(virtualReport.get('visual_position') - 1, Map(virtualReport)))\n }\n })\n}\n\nexport const dropListItem = (props = {}) => {\n const { url, listIndex, listState, listStatePath, listModel, model, modelPath, actions } = props\n\n updateListState({\n updates: [\n { path: [...listStatePath, 'reorder'], value: null },\n { path: [...listStatePath, 'scrolling'], value: null }\n ],\n listState,\n actions\n })\n\n const newListModel = listModel.withMutations(map => {\n map.deleteIn([...modelPath]).update('items', List(), items => items.insert(listIndex, fromJS(model)))\n })\n actions.updateModel(newListModel, { type: 'reorder', ids: [] })\n\n const order = decodeModelData(newListModel)\n .get('items')\n .map(item => item.get('id'))\n .toJS()\n\n wrappedPostFetch(url, {\n do: 'reorder',\n order\n })\n .then(data => {\n if (data.order) {\n const order = data.order.filter((item, pos, self) => self.indexOf(item) == pos)\n const newListModel = encodeModelData(\n listModel,\n decodeModelData(listModel).withMutations(map => {\n order.forEach((id, index) => {\n const itemIndex = map.get('items').findIndex(item => item.get('id') == id)\n if (itemIndex < 0) {\n const newListItem = fromJS(data.reports.find(x => x.id == id))\n map.update('items', List(), items => items.insert(index, newListItem))\n } else if (itemIndex != index) {\n const listItem = fromJS(map.getIn(['items', itemIndex]))\n map.deleteIn(['items', itemIndex]).update('items', List(), items => items.insert(index, listItem))\n }\n })\n\n map.update('items', List(), items => items.setSize(data.order.length))\n })\n )\n actions.updateModel(newListModel, { type: 'reorder' })\n }\n if (!data.status) {\n actions.error(data.error || ERROR)\n }\n })\n .catch(() => actions.error(ERROR))\n}\n\nexport const addListItem = (props = {}) => {\n const { url, listState, listStatePath, listModel, state, statePath, model, modelPath, actions } = props\n\n updateListState({\n updates:\n statePath != undefined\n ? [\n { path: [...listStatePath, 'add'], value: true },\n { path: [...statePath, 'process'], value: 'add' }\n ]\n : [{ path: [...listStatePath, 'add'], value: true }],\n listState,\n actions\n })\n\n const data = getModelData(model)\n\n wrappedPostFetch(url, {\n do: 'add',\n share: data\n })\n .then(data => {\n if (!Number.isNaN(Number(data.id)) && 0 < Number(data.id)) {\n const newListItem = fromJS(data)\n const newListModel = encodeModelData(\n listModel,\n decodeModelData(modelPath != undefined ? setModelData(state, listModel, modelPath) : listModel).update(\n 'items',\n List(),\n items => items.insert(1, newListItem)\n )\n )\n\n actions.updateModel(newListModel, {\n type: 'add',\n id: newListItem.get('id'),\n siblingId: modelPath != undefined ? model.get('id') : null\n })\n } else {\n actions.error(data.error || ERROR)\n }\n })\n .catch(() => actions.error(ERROR))\n}\n\nexport const updateListItem = (props = {}) => {\n const { url, listState, listModel, statePath, model, modelPath, actions } = props\n\n updateListState({ updates: [{ path: [...statePath, 'process'], value: 'save' }], listState, actions })\n\n const data = getModelData(model)\n data.edited = model.get('edited') || model.get('created')\n\n wrappedPostFetch(url, {\n do: 'update',\n id: model.get('id'),\n share: data\n })\n .then(data => {\n if (!Number.isNaN(Number(data.id)) && 0 < Number(data.id)) {\n const newListModel = listModel.withMutations(map => {\n map.setIn([...modelPath, 'edited'], data.edited).setIn([...modelPath, 'editor'], data.editor)\n })\n actions.updateModel(newListModel, { type: 'update', id: model.get('id') })\n } else {\n actions.error(data.error || ERROR, model.get('id'), {\n report: data.report\n })\n }\n })\n .catch(() => actions.error(ERROR, model.get('id')))\n}\n\nexport const deleteListItem = (props = {}) => {\n const { url, listState, listModel, statePath, model, modelPath, actions } = props\n\n const newListState = updateListState({\n updates: [{ path: [...statePath, 'process'], value: 'delete' }],\n listState,\n actions\n })\n\n wrappedPostFetch(url, {\n do: 'delete',\n id: model.get('id')\n })\n .then(data => {\n if (data.status) {\n updateListState({\n updates: [\n { path: [...statePath, 'deleted'], value: true },\n { path: [...statePath, 'active'], value: false }\n ],\n listState: newListState,\n actions\n })\n\n setTimeout(() => {\n const newListModel = listModel.deleteIn([...modelPath])\n actions.updateModel(newListModel, { type: 'delete', id: model.get('id') })\n }, 500)\n } else {\n if (data.report) {\n const listItem = fromJS(data.report)\n const newListModel = listModel.withMutations(map => {\n const itemIndex = map.get('items').findIndex(item => item.get('id') == listItem.get('id'))\n map.deleteIn(['items', itemIndex]).update('items', List(), items => items.insert(itemIndex, listItem))\n })\n actions.updateModel(newListModel, { type: 'update', id: listItem.get('id') })\n }\n\n actions.error(data.error || ERROR, model.get('id'))\n }\n })\n .catch(() => actions.error(ERROR, model.get('id')))\n}\n\nexport const updateItemModel = (props = {}) => {\n const { url, data, updates, listState, listModel, statePath, model, modelPath, actions } = props\n\n updateListState({ updates: [{ path: [...statePath, 'process'], value: 'update' }], listState, actions })\n\n data.edited = model.get('edited') || model.get('created')\n\n wrappedPostFetch(url, data)\n .then(data => {\n if (data.status) {\n const newListModel = listModel.withMutations(map => {\n updates.forEach(x => {\n map.setIn([...x.path], x.value)\n })\n map.setIn([...modelPath, 'edited'], data.edited).setIn([...modelPath, 'editor'], data.editor)\n })\n actions.updateModel(newListModel, { type: 'update_props', id: model.get('id') })\n } else {\n actions.error(data.error || ERROR, model.get('id'), {\n report: data.report\n })\n }\n })\n .catch(() => actions.error(ERROR, model.get('id')))\n}\n\nexport const updateItemShareLink = (props = {}) => {\n const { url, share, listState, listModel, statePath, model, modelPath, actions } = props\n\n const process = share ? 'share' : 'unshare'\n\n updateListState({ updates: [{ path: [...statePath, 'process'], value: process }], listState, actions })\n\n wrappedPostFetch(url, { do: process, id: model.get('id'), edited: model.get('edited') || model.get('created') })\n .then(data => {\n if (data.status) {\n const newListModel = listModel.withMutations(map => {\n map\n .setIn([...modelPath, 'shareLink'], data.shareLink)\n .setIn([...modelPath, 'edited'], data.edited)\n .setIn([...modelPath, 'editor'], data.editor)\n })\n actions.updateModel(newListModel, { type: 'update_props', id: model.get('id') })\n } else {\n actions.error(data.error || ERROR, model.get('id'), {\n report: data.report\n })\n }\n })\n .catch(() => actions.error(ERROR, model.get('id')))\n}\n\nexport const revertListItem = (props = {}) => {\n const { listState, listModel, state, statePath, model, modelPath, actions } = props\n\n updateListState({ updates: [{ path: [...statePath, 'process'], value: 'revert' }], listState, actions })\n\n const newListModel = setModelData(state, listModel, modelPath)\n actions.updateModel(newListModel, { type: 'revert', id: model.get('id') })\n}\n\nexport const RenameAllCodebooks = (url, codebook, tags, reports, callback) => {\n wrappedPostFetch(url, {\n do: 'rename_codebook',\n from: codebook.from,\n to: codebook.to,\n tags,\n reports\n })\n .then(data => callback(data))\n .catch(() => callback())\n}\n\nexport const RenameAllTags = (url, tag, reports, callback) => {\n wrappedPostFetch(url, {\n do: 'rename_tag',\n from: tag.from,\n to: tag.to,\n reports\n })\n .then(data => callback(data))\n .catch(() => callback())\n}\n","// lib\nimport React, { createRef, useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { Map, fromJS } from 'immutable'\n\n// import { encodeText, decodeText } from '@aytm/app/stats/lib/helpers'\n\n// components\nimport { Dropdown } from 'primereact/dropdown'\n\n// import TextField from '@aytm/lib/rfd-ui/components/basic/text-field'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/weighting/styles/WeightingItem.module.scss'\n\nconst setInputFilter = (textbox, inputFilter) => {\n const events = ['input', 'keydown', 'keyup', 'mousedown', 'mouseup', 'select', 'contextmenu', 'drop']\n events.forEach(event => {\n textbox.addEventListener(event, () => {\n if (inputFilter(textbox.value)) {\n textbox.oldValue = textbox.value\n textbox.oldSelectionStart = textbox.selectionStart\n textbox.oldSelectionEnd = textbox.selectionEnd\n } else if (textbox.oldValue) {\n textbox.value = textbox.oldValue\n textbox.setSelectionRange(textbox.oldSelectionStart, textbox.oldSelectionEnd)\n } else {\n textbox.value = ''\n }\n })\n })\n}\n\n// <Component>\nconst WeightingItem = ({ index, model, options, surveyData, disabled, onUpdate, onRemove }) => {\n const [inputsRefs, setInputsRefs] = useState([])\n\n const onSelect = value => {\n const trait = surveyData.traits.find(t => value == t.id)\n if (trait != undefined) {\n const item = {\n key: String(value),\n items: trait.values.map(v => {\n return {\n key: v.id,\n text: v.name.en || v.name,\n target: 0,\n actual: 0,\n final: 0\n }\n })\n }\n onUpdate(index, fromJS(item))\n return\n }\n const question = surveyData.questions.find(q => q.position == value)\n if (question != undefined) {\n const item = {\n key: String(value),\n items: question.answerVariants\n .filter(v => v !== null)\n .map(v => {\n return {\n key: v.position,\n text: v.text,\n target: 0,\n actual: 0,\n final: 0\n }\n })\n }\n onUpdate(index, fromJS(item))\n return\n }\n if (surveyData.virtual[value] != undefined) {\n const item = {\n key: String(value),\n items: surveyData.virtual[value].answerVariants.map(v => {\n return {\n key: v.position,\n text: v.text,\n target: 0,\n actual: 0,\n final: 0\n }\n })\n }\n onUpdate(index, fromJS(item))\n }\n }\n\n useEffect(() => {\n setInputsRefs(ref =>\n Array(model.get('items').size)\n .fill()\n .map((_, i) => ref[i] || createRef())\n )\n }, [model])\n useEffect(() => {\n inputsRefs.forEach(ref => setInputFilter(ref.current.refInput, value => /^\\d*\\.?\\d*$/.test(value)))\n }, [inputsRefs])\n\n // const renderItems = () => {\n // return model.get('items').map((item, index) => (\n // <div key={`item-${item.get('key')}`} className={`${style.row} p-fluid`}>\n // <div className={`${style.item} p-field p-col-12`}>\n // <div className={style['item-text']}>{item.get('text')}</div>\n // <div className={style['item-target']}>\n // <TextField\n // ref={inputsRefs[index]}\n // theme=\"small\"\n // width=\"60px\"\n // debounce={100}\n // value={String(item.get('target'))}\n // />\n // <div className={style['item-target-affix']}>%</div>\n // </div>\n // <div className={style['item-actual']}>{item.get('actual')}%</div>\n // <div className={style['item-final']}>{item.get('final')}%</div>\n // </div>\n // </div>\n // ))\n // }\n\n return (\n <div className={style.component}>\n <div className={`${style.row} p-fluid`}>\n <div className=\"p-field p-col-12\">\n <span className={style.remove} onClick={() => onRemove(index)}>\n <i className=\"icon-aytmfd-delete\" />\n </span>\n <Dropdown\n placeholder=\"Choose dimension\"\n value={model.get('key')}\n options={options}\n optionValue=\"value\"\n optionLabel=\"text\"\n fixedDropdownDir=\"bottom\"\n onChange={disabled ? null : event => onSelect(event.value)}\n />\n </div>\n </div>\n </div>\n )\n}\n\nWeightingItem.propTypes = {\n index: PropTypes.number.isRequired,\n model: PropTypes.instanceOf(Map),\n options: PropTypes.array,\n surveyData: PropTypes.object,\n disabled: PropTypes.bool,\n onUpdate: PropTypes.func,\n onRemove: PropTypes.func\n}\n\nWeightingItem.displayName = 'WeightingItem'\n\nexport default WeightingItem\n","// lib\nimport React, { useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport { List, fromJS } from 'immutable'\n\n// components\nimport WeightingItem from '@aytm/app/stats/page/sidebar/weighting/WeightingItem'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/weighting/styles/WeightingList.module.scss'\n\n// <Component>\nconst WeightingList = ({ items, surveyData, disabled, onAdd, onUpdate, onRemove }) => {\n const traitsOptions = useMemo(() => {\n const traits = surveyData.traits.map(t => {\n return {\n value: String(t.id),\n text: t.title\n }\n })\n return fromJS(traits)\n }, [surveyData.traits])\n const questionOptions = useMemo(() => {\n const questions = surveyData.questions.map(q => {\n return {\n value: String(q.position),\n text: `${q.pre_type ? 'PQ' : 'Q'}${q.visual_position}: ${q.text}`\n }\n })\n return fromJS(questions)\n }, [surveyData.questions])\n const virtualOptions = useMemo(() => {\n const virtual = Object.keys(surveyData.virtual).map(key => {\n return {\n value: String(key),\n text: surveyData.virtual[key].text\n }\n })\n return fromJS(virtual)\n }, [surveyData.virtual])\n\n const options = useMemo(\n () => traitsOptions.concat(questionOptions).concat(virtualOptions).toJSON(),\n [traitsOptions, questionOptions, virtualOptions]\n )\n\n return (\n <div className={style.component}>\n {items.map((itemModel, itemIndex) => (\n <WeightingItem\n key={`item-${itemIndex}`}\n index={itemIndex}\n model={itemModel}\n options={options}\n surveyData={surveyData}\n disabled={disabled}\n onUpdate={onUpdate}\n onRemove={onRemove}\n />\n ))}\n <div className={`${style.row} p-fluid`}>\n <span className={style.add} onClick={() => onAdd()}>\n Add Dimension\n </span>\n </div>\n </div>\n )\n}\n\nWeightingList.propTypes = {\n items: PropTypes.instanceOf(List),\n surveyData: PropTypes.object,\n disabled: PropTypes.bool,\n onAdd: PropTypes.func,\n onUpdate: PropTypes.func,\n onRemove: PropTypes.func\n}\n\nWeightingList.displayName = 'WeightingList'\n\nexport default WeightingList\n","// lib\nimport React, { useState, useRef, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { collator } from '@aytm/app/stats/lib/helpers'\n\n// components\nimport { Button } from 'primereact/button'\nimport { Dropdown } from 'primereact/dropdown'\nimport { InputSwitch } from 'primereact/inputswitch'\n\nimport containerExpander from '@aytm/lib/layout/container-expander'\n\n// import WeightingList from '@aytm/app/stats/page/sidebar/weighting/WeightingList'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/weighting/styles/WeightingPanel.module.scss'\n\nconst Weighting = ({ weighting, appliedWeighting, surveyData, disabled, onChange, onUpdate, onLoad }) => {\n const [weightingDisabled, setWeightingDisabled] = useState(true)\n const [isProcessing, setIsProcessing] = useState(false)\n\n const componentRef = useRef(null)\n const containerExpanderRef = useRef(null)\n\n const dropdownsRef = useRef({})\n\n const weighted = useMemo(\n () =>\n weighting.type === appliedWeighting.type &&\n JSON.stringify(weighting.items) === JSON.stringify(appliedWeighting.items),\n [weighting, appliedWeighting]\n )\n\n const weightingOptions = useMemo(() => {\n const options = [\n { value: '*', text: 'Choose weighting variable' },\n { value: 'var', text: 'Weight by Custom variable' }\n // { value: 'custom', text: 'Custom / Advanced' }\n ]\n if (0 < surveyData.census.length) {\n return options.splice(1, 0, {\n value: 'census',\n text: `Weight by US Census`\n })\n }\n return options\n }, [surveyData.census])\n\n const censusOptions = useMemo(\n () =>\n surveyData.census\n .map(value => {\n if (value == undefined) return null\n return {\n value: value.join('+'),\n text: value.join(', ')\n }\n })\n .filter(v => null !== v),\n [surveyData.census]\n )\n\n const varOptions = useMemo(() => {\n const options = []\n surveyData.customVariables.forEach(value => {\n options.push({\n value: value,\n text: value\n })\n })\n if (\n 'var' == weighting.type &&\n 'var' == appliedWeighting.type &&\n 0 < appliedWeighting.items.length &&\n weighting.items[0] == appliedWeighting.items[0] &&\n 0 > surveyData.customVariables.indexOf(appliedWeighting.items[0])\n ) {\n options.push({\n value: appliedWeighting.items[0],\n text: appliedWeighting.items[0]\n })\n }\n options.sort((a, b) => collator.compare(a.text, b.text))\n return options\n }, [weighting, appliedWeighting, surveyData.customVariables])\n\n const onShowDropdown = useCallback(\n key => {\n if (\n null !== containerExpanderRef.current &&\n null !== dropdownsRef.current &&\n dropdownsRef.current[key] != undefined\n ) {\n containerExpanderRef.current.expand(dropdownsRef.current[key].getOverlay())\n }\n },\n [containerExpanderRef, dropdownsRef]\n )\n const onHideDropdown = useCallback(\n key => {\n if (\n null !== containerExpanderRef.current &&\n null !== dropdownsRef.current &&\n dropdownsRef.current[key] != undefined\n ) {\n containerExpanderRef.current.unexpand(dropdownsRef.current[key].getOverlay())\n }\n },\n [containerExpanderRef, dropdownsRef]\n )\n\n // const onAddItem = useCallback(() => {\n // const items = weighting.items.push({ key: '', items: [] })\n // onChange(weighting.active, weighting.type, items)\n // }, [weighting])\n // const onUpdateItem = useCallback(\n // (index, value) => {\n // const items = weighting.items.slice(index, 0, value)\n // onChange(weighting.active, weighting.type, items)\n // },\n // [weighting]\n // )\n // const onRemoveItem = useCallback(\n // index => {\n // const items = weighting.items.slice(index, 1)\n // onChange(weighting.active, weighting.type, items)\n // },\n // [weighting]\n // )\n\n useEffect(() => {\n setIsProcessing(false)\n }, [weighted])\n\n useEffect(() => {\n if (null !== componentRef.current) {\n containerExpanderRef.current = containerExpander(componentRef.current, { margin: 20 })\n }\n }, [componentRef])\n\n useEffect(() => {\n if (null !== dropdownsRef.current) {\n delete dropdownsRef.current['census']\n delete dropdownsRef.current['var']\n delete dropdownsRef.current['custom']\n }\n }, [weighting.type])\n\n useEffect(() => {\n setWeightingDisabled(disabled || '*' == weighting.type || !weighting.items.length)\n }, [disabled, weighting])\n\n useEffect(() => {\n if (onLoad && 'function' === typeof onLoad) {\n onLoad()\n }\n }, [weighting, onLoad])\n\n const onSelect = value => {\n switch (value) {\n case 'census':\n onChange(\n weighting.active,\n value,\n ('census' == appliedWeighting.type\n ? appliedWeighting.items\n : 0 < censusOptions.length && censusOptions[0]['value']) || []\n )\n break\n case 'var':\n onChange(\n weighting.active,\n value,\n ('var' == appliedWeighting.type\n ? appliedWeighting.items\n : 0 < varOptions.length && [varOptions[0]['value']]) || []\n )\n break\n case 'custom':\n onChange(weighting.active, value, 'custom' == appliedWeighting.type ? appliedWeighting.items || [] : [])\n break\n default:\n onChange(false, value, [])\n break\n }\n\n setIsProcessing(false)\n }\n\n const onCensusSelect = value => {\n onChange(weighting.active, weighting.type, value.split('+'))\n\n setIsProcessing(false)\n }\n const onVariableSelect = value => {\n onChange(weighting.active, weighting.type, value.split('+'))\n\n setIsProcessing(false)\n }\n\n const onApply = () => {\n setIsProcessing(true)\n onUpdate()\n }\n const onCancel = () => {\n onChange(appliedWeighting.active || false, appliedWeighting.type || '*', appliedWeighting.items || [])\n }\n\n const renderButtons = (type = 'all') =>\n !weighted && appliedWeighting.active && 0 < appliedWeighting.items.length ? (\n <div className={`${style.row} ${style['row-buttons']} p-fluid`}>\n {('all' == type || 'cancel' == type) && (\n <div className=\"p-field p-col-5\">\n <Button\n className=\"p-button-secondary\"\n label=\"Cancel\"\n disabled={isProcessing}\n onClick={isProcessing ? null : onCancel}\n />\n </div>\n )}\n {('all' == type || 'apply' == type) && (\n <div className=\"p-field p-col-5\">\n <Button\n label=\"Apply\"\n iconPos=\"right\"\n loading={isProcessing}\n disabled={isProcessing}\n onClick={isProcessing ? null : onApply}\n />\n </div>\n )}\n </div>\n ) : null\n\n return (\n <div ref={componentRef} className={style.component}>\n {!weightingDisabled && (\n <>\n <div className={`${style.row} ${style['row-switch']} p-fluid`}>\n <div className=\"p-field p-col-12\">\n <InputSwitch\n className=\"p-subtheme-contrast\"\n checked={weighting.active}\n disabled={disabled}\n onChange={disabled ? null : event => onUpdate(event.value)}\n />\n <label onClick={disabled ? null : () => onUpdate(!weighting.active)}>\n Weighting is {weighting.active ? 'ON' : 'OFF'}\n </label>\n </div>\n </div>\n </>\n )}\n <div className={`${style.row} p-fluid`}>\n <div className=\"p-field p-col-12\">\n <Dropdown\n ref={element => (dropdownsRef.current['type'] = element)}\n placeholder=\"Choose weighting options\"\n value={weighting.type}\n options={weightingOptions}\n optionValue=\"value\"\n optionLabel=\"text\"\n fixedDropdownDir=\"bottom\"\n data-testid=\"weighting-type\"\n disabled={disabled}\n onChange={disabled ? null : event => onSelect(event.value)}\n onShow={disabled ? null : () => onShowDropdown('type')}\n onHide={disabled ? null : () => onHideDropdown('type')}\n />\n </div>\n </div>\n {'census' == weighting.type && (\n <>\n <div className={`${style.row} p-fluid`}>\n <div className=\"p-field p-col-12\">\n <Dropdown\n ref={element => (dropdownsRef.current['census'] = element)}\n placeholder=\"Choose census options\"\n value={weighting.items.join('+')}\n options={censusOptions}\n optionValue=\"value\"\n optionLabel=\"text\"\n fixedDropdownDir=\"bottom\"\n data-testid=\"weighting-census\"\n disabled={disabled}\n onChange={disabled ? null : event => onCensusSelect(event.value)}\n onShow={disabled ? null : () => onShowDropdown('census')}\n onHide={disabled ? null : () => onHideDropdown('census')}\n />\n </div>\n </div>\n {renderButtons()}\n {appliedWeighting.active && 0 < appliedWeighting.items.length && (\n <div className={`${style.row} p-fluid`}>\n <div className={style.note}>\n <b>\n Weighted by {appliedWeighting.items.slice(0, -1).join(', ')}\n {1 < appliedWeighting.items.length ? ' and ' : ''}\n {appliedWeighting.items[appliedWeighting.items.length - 1]}\n </b>\n <br />\n Maximum Amplification of 1 response: <b>x5</b>\n <br />\n Minimum Effective Sample Size: <b>50%</b>\n <br />\n To exceed these safe settings please{' '}\n <a href=\"/resources/contact-us\" target=\"_blank\" rel=\"noreferrer\">\n contact us\n </a>\n .\n </div>\n </div>\n )}\n </>\n )}\n {'var' == weighting.type &&\n (0 < varOptions.length ? (\n <>\n <div className={`${style.row} p-fluid`}>\n <div className=\"p-field p-col-12\">\n <Dropdown\n ref={element => (dropdownsRef.current['var'] = element)}\n placeholder=\"Choose custom variable options\"\n value={weighting.items.join('+')}\n options={varOptions}\n optionValue=\"value\"\n optionLabel=\"text\"\n fixedDropdownDir=\"bottom\"\n data-testid=\"weighting-var\"\n disabled={disabled}\n onChange={disabled ? null : event => onVariableSelect(event.value)}\n onShow={disabled ? null : () => onShowDropdown('var')}\n onHide={disabled ? null : () => onHideDropdown('var')}\n />\n </div>\n </div>\n {renderButtons()}\n {0 < appliedWeighting.items.length && 0 > surveyData.customVariables.indexOf(appliedWeighting.items[0]) && (\n <div className={`${style.row} p-fluid`}>\n <div className={style.note}>Weighting wasn't applied</div>\n </div>\n )}\n {weighted && 0 < surveyData.undefs && appliedWeighting.active && 0 < appliedWeighting.items.length && (\n <div className={`${style.row} p-fluid`}>\n <div className={`${style.note} ${style['note-warning']}`}>\n Warning: some respondents don't have weights assigned. Weight of 1.0 was assumed for them.\n </div>\n </div>\n )}\n </>\n ) : (\n <>\n {renderButtons('cancel')}\n <div className={`${style.row} p-fluid`}>\n <div className={style.note}>\n You don't seem to have any custom variables. In order to weight by custom variables, please upload\n it first to this Results page.\n <br />\n <a\n href=\"https://helpcenter.aytm.com/hc/en-us/articles/360048760532-Custom-Variable-Upload\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Learn more »\n </a>\n </div>\n </div>\n </>\n ))}\n {/* {'custom' == weighting.type && (\n <>\n <WeightingList\n items={weighting.items}\n surveyData={surveyData}\n onAdd={onAddItem}\n onUpdate={onUpdateItem}\n onRemove={onRemoveItem}\n />\n {renderButtons()}\n </>\n )} */}\n </div>\n )\n}\n\nWeighting.propTypes = {\n weighting: PropTypes.object.isRequired,\n appliedWeighting: PropTypes.object.isRequired,\n surveyData: PropTypes.object.isRequired,\n undefs: PropTypes.number,\n disabled: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n onUpdate: PropTypes.func.isRequired,\n onLoad: PropTypes.func\n}\n\nWeighting.displayName = 'Weighting'\n\nexport default Weighting\n","// lib\nimport React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport ADND from '@aytm/lib/adnd/ADND'\n\n// styles\nimport style from '@aytm/app/stats/page/xperts-debug/JsonFileUpload.module.scss'\n\nconst processUploadedFile = async files =>\n new Promise((resolve, reject) => {\n const file = files[0]\n const reader = new FileReader()\n reader.onload = event => {\n let data\n try {\n data = JSON.parse(event.target.result)\n } catch (error) {\n return reject(error)\n }\n return resolve([data])\n }\n reader.readAsText(file)\n })\n\nexport default class JsonFileUpload extends Component {\n static propTypes = {\n onFilesUploaded: PropTypes.func.isRequired,\n maxItems: PropTypes.number,\n sortFiles: PropTypes.oneOf(['asis', 'asc', 'desc']),\n selectOnClick: PropTypes.bool,\n content: PropTypes.func.isRequired\n }\n\n state = {\n dragOver: false,\n acceptFiles: true,\n progress: null\n }\n\n inputRef = React.createRef()\n\n dropAssetFileTarget = ADND.targets\n .files()\n .onDrop(this.onAssetFileDrop)\n .onEnter(this.onAssetFileDragEnter)\n .onLeave(this.onAssetFileDragLeave)\n .acceptDrop(this.acceptAssetFileDrop)\n\n @autobind\n connectDropTarget(ref) {\n this.dropAssetFileTarget.connect(ref)\n }\n\n componentDidMount() {\n this.mounted = true\n }\n\n componentWillUnmount() {\n this.mounted = false\n this.dropAssetFileTarget.disconnect()\n }\n\n @autobind\n onAssetFileDragEnter() {\n this.setState(state => {\n return {\n ...state,\n dragOver: true\n }\n })\n }\n\n @autobind\n onAssetFileDragLeave() {\n this.setState(state => {\n return {\n ...state,\n dragOver: false\n }\n })\n }\n\n @autobind\n acceptAssetFileDrop() {\n const { acceptFiles = true } = this.state\n return acceptFiles\n }\n\n @autobind\n onAssetFileDrop(...files) {\n if (files.length) {\n this.onDropFiles([files[0]])\n }\n }\n\n @autobind\n inputFilesSelected() {\n if (this.inputRef.current && this.inputRef.current.files && this.inputRef.current.files.length) {\n this.onDropFiles([this.inputRef.current.files[0]])\n }\n }\n\n @autobind\n onDropFiles(selectedFiles) {\n const { onFilesUploaded, sortFiles = 'asis' } = this.props\n\n const files =\n 'asc' === sortFiles\n ? sortFilesByFilenames(selectedFiles, 1)\n : 'desc' === sortFiles\n ? sortFilesByFilenames(selectedFiles, -1)\n : selectedFiles\n\n if ('function' === typeof onFilesUploaded) {\n this.setState(\n state => {\n return {\n ...state,\n acceptFiles: false\n }\n },\n () => {\n processUploadedFile(files).then(files => {\n if (this.mounted) {\n this.setState(\n state => {\n return {\n ...state,\n acceptFiles: true,\n progress: null\n }\n },\n () => {\n onFilesUploaded(files)\n }\n )\n }\n })\n }\n )\n }\n }\n\n render() {\n const { content, selectOnClick = true } = this.props\n const { acceptFiles = true, dragOver, progress } = this.state\n return (\n <label\n className={`${style.component}${selectOnClick ? ' ' + style.selectOnClick : ''}`}\n ref={this.connectDropTarget}\n >\n {selectOnClick && acceptFiles ? (\n <input\n type=\"file\"\n name=\"file\"\n onChange={this.inputFilesSelected}\n accept=\"application/json\"\n multiple={false}\n className={style.input}\n tabIndex=\"-1\"\n ref={this.inputRef}\n />\n ) : null}\n {content ? content({ dragOver, progress, uploading: !acceptFiles }) : null}\n </label>\n )\n }\n}\n\nfunction sortFilesByFilenames(files, dir) {\n if (2 > files.length) {\n return files\n }\n const sortedIndexes = files\n .map((file, index) => {\n const fileName = 'string' === typeof file.name ? file.name || `file-${index}` : `file-${index}`\n const digitOrNotRegexp = /((\\d+)|(\\D+))/g\n const fileNameSplit = (fileName.match(digitOrNotRegexp) || []).map(part =>\n /^\\d+$/.test(part) ? parseInt(part, 10) : part\n )\n return {\n fileNameSplit,\n index\n }\n })\n .sort((a, b) => {\n const maxLength = Math.max(a.fileNameSplit.length, b.fileNameSplit.length)\n for (let i = 0; i < maxLength; i++) {\n const currentFileNameSplitA = a.fileNameSplit[i] || ''\n const currentFileNameSplitB = b.fileNameSplit[i] || ''\n if (currentFileNameSplitA > currentFileNameSplitB) {\n return dir\n } else if (currentFileNameSplitA < currentFileNameSplitB) {\n return -dir\n }\n }\n return 0\n })\n .map(({ index }) => index)\n return sortedIndexes.map(index => files[index])\n}\n","// lib\nimport React, { useCallback } from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport JsonFileUpload from '@aytm/app/stats/page/xperts-debug/JsonFileUpload'\nimport LoaderDots from '@aytm/lib/rfd-ui/components/basic/loader-dots'\n\n// styles\nimport style from '@aytm/app/stats/page/xperts-debug/XpertsDebugPopup.module.scss'\n\nXpertsDebugPopup.propTypes = {\n text: PropTypes.string,\n maxItems: PropTypes.number,\n renderProgressText: PropTypes.func,\n multiple: PropTypes.bool,\n sortFiles: PropTypes.oneOf(['asis', 'asc', 'desc'])\n // onFilesUploaded: PropTypes.func.isRequired\n}\n\nconst onFilesUploaded = files => {\n const [data] = files\n StatPage.model.xpertDebug = true // eslint-disable-line no-undef\n StatPage.model.set('refresh', true) // eslint-disable-line no-undef\n\n StatPage.survey.removeQuestions() // eslint-disable-line no-undef\n if (Array.isArray(data) && data.every(v => null !== v.schema && null !== v.data)) {\n const newData = {\n response: {\n aggregate: {\n schema: data.map(v => v.schema.id),\n scripts: {\n questions: data.reduce((acc, v) => Object.assign(acc, { [v.schema.id]: v.schema }), {})\n }\n },\n survey: {\n uid: Number(window.location.pathname.split('/')[2]).toString(36) + '@dev',\n questions: [],\n traits: [],\n schema: data.map(v => v.schema.id)\n },\n stats: data.reduce((acc, v) => Object.assign(acc, { [v.schema.id]: v.data.answer || v.data }), {})\n },\n status: 'OK'\n }\n StatPage.api.loadQuestionsSuccess()(null, newData) // eslint-disable-line no-undef\n } else if (data.aggregate && data.survey && data.stats) {\n StatPage.api.loadQuestionsSuccess()(null, data) // eslint-disable-line no-undef\n }\n\n const id = 'xperts-debug'\n const element = document.querySelector(`#${id}`)\n window.$STATS.unlinkComponent(element)\n element.remove(element)\n}\nexport default function XpertsDebugPopup(props) {\n const { text, renderProgressText, multiple, sortFiles, maxItems } = props\n\n const renderButton = useCallback(\n ({ dragOver = false, progress, uploading } = {}) => (\n <div className={`${style.component}${dragOver ? ' ' + style.dragOver : ''}`}>\n {uploading && progress ? (\n <ProgressPanel progress={progress} renderProgressText={renderProgressText} />\n ) : (\n <DropPanel text={text || ''} />\n )}\n </div>\n ),\n [text, renderProgressText]\n )\n\n return (\n <JsonFileUpload\n maxItems={maxItems}\n multiple={multiple}\n sortFiles={sortFiles}\n watchProgress={true}\n onFilesUploaded={onFilesUploaded}\n content={renderButton}\n />\n )\n}\n\nDropPanel.propTypes = {\n text: PropTypes.string.isRequired\n}\nexport function DropPanel(props) {\n const { text } = props\n return (\n <div className={style.inner}>\n <div className={style.label}>\n <i className={style.icon} />\n <div className={style.text}>{text || ''}</div>\n </div>\n </div>\n )\n}\n\nProgressPanel.propTypes = {\n renderProgressText: PropTypes.func,\n progress: PropTypes.object.isRequired\n}\nexport function ProgressPanel(props) {\n const { progress = {}, renderProgressText } = props\n const { percents = 0, loadedFiles = 0, totalFiles = 1 } = progress || {}\n return (\n <div className={style.inner}>\n <div className={style.label}>\n <div className={style.uploadingPercents}>\n <LoaderDots dotSize={14} dots={3} height={40} /> {100 > percents ? `${percents}%` : ''}\n </div>\n {'function' === typeof renderProgressText ? (\n <div className={style.uploadingFiles}>{renderProgressText({ loadedFiles, totalFiles })}</div>\n ) : null}\n </div>\n </div>\n )\n}\n","/* eslint-disable unicorn/no-unsafe-regex */\n\nconst labelMatch =\n /([^?@]|^)\\b((p?q)(\\d+[:-]\\d+|(\\d+\\.)+\\d+|(\\d+,)+\\d+|\\d+)([a-z]+(\\d+[:-]\\d+|(\\d+\\.)+\\d+|(\\d+,)+\\d+|\\d+))*([a-z])*)\\b/gi\nexport const errorLabelMatch =\n /(\\?\\b(p?q)(\\d+[:-]\\d+|(\\d+\\.)+\\d+|(\\d+,)+\\d+|\\d+)([a-z]+(\\d+[:-]\\d+|(\\d+\\.)+\\d+|(\\d+,)+\\d+|\\d+))*([a-z])*)\\b/gi\nexport default labelMatch\n","// lib\nimport labelMatch, { errorLabelMatch } from '@aytm/app/survey/editor/lib/logic/labels/labelMatch'\n\n// constants\n// eslint-disable-next-line unicorn/no-unsafe-regex\nexport const AYTM_LOGIC_STATEMENT_MATCH = /\\[(([^[\\]]+|\\[([^\\]]*][^[\\]]+))(\\[[^\\]]*][^[\\]]*)*)](?!])/gm\nexport const AYTM_LOGIC_ESCAPE_BRACKET_MATCH = /(\\[\\[+)[^[\\]]*(]]+)/gm\nexport const AYTM_LOGIC_ESCAPE_BRACKET_REGEXP = new RegExp(AYTM_LOGIC_ESCAPE_BRACKET_MATCH, 'm')\nexport const AYTM_LOGIC_STATEMENT_STRING_MATCH = /\"([^\"[\\]]*)\"/gm\nexport const AYTM_LOGIC_TOKEN_MATCH = /[a-z]\\w*/i\n\nexport function extractLogicStatementsFromText(text = '') {\n const statements = text.match(AYTM_LOGIC_STATEMENT_MATCH) || []\n return (\n statements\n // filter escaped bracket statement\n .filter(statement => !AYTM_LOGIC_ESCAPE_BRACKET_REGEXP.test(statement))\n // remove [ and ] from statements\n .map(statement => statement.slice(1, -1))\n )\n}\n\nexport function replaceLogicStatementsInText(text = '', replacer) {\n return text.replace(AYTM_LOGIC_STATEMENT_MATCH, statement =>\n AYTM_LOGIC_ESCAPE_BRACKET_REGEXP.test(statement) ? statement : `[${replacer(statement.slice(1, -1))}]`\n )\n}\n\nexport function extractRefsFromLogicStatement(statement = '') {\n const refs = []\n let match\n while (null !== (match = labelMatch.exec(statement))) {\n refs.push(match[2])\n }\n return refs\n}\n\nexport function extractErrorRefsFromLogicStatement(statement = '') {\n const refs = []\n let match\n while (null !== (match = errorLabelMatch.exec(statement))) {\n refs.push(match[1])\n }\n return refs\n}\n","// lib\nimport {\n AYTM_LOGIC_STATEMENT_MATCH,\n AYTM_LOGIC_ESCAPE_BRACKET_MATCH\n} from '@aytm/app/survey/editor/lib/logic/statements'\n\nexport default function countText(text = '') {\n return text\n .replace(AYTM_LOGIC_STATEMENT_MATCH, '')\n .replace(AYTM_LOGIC_ESCAPE_BRACKET_MATCH, match => match.slice(1, -1)).length\n}\n","// lib\nimport { Map } from 'immutable'\n\n// features\nconst featuresStore = {\n //editorUID: features: Map()\n}\n\nexport function getFeatures(editorUID) {\n return featuresStore[editorUID] || Map()\n}\nexport function getFeature(editorUID, featureUID) {\n return getFeatures(editorUID).get(featureUID) || Map({ status: 'on' })\n}\nexport function getFeatureUpgradePackage(editorUID, featureUID) {\n return featureUID ? getFeatures(editorUID).getIn([featureUID, 'onPackage'], null) : null\n}\nexport function getFeatureStatus(editorUID, featureUID) {\n return getFeatures(editorUID).getIn([featureUID, 'status']) || 'off'\n}\nexport function hasFeatureStatus(editorUID, featureUID, ...statuses) {\n const feature = getFeature(editorUID, featureUID)\n return feature && feature.has('status') && statuses.includes(feature.get('status'))\n}\nexport function isFeatureOn(editorUID, featureUID) {\n return hasFeatureStatus(editorUID, featureUID, 'on')\n}\nexport function isFeatureOff(editorUID, featureUID) {\n return hasFeatureStatus(editorUID, featureUID, 'off')\n}\nexport function setFeatures(editorUID, features) {\n featuresStore[editorUID] = features\n}\n\nfunction questionTypeFeature(editorUID, questionType, questionMode = '') {\n switch (questionType) {\n case 'va': {\n return getFeature(editorUID, 'video_response')\n }\n case 'ir': {\n return getFeature(editorUID, 'image_response')\n }\n case 'cjc': {\n return getFeature(editorUID, 'conjoint_lite')\n }\n case 'cjd': {\n return getFeature(editorUID, 'conjoint_deep')\n }\n case 'md': {\n return 'express' == questionMode ? getFeature(editorUID, 'maxdiff') : getFeature(editorUID, 'maxdiff_hd')\n }\n default: {\n return getFeature(editorUID, questionType)\n }\n }\n}\nexport function getQuestionTypeStatus(editorUID, questionType, questionMode) {\n return questionTypeFeature(editorUID, questionType, questionMode).get('status', 'on')\n}\nexport function getQuestionTypeUpgradePackage(editorUID, questionType, questionMode) {\n return questionTypeFeature(editorUID, questionType, questionMode).get('onPackage')\n}\nexport function isQuestionTypeAvailable(editorUID, questionType, questionMode) {\n return ['on', 'available'].includes(getQuestionTypeStatus(editorUID, questionType, questionMode))\n}\n","export function base(projectUID) {\n return projectUID ? `/surveys/${projectUID}` : '/surveys'\n}\n\nexport function checkout(projectUID) {\n return `/surveys/${projectUID}/checkout`\n}\n\nexport function validate(projectUID) {\n return `/surveys/${projectUID}/validate_structure`\n}\n\nexport function requestAccessToken(projectUID) {\n return `/surveys/${projectUID}/request_access`\n}\n\nexport function transferControl(projectUID) {\n return `/surveys/${projectUID}/transfer_control`\n}\n\nexport const editAction = 'edit'\n\nexport const viewAction = 'view'\n\nexport const correctAction = 'correct'\n\nexport const versionAction = 'version'\n\nexport const checkoutAction = 'launch_checkout'\n\nexport const newTargetMarketAction = 'new'\n\nexport const translateAction = 'translate'\n\nexport const editTargetMarketAction = 'tm'\n\nexport const graphQLEndPoint = '/graphql'\n\nimport {\n getImageAssetPath,\n IMAGE_ASSET_PATH_FILTER_RESIZE_TO_FIT,\n IMAGE_ASSET_PATH_GRAVITY_CENTER\n} from '@aytm/lib/common/assets'\nexport function imageAsset(\n path,\n {\n width = 250,\n height = 250,\n filter = IMAGE_ASSET_PATH_FILTER_RESIZE_TO_FIT,\n backgroundColor = 'white',\n unsharp = false,\n gravity = IMAGE_ASSET_PATH_GRAVITY_CENTER,\n animated = false,\n trim = false\n } = {}\n) {\n return getImageAssetPath({\n path,\n filter,\n width,\n height,\n backgroundColor,\n unsharp,\n gravity,\n animated,\n trim\n })\n}\n\nexport function getMultilingualRoute(researcherLanguage, languageUID = '', base = '/') {\n return !researcherLanguage && !languageUID\n ? `${base}${translateAction}`\n : languageUID === researcherLanguage\n ? `${base}${editAction}`\n : `${base}${translateAction}/${viewAction}/${languageUID}`\n}\n","import ProgressivePromise from '@aytm/lib/AsyncJobManager/ProgressivePromise'\nimport railsPostFetch, { getCSRFToken } from '@aytm/lib/common/rails-post-fetch'\nimport fetch from 'isomorphic-fetch'\nimport uploadWithProgress from '@aytm/lib/common/upload-with-progress'\nimport { headersFromGoogleUploadUrl } from '@aytm/lib/common/google-cloud-url'\n\nexport default function ImageAssetUploadJob({ createAssetPath, file, params = {} } = {}) {\n return () =>\n new ProgressivePromise((resolve, reject, progress) => {\n const totalProgress = file.size\n // CREATE ASSET\n\n progress(0, totalProgress) // set progress to 0\n\n const createParams = Object.assign({}, params, {\n filename: file.name,\n content_type: file.type,\n filesize: file.size\n })\n const asset = {}\n\n railsPostFetch(createAssetPath, {\n body: JSON.stringify(createParams)\n })\n .then(response => (response.ok ? response.json() : {}))\n\n // UPLOAD IMAGE\n .then(createdAsset => {\n Object.assign(asset, createdAsset)\n\n if (\n !asset.uid ||\n 'uploading' !== asset.status ||\n !asset.upload_urls ||\n !asset.upload_urls.binary_upload_url ||\n !asset.upload_urls.finish_upload_url ||\n !asset.upload_urls.status_upload_url\n ) {\n return Promise.reject(new Error('createAsset - invalid response data'))\n }\n\n return uploadWithProgress(\n asset.upload_urls.binary_upload_url,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': file.type,\n ...headersFromGoogleUploadUrl(asset.upload_urls.binary_upload_url)\n },\n body: file\n },\n progressEvent => {\n progress(Math.round(progressEvent.loaded * 0.9), totalProgress) // set progress for uploaded bytes with correction 100% -> 90%\n }\n )\n })\n\n // FINISH UPLOAD\n .then(() =>\n fetch(asset.upload_urls.finish_upload_url, {\n method: 'POST',\n headers: {\n 'X-CSRF-Token': getCSRFToken()\n },\n mode: 'cors'\n })\n )\n\n // CHECK STATUS\n .then(finishResponse => {\n if (finishResponse.ok) {\n progress(Math.round(file.size * 0.95), totalProgress) // set progress to 95%\n return new Promise((resolve, reject) => {\n const checkStatus = () => {\n fetch(asset.upload_urls.status_upload_url, {\n method: 'POST',\n mode: 'cors',\n headers: {\n 'X-CSRF-Token': getCSRFToken()\n },\n Accept: 'application/json'\n })\n .then(response => (response.ok ? response.json() : {}))\n .then(assetStatus => {\n switch (assetStatus.status) {\n case 'ready':\n case 'source_valid': {\n progress(totalProgress, totalProgress) // set progress to 100%\n resolve(\n Object.assign({}, asset, assetStatus, {\n status: 'ready',\n fileName: file.name,\n contentType: file.type,\n fileSize: file.size\n })\n )\n break\n }\n case 'processing': {\n setTimeout(checkStatus, 1000)\n break\n }\n default: {\n reject(assetStatus)\n break\n }\n }\n })\n .catch(_error => {\n setTimeout(checkStatus, 1000)\n })\n }\n setTimeout(checkStatus, 500)\n })\n } else {\n return Promise.reject(new Error('unable to finish upload'))\n }\n })\n .then(resolve, reject)\n .catch(error => reject(error))\n })\n}\n","import ProgressivePromise from '@aytm/lib/AsyncJobManager/ProgressivePromise'\nimport railsPostFetch, { getCSRFToken } from '@aytm/lib/common/rails-post-fetch'\nimport fetch from 'isomorphic-fetch'\nimport uploadWithProgress from '@aytm/lib/common/upload-with-progress'\nimport { headersFromGoogleUploadUrl } from '@aytm/lib/common/google-cloud-url'\n\nexport default function VideoAssetUploadJob({ createAssetPath, file, params = {} } = {}) {\n return () =>\n new ProgressivePromise((resolve, reject, progress) => {\n const totalProgress = file.size\n // CREATE ASSET\n\n progress(0, totalProgress) // set progress to 0\n\n const createParams = Object.assign({}, params, {\n filename: file.name,\n content_type: file.type,\n filesize: file.size\n })\n const asset = {}\n\n railsPostFetch(createAssetPath, {\n body: JSON.stringify(createParams)\n })\n .then(response => (response.ok ? response.json() : {}))\n\n // UPLOAD VIDEO\n .then(createdAsset => {\n Object.assign(asset, createdAsset)\n\n if (\n !asset.uid ||\n 'uploading' !== asset.status ||\n !asset.upload_urls ||\n !asset.upload_urls.binary_upload_url ||\n !asset.upload_urls.finish_upload_url ||\n !asset.upload_urls.status_upload_url\n ) {\n return Promise.reject(new Error('createAsset - invalid response data'))\n }\n\n return uploadWithProgress(\n asset.upload_urls.binary_upload_url,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': file.type,\n ...headersFromGoogleUploadUrl(asset.upload_urls.binary_upload_url)\n },\n body: file\n },\n progressEvent => {\n progress(Math.round(progressEvent.loaded * 0.5), totalProgress) // set progress for uploaded bytes with correction 100% -> 50%\n }\n )\n })\n\n // FINISH UPLOAD\n .then(() =>\n fetch(asset.upload_urls.finish_upload_url, {\n method: 'POST',\n mode: 'cors',\n headers: {\n 'X-CSRF-Token': getCSRFToken()\n }\n })\n )\n\n // CHECK STATUS\n .then(finishResponse => {\n if (finishResponse.ok) {\n let processingVirtualProgress = 0.55\n progress(Math.round(totalProgress * processingVirtualProgress), totalProgress) // set progress to 55%\n return new Promise((resolve, reject) => {\n const checkStatus = () => {\n fetch(asset.upload_urls.status_upload_url, {\n method: 'POST',\n mode: 'cors',\n headers: {\n 'X-CSRF-Token': getCSRFToken()\n },\n Accept: 'application/json'\n })\n .then(response => (response.ok ? response.json() : {}))\n .then(assetStatus => {\n switch (assetStatus.status) {\n case 'ready':\n case 'source_valid': {\n progress(totalProgress, totalProgress) // set progress to 100%\n resolve(\n Object.assign({}, asset, assetStatus, {\n status: 'ready',\n fileName: file.name,\n contentType: file.type,\n fileSize: file.size\n })\n )\n break\n }\n case 'processing': {\n processingVirtualProgress = Math.min(processingVirtualProgress + 0.05, 0.9)\n progress(totalProgress * processingVirtualProgress, totalProgress) // set progress to processingVirtualProgress%\n setTimeout(checkStatus, 2000)\n break\n }\n default: {\n reject(assetStatus)\n break\n }\n }\n })\n .catch(_error => {\n setTimeout(checkStatus, 2000)\n })\n }\n setTimeout(checkStatus, 2000)\n })\n } else {\n return Promise.reject(new Error('unable to finish upload'))\n }\n })\n .then(resolve, reject)\n .catch(error => reject(error))\n })\n}\n","import { IImageAsset } from '@aytm/app/swidget/base/modules/images/types'\n\nexport const IMAGE_ASSET_PATH_FILTER_RESIZE_TO_STRETCH = 'resizest'\nexport const IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT = 'resizelm'\nexport const IMAGE_ASSET_PATH_FILTER_RESIZE_TO_FIT = 'resizeft'\nexport const IMAGE_ASSET_PATH_FILTER_RESIZE_TO_FILL = 'resizefl'\nexport const IMAGE_ASSET_PATH_FILTER_RESIZE_AND_PAD = 'resizepd'\nexport const IMAGE_ASSET_PATH_FILTER_SMART_CROP = 'smart_crop'\n\nexport const IMAGE_ASSET_SIZE_SMALL = 150\nexport const IMAGE_ASSET_SIZE_MIDDLE = 600\nexport const IMAGE_ASSET_SIZE_BIG = 1920\nexport const OLD_IMAGE_ASSET_WIDTH = 150\nexport const OLD_IMAGE_ASSET_HEIGHT = 68\nexport const OLD_IMAGE_ASSET_WIDTH_MEDIUM = 120\nexport const OLD_IMAGE_ASSET_HEIGHT_MEDIUM = 120\n\nexport const IMAGE_ASSET_PATH_GRAVITY_CENTER = 'c'\n\n// ON CHANGES: please also update this function in public/javascripts/_ui/js/image_resizer.js (legacy code support)\nexport function getImageAssetPath({\n host = (window as { assets_host?: string }).assets_host || '/',\n width,\n height,\n pathPrefix = 'media/cache',\n path = 'no_image',\n filter = '',\n backgroundColor = 'transparent',\n unsharp = false,\n gravity,\n animated = false,\n trim = false,\n json = false\n}: {\n host?: string\n width?: number\n height?: number\n pathPrefix?: string\n path?: string\n filter?: string\n backgroundColor?: string\n unsharp?: boolean\n gravity?: string\n animated?: boolean\n trim?: boolean\n json?: boolean\n} = {}): string {\n return `${\n // host\n '/' === host[host.length - 1] ? host : host + '/'\n }${\n // prefix\n pathPrefix\n }/${json ? 'json' : 'resolve'}/${\n // filter\n filter\n }${\n // dimensions\n width && height ? `_${width}x${height}` : ''\n }${\n // backgroundColor\n 'none' === backgroundColor ? '' : 'string' === typeof backgroundColor ? `_${backgroundColor.toLowerCase()}` : ''\n }${\n // gravity\n gravity && (IMAGE_ASSET_PATH_FILTER_RESIZE_TO_FILL === filter || IMAGE_ASSET_PATH_FILTER_RESIZE_AND_PAD === filter)\n ? `_${gravity}`\n : ''\n }${\n // unsharp\n unsharp ? '_us' : ''\n }${\n // animated\n animated ? '_an' : ''\n }${\n // trim\n trim ? '_trim' : ''\n }/${\n // path\n path\n }`\n}\n\nexport function getSmallAssetPath(asset: IImageAsset, fill?: boolean): string {\n return getImageAssetPath({\n width: IMAGE_ASSET_SIZE_SMALL,\n height: IMAGE_ASSET_SIZE_SMALL,\n filter: fill ? IMAGE_ASSET_PATH_FILTER_RESIZE_TO_FILL : IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT,\n path: asset?.original_path,\n backgroundColor: 'white'\n })\n}\n\nexport function getOldSmallAssetPath(asset: IImageAsset): string {\n return getImageAssetPath({\n width: OLD_IMAGE_ASSET_WIDTH,\n height: OLD_IMAGE_ASSET_HEIGHT,\n filter: IMAGE_ASSET_PATH_FILTER_RESIZE_AND_PAD,\n backgroundColor: 'white',\n animated: true,\n path: asset?.original_path\n })\n}\n\nexport function getOldMediumAssetPath(asset: IImageAsset): string {\n return getImageAssetPath({\n width: OLD_IMAGE_ASSET_WIDTH_MEDIUM,\n height: OLD_IMAGE_ASSET_HEIGHT_MEDIUM,\n filter: IMAGE_ASSET_PATH_FILTER_RESIZE_AND_PAD,\n backgroundColor: 'white',\n animated: true,\n path: asset?.original_path\n })\n}\n\nexport function getOldLargeAssetPath(asset: IImageAsset): string {\n return getImageAssetPath({\n width: IMAGE_ASSET_SIZE_MIDDLE,\n height: IMAGE_ASSET_SIZE_MIDDLE,\n filter: IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT,\n backgroundColor: 'white',\n animated: true,\n path: asset?.original_path\n })\n}\n\nexport function getMediumAssetPath(asset: IImageAsset, background?: string): string {\n return getImageAssetPath({\n width: IMAGE_ASSET_SIZE_MIDDLE,\n height: IMAGE_ASSET_SIZE_MIDDLE,\n filter: IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT,\n path: asset?.original_path,\n animated: true,\n backgroundColor: background || 'white'\n })\n}\n\nexport function getBigAssetPath(asset: IImageAsset, background?: string): string {\n return getImageAssetPath({\n width: IMAGE_ASSET_SIZE_BIG,\n height: IMAGE_ASSET_SIZE_BIG,\n filter: IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT,\n path: asset?.original_path,\n animated: true,\n backgroundColor: background || 'white'\n })\n}\n","import React, { Component } from 'react'\nimport hoistNonReactStatics from 'hoist-non-react-statics'\nimport PropTypes from 'prop-types'\n\nexport function nameContextProvider(name) {\n return `${name}ContextProvider`\n}\n\n// provider subscriptions class\nexport class ContextProviderSubscriptions {\n constructor({ onSubscribe, onUnsubscribe, onUnsubscribeAll, onProviderUnmount } = {}) {\n this.listeners = []\n this.values = {}\n this.subscribe = this.subscribe.bind(this)\n this.unsubscribe = this.unsubscribe.bind(this)\n this.onSubscribe = onSubscribe\n this.onUnsubscribe = onUnsubscribe\n this.onUnsubscribeAll = onUnsubscribeAll\n this.onProviderUnmount = onProviderUnmount\n }\n updateValues(newValues) {\n // notify listeners\n if (this.listeners.length) {\n for (let i = 0; i < this.listeners.length; i++) {\n const listener = this.listeners[i]\n if (listener.subscribeOn) {\n const subscribedValues = {}\n let updated = false\n for (let i = 0; i < listener.subscribeOn.length; i++) {\n const key = listener.subscribeOn[i]\n if (!updated && newValues[key] != this.values[key]) {\n updated = true\n }\n subscribedValues[key] = newValues[key]\n }\n if (updated) {\n listener(subscribedValues)\n }\n } else {\n listener(newValues)\n }\n }\n }\n // set values\n this.values = newValues\n }\n subscribe(listener) {\n // add listener if it is not exists in listeners list\n if (!this.listeners.includes(listener)) {\n this.listeners.push(listener)\n }\n // send last values to listener\n listener(this.values)\n // create bound unsubscribe function\n const unsubscribe = function () {\n return this.unsubscribe(listener)\n }.bind(this)\n // notify onSubscribe callback\n if (this.onSubscribe) {\n this.onSubscribe({ listener, unsubscribe, listeners: this.listeners })\n }\n // return unsubscribe function\n return unsubscribe\n }\n unsubscribe(listener) {\n let unsubscribed = false\n const listenerIndex = this.listeners.indexOf(listener)\n if (listenerIndex >= 0) {\n this.listeners.splice(listenerIndex, 1)\n unsubscribed = true\n }\n // notify onUnsubscribe callback\n if (this.onUnsubscribe) {\n this.onUnsubscribe({ listener, unsubscribed, listeners: this.listeners })\n }\n // notify onUnsubscribeAll callback\n if (this.onUnsubscribeAll && !this.listeners.length) {\n this.onUnsubscribeAll()\n }\n // return unsubscribed status\n return unsubscribed\n }\n providerUnmount() {\n // unsubscribe all listeners\n this.listeners.forEach(this.unsubscribe)\n // notify onProviderUnmount callback\n if (this.onProviderUnmount) {\n this.onProviderUnmount()\n }\n }\n}\n\nexport default function ContextProvider(options = {}) {\n const { name, propTypes, contextTypes, values, shouldUpdate, mapToProps } = options\n\n const propsMapper =\n 'all' == mapToProps\n ? function (values) {\n return values\n }\n : Array.isArray(mapToProps)\n ? function (values) {\n return mapToProps.reduce(function (props, key) {\n props[key] = values[key]\n return props\n }, {})\n }\n : 'object' == typeof mapToProps\n ? function (values) {\n return Object.keys(mapToProps).reduce(function (props, key) {\n props[mapToProps[key]] = values[key]\n return props\n }, {})\n }\n : 'function' == typeof mapToProps\n ? mapToProps\n : null\n\n return function (ProviderComponent) {\n if (null == values || null == name) {\n // nothing to provide\n return ProviderComponent\n }\n\n // ProviderComponent display name\n const providerComponentDisplayName = ProviderComponent.displayName || ProviderComponent.name || 'Component'\n\n // ${name}ContextProvider\n const thisNameContextProvider = nameContextProvider(name)\n\n // HOC class\n class ContextProviderComponent extends Component {\n // context propTypes\n static propTypes = propTypes\n\n // ref to wrapped component\n static WrappedComponent = ProviderComponent\n\n // display name\n static displayName = `ContextProvider[${name}](${providerComponentDisplayName})`\n\n // ref to context provider options\n static ContextProviderOptions = options\n\n // put context subscriptions into context\n static childContextTypes = {\n [thisNameContextProvider]: PropTypes.instanceOf(ContextProviderSubscriptions)\n }\n getChildContext() {\n return {\n [thisNameContextProvider]: this.subscriptions\n }\n }\n\n // fetch context values in constructor\n constructor(props) {\n super(props)\n this.fetchContextValues = this.fetchContextValues.bind(this)\n this.saveWrappedRef = this.saveWrappedRef.bind(this)\n this.saveWrappedComponentRef = this.saveWrappedComponentRef.bind(this)\n this.subscriptions = new ContextProviderSubscriptions()\n this.fetchContextValues(props)\n }\n\n // fetch context values and (optionaly) map it to props\n fetchContextValues(props) {\n // fetch values\n const fetchedValues = values.call(this, props) || {}\n // notify subscriptions\n this.subscriptions.updateValues(fetchedValues)\n // check context types\n if ('development' == process.env.NODE_ENV && contextTypes) {\n PropTypes.checkPropTypes(\n contextTypes,\n fetchedValues,\n `ContextProvider[${name}]`,\n providerComponentDisplayName\n )\n }\n // map values to props\n if (propsMapper) {\n this.contextProps = propsMapper.call(this, fetchedValues)\n }\n }\n\n // update context on props update if needed\n shouldComponentUpdate(nextProps) {\n if (shouldUpdate) {\n if (shouldUpdate.call(this, nextProps, this.props)) {\n this.fetchContextValues(nextProps)\n }\n } else {\n this.fetchContextValues(nextProps)\n }\n return true\n }\n\n // unsubscribe on unmount\n componentWillUnmount() {\n this.subscriptions.providerUnmount()\n }\n\n // save references from ManagedRenderComponent\n saveWrappedRef(name, element) {\n this[`ref${name}`] = element\n if (this.props.saveRef) {\n this.props.saveRef(name, element)\n }\n }\n\n // save wrapped component ref\n saveWrappedComponentRef(component) {\n this.refWrappedComponent = component\n }\n\n // render ProviderComponent with component props and context props\n render() {\n return (\n <ProviderComponent\n saveRef={this.saveWrappedRef}\n ref={this.saveWrappedComponentRef}\n {...this.props}\n {...this.contextProps}\n />\n )\n }\n }\n\n // copy non React static members\n hoistNonReactStatics(ContextProviderComponent, ProviderComponent)\n\n // return wrapped component\n return ContextProviderComponent\n }\n}\n","import React, { Component } from 'react'\nimport hoistNonReactStatics from 'hoist-non-react-statics'\nimport PropTypes from 'prop-types'\nimport { nameContextProvider, ContextProviderSubscriptions } from './ContextProvider'\n\nexport default function ContextSubscriber(...subscribers) {\n // normalize subscribers\n const { subscribersList, providerSubscriptionContextTypes, updateOnProps } = subscribers.reduce(\n function (data, subscriber) {\n const normalizedSubscriber =\n 'string' == typeof subscriber\n ? { name: subscriber, mapToProps: 'all' }\n : null != subscriber.name\n ? subscriber\n : null\n if (null != normalizedSubscriber) {\n if (null != normalizedSubscriber.mapToProps && 'function' != typeof normalizedSubscriber.mapToProps) {\n const mapToProps = normalizedSubscriber.mapToProps\n normalizedSubscriber.mapToProps =\n 'all' == mapToProps\n ? function (values) {\n return values\n }\n : Array.isArray(mapToProps)\n ? function (values) {\n return mapToProps.reduce(function (props, key) {\n props[key] = values[key]\n return props\n }, {})\n }\n : 'object' == typeof mapToProps\n ? function (values) {\n return Object.keys(mapToProps).reduce(function (props, key) {\n props[mapToProps[key]] = values[key]\n return props\n }, {})\n }\n : null\n }\n data.subscribersList.push(normalizedSubscriber)\n if (null == normalizedSubscriber.provider) {\n data.providerSubscriptionContextTypes[nameContextProvider(normalizedSubscriber.name)] =\n PropTypes.instanceOf(ContextProviderSubscriptions)\n }\n if (normalizedSubscriber.mapToProps && normalizedSubscriber.updateOnProps) {\n const shouldUpdate =\n 'function' == typeof normalizedSubscriber.updateOnProps\n ? normalizedSubscriber.updateOnProps\n : Array.isArray(normalizedSubscriber.updateOnProps)\n ? function (nextProps, prevProps) {\n for (let i = 0; i < normalizedSubscriber.updateOnProps.length; i++) {\n if (\n nextProps[normalizedSubscriber.updateOnProps[i]] !=\n prevProps[normalizedSubscriber.updateOnProps[i]]\n ) {\n return true\n }\n }\n return false\n }\n : null\n if (shouldUpdate) {\n if (null == data.updateOnProps) {\n data.updateOnProps = []\n }\n data.updateOnProps.push({\n name: normalizedSubscriber.name,\n shouldUpdate,\n mapToProps: normalizedSubscriber.mapToProps\n })\n }\n }\n }\n return data\n },\n { subscribersList: [], providerSubscriptionContextTypes: {}, updateOnProps: null }\n )\n\n return function (SubscribedComponent) {\n if (0 == subscribersList.length) {\n // nothing to do\n return SubscribedComponent\n }\n\n // SubscribedComponent display name\n const subscribedComponentDisplayName = SubscribedComponent.displayName || SubscribedComponent.name || 'Component'\n\n // HOC class\n class ContextSubscriberComponent extends Component {\n // propTypes\n static propTypes = {\n saveRef: PropTypes.func\n }\n\n // find providers in react context\n static contextTypes = providerSubscriptionContextTypes\n\n // display name\n static displayName = `ContextSubscriber(${subscribedComponentDisplayName})`\n\n // ref to context provider options\n static ContextSubscribers = subscribers\n\n // put contextProps into state\n constructor(props, context) {\n super(props)\n this.saveWrappedRef = this.saveWrappedRef.bind(this)\n this.saveWrappedComponentRef = this.saveWrappedComponentRef.bind(this)\n this.contextValues = {}\n this.state = {\n contextProps: {}\n }\n this.unsubscribeListeners = subscribersList\n .reduce((unsubscribeListeners, subscriber) => {\n const provider = subscriber.provider\n ? subscriber.provider(props, context)\n : context[nameContextProvider(subscriber.name)]\n if (provider) {\n const subscription = contextValues => {\n if ('development' == process.env.NODE_ENV && subscriber.contextTypes) {\n PropTypes.checkPropTypes(\n subscriber.contextTypes,\n contextValues,\n `ContextSubscriber[${subscriber.name}]`,\n subscribedComponentDisplayName\n )\n }\n this.contextValues[subscriber.name] = contextValues\n if (subscriber.mapToProps) {\n const mappedContextProps = subscriber.mapToProps.call(this, contextValues, this.props)\n if (this.mounted) {\n const mappedContextPropsKeys = Object.keys(mappedContextProps)\n if (\n mappedContextPropsKeys.some(\n mappedContextPropsKey =>\n mappedContextProps[mappedContextPropsKey] != this.state.contextProps[mappedContextPropsKey]\n )\n ) {\n this.setState(\n state => (state.contextProps = Object.assign(this.state.contextProps, mappedContextProps))\n )\n }\n } else {\n this.state.contextProps = Object.assign(this.state.contextProps, mappedContextProps)\n }\n }\n }\n if (subscriber.contextTypes) {\n subscription.subscribeOn = Object.keys(subscriber.contextTypes)\n }\n unsubscribeListeners.push(provider.subscribe(subscription))\n return unsubscribeListeners\n }\n return null\n }, [])\n .filter(x => null != x)\n }\n\n // update on every props changes\n shouldComponentUpdate() {\n return true\n }\n\n componentDidMount() {\n this.mounted = true\n }\n\n // unsubscribe listeners on componentWillUnmount\n componentWillUnmount() {\n if (this.unsubscribeListeners && this.unsubscribeListeners.length) {\n this.unsubscribeListeners.forEach(unsubscribe => {\n unsubscribe()\n })\n }\n // unmount custom providers\n for (const subscriber of subscribersList) {\n if (subscriber.provider) {\n subscriber.provider?.providerUnmount?.()\n }\n }\n this.mounted = false\n }\n\n // update on props changes if needed\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (updateOnProps) {\n const updatedContextProps = updateOnProps.reduce((props, { name, shouldUpdate, mapToProps }) => {\n if (shouldUpdate.call(this, nextProps, this.props)) {\n Object.assign(props, mapToProps.call(this, this.contextValues[name] || {}, nextProps))\n }\n return props\n }, {})\n if (Object.keys(updatedContextProps).length > 0) {\n this.setState({\n contextProps: Object.assign(this.state.contextProps, updatedContextProps)\n })\n }\n }\n }\n\n // save references from ManagedRenderComponent\n saveWrappedRef(name, element) {\n this[`ref${name}`] = element\n if (this.props.saveRef) {\n this.props.saveRef(name, element)\n }\n }\n\n // save wrapped component ref\n saveWrappedComponentRef(component) {\n this.refWrappedComponent = component\n }\n\n // render SubscribedComponent with component props and context props\n render() {\n const { contextProps } = this.state\n return (\n <SubscribedComponent\n saveRef={this.saveWrappedRef}\n ref={this.saveWrappedComponentRef}\n {...this.props}\n {...contextProps}\n />\n )\n }\n }\n\n // copy non React static members\n hoistNonReactStatics(ContextSubscriberComponent, SubscribedComponent)\n\n return ContextSubscriberComponent\n }\n}\n","import { Component } from 'react'\nimport exceptionReporter from '@aytm/lib/common/exception-reporter'\n\nfunction shallowEqual(a, b) {\n if (a !== b) {\n if (null != a && null != b && 'object' == typeof a && 'object' == typeof b) {\n for (const i in a) if (a[i] !== b[i]) return false\n for (const i in b) if (!(i in a)) return false\n } else return false\n }\n return true\n}\n\nexport default class PureComponent extends Component {\n constructor(props, context) {\n super(props, context)\n this.mounted = false\n this.saveRef = this.saveRef.bind(this)\n }\n shouldComponentUpdate(nextProps, nextState, nextContext) {\n const { props, state, context } = this\n return !shallowEqual(props, nextProps) || !shallowEqual(state, nextState) || !shallowEqual(context, nextContext)\n }\n setState(...args) {\n if (this.mounted) {\n super.setState(...args)\n }\n }\n UNSAFE_componentWillMount() {\n this.mounted = true\n }\n componentDidMount() {}\n componentWillUnmount() {\n this.mounted = false\n }\n UNSAFE_componentWillReceiveProps(/*nextProps, nextContext*/) {}\n UNSAFE_componentWillUpdate(/*nextProps, nextState, nextContext*/) {}\n componentDidUpdate(/*prevProps, prevState, prevContext*/) {}\n saveRef(name) {\n return (\n this[`saveRef${name}`] ||\n (this[`saveRef${name}`] = component => {\n this[`ref${name}`] = component\n })\n )\n }\n componentDidCatch(error, info) {\n exceptionReporter(error, 'common', info)\n }\n}\n\n// skip comparing function values\nfunction shallowDataEqual(a, b) {\n if (a !== b) {\n if (null != a && null != b && 'object' == typeof a && 'object' == typeof b) {\n for (const i in a) {\n if ('function' == typeof a[i]) continue\n if (a[i] !== b[i]) return false\n }\n for (const i in b) {\n if ('function' == typeof b[i]) continue\n if (!(i in a)) return false\n }\n } else return false\n }\n return true\n}\n\nexport class PureDataComponent extends PureComponent {\n shouldComponentUpdate(nextProps, nextState, nextContext) {\n const { props, state, context } = this\n return (\n !shallowDataEqual(props, nextProps) ||\n !shallowDataEqual(state, nextState) ||\n !shallowDataEqual(context, nextContext)\n )\n }\n}\n","export default function copyToClipboard(text) {\n if (navigator.clipboard) navigator.clipboard.writeText(text)\n else if (window.clipboardData) window.clipboardData.setData('Text', text)\n else {\n try {\n const bufferElement = document.createElement('span')\n bufferElement.textContent = text\n document.body.appendChild(bufferElement)\n\n const selection = document.getSelection()\n const range = document.createRange()\n range.selectNodeContents && range.selectNodeContents(bufferElement)\n range.selectNode && range.selectNode(bufferElement)\n\n selection.removeAllRanges()\n selection.addRange(range)\n document.execCommand('copy')\n selection.removeAllRanges()\n\n document.body.removeChild(bufferElement)\n } catch {\n // skip errors\n }\n }\n}\n","/* globals XDomainRequest */\nexport default function uploadWithProgress(url, data = {}, onProgress) {\n return new Promise((resolve, reject) => {\n let xhr = new XMLHttpRequest()\n if (data.withCredentials) {\n if ('withCredentials' in xhr) {\n xhr.open(data.method || 'POST', url, true)\n } else if ('undefined' !== typeof XDomainRequest) {\n xhr = new XDomainRequest()\n xhr.open(data.method || 'POST', url)\n } else {\n xhr = null\n reject(new Error('CORS not supported'))\n }\n } else {\n xhr.open(data.method || 'POST', url, true)\n }\n if (xhr) {\n Object.keys(data.headers || {}).forEach(headerKey => {\n xhr.setRequestHeader(headerKey, data.headers[headerKey])\n })\n xhr.withCredentials = data.withCredentials || false\n xhr.onload = event => resolve(event.target.responseText)\n xhr.onerror = reject\n if (xhr.upload && onProgress) xhr.upload.onprogress = onProgress\n xhr.send(data.body)\n }\n })\n}\n","import { useState, useEffect } from 'react'\n\nexport default function useIsVisible(elementRef, threshold = 0.1) {\n const [intersecting, setIntersecting] = useState(false)\n\n useEffect(() => {\n let ref = null\n // eslint-disable-next-line compat/compat\n const observer = new IntersectionObserver(([entry]) => setIntersecting(entry.isIntersecting), {\n threshold: threshold\n })\n\n if (elementRef && elementRef.current) {\n observer.observe(elementRef.current)\n ref = elementRef.current\n }\n\n return () => {\n if (ref) observer.unobserve(ref)\n }\n }, [elementRef, threshold])\n\n return intersecting\n}\n","function getNode(target) {\n switch (true) {\n // selector\n case 'string' === typeof target: {\n return document.querySelector(target)\n }\n // element\n case target instanceof Element: {\n return target\n }\n // ref\n case null != target && 'object' === typeof target && target.current instanceof Element: {\n return target.current\n }\n default: {\n return void 0\n }\n }\n}\n\nexport default function containerExpander(container, { margin: defaultMargin = 0 } = {}) {\n const containerProps = {\n expanded: false,\n containerHeightFreezed: false,\n node: void 0,\n originalMinHeight: void 0,\n originalHeight: void 0,\n originalOverflow: void 0\n }\n // eslint-disable-next-line immutablejs/no-native-map-set\n const insets = new Map()\n\n const initContainer = () => {\n if (null == containerProps.node) {\n containerProps.node = getNode(container)\n containerProps.originalMinHeight = null == containerProps.node ? void 0 : containerProps.node.style.minHeight\n containerProps.originalHeight = null == containerProps.node ? void 0 : containerProps.node.style.height\n }\n }\n\n const adjustContainer = () => {\n initContainer()\n if (null != containerProps.node) {\n if (0 === insets.size) {\n // revert to original minHeight\n containerProps.node.style.minHeight = containerProps.originalMinHeight\n containerProps.expanded = false\n } else {\n // get insets lowest bottom\n let lowestInsetBottom = 0\n insets.forEach(({ margin = 0, height }, inset) => {\n const insetRect = inset.getBoundingClientRect()\n const insetBottom = ('number' === typeof height ? insetRect.top + height : insetRect.bottom) + margin\n if (insetBottom > lowestInsetBottom) {\n lowestInsetBottom = insetBottom\n }\n })\n // set container minHeights\n const { top: containerTop } = containerProps.node.getBoundingClientRect()\n containerProps.node.style.minHeight = `${lowestInsetBottom - containerTop}px`\n containerProps.expanded = true\n }\n }\n }\n\n const expandContainerAPI = {\n get expanded() {\n return containerProps.expanded\n },\n expand(inset, { margin = defaultMargin, height } = {}) {\n const insetNode = getNode(inset)\n if (null != insetNode) {\n insets.set(insetNode, { margin, height })\n adjustContainer()\n }\n return () => expandContainerAPI.unexpand(inset)\n },\n unexpand(inset) {\n const insetNode = getNode(inset)\n if (null != insetNode) {\n insets.delete(insetNode)\n adjustContainer()\n return true\n }\n return false\n },\n get containerHeightFreezed() {\n return containerProps.containerHeightFreezed\n },\n freezeContainerHeight({ overflow } = {}) {\n if (!containerProps.containerHeightFreezed) {\n initContainer()\n if (null != containerProps.node) {\n if (overflow) {\n containerProps.originalOverflow = containerProps.node.style.overflow\n containerProps.node.style.overflow = overflow\n }\n const { top, bottom } = containerProps.node.getBoundingClientRect()\n containerProps.node.style.height = `${bottom - top}px`\n containerProps.containerHeightFreezed = true\n return true\n }\n }\n return false\n },\n unfreezeContainerHeight() {\n if (containerProps.containerHeightFreezed && null != containerProps.node) {\n containerProps.node.style.overflow = containerProps.originalOverflow\n containerProps.node.style.height = containerProps.originalHeight\n containerProps.containerHeightFreezed = false\n return true\n }\n return false\n }\n }\n\n return expandContainerAPI\n}\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport { fromEvent as ObservableFromEvent } from 'rxjs'\nimport { mergeMap as rxMergeMap, map as rxMap, takeUntil as rxTakeUntil } from 'rxjs/operators'\n\n// components\nimport { DOMElementRect } from '@aytm/lib/common/func'\n\nimport Portal from '@aytm/lib/rfd-ui/components/basic/portal'\nimport ColorPicker from 'lib/rfd-ui/components/advanced/color-picker'\n\n// styles\nimport '@aytm/lib/rfd-ui/styles/advanced/color-picker.scss'\n\nclass ColorPickerPopup extends Component {\n static propTypes = {\n target: PropTypes.any,\n color: PropTypes.string.isRequired,\n offsetTop: PropTypes.number,\n offsetLeft: PropTypes.number,\n container: PropTypes.any,\n readOnly: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n onClose: PropTypes.func\n }\n\n popup = null\n\n @autobind\n dragModal() {\n if (!this.popup) return\n\n const { container } = this.props\n const popup = this.popup\n const popupHeader = popup.querySelector('.rfd-ui-popup-header')\n\n if (popup && popupHeader) {\n const mouseup = ObservableFromEvent(document, 'mouseup')\n const mousemove = ObservableFromEvent(document, 'mousemove')\n const mousedown = ObservableFromEvent(popupHeader, 'mousedown')\n\n const mousedrag = mousedown.pipe(\n rxMergeMap(function (md) {\n // calculate start positions of modal window and cursor\n const popupRect = DOMElementRect(popup)\n\n const startX = md.clientX\n const startY = md.clientY\n\n // calculate delta with mousemove until mouseup\n return mousemove.pipe(\n rxMap(function (mm) {\n mm.preventDefault()\n let top = popupRect.top + mm.clientY - startY\n let left = popupRect.left + mm.clientX - startX\n if (container) {\n const containerRect = DOMElementRect(container)\n top = Math.min(containerRect.height - popupRect.height, Math.max(0, top))\n left = Math.min(containerRect.width - popupRect.width, Math.max(0, left))\n }\n return {\n top,\n left\n }\n }),\n rxTakeUntil(mouseup)\n )\n })\n )\n\n // update position\n this.subscription = mousedrag.subscribe(pos => {\n // TODO\n this.popup.style.top = `${pos.top}px`\n this.popup.style.left = `${pos.left}px`\n })\n\n const { target } = this.props\n if (target) {\n const { offsetTop, offsetLeft } = this.props\n const targetRect = DOMElementRect(target)\n const popupRect = DOMElementRect(popup)\n let top = targetRect.top + (offsetTop ? offsetTop : targetRect.height)\n let left = targetRect.left + (offsetLeft ? offsetLeft : targetRect.width)\n if (container) {\n const containerRect = DOMElementRect(container)\n top = Math.min(containerRect.height - popupRect.height, Math.max(0, top))\n left = Math.min(containerRect.width - popupRect.width, Math.max(0, left))\n }\n this.popup.style.top = `${top}px`\n this.popup.style.left = `${left}px`\n }\n }\n }\n\n @autobind\n closePopup() {\n const { onClose } = this.props\n if (onClose) {\n onClose()\n }\n }\n\n componentDidMount() {\n setTimeout(() => {\n this.dragModal()\n }, 0)\n }\n\n componentWillUnmount() {\n if (this.subscription) this.subscription.unsubscribe()\n }\n\n render() {\n const { color, readOnly, onChange } = this.props\n\n return (\n <Portal>\n <div\n className={'rfd-ui-popup rfd-ui-colorpicker-popup'}\n ref={div => {\n this.popup = div\n }}\n >\n <div className={'rfd-ui-popup-header'}>\n Color Picker\n <div className={'rfd-ui-popup-close-button'} onClick={this.closePopup}>\n <i className=\"icon-aytmfd-close\" />\n </div>\n </div>\n <div className={'rfd-ui-popup-content'}>\n <ColorPicker color={color} readOnly={readOnly} onChange={onChange} />\n </div>\n </div>\n </Portal>\n )\n }\n}\n\nexport default ColorPickerPopup\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport { CustomPicker } from 'react-color'\nimport colorHelper from 'react-color/lib/helpers/color'\nimport { EditableInput, Saturation, Hue } from 'react-color/lib/components/common/'\n\n// components\nimport ManagedRenderComponent from '@aytm/lib/common/components/ManagedRenderComponent'\n\n// styles\nimport '@aytm/lib/rfd-ui/styles/advanced/color-picker.scss'\n\nexport class PointerSaturation extends ManagedRenderComponent {\n render() {\n return <div className={'rfd-ui-colorpicker-pointerSaturation'} />\n }\n}\n\nexport class PointerHue extends ManagedRenderComponent {\n render() {\n return (\n <div className={'rfd-ui-colorpicker-pointerHue'}>\n <div className={'rfd-ui-colorpicker-pointerHue-dots'} />\n <div className={'rfd-ui-colorpicker-pointerHue-arrow'} />\n </div>\n )\n }\n}\n\nclass ColorPicker extends Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n readOnly: PropTypes.bool,\n onChange: PropTypes.func.isRequired\n }\n\n @autobind\n onInputChange(value) {\n const { onChange } = this.props\n if (value.hex) {\n colorHelper.isValidHex(value.hex) && onChange(value)\n }\n }\n\n render() {\n const { color, readOnly, onChange } = this.props\n\n return (\n <div className={'rfd-ui-colorpicker'}>\n <div className={`rfd-ui-colorpicker-field ${readOnly ? 'rfd-ui-colorpicker-disabled' : ''}`}>\n <EditableInput\n {...this.props}\n label=\"hex\"\n value={color.toUpperCase()}\n onChange={readOnly ? null : this.onInputChange}\n />\n </div>\n <div className={`rfd-ui-colorpicker-settings ${readOnly ? 'rfd-ui-colorpicker-disabled' : ''}`}>\n <div className={'rfd-ui-colorpicker-saturation'}>\n <Saturation {...this.props} onChange={readOnly ? null : onChange} pointer={PointerSaturation} />\n </div>\n <div className={'rfd-ui-colorpicker-hue'}>\n <Hue {...this.props} direction=\"vertical\" onChange={readOnly ? null : onChange} pointer={PointerHue} />\n </div>\n </div>\n </div>\n )\n }\n}\n\nexport default CustomPicker(ColorPicker)\n","// lib\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { Map, List } from 'immutable'\nimport { capitalize } from '@aytm/lib/common/func'\n\n// resources\nimport { getFeatureUpgradePackage } from '@aytm/app/survey/editor/resources/features'\n\n// components\nimport { CompositeDecorator } from 'draft-js'\nimport Popup, { PopupCloseButton } from '@aytm/lib/rfd-ui/components/basic/popup'\n\n// styles\nimport style from '@aytm/lib/rfd-ui/styles/advanced/draft-js-decorators.module.scss'\n\n// constants\nexport const ERROR_TYPES = {\n ref: {\n text: 'questionDoesntExist',\n type: 'warning',\n color: '#F7931E',\n style: style.textWarning\n },\n alias: {\n text: 'aliasError',\n type: 'warning',\n color: '#F7931E',\n style: style.textWarning\n },\n cluster: {\n text: 'clusterDoesntExist',\n type: 'warning',\n color: '#F7931E',\n style: style.textWarning\n },\n trait: {\n text: 'traitDoesntExist',\n type: 'error',\n color: '#9D0000',\n style: style.textError\n },\n sref: {\n text: 'serverReferenceError',\n type: 'warning',\n color: '#F7931E',\n style: style.textWarning\n },\n parse: {\n text: 'notValidRule',\n type: 'error',\n color: '#9D0000',\n style: style.textError\n },\n aytm_logic_required: {\n text: 'upgradeRequiredText',\n type: 'warning',\n color: '#F7931E',\n style: style.textWarning\n },\n old: {\n text: 'referenceIsOutdated',\n type: 'warning-special',\n color: '#d05817',\n style: style.textOld\n },\n invalid_logic: {\n color: '#9D0000',\n text: 'notValidRule',\n type: 'error',\n style: style.textError\n },\n old_translate: {\n color: '#17d0d0',\n text: 'oldTranslate',\n type: 'error',\n style: style.textOld\n }\n}\nconst templateVariablesRegex = /{([A-Z_a-z]*)}/g\n\n// <Component />\nclass HintPopup extends React.Component {\n static propTypes = {\n locale: PropTypes.instanceOf(Map).isRequired,\n errors: PropTypes.instanceOf(List),\n textProps: PropTypes.any,\n errorTypes: PropTypes.object,\n updateOldRefs: PropTypes.func,\n disableValidation: PropTypes.func\n }\n\n shouldComponentUpdate(nextProps) {\n return (\n nextProps.locale != this.props.locale ||\n nextProps.errors != this.props.errors ||\n nextProps.textProps != this.props.textProps\n )\n }\n\n render() {\n const { locale, errors, errorTypes = ERROR_TYPES, textProps, updateOldRefs, disableValidation } = this.props\n const errorText = textProps.children[0].props.text\n\n if (!errors) {\n return textProps.children\n }\n\n const errorObj = extractErrorObject(errors, errorText)\n const errorType = errorObj ? errorObj.get('type') : 'parse'\n const errorTypeText = extractErrorTypeText(locale, errorObj, errorType, errorTypes)\n\n // console.log('🌞 HintPopup.props', { locale, errors, errorTypes, textProps, updateOldRefs, disableValidation })\n // console.log('🌞 HintPopup', { errorObj, errorType, errorTypeText })\n\n return errorTypes[errorType] ? (\n <Popup\n portal={true}\n width=\"260px\"\n trigger=\"hover\"\n renderRef={errorText}\n content={() => (\n <div className={style.content}>\n <PopupCloseButton>\n <i className=\"icon-aytmfd-close\" />\n </PopupCloseButton>\n <div>\n {'aytm_logic_required' === errorType ? (\n <span className={style.popupContent}>{errorTypeText}</span>\n ) : (\n <span className={style.popupContent} dangerouslySetInnerHTML={{ __html: errorTypeText }} />\n )}\n {'old' === errorType && (\n <span>\n <br />\n <br />\n <a onClick={() => updateOldRefs(errorObj)}>{locale.get('okHere')}</a>\n | \n <a onClick={() => updateOldRefs(errorObj, true)}>{locale.get('okHereAndElsewhere')}</a>\n </span>\n )}\n {'old_translate' === errorType && (\n <span className={style.oldTranslate}>\n <br />\n <br />\n <a onClick={() => disableValidation(errorObj)}>{locale.get('okHere')}</a>\n | \n <a onClick={() => disableValidation(errorObj, true)}>{locale.get('okHereAndOtherLanguages')}</a>\n </span>\n )}\n </div>\n </div>\n )}\n className={`rfd-ui-popup-notification rfd-ui-popup-notification-${errorTypes[errorType]?.type}`}\n direction=\"topleft\"\n >\n <span className={errorTypes[errorType].style}>{textProps.children}</span>\n </Popup>\n ) : (\n <span>{textProps.children}</span>\n )\n }\n}\n\nfunction extractErrorObject(errors, errorText) {\n return errors.find(error => {\n const text = error.get('text')\n const type = error.get('type')\n if (!text) {\n return false\n }\n if ('old_translate' === type) {\n return true\n }\n\n const errorTextCI = errorText.toUpperCase()\n const errorTextTrimmed = errorTextCI.trim()\n const normalizedText = text\n .replace(/</gi, '<')\n .replace(/>/gi, '>')\n .replace(/&/gi, '&')\n .toUpperCase()\n .toUpperCase()\n const normalizedTextTrimmed = normalizedText.trim()\n\n if (normalizedTextTrimmed == errorTextTrimmed) {\n return true\n }\n\n return 'parse' === type\n ? '[' + normalizedText + ']' === errorText.toUpperCase()\n : 'cluster' === type\n ? '\"' + normalizedText + '\"' === errorText.toUpperCase() || \"'\" + normalizedText + \"'\" === errorText.toUpperCase()\n : false\n })\n}\nfunction extractErrorHint(errorObj, errorKey) {\n return errorObj\n ? 0 <= ['index', 'rule'].indexOf(errorKey)\n ? `${errorObj.get('text')}${errorObj.get('subText') ? ` (${errorObj.get('subText')})` : ''}`\n : errorObj.get(errorKey)\n : ''\n}\nfunction extractErrorTypeText(locale, errorObj, errorType, errorTypes = ERROR_TYPES) {\n const errorString =\n (errorObj && errorObj.get('desc')) || locale.get(errorTypes[errorType].text) || locale.get('notValidRule')\n\n if ('aytm_logic_required' === errorType) {\n const upgradePackage = getFeatureUpgradePackage('main', 'aytm_logic') || Map()\n const packageName = capitalize(upgradePackage.get('name', '*upgrade package name*'))\n const packageURL = upgradePackage.get('upgradeURL', '*upgrade url*')\n return (\n <div className={style.errorText}>\n {upgradePackage && (\n <a href={packageURL} title={packageName} target=\"_blank\" rel=\"noreferrer\">\n <i className={`icon-aytmfd-${packageName.toLowerCase()}`} />\n </a>\n )}\n <span\n dangerouslySetInnerHTML={{\n __html: errorString.replace('{packageName}', packageName).replace('{upgradeURL}', packageURL)\n }}\n />\n </div>\n )\n } else {\n const replacements = {}\n let matchArr\n while (null !== (matchArr = templateVariablesRegex.exec(errorString))) {\n replacements[matchArr[0]] = extractErrorHint(errorObj, matchArr[1])\n }\n return Object.keys(replacements)\n .reduce((str, key) => str.replace(new RegExp(key, 'g'), replacements[key].toUpperCase()), errorString)\n .replace(/</gi, '<')\n .replace(/>/gi, '>')\n }\n}\n\nconst createErrorsDecoratorComponent = (store, errorTypes = ERROR_TYPES) => {\n const ErrorsDecoratorComponent = props => {\n const errors = store.getErrors()\n return errors ? (\n <HintPopup\n locale={store.getLocale()}\n errors={errors}\n textProps={props}\n errorTypes={errorTypes}\n updateOldRefs={store.updateOldRefs}\n disableValidation={store.disableValidation}\n />\n ) : (\n <span>{props.children}</span>\n )\n }\n\n ErrorsDecoratorComponent.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n }\n\n return ErrorsDecoratorComponent\n}\n\nconst createErrorsDecoratorStrategy = (store, errorTypes) => (contentBlock, callback) => {\n const text =\n 'function' === typeof store.strategy.processText\n ? store.strategy.processText(contentBlock.getText())\n : contentBlock.getText()\n\n if (!text) {\n return\n }\n const errorTypeFilter = store.strategy.errorTypes?.length\n ? error => -1 !== store.strategy.errorTypes.indexOf(error.get('type'))\n : errorTypes\n ? error => errorTypes[error.get('type')]\n : _ => true\n\n const errors = (store.getErrors() || [])\n .filter(error => error.get('text') && errorTypeFilter(error))\n .sort((a, b) => b.get('text').length - a.get('text').length)\n\n if (!errors || !errors.size) {\n return\n }\n\n if ('function' === typeof store.strategy.detectError) {\n errors.forEach(error => {\n try {\n store.strategy.detectError(errors, error, text, callback)\n } catch (error) {\n // eslint-disable-next-line no-console\n console.log(error)\n }\n })\n }\n\n if ('function' === typeof store.strategy.detectErrors) {\n store.strategy.detectErrors(errors, text, callback)\n }\n}\n\nconst ErrorsDecoratorFactory = (store, errorTypes) =>\n new CompositeDecorator([\n {\n component: createErrorsDecoratorComponent(store, errorTypes),\n strategy: createErrorsDecoratorStrategy(store, errorTypes)\n }\n ])\n\nexport default ErrorsDecoratorFactory\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport styles from '@aytm/lib/rfd-ui/styles/SuggestionsComponent.module.scss'\n\nconst SuggestionItem = ({ suggestion, index, selectedIndex, selectSuggestion }) => (\n <div\n onMouseDown={event => {\n event.preventDefault()\n selectSuggestion(suggestion)\n }}\n id={'suggestion-item-' + index}\n className={classNames(styles.item, {\n [styles['item--active']]: index === selectedIndex\n })}\n >\n <div className={styles['content']}>\n <div className={styles['content-text']}>\n <strong>{suggestion.label}</strong>\n </div>\n </div>\n </div>\n)\n\nSuggestionItem.propTypes = {\n index: PropTypes.number,\n suggestion: PropTypes.object,\n selectSuggestion: PropTypes.func,\n selectedIndex: PropTypes.number\n}\n\nexport default SuggestionItem\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport Portal from '@aytm/lib/rfd-ui/components/basic/portal'\nimport styles from '@aytm/lib/rfd-ui/styles/SuggestionsComponent.module.scss'\nimport getSelectionCoords from '@aytm/lib/rfd-ui/components/advanced/lib/draft-js/suggestionsPlugin/lib/get-selection-coords'\nimport SuggestionItem from '@aytm/lib/rfd-ui/components/advanced/lib/draft-js/suggestionsPlugin/components/SuggestionItem'\n\nconst KEY_UP = 'ArrowUp'\nconst KEY_DOWN = 'ArrowDown'\nconst KEY_ENTER = 'Enter'\nconst KEY_PAGE_UP = 'PageUp'\nconst KEY_PAGE_DOWN = 'PageDown'\n\nconst DROPDOWN_OFFSET_X_DEFAULT = 10\nconst DROPDOWN_OFFSET_Y = 24\n\nexport default class SuggestionsComponent extends React.PureComponent {\n static propTypes = {\n items: PropTypes.array,\n selectSuggestion: PropTypes.func,\n SuggestionsItemComponent: PropTypes.node,\n visibility: PropTypes.bool\n }\n\n constructor(props) {\n super(props)\n const { items = [], visibility } = props\n this.refItems = React.createRef()\n this.timeoutId = null\n this.state = {\n selectedIndex: 0,\n portalStyles: this.calculatePortalStyles(items, props),\n items,\n visibility,\n pageX: 0,\n pageY: 0\n }\n }\n\n // @NOTICE: method for external usage\n @autobind\n updateItems(items, visibility) {\n const preselectedIndex = items.map(({ selected }) => selected).indexOf(true)\n const index = -1 === preselectedIndex ? 0 : preselectedIndex\n\n this.setState({ selectedIndex: index, items, visibility }, () => {\n this.timeoutId = setTimeout(() => {\n this.scrollToItem({ index, force: true })\n this.updatePosition(items)\n this.timeoutId = null\n\n clearTimeout(this.timeoutId)\n })\n })\n }\n\n // @NOTICE: method for external usage\n @autobind\n updatePosition() {\n setTimeout(() => {\n this.setState({\n portalStyles: this.calculatePortalStyles(this.state.items, this.props)\n })\n })\n }\n\n @autobind\n calculateDropdownOffsetTop() {\n return DROPDOWN_OFFSET_Y\n }\n\n @autobind\n extractDropdownOffsetText(items) {\n return items && items[0] && items[0].offsetText\n }\n\n @autobind\n calculateDropdownTextOffsetLeft(items, cursorTextStyle) {\n const offsetText = this.extractDropdownOffsetText(items)\n\n if (offsetText && cursorTextStyle) {\n const element = document.createElement('div')\n\n element.textContent = offsetText.replace(' ', '\\u00A0')\n element.style.font = cursorTextStyle\n element.style.position = 'absolute'\n element.style.visibility = 'hidden'\n element.style.opacity = '0'\n element.style.zIndex = -1\n\n document.body.appendChild(element)\n\n const rects = element.getClientRects()\n\n document.body.removeChild(element)\n\n if (rects && rects[0] && rects[0].width) {\n return Math.ceil(rects[0].width)\n }\n }\n return 0\n }\n\n @autobind\n calculateDropdownOffsetLeft({ items, itemsElementRects, selectionCoords, props }) {\n const itemsWidth = itemsElementRects[0].width\n const textOffsetLeft = this.calculateDropdownTextOffsetLeft(items, props.cursorTextStyle)\n const offset = selectionCoords.x + itemsWidth - DROPDOWN_OFFSET_X_DEFAULT\n\n return offset < 0 ? offset - textOffsetLeft : -textOffsetLeft\n }\n\n @autobind\n calculatePortalStyles(items = [], props) {\n if (this.refItems.current) {\n const itemsElement = this.refItems.current\n const itemsElementRects = itemsElement.getClientRects()\n\n if (itemsElementRects && itemsElementRects[0]) {\n const selectionCoords = getSelectionCoords()\n const elementOffsetTop = window.scrollY || document.documentElement.scrollTop\n const elementOffsetLeft = window.scrollX || document.documentElement.scrollLeft\n const dropdownOffsetLeft = this.calculateDropdownOffsetLeft({\n items,\n itemsElementRects,\n selectionCoords,\n props\n })\n const dropdownOffsetTop = this.calculateDropdownOffsetTop()\n\n return {\n top: Math.floor(selectionCoords.y + dropdownOffsetTop + elementOffsetTop),\n left: Math.floor(selectionCoords.x + elementOffsetLeft + dropdownOffsetLeft)\n }\n }\n }\n\n return {\n visibility: 'hidden',\n x: 0,\n y: 0\n }\n }\n\n @autobind\n calculateItemIndexByHeightLimit(heightLimit) {\n const items = this.state.items\n\n if (!items || !items.length) {\n return 0\n }\n\n let index = 0\n let height = 0\n\n while (index < items.length && height < heightLimit) {\n const element = document.querySelector(`#suggestion-item-${index}`)\n\n height += element.clientHeight\n index++\n }\n\n return index\n }\n\n @autobind\n calculatePageDownItemIndex() {\n const itemsElement = this.refItems.current\n const heightLimit = itemsElement.scrollTop + itemsElement.clientHeight\n\n if (!itemsElement) {\n return 0\n }\n\n return this.calculateItemIndexByHeightLimit(heightLimit)\n }\n\n @autobind\n calculatePageUpItemIndex() {\n const itemsElement = this.refItems.current\n const heightLimit = itemsElement.scrollTop - itemsElement.clientHeight\n\n if (!itemsElement) {\n return 0\n }\n\n return this.calculateItemIndexByHeightLimit(Math.max(0, heightLimit))\n }\n\n @autobind\n createSuggestionMouseHandler(selectedIndex) {\n return event => {\n const { pageX, pageY } = event\n const { selectedIndex: prevSelectedIndex, pageX: prevPageX, pageY: prevPageY } = this.state\n if (prevPageX !== pageX && prevPageY !== pageY) {\n if (prevSelectedIndex !== selectedIndex) {\n this.setState({ pageX, pageY, selectedIndex })\n } else {\n this.setState({ pageX, pageY })\n }\n }\n }\n }\n\n componentDidUpdate(_, prevState) {\n if (prevState.visibility !== this.state.visibility) {\n if (this.state.visibility) {\n window.addEventListener('keydown', this.handleKeyDown)\n } else {\n window.removeEventListener('keydown', this.handleKeyDown)\n }\n }\n }\n\n componentDidMount() {\n if (this.state.visibility) {\n window.addEventListener('keydown', this.handleKeyDown)\n }\n }\n\n componentWillUnmount() {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId)\n }\n window.removeEventListener('keydown', this.handleKeyDown, true)\n }\n\n @autobind\n scrollToItem({ index, force = false } = {}) {\n const { items, selectedIndex } = this.state\n const itemIndex = Math.max(0, Math.min(items.length - 1, index))\n const itemElement = document.querySelector(`#suggestion-item-${itemIndex}`)\n const itemsElement = this.refItems.current\n\n if (selectedIndex === itemIndex || !itemElement || !itemsElement) {\n return\n }\n\n this.setState({ selectedIndex: itemIndex }, () => {\n const itemOffsetTop = itemElement.offsetTop\n if (force) {\n this.refItems.current.scrollTop = itemOffsetTop\n } else {\n if (itemsElement.scrollTop >= itemOffsetTop) {\n this.refItems.current.scrollTop = itemOffsetTop\n }\n if (itemsElement.scrollTop + itemsElement.clientHeight <= itemOffsetTop + itemElement.clientHeight) {\n this.refItems.current.scrollTop = itemOffsetTop - itemsElement.clientHeight + itemElement.clientHeight\n }\n }\n })\n }\n\n @autobind\n handleKeyDown(event) {\n const { selectedIndex, items } = this.state\n if (event.key === KEY_UP) {\n this.scrollToItem({ index: selectedIndex - 1 })\n if (selectedIndex > 0) {\n event.preventDefault()\n }\n }\n if (event.key === KEY_DOWN) {\n this.scrollToItem({ index: selectedIndex + 1 })\n if (selectedIndex < items.length - 1) {\n event.preventDefault()\n }\n }\n if (event.key === KEY_PAGE_UP) {\n this.scrollToItem({ index: this.calculatePageUpItemIndex(), force: true })\n event.preventDefault()\n }\n if (event.key === KEY_PAGE_DOWN) {\n this.scrollToItem({ index: this.calculatePageDownItemIndex(), force: true })\n event.preventDefault()\n }\n if (event.key === KEY_ENTER && items[selectedIndex]) {\n this.selectSuggestion(items[selectedIndex])\n event.preventDefault()\n }\n }\n\n @autobind\n renderDropdown() {\n return (\n <div className={styles.items} ref={this.refItems}>\n {this.state.items.map((suggestion, index) => (\n <div\n key={index}\n onMouseMove={this.createSuggestionMouseHandler(index)}\n onMouseEnter={this.createSuggestionMouseHandler(index)}\n >\n <SuggestionItem\n index={index}\n selectSuggestion={this.selectSuggestion}\n selectedIndex={this.state.selectedIndex}\n suggestion={suggestion}\n />\n </div>\n ))}\n </div>\n )\n }\n\n @autobind\n selectSuggestion(suggestion) {\n const { selectSuggestion } = this.props\n\n selectSuggestion(suggestion)\n }\n\n render() {\n const { visibility, portalStyles } = this.state\n\n if (!visibility) {\n return null\n }\n\n return (\n <Portal portalId={'suggestions-items'}>\n <div className={styles.portal} style={portalStyles}>\n <div className={styles.dropdown}>{this.renderDropdown()}</div>\n </div>\n </Portal>\n )\n }\n}\n","const defaultProcessText = text => {\n const trimmed = text.replace(/(^ +)|( +$)/, '')\n\n const firstWordMatch = trimmed.match(/^(\\W+)(\\w+)|^(\\w+)/i)\n const lastWordMatch = trimmed.match(/(\\w+)(\\W+)$|(\\w+)$/i)\n\n const lastWord = lastWordMatch ? lastWordMatch[2] || lastWordMatch[3] : ''\n const firstWord = firstWordMatch ? firstWordMatch[2] || firstWordMatch[3] : ''\n\n const withoutFirstWord = firstWordMatch ? trimmed.slice(firstWordMatch[0].length).trim() : ''\n const withoutLastWord = lastWordMatch\n ? trimmed.slice(0, Math.max(0, trimmed.length - lastWordMatch[0].length)).trim()\n : ''\n\n return {\n text,\n trimmed,\n firstWord,\n firstWordCI: firstWord.toLowerCase(),\n lastWord,\n lastWordCI: lastWord.toLowerCase(),\n withoutFirstWord,\n withoutFirstWordCI: withoutFirstWord.toLowerCase(),\n withoutLastWord,\n withoutLastWordCI: withoutLastWord.toLowerCase(),\n lower: trimmed.toLowerCase(),\n upper: trimmed.toUpperCase(),\n endsWith: { letter: !/\\s$/g.test(text) },\n startsWithLetter: !/^\\s/g.test(text)\n }\n}\n\nexport default defaultProcessText\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { CompositeDecorator } from 'draft-js'\n\nimport { List } from 'immutable'\n\nconst Span = props => <span>{props.children}</span>\n\nSpan.propTypes = {\n children: PropTypes.oneOfType([PropTypes.array.isRequired, PropTypes.object.isRequired])\n}\n\nexport default class CompoundDecorator {\n constructor(decorators = []) {\n this.decorators = decorators.map(decorator =>\n decorator.strategy && decorator.component ? new CompositeDecorator([decorator]) : decorator\n )\n }\n\n getDecorations(block, contentState) {\n const emptyTuples = Array.from({ length: block.getText().length }).fill(\n Array.from({ length: this.decorators.length }).fill(null)\n )\n const decorations = this.decorators.reduce((tuples, decorator, index) => {\n const blockDecorations = decorator.getDecorations(block, contentState)\n\n return tuples.map((tuple, tupleIndex) => [\n ...tuple.slice(0, index),\n blockDecorations.get(tupleIndex),\n ...tuple.slice(index + 1)\n ])\n }, emptyTuples)\n\n return List(decorations.map(JSON.stringify))\n }\n\n getComponentForKey(key) {\n const tuple = JSON.parse(key)\n // eslint-disable-next-line react/display-name\n return props => {\n // eslint-disable-next-line react/prop-types\n const { decoratorProps, children, ...compositionProps } = props\n const Composed = tuple.reduce((Composition, decoration, index) => {\n if (decoration !== null) {\n const decorator = this.decorators[index]\n const Component = decorator.getComponentForKey(decoration)\n const componentProps = {\n ...compositionProps,\n ...decoratorProps[index]\n }\n // eslint-disable-next-line react/display-name\n return () => (\n <Component {...componentProps}>\n <Composition {...compositionProps} />\n </Component>\n )\n }\n return Composition\n }, Span)\n return <Composed>{children}</Composed>\n }\n }\n\n getPropsForKey(key) {\n const tuple = JSON.parse(key)\n return {\n decoratorProps: tuple.map((decoration, index) => {\n const decorator = this.decorators[index]\n return decoration !== null ? decorator.getPropsForKey(decoration) : {}\n })\n }\n }\n}\n","// lib\nimport React from 'react'\nimport { List } from 'immutable'\nimport { toArray as rxToArray } from 'rxjs/operators'\nimport { EditorState, ContentState, CharacterMetadata, SelectionState, Modifier, ContentBlock, genKey } from 'draft-js'\nimport { KEYCODE_UP, KEYCODE_DOWN, KEYCODE_ESC, KEYCODE_ENTER } from '@aytm/lib/common/const'\n\nimport suggestionsBuilder from './suggestions-builder'\nimport defaultProcessText from './lib/default-process-text'\nimport CompoundDecorator from './decorators/compound-decorator'\nimport DefaultSuggestionsComponent from './components/Suggestions'\n\nconst createDefaultSuggestions = () => {\n return {\n isActive: false,\n doneFetching: false,\n selection: null,\n items: []\n }\n}\n\nconst preFillSuggestions = selection => {\n return {\n isActive: true,\n doneFetching: false,\n items: [],\n selection\n }\n}\n\nconst countLines = text => {\n const matchNewlines = text.match(/\\n/g)\n return matchNewlines ? matchNewlines.length : 1\n}\n\nexport const extractSelectionOffsets = editorState => {\n const selectionState = editorState.getSelection()\n\n const anchorKey = selectionState.getAnchorKey()\n const focusKey = selectionState.getFocusKey()\n const blockMap = editorState.getCurrentContent().getBlockMap()\n\n if (!blockMap.has(focusKey)) {\n return null\n }\n\n let startOffset = 0\n let endOffset = 0\n\n blockMap.skipWhile((contentBlock, key) => {\n if (key === anchorKey) {\n startOffset += selectionState.getAnchorOffset()\n return false\n }\n // textBefore.push(contentBlock.getText())\n startOffset += contentBlock.getText().length + 1\n return true\n })\n\n blockMap.skipWhile((contentBlock, key) => {\n if (key === focusKey) {\n endOffset += selectionState.getFocusOffset()\n return false\n }\n endOffset += contentBlock.getText().length + 1\n return true\n })\n\n return { startOffset, endOffset }\n}\n\nconst getSuggestionsStub = () => {\n return {}\n}\nconst createSuggestionsPlugin = (\n pluginStore,\n { customProcessText, extractSelection, suggestionsBuilders = [], SuggestionsComponent }\n) => {\n const ref = React.createRef()\n const store = {\n getEditorState: null,\n setEditorState: null,\n subscription: null,\n suggestions: createDefaultSuggestions()\n }\n\n const getSuggestionsData = (beforeCursor, afterCursor) =>\n 'function' === typeof pluginStore.getSuggestionsData\n ? pluginStore.getSuggestionsData(beforeCursor, afterCursor)\n : getSuggestionsStub\n\n const processText = 'function' === typeof customProcessText ? customProcessText : defaultProcessText\n\n const checkAutocompleteIsVisible = () =>\n Boolean(\n store.suggestions.isActive &&\n store.suggestions.items &&\n store.suggestions.items.length &&\n store.suggestions.doneFetching\n )\n const handleWhenIsActive = () => (store.suggestions.isActive ? 'handled' : 'not-handled')\n\n const updateSuggestionsComponentItems = () => {\n ref.current && ref.current.updateItems(store.suggestions.items, checkAutocompleteIsVisible())\n }\n\n const selectSuggestion = ({ textBefore, textAfter }) => {\n const {\n suggestions: { selection }\n } = store\n const editorState = store.getEditorState()\n const contentState = editorState.getCurrentContent()\n const plainText = contentState.getPlainText()\n\n const newPlainTextBefore = plainText.slice(0, selection.range.start) + textBefore\n const newPlainTextAfter = textAfter + plainText.slice(selection.range.end + selection.text.afterCursor.length)\n\n const newPlainText =\n countLines(plainText) != countLines(newPlainTextBefore + newPlainTextAfter)\n ? newPlainTextBefore + '\\n' + newPlainTextAfter\n : newPlainTextBefore + newPlainTextAfter\n\n const charsStyles = []\n\n contentState\n .getBlocksAsArray()\n .forEach(block =>\n block.getCharacterList().forEach(charMetaData => charsStyles.push(charMetaData.getStyle().toJS()))\n )\n\n const newCharsStyles = charsStyles\n .slice(0, selection.range.start)\n .concat(\n Array.from({ length: textBefore.length + textAfter.length }).fill([]),\n charsStyles.slice(selection.range.end + selection.text.afterCursor.length)\n )\n\n const characterList = List(Array.from({ length: newPlainText.length }).map(() => CharacterMetadata.create()))\n const newContentBlock = new ContentBlock({\n key: genKey(),\n text: newPlainText,\n characterList,\n type: 'unstyled',\n depth: 0\n })\n const newContentState = ContentState.createFromBlockArray([newContentBlock])\n const newEditorState = EditorState.push(editorState, newContentState, 'insert-characters')\n\n const newCurrentContent = newEditorState.getCurrentContent()\n const newBlockArray = newCurrentContent.getBlocksAsArray()\n\n let cursorOffset = newPlainTextBefore.length\n let newAnchorKey\n\n while (newBlockArray.length) {\n const contentBlock = newBlockArray.shift()\n const text = contentBlock.getText()\n\n if (cursorOffset > text.length) {\n cursorOffset -= text.length + (text.match(/\\r?\\n/g) || '').length + 1\n } else {\n newAnchorKey = contentBlock.key\n break\n }\n }\n\n let styledCurrentContent = newCurrentContent\n let blockCursor = 0\n\n // applying inline styles to newCurrentContent\n newContentState.getBlocksAsArray().forEach(block => {\n let characterCursor = 0\n\n block.getCharacterList().forEach(_ => {\n const styles = newCharsStyles[blockCursor + characterCursor]\n if (styles && styles.length) {\n styles.forEach(\n inlineStyle =>\n (styledCurrentContent = Modifier.applyInlineStyle(\n styledCurrentContent,\n SelectionState.createEmpty(block.getKey()).merge({\n anchorOffset: characterCursor,\n focusOffset: characterCursor + 1\n }),\n inlineStyle\n ))\n )\n }\n characterCursor++\n })\n\n blockCursor += characterCursor\n })\n\n const styledEditorState = EditorState.createWithContent(styledCurrentContent, editorState.getDecorator())\n const styledSelectionState = newEditorState.getSelection().merge({\n anchorKey: newAnchorKey,\n focusKey: newAnchorKey,\n anchorOffset: cursorOffset,\n focusOffset: cursorOffset\n })\n\n store.setEditorState(EditorState.forceSelection(styledEditorState, styledSelectionState))\n }\n\n const createSuggestions = (selection, callback) => {\n // @TODO: refactor. make async with rx buffer\n const {\n text: { beforeCursor, afterCursor, meta }\n } = selection\n const suggestionsData = getSuggestionsData(beforeCursor, afterCursor)\n const processTextBeforeCursor = processText(beforeCursor, suggestionsData)\n const processTextAfterCursor = processText(afterCursor, suggestionsData)\n\n const suggestionsStream = suggestionsBuilder(suggestionsBuilders, processTextBeforeCursor, processTextAfterCursor, {\n dependencies: suggestionsData,\n meta: meta || {}\n }).pipe(rxToArray())\n\n store.suggestions = preFillSuggestions(selection)\n\n if (store.subscription) {\n store.subscription.unsubscribe()\n store.subscription = null\n }\n\n // async check done\n store.subscription = suggestionsStream.subscribe(\n items => {\n store.suggestions.error = null\n store.suggestions.items = items\n },\n error => {\n store.suggestions.error = error\n store.suggestions.items = []\n callback && callback()\n },\n _done => {\n store.suggestions.doneFetching = true\n callback && callback()\n }\n )\n }\n\n const canAutocompleteBeActive = () =>\n 'function' === typeof pluginStore.canAutocompleteBeActive ? pluginStore.canAutocompleteBeActive() : true\n\n return {\n // eslint-disable-next-line react/display-name\n SuggestionsComponent: class extends React.PureComponent {\n render() {\n const Component = SuggestionsComponent || DefaultSuggestionsComponent\n return (\n <Component\n {...this.props}\n ref={el => {\n this.refComponent = el\n ref.current = el\n }}\n items={store.suggestions.items}\n visibility={checkAutocompleteIsVisible()}\n selectSuggestion={selectSuggestion}\n />\n )\n }\n },\n getCursor: () => {\n const editorState = store.getEditorState()\n const contentState = editorState.getCurrentContent()\n const selectionState = editorState.getSelection()\n\n return {\n text: contentState.getPlainText(),\n selection: {\n start: selectionState.getStartOffset(),\n end: selectionState.getEndOffset()\n }\n }\n },\n initialize: ({ getEditorState, setEditorState }) => {\n store.getEditorState = getEditorState\n store.setEditorState = setEditorState\n },\n decorators: pluginStore.decorators ? [new CompoundDecorator(pluginStore.decorators)] : [],\n handleReturn: handleWhenIsActive,\n keyBindingFn: event => {\n switch (event.which) {\n case KEYCODE_ESC: {\n if (checkAutocompleteIsVisible()) {\n store.suggestions.isActive = false\n updateSuggestionsComponentItems()\n if (event.preventDefault) event.preventDefault()\n if (event.stopPropagation) event.stopPropagation()\n return 'suggestions-close'\n }\n break\n }\n case KEYCODE_ENTER: {\n if (checkAutocompleteIsVisible()) {\n return 'suggestions-select'\n }\n break\n }\n case KEYCODE_UP:\n case KEYCODE_DOWN: {\n if (checkAutocompleteIsVisible()) {\n return 'suggestions-navigate'\n }\n break\n }\n }\n return void 0\n },\n handleKeyCommand: command => {\n if (checkAutocompleteIsVisible()) {\n switch (command) {\n case 'suggestions-close':\n case 'suggestions-select':\n case 'suggestions-navigate': {\n return 'handled'\n }\n default: {\n return 'not-handled'\n }\n }\n }\n return 'not-handled'\n },\n onChange: editorState => {\n if (!canAutocompleteBeActive()) {\n if (store.suggestions.isActive) {\n store.suggestions = createDefaultSuggestions()\n updateSuggestionsComponentItems()\n }\n\n return editorState\n }\n\n const selectionState = editorState.getSelection()\n\n if (!selectionState.getHasFocus()) {\n if (store.subscription) {\n store.subscription.unsubscribe()\n store.subscription = null\n }\n if (store.suggestions.isActive) {\n store.suggestions = createDefaultSuggestions()\n updateSuggestionsComponentItems()\n }\n\n return editorState\n }\n\n const nextSelection = extractSelection(extractSelectionOffsets(editorState), editorState)\n\n if (nextSelection) {\n createSuggestions(nextSelection, () => {\n updateSuggestionsComponentItems()\n })\n } else if (store.suggestions.isActive) {\n if (store.subscription) {\n store.subscription.unsubscribe()\n store.subscription = null\n }\n\n store.suggestions = createDefaultSuggestions()\n updateSuggestionsComponentItems()\n }\n\n return editorState\n }\n }\n}\n\nexport default createSuggestionsPlugin\n","import { merge as ObservableMerge } from 'rxjs'\nimport { delay as rxDelay, filter as rxFilter } from 'rxjs/operators'\n\nexport default function suggestionsBuilder(builders, textBefore = '', textAfter = '', data = {}) {\n const suppliedIds = []\n return ObservableMerge(...builders.map(builder => builder(textBefore, textAfter, data))).pipe(\n // make async stream\n rxDelay(10),\n // uniq suggestions\n rxFilter(suggestion => {\n if (suggestion && -1 == suppliedIds.indexOf(suggestion.id)) {\n suppliedIds.push(suggestion.id)\n return true\n } else {\n return false\n }\n })\n )\n}\n","const getSelectionCoords = () => {\n if (document.selection) {\n if (document.selection.type != 'Control') {\n const range = document.selection.createRange()\n\n if (range) {\n range.collapse(true)\n\n return {\n x: range.boundingLeft,\n y: range.boundingTop\n }\n }\n }\n } else if (window.getSelection) {\n const selection = window.getSelection()\n\n if (selection.rangeCount) {\n const range = selection.getRangeAt(0).cloneRange()\n\n if (range && range.getClientRects) {\n range.collapse(true)\n\n if (range.getClientRects().length > 0) {\n const rect = range.getClientRects()[0]\n\n return {\n x: rect.left,\n y: rect.top\n }\n }\n }\n\n try {\n const span = document.createElement('span')\n\n if (span.getClientRects) {\n span.appendChild(document.createTextNode('\\u200B'))\n range.insertNode(span)\n\n const spanParent = span.parentNode\n const rect = span.getClientRects()[0]\n const x = rect.left\n const y = rect.top\n\n spanParent.removeChild(span)\n spanParent.normalize()\n\n return { x, y }\n }\n } catch {\n return {\n x: 0,\n y: 0\n }\n }\n }\n }\n\n return {\n x: 0,\n y: 0\n }\n}\n\nexport default getSelectionCoords\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport autobind from 'autobind-decorator'\nimport { PureDataComponent } from '@aytm/lib/common/components/pure-component'\n\nimport '@aytm/lib/rfd-ui/styles/advanced/paginator.scss'\n\nexport default class Pagination extends PureDataComponent {\n static propTypes = {\n page: PropTypes.number.isRequired,\n total: PropTypes.number.isRequired,\n prefix: PropTypes.string,\n separator: PropTypes.string,\n disabled: PropTypes.bool,\n onPageChange: PropTypes.func.isRequired\n }\n\n @autobind\n onChange(index) {\n const { total, onPageChange } = this.props\n return null == index || 1 > index || total < index || 'function' != typeof onPageChange\n ? null\n : () => {\n onPageChange(index)\n return false\n }\n }\n\n render() {\n const { page, total, prefix = '', separator = ' of ', disabled } = this.props\n\n return (\n <div className=\"rfd-ui-paginator\">\n {total > 1 && (\n <span>\n <span\n className={classNames('rfd-ui-paginator-el', 'left', {\n disabled: disabled || 1 == page\n })}\n onClick={disabled ? null : this.onChange(page - 1)}\n >\n <i className=\"icon-aytmfd-prev\" />\n </span>\n <span className=\"rfd-ui-paginator-el\">\n {' '}\n {prefix}\n {page + separator + total}{' '}\n </span>\n <span\n className={classNames('rfd-ui-paginator-el', 'right', {\n disabled: disabled || page == total\n })}\n onClick={disabled ? null : this.onChange(page + 1)}\n >\n <i className=\"icon-aytmfd-next\" />\n </span>\n </span>\n )}\n </div>\n )\n }\n}\n","import GeneralVideoAssetUploadJob from '@aytm/lib/AsyncJobManager/jobs/assets/VideoAssetUploadJob'\nimport AsyncJobManager from '@aytm/lib/AsyncJobManager/AsyncJobManager'\n\nexport const VideoAssetUploadManager = AsyncJobManager({ concurrency: 2 })\n\nconst config = {\n createAssetPath: null,\n templateID: null,\n srcSurveyID: null\n}\n\nexport function configure({ createAssetPath, templateID, srcSurveyID } = {}) {\n config.createAssetPath = createAssetPath\n config.templateID = templateID\n config.srcSurveyID = srcSurveyID\n}\n\nexport function VideoAssetUploadJob(file) {\n return config.createAssetPath\n ? GeneralVideoAssetUploadJob({\n createAssetPath: config.createAssetPath,\n file,\n params: { template_id: config.templateID, src_survey_id: config.srcSurveyID }\n })\n : Promise.reject(new Error('VideoAssetUploadManager - createAssetPath not configured'))\n}\n\nexport default function upload(droppedFiles, onProgress) {\n const files = droppedFiles.slice(0, 100) // protect from mass upload\n return new Promise(resolve => {\n const uploadJobs = [...files].map(file => VideoAssetUploadJob(file))\n const fileTotalSizes = files.map(file => file.size || 0)\n const progress = {\n fileTotalSizes,\n fileLoadedSizes: Array.from({ length: files.length }),\n totalSize: fileTotalSizes.reduce((totalSize, fileSize) => totalSize + fileSize, 0),\n loadedSize: 0,\n totalFiles: files.length,\n loadedFiles: 0\n }\n VideoAssetUploadManager.queue(...uploadJobs).then(\n jobResults => {\n resolve(jobResults.map(result => ('done' === result.status ? result.result : null)).filter(x => x))\n },\n null,\n onProgress\n ? (type, fileIndex, loaded, total) => {\n // calculate progress\n switch (type) {\n case 'done': {\n progress.totalFiles = total\n progress.loadedFiles = loaded\n onProgress({\n percents: Math.round((progress.loadedSize * 100) / progress.totalSize),\n totalFiles: progress.totalFiles,\n loadedFiles: progress.loadedFiles,\n totalSize: progress.totalSize,\n loadedSize: progress.loadedSize\n })\n break\n }\n case 'progress': {\n progress.fileLoadedSizes[fileIndex] = loaded\n progress.fileTotalSizes[fileIndex] = total\n progress.totalSize = progress.fileTotalSizes.reduce(\n (fileSize, totalSize) => (totalSize ? fileSize + totalSize : fileSize),\n 0\n )\n progress.loadedSize = progress.fileLoadedSizes.reduce(\n (loadedSize, fileLoadedSize) => (fileLoadedSize ? loadedSize + fileLoadedSize : loadedSize),\n 0\n )\n onProgress({\n percents: Math.round((progress.loadedSize * 100) / progress.totalSize),\n totalFiles: progress.totalFiles,\n loadedFiles: progress.loadedFiles,\n totalSize: progress.totalSize,\n loadedSize: progress.loadedSize\n })\n break\n }\n default: {\n break\n }\n }\n }\n : null\n )\n })\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"asset-files-uploader-module__component___1wV8z\",\"selectOnClick\":\"asset-files-uploader-module__selectOnClick___3Mia7\",\"input\":\"asset-files-uploader-module__input___12VWQ\"};","// lib\nimport React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport ADND from '@aytm/lib/adnd/ADND'\nimport uploadImageAssets from '@aytm/lib/rfd-ui/components/assets/jobs/image-asset-upload-manager'\nimport uploadVideoAssets from '@aytm/lib/rfd-ui/components/assets/jobs/video-asset-upload-manager'\n\n// styles\nimport style from '@aytm/lib/rfd-ui/styles/assets/asset-files-uploader.module.scss'\n\nexport default class AssetFilesUploader extends Component {\n static propTypes = {\n type: PropTypes.oneOf(['image', 'video']),\n onFilesUploaded: PropTypes.func.isRequired,\n onFilesUpload: PropTypes.func,\n watchProgress: PropTypes.bool,\n multiple: PropTypes.bool,\n withOriginal: PropTypes.bool,\n withErrors: PropTypes.bool,\n maxItems: PropTypes.number,\n selectOnClick: PropTypes.bool,\n content: PropTypes.func.isRequired\n }\n\n state = {\n dragOver: false,\n acceptFiles: true,\n progress: null\n }\n\n inputRef = React.createRef()\n\n dropAssetFileTarget = ADND.targets\n .files()\n .onDrop(this.onAssetFileDrop)\n .onEnter(this.onAssetFileDragEnter)\n .onLeave(this.onAssetFileDragLeave)\n .acceptDrop(this.acceptAssetFileDrop)\n\n @autobind\n connectDropTarget(ref) {\n this.dropAssetFileTarget.connect(ref)\n }\n\n componentDidMount() {\n this.mounted = true\n }\n\n componentWillUnmount() {\n this.mounted = false\n this.dropAssetFileTarget.disconnect()\n }\n\n @autobind\n onAssetFileDragEnter() {\n this.setState(state => {\n return {\n ...state,\n dragOver: true\n }\n })\n }\n\n @autobind\n onAssetFileDragLeave() {\n this.setState(state => {\n return {\n ...state,\n dragOver: false\n }\n })\n }\n\n @autobind\n acceptAssetFileDrop() {\n const { acceptFiles = true } = this.state\n return acceptFiles\n }\n\n @autobind\n onAssetFileDrop(...files) {\n const { multiple = false, maxItems = null } = this.props\n\n if (files.length) {\n this.onDropFiles(multiple ? (maxItems ? Array.prototype.slice.call(files, 0, maxItems) : files) : [files[0]])\n }\n }\n\n @autobind\n inputFilesSelected() {\n if (this.inputRef.current && this.inputRef.current.files && this.inputRef.current.files.length) {\n const { multiple = false, maxItems = null } = this.props\n this.onDropFiles(\n multiple\n ? Array.apply(\n null,\n maxItems\n ? Array.prototype.slice.call(this.inputRef.current.files, 0, maxItems)\n : this.inputRef.current.files\n )\n : [this.inputRef.current.files[0]]\n )\n }\n }\n\n @autobind\n onDropFiles(files) {\n const { type, watchProgress = true, withErrors = false, onFilesUpload, onFilesUploaded } = this.props\n\n if ('function' === typeof onFilesUploaded) {\n this.setState(\n state => {\n return {\n ...state,\n acceptFiles: false,\n progress: watchProgress\n ? {\n percents: 0,\n totalFiles: files.length,\n loadedFiles: 0,\n totalSize: files.reduce((totalSize, file) => totalSize + (file.size || 0), 0),\n loadedSize: 0\n }\n : null\n }\n },\n () => {\n const uploadAsset = 'video' === type ? uploadVideoAssets : uploadImageAssets\n if ('function' === typeof onFilesUpload) {\n onFilesUpload()\n }\n uploadAsset(\n files,\n watchProgress\n ? progress => {\n if (this.mounted) {\n this.setState(state => {\n return {\n ...state,\n progress\n }\n })\n }\n }\n : null,\n withErrors\n ).then(assets => {\n const { withOriginal = false } = this.props\n if (this.mounted) {\n this.setState(\n state => {\n return {\n ...state,\n acceptFiles: true,\n progress: null\n }\n },\n () => {\n onFilesUploaded(\n assets.map(asset => {\n if ('video' === type) {\n const videoAsset = {\n assetUid: asset.uid,\n videoPath: asset.original ? asset.original.mp4 : null,\n thumbnailPath: asset.original ? asset.original.thumbnail : null\n }\n withOriginal && (videoAsset.original = asset.original || null)\n return videoAsset\n } else {\n const imageAsset = {\n assetUid: asset.uid,\n imagePath: asset.original ? asset.original.path : null\n }\n withOriginal && (imageAsset.original = asset.original || null)\n withErrors && asset.error && (imageAsset.error = asset.error)\n withErrors && asset.status && (imageAsset.status = asset.status)\n return imageAsset\n }\n })\n )\n }\n )\n }\n })\n }\n )\n }\n }\n\n render() {\n const { type, multiple = false, content, selectOnClick = true } = this.props\n const { acceptFiles = true, dragOver, progress } = this.state\n return (\n <label\n className={`${style.component}${selectOnClick ? ' ' + style.selectOnClick : ''}`}\n ref={this.connectDropTarget}\n >\n {selectOnClick && acceptFiles ? (\n <input\n type=\"file\"\n name=\"file\"\n onChange={this.inputFilesSelected}\n accept={'video' === type ? 'video/*' : 'image/*,.ai,.eps,.pdf,.psd'}\n multiple={multiple}\n className={style.input}\n tabIndex=\"-1\"\n ref={this.inputRef}\n />\n ) : null}\n {content ? content({ dragOver, progress, uploading: !acceptFiles }) : null}\n </label>\n )\n }\n}\n","import GeneralImageAssetUploadJob from '@aytm/lib/AsyncJobManager/jobs/assets/ImageAssetUploadJob'\nimport AsyncJobManager from '@aytm/lib/AsyncJobManager/AsyncJobManager'\n\nexport const ImageAssetUploadManager = AsyncJobManager({ concurrency: 3 })\n\nconst config = {\n createAssetPath: null,\n templateID: null,\n srcSurveyID: null\n}\n\nexport function configure({ createAssetPath, templateID, srcSurveyID } = {}) {\n config.createAssetPath = createAssetPath\n config.templateID = templateID\n config.srcSurveyID = srcSurveyID\n}\n\nexport function ImageAssetUploadJob(file) {\n return config.createAssetPath\n ? GeneralImageAssetUploadJob({\n createAssetPath: config.createAssetPath,\n file,\n params: { template_id: config.templateID, src_survey_id: config.srcSurveyID }\n })\n : Promise.reject(new Error('ImageAssetUploadManager - createAssetPath not configured'))\n}\n\nexport default function upload(droppedFiles, onProgress, withErrors) {\n const files = droppedFiles.slice(0, 100) // protect from mass upload\n return new Promise(resolve => {\n const uploadJobs = [...files].map(file => ImageAssetUploadJob(file))\n const fileTotalSizes = files.map(file => file.size || 0)\n const progress = {\n fileTotalSizes,\n fileLoadedSizes: Array.from({ length: files.length }),\n totalSize: fileTotalSizes.reduce((totalSize, fileSize) => totalSize + fileSize, 0),\n loadedSize: 0,\n totalFiles: files.length,\n loadedFiles: 0\n }\n ImageAssetUploadManager.queue(...uploadJobs).then(\n jobResults => {\n resolve(\n withErrors\n ? jobResults.map(result => (result.result?.status ? result.result : result))\n : jobResults.map(result => ('done' === result.status ? result.result : null)).filter(x => x)\n )\n },\n null,\n onProgress\n ? (type, fileIndex, loaded, total) => {\n // calculate progress\n switch (type) {\n case 'done': {\n progress.totalFiles = total\n progress.loadedFiles = loaded\n onProgress({\n percents: Math.round((progress.loadedSize * 100) / progress.totalSize),\n totalFiles: progress.totalFiles,\n loadedFiles: progress.loadedFiles,\n totalSize: progress.totalSize,\n loadedSize: progress.loadedSize\n })\n break\n }\n case 'progress': {\n progress.fileLoadedSizes[fileIndex] = loaded\n progress.fileTotalSizes[fileIndex] = total\n progress.totalSize = progress.fileTotalSizes.reduce(\n (fileSize, totalSize) => (totalSize ? fileSize + totalSize : fileSize),\n 0\n )\n progress.loadedSize = progress.fileLoadedSizes.reduce(\n (loadedSize, fileLoadedSize) => (fileLoadedSize ? loadedSize + fileLoadedSize : loadedSize),\n 0\n )\n onProgress({\n percents: Math.round((progress.loadedSize * 100) / progress.totalSize),\n totalFiles: progress.totalFiles,\n loadedFiles: progress.loadedFiles,\n totalSize: progress.totalSize,\n loadedSize: progress.loadedSize\n })\n break\n }\n default: {\n break\n }\n }\n }\n : null\n )\n })\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"upload-assets-button-module__component___HYOK1\",\"text\":\"upload-assets-button-module__text___2_Thq\",\"dragOver\":\"upload-assets-button-module__dragOver___27rsO\",\"inner\":\"upload-assets-button-module__inner___3Gelg\",\"label\":\"upload-assets-button-module__label___2kUrd\",\"icon\":\"upload-assets-button-module__icon___3uXul\",\"icon-image\":\"upload-assets-button-module__icon-image___3ZINw icon-aytmfd-image\",\"icon-video\":\"upload-assets-button-module__icon-video___22Jjt icon-aytmfd-qvideo\",\"uploadingPercents\":\"upload-assets-button-module__uploadingPercents___2rfWr\",\"uploadingFiles\":\"upload-assets-button-module__uploadingFiles___2h7Xe\"};","// lib\nimport React, { useCallback } from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport AssetFilesUploader from '@aytm/lib/rfd-ui/components/assets/asset-files-uploader'\nimport LoaderDots from '@aytm/lib/rfd-ui/components/basic/loader-dots'\n\n// styles\nimport style from '@aytm/lib/rfd-ui/styles/assets/upload-assets-button.module.scss'\n\nUploadAssetsButton.propTypes = {\n type: PropTypes.oneOf(['image', 'video']),\n text: PropTypes.string,\n renderProgressText: PropTypes.func,\n maxItems: PropTypes.number,\n multiple: PropTypes.bool,\n withOriginal: PropTypes.bool,\n withErrors: PropTypes.bool,\n onFilesUploaded: PropTypes.func.isRequired,\n onFilesUpload: PropTypes.func\n}\n\nexport default function UploadAssetsButton(props) {\n const {\n text,\n type,\n renderProgressText,\n multiple = false,\n maxItems,\n withOriginal,\n withErrors = false,\n onFilesUpload,\n onFilesUploaded\n } = props\n\n const renderButton = useCallback(\n ({ dragOver = false, progress, uploading } = {}) => (\n <div className={`${style.component}${dragOver ? ' ' + style.dragOver : ''}`}>\n {uploading && progress ? (\n <ProgressPanel progress={progress} renderProgressText={renderProgressText} />\n ) : (\n <DropPanel type={type} text={text || ''} />\n )}\n </div>\n ),\n [type, text, renderProgressText]\n )\n\n return (\n <AssetFilesUploader\n type={type}\n maxItems={maxItems}\n multiple={multiple}\n watchProgress={true}\n withErrors={withErrors}\n withOriginal={withOriginal}\n onFilesUploaded={onFilesUploaded}\n onFilesUpload={onFilesUpload}\n content={renderButton}\n />\n )\n}\n\nDropPanel.propTypes = {\n type: PropTypes.oneOf(['image', 'video']),\n text: PropTypes.string.isRequired\n}\n\nexport function DropPanel(props) {\n const { type, text } = props\n return (\n <div className={style.inner}>\n <div className={style.label}>\n <i className={`${style.icon} ${'video' === type ? style['icon-video'] : style['icon-image']}`} />\n <div className={style.text}>{text || ''}</div>\n </div>\n </div>\n )\n}\n\nProgressPanel.propTypes = {\n renderProgressText: PropTypes.func,\n progress: PropTypes.object.isRequired\n}\nexport function ProgressPanel(props) {\n const { progress = {}, renderProgressText } = props\n const { percents = 0, loadedFiles = 0, totalFiles = 1 } = progress || {}\n return (\n <div className={style.inner}>\n <div className={style.label}>\n <div className={style.uploadingPercents}>\n <LoaderDots dotSize={7} dots={3} height={15} /> {100 > percents ? `${percents}%` : ''}\n </div>\n {'function' === typeof renderProgressText ? (\n <div className={style.uploadingFiles}>{renderProgressText({ loadedFiles, totalFiles })}</div>\n ) : null}\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport autobind from 'autobind-decorator'\nimport { PureDataComponent } from '@aytm/lib/common/components/pure-component'\n\nimport '@aytm/lib/rfd-ui/styles/basic/button.scss'\n\nexport default class Button extends PureDataComponent {\n static propTypes = {\n /**\n * Button label\n */\n label: PropTypes.string,\n /**\n * is Button disabled\n */\n disabled: PropTypes.bool,\n /**\n * show icon (prop is className)\n */\n icon: PropTypes.string,\n /**\n * icon position: `left` or `right`\n */\n iconPosition: PropTypes.string,\n /**\n * fixed Button width in pixels\n */\n width: PropTypes.number,\n /**\n * Hides left/right paddings\n */\n compact: PropTypes.bool,\n /**\n * string that will be passed to `onAction(action)`\n */\n action: PropTypes.string,\n /**\n * fires when Button is `clicked` and `not disabled`\n */\n onAction: PropTypes.func,\n /**\n * fires when Button is `clicked` (disabled or not)\n */\n onClick: PropTypes.func,\n /**\n * Use `<A>` instead of `<BUTTON>`, prop is `href`\n */\n asAnchor: PropTypes.string,\n /**\n * `target` for `asAnchor`\n */\n target: PropTypes.string,\n /**\n * custom style\n */\n style: PropTypes.object,\n /**\n * custom className\n */\n className: PropTypes.string,\n /**\n * Button theme (adds className `rfd-ui-button-${theme}`)\n */\n theme: PropTypes.string\n }\n\n static defaultProps = {\n iconPosition: 'right'\n }\n\n @autobind\n onClick(event) {\n const { disabled, onAction, onClick, action } = this.props\n if ('function' == typeof onClick) onClick(event) // will fire on any click\n if (!disabled && 'function' == typeof onAction) onAction(action, event) // will fire only if button is enabled\n }\n\n render() {\n const {\n label,\n disabled,\n compact,\n width,\n icon,\n iconPosition,\n action,\n onAction,\n onClick,\n asAnchor,\n target,\n className,\n style,\n theme,\n ...otherProps\n } = this.props\n const mergedStyle = style ? Object.assign({ width }, style) : { width }\n const buttonProps = {\n className: classNames('rfd-ui-button', className, {\n 'rfd-ui-button-disabled': disabled,\n 'rfd-ui-button-compact': compact,\n 'rfd-ui-button-with-icon': icon && iconPosition != 'left',\n 'rfd-ui-button-with-icon-left': icon && 'left' == iconPosition,\n [`rfd-ui-button-theme-${theme}`]: theme\n }),\n style: mergedStyle,\n onClick: this.onClick\n }\n const text = icon ? `${label} <i class='rfd-ui-button-icon ${icon}'></i>` : label\n return asAnchor ? (\n <a {...buttonProps} {...otherProps} href={asAnchor} target={target ? target : '_self'}>\n <span dangerouslySetInnerHTML={{ __html: text }} />\n </a>\n ) : (\n <button {...buttonProps} {...otherProps} dangerouslySetInnerHTML={{ __html: text }} />\n )\n }\n}\n","// lib\nimport React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport { DOMclosest } from '@aytm/lib/common/func'\nimport {\n KEYCODE_UP,\n KEYCODE_DOWN,\n KEYCODE_PGUP,\n KEYCODE_PGDOWN,\n KEYCODE_ENTER,\n KEYCODE_ESC\n} from '@aytm/lib/common/const'\n\n// constants\nconst SCROLL_TO_ITEM_MARGIN = 10\n\n// styles\nimport '@aytm/lib/rfd-ui/styles/basic/dropdown.scss'\n\n// <Component>\nDropdown.propTypes = {\n opened: PropTypes.bool.isRequired,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n align: PropTypes.string, // left, right, fill (100% width)\n className: PropTypes.string,\n children: PropTypes.any,\n dropdownRef: PropTypes.any\n}\nexport default function Dropdown(props) {\n const { opened, width, className, children, maxHeight, align, dropdownRef } = props\n return opened ? (\n <div\n ref={dropdownRef}\n className={`rfd-ui-dropdown${align ? ' rfd-ui-dropdown-align-' + align : ''}${className ? ' ' + className : ''}`}\n style={{ width }}\n >\n <div className=\"rfd-ui-dropdown-content\" style={{ maxHeight }}>\n {children()}\n </div>\n </div>\n ) : null\n}\n\nexport class DropdownList extends Component {\n static propTypes = {\n fetchItems: PropTypes.func.isRequired,\n filter: PropTypes.any,\n onSelectItem: PropTypes.func\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n return this.props.filter != nextProps.filter || this.state.items != nextState.items\n }\n\n constructor(props) {\n super(props)\n this.state = {\n lastFilter: props.filter,\n items: props.fetchItems ? props.fetchItems({ filter: props.filter }) : []\n }\n this.listRef = null\n this.keyboardFocusIndex = 0\n }\n\n static getDerivedStateFromProps(props, state) {\n return state.lastFilter != props.filter\n ? {\n lastFilter: props.filter,\n items: props.fetchItems ? props.fetchItems({ filter: props.filter }) : []\n }\n : null\n }\n\n @autobind\n setListRef(ref) {\n if (this.listRef != ref) {\n if (this.listRef) {\n this.listRef.removeEventListener('mousedown', this.mouseDownListener, true)\n }\n this.listRef = ref\n if (this.listRef) {\n this.listRef.addEventListener('mousedown', this.mouseDownListener, true)\n }\n }\n }\n\n @autobind\n mouseDownListener(event) {\n if (0 === event.button) {\n event.preventDefault()\n const selectedItemElement = DOMclosest(event.target, '.rfd-ui-dropdown-list-item')\n if (selectedItemElement && this.state.items && this.props.onSelectItem) {\n const selectedItemIndex = parseInt(selectedItemElement.dataset.itemIndex, 10)\n if (!isNaN(selectedItemIndex)) {\n const selectedItem = this.state.items[selectedItemIndex]\n if (selectedItem) {\n this.props.onSelectItem(selectedItem)\n }\n }\n }\n }\n }\n\n @autobind\n onKeyDown(event) {\n switch (event.keyCode) {\n case KEYCODE_ESC: {\n event.preventDefault()\n this.moveKeyboardFocus(null)\n return 'close'\n }\n case KEYCODE_DOWN: {\n event.preventDefault()\n this.moveKeyboardFocus(Math.min(this.state.items.length - 1, this.keyboardFocusIndex + 1))\n return 'down'\n }\n case KEYCODE_UP: {\n event.preventDefault()\n this.moveKeyboardFocus(Math.max(0, this.keyboardFocusIndex - 1))\n return 'up'\n }\n case KEYCODE_PGDOWN: {\n event.preventDefault()\n this.moveKeyboardFocus(Math.min(this.state.items.length - 1, this.keyboardFocusIndex + 3))\n return 'pgdown'\n }\n case KEYCODE_PGUP: {\n event.preventDefault()\n this.moveKeyboardFocus(Math.max(0, this.keyboardFocusIndex - 3))\n return 'pgup'\n }\n case KEYCODE_ENTER: {\n event.preventDefault()\n if (this.props.onSelectItem) {\n const selectedItem = this.state.items[this.keyboardFocusIndex]\n if (selectedItem) {\n this.props.onSelectItem(selectedItem)\n }\n this.moveKeyboardFocus(null)\n }\n return 'select'\n }\n default: {\n return 'default'\n }\n }\n }\n\n @autobind\n moveKeyboardFocus(toIndex) {\n if (this.listRef) {\n // remove className from old focused item\n const focusedItems = this.listRef.querySelectorAll('.rfd-ui-dropdown-list-item-focused')\n for (const focusedItem of focusedItems) {\n focusedItem.classList.remove('rfd-ui-dropdown-list-item-focused')\n }\n // add className to the new focused item\n this.keyboardFocusIndex = toIndex\n if (null != this.keyboardFocusIndex) {\n const newFocuseditem = this.listRef.querySelectorAll('.rfd-ui-dropdown-list-item')[this.keyboardFocusIndex]\n if (newFocuseditem) {\n newFocuseditem.classList.add('rfd-ui-dropdown-list-item-focused')\n // scroll container to item\n const dropdownContent = DOMclosest(this.listRef, '.rfd-ui-dropdown-content')\n if (dropdownContent) {\n const containerTop = dropdownContent.scrollTop\n const containerHeight = dropdownContent.clientHeight\n const listHeight = this.listRef.scrollHeight\n const itemTop = newFocuseditem.offsetTop\n const itemHeight = newFocuseditem.offsetHeight\n if (itemTop < containerTop) {\n dropdownContent.scrollTop = Math.max(0, itemTop - SCROLL_TO_ITEM_MARGIN)\n } else if (itemTop + itemHeight > containerTop + containerHeight) {\n dropdownContent.scrollTop = Math.min(\n listHeight - containerHeight,\n itemTop + itemHeight + SCROLL_TO_ITEM_MARGIN - containerHeight\n )\n }\n }\n }\n }\n }\n }\n\n componentDidUpdate(_prevProps, prevState) {\n if (this.state.items.length != prevState.items.length) {\n this.moveKeyboardFocus(0)\n }\n }\n\n componentDidMount() {\n this.moveKeyboardFocus(0)\n }\n\n render() {\n const { items } = this.state\n const { filter } = this.props\n return (\n <div className=\"rfd-ui-dropdown-list\" ref={this.setListRef}>\n {items.map((item, index) => (\n <div className=\"rfd-ui-dropdown-list-item\" data-item-index={index} key={null == item.id ? index : item.id}>\n {item.render ? item.render({ index, item, filter }) : item.id}\n </div>\n ))}\n </div>\n )\n }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport { PureDataComponent } from '@aytm/lib/common/components/pure-component'\nimport { stopEvent } from '@aytm/lib/common/func'\nimport Portal from '@aytm/lib/rfd-ui/components/basic/portal'\n\nimport '@aytm/lib/rfd-ui/styles/basic/light-box.scss'\n\nexport default class LightBox extends PureDataComponent {\n static propTypes = {\n onClose: PropTypes.func\n }\n\n @autobind\n onClick(event) {\n const { onClose, fullSize } = this.props\n if (\n 'function' == typeof onClose &&\n !fullSize &&\n (this.refLightBoxBackdrop == event.target || this.refLightBoxBackdropCenter == event.target)\n ) {\n stopEvent(event)\n onClose()\n return false\n }\n return true\n }\n\n render() {\n const { onClose, children, fullSize, background, className, ...otherProps } = this.props\n\n return (\n <Portal>\n <div\n className={`rfd-ui-light-box ${className ? className : ''}`}\n onMouseDown={this.onClick}\n ref={this.saveRef('LightBoxBackdrop')}\n style={{ backgroundColor: background }}\n {...otherProps}\n >\n <div\n className=\"rfd-ui-light-box-center\"\n onMouseDown={this.onClick}\n ref={this.saveRef('LightBoxBackdropCenter')}\n >\n <div className=\"rfd-ui-light-box-center-content\">{children}</div>\n </div>\n </div>\n </Portal>\n )\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"loader-dots-module__component___1Q47M rfd-ui-loader-dots\",\"dot\":\"loader-dots-module__dot___3wTm0\",\"rfd-ui-loader-dots-color\":\"loader-dots-module__rfd-ui-loader-dots-color___2-hwr\",\"dot-0\":\"loader-dots-module__dot-0___2dEQT\",\"dot-1\":\"loader-dots-module__dot-1___1dz0l\",\"dot-2\":\"loader-dots-module__dot-2___1xOG6\"};","// lib\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { Repeat } from 'immutable'\n\n// styles\nimport style from '@aytm/lib/rfd-ui/styles/basic/loader-dots.module.scss'\n\n// <Component>\nLoaderDots.propTypes = {\n dots: PropTypes.number,\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n dotSize: PropTypes.number\n}\nexport default React.memo(\n LoaderDots,\n (prevProps, nextProps) =>\n prevProps.dots === nextProps.dots &&\n prevProps.height === nextProps.height &&\n prevProps.dotSize === nextProps.dotSize\n)\nfunction LoaderDots(props) {\n const { dots = 3, dotSize, height } = props\n const lineHeight = 'number' == typeof height ? `${height}px` : height\n return (\n <div className={style.component} style={{ lineHeight }}>\n {Repeat(null, dots)\n .map((_v, i) => (\n <span\n key={i}\n className={`${style.dot} ${style[`dot-${i % 3}`]}`}\n style={{\n width: dotSize,\n height: dotSize,\n lineHeight,\n marginRight: dotSize && i < dots - 1 ? dotSize / 2 : null,\n borderRadius: dotSize ? dotSize / 2 : null\n }}\n />\n ))\n .toArray()}\n </div>\n )\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Repeat } from 'immutable'\n\nimport { PureDataComponent } from '@aytm/lib/common/components/pure-component'\n\nimport '@aytm/lib/rfd-ui/styles/basic/loader-wave.scss'\n\nexport default class LoaderWave extends PureDataComponent {\n static propTypes = {\n bars: PropTypes.number,\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n }\n\n render() {\n const bars = this.props.bars || 20\n const height = this.props.height || 12\n return (\n <span className=\"rfd-ui-loader-wave\" style={{ height }}>\n {Repeat(null, bars)\n .map((_v, i) => <span key={i} className={`rfd-ui-loader-wave-bar rfd-ui-loader-wave-bar-${i % 50}`} />)\n .toArray()}\n </span>\n )\n }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport autobind from 'autobind-decorator'\nimport InputMask from 'inputmask-core'\nimport { List } from 'immutable'\nimport { PureDataComponent } from '@aytm/lib/common/components/pure-component'\nimport { stopEvent, isKeyUndo, isKeyRedo, getSelection, setSelection } from '@aytm/lib/common/func'\nimport { KEYCODE_BACKSPACE } from '@aytm/lib/common/const'\n\nimport '@aytm/lib/rfd-ui/styles/basic/masked-input.scss'\n\nexport default class MaskedInput extends PureDataComponent {\n static propTypes = {\n value: PropTypes.string,\n defaultValue: PropTypes.string,\n pattern: PropTypes.string,\n placeholderChar: PropTypes.string,\n formatCharacters: PropTypes.object,\n sub: PropTypes.string,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n mono: PropTypes.bool,\n onKeyPress: PropTypes.func,\n onKeyDown: PropTypes.func,\n onChange: PropTypes.func,\n onPaste: PropTypes.func\n }\n\n constructor(props) {\n super(props)\n this.state = {\n value: ''\n }\n }\n\n @autobind\n updateSelection() {\n const { maskLib, refInput } = this\n if (refInput && maskLib) {\n maskLib.setSelection(getSelection(refInput))\n }\n }\n\n @autobind\n updateValue(sendUpdate = true) {\n const { onChange } = this.props\n if (this.refInput && this.maskLib) {\n const newValue = this.maskLib.getValue()\n const { value: prevValue } = this.state\n this.setState({ value: newValue == this.maskLib.emptyValue ? '' : newValue }, () => {\n if (document.activeElement == this.refInput) {\n setSelection(this.refInput, this.maskLib.selection)\n }\n if (sendUpdate && 'function' == typeof onChange && prevValue != newValue) {\n const raw = this.maskLib.getRawValue()\n const { sub } = this.props\n const withSub =\n null != sub\n ? newValue\n .split('')\n .map((c, i) => (' ' == c ? sub[i] || ' ' : c))\n .join('')\n : newValue\n const prevWithSub =\n null != sub\n ? prevValue\n .split('')\n .map((c, i) => (' ' == c ? sub[i] || ' ' : c))\n .join('')\n : prevValue\n onChange(newValue, prevValue, { raw, withSub, prevWithSub, empty: newValue == this.maskLib.emptyValue })\n }\n })\n }\n }\n\n @autobind\n setMask(props = this.props) {\n const rawValue = this.maskLib ? this.maskLib.getRawValue() : ''\n const { pattern, placeholderChar, formatCharacters } = props\n this.maskLib = new InputMask({\n pattern: pattern,\n placeholderChar: placeholderChar || ' ',\n formatCharacters: formatCharacters,\n value: rawValue\n })\n this.updateValue(false)\n }\n\n @autobind\n onKeyDown(event) {\n const { onKeyDown } = this.props\n if ('function' == typeof onKeyDown) onKeyDown(event)\n if ('Backspace' == event.key || KEYCODE_BACKSPACE == event.which || KEYCODE_BACKSPACE == event.keyCode) {\n stopEvent(event)\n const { maskLib } = this\n this.updateSelection()\n if (maskLib && maskLib.backspace()) this.updateValue()\n return false\n } else if (isKeyUndo(event)) {\n stopEvent(event)\n const { maskLib } = this\n if (maskLib && maskLib.undo()) this.updateValue()\n return false\n } else if (isKeyRedo(event)) {\n stopEvent(event)\n const { maskLib } = this\n if (maskLib && maskLib.redo()) this.updateValue()\n return false\n }\n return true\n }\n\n @autobind\n onKeyPress(event) {\n const { onKeyPress } = this.props\n if ('function' == typeof onKeyPress) onKeyPress(event)\n if (event.metaKey || event.altKey || event.ctrlKey || 'Enter' == event.key) return\n stopEvent(event)\n const keyChar = event.key || String.fromCharCode(event.which || event.keyCode)\n this.updateSelection()\n const { maskLib } = this\n if (maskLib && maskLib.input(keyChar)) this.updateValue()\n }\n\n @autobind\n onPaste(event) {\n const { onPaste } = this.props\n if ('function' == typeof onPaste) onPaste(event)\n const text = event.clipboardData ? event.clipboardData.getData('Text') : null\n if (text) {\n stopEvent(event)\n this.updateSelection()\n const { sub, pattern } = this.props\n if (this.maskLib) {\n const subCorrectedText =\n null == sub\n ? text\n : List(text.split(''))\n .map((c, i) => (c == sub[i] && ' ' == pattern[i] ? ' ' : c))\n .join('')\n if (0 < List(subCorrectedText.split('')).reduce((sum, c) => (this.maskLib.input(c) ? sum + 1 : sum), 0)) {\n this.updateValue()\n }\n }\n return false\n }\n return true\n }\n\n @autobind\n onChange() {\n if (this.maskLib && this.refInput) {\n const newValue = this.refInput.value\n if (newValue != this.maskLib.getValue()) {\n const { start } = getSelection(this.refInput)\n this.maskLib.setValue(newValue)\n const setTo = Math.min(newValue.length - 1, start)\n this.maskLib.setSelection({ start: setTo, end: setTo })\n setSelection(this.refInput, this.maskLib.selection)\n setTimeout(this.updateValue, 0)\n }\n }\n }\n\n @autobind\n updatePattern(pattern) {\n const { maskLib, refInput } = this\n if (maskLib && refInput) {\n const preRaw = maskLib.getRawValue().replace(new RegExp(`[${maskLib.placeholderChar}]+$`), '')\n maskLib.setPattern(pattern, { value: '' })\n // reinsert previous text\n List(preRaw.split('')).reduce((sum, c) => (maskLib.input(c) ? sum + 1 : sum), 0)\n this.updateValue(false)\n }\n }\n\n UNSAFE_componentWillMount() {\n super.UNSAFE_componentWillMount()\n this.setMask()\n const initValue = this.props.value || this.props.defaultValue\n if (null != initValue) {\n this.maskLib.setValue(initValue)\n }\n }\n\n componentDidMount() {\n super.componentDidMount()\n this.updateValue(false)\n }\n\n componentWillUnmount() {\n super.componentWillUnmount()\n this.maskLib = null\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n super.UNSAFE_componentWillReceiveProps(nextProps)\n if (\n this.maskLib &&\n null != nextProps.value &&\n nextProps.value != this.props.value &&\n nextProps.value != this.state.value\n ) {\n this.maskLib.setValue(nextProps.value)\n this.updateValue(false)\n }\n if (\n nextProps.placeholderChar != this.props.placeholderChar ||\n nextProps.formatCharacters != this.props.formatCharacters\n ) {\n this.setMask(nextProps)\n } else if (this.maskLib && nextProps.pattern != this.props.pattern) {\n this.updatePattern(nextProps.pattern)\n }\n }\n\n render() {\n const {\n pattern,\n sub,\n formatCharacters,\n placeholderChar,\n mono,\n width,\n style,\n className,\n placeholder,\n onKeyDown,\n onKeyPress,\n onChange,\n onPaste,\n value,\n defaultValue,\n ...otherProps\n } = this.props\n const managedValue = this.state.value\n const formattedSub = sub\n ? managedValue\n ? sub\n .split('')\n .map((_c, i) => ((placeholderChar || ' ') == managedValue[i] || ' ' == managedValue[i] ? sub[i] : ' '))\n .join('')\n : sub\n : null\n const showSub = null != sub && (!placeholder || managedValue.length > 0)\n return (\n <div\n className={classNames('rfd-ui-masked-input', { 'rfd-ui-masked-input-mono': null != sub || mono })}\n style={{ width }}\n >\n <input\n ref={this.saveRef('Input')}\n key=\"input\"\n type=\"text\"\n className={className}\n value={managedValue}\n style={style}\n onKeyDown={this.onKeyDown}\n onKeyPress={this.onKeyPress}\n onChange={this.onChange}\n onPaste={this.onPaste}\n placeholder={placeholder}\n {...otherProps}\n />\n {showSub && (\n <div className=\"rfd-ui-masked-input-sub\" style={style} key=\"sub\">\n {formattedSub}\n </div>\n )}\n </div>\n )\n }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Map, List } from 'immutable'\nimport classNames from 'classnames'\nimport autobind from 'autobind-decorator'\nimport { PureDataComponent } from '@aytm/lib/common/components/pure-component'\nimport { stopEvent, DOMchildOf, DOMfindParent, viewport } from '@aytm/lib/common/func'\nimport {\n KEYCODE_UP,\n KEYCODE_DOWN,\n KEYCODE_PGUP,\n KEYCODE_PGDOWN,\n KEYCODE_HOME,\n KEYCODE_END,\n KEYCODE_ENTER,\n KEYCODE_SPACE,\n KEYCODE_ESC,\n KEYCODE_TAB\n} from '@aytm/lib/common/const'\nimport { fuzzyMatch } from '@aytm/lib/common/string'\nimport LoaderWave from '@aytm/lib/rfd-ui/components/basic/loader-wave'\nimport LoaderDots from '@aytm/lib/rfd-ui/components/basic/loader-dots'\n\nimport '@aytm/lib/rfd-ui/styles/basic/select.scss'\n\nconst MAX_OPTIONS_NUMBER = 100\n// const DEFAULT_LIST_MAXHEIGHT = 200\n\nlet nextSelectID = 0\n\nexport const SELECT_FILTER_STRATEGIES = {\n default: (text, filter /*, option*/) => [text.includes(filter), 1],\n fuzzy: (text, filter /*, option*/) => {\n const [longestMatchedSequenceLength] = fuzzyMatch(text, filter)\n return [Boolean(longestMatchedSequenceLength), longestMatchedSequenceLength]\n },\n firstChar: (text, filter, option) => {\n const [defaultMatch, defaultPriority] = SELECT_FILTER_STRATEGIES.default(text, filter, option)\n if (defaultMatch) {\n return [true, defaultPriority]\n }\n const firstChars = text\n .split(/[\\s(),.:[\\]-]+/)\n .map(w => w.charAt(0))\n .join('')\n return [0 === firstChars.indexOf(filter), 2]\n }\n}\n\nexport default class Select extends PureDataComponent {\n static propTypes = {\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n placeholder: PropTypes.string,\n options: PropTypes.oneOfType([PropTypes.instanceOf(List), PropTypes.func]).isRequired,\n opened: PropTypes.bool,\n value: PropTypes.any,\n onSelect: PropTypes.func,\n onClose: PropTypes.func,\n isEmpty: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n filterOptions: PropTypes.bool,\n filterPlaceholder: PropTypes.string,\n filterStrategy: PropTypes.oneOf(Object.keys(SELECT_FILTER_STRATEGIES)),\n descriptionOptions: PropTypes.bool,\n matchOptions: PropTypes.bool,\n buttonText: PropTypes.func,\n matchNoPlaceholder: PropTypes.string,\n error: PropTypes.bool,\n disabled: PropTypes.bool,\n drop: PropTypes.string,\n theme: PropTypes.string,\n onOverflow: PropTypes.func,\n noScroll: PropTypes.bool,\n optionsMinHeight: PropTypes.number,\n optionsMaxHeight: PropTypes.number,\n showSelected: PropTypes.bool,\n allowReselection: PropTypes.bool,\n fullScreenOptions: PropTypes.bool,\n newIcon: PropTypes.bool,\n icon: PropTypes.string,\n dataTestId: PropTypes.string\n }\n\n constructor(props) {\n super(props)\n this.state = {\n opened: false,\n valueOption: Map({ value: null, text: '' }),\n filter: '',\n keyboardIndex: null,\n focused: false,\n flipped: false,\n page: 1,\n fetchedOptions: List()\n }\n this.filterChangeDelayTimer = null\n this.mouseOverOptions = false\n this.filteredOptionsCache = null\n this.filteredOptionsCacheFor = null\n this.overflow = 0\n this.loading = false\n this.selectID = nextSelectID++\n }\n\n @autobind\n addGlobalCloseEvents() {\n if ('function' == typeof this.removeGlobalEvents) {\n this.removeGlobalEvents()\n }\n const mouseDownHandler = event => {\n if (this.refRoot && DOMchildOf(event.target, this.refRoot)) return\n this.closeOptionsList()\n }\n\n this.removeGlobalEvents = () => {\n ;(this.refRoot?.ownerDocument || document).removeEventListener('mousedown', mouseDownHandler)\n this.removeGlobalEvents = null\n }\n ;(this.refRoot?.ownerDocument || document).addEventListener('mousedown', mouseDownHandler)\n }\n\n @autobind\n focusOn(ref) {\n const el = this[`ref${ref}`]\n if (el && el.focus) {\n el.focus()\n return true\n }\n return false\n }\n\n @autobind\n toggleOptions(event) {\n const { opened, options, value, showSelected } = this.props\n void (event && stopEvent(event))\n const { opened: sOpened, valueOption } = this.state\n if (null == opened) {\n const willBeOpened = !sOpened\n if (willBeOpened && 'function' == typeof options) {\n options((fetchedOptions = List()) => {\n this.filteredOptionsCache = null\n this.filteredOptionsCacheFor = null\n this.setValueOption('undefined' == typeof value ? valueOption.get('value') : value, fetchedOptions)\n this.setState({ fetchedOptions })\n })\n }\n this.setState({\n opened: willBeOpened,\n filter: '',\n keyboardIndex: null\n })\n if (willBeOpened) {\n this.addGlobalCloseEvents()\n setTimeout(() => {\n if (this.mounted) {\n this.focusOn('Filter') || this.focusOn('FocusHolder')\n }\n }, 0)\n const selIndex = showSelected\n ? this.selectedOptionIndex(valueOption.get('value'))\n : this.selectedOptionIndex(valueOption.get('value')) > 1\n ? this.selectedOptionIndex(valueOption.get('value')) - 1\n : 0\n if (selIndex >= 0) {\n this.setState({ keyboardIndex: selIndex })\n setTimeout(() => {\n if (this.mounted) this.scrollToOption(selIndex)\n }, 0)\n }\n } else {\n if ('function' == typeof this.removeGlobalEvents) this.removeGlobalEvents()\n setTimeout(() => {\n if (this.mounted) this.focusOn('FocusHolder')\n }, 0)\n }\n } else this.focusOn('FocusHolder')\n return false\n }\n\n @autobind\n selectOption(option) {\n const { allowReselection } = this.props\n this.filteredOptionsCache = null\n if (Map.isMap(option)) {\n const { valueOption } = this.state\n if (option != valueOption || allowReselection) {\n const { onSelect, placeholder } = this.props\n if ('function' == typeof onSelect) {\n const res = onSelect(option)\n this.setState({\n valueOption: false == res ? Map({ value: null, text: placeholder }) : option\n })\n } else {\n this.setState({ valueOption: option })\n }\n }\n }\n }\n\n @autobind\n clickOptionList(event) {\n stopEvent(event)\n const optionElement = event.target\n ? DOMfindParent(event.target, i => i.className && i.className.split(/\\s+/).includes('rfd-ui-select-option'), 32)\n : null\n const optionIndex = optionElement ? optionElement.dataset.index : null\n if (null != optionIndex) {\n const optionIndexInt = parseInt(optionIndex, 10)\n if (!isNaN(optionIndexInt)) {\n const option = this.filteredOptions().get(optionIndexInt)\n if (option && !option.get('disabled')) {\n this.closeOptionsList(true)\n this.selectOption(option)\n // to prevent from being highlighted when no keyboard used:\n setTimeout(() => {\n this.setState({ focused: false })\n }, 0)\n }\n }\n }\n return false\n }\n\n @autobind\n mouseEnterOptions() {\n this.mouseOverOptions = true\n }\n\n @autobind\n mouseLeavedOptions() {\n this.mouseOverOptions = false\n }\n\n @autobind\n mouseEnterOption(event) {\n const optionElement = event.target\n ? DOMfindParent(event.target, i => i.className && i.className.split(/\\s+/).includes('rfd-ui-select-option'), 32)\n : null\n const optionIndex = optionElement ? optionElement.dataset.index : null\n\n null != optionIndex && this.setState({ keyboardIndex: optionIndex })\n }\n\n @autobind\n closeOptionsList(refocus = false) {\n this.setState({ page: 1 })\n const { opened, onClose } = this.props\n if (null == opened) {\n if ('function' == typeof this.removeGlobalEvents) this.removeGlobalEvents()\n this.setState({\n opened: false,\n filter: '',\n optionIndex: null,\n keyboardIndex: null,\n focused: refocus\n })\n this.mouseOverOptions = false\n if (refocus) {\n setTimeout(() => {\n if (this.mounted) this.focusOn('FocusHolder')\n }, 0)\n }\n if ('function' === typeof onClose) {\n onClose()\n }\n }\n }\n\n @autobind\n setValueOption(\n value = this.props.value || Map(),\n options = this.fetchSelectOptions(),\n placeholder = this.props.placeholder\n ) {\n this.setState({\n valueOption: options.find(o => o.get('value') == value, null, Map({ value: null, text: placeholder || '' }))\n })\n }\n\n @autobind\n selectedOptionIndex(value = this.props.value || Map(), options = this.fetchSelectOptions()) {\n return options.findIndex(o => o.get('value') == value)\n }\n\n @autobind\n onFilterChange(event) {\n const value = event.target ? event.target.value : ''\n if (this.filterChangeDelayTimer) {\n clearTimeout(this.filterChangeDelayTimer)\n }\n this.filterChangeDelayTimer = setTimeout(() => {\n if (!this.mounted) return\n this.filterChangeDelayTimer = null\n this.setState({ filter: value, keyboardIndex: null, page: 1 })\n }, 180)\n }\n\n @autobind\n scrollToOption(index) {\n const list = this.refOptions\n if (list) {\n const listItems = list.children\n if (listItems) {\n const item = listItems[index]\n if (item) {\n try {\n const listScrollTop = list.scrollTop\n const itemTop = item.offsetTop - list.offsetTop\n if (itemTop < listScrollTop) {\n list.scrollTop = itemTop\n } else if (itemTop >= listScrollTop) {\n list.scrollTop = Math.max(0, itemTop)\n }\n } catch (error) {\n window.console && window.console.error && window.console.error('scrollToOption', index, error)\n }\n }\n }\n }\n }\n\n @autobind\n onKeyDown(event) {\n switch (event.keyCode) {\n case KEYCODE_UP: {\n stopEvent(event)\n if (!this.mouseOverOptions) {\n const { keyboardIndex } = this.state\n const options = this.filteredOptions()\n const newKeyboardIndex =\n null == keyboardIndex ? 0 : Math.min(options.count(), Math.max(-1, keyboardIndex - 1))\n this.setState({ keyboardIndex: newKeyboardIndex })\n this.scrollToOption(newKeyboardIndex)\n }\n return false\n }\n case KEYCODE_DOWN: {\n stopEvent(event)\n if (!this.mouseOverOptions) {\n const { keyboardIndex } = this.state\n const options = this.filteredOptions()\n const newKeyboardIndex =\n null == keyboardIndex ? 0 : Math.min(options.count(), Math.max(-1, keyboardIndex + 1))\n this.setState({ keyboardIndex: newKeyboardIndex })\n this.scrollToOption(newKeyboardIndex)\n this.onListScroll()\n }\n return false\n }\n case KEYCODE_PGUP: {\n stopEvent(event)\n if (!this.mouseOverOptions) {\n const { keyboardIndex } = this.state\n const options = this.filteredOptions()\n const newKeyboardIndex =\n null == keyboardIndex ? 0 : Math.min(options.count() - 1, Math.max(0, keyboardIndex - 7))\n this.setState({ keyboardIndex: newKeyboardIndex })\n this.scrollToOption(newKeyboardIndex)\n }\n return false\n }\n case KEYCODE_PGDOWN: {\n stopEvent(event)\n if (!this.mouseOverOptions) {\n const { keyboardIndex } = this.state\n const options = this.filteredOptions()\n const newKeyboardIndex =\n null == keyboardIndex ? 0 : Math.min(options.count() - 1, Math.max(0, keyboardIndex + 7))\n this.setState({ keyboardIndex: newKeyboardIndex })\n this.scrollToOption(newKeyboardIndex)\n this.onListScroll()\n }\n return false\n }\n case KEYCODE_HOME: {\n stopEvent(event)\n if (!this.mouseOverOptions) {\n this.setState({ keyboardIndex: 0 })\n this.scrollToOption(0)\n }\n return false\n }\n case KEYCODE_END: {\n stopEvent(event)\n if (!this.mouseOverOptions) {\n const options = this.filteredOptions()\n const newKeyboardIndex = options.count() - 1\n this.setState({ keyboardIndex: newKeyboardIndex })\n this.scrollToOption(newKeyboardIndex)\n this.onListScroll()\n }\n return false\n }\n case KEYCODE_ENTER: {\n const { keyboardIndex } = this.state\n const opened = null == this.props.opened ? this.state.opened : this.props.opened\n if (opened && null != keyboardIndex && keyboardIndex >= 0) {\n const option = this.filteredOptions().get(keyboardIndex)\n if (option) {\n this.closeOptionsList(true)\n this.selectOption(option)\n }\n } else if (!opened) {\n this.toggleOptions()\n } else if (opened) {\n this.setState({ keyboardIndex: 0 })\n this.scrollToOption(0)\n }\n break\n }\n case KEYCODE_SPACE: {\n const opened = null == this.props.opened ? this.state.opened : this.props.opened\n if (!opened) {\n this.toggleOptions()\n }\n break\n }\n case KEYCODE_ESC: {\n if (this.state.opened) {\n this.closeOptionsList(true)\n } else {\n this.setState({ focused: false }) // double esc removes highlight\n }\n break\n }\n case KEYCODE_TAB: {\n if (this.state.opened) {\n this.closeOptionsList()\n }\n break\n }\n }\n return true\n }\n\n @autobind\n onFocus() {\n this.setState({ focused: true })\n }\n\n @autobind\n onBlur() {\n this.setState({ focused: false })\n }\n\n @autobind\n onListScroll() {\n const options = this.fetchSelectOptions()\n if (\n this.state.opened &&\n this.refOptions.scrollHeight - this.refOptions.scrollTop - 1 <= this.refOptions.clientHeight &&\n !this.loading &&\n options.size > this.state.page * MAX_OPTIONS_NUMBER\n ) {\n this.loading = true\n const index = this.state.keyboardIndex\n setTimeout(() => {\n if (this.state.keyboardIndex > index) {\n this.setState({ keyboardIndex: index })\n }\n this.loading = false\n this.setState({ page: this.state.page + 1 })\n }, 500)\n }\n }\n\n @autobind\n filteredOptions(filter = this.state.filter) {\n const options = this.fetchSelectOptions()\n const { filterOptions, matchOptions, showSelected, filterStrategy = 'default' } = this.props\n const { valueOption } = this.state\n if (!filterOptions && showSelected && options.size <= MAX_OPTIONS_NUMBER) return options\n if (\n null != this.filteredOptionsCache &&\n filter == this.filteredOptionsCacheFor &&\n options.size <= MAX_OPTIONS_NUMBER\n ) {\n return this.filteredOptionsCache\n }\n const lcfilter = filter.toLocaleLowerCase ? filter.toLocaleLowerCase() : filter.toLowerCase()\n\n const filterStrategyFn = SELECT_FILTER_STRATEGIES[filterStrategy] || SELECT_FILTER_STRATEGIES.default\n const filterPriorities = new window.Map()\n\n const filtered = options\n .filter(o => {\n const text = o.has('text') ? String(o.get('text')) : ''\n const lctext = text.toLocaleLowerCase ? text.toLocaleLowerCase() : text.toLowerCase()\n const [match, priority] = lcfilter ? filterStrategyFn(lctext, lcfilter, o) : [true, 0]\n if (match) {\n filterPriorities.set(o, priority)\n }\n return (\n (match || (o.has('skipFilter') && o.get('skipFilter'))) &&\n (showSelected || //show or hide selected item\n valueOption.get('value') != o.get('value'))\n )\n })\n .map(o => {\n if (matchOptions && lcfilter.length) {\n const text = o.has('text') ? String(o.get('text')) : ''\n const lcText = text.toLocaleLowerCase ? text.toLocaleLowerCase() : text.toLowerCase()\n const lcIndex = lcText.indexOf(lcfilter)\n const matchedText = text.slice(lcIndex, lcIndex + lcfilter.length)\n return o.set(\n 'text',\n text.replace(matchedText, `<span class=\"rfd-ui-select-option-text-matched\">${matchedText}</span>`)\n )\n } else {\n return o\n }\n })\n .sort((a, b) => {\n const priorityA = filterPriorities.get(a) || 0\n const priorityB = filterPriorities.get(b) || 0\n return priorityB - priorityA\n })\n\n this.filteredOptionsCache = filtered\n this.filteredOptionsCacheFor = filter\n return filtered\n }\n\n @autobind\n defaultIsEmpty(value) {\n return null == value.get('value')\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n super.UNSAFE_componentWillReceiveProps(nextProps)\n if (nextProps.options != this.props.options || nextProps.value != this.props.value) {\n this.setValueOption(nextProps.value, this.fetchSelectOptions(nextProps.options), nextProps.placeholder)\n }\n if (nextProps.options != this.props.options) {\n this.filteredOptionsCache = null\n this.filteredOptionsCacheFor = null\n }\n if (null != nextProps.opened && nextProps.opened != this.props.opened) {\n this.setState({ opened: nextProps.opened })\n }\n if (nextProps.empty) {\n this.setState({\n valueOption: Map({ value: null, text: nextProps.placeholder || '' })\n })\n }\n }\n\n UNSAFE_componentWillMount() {\n super.UNSAFE_componentWillMount()\n this.filteredOptionsCache = null\n this.filteredOptionsCacheFor = null\n }\n\n componentDidMount() {\n super.componentDidMount()\n this.setValueOption()\n }\n\n componentWillUnmount() {\n super.componentWillUnmount()\n if ('function' == typeof this.removeGlobalEvents) {\n this.removeGlobalEvents()\n }\n this.filteredOptionsCache = null\n this.filteredOptionsCacheFor = null\n }\n\n @autobind\n fetchSelectOptions(options = this.props.options) {\n const { fetchedOptions } = this.state\n return ('function' == typeof options ? fetchedOptions : options) || List()\n }\n\n @autobind\n getText(valueOption) {\n const { buttonText } = this.props\n const optionText = valueOption.get('text') || valueOption.get('listText') || ''\n return 'function' == typeof buttonText ? buttonText(optionText) : optionText\n }\n\n @autobind\n renderButtonText(valueOption) {\n const optionCategory = valueOption.get('category')\n return (\n <span\n className=\"rfd-ui-select-button-text\"\n dangerouslySetInnerHTML={{\n __html: (optionCategory ? `<b>${optionCategory}: </b>` : '') + this.getText(valueOption)\n }}\n />\n )\n }\n\n @autobind\n renderButton() {\n const options = this.fetchSelectOptions()\n const { placeholder, filterPlaceholder, disabled, icon, fetching, newIcon } = this.props\n const { valueOption } = this.state\n const filterOptions = this.props.filterOptions || options.size > MAX_OPTIONS_NUMBER\n const opened = disabled ? false : null == this.props.opened ? this.state.opened : this.props.opened\n\n return !opened || (opened && !filterOptions) ? (\n <div\n className=\"rfd-ui-select-button\"\n id={`rfd-ui-select-${this.selectID}`}\n tabIndex={0}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-controls={`rfd-ui-select-${this.selectID}-panel`}\n aria-expanded=\"false\"\n aria-label={this.getText(valueOption)}\n ref={this.saveRef('FocusHolder')}\n onMouseDown={this.toggleOptions}\n onKeyDown={this.onKeyDown}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n >\n {fetching ? (\n <div className=\"rfd-ui-select-button-loader\">\n <LoaderDots dots={3} dotSize={4} height={16} />\n </div>\n ) : (\n <>\n {valueOption.get('icon') && <i className={`icon-aytmfd-${valueOption.get('icon')}`} />}\n {icon && <i className={`icon-aytmfd-${icon}`} />}\n {this.renderButtonText(valueOption)}\n {(options.size > 0 || 'function' == typeof this.props.options) &&\n (newIcon ? (\n <span className=\"icon-aytmfd-chevron-bracket\" />\n ) : (\n <span className=\"rfd-ui-select-button-arrow\" />\n ))}\n </>\n )}\n </div>\n ) : (\n <div className=\"rfd-ui-select-filter\">\n <input\n type=\"text\"\n placeholder={filterPlaceholder || placeholder}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-controls={`rfd-ui-select-${this.selectID}-panel`}\n aria-expanded=\"true\"\n aria-label={this.getText(valueOption)}\n ref={this.saveRef('Filter')}\n onChange={this.onFilterChange}\n onKeyDown={this.onKeyDown}\n />\n </div>\n )\n }\n\n renderOptions() {\n const options = this.fetchSelectOptions()\n const {\n width,\n disabled,\n noScroll,\n fullScreenOptions,\n smallHeight,\n descriptionOptions,\n matchOptions,\n matchNoPlaceholder,\n optionsMinHeight,\n optionsMaxHeight\n } = this.props\n const { valueOption, keyboardIndex, filter, page } = this.state\n const opened = disabled ? false : null == this.props.opened ? this.state.opened : this.props.opened\n const filteredOptions = this.filteredOptions()\n const loading = MAX_OPTIONS_NUMBER * page < filteredOptions.size\n\n const optionsHeight = fullScreenOptions && opened ? viewport().h - 40 : 'none'\n\n const DOMoptions =\n opened && options.size > 0\n ? filteredOptions.takeWhile((_x, i) => i <= Math.min(options.size, MAX_OPTIONS_NUMBER * page - 1))\n : List()\n\n const countedWidth = width ? (isNaN(Number(width)) ? width : Number(width)) : 200\n const containerWidth = isNaN(Number(countedWidth)) ? 'none' : countedWidth / (descriptionOptions ? 2 : 1)\n\n return opened && options.size > 0 ? (\n <div\n className=\"rfd-ui-select-container\"\n style={{\n width: containerWidth\n }}\n >\n <ul\n className=\"rfd-ui-select-options\"\n role=\"listbox\"\n id={`rfd-ui-select-${this.selectID}-panel`}\n onMouseDown={this.clickOptionList}\n onMouseEnter={this.mouseEnterOptions}\n onMouseLeave={this.mouseLeavedOptions}\n onScroll={this.onListScroll}\n style={{\n height: optionsHeight,\n minHeight:\n null != optionsMinHeight\n ? `${optionsMinHeight}px`\n : noScroll || fullScreenOptions\n ? 'none'\n : descriptionOptions\n ? smallHeight\n ? '115px'\n : '200px'\n : optionsHeight,\n maxHeight:\n null != optionsMaxHeight\n ? `${optionsMaxHeight}px`\n : noScroll || fullScreenOptions\n ? 'none'\n : smallHeight\n ? '115px'\n : '200px'\n }}\n ref={this.saveRef('Options')}\n >\n {(() => {\n const DOMoptions = filteredOptions\n .takeWhile((_x, i) => i <= Math.min(options.size, MAX_OPTIONS_NUMBER * page - 1))\n .map((o, oi) => {\n const selected = valueOption.get('value') == o.get('value')\n const ariaSelected = null != keyboardIndex && 0 <= keyboardIndex ? keyboardIndex == oi : selected\n const icon = o.get(selected ? 'selectedIcon' : 'icon')\n return (\n <li\n className={classNames('rfd-ui-select-option', {\n 'rfd-ui-select-option-selected': selected,\n 'rfd-ui-select-option-current': keyboardIndex == oi,\n 'rfd-ui-select-option-first': 0 == oi,\n 'rfd-ui-select-option-disabled': o.get('disabled')\n })}\n role=\"option\"\n aria-selected={ariaSelected}\n aria-activedescendant={ariaSelected ? `rfd-ui-select-${this.selectID}` : null}\n aria-label={o.get('text')}\n onMouseEnter={this.mouseEnterOption}\n data-index={oi}\n key={oi}\n >\n <div\n className=\"rfd-ui-select-option-text\"\n dangerouslySetInnerHTML={{\n __html:\n (icon ? `<i class='icon-aytmfd-${icon}'></i>` : '') +\n (o.get('category') ? `<b>${o.get('category')}: </b>` : '') +\n (o.get('listText') || o.get('text'))\n }}\n />\n </li>\n )\n })\n return (\n loading\n ? DOMoptions.push(\n <li className=\"rfd-ui-select-option rfd-ui-loading-sign\" data-index={-1} key={-1}>\n <span className=\"rfd-ui-select-option-text rfd-ui-select-loader\">\n <LoaderWave bars={5} height={10} />\n </span>\n </li>\n )\n : filter.length && matchOptions && matchNoPlaceholder.length && !DOMoptions.size\n ? DOMoptions.push(\n <li className=\"rfd-ui-select-option\" data-index={-1} key={-1}>\n <div\n className=\"rfd-ui-select-option-text\"\n dangerouslySetInnerHTML={{\n __html: matchNoPlaceholder\n }}\n />\n </li>\n )\n : DOMoptions\n ).toArray()\n })()}\n </ul>\n {descriptionOptions &&\n (() => {\n const option = DOMoptions.get(keyboardIndex)\n return (\n <div\n className=\"rfd-ui-select-description\"\n dangerouslySetInnerHTML={{\n __html: (option && option.get('description')) || ''\n }}\n style={{\n width: containerWidth\n }}\n />\n )\n })()}\n </div>\n ) : null\n }\n\n render() {\n const options = this.fetchSelectOptions()\n const { width, error, disabled, drop, theme, fullScreenOptions, className, dataTestId } = this.props\n const { valueOption, flipped } = this.state\n const opened = disabled ? false : null == this.props.opened ? this.state.opened : this.props.opened\n const focused = !disabled && (this.state.focused || this.state.opened)\n\n const isEmpty =\n 'function' == typeof this.props.isEmpty\n ? this.props.isEmpty(valueOption, options)\n : null == this.props.isEmpty\n ? this.defaultIsEmpty(valueOption, options)\n : Boolean(this.props.isEmpty)\n\n return (\n <div\n className={classNames('rfd-ui-select', className, {\n 'rfd-ui-select-opened': opened,\n 'rfd-ui-select-focused': focused,\n 'rfd-ui-select-error': error,\n 'rfd-ui-select-disabled': disabled,\n 'rfd-ui-select-empty': isEmpty,\n 'rfd-ui-select-mobile': fullScreenOptions && !opened,\n 'rfd-ui-select-fullscreen': fullScreenOptions && opened,\n 'rfd-ui-select-up': 'up' == drop || flipped,\n [`rfd-ui-select-theme-${theme}`]: theme\n })}\n data-testid={dataTestId}\n style={fullScreenOptions && opened ? {} : { width: width ? width : 200 }}\n ref={this.saveRef('Root')}\n >\n {this.renderButton()}\n {this.renderOptions()}\n </div>\n )\n }\n}\n","/**\n * Fuzzy test for string matching pattern.\n * @param {string} str - String to test.\n * @param {string} pattern - Pattern to match.\n * @returns {boolean} - True if string matches pattern.\n */\nexport function fuzzyTest(str: string, pattern: string) {\n let patternIdx = 0\n let stringIdx = 0\n while (patternIdx < pattern.length && stringIdx < str.length) {\n if (pattern[patternIdx] === str[stringIdx]) {\n patternIdx++\n stringIdx++\n } else {\n stringIdx++\n }\n }\n return patternIdx === pattern.length\n}\n\n/**\n * Fuzzy match string with pattern and return matched parts.\n * @param {string} str - String to match.\n * @param {string} pattern - Pattern to match.\n * @returns {Array} - [ longestMatchedSequenceLength, unmatchedPart, matchedPart, unmatchedPart, matchedPart, ... ]\n */\nexport function fuzzyMatch(str: string, pattern: string) {\n const patternLength = pattern.length\n const strLength = str.length\n\n if (0 === patternLength || patternLength > strLength) {\n return [0, str]\n } else if (1 === patternLength) {\n const matchFrom = str.indexOf(pattern)\n return -1 === matchFrom ? [0, str] : [1, str.slice(0, matchFrom), pattern, str.slice(matchFrom + 1)]\n } else if (pattern === str) {\n return [patternLength, '', pattern]\n }\n\n const result: [number, ...string[]] = [0]\n let currentPart = ''\n let currentPartMatched = false\n\n let patternIdx = 0\n let stringIdx = 0\n while (patternIdx < patternLength && stringIdx < strLength) {\n if (pattern[patternIdx] === str[stringIdx]) {\n if (!currentPartMatched) {\n result.push(currentPart)\n currentPart = ''\n currentPartMatched = true\n }\n currentPart += str[stringIdx]\n patternIdx++\n stringIdx++\n } else {\n if (currentPartMatched) {\n if (result[0] < currentPart.length) {\n result[0] = currentPart.length\n }\n result.push(currentPart)\n currentPart = ''\n currentPartMatched = false\n }\n currentPart += str[stringIdx]\n stringIdx++\n }\n }\n\n if (patternIdx === patternLength) {\n if (currentPart.length) {\n if (result[0] < currentPart.length) {\n result[0] = currentPart.length\n }\n result.push(currentPart)\n }\n if (stringIdx < strLength) {\n result.push(str.slice(stringIdx))\n }\n return result\n } else {\n return [0, str]\n }\n}\n\n/**\n * Calculates the Levenshtein distance between two strings, returning counts for each operation.\n *\n * The Levenshtein distance is a measure of the difference between two sequences.\n * This function returns the count of each type of single-character edit (substitutions,\n * insertions, and deletions) required to change one word into the other.\n *\n * @param {string} s1 - The first string to compare.\n * @param {string} s2 - The second string to compare.\n * @returns {[number, number, number]} An array containing the counts of [substitutions, insertions, deletions].\n * If maxDistance is provided and the actual distance exceeds it,\n * the function may return counts that sum to a value greater than maxDistance.\n *\n * @example\n * levenshteinDistance(\"kitten\", \"sitting\"); // returns [1, 1, 1]\n */\nexport function levenshteinDistance(s1: string, s2: string): [number, number, number] {\n const m = s1.length\n const n = s2.length\n const dp: number[][] = Array<number[]>(m + 1)\n .fill(null)\n .map(() => Array<number>(n + 1).fill(0))\n\n // Initialize the first row and column\n for (let i = 0; i <= m; i++) dp[i][0] = i\n for (let j = 0; j <= n; j++) dp[0][j] = j\n\n // Fill the dp table\n for (let i = 1; i <= m; i++) {\n for (let j = 1; j <= n; j++) {\n dp[i][j] =\n s1[i - 1] === s2[j - 1]\n ? dp[i - 1][j - 1]\n : Math.min(\n dp[i - 1][j] + 1, // deletion\n dp[i][j - 1] + 1, // insertion\n dp[i - 1][j - 1] + 1 // substitution\n )\n }\n }\n\n // Backtrack to count operations\n let substitutions = 0\n let insertions = 0\n let deletions = 0\n let i = m\n let j = n\n while (i > 0 || j > 0) {\n if (i > 0 && j > 0 && s1[i - 1] === s2[j - 1]) {\n i--\n j--\n } else if (i > 0 && j > 0 && dp[i][j] === dp[i - 1][j - 1] + 1) {\n substitutions++\n i--\n j--\n } else if (i > 0 && dp[i][j] === dp[i - 1][j] + 1) {\n deletions++\n i--\n } else {\n insertions++\n j--\n }\n }\n\n return [substitutions, insertions, deletions]\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport TextareaAutosize from 'react-autosize-textarea'\nimport autobind from 'autobind-decorator'\nimport { listPipe } from '@aytm/lib/common/func'\n\nimport { PureDataComponent } from '@aytm/lib/common/components/pure-component'\n\nimport MaskedInput from '@aytm/lib/rfd-ui/components/basic/masked-input'\n\nimport '@aytm/lib/rfd-ui/styles/basic/text-field.scss'\n\nexport default class TextField extends PureDataComponent {\n static propTypes = {\n value: PropTypes.string,\n defaultValue: PropTypes.string,\n placeholder: PropTypes.string,\n inputType: PropTypes.string,\n autoFocus: PropTypes.bool,\n readOnly: PropTypes.bool,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n debounce: PropTypes.number,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n active: PropTypes.bool,\n error: PropTypes.bool,\n icon: PropTypes.string,\n iconColor: PropTypes.string,\n onIconClick: PropTypes.func,\n charLimit: PropTypes.number,\n counterWidth: PropTypes.number,\n prefix: PropTypes.string,\n prefixWidth: PropTypes.number,\n filter: PropTypes.func,\n format: PropTypes.func,\n rows: PropTypes.number,\n theme: PropTypes.string,\n // masking params :\n maskPattern: PropTypes.string,\n maskPlaceholderChar: PropTypes.string,\n maskFormatCharacters: PropTypes.object,\n maskSub: PropTypes.string\n }\n\n constructor(props) {\n super(props)\n this.state = {\n focused: false,\n value: ''\n }\n this.debounceTimeout = null\n this.debouncePrevValue = null\n }\n\n @autobind\n onFocus(event) {\n const { onFocus } = this.props\n if ('function' == typeof onFocus) onFocus(event)\n this.setState({ focused: true })\n }\n\n @autobind\n focus() {\n if (this.refInput) {\n this.refInput.focus()\n return true\n }\n return false\n }\n\n @autobind\n onBlur(event) {\n const { onBlur } = this.props\n const newValue = listPipe(\n [\n v => {\n const { format } = this.props\n return 'function' == typeof format ? format(v) || '' : v\n }\n ],\n ((this.refInput instanceof MaskedInput ? this.refInput.refInput : this.refInput) || event.target).value || ''\n )\n if ('function' == typeof this.props.onBlur) onBlur(event)\n const { value: prevValue } = this.state\n this.setState(\n {\n value: newValue,\n focused: false\n },\n () => {\n this.sendUpdate(newValue, prevValue, null, false)\n }\n )\n }\n\n @autobind\n onChange(event) {\n // const { resizable } = this.props\n const newValue = listPipe(\n [\n v => {\n const { charLimit } = this.props\n return null != charLimit && v.length > charLimit ? v.slice(0, Math.max(0, charLimit)) : v\n },\n v => {\n const { filter } = this.props\n return 'function' == typeof filter ? filter(v) || '' : v\n }\n ],\n (this.refInput || event.target).value || ''\n )\n const { value: prevValue } = this.state\n // console.log(this.refInput.height)\n // if (resizable && this.refInput.cols) {\n // const rows = Math.max(this.props.rows, this.refInput.textLength / this.refInput.cols)\n // if (rows != this.state.rows)\n // this.setState({ rows: rows })\n // }\n this.setState({ value: newValue }, () => {\n this.sendUpdate(newValue, prevValue)\n })\n return { newValue, prevValue }\n }\n\n @autobind\n onMaskedChange(newValue, prevValue, data) {\n return this.sendUpdate(newValue, prevValue, data)\n }\n\n @autobind\n sendUpdate(newValue, prevValue, data, debounce = this.props.debounce) {\n const { onChange } = this.props\n if (newValue != prevValue && 'function' == typeof onChange) {\n if (debounce) {\n if (this.debounceTimeout) clearTimeout(this.debounceTimeout)\n this.debounceTimeout = setTimeout(() => {\n if (this.mounted) onChange(newValue, prevValue, data)\n this.debounceTimeout = null\n }, debounce)\n } else if (this.mounted) {\n onChange(newValue, prevValue, data)\n }\n }\n return { newValue, prevValue, data }\n }\n\n componentDidMount() {\n super.componentDidMount()\n const { value, defaultValue, format, autoFocus } = this.props\n const initValue = value || defaultValue\n if (initValue) {\n this.setState({\n value: 'function' == typeof format ? this.props.format(initValue) : initValue\n })\n }\n if (autoFocus) this.focus()\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.value !== this.props.value && this.props.value !== this.state.value) {\n this.setState({ value: this.props.value || '' })\n }\n }\n\n //TODO: consider breaking into subrenders\n render() {\n const {\n width,\n icon,\n iconColor,\n active,\n error,\n style,\n className,\n placeholder,\n readOnly,\n maskPattern,\n maskPlaceholderChar,\n maskFormatCharacters,\n maskSub,\n onIconClick,\n onFocus,\n onBlur,\n onChange,\n debounce,\n value,\n defaultValue,\n charLimit,\n prefix,\n postfix,\n theme,\n format,\n filter,\n counterWidth,\n prefixWidth,\n postfixWidth,\n cols,\n rows,\n autoFocus,\n resizableHeight,\n inputType = 'text',\n ...otherProps\n } = this.props\n\n const { focused, value: sValue } = this.state\n const innerPaddingRight = listPipe(\n [\n p => (icon ? (p || 0) + 33 : p),\n p => (postfix ? (null == postfixWidth ? p + 15 : p + postfixWidth) : p),\n p =>\n !maskPattern && charLimit\n ? (p || 0) + (counterWidth ? counterWidth || 33 : Number(String(charLimit).length))\n : p\n ],\n null\n )\n const innerPaddingLeft = prefix ? (null == prefixWidth ? 26 : prefixWidth + 16) : null\n // if (autoFocus) this.focus()\n\n return (\n <div\n className={classNames('rfd-ui-text-field', className, {\n 'rfd-ui-text-field-active': active,\n 'rfd-ui-text-field-error': error,\n 'rfd-ui-text-field-focused': focused,\n 'rfd-ui-text-field-readonly': readOnly,\n 'rfd-ui-text-field-area': !maskPattern && rows,\n [`rfd-ui-text-field-${theme}`]: theme\n })}\n style={{ width }}\n >\n <div\n className=\"rfd-ui-text-field-inner\"\n style={{\n padding: !maskPattern && rows ? 0 : 'small' == theme ? 3 : 7,\n paddingRight: !maskPattern && rows ? 0 : innerPaddingRight,\n paddingLeft: !maskPattern && rows ? 0 : innerPaddingLeft\n }}\n >\n {icon && (\n <i\n className={`rfd-ui-text-field-icon ${icon}`}\n style={{\n color: iconColor,\n cursor: onIconClick ? 'pointer' : null\n }}\n onClick={onIconClick}\n />\n )}\n {prefix && (\n <span className=\"rfd-ui-text-field-prefix\" style={{ width: prefixWidth }}>\n {prefix}\n </span>\n )}\n {!maskPattern && charLimit && (\n <span\n className=\"rfd-ui-text-field-counter\"\n style={{\n right: icon ? 33 : rows ? 16 : 7,\n width: counterWidth ? String(charLimit).length * 10 : String(charLimit).length * 10\n }}\n >\n {charLimit - sValue.length}\n </span>\n )}\n {!(maskPattern || rows) && (\n <input\n className={`rfd-ui-text-field-input ${postfix ? 'right' : ''}`}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n onChange={this.onChange}\n value={sValue}\n readOnly={readOnly}\n placeholder={placeholder}\n ref={this.saveRef('Input')}\n type={inputType}\n {...otherProps}\n />\n )}\n {!maskPattern && rows && resizableHeight && (\n <TextareaAutosize\n autoFocus={autoFocus}\n className=\"rfd-ui-text-area-field\"\n cols={cols ? cols : width ? Math.abs(width / 15) : null}\n rows={rows}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n onChange={this.onChange}\n value={sValue}\n readOnly={readOnly}\n placeholder={placeholder}\n innerRef={this.saveRef('Input')}\n type=\"text\"\n style={{ paddingRight: innerPaddingRight + 8, paddingLeft: innerPaddingLeft }}\n {...otherProps}\n />\n )}\n {maskPattern && (\n <MaskedInput\n className=\"rfd-ui-text-field-input rfd-ui-text-field-masked-input\"\n pattern={maskPattern}\n placeholderChar={maskPlaceholderChar}\n formatCharacters={maskFormatCharacters}\n sub={maskSub}\n width={width ? width : 200}\n value={sValue}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n onChange={this.onMaskedChange}\n ref={this.saveRef('Input')}\n {...otherProps}\n />\n )}\n {postfix && (\n <span className=\"rfd-ui-text-field-postfix\" style={{ width: postfixWidth }}>\n {postfix}\n </span>\n )}\n </div>\n </div>\n )\n }\n}\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport Popup, { PopupTrigger } from '@aytm/lib/rfd-ui/components/basic/popup'\n\nimport '@aytm/lib/rfd-ui/styles/basic/text-popup.scss'\n\nexport default class TextPopup extends Component {\n static propTypes = {\n trigger: PropTypes.string,\n text: PropTypes.string,\n content: PropTypes.string\n }\n\n @autobind\n renderContent() {\n const { content } = this.props\n\n return <div dangerouslySetInnerHTML={{ __html: content }} />\n }\n\n render() {\n const { trigger = 'hover', text, ...props } = this.props\n return (\n <PopupTrigger trigger={trigger}>\n <Popup\n width=\"350px\"\n className=\"rfd-ui-popup-notification\"\n direction=\"topright\"\n headerCloseButton={false}\n {...props}\n content={this.renderContent}\n >\n <span className=\"rfd-ui-popup-notification-link\" dangerouslySetInnerHTML={{ __html: text }} />\n </Popup>\n </PopupTrigger>\n )\n }\n}\n","import { Buffer } from 'buffer'\nimport zlib from 'zlib'\nimport localForage from 'localforage'\n// const logger = require('debug')('lib:storage')\n// const logger = (...args) => console.debug('lib:storage:', ...args)\n\nconst Encode = (object = {}) =>\n new Promise((resolve, reject) => {\n const plaintext = JSON.stringify(object)\n zlib.gzip(plaintext, function (err, buf) {\n const buffer = Buffer.from(buf)\n const b64 = buffer.toString('base64')\n // logger(`plaintext_size: ${plaintext.length}; gzipped_size: ${buffer.length}; base64_size: ${b64.length}`)\n if (err) reject(err)\n else resolve(b64)\n })\n })\n\nconst Decode = b64String =>\n new Promise((resolve, reject) => {\n zlib.gunzip(Buffer.from(b64String, 'base64'), function (err, buf) {\n if (err) reject(err)\n else resolve(JSON.parse(buf.toString()))\n })\n })\n\nconst stores = {}\nconst Store = name => {\n if (!name || !name.length) return null\n if (stores[name]) return stores[name]\n stores[name] = localForage.createInstance({ name })\n return stores[name] || null\n}\n\nconst Dummy = () => new Promise(resolve => resolve())\n\nconst SetData = (storeName, key, value) => {\n const store = Store(storeName)\n return null != store ? store.setItem(key, Encode(value)) : Dummy()\n}\nconst GetData = (storeName, keys) => {\n const store = Store(storeName)\n return null != store\n ? Promise.all(keys.map(key => store.getItem(key).then(data => (data ? Decode(data) : data))))\n : Dummy()\n}\nconst GetByKey = (storeName, key) => {\n const store = Store(storeName)\n return null != store ? store.getItem(key).then(data => (data ? Decode(data) : data)) : Dummy()\n}\nconst ClearData = (storeName, keys) => {\n const store = Store(storeName)\n return null != store ? Promise.all(keys.map(key => store.removeItem(key))) : Dummy()\n}\nconst DataKeys = storeName => {\n const store = Store(storeName)\n return null != store ? store.keys() : Dummy()\n}\n\nexport const Storage = {\n Encode,\n Decode,\n Store,\n ClearData,\n DataKeys,\n GetByKey,\n GetData,\n SetData,\n Dummy\n}\n\nif ('undefined' !== typeof window && !window['$STRG']) {\n window['$STRG'] = Object.assign({}, Storage)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"index-module__component___3c7ov\",\"button\":\"index-module__button___1HEPt\",\"input\":\"index-module__input___1i6h_\",\"icon\":\"index-module__icon___2aw16\",\"label\":\"index-module__label___pZ4Mo\",\"upload-icon\":\"index-module__upload-icon___Qia74\",\"lock-icon\":\"index-module__lock-icon___1cEZT\",\"button-active\":\"index-module__button-active___2lP_k\",\"component-note\":\"index-module__component-note___Ns2T9\",\"component-warning\":\"index-module__component-warning___3M6g5\",\"component-warning-active\":\"index-module__component-warning-active___3NoQG\",\"component-error\":\"index-module__component-error___19Jug\",\"component-disabled\":\"index-module__component-disabled___3y7_Y\",\"component-disabled-active\":\"index-module__component-disabled-active___112wN\",\"component-popup-anchor\":\"index-module__component-popup-anchor___1_vky\"};","// extracted by mini-css-extract-plugin\nexport default {\"comment-container\":\"OEItem-module__comment-container___3Pg9N\",\"comment-tools-toggler\":\"OEItem-module__comment-tools-toggler___3YYjR\",\"active\":\"OEItem-module__active___1c_-x\",\"tag-container\":\"OEItem-module__tag-container___20s8E\",\"debug-tag\":\"OEItem-module__debug-tag___1zHLO\",\"junk\":\"OEItem-module__junk___jJClo\",\"junk-1\":\"OEItem-module__junk-1___a2_dq\",\"junk-2\":\"OEItem-module__junk-2___1vfn2\",\"sentiment-manual\":\"OEItem-module__sentiment-manual___3gGUP\",\"sentiment-skipper\":\"OEItem-module__sentiment-skipper___1nkAH\",\"sentiment-1\":\"OEItem-module__sentiment-1___vOxPa\",\"sentiment-allennlp-1\":\"OEItem-module__sentiment-allennlp-1___1BGxW\",\"sentiment-textpipe-1\":\"OEItem-module__sentiment-textpipe-1___2buR5\",\"sentiment-aws-1\":\"OEItem-module__sentiment-aws-1___1TuOi\",\"sentiment-2\":\"OEItem-module__sentiment-2___1lOQM\",\"sentiment-allennlp-2\":\"OEItem-module__sentiment-allennlp-2___2vGKO\",\"sentiment-textpipe-2\":\"OEItem-module__sentiment-textpipe-2___IUFEZ\",\"sentiment-aws-2\":\"OEItem-module__sentiment-aws-2___1G-kw\",\"sentiment-3\":\"OEItem-module__sentiment-3___1j6Tu\",\"sentiment-allennlp-3\":\"OEItem-module__sentiment-allennlp-3___1h3ws\",\"sentiment-textpipe-3\":\"OEItem-module__sentiment-textpipe-3___24kvm\",\"sentiment-aws-3\":\"OEItem-module__sentiment-aws-3___NLHPP\",\"sentiment-4\":\"OEItem-module__sentiment-4___1FuFq\",\"sentiment-allennlp-4\":\"OEItem-module__sentiment-allennlp-4___3YdBm\",\"sentiment-textpipe-4\":\"OEItem-module__sentiment-textpipe-4___2o3uc\",\"sentiment-aws-4\":\"OEItem-module__sentiment-aws-4___2parr\",\"sentiment-aws\":\"OEItem-module__sentiment-aws___3_6fR\",\"NER-PERSON\":\"OEItem-module__NER-PERSON___irl3A\",\"NER-PER\":\"OEItem-module__NER-PER___1LN5w\",\"NER-ORG\":\"OEItem-module__NER-ORG___1Eu3Z\",\"NER-NORP\":\"OEItem-module__NER-NORP___aCclG\",\"NER-GPE\":\"OEItem-module__NER-GPE___28Rg0\",\"NER-LOC\":\"OEItem-module__NER-LOC___1ORup\",\"NER-PRODUCT\":\"OEItem-module__NER-PRODUCT___qwbGa\",\"NER-LAW\":\"OEItem-module__NER-LAW___m0sGF\",\"NER-EVENT\":\"OEItem-module__NER-EVENT___1ckFR\",\"NER-MISC\":\"OEItem-module__NER-MISC___1umzd\",\"NER-DATE\":\"OEItem-module__NER-DATE___1hJsf\",\"NER-TIME\":\"OEItem-module__NER-TIME___1hLFa\",\"NER-PERCENT\":\"OEItem-module__NER-PERCENT___1I8_x\",\"NER-MONEY\":\"OEItem-module__NER-MONEY___1QiuX\",\"NER-QUANTITY\":\"OEItem-module__NER-QUANTITY___30vbv\",\"NER-ORDINAL\":\"OEItem-module__NER-ORDINAL___1GHAV\",\"NER-CARDINAL\":\"OEItem-module__NER-CARDINAL___47YL5\",\"comment-body\":\"OEItem-module__comment-body___hPcnu\",\"sentiment-None\":\"OEItem-module__sentiment-None___1LtA5\",\"sentiment-junk\":\"OEItem-module__sentiment-junk___gCzKH\",\"sentiment-Negative\":\"OEItem-module__sentiment-Negative___ihX7x\",\"sentiment-Neutral\":\"OEItem-module__sentiment-Neutral___P--cc\",\"sentiment-Positive\":\"OEItem-module__sentiment-Positive___2N6LI\",\"sentiment-Mixed\":\"OEItem-module__sentiment-Mixed___2Pdw6\",\"comment-body-item\":\"OEItem-module__comment-body-item___2r2bN\",\"comment-header\":\"OEItem-module__comment-header___1X7Pr\",\"question-offset-0\":\"OEItem-module__question-offset-0___1k6is\",\"question-offset-1\":\"OEItem-module__question-offset-1___1eBsV\",\"question-offset-2\":\"OEItem-module__question-offset-2___1-Z6f\",\"question-offset-3\":\"OEItem-module__question-offset-3___3-uJC\",\"question-offset-4\":\"OEItem-module__question-offset-4___1WmM1\",\"question-offset-5\":\"OEItem-module__question-offset-5___3aWJ3\",\"question-offset-6\":\"OEItem-module__question-offset-6___3zbSQ\",\"comment-answer\":\"OEItem-module__comment-answer___1nJ_r\",\"sentiment-container\":\"OEItem-module__sentiment-container___dKlHb\",\"comment-tools-container\":\"OEItem-module__comment-tools-container___1IYYS\",\"is-active\":\"OEItem-module__is-active___3OHEK\",\"sentiment-container-label\":\"OEItem-module__sentiment-container-label___1tX3l\",\"sentiment-container-item\":\"OEItem-module__sentiment-container-item___3bTHl\",\"sentiment-container-item-loading\":\"OEItem-module__sentiment-container-item-loading___1w5t0\",\"sentiment-container-item-icon\":\"OEItem-module__sentiment-container-item-icon___1G2sF\",\"sentiment-select\":\"OEItem-module__sentiment-select___2DBbU\",\"sentiment-select-item\":\"OEItem-module__sentiment-select-item___3YU0f\",\"sentiment-select-item-icon\":\"OEItem-module__sentiment-select-item-icon___1oLhO\",\"color-sentiment-None\":\"OEItem-module__color-sentiment-None___2CkeF\",\"color-sentiment-Negative\":\"OEItem-module__color-sentiment-Negative___yjW-D\",\"color-sentiment-Neutral\":\"OEItem-module__color-sentiment-Neutral___yHks9\",\"color-sentiment-Positive\":\"OEItem-module__color-sentiment-Positive___3buhr\",\"color-sentiment-Mixed\":\"OEItem-module__color-sentiment-Mixed___1feGb\",\"background-sentiment-None\":\"OEItem-module__background-sentiment-None___3q0Ho\",\"background-sentiment-Negative\":\"OEItem-module__background-sentiment-Negative___1xPHg\",\"background-sentiment-Neutral\":\"OEItem-module__background-sentiment-Neutral___2HHR-\",\"background-sentiment-Positive\":\"OEItem-module__background-sentiment-Positive___23AyN\",\"background-sentiment-Mixed\":\"OEItem-module__background-sentiment-Mixed___2JiFt\",\"comment-tools-dnd-dropzone\":\"OEItem-module__comment-tools-dnd-dropzone___65n4A\",\"comment-tools-dnd-dropzone-inner\":\"OEItem-module__comment-tools-dnd-dropzone-inner___1jYDL\",\"comment-tools-dnd-dropzone-inner-text\":\"OEItem-module__comment-tools-dnd-dropzone-inner-text___2z8cQ\",\"has-download\":\"OEItem-module__has-download___1d19U\",\"comment-answer-image\":\"OEItem-module__comment-answer-image___Nvn0c\",\"comment-answer-video\":\"OEItem-module__comment-answer-video___mhnFA\",\"download-button\":\"OEItem-module__download-button___3VGN6\",\"comment-answer-video-poster\":\"OEItem-module__comment-answer-video-poster___jNyqi\",\"comment-answer-block\":\"OEItem-module__comment-answer-block___3Qkn9\",\"popupContent\":\"OEItem-module__popupContent___3yVUZ\",\"spanPopup\":\"OEItem-module__spanPopup___2QIEG\",\"selectPopup\":\"OEItem-module__selectPopup___1c9Q7\",\"iconAll\":\"OEItem-module__iconAll___2agxe\",\"stop\":\"OEItem-module__stop___2k3QU\",\"iconAllConfig\":\"OEItem-module__iconAllConfig___32e2z\",\"comment-answer-block-container\":\"OEItem-module__comment-answer-block-container____vDpR\",\"comment-answer-block-header\":\"OEItem-module__comment-answer-block-header___ky0me\",\"spinner\":\"OEItem-module__spinner___16O5d\",\"icon\":\"OEItem-module__icon___2TrPh\",\"comment-answer-block-text\":\"OEItem-module__comment-answer-block-text___3JQvf\",\"comment-answer-text\":\"OEItem-module__comment-answer-text___1P3q7\",\"added\":\"OEItem-module__added___14k3f\",\"removed\":\"OEItem-module__removed___35QCm\",\"comment-answer-dnd-active\":\"OEItem-module__comment-answer-dnd-active___2KZnu\",\"no-title\":\"OEItem-module__no-title___2maut\",\"no-header\":\"OEItem-module__no-header___ud-NX\"};","// extracted by mini-css-extract-plugin\nexport default {\"comment-header-question-title-name\":\"OEQuestionTitle-module__comment-header-question-title-name___2RYG1\",\"comment-header-question-title-thumbnail\":\"OEQuestionTitle-module__comment-header-question-title-thumbnail___VJFcx\"};","// extracted by mini-css-extract-plugin\nexport default {\"response-container\":\"Response-module__response-container___13Xoi\",\"is-rejected\":\"Response-module__is-rejected___2jAKr\",\"response-header\":\"Response-module__response-header___3FhmP\",\"response-header-reject\":\"Response-module__response-header-reject___3ORiR\",\"response-traits\":\"Response-module__response-traits___30eNq\",\"response-body\":\"Response-module__response-body___DkIl4\",\"response-rejected-info\":\"Response-module__response-rejected-info___2Y_CJ\",\"response-header-title\":\"Response-module__response-header-title___aMzOy\",\"response-header-title-time\":\"Response-module__response-header-title-time___2EFiR\",\"response-header-title-show-responses\":\"Response-module__response-header-title-show-responses___D1dcJ\",\"response-header-right\":\"Response-module__response-header-right___1xUTg\",\"response-header-approve\":\"Response-module__response-header-approve___1gmmf\",\"response-header-questions-order\":\"Response-module__response-header-questions-order___3opNi\",\"response-header-kudos\":\"Response-module__response-header-kudos___1lUcH\",\"response-header-menu\":\"Response-module__response-header-menu___18F5O\",\"non-kudos\":\"Response-module__non-kudos___3ubTy\",\"kudos-revertable\":\"Response-module__kudos-revertable___2r09c\",\"has-notification\":\"Response-module__has-notification___31mKY\",\"response-header-reject-inline-select\":\"Response-module__response-header-reject-inline-select___1BE3K\",\"response-header-menu-dropdown\":\"Response-module__response-header-menu-dropdown___1FDcA\",\"response-header-confirmation-button\":\"Response-module__response-header-confirmation-button___1-_jC\",\"reject-confirm\":\"Response-module__reject-confirm___3KjiR\",\"kudos-confirm\":\"Response-module__kudos-confirm___3jTzE\",\"response-header-confirmation\":\"Response-module__response-header-confirmation___xeqlf\",\"reject-confirmation\":\"Response-module__reject-confirmation___1NJPo\",\"response-dialog-triangle\":\"Response-module__response-dialog-triangle___371uE\",\"sentiment-None\":\"Response-module__sentiment-None___1sCQc\",\"sentiment-junk\":\"Response-module__sentiment-junk___37qbA\",\"sentiment-Negative\":\"Response-module__sentiment-Negative___1NWHi\",\"sentiment-Mixed\":\"Response-module__sentiment-Mixed___2vv3E\",\"sentiment-Neutral\":\"Response-module__sentiment-Neutral___NwS37\",\"sentiment-Positive\":\"Response-module__sentiment-Positive___2ky2l\",\"tag-container\":\"Response-module__tag-container___3qSsO\",\"noborder\":\"Response-module__noborder___3I05_\"};","// extracted by mini-css-extract-plugin\nexport default {\"comments-search-input-advanced-switch\":\"SearchInput-module__comments-search-input-advanced-switch___2klSZ\",\"comments-search-input-container\":\"SearchInput-module__comments-search-input-container___2WRF2\",\"comments-search-icon\":\"SearchInput-module__comments-search-icon___1CvDC\",\"comments-search-input-value\":\"SearchInput-module__comments-search-input-value___1YoMZ\",\"comments-search-input-sub-value\":\"SearchInput-module__comments-search-input-sub-value___2tgME\",\"comments-search-input-uid\":\"SearchInput-module__comments-search-input-uid___26TIP\",\"comments-search-icon-overlay\":\"SearchInput-module__comments-search-icon-overlay___1aqLM\"};","// extracted by mini-css-extract-plugin\nexport default {\"sentiment-container\":\"Sentiments-module__sentiment-container___1cUhF\",\"is-active\":\"Sentiments-module__is-active___34pbb\",\"sentiment-container-label\":\"Sentiments-module__sentiment-container-label___1DFdK\",\"sentiment-container-item\":\"Sentiments-module__sentiment-container-item___32fMY\",\"sentiment-container-item-loading\":\"Sentiments-module__sentiment-container-item-loading___2FKZE\",\"sentiment-container-item-icon\":\"Sentiments-module__sentiment-container-item-icon___2l7KS\",\"sentiment-select\":\"Sentiments-module__sentiment-select___1g_JY\",\"sentiment-select-item\":\"Sentiments-module__sentiment-select-item___385cc\",\"sentiment-select-item-icon\":\"Sentiments-module__sentiment-select-item-icon___2Prrr\",\"color-sentiment-None\":\"Sentiments-module__color-sentiment-None___2n5Uh\",\"color-sentiment-Negative\":\"Sentiments-module__color-sentiment-Negative___183Xp\",\"color-sentiment-Neutral\":\"Sentiments-module__color-sentiment-Neutral___zpqnS\",\"color-sentiment-Positive\":\"Sentiments-module__color-sentiment-Positive___1wzVi\",\"color-sentiment-Mixed\":\"Sentiments-module__color-sentiment-Mixed___25zE7\",\"background-sentiment-None\":\"Sentiments-module__background-sentiment-None___1vVct\",\"background-sentiment-Negative\":\"Sentiments-module__background-sentiment-Negative___1hjU7\",\"background-sentiment-Neutral\":\"Sentiments-module__background-sentiment-Neutral___2jexa\",\"background-sentiment-Positive\":\"Sentiments-module__background-sentiment-Positive___1qB4O\",\"background-sentiment-Mixed\":\"Sentiments-module__background-sentiment-Mixed___3x1C0\"};","// extracted by mini-css-extract-plugin\nexport default {\"notification-popup-close\":\"ToolBox-module__notification-popup-close___3nfII\",\"controls-block\":\"ToolBox-module__controls-block___1YK1d\",\"download-button\":\"ToolBox-module__download-button___22WxE\",\"comment-tools\":\"ToolBox-module__comment-tools___oqyeS\",\"comment-tools-tags\":\"ToolBox-module__comment-tools-tags___2lZqw\",\"comment-tools-tags-item\":\"ToolBox-module__comment-tools-tags-item___vw6rw\",\"manual\":\"ToolBox-module__manual___Cm9g5\",\"comment-tools-tags-item-skipper\":\"ToolBox-module__comment-tools-tags-item-skipper___1sXK_\",\"manual-delete\":\"ToolBox-module__manual-delete___2VD0F\",\"comment-tools-tags-item-skipper-delete\":\"ToolBox-module__comment-tools-tags-item-skipper-delete___1TGvd\",\"comment-tools-tags-item-delete\":\"ToolBox-module__comment-tools-tags-item-delete___3u9hd\",\"comment-tools-tags-value\":\"ToolBox-module__comment-tools-tags-value___2XhM1\",\"comment-tools-tags-sub-value\":\"ToolBox-module__comment-tools-tags-sub-value___1QGPt\",\"comment-tools-add-tag\":\"ToolBox-module__comment-tools-add-tag___FM5UU\",\"comment-tools-add-note\":\"ToolBox-module__comment-tools-add-note___3BHIy\",\"comment-tools-sentiment\":\"ToolBox-module__comment-tools-sentiment___2PIt0\",\"comment-tools-sentiment-container\":\"ToolBox-module__comment-tools-sentiment-container___kGgVF\"};","// extracted by mini-css-extract-plugin\nexport default {\"traits-container\":\"Traits-module__traits-container___10ycH\",\"trait-item\":\"Traits-module__trait-item___1sbmQ\"};","// extracted by mini-css-extract-plugin\nexport default {\"image-response\":\"ImageResponse-module__image-response___1bgfr\",\"is-rejected\":\"ImageResponse-module__is-rejected___ouGft\",\"response-rejected-info\":\"ImageResponse-module__response-rejected-info___2KsfG\",\"image-response-image\":\"ImageResponse-module__image-response-image___25zPG\",\"no-zoom\":\"ImageResponse-module__no-zoom___3Stob\",\"loading\":\"ImageResponse-module__loading___1KiD6\",\"loading-image\":\"ImageResponse-module__loading-image___3EHLX\",\"image-response-download\":\"ImageResponse-module__image-response-download___Xkm0l\",\"image-response-description\":\"ImageResponse-module__image-response-description___Na4tZ\",\"image-response-description-inner\":\"ImageResponse-module__image-response-description-inner___OHWUU\",\"image-response-description-inner-path\":\"ImageResponse-module__image-response-description-inner-path___ZRhYB\",\"image-response-description-inner-open\":\"ImageResponse-module__image-response-description-inner-open___3Tl7F\",\"image-response-description-id\":\"ImageResponse-module__image-response-description-id___2w0pD\"};","// extracted by mini-css-extract-plugin\nexport default {\"download-button\":\"index-module__download-button___2FKmm\",\"disabled\":\"index-module__disabled___15lAC\",\"in-progress\":\"index-module__in-progress___3SmXz\",\"no-results\":\"index-module__no-results___1cKq1\",\"comments-errors\":\"index-module__comments-errors___3CCmL stats-comments\",\"comments-container\":\"index-module__comments-container___UKaU9 stats-comments\",\"white-overlay\":\"index-module__white-overlay___2kElK\",\"video-question\":\"index-module__video-question___34BWi\",\"video-question-title\":\"index-module__video-question-title___2Qbje\",\"video-question-instruction\":\"index-module__video-question-instruction___2VtYJ\",\"comments-header\":\"index-module__comments-header___ko5E1\",\"comments-header-dnd-dropzone\":\"index-module__comments-header-dnd-dropzone___2YoRz\",\"comments-header-dnd-dropzone-inner\":\"index-module__comments-header-dnd-dropzone-inner___3KwE9\",\"comments-header-dnd-confirm\":\"index-module__comments-header-dnd-confirm___3m1ZH\",\"comments-header-dnd-confirm-title\":\"index-module__comments-header-dnd-confirm-title___2yhQJ\",\"comments-header-dnd-confirm-status\":\"index-module__comments-header-dnd-confirm-status___3ZHdS\",\"comments-header-dnd-confirm-options\":\"index-module__comments-header-dnd-confirm-options___h3CSo\",\"comments-header-dnd-confirm-options-item\":\"index-module__comments-header-dnd-confirm-options-item___1cX_k\",\"comments-header-toolbar\":\"index-module__comments-header-toolbar___25kVh\",\"imageResponses\":\"index-module__imageResponses___3B8qV\",\"comments-header-toolbar-questions\":\"index-module__comments-header-toolbar-questions___2lcdi\",\"comments-header-toolbar-actions\":\"index-module__comments-header-toolbar-actions___1E1t7\",\"comments-header-toolbar-actions-sort\":\"index-module__comments-header-toolbar-actions-sort___3phhm\",\"comments-header-toolbar-actions-item\":\"index-module__comments-header-toolbar-actions-item___ToKuN\",\"comments-header-toolbar-actions-item-active\":\"index-module__comments-header-toolbar-actions-item-active___1s04W\",\"comments-header-toolbar-actions-dropdown\":\"index-module__comments-header-toolbar-actions-dropdown___3hBOY\",\"comments-header-search\":\"index-module__comments-header-search___15Y8l\",\"comments-header-search-input-block\":\"index-module__comments-header-search-input-block___3y0RO\",\"comments-header-search-qa\":\"index-module__comments-header-search-qa___1K8mL\",\"comments-header-search-qa-title\":\"index-module__comments-header-search-qa-title___3Ktm1\",\"comments-header-search-qa-toggler\":\"index-module__comments-header-search-qa-toggler___3J7pJ\",\"comments-header-search-per-page\":\"index-module__comments-header-search-per-page___g5dqT\",\"comments-header-search-per-page-no\":\"index-module__comments-header-search-per-page-no___1WH6r\",\"comments-header-search-pagination\":\"index-module__comments-header-search-pagination___1eqwd\",\"comments-qa-bar\":\"index-module__comments-qa-bar___2Jwz-\",\"hidden\":\"index-module__hidden___20Y7T\",\"comments-qa-bar-left\":\"index-module__comments-qa-bar-left___2TqEP\",\"comments-qa-bar-left-hint\":\"index-module__comments-qa-bar-left-hint___1TppR\",\"comments-qa-bar-per-page\":\"index-module__comments-qa-bar-per-page___2FhHb\",\"comments-qa-bar-item-left\":\"index-module__comments-qa-bar-item-left___1uTfn\",\"comments-qa-bar-item-left-hint\":\"index-module__comments-qa-bar-item-left-hint___3G6_S\",\"comments-qa-bar-item-right\":\"index-module__comments-qa-bar-item-right___1XxsA\",\"image-responses\":\"index-module__image-responses___155xb\",\"image-responses-bottom-paginaton\":\"index-module__image-responses-bottom-paginaton___3LQkW\",\"right\":\"index-module__right___3fULn\",\"image-responses-duplicates-toggle\":\"index-module__image-responses-duplicates-toggle___1aMlj\",\"responses\":\"index-module__responses___2vTX1\",\"responses-bottom-paginaton\":\"index-module__responses-bottom-paginaton___3rDKI\",\"is-qa\":\"index-module__is-qa___31Lii\",\"status-loader\":\"index-module__status-loader___2l5L1\",\"status-loader-static\":\"index-module__status-loader-static___2WUTQ\",\"status-loader-static-spin\":\"index-module__status-loader-static-spin___BUDvy\"};","// extracted by mini-css-extract-plugin\nexport default {\"widget\":\"AdvancedFilter-module__widget___3TtE7\",\"container\":\"AdvancedFilter-module__container___3WYzb stats-AdvancedFilter\",\"container-active\":\"AdvancedFilter-module__container-active___1p2_z stats-AdvancedFilter-active\",\"container-warning\":\"AdvancedFilter-module__container-warning___35MiJ stats-AdvancedFilter-warning\",\"container-error\":\"AdvancedFilter-module__container-error___3nRNK stats-AdvancedFilter-error\",\"container-disabled\":\"AdvancedFilter-module__container-disabled___3Bee1 stats-AdvancedFilter-disabled\",\"hint\":\"AdvancedFilter-module__hint___3fpsr\",\"hint--top\":\"AdvancedFilter-module__hint--top___3ucYv\",\"hint--bottom\":\"AdvancedFilter-module__hint--bottom___Ugkik\",\"hint-text\":\"AdvancedFilter-module__hint-text___XG6Yq\",\"hint-text--active\":\"AdvancedFilter-module__hint-text--active___J6qAD\",\"prefix\":\"AdvancedFilter-module__prefix___38_vx stats-AdvancedFilter-Prefix\",\"text\":\"AdvancedFilter-module__text___3PjXC stats-AdvancedFilter-Text\",\"text-input\":\"AdvancedFilter-module__text-input___3BRIC stats-AdvancedFilter-Text-input\",\"text-input-container\":\"AdvancedFilter-module__text-input-container___2SkfB\"};","// extracted by mini-css-extract-plugin\nexport default {\"search-input-container\":\"SearchInput-module__search-input-container___1VvIR\",\"search-icon\":\"SearchInput-module__search-icon___2VJPW\",\"search-input-advanced-switch\":\"SearchInput-module__search-input-advanced-switch___1aKtr\",\"search-input-value\":\"SearchInput-module__search-input-value___1tE_i\",\"search-input-sub-value\":\"SearchInput-module__search-input-sub-value___26JkC\",\"search-input-uid\":\"SearchInput-module__search-input-uid___3koK0\",\"search-icon-overlay\":\"SearchInput-module__search-icon-overlay___M_lo8\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"Controls-module__component___1Kxvr stats-Q-AD-Component-Controls\",\"control\":\"Controls-module__control___2E2I8\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"Controls-module__component___2V1k7 stats-Q-OE-Component-Controls\",\"component-body\":\"Controls-module__component-body___7J_K2\",\"toggle\":\"Controls-module__toggle___2_KgZ\",\"filter\":\"Controls-module__filter___19idI\",\"controls\":\"Controls-module__controls___2zxv0\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"Component-module__component___UPAj6 stats-Concept-Component\",\"entities\":\"Component-module__entities___142J9 stats-Concept-Entities\",\"attributes\":\"Component-module__attributes___Zjc5l stats-Concept-Attributes\",\"variables\":\"Component-module__variables___2t2l6 stats-Concept-Variables\",\"row\":\"Component-module__row___1dy3Q\",\"row-error\":\"Component-module__row-error___1LqSH\",\"row-header\":\"Component-module__row-header___3IPcc\",\"row-toggle\":\"Component-module__row-toggle___2P8fG\",\"row-label\":\"Component-module__row-label___QdZ2s\",\"row-label-disabled\":\"Component-module__row-label-disabled___2ZLoh\",\"row-av\":\"Component-module__row-av___3Yy0_ stats-Concept-Item\",\"row-add\":\"Component-module__row-add___10rms stats-Concept-Add\",\"delete\":\"Component-module__delete___3q-Ux stats-Concept-Item-delete\",\"group\":\"Component-module__group___3pFwG\",\"group-checkbox\":\"Component-module__group-checkbox___jr2lv\",\"group-toggle\":\"Component-module__group-toggle___fDTnD\",\"group-toggle-disabled\":\"Component-module__group-toggle-disabled___36VXb\",\"group-av\":\"Component-module__group-av___3016Z\",\"group-av-disabled\":\"Component-module__group-av-disabled___b0OFG\",\"group-composite\":\"Component-module__group-composite___3Btjc\",\"toggle\":\"Component-module__toggle___2iira\",\"toggle-disabled\":\"Component-module__toggle-disabled___3b4gx\",\"placeholder\":\"Component-module__placeholder___1Y9g4\",\"title\":\"Component-module__title___P4WrQ\",\"info\":\"Component-module__info___3b-7E\",\"info-right\":\"Component-module__info-right___EiBvO\",\"portals\":\"Component-module__portals___yNFNR\",\"index\":\"Component-module__index___3nvDM stats-Concept-Item-index\",\"add\":\"Component-module__add___1aO9q\",\"images\":\"Component-module__images___3OdzU\",\"handle\":\"Component-module__handle___3imy8\",\"controls\":\"Component-module__controls___2LNGi\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"Component-module__component___19juw stats-Q-Component\",\"component-children\":\"Component-module__component-children___ATpyc\",\"row\":\"Component-module__row___1Gs8p\",\"row-error\":\"Component-module__row-error___1pRYC\",\"group\":\"Component-module__group___1LCR6\",\"group-checkbox\":\"Component-module__group-checkbox___2jejH\",\"group-toggle\":\"Component-module__group-toggle___2u-K_\",\"group-toggle-disabled\":\"Component-module__group-toggle-disabled___2su36\",\"group-av\":\"Component-module__group-av___1Hm5S\",\"group-av-disabled\":\"Component-module__group-av-disabled___NjWT9\",\"group-composite\":\"Component-module__group-composite___3uWSR\",\"controls\":\"Component-module__controls___1_OdU\",\"toggle\":\"Component-module__toggle___z_4Vu\",\"toggle-disabled\":\"Component-module__toggle-disabled___3jYuO\",\"transition-panel\":\"Component-module__transition-panel___3r242\",\"transition-panel-entered\":\"Component-module__transition-panel-entered___12ILF\",\"transition-panel-entering\":\"Component-module__transition-panel-entering___gd1qo\",\"transition-panel-exiting\":\"Component-module__transition-panel-exiting___1RQhS\",\"transition-panel-exited\":\"Component-module__transition-panel-exited___2UQTn\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"Controls-module__component___p4sJJ stats-Q-Component-Controls\",\"icon\":\"Controls-module__icon___ruit1\",\"title\":\"Controls-module__title___2Y-7w\",\"controls\":\"Controls-module__controls___1Nla4\",\"composite\":\"Controls-module__composite___1cE6t\",\"toggle\":\"Controls-module__toggle___1OAmE\",\"toggle-spin\":\"Controls-module__toggle-spin___m9Esd\",\"spin\":\"Controls-module__spin___13V4z\",\"toggle-spin-reverse\":\"Controls-module__toggle-spin-reverse___2oihq\",\"spin-reverse\":\"Controls-module__spin-reverse___1oBRl\",\"link\":\"Controls-module__link___3FhUD\",\"help\":\"Controls-module__help___2B5Ip\",\"note\":\"Controls-module__note___z6TGo\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"Footer-module__component___Gaiio stats-Q-Component-Footer\",\"row\":\"Footer-module__row___3Wqll\",\"row-error\":\"Footer-module__row-error___2nnYV\",\"group\":\"Footer-module__group___2w4D-\",\"group-checkbox\":\"Footer-module__group-checkbox___15c_l\",\"group-toggle\":\"Footer-module__group-toggle___1SDUo\",\"group-toggle-disabled\":\"Footer-module__group-toggle-disabled___1BKaJ\",\"group-av\":\"Footer-module__group-av___2IhuP\",\"group-av-disabled\":\"Footer-module__group-av-disabled___k-zGA\",\"group-composite\":\"Footer-module__group-composite___3MUwk\",\"children\":\"Footer-module__children___SocZ0\"};","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"QuestionAnnotation-module__container___-hbLU stats-Annotation\",\"row\":\"QuestionAnnotation-module__row___58sCM\",\"group\":\"QuestionAnnotation-module__group___1wyOG\",\"text\":\"QuestionAnnotation-module__text___1tcgf\",\"title\":\"QuestionAnnotation-module__title___ybhPC\",\"editor\":\"QuestionAnnotation-module__editor___Bjs27\",\"button\":\"QuestionAnnotation-module__button___2cIeR\",\"cancel\":\"QuestionAnnotation-module__cancel___2t2kd\",\"annotationLink\":\"QuestionAnnotation-module__annotationLink___1XAIF\",\"annotationLinkIcon\":\"QuestionAnnotation-module__annotationLinkIcon___3G2CB\"};","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"QuestionBody-module__container___3U8sK\",\"readOnly\":\"QuestionBody-module__readOnly___1v8SU\",\"collapsed\":\"QuestionBody-module__collapsed___DQTJE\"};","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"QuestionHeader-module__container___3VjNx\",\"component\":\"QuestionHeader-module__component___3VU2h\",\"questionId\":\"QuestionHeader-module__questionId___3rT-z\",\"questionType\":\"QuestionHeader-module__questionType___qUjvv\",\"questionTitleContainer\":\"QuestionHeader-module__questionTitleContainer___3cx-a\",\"comments\":\"QuestionHeader-module__comments___35iij\",\"imageResponses\":\"QuestionHeader-module__imageResponses___gPrny\",\"videoResponses\":\"QuestionHeader-module__videoResponses___Yre9E\",\"comments-disabled\":\"QuestionHeader-module__comments-disabled___FeedJ\",\"imageResponses-disabled\":\"QuestionHeader-module__imageResponses-disabled___2xBfq\",\"videoResponses-disabled\":\"QuestionHeader-module__videoResponses-disabled___1SNYX\",\"aiAssistants\":\"QuestionHeader-module__aiAssistants___1Fw7j\",\"aiAssistants-fill\":\"QuestionHeader-module__aiAssistants-fill___3Bq8V\",\"aiAssistants-text\":\"QuestionHeader-module__aiAssistants-text___OFiXJ\",\"aiAssistants-processing\":\"QuestionHeader-module__aiAssistants-processing___2UhYm\",\"steeringWheel\":\"QuestionHeader-module__steeringWheel___38aNb\",\"aiAssistants-disabled\":\"QuestionHeader-module__aiAssistants-disabled___yTgPJ\",\"aiAssistants-requestFailedPopupAnchor\":\"QuestionHeader-module__aiAssistants-requestFailedPopupAnchor___3x6vN\",\"aiAssistants-requestFailedPopupTarget\":\"QuestionHeader-module__aiAssistants-requestFailedPopupTarget___1GfLY\",\"aiAssistants-requestFailedPopupContent\":\"QuestionHeader-module__aiAssistants-requestFailedPopupContent___2ybWN\",\"aiAssistants-requestFailedPopupIcon\":\"QuestionHeader-module__aiAssistants-requestFailedPopupIcon___oooA3\",\"aiAssistants-requestFailedPopupClose\":\"QuestionHeader-module__aiAssistants-requestFailedPopupClose___3I-nd\",\"aiAssistants-requestFailedPopupCompass\":\"QuestionHeader-module__aiAssistants-requestFailedPopupCompass___1TyC0\",\"titleEdit\":\"QuestionHeader-module__titleEdit___1j2lv\",\"titleEdit-disabled\":\"QuestionHeader-module__titleEdit-disabled___tVYW6\",\"thumbnail\":\"QuestionHeader-module__thumbnail___2iX9P\",\"skipTo\":\"QuestionHeader-module__skipTo___DrpM1\",\"aSkipTo\":\"QuestionHeader-module__aSkipTo___2Q7Vc\",\"random\":\"QuestionHeader-module__random___3d4nj\",\"radar\":\"QuestionHeader-module__radar___2iC6h\",\"aRadar\":\"QuestionHeader-module__aRadar___9qlAZ\",\"disabled\":\"QuestionHeader-module__disabled___2nZVn\",\"togglable\":\"QuestionHeader-module__togglable___TsdLq\",\"draggable\":\"QuestionHeader-module__draggable___2OFcx\",\"subcomponent\":\"QuestionHeader-module__subcomponent___3Pqlh\",\"questionMove\":\"QuestionHeader-module__questionMove___1Okif\",\"aiProgressMessage\":\"QuestionHeader-module__aiProgressMessage___1YO4f\",\"aiCancelButton\":\"QuestionHeader-module__aiCancelButton___3TzcI\",\"collapseLink\":\"QuestionHeader-module__collapseLink___OFtlJ\"};","// extracted by mini-css-extract-plugin\nexport default {\"text\":\"QuestionTitle-module__text___31Ea7\",\"title\":\"QuestionTitle-module__title___2lCHV\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"TextEditor-module__component___3sFk7\",\"linkDecorator\":\"TextEditor-module__linkDecorator___2387l\",\"linkDecoratorAnchor\":\"TextEditor-module__linkDecoratorAnchor___sHamY\"};","// extracted by mini-css-extract-plugin\nexport default {\"text\":\"TextFormatting-module__text___mjtZ1\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"Component-module__component___2gZ7v stats-CQ-Component\",\"list\":\"Component-module__list___1pSuN stats-CQ-Batches\",\"row\":\"Component-module__row___1-gpZ\",\"row-error\":\"Component-module__row-error___2pa03\",\"column\":\"Component-module__column___jRGR7\",\"column-av\":\"Component-module__column-av___Nt7z1 stats-CQ-Batch\",\"label\":\"Component-module__label___3g6t-\",\"toggle\":\"Component-module__toggle___1yyEG\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"Responses-module__component___Hjz4W\",\"header\":\"Responses-module__header___IscO8\",\"response\":\"Responses-module__response___1YBHT\",\"response-header\":\"Responses-module__response-header___2QKqT\",\"response-header-uid\":\"Responses-module__response-header-uid___1eyzf\",\"response-content\":\"Responses-module__response-content___lgn_6\",\"response-vector\":\"Responses-module__response-vector___379EF\",\"response-vector-icon\":\"Responses-module__response-vector-icon___Jzodg\",\"response-vector-title\":\"Responses-module__response-vector-title___3U0H3\",\"response-vector-details\":\"Responses-module__response-vector-details___1GCbx\",\"transition-panel\":\"Responses-module__transition-panel___lB7jz\",\"transition-panel-entered\":\"Responses-module__transition-panel-entered___2VMCI\",\"transition-panel-entering\":\"Responses-module__transition-panel-entering___KC6hs\",\"transition-panel-exiting\":\"Responses-module__transition-panel-exiting___3L7VL\",\"transition-panel-exited\":\"Responses-module__transition-panel-exited___1EQ6-\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"Controls-module__component___7A5PL stats-Q-OE-Component-Controls\",\"component-body\":\"Controls-module__component-body___2fnW_\",\"toggle\":\"Controls-module__toggle___2Q_L3\"};","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Component-module__container___3b4lD\",\"row\":\"Component-module__row___1dvAU\",\"row-image\":\"Component-module__row-image___1-tWD\",\"deleteAsset\":\"Component-module__deleteAsset___2_LOQ\",\"group\":\"Component-module__group___fQ9Gj\",\"text\":\"Component-module__text___nPKUa\",\"help\":\"Component-module__help___382Sm\",\"error\":\"Component-module__error___sg1GF\",\"editor\":\"Component-module__editor___2Mk1z\",\"button\":\"Component-module__button___1xk6B\",\"cancel\":\"Component-module__cancel___3kP9E\",\"changeAsset\":\"Component-module__changeAsset___3pdq4\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"Component-module__component___2hF1G stats-VQ-Component\",\"list\":\"Component-module__list___2T7i7 stats-VQ-AnswerVariants\",\"row\":\"Component-module__row___aKJdd\",\"row-error\":\"Component-module__row-error___3YzsR\",\"row-av\":\"Component-module__row-av___1XTen stats-VQ-AnswerVariant\",\"row-add\":\"Component-module__row-add___3HxQR stats-VQ-AnswerVariant-Add\",\"delete\":\"Component-module__delete___3CzYe\",\"toggle\":\"Component-module__toggle___3D4yd\",\"toggle-disabled\":\"Component-module__toggle-disabled___3dHvk\",\"group\":\"Component-module__group___3gUKU\",\"group-checkbox\":\"Component-module__group-checkbox___2oIFa\",\"group-toggle\":\"Component-module__group-toggle___3grix\",\"group-toggle-disabled\":\"Component-module__group-toggle-disabled___H7Exe\",\"group-av\":\"Component-module__group-av___2vr5w\",\"group-av-disabled\":\"Component-module__group-av-disabled___2mHlo\",\"group-composite\":\"Component-module__group-composite___3KZPz\",\"placeholder\":\"Component-module__placeholder___uA8dL\",\"index\":\"Component-module__index___3vf-Q stats-VQ-AnswerVariant-index\",\"add\":\"Component-module__add___2Oxb3\",\"options\":\"Component-module__options___2MQQz\",\"base\":\"Component-module__base___3tLQL\",\"images\":\"Component-module__images___2tLlW\",\"clear\":\"Component-module__clear___24Pi_\",\"apply\":\"Component-module__apply___3GdZx\",\"handle\":\"Component-module__handle___1k4au\",\"transition-base\":\"Component-module__transition-base___2AvSz\",\"transition-base-entering\":\"Component-module__transition-base-entering___oi9Fr\",\"transition-base-entered\":\"Component-module__transition-base-entered___2KmVx\",\"transition-base-exiting\":\"Component-module__transition-base-exiting___1aRU4\",\"transition-base-exited\":\"Component-module__transition-base-exited___2D2av\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"Component-module__component___IVLdl stats-XQ-Component\",\"list\":\"Component-module__list___2DpU7 stats-XQ-ScriptList\",\"row\":\"Component-module__row___1s92p\",\"row-error\":\"Component-module__row-error___2KR8s\"};","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"ScriptItem-module__item___3cGpH stats-XQ-ScriptList-Item\",\"item-error\":\"ScriptItem-module__item-error___3Cjdq\",\"item-title\":\"ScriptItem-module__item-title___2FP9V\",\"item-component\":\"ScriptItem-module__item-component___7AmKz\",\"item-note\":\"ScriptItem-module__item-note___26_KP\",\"item-toggle\":\"ScriptItem-module__item-toggle___12-UO\",\"item-toggle-disabled\":\"ScriptItem-module__item-toggle-disabled___1-Yy4\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"CodingPanel-module__component___I5OCd\",\"component-textarea\":\"CodingPanel-module__component-textarea___3szDL\",\"component-textarea-count\":\"CodingPanel-module__component-textarea-count___3IOn8\",\"component-settings\":\"CodingPanel-module__component-settings___1wIRx\",\"component-settings-icon\":\"CodingPanel-module__component-settings-icon___2MK9-\",\"icon-aytmfd-spin\":\"CodingPanel-module__icon-aytmfd-spin___2LGJQ\",\"component-settings-opened\":\"CodingPanel-module__component-settings-opened___1dVkQ\",\"component-settings-inactive\":\"CodingPanel-module__component-settings-inactive___3eb24\",\"component-dropdown-option\":\"CodingPanel-module__component-dropdown-option___1sfqp\",\"icon-aytmfd-prev\":\"CodingPanel-module__icon-aytmfd-prev___2KyED\",\"component-dropdown-option-status\":\"CodingPanel-module__component-dropdown-option-status___3k2gf\",\"component-dropdown-option-disabled\":\"CodingPanel-module__component-dropdown-option-disabled___3m4oY\",\"component-dropdown-warning\":\"CodingPanel-module__component-dropdown-warning___28L1B\",\"component-add\":\"CodingPanel-module__component-add___159Rf\",\"component-merge\":\"CodingPanel-module__component-merge___3wHT8\",\"component-error\":\"CodingPanel-module__component-error___3irV3\",\"component-add-icon\":\"CodingPanel-module__component-add-icon___vR4OT\",\"component-merge-icon\":\"CodingPanel-module__component-merge-icon___3egdP\",\"component-add-button\":\"CodingPanel-module__component-add-button___1Gog-\",\"component-merge-button\":\"CodingPanel-module__component-merge-button___1i5Me\",\"component-add-buttons\":\"CodingPanel-module__component-add-buttons___Dhvix\",\"component-merge-buttons\":\"CodingPanel-module__component-merge-buttons___37FGV\",\"component-note\":\"CodingPanel-module__component-note___1xoEj\",\"component-active\":\"CodingPanel-module__component-active___2nlMU\",\"row\":\"CodingPanel-module__row___1R-Hm\",\"row-skipper\":\"CodingPanel-module__row-skipper___2Hykt\",\"blink\":\"CodingPanel-module__blink___1doMX\",\"blinker\":\"CodingPanel-module__blinker___1Ysb7\",\"draggable\":\"CodingPanel-module__draggable___3v9ze\",\"disabled\":\"CodingPanel-module__disabled___1Q8yP\",\"codebook\":\"CodingPanel-module__codebook____TM4F\",\"codebook-header\":\"CodingPanel-module__codebook-header___1KTvZ\",\"codebook-header-fill\":\"CodingPanel-module__codebook-header-fill___1Faji\",\"codebook-header-icon\":\"CodingPanel-module__codebook-header-icon___706vu\",\"codebook-header-title\":\"CodingPanel-module__codebook-header-title___2lrxc\",\"codebook-header-toggle\":\"CodingPanel-module__codebook-header-toggle___11dTn\",\"codebook-header-collapsed\":\"CodingPanel-module__codebook-header-collapsed___3h00H\",\"codebook-subheader\":\"CodingPanel-module__codebook-subheader___36BHI\",\"codebook-body\":\"CodingPanel-module__codebook-body___2uqDa\",\"codebook-item\":\"CodingPanel-module__codebook-item___3PkAF stats-Codebook-Item\",\"codebook-item-icon\":\"CodingPanel-module__codebook-item-icon___2QlZO stats-Codebook-Item-Icon\",\"codebook-item-tag\":\"CodingPanel-module__codebook-item-tag___3_v5H stats-Codebook-Item-Tag\",\"codebook-item-count\":\"CodingPanel-module__codebook-item-count___ERo77 stats-Codebook-Item-Count\",\"codebook-item-count-additional\":\"CodingPanel-module__codebook-item-count-additional___1XWFU\",\"codebook-item-disabled\":\"CodingPanel-module__codebook-item-disabled___la9S-\",\"codebook-subitem\":\"CodingPanel-module__codebook-subitem___AN9Js\",\"codebook-editting\":\"CodingPanel-module__codebook-editting___Ji1i2\",\"codebook-processing\":\"CodingPanel-module__codebook-processing___1x_F4\",\"codebook-header-count\":\"CodingPanel-module__codebook-header-count___3GId8\",\"steeringWheel\":\"CodingPanel-module__steeringWheel___14d7L\",\"codebook-disabled\":\"CodingPanel-module__codebook-disabled___2DwR3\",\"skipper\":\"CodingPanel-module__skipper___7jS8o\",\"skipper-fill\":\"CodingPanel-module__skipper-fill___2n8UZ\",\"skipper-button\":\"CodingPanel-module__skipper-button___NtNTu\",\"skipper-processing\":\"CodingPanel-module__skipper-processing___3Fowm\",\"skipper-disabled\":\"CodingPanel-module__skipper-disabled___4nFUY\",\"transition-panel\":\"CodingPanel-module__transition-panel___323C7\",\"transition-panel-entered\":\"CodingPanel-module__transition-panel-entered___2a8eB\",\"transition-panel-entering\":\"CodingPanel-module__transition-panel-entering___LuTbt\",\"transition-panel-exiting\":\"CodingPanel-module__transition-panel-exiting___35nWq\",\"transition-panel-exited\":\"CodingPanel-module__transition-panel-exited___3dDor\"};","// extracted by mini-css-extract-plugin\nexport default {\"row\":\"CustomQuestion-module__row___2B-23\",\"remove\":\"CustomQuestion-module__remove___2eIAG\",\"remove-disabled\":\"CustomQuestion-module__remove-disabled___1Akgc\",\"button\":\"CustomQuestion-module__button___1rP_V\",\"button-text\":\"CustomQuestion-module__button-text___30_R0\",\"button-handle\":\"CustomQuestion-module__button-handle___3UCqF\",\"button-lock-icon\":\"CustomQuestion-module__button-lock-icon___3We5Y\",\"button-active\":\"CustomQuestion-module__button-active___1H4Nl\",\"p-disabled\":\"CustomQuestion-module__p-disabled___3Z-LM\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"DropTargetContainer-module__component___qADp7\",\"drop-target\":\"DropTargetContainer-module__drop-target___2CmJI\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"CrosstabPanel-module__component___3IaCz stats-CrosstabPanel\",\"section\":\"CrosstabPanel-module__section___2mrI6\",\"section-title\":\"CrosstabPanel-module__section-title___2uQKs\",\"row\":\"CrosstabPanel-module__row___1i01S\",\"row-slider\":\"CrosstabPanel-module__row-slider___30eBT\",\"row-slider-label\":\"CrosstabPanel-module__row-slider-label___8nSds\",\"row-error\":\"CrosstabPanel-module__row-error___1_Eq6\",\"group\":\"CrosstabPanel-module__group___d0_lI\",\"group-checkbox\":\"CrosstabPanel-module__group-checkbox___1KiSa\",\"group-toggle\":\"CrosstabPanel-module__group-toggle___3N77u\",\"group-toggle-disabled\":\"CrosstabPanel-module__group-toggle-disabled___3ULxh\",\"options\":\"CrosstabPanel-module__options___2Ni-u\",\"button\":\"CrosstabPanel-module__button___tXkwD\",\"button-remove\":\"CrosstabPanel-module__button-remove___BRLTL\",\"button-text\":\"CrosstabPanel-module__button-text___2DN8y\",\"button-modes\":\"CrosstabPanel-module__button-modes___1ZkSd\",\"button-mode\":\"CrosstabPanel-module__button-mode___ulTDD\",\"button-mode-active\":\"CrosstabPanel-module__button-mode-active___389Po\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"DataCleaningPanel-module__component___fMgOV stats-DataCleaningPanel\",\"row\":\"DataCleaningPanel-module__row___195aH\",\"vector\":\"DataCleaningPanel-module__vector___1xYoH\",\"vector-button\":\"DataCleaningPanel-module__vector-button___3hjPf\",\"vector-button-active\":\"DataCleaningPanel-module__vector-button-active___ABP8S\",\"p-disabled\":\"DataCleaningPanel-module__p-disabled___3siYn\",\"note\":\"DataCleaningPanel-module__note___3SEBX\",\"text\":\"DataCleaningPanel-module__text___3GEqO\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"DataLabPanel-module__component___3I5V0 stats-DataLabPanel\",\"row\":\"DataLabPanel-module__row___3xaGg\",\"note\":\"DataLabPanel-module__note___3vyDa\",\"section\":\"DataLabPanel-module__section___jiH98\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"ExportPanel-module__component___s2HVT stats-ExportPanel\",\"row\":\"ExportPanel-module__row___34oY_\",\"row-title\":\"ExportPanel-module__row-title___1MuOE\",\"row-slider\":\"ExportPanel-module__row-slider___2uEnu\",\"row-slider-label\":\"ExportPanel-module__row-slider-label___2DEI5\",\"row-error\":\"ExportPanel-module__row-error___18gM7\",\"button\":\"ExportPanel-module__button___1vvxw\",\"button-text\":\"ExportPanel-module__button-text___2XzGF\",\"button-config\":\"ExportPanel-module__button-config___79RA1\",\"button-config-active\":\"ExportPanel-module__button-config-active___1yah2\",\"p-disabled\":\"ExportPanel-module__p-disabled___NupmT\",\"button-handle\":\"ExportPanel-module__button-handle___21MKq\",\"button-lock-icon\":\"ExportPanel-module__button-lock-icon___5vSKr\",\"button-panel\":\"ExportPanel-module__button-panel___39U3S\",\"button-panel-wrapper\":\"ExportPanel-module__button-panel-wrapper___Q23sK\",\"button-panel-items\":\"ExportPanel-module__button-panel-items___24nxo\",\"button-panel-item\":\"ExportPanel-module__button-panel-item___3Rhre\",\"transition-panel\":\"ExportPanel-module__transition-panel___3FCj4\",\"transition-panel-entered\":\"ExportPanel-module__transition-panel-entered___1HyJv\",\"transition-panel-entering\":\"ExportPanel-module__transition-panel-entering___gpK9U\",\"transition-panel-exiting\":\"ExportPanel-module__transition-panel-exiting___1yTHr\",\"transition-panel-exited\":\"ExportPanel-module__transition-panel-exited____3bWa\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"FiltersPanel-module__component___9puW_ stats-FiltersPanel\",\"advanced-container\":\"FiltersPanel-module__advanced-container___3s9_o\",\"component-disabled\":\"FiltersPanel-module__component-disabled___26u4X\",\"header\":\"FiltersPanel-module__header___3QqlS\",\"toggle\":\"FiltersPanel-module__toggle___M0ooJ\",\"toggle-disabled\":\"FiltersPanel-module__toggle-disabled___hqQ2J\",\"apply\":\"FiltersPanel-module__apply___2zKuF\",\"header-disabled\":\"FiltersPanel-module__header-disabled___2yc2w\",\"filter-header\":\"FiltersPanel-module__filter-header___1O-Zn\",\"filter-title\":\"FiltersPanel-module__filter-title___3hqD3\",\"filter-switch\":\"FiltersPanel-module__filter-switch___2oCGo\",\"filter-toggle\":\"FiltersPanel-module__filter-toggle___l8FjC\",\"filter-button\":\"FiltersPanel-module__filter-button___2fsR5\",\"filter-button-active\":\"FiltersPanel-module__filter-button-active___2SVyU\",\"filter-button-disabled\":\"FiltersPanel-module__filter-button-disabled___3swUS\",\"filter-reset\":\"FiltersPanel-module__filter-reset___1zTMX\",\"filter-reset-disabled\":\"FiltersPanel-module__filter-reset-disabled___28hku\",\"filter-scroll\":\"FiltersPanel-module__filter-scroll___3vICx\",\"filter-remove\":\"FiltersPanel-module__filter-remove___2d_gl\",\"filter-remove-disabled\":\"FiltersPanel-module__filter-remove-disabled___1hQ0v\",\"filter-handle\":\"FiltersPanel-module__filter-handle___KMmcu\",\"filter-restore\":\"FiltersPanel-module__filter-restore___1tMqt\",\"filter-container\":\"FiltersPanel-module__filter-container___33Aeq\",\"filter-row\":\"FiltersPanel-module__filter-row___1OqsU\",\"offset-0\":\"FiltersPanel-module__offset-0___3HxqO\",\"offset-1\":\"FiltersPanel-module__offset-1___3sVJx\",\"filter-upload\":\"FiltersPanel-module__filter-upload___3ynx6\",\"filter-radio\":\"FiltersPanel-module__filter-radio___1IZSW\",\"filter-error-message\":\"FiltersPanel-module__filter-error-message___2HVdj\",\"dragged\":\"FiltersPanel-module__dragged___3tpgr\",\"transition-panel\":\"FiltersPanel-module__transition-panel___6FJhW\",\"transition-panel-entered\":\"FiltersPanel-module__transition-panel-entered___3iXsG\",\"transition-panel-entering\":\"FiltersPanel-module__transition-panel-entering___wUPX1\",\"transition-panel-exiting\":\"FiltersPanel-module__transition-panel-exiting___2715-\",\"transition-panel-exited\":\"FiltersPanel-module__transition-panel-exited___3B4uA\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"MappingPanel-module__component___3d4Hx stats-MappingPanel\",\"row\":\"MappingPanel-module__row___2iqDg\",\"note\":\"MappingPanel-module__note___1fxcQ\",\"paragraph\":\"MappingPanel-module__paragraph___gj_5h\",\"section\":\"MappingPanel-module__section___2VNBs\"};","// extracted by mini-css-extract-plugin\nexport default {\"palette-picker\":\"PalettePicker-module__palette-picker___3zJjF\",\"palette-picker-colors\":\"PalettePicker-module__palette-picker-colors___1owhM\",\"palette-picker-colors-item\":\"PalettePicker-module__palette-picker-colors-item___3cNsI\",\"palette-picker-colors-item-current\":\"PalettePicker-module__palette-picker-colors-item-current___1bKJf\",\"palette-picker-methods\":\"PalettePicker-module__palette-picker-methods___3LPrA\",\"palette-picker-methods-random\":\"PalettePicker-module__palette-picker-methods-random___3cTcU\"};","// extracted by mini-css-extract-plugin\nexport default {\"palettes-list\":\"PalettesPanel-module__palettes-list___2RdS9 stats-PalettesList\",\"palettes-list-title\":\"PalettesPanel-module__palettes-list-title___3CZv6\",\"palettes-list-item\":\"PalettesPanel-module__palettes-list-item___3c1Zb stats-PalettesList-item\",\"palettes-list-item-colors\":\"PalettesPanel-module__palettes-list-item-colors___14PxF stats-PalettesList-item-colors\",\"palettes-list-item-colors-item\":\"PalettesPanel-module__palettes-list-item-colors-item___1rlVP stats-PalettesList-item-colors-item\",\"palettes-list-item-edit\":\"PalettesPanel-module__palettes-list-item-edit___2AFwx stats-PalettesList-item-edit\",\"palettes-list-item-remove\":\"PalettesPanel-module__palettes-list-item-remove___18xi3 stats-PalettesList-item-remove\",\"palettes-list-item-confirm-remove\":\"PalettesPanel-module__palettes-list-item-confirm-remove___1wD93\",\"palettes-list-item-confirm-remove-yes\":\"PalettesPanel-module__palettes-list-item-confirm-remove-yes___2xUh9\",\"palettes-list-item-confirm-remove-no\":\"PalettesPanel-module__palettes-list-item-confirm-remove-no___2YDAk\",\"palettes-list-item-spin\":\"PalettesPanel-module__palettes-list-item-spin___3PopX\",\"palettes-list-add\":\"PalettesPanel-module__palettes-list-add___2qvnq stats-PalettesList-add\",\"palettes-list-add-button\":\"PalettesPanel-module__palettes-list-add-button___2XhQ-\",\"palettes-list-picker\":\"PalettesPanel-module__palettes-list-picker___zRYW6\",\"palettes-list-picker-cancel\":\"PalettesPanel-module__palettes-list-picker-cancel___2RGid\",\"palettes-list-picker-save\":\"PalettesPanel-module__palettes-list-picker-save___3ShhX\",\"palettes-list-picker-save-disabled\":\"PalettesPanel-module__palettes-list-picker-save-disabled___1FOZK\",\"palettes-list-picker-spin\":\"PalettesPanel-module__palettes-list-picker-spin___1e_e1\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"Report-module__component___pAmFG stats-Report\",\"component-sliding\":\"Report-module__component-sliding___3akoV\",\"component-new\":\"Report-module__component-new___24J9R stats-Report-new\",\"component-deleted\":\"Report-module__component-deleted___15t2e stats-Report-deleted\",\"component-warning\":\"Report-module__component-warning___bW2cF stats-Report-warning\",\"component-active\":\"Report-module__component-active___2SSNa stats-Report-active\",\"component-error\":\"Report-module__component-error___aM8_U stats-Report-error\",\"component-disabled\":\"Report-module__component-disabled___3GFS1 stats-Report-disabled\",\"arrow\":\"Report-module__arrow___FXJdo stats-Report-arrow\",\"title\":\"Report-module__title___3rzeK stats-Report-title\",\"title-text\":\"Report-module__title-text___1aK11\",\"title-text-overflow\":\"Report-module__title-text-overflow___2KwfW\",\"title-original\":\"Report-module__title-original___3Wq9s stats-Report-Title-original\",\"title-xpert\":\"Report-module__title-xpert___1AYeL stats-Report-Title-xpert\",\"title-xpert_custom\":\"Report-module__title-xpert_custom___12WjY stats-Report-Title-xpert_custom\",\"title-widget\":\"Report-module__title-widget___2IiZv stats-Report-Title-widget\",\"title-stat\":\"Report-module__title-stat___2w22o stats-Report-Title-stat\",\"title-term-report\":\"Report-module__title-term-report___32CsV stats-Report-Title-term-report\",\"title-current\":\"Report-module__title-current___2Vh3l stats-Report-Title-current\",\"deleteButton\":\"Report-module__deleteButton___2gAeg stats-Report-deleteButton\",\"popupButton\":\"Report-module__popupButton___3pqHk stats-Report-popupButton\",\"popupButton-opened\":\"Report-module__popupButton-opened___1QwST\",\"popupButton-closed\":\"Report-module__popupButton-closed___30JqN\",\"popupButton-disabled\":\"Report-module__popupButton-disabled___555YD\",\"handle\":\"Report-module__handle___3ZI0A stats-Report-handle\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"ReportControls-module__component___tcYSd stats-ReporControls\",\"component-compact\":\"ReportControls-module__component-compact___1yQcQ\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"ReportPopup-module__component___SwYH4 stats-ReportPopup\",\"component-entering\":\"ReportPopup-module__component-entering___PT0co\",\"component-entered\":\"ReportPopup-module__component-entered___3V6Pj\",\"component-exiting\":\"ReportPopup-module__component-exiting___3hXvL\",\"component-exited\":\"ReportPopup-module__component-exited___p2v1E\",\"closeButton\":\"ReportPopup-module__closeButton___19D8S\",\"description\":\"ReportPopup-module__description___-ViJQ\",\"description-head\":\"ReportPopup-module__description-head___3I5Ft\",\"description-content\":\"ReportPopup-module__description-content___1kq-q\",\"description-content-head\":\"ReportPopup-module__description-content-head___59a6w\",\"description-content-body\":\"ReportPopup-module__description-content-body___38kVb\",\"description-content-body-content\":\"ReportPopup-module__description-content-body-content___2JZWT\",\"description-content-body-content-row\":\"ReportPopup-module__description-content-body-content-row___Mx9VR\",\"description-footer\":\"ReportPopup-module__description-footer___2dEL0\",\"content\":\"ReportPopup-module__content___2wUV9\",\"content-row\":\"ReportPopup-module__content-row___1UQ-Y\",\"content-row-column\":\"ReportPopup-module__content-row-column___Av9Ya\",\"content-row-column-title\":\"ReportPopup-module__content-row-column-title___PRTK4\",\"content-row-column-note\":\"ReportPopup-module__content-row-column-note___22yPa\",\"content-row-column-label\":\"ReportPopup-module__content-row-column-label___3-9RO\",\"content-row-column-icon\":\"ReportPopup-module__content-row-column-icon___3bljX\",\"content-row-column-icon-warning\":\"ReportPopup-module__content-row-column-icon-warning___2xtof\",\"content-row-column-icon-error\":\"ReportPopup-module__content-row-column-icon-error___3FLce\",\"content-row-column-text\":\"ReportPopup-module__content-row-column-text___2SuRj\",\"content-row-column-success\":\"ReportPopup-module__content-row-column-success___2eRt3\",\"content-row-column-error\":\"ReportPopup-module__content-row-column-error___39YUs\",\"content-input\":\"ReportPopup-module__content-input___1aWjO\",\"content-input-container\":\"ReportPopup-module__content-input-container___2Q5aE\",\"content-input-error\":\"ReportPopup-module__content-input-error___2Ae33\",\"content-input-readonly\":\"ReportPopup-module__content-input-readonly___1-aNe\",\"arrow\":\"ReportPopup-module__arrow___2_cN8\",\"transition-panel\":\"ReportPopup-module__transition-panel___1DvEU\",\"transition-panel-entering\":\"ReportPopup-module__transition-panel-entering___3E5I8\",\"transition-panel-entered\":\"ReportPopup-module__transition-panel-entered___2VpxO\",\"transition-panel-exiting\":\"ReportPopup-module__transition-panel-exiting___3ClFz\",\"transition-panel-exited\":\"ReportPopup-module__transition-panel-exited___2zWKq\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"ReportsPanel-module__component___2EBft stats-ReportsPanel\",\"header\":\"ReportsPanel-module__header___5eoJR\",\"label\":\"ReportsPanel-module__label___3saWM stats-ReportsPanel-label\",\"label-default\":\"ReportsPanel-module__label-default___2EhAO\",\"placeholder\":\"ReportsPanel-module__placeholder___3BpUK stats-ReportsPanel-placeholder\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"WeightingItem-module__component___1iC_N stats-WeightingBasic-Item\",\"row\":\"WeightingItem-module__row___jz4Eg\",\"remove\":\"WeightingItem-module__remove___Rukyb\",\"item\":\"WeightingItem-module__item___2RdGw\",\"item-text\":\"WeightingItem-module__item-text___3D-bo\",\"item-target\":\"WeightingItem-module__item-target___3_TZk\",\"item-target-affix\":\"WeightingItem-module__item-target-affix___1KK_z\",\"item-actual\":\"WeightingItem-module__item-actual___xku7n\",\"item-final\":\"WeightingItem-module__item-final___1Xqf_\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"WeightingList-module__component___1iwVF stats-WeightingBasic-List\",\"row\":\"WeightingList-module__row___21pp_\",\"add\":\"WeightingList-module__add___2_WRW\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"WeightingPanel-module__component___3szt8 stats-WeightingPanel\",\"toggle\":\"WeightingPanel-module__toggle___3XM70\",\"toggle-disabled\":\"WeightingPanel-module__toggle-disabled___mUNZn\",\"row\":\"WeightingPanel-module__row___2xcGD\",\"row-icon\":\"WeightingPanel-module__row-icon___1DpPD\",\"row-icon-refresh\":\"WeightingPanel-module__row-icon-refresh___41Zly\",\"row-switch\":\"WeightingPanel-module__row-switch___2MTE0\",\"row-buttons\":\"WeightingPanel-module__row-buttons___a-ABn\",\"item\":\"WeightingPanel-module__item___13tO5\",\"note\":\"WeightingPanel-module__note___1FFJm\",\"note-warning\":\"WeightingPanel-module__note-warning___3jG6o\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"JsonFileUpload-module__component___zdTJt\",\"selectOnClick\":\"JsonFileUpload-module__selectOnClick___Bc1vq\",\"input\":\"JsonFileUpload-module__input___2vrD2\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"XpertsDebugPopup-module__component___1Lgzz\",\"dragOver\":\"XpertsDebugPopup-module__dragOver___fbmLQ\",\"inner\":\"XpertsDebugPopup-module__inner___2pOBd\",\"icon\":\"XpertsDebugPopup-module__icon___1DnDJ icon-aytmfd-expert-test\",\"text\":\"XpertsDebugPopup-module__text___2avBZ\",\"label\":\"XpertsDebugPopup-module__label___wttLA\",\"uploadingPercents\":\"XpertsDebugPopup-module__uploadingPercents___3dY2s\",\"uploadingFiles\":\"XpertsDebugPopup-module__uploadingFiles___1W9PR\",\"rfd-ui-loader-dots-color\":\"XpertsDebugPopup-module__rfd-ui-loader-dots-color___2f_SV\"};","// extracted by mini-css-extract-plugin\nexport default {\"portal\":\"SuggestionsComponent-module__portal___11C1A\",\"text\":\"SuggestionsComponent-module__text___s3I78\",\"placeholder\":\"SuggestionsComponent-module__placeholder___1XxTB\",\"dropdown\":\"SuggestionsComponent-module__dropdown___7TDEB\",\"items\":\"SuggestionsComponent-module__items___k3zjv\",\"item\":\"SuggestionsComponent-module__item___2PF_-\",\"item--active\":\"SuggestionsComponent-module__item--active___34gNQ\",\"content-text\":\"SuggestionsComponent-module__content-text___8hSLe\",\"content-icon\":\"SuggestionsComponent-module__content-icon___3l5EI\",\"content\":\"SuggestionsComponent-module__content___HDWMJ\",\"content-text--with-icon\":\"SuggestionsComponent-module__content-text--with-icon___Wb-_O\",\"content-text--with-help\":\"SuggestionsComponent-module__content-text--with-help___1tu0R\",\"content-text--with-icon-and-help\":\"SuggestionsComponent-module__content-text--with-icon-and-help___2ius-\",\"content-help\":\"SuggestionsComponent-module__content-help___2AHn-\"};","// extracted by mini-css-extract-plugin\nexport default {\"aytmLogicStatement\":\"draft-js-decorators-module__aytmLogicStatement___FsX9p\",\"text\":\"draft-js-decorators-module__text___NuOAG\",\"textError\":\"draft-js-decorators-module__textError___2uLNo\",\"textWarning\":\"draft-js-decorators-module__textWarning___tKGcf\",\"textOld\":\"draft-js-decorators-module__textOld___6PoFA\",\"content\":\"draft-js-decorators-module__content___2kejj\",\"popupContent\":\"draft-js-decorators-module__popupContent___2zOgH\",\"oldTranslate\":\"draft-js-decorators-module__oldTranslate___1HEV8\",\"errorText\":\"draft-js-decorators-module__errorText___2iTSD\"};"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","EMAIL_REGEX","ctx","insert","target","span","anchor","create_if_block","div","append","span2","span0","input","span1","div1","div0","div2","apply","arguments","contextKey","context","component","$$value","create_if_block_6","create_if_block_4","length","i","html","create_if_block_2","text","create_if_block_3","set_data","t","t_value","html_tag","p","raw_value","hidden","create_if_block_1","create_if_block_5","filterInput","filterValue","value","select","itemIndex","_index","div5","div4","div3","passive","attr","img","img_src_value","position","image","create_if_block_20","create_if_block_19","create_if_block_18","create_if_block_17","svg","defs","filter","feFlood","feComposite0","feGaussianBlur","feOffset","feComposite1","path","create_if_block_16","trim","create_if_block_12","Math","min","_itemIndex","create_if_block_10","b","br","t2","t2_value","create_if_block_8","create_if_block_7","create_if_block_15","create_if_block_14","onClickImage","item","onClickItem","onRemoveItem","addColumnDropdownOpened","event","replaceItem","detail","addItem","innerHTML","height","undefined","attributes","percents","amount","low","title","empty","toFixed","t0","t0_value","sigtext","letter","create_if_block_11","custom","info","portal","node","document","body","appendChild","destroy","setTimeout","parentNode","removeChild","BACKDROP_COLORS","dark","darkBlur","emerald","emeraldBlur","isVisible","Element","offsetParent","style","window","getComputedStyle","display","visibility","shown","_ref","_ref$onShown","onShown","_ref$debounce","debounce","actualOnShown","timer","mutationObserverInstance","MutationObserver","WebKitMutationObserver","clearTimeout","disconnect","observe","subtree","attributeFilter","checkVisible","update","create_if_block_13","create_if_block_9","each_blocks","options","_ctx$9$ctx$","label","_ctx$9$ctx$2","func","main","_attributeIndex","_attributePosition","DEFAULT_COLOR_THEME","TABLE_PADDING","ATTRIBUTES_COLUMN_WIDTH","FULLSCREEN_ATTRIBUTES_COLUMN_WIDTH","DEFAULT_ITEMS_PER_PAGE","DEFAULT_COLUMN_WIDTH","DEFAULT_IMAGE_RATIO","DEFAULT_AUTO_WIDTH","DEFAULT_MIN_ITEMS_PER_PAGE","DEFAULT_MAX_ITEMS_PER_PAGE","Number","POSITIVE_INFINITY","v","analysisMode","showImages","fullTexts","selectAdditionalFilter","index","presetIndex","sortByAttributeIndex","headerHeight","clientHeight","tableHeight","componentWidth","clientWidth","showComponent","onLoad","fullScreenAnchorNode","titleHeight","fullScreenAnalysisMode","fullScreenPresetIndex","fullScreenSortByAttributeIndex","fullScreenSelectedIndexes","fullScreenSelectedAttributeIndexes","fullScreenReverseSortOrder","fullScreenShowImages","fullScreenFullTexts","render","props","clear","CompareItems","unlink","$destroy","$set","_regeneratorRuntime","r","prototype","n","hasOwnProperty","defineProperty","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","d","getPrototypeOf","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","__await","then","callInvokeWithMethodAndArg","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","delegateYield","ownKeys","getOwnPropertySymbols","getOwnPropertyDescriptor","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","obj","key","toPrimitive","String","_toPrimitive","asyncGeneratorStep","gen","reject","_next","_throw","error","_asyncToGenerator","fn","self","args","err","fetch","AbortController","_isomorphicFetch","abortableFetch","sendJSONData","_ref2","_callee","url","data","signal","_context","mode","cache","headers","JSON","stringify","response","json","_x","sendRawJSONData","_ref4","_callee2","_ref3","_context2","_x2","sendJobJSONData","_ref6","_callee3","_ref5","_context3","crossDomain","_x3","sendFormData","_ref8","_callee4","_ref7","_ref7$method","_ref7$data","formData","_context4","FormData","_x4","linkifyText","linkifiedText","replace","match","_uri$split2","_slicedToArray","toLowerCase","split","link","shortName","other","decodeURIComponent","URL","hostname","_unused","REF_REG","RegExp","getLogicData","tags","codebooks","codebook","tag","expression","status","reduce","acc","cur","alias","some","toUpperCase","concat","manual","skipper","getRefs","refs","errors","x","indexOf","getClustersRefs","clusters","reg","qid","scope","tokens","findIndex","AssetFileUploader","_class","_Component","_this","_classCallCheck","_len","Array","_key","_callSuper","state","dragOver","acceptFile","uploading","processing","progress","warnings","inputRef","React","dropAssetFileTarget","ADND","onDrop","onAssetFileDrop","onEnter","onAssetFileDragEnter","onLeave","onAssetFileDragLeave","acceptDrop","acceptAssetFileDrop","_inherits","ref","this","connect","setState","_this$state$acceptFil","onDropFile","current","files","mounted","onFileError","_this2","asset","result","onFileUploaded","onUploadFailed","file","_this3","_this$props","uploadUrl","statusUrl","contentType","getAccessKey","_this$state$acceptFil2","closePopup","accessKey","uploadAsset","totalProgress","onUploadSuccess","onClosePopup","_this4","_this$props2","_this$state","_this$state$acceptFil3","Popup","className","classNames","width","direction","show","content","PopupCloseButton","onClose","dangerouslySetInnerHTML","__html","join","connectDropTarget","accept","multiple","tabIndex","onChange","inputFileSelected","_this$props3","_this$props3$upgradeP","upgradePackage","targetClassName","trigger","href","upgradeURL","rel","_this$props4","_this$props4$upgradeP","disabled","_this$state2","_this$state2$acceptFi","renderDisabledState","renderActiveState","Component","_applyDecoratedDescriptor","autobind","AssetDeleteJob","variable","deleteUrl","_ref$params","params","ProgressivePromise","deleteParams","assign","railsPostFetch","credentials","ok","token","statusParams","checkStatus","deleteStatus","_error","AssetUploadJob","size","uploadParams","filename","fileId","uploadWithProgress","progressEvent","round","loaded","getCSRFToken","Accept","md5","uploadStatus","upload","onProgress","_abortControllerPolyfill","fetchTimerDelay","setPageData","dispatch","_ref$pageData","pageData","_ref$extra","extra","request","setQAMode","currentPage","pageSize","totalRespondents","isQAMode","onQAModeChange","fetchDataDelay","qaCounter","defaultPageSize","DEFAULT_PER_PAGE_QA","DEFAULT_PER_PAGE","localStorage","setItem","surveyId","updateQACounter","qaTotal","_ref3$uidsToApprove","uidsToApprove","cnt","isRejected","totalRespondentsLocalStorage","parseInt","getItem","counter","toString","changeResponseCommentStatus","responseId","reason","CSRF","commentStatusesState","dispatchCommentStatuses","onSuccess","onInvalidKey","abortController","prevStatus","errorCallback","res","_error$error","message","authenticity_token","approve","t1","toggleKudos","t3","changeResponseTagState","_ref9","_ref8$action","action","onUpdateSchema","_error$error2","setResponseTag","changeTagState","_ref11","_callee5","_ref10","_ref10$request","_ref10$responseId","_ref10$path","_ref10$action","onFetch","_ref10$onError","onError","_ref10$setIsLoading","setIsLoading","fetchTimer","_error$error3","_context5","setTag","changeSurveyTagState","_ref13","_callee6","_ref12","_ref12$newValue","newValue","_ref12$action","_ref12$onError","_ref12$setIsLoading","_error$error4","_context6","setSurveyTag","_x5","changeCodebookState","_ref15","_callee7","_ref14","_ref14$request","_ref14$responseId","_ref14$path","_ref14$action","_ref14$onError","_ref14$setIsLoading","_error$error5","_context7","setCodebook","_x6","changeSurveyCodebookState","_ref17","_callee8","_ref16","_ref16$newValue","_ref16$action","_ref16$onError","_ref16$setIsLoading","_error$error6","_context8","setSurveyCodebook","_x7","generateSurveySkipper","_ref19","_callee9","_ref18","job","_ref18$selectedQuesti","selectedQuestion","_ref18$guided","guided","_ref18$onError","_ref18$onProgress","_ref18$setIsLoading","_error$error7","_context9","runSurveySkipper","hasOwn","_x8","csApiKey","statUrl","csUrl","statActionsUrl","setCsApiKey","apiKey","setStatUrl","setStatActionsUrl","addCSRF","querySelector","getAttribute","fetchSearchResults","query","orderBy","_ref$isQAMode","_ref$nocache","nocache","_ref$orderDirection","orderDirection","includeSchema","_ref$flattenAnswers","flattenAnswers","_ref$uidsToApprove","mapSearchDataForFetch","_ref3$authenticity_to","_ref3$message","_ref7$message","_ref7$type","kudosText","tagsList","search","DEFAULT_SELECTED_QUESTION","page","_ref11$action","_ref13$request","_ref13$responseId","_ref13$path","_ref13$action","cleanSearchData","order","DEFAULT_ORDER_BY","DEFAULT_ORDER_DIRECTION","getDottedQuestionName","_ref15$responseId","_ref15$request","_ref15$path","_ref15$action","_ref17$newValue","_ref17$action","count","merge","destination","_x9","_ref20","_callee10","_ref19$newValue","_ref19$action","_context10","_x10","_ref22","_callee11","_ref21","_ref21$job","_ref21$guided","_context11","command","include","statJobApiUrl","_x11","OEItem","memo","dataId","answer","survey","question","pipingMask","toolBoxOptions","voiceBusy","setVoiceBusy","_useContext","useContext","OEContext","imagesData","searchState","sentimentOptions","isShowAllTools","isShowSentiments","isTagsManagementDisabled","isVirtualOrXpert","isXpertOrVirtualType","isVideoOrImage","isVideoOrImageType","best_span_str","useMemo","find","questionOptions","getQuestionOptions","renderQuestionWithAnswers","showTitle","nodeData","nodeOptions","itemPath","pathQuestionIdToOld","itemTags","itemHasNestedQuestions","hasNestedQuestions","sentimentStatus","checkSentimentStatus","sentiment","getSentiment","getNestedSentiment","nodeQuestionPath","selectedQuestionSubstring","hasPiping","PIPING_MASK_REGEX","questionText","hasTitle","isOptionHidden","hasHeader","showNestedTitle","Fragment","lvl","OEQuestionTitle","OEQuestionResponse","Boolean","itemKey","includes","scrollToElementTimer","PageDataComments","reportId","responsesOptions","responsesRef","showTraitsRef","responseOrderRef","popupNotificationsDisabled","isShowHiddenFilters","currentResponseRef","setCurrentResponse","onCloseNotification","onUpdateParams","onPageChange","totalPages","isLoading","isProcessing","isVideoResponsesMode","searchStateRef","useRef","getToolBoxOptions","trackCurrentResponse","useCallback","bodyPosition","getBoundingClientRect","top","_step","_iterator","_createForOfIteratorHelper","responseRef","uid","useEffect","removeEventListener","addEventListener","currentResponseNode","scrollToElement","offset","align","duration","el","Response","reportVirtual","reportSchema","range","Button","onClick","bind","PageDataQA","isQALoading","qaProcessedResponseId","isOnePerPage","onApproveAll","ret","onApproveAllRef","onKeyDownHandler","keyCode","shiftKey","renderResponse","Fade","arr","isArray","_arrayWithHoles","_iterableToArrayLimit","minLen","_arrayLikeToArray","from","test","_unsupportedIterableToArray","_nonIterableRest","len","arr2","isShowAllTraits","isAdmin","isSurveyGuest","isRejectAvailable","isSurveyOwner","rejectStatus","_useState2","useState","hasTraits","trait","hasQuestionOrder","session","responseDate","moment","Date","sessionFinishAt","completedAt","utcOffset","surveyTimeZone","_useState4","rejectReason","setRejectReason","_useState6","kudosConfirm","setKudosConfirm","_useState8","isResponseOrder","setIsResponseOrder","_useState10","isShowToolsDropdown","setIsShowToolsDropdown","_useState12","isShowTraits","setIsShowTraits","_useState14","isShowOtherResponses","setIsShowOtherResponses","onChangeResponseStatus","_args","qaAction","onToggleToolsDropdown","onToggleTraits","questionsKeys","keyName","newKeyName","questionOldIdToId","schemaKey","questionByPath","lastItemPath","getLastItemPath","lastItem","lastSentimentValue","getLastSentimentValue","panelValue","panel","variables","rejection","rejected_by","rejected_at","format","popupOffset","hideOtherPopupsOnShow","contentTheme","Approve","Reject","Kudos","ResponseDropdown","opened","onToggleOtherResponses","onToggleResponseOrder","onClickOutside","Traits","responseTagsByPath","viewBox","points","onApprove","_useResponseStatus","useResponseStatus","children","shouldRender","setRender","animation","onAnimationEnd","kudosStatus","kudos","onToggleKudosResponse","onToggleKudos","onConfirmToggleKudos","NotificationPopup","statuses","no","revertable","true","windowUID","isDisabledToolBox","setIsDisabledToolBox","dndTagTargetRef","downloadUrl","getDownloadUrl","onAddTag","currentValue","onRemoveTag","onDNDDrop","dropData","_dropData$data","DEFAULT_CODEBOOK","classList","remove","dndTagTarget","acceptTypes","add","useEventListener","Sentiment","keyBase","ImageResponse","VideoResponse","AudioResponse","TextReponse","ToolBox","synth","speechSynthesis","getVoiceList","_window$voicesListSel","voicesListSelect","getVoices","voice","lang","array","blobs","setBlobs","time","setTime","played","setPlayed","playedAll","setPlayedAll","llmVoice","setLlmVoice","userVoice","setUserVoice","initRef","audioRef","blockRef","currentPlayed","utterThis","useIsVisible","updateLlmVoice","updateUserVoice","playAudio","pause","reader","FileReader","onload","srcUrl","src","play","readAsDataURL","load","onTimeUpdate","currentTime","nextTrack","audioEnded","popupContent","_window$voicesListSel2","_window$voicesListSel3","Dropdown","optionValue","optionLabel","fixedDropdownDir","audio_uid","audio_url","blob","console","log","SpeechSynthesisUtterance","stripHTML","onend","speak","cancel","version","xmlns","transform","stroke","x1","y1","x2","y2","attributeType","attributeName","keyTimes","dur","repeatCount","block","AudioVisualizer","barPlayedColor","onEnded","download","renderBlock","_node$i$original","original","TextResponse","correctionsLevel","isHighlightSearchTerms","str","showSpellcheckerDiff","te","escapeRegExp","highlightSearchString","_node$v","thumbnail_url","mp4File","isShowVideo","setIsShowVideo","videoRef","controls","autoPlay","poster","_resultText$match","resultText","thumbPreview","renderQuestionThumbnail","ImagePreview","minWidth","QUESTION_TITLE_PIPING_IMAGE_MIN_WIDTH","maxWidth","QUESTION_TITLE_PIPING_IMAGE_MAX_WIDTH","minHeight","QUESTION_TITLE_PIPING_IMAGE_MIN_HEIGHT","maxHeight","QUESTION_TITLE_PIPING_IMAGE_MAX_HEIGHT","imageUrl","original_url","previewUrl","imageAssetUrl","original_path","IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT","unsharp","backgroundColor","QUESTION_TITLE_PIPING_THUMB_WIDTH","QUESTION_TITLE_PIPING_THUMB_HEIGHT","IMAGE_ASSET_PATH_FILTER_RESIZE_AND_PAD","matchedItem","mask","removeLogicFromText","ALLOWED_HTML_TAGS","prefix","getRejectsOptions","REJECTED_OPTIONS","WrappedInlineSelect","InlineSelect","_extends","innerRef","otherReason","setOtherReason","rejectSelect","otherInput","click","onReject","option","_root","entries","onConfirmReject","onCancelReject","onChangeOtherReason","onOtherReject","onRejectReasonKeyDown","TextField","placeholder","autoFocus","onKeyDown","fetchOptions","onSelect","onResponseClick","ClickOutside","RadioButton","checked","CheckBox","role","_toConsumableArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","MenuList","components","MultiValue","Option","ClearIndicator","IndicatorsContainer","rsStyles","provided","isDisabled","multiValue","styles","filterOption","searchText","__isNew__","encodeText","formatCreateLabel","isValidNewOption","SearchInput","questionsList","isSentimentsManagementDisabled","_request$query","inputValue","setInputValue","isShowSearchIconOverlay","setIsShowSearchIconOverlay","getSearchInputOptions","setOptions","inputEl","tmpValue","convertInputValue","_survey$codeBooks$fin","_survey$codeBooks$fin2","color","codeBooks","actionMeta","newOption","sanitizeReactSelectOption","onInputChange","updatedOptions","opt","uidOption","unshift","onSearchIconClick","blur","menuIsOpen","isFocused","onSearchOverlayClick","showClearIndicator","_inputEl$current3","getValue","_query","_inputValue","rsComponents","DropdownIndicator","_objectWithoutProperties","_excluded","_MenuList","_excluded2","decodeText","stripTags","_MultiValue","SENTIMENTS_ICON_HASH","_excluded3","_Option","NoOptionsMessage","_IndicatorsContainer","hasValue","_ClearIndicator","CreatableSelect","classNamePrefix","createOptionPosition","noResultsText","openMenuOnClick","openMenuOnFocus","cacheOptions","isMulti","isClearable","isSearchable","isOptionDisabled","onMenuOpen","_inputEl$current","onMenuClose","_inputEl$current2","_inputEl$current2$sta","sentimentValues","left","_ref$sentiment","isActive","setIsActive","inProgress","setInProgress","activeLabel","setActiveLabel","sentimentPopupRef","intersectionObserverRef","onChangeSentiment","IntersectionObserver","entry","isIntersecting","rootMargin","SentimentIcon","iconClassName","sentimentValue","onMouseOver","onMouseOut","_ref$className","_ref$iconClassName","_ref$style","_ref$iconStyle","iconStyle","SurveyDropdown","isAdvancedFiltersDisabled","onNewFilter","onToggleQAMode","_searchState$request","totalComments","totalImageResponses","totalVideoResponses","isShowCorrectionsDisabled","isQAModeDisabled","q","isCreateFilterDisabled","onToggleShowSentiment","onToggleCorrectionLevel","level","onToggleHighlightSearchTerms","ORIGINALS","CORRECTIONS","CORRECTED_SPELLING","getPerPageOptions","QA_PER_PAGE_OPTIONS","PER_PAGE_OPTIONS","onDNDDropCodebook","dispatchEvent","CustomEvent","SurveyHeaderComments","_window$features$oe_t","readOnly","questionsOptionsList","isSpecialsSortingDisabled","loadRejectedCS","onCreateFilter","onSelectedQuestionChange","fetchData","totalResponses","toJS","_hasVirtualOrXpert2","hasVirtualOrXpert","isVirtualOrXpertInScope","isOnlyVirtualOrXpert","_hasDisabledSentiment2","hasDisabledSentimentInScope","isDisabledSentimentInScope","isOnlyDisabledSentiment","setError","loading","setLoading","dndDroppedTag","setDndDroppedTag","isShowDNDDropzone","setIsShowDNDDropzone","downloadProgress","setDownloadProgress","downloadInProgress","setDownloadInProgress","commentsOnPageCount","getCommentsCount","totalCommentsSum","totalCommentsCount","dndTargetCodebookRef","dndTargetTagRef","onTagApply","isForCurrentPage","flag","dndTargetCodebook","dndTargetTag","questionsOptionsListSelect","get","set","sessionOrder","traits","isEmptyScope","orderByOptions","ORDER_BY_OPTIONS","_window$features$oe_s","visible","_item","features","oe_sort_similarity","newItem","onEveryFileCallback","percent","ceil","onFinishCallback","_","val","onToggleAllTools","onToggleAllTraits","searchToFilterLogic","onLoadPerPage","newPageSize","_currentResponseRef$c","newCurrentPage","isPreserveState","onSelectOrderBy","onDownloadAllClick","customParams","customFetchDataCallback","cs","k","downloadAndPackImages","renderHelpContent","marginBottom","textTransform","CSS_SUPPORTS_STICKY","Select","showSelected","selected","allowReselection","oe_tags_management","Pagination","total","separator","source","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","OPTION_REG","FORBIDDEN_SYMBOLS","_state$data","rsFormatGroupLabel","rsFormatCreateLabel","tagsStatus","setIsDisabled","tagItem","HIDDEN_TAG_TYPES","_value","TAG_MIN_LENGTH","TAG_MAX_LENGTH","group","_tag","removedValue","formatGroupLabel","traitsOrder","traitName","traitValue","geoType","_trait","traitValueArr","renderTraitItem","tagsData","setSurvey","onTagsFetch","updated","updatedTagsData","parse","updatedTags","updatedCodeBooks","_updatedTagsData","_updatedTagsData$tags","_updated$codebook$typ","_window$survey$tags","_updated$codebook$typ2","_updated$codebook$typ3","codebookIndex","_loop","oldKey","_i","_Object$keys","updatedTagsByPath","_i2","_arr","_updatedTagsData$attr","_updatedTagsData$attr2","_updated$codebook$typ4","MASS_OPERATION_HASH","_step2","_iterator2","_step3","_iterator3","_loop2","_i3","_Object$keys2","_i4","_arr2","_updatedTagsData$attr3","_updatedTagsData$attr4","_step4","_iterator4","_loop3","splice","_i5","_Object$keys3","_i6","_arr3","_updatedTagsData$attr5","_updated$codebook$typ5","isEqual","reportParams","propsRef","responsesOptionsRef","surveyData","specialMode","onQuestionListChange","isSpecialsSortingDisabledRef","setResponsesOptions","specialModeRef","convertTraits","_surveyData","_window$features","selectedOrderBy","isFailedOrderBy","reportQuery","searchString","DEFAULT_QUERY","DEFAULT_PER_PAGE_IMAGE_RESPONSES","DEFAULT_PER_PAGE_VIDEO_RESPONSES","difference","mapReportSearchQuery","getTagsList","_searchStateRef$curre","_searchStateRef$curre2","_survey$tags","_survey$codeBooks","tagsByPath","totals","responses","weighting","stats","batchData","getRejectsAndKudos","getIsDefaultReportParams","fetchTimeout","DEFAULT_FETCH_TIMEOUT","fetchDebounceTimeout","onNoSchema","onBeforeFetch","isQAModeDelayed","fetchDataCallback","_survey","qaCounterLocalStorage","assets","qaModeCounter","_ref4$includeSchema","_ref4$customParams","_ref4$customFetchData","fetchDataComplete","_args2","abort","shareKey","target_market","quotas","_data","FETCH_TIMEOUT_STEP","force","callback","fetchDataDestroy","newPageData","useNonInitialEffect","_updated$tag$type","_updated$tag$type2","_updated$tag$type3","quantity","updatedTagsCount","max","currentCount","removedTagsCount","removedItem","removedTagsByPath","_t$type","_updated$tag$type4","_updatedTagsData2","_updatedTagsData$tags2","_updated$tag$type5","_window$survey$tags2","_updated$tag$type6","_updated$tag$type7","_updatedTagsData$attr6","_updated$tag$type8","_window$survey$tags3","_updated$tag$destinat2","_updated$tag$destinat3","_updatedTagsData$tags3","_updated$tag$destinat","_i7","_Object$keys4","_i8","_arr4","_updatedTagsData$_att","_updatedTagsData$_att2","_updated$tag$type9","_updatedTagsData$_att3","_updated$tag$destinat4","_updatedTagsData$tags4","_updated$tag$destinat5","_i9","_Object$keys5","_i10","_arr5","_updatedTagsData$_att4","_updatedTagsData$_att5","_updated$tag$type10","_updatedTagsData$_att6","_updated$tag$destinat6","_i11","_Object$keys6","_i12","_arr6","_updatedTagsData$_att7","_updatedTagsData$_att8","_updated$tag$type11","CommentsOpenEnded","_props$reportParams","reports","isAiAssistantsOECodingDisabled","_searchState$pageData","unkudos","setPopupNotificationsDisabled","getQuestionsOptionsList","questions","scripts","questionOption","questionByPosition","questionIdToPosition","PageDataComponent","uidsList","_useFetchDataComments","useFetchDataComments","useComments","_useTags2","useTags","_onTagsUpdateSchema","_onTagsFetch","_onCodeBooksFetch","useCodeBooks","currentResponse","responseData","createPortal","CodingPanel","tagsStats","onCodeBooksFetch","isShowPopup","setIsShowPopup","ImageResponseItem","noImageSrc","getImageAssetPath","IMAGE_ASSET_PATH_FILTER_RESIZE_TO_STRETCH","isLoaded","setIsLoaded","isError","setIsError","onLoadImage","onErrorImage","currentTarget","onerror","onImageDownload","stopPropagation","IMAGE_ASSET_PATH_FILTER_SMART_CROP","alt","preload_thumbnail","backgroundImage","backgroundSize","ImagePopup","closeOnClick","PageDataImageResponses","isFilterDuplicates","onChangeFilterDuplicates","IMAGE_RESPONSES_PER_PAGE_OPTIONS","ORDER_BY_OPTIONS_IMAGES","_abortController$curr","ImageResponses","useFetchDataImageResponses","useImageResponses","SurveyHeaderImageResponses","Comments","_props$specialMode","rest","comments","VideoResponses","_useReducer2","useReducer","pageDataReducer","DEFAULT_SEARCH_STATE","_useReducer4","commentStatusesReducer","DEFAULT_COMMENT_STATUSES_STATE","oeContextValue","Provider","downloading","eventWriter","resetState","zip","JSZip","downloadingFiles","fileData","XMLHttpRequest","promise","responseType","_event","onabort","startRequest","open","send","binary","startNextFileDownload","nextFile","shift","StreamSaver","WritableStream","TransformStream","writer","getWriter","previousFile","zipStream","generateInternalStream","compression","compressionOptions","on","meta","currentFile","write","close","resume","returnValue","eventName","handler","element","savedHandler","eventListener","effect","deps","initialRender","effectReturns","_action$request","processedQA","_action$request2","_state$tagsData","_action$data","_action$data$specialM","mergePageData","respondents","isUpdateQATotal","_action$data2","itemTag","_action$data3","updateTag","_path","getNodeCommentablePaths","_action$data4","_action$data5","_action$data5$update","hasDestinationTag","_action$data6","_action$data7","_action$data8","_action$data9","exisingTag","_action$data10","_action$data11","newState","_action$data12","_props$isSpecialsSort","visual_position","va_instructions","questionRegExp","deepCopy","ignoredVariables","aytmLogic","customVariables","refsList","cluster","cursorSelection","editorState","startOffset","endOffset","plainText","getCurrentContent","getPlainText","start","end","beforeCursor","afterCursor","extractTokens","parseResult","extractLastTokenProperty","property","lastToken","textBeforeCursor","textAfterCursor","parseResultPattern","parseResultEof","oefTokens","oefToken","resultParsedTokens","resultErrorParse","_extractBeforeCursor","eofToken","parsedTokens","trimmed","errorPosition","parsedPosition","parsedText","nonParsedText","extractBeforeCursor","lastTokenType","lastExpectedTokens","nonParsed","parsed","prelast","last","expected","TOKENS_CAN_BE_COMPLETED","TOKENS_OPERATOR_LABELS","LIKE","AND","OR","IN","IN_SHAPE","NOT","NOT_IN","CODEBOOK_IN","CODEBOOK_EQ","CODEBOOK_NEQ","TAG_IN","TAG_EQ","TAG_NEQ","MAX","MAXPOS","MAXPOSITION","MIN","MINPOS","MINPOSITION","COUNT","STR","textBefore","lastSingleQuoute","lastIndexOf","lastDoubleQuoute","numberOfSingleQuote","numberOfDoubleQuote","EQ","NEQ","LE","GE","LT","GT","MLT","DIV","ADD","SUB","COMMA","LPAREN","RPAREN","SPACES","always","before","after","optional","reference","operator","TOKEN_DEFAULT_SPACES","TOKEN_SPACES","EOF","TOKEN","ISODATE","BREF","TREF","NREF","ARRAYREF","TRAIT","CODEBOOK","TAG","NUMBER","parserResult","detectTokenSpaces","calculateSpaceBefore","newTextBefore","prevTokenSpaceAfter","nextTokenSpaceBefore","calculateSpaceAfter","newTextAfter","nextTokenSpaceAfter","parserWordRegExp","processText","words","firstWord","lastWord","withoutFirstWord","withoutLastWord","endsWith","startsWithLetter","insertValue","insertOperator","canBeCompleted","_parserResult$text2","_parserResult$text","canCompleteLastQuote","insertString","textAfter","lastWordCI","startsWith","fuzzy","fuzzyIndexOf","offsetText","distance","baseString","comparedString","intersectionDistanceFromEnd","char","tail","insertByReplaceLastWord","_parserResult$text3","canCompleteLastWord","labelCI","LABEL_RULES","denied","completed","allowed","processSuggestionData","completeAfterInsert","description","processedText","lastLabel","insertToken","previousToken","_insertSpaces","previousTokenSpaces","currentTokenSpaces","spaceBefore","spaceAfter","insertSpaces","suggestion","extractLongestLabel","labels","firstLabel","accumulator","string","filterDuplicates","extractIndex","sortQuestionLabel","lastTypes","prelastTypes","ignoredTokens","dependencies","EMPTY_OBSERVABLE","createSuggestions","operators","reduceTokensToOperators","transformToSuggestion","Observable","observer","_parserResult$tokens","isLastTokenCompletable","hasNonParsedText","hasNonParsedTextTrimmed","suggestedLabels","suggestionTokens","_ref$dependencies","_ref$dependencies$ayt","longestQuestionLabels","copyOfLabels","longestLabels","extracted","extractLongestLabels","filterByRegExp","completeWithLetter","completeWithNumber","createFilterByRegExp","filterByTokenType","refType","createFilterByTokenType","tokensWithTransitions","prevToken","nextToken","addTransitionQuestionTokens","sort","__","en","suggestionToken","selectedIndex","selectSuggestion","onMouseDown","preventDefault","CustomSuggestionsComponent","_SuggestionsComponent","prevProps","prevState","snapshot","_get","_getPrototypeOf","handleScroll","updatePosition","onBeforeSelect","items","_items$reduce","fuzzyItems","nonFuzzyItems","sortedFuzzyItems","refItems","itemsElementRects","getClientRects","selectionCoords","getSelectionCoords","dropdownOffsetLeft","calculateDropdownOffsetLeft","floor","onMouseMove","createSuggestionMouseHandler","onMouseEnter","SuggestionItem","SuggestionsComponent","hasParseError","errorTypes","detectError","isDetectableError","has","matchArr","createErrorRefRegExp","exec","detectErrors","cursor","selection","STORAGE_KEY","EVENT_KEY","HOTKEYS","toggleAutocomplete","createEvent","initEvent","ctrlKey","AdvancedFilter","_React$Component","parserResultEof","parserResultPattern","surveySchema","locale","active","hovered","cursorTextStyle","List","showHint","parserTimer","refSuggestionsComponent","pluginStore","canAutocompleteBeActive","getSuggestionsData","extractAytmLogic","extractParserResult","decoratorErrorsStore","strategy","ErrorsDecoratorStrategy","getLocale","getErrors","plugins","createPlugins","decorators","createDecorators","nextProps","pattern","parserState","fromJS","ErrorsDecoratorFactory","createSuggestionsPlugin","extractSelection","suggestionsBuilders","forceUpdate","updateSuggestionsComponent","hintPosition","getContent","prevEditorState","onUpdate","updateDecoratorErrors","onFocus","setActiveState","onBlur","_text","_html","parts","flatMap","every","isInteger","getSelection","newContent","Modifier","lastBlock","getLastBlock","selectionState","SelectionState","anchorKey","getKey","anchorOffset","getLength","focusKey","focusOffset","newSelection","getFirstBlock","newText","newEditorState","EditorState","getIsBackward","getFocusOffset","getAnchorOffset","hasFocus","_this5","onActive","_this$props$hintPosit","refText","forceUpdateEditorState","_this$state3","plugin","getSuggestionPlugin","WarningsDecoratorStrategy","getCursor","refEditor","editor","font","_this6","onAutocompleteUpdate","calculateCursorStyles","_this7","_this$state4","_this8","onSuggestionsBeforeSelect","targetPosition","_this$props2$hintPosi","_this9","_this$state5","refErrorsCount","isWarning","withReadOnly","onMouseLeave","renderHint","renderSuggestions","RichText","allowUndo","multiline","spellCheck","disableFormatting","onEditorChange","onEditorUpdate","onEditorFocus","onEditorBlur","handlePastedText","searchInputStyles","onSearchChange","_search$query","searchInputValue","setSearchInputValue","searchInputOptions","setSearchInputOptions","menuTimer","searchInputRef","searchInputValueRef","convertSearchInputValue","_searchInputRef$curre2","_searchInputRef$curre3","onSearchInputIconClick","_searchInputRef$curre4","searchInputComponents","_searchInputRef$curre","renderComponent","require","ReactDOM","reactEl","createElement","renderDataView","updateDataView","unlinkDataView","renderSpecials","renderReportsPanel","renderReportControls","renderPalettesPanel","renderWeightingPanel","renderFiltersPanel","renderDataCleaningPanel","renderDataLab","renderMapping","renderCrosstab","renderExportSpecific","renderHeatMapPopup","renderQuestionHeader","renderVQComponent","renderCQComponent","renderXQComponent","renderCLComponent","renderTLComponent","renderSNComponent","renderCLMappingComponent","renderTLMappingComponent","renderOEControls","renderCNControls","renderADControls","renderDCControls","renderDCResponses","unlinkComponent","unmountComponentAtNode","initializeXpertsDebug","_reject","margin","textAlign","zIndex","renderXpertsDebug","HighchartsMore","Highcharts","HighchartsSunburst","HighchartsTreemap","HighchartsTreegraph","HighchartsExporting","RenameAllCodebooks","RenameAllTags","Controls","model","onConfigChange","config","metrics","htmlFor","MultiSelect","filterBy","filterPlaceholder","buttonLabelTemplate","panelHeaderTemplate","MultiSelectHeader","panelFooterTemplate","MultiSelectFooter","states","onReset","onControlsChange","onModeChange","onUpdateData","onPublish","onPublished","dataReducer","entities","changed","setChanged","stateRef","attributesOptions","attribute","icon","entity","checkModel","newData","vi","checkState","dataContextValue","ComponentContainer","Footer","Sources","Entities","Attributes","dimension","Variables","note","onFeaturesChange","_data$controls$config","_data$controls$config2","collapsed","onViewModeChange","onPresetChange","onApplyToAll","onExport","onToggle","answerVariants","chartMode","viewMode","answerOptions","answerVariant","ids","optionDisabled","itemTemplate","valueTemplate","_props","ViewModes","VerbatimControls","TagsControls","WordcloudControls","applyToAllLabel","DataContext","setCollapsed","setMaxHeight","transitionDuration","setTransitionDuration","componentRef","collapsedRef","Transition","in","timeout","QuestionAnnotation","_editingMapsRef$curre","editing","isNoteEditable","setNote","onSaveEditing","onCancelEditing","onAIAddQuestionClick","transformedNote","parsedNode","htmlReactParser","domNode","SKIPPER_LINK_NAMES","linkAttributes","getAttributesFromLinkNode","questionType","onSkipperLinkClick","addQuestion","OPEN_SIDEBAR_LINK_NAME","_domNode$attribs","_domNode$attribs2","_domNode$attribs3","tab","attribs","focus","openSidebarLink","domToReact","editingMapsRef","prepareForEditing","linkDecorators","charsMap","charsRegexp","TextEditor","characters","severity","appliedNote","applyEditing","styleTextFormatting","QuestionBody","isQuestionCollapsed","QuestionHeader","_ref$model","onScrollToSkip","sortableList","questionView","isEditingExt","titleExt","isReportXpert","isShared","getReportParams","onToggleCollapse","onTitleChange","onStorytellingNoteChange","oeSearchParams","onCloneQuestion","onAIAssistantsClick","onFinalizeDragLayerContent","onDndStart","onDndEnd","onSetTitleExt","onSetEditQuestionExt","onSaveExt","onAIAssistantsCancel","parentID","subType","pre_type","header","storytellingNote","skipsTo","aiAssistantsText","aiAssistantsHash","aiAssistantsTotalTime","aiAssistantsCurrentTime","aiProgressMessage","setTitle","isEditing","setIsEditing","isCollapsed","setIsCollapsed","thumbnailPreviewOpened","setThumbnailPreviewOpened","aiAssistantPopupPosition","setAIAssistantPopupPosition","aiAssistantRequestFailed","setAIAssistantRequestFailed","mountedRef","useMountedRef","savedValues","dndListItemRef","dndListItemHandleRef","isRadarEnabled","radar","isAIAssistantsEnabled","ai_assistants","aiProgressMessageNode","annotationStyle","isTitleEditable","isAnnotationEditable","isNoteDisabled","isTogglable","toggling","isDraggable","reorder_questions","isClonable","questionId","onShowCommentsPage","searchParams","onShowRadarPage","justFiltersParams","pk","pv","StatPage","lib","getStatUrl","$STRG","Encode","base64params","_bsfz","StatHelpers","DOM","submitHiddenForm","dndType","TYPE_DND_MAP","insightsMapping","dndListItem","list","dndListItemHandle","lockX","clonable","onStart","onEnd","onHeaderSingleClick","withThisNote","updatedNote","onSkipToClick","idx","onHeaderClick","useSingleAndDoubleClick","onScroll","headerRect","stickyPanelRect","componentRect","defaultView","msg","onAIAssistantsClickCallback","_data$scope","_data$scope2","aiStatus","summary","icon_question_types","QuestionTitle","QUESTION_TITLE_IMAGE_MIN_WIDTH","QUESTION_TITLE_IMAGE_MAX_WIDTH","QUESTION_TITLE_IMAGE_MIN_HEIGHT","QUESTION_TITLE_IMAGE_MAX_HEIGHT","onImageOpen","onImageHide","QUESTION_TITLE_THUMB_WIDTH","QUESTION_TITLE_THUMB_HEIGHT","comments_page","formatAmounts","images","videos","qSkipsLinks","qSkipTo","questionPositionToVP","qSkipLink","renderSkipToLinks","available","onPackage","RadarSVG","callbackRef","questionTitle","textAppendix","onPaste","clipboardData","getData","selectionStart","selectionEnd","valueBefore","valueAfter","setSelectionRange","InputTextarea","maxLength","rows","autoResize","formatOptions","Map","BOLD","ITALIC","UNDERLINE","blockquote","_ref$height","_ref$characters","refEditorField","refRichText","RichTextCounter","trimAt","countText","setStatus","toggle","class","help","updateTextPrefix","updateText","texts","updateDisabled","describe","replaceRegex","charBase","it","expectedChar1","fromCodePoint","expectedChar2","expect","toBe","toHaveLength","toEqual","expectedChar","originalHtml","prepared","restored","specialChar","currentChar","usedChars","convertedHtml","titleMatch","replacement","linkDecoratorComponentID","linkDecoratorComponentIDPrefix","random","now","CompositeDecorator","contentBlock","getText","_charsMap$props$decor","decoratedText","idRef","titleStyle","titleStyleRef","innerText","QUESTION_TITLE_IMAGE_WIDTH","QUESTION_TITLE_IMAGE_HEIGHT","dlv","dlc","dlx","dld","dlt","sn","TYPE_FEATURE_MAP","TYPE_VARIANT_MAP","handleSingleClick","handleDoubleClick","delay","setClick","skipperLinkAttributesToQuestion","skipperLinkAttributesToCorrelationFinderQuestion","skipperLinkAttributesToVirtualQuestion","skipperLinkAttributesToCorrelationFinderVQQuestion","tagName","SKIPPER_VQ_LINK_NAME","skipperLinkVirtualQuestionAttributesFinalize","SKIPPER_CQ_LINK_NAME","skipperLinkCorrelationFinderAttributesFinalize","SKIPPER_CVQ_LINK_NAME","skipperLinkCorrelationFinderVQAttributesFinalize","collectArrayFromAttributes","mandatoryKeys","collected","attributeKeys","variants","prevQuestions","addNextQuestion","questionIndex","currentQuestion","isLastQuestion","nextQuestion","_questionView$toggleC","toggleCollapse","foundQuestion","_questionView$toggleC2","_attributes$title","_attributes$qtitle","_attributes$_vqQtitle","qtitle","vqAttributes","compositeQuestion","virtualQuestion","correlationFinderAttributes","vqID","vqUID","variant","batches","finalizedQuestion","ensureCorrelationFinderQuestionIntegrity","_StatPage","_StatPage$classes","_StatPage$classes$Dat","_StatPage$classes$Dat2","_StatPage$classes$Dat3","_StatPage2","_StatPage2$classes","_StatPage2$classes$Da","_StatPage2$classes$Da2","_StatPage2$classes$Da3","traitsOptions","classes","DataLab","CorrelationFinder","Lib","questionsOptions","ensureBatch","batch","batchTraitOptions","toLocaleLowerCase","logic","batchQuestionOptions","vqAnswerVariant","base","_StatPage$sidebar","_StatPage$sidebar$ope","sidebar","openControlPanel","focusOn","addBannerDropdown","waitForSelector","confidenceLevelSlider","focusBlink","significanceLevelSlider","selector","parent","retriesLeft","interval","setInterval","clearInterval","_focusBlink","stepDuration","times","waitTime","blink","_args5","optionGroupTemplate","Attribute","dndItemsList","onMethodFocus","onMethodBlur","_useContext$attribute","methodsType","setMethodsType","methodsSubtype","setMethodsSubtype","selectedValue","setSelectedValue","itemMode","setItemMode","setInput","focused","setFocused","changedRef","refsRef","focusedRef","methodRef","methodValueRef","methodsTypeRef","methodsSubtypeRef","methodsOptions","_getMethodOptions","getMethodOptions","subtype","methods","onMethodChange","applyToAll","cloneable","onInputFocus","onInputBlur","onSelectedChange","onLabelChange","onHandleClick","generateUID","isAdvanced","InputText","resetFilterOnHide","filterInputAutoFocus","appendTo","originalEvent","altKey","metaKey","onDNDPositionChange","newPosition","dragItemUpdater","itemPositionNode","getDefaultAttribute","dndItemsListRef","methodTimer","onDNDUpdateItemPositions","hiddenItemIndex","placeholderIndex","querySelectorAll","visualItemIndex","newItemIndex","placeholderVMargin","capture","buildPlaceholder","placeholderNode","onPositionChange","onUpdateItemPositions","clone","to","showMapping","ControlsContainer","getDefaultEntity","imagesDisabled","textLabel","showReset","Entity","itemImageTemplate","valueImageTemplate","onImageChange","renderLabel","setProcessing","publish","published","setPublished","portalRef","portals","publishText","publishDisabled","fetchDataError","waves","trackersWaves","insightsDashboards","publishMapping","urls","callbackTimer","expire","server_time","getTime","publishState","FooterContainer","account","notes","icons","sourceRef","labelsOptions","selectedLabels","_option","imagesOptions","selectedImages","onLabelsChange","onImagesChange","Variable","selectedValueRef","patternRefs","filters","_v","rules","optionGroupLabel","optionGroupChildren","getDefaultVariable","getItems","m","_getItems","av","avi","getSingleMethodOptions","getMultiMethodsOptions","broken","Batch","basicFilters","selectedValues","setSelectedValues","selectedOption","setSelectedOption","parserResultBasics","parser","analyzeString","saveTokens","resultBasic","convertToBasic","SchemaRules","tree","_values","convertTreeToValues","BasicFilters","sflag","bi","onFilter","suspiciousLevel","notAnalyzedCount","componentContentRef","vectors","scrollIntoView","stopEvent","fill","colors","titles","explanations","Responses","selectedUID","setSelectedUID","UIDs","scores","_level$","_toArray","suspiciousLevels","suspiciousScores","disabledVectors","HeatMapPopup","_ImagePopup","opacityImg","showImg","handleWindowResize","scrolling","_this$props$loadingIc","loadingIcon","_this$props$failedIco","failedIcon","_this$props$closeIcon","closeIcon","_this$props$closeOnCl","imgOriginalWidth","imgOriginalHeight","svgContent","imageWidth","imageHeight","iWidth","iHeight","scaleLightBox","LightBox","handleClose","fullSize","saveRef","padding","transformOrigin","opacity","propTypes","PropTypes","_model$codeBooks","codeBooksOptions","verbatim","viewModes","oe_tags_view","oe_sentiments_view","preset","statusRef","exportOptions","Blob","onToggleClick","word_clouds","presets","onImageLoad","setAsset","setLoaded","setEditing","setUploading","_useState16","errorText","setErrorText","imageRef","imagePlaceholderHeightRef","hasImage","configureImageAssetUploadManager","createAssetPath","onCancel","onSave","trimmedNote","getElement","isSaveDisabled","isReportExpert","isEdit","UploadAssetsButton","withOriginal","withErrors","renderProgressText","onFilesUpload","onFilesUploaded","_asset$error","assetUid","imagePath","rect","Image","preview","previewSrc","usePreviewRotate","waveRef","wave","AnswerVariant","dropdownsRef","parserResultPatternBasicsRef","baseMode","setBaseMode","basePattern","setBasePattern","selectedOptionRef","parserResultPatternError","parserResultPatternBasic","parserResultBase","numberAllowed","parserResultBaseError","itemModeRef","textBase","onInputPaste","valueBeforeFormatted","valueAfterFormatted","onInputKeyPress","charCode","which","charString","fromCharCode","labelTemplate","sliderProps","positions","onResetValues","convertToAdvanced","convertValuesToTree","onBaseChange","logicData","baseRefs","clustersRefs","modelClusters","ModeToggle","toggleDisabled","AnswerVariantOptions","MultiStateMultiSelect","DropdownSlider","dropdownClassName","onKeyPress","renderValues","TextPopup","AnswerVariantMX","itemPatternRef","AnswerVariantOEX","answerVariantAmount","optionsRef","onShow","overlay","getOverlay","parentRect","itemRect","scrollTop","BaseOptions","getDefaultAnswerVariant","itemBaseTemplate","valueBaseTemplate","getTopsOptions","getLabelsOptions","getImagesOptions","getAnswerVariantsOptions","patternType","_av","modeDisabled","AnswerVariantComponent","AnswerVariantOE","answerVariantPrefix","answerVariantAddText","NumberToWords","baseOptions","longAllowed","onPatternChange","onPatternTypeChange","onOtherChange","otherUID","checkError","Checkbox","inputId","InputNumber","showButtons","useGrouping","setSource","setTop","setLabel","setImage","setAnswerVariants","sourceGroup","topsOptions","answerVariantsOptions","default","_logicData$items","_path$","basic","script","scriptsRef","scriptsOptions","txt","setProperty","ScriptItemSelect","ScriptItemText","renderScriptItem","manifest","itemOptions","onValueChange","maxSelectedLabels","showSelectAll","MODE_TEXTS","advanced","basicDisabled","onScriptItemValueKeyDown","setHeight","setMinHeight","setMode","setBasicDisabled","editRef","basicOptions","onBasicChange","onScriptItemValueChange","onScriptItemValuePaste","onScriptItemValueFocus","onScriptItemValueBlur","required","fontSize","lineHeight","overflow","dndTimer","CodingCodebook","editingItem","processingItem","processingTag","settingsItem","collapsedRefs","isCurrentLoading","isSkipperLoading","onDNDStart","onDNDEnd","onCollapse","tagsCodebooks","isSkipperDisabled","onConfirm","onCloseDropdown","onToggleNew","dndComponentRef","dndItemRef","inputValueRef","isDragging","_tags","collator","onDNDStartTag","onDNDEndTag","onDNDEnter","onDNDLeave","dndComponent","dynamicPosition","dndItem","clearDragImage","onActionConfirm","CODEBOOK_MIN_LENGTH","CODEBOOK_MAX_LENGTH","onMergeTag","InputUpdate","CodebookSettings","codebookRef","CodingTag","InputNew","isAdding","onAdd","userId","errorTimer","_ref$survey","_ref$tagsData","_ref$question","_ref$reports","_ref$reportParams","_ref$isTagsManagement","_ref$isSentimentsMana","root","setNewItem","setEditingItem","setProcessingItem","setSettingsItem","setIsSkipperLoading","setProgress","processingCodebook","progressRef","_codeBooks","tagsCounters","collapsedStorage","ts","_tagsList$find","SENTIMENTS","CUSTOM_QUESTION_REG","questionPositionToId","onCodebookConfirm","newCodebook","_newCodebook","_params","onTagConfirm","newTag","_newTag","_params2","_params3","onAddCodebook","onToggleSettings","onAction","useDrag","_event$detail","eventIsLoading","CodingSkipper","progressQuestion","setProgressQuestion","onSkipperConfirm","SidebarPopup","TagSettings","tagRef","statusTimer","_ref$opened","_ref$isEditing","_ref$isLoading","_ref$isCurrentLoading","_ref$isSkipperLoading","selectedAction","setSelectedAction","selectedActionStatus","setSelectedActionStatus","usedReportsCount","setUsedReportsCount","onActionCancel","onActionClick","_window$navigator","navigator","clipboard","ClipboardItem","textarea","execCommand","getCodebooksItemOptionsList","usedReports","report","SettingsButton","itemRef","warning","onInputKeyDown","onInputKeyUp","paste","textLines","keyfilter","onKeyUp","buttonRef","Portal","contains","isEqualNode","SettingsDropdown","updateTimer","dropdownRef","resizeObserverRef","updateDropdownPosition","repeat","buttonRect","dropdownRect","scrollY","documentElement","innerHeight","updateDropdownPositionHandler","container","ResizeObserver","getTagsItemOptionsList","setIsDragging","onDragLeaveHandler","onDragOverHandler","itemTypeFromEvent","rootRect","clientY","clientX","scrollBy","useLayoutEffect","currentScrollY","preventDocumentScroll","scrollTo","behavior","CustomQuestionButton","addCustomQuestion","setDisabled","createCustomQuestion","feature","DropTargetContainer","typesTitles","dropTargetReducer","showDropTarget","dropTargetHTML","dndDropTargetRef","dndDropTarget","PinnedCustomQuestion","removePinnedQuestion","setShow","setOffset","popupRef","scrollCallback","countOffset","refPopup","bottom","arrowOffset","refPopupTarget","isSameNode","onHide","DEFAULT_STATE","getQuestionId","getBannerKey","toggleCheckbox","CrosstabPanel","onBannersSelect","onLevelsChange","totalNumberOfConnections","topsModes","levels","unlockNumber","banners","setBanners","showCounts","setShowCounts","showPercents","setShowPercents","confidenceLevel","setConfidenceLevel","significanceLevel","setSignificanceLevel","showTesting","setShowTesting","top2Box","setTop2Box","top3Box","setTop3Box","_useState18","top15Box","setTop15Box","_useState20","showMean","setShowMean","_useState22","failed","setFailed","_useState24","optionsScrollTopRef","bannersRef","showPValues","bannerOptions","banner","getQuestionIcon","overLimit","numberOfConnections","questionVariants","exportDisabled","crossByLogic","qv","onDataFormatChange","counts","onBannerHide","wrapper","onBannerShow","onBannerSelect","onBannerRemove","_banner","_variable","_question","_questions$reduce2","topsMode","_top2Box","_top3Box","_top15Box","_showMean","renderBanner","confirmKeyboardSelect","Slider","DataCleaningPanel","onCheck","vector","borderLeftColor","DataLabPanel","buttons","addPinnedQuestion","adndType","BUTTON_TEXTS","turf","emd","concept_lab","concept_mapping","tracker_lab","tracker_mapping","THRESHOLD_OPTIONS","ExportSpecificButton","methodText","xlsxText","ExportSpecificMdOptions","setMethod","threshold","setThreshold","gearRef","panelRef","thresholdRef","methodObj","hideOnGlobalClick","DOMchildOf","items_per_set","ExportSpecificTurfOptions","ExportSpecific","exportType","setExportType","exportQuestion","setExportQuestion","exportTypeRef","isTurfEnabled","isCjExportEnabled","conjoint","isEmdExportEnabled","authorized_exports","isCLExportEnabled","isCLMappingExportEnabled","isTLExportEnabled","isTLMappingExportEnabled","exportTypeOptions","defaultExportType","exportTypeObj","exportQuestionsOptions","exportQuestionObj","exportQuestionOptions","exportOptionsDefaults","fileType","turfType","positive","onExportClick","locked","FiltersAdvanced","onChangeAdvancedFilter","FiltersGroup","externalData","onShowHiddenGroup","getApiKey","setHidden","errorList","setErrorList","processingList","setProcessingList","groupRef","groupUploaderRef","uploadQueue","uploadQueueCallbacks","getFilterValues","external","getFilterOptions","vals","subkey","getFilterError","derived","getFilterProcessing","checkQueueCallbacks","checkApiKey","checkUploadQueue","checkUploadQueueError","onDeleteFilter","onVariableRemoved","FiltersRow","filterValues","filterOptions","FiltersPanel","_ref$filtersMode","filtersMode","_ref$filtersPattern","filtersPattern","_ref$externalData","onScrollToQuestion","onSwitchMode","restoreQuestion","filtersReducer","filtersApplying","setFiltersApplying","filtersReleasing","setFiltersReleasing","filtersCountApplied","setFiltersCountApplied","questionsCallback","dropdownCallback","overlayRef","filtersPatternRef","deepAllowed","tagsAllowed","sentimentsAllowed","basicFiltersRef","filtersChangingRef","filtersApplyingRef","contentContainerExpanderRef","filtersChanged","parserResultPatternLogicData","filtersUIDs","_acc","_cur","filtersCount","scrollAdjustment","overlayRect","dropdownNode","setBasicValue","setAdvancedValue","stateDisabled","switchMode","scroll","filtersModeDisabled","containerExpander","onApplyFilters","onReleaseActiveFilters","onChangeBasicFilter","treeValue","updateCascadeBasicValue","deleteBasicValue","changeBasicValue","onResetBasicFilter","deleteCascadeBasicValue","onShowFilterDropdown","expand","onHideFilterDropdown","unexpand","currentAdvPart","regexp","newFilter","_treeKeys","treeKey","newKey","treeKeys","newKeys","truncate","setValues","restoreDisabled","setRestoreDisabled","filterRef","filterDisabled","filterSelected","filterFlatOptions","onChangeSlider","onChangeFilter","hasHandle","onShowDropdown","onHideDropdown","onSlideEnd","hasScrollTo","setHelpPopup","helpPopup","resetFilters","fromEntries","cloneDeep","MappingPanel","mappings","ColorThemes","colorThemes","reportColorTheme","palettes","reportPalette","onPaletteAdd","copyAvailable","showReportPalette","palette","equals","onColorThemeSelect","onColorThemeCopy","saturation","luminosity","colorTheme","colorIndex","PalettePicker","_ref$palette","setColors","colorsRefs","setColorsRefs","currentColor","setCurrentColor","currentColorId","setCurrentColorId","currentColorMethod","setCurrentColorMethod","pickerRef","colorPickerRef","pickerTopRef","onColorMethodChangeRef","calculate","COLORS_TOTAL","onColorsRandomRef","onColorChangeRef","hex","clickHandler","scrollHandler","pickerRect","DOMElementRect","containerRect","popupRect","popup","createRef","theme","COLOR_METHOD_OPTIONS","ColorPickerPopup","offsetLeft","PalettesPanel","palettesUrl","currentStatus","setCurrentStatus","currentPalette","setCurrentPalette","currentPaletteId","setCurrentPaletteId","reportPaletteId","paletteListAvailable","editAvailable","addAvailable","saveAvailable","updateCurrentStatus","deleteIn","setIn","fetchSaveData","wrappedPostFetch","fetchUpdateData","_unused2","fetchRemoveData","paletteId","_unused3","DEFAULT_PALETTE","getIn","listText","Storage","Report","ContextSubscriber","contextTypes","isRequired","statePath","modelPath","actions","currentReportId","virtualReportsIds","isSurveyViewer","mapToProps","listState","listStatePath","listModel","listModelPath","_dec","ContextProvider","shouldUpdate","_dec2","_Report","_ManagedRenderCompone","sliding","edgeScrolling","dndStart","dndEnd","dndFetchData","updateListState","updates","connectDNDListItem","_this$props5","updateCurrentReportId","refTitle","getPropertyValue","refComponent","checkOverflow","_this$props6","isNew","isDeleted","isCurrent","isChanged","isDeleting","isLocked","saveListItemRef","renderTitle","onReportDelete","onReportSelect","ReportPopup","connectDNDListItemHandle","ManagedRenderComponent","_class2","ReportControlsWithContext","limits","ReportControls","_ReportControls","addListItem","getModelProps","revertListItem","updateListItem","isCompact","schema","isEditable","isEmpty","isSaving","compact","onReportRevert","onReportAdd","onReportUpdate","TITLE_MAX","shareLinkHash","timeZone","_ReportPopup","copied","escHandler","scrollPopupContainer","positionHandler","updatePopupPosition","updateItemModel","do","deleteListItem","share","updateItemShareLink","copyToClipboard","parentElement","focusMe","refButton","refDescription","refDescriptionContentBody","descriptionComputedStyle","descriptionContentComputedStyle","refDescriptionContent","refContent","refDescriptionHead","refDescriptionContentHead","refDescriptionFooter","updateContainerPosition","refPopupArrow","oldProcess","oldActive","newActive","emails","offActive","ReportPopupDescription","onReportDeleteCancel","ReportPopupSharing","blurMe","_this$props7","shareLinkExist","isUnremovable","onReportTitleChange","handleReportTitlePastedText","renderDeleteReport","renderCurrentReportVersion","renderSharingOptions","iconColor","onIconClick","updateShareLink","selectValue","copyLink","_this$props8","reportStyle","openPopup","nodeID","onExited","hidePopup","renderDescription","renderContent","_ReportPopupDescription","timestepInterval","flags","protected","timestep","localDate","minutesDiff","diff","hoursDiff","daysDiff","monthsDiff","yearsDiff","refCreatedTimestep","getDateApproximation","refEditedTimestep","isDefault","creator","toArray","onHiddenChange","onProtectedChange","_ReportPopupSharing","emailsReady","emailsSuccess","emailsError","emailsSentCount","emailsInvalid","emailsChanged","checkEmails","newListState","sent_count","invalid_emails","tickToHideEmails","sendEmails","ReportsPanel","disabledDataLab","_ReportsPanel","_ManagedRenderCompone2","_createClass","togglePlaceholder","cloneModel","dropListItem","listIndex","connectDNDItemsList","itemStatePath","itemModelPath","itemModel","renderItem","itemSeq","valueSeq","virtualItemSeq","virtualItemSeqLength","defaultItemSeq","otherItemSeq","otherItemSeqLength","renderItemsList","AddReport","saveListRef","renderAddItem","renderList","_class4","_class3","_AddReport","withMutations","vq1","isXpert","isBlankAllowed","onReportBlankAdd","updateState","ERROR","VIRTUAL_REPORTS_IDS","getModelData","virtual","storytellings","storytellingNotes","logicTags","_virtual","setModelData","initials","decodeModelData","encodeModelData","newListModel","virtualReports","virtualReport","updateModel","pos","newListItem","listItem","setSize","siblingId","edited","process","shareLink","WeightingItem","onRemove","inputsRefs","setInputsRefs","textbox","refInput","inputFilter","oldValue","oldSelectionStart","oldSelectionEnd","actual","final","WeightingList","virtualOptions","toJSON","Weighting","appliedWeighting","weightingDisabled","setWeightingDisabled","setIsProcessing","containerExpanderRef","weighted","weightingOptions","census","censusOptions","varOptions","onApply","renderButtons","iconPos","InputSwitch","undefs","processUploadedFile","readAsText","JsonFileUpload","acceptFiles","onDropFiles","selectedFiles","_this$props$sortFiles","sortFiles","sortFilesByFilenames","_this$props2$selectOn","selectOnClick","inputFilesSelected","dir","fileNameSplit","part","currentFileNameSplitA","currentFileNameSplitB","xpertDebug","removeQuestions","aggregate","location","pathname","api","loadQuestionsSuccess","$STATS","XpertsDebugPopup","maxItems","renderButton","_ref$dragOver","ProgressPanel","DropPanel","watchProgress","_props$progress","_ref2$percents","_ref2$loadedFiles","loadedFiles","_ref2$totalFiles","totalFiles","LoaderDots","dotSize","dots","errorLabelMatch","AYTM_LOGIC_STATEMENT_MATCH","AYTM_LOGIC_ESCAPE_BRACKET_MATCH","AYTM_LOGIC_ESCAPE_BRACKET_REGEXP","AYTM_LOGIC_STATEMENT_STRING_MATCH","extractLogicStatementsFromText","statement","replaceLogicStatementsInText","replacer","extractRefsFromLogicStatement","labelMatch","extractErrorRefsFromLogicStatement","featuresStore","getFeatures","editorUID","getFeature","featureUID","getFeatureUpgradePackage","getFeatureStatus","hasFeatureStatus","isFeatureOn","isFeatureOff","setFeatures","questionTypeFeature","questionMode","getQuestionTypeStatus","getQuestionTypeUpgradePackage","isQuestionTypeAvailable","projectUID","checkout","validate","requestAccessToken","transferControl","editAction","viewAction","correctAction","versionAction","newTargetMarketAction","translateAction","editTargetMarketAction","graphQLEndPoint","imageAsset","_ref$width","_ref$filter","IMAGE_ASSET_PATH_FILTER_RESIZE_TO_FIT","_ref$backgroundColor","_ref$unsharp","_ref$gravity","gravity","IMAGE_ASSET_PATH_GRAVITY_CENTER","_ref$animated","animated","_ref$trim","getMultilingualRoute","researcherLanguage","languageUID","ImageAssetUploadJob","createParams","content_type","filesize","createdAsset","upload_urls","binary_upload_url","finish_upload_url","status_upload_url","headersFromGoogleUploadUrl","finishResponse","assetStatus","fileName","fileSize","VideoAssetUploadJob","processingVirtualProgress","IMAGE_ASSET_PATH_FILTER_RESIZE_TO_FILL","IMAGE_ASSET_SIZE_SMALL","IMAGE_ASSET_SIZE_MIDDLE","IMAGE_ASSET_SIZE_BIG","OLD_IMAGE_ASSET_WIDTH","OLD_IMAGE_ASSET_HEIGHT","OLD_IMAGE_ASSET_WIDTH_MEDIUM","OLD_IMAGE_ASSET_HEIGHT_MEDIUM","_ref$host","host","assets_host","_ref$pathPrefix","pathPrefix","_ref$path","_ref$json","getSmallAssetPath","getOldSmallAssetPath","getOldMediumAssetPath","getMediumAssetPath","background","getBigAssetPath","nameContextProvider","ContextProviderSubscriptions","onSubscribe","onUnsubscribe","onUnsubscribeAll","onProviderUnmount","listeners","subscribe","unsubscribe","newValues","listener","subscribeOn","subscribedValues","unsubscribed","listenerIndex","propsMapper","ProviderComponent","providerComponentDisplayName","thisNameContextProvider","ContextProviderComponent","fetchContextValues","saveWrappedRef","saveWrappedComponentRef","subscriptions","fetchedValues","updateValues","contextProps","providerUnmount","refWrappedComponent","WrappedComponent","ContextProviderOptions","childContextTypes","hoistNonReactStatics","subscribers","_subscribers$reduce","subscriber","normalizedSubscriber","subscribersList","provider","providerSubscriptionContextTypes","updateOnProps","SubscribedComponent","subscribedComponentDisplayName","ContextSubscriberComponent","contextValues","unsubscribeListeners","subscription","mappedContextProps","mappedContextPropsKey","_subscriber$provider","_subscriber$provider$","_subscriber$provider2","updatedContextProps","ContextSubscribers","shallowEqual","PureComponent","nextState","nextContext","_get2","exceptionReporter","shallowDataEqual","PureDataComponent","_PureComponent","writeText","setData","bufferElement","textContent","createRange","selectNodeContents","selectNode","removeAllRanges","addRange","xhr","withCredentials","XDomainRequest","headerKey","setRequestHeader","responseText","onprogress","elementRef","intersecting","setIntersecting","unobserve","getNode","_ref$margin","defaultMargin","containerProps","expanded","containerHeightFreezed","originalMinHeight","originalHeight","originalOverflow","insets","initContainer","adjustContainer","lowestInsetBottom","inset","_ref2$margin","insetRect","insetBottom","containerTop","expandContainerAPI","_ref3$margin","insetNode","delete","freezeContainerHeight","_containerProps$node$2","unfreezeContainerHeight","popupHeader","mouseup","ObservableFromEvent","mousemove","mousedrag","pipe","rxMergeMap","md","startX","startY","rxMap","mm","rxTakeUntil","offsetTop","targetRect","dragModal","ColorPicker","PointerSaturation","PointerHue","colorHelper","EditableInput","Saturation","pointer","Hue","CustomPicker","ERROR_TYPES","sref","aytm_logic_required","old","invalid_logic","old_translate","templateVariablesRegex","HintPopup","textProps","_errorTypes$errorType","_this$props$errorType","updateOldRefs","disableValidation","errorObj","errorTextTrimmed","normalizedText","extractErrorObject","errorType","errorTypeText","errorString","packageName","capitalize","packageURL","replacements","extractErrorHint","extractErrorTypeText","renderRef","errorKey","createErrorsDecoratorComponent","store","createErrorsDecoratorStrategy","_store$strategy$error","errorTypeFilter","_React$PureComponent","_props$items","timeoutId","portalStyles","calculatePortalStyles","pageX","pageY","preselectedIndex","scrollToItem","extractDropdownOffsetText","rects","itemsWidth","textOffsetLeft","calculateDropdownTextOffsetLeft","elementOffsetTop","elementOffsetLeft","scrollX","scrollLeft","dropdownOffsetTop","calculateDropdownOffsetTop","heightLimit","itemsElement","calculateItemIndexByHeightLimit","_this4$state","prevSelectedIndex","prevPageX","prevPageY","handleKeyDown","_ref3$force","itemElement","itemOffsetTop","calculatePageUpItemIndex","calculatePageDownItemIndex","portalId","renderDropdown","firstWordMatch","lastWordMatch","firstWordCI","withoutFirstWordCI","withoutLastWordCI","lower","upper","Span","CompoundDecorator","decorator","contentState","emptyTuples","decorations","tuples","blockDecorations","getDecorations","tuple","tupleIndex","decoratorProps","compositionProps","Composed","Composition","decoration","getComponentForKey","componentProps","getPropsForKey","countLines","matchNewlines","getSuggestionsStub","customProcessText","_ref$suggestionsBuild","getEditorState","setEditorState","suggestions","doneFetching","defaultProcessText","checkAutocompleteIsVisible","updateSuggestionsComponentItems","updateItems","newPlainTextBefore","newPlainTextAfter","newPlainText","charsStyles","getBlocksAsArray","getCharacterList","charMetaData","getStyle","newAnchorKey","newCharsStyles","characterList","CharacterMetadata","newContentBlock","ContentBlock","genKey","depth","newContentState","ContentState","newCurrentContent","newBlockArray","cursorOffset","styledCurrentContent","blockCursor","characterCursor","inlineStyle","styledEditorState","getDecorator","styledSelectionState","_selection$text","suggestionsData","processTextBeforeCursor","processTextAfterCursor","suggestionsStream","builders","suppliedIds","ObservableMerge","builder","rxDelay","rxFilter","suggestionsBuilder","rxToArray","preFillSuggestions","_done","DefaultSuggestionsComponent","getStartOffset","getEndOffset","initialize","handleReturn","keyBindingFn","KEYCODE_ESC","KEYCODE_ENTER","KEYCODE_UP","KEYCODE_DOWN","handleKeyCommand","getHasFocus","nextSelection","getAnchorKey","getFocusKey","blockMap","getBlockMap","skipWhile","extractSelectionOffsets","collapse","boundingLeft","boundingTop","rangeCount","getRangeAt","cloneRange","createTextNode","insertNode","spanParent","normalize","_Pagination","_PureDataComponent","_this$props2$prefix","_this$props2$separato","VideoAssetUploadManager","AsyncJobManager","concurrency","templateID","srcSurveyID","droppedFiles","uploadJobs","GeneralVideoAssetUploadJob","template_id","src_survey_id","fileTotalSizes","fileLoadedSizes","totalSize","loadedSize","queue","jobResults","fileIndex","fileLoadedSize","AssetFilesUploader","_this$props$multiple","_this$props$maxItems","_len2","_key2","_this$props2$multiple","_this$props2$maxItems","_this$props3$watchPro","_this$props3$withErro","uploadVideoAssets","uploadImageAssets","_this2$props$withOrig","videoAsset","videoPath","mp4","thumbnailPath","thumbnail","_this$props4$multiple","_this$props4$selectOn","ImageAssetUploadManager","configure","GeneralImageAssetUploadJob","_result$result","_props$multiple","_props$withErrors","_Button","iconPosition","asAnchor","otherProps","mergedStyle","buttonProps","defaultProps","DropdownList","lastFilter","fetchItems","listRef","keyboardFocusIndex","mouseDownListener","button","selectedItemElement","DOMclosest","onSelectItem","selectedItemIndex","dataset","selectedItem","moveKeyboardFocus","KEYCODE_PGDOWN","KEYCODE_PGUP","toIndex","newFocuseditem","dropdownContent","containerHeight","listHeight","scrollHeight","itemTop","itemHeight","offsetHeight","_prevProps","setListRef","_LightBox","refLightBoxBackdrop","refLightBoxBackdropCenter","_props$dots","Repeat","marginRight","borderRadius","LoaderWave","bars","MaskedInput","_MaskedInput","maskLib","setSelection","sendUpdate","prevValue","emptyValue","activeElement","raw","getRawValue","sub","withSub","prevWithSub","rawValue","placeholderChar","formatCharacters","InputMask","updateValue","KEYCODE_BACKSPACE","updateSelection","backspace","isKeyUndo","undo","isKeyRedo","redo","keyChar","subCorrectedText","sum","setValue","setTo","preRaw","setPattern","setMask","initValue","defaultValue","updatePattern","mono","managedValue","formattedSub","_c","showSub","MAX_OPTIONS_NUMBER","nextSelectID","SELECT_FILTER_STRATEGIES","longestMatchedSequenceLength","patternLength","strLength","matchFrom","currentPart","currentPartMatched","patternIdx","stringIdx","fuzzyMatch","firstChar","_SELECT_FILTER_STRATE2","defaultMatch","defaultPriority","w","_Select","valueOption","keyboardIndex","flipped","fetchedOptions","filterChangeDelayTimer","mouseOverOptions","filteredOptionsCache","filteredOptionsCacheFor","selectID","_this$refRoot","removeGlobalEvents","mouseDownHandler","refRoot","closeOptionsList","_this2$refRoot","ownerDocument","sOpened","willBeOpened","setValueOption","addGlobalCloseEvents","selIndex","selectedOptionIndex","scrollToOption","optionElement","DOMfindParent","optionIndex","optionIndexInt","filteredOptions","selectOption","refocus","fetchSelectOptions","refOptions","listItems","listScrollTop","newKeyboardIndex","onListScroll","KEYCODE_HOME","KEYCODE_END","toggleOptions","KEYCODE_SPACE","KEYCODE_TAB","matchOptions","_this$props4$filterSt","filterStrategy","lcfilter","filterStrategyFn","filterPriorities","filtered","lctext","priority","lcIndex","matchedText","priorityA","buttonText","optionText","optionCategory","fetching","newIcon","renderButtonText","onFilterChange","noScroll","fullScreenOptions","smallHeight","descriptionOptions","matchNoPlaceholder","optionsMinHeight","optionsMaxHeight","optionsHeight","viewport","DOMoptions","takeWhile","countedWidth","containerWidth","clickOptionList","mouseEnterOptions","mouseLeavedOptions","oi","ariaSelected","mouseEnterOption","drop","dataTestId","defaultIsEmpty","renderOptions","onOverflow","_TextField","debounceTimeout","debouncePrevValue","listPipe","charLimit","maskPattern","maskPlaceholderChar","maskFormatCharacters","maskSub","postfix","counterWidth","prefixWidth","postfixWidth","cols","resizableHeight","_this$props2$inputTyp","inputType","sValue","innerPaddingRight","innerPaddingLeft","paddingRight","paddingLeft","right","TextareaAutosize","abs","onMaskedChange","_this$props$trigger","PopupTrigger","headerCloseButton","object","plaintext","zlib","buf","b64","Buffer","Decode","b64String","stores","Store","localForage","Dummy","ClearData","storeName","all","removeItem","DataKeys","GetByKey","GetData","SetData"],"sourceRoot":""}