{"version":3,"file":"js/app-stats-50c341f7f3339e4a42b7.js","mappings":"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","sources":["webpack://AYTM/./app/_stock/webpack/app/stats/page/ sync ^\\.\\/.*$","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/hooks/useEventListener.js","webpack://AYTM/./app/_stock/webpack/app/stats/hooks/useNonInitialEffect.js","webpack://AYTM/./app/_stock/webpack/app/stats/hooks/useSingleAndDoubleClick.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/hooks/useResponseStatus.js","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/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/ContentHeader.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/components/SearchInput.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/components/StickyHeader.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/components/lib/constans.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/components/lib/templates.js","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/items/Controls.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/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/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/Export.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/oe/components/ControlsComponents.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/hooks/useDrag.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/coding/hooks/useEventBus.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/coding/lib/constants.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/color-options/ColorOptionsPanel.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/color-options/ColorPicker.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/color-options/ColorThemes.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/color-options/lib/constants.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/color-options/lib/func.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/completes/CompletesPanel.jsx","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/lib/helps.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/components/lib/utils.js","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/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/ReportsPanel.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/reports/actions.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/reports/components/ReportPopupDescription.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/reports/components/ReportPopupSharing.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/specifications/SpecificationsPanel.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/specifications/components/SpecificationsListSurvey.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/specifications/components/SpecificationsPanelSurvey.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/specifications/lib/RowCollapsable.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/view-options/ViewOptionsPanel.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/view-options/components/ArtificialResponses.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/view-options/components/ChartModes.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/view-options/components/Params.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/view-options/components/Sentiments.jsx","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/view-options/components/Traits.jsx","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/lib/hooks/useIsVisible.js","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/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/ContentHeader.module.scss?bc4e","webpack://AYTM/./app/_stock/webpack/app/stats/page/components/styles/SearchInput.module.scss?5787","webpack://AYTM/./app/_stock/webpack/app/stats/page/components/styles/StickyHeader.module.scss?ab22","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/components/styles/items/Controls.module.scss?4a32","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/color-options/styles/ColorOptionsPanel.module.scss?a72c","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/color-options/styles/ColorPicker.module.scss?50fc","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/completes/styles/CompletesPanel.module.scss?9a99","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/reports/styles/Report.module.scss?2a65","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/specifications/styles/SpecificationsPanel.module.scss?7128","webpack://AYTM/./app/_stock/webpack/app/stats/page/sidebar/view-options/styles/ViewOptionsPanel.module.scss?a03a","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"],"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/hooks/useResponseStatus\": 34309,\n\t\"./comments/hooks/useResponseStatus.js\": 34309,\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/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/ContentHeader\": 76098,\n\t\"./components/ContentHeader.jsx\": 76098,\n\t\"./components/SearchInput\": 26459,\n\t\"./components/SearchInput.jsx\": 26459,\n\t\"./components/StickyHeader\": 75564,\n\t\"./components/StickyHeader.jsx\": 75564,\n\t\"./components/lib/constans\": 60025,\n\t\"./components/lib/constans.js\": 60025,\n\t\"./components/lib/templates\": 42339,\n\t\"./components/lib/templates.js\": 42339,\n\t\"./components/lib/utils\": 46554,\n\t\"./components/lib/utils.js\": 46554,\n\t\"./components/styles/AdvancedFilter.module.scss\": 72580,\n\t\"./components/styles/ContentHeader.module.scss\": 83097,\n\t\"./components/styles/SearchInput.module.scss\": 62540,\n\t\"./components/styles/StickyHeader.module.scss\": 53454,\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/items/Controls\": 67195,\n\t\"./question-views/components/items/Controls.jsx\": 67195,\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/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/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/items/Controls.module.scss\": 55975,\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/Export\": 8382,\n\t\"./question-views/oe/components/Controls/Export.jsx\": 8382,\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/components/ControlsComponents\": 82656,\n\t\"./question-views/oe/components/ControlsComponents.jsx\": 82656,\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/hooks/useDrag\": 97109,\n\t\"./sidebar/coding/hooks/useDrag.js\": 97109,\n\t\"./sidebar/coding/hooks/useEventBus\": 17285,\n\t\"./sidebar/coding/hooks/useEventBus.js\": 17285,\n\t\"./sidebar/coding/lib/constants\": 6968,\n\t\"./sidebar/coding/lib/constants.js\": 6968,\n\t\"./sidebar/coding/styles/CodingPanel.module.scss\": 77302,\n\t\"./sidebar/color-options/ColorOptionsPanel\": 27910,\n\t\"./sidebar/color-options/ColorOptionsPanel.jsx\": 27910,\n\t\"./sidebar/color-options/ColorPicker\": 96815,\n\t\"./sidebar/color-options/ColorPicker.jsx\": 96815,\n\t\"./sidebar/color-options/ColorThemes\": 98812,\n\t\"./sidebar/color-options/ColorThemes.jsx\": 98812,\n\t\"./sidebar/color-options/lib/constants\": 22759,\n\t\"./sidebar/color-options/lib/constants.js\": 22759,\n\t\"./sidebar/color-options/lib/func\": 63039,\n\t\"./sidebar/color-options/lib/func.js\": 63039,\n\t\"./sidebar/color-options/styles/ColorOptionsPanel.module.scss\": 76819,\n\t\"./sidebar/color-options/styles/ColorPicker.module.scss\": 98675,\n\t\"./sidebar/completes/CompletesPanel\": 18407,\n\t\"./sidebar/completes/CompletesPanel.jsx\": 18407,\n\t\"./sidebar/completes/styles/CompletesPanel.module.scss\": 44111,\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/lib/helps\": 88538,\n\t\"./sidebar/components/lib/helps.js\": 88538,\n\t\"./sidebar/components/lib/utils\": 30082,\n\t\"./sidebar/components/lib/utils.js\": 30082,\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/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/ReportsPanel\": 80534,\n\t\"./sidebar/reports/ReportsPanel.jsx\": 80534,\n\t\"./sidebar/reports/actions\": 14732,\n\t\"./sidebar/reports/actions.js\": 14732,\n\t\"./sidebar/reports/components/ReportPopupDescription\": 76123,\n\t\"./sidebar/reports/components/ReportPopupDescription.jsx\": 76123,\n\t\"./sidebar/reports/components/ReportPopupSharing\": 93568,\n\t\"./sidebar/reports/components/ReportPopupSharing.jsx\": 93568,\n\t\"./sidebar/reports/styles/Report.module.scss\": 19284,\n\t\"./sidebar/reports/styles/ReportPopup.module.scss\": 6038,\n\t\"./sidebar/reports/styles/ReportsPanel.module.scss\": 94007,\n\t\"./sidebar/specifications/SpecificationsPanel\": 79354,\n\t\"./sidebar/specifications/SpecificationsPanel.jsx\": 79354,\n\t\"./sidebar/specifications/components/SpecificationsListSurvey\": 68163,\n\t\"./sidebar/specifications/components/SpecificationsListSurvey.jsx\": 68163,\n\t\"./sidebar/specifications/components/SpecificationsPanelSurvey\": 71579,\n\t\"./sidebar/specifications/components/SpecificationsPanelSurvey.jsx\": 71579,\n\t\"./sidebar/specifications/lib/RowCollapsable\": 73278,\n\t\"./sidebar/specifications/lib/RowCollapsable.jsx\": 73278,\n\t\"./sidebar/specifications/styles/SpecificationsPanel.module.scss\": 37529,\n\t\"./sidebar/view-options/ViewOptionsPanel\": 68145,\n\t\"./sidebar/view-options/ViewOptionsPanel.jsx\": 68145,\n\t\"./sidebar/view-options/components/ArtificialResponses\": 66125,\n\t\"./sidebar/view-options/components/ArtificialResponses.jsx\": 66125,\n\t\"./sidebar/view-options/components/ChartModes\": 36815,\n\t\"./sidebar/view-options/components/ChartModes.jsx\": 36815,\n\t\"./sidebar/view-options/components/Params\": 31503,\n\t\"./sidebar/view-options/components/Params.jsx\": 31503,\n\t\"./sidebar/view-options/components/Sentiments\": 75021,\n\t\"./sidebar/view-options/components/Sentiments.jsx\": 75021,\n\t\"./sidebar/view-options/components/Traits\": 93294,\n\t\"./sidebar/view-options/components/Traits.jsx\": 93294,\n\t\"./sidebar/view-options/styles/ViewOptionsPanel.module.scss\": 28297,\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;","<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-v2 aytmfd-spin\" />\n {:else}\n <i class=\"icon-aytmfd-export-v2\" />\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 { useRef, useEffect } 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 { useEffect, useState } from 'react'\n\nconst 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 () => timer && clearTimeout(timer)\n }, [click, handleSingleClick, handleDoubleClick, delay])\n\n return event => setClick(event.detail)\n}\n\nexport default useSingleAndDoubleClick\n","import { 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 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 }).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","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 && !tags.manual.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 <>\n <PopupCloseButton onClose={this.closePopup}>\n <i className=\"icon-aytmfd-close-v2\" />\n </PopupCloseButton>\n <div dangerouslySetInnerHTML={{ __html: errors.concat(warnings).join('<br/><br/>') }}></div>\n </>\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=\"icon-aytmfd-refresh-v2 aytmfd-spin\"></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-excel-v2\" />\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-v2\"></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-excel-v2\" />\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-excel-v2\" />\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// 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 {\n errorCallback()\n }\n}\n\n// mass assign tag create/delete handler\nexport const changeCodebookState = async ({\n codebook,\n path = '*',\n request = {},\n responseId = '*',\n action = 'create',\n onFetch,\n onError = () => {},\n setIsLoading = () => {},\n onInvalidKey\n}) => {\n let fetchTimer = null\n\n const errorCallback = message => {\n setIsLoading(false, true)\n\n fetchTimer && clearTimeout(fetchTimer)\n fetchTimerDelay = 1000\n\n onError({ codebook: codebook.codebook, name: `${action}Error`, message: message || 'Oops. Something is wrong.' })\n }\n\n try {\n const abortController = new AbortController()\n\n setIsLoading(true)\n\n const { signal } = abortController\n const res = await setCodebook({ codebook, path, request, responseId, action, signal })\n\n switch (res.status) {\n case 'OK': {\n fetchTimer && clearTimeout(fetchTimer)\n fetchTimerDelay = 1000\n\n if (onFetch && 'function' == typeof onFetch) {\n onFetch(res, { codebook, path, request, responseId, action })\n }\n setIsLoading(false)\n break\n }\n case 'RUNNING': {\n fetchTimer = setTimeout(() => {\n changeCodebookState({\n codebook,\n path,\n request,\n responseId,\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 path,\n request,\n responseId,\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 {\n errorCallback()\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 setIsLoading(false, true)\n\n fetchTimer && clearTimeout(fetchTimer)\n fetchTimerDelay = 1000\n\n onError({ codebook: codebook.codebook, name: `${action}Error`, message: message || 'Oops. Something is wrong.' })\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 fetchTimer && clearTimeout(fetchTimer)\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 {\n errorCallback()\n }\n}\n\n// mass assign tag create/delete handler\nexport const changeTagState = async ({\n tag,\n path = '*',\n request = {},\n responseId = '*',\n action = 'create',\n onFetch,\n onError = () => {},\n setIsLoading = () => {},\n onInvalidKey\n}) => {\n let fetchTimer = null\n\n const errorCallback = message => {\n setIsLoading(false, true)\n\n fetchTimer && clearTimeout(fetchTimer)\n fetchTimerDelay = 1000\n\n onError({\n tag: tag.tag,\n codebook: tag.codebook,\n name: `${action}Error`,\n message: message || 'Oops. Something is wrong.'\n })\n }\n\n try {\n const abortController = new AbortController()\n\n setIsLoading(true)\n\n const { signal } = abortController\n const res = await setTag({ tag, path, request, responseId, action, signal })\n\n switch (res.status) {\n case 'OK': {\n fetchTimer && clearTimeout(fetchTimer)\n fetchTimerDelay = 1000\n\n if (onFetch && 'function' == typeof onFetch) {\n onFetch(res, { tag, path, request, responseId, action })\n }\n setIsLoading(false)\n break\n }\n case 'RUNNING': {\n fetchTimer = setTimeout(() => {\n changeTagState({\n tag,\n path,\n request,\n responseId,\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 path,\n request,\n responseId,\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 {\n errorCallback()\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 setIsLoading(false, true)\n\n fetchTimer && clearTimeout(fetchTimer)\n fetchTimerDelay = 1000\n\n onError({\n tag: tag.tag,\n codebook: tag.codebook,\n name: `${action}Error`,\n message: message || 'Oops. Something is wrong.'\n })\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 fetchTimer && clearTimeout(fetchTimer)\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 {\n errorCallback()\n }\n}\n\n// one response tag create/delete handler\nexport const changeResponseTagState = async ({\n tag,\n type,\n path,\n responseId,\n action = 'create',\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 path,\n responseId,\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, path, responseId, action, signal })\n\n switch (res.status) {\n case 'OK': {\n type && dispatch({ type, data: { tag, path, responseId, action } })\n if (onUpdateSchema && 'function' == typeof onUpdateSchema) {\n onUpdateSchema(res, { tag, path, responseId, action })\n }\n break\n }\n case 'INVALID KEY': {\n if (onInvalidKey && 'function' == typeof onInvalidKey) {\n onInvalidKey(() =>\n changeResponseTagState({\n tag,\n type,\n path,\n responseId,\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 {\n errorCallback()\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 setIsLoading(false)\n\n fetchTimer && clearTimeout(fetchTimer)\n fetchTimerDelay = 1000\n\n onError(\n (Array.isArray(message) && 0 < message.length && message) || [\n 'Sorry, mate, I've lost my bearings...',\n 'Let's give it another go in a bit.'\n ]\n )\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 fetchTimer && clearTimeout(fetchTimer)\n fetchTimerDelay = 1000\n\n const message = res.result?.data?.message || []\n\n if (Object.hasOwn(res.result?.data || {}, 'survey')) {\n onProgress(100)\n\n if (onFetch && 'function' == typeof onFetch) {\n onFetch(res.result.data, () => setIsLoading(false, message))\n }\n } else errorCallback(message)\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 errorCallback()\n break\n }\n case 'INVALID KEY': {\n if (onInvalidKey && 'function' == typeof onInvalidKey) {\n onInvalidKey(() =>\n generateSurveySkipper({\n job,\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 {\n errorCallback()\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, sendJobJSONData } from '@aytm/app/stats/lib/fetch'\n\nlet apiKey = ''\nlet statUrl = ''\nlet statCsUrl = ''\nlet statActionsUrl = ''\n\nexport const setApiKey = key => (apiKey = (key != undefined && null !== key && key.code) || '')\nexport const setStatUrl = url => {\n statUrl = url\n statCsUrl = `${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')\n\nconst addCSRF = data => {\n data[getCSRFParam()] = getCSRFToken()\n return data\n}\n\nexport const fetchJSONData = async ({ url, method, data, signal }) => {\n if (null === apiKey || !apiKey.length) {\n // throw new Error('Api Key is invalid')\n return { status: 'FAIL' }\n }\n\n return sendJSONData({\n url: `${url}?key=${apiKey}`,\n method,\n data,\n signal\n })\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: `${statCsUrl}?key=${apiKey}`,\n method: 'POST',\n data: mapSearchDataForFetch(request),\n signal\n })\n}\n\nexport const approve = async ({ responseId, signal }) =>\n fetchJSONData({\n url: `${statCsUrl}/${responseId}/approve`,\n method: 'POST',\n data: {},\n signal\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 toggleKudos = async ({ responseId, message = null, type = 'kudos', signal }) =>\n sendRawJSONData({\n url: `${statActionsUrl.replace(':responseId', responseId)}/${type}`,\n method: 'POST',\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 fetchJSONData({\n url: `${statCsUrl}/tags`,\n method: 'POST',\n data,\n signal\n })\n}\n\nexport const setCodebook = async ({\n codebook,\n path = '*',\n request = {},\n responseId = '*',\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\n const data = {\n codebook: codebook.codebook,\n type: codebook.type,\n path,\n search,\n responseId\n }\n return fetchJSONData({\n url: `${statCsUrl}/codebooks/${action}`,\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 fetchJSONData({\n url: `${statUrl}/codebooks/${action}`,\n method: 'POST',\n data,\n signal\n })\n}\n\nexport const setTag = async ({ tag, path = '*', request = {}, responseId = '*', 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 || 'sentiment' == tag.type ? tag.tag : tag.label,\n type: tag.type,\n path,\n search,\n responseId\n }\n if ('sentiment' != tag.type) {\n data.codebook = tag.codebook || null\n }\n return fetchJSONData({\n url: `${statCsUrl}/tags/${action}`,\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 || 'sentiment' == tag.type ? tag.tag : tag.label,\n type: tag.type,\n count: tag.count || 0\n }\n if ('sentiment' != tag.type) {\n data.codebook = tag.codebook || null\n }\n if (null !== newValue) {\n data.update = newValue\n }\n if (Object.hasOwn(tag, 'destination') && null !== tag.destination) {\n data.destination = tag.destination.codebook || null\n }\n if ('merge' == action) {\n data.merge = true\n }\n return fetchJSONData({\n url: `${statUrl}/tags/${'merge' == action ? (tag.update && 'update') || 'clone' : action}`,\n method: 'POST',\n data,\n signal\n })\n}\n\nexport const setResponseTag = async ({ tag, path, responseId, action = 'create', signal }) => {\n const data = {\n tag: tag.codebook == undefined || null === tag.codebook || 'sentiment' == tag.type ? tag.tag : tag.label,\n type: tag.type,\n path\n }\n if ('sentiment' != tag.type) {\n data.codebook = tag.codebook || null\n }\n return fetchJSONData({\n url: `${statCsUrl}/${responseId}/tags/${action}`,\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 fetchJSONData({\n url: `${statCsUrl}/job`,\n method: 'POST',\n data: { key: apiKey, 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 sendJobJSONData({\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 scrollToElementTimer && clearTimeout(scrollToElementTimer)\n\n setCurrentResponse(null)\n // eslint-disable-next-line consistent-return\n return () => scrollToElementTimer && clearTimeout(scrollToElementTimer)\n }, [apiKey, request, setCurrentResponse])\n\n useEffect(() => {\n if (searchStateRef.current.isLoading || isProcessing) return\n\n scrollToElementTimer && clearTimeout(scrollToElementTimer)\n\n if (currentResponseRef?.current) {\n const currentResponseNode = (responsesRef.current || []).find(\n item => item.uid == currentResponseRef.current.uid\n )\n scrollToElementTimer = setTimeout(() => {\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 () => scrollToElementTimer && clearTimeout(scrollToElementTimer)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [responsesRef, isProcessing, isShowAllTools, trackCurrentResponse])\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/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-refresh-v2 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-refresh-v2 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 <>\n <PopupCloseButton onClose={closePopup}>\n <i className=\"icon-aytmfd-close-v2\" />\n </PopupCloseButton>\n <div className=\"response-header-notification-text\">{statuses[type][status]}</div>\n </>\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/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, path, responseId, 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 path,\n responseId,\n action,\n onUpdateSchema,\n dispatch,\n dispatchCommentStatuses\n })\n }\n\n const onRemoveTag = async (tag, path, responseId) => {\n await changeResponseTagState({\n tag,\n type: 'TAG_REMOVED',\n path,\n responseId,\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 path,\n responseId,\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 path,\n responseId,\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 code</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-refresh-v2 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/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-refresh-v2 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-v2\" />\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 label=\"Qs in survey order\" checked={!isResponseOrder} disabled={!hasQuestionOrder} />\n </li>\n <li\n onClick={hasQuestionOrder ? onToggleResponseOrder.bind(this, true) : null}\n className={classNames({\n disabled: !hasQuestionOrder\n })}\n >\n <RadioButton label=\"Qs in response order\" checked={isResponseOrder} disabled={!hasQuestionOrder} />\n </li>\n {onToggleTraits && <hr />}\n </>\n )}\n {onToggleTraits && (\n <>\n <li onClick={onToggleTraits}>\n <CheckBox label=\"Show traits\" checked={isShowTraits} />\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 { CODEBOOKS_COLORS } from '@aytm/app/stats/page/components/lib/constans'\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 useEventListener from '@aytm/app/stats/hooks/useEventListener'\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 inputElementRef = useRef(null)\n const inputElementValueRef = useRef('')\n\n const inputValueRef = useRef(null)\n inputValueRef.current = inputValue\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 inputElementValueRef.current = ''\n }\n\n const onMenuOpen = () => {\n if (inputElementRef.current?.state.inputValue) {\n setIsShowSearchIconOverlay(true)\n }\n }\n\n const onMenuClose = () => {\n if (inputElementRef.current.state.inputValue) {\n inputElementValueRef.current = inputElementRef.current.state.inputValue\n }\n\n setTimeout(() => setIsShowSearchIconOverlay(false), 100)\n }\n\n const onKeyDown = event => {\n if (event && 'Enter' == event.key && !inputElementRef.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 inputElementRef.current.blur()\n inputElementRef.current.state.menuIsOpen = false\n inputElementRef.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 inputElementValueRef.current &&\n (!inputValue ||\n (inputValue && !inputValue.some(item => item.value == inputElementValueRef.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: inputElementValueRef.current, value: inputElementValueRef.current }\n ]\n }\n })\n inputElementValueRef.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 && !inputElementRef.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 const iconColor = data.color || '#444444'\n const backgroundColor =\n 'batch' != data.type && data.color\n ? CODEBOOKS_COLORS.some(color => color[0].toLowerCase() == data.color.toLowerCase())\n ? CODEBOOKS_COLORS.find(color => color[0].toLowerCase() == data.color.toLowerCase())[1].toLowerCase()\n : `${data.color}90`\n : '#efefef'\n\n return (\n <div\n title={decodeText(\n stripTags(['codebook', 'tag', 'sentiment'].includes(data.type) ? data.value : data.label),\n false\n )}\n >\n <MultiValue data={data} styles={{ backgroundColor }} {...props}>\n {'codebook' == data.type && <i className=\"icon-aytmfd-folder-closed\" style={{ color: iconColor }} />}\n {'tag' == data.type && <i className=\"icon-aytmfd-tag\" style={{ color: iconColor }} />}\n {'sentiment' == data.type && (\n <i\n className={`icon-aytmfd-sentiment-${SENTIMENTS_ICON_HASH[data.value]}`}\n style={{ color: iconColor }}\n />\n )}\n {'uid' == data.type && <i className=\"icon-aytmfd-singleuser\" style={{ color: iconColor }} />}\n {'cluster' == data.type && <i className=\"icon-aytmfd-heatmap-cluster\" style={{ color: iconColor }} />}\n {'batch' == data.type && <i className=\"icon-aytmfd-map-view\" style={{ color: iconColor }} />}\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 },\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 {'tag' == data.type && <i className=\"icon-aytmfd-tag\" style={{ color: data.color }} />}\n {'sentiment' == data.type && <i className={`icon-aytmfd-sentiment-${SENTIMENTS_ICON_HASH[data.value]}`} />}\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 useEventListener('addCommentsSearchOption', event => {\n if (disabled || isLoading || isProcessing) return\n\n if (event.detail) {\n const { item } = event.detail\n if (\n inputValueRef.current.some(\n v => v.value == (Object.hasOwn(item, 'codebook') && !Object.hasOwn(item, 'tag') ? item.codebook : item.value)\n )\n ) {\n return\n }\n\n setInputValue(\n inputValueRef.current.concat([\n Object.hasOwn(item, 'codebook') && !Object.hasOwn(item, 'tag')\n ? { type: 'codebook', label: item.label, value: item.codebook }\n : Object.hasOwn(item, 'codebook') && Object.hasOwn(item, 'tag') && !Object.hasOwn(item, 'sentiment')\n ? { type: 'tag', label: item.label, value: item.value, codebook: item.codebook }\n : Object.hasOwn(item, 'codebook') && Object.hasOwn(item, 'tag') && Object.hasOwn(item, 'sentiment')\n ? { type: 'sentiment', label: `sentiment: ${item.label}`, value: item.value, sentiment: item.sentiment }\n : {}\n ])\n )\n }\n })\n\n return (\n <div className={style['comments-search-input-container']}>\n <CreatableSelect\n ref={inputElementRef}\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('icon-aytmfd-refresh-v2 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 label=\"Originals\" checked={correctionsLevel == ORIGINALS} />\n </li>\n <li onClick={onToggleCorrectionLevel.bind(this, CORRECTIONS)}>\n <RadioButton label=\"Show corrections\" checked={correctionsLevel == CORRECTIONS} />\n </li>\n <li onClick={onToggleCorrectionLevel.bind(this, CORRECTED_SPELLING)}>\n <RadioButton label=\"Corrected spelling\" checked={correctionsLevel == 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 label=\"Qs in survey order\" checked={!isResponseOrder} disabled={!hasQuestionOrder} />\n </li>\n <li\n className={classNames({\n disabled: !hasQuestionOrder\n })}\n onClick={hasQuestionOrder ? onToggleResponseOrder.bind(this, true) : null}\n >\n <RadioButton\n label=\"Qs in response order\"\n checked={isResponseOrder}\n disabled={!hasQuestionOrder}\n />\n </li>\n <hr />\n </>\n )}\n <li onClick={onToggleHighlightSearchTerms}>\n <CheckBox label=\"Highlight search terms\" checked={isHighlightSearchTerms} />\n </li>\n {!isSentimentsManagementDisabled && (\n <li onClick={onToggleShowSentiment}>\n <CheckBox label=\"Show sentiment\" checked={isShowSentiments} />\n </li>\n )}\n {(null === question || !['ir', 'va', 'vr'].includes(question.type)) && !isAdvancedFiltersDisabled && (\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-filter-v2\" />\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-comments-v2\" />\n {totalComments}\n </>\n ) : null}\n </div>\n <div>\n {totalImageResponses ? (\n <>\n <i className=\"icon-aytmfd-image-responses-v2\" />\n {totalImageResponses}\n </>\n ) : null}\n </div>\n <div>\n {totalVideoResponses ? (\n <>\n <i className=\"icon-aytmfd-video-responses-v2\" />\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/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\nlet errorTimer = null\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 onDNDDropCodebook = dropData => {\n const codebook = dropData.data\n\n dispatchEvent(new CustomEvent('runCodingSkipper', { detail: { question: selectedQuestion, codebook } }))\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 headerTop = useMemo(() => {\n const stickyHeader = document.querySelector('.stats-StickyHeader')\n\n if (stickyHeader) {\n const stickyHeaderRect = stickyHeader.getBoundingClientRect()\n return stickyHeaderRect.height + 20\n } else return 20\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchState])\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 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) {\n visible = false\n }\n\n if (\n 'similarity' == item.get('value') &&\n !questionsOptionsList.some(_item => _item.get('type') == item.get('forType'))\n ) {\n visible = false\n }\n if ('similarity' == item.get('value') && 'on' != window.features.oe_sort_similarity?.status) {\n visible = false\n }\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\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 onError = useCallback(error => {\n setError(error.message)\n\n errorTimer && clearTimeout(errorTimer)\n errorTimer = setTimeout(() => {\n setError(null)\n setDndDroppedTag(null)\n }, 5000)\n\n return () => errorTimer && clearTimeout(errorTimer)\n }, [])\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('codingLoading', { 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 request,\n action: 'create',\n onFetch: onUpdateSchema,\n onError,\n setIsLoading: flag => {\n if (flag) return\n\n setDndDroppedTag(null)\n\n setLoading(false)\n setIsShowDNDDropzone(false)\n\n dispatchEvent(new CustomEvent('codingLoading', { detail: { isLoading: false } }))\n }\n }\n\n if (isForCurrentPage) {\n data.responseId = pageData.map(item => item.response.uid)\n }\n\n changeTagState(data)\n },\n [request, pageData, dndDroppedTag, onError, onUpdateSchema]\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 style={{ top: headerTop }}\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 code 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 && 0 < 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 ('sentiment' == dndDroppedTag.type && isDisabledSentimentInScope && !isOnlyDisabledSentiment) ||\n (isVirtualOrXpertInScope && !isOnlyVirtualOrXpert)\n ? 'all'\n : totalCommentsCount\n }`}\n disabled={loading || !totalCommentsCount}\n onClick={() => (!loading && 0 < 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-refresh-v2 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 && 'on' == 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 { CODEBOOKS_COLORS } from '@aytm/app/stats/page/components/lib/constans'\nimport { DEFAULT_CODEBOOK, FORBIDDEN_TAG_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_TAG_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 const backgroundColor =\n 'batch' != data.type && data.color\n ? CODEBOOKS_COLORS.some(color => color[0].toLowerCase() == data.color.toLowerCase())\n ? CODEBOOKS_COLORS.find(color => color[0].toLowerCase() == data.color.toLowerCase())[1].toLowerCase()\n : `${data.color}90`\n : '#efefef'\n\n return (\n <div title={decodeText(data.value, false)}>\n <MultiValue data={data} styles={{ backgroundColor }} {...props}>\n <span dangerouslySetInnerHTML={{ __html: children }} />\n </MultiValue>\n </div>\n )\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, path, responseId)\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, path, responseId, '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 code' : ''}\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 = () => true, setSurvey = () => true, 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 window.survey.tagsStats ||= {}\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 variable of [window.survey, updatedTagsData]) {\n variable.tagsStats[k] ||= {}\n variable.tagsStats[k][updated.codebook.type] ||= []\n\n index = variable.tagsStats[k][updated.codebook.type].findIndex(tag => tag.tag == oldKey)\n if (0 <= index) {\n variable.tagsStats[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 variable of [window.survey, updatedTagsData]) {\n variable.tagsStats[k] ||= {}\n variable.tagsStats[k]['manual'] ||= []\n\n index = variable.tagsStats[k][updated.codebook.type].findIndex(tag => tag.tag == oldKey)\n if (0 <= index) {\n variable.tagsStats[k]['manual'].push({\n tag: key,\n amount: variable.tagsStats[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 variable of [window.survey, updatedTagsData]) {\n if (!variable.tagsStats[k]) continue\n\n variable.tagsStats[k][updated.codebook.type] ||= []\n\n index = variable.tagsStats[k][updated.codebook.type].findIndex(tag => tag.tag == key)\n if (0 <= index) {\n variable.tagsStats[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\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 { mapReportSearchQuery, getTagsList, getIsDefaultReportParams } 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 searchStateRef,\n reportParams,\n propsRef,\n responsesOptionsRef,\n survey,\n surveyData,\n sentimentOptions,\n specialMode,\n questionsOptionsList,\n isShowSentiments,\n isSpecialsSortingDisabledRef,\n responsesRef,\n reportVirtual,\n reportSchema,\n pageData,\n setSurvey,\n setResponsesOptions,\n onQuestionListChange,\n onUpdateSchema\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 // 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 onUpdateSchema({ cs: pageData }, false)\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/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 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 const callback = _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 }\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(callback, data)\n }\n } else {\n callback(data)\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(callback, 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\n fetchTimer && clearTimeout(fetchTimer)\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 (apiKey == undefined || 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 fetchTimer && clearTimeout(fetchTimer)\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 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 } else fetchDataDelay(true)\n\n // eslint-disable-next-line consistent-return\n return () => (isQAMode && isQAModeDelayed ? null : fetchDataDestroy())\n // disabled: fetchDataDelay 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 }, [query, selectedQuestion, pageSize, currentPage, orderBy, orderDirection])\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 // 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 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 = ({\n survey,\n tagsData,\n dispatch = () => true,\n setSurvey = () => true,\n onTagsFetch,\n onUpdateSchema = () => true\n}) => {\n const _onUpdateSchema = (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\n updatedTagsData.tags ||= {}\n updatedTagsData.tags[updated.tag.type] ||= []\n\n window.survey.tags[updated.tag.type] ||= []\n window.survey.tagsStats ||= {}\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 variable of [window.survey, updatedTagsData]) {\n variable.tagsStats[k] ||= {}\n\n data.removedTagsByPath[k].forEach(t => {\n variable.tagsStats[k][t.type] ||= []\n\n index = variable.tagsStats[k][t.type].findIndex(tag => tag.tag == t.tag)\n if (0 <= index) {\n count = Math.max(0, variable.tagsStats[k][t.type][index].amount - t.count)\n if (0 < count) {\n variable.tagsStats[k][t.type][index].amount = count\n } else variable.tagsStats[k][t.type].splice(index, 1)\n }\n })\n }\n }\n\n for (const k of Object.keys(data.updatedTagsByPath || {})) {\n for (const variable of [window.survey, updatedTagsData]) {\n variable.tagsStats[k] ||= {}\n variable.tagsStats[k][updated.tag.type] ||= []\n\n index = variable.tagsStats[k][updated.tag.type].findIndex(tag => tag.tag == updated.tag.tag)\n\n if ('create' == updated.action) {\n if (0 <= index) {\n variable.tagsStats[k][updated.tag.type][index].amount += data.updatedTagsByPath[k]\n } else {\n variable.tagsStats[k][updated.tag.type].push({\n tag: updated.tag.tag,\n amount: data.updatedTagsByPath[k]\n })\n }\n } else {\n if (0 <= index) {\n count = Math.max(0, variable.tagsStats[k][updated.tag.type][index].amount - data.updatedTagsByPath[k])\n if (0 < count) {\n variable.tagsStats[k][updated.tag.type][index].amount = count\n } else variable.tagsStats[k][updated.tag.type].splice(index, 1)\n }\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\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 window.survey.tagsStats ||= {}\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 variable of [window.survey, updatedTagsData]) {\n variable.tagsStats[k] ||= {}\n variable.tagsStats[k][updated.tag.type] ||= []\n\n index = variable.tagsStats[k][updated.tag.type].findIndex(tag => tag.tag == updated.tag.tag)\n if (0 <= index) {\n variable.tagsStats[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 variable of [window.survey, updatedTagsData]) {\n variable.tagsStats[k] ||= {}\n variable.tagsStats[k][updated.tag.type] ||= []\n variable.tagsStats[k][updated.tag.destination.type] ||= []\n\n index = variable.tagsStats[k][updated.tag.type].findIndex(tag => tag.tag == updated.tag.tag)\n if (0 <= index) {\n variable.tagsStats[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 variable of [window.survey, updatedTagsData]) {\n variable.tagsStats[k] ||= {}\n variable.tagsStats[k][updated.tag.type] ||= []\n variable.tagsStats[k][updated.tag.destination.type] ||= []\n\n index = variable.tagsStats[k][updated.tag.type].findIndex(tag => tag.tag == updated.tag.tag)\n if (0 <= index) {\n if (Object.hasOwn(updated.tag, 'update')) {\n variable.tagsStats[k][updated.tag.type].splice(index, 1)\n }\n\n index = variable.tagsStats[k][updated.tag.destination.type].findIndex(tag => tag.tag == key)\n if (0 <= index) {\n variable.tagsStats[k][updated.tag.destination.type][index].amount += data.updatedTagsByPath[k]\n } else {\n variable.tagsStats[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 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 } else {\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 for (const k of Object.keys(data.updatedTagsByPath || {})) {\n for (const variable of [window.survey, updatedTagsData]) {\n variable.tagsStats[k] ||= {}\n variable.tagsStats[k][updated.tag.type] ||= []\n\n index = variable.tagsStats[k][updated.tag.type].findIndex(tag => tag.tag == updated.tag.tag)\n if (0 <= index) {\n count = Math.max(0, variable.tagsStats[k][updated.tag.type][index].amount - data.updatedTagsByPath[k])\n }\n\n if (0 < count) {\n variable.tagsStats[k][updated.tag.type][index].amount = count\n } else variable.tagsStats[k][updated.tag.type].splice(index, 1)\n\n if ('sentiment' == updated.tag.type && data.updatedTagsByPath[k]) {\n index = variable.tagsStats[k][updated.tag.type].findIndex(tag => 'None' == tag.tag)\n if (0 > index) {\n variable.tagsStats[k][updated.tag.type].push({\n tag: 'None',\n amount: data.updatedTagsByPath[k] || 0\n })\n } else variable.tagsStats[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\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'\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\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'\n\nimport useEventListener from '@aytm/app/stats/hooks/useEventListener'\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 CommentsOpenEnded = props => {\n const {\n specialMode,\n surveyData,\n reportId,\n apiKey,\n sentimentOptions,\n reportParams = {},\n reportVirtual,\n reportSchema,\n loadRejectedCS,\n isShowHiddenFilters,\n isAdvancedFiltersDisabled,\n isSpecialsSortingDisabled,\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 { pageData = [], tagsData, disabled: readOnly, isQAMode, isQALoading, isShowSentiments } = 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\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 } = 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 onInvalidKey,\n onQAModeChange\n })\n\n useComments({\n dispatch,\n searchStateRef,\n propsRef,\n responsesOptionsRef,\n surveyData,\n survey,\n specialMode,\n sentimentOptions,\n questionsOptionsList,\n isShowSentiments,\n isSpecialsSortingDisabledRef,\n reportParams,\n responsesRef,\n reportVirtual,\n reportSchema,\n pageData,\n setSurvey,\n setResponsesOptions,\n onQuestionListChange,\n onUpdateSchema\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 useEventListener('tagsFetch', event => {\n if (event.detail) {\n const { data, updated } = event.detail\n _onTagsFetch(data, updated)\n }\n })\n\n useEventListener('codeBooksFetch', event => {\n if (event.detail) {\n const { data, updated } = event.detail\n _onCodeBooksFetch(data, updated)\n }\n })\n\n return (\n <>\n <div className={`${style['comments-container']} stats-comments`}>\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 </>\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 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 { 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 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-v2 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 headerTop = useMemo(() => {\n const stickyHeader = document.querySelector('.stats-StickyHeader')\n\n if (stickyHeader) {\n const stickyHeaderRect = stickyHeader.getBoundingClientRect()\n return stickyHeaderRect.height + 20\n } else return 20\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchState])\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') ? true : '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 style={{ top: headerTop }}\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 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\n const callback = _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 }\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(callback, data)\n }\n } else {\n callback(data)\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(callback, 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\n fetchTimer && clearTimeout(fetchTimer)\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 (apiKey == undefined || 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 fetchTimer && clearTimeout(fetchTimer)\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(true)\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])\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 }, [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 specialMode,\n questionsOptionsList,\n reportVirtual,\n reportSchema,\n pageData,\n setSurvey,\n setResponsesOptions,\n onQuestionListChange,\n onUpdateSchema\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 onUpdateSchema({ cs: pageData }, false)\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\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\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 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 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 } = 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 onFetch,\n onInvalidKey\n })\n\n useImageResponses({\n apiKey,\n dispatch,\n searchStateRef,\n reportParams,\n propsRef,\n responsesOptionsRef,\n surveyData,\n survey,\n specialMode,\n questionsOptionsList,\n reportVirtual,\n reportSchema,\n pageData,\n setSurvey,\n setResponsesOptions,\n onQuestionListChange,\n onUpdateSchema\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 className={`${style['comments-container']} stats-comments`}>\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}\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 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 { setApiKey, setStatActionsUrl, setStatUrl } from '@aytm/app/stats/page/comments/apiCalls'\n\nexport const OEContext = React.createContext()\n\n// styles\nimport style from '@aytm/app/stats/page/comments/styles/index.module.scss'\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 setApiKey(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 <div className={style.component}>\n {searchState.errors.length ? (\n <div className={style['comments-errors']}>\n <h3>Error</h3>\n {searchState.errors.map(error => (\n <div key={`error${error.name}`}>{error.message}</div>\n ))}\n </div>\n ) : (\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 </div>\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 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 { 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, 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 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 const { error } = action\n return {\n ...state,\n isLoading: false,\n disabled: false,\n pageData: [],\n errors: (Array.isArray(error) && error) || [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'\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'\n\nimport useEventListener from '@aytm/app/stats/hooks/useEventListener'\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 loadRejectedCS,\n isShowHiddenFilters,\n isAdvancedFiltersDisabled,\n isSpecialsSortingDisabled = false,\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 { pageData = [], tagsData, disabled: readOnly, isLoading, isProcessing, isShowSentiments } = 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 } = 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 onInvalidKey,\n onQAModeChange\n })\n\n useComments({\n dispatch,\n searchStateRef,\n propsRef,\n responsesOptionsRef,\n surveyData,\n survey,\n specialMode,\n sentimentOptions,\n questionsOptionsList,\n isShowSentiments,\n isSpecialsSortingDisabledRef,\n reportParams,\n responsesRef,\n reportVirtual,\n reportSchema,\n pageData,\n setSurvey,\n setResponsesOptions,\n onQuestionListChange,\n onUpdateSchema\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 useEventListener('tagsFetch', event => {\n if (event.detail) {\n const { data, updated } = event.detail\n _onTagsFetch(data, updated)\n }\n })\n\n useEventListener('codeBooksFetch', event => {\n if (event.detail) {\n const { data, updated } = event.detail\n _onCodeBooksFetch(data, updated)\n }\n })\n\n return (\n <>\n <div className={`${style['comments-container']} stats-comments`}>\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 </>\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 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\n ? processSuggestionData('tag', { canBeCompleted, token, label, parserResult, description: 'reference codes' })\n : 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 && clearTimeout(this.parserTimer)\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 && 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 && clearTimeout(this.parserTimer)\n this.parserTimer = setTimeout(\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']]: !active && isWarning,\n [style['container-error']]: !active && isError,\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","import React, { useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport { createPortal } from 'react-dom'\n\nimport { fromJS } from 'immutable'\n\nimport TutorialVideoList from '@aytm/lib/rfd-ui/components/advanced/tutorial-video-list'\n\nimport StickyHeader from '@aytm/app/stats/page/components/StickyHeader'\n\nimport style from '@aytm/app/stats/page/components/styles/ContentHeader.module.scss'\n\nexport const StatTutorialVideo = fromJS({\n video: {\n id: 'statistics',\n title: 'Tutorial video',\n length: '8:05',\n autoplay: false,\n code: '501928393',\n url: 'https://player.vimeo.com/video/'\n },\n videoPoints: [\n { time: 0, text: 'Finding your Results page' },\n { time: 27, text: 'Original - as fielded Report' },\n { time: 79, text: 'General analysis tools' },\n { time: 181, text: 'Survey Specifications & Reports' },\n { time: 226, text: 'View Options & Filters' },\n { time: 305, text: 'Data Lab & Data Weighting' },\n { time: 335, text: 'Crosstab & Attachments' },\n { time: 366, text: 'Color Options & Exports' },\n { time: 453, text: 'Blog Widget & Print options' }\n ],\n videoNote: \"Learn about aytm's interactive survey results, report, and data analysis tools.\",\n videoThumbnail: '/images/tvs/statistics.jpg'\n})\n\nconst ContentHeader = ({ mode, state, surveyTitle, report, customization, isReportXpert, ...props }) => {\n const stickyHeaderContainer = useMemo(() => document.querySelector(`#${state}_content`), [state])\n\n return (\n <>\n {isReportXpert ? (\n <div className={style['survey-title-xpert']}>\n <div className={style['survey-title-xpert-icon']}>\n <i className=\"icon-aytmfd-xpert-solution-v2\"></i>\n </div>\n <div className={style['survey-title-xpert-text']}>\n <div className={style['survey-title-xpert-text-title']}>\n <b>aytm Xpert</b> {customization.find(v => 'Title' == v.title)?.value || ''}\n </div>\n <div className={style['survey-title-report-text-report-title']}>\n <b>REPORT:</b> {report.title || 'Xpert Report'}\n </div>\n </div>\n </div>\n ) : (\n <>\n <div className={style['survey-title']}>{surveyTitle}</div>\n\n {'charts' == state ? (\n <TutorialVideoList\n className={style.tutorialVideoList}\n video={StatTutorialVideo.get('video')}\n videoNote={StatTutorialVideo.get('videoNote')}\n videoPoints={StatTutorialVideo.get('videoPoints')}\n videoThumbnail={StatTutorialVideo.get('videoThumbnail')}\n targetClassName=\"pendo-help-stat-vid\"\n />\n ) : null}\n </>\n )}\n\n {stickyHeaderContainer\n ? createPortal(\n <StickyHeader mode={mode} state={state} isReportXpert={isReportXpert} {...props} />,\n stickyHeaderContainer\n )\n : null}\n </>\n )\n}\n\nContentHeader.propTypes = {\n url: PropTypes.string,\n mode: PropTypes.string,\n state: PropTypes.string,\n surveyId: PropTypes.number,\n surveyTitle: PropTypes.string,\n surveyStatus: PropTypes.string,\n surveyCompleted: PropTypes.string,\n report: PropTypes.object,\n customization: PropTypes.array,\n totals: PropTypes.object,\n controls: PropTypes.object,\n isSurveyGuest: PropTypes.bool,\n isSurveyViewer: PropTypes.bool,\n isReportLoading: PropTypes.bool,\n isReportVirtual: PropTypes.bool,\n isReportXpert: PropTypes.bool,\n onFetch: PropTypes.func,\n onModeChange: PropTypes.func,\n onShowReportPopup: PropTypes.func\n}\n\nContentHeader.displayName = 'ContentHeader'\n\nexport default ContentHeader\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 { CODEBOOKS_COLORS } from '@aytm/app/stats/page/components/lib/constans'\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({\n query: searchInputValue.map(value =>\n 'tag' == value.type ? { ...value, value: value.value.replace(`${value.codebook}: `, '') } : value\n )\n })\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 const iconColor = data.color || '#444444'\n const backgroundColor =\n 'batch' != data.type && data.color\n ? CODEBOOKS_COLORS.some(color => color[0].toLowerCase() == data.color.toLowerCase())\n ? CODEBOOKS_COLORS.find(color => color[0].toLowerCase() == data.color.toLowerCase())[1].toLowerCase()\n : `${data.color}90`\n : '#efefef'\n\n return (\n <div\n title={decodeText(\n stripTags(['codebook', 'tag', 'sentiment'].includes(data.type) ? data.value : data.label),\n false\n )}\n >\n <MultiValue data={data} styles={{ backgroundColor }} {...props}>\n {'codebook' == data.type && <i className=\"icon-aytmfd-folder-closed\" style={{ color: iconColor }} />}\n {'tag' == data.type && <i className=\"icon-aytmfd-tag\" style={{ color: iconColor }} />}\n {'sentiment' == data.type && (\n <i\n className={`icon-aytmfd-sentiment-${SENTIMENTS_ICON_HASH[data.value]}`}\n style={{ color: iconColor }}\n />\n )}\n {'uid' == data.type && <i className=\"icon-aytmfd-singleuser\" style={{ color: iconColor }} />}\n {'cluster' == data.type && <i className=\"icon-aytmfd-heatmap-cluster\" style={{ color: iconColor }} />}\n {'batch' == data.type && <i className=\"icon-aytmfd-map-view\" style={{ color: iconColor }} />}\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 },\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 {'tag' == data.type && <i className=\"icon-aytmfd-tag\" style={{ color: data.color }} />}\n {'sentiment' == data.type && <i className={`icon-aytmfd-sentiment-${SENTIMENTS_ICON_HASH[data.value]}`} />}\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 React, { useCallback } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport { stopEvent } from '@aytm/lib/common/func'\nimport { formatAmounts } from '@aytm/app/stats/lib/helpers'\n\nimport { ReportControls } from '@aytm/app/stats/page/sidebar/reports/ReportControls'\n\nimport style from '@aytm/app/stats/page/components/styles/StickyHeader.module.scss'\n\nconst StickyHeader = ({\n url,\n mode,\n state,\n surveyId,\n surveyCompleted,\n totals,\n controls = {},\n isSurveyGuest,\n isSurveyViewer,\n isReportLoading,\n isReportVirtual,\n isReportXpert,\n onFetch,\n onModeChange,\n onShowReportPopup\n}) => {\n const onClick = useCallback(\n (event, mode) => {\n stopEvent(event)\n onModeChange(mode)\n },\n [onModeChange]\n )\n\n return (\n <div className={style.component} style={{ order: -1 }}>\n <div className={style['component-content']}>\n <span className={style['component-border']}></span>\n\n <div className={style['report-meta']}>\n <div className={style['report-meta-row']}>\n <span className={style['report-meta-title']}>N:</span>\n {isReportLoading ? (\n <span className={style['report-meta-value-loader']}>\n <span></span>\n <span></span>\n <span></span>\n </span>\n ) : (\n <span className={style['report-meta-value']}>\n {formatAmounts(totals.responses)}/{totals.respondents}\n </span>\n )}\n <span className={style['report-meta-title']}>ID:</span>\n <span className={style['report-meta-value']}>{surveyId}</span>\n </div>\n <div className={style['report-meta-row']}>\n <span className={style['report-meta-title']}>Completed:</span>\n <span className={style['report-meta-value']}>{surveyCompleted}</span>\n </div>\n </div>\n <div className={style['report-controls']}>\n {controls.state && controls.model ? (\n <ReportControls\n url={url}\n state={controls.state}\n statePath={controls.statePath}\n model={controls.model}\n modelPath={controls.modelPath}\n listState={controls.listState}\n listStatePath={controls.listStatePath}\n listModel={controls.listModel}\n listModelPath={controls.listModelPath}\n limits={controls.limits}\n actions={controls.actions}\n virtualReportsIds={controls.virtualReportsIds}\n isCompact={true}\n isSurveyGuest={isSurveyGuest}\n isSurveyViewer={isSurveyViewer}\n disabled={controls.disabled}\n />\n ) : null}\n <span className={style['report-controls-config']} onClick={onShowReportPopup}>\n <i className=\"icon-aytmfd-config\" />\n </span>\n </div>\n {isReportVirtual || isReportXpert ? null : (\n <div className={style['report-switches']}>\n {'charts' == state ? null : (\n <a\n href={`${window.location.href.replace(window.location.hash.split('/')[0], '#charts')}`}\n className={style['report-switches-button']}\n onClick={event => onClick(event, 'charts')}\n rel=\"noreferrer\"\n >\n <i className=\"icon-aytmfd-quant-report-v2\"></i>\n <span>\n Quant\n <br />\n report\n </span>\n </a>\n )}\n {['charts', 'specials'].includes(state) ? (\n <>\n {0 < totals.totalComments || 'comments' == mode ? (\n <a\n href={`${window.location.href.replace(window.location.hash.split('/')[0], '#comments')}`}\n className={classNames(\n `${style['report-switches-button']} ${style['report-switches-button-comments']}`,\n { [style['report-switches-button-active']]: 'comments' == mode }\n )}\n onClick={'comments' == mode ? null : event => onClick(event, 'comments')}\n rel=\"noreferrer\"\n >\n <i className=\"icon-aytmfd-comments-v2\"></i>\n <span>\n {formatAmounts(totals.totalComments)}\n <br />\n verbatim\n </span>\n </a>\n ) : null}\n {0 < totals.totalImageResponses || 'image-responses' == mode ? (\n <a\n href={`${window.location.href.replace(window.location.hash.split('/')[0], '#image-responses')}`}\n className={classNames(\n `${style['report-switches-button']} ${style['report-switches-button-image-responses']}`,\n { [style['report-switches-button-active']]: 'image-responses' == mode }\n )}\n onClick={'image-responses' == mode ? null : event => onClick(event, 'image-responses')}\n rel=\"noreferrer\"\n >\n <i className=\"icon-aytmfd-image-responses-v2\"></i>\n <span>\n {formatAmounts(totals.totalImageResponses)} image\n <br />\n responses\n </span>\n </a>\n ) : null}\n {0 < totals.totalVideoResponses || 'video-responses' == mode ? (\n <a\n href={`${window.location.href.replace(window.location.hash.split('/')[0], '#video-responses')}`}\n className={classNames(\n `${style['report-switches-button']} ${style['report-switches-button-video-responses']}`,\n { [style['report-switches-button-active']]: 'video-responses' == mode }\n )}\n onClick={'video-responses' == mode ? null : event => onClick(event, 'video-responses')}\n rel=\"noreferrer\"\n >\n <i className=\"icon-aytmfd-video-responses-v2\"></i>\n <span>\n {formatAmounts(totals.totalVideoResponses)} video\n <br />\n responses\n </span>\n </a>\n ) : null}\n </>\n ) : null}\n </div>\n )}\n <div className={style['report-refresh']}>\n <span\n className={classNames(style['report-refresh-button'], {\n [style['report-refresh-button-spinning']]: isReportLoading\n })}\n onClick={isReportLoading ? null : onFetch}\n >\n <i className={classNames('icon-aytmfd-refresh-v2', { 'aytmfd-spin': isReportLoading })}></i>\n </span>\n </div>\n </div>\n </div>\n )\n}\n\nStickyHeader.propTypes = {\n url: PropTypes.string,\n mode: PropTypes.string,\n state: PropTypes.string,\n surveyId: PropTypes.number,\n surveyTitle: PropTypes.string,\n surveyStatus: PropTypes.string,\n surveyCompleted: PropTypes.string,\n report: PropTypes.object,\n totals: PropTypes.object,\n controls: PropTypes.object,\n isSurveyGuest: PropTypes.bool,\n isSurveyViewer: PropTypes.bool,\n isReportLoading: PropTypes.bool,\n isReportVirtual: PropTypes.bool,\n isReportXpert: PropTypes.bool,\n onFetch: PropTypes.func,\n onModeChange: PropTypes.func,\n onShowReportPopup: PropTypes.func\n}\n\nStickyHeader.displayName = 'StickyHeader'\n\nexport default StickyHeader\n","export const CODEBOOKS_COLORS = [\n ['#76C893', '#C8E9D4'],\n ['#34A0A4', '#AED9DA'],\n ['#29ABE2', '#A9DDF3'],\n ['#1E6091', '#A5BFD3'],\n ['#00296B', '#99A9C4'],\n ['#25CED1', '#A8EBEC'],\n ['#FFBA08', '#FFE39C'],\n ['#FF7D00', '#FFCB99'],\n ['#D00000', '#EC9999'],\n ['#880D1E', '#CF9EA5'],\n ['#B23A48', '#E0B0B6'],\n ['#78290F', '#C9A99F'],\n ['#461220', '#B5A0A6'],\n ['#132A13', '#A1AAA1'],\n ['#31572C', '#ADBCAB'],\n ['#007F5F', '#99CCBF'],\n ['#90A955', '#D2DCBB'],\n ['#8AC926', '#D0E9A8'],\n ['#F84AA7', '#FCB6DC'],\n ['#B5179E', '#E1A2D8'],\n ['#A74482', '#DCB4CD'],\n ['#693668', '#C3AFC2'],\n ['#4B1281', '#B7A0CC'],\n ['#444444', '#B4B4B4']\n]\n","import React from 'react'\n\nexport const itemTemplate = option => (\n <span className={`p-item-label p-item-${option.key} p-lvl-${option.lvl || 0}`}>\n {option.hidden ? null : option.disabled && option.icon == undefined ? (\n <span dangerouslySetInnerHTML={{ __html: option.text }}></span>\n ) : (\n <>\n {option.icon ? <i className={`icon-aytmfd-${option.icon}`} /> : null}\n <span dangerouslySetInnerHTML={{ __html: option.text }}></span>\n </>\n )}\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","// 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 renderContentHeader(props, element) {\n return renderComponent(props, element, 'components/ContentHeader')\n}\n\nexport function renderReportsPanel(props, element) {\n return renderComponent(props, element, 'sidebar/reports/ReportsPanel')\n}\n\nexport function renderSpecificationsPanel(props, element) {\n return renderComponent(props, element, 'sidebar/specifications/SpecificationsPanel')\n}\n\nexport function renderColorOptionsPanel(props, element) {\n return renderComponent(props, element, 'sidebar/color-options/ColorOptionsPanel')\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 renderDataLabPanel(props, element) {\n return renderComponent(props, element, 'sidebar/data-lab/DataLabPanel')\n}\n\nexport function renderMappingPanel(props, element) {\n return renderComponent(props, element, 'sidebar/mapping/MappingPanel')\n}\n\nexport function renderCrosstabPanel(props, element) {\n return renderComponent(props, element, 'sidebar/crosstab/CrosstabPanel')\n}\n\nexport function renderCodingPanel(props, element) {\n return renderComponent(props, element, 'sidebar/coding/CodingPanel')\n}\n\nexport function renderViewOptionsPanel(props, element) {\n return renderComponent(props, element, 'sidebar/view-options/ViewOptionsPanel')\n}\n\nexport function renderCompletesPanel(props, element) {\n return renderComponent(props, element, 'sidebar/completes/CompletesPanel')\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 renderItemsControls(props, element) {\n return renderComponent(props, element, 'question-views/components/items/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']['renderContentHeader'] = renderContentHeader\n\n window['$STATS']['renderReportsPanel'] = renderReportsPanel\n window['$STATS']['renderSpecificationsPanel'] = renderSpecificationsPanel\n window['$STATS']['renderColorOptionsPanel'] = renderColorOptionsPanel\n window['$STATS']['renderWeightingPanel'] = renderWeightingPanel\n window['$STATS']['renderFiltersPanel'] = renderFiltersPanel\n window['$STATS']['renderDataCleaningPanel'] = renderDataCleaningPanel\n window['$STATS']['renderDataLabPanel'] = renderDataLabPanel\n window['$STATS']['renderMappingPanel'] = renderMappingPanel\n window['$STATS']['renderCrosstabPanel'] = renderCrosstabPanel\n window['$STATS']['renderCodingPanel'] = renderCodingPanel\n window['$STATS']['renderViewOptionsPanel'] = renderViewOptionsPanel\n window['$STATS']['renderCompletesPanel'] = renderCompletesPanel\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']['renderItemsControls'] = renderItemsControls\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 {0 < options.length ? (\n <>\n <div className=\"p-field\">Metric types</div>\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 </>\n ) : null}\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 ControlsComponents from '@aytm/app/stats/page/question-views/oe/components/ControlsComponents'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/cn/styles/Controls.module.scss'\n\nconst Controls = ({ model, data, disabled, onConfigChange, ...props }) => {\n const { config, answerVariants } = 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 <ControlsComponents model={model} data={data} onConfigChange={onConfigChange} {...props} />\n </div>\n </div>\n )\n}\n\nControls.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n disabled: PropTypes.bool,\n onConfigChange: 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-v2 ${style.annotationLinkIcon}`}></i>\n ) : 'cq' === linkAttributes.questionType ? (\n <i className={`icon-aytmfd-correlation-finder-v2 ${style.annotationLinkIcon}`}></i>\n ) : 'cvq' === linkAttributes.questionType ? (\n <i className={`icon-aytmfd-correlation-finder-v2 ${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, 'p-button-secondary')}\n label=\"CANCEL\"\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'\n\nimport ADND from '@aytm/lib/adnd/ADND'\n\nimport { formatAmounts } from '@aytm/app/stats/lib/helpers'\nimport { getQuestionId, getQuestionIcon } from '@aytm/app/stats/page/components/lib/utils'\nimport { getIsDefaultReportParams } from '@aytm/app/stats/page/comments/lib/utils'\nimport { imageAsset as imageAssetUrl } from '@aytm/app/survey/editor/resources/urls'\n\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 useMountedRef from '@aytm/lib/hooks/useMountedRef'\nimport useSingleAndDoubleClick from '@aytm/app/stats/hooks/useSingleAndDoubleClick'\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 icon,\n type,\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 disabled\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 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 {attribs?.icon ? <i className={`${attribs?.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 isCloneable =\n 'dc' != type &&\n !position &&\n !disabled &&\n !isEditing &&\n !thumbnailPreviewOpened &&\n 'function' == typeof onCloneQuestion\n\n const questionId = useMemo(\n () => getQuestionId({ id, type, pre_type, position, visual_position }, parentID).toUpperCase(),\n [id, parentID, type, pre_type, position, visual_position]\n )\n\n const questionIcon = useMemo(\n () =>\n getQuestionIcon({\n type: `${icon || type}${(model.features != undefined && model.features.insightsMapping && '-mapping') || ''}`,\n pre_type\n }),\n [icon, type, pre_type, model.features]\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 cloneable: isCloneable\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 (!isCloneable) 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 isCloneable ? onHeaderDoubleClick : null\n )\n\n const onScroll = () => {\n if (null === componentRef.current) {\n setAIAssistantPopupPosition('topright')\n } else {\n const stickyHeader = document.querySelector('.stats-StickyHeader')\n\n if (stickyHeader) {\n const header = document.querySelector('#header')\n const headerRect = header.getBoundingClientRect()\n\n const stickyHeaderRect = stickyHeader.getBoundingClientRect()\n\n const componentRect = componentRef.current.getBoundingClientRect()\n setAIAssistantPopupPosition(\n componentRect.y < headerRect.y + headerRect.height + stickyHeaderRect.height + 220\n ? 'bottomright'\n : 'topright'\n )\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 className={`icon-aytmfd-${questionIcon}`} />\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-comments-v2\" />\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-comments-v2\" />\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-responses-v2\" />\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-video-responses-v2\" />\n </span>\n ) : null}\n\n {skipsTo != undefined && 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 popupOffset={-36}\n direction={aiAssistantPopupPosition}\n show={true}\n hideOtherPopupsOnShow={false}\n content={() => (\n <div\n className={style['aiAssistants-requestFailedPopupContent']}\n onClick={() => void setAIAssistantRequestFailed(false)}\n >\n <i className={`icon-aytmfd-close-v2 ${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 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 oeSearchParams: PropTypes.object,\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","// lib\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport ExportControls from '@aytm/app/stats/page/question-views/oe/components/Controls/Export'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/components/styles/items/Controls.module.scss'\n\nconst Controls = ({\n model,\n features,\n disabled,\n isWCType,\n isVerbatimType,\n isSurveyGuest,\n onChartModeChange,\n onExport\n}) => {\n const { chartMode } = model\n\n return disabled ? null : (\n <div className={`${style.component} p-fluid p-col-12`}>\n {isWCType ? (\n <div className=\"p-fluid p-field p-right\">\n <span className={style['chat-mode-toggle']} onClick={onChartModeChange}>\n {'wc' == chartMode ? 'switch to chart' : 'switch to wordcloud'}\n </span>\n {isVerbatimType ? (\n <ExportControls model={model} features={features} isSurveyGuest={isSurveyGuest} onExport={onExport} />\n ) : null}\n </div>\n ) : isVerbatimType ? (\n <ExportControls model={model} features={features} isSurveyGuest={isSurveyGuest} onExport={onExport} />\n ) : null}\n </div>\n )\n}\n\nControls.propTypes = {\n model: PropTypes.object,\n features: PropTypes.object,\n disabled: PropTypes.bool,\n isWCType: PropTypes.bool,\n isVerbatimType: PropTypes.bool,\n isSurveyGuest: PropTypes.bool,\n onChartModeChange: PropTypes.func,\n onExport: PropTypes.func\n}\n\nControls.displayName = 'Controls'\n\nexport default Controls\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 { 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","// 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/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 PRAYTMTheme`}>\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 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 p-lvl-${option.lvl || 0}`}>\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(() => !original && !disabled && 'function' == typeof onReset, [original, disabled, onReset])\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/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 PRAYTMTheme`}>\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 fetchTimer && clearTimeout(fetchTimer)\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 fetchTimer && clearTimeout(fetchTimer)\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-stat 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 { itemTemplate, valueTemplate, optionGroupTemplate } from '@aytm/app/stats/page/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 PRAYTMTheme`}>\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 { itemTemplate, valueTemplate, optionGroupTemplate } from '@aytm/app/stats/page/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-filter-v2\"\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/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-refresh-v2 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 ControlsComponents from '@aytm/app/stats/page/question-views/oe/components/ControlsComponents'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/oe/styles/Controls.module.scss'\n\nconst Controls = ({ disabled, ...props }) =>\n disabled ? null : (\n <div className={`${style.component} p-fluid p-col-12`}>\n <ControlsComponents {...props} />\n </div>\n )\n\nControls.propTypes = {\n disabled: PropTypes.bool\n}\n\nControls.displayName = 'Controls'\n\nexport default Controls\n","// lib\nimport React, { useState, useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { hasComments } from '@aytm/app/stats/page/components/lib/utils'\nimport { CUSTOM_QUESTION_REG } from '@aytm/app/stats/page/comments/lib/constants'\n\nimport useEventListener from '@aytm/app/stats/hooks/useEventListener'\n\n// components\nimport { Dropdown } from 'primereact/dropdown'\n\n// styles\nimport style from '@aytm/app/stats/page/question-views/cn/styles/Controls.module.scss'\n\nconst valueExportTemplate = () => <i className=\"icon-aytmfd-export-v2\" />\n\nconst ExportControls = ({ model, features, isSurveyGuest, onExport }) => {\n const { id, key, type, items } = model\n\n const [exporting, setExporting] = useState(false)\n\n const exportOptions = useMemo(() => {\n const options = []\n\n const allowed = ['oe', 'oex', 'cn'].includes(type) || null === items || hasComments(items)\n if (allowed && !features.oe_tags_management.disabled) {\n options.push({ key: 'csv-verbatim', text: 'Download all verbatim (CSV)' })\n if (!CUSTOM_QUESTION_REG.test(String(id).split('-')[0])) {\n options.push({ key: 'csv-verbatim-codes', text: 'Download all verbatim with codes (CSV) ' })\n }\n }\n\n return options\n }, [id, type, items, features.oe_tags_management.disabled])\n\n const onExportChange = event => {\n setExporting(true)\n\n onExport(event.value)\n }\n\n useEventListener(`export-oe-${key}`, () => {\n setExporting(false)\n })\n\n return 0 < exportOptions.length && !isSurveyGuest ? (\n <div className=\"p-fluid p-field p-right\">\n <div className={`${style.export} p-field`}>\n {exporting ? (\n <i className=\"icon-aytmfd-refresh-v2 aytmfd-spin\" />\n ) : (\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={onExportChange}\n />\n )}\n </div>\n </div>\n ) : null\n}\n\nExportControls.propTypes = {\n model: PropTypes.object,\n features: PropTypes.object,\n isSurveyGuest: PropTypes.bool,\n onExport: PropTypes.func\n}\n\nExportControls.displayName = 'ExportControls'\n\nexport default ExportControls\n","// lib\nimport React, { useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport { Dropdown } from 'primereact/dropdown'\n\nconst itemTemplate = option => (option.hidden ? null : <span dangerouslySetInnerHTML={{ __html: option.text }}></span>)\nconst valueTemplate = option =>\n option ? <span dangerouslySetInnerHTML={{ __html: option.text }}></span> : 'Please select...'\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 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 itemTemplate = option => (option.hidden ? null : <span dangerouslySetInnerHTML={{ __html: option.text }}></span>)\n\nconst VerbatimControls = ({ model, data, features, isSurveyGuest, 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 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} * 28% - ${isSurveyGuest ? amount : amount + 1} * 10px - ${\n isSurveyGuest ? 0 : '30px'\n })`\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 isSurveyGuest: PropTypes.bool,\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 itemTemplate = option => (option.hidden ? null : <span dangerouslySetInnerHTML={{ __html: option.text }}></span>)\n\nconst ViewModes = ({ model, data, onViewModeChange }) => {\n const { viewMode } = model\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, useMemo, useCallback } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport { hasComments } from '@aytm/app/stats/page/components/lib/utils'\nimport { CUSTOM_QUESTION_REG } from '@aytm/app/stats/page/comments/lib/constants'\n\nimport useEventListener from '@aytm/app/stats/hooks/useEventListener'\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 itemTemplate = option => (option.hidden ? null : <span dangerouslySetInnerHTML={{ __html: option.text }}></span>)\nconst 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\nconst valueExportTemplate = () => <i className=\"icon-aytmfd-export-v2\" />\n\nconst WordcloudControls = ({\n model,\n data,\n features,\n collapsed,\n isVerbatimType,\n isSurveyGuest,\n onPresetChange,\n onApplyToAll,\n onExport,\n onToggle\n}) => {\n const { id, key, type, items, preset } = model\n\n const [status, setStatus] = useState(null)\n\n const [exporting, setExporting] = useState(false)\n\n const timer = useRef(null)\n\n const statusRef = useRef(null)\n statusRef.current = status\n\n const exportOptions = useMemo(() => {\n const options = [\n { key: 'png', text: 'Download PNG image' },\n { key: 'pdf', text: 'Download PDF document' },\n { key: 'eps', text: 'Download EPS file' }\n ]\n\n window.Blob != undefined && options.push({ key: 'csv', text: 'Download CSV file' })\n\n const allowed = ['oe', 'oex', 'cn'].includes(type) || null === items || hasComments(items)\n if (allowed && isVerbatimType && !features.oe_tags_management.disabled) {\n options.push({ key: 'csv-verbatim', text: 'Download all verbatim (CSV)' })\n if (!CUSTOM_QUESTION_REG.test(String(id).split('-')[0])) {\n options.push({ key: 'csv-verbatim-codes', text: 'Download all verbatim with codes (CSV) ' })\n }\n }\n\n return options\n }, [id, type, items, isVerbatimType, features.oe_tags_management.disabled])\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 const onExportChange = event => {\n if (['csv-verbatim', 'csv-verbatim-codes'].includes(event.value)) {\n setExporting(true)\n }\n\n onExport(event.value)\n }\n\n useEventListener(`export-oe-${key}`, () => {\n setExporting(false)\n })\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-button\">\n <Button\n className=\"p-button-grey p-button-rounded\"\n label={data.controls.applyToAllLabel}\n onClick={onApplyToAll}\n />\n </div>\n </>\n )}\n <div className=\"p-fluid p-field 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 ['aytmfd-spin']: 'toggling' == status && !collapsed,\n ['aytmfd-spin-reverse']: 'toggling' == status && collapsed\n })}\n />\n </span>\n </div>\n )}\n {0 < exportOptions.length && !isSurveyGuest ? (\n <div className={`${style.export} p-field`}>\n {exporting ? (\n <i className=\"icon-aytmfd-refresh-v2 aytmfd-spin\" />\n ) : (\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={onExportChange}\n />\n )}\n </div>\n ) : null}\n </div>\n </>\n )\n}\n\nWordcloudControls.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n features: PropTypes.object,\n collapsed: PropTypes.bool,\n isVerbatimType: 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 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'\nimport ExportControls from '@aytm/app/stats/page/question-views/oe/components/Controls/Export'\n\nconst ControlsComponents = ({\n model,\n data,\n features,\n collapsed,\n disabled,\n isVerbatimType,\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 <>\n {<ViewModes model={model} data={data} onViewModeChange={onViewModeChange} />}\n {'verbatim' == viewMode ? (\n <VerbatimControls\n model={model}\n data={data}\n features={features}\n isSurveyGuest={isSurveyGuest}\n onConfigChange={onConfigChange}\n onExport={onExport}\n />\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 collapsed={collapsed}\n isVerbatimType={isVerbatimType}\n isSurveyGuest={isSurveyGuest}\n onPresetChange={onPresetChange}\n onApplyToAll={onApplyToAll}\n onExport={onExport}\n onToggle={onToggle}\n />\n ) : isVerbatimType ? (\n <ExportControls model={model} features={features} isSurveyGuest={isSurveyGuest} onExport={onExport} />\n ) : null}\n </>\n )\n}\n\nControlsComponents.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n features: PropTypes.object,\n collapsed: PropTypes.bool,\n disabled: PropTypes.bool,\n isVerbatimType: 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\nControlsComponents.displayName = 'ControlsComponents'\n\nexport default ControlsComponents\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, 'p-button-secondary')}\n label=\"CANCEL\"\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/components/lib/templates'\n\n// hooks\nimport useSingleAndDoubleClick from '@aytm/app/stats/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 PRAYTMTheme`}>\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/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 PRAYTMTheme`}>\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/components/lib/templates'\n\n// hooks\nimport useSingleAndDoubleClick from '@aytm/app/stats/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 PRAYTMTheme`}>\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/components/lib/templates'\n\n// hooks\nimport useSingleAndDoubleClick from '@aytm/app/stats/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 PRAYTMTheme`}>\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 { itemTemplate, valueTemplate, optionGroupTemplate } from '@aytm/app/stats/page/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/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 p-lvl-${option.lvl || 0}`}>\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'\n\nimport ADND from '@aytm/lib/adnd/ADND'\n\nimport { DataContext } from '@aytm/app/stats/page/sidebar/coding/CodingPanel'\n\nimport { collator, encodeText } from '@aytm/app/stats/lib/helpers'\n\nimport { FORBIDDEN_CODEBOOK_SYMBOLS, FORBIDDEN_TAG_SYMBOLS } from '@aytm/app/stats/page/sidebar/coding//lib/constants'\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 useSingleAndDoubleClick from '@aytm/app/stats/hooks/useSingleAndDoubleClick'\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 error,\n newItem,\n editingItem,\n processingItem,\n processingTag,\n settingsItem,\n collapsedRefs,\n isEditing,\n isProcessing,\n isLoading,\n isCurrentLoading,\n onDNDStart,\n onDNDEnd\n}) => {\n const {\n specialMode,\n features,\n tagsList,\n tagsCodebooks,\n selectedQuestion,\n windowUID,\n isSkipperDisabled,\n onCollapse,\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 isDNDDisabled = useMemo(\n () =>\n codebook.disabled ||\n !['comments', 'video-responses'].includes(specialMode) ||\n features.oe_tags_management.disabled,\n [codebook.disabled, specialMode, features.oe_tags_management.disabled]\n )\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 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('clone', {\n ...item,\n destination: {\n codebook: 'sentiment' == codebook.type ? null : codebook.codebook,\n type: codebook.type\n }\n })\n }\n } else {\n onConfirm('create', {\n tag: newValue,\n type: codebook.type,\n label: item.label,\n value: newValue,\n codebook: 'sentiment' == codebook.type ? null : codebook.codebook\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 !features.ai_assistants_oe_coding.disabled &&\n dispatchEvent(new CustomEvent('dndStartCodebook', { detail: { guided: !codebook.tags.length } }))\n }\n const onDNDEndCodebook = () => {\n onDNDEnd()\n !isSkipperDisabled && !features.ai_assistants_oe_coding.disabled && dispatchEvent(new CustomEvent('dndEndCodebook'))\n }\n\n const fetchData = useCallback(() => {\n return { ...codebook, windowUID }\n }, [codebook, windowUID])\n\n const dndComponent =\n !isEditing && !isLoading && !isDNDDisabled\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 !isEditing && !isLoading && !isDNDDisabled\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(action, codebook, newValue)\n }\n },\n [codebook, tagsCodebooks, onError, onConfirm, onCloseDropdown, onCancelEditing]\n )\n\n const onMergeTag = useCallback(async () => {\n await onConfirm(\n 'merge',\n {\n ...dndDroppedTag,\n destination: {\n codebook: 'sentiment' == codebook.type ? null : codebook.codebook,\n type: codebook.type\n }\n },\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 code 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 code with the same name already exists'\n })\n } else {\n onConfirm('create', {\n tag: newValue,\n type: 'manual',\n label: encodeText(_value, false),\n value: newValue,\n codebook: 'sentiment' == codebook.type ? null : codebook.codebook\n })\n }\n },\n [codebook, tagsList, onError, onConfirm]\n )\n\n const onClick = useSingleAndDoubleClick(isEditing || isProcessing ? null : onToggle, 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 (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(false), [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-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 !features.oe_tags_management.disabled\n })}\n onClick={onClick}\n >\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 {'sentiment' == codebook.type ? (\n <span dangerouslySetInnerHTML={{ __html: codebook.codebook }} />\n ) : (\n <InputUpdate\n item={codebook}\n value={codebook.codebook}\n maxLength={CODEBOOK_MAX_LENGTH}\n forbiddenSymbols={FORBIDDEN_CODEBOOK_SYMBOLS}\n specialMode={specialMode}\n isEditing={isEditing}\n isLoading={isCurrentLoading}\n onChange={inputValue => (inputValueRef.current = inputValue)}\n onConfirm={() => onActionConfirm('update')}\n onCancel={onCancelEditing}\n />\n )}\n </span>\n </div>\n {isEditing || isProcessing ? null : (\n <span className={style['codebook-header-toggle']} onClick={onToggle}>\n <i className=\"icon-aytmfd-chevron-bracket\" />\n </span>\n )}\n {features.oe_tags_management.disabled ? 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 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 code with the same name already exists</div>\n <div className={style['component-merge-buttons']}>\n <Button\n className=\"p-button-stat p-button-secondary\"\n label=\"Cancel\"\n disabled={isLoading}\n onClick={isLoading ? null : () => setDndDroppedTag(null)}\n />\n <Button\n className=\"p-button-stat\"\n label=\"Merge codes\"\n loading={isLoading}\n disabled={isLoading}\n onClick={isLoading ? null : () => onMergeTag()}\n />\n </div>\n </div>\n ) : null}\n\n {codebook.disabled || features.oe_tags_management.disabled ? null : (\n <InputNew\n placeholder=\"New code\"\n maxLength={TAG_MAX_LENGTH}\n forbiddenSymbols={FORBIDDEN_TAG_SYMBOLS}\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 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 onDNDStart: PropTypes.func,\n onDNDEnd: 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 { formatAmounts, encodeText } from '@aytm/app/stats/lib/helpers'\n\nimport ADND from '@aytm/lib/adnd/ADND'\n\nimport { CODEBOOKS_HELP } from '@aytm/app/stats/page/sidebar/components/lib/helps'\nimport {\n DEFAULT_CODEBOOK,\n FORBIDDEN_CODEBOOK_SYMBOLS,\n STORAGE_KEY\n} 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 { changeSurveyCodebookState, changeSurveyTagState, changeTagState } from '@aytm/app/stats/page/comments/actions'\nimport { setApiKey, setStatActionsUrl, setStatUrl } from '@aytm/app/stats/page/comments/apiCalls'\n\nimport useIsVisible from '@aytm/lib/hooks/useIsVisible'\n\nimport useDrag from '@aytm/app/stats/page/sidebar/coding/hooks/useDrag'\nimport useEventBus from '@aytm/app/stats/page/sidebar/coding/hooks/useEventBus'\nimport useEventListener from '@aytm/app/stats/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 SidebarPopup from '@aytm/app/stats/page/sidebar/components/SidebarPopup'\n\nimport style from '@aytm/app/stats/page/sidebar/coding/styles/CodingPanel.module.scss'\n\nlet dndTimer = null\nlet errorTimer = null\n\nexport const DataContext = React.createContext()\n\nconst CodingPanel = ({\n specialMode = 'comments',\n root,\n apiKey,\n statUrl,\n statActionsUrl,\n features = {},\n survey = {},\n tagsData = {},\n reports = [],\n reportId,\n reportParams = {},\n totals = {},\n windowUID,\n onFetch,\n onTagsFetch,\n onInvalidKey,\n onModeChange\n}) => {\n setApiKey(apiKey)\n setStatUrl(statUrl)\n setStatActionsUrl(statActionsUrl)\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 [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 collapsedRefs = useRef({})\n\n const isVisible = useIsVisible(dndComponentRef && dndComponentRef.current ? dndComponentRef : null)\n\n const isDNDDisabled = useMemo(\n () => !['comments', 'video-responses'].includes(specialMode) || features.oe_tags_management.disabled,\n [specialMode, features.oe_tags_management.disabled]\n )\n\n const isSkipperDisabled = useMemo(() => {\n if (\n !selectedQuestion ||\n selectedQuestion == DEFAULT_SELECTED_QUESTION ||\n CUSTOM_QUESTION_REG.test(selectedQuestion)\n )\n return true\n\n const { questions } = survey\n const question = questions.find(q => selectedQuestion == questionPositionToId(q.position, survey))\n\n const { type } = question || {}\n return null !== question && ['it', 'im', 'ir', 'va', 'vo', 'ed', 'vr', 'cn'].includes(type)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [survey.questions, selectedQuestion])\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 tagsStats: tagsData.tagsStats,\n selectedQuestion,\n isSentimentsManagementDisabled: features.oe_sentiments_management.disabled\n })\n }, [\n tags,\n codeBooks,\n processingItem,\n tagsData.cs,\n tagsData.tags,\n tagsData.tagsStats,\n selectedQuestion,\n features.oe_sentiments_management.disabled\n ])\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 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 (!features.oe_sentiments_management.disabled) {\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, features.oe_sentiments_management.disabled])\n\n const { _onTagsFetch, _onCodeBooksFetch } = useEventBus({\n specialMode,\n survey,\n tagsData,\n onTagsFetch\n })\n\n const onError = useCallback(error => {\n errorTimer && clearTimeout(errorTimer)\n\n if (error && error.message) {\n setError(error)\n\n errorTimer = setTimeout(() => setError({}), 5000)\n } else setError({})\n\n return () => errorTimer && clearTimeout(errorTimer)\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 = useCallback((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 (action, codebook, 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: codebook.ts + 1\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 default:\n break\n }\n },\n [\n tagsCodebooks,\n newItem,\n _onCodeBooksFetch,\n onError,\n onInvalidKey,\n onCancelEditing,\n onCloseDropdown,\n onCollapse,\n onToggleNew\n ]\n )\n\n const onTagConfirm = useCallback(\n async (action, tag, 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: (data, updated) => {\n _onTagsFetch(data, updated)\n },\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 code 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_page':\n case 'remove_found': {\n const { query, pageSize, orderBy, orderDirection } = reportParams\n\n const params = {\n tag,\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 action: 'delete',\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 _onTagsFetch,\n onError,\n onFetch,\n onInvalidKey,\n onCancelEditing,\n onCloseDropdown,\n onToggleNew\n ]\n )\n\n const onConfirm = useCallback(\n (action, item, newValue = null) =>\n Object.hasOwn(item, 'tag') ? onTagConfirm(action, item, newValue) : onCodebookConfirm(action, item, 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('create', codebook)\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 (action, item) => {\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 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 && !isDNDDisabled\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('codingLoading', 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 specialMode,\n root,\n features,\n tagsList,\n tagsCodebooks,\n reportId,\n reports,\n windowUID,\n selectedQuestion,\n isSkipperDisabled,\n onCollapse,\n onError,\n onAction,\n onConfirm,\n onClickOutside,\n onCloseDropdown,\n onCancelEditing,\n onToggleNew,\n onToggleSettings\n }\n }, [\n specialMode,\n root,\n features,\n tagsList,\n tagsCodebooks,\n reportId,\n reports,\n windowUID,\n selectedQuestion,\n isSkipperDisabled,\n onCollapse,\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 {features.oe_tags_management.disabled || features.ai_assistants_oe_coding.hidden ? null : (\n <CodingSkipper\n survey={survey}\n isLoading={isLoading}\n isSkipperLoading={isSkipperLoading}\n setIsLoading={setIsLoading}\n setIsSkipperLoading={setIsSkipperLoading}\n onFetch={onFetch}\n onInvalidKey={onInvalidKey}\n />\n )}\n\n <div className={style['component-title']}>\n Codebooks\n <SidebarPopup id=\"coding\" root={root} help={CODEBOOKS_HELP} width=\"300px\" />\n {0 < totals.totalComments && 'comments' != specialMode ? (\n <div\n className={`${style['mode-switch-button']} ${style['mode-switch-button-comments']} p-right`}\n onClick={() => onModeChange('comments')}\n >\n <i className=\"icon-aytmfd-comments-v2\"></i>\n <span>\n {formatAmounts(totals.totalComments)}\n <br />\n verbatim\n </span>\n </div>\n ) : null}\n </div>\n\n <div ref={dndComponentRef} className={style['component-content']}>\n {0 < tagsCodebooks.length\n ? tagsCodebooks.map((codebook, index) => (\n <CodingCodebook\n key={`codebook-${codebook.type}-${codebook.codebook}-${index + 1}`}\n codebook={codebook}\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 onDNDStart={onDNDStart}\n onDNDEnd={onDNDEnd}\n />\n ))\n : null}\n </div>\n </DataContext.Provider>\n\n {features.oe_tags_management.disabled ? null : (\n <>\n <InputNew\n placeholder=\"New codebook\"\n maxLength={CODEBOOK_MAX_LENGTH}\n forbiddenSymbols={FORBIDDEN_CODEBOOK_SYMBOLS}\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 && error.message && !Object.hasOwn(error, 'codebook') && !Object.hasOwn(error, 'tag') && (\n <div className={style['component-error']}>{error.message}</div>\n )}\n </>\n )}\n </div>\n )\n}\n\nCodingPanel.propTypes = {\n specialMode: PropTypes.string,\n root: PropTypes.any,\n apiKey: PropTypes.object,\n statUrl: PropTypes.string,\n statActionsUrl: PropTypes.string,\n features: PropTypes.object,\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 totals: PropTypes.object,\n windowUID: PropTypes.string,\n onFetch: PropTypes.func,\n onTagsFetch: PropTypes.func,\n onInvalidKey: PropTypes.func,\n onModeChange: PropTypes.func\n}\n\nCodingPanel.displayName = 'CodingPanel'\n\nexport default CodingPanel\n\nADND().connect()\n","import 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/sidebar/coding/CodingPanel'\n\nimport { decodeText } from '@aytm/app/stats/lib/helpers'\n\nimport { SKIPPER_ACTIVE_HELP, SKIPPER_DISABLED_HELP } from '@aytm/app/stats/page/sidebar/components/lib/helps'\nimport { DEFAULT_SELECTED_ACTION, DEFAULT_SELECTED_CODEBOOK } from '@aytm/app/stats/page/sidebar/coding/lib/constants'\nimport { DEFAULT_SELECTED_QUESTION } from '@aytm/app/stats/page/comments/lib/constants'\nimport { getQuestionsList } from '@aytm/app/stats/page/comments/lib/utils'\n\nimport { generateSurveySkipper } from '@aytm/app/stats/page/comments/actions'\n\nimport { itemTemplate, valueTemplate, optionGroupTemplate } from '@aytm/app/stats/page/components/lib/templates'\n\nimport useEventListener from '@aytm/app/stats/hooks/useEventListener'\n\nimport Popup, { PopupCloseButton } from '@aytm/lib/rfd-ui/components/basic/popup'\n\nimport { Button } from 'primereact/button'\nimport { Dropdown } from 'primereact/dropdown'\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\nlet skipperTimer = null\n\nconst CodingSkipper = ({\n survey,\n isLoading,\n isSkipperLoading,\n setIsLoading,\n setIsSkipperLoading,\n onFetch,\n onInvalidKey\n}) => {\n const { root, onCollapse, onCloseDropdown, onCancelEditing } = useContext(DataContext)\n\n const { questions, schema, codeBooks } = survey\n\n const [selectedQuestion, setSelectedQuestion] = useState(DEFAULT_SELECTED_QUESTION)\n const [selectedAction, setSelectedAction] = useState(DEFAULT_SELECTED_ACTION)\n const [selectedCodebook, setSelectedCodebook] = useState(DEFAULT_SELECTED_CODEBOOK)\n\n const [message, setMessage] = useState('')\n const [messageType, setMessageType] = useState(null)\n\n const [progress, setProgress] = useState(0)\n\n const selectedQuestionRef = useRef()\n selectedQuestionRef.current = selectedQuestion\n\n const selectedActionRef = useRef()\n selectedActionRef.current = selectedAction\n\n const selectedCodebookRef = useRef()\n selectedCodebookRef.current = selectedCodebook\n\n const progressRef = useRef()\n progressRef.current = progress\n\n const questionsOptions = useMemo(\n () => getQuestionsList(survey),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [questions, schema]\n )\n\n const actionsOptions = useMemo(() => {\n if (selectedQuestion == DEFAULT_SELECTED_QUESTION) return []\n\n const options = [{ text: 'Skipper – autocode', value: 'skipper' }]\n\n const codebooks = JSON.parse(JSON.stringify(codeBooks || []))\n if (0 < codebooks.length) {\n if (codebooks.some(codebook => 0 < codebook.tags.length))\n options.push({ text: 'Skipper – apply codebook', value: 'skipper-apply' })\n\n const codebook =\n selectedCodebook == DEFAULT_SELECTED_CODEBOOK\n ? codebooks[0]\n : codebooks.find(codebook => codebook.title == selectedCodebook)\n if (0 < codebook?.tags.length)\n options.push({ text: 'Skipper – clone, finalize and apply', value: 'skipper-guided' })\n else options.push({ text: 'Skipper – finalize and apply', value: 'skipper-guided' })\n }\n\n return options\n }, [codeBooks, selectedQuestion, selectedCodebook])\n\n const codebooksOptions = useMemo(() => {\n if (selectedAction == DEFAULT_SELECTED_ACTION) return []\n\n const codebooks = JSON.parse(JSON.stringify(codeBooks || []))\n codebooks.sort((a, b) => a.ts - b.ts)\n\n return codebooks.map(codebook => {\n return {\n type: codebook.type,\n text: codebook.title,\n search: decodeText(codebook.title),\n value: codebook.title\n }\n })\n }, [codeBooks, selectedAction])\n\n const isSkipperDisabled = useMemo(\n () =>\n !selectedQuestion ||\n selectedQuestion == DEFAULT_SELECTED_QUESTION ||\n (selectedAction != DEFAULT_SELECTED_ACTION && selectedCodebook == DEFAULT_SELECTED_CODEBOOK),\n [selectedQuestion, selectedAction, selectedCodebook]\n )\n\n const onQuestionSelect = event => setSelectedQuestion(event.value)\n\n const onActionSelect = useCallback(\n event => {\n setSelectedAction(event.value)\n\n if ('skipper-apply' == event.value && selectedCodebookRef.current != DEFAULT_SELECTED_CODEBOOK) {\n const codebook = codeBooks.find(codebook => codebook.title == selectedCodebookRef.current)\n if (!codebook.tags.length) {\n setSelectedCodebook(codeBooks.find(codebook => 0 < codebook.tags.length).title)\n }\n }\n },\n [codeBooks]\n )\n\n const onCodebookSelect = useCallback(\n event => {\n setSelectedCodebook(event.value)\n\n if ('skipper-apply' == selectedActionRef.current) {\n const codebook = codeBooks.find(codebook => codebook.title == event.value)\n if (!codebook.tags.length) setSelectedAction('skipper-guided')\n }\n },\n [codeBooks]\n )\n\n const onMessage = useCallback((message = [], messageType = null) => {\n setMessage((1 < message.length ? message.map((v, i) => (0 < i ? v : `<b>${v}</b>`)) : message).join('<br/>'))\n setMessageType(messageType)\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 onSkipperConfirm = useCallback(async () => {\n const params = {\n selectedQuestion: selectedQuestionRef.current,\n onFetch: (data = {}, callback) => {\n if (Object.hasOwn(data, 'codebook')) {\n onCollapse(data.codebook.title, false)\n }\n\n onFetch(data, callback)\n },\n onError: message => onMessage(message, 'error'),\n onProgress,\n setIsLoading: (value, message) => {\n if (!value) {\n onMessage(message)\n onProgress(value)\n }\n\n setIsLoading(value)\n setIsSkipperLoading(value)\n },\n onInvalidKey\n }\n\n if ('skipper-guided' == selectedActionRef.current) {\n params.guided = true\n }\n\n const codebook = codeBooks.find(codebook => codebook.title == selectedCodebookRef.current)\n if (codebook != undefined) {\n params.codebook = {\n codebook: codebook.title,\n type: codebook.type,\n tags: codebook.tags\n }\n }\n\n onMessage()\n\n onCloseDropdown()\n onCancelEditing()\n\n await generateSurveySkipper(params)\n }, [\n codeBooks,\n setIsLoading,\n setIsSkipperLoading,\n onMessage,\n onProgress,\n onCollapse,\n onFetch,\n onInvalidKey,\n onCloseDropdown,\n onCancelEditing\n ])\n\n useEffect(() => {\n onMessage()\n\n const _questionsOptions = questionsOptions.flatMap(group => group.items)\n if (0 < _questionsOptions.length) {\n if (\n selectedQuestionRef.current == DEFAULT_SELECTED_QUESTION ||\n !_questionsOptions.some(question => question.value == selectedQuestionRef.current)\n ) {\n setSelectedQuestion(_questionsOptions[0].value)\n }\n } else {\n setSelectedQuestion(DEFAULT_SELECTED_QUESTION)\n }\n }, [questionsOptions, onMessage])\n\n useEffect(() => {\n onMessage()\n\n if (0 < actionsOptions.length) {\n if (\n selectedActionRef.current == DEFAULT_SELECTED_ACTION ||\n !actionsOptions.some(action => action.value == selectedActionRef.current)\n ) {\n setSelectedAction(actionsOptions[0].value)\n }\n } else {\n setSelectedAction(DEFAULT_SELECTED_ACTION)\n }\n }, [actionsOptions, onMessage])\n\n useEffect(() => {\n onMessage()\n\n if (0 < codebooksOptions.length) {\n if (\n selectedCodebookRef.current == DEFAULT_SELECTED_CODEBOOK ||\n !codebooksOptions.some(codebook => codebook.value == selectedCodebookRef.current)\n ) {\n setSelectedCodebook(\n 'skipper-apply' == selectedActionRef.current\n ? codeBooks.find(codebook => 0 < codebook.tags.length).title\n : codebooksOptions[0].value\n )\n }\n } else {\n setSelectedCodebook(DEFAULT_SELECTED_CODEBOOK)\n }\n }, [codeBooks, codebooksOptions, onMessage])\n\n useEffect(() => () => skipperTimer && clearTimeout(skipperTimer), [])\n\n useEventListener('assignCodingSkipper', event => {\n if (event.detail) {\n const { question, action, codebook } = event.detail\n\n if (question != selectedQuestionRef.current) setSelectedQuestion(question)\n if (action != selectedActionRef.current) setSelectedAction(action)\n if (codebook.codebook != selectedCodebookRef.current) setSelectedCodebook(codebook.codebook)\n }\n })\n\n useEventListener('runCodingSkipper', event => {\n if (event.detail) {\n const { question, codebook } = event.detail\n const action = 0 < codebook.tags.length ? 'skipper-apply' : 'skipper-guided'\n\n if (question != selectedQuestionRef.current) {\n selectedQuestionRef.current = question\n setSelectedQuestion(question)\n }\n if (action != selectedActionRef.current) {\n selectedActionRef.current = action\n setSelectedAction(action)\n }\n if (codebook.codebook != selectedCodebookRef.current) {\n selectedCodebookRef.current = codebook.codebook\n setSelectedCodebook(codebook.codebook)\n }\n\n skipperTimer && clearTimeout(skipperTimer)\n skipperTimer = setTimeout(() => onSkipperConfirm(), 200)\n }\n })\n\n return (\n <>\n <div className={style['component-title']}>Autocoding</div>\n\n <div className={style['component-content']}>\n <div className={`${style.row} p-fluid`}>\n <div className=\"p-field p-col-12\">\n <Dropdown\n placeholder=\"Select question...\"\n value={selectedQuestion}\n options={questionsOptions}\n optionValue=\"value\"\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={isLoading}\n onChange={onQuestionSelect}\n />\n </div>\n </div>\n\n {0 < actionsOptions.length ? (\n <div className={`${style.row} p-fluid`}>\n <div className=\"p-field p-col-12\">\n <Dropdown\n value={selectedAction}\n options={actionsOptions}\n optionValue=\"value\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n fixedDropdownDir=\"bottom\"\n disabled={isLoading}\n onChange={onActionSelect}\n />\n </div>\n </div>\n ) : null}\n\n {0 < codebooksOptions.length ? (\n <div className={`${style.row} p-fluid`}>\n <div className=\"p-field p-col-12\">\n <Dropdown\n value={selectedCodebook}\n options={codebooksOptions}\n optionValue=\"value\"\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={isLoading}\n onChange={onCodebookSelect}\n />\n </div>\n </div>\n ) : null}\n\n <div className={`${style.row} ${style['row-skipper']} p-fluid`}>\n {0 < message.length ? (\n <Popup\n className={classNames('rfd-ui-popup-notification', {\n 'rfd-ui-popup-notification-warning': 'error' == messageType\n })}\n width=\"250px\"\n trigger=\"none\"\n direction=\"bottomleft\"\n show={true}\n hideOtherPopupsOnShow={false}\n content={() => (\n <>\n <PopupCloseButton onClose={onMessage}>\n <i className=\"icon-aytmfd-close-v2\" />\n </PopupCloseButton>\n <div\n className={classNames(style['skipper-popup-content'], {\n [style['skipper-popup-content-failed']]: 'error' == messageType,\n [style['skipper-popup-content-success']]: 'error' != messageType\n })}\n >\n {'error' == messageType ? (\n <span className={style['skipper-popup-icon']}>🧭</span>\n ) : (\n <span className={style['skipper-popup-icon']}>🙌</span>\n )}\n <span dangerouslySetInnerHTML={{ __html: message }}></span>\n </div>\n </>\n )}\n >\n <div className={style['skipper-popup-anchor']}></div>\n </Popup>\n ) : null}\n\n {isSkipperLoading ? (\n <div className={style.skipper}>\n <span className={style['skipper-fill']} style={{ width: `${progress}%` }}></span>\n <i className={`icon-aytmfd-skipper ${style['skipper-processing']}`}></i>\n <span className={style['skipper-text']}>Skipper – autocode</span>\n </div>\n ) : (\n <Button\n className=\"stat-skipper-tags-button -dtr-stat-skipper-tags-button p-button-lg p-button-rounded p-button-stat\"\n label=\"Skipper – autocode\"\n icon={<i className=\"icon-aytmfd-skipper\"></i>}\n iconPos=\"left\"\n disabled={isLoading || isSkipperDisabled}\n onClick={isLoading || isSkipperDisabled ? null : onSkipperConfirm}\n />\n )}\n\n <SidebarPopup\n id=\"tags-skipper\"\n root={root}\n help={isSkipperDisabled ? SKIPPER_DISABLED_HELP : SKIPPER_ACTIVE_HELP}\n />\n </div>\n </div>\n </>\n )\n}\n\nCodingSkipper.propTypes = {\n survey: PropTypes.object,\n isLoading: PropTypes.bool,\n isSkipperLoading: PropTypes.bool,\n setIsLoading: PropTypes.func,\n setIsSkipperLoading: 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, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport ADND from '@aytm/lib/adnd/ADND'\n\nimport { DataContext } from '@aytm/app/stats/page/sidebar/coding/CodingPanel'\n\nimport { encodeText } from '@aytm/app/stats/lib/helpers'\n\nimport { FORBIDDEN_TAG_SYMBOLS } from '@aytm/app/stats/page/sidebar/coding//lib/constants'\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 { specialMode, features, tagsList, windowUID, onError, onConfirm, onCloseDropdown, onCancelEditing } =\n useContext(DataContext)\n\n const dndItemRef = useRef(null)\n\n const inputValueRef = useRef(tag.label)\n\n const isDNDDisabled = useMemo(\n () => !['comments', 'video-responses'].includes(specialMode) || features.oe_tags_management.disabled,\n [specialMode, features.oe_tags_management.disabled]\n )\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 action,\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 encodeText(_inputValue, false)\n )\n }\n },\n [tag, tagsList, onError, onConfirm, onCloseDropdown, onCancelEditing, setDndDroppedTag]\n )\n\n const dndItem =\n !isEditing && !isLoading && !isDNDDisabled\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(false), [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 && !features.oe_tags_management.disabled\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 item={tag}\n value={tag.label}\n maxLength={TAG_MAX_LENGTH}\n forbiddenSymbols={FORBIDDEN_TAG_SYMBOLS}\n specialMode={specialMode}\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 ? null : isProcessing ? (\n <div className={style['codebook-item-count']}> </div>\n ) : (\n <div className={style['codebook-item-count']}>{tag.amount}</div>\n )}\n {features.oe_tags_management.disabled ? 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 { decodeText } from '@aytm/app/stats/lib/helpers'\n\nimport { getCodebooksItemOptionsList } from '@aytm/app/stats/page/comments/lib/utils'\n\nimport SettingsButton from '@aytm/app/stats/page/sidebar/coding/components/SettingsButton'\n\nimport style from '@aytm/app/stats/page/sidebar/coding/styles/CodingPanel.module.scss'\n\nlet statusTimer = null\n\nconst CodebookSettings = ({\n codebookRef,\n codebook,\n opened = false,\n isEditing = false,\n isLoading = false,\n isCurrentLoading = false,\n onConfirm\n}) => {\n const {\n features,\n reports,\n reportId,\n selectedQuestion,\n isSkipperDisabled,\n onAction,\n onCloseDropdown,\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 switch (action) {\n case 'copy': {\n statusTimer && clearTimeout(statusTimer)\n\n const text = [decodeText(codebook.codebook)].concat(codebook.tags.map(tag => decodeText(tag))).join('\\n')\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\n setSelectedActionStatus('copied')\n\n break\n }\n case 'skipper-apply':\n case 'skipper-guided': {\n dispatchEvent(\n new CustomEvent('assignCodingSkipper', { detail: { question: selectedQuestion, action, codebook } })\n )\n\n onCloseDropdown()\n onCancelEditing()\n\n break\n }\n default: {\n if ('assign' != action) setSelectedAction(action)\n if (onAction) onAction(action, codebook)\n }\n }\n },\n [codebook, selectedQuestion, onAction, onCloseDropdown, onCancelEditing]\n )\n const options = useMemo(\n () =>\n getCodebooksItemOptionsList({\n codebook,\n selectedQuestion,\n selectedAction,\n selectedActionStatus,\n isSkipperDisabled,\n isAiAssistantsOECodingDisabled: features.ai_assistants_oe_coding.disabled,\n onActionCancel,\n onActionConfirm,\n onActionClick\n }),\n [\n codebook,\n selectedQuestion,\n selectedAction,\n selectedActionStatus,\n isSkipperDisabled,\n features.ai_assistants_oe_coding.disabled,\n onActionCancel,\n onActionConfirm,\n onActionClick\n ]\n )\n\n const onToggle = useCallback(() => onToggleSettings(codebook.codebook, codebook.type), [codebook, onToggleSettings])\n\n useEffect(() => {\n statusTimer && clearTimeout(statusTimer)\n statusTimer = setTimeout(() => setSelectedActionStatus(null), 1500)\n\n return () => statusTimer && clearTimeout(statusTimer)\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 codes 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 ) : (\n <div className={style['component-settings']}></div>\n )\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 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'\n\nimport { onInputKeyDown } from '@aytm/app/stats/page/sidebar/components/lib/utils'\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\nexport const DataContext = React.createContext()\n\nconst InputNew = ({\n placeholder,\n maxLength,\n forbiddenSymbols,\n error,\n multiline,\n isAdding,\n isLoading,\n onAdd,\n onToggle\n}) => {\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(`[${forbiddenSymbols}]`, '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, forbiddenSymbols, 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(`^[^${forbiddenSymbols}]*$`, '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-stat p-button-secondary\"\n label=\"Cancel\"\n disabled={isLoading}\n onClick={isLoading ? null : () => onToggle(false)}\n />\n <Button\n className=\"p-button-stat\"\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 forbiddenSymbols: PropTypes.string,\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'\n\nimport { decodeText } from '@aytm/app/stats/lib/helpers'\n\nimport { onInputKeyDown } from '@aytm/app/stats/page/sidebar/components/lib/utils'\n\nimport useSingleAndDoubleClick from '@aytm/app/stats/hooks/useSingleAndDoubleClick'\n\nimport { InputTextarea } from 'primereact/inputtextarea'\n\nimport style from '@aytm/app/stats/page/sidebar/coding/styles/CodingPanel.module.scss'\n\nexport const DataContext = React.createContext()\n\nconst InputUpdate = ({\n item,\n value,\n maxLength,\n forbiddenSymbols,\n specialMode,\n isEditing,\n isLoading,\n onChange,\n onConfirm,\n onCancel\n}) => {\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(`[${forbiddenSymbols}]`, '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, forbiddenSymbols]\n )\n\n const addCommentsSearchOption = useCallback(\n () => dispatchEvent(new CustomEvent('addCommentsSearchOption', { detail: { item } })),\n [item]\n )\n\n const onTitleClick = useSingleAndDoubleClick(null, isLoading ? null : addCommentsSearchOption)\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(`^[^${forbiddenSymbols}]*$`, '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\n onClick={['comments', 'video-responses'].includes(specialMode) ? onTitleClick : null}\n dangerouslySetInnerHTML={{ __html: value }}\n />\n )\n}\n\nInputUpdate.propTypes = {\n item: PropTypes.object,\n value: PropTypes.string,\n maxLength: PropTypes.number,\n forbiddenSymbols: PropTypes.string,\n specialMode: PropTypes.string,\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 PORTAL_ID = 'oe-coding-settings-portal'\n\nconst SettingsButton = ({\n itemRef,\n options,\n warning,\n opened = false,\n isEditing = false,\n isLoading = false,\n isCurrentLoading = false,\n onActionCancel,\n onToggle\n}) => {\n const { root, 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 (\n <div\n className={classNames(style['component-settings'], {\n [style['component-settings-opened']]: opened || isCurrentLoading\n })}\n >\n {isCurrentLoading ? (\n <span className={style['component-settings-icon']}>\n <i className=\"icon-aytmfd-refresh-v2 aytmfd-spin\" />\n </span>\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 nodeID={PORTAL_ID}>\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\n root={root}\n itemRef={itemRef}\n buttonRef={buttonRef}\n options={options}\n warning={warning}\n />\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 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 = ({ root, 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 if (!dropdownRef.current) return\n\n updateDropdownPosition()\n }, 100)\n }\n }\n const updateDropdownPositionHandler = () => updateDropdownPosition(true)\n\n useEffect(() => () => updateTimer && clearTimeout(updateTimer), [])\n\n useEffect(\n () => updateDropdownPosition(),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [options]\n )\n\n useEffect(() => {\n updateDropdownPosition()\n\n window.addEventListener('scroll', updateDropdownPositionHandler)\n window.addEventListener('resize', updateDropdownPositionHandler)\n\n root.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 root.removeEventListener('scroll', updateDropdownPositionHandler)\n\n resizeObserverRef.current.disconnect()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n return (\n <Dropdown className={style['component-dropdown']} dropdownRef={dropdownRef} width=\"auto\" opened={true}>\n {() => (\n <div className=\"comments-toolbar-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 root: PropTypes.any,\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\nimport style from '@aytm/app/stats/page/sidebar/coding/styles/CodingPanel.module.scss'\n\nconst TagSettings = ({\n tagRef,\n tag,\n opened = false,\n isEditing = false,\n isLoading = false,\n isCurrentLoading = false,\n onConfirm\n}) => {\n const { specialMode, 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(action, tag)\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 specialMode,\n tag,\n selectedAction,\n onActionCancel,\n onActionConfirm,\n onActionClick\n }),\n [specialMode, 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 code 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 ) : (\n <div className={style['component-settings']}></div>\n )\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","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","import useCodeBooks from '@aytm/app/stats/page/comments/comments/hooks/useCodeBooks'\nimport useTags from '@aytm/app/stats/page/comments/comments/hooks/useTags'\n\nconst useEventBus = ({ specialMode = 'comments', survey, tagsData, onTagsFetch }) => {\n const [_onTagsUpdateSchema, _onTagsFetch] = useTags({\n survey,\n tagsData,\n onTagsFetch\n })\n\n const [_onCodeBooksFetch] = useCodeBooks({\n survey,\n tagsData,\n onTagsFetch\n })\n\n return ['comments', 'video-responses'].includes(specialMode)\n ? {\n _onTagsFetch: (data, updated) => {\n dispatchEvent(new CustomEvent('tagsFetch', { detail: { data, updated } }))\n },\n _onCodeBooksFetch: (data, updated) => {\n dispatchEvent(new CustomEvent('codeBooksFetch', { detail: { data, updated } }))\n }\n }\n : { _onTagsFetch, _onCodeBooksFetch }\n}\n\nexport default useEventBus\n","export const DEFAULT_CODEBOOK = 'Default codebook'\n\nexport const FORBIDDEN_CODEBOOK_SYMBOLS = '\":;<>'\nexport const FORBIDDEN_TAG_SYMBOLS = '\";<>'\n\nexport const DEFAULT_SELECTED_ACTION = 'skipper'\nexport const DEFAULT_SELECTED_CODEBOOK = '*'\n\nexport const STORAGE_KEY = `${window.surveyId}${window.userId || 0}-codebooks`\n","import React, { Fragment, useState, useMemo, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport { List, Map } from 'immutable'\n\nimport { COLOR_OPTIONS_HELP } from '@aytm/app/stats/page/sidebar/components/lib/helps'\n\nimport { wrappedPostFetch } from '@aytm/app/stats/page/sidebar/color-options/lib/func'\nimport { DEFAULT_PALETTE } from '@aytm/app/stats/page/sidebar/color-options/lib/constants'\n\n// components\nimport { RadioButton } from 'primereact/radiobutton'\n\nimport SidebarPopup from '@aytm/app/stats/page/sidebar/components/SidebarPopup'\n\nimport ColorThemes from '@aytm/app/stats/page/sidebar/color-options/ColorThemes'\nimport ColorPicker from '@aytm/app/stats/page/sidebar/color-options/ColorPicker'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/color-options/styles/ColorOptionsPanel.module.scss'\n\nconst ColorOptions = ({\n container,\n root,\n colorThemes,\n reportColorTheme,\n palettes,\n reportPalette,\n palettesUrl,\n isAdmin,\n isSurveyOwner,\n isSurveyGuest,\n disabled,\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 wrappedPostFetch(palettesUrl, { data: currentPalette.toJS() })\n .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 wrappedPostFetch(`${palettesUrl}/${currentPaletteId}/update`, { data: currentPalette.toJS() })\n .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 wrappedPostFetch(`${palettesUrl}/${paletteId}/remove`)\n .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 <div className={style.component}>\n <div className={style['component-title']}>\n Color Options\n <SidebarPopup id=\"color\" root={root} help={COLOR_OPTIONS_HELP} width=\"300px\" />\n </div>\n\n <ColorThemes\n colorThemes={colorThemes}\n reportColorTheme={reportColorTheme}\n palettes={palettes}\n reportPalette={reportPalette}\n isAdmin={isAdmin}\n isSurveyOwner={isSurveyOwner}\n isSurveyGuest={isSurveyGuest}\n disabled={disabled}\n onSelect={onSelect}\n onPaletteAdd={onPaletteAdd}\n />\n\n {paletteListAvailable ? (\n <>\n <div className={style['component-title']}>Custom Colors</div>\n\n <div className={style['palettes-list']}>\n {palettes.map(palette => (\n <Fragment key={`palette-${palette.get('id')}`}>\n <div className={style['palettes-list-item']}>\n <RadioButton\n checked={reportPaletteId == palette.get('id')}\n disabled={disabled}\n onChange={disabled ? null : () => onSelect(null, palette.get('data'))}\n />\n <div\n className={classNames(style['palettes-list-item-colors'], { 'p-disabled': disabled })}\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-refresh-v2 aytmfd-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-delete']}\n onClick={() => updateCurrentStatus(currentStatus, 'remove', palette.get('id'), 'confirm')}\n >\n <i className=\"icon-aytmfd-delete\" />\n </span>\n </>\n ))}\n </div>\n {'confirm' == currentStatus.getIn(['remove', palette.get('id')]) && (\n <div className={style['palettes-list-item-confirm']}>\n <span\n className={style['palettes-list-item-confirm-yes']}\n onClick={() => onPaletteRemove(palette.get('id'))}\n >\n delete forever?\n </span>\n <span\n className={style['palettes-list-item-confirm-no']}\n onClick={() => updateCurrentStatus(currentStatus, 'remove', palette.get('id'), null)}\n >\n nevermind\n </span>\n </div>\n )}\n </Fragment>\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 <ColorPicker container={container} palette={currentPalette} onChange={onPaletteChange} />\n {'update' == currentStatus.getIn(['update', currentPaletteId]) ? (\n <span className={style['palettes-list-picker-spin']}>\n <i className=\"icon-aytmfd-refresh-v2 aytmfd-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 </>\n ) : null}\n </div>\n )\n}\n\nColorOptions.propTypes = {\n container: PropTypes.any,\n root: PropTypes.any,\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 isAdmin: PropTypes.bool,\n isSurveyOwner: PropTypes.bool,\n isSurveyGuest: PropTypes.bool,\n disabled: PropTypes.bool,\n onSelect: PropTypes.func,\n onUpdate: PropTypes.func,\n onError: PropTypes.func\n}\n\nColorOptions.displayName = 'ColorOptions'\n\nexport default ColorOptions\n","import React, { createRef, useState, useRef, useCallback, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { Map } from 'immutable'\n\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/color-options/lib/constants'\n\nimport { Dropdown } from 'primereact/dropdown'\n\nimport ColorPickerPopup from 'lib/rfd-ui/components/advanced/color-picker-popup'\n\nimport style from '@aytm/app/stats/page/sidebar/color-options/styles/ColorPicker.module.scss'\n\nconst ColorPicker = ({ container, palette = [], 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(0)\n\n const onColorMethodChangeRef = useRef()\n onColorMethodChangeRef.current = event => {\n const value = event.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={`palette-picker-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 <div className=\"p-fluid\" style={{ width: '172px' }}>\n <Dropdown\n value={currentColorMethod}\n options={COLOR_METHOD_OPTIONS}\n optionValue=\"value\"\n optionLabel=\"text\"\n fixedDropdownDir=\"bottom\"\n onChange={onColorMethodChangeRef.current}\n />\n </div>\n {0 > ['monochromatic', 'analogous'].indexOf(currentColorMethod) && (\n <span className={style['palette-picker-methods-random']} onClick={onColorsRandomRef.current}>\n <i className=\"icon-aytmfd-refresh-v2\" />\n </span>\n )}\n </div>\n ) : null}\n\n {null !== currentColor && null !== currentColorId && (\n <ColorPickerPopup\n ref={colorPickerRef}\n container={container}\n target={colorsRefs[currentColorId].current}\n color={currentColor}\n pickerTopRef={-30}\n offsetLeft={260 - 24 * currentColorId}\n onChange={onColorChangeRef.current}\n onClose={onClose}\n />\n )}\n </div>\n )\n}\n\nColorPicker.propTypes = {\n container: PropTypes.any,\n palette: PropTypes.instanceOf(Map),\n onChange: PropTypes.func\n}\n\nColorPicker.displayName = 'ColorPicker'\n\nexport default ColorPicker\n","import React, { useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport { fromJS, List, Map } from 'immutable'\n\nimport { RadioButton } from 'primereact/radiobutton'\n\nimport style from '@aytm/app/stats/page/sidebar/color-options/styles/ColorOptionsPanel.module.scss'\n\nconst ColorThemes = ({\n colorThemes,\n reportColorTheme,\n palettes,\n reportPalette,\n isAdmin,\n isSurveyOwner,\n disabled,\n onSelect,\n onPaletteAdd\n}) => {\n const copyAvailable = useMemo(\n () => 3 > palettes.size && (isAdmin || isSurveyOwner) && !disabled,\n [palettes, isAdmin, isSurveyOwner, disabled]\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 checked={null !== reportColorTheme && reportColorTheme == index}\n disabled={disabled}\n onChange={disabled ? null : () => onColorThemeSelect(index)}\n />\n <div\n className={classNames(style['palettes-list-item-colors'], { 'p-disabled': disabled })}\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 onChange={disabled ? null : () => onColorThemeSelect(reportPalette)}\n />\n <div\n className={classNames(style['palettes-list-item-colors'], { 'p-disabled': disabled })}\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 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 disabled: PropTypes.bool,\n onSelect: PropTypes.func,\n onPaletteAdd: PropTypes.func\n}\n\nColorThemes.displayName = 'ColorThemes'\n\nexport default ColorThemes\n","import { fromJS } from 'immutable'\n\nexport const COLORS_TOTAL = 7\n\nexport const COLOR_METHOD_OPTIONS = [\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: 'rainbow', listText: 'rainbow', value: 'analogous' },\n { text: 'analogous', listText: 'analogous', value: 'analogous_random' }\n // { text: 'triadic', listText: 'triadic (modified)', value: 'triadic' },\n // { text: 'tetradic', listText: 'tetradic (modified)', value: 'tetradic' },\n // { text: 'hue', listText: 'hue', value: 'analogous_hue' },\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","// lib\nimport React, { useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport { RadioButton } from 'primereact/radiobutton'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/completes/styles/CompletesPanel.module.scss'\n\nconst CompletesPanel = ({ model, disabled, onCompletesChange }) => {\n const { showUnfinished } = model\n\n const [unfinished, setUnfinished] = useState(showUnfinished)\n\n useEffect(() => {\n setUnfinished(showUnfinished)\n }, [showUnfinished])\n\n useEffect(() => {\n onCompletesChange(unfinished)\n }, [unfinished, onCompletesChange])\n\n return (\n <div className={style.component}>\n <div className={style['component-title']}>Filter By Completes</div>\n\n <div className={`${style.row} ${style.param} p-fluid${disabled ? '' : ' p-subtheme-contrast'}`}>\n <RadioButton\n inputId=\"show-unfinished-0\"\n name=\"show-unfinished\"\n value=\"0\"\n checked={!unfinished}\n disabled={disabled}\n onChange={disabled ? null : () => setUnfinished(false)}\n />\n <label\n htmlFor=\"show-unfinished-0\"\n className={disabled ? 'p-disabled' : ''}\n onClick={disabled ? null : () => setUnfinished(false)}\n >\n Show only full\n <br />\n completes\n </label>\n </div>\n <div className={`${style.row} ${style.param} p-fluid${disabled ? '' : ' p-subtheme-contrast'}`}>\n <RadioButton\n inputId=\"show-unfinished-1\"\n name=\"show-unfinished\"\n value=\"1\"\n checked={unfinished}\n disabled={disabled}\n onChange={disabled ? null : () => setUnfinished(true)}\n />\n <label\n htmlFor=\"show-unfinished-1\"\n className={disabled ? 'p-disabled' : ''}\n onClick={disabled ? null : () => setUnfinished(true)}\n >\n Show all - partial and\n <br />\n full completes\n </label>\n </div>\n </div>\n )\n}\n\nCompletesPanel.propTypes = {\n model: PropTypes.object,\n disabled: PropTypes.bool,\n onCompletesChange: PropTypes.func\n}\n\nCompletesPanel.displayName = 'CompletesPanel'\n\nexport default CompletesPanel\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 = ({\n root,\n item,\n features,\n windowUID,\n disabled,\n addCustomQuestion,\n onDNDStart,\n onDNDEnd\n}) => {\n const [blocked, setBlocked] = 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 setBlocked(true)\n\n const question = createCustomQuestion()\n addCustomQuestion(question)\n\n timer.current && clearTimeout(timer.current)\n timer.current = setTimeout(() => setBlocked(false), 1000)\n\n return () => timer.current && clearTimeout(timer.current)\n }, [addCustomQuestion, createCustomQuestion])\n\n const dndListItem =\n disabled || 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 {disabled ? (\n <div className={`${style.button} p-disabled`}>\n <span className={style['button-text']}>\n {item.icon ? <i className={`icon-aytmfd-${item.icon}`} /> : null}\n {item.text}\n </span>\n <span className={style['button-lock-icon']}>\n <i className=\"icon-aytmfd-lock\"></i>\n </span>\n </div>\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 <span className={style['button-text']}>\n {item.icon ? <i className={`icon-aytmfd-${item.icon}`} /> : null}\n <span dangerouslySetInnerHTML={{ __html: item.text }}></span>\n </span>\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 <span className={style['button-text']}>\n {item.icon ? <i className={`icon-aytmfd-${item.icon}`} /> : null}\n {item.text}\n </span>\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={blocked ? null : onClick}>\n <span className={style['button-text']}>\n {item.icon ? <i className={`icon-aytmfd-${item.icon}`} /> : null}\n {item.text}\n </span>\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} help={item.help} width=\"300px\" /> : 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 disabled: PropTypes.bool,\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/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, disabled, addCustomQuestion, removePinnedQuestion, onDNDStart, onDNDEnd }) => {\n const [blocked, setBlocked] = 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 setBlocked(true)\n\n const question = createCustomQuestion()\n addCustomQuestion(question)\n\n timer.current && clearTimeout(timer.current)\n timer.current = setTimeout(() => setBlocked(false), 1000)\n\n return () => timer.current && clearTimeout(timer.current)\n }, [addCustomQuestion, createCustomQuestion])\n\n const dndListItem = disabled\n ? null\n : 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 {!disabled && 'function' == typeof removePinnedQuestion ? (\n <span className={style.delete} onClick={() => removePinnedQuestion(item.index)}>\n <i className=\"icon-aytmfd-delete\" />\n </span>\n ) : null}\n <div className={style.button} onClick={blocked || disabled ? null : onClick}>\n <span className={style['button-text']}>\n {item.icon ? <i className={`icon-aytmfd-${item.icon}`} /> : null}\n <span dangerouslySetInnerHTML={{ __html: item.text }}></span>\n </span>\n {disabled ? (\n <span className={style['button-lock-icon']}>\n <i className=\"icon-aytmfd-lock\"></i>\n </span>\n ) : (\n <span className={style['button-handle']}>\n <i className=\"icon-aytmfd-handle\"></i>\n </span>\n )}\n </div>\n </div>\n )\n}\n\nPinnedCustomQuestion.propTypes = {\n item: PropTypes.object,\n disabled: PropTypes.bool,\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, help, width }) => {\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 help: PropTypes.string,\n width: PropTypes.string\n}\n\nSidebarPopup.displayName = 'SidebarPopup'\n\nexport default SidebarPopup\n","export const CODEBOOKS_HELP =\n \"Coding is a valuable way to organize open-ended responses as it allows you to label and categorize insightful comments. This will help you save time uncovering common themes in your survey results. <a target='_blank' href='https://helpcenter.aytm.com/hc/en-us/articles/4406946912013-Overview-of-Tags'>Learn more</a>\"\n\nexport const SKIPPER_ACTIVE_HELP =\n 'Leverage automatic topical analysis to categorize and quantify your unstructured data effortlessly. <b>\"Skipper – autocode\"</b> will read all verbatim responses under the selected question, create a codebook with relevant codes, 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 code responses with your custom codes. 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 codes (if there are any), create new ones and assign them to responses.'\nexport const 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 – autocode\"</b> will read all verbatim responses under the selected question, create a codebook with relevant codes, 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 code responses with your custom codes. 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 codes (if there are any), create new ones and assign them to responses.'\n\nexport const COLOR_OPTIONS_HELP =\n \"Customize your data visualizations with a preset color scheme, or create your own!<br/><a href='https://helpcenter.aytm.com/hc/en-us/articles/360049242691' target='_blank'>Learn more ></a>\"\n\nexport const DATA_LAB_HELP =\n \"<a href='https://helpcenter.aytm.com/hc/en-us/articles/21336589685517-Data-Lab' target='_blank'>Data Lab</a> allows you to step beyond the survey structure as it was fielded.<br/><br/>These function just like survey questions - you'll find them in filters, exports, and statistical analyses. They will be instantly saved locally in your browser as you create them. To save them on the server and share with others, save them to a report or drag and drop them under the Data Lab icon to move between reports.\"\n\nexport const MAPPING_HELP =\n \"Add data to Insights Portal using Concept Mapping or Tracker Mapping. Insights Portal allows you to analyze data from multiple surveys in one place!<br></a><a href='/platform/insights-portal' target='_blank'>Click here to learn more.</a>\"\n\nexport const REPORTS_HELP =\n \"<p>Create and save survey reports with applied filters, virtual questions, view modes, color settings, etc. After a report is created, rename it, save it, or revert it to a previously-saved version.</p><br /><p>Click on the settings wheel to see an overview of the saved view options for that version.</p><br /><p>Generate a link or enter email addresses to <a href='https://helpcenter.aytm.com/hc/en-us/articles/360048761852-Sharing-Statistics-Reports' target='_blank'>share reports with clients or colleagues</a>. Each link contains a secure key and will grant limited access to the report for anyone with whom you share it, even if they don't have a paid aytm account.</p><br /><p>Your original survey data will always be retained in the <strong>Original - as fielded </strong> report; select the report and click “Revert” to remove all filters and restore all questions to the view.</p><br /><p>Learn more about <a href='https://helpcenter.aytm.com/hc/en-us/articles/360048762052-Custom-Reports-Save-Filtered-Views' target='_blank'>Custom Reports</a></p>\"\n\nexport const SPECIFICATIONS_HELP =\n 'All demographic quotas are fulfilled concurrently. Final number of completes per quota may deviate slightly from the requested quota percentages.'\n\nexport const VIEW_OPTIONS_HELP =\n \"In this tab, you can quickly and easily change the way you view your data:<br/><br/>– Update all charts simultaneously to the pie or bar chart you prefer.<br/><br/>– Break down and review all data by a selected demographic trait.<br/><br/>– Show/hide questions and other layers in order to highlight different aspects of your data. <br/><br/><a href='https://helpcenter.aytm.com/hc/en-us/articles/360049242711-View-Options' target='_blank'>Learn more</a>\"\n\nexport const WEIGHTING_HELP =\n \"Data weighting allows you to change how much influence or power certain individuals have within the overall dataset; an individual weight value greater than 1 gives that response more influence while a value less than 1 gives less influence. <a target='_blank' href='https://helpcenter.aytm.com/hc/en-us/articles/4411346112525-Data-Weighting'>Learn more>></a>\"\n","import { stopEvent } from '@aytm/lib/common/func'\n\nexport const toggleCheckbox = (event, callback) => {\n if (13 == event.keyCode) callback()\n}\n\nexport const onInputKeyDown = event => {\n if (13 == event.keyCode) stopEvent(event)\n}\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/hooks/useEventListener'\n\nimport { toggleCheckbox } from '@aytm/app/stats/page/sidebar/components/lib/utils'\nimport { getQuestionId, getQuestionIcon } from '@aytm/app/stats/page/components/lib/utils'\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 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 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-delete']} 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 width=\"300px\"\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 width=\"300px\"\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 width=\"300px\"\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 <div className={style['component-title']}>Banner Tables</div>\n\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-rounded p-button-stat\"\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 DATA_CLEANING_TEXTS = {\n cleaning: 'Data Cleaning',\n centrifuge: 'Data Centrifuge'\n}\n\nconst DataCleaningPanel = ({ mode, total, scores, vectors, disabled, onModeChange, onCheck, onSelect }) => (\n <div className={style.component}>\n <div className={style['component-title']} onClick={onModeChange}>\n {DATA_CLEANING_TEXTS[mode]}\n </div>\n\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\n className={`${style['vector-button']}${disabled ? ' p-disabled' : ''}`}\n onClick={disabled ? null : () => onSelect('all')}\n >\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={disabled || vector.disabled ? false : vector.checked}\n disabled={disabled || vector.disabled}\n onChange={disabled || 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']}${disabled || vector.disabled ? ' p-disabled' : ''}`}\n style={{ borderLeftColor: disabled || vector.disabled ? '#aeaeae' : vector.color }}\n onClick={disabled || 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 disabled: PropTypes.bool,\n onModeChange: PropTypes.func,\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\nimport { DATA_LAB_HELP } from '@aytm/app/stats/page/sidebar/components/lib/helps'\n\n// components\nimport SidebarPopup from '@aytm/app/stats/page/sidebar/components/SidebarPopup'\n\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 disabled,\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 <div className={style['component-title']}>\n Data Lab\n <SidebarPopup id=\"datalab\" root={root} help={DATA_LAB_HELP} width=\"300px\" />\n </div>\n\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 disabled={disabled}\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 && !disabled ? (\n <>\n <div className={`${style.row} ${style['section-title']} p-fluid`}>Pinned questions</div>\n {questions.map(item => (\n <PinnedCustomQuestion\n key={`question-${item.index}`}\n item={item}\n features={features}\n disabled={disabled}\n addCustomQuestion={addCustomQuestion}\n removePinnedQuestion={removePinnedQuestion}\n onDNDStart={onDNDStart}\n onDNDEnd={onDNDEnd}\n />\n ))}\n </>\n ) : null}\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 disabled: PropTypes.bool,\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/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 <span className={style['button-text']}>{BUTTON_TEXTS[item.key]}</span>\n <span className={style['button-handle']}>\n <i className={processing ? 'icon-aytmfd-refresh-v2 aytmfd-spin' : 'icon-aytmfd-export-v2'} />\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 <span className={style['button-text']}>{null !== methodObj ? methodObj.text : ' '}</span>\n <span className={style['button-handle']}>\n <i className={processing ? 'icon-aytmfd-refresh-v2 aytmfd-spin' : 'icon-aytmfd-export-v2'} />\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 id=\"export\"\n root={root}\n help={model.turf.help.replace('{{itemsPerSet}}', question.items_per_set || DEFAULT_ITEMS_PER_SET)}\n width=\"300px\"\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 <span className={style['button-text']}>Select available options</span>\n <span ref={gearRef} className={style['button-handle']}>\n <i className={processing ? 'icon-aytmfd-refresh-v2 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['component-title']}>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['component-title']}>{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 <span className={style['button-text']}>Select a question</span>\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 <span className={style['button-text']}>Select a question</span>\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 onRemoveVariable = 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 onRemoveVariable={onRemoveVariable}\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/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.advanced.disabled, 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 className=\"p-button-lg p-button-rounded p-button-stat\"\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 className=\"p-button-lg p-button-rounded p-button-stat\"\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 isAdmin: PropTypes.bool,\n disabled: 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/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 onRemoveVariable,\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 onRemoveClick = () => {\n if (Object.hasOwn(filter, 'derived')) {\n for (const v of filter.derived) {\n onRemoveVariable(v)\n }\n } else onRemoveVariable(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} className=\"PRAYTMTheme\">\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 : onRemoveClick}>\n <i className={processing ? 'icon-aytmfd-refresh-v2 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 onRemoveVariable: 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\nimport { MAPPING_HELP } from '@aytm/app/stats/page/sidebar/components/lib/helps'\n\n// components\nimport SidebarPopup from '@aytm/app/stats/page/sidebar/components/SidebarPopup'\n\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 disabled,\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 <div className={style['component-title']}>\n Insights Portal Mapping\n <SidebarPopup id=\"mapping\" root={root} help={MAPPING_HELP} width=\"300px\" />\n </div>\n\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-title']} 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 disabled={disabled}\n addCustomQuestion={addCustomQuestion}\n onDNDStart={onDNDStart}\n onDNDEnd={onDNDEnd}\n />\n )\n )}\n {0 < mappings.length && (\n <>\n <div className={`${style.row} ${style['section-title']} 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 disabled={disabled}\n addCustomQuestion={addCustomQuestion}\n onDNDStart={onDNDStart}\n onDNDEnd={onDNDEnd}\n />\n ))}\n </>\n )}\n {0 < questions.length && !disabled ? (\n <>\n <div className={`${style.row} ${style['section-title']} p-fluid`}>Pinned mappings</div>\n {questions.map(item => (\n <PinnedCustomQuestion\n key={`question-${item.index}`}\n item={item}\n features={features}\n disabled={disabled}\n addCustomQuestion={addCustomQuestion}\n removePinnedQuestion={removePinnedQuestion}\n onDNDStart={onDNDStart}\n onDNDEnd={onDNDEnd}\n />\n ))}\n </>\n ) : null}\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 disabled: PropTypes.bool,\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 from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport autobind from 'autobind-decorator'\nimport { Map } from 'immutable'\n\nimport ADND from '@aytm/lib/adnd/ADND'\n\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'\n\nimport { updateListState } from '@aytm/app/stats/page/sidebar/reports/actions'\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 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: [{ path: [...listStatePath, 'reorder'], value: true }],\n listState,\n actions\n })\n }\n\n dndEnd() {\n const { listState, listStatePath, actions } = this.props\n updateListState({\n updates: [{ path: [...listStatePath, 'reorder'], value: null }],\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.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={classNames(style['title-text'], { [style['title-text-overflow']]: overflow })}\n dangerouslySetInnerHTML={{\n __html:\n 'xpert' == model.get('type')\n ? 0 < title.length && 'xpert report' != title.trim().replace(/\\s+/, ' ').toLowerCase()\n ? `Xpert Report: ${title}`\n : 'Xpert Report'\n : title\n }}\n />\n )\n }\n\n render() {\n const { state, model, virtualReportsIds, currentReportId, disabled, isSurveyGuest, isSurveyViewer } = this.props\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={classNames(style.component, style['component-' + model.get('type')], {\n [style['component-new']]: isNew,\n [style['component-deleted']]: isDeleted,\n [style['component-current']]: isCurrent,\n [style['component-active']]: isActive,\n [style['component-warning']]: isChanged,\n [style['component-error']]: isDeleting,\n [style['component-disabled']]: isDisabled\n })}\n >\n {isDisabled ? (\n <span className={style.title}>{this.renderTitle()}</span>\n ) : (\n <>\n {model.get('protected') || isLocked ? null : (\n <div className={style.delete} onClick={this.onReportDelete}>\n <i className=\"icon-aytmfd-delete\" />\n </div>\n )}\n <a href={`#charts/${model.get('id')}`} className={style.title} onClick={this.onReportSelect}>\n {this.renderTitle()}\n </a>\n </>\n )}\n {model.get('hidden') ? (\n <span className={`${style.icon} ${style['icon-hidden']}`}>\n <i className=\"icon-aytmfd-preview\" />\n </span>\n ) : null}\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 classNames from 'classnames'\nimport autobind from 'autobind-decorator'\nimport { Map } from 'immutable'\n\nimport ContextSubscriber from '@aytm/lib/common/components/decorators/ContextSubscriber'\nimport ManagedRenderComponent from '@aytm/lib/common/components/ManagedRenderComponent'\n\nimport { addListItem, revertListItem, updateListItem } from '@aytm/app/stats/page/sidebar/reports/actions'\n\n// components\nimport { Button } from 'primereact/button'\nimport { SplitButton } from 'primereact/splitbutton'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/reports/styles/ReportPopup.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 = 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 = null !== schema && !schema.size && !['xpert', 'xpert_custom'].includes(model.get('type'))\n const isDisabled =\n listState.get('disabled') || listModel.get('items').size >= limits.getIn(['reports', 'max']) || disabled\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 const options = []\n if (isCompact && !isSurveyGuest && !isSurveyViewer) {\n isChanged &&\n options.push({\n label: isEditable\n ? 'Revert'\n : ['original', 'xpert', 'widget', ...virtualReportsIds].includes(model.get('type'))\n ? 'Reset'\n : 'Update',\n command: this.onReportRevert\n })\n isEditable &&\n options.push({\n label: 'Save as...',\n command: this.onReportAdd\n })\n }\n\n return isCompact ? (\n 0 < options.length ? (\n <SplitButton\n className={classNames('p-button-sm p-button-rounded p-button-stat', {\n 'p-button-disabled': isEditable && !isChanged\n })}\n model={options}\n label={isAdding || isSaving ? 'Saving...' : isEditable ? (isChanged ? 'Save' : 'Saved') : 'Save as'}\n dropdownIcon={isAdding || isSaving ? 'pi pi-spin pi-spinner' : <i className=\"icon-aytmfd-arrow-v2\" />}\n appendTo=\"self\"\n disabled={isEmpty || isDisabled || isLocked}\n onClick={\n isEmpty || isDisabled || isLocked\n ? null\n : isEditable\n ? isChanged\n ? this.onReportUpdate\n : null\n : this.onReportAdd\n }\n />\n ) : isSurveyGuest || isSurveyViewer ? (\n <Button\n className=\"p-button-sm p-button-rounded p-button-stat\"\n label={\n isChanged\n ? isEditable\n ? 'Revert'\n : ['original', 'xpert', 'widget', ...virtualReportsIds].includes(model.get('type'))\n ? 'Reset'\n : 'Update'\n : 'Saved'\n }\n loading={isProcessing && 'revert' == state.get('process')}\n disabled={disabled || isProcessing || !isChanged}\n onClick={disabled || isProcessing || !isChanged ? null : this.onReportRevert}\n />\n ) : (\n <Button\n className=\"p-button-sm p-button-rounded p-button-stat\"\n label={isAdding ? 'Saving...' : 'Save as'}\n iconPos=\"right\"\n loading={isAdding}\n disabled={isEmpty || isDisabled || isLocked}\n onClick={isEmpty || isDisabled || isLocked ? null : this.onReportAdd}\n />\n )\n ) : isChanged ? (\n <>\n <div className={`${style['content-row-column']} ${style['content-row-column-buttons']}`}>\n <div className={style['content-row-column']}>\n <Button\n className=\"p-button-stat\"\n label={\n isEditable\n ? 'REVERT'\n : ['original', 'xpert', 'widget', ...virtualReportsIds].includes(model.get('type'))\n ? 'RESET'\n : 'UPDATE'\n }\n loading={isProcessing && 'revert' == state.get('process')}\n disabled={disabled || isProcessing}\n onClick={disabled || isProcessing ? null : this.onReportRevert}\n />\n </div>\n <div className={style['content-row-column']}>\n {isEditable ? (\n <Button\n className=\"p-button-stat\"\n label={isAdding || isSaving ? 'SAVING' : 'SAVE FOR EVERYONE'}\n loading={isAdding || isSaving}\n disabled={disabled || isEmpty || isLocked}\n onClick={disabled || isEmpty || isLocked ? null : this.onReportUpdate}\n />\n ) : (\n <Button\n className=\"p-button-stat\"\n label={isAdding || isSaving ? 'SAVING' : 'SAVE AS A NEW REPORT'}\n loading={isAdding || isSaving}\n disabled={isEmpty || isDisabled || isLocked}\n onClick={isEmpty || isDisabled || isLocked ? null : this.onReportAdd}\n />\n )}\n </div>\n </div>\n </>\n ) : null\n }\n}\n\nexport default ReportControlsWithContext()\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\n\nimport { Map } from 'immutable'\nimport { Transition } from 'react-transition-group'\n\nimport ContextSubscriber from '@aytm/lib/common/components/decorators/ContextSubscriber'\nimport ManagedRenderComponent from '@aytm/lib/common/components/ManagedRenderComponent'\nimport copyToClipboard from '@aytm/lib/common/copy-to-clipboard'\n\nimport {\n updateListState,\n deleteListItem,\n updateItemModel,\n updateItemShareLink\n} from '@aytm/app/stats/page/sidebar/reports/actions'\n\nimport { encodeText, decodeText } from '@aytm/app/stats/lib/helpers'\n\nimport { onInputKeyDown } from '@aytm/app/stats/page/sidebar/components/lib/utils'\n\n// components\nimport { Button } from 'primereact/button'\nimport { InputText } from 'primereact/inputtext'\nimport { InputTextarea } from 'primereact/inputtextarea'\n\nimport Portal from '@aytm/lib/rfd-ui/components/basic/portal'\nimport ClickOutside from '@aytm/lib/rfd-ui/components/basic/click-outside'\n\nimport ReportPopupDescription from '@aytm/app/stats/page/sidebar/reports/components/ReportPopupDescription'\nimport ReportPopupSharing from '@aytm/app/stats/page/sidebar/reports/components/ReportPopupSharing'\n\nimport ReportControlsWithContext from '@aytm/app/stats/page/sidebar/reports/ReportControls'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/reports/styles/ReportPopup.module.scss'\nimport reportStyle from '@aytm/app/stats/page/sidebar/reports/styles/Report.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 root: PropTypes.any.isRequired,\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 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 root: values.root,\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 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 title: '',\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 this.titleTimer = null\n\n this.state.title = props.model.get('title')\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 { root } = this.props\n\n if (root.scrollTop != this.scrollTop) {\n this.closePopup()\n }\n\n this.scrollTop = root.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(event) {\n const { model, modelPath } = this.props\n\n this.titleTimer && clearTimeout(this.titleTimer)\n\n const text = event.target.value\n this.setState({ title: encodeText(text, false) })\n\n const error = !text.length || text.length > TITLE_MAX\n if (!error) {\n this.titleTimer = setTimeout(() => {\n updateItemModel({\n ...this.getModelProps(),\n data: { do: 'title', id: model.get('id'), title: encodeText(text, false) },\n updates: [{ path: [...modelPath, 'title'], value: encodeText(text, false) }]\n })\n }, 1000)\n }\n }\n\n @autobind\n handleReportTitlePastedText(event) {\n event.preventDefault()\n\n const { model, modelPath } = this.props\n\n this.titleTimer && clearTimeout(this.titleTimer)\n\n let text =\n (event.clipboardData || window.clipboardData).getData('Text') || event.clipboardData.getData('text/plain')\n\n text = text.replace(/(\\r\\n|\\n|\\r)/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, TITLE_MAX)\n this.setState({ title: encodeText(text, false) })\n\n const error = !text.length || text.length > TITLE_MAX\n if (!error) {\n this.titleTimer = setTimeout(() => {\n updateItemModel({\n ...this.getModelProps(),\n data: { do: 'title', id: model.get('id'), title: encodeText(text, false) },\n updates: [{ path: [...modelPath, 'title'], value: encodeText(text, false) }]\n })\n }, 1000)\n }\n\n el.setSelectionRange(start + l, start + l)\n el.blur()\n el.focus()\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 { root } = this.props\n\n const buttonRect = this.refButton.getBoundingClientRect()\n const rootRect = root.getBoundingClientRect()\n\n const h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight\n\n let d = 0\n if (rootRect.top > buttonRect.top) {\n d = rootRect.top - buttonRect.top\n root.scrollTop = root.scrollTop - d\n\n this.scrollTop = root.scrollTop\n }\n\n if (43 > buttonRect.top + buttonRect.height / 2 + d)\n root.scrollTop = root.scrollTop - (43 - buttonRect.top - buttonRect.height / 2 - d)\n else if (37 > h - buttonRect.top - buttonRect.height / 2 - d)\n root.scrollTop = root.scrollTop + (37 - (h - buttonRect.top - buttonRect.height / 2 - d))\n\n this.scrollTop = root.scrollTop\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 pm = 20\n const pb = 6\n const bt = 115\n const bb = 11\n\n const m = pm + pb + bt + bb\n\n const d = buttonRect.top + buttonRect.height / 2 + popupRect.height - h - m\n if (d <= 0) {\n this.refPopup.style.top = `${Math.max(0, buttonRect.top + buttonRect.height / 2 - m)}px`\n this.refPopupArrow.style.top = `${Math.min(bt, buttonRect.top + buttonRect.height / 2 - pm - pb - bb)}px`\n } else {\n this.refPopup.style.top = `${h - popupRect.height}px`\n this.refPopupArrow.style.top = `${d + bt}px`\n }\n this.refPopup.style.left = `${buttonRect.left + buttonRect.width + 10}px`\n\n this.updateTimer && clearTimeout(this.updateTimer)\n if (repeat) {\n this.updateTimer = setTimeout(() => {\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 { root } = this.props\n this.scrollTop = root.scrollTop\n\n this.updatePopupPosition()\n\n window.addEventListener('scroll', this.positionHandler)\n window.addEventListener('resize', this.positionHandler)\n\n root.addEventListener('scroll', this.scrollHandler)\n }\n\n @autobind\n offActive() {\n const { root } = this.props\n this.scrollTop = root.scrollTop\n\n window.removeEventListener('scroll', this.positionHandler)\n window.removeEventListener('resize', this.positionHandler)\n\n root.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\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 this.titleTimer && clearTimeout(this.titleTimer)\n this.updateTimer && clearTimeout(this.updateTimer)\n\n window.removeEventListener('scroll', this.positionHandler)\n window.removeEventListener('resize', this.positionHandler)\n\n document.removeEventListener('keydown', this.escHandler, false)\n\n const { root } = this.props\n root.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']} p-fluid`}>\n <div className={`${style['content-row-column']} ${style['content-row-column-title']}`}>DELETE REPORT?</div>\n </div>\n <div className={`${style['content-row']} p-fluid`}>\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']} p-fluid`}>\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']} ${style['content-row-column-buttons']}`}>\n <div className={style['content-row-column']}>\n <Button\n className=\"p-button-stat\"\n label=\"CANCEL\"\n disabled={isProcessing}\n onClick={isProcessing ? null : this.onReportDeleteCancel}\n />\n </div>\n <div className={style['content-row-column']}>\n <Button\n className=\"p-button-stat\"\n label=\"DELETE REPORT\"\n loading={isProcessing && 'delete' == state.get('process')}\n disabled={isProcessing}\n onClick={isProcessing ? null : this.onReportDelete}\n />\n </div>\n </div>\n </div>\n <div className={`${style['content-row']} p-fluid`}>\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']} p-fluid`}>\n <div className={`${style['content-row-column']} ${style['content-row-column-title']}`}>REPORT VERSIONS</div>\n </div>\n <div className={`${style['content-row']} p-fluid`}>\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']} p-fluid`}>\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 <ReportControlsWithContext />\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 { title, 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']} p-fluid`}>\n <div className={`${style['content-row-column']} ${style['content-row-column-label']}`}>REPORT TITLE</div>\n <div className={`${style['content-row-column']} ${style['content-row-column-input']}`}>\n <InputTextarea\n value={decodeText(title, false)}\n maxLength={TITLE_MAX}\n rows={1}\n autoResize\n disabled={isLocked}\n onKeyDown={isLocked ? null : onInputKeyDown}\n onKeyUp={isLocked ? null : this.updatePopupPosition}\n onChange={isLocked ? null : this.onReportTitleChange}\n onPaste={isLocked ? null : this.handleReportTitlePastedText}\n />\n {isLocked ? null : (\n <span className={style['content-row-column-input-count']}>{TITLE_MAX - title.length}</span>\n )}\n </div>\n </div>\n {isDeleting\n ? this.renderDeleteReport()\n : isChanged\n ? this.renderCurrentReportVersion()\n : this.renderSharingOptions()}\n <div className={`${style['content-row']} p-fluid`}>\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\n className={`${style['content-row']}${'link' == focused ? ' ' + style['content-row-focused'] : ''} p-fluid`}\n >\n <div className={`${style['content-row-column']} ${style['content-row-column-icon']}`}>\n <i className=\"icon-aytmfd-link-v2\" />\n </div>\n <div className={`${style['content-row-column']} ${style['content-row-column-input']}`}>\n <InputText\n value={shareLinkExist ? `${model.get('shareLink')}${shareLinkHash}` : ''}\n disabled={true}\n onFocus={event => this.selectValue(event, 'link')}\n onBlur={this.blurMe}\n />\n {isProcessing && 'unshare' == state.get('process') ? (\n <span className={style['content-row-column-input-icon']}>\n <i className=\"icon-aytmfd-refresh-v2 aytmfd-spin\" />\n </span>\n ) : shareLinkExist && !isSurveyGuest && !isSurveyViewer && !isUnremovable ? (\n <span className={style['content-row-column-input-icon']}>\n <i className=\"icon-aytmfd-close-v2\" onClick={() => this.updateShareLink(false)} />\n </span>\n ) : null}\n </div>\n <div className={`${style['content-row-column']} ${style['content-row-column-button']}`}>\n {!(shareLinkExist || isSurveyGuest || isSurveyViewer) && (\n <Button\n className=\"p-button-stat\"\n label=\"GENERATE\"\n loading={isProcessing && 'share' == state.get('process')}\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 className=\"p-button-stat\"\n label={copied ? 'COPIED' : 'COPY'}\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 <>\n <div\n ref={this.saveRef('Button')}\n className={`${reportStyle.popupButton} ${reportStyle['popupButton-' + (opened ? 'opened' : 'closed')]}${\n disabled ? ' ' + reportStyle['popupButton-disabled'] : ''\n }`}\n onClick={hidden && !opened && !disabled ? this.openPopup : null}\n >\n <i className=\"icon-aytmfd-config\" />\n </div>\n {!hidden && !disabled ? (\n <Portal 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={`PRAYTMTheme ${style['transition-panel']} ${\n status ? style['transition-panel-' + status] : ''\n }`}\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-close-v2\" />\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}\n","// lib\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport { List, Map, fromJS } from 'immutable'\n\nimport ADND from '@aytm/lib/adnd/ADND'\n\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'\n\nimport { REPORTS_HELP } from '@aytm/app/stats/page/sidebar/components/lib/helps'\n\nimport { generateUID } from '@aytm/app/stats/lib/helpers'\nimport { updateListState, dropListItem, addListItem } from '@aytm/app/stats/page/sidebar/reports/actions'\n\n// components\nimport { Button } from 'primereact/button'\n\nimport SidebarPopup from '@aytm/app/stats/page/sidebar/components/SidebarPopup'\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 root: PropTypes.any.isRequired,\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 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 root: PropTypes.any.isRequired,\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 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 root: props.root,\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 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 root: PropTypes.any.isRequired,\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 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(this.onDNDBuildPlaceholder.bind(this))\n .onUpdateItemPositions(this.onDNDUpdateItemPositions.bind(this))\n .onEnter(this.onDNDUpdateItemPositions.bind(this))\n .onLeave(this.onDNDUpdateItemPositions.bind(this))\n .onDrop(this.onDNDDrop.bind(this))\n }\n\n onDNDBuildPlaceholder() {\n const placeholderNode = document.createElement('div')\n placeholderNode.className = `${style.placeholder}`\n return placeholderNode\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: [{ path: [...listStatePath, 'reorder'], value: null }],\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 renderItems(items, d) {\n const { state: listState, statePath: listStatePath, modelPath: listModelPath } = this.props\n\n return items.map((model, itemIndex) => {\n const position = itemIndex + d\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={this.dndItemsList}\n />\n )\n })\n }\n\n @autobind\n renderList() {\n const { model, virtualReportsIds, isSurveyGuest } = this.props\n const items = model.get('items')\n const itemSeq = items.valueSeq()\n\n const virtualItemsSeq = itemSeq.filter(r => virtualReportsIds.includes(r.get('type')))\n const virtualItemsSeqLength = virtualItemsSeq.toArray().length\n\n const defaultItemsSeq = itemSeq\n .filter(r => !virtualReportsIds.includes(r.get('type')))\n .filter((_, itemIndex) => 1 > itemIndex)\n\n const otherItemsSeq = itemSeq\n .filter(r => !virtualReportsIds.includes(r.get('type')))\n .filter((_, itemIndex) => 0 < itemIndex)\n const otherItemsSeqLength = otherItemsSeq.toArray().length\n\n return (\n <>\n <div className={`${style.label} ${style['label-default']}`}>Default Report</div>\n {this.renderItems(defaultItemsSeq, 1)}\n {0 < virtualItemsSeqLength ? (\n <>\n <div className={style.label}>Automated Term Report</div>\n {this.renderItems(virtualItemsSeq, 2)}\n </>\n ) : null}\n {0 < otherItemsSeqLength && !isSurveyGuest ? (\n <>\n <div className={style.label}>Other Reports</div>\n {this.renderItems(otherItemsSeq, virtualItemsSeqLength + 2)}\n </>\n ) : null}\n </>\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 { root, model } = this.props\n\n return (\n <div ref={this.saveListRef || this.saveRef('Component')} className={style.component}>\n <div className={style['component-title']}>\n Reports\n <SidebarPopup id=\"reports\" root={root} help={REPORTS_HELP} />\n </div>\n\n {0 < model.get('items').size && (\n <>\n {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 = null !== schema && !schema.size && !isXpert\n const isDisabled =\n true === listState.get('disabled') || listModel.get('items').size >= limits.getIn(['reports', 'max']) || disabled\n const isLocked = ['widget'].includes(model.get('type')) || isAdding || isSurveyGuest || isSurveyViewer\n const isBlankAllowed = !disabledDataLab && !isSurveyGuest && !isSurveyViewer\n\n return isSurveyGuest || isSurveyViewer ? null : (\n <div className={`${style.header} p-fluid`}>\n <div className=\"p-field p-col-12\">\n <Button\n className=\"p-button-lg p-button-rounded p-button-stat\"\n label=\"Save as a new report\"\n icon={<i className=\"icon-aytmfd-report-v2\" />}\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-rounded p-button-stat p-button-secondary\"\n label=\"Create a blank report\"\n icon={<i className=\"icon-aytmfd-report-v2\" />}\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","import { List, Map, fromJS } from 'immutable'\nimport railsPostFetch from '@aytm/lib/common/rails-post-fetch'\nimport { Storage } from '@aytm/lib/storage'\n\nconst ERROR = 'we are having a hard time completing your request.'\n\nconst VIRTUAL_REPORTS_IDS = ['term-report']\n\nexport 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\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: [{ path: [...listStatePath, 'reorder'], value: null }],\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","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 'primereact/checkbox'\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 root: PropTypes.any.isRequired,\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 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 root: values.root,\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 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 && !isSurveyViewer && 'string' == typeof editor && 0 < editor.length && `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 className=\"p-checkbox-sm\"\n value=\"Invisible to client\"\n checked={model.get('hidden')}\n disabled={isLocked}\n onChange={isLocked ? null : this.onHiddenChange}\n />\n <label className={isLocked ? 'p-disabled' : ''} onClick={isLocked ? null : this.onHiddenChange}>\n Invisible to client\n </label>\n <Checkbox\n className=\"p-checkbox-sm\"\n value=\"Unkillable\"\n checked={model.get('protected')}\n disabled={isLocked}\n onChange={isLocked ? null : this.onProtectedChange}\n />\n <label className={isLocked ? 'p-disabled' : ''} onClick={isLocked ? null : this.onProtectedChange}>\n Unkillable\n </label>\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'\n\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\nimport { EMAIL_REGEX } from '@aytm/app/lib/regex'\nimport { updateListState } from '@aytm/app/stats/page/sidebar/reports/actions'\n\n// components\nimport { Button } from 'primereact/button'\nimport { InputText } from 'primereact/inputtext'\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 emails: '',\n emailsReady: true,\n emailsSuccess: false,\n emailsError: false,\n emailsSentCount: 0,\n emailsInvalid: '',\n emailsChanged: false\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(event) {\n const { onChange } = this.props\n 'function' == typeof onChange && onChange()\n\n this.setState({\n emails: event.target.value,\n emailsReady: 0 < event.target.value.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.state.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.state.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 || 0 < this.state.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 { emails, 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 !emails.length || !shareLinkExist || !emailsReady || isProcessing || isSurveyGuest || isSurveyViewer\n\n return (\n <div>\n <div className={`${style['content-row']} p-fluid`}>\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']} p-fluid`}>\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\n className={`${style['content-row']}${'email' == focused ? ' ' + style['content-row-focused'] : ''} p-fluid`}\n >\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']} ${style['content-row-column-input']}`}>\n <InputText\n className={0 < emails.length && emailsChanged && !emailsReady ? 'p-invalid' : ''}\n value={emails}\n disabled={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']} ${style['content-row-column-button']}`}>\n <Button\n className=\"p-button-stat\"\n label=\"SEND\"\n loading={isProcessing && 'send' == state.get('process')}\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 {emailsSuccess || emailsError ? (\n <div className={`${style['content-row']} p-fluid`}>\n {emailsSuccess ? (\n <div\n className={`${style['content-row-column']} ${style['content-row-column-text']} ${style['content-row-column-success']}`}\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 ) : null}\n {emailsError ? (\n <div\n className={`${style['content-row-column']} ${style['content-row-column-text']} ${style['content-row-column-error']}`}\n >\n Something went wrong, please try again later\n </div>\n ) : null}\n </div>\n ) : null}\n </div>\n )\n }\n}\n","// lib\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport SpecificationsPanelSurvey from '@aytm/app/stats/page/sidebar/specifications/components/SpecificationsPanelSurvey'\nimport SpecificationsListSurvey from '@aytm/app/stats/page/sidebar/specifications/components/SpecificationsListSurvey'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/specifications/styles/SpecificationsPanel.module.scss'\n\nconst SpecificationsPanel = ({ root, model, isExternalSurvey }) => (\n <div className={style.component}>\n <div className={style['component-title']}>Survey Specifications</div>\n\n <div className={style.section}>\n <div className={`${style.row} ${style['section-title']}`}>Order details:</div>\n\n <div className={style.row}>\n <span className={`${style.column} ${style['column-label']}`}>Responses:</span>\n <div className={`${style.column} ${style['column-values']}`}>\n {model.totalRespondents}/{model.respondents}\n <span> fulfilled</span>\n </div>\n </div>\n {model.video_respondents ? (\n <div className={style.row}>\n <span className={`${style.column} ${style['column-label']}`}>Video clips:</span>\n <div className={`${style.column} ${style['column-values']}`}>\n {model.totalVideoResponses}/{model.video_respondents}\n <span> fulfilled</span>\n </div>\n </div>\n ) : null}\n <div className={style.row}>\n <span className={`${style.column} ${style['column-label']}`}>Ordered:</span>\n <div className={`${style.column} ${style['column-values']}`}>{model.survey_started_at || 'N/A'}</div>\n </div>\n <div className={style.row}>\n <span className={`${style.column} ${style['column-label']}`}>Completed:</span>\n <div className={`${style.column} ${style['column-values']}`}>\n {model.survey_finished_at ||\n (model.survey_started_at && 'in progress') ||\n (model.has_fake_responses && 'artificial responses') ||\n 'N/A'}\n </div>\n </div>\n <div className={style.row}>\n <span className={`${style.column} ${style['column-label']}`}>Type:</span>\n <div className={`${style.column} ${style['column-values']}`}>{model.research_type || 'None'}</div>\n </div>\n </div>\n\n {0 < model.tags.length ? (\n <div className={style.section}>\n <div className={`${style.row} ${style['section-title']}`}>Prequals:</div>\n\n {model.tags.map(tag => (\n <div key={tag.name} className={style.row}>\n <div className={style.column}>\n {tag.custom ? (\n 'Custom question'\n ) : (\n <>\n {tag.name} {tag.positive ? 'only' : 'excluded'}\n </>\n )}\n </div>\n </div>\n ))}\n </div>\n ) : null}\n\n {isExternalSurvey ? (\n <SpecificationsListSurvey model={model} />\n ) : (\n <SpecificationsPanelSurvey root={root} model={model} />\n )}\n\n <div className={style.section}>\n <div className={style.row}>\n <span className={`${style.column} ${style['column-label']}`}>\n See how survey takers\n <br />\n saw this survey\n </span>\n <div className={`${style.column} ${style['column-values']}`}>\n <a className={style.preview} href={model.survey_preview_path} target=\"_blank\" rel=\"noreferrer\">\n <i className=\"icon-aytmfd-preview\"></i>\n </a>\n </div>\n </div>\n </div>\n </div>\n)\n\nSpecificationsPanel.propTypes = {\n root: PropTypes.any,\n model: PropTypes.object,\n isExternalSurvey: PropTypes.bool\n}\n\nSpecificationsPanel.displayName = 'SpecificationsPanel'\n\nexport default SpecificationsPanel\n","// lib\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/specifications/styles/SpecificationsPanel.module.scss'\n\nconst SpecificationsListSurvey = ({ model }) => (\n <>\n <div className={style.section}>\n <div className={`${style.row} ${style['section-title']}`}>Survey Completion Time:</div>\n\n <div className={style.row}>\n <span className={`${style.column} ${style['column-label']}`}>Shortest:</span>\n <div className={`${style.column} ${style['column-values']}`}>{model.completion_times.shortest}</div>\n </div>\n <div className={style.row}>\n <span className={`${style.column} ${style['column-label']}`}>Median:</span>\n <div className={`${style.column} ${style['column-values']}`}>{model.completion_times.median}</div>\n </div>\n <div className={style.row}>\n <span className={`${style.column} ${style['column-label']}`}>Mean:</span>\n <div className={`${style.column} ${style['column-values']}`}>{model.completion_times.mean}</div>\n </div>\n <div className={style.row}>\n <span className={`${style.column} ${style['column-label']}`}>Longest:</span>\n <div className={`${style.column} ${style['column-values']}`}>{model.completion_times.longest}</div>\n </div>\n </div>\n\n <div className={style.section}>\n <div className={`${style.row} ${style['section-title']}`}>Survey Completion Info:</div>\n\n <div className={style.row}>\n <span className={`${style.column} ${style['column-label']}`}>Survey completes:</span>\n <div className={`${style.column} ${style['column-values']}`}>\n {model.totalRespondents}\n <span> (including EXITS by skip logic)</span>\n </div>\n </div>\n <div className={style.row}>\n <span className={`${style.column} ${style['column-label']}`}>Partial completes:</span>\n <div className={`${style.column} ${style['column-values']}`}>\n {model.totalPartialResponses}\n <span> (in process / abandoned)</span>\n </div>\n </div>\n <div className={style.row}>\n <span className={`${style.column} ${style['column-label']}`}>Failed prequalification:</span>\n <div className={`${style.column} ${style['column-values']}`}>{model.totalFailedPrequalsResponses}</div>\n </div>\n <div className={style.row}>\n <span className={`${style.column} ${style['column-label']}`}>Rejected:</span>\n <div className={`${style.column} ${style['column-values']}`}>{model.totalOeRejectedResponses}</div>\n </div>\n </div>\n </>\n)\n\nSpecificationsListSurvey.propTypes = {\n model: PropTypes.object\n}\n\nSpecificationsListSurvey.displayName = 'SpecificationsListSurvey'\n\nexport default SpecificationsListSurvey\n","// lib\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { SPECIFICATIONS_HELP } from '@aytm/app/stats/page/sidebar/components/lib/helps'\n\n// components\nimport SidebarPopup from '@aytm/app/stats/page/sidebar/components/SidebarPopup'\nimport RowCollapsable from '@aytm/app/stats/page/sidebar/specifications/lib/RowCollapsable'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/specifications/styles/SpecificationsPanel.module.scss'\n\nconst SpecificationsPanelSurvey = ({ root, model }) => {\n const { quotas, quotaType, option_include, option_exclude, custom_quotas } = model\n\n const renderTargetMarket = () => {\n const isNew = Array.isArray(quotas[0].traits)\n\n const country_trait = isNew\n ? quotas[0].traits.find(t => 'country' == t.id && t.filtered)\n : quotas[0].details.find(t => 'country' == t[0].toLowerCase())\n const locale_trait = isNew\n ? quotas[0].traits.find(t => 'locale' == t.id && t.filtered)\n : quotas[0].details.find(t => 'locale' == t[0].toLowerCase())\n\n return (\n <div className={style.section}>\n <div className={`${style.row} ${style['section-title']}`}>Target Market:</div>\n\n {country_trait != undefined ? (\n <div className={style.row}>\n <span className={`${style.column} ${style['column-label']}`}>\n {isNew ? country_trait.label : country_trait[0]}:\n </span>\n <div className={`${style.column} ${style['column-values']}`}>\n {isNew ? country_trait.text : country_trait[1]}\n </div>\n </div>\n ) : null}\n {locale_trait != undefined ? (\n <div className={style.row}>\n <span className={`${style.column} ${style['column-label']}`}>\n {isNew ? locale_trait.label : locale_trait[0]}:\n </span>\n <div className={`${style.column} ${style['column-values']}`}>\n {isNew ? locale_trait.text : locale_trait[1]}\n </div>\n </div>\n ) : null}\n </div>\n )\n }\n\n const renderIncludeOption = () => (\n <div className={style.section}>\n <div className={`${style.row} ${style['section-title']}`}>Follow up:</div>\n\n {option_include.titles.map((title, index) => (\n <>\n <div className={style.row}>\n <span className={`${style.column} ${style['column-label']}`}>Title:</span>\n <div\n className={`${style.column} ${style['column-values']}`}\n dangerouslySetInnerHTML={{ __html: title }}\n ></div>\n </div>\n\n {Object.hasOwn(option_include, 'target_markets') ? (\n <>\n {option_include.target_markets[index] &&\n option_include.target_markets[index].traits &&\n option_include.target_markets[index].traits.order\n ? option_include.target_markets[index].traits.order.map(key =>\n option_include.target_markets[index].traits.values[key] &&\n option_include.target_markets[index].traits.values[key].filtered ? (\n <div key={option_include.target_markets[index].traits.values[key].label} className={style.row}>\n <span className={`${style.column} ${style['column-label']}`}>\n {option_include.target_markets[index].traits.values[key].label}:\n </span>\n <div className={`${style.column} ${style['column-values']}`}>\n {option_include.target_markets[index].traits.values[key].text}\n </div>\n </div>\n ) : null\n )\n : option_include.target_markets[index] && option_include.target_markets[index].traits\n ? option_include.target_markets[index].traits.map(trait =>\n trait.filtered && trait.values && 0 < trait.values.length ? (\n <div key={trait.filtered.label} className={style.row}>\n <span className={`${style.column} ${style['column-label']}`}>{trait.filtered.label}:</span>\n <div className={`${style.column} ${style['column-values']}`}>{trait.filtered.text}</div>\n </div>\n ) : null\n )\n : option_include.target_markets[index] && option_include.target_markets[index].details\n ? option_include.target_markets[index].details.map(trait => (\n <div key={trait[0]} className={style.row}>\n <span className={`${style.column} ${style['column-label']}`}>{trait[0]}:</span>\n <div className={`${style.column} ${style['column-values']}`}>{trait[1]}</div>\n </div>\n ))\n : null}\n\n {option_include.target_markets[index] &&\n option_include.target_markets[index].location &&\n option_include.target_markets[index].location.geo ? (\n <>\n <div className={style.row}>\n <span className={`${style.column} ${style['column-label']}`}>Locations:</span>\n <div className={`${style.column} ${style['column-values']}`}>\n {option_include.target_markets[index].location.geo.text}\n </div>\n </div>\n {option_include.target_markets[index].location.geo.data.map(data => (\n <div key={data.text} className={style.row}>\n <span className={`${style.column} ${style['column-label']}`}>\n {data.text}\n {0 < data.sub.length ? ':' : ''}\n </span>\n <div className={`${style.column} ${style['column-values']}`}>\n {0 < data.sub.length ? data.sub.join(', ') : <> </>}\n </div>\n </div>\n ))}\n </>\n ) : null}\n </>\n ) : null}\n </>\n ))}\n </div>\n )\n\n const renderExcludeOption = () => (\n <div className={style.section}>\n <RowCollapsable label={option_exclude.label} values={option_exclude.text || option_exclude.titles} />\n </div>\n )\n\n const renderQuotaGroup = () => (\n <>\n <div className={`${style.row} ${style['section-title']}`}>\n {'nested' == quotaType ? (\n <> Nested quota groups:</>\n ) : 'balancing' == quotaType ? (\n <>\n Quota balancing:\n <SidebarPopup root={root} help={SPECIFICATIONS_HELP} width=\"300px\" />\n </>\n ) : quotas.some(\n q =>\n Array.isArray(q.traits) &&\n q.traits.some(t => !['country', 'locale'].includes(t.id) && t.filtered && t.values && 0 < t.values.length)\n ) ? (\n <>Organic fielding:</>\n ) : null}\n </div>\n\n {quotas.map((quota, index) => (\n <div key={`quota-${index + 1}`} className={style.section}>\n {'nested' == quotaType ? (\n <div className={`${style.row} ${style['section-sub-title']}`}>{quota.name}</div>\n ) : 'balancing' == quotaType && Object.hasOwn(quota, 'balancing') ? (\n <div className={`${style.row} ${style['section-sub-title']}`}>{quota.balancing.preset}</div>\n ) : null}\n\n {Object.hasOwn(quota, 'balancing')\n ? quota.balancing.traits.map(trait => (\n <RowCollapsable\n key={trait.text}\n label={trait.text}\n values={trait.values.map(v => `${v.text} - ${v.value}`)}\n />\n ))\n : Object.hasOwn(quota, 'traits') && Array.isArray(quota.traits)\n ? quota.traits\n .filter(trait => !['country', 'locale'].includes(trait.id))\n .map(trait =>\n trait.filtered && trait.values && 0 < trait.values.length ? (\n ['nested', 'organic'].includes(quotaType) && 'location' == trait.id ? (\n <RowCollapsable\n key={trait.text.split(':')[0]}\n label={trait.text.split(':')[0]}\n values={trait.text.split(':')[1]}\n />\n ) : (\n <RowCollapsable key={trait.label} label={trait.label} values={trait.text} />\n )\n ) : null\n )\n : Object.hasOwn(quota, 'details') && Array.isArray(quota.details)\n ? quota.details\n .filter(trait => !['country', 'locale'].includes(trait[0].toLowerCase()))\n .map(trait => <RowCollapsable key={trait[0]} label={trait[0]} values={trait[1]} />)\n : null}\n </div>\n ))}\n </>\n )\n\n return (\n <>\n {0 < quotas.length ? (\n <>\n {renderTargetMarket()}\n {0 < Object.keys(option_include).length ? renderIncludeOption() : renderQuotaGroup()}\n {0 < Object.keys(option_exclude).length ? renderExcludeOption() : null}\n </>\n ) : null}\n\n {0 < custom_quotas.length ? (\n <div className={style.section}>\n <div className={`${style.row} ${style['section-title']}`}>Custom Quota:</div>\n\n {custom_quotas.map(custom_quota => (\n <div key={custom_quota} className={style.row}>\n <div className={style.column}>{custom_quota}</div>\n </div>\n ))}\n </div>\n ) : null}\n </>\n )\n}\n\nSpecificationsPanelSurvey.propTypes = {\n root: PropTypes.any,\n model: PropTypes.object\n}\n\nSpecificationsPanelSurvey.displayName = 'SpecificationsPanelSurvey'\n\nexport default SpecificationsPanelSurvey\n","// lib\nimport React, { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Transition } from 'react-transition-group'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/specifications/styles/SpecificationsPanel.module.scss'\n\nconst RowCollapsable = ({ label, values }) => {\n const [collapsed, setCollapsed] = useState(\n (Array.isArray(values) && 10 < values.length) || (!Array.isArray(values) && 200 < values.length)\n )\n\n return (\n <div className={style.row}>\n <span className={`${style.column} ${style['column-label']}`}>{label}:</span>\n {(Array.isArray(values) && 10 < values.length) || (!Array.isArray(values) && 200 < values.length) ? (\n <Transition in={!collapsed} timeout={500}>\n {status => (\n <>\n <div\n className={`${style.column} ${style['column-values']} ${style['transition-panel']}${\n status ? ' ' + style['transition-panel-' + status] : ''\n }`}\n dangerouslySetInnerHTML={{ __html: Array.isArray(values) ? values.join('<br/>') : values }}\n ></div>\n <span className={style['column-toggle']} onClick={() => setCollapsed(!collapsed)}>\n {collapsed ? '+' : '-'}\n </span>\n </>\n )}\n </Transition>\n ) : (\n <div\n className={`${style.column} ${style['column-values']}`}\n dangerouslySetInnerHTML={{ __html: Array.isArray(values) ? values.join('<br/>') : values }}\n ></div>\n )}\n </div>\n )\n}\n\nRowCollapsable.propTypes = {\n label: PropTypes.string,\n values: PropTypes.any\n}\n\nRowCollapsable.displayName = 'RowCollapsable'\n\nexport default RowCollapsable\n","// lib\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { VIEW_OPTIONS_HELP } from '@aytm/app/stats/page/sidebar/components/lib/helps'\n\n// components\nimport SidebarPopup from '@aytm/app/stats/page/sidebar/components/SidebarPopup'\n\nimport ChartModes from '@aytm/app/stats/page/sidebar/view-options/components/ChartModes'\nimport Traits from '@aytm/app/stats/page/sidebar/view-options/components/Traits'\nimport Params from '@aytm/app/stats/page/sidebar/view-options/components/Params'\nimport Sentiments from '@aytm/app/stats/page/sidebar/view-options/components/Sentiments'\n\nimport ArtificialResponses from '@aytm/app/stats/page/sidebar/view-options/components/ArtificialResponses'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/view-options/styles/ViewOptionsPanel.module.scss'\n\nconst ViewOptionsPanel = ({\n root,\n model,\n data,\n features,\n generatingArtificialResponses,\n disabled,\n onChartModeChange,\n onTraitChange,\n onParamsChange,\n onToggleQuestions,\n onSentimentsChange,\n onGenerateArtificialResponses\n}) => (\n <div className={style.component}>\n <div className={style['component-title']}>\n View Options\n <SidebarPopup id=\"view\" root={root} help={VIEW_OPTIONS_HELP} width=\"300px\" />\n </div>\n\n <ChartModes model={model} features={features} disabled={disabled} onChartModeChange={onChartModeChange} />\n <Traits model={model} data={data} features={features} disabled={disabled} onTraitChange={onTraitChange} />\n <Params\n model={model}\n features={features}\n disabled={disabled}\n onParamsChange={onParamsChange}\n onToggleQuestions={onToggleQuestions}\n />\n <Sentiments\n model={model}\n data={data}\n features={features}\n disabled={disabled}\n onSentimentsChange={onSentimentsChange}\n />\n\n {features.fake_responses.hidden ? null : (\n <ArtificialResponses\n data={data}\n generatingArtificialResponses={generatingArtificialResponses}\n disabled={disabled}\n onGenerateArtificialResponses={onGenerateArtificialResponses}\n />\n )}\n </div>\n)\n\nViewOptionsPanel.propTypes = {\n root: PropTypes.any,\n model: PropTypes.object,\n data: PropTypes.object,\n features: PropTypes.object,\n generatingArtificialResponses: PropTypes.bool,\n disabled: PropTypes.bool,\n onChartModeChange: PropTypes.func,\n onTraitChange: PropTypes.func,\n onParamsChange: PropTypes.func,\n onSentimentsChange: PropTypes.func,\n onToggleQuestions: PropTypes.func,\n onGenerateArtificialResponses: PropTypes.func\n}\n\nViewOptionsPanel.displayName = 'ViewOptionsPanel'\n\nexport default ViewOptionsPanel\n","// lib\nimport React, { useState, useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport { Button } from 'primereact/button'\nimport { Slider } from 'primereact/slider'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/view-options/styles/ViewOptionsPanel.module.scss'\n\nconst ArtificialResponses = ({ data, generatingArtificialResponses, disabled, onGenerateArtificialResponses }) => {\n const { questions } = data\n\n const [artificialResponsesIndex, setArtificialResponsesIndex] = useState(0)\n\n const artificialResponsesOptions = useMemo(() => {\n const min = (questions.some(q => [].includes(q.type)) && 400) || 100\n const max = 5000\n\n return Array.from({ length: max - min + 1 }, (_, i) => i + min).reduce((acc, cur) => {\n if ((800 > cur && 0 == cur % 10) || (800 <= cur && 3100 > cur && 0 == cur % 50) || (3000 < cur && 0 == cur % 100))\n acc.push([cur, String(cur)])\n return acc\n }, [])\n }, [questions])\n\n return (\n <>\n <div className={style['component-title']}>Artificial Responses</div>\n\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={artificialResponsesOptions.length - 1}\n value={artificialResponsesIndex}\n labelTemplate={value => artificialResponsesOptions[value][1]}\n disabled={generatingArtificialResponses || disabled}\n onChange={\n generatingArtificialResponses || disabled ? null : event => setArtificialResponsesIndex(event.value)\n }\n />\n </div>\n </div>\n <div className={`${style.row} p-fluid`}>\n <Button\n className=\"p-button-lg p-button-rounded p-button-stat\"\n label={generatingArtificialResponses ? 'Generating responses' : 'Generate responses'}\n loading={generatingArtificialResponses}\n disabled={generatingArtificialResponses || disabled}\n onClick={\n generatingArtificialResponses || disabled\n ? null\n : () => onGenerateArtificialResponses(artificialResponsesOptions[artificialResponsesIndex][0])\n }\n />\n </div>\n </>\n )\n}\n\nArtificialResponses.propTypes = {\n data: PropTypes.object,\n generatingArtificialResponses: PropTypes.bool,\n disabled: PropTypes.bool,\n onGenerateArtificialResponses: PropTypes.func\n}\n\nArtificialResponses.displayName = 'ArtificialResponses'\n\nexport default ArtificialResponses\n","// lib\nimport React, { useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/view-options/styles/ViewOptionsPanel.module.scss'\n\nconst CHART_MODES = {\n pie: { icon: 'pie-chart-v2', text: 'Pie Chart' },\n respondents: { icon: 'columns-chart-v2', text: 'Column Chart' },\n percents: { icon: 'stacked-columns-chart-v2', text: 'Percent Column Chart' },\n brespondents: { icon: 'bars-chart-v2', text: 'Bar Chart' },\n bpercents: { icon: 'stacked-bars-chart-v2', text: 'Percent Bar Chart' },\n map: { icon: 'map-view', text: 'Map View' },\n none: { icon: 'no-charts', text: 'No Charts' }\n}\n\nlet messageTimer = null\n\nconst ChartModes = ({ model, features, onChartModeChange }) => {\n const { chartMode } = model\n\n const [chartModesMessage, setChartModesMessage] = useState(null)\n\n const onMouseEnter = mode => {\n messageTimer && clearTimeout(messageTimer)\n setChartModesMessage(CHART_MODES[mode].text)\n }\n const onMouseLeave = () => {\n messageTimer && clearTimeout(messageTimer)\n messageTimer = setTimeout(() => setChartModesMessage(null), 100)\n }\n\n useEffect(() => () => messageTimer && clearTimeout(messageTimer), [])\n\n const renderChartMode = mode => (\n <span\n key={`chart-mode-${mode}`}\n className={classNames(style['chart-mode'], style[`chart-mode-${mode}`], {\n [style['chart-mode-selected']]: mode == chartMode\n })}\n onMouseEnter={features.view_options.disabled ? null : () => onMouseEnter(mode)}\n onMouseLeave={features.view_options.disabled ? null : onMouseLeave}\n onClick={features.view_options.disabled ? null : () => onChartModeChange(mode)}\n >\n <i className={`icon-aytmfd-${CHART_MODES[mode].icon}`}></i>\n </span>\n )\n\n return (\n <>\n <div className={`${style.row} ${style['section-title']}`}>Chart Type</div>\n <div\n className={classNames(`${style.row} ${style['chart-modes']}`, {\n 'p-disabled': features.view_options.disabled\n })}\n >\n {Object.keys(CHART_MODES).map(mode => renderChartMode(mode))}\n </div>\n <div className={`${style.row} ${style.note}`}>\n {null === chartModesMessage ? (\n <>Select a chart icon to change the chart type</>\n ) : (\n <>\n Switch to <b>{chartModesMessage}</b>\n </>\n )}\n </div>\n </>\n )\n}\n\nChartModes.propTypes = {\n model: PropTypes.object,\n features: PropTypes.object,\n disabled: PropTypes.bool,\n onChartModeChange: PropTypes.func\n}\n\nChartModes.displayName = 'ChartModes'\n\nexport default ChartModes\n","// lib\nimport React, { useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport useNonInitialEffect from '@aytm/app/stats/hooks/useNonInitialEffect'\n\nimport { toggleCheckbox } from '@aytm/app/stats/page/sidebar/components/lib/utils'\n\n// components\nimport { Checkbox } from 'primereact/checkbox'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/view-options/styles/ViewOptionsPanel.module.scss'\n\nconst Params = ({ model, features, onParamsChange, onToggleQuestions }) => {\n const { chartMode, params } = model\n\n const [chartLegendMode, setChartLegendMode] = useState('long' == params.chartLegendMode || false)\n const [rType, setRType] = useState('responses' == params.rType || false)\n const [qLogicVisibility, setQLogicVisibility] = useState('hide' == params.qLogicVisibility || false)\n const [qAliasesVisibility, setQAliasesVisibility] = useState('hide' == params.qAliasesVisibility || false)\n const [zoomLevel, setZoomLevel] = useState('max' == params.zoomLevel || false)\n\n useEffect(() => {\n setChartLegendMode('long' == params.chartLegendMode || false)\n }, [params.chartLegendMode])\n useEffect(() => {\n setRType('responses' == params.rType || false)\n }, [params.rType])\n useEffect(() => {\n setQLogicVisibility('hide' == params.qLogicVisibility || false)\n }, [params.qLogicVisibility])\n useEffect(() => {\n setQAliasesVisibility('hide' == params.qAliasesVisibility || false)\n }, [params.qAliasesVisibility])\n useEffect(() => {\n setZoomLevel('max' == params.zoomLevel || false)\n }, [params.zoomLevel])\n\n useNonInitialEffect(() => setQAliasesVisibility(qLogicVisibility), [qLogicVisibility])\n\n useNonInitialEffect(\n () =>\n onParamsChange({\n chartLegendMode: (chartLegendMode && 'long') || 'short',\n rType: (rType && 'responses') || 'cases',\n qLogicVisibility: (qLogicVisibility && 'hide') || 'show',\n qAliasesVisibility: (qAliasesVisibility && 'hide') || 'show',\n zoomLevel: (zoomLevel && 'max') || 'min'\n }),\n [chartLegendMode, rType, qLogicVisibility, qAliasesVisibility, zoomLevel, onParamsChange]\n )\n\n return (\n <>\n <div className={`${style.row} ${style['section-title']}`}>Other view options</div>\n <div\n className={classNames(`${style.row} ${style.param}`, {\n [style['param-disabled']]: features.view_options.disabled\n })}\n >\n <Checkbox\n value=\"legend-mode\"\n checked={chartLegendMode}\n disabled={features.view_options.disabled}\n onChange={features.view_options.disabled ? null : () => setChartLegendMode(!chartLegendMode)}\n onKeyDown={\n features.view_options.disabled\n ? null\n : event => toggleCheckbox(event, () => setChartLegendMode(!chartLegendMode))\n }\n />\n <label onClick={features.view_options.disabled ? null : () => setChartLegendMode(!chartLegendMode)}>\n Use Answers as labels instead of {'pie' == chartMode ? '%' : '\"A#\"'}\n </label>\n </div>\n <div\n className={classNames(`${style.row} ${style.param}`, {\n [style['param-disabled']]: features.view_options.disabled\n })}\n >\n <Checkbox\n value=\"rtype\"\n checked={rType}\n disabled={features.view_options.disabled}\n onChange={features.view_options.disabled ? null : () => setRType(!rType)}\n onKeyDown={features.view_options.disabled ? null : event => toggleCheckbox(event, () => setRType(!rType))}\n />\n <label onClick={features.view_options.disabled ? null : () => setRType(!rType)}>\n Count responses in multiple choice Qs\n </label>\n </div>\n {features.qlogic_visibility.hidden ? null : (\n <div\n className={classNames(`${style.row} ${style.param}`, {\n [style['param-disabled']]: features.view_options.disabled\n })}\n >\n <Checkbox\n value=\"qlogic-visibility\"\n checked={qLogicVisibility}\n disabled={features.view_options.disabled}\n onChange={features.view_options.disabled ? null : () => setQLogicVisibility(!qLogicVisibility)}\n onKeyDown={\n features.view_options.disabled\n ? null\n : event => toggleCheckbox(event, () => setQLogicVisibility(!qLogicVisibility))\n }\n />\n <label onClick={features.view_options.disabled ? null : () => setQLogicVisibility(!qLogicVisibility)}>\n Hide aytm Logic\n </label>\n </div>\n )}\n {features.qaliases_visibility.hidden || !qLogicVisibility ? null : (\n <div\n className={classNames(`${style.row} ${style.param}`, {\n [style['param-disabled']]: features.view_options.disabled\n })}\n >\n <Checkbox\n value=\"qaliases-visibility\"\n checked={qAliasesVisibility}\n disabled={features.view_options.disabled}\n onChange={features.view_options.disabled ? null : () => setQAliasesVisibility(!qAliasesVisibility)}\n onKeyDown={\n features.view_options.disabled\n ? null\n : event => toggleCheckbox(event, () => setQAliasesVisibility(!qAliasesVisibility))\n }\n />\n <label onClick={features.view_options.disabled ? null : () => setQAliasesVisibility(!qAliasesVisibility)}>\n Hide @aliases\n </label>\n </div>\n )}\n <div\n className={classNames(`${style.row} ${style.param}`, {\n [style['param-disabled']]: features.zoom_level.disabled\n })}\n >\n <Checkbox\n value=\"zoom-charts\"\n checked={zoomLevel}\n disabled={features.zoom_level.disabled}\n onChange={features.zoom_level.disabled ? null : () => setZoomLevel(!zoomLevel)}\n onKeyDown={\n features.zoom_level.disabled ? null : event => toggleCheckbox(event, () => setZoomLevel(!zoomLevel))\n }\n />\n <label onClick={features.zoom_level.disabled ? null : () => setZoomLevel(!zoomLevel)}>\n Zoom out all charts to full scale\n </label>\n </div>\n <div\n className={classNames(`${style.row} ${style.param}`, {\n [style['param-disabled']]: features.toggling.disabled\n })}\n >\n <Checkbox\n value=\"qcollapse\"\n checked={params.qCollapsed}\n disabled={features.toggling.disabled}\n onChange={features.toggling.disabled ? null : () => onToggleQuestions(!params.qCollapsed)}\n onKeyDown={\n features.toggling.disabled\n ? null\n : event => toggleCheckbox(event, () => onToggleQuestions(!params.qCollapsed))\n }\n />\n <label onClick={features.toggling.disabled ? null : () => onToggleQuestions(!params.qCollapsed)}>\n Collapse all questions\n </label>\n </div>\n </>\n )\n}\n\nParams.propTypes = {\n model: PropTypes.object,\n features: PropTypes.object,\n disabled: PropTypes.bool,\n onParamsChange: PropTypes.func,\n onToggleQuestions: PropTypes.func\n}\n\nParams.displayName = 'Params'\n\nexport default Params\n","// lib\nimport React, { useState, useMemo, useCallback } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { questionPositionToId } from '@aytm/app/stats/page/comments/lib/utils'\n\nimport { hasComments } from '@aytm/app/stats/page/components/lib/utils'\nimport { itemTemplate } from '@aytm/app/stats/page/components/lib/templates'\n\n// components\nimport { MultiSelect } from 'primereact/multiselect'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/view-options/styles/ViewOptionsPanel.module.scss'\n\nconst Sentiments = ({ model, data, features, onSentimentsChange }) => {\n const { sentiments } = model\n const { questions } = data\n\n const [sentimentsValue, setSentimentsValue] = useState([])\n\n const filteredQuestions = useMemo(\n () =>\n questions.filter(\n q =>\n ['oe', 'oex', 'va', 'cn'].includes(q.type) ||\n (['cx', 'scx'].includes(q.type) && hasComments(q.answerVariants)) ||\n (['rb', 'cb'].includes(q.type) && hasComments(q.answerVariants)) ||\n ('mp' == q.type && hasComments(q.batches[0].answerVariants)) ||\n ('hm' == q.type && hasComments(q.batches))\n ),\n [questions]\n )\n\n const sentimentsQuestions = useMemo(\n () =>\n filteredQuestions.reduce((acc, cur) => {\n const res = {}\n const key = (0 < cur.position && 'q' + cur.position) || cur.id\n\n if (0 < cur.batches?.length) {\n for (const b of cur.batches) {\n const _res = {}\n const _key = `${key}.b${b.position}`\n\n for (const av of b.answerVariants) {\n if (!av.comments) continue\n\n _res[`${_key}.a${av.position}`] = {}\n }\n if (0 < Object.keys(_res).length) res[_key] = _res\n }\n if (0 < Object.keys(res).length) acc[key] = res\n } else if (0 < cur.answerVariants?.length && !['va'].includes(cur.type)) {\n const checkAnswerVariants = (k, answerVariants) => {\n let amount = 0\n\n for (const av of answerVariants) {\n if (null === av) continue\n\n const _key = `${k}.a${av.position}`\n const _amount = checkAnswerVariants(_key, av.answerVariants || [])\n\n if ('oex' == cur.type || av.comments) {\n res[_key] = {}\n amount++\n }\n amount += _amount\n }\n\n return amount\n }\n if (0 < checkAnswerVariants(key, cur.answerVariants)) acc[key] = res\n } else acc[key] = {}\n\n return acc\n }, {}),\n [filteredQuestions]\n )\n\n const sentimentsOptions = useMemo(() => {\n let value = []\n\n const options = filteredQuestions.reduce((acc, cur) => {\n const id = (0 < cur.position && questionPositionToId(cur.position, { questions: filteredQuestions })) || cur.id\n const key = (0 < cur.position && 'q' + cur.position) || cur.id\n\n if (0 < cur.batches?.length) {\n let _acc = []\n let _value = []\n\n let count = 0\n\n for (const b of cur.batches) {\n const __acc = []\n const __value = []\n\n for (const av of b.answerVariants) {\n if (!av.comments) continue\n\n __acc.push({\n key: `${key}.b${b.position}.a${av.position}`,\n text: `<b>${id.toUpperCase()}SQ${b.position}A${av.position}:</b> ${av.text}`,\n lvl: 2\n })\n\n if (\n sentiments[`${key}.b${b.position}.a${av.position}`] != false &&\n sentiments[`${key}.b${b.position}`] != false &&\n sentiments[key] != false\n ) {\n __value.push(`${key}.b${b.position}.a${av.position}`)\n }\n }\n if (0 < __acc.length) {\n _acc.push({\n key: `${key}.b${b.position}`,\n text: `<b>${id.toUpperCase()}SQ${b.position}:</b> ${b.text}`,\n lvl: 1,\n disabled: 1 >= __acc.length\n })\n\n if (\n sentiments[`${key}.b${b.position}`] != false &&\n sentiments[key] != false &&\n 1 < __acc.length &&\n 0 < __value.length\n ) {\n _value.push(`${key}.b${b.position}`)\n }\n\n if (\n sentiments[`${key}.b${b.position}`] != false &&\n sentiments[key] != false &&\n (1 >= __acc.length || 0 < __value.length)\n ) {\n _acc = _acc.concat(__acc)\n _value = _value.concat(__value)\n }\n\n if (1 < __acc.length) count++\n }\n }\n if (0 < _acc.length) {\n acc.push({\n key,\n text: `<b>${id.toUpperCase()}:</b> ${cur.text}`,\n lvl: 0,\n disabled: 1 >= count\n })\n\n if (sentiments[key] != false && 1 < count && 0 < _value.length) {\n value.push(key)\n }\n\n if (sentiments[key] != false && (1 >= count || 0 < _value.length)) {\n value = value.concat(_value)\n return acc.concat(_acc)\n }\n }\n } else if (0 < cur.answerVariants?.length && !['va'].includes(cur.type)) {\n const _acc = []\n const _value = []\n\n if (['cx', 'scx'].includes(cur.type)) {\n const keys = Object.keys(sentimentsQuestions[key])\n const usedKeys = []\n\n const checkAnswerVariants = (_id, _key, answerVariants, p, i = 0) => {\n if (!Array.isArray(answerVariants) || !p[i]) return\n\n const av = answerVariants[Number(p[i].slice(1)) - 1]\n if (null === av) return\n\n const __id = `${_id}${p[i]}`\n const __key = `${_key}.${p[i]}`\n\n if (0 > usedKeys.indexOf(__key)) {\n _acc.push({\n key: __key,\n text: `<b>${__id.toUpperCase()}:</b> ${av.text}`,\n lvl: Math.min(i + 1, 2),\n disabled: !av.comments\n })\n\n if (sentiments[__key] != false && sentiments[key] != false && av.comments) {\n _value.push(__key)\n }\n\n usedKeys.push(__key)\n }\n\n checkAnswerVariants(__id, __key, av.answerVariants, p, i + 1)\n }\n\n for (const k of keys) {\n const p = k.split('.').slice(1)\n\n checkAnswerVariants(id, key, cur.answerVariants, p)\n }\n if (0 < _acc.length) {\n acc.push({\n key,\n text: `<b>${id.toUpperCase()}:</b> ${cur.text}`,\n lvl: 0,\n disabled: 1 >= keys.length\n })\n\n if (sentiments[key] != false && 1 < keys.length && 0 < _value.length) {\n value.push(key)\n }\n\n if (sentiments[key] != false && (1 >= keys.length || 0 < _value.length)) {\n value = value.concat(_value)\n return acc.concat(_acc)\n }\n }\n } else {\n for (const av of cur.answerVariants) {\n if ('oex' != cur.type && !av.comments) continue\n\n _acc.push({\n key: `${key}.a${av.position}`,\n text: `<b>${id.toUpperCase()}A${av.position}:</b> ${av.text}`,\n lvl: 1\n })\n\n if (sentiments[`${key}.a${av.position}`] != false && sentiments[key] != false) {\n _value.push(`${key}.a${av.position}`)\n }\n }\n if (0 < _acc.length) {\n acc.push({\n key,\n text: `<b>${id.toUpperCase()}:</b> ${cur.text}`,\n lvl: 0,\n disabled: 1 >= _acc.length\n })\n\n if (sentiments[key] != false && 1 < _acc.length && 0 < _value.length) {\n value.push(key)\n }\n\n if (sentiments[key] != false && (1 >= _acc.length || 0 < _value.length)) {\n value = value.concat(_value)\n return acc.concat(_acc)\n }\n }\n }\n } else {\n acc.push({ key, text: `<b>${id.toUpperCase()}:</b> ${cur.text}`, lvl: 0 })\n\n if (sentiments[key] != false) value.push(key)\n }\n return acc\n }, [])\n\n setSentimentsValue(value)\n\n return options\n }, [sentiments, filteredQuestions, sentimentsQuestions])\n\n const onChange = useCallback(\n event => {\n const values = sentimentsOptions\n .filter(option => !event.value.includes(option.key) && !option.disabled)\n .map(option => option.key)\n .reduceRight((acc, cur) => {\n const path = cur.split('.')\n const question = filteredQuestions.find(q => `q${q.position}` == path[0])\n\n let keys = []\n if (['cx', 'scx'].includes(question.type)) {\n keys = `q${question.position}` == cur ? Object.keys(sentimentsQuestions[cur]) : [cur]\n } else {\n const obj = path.reduce((_acc, _cur, i) => _acc[path.slice(0, i + 1).join('.')], sentimentsQuestions)\n\n const findKeys = (_key, _obj = {}) => {\n let _keys = []\n if (0 < Object.keys(_obj).length) {\n for (const [k, attr] of Object.entries(_obj)) {\n _keys = _keys.concat(findKeys(k, attr))\n }\n } else _keys.push(_key)\n return _keys\n }\n keys = (obj && 0 < Object.keys(obj).length && findKeys(cur, obj)) || [cur]\n }\n\n const value = event.value.includes(cur)\n for (const key of keys) {\n if ([undefined, true].includes(acc[key])) acc[key] = value\n }\n\n return acc\n }, {})\n\n onSentimentsChange(values)\n },\n [filteredQuestions, sentimentsQuestions, sentimentsOptions, onSentimentsChange]\n )\n\n return (\n <div className={`${style.row} ${style['row-sentiments']} p-fluid`}>\n <div className=\"p-field p-col-12\">\n <MultiSelect\n className=\"p-multiselect-reversed\"\n placeholder=\"SENTIMENT ANALYSIS ON/OFF\"\n value={sentimentsValue}\n options={sentimentsOptions}\n optionValue=\"key\"\n optionLabel=\"text\"\n itemTemplate={itemTemplate}\n buttonLabelTemplate={() => 'SENTIMENT ANALYSIS ON/OFF'}\n showSelectAll={false}\n fixedDropdownDir=\"bottom\"\n disabled={features.oe_sentiments_management.disabled}\n onChange={features.oe_sentiments_management.disabled ? null : onChange}\n />\n </div>\n </div>\n )\n}\n\nSentiments.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n features: PropTypes.object,\n disabled: PropTypes.bool,\n onSentimentsChange: PropTypes.func\n}\n\nSentiments.displayName = 'Sentiments'\n\nexport default Sentiments\n","// lib\nimport React, { useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { itemTemplate, valueTemplate } from '@aytm/app/stats/page/components/lib/templates'\n\n// components\nimport { Dropdown } from 'primereact/dropdown'\n\n// styles\nimport style from '@aytm/app/stats/page/sidebar/view-options/styles/ViewOptionsPanel.module.scss'\n\nconst Traits = ({ model, data, features, onTraitChange }) => {\n const { trait } = model\n const { traits, variables, pipingVariables, customVariables, virtual } = data\n\n const traitsOptions = useMemo(() => {\n let options = []\n\n options = options.concat(\n traits.map(t => {\n return { key: ('age' == t.id && 'age_range') || t.id, text: t.title }\n })\n )\n\n options = options.concat(\n Object.keys(virtual)\n .filter(\n id =>\n 'dlv' == virtual[id].type &&\n 'rb' == virtual[id].variant &&\n 1 < virtual[id].answerVariants?.length &&\n 21 > virtual[id].answerVariants?.length\n )\n .map(id => {\n return { key: id, text: id.toUpperCase() }\n })\n )\n\n options = options.concat(\n variables.map(key => {\n return { key, text: key }\n })\n )\n options = options.concat(\n pipingVariables.map(key => {\n return { key, text: key }\n })\n )\n options = options.concat(\n customVariables.map(key => {\n return { key, text: key }\n })\n )\n\n return options\n }, [traits, variables, pipingVariables, customVariables, virtual])\n\n return (\n <>\n <div className={`${style.row} ${style['section-title']}`}>Split all charts by a demographic</div>\n <div className={`${style.row} p-fluid`}>\n {trait ? (\n <span className={style.delete} onClick={features.view_options.disabled ? null : () => onTraitChange(null)}>\n <i className=\"icon-aytmfd-delete\"></i>\n </span>\n ) : null}\n <div className=\"p-field p-col-12\">\n <Dropdown\n placeholder=\"Select...\"\n value={trait}\n options={traitsOptions}\n optionValue=\"key\"\n optionLabel=\"text\"\n optionDisabled=\"disabled\"\n itemTemplate={itemTemplate}\n valueTemplate={valueTemplate}\n fixedDropdownDir=\"bottom\"\n disabled={features.view_options.disabled}\n onChange={features.view_options.disabled ? null : event => onTraitChange(event.value)}\n />\n </div>\n </div>\n </>\n )\n}\n\nTraits.propTypes = {\n model: PropTypes.object,\n data: PropTypes.object,\n features: PropTypes.object,\n disabled: PropTypes.bool,\n onTraitChange: PropTypes.func\n}\n\nTraits.displayName = 'Traits'\n\nexport default Traits\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.delete} 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\nimport { WEIGHTING_HELP } from '@aytm/app/stats/page/sidebar/components/lib/helps'\n\n// components\nimport { Button } from 'primereact/button'\nimport { Dropdown } from 'primereact/dropdown'\nimport { InputSwitch } from 'primereact/inputswitch'\n\nimport SidebarPopup from '@aytm/app/stats/page/sidebar/components/SidebarPopup'\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 = ({ root, 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-stat 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 className=\"p-button-stat\"\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 <div className={style['component-title']}>\n Weighting\n <SidebarPopup id=\"weighting\" root={root} help={WEIGHTING_HELP} width=\"300px\" />\n </div>\n\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 root: PropTypes.any,\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","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","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 { 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\",\"sentiment-container-label\":\"OEItem-module__sentiment-container-label___1tX3l\",\"sentiment-container-item\":\"OEItem-module__sentiment-container-item___3bTHl\",\"sentiment-container-item-icon\":\"OEItem-module__sentiment-container-item-icon___1G2sF\",\"sentiment-container-item-loading\":\"OEItem-module__sentiment-container-item-loading___1w5t0\",\"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\",\"is-active\":\"OEItem-module__is-active___3OHEK\",\"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-kudos\":\"Response-module__response-header-kudos___1lUcH\",\"kudos-revertable\":\"Response-module__kudos-revertable___2r09c\",\"non-kudos\":\"Response-module__non-kudos___3ubTy\",\"has-notification\":\"Response-module__has-notification___31mKY\",\"response-header-menu\":\"Response-module__response-header-menu___18F5O\",\"response-header-menu-dropdown\":\"Response-module__response-header-menu-dropdown___1FDcA\",\"response-header-reject-inline-select\":\"Response-module__response-header-reject-inline-select___1BE3K\",\"response-header-confirmation\":\"Response-module__response-header-confirmation___xeqlf\",\"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\",\"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\",\"sentiment-container-label\":\"Sentiments-module__sentiment-container-label___1DFdK\",\"sentiment-container-item\":\"Sentiments-module__sentiment-container-item___32fMY\",\"sentiment-container-item-icon\":\"Sentiments-module__sentiment-container-item-icon___2l7KS\",\"sentiment-container-item-loading\":\"Sentiments-module__sentiment-container-item-loading___2FKZE\",\"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\",\"is-active\":\"Sentiments-module__is-active___34pbb\",\"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 {\"component\":\"index-module__component___3LQo9\",\"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\",\"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 {\"survey-title\":\"ContentHeader-module__survey-title___1cqmr\",\"survey-title-xpert\":\"ContentHeader-module__survey-title-xpert___3XYqy\",\"survey-title-xpert-icon\":\"ContentHeader-module__survey-title-xpert-icon___3bFtr\",\"survey-title-xpert-text\":\"ContentHeader-module__survey-title-xpert-text___3UGKJ\",\"survey-title-xpert-text-title\":\"ContentHeader-module__survey-title-xpert-text-title___3d-eN\",\"survey-title-xpert-text-report-title\":\"ContentHeader-module__survey-title-xpert-text-report-title___emFN4\",\"tutorialVideoList\":\"ContentHeader-module__tutorialVideoList___7jqzy\"};","// 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\":\"StickyHeader-module__component___MOzmW stats-StickyHeader\",\"component-border\":\"StickyHeader-module__component-border___2q2Gw\",\"component-content\":\"StickyHeader-module__component-content___21uI5\",\"report-meta\":\"StickyHeader-module__report-meta___wPnrE\",\"report-meta-row\":\"StickyHeader-module__report-meta-row___3U20F\",\"report-meta-title\":\"StickyHeader-module__report-meta-title___1_cex\",\"report-meta-value\":\"StickyHeader-module__report-meta-value___3oSmK\",\"report-meta-value-loader\":\"StickyHeader-module__report-meta-value-loader___3dCpw\",\"loaderGradient\":\"StickyHeader-module__loaderGradient___3naq3\",\"report-controls\":\"StickyHeader-module__report-controls___Nv9RB\",\"report-controls-config\":\"StickyHeader-module__report-controls-config___tWuGx\",\"report-switches\":\"StickyHeader-module__report-switches___13G4c\",\"report-switches-button\":\"StickyHeader-module__report-switches-button___1fS0l\",\"report-switches-button-active\":\"StickyHeader-module__report-switches-button-active___3TWTF\",\"report-refresh\":\"StickyHeader-module__report-refresh___17QKZ\",\"report-refresh-button\":\"StickyHeader-module__report-refresh-button___2pGbz\",\"report-refresh-button-warning\":\"StickyHeader-module__report-refresh-button-warning___2IOKw\",\"report-refresh-button-spinning\":\"StickyHeader-module__report-refresh-button-spinning___Qb3Oe\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"Controls-module__component___1Kxvr stats-Q-AD-Component-Controls\"};","// 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\",\"export\":\"Controls-module__export___2M595\",\"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\":\"Controls-module__component___ouUmG stats-Q-OE-Component-Controls\",\"component-body\":\"Controls-module__component-body___3dvM_\",\"chat-mode-toggle\":\"Controls-module__chat-mode-toggle___1X1Wh\"};","// 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\",\"export\":\"Controls-module__export___3Rqva\"};","// 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 stats-CodingPanel\",\"component-title\":\"CodingPanel-module__component-title___gmEv7\",\"component-content\":\"CodingPanel-module__component-content___2tEov\",\"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-refresh-v2\":\"CodingPanel-module__icon-aytmfd-refresh-v2___3OC8o\",\"component-settings-opened\":\"CodingPanel-module__component-settings-opened___1dVkQ\",\"component-dropdown\":\"CodingPanel-module__component-dropdown___1qPQG\",\"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\",\"mode-switch-button\":\"CodingPanel-module__mode-switch-button___3f05I\",\"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 stats-Codebook-Icon\",\"codebook-header-title\":\"CodingPanel-module__codebook-header-title___2lrxc stats-Codebook-Title\",\"codebook-header-toggle\":\"CodingPanel-module__codebook-header-toggle___11dTn stats-Codebook-Toggle\",\"codebook-header-collapsed\":\"CodingPanel-module__codebook-header-collapsed___3h00H\",\"codebook-subheader\":\"CodingPanel-module__codebook-subheader___36BHI stats-Codebook\",\"codebook-body\":\"CodingPanel-module__codebook-body___2uqDa\",\"codebook-item\":\"CodingPanel-module__codebook-item___3PkAF\",\"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 stats-Codebook-Item\",\"codebook-editting\":\"CodingPanel-module__codebook-editting___Ji1i2\",\"codebook-disabled\":\"CodingPanel-module__codebook-disabled___2DwR3\",\"skipper\":\"CodingPanel-module__skipper___7jS8o\",\"skipper-fill\":\"CodingPanel-module__skipper-fill___2n8UZ\",\"skipper-text\":\"CodingPanel-module__skipper-text___3i0IG\",\"skipper-processing\":\"CodingPanel-module__skipper-processing___3Fowm\",\"steeringWheel\":\"CodingPanel-module__steeringWheel___14d7L\",\"skipper-popup-anchor\":\"CodingPanel-module__skipper-popup-anchor___1plVK\",\"skipper-popup-close\":\"CodingPanel-module__skipper-popup-close___DB7pV\",\"skipper-popup-content\":\"CodingPanel-module__skipper-popup-content___1Fdbt\",\"skipper-popup-content-failed\":\"CodingPanel-module__skipper-popup-content-failed___23HL0\",\"skipper-popup-content-success\":\"CodingPanel-module__skipper-popup-content-success___KjqUC\",\"skipper-popup-icon\":\"CodingPanel-module__skipper-popup-icon___3ikLj\",\"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 {\"component\":\"ColorOptionsPanel-module__component___2IGVc\",\"component-title\":\"ColorOptionsPanel-module__component-title___1sjnD\",\"palettes-list\":\"ColorOptionsPanel-module__palettes-list___2G1QW stats-PalettesList\",\"palettes-list-item\":\"ColorOptionsPanel-module__palettes-list-item___mlZSz stats-PalettesList-item\",\"palettes-list-item-colors\":\"ColorOptionsPanel-module__palettes-list-item-colors___30ijz stats-PalettesList-item-colors\",\"palettes-list-item-colors-item\":\"ColorOptionsPanel-module__palettes-list-item-colors-item___cQDSU stats-PalettesList-item-colors-item\",\"palettes-list-item-edit\":\"ColorOptionsPanel-module__palettes-list-item-edit___1rFsX stats-PalettesList-item-edit\",\"palettes-list-item-delete\":\"ColorOptionsPanel-module__palettes-list-item-delete___JKHF4 stats-PalettesList-item-delete\",\"palettes-list-item-confirm\":\"ColorOptionsPanel-module__palettes-list-item-confirm___3NHsj\",\"palettes-list-item-confirm-no\":\"ColorOptionsPanel-module__palettes-list-item-confirm-no___20Qsj\",\"palettes-list-item-confirm-yes\":\"ColorOptionsPanel-module__palettes-list-item-confirm-yes___20dct\",\"palettes-list-item-spin\":\"ColorOptionsPanel-module__palettes-list-item-spin___zuDTY\",\"palettes-list-add\":\"ColorOptionsPanel-module__palettes-list-add___3shZ6 stats-PalettesList-add\",\"palettes-list-add-button\":\"ColorOptionsPanel-module__palettes-list-add-button___1zLSn\",\"palettes-list-picker\":\"ColorOptionsPanel-module__palettes-list-picker___Rn1mv\",\"palettes-list-picker-cancel\":\"ColorOptionsPanel-module__palettes-list-picker-cancel___2xjHg\",\"palettes-list-picker-save\":\"ColorOptionsPanel-module__palettes-list-picker-save___WAaax\",\"palettes-list-picker-save-disabled\":\"ColorOptionsPanel-module__palettes-list-picker-save-disabled___1lmUV\",\"palettes-list-picker-spin\":\"ColorOptionsPanel-module__palettes-list-picker-spin___g_NSf\"};","// extracted by mini-css-extract-plugin\nexport default {\"palette-picker\":\"ColorPicker-module__palette-picker___3o8Aa\",\"palette-picker-colors\":\"ColorPicker-module__palette-picker-colors___2O_8h\",\"palette-picker-colors-item\":\"ColorPicker-module__palette-picker-colors-item___1rNWk\",\"palette-picker-colors-item-current\":\"ColorPicker-module__palette-picker-colors-item-current___ENjef\",\"palette-picker-methods\":\"ColorPicker-module__palette-picker-methods___3XOGj\",\"palette-picker-methods-random\":\"ColorPicker-module__palette-picker-methods-random___38rNY\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"CompletesPanel-module__component___3PKai stats-ViewOptionsPanel\",\"component-title\":\"CompletesPanel-module__component-title___1pOWx\",\"row\":\"CompletesPanel-module__row___3SwbD\",\"param\":\"CompletesPanel-module__param___2DcP4\"};","// extracted by mini-css-extract-plugin\nexport default {\"row\":\"CustomQuestion-module__row___2B-23\",\"delete\":\"CustomQuestion-module__delete___2BpHD\",\"delete-disabled\":\"CustomQuestion-module__delete-disabled___2_fvn\",\"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\",\"component-title\":\"CrosstabPanel-module__component-title___13GqZ\",\"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\",\"section\":\"CrosstabPanel-module__section___2mrI6\",\"section-title\":\"CrosstabPanel-module__section-title___2uQKs\",\"options\":\"CrosstabPanel-module__options___2Ni-u\",\"button\":\"CrosstabPanel-module__button___tXkwD\",\"button-delete\":\"CrosstabPanel-module__button-delete___v97A4\",\"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\",\"component-title\":\"DataCleaningPanel-module__component-title___2VRRT\",\"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\",\"component-title\":\"DataLabPanel-module__component-title___VdKdX\",\"row\":\"DataLabPanel-module__row___3xaGg\",\"section-title\":\"DataLabPanel-module__section-title___17v7N\",\"note\":\"DataLabPanel-module__note___3vyDa\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"ExportPanel-module__component___s2HVT stats-ExportPanel\",\"component-title\":\"ExportPanel-module__component-title___3aPN8\",\"row\":\"ExportPanel-module__row___34oY_\",\"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\",\"component-title\":\"MappingPanel-module__component-title___BD9z4\",\"row\":\"MappingPanel-module__row___2iqDg\",\"section-title\":\"MappingPanel-module__section-title___zSP3-\",\"note\":\"MappingPanel-module__note___1fxcQ\",\"paragraph\":\"MappingPanel-module__paragraph___gj_5h\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"Report-module__component___pAmFG stats-Report\",\"component-stat\":\"Report-module__component-stat___3tSSG stats-Report-stat\",\"component-original\":\"Report-module__component-original___10PCf stats-Report-original\",\"component-xpert\":\"Report-module__component-xpert___3pBqy stats-Report-xpert\",\"component-xpert_custom\":\"Report-module__component-xpert_custom___5caHU stats-Report-xpert_custom\",\"component-widget\":\"Report-module__component-widget___1S9mW stats-Report-widget\",\"component-term-report\":\"Report-module__component-term-report___10ux3 stats-Report-term-report\",\"component-new\":\"Report-module__component-new___24J9R stats-Report-new\",\"component-deleted\":\"Report-module__component-deleted___15t2e stats-Report-deleted\",\"component-current\":\"Report-module__component-current___3rTbu stats-Report-current\",\"component-active\":\"Report-module__component-active___2SSNa stats-Report-active\",\"component-warning\":\"Report-module__component-warning___bW2cF stats-Report-warning\",\"component-error\":\"Report-module__component-error___aM8_U stats-Report-error\",\"component-disabled\":\"Report-module__component-disabled___3GFS1 stats-Report-disabled\",\"handle\":\"Report-module__handle___3ZI0A stats-Report-handle\",\"report-disabled\":\"Report-module__report-disabled___1JKOM\",\"title\":\"Report-module__title___3rzeK stats-Report-title\",\"title-text\":\"Report-module__title-text___1aK11\",\"title-text-overflow\":\"Report-module__title-text-overflow___2KwfW\",\"icon\":\"Report-module__icon___1Xisc\",\"icon-hidden\":\"Report-module__icon-hidden___2lhp4\",\"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\",\"delete\":\"Report-module__delete___1RuAA stats-Report-delete\"};","// 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\",\"p-disabled\":\"ReportPopup-module__p-disabled___2FnX0\",\"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-input\":\"ReportPopup-module__content-row-column-input___2VJds\",\"content-row-column-input-count\":\"ReportPopup-module__content-row-column-input-count___artuz\",\"content-row-column-input-icon\":\"ReportPopup-module__content-row-column-input-icon___1xCce\",\"content-row-column-label\":\"ReportPopup-module__content-row-column-label___3-9RO\",\"content-row-column-icon\":\"ReportPopup-module__content-row-column-icon___3bljX\",\"icon-aytmfd-trash\":\"ReportPopup-module__icon-aytmfd-trash___63YSy\",\"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-title\":\"ReportPopup-module__content-row-column-title___PRTK4\",\"content-row-column-note\":\"ReportPopup-module__content-row-column-note___22yPa\",\"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-row-column-button\":\"ReportPopup-module__content-row-column-button___2_2rF\",\"content-row-column-buttons\":\"ReportPopup-module__content-row-column-buttons___-gce8\",\"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\",\"component-title\":\"ReportsPanel-module__component-title___fO3fi\",\"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\":\"SpecificationsPanel-module__component___23iLg stats-ViewOptionsPanel\",\"component-title\":\"SpecificationsPanel-module__component-title___1bCAA\",\"row\":\"SpecificationsPanel-module__row___2TQ01\",\"transition-panel\":\"SpecificationsPanel-module__transition-panel___2BTOh\",\"transition-panel-entered\":\"SpecificationsPanel-module__transition-panel-entered___GxtXd\",\"transition-panel-entering\":\"SpecificationsPanel-module__transition-panel-entering___31NPt\",\"transition-panel-exiting\":\"SpecificationsPanel-module__transition-panel-exiting___ylKDU\",\"transition-panel-exited\":\"SpecificationsPanel-module__transition-panel-exited___22zGz\",\"column\":\"SpecificationsPanel-module__column___1FH9_\",\"column-label\":\"SpecificationsPanel-module__column-label___1BD42\",\"column-values\":\"SpecificationsPanel-module__column-values___3ucjx\",\"column-toggle\":\"SpecificationsPanel-module__column-toggle___1Kw5c\",\"section\":\"SpecificationsPanel-module__section___2ybEx\",\"section-title\":\"SpecificationsPanel-module__section-title___3aCWE\",\"section-sub-title\":\"SpecificationsPanel-module__section-sub-title___3mR__\",\"preview\":\"SpecificationsPanel-module__preview___1qJch\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"ViewOptionsPanel-module__component___1mq-l stats-ViewOptionsPanel\",\"component-title\":\"ViewOptionsPanel-module__component-title___aOikT\",\"row\":\"ViewOptionsPanel-module__row___19L0o\",\"row-slider\":\"ViewOptionsPanel-module__row-slider___1o_3x\",\"row-slider-label\":\"ViewOptionsPanel-module__row-slider-label___2eJoy\",\"row-sentiments\":\"ViewOptionsPanel-module__row-sentiments___1QxAU\",\"section-title\":\"ViewOptionsPanel-module__section-title___72pLd\",\"note\":\"ViewOptionsPanel-module__note___92RXm\",\"delete\":\"ViewOptionsPanel-module__delete___1X8iO\",\"chart-modes\":\"ViewOptionsPanel-module__chart-modes___39bJZ\",\"chart-mode\":\"ViewOptionsPanel-module__chart-mode___1-UHO\",\"chart-mode-pie\":\"ViewOptionsPanel-module__chart-mode-pie___2imUZ\",\"chart-mode-map\":\"ViewOptionsPanel-module__chart-mode-map___3UKd0\",\"chart-mode-none\":\"ViewOptionsPanel-module__chart-mode-none___3CrxN\",\"chart-mode-selected\":\"ViewOptionsPanel-module__chart-mode-selected___1LQa7\",\"param\":\"ViewOptionsPanel-module__param___1SZIj\",\"param-disabled\":\"ViewOptionsPanel-module__param-disabled___2xheH\"};","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"WeightingItem-module__component___1iC_N stats-WeightingBasic-Item\",\"row\":\"WeightingItem-module__row___jz4Eg\",\"delete\":\"WeightingItem-module__delete___1PfD8\",\"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\",\"component-title\":\"WeightingPanel-module__component-title___1JwMZ\",\"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\"};"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","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","eventName","handler","element","savedHandler","useRef","useEffect","current","addEventListener","eventListener","removeEventListener","effect","deps","initialRender","effectReturns","handleSingleClick","handleDoubleClick","delay","_useState2","_slicedToArray","useState","click","setClick","_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","linkifyText","linkifiedText","replace","match","_uri$split2","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","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","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","message","authenticity_token","approve","t1","toggleKudos","t3","changeCodebookState","_ref9","_callee4","_ref8","_ref8$path","_ref8$request","_ref8$responseId","_ref8$action","action","onFetch","_ref8$onError","onError","_ref8$setIsLoading","setIsLoading","fetchTimer","_context4","setCodebook","changeSurveyCodebookState","_ref11","_callee5","_ref10","_ref10$newValue","newValue","_ref10$action","_ref10$onError","_ref10$setIsLoading","_context5","setSurveyCodebook","_x4","changeTagState","_ref13","_callee6","_ref12","_ref12$path","_ref12$request","_ref12$responseId","_ref12$action","_ref12$onError","_ref12$setIsLoading","_context6","setTag","_x5","changeSurveyTagState","_ref15","_callee7","_ref14","_ref14$newValue","_ref14$action","_ref14$onError","_ref14$setIsLoading","_context7","setSurveyTag","_x6","changeResponseTagState","_ref17","_callee8","_ref16","_ref16$action","onUpdateSchema","_context8","setResponseTag","_x7","generateSurveySkipper","_ref19","_callee9","_ref18","job","_ref18$selectedQuesti","selectedQuestion","_ref18$guided","guided","_ref18$onError","_ref18$onProgress","_ref18$setIsLoading","_res$result","_res$result$data","_res$result2","_context9","isArray","runSurveySkipper","hasOwn","_x8","apiKey","statUrl","statCsUrl","statActionsUrl","setApiKey","setStatUrl","setStatActionsUrl","addCSRF","querySelector","getAttribute","fetchJSONData","fetchSearchResults","query","orderBy","_ref3$isQAMode","_ref3$nocache","nocache","_ref3$orderDirection","orderDirection","includeSchema","_ref3$flattenAnswers","flattenAnswers","mapSearchDataForFetch","_ref7","_ref7$authenticity_to","_ref7$message","_ref9$message","_ref9$type","kudosText","tagsList","search","DEFAULT_SELECTED_QUESTION","page","_ref13$path","_ref13$request","_ref13$responseId","_ref13$action","order","DEFAULT_ORDER_BY","DEFAULT_ORDER_DIRECTION","cleanSearchData","getDottedQuestionName","_ref15$newValue","_ref15$action","count","_ref17$path","_ref17$request","_ref17$responseId","_ref17$action","_x9","_ref20","_callee10","_ref19$newValue","_ref19$action","_context10","destination","merge","_x10","_ref22","_callee11","_ref21","_ref21$action","_context11","_x11","_ref24","_callee12","_ref23","_ref23$job","_ref23$guided","_context12","command","include","statJobApiUrl","_x12","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","getToolBoxOptions","trackCurrentResponse","useCallback","bodyPosition","getBoundingClientRect","top","_step","_iterator","_createForOfIteratorHelper","responseRef","uid","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","_arrayWithHoles","_iterableToArrayLimit","minLen","_arrayLikeToArray","from","test","_unsupportedIterableToArray","_nonIterableRest","len","arr2","isShowAllTraits","isAdmin","isSurveyGuest","isRejectAvailable","isSurveyOwner","rejectStatus","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","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","inputElementRef","inputElementValueRef","inputValueRef","convertInputValue","_survey$codeBooks$fin","_survey$codeBooks$fin2","color","codeBooks","actionMeta","newOption","sanitizeReactSelectOption","onInputChange","updatedOptions","opt","uidOption","unshift","onSearchIconClick","blur","menuIsOpen","isFocused","onSearchOverlayClick","showClearIndicator","_inputElementRef$curr4","getValue","_query","_inputValue","rsComponents","DropdownIndicator","_objectWithoutProperties","_excluded","_MenuList","_excluded2","iconColor","CODEBOOKS_COLORS","decodeText","stripTags","_MultiValue","SENTIMENTS_ICON_HASH","_excluded3","_Option","NoOptionsMessage","_IndicatorsContainer","hasValue","_ClearIndicator","CreatableSelect","classNamePrefix","createOptionPosition","noResultsText","openMenuOnClick","openMenuOnFocus","cacheOptions","isMulti","isClearable","isSearchable","isOptionDisabled","onMenuOpen","_inputElementRef$curr","onMenuClose","_inputElementRef$curr2","_inputElementRef$curr3","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","errorTimer","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","dndTargetCodebook","dispatchEvent","CustomEvent","dndTargetTag","headerTop","stickyHeader","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","onTagApply","isForCurrentPage","flag","_","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_TAG_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","_ref$dispatch","_ref$setSurvey","setSurvey","onTagsFetch","updated","updatedTagsData","parse","updatedTags","updatedCodeBooks","_updatedTagsData","_updatedTagsData$tags","_updated$codebook$typ","_window$survey$tags","_updated$codebook$typ2","_window$survey","_updated$codebook$typ3","codebookIndex","tagsStats","_loop","oldKey","_i","_Object$keys","updatedTagsByPath","_i2","_arr","_variable$tagsStats","_variable$tagsStats$k","_updated$codebook$typ4","MASS_OPERATION_HASH","_step2","_iterator2","_step3","_iterator3","_loop2","_i3","_Object$keys2","_i4","_arr2","_variable$tagsStats2","_variable$tagsStats$k2","_step4","_iterator4","_loop3","splice","_i5","_Object$keys3","_i6","_arr3","_variable$tagsStats$k3","_updated$codebook$typ5","isEqual","reportParams","propsRef","responsesOptionsRef","surveyData","specialMode","isSpecialsSortingDisabledRef","setResponsesOptions","onQuestionListChange","specialModeRef","convertTraits","_surveyData","_window$features","selectedOrderBy","isFailedOrderBy","reportQuery","searchString","DEFAULT_QUERY","DEFAULT_PER_PAGE_IMAGE_RESPONSES","DEFAULT_PER_PAGE_VIDEO_RESPONSES","difference","mapReportSearchQuery","getTagsList","getIsDefaultReportParams","fetchTimeout","DEFAULT_FETCH_TIMEOUT","fetchDebounceTimeout","onNoSchema","_searchStateRef$curre","isQAModeDelayed","fetchDataCallback","totals","_survey","qaCounterLocalStorage","assets","qaModeCounter","batchData","getRejectsAndKudos","_ref4$includeSchema","_ref4$customParams","_ref4$customFetchData","fetchDataComplete","callback","_args2","abort","_data","shareKey","target_market","quotas","FETCH_TIMEOUT_STEP","force","fetchDataDestroy","newPageData","useNonInitialEffect","_ref$onUpdateSchema","_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","_window$survey2","_updated$tag$type7","_variable$tagsStats3","_updated$tag$type8","_window$survey$tags3","_updated$tag$destinat2","_updated$tag$destinat3","_updatedTagsData$tags3","_updated$tag$destinat","_i7","_Object$keys4","_i8","_arr4","_variable$tagsStats4","_variable$tagsStats$_","_updated$tag$type9","_variable$tagsStats$_2","_updated$tag$destinat4","_updatedTagsData$tags4","_updated$tag$destinat5","_i9","_Object$keys5","_i10","_arr5","_variable2$tagsStats","_variable2$tagsStats$","_updated$tag$type10","_variable2$tagsStats$2","_updated$tag$destinat6","_i11","_Object$keys6","_i12","_arr6","_variable3$tagsStats","_variable3$tagsStats$","_updated$tag$type11","CommentsOpenEnded","_props$reportParams","_searchState$pageData","unkudos","setPopupNotificationsDisabled","getQuestionsOptionsList","questions","scripts","PageDataComponent","uidsList","useFetchDataComments","useComments","_useTags2","useTags","_onTagsUpdateSchema","_onTagsFetch","_onCodeBooksFetch","useCodeBooks","_event$detail","_event$detail2","currentResponse","responseData","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","_action$request","processedQA","_action$request2","_state$tagsData","_action$data","_action$data$specialM","mergePageData","respondents","responses","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","questionByPosition","questionIdToPosition","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","StatTutorialVideo","video","autoplay","videoPoints","videoNote","videoThumbnail","ContentHeader","_customization$find","surveyTitle","report","customization","isReportXpert","stickyHeaderContainer","TutorialVideoList","createPortal","StickyHeader","searchInputStyles","onSearchChange","_search$query","searchInputValue","setSearchInputValue","searchInputOptions","setSearchInputOptions","menuTimer","searchInputRef","searchInputValueRef","convertSearchInputValue","_searchInputRef$curre2","_searchInputRef$curre3","onSearchInputIconClick","_searchInputRef$curre4","searchInputComponents","_searchInputRef$curre","surveyCompleted","_ref$controls","isSurveyViewer","isReportLoading","isReportVirtual","onModeChange","onShowReportPopup","stopEvent","formatAmounts","model","ReportControls","statePath","modelPath","listState","listStatePath","listModel","listModelPath","limits","actions","virtualReportsIds","isCompact","location","hash","itemTemplate","icon","valueTemplate","_props","optionGroupTemplate","renderComponent","require","ReactDOM","reactEl","createElement","renderDataView","updateDataView","unlinkDataView","renderSpecials","renderContentHeader","renderReportsPanel","renderSpecificationsPanel","renderColorOptionsPanel","renderWeightingPanel","renderFiltersPanel","renderDataCleaningPanel","renderDataLabPanel","renderMappingPanel","renderCrosstabPanel","renderCodingPanel","renderViewOptionsPanel","renderCompletesPanel","renderExportSpecific","renderHeatMapPopup","renderQuestionHeader","renderVQComponent","renderCQComponent","renderXQComponent","renderCLComponent","renderTLComponent","renderSNComponent","renderCLMappingComponent","renderTLMappingComponent","renderOEControls","renderCNControls","renderADControls","renderDCControls","renderItemsControls","renderDCResponses","unlinkComponent","unmountComponentAtNode","initializeXpertsDebug","_reject","margin","textAlign","zIndex","renderXpertsDebug","HighchartsMore","Highcharts","HighchartsSunburst","HighchartsTreemap","HighchartsTreegraph","HighchartsExporting","RenameAllCodebooks","RenameAllTags","Controls","onConfigChange","config","metrics","MultiSelect","filterBy","filterPlaceholder","buttonLabelTemplate","panelHeaderTemplate","MultiSelectHeader","panelFooterTemplate","MultiSelectFooter","states","onReset","onControlsChange","onUpdateData","onPublish","onPublished","dataReducer","entities","changed","setChanged","stateRef","attributesOptions","attribute","entity","checkModel","newData","vi","checkState","dataContextValue","ComponentContainer","Footer","Sources","Entities","Attributes","dimension","Variables","note","onFeaturesChange","_data$controls$config","_data$controls$config2","answerVariants","answerOptions","answerVariant","ids","optionDisabled","ControlsComponents","DataContext","collapsed","setCollapsed","setMaxHeight","transitionDuration","setTransitionDuration","componentRef","collapsedRef","onToggle","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","appliedNote","applyEditing","styleTextFormatting","QuestionBody","isQuestionCollapsed","QuestionHeader","_ref$model","onScrollToSkip","sortableList","questionView","isEditingExt","titleExt","isShared","getReportParams","onToggleCollapse","onTitleChange","onStorytellingNoteChange","oeSearchParams","onCloneQuestion","onAIAssistantsClick","onFinalizeDragLayerContent","onDndStart","onDndEnd","onSetTitleExt","onSetEditQuestionExt","onSaveExt","onAIAssistantsCancel","parentID","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","isCloneable","questionId","getQuestionId","questionIcon","getQuestionIcon","insightsMapping","onShowCommentsPage","searchParams","onShowRadarPage","justFiltersParams","pk","pv","StatPage","lib","getStatUrl","$STRG","Encode","base64params","_bsfz","StatHelpers","DOM","submitHiddenForm","dndType","TYPE_DND_MAP","dndListItem","list","dndListItemHandle","lockX","cloneable","onStart","onEnd","onHeaderSingleClick","withThisNote","updatedNote","onSkipToClick","idx","onHeaderClick","useSingleAndDoubleClick","onScroll","headerRect","stickyHeaderRect","componentRect","defaultView","msg","onAIAssistantsClickCallback","_data$scope","_data$scope2","aiStatus","summary","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","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","isWCType","isVerbatimType","onChartModeChange","onExport","chartMode","ExportControls","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","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","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","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","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","valueExportTemplate","exporting","setExporting","exportOptions","hasComments","CUSTOM_QUESTION_REG","TagsControls","_model$codeBooks","codeBooksOptions","VerbatimControls","verbatim","viewModes","oe_tags_view","oe_sentiments_view","ViewModes","onViewModeChange","viewMode","WordcloudControls","onPresetChange","onApplyToAll","preset","statusRef","Blob","onToggleClick","word_clouds","presets","applyToAllLabel","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","onDNDStart","onDNDEnd","tagsCodebooks","isSkipperDisabled","onCollapse","onConfirm","onCloseDropdown","onToggleNew","dndComponentRef","dndItemRef","isDragging","isDNDDisabled","_tags","collator","onDNDStartTag","onDNDEndTag","onDNDEnter","onDNDLeave","dndComponent","dynamicPosition","dndItem","clearDragImage","ai_assistants_oe_coding","onActionConfirm","CODEBOOK_MIN_LENGTH","CODEBOOK_MAX_LENGTH","onMergeTag","InputUpdate","forbiddenSymbols","FORBIDDEN_CODEBOOK_SYMBOLS","CodebookSettings","codebookRef","CodingTag","InputNew","isAdding","onAdd","CodingPanel","_ref$specialMode","root","_ref$features","_ref$survey","_ref$tagsData","_ref$reports","reports","_ref$reportParams","_ref$totals","setNewItem","setEditingItem","setProcessingItem","setSettingsItem","isSkipperLoading","setIsSkipperLoading","processingCodebook","questionPositionToId","_codeBooks","tagsCounters","oe_sentiments_management","collapsedStorage","ts","_tagsList$find","SENTIMENTS","_useEventBus","useEventBus","onCodebookConfirm","newCodebook","_newCodebook","onTagConfirm","newTag","_newTag","_params","_params2","onAddCodebook","onToggleSettings","onAction","useDrag","eventIsLoading","CodingSkipper","SidebarPopup","CODEBOOKS_HELP","skipperTimer","schema","setSelectedQuestion","DEFAULT_SELECTED_ACTION","selectedAction","setSelectedAction","DEFAULT_SELECTED_CODEBOOK","selectedCodebook","setSelectedCodebook","setMessage","messageType","setMessageType","setProgress","selectedQuestionRef","selectedActionRef","selectedCodebookRef","progressRef","getQuestionsList","actionsOptions","codebooksOptions","onActionSelect","onCodebookSelect","onMessage","onSkipperConfirm","_questionsOptions","iconPos","SKIPPER_DISABLED_HELP","SKIPPER_ACTIVE_HELP","TagSettings","tagRef","statusTimer","_ref$opened","_ref$isEditing","_ref$isLoading","_ref$isCurrentLoading","selectedActionStatus","setSelectedActionStatus","usedReportsCount","setUsedReportsCount","onActionCancel","onActionClick","_window$navigator","navigator","clipboard","ClipboardItem","textarea","execCommand","getCodebooksItemOptionsList","isAiAssistantsOECodingDisabled","usedReports","SettingsButton","itemRef","warning","onInputKeyUp","paste","textLines","keyfilter","onInputKeyDown","onKeyUp","addCommentsSearchOption","onTitleClick","buttonRef","Portal","nodeID","contains","isEqualNode","SettingsDropdown","updateTimer","dropdownRef","resizeObserverRef","updateDropdownPosition","repeat","buttonRect","dropdownRect","scrollY","documentElement","innerHeight","updateDropdownPositionHandler","ResizeObserver","getTagsItemOptionsList","setIsDragging","onDragLeaveHandler","onDragOverHandler","itemTypeFromEvent","rootRect","clientY","clientX","scrollBy","useLayoutEffect","currentScrollY","preventDocumentScroll","scrollTo","behavior","userId","ColorOptions","container","colorThemes","reportColorTheme","palettes","reportPalette","palettesUrl","currentStatus","setCurrentStatus","currentPalette","setCurrentPalette","currentPaletteId","setCurrentPaletteId","reportPaletteId","palette","equals","paletteListAvailable","editAvailable","addAvailable","saveAvailable","colorTheme","updateCurrentStatus","deleteIn","setIn","fetchSaveData","wrappedPostFetch","fetchUpdateData","fetchRemoveData","paletteId","onPaletteAdd","DEFAULT_PALETTE","COLOR_OPTIONS_HELP","ColorThemes","getIn","ColorPicker","_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","COLOR_METHOD_OPTIONS","ColorPickerPopup","offsetLeft","copyAvailable","showReportPalette","onColorThemeSelect","onColorThemeCopy","saturation","luminosity","colorIndex","listText","Storage","CompletesPanel","onCompletesChange","showUnfinished","unfinished","setUnfinished","htmlFor","CustomQuestionButton","addCustomQuestion","blocked","setBlocked","createCustomQuestion","feature","DropTargetContainer","typesTitles","dropTargetReducer","showDropTarget","dropTargetHTML","dndDropTargetRef","dndDropTarget","PinnedCustomQuestion","removePinnedQuestion","setShow","setOffset","popupRef","scrollCallback","countOffset","refPopup","bottom","arrowOffset","refPopupTarget","isSameNode","onHide","DATA_LAB_HELP","MAPPING_HELP","REPORTS_HELP","SPECIFICATIONS_HELP","VIEW_OPTIONS_HELP","WEIGHTING_HELP","toggleCheckbox","DEFAULT_STATE","getBannerKey","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","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","DATA_CLEANING_TEXTS","cleaning","centrifuge","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","onRemoveVariable","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","Report","ContextSubscriber","contextTypes","isRequired","currentReportId","mapToProps","_dec","ContextProvider","shouldUpdate","_dec2","_Report","_ManagedRenderCompone","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","_ReportControls","addListItem","getModelProps","revertListItem","updateListItem","isEditable","isEmpty","isSaving","onReportRevert","onReportAdd","SplitButton","dropdownIcon","onReportUpdate","TITLE_MAX","shareLinkHash","timeZone","_ReportPopup","copied","escHandler","scrollPopupContainer","positionHandler","updatePopupPosition","titleTimer","updateItemModel","do","deleteListItem","share","updateItemShareLink","copyToClipboard","parentElement","focusMe","refButton","refDescription","refDescriptionContentBody","descriptionComputedStyle","descriptionContentComputedStyle","refDescriptionContent","refContent","refDescriptionHead","refDescriptionContentHead","refDescriptionFooter","updateContainerPosition","pm","refPopupArrow","oldProcess","oldActive","newActive","emails","offActive","ReportPopupDescription","onReportDeleteCancel","_this$props7","ReportPopupSharing","blurMe","_this$props8","shareLinkExist","isUnremovable","onReportTitleChange","handleReportTitlePastedText","renderDeleteReport","renderCurrentReportVersion","renderSharingOptions","selectValue","updateShareLink","copyLink","_this10","_this$props9","reportStyle","openPopup","onExited","hidePopup","renderDescription","renderContent","ReportsPanel","disabledDataLab","_ReportsPanel","_ManagedRenderCompone2","onDNDBuildPlaceholder","_createClass","togglePlaceholder","cloneModel","dropListItem","listIndex","connectDNDItemsList","itemStatePath","itemModelPath","itemSeq","valueSeq","virtualItemsSeq","virtualItemsSeqLength","toArray","defaultItemsSeq","otherItemsSeq","otherItemsSeqLength","renderItems","itemModel","AddReport","saveListRef","renderAddItem","renderList","_class4","_class3","_AddReport","withMutations","vq1","isXpert","isBlankAllowed","onReportBlankAdd","ERROR","VIRTUAL_REPORTS_IDS","newListState","updateState","getModelData","virtual","storytellings","storytellingNotes","logicTags","_virtual","setModelData","initials","decodeModelData","encodeModelData","newListModel","virtualReports","virtualReport","updateModel","pos","newListItem","listItem","setSize","siblingId","edited","process","shareLink","_ReportPopupDescription","timestepInterval","flags","protected","timestep","localDate","minutesDiff","diff","hoursDiff","daysDiff","monthsDiff","yearsDiff","refCreatedTimestep","getDateApproximation","refEditedTimestep","isDefault","creator","onHiddenChange","onProtectedChange","_ReportPopupSharing","emailsReady","emailsSuccess","emailsError","emailsSentCount","emailsInvalid","emailsChanged","EMAIL_REGEX","checkEmails","sent_count","invalid_emails","tickToHideEmails","sendEmails","SpecificationsPanel","isExternalSurvey","video_respondents","survey_started_at","survey_finished_at","has_fake_responses","research_type","SpecificationsListSurvey","SpecificationsPanelSurvey","survey_preview_path","completion_times","shortest","median","mean","longest","totalPartialResponses","totalFailedPrequalsResponses","totalOeRejectedResponses","country_trait","locale_trait","quotaType","option_include","option_exclude","custom_quotas","filtered","details","target_markets","geo","sub","quota","balancing","RowCollapsable","custom_quota","ViewOptionsPanel","generatingArtificialResponses","onTraitChange","onParamsChange","onToggleQuestions","onSentimentsChange","onGenerateArtificialResponses","ChartModes","Params","Sentiments","fake_responses","ArtificialResponses","artificialResponsesIndex","setArtificialResponsesIndex","artificialResponsesOptions","CHART_MODES","pie","brespondents","bpercents","none","messageTimer","chartModesMessage","setChartModesMessage","renderChartMode","view_options","chartLegendMode","setChartLegendMode","rType","setRType","qLogicVisibility","setQLogicVisibility","qAliasesVisibility","setQAliasesVisibility","zoomLevel","setZoomLevel","qlogic_visibility","qaliases_visibility","zoom_level","qCollapsed","sentiments","sentimentsValue","setSentimentsValue","filteredQuestions","sentimentsQuestions","_cur$batches","_cur$answerVariants","_res","checkAnswerVariants","_amount","sentimentsOptions","_cur$batches2","_cur$answerVariants2","_step5","__acc","__value","_iterator5","usedKeys","_id","__id","__key","_keys2","_step6","_iterator6","reduceRight","findKeys","_obj","_keys","_Object$entries","_step7","_iterator7","pipingVariables","_virtual$id$answerVar","_virtual$id$answerVar2","WeightingItem","onRemove","inputsRefs","setInputsRefs","textbox","refInput","inputFilter","oldValue","oldSelectionStart","oldSelectionEnd","actual","final","WeightingList","virtualOptions","toJSON","Weighting","weighting","appliedWeighting","weightingDisabled","setWeightingDisabled","setIsProcessing","containerExpanderRef","weighted","weightingOptions","census","censusOptions","varOptions","onApply","renderButtons","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","pathname","stats","api","loadQuestionsSuccess","$STATS","XpertsDebugPopup","maxItems","renderButton","_ref$dragOver","ProgressPanel","DropPanel","watchProgress","_props$progress","_ref2$percents","_ref2$loadedFiles","loadedFiles","_ref2$totalFiles","totalFiles","LoaderDots","dotSize","dots","elementRef","intersecting","setIntersecting","unobserve","MAX_OPTIONS_NUMBER","nextSelectID","SELECT_FILTER_STRATEGIES","longestMatchedSequenceLength","patternLength","strLength","matchFrom","currentPart","currentPartMatched","patternIdx","stringIdx","fuzzyMatch","firstChar","_SELECT_FILTER_STRATE2","defaultMatch","defaultPriority","w","_Select","_PureDataComponent","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","dataset","optionIndexInt","filteredOptions","selectOption","refocus","fetchSelectOptions","refOptions","listItems","listScrollTop","itemTop","offsetTop","KEYCODE_UP","newKeyboardIndex","KEYCODE_DOWN","onListScroll","KEYCODE_PGUP","KEYCODE_PGDOWN","KEYCODE_HOME","KEYCODE_END","KEYCODE_ENTER","toggleOptions","KEYCODE_SPACE","KEYCODE_ESC","KEYCODE_TAB","scrollHeight","matchOptions","_this$props4$filterSt","filterStrategy","lcfilter","filterStrategyFn","filterPriorities","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","LoaderWave","bars","drop","theme","dataTestId","defaultIsEmpty","renderOptions","PureDataComponent","onOverflow","object","plaintext","zlib","buf","b64","Buffer","Decode","b64String","stores","Store","localForage","Dummy","ClearData","storeName","store","all","removeItem","DataKeys","GetByKey","GetData","SetData"],"sourceRoot":""}