From 3efb0e82f7b875abdacf80fc8684de43de262a44 Mon Sep 17 00:00:00 2001 From: Nulo Date: Mon, 11 Oct 2021 22:25:39 -0300 Subject: [PATCH] Scriptear y otras cosas --- .gitignore | 1 + README.md | 15 +- extraer.sh | 40 + links | 4 - .../0.0c5b2e6a.chunk.js.map | 0 .../6.776c1e8b.chunk.js.map | 0 .../7.c65299ef.chunk.css.map | 0 .../7.f024fa6c.chunk.js.map | 0 .../8.16508763.chunk.js.map | 0 .../main.6c5fc115.chunk.js.map | 0 .../main.f50335e4.chunk.css.map | 0 .../player-custom.19eb3d6e.chunk.js.map | 0 .../playerPlugins-audio.4aa8d1ef.chunk.js.map | 0 ...playerPlugins-audio.dcc31119.chunk.css.map | 0 ...playerPlugins-video.4cb21404.chunk.css.map | 0 .../playerPlugins-video.5f4c24a0.chunk.js.map | 0 package.json | 3 + patches/0001-fake-process.env-config.jsx.diff | 14 + patches/0002-use-details-in-accordion.diff | 50 + patches/0003-fix-broken-exercises.diff | 28 + .../0004-react-render-instead-of-hydrate.diff | 11 + patches/0005-no-ssr.diff | 11 + source-from-sourcemaps.js | 84 +- sources-gen/.pnpm-debug.log | 14 - .../dwtheantiquab-w5plain.woff | 1 - .../dwtheantiquab-w5plain.woff2 | 1 - .../DWTheAntiquaB-W5PlainItalic.woff | 1 - .../DWTheAntiquaB-W5PlainItalic.woff2 | 1 - .../DWTheAntiquaB-W7Bold.woff | 1 - .../DWTheAntiquaB-W7Bold.woff2 | 1 - sources-gen/assets/icons/DwClaim.jsx | 4 - sources-gen/assets/icons/DwLogo.jsx | 4 - sources-gen/assets/icons/Smiley.jsx | 6 - .../assets/icons/ToggleableArrowIcon.jsx | 4 - sources-gen/assets/images/bg-dw-desktop.jpg | 1 - .../landing/course_landing-1200x675.jpg | 1 - .../images/landing/course_landing-480x270.jpg | 1 - .../images/landing/course_landing-768x432.jpg | 1 - .../images/landing/course_landing-992x558.jpg | 1 - sources-gen/assets/svg/dw-claim.svg.js | 36 - sources-gen/assets/svg/dw-logo-mobile.svg.js | 2 - sources-gen/assets/svg/dw-logo-tablet.svg.js | 2 - sources-gen/assets/svg/dw-logo.svg.js | 37 - .../assets/svg/icon-course-cert-gray.svg.js | 2 - .../assets/svg/icon-hint-circle-orange.svg.js | 42 - sources-gen/assets/svg/icon-hint.svg.js | 39 - .../assets/svg/icon-language-world-w.svg.js | 43 - sources-gen/assets/svg/icon-user-navi.svg.js | 53 - sources-gen/assets/svg/keyboard.svg.js | 104 - .../assets/svg/nav-cross-black-lg.svg.js | 2 - .../assets/svg/nav-cross-black-md.svg.js | 2 - sources-gen/assets/svg/nav-cross-lg.svg.js | 2 - sources-gen/assets/svg/nav-cross-xs.svg.js | 2 - sources-gen/assets/svg/smiley-negative.svg.js | 66 - sources-gen/assets/svg/smiley-positive.svg.js | 57 - sources-gen/assets/svg/star-gray.svg.js | 2 - sources-gen/assets/svg/star-white.svg.js | 2 - sources-gen/assets/svg/tick.svg.js | 41 - sources-gen/assets/svg/toggleableArrow.svg.js | 37 - .../components/Accordion/Accordion.jsx | 23 - .../Accordion/AccordionItem/AccordionItem.jsx | 111 - sources-gen/components/App.jsx | 214 -- .../components/BurgerButton/BurgerButton.jsx | 177 - sources-gen/components/Checkbox/Checkbox.jsx | 44 - .../ContentContainer/AccordionContainer.jsx | 53 - .../AccordionContainer.jsx.orig | 70 - .../ContentBottomLine/ContentBottomLine.jsx | 5 - .../ContentContainer/ContentContainer.jsx | 9 - .../ContentHeadline/ContentHeadline.jsx | 13 - .../ContentNavTitle/ContentNavTitle.jsx | 22 - .../ContentSection/ContentSection.jsx | 16 - .../CourseHeroImage/CourseHeroImage.jsx | 69 - .../CourseAccordion/CourseAccordion.jsx | 30 - .../CourseList/CourseHeader/CourseHeader.jsx | 78 - .../Course/CourseList/CourseList.jsx | 48 - .../CourseList/LessionItem/LessonItem.jsx | 120 - .../CourseList/LessionItem/LessonScore.jsx | 41 - .../CourseList/LessonList/LessonList.jsx | 47 - .../components/Course/CourseOverview.jsx | 140 - .../Course/Progress/CourseProgress.jsx | 27 - .../Course/Progress/ProgressResetButton.jsx | 25 - .../components/Dashboard/Dashboard.jsx | 29 - .../Dashboard/Tiles/Tile/BlankTile.jsx | 28 - .../Dashboard/Tiles/Tile/MoreCoursesTile.jsx | 23 - .../components/Dashboard/Tiles/Tile/Tile.jsx | 186 -- .../components/Dashboard/Tiles/Tiles.jsx | 56 - .../components/DwPicture/DwPicture.jsx | 36 - sources-gen/components/Footer/Footer.jsx | 168 - .../components/GdprLayer/BrowserOnly.jsx | 5 - .../components/GdprLayer/GdprLayer.jsx | 44 - .../GoogleTagManager/GtmDataLayer.jsx | 40 - .../GoogleTagManager/GtmLoadScript.jsx | 13 - .../GoogleTagManager/GtmNoScriptFallback.jsx | 23 - .../GtmScriptWithDataLayer.jsx | 21 - .../GoogleTagManager/TrackingUtils.jsx | 139 - .../hooks/useAddEmbeddingsToGtm.jsx | 18 - .../hooks/useMediaTracking.jsx | 17 - .../hooks/useMediaTracking.jsx.orig | 17 - .../hooks/useStaticInfoForGtm.jsx | 11 - .../components/GoogleTagManager/index.jsx | 6 - .../components/GrammarItem/GrammarItem.jsx | 30 - .../GrammarOverview/GrammarOverview.jsx | 14 - .../GrammarOverview/GrammarOverviewHeader.jsx | 52 - .../Header/ChineseVariantSwitch.jsx | 58 - .../components/Header/DesktopBanner.jsx | 24 - sources-gen/components/Header/Header.jsx | 37 - .../components/Header/MobileBanner.jsx | 106 - .../NavigationContainer.jsx | 79 - .../NavigationContainer/OnlyDesktopBrand.jsx | 50 - sources-gen/components/Help/Help.jsx | 36 - .../components/HeroTemplate/HeroTemplate.jsx | 20 - .../components/I18n/I18nConfigLoader.jsx | 48 - sources-gen/components/I18n/I18nText.jsx | 10 - sources-gen/components/IconBar/IconBar.jsx | 24 - .../ImageOGMetaData/ImageOGMetaData.jsx | 53 - .../Input/BirthDateInput/BirthDateInput.jsx | 47 - sources-gen/components/Input/Input.jsx | 45 - .../Input/NewPassword/NewPasswordInputs.jsx | 49 - .../Input/TextAreaInput/TextAreaInput.jsx | 79 - .../LearnProgressIcon/LearnProgressIcon.jsx | 46 - .../components/LegalNotice/LegalNotice.jsx | 43 - sources-gen/components/Lesson/Lesson.jsx | 213 -- .../LessonContentDescription.jsx | 89 - .../AnswerTypes/ChooseAnswer.jsx | 247 -- .../AnswerTypes/ContainerTextContent.jsx | 11 - .../AnswerTypes/PulldownAnswer.jsx | 120 - .../AnswerTypes/WritingAnswer.jsx | 116 - .../ClozeExercise/ClozeExercise.jsx | 31 - .../ClozeExercise/ClozeExerciseRow.jsx | 140 - .../ClozeExercise/ClozeInput.jsx | 80 - .../ClozeExercise/ClozePulldown.jsx | 78 - .../ClozeExercise/ExerciseRichText.jsx | 24 - .../ClozeExercise/clozeExerciseUtils.jsx | 27 - .../usePlaceholderReplacementEffect.jsx | 26 - .../DictationExercise/DictationExercise.jsx | 14 - .../DictationExerciseRow.jsx | 78 - .../LessonExercise/Keyboard/KeyboardIcon.jsx | 14 - .../Keyboard/KeyboardWrapper.jsx | 146 - .../Lesson/LessonExercise/Keyboard/index.css | 22 - .../LessonExerciseAnswer/ExerciseAnswer.jsx | 46 - .../LessonExerciseImageAnswer.jsx | 44 - .../LessonExerciseTextAnswer.jsx | 67 - .../LessonExerciseAnswer/answerState.jsx | 7 - .../LessonExerciseHeadline.jsx | 28 - .../LessonExerciseHiddenAudio.jsx | 16 - .../LessonExerciseSoundFailureHiddenAudio.jsx | 6 - .../LessonExerciseSoundSuccessHiddenAudio.jsx | 6 - .../LessonExerciseHint/LessonExerciseHint.jsx | 36 - .../ExerciseLeavingPrompt.jsx | 22 - .../LessonExerciseItem/LessonExerciseItem.jsx | 137 - .../LessonExerciseItem.jsx.orig | 129 - .../LessonExerciseNavigation.jsx | 191 -- .../LessonExerciseQuestion.jsx | 78 - .../LessonExerciseQuestionAudio.jsx | 91 - .../LessonExerciseQuestionImage.jsx | 15 - .../LessonExerciseQuestionText.jsx | 16 - .../LessonExerciseQuestionVideo.jsx | 11 - .../QuestionTypes/questionTypes.jsx | 6 - .../LessonExerciseResult/ExerciseAction.jsx | 40 - .../LessonExerciseResult.jsx | 192 -- .../LessonExerciseResult/Summary.jsx | 72 - .../LessonExerciseStats.jsx | 71 - .../LessonExerciseTextInput.jsx | 12 - .../ManyToManyAnswer/ManyToManyAnswer.jsx | 76 - .../ManyToManyExercise/ManyToManyExercise.jsx | 21 - .../ManyToManyQuestionRow.jsx | 233 -- .../manyToManyQuestionRowReducer.jsx | 150 - .../MultiSelectionExercise.jsx | 16 - .../MultiSelectionQuestionRow.jsx | 197 -- .../RepeatExercise/RepeatExercise.jsx | 15 - .../RepeatExercise/RepeatExerciseRow.jsx | 39 - .../SelfAssessment/SelfAssessment.jsx | 79 - .../SelfAssessment/SelfAssessmentAnswer.jsx | 23 - .../SelfAssessment/SelfAssessmentQuestion.jsx | 36 - .../SingleSelectionExercise.jsx | 16 - .../SingleSelectionQuestionRow.jsx | 139 - .../SortingExercise/SortingExercise.jsx | 15 - .../SortingExercise/SortingExerciseRow.jsx | 220 -- .../LessonExercise/utils/exerciseUtils.jsx | 21 - .../workflow/ExerciseProgress.jsx | 79 - .../LessonExercise/workflow/inquiryState.jsx | 6 - .../workflow/useInquiryHandling.jsx | 65 - .../Lesson/LessonExtras/LessonExtras.jsx | 84 - .../LessonExtras/Links/ArticleLinks.jsx | 11 - .../Lesson/LessonExtras/Links/AudioLinks.jsx | 19 - .../LessonExtras/Links/DownloadLinks.jsx | 14 - .../Lesson/LessonExtras/Links/VideoLinks.jsx | 43 - .../LessonInformation/LessonInformation.jsx | 81 - .../LessonKnowledge/LessonKnowledge.jsx | 105 - .../LessonKnowledgeNavigation.jsx | 114 - .../NavigationRow/NavigationRow.jsx | 44 - .../Lesson/LessonMenu/LessonMenu.jsx | 272 -- .../LessonMenuItem/LessonMenuItem.jsx | 79 - .../LessonBurgerButton.jsx | 132 - .../LessonTitle.jsx | 39 - .../Lesson/LessonSummary/LessonSummary.jsx | 76 - .../LessonVocabulary/LessonVocabulary.jsx | 116 - .../VocabularyRow/VocabularyRow.jsx | 58 - .../MediaInputChooser/MediaInputChooser.jsx | 52 - sources-gen/components/Logo/Logo.jsx | 63 - .../MainHeroImage/MainHeroImage.jsx | 73 - .../components/Manuscript/Manuscript.jsx | 40 - .../MediaInputAudio/MediaInputAudio.jsx | 85 - .../MediaInputImage/MediaInputImage.jsx | 21 - .../InfoBar/InfoBar.jsx | 47 - .../InfoBar/VjsDurationInfoBar.jsx | 30 - .../PlayButton/Button.jsx | 141 - .../PlayButton/Play.jsx | 4 - .../PlayButton/VjsPlayButton.jsx | 71 - .../PlayButton/play.svg.js | 32 - .../vjsComponentUtils.jsx | 1 - .../MediaInputVideo/MediaInputVideo.jsx | 73 - .../MediaInputVideo/MediaInputVideo.jsx.orig | 73 - .../DeleteAccountModal/DeleteAccountModal.jsx | 81 - .../Modal/DisableScrollingStyles.jsx | 8 - .../Modal/KnowledgeModal/Knowledge.jsx | 74 - .../Modal/KnowledgeModal/KnowledgeModal.jsx | 164 - ...eKnowledgePlaceholderReplacementEffect.jsx | 22 - sources-gen/components/Modal/Modal.jsx | 160 - .../components/Modal/ModalIntegration.jsx | 13 - sources-gen/components/Modal/ResetModal.jsx | 19 - .../LanguageSelectionButton.jsx | 103 - sources-gen/components/NavMenu/NavMenu.jsx | 273 -- sources-gen/components/Page/PageContainer.jsx | 42 - sources-gen/components/Page/PageLayout.jsx | 28 - sources-gen/components/Page/PageMetaData.jsx | 78 - sources-gen/components/Picture/Picture.jsx | 8 - .../PlacementAndFinalTestResult.jsx | 225 -- .../PlacementTest/PlacementTest.jsx | 136 - .../ProgressIcon/CertificateIcon.jsx | 30 - .../components/ProgressIcon/ProgressIcon.jsx | 88 - .../ProgressIcon/ProgressIconStar.jsx | 23 - .../ProgressIcon/progressIconColors.jsx | 4 - .../components/ReCaptcha/ReCaptcha.jsx | 19 - .../RestrictedRoute/RestrictedRoute.jsx | 28 - sources-gen/components/RichText/RichText.jsx | 21 - sources-gen/components/Select/Select.jsx | 46 - .../SolveCheckButton/ButtonTemplate.jsx | 26 - .../SolveCheckButton/CheckButton.jsx | 30 - .../SolveCheckButton/SolveButton.jsx | 41 - .../SolveCheckButton/SolveCheckButton.jsx | 48 - .../StandardButton/StandardButton.jsx | 47 - .../StatusFeedback/StatusFeedback.jsx | 38 - sources-gen/components/Text/Text.jsx | 27 - .../ToggleableArrow/ToggleableArrow.jsx | 20 - .../components/Vocabulary/Vocabulary.jsx | 87 - .../components/Vocabulary/VocabularyItem.jsx | 26 - .../VocabularyMoreButton.jsx | 11 - .../components/Vocabulary/VocabularyQuery.jsx | 85 - .../VocabularySearch/VocabularySearch.jsx | 220 -- .../duck/vocabularySearchDuck.jsx | 117 - .../VocabularyTrainer/BubbleContainer.jsx | 11 - .../VocabularyTrainer/VocabularyTrainer.jsx | 100 - .../VocabularyTrainerExercise.jsx | 96 - .../VocabularyTrainerItem.jsx | 125 - .../VocabularyTrainerSmileys.jsx | 64 - .../VocabularyTrainerStart.jsx | 122 - .../VocabularyTrainerStatus.jsx | 47 - .../WithGraphQLQueryHandling.jsx | 26 - .../WithRenderDelay/WithRenderDelay.jsx | 21 - .../components/commons/ErrorMessage.jsx | 10 - .../components/commons/LoadingMessage.jsx | 9 - .../user/ConfirmUserRegistrationContainer.jsx | 28 - .../components/user/PasswordChange.jsx | 90 - sources-gen/components/user/PasswordReset.jsx | 109 - sources-gen/components/user/Registration.jsx | 260 -- .../components/user/SetNewPassword.jsx | 87 - sources-gen/components/user/UserProfile.jsx | 234 -- sources-gen/config.jsx | 29 - sources-gen/constants/countries.jsx | 245 -- sources-gen/constants/feedback.jsx | 55 - .../constants/grammarOverviewColors.jsx | 16 - sources-gen/constants/inquiryMediaTypes.jsx | 6 - sources-gen/constants/isLtrContentOnly.jsx | 19 - sources-gen/constants/keyCodes.jsx | 14 - sources-gen/constants/lessonParts.jsx | 9 - sources-gen/constants/marks.jsx | 5 - sources-gen/constants/menuLanguageCodes.jsx | 22 - sources-gen/constants/pageTypes.jsx | 44 - sources-gen/constants/services.jsx | 7 - sources-gen/constants/tileColors.jsx | 12 - sources-gen/constants/userInputOptions.jsx | 73 - sources-gen/constants/userUrl.jsx | 11 - sources-gen/context/AudioContext.jsx | 26 - sources-gen/context/GlobalsContext.jsx | 6 - sources-gen/context/I18nContext.jsx | 8 - sources-gen/context/rtlContext.jsx | 23 - .../assets/VjsDurationInfoBar.bf4a69ea.js | 36 - .../assets/VjsDurationInfoBar.bf4a69ea.js.map | 1 - .../dist/assets/VjsPlayButton.12b55f32.js | 115 - .../dist/assets/VjsPlayButton.12b55f32.js.map | 1 - sources-gen/dist/assets/index.3c5a3e75.css | 1 - sources-gen/dist/assets/index.962b7ca8.js | 2913 ----------------- sources-gen/dist/assets/index.962b7ca8.js.map | 1 - sources-gen/dist/assets/plugin.b7c20a4b.js | 2 - .../dist/assets/plugin.b7c20a4b.js.map | 1 - sources-gen/dist/assets/vendor.5e871953.js | 184 -- .../dist/assets/vendor.5e871953.js.map | 1 - .../dist/assets/video-js.min.94f84163.css | 1 - sources-gen/dist/assets/video.es.046d6735.js | 54 - .../dist/assets/video.es.046d6735.js.map | 1 - ...eojs-contrib-quality-levels.es.3c9f1f86.js | 2 - ...-contrib-quality-levels.es.3c9f1f86.js.map | 1 - .../videojs-hls-quality-selector.2c84279b.css | 1 - ...ideojs-hls-quality-selector.es.819e7d97.js | 2 - ...js-hls-quality-selector.es.819e7d97.js.map | 1 - .../assets/videojs-seek-buttons.49164b12.css | 1 - sources-gen/dist/index.html | 28 - sources-gen/hooks/useAudio.jsx | 49 - sources-gen/hooks/useCheckSessionTimeout.jsx | 29 - .../useChineseSimpleTraditionalSwitch.jsx | 103 - sources-gen/hooks/useCourseData.jsx | 7 - sources-gen/hooks/useDebounce.jsx | 16 - sources-gen/hooks/useExerciseManager.jsx | 157 - sources-gen/hooks/useFrontendConfig.jsx | 26 - sources-gen/hooks/useIsMountedRef.jsx | 17 - sources-gen/hooks/useLocalStorage.jsx | 45 - sources-gen/hooks/useLocationGetter.jsx | 17 - sources-gen/hooks/useLocationQueryParam.jsx | 8 - sources-gen/hooks/useMetaDescription.jsx | 22 - sources-gen/hooks/useMetaKeywords.jsx | 12 - sources-gen/hooks/useMetaTitle.jsx | 22 - sources-gen/hooks/useMetadata.jsx | 26 - sources-gen/hooks/useRedirectAfterLogOut.jsx | 20 - sources-gen/hooks/useRtl.jsx | 10 - sources-gen/hooks/useScripts.jsx | 33 - sources-gen/hooks/useScrollToTop.jsx | 12 - sources-gen/hooks/useSyncLessonProgress.jsx | 18 - sources-gen/hooks/useTimeout.jsx | 22 - sources-gen/hooks/useToggle.jsx | 20 - sources-gen/hooks/useTransition.jsx | 31 - sources-gen/hooks/useTranslation.jsx | 15 - .../hooks/useValidateTicketAndLoginUser.jsx | 40 - sources-gen/hooks/vocabularySearchHooks.jsx | 62 - sources-gen/imports | 6 - sources-gen/imports.uniq | 21 - sources-gen/index.jsx | 47 - sources-gen/pages/CoursePage.jsx | 87 - sources-gen/pages/DashboardPage.jsx | 70 - sources-gen/pages/Default404Page.jsx | 10 - sources-gen/pages/GrammarOverviewPage.jsx | 89 - sources-gen/pages/GrammarPage.jsx | 47 - sources-gen/pages/HelpPage.jsx | 44 - sources-gen/pages/LegalPage.jsx | 44 - sources-gen/pages/LessonExtrasPage.jsx | 48 - sources-gen/pages/LessonPage.jsx | 87 - sources-gen/pages/LessonSummaryPage.jsx | 60 - sources-gen/pages/MainPage.jsx | 82 - sources-gen/pages/ManuscriptPage.jsx | 55 - .../pages/PlacementAndFinalTestResultPage.jsx | 110 - sources-gen/pages/PlacementTestPage.jsx | 70 - sources-gen/pages/VocabularyPage.jsx | 33 - sources-gen/serviceWorker.jsx | 131 - sources-gen/services/certificateService.jsx | 12 - sources-gen/services/learnProgressService.jsx | 79 - sources-gen/services/passwordService.jsx | 42 - sources-gen/services/userService.jsx | 75 - sources-gen/state/common/apiActions.jsx | 20 - .../state/middlewares/apiMiddleware.jsx | 29 - .../state/mode/lessonExerciseModeDuck.jsx | 55 - .../mode/lessonExerciseModeSelectors.jsx | 7 - sources-gen/state/progress/learnProgress.jsx | 283 -- .../state/progress/learnProgressDuck.jsx | 274 -- .../state/progress/learnProgressSelectors.jsx | 27 - .../state/progress/serverDataFilterUtils.jsx | 46 - sources-gen/state/progress/utils.jsx | 5 - sources-gen/state/rootReducers.jsx | 12 - sources-gen/state/store.jsx | 28 - sources-gen/state/user/userDuck.jsx | 103 - sources-gen/state/user/userSelectors.jsx | 2 - sources-gen/utils/apolloClient.jsx | 55 - sources-gen/utils/audioUtils.jsx | 6 - sources-gen/utils/certificateUtils.jsx | 28 - sources-gen/utils/commons.jsx | 54 - sources-gen/utils/css.jsx | 137 - sources-gen/utils/errorClassAssigner.jsx | 5 - sources-gen/utils/globals.jsx | 10 - sources-gen/utils/htmlUtils.jsx | 10 - sources-gen/utils/i18n.jsx | 55 - sources-gen/utils/imgUtils.jsx | 60 - sources-gen/utils/jsonPath.jsx | 25 - sources-gen/utils/learningLevelUtils.jsx | 15 - sources-gen/utils/lessonUtils.jsx | 71 - sources-gen/utils/mappers/langMapper.jsx | 40 - .../mappers/lessonPartToTranslationCode.jsx | 14 - sources-gen/utils/mappers/passwordReset.jsx | 4 - .../utils/mappers/placementTestCourseIds.jsx | 21 - sources-gen/utils/mappers/rtlLanguages.jsx | 11 - sources-gen/utils/mappers/subtitlesLabel.jsx | 31 - sources-gen/utils/pageMetadata.jsx | 68 - .../utils/replacers/exerciseReplacer.jsx | 16 - sources-gen/utils/replacers/htmlReplacer.jsx | 21 - sources-gen/utils/replacers/imageReplacer.jsx | 82 - .../utils/replacers/knowledgeReplacer.jsx | 22 - .../utils/replacers/replaceCommons.jsx | 22 - .../useImagePlaceholderReplacementEffect.jsx | 14 - sources-gen/utils/ssr.jsx | 7 - sources-gen/utils/url/feedbackHelpers.jsx | 92 - sources-gen/utils/url/pathAnalyser.jsx | 59 - sources-gen/utils/url/url.jsx | 78 - sources-gen/utils/url/urlFactory.jsx | 189 -- sources-gen/utils/url/urlUtils.jsx | 42 - sources-gen/utils/userUtils.jsx | 63 - .../utils/validation/validationMessages.jsx | 30 - sources-gen/utils/validation/validators.jsx | 56 - sources-gen/video/api.jsx | 80 - sources-gen/video/audioPlugins.jsx | 7 - sources-gen/video/useVideoPlayerEffect.jsx | 46 - sources-gen/video/videoPlugins.jsx | 8 - sources-gen/video/videoTypeMatcher.jsx | 14 - sources-gen/video/videojs.jsx | 7 - sources-gen/vite.config.js | 14 - .../Lesson/LessonExercise/Keyboard/index.css | 22 - static/assets/audio/signal_sound_failure.mp3 | Bin 0 -> 7713 bytes static/assets/audio/signal_sound_success.mp3 | Bin 0 -> 20480 bytes .../assets/css/basestyles.css | 0 .../assets/css/customBaku.css | 0 .../assets/css/stylesheets.css | 0 .../dwtheantiquab-w5plain.woff | Bin 0 -> 15432 bytes .../dwtheantiquab-w5plain.woff2 | Bin 0 -> 12604 bytes .../DWTheAntiquaB-W5PlainItalic.woff | Bin 0 -> 145784 bytes .../DWTheAntiquaB-W5PlainItalic.woff2 | Bin 0 -> 124324 bytes .../DWTheAntiquaB-W7Bold.woff | Bin 0 -> 167864 bytes .../DWTheAntiquaB-W7Bold.woff2 | Bin 0 -> 141872 bytes static/assets/images/bg-dw-desktop.jpg | Bin 0 -> 32397 bytes .../landing/course_landing-1200x675.jpg | 117 + .../images/landing/course_landing-480x270.jpg | 117 + .../images/landing/course_landing-768x432.jpg | 117 + .../images/landing/course_landing-992x558.jpg | 117 + static/favicon.png | Bin 0 -> 1077 bytes {sources-gen => static}/index.html | 8 +- static/logo192.png | Bin 0 -> 5347 bytes static/vite.config.js | 22 + 433 files changed, 718 insertions(+), 22946 deletions(-) create mode 100755 extraer.sh delete mode 100644 links rename 0.0c5b2e6a.chunk.js.map => maps/0.0c5b2e6a.chunk.js.map (100%) rename 6.776c1e8b.chunk.js.map => maps/6.776c1e8b.chunk.js.map (100%) rename 7.c65299ef.chunk.css.map => maps/7.c65299ef.chunk.css.map (100%) rename 7.f024fa6c.chunk.js.map => maps/7.f024fa6c.chunk.js.map (100%) rename 8.16508763.chunk.js.map => maps/8.16508763.chunk.js.map (100%) rename main.6c5fc115.chunk.js.map => maps/main.6c5fc115.chunk.js.map (100%) rename main.f50335e4.chunk.css.map => maps/main.f50335e4.chunk.css.map (100%) rename player-custom.19eb3d6e.chunk.js.map => maps/player-custom.19eb3d6e.chunk.js.map (100%) rename playerPlugins-audio.4aa8d1ef.chunk.js.map => maps/playerPlugins-audio.4aa8d1ef.chunk.js.map (100%) rename playerPlugins-audio.dcc31119.chunk.css.map => maps/playerPlugins-audio.dcc31119.chunk.css.map (100%) rename playerPlugins-video.4cb21404.chunk.css.map => maps/playerPlugins-video.4cb21404.chunk.css.map (100%) rename playerPlugins-video.5f4c24a0.chunk.js.map => maps/playerPlugins-video.5f4c24a0.chunk.js.map (100%) create mode 100644 patches/0001-fake-process.env-config.jsx.diff create mode 100644 patches/0002-use-details-in-accordion.diff create mode 100644 patches/0003-fix-broken-exercises.diff create mode 100644 patches/0004-react-render-instead-of-hydrate.diff create mode 100644 patches/0005-no-ssr.diff delete mode 100644 sources-gen/.pnpm-debug.log delete mode 100644 sources-gen/assets/fonts/dw-theAntiquaB-W5Plain-web/dwtheantiquab-w5plain.woff delete mode 100644 sources-gen/assets/fonts/dw-theAntiquaB-W5Plain-web/dwtheantiquab-w5plain.woff2 delete mode 100644 sources-gen/assets/fonts/dw-theAntiquaB-W5PlainItalic-web/DWTheAntiquaB-W5PlainItalic.woff delete mode 100644 sources-gen/assets/fonts/dw-theAntiquaB-W5PlainItalic-web/DWTheAntiquaB-W5PlainItalic.woff2 delete mode 100644 sources-gen/assets/fonts/dw-theAntiquaB-W7Bold-web/DWTheAntiquaB-W7Bold.woff delete mode 100644 sources-gen/assets/fonts/dw-theAntiquaB-W7Bold-web/DWTheAntiquaB-W7Bold.woff2 delete mode 100644 sources-gen/assets/icons/DwClaim.jsx delete mode 100644 sources-gen/assets/icons/DwLogo.jsx delete mode 100644 sources-gen/assets/icons/Smiley.jsx delete mode 100644 sources-gen/assets/icons/ToggleableArrowIcon.jsx delete mode 100644 sources-gen/assets/images/bg-dw-desktop.jpg delete mode 100644 sources-gen/assets/images/landing/course_landing-1200x675.jpg delete mode 100644 sources-gen/assets/images/landing/course_landing-480x270.jpg delete mode 100644 sources-gen/assets/images/landing/course_landing-768x432.jpg delete mode 100644 sources-gen/assets/images/landing/course_landing-992x558.jpg delete mode 100644 sources-gen/assets/svg/dw-claim.svg.js delete mode 100644 sources-gen/assets/svg/dw-logo-mobile.svg.js delete mode 100644 sources-gen/assets/svg/dw-logo-tablet.svg.js delete mode 100644 sources-gen/assets/svg/dw-logo.svg.js delete mode 100644 sources-gen/assets/svg/icon-course-cert-gray.svg.js delete mode 100644 sources-gen/assets/svg/icon-hint-circle-orange.svg.js delete mode 100644 sources-gen/assets/svg/icon-hint.svg.js delete mode 100644 sources-gen/assets/svg/icon-language-world-w.svg.js delete mode 100644 sources-gen/assets/svg/icon-user-navi.svg.js delete mode 100644 sources-gen/assets/svg/keyboard.svg.js delete mode 100644 sources-gen/assets/svg/nav-cross-black-lg.svg.js delete mode 100644 sources-gen/assets/svg/nav-cross-black-md.svg.js delete mode 100644 sources-gen/assets/svg/nav-cross-lg.svg.js delete mode 100644 sources-gen/assets/svg/nav-cross-xs.svg.js delete mode 100644 sources-gen/assets/svg/smiley-negative.svg.js delete mode 100644 sources-gen/assets/svg/smiley-positive.svg.js delete mode 100644 sources-gen/assets/svg/star-gray.svg.js delete mode 100644 sources-gen/assets/svg/star-white.svg.js delete mode 100644 sources-gen/assets/svg/tick.svg.js delete mode 100644 sources-gen/assets/svg/toggleableArrow.svg.js delete mode 100644 sources-gen/components/Accordion/Accordion.jsx delete mode 100644 sources-gen/components/Accordion/AccordionItem/AccordionItem.jsx delete mode 100644 sources-gen/components/App.jsx delete mode 100644 sources-gen/components/BurgerButton/BurgerButton.jsx delete mode 100644 sources-gen/components/Checkbox/Checkbox.jsx delete mode 100644 sources-gen/components/ContentContainer/AccordionContainer.jsx delete mode 100644 sources-gen/components/ContentContainer/AccordionContainer.jsx.orig delete mode 100644 sources-gen/components/ContentContainer/ContentBottomLine/ContentBottomLine.jsx delete mode 100644 sources-gen/components/ContentContainer/ContentContainer.jsx delete mode 100644 sources-gen/components/ContentContainer/ContentHeadline/ContentHeadline.jsx delete mode 100644 sources-gen/components/ContentContainer/ContentNavTitle/ContentNavTitle.jsx delete mode 100644 sources-gen/components/ContentContainer/ContentSection/ContentSection.jsx delete mode 100644 sources-gen/components/Course/CourseHeroImage/CourseHeroImage.jsx delete mode 100644 sources-gen/components/Course/CourseList/CourseAccordion/CourseAccordion.jsx delete mode 100644 sources-gen/components/Course/CourseList/CourseHeader/CourseHeader.jsx delete mode 100644 sources-gen/components/Course/CourseList/CourseList.jsx delete mode 100644 sources-gen/components/Course/CourseList/LessionItem/LessonItem.jsx delete mode 100644 sources-gen/components/Course/CourseList/LessionItem/LessonScore.jsx delete mode 100644 sources-gen/components/Course/CourseList/LessonList/LessonList.jsx delete mode 100644 sources-gen/components/Course/CourseOverview.jsx delete mode 100644 sources-gen/components/Course/Progress/CourseProgress.jsx delete mode 100644 sources-gen/components/Course/Progress/ProgressResetButton.jsx delete mode 100644 sources-gen/components/Dashboard/Dashboard.jsx delete mode 100644 sources-gen/components/Dashboard/Tiles/Tile/BlankTile.jsx delete mode 100644 sources-gen/components/Dashboard/Tiles/Tile/MoreCoursesTile.jsx delete mode 100644 sources-gen/components/Dashboard/Tiles/Tile/Tile.jsx delete mode 100644 sources-gen/components/Dashboard/Tiles/Tiles.jsx delete mode 100644 sources-gen/components/DwPicture/DwPicture.jsx delete mode 100644 sources-gen/components/Footer/Footer.jsx delete mode 100644 sources-gen/components/GdprLayer/BrowserOnly.jsx delete mode 100644 sources-gen/components/GdprLayer/GdprLayer.jsx delete mode 100644 sources-gen/components/GoogleTagManager/GtmDataLayer.jsx delete mode 100644 sources-gen/components/GoogleTagManager/GtmLoadScript.jsx delete mode 100644 sources-gen/components/GoogleTagManager/GtmNoScriptFallback.jsx delete mode 100644 sources-gen/components/GoogleTagManager/GtmScriptWithDataLayer.jsx delete mode 100644 sources-gen/components/GoogleTagManager/TrackingUtils.jsx delete mode 100644 sources-gen/components/GoogleTagManager/hooks/useAddEmbeddingsToGtm.jsx delete mode 100644 sources-gen/components/GoogleTagManager/hooks/useMediaTracking.jsx delete mode 100644 sources-gen/components/GoogleTagManager/hooks/useMediaTracking.jsx.orig delete mode 100644 sources-gen/components/GoogleTagManager/hooks/useStaticInfoForGtm.jsx delete mode 100644 sources-gen/components/GoogleTagManager/index.jsx delete mode 100644 sources-gen/components/GrammarItem/GrammarItem.jsx delete mode 100644 sources-gen/components/GrammarOverview/GrammarOverview.jsx delete mode 100644 sources-gen/components/GrammarOverview/GrammarOverviewHeader.jsx delete mode 100644 sources-gen/components/Header/ChineseVariantSwitch.jsx delete mode 100644 sources-gen/components/Header/DesktopBanner.jsx delete mode 100644 sources-gen/components/Header/Header.jsx delete mode 100644 sources-gen/components/Header/MobileBanner.jsx delete mode 100644 sources-gen/components/Header/NavigationContainer/NavigationContainer.jsx delete mode 100644 sources-gen/components/Header/NavigationContainer/OnlyDesktopBrand.jsx delete mode 100644 sources-gen/components/Help/Help.jsx delete mode 100644 sources-gen/components/HeroTemplate/HeroTemplate.jsx delete mode 100644 sources-gen/components/I18n/I18nConfigLoader.jsx delete mode 100644 sources-gen/components/I18n/I18nText.jsx delete mode 100644 sources-gen/components/IconBar/IconBar.jsx delete mode 100644 sources-gen/components/ImageOGMetaData/ImageOGMetaData.jsx delete mode 100644 sources-gen/components/Input/BirthDateInput/BirthDateInput.jsx delete mode 100644 sources-gen/components/Input/Input.jsx delete mode 100644 sources-gen/components/Input/NewPassword/NewPasswordInputs.jsx delete mode 100644 sources-gen/components/Input/TextAreaInput/TextAreaInput.jsx delete mode 100644 sources-gen/components/LearnProgressIcon/LearnProgressIcon.jsx delete mode 100644 sources-gen/components/LegalNotice/LegalNotice.jsx delete mode 100644 sources-gen/components/Lesson/Lesson.jsx delete mode 100644 sources-gen/components/Lesson/LessonContentDescription/LessonContentDescription.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/ClozeExercise/AnswerTypes/ChooseAnswer.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/ClozeExercise/AnswerTypes/ContainerTextContent.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/ClozeExercise/AnswerTypes/PulldownAnswer.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/ClozeExercise/AnswerTypes/WritingAnswer.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/ClozeExercise/ClozeExercise.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/ClozeExercise/ClozeExerciseRow.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/ClozeExercise/ClozeInput.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/ClozeExercise/ClozePulldown.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/ClozeExercise/ExerciseRichText.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/ClozeExercise/clozeExerciseUtils.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/ClozeExercise/usePlaceholderReplacementEffect.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/DictationExercise/DictationExercise.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/DictationExercise/DictationExerciseRow.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/Keyboard/KeyboardIcon.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/Keyboard/KeyboardWrapper.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/Keyboard/index.css delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseAnswer/ExerciseAnswer.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseAnswer/LessonExerciseImageAnswer/LessonExerciseImageAnswer.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseAnswer/LessonExerciseTextAnswer/LessonExerciseTextAnswer.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseAnswer/answerState.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseHeadline/LessonExerciseHeadline.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseHiddenAudio/LessonExerciseHiddenAudio.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseHiddenAudio/LessonExerciseSoundFailureHiddenAudio.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseHiddenAudio/LessonExerciseSoundSuccessHiddenAudio.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseHint/LessonExerciseHint.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseItem/ExerciseLeavingPrompt.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseItem/LessonExerciseItem.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseItem/LessonExerciseItem.jsx.orig delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseNavigation/LessonExerciseNavigation.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseQuestion/LessonExerciseQuestion.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseQuestion/QuestionTypes/LessonExerciseQuestionAudio.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseQuestion/QuestionTypes/LessonExerciseQuestionImage.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseQuestion/QuestionTypes/LessonExerciseQuestionText.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseQuestion/QuestionTypes/LessonExerciseQuestionVideo.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseQuestion/QuestionTypes/questionTypes.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseResult/ExerciseAction.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseResult/LessonExerciseResult.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseResult/Summary.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseStats/LessonExerciseStats.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/LessonExerciseTextInput/LessonExerciseTextInput.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/ManyToManyExercise/ManyToManyAnswer/ManyToManyAnswer.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/ManyToManyExercise/ManyToManyExercise.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/ManyToManyExercise/ManyToManyQuestionRow/ManyToManyQuestionRow.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/ManyToManyExercise/ManyToManyQuestionRow/manyToManyQuestionRowReducer.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/MultiSelectionExercise/MultiSelectionExercise.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/MultiSelectionExercise/MultiSelectionQuestionRow.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/RepeatExercise/RepeatExercise.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/RepeatExercise/RepeatExerciseRow.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/RepeatExercise/SelfAssessment/SelfAssessment.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/RepeatExercise/SelfAssessment/SelfAssessmentAnswer.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/RepeatExercise/SelfAssessment/SelfAssessmentQuestion.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/SingleSelectionExercise/SingleSelectionExercise.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/SingleSelectionExercise/SingleSelectionQuestionRow/SingleSelectionQuestionRow.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/SortingExercise/SortingExercise.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/SortingExercise/SortingExerciseRow.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/utils/exerciseUtils.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/workflow/ExerciseProgress.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/workflow/inquiryState.jsx delete mode 100644 sources-gen/components/Lesson/LessonExercise/workflow/useInquiryHandling.jsx delete mode 100644 sources-gen/components/Lesson/LessonExtras/LessonExtras.jsx delete mode 100644 sources-gen/components/Lesson/LessonExtras/Links/ArticleLinks.jsx delete mode 100644 sources-gen/components/Lesson/LessonExtras/Links/AudioLinks.jsx delete mode 100644 sources-gen/components/Lesson/LessonExtras/Links/DownloadLinks.jsx delete mode 100644 sources-gen/components/Lesson/LessonExtras/Links/VideoLinks.jsx delete mode 100644 sources-gen/components/Lesson/LessonInformation/LessonInformation.jsx delete mode 100644 sources-gen/components/Lesson/LessonKnowledge/LessonKnowledge.jsx delete mode 100644 sources-gen/components/Lesson/LessonKnowledgeNavigation/LessonKnowledgeNavigation.jsx delete mode 100644 sources-gen/components/Lesson/LessonKnowledgeNavigation/NavigationRow/NavigationRow.jsx delete mode 100644 sources-gen/components/Lesson/LessonMenu/LessonMenu.jsx delete mode 100644 sources-gen/components/Lesson/LessonMenu/LessonMenuItem/LessonMenuItem.jsx delete mode 100644 sources-gen/components/Lesson/LessonMenu/LessonTitleAndBurgerButton/LessonBurgerButton.jsx delete mode 100644 sources-gen/components/Lesson/LessonMenu/LessonTitleAndBurgerButton/LessonTitle.jsx delete mode 100644 sources-gen/components/Lesson/LessonSummary/LessonSummary.jsx delete mode 100644 sources-gen/components/Lesson/LessonVocabulary/LessonVocabulary.jsx delete mode 100644 sources-gen/components/Lesson/LessonVocabulary/VocabularyRow/VocabularyRow.jsx delete mode 100644 sources-gen/components/Lesson/MediaInputChooser/MediaInputChooser.jsx delete mode 100644 sources-gen/components/Logo/Logo.jsx delete mode 100644 sources-gen/components/MainHeroImage/MainHeroImage.jsx delete mode 100644 sources-gen/components/Manuscript/Manuscript.jsx delete mode 100644 sources-gen/components/MediaInput/MediaInputAudio/MediaInputAudio.jsx delete mode 100644 sources-gen/components/MediaInput/MediaInputImage/MediaInputImage.jsx delete mode 100644 sources-gen/components/MediaInput/MediaInputVideo/CustomPlayerComponents/InfoBar/InfoBar.jsx delete mode 100644 sources-gen/components/MediaInput/MediaInputVideo/CustomPlayerComponents/InfoBar/VjsDurationInfoBar.jsx delete mode 100644 sources-gen/components/MediaInput/MediaInputVideo/CustomPlayerComponents/PlayButton/Button.jsx delete mode 100644 sources-gen/components/MediaInput/MediaInputVideo/CustomPlayerComponents/PlayButton/Play.jsx delete mode 100644 sources-gen/components/MediaInput/MediaInputVideo/CustomPlayerComponents/PlayButton/VjsPlayButton.jsx delete mode 100644 sources-gen/components/MediaInput/MediaInputVideo/CustomPlayerComponents/PlayButton/play.svg.js delete mode 100644 sources-gen/components/MediaInput/MediaInputVideo/CustomPlayerComponents/vjsComponentUtils.jsx delete mode 100644 sources-gen/components/MediaInput/MediaInputVideo/MediaInputVideo.jsx delete mode 100644 sources-gen/components/MediaInput/MediaInputVideo/MediaInputVideo.jsx.orig delete mode 100644 sources-gen/components/Modal/DeleteAccountModal/DeleteAccountModal.jsx delete mode 100644 sources-gen/components/Modal/DisableScrollingStyles.jsx delete mode 100644 sources-gen/components/Modal/KnowledgeModal/Knowledge.jsx delete mode 100644 sources-gen/components/Modal/KnowledgeModal/KnowledgeModal.jsx delete mode 100644 sources-gen/components/Modal/KnowledgeModal/useKnowledgePlaceholderReplacementEffect.jsx delete mode 100644 sources-gen/components/Modal/Modal.jsx delete mode 100644 sources-gen/components/Modal/ModalIntegration.jsx delete mode 100644 sources-gen/components/Modal/ResetModal.jsx delete mode 100644 sources-gen/components/NavMenu/LanguageSelectionButton/LanguageSelectionButton.jsx delete mode 100644 sources-gen/components/NavMenu/NavMenu.jsx delete mode 100644 sources-gen/components/Page/PageContainer.jsx delete mode 100644 sources-gen/components/Page/PageLayout.jsx delete mode 100644 sources-gen/components/Page/PageMetaData.jsx delete mode 100644 sources-gen/components/Picture/Picture.jsx delete mode 100644 sources-gen/components/PlacementResult/PlacementAndFinalTestResult.jsx delete mode 100644 sources-gen/components/PlacementTest/PlacementTest.jsx delete mode 100644 sources-gen/components/ProgressIcon/CertificateIcon.jsx delete mode 100644 sources-gen/components/ProgressIcon/ProgressIcon.jsx delete mode 100644 sources-gen/components/ProgressIcon/ProgressIconStar.jsx delete mode 100644 sources-gen/components/ProgressIcon/progressIconColors.jsx delete mode 100644 sources-gen/components/ReCaptcha/ReCaptcha.jsx delete mode 100644 sources-gen/components/RestrictedRoute/RestrictedRoute.jsx delete mode 100644 sources-gen/components/RichText/RichText.jsx delete mode 100644 sources-gen/components/Select/Select.jsx delete mode 100644 sources-gen/components/SolveCheckButton/ButtonTemplate.jsx delete mode 100644 sources-gen/components/SolveCheckButton/CheckButton.jsx delete mode 100644 sources-gen/components/SolveCheckButton/SolveButton.jsx delete mode 100644 sources-gen/components/SolveCheckButton/SolveCheckButton.jsx delete mode 100644 sources-gen/components/StandardButton/StandardButton.jsx delete mode 100644 sources-gen/components/StatusFeedback/StatusFeedback.jsx delete mode 100644 sources-gen/components/Text/Text.jsx delete mode 100644 sources-gen/components/ToggleableArrow/ToggleableArrow.jsx delete mode 100644 sources-gen/components/Vocabulary/Vocabulary.jsx delete mode 100644 sources-gen/components/Vocabulary/VocabularyItem.jsx delete mode 100644 sources-gen/components/Vocabulary/VocabularyMoreButton/VocabularyMoreButton.jsx delete mode 100644 sources-gen/components/Vocabulary/VocabularyQuery.jsx delete mode 100644 sources-gen/components/Vocabulary/VocabularySearch/VocabularySearch.jsx delete mode 100644 sources-gen/components/Vocabulary/VocabularySearch/duck/vocabularySearchDuck.jsx delete mode 100644 sources-gen/components/VocabularyTrainer/BubbleContainer.jsx delete mode 100644 sources-gen/components/VocabularyTrainer/VocabularyTrainer.jsx delete mode 100644 sources-gen/components/VocabularyTrainer/VocabularyTrainerExercise.jsx delete mode 100644 sources-gen/components/VocabularyTrainer/VocabularyTrainerItem.jsx delete mode 100644 sources-gen/components/VocabularyTrainer/VocabularyTrainerSmileys.jsx delete mode 100644 sources-gen/components/VocabularyTrainer/VocabularyTrainerStart.jsx delete mode 100644 sources-gen/components/VocabularyTrainer/VocabularyTrainerStatus.jsx delete mode 100644 sources-gen/components/WithGraphQLQueryHandling/WithGraphQLQueryHandling.jsx delete mode 100644 sources-gen/components/WithRenderDelay/WithRenderDelay.jsx delete mode 100644 sources-gen/components/commons/ErrorMessage.jsx delete mode 100644 sources-gen/components/commons/LoadingMessage.jsx delete mode 100644 sources-gen/components/user/ConfirmUserRegistrationContainer.jsx delete mode 100644 sources-gen/components/user/PasswordChange.jsx delete mode 100644 sources-gen/components/user/PasswordReset.jsx delete mode 100644 sources-gen/components/user/Registration.jsx delete mode 100644 sources-gen/components/user/SetNewPassword.jsx delete mode 100644 sources-gen/components/user/UserProfile.jsx delete mode 100644 sources-gen/config.jsx delete mode 100644 sources-gen/constants/countries.jsx delete mode 100644 sources-gen/constants/feedback.jsx delete mode 100644 sources-gen/constants/grammarOverviewColors.jsx delete mode 100644 sources-gen/constants/inquiryMediaTypes.jsx delete mode 100644 sources-gen/constants/isLtrContentOnly.jsx delete mode 100644 sources-gen/constants/keyCodes.jsx delete mode 100644 sources-gen/constants/lessonParts.jsx delete mode 100644 sources-gen/constants/marks.jsx delete mode 100644 sources-gen/constants/menuLanguageCodes.jsx delete mode 100644 sources-gen/constants/pageTypes.jsx delete mode 100644 sources-gen/constants/services.jsx delete mode 100644 sources-gen/constants/tileColors.jsx delete mode 100644 sources-gen/constants/userInputOptions.jsx delete mode 100644 sources-gen/constants/userUrl.jsx delete mode 100644 sources-gen/context/AudioContext.jsx delete mode 100644 sources-gen/context/GlobalsContext.jsx delete mode 100644 sources-gen/context/I18nContext.jsx delete mode 100644 sources-gen/context/rtlContext.jsx delete mode 100644 sources-gen/dist/assets/VjsDurationInfoBar.bf4a69ea.js delete mode 100644 sources-gen/dist/assets/VjsDurationInfoBar.bf4a69ea.js.map delete mode 100644 sources-gen/dist/assets/VjsPlayButton.12b55f32.js delete mode 100644 sources-gen/dist/assets/VjsPlayButton.12b55f32.js.map delete mode 100644 sources-gen/dist/assets/index.3c5a3e75.css delete mode 100644 sources-gen/dist/assets/index.962b7ca8.js delete mode 100644 sources-gen/dist/assets/index.962b7ca8.js.map delete mode 100644 sources-gen/dist/assets/plugin.b7c20a4b.js delete mode 100644 sources-gen/dist/assets/plugin.b7c20a4b.js.map delete mode 100644 sources-gen/dist/assets/vendor.5e871953.js delete mode 100644 sources-gen/dist/assets/vendor.5e871953.js.map delete mode 100644 sources-gen/dist/assets/video-js.min.94f84163.css delete mode 100644 sources-gen/dist/assets/video.es.046d6735.js delete mode 100644 sources-gen/dist/assets/video.es.046d6735.js.map delete mode 100644 sources-gen/dist/assets/videojs-contrib-quality-levels.es.3c9f1f86.js delete mode 100644 sources-gen/dist/assets/videojs-contrib-quality-levels.es.3c9f1f86.js.map delete mode 100644 sources-gen/dist/assets/videojs-hls-quality-selector.2c84279b.css delete mode 100644 sources-gen/dist/assets/videojs-hls-quality-selector.es.819e7d97.js delete mode 100644 sources-gen/dist/assets/videojs-hls-quality-selector.es.819e7d97.js.map delete mode 100644 sources-gen/dist/assets/videojs-seek-buttons.49164b12.css delete mode 100644 sources-gen/dist/index.html delete mode 100644 sources-gen/hooks/useAudio.jsx delete mode 100644 sources-gen/hooks/useCheckSessionTimeout.jsx delete mode 100644 sources-gen/hooks/useChineseSimpleTraditionalSwitch.jsx delete mode 100644 sources-gen/hooks/useCourseData.jsx delete mode 100644 sources-gen/hooks/useDebounce.jsx delete mode 100644 sources-gen/hooks/useExerciseManager.jsx delete mode 100644 sources-gen/hooks/useFrontendConfig.jsx delete mode 100644 sources-gen/hooks/useIsMountedRef.jsx delete mode 100644 sources-gen/hooks/useLocalStorage.jsx delete mode 100644 sources-gen/hooks/useLocationGetter.jsx delete mode 100644 sources-gen/hooks/useLocationQueryParam.jsx delete mode 100644 sources-gen/hooks/useMetaDescription.jsx delete mode 100644 sources-gen/hooks/useMetaKeywords.jsx delete mode 100644 sources-gen/hooks/useMetaTitle.jsx delete mode 100644 sources-gen/hooks/useMetadata.jsx delete mode 100644 sources-gen/hooks/useRedirectAfterLogOut.jsx delete mode 100644 sources-gen/hooks/useRtl.jsx delete mode 100644 sources-gen/hooks/useScripts.jsx delete mode 100644 sources-gen/hooks/useScrollToTop.jsx delete mode 100644 sources-gen/hooks/useSyncLessonProgress.jsx delete mode 100644 sources-gen/hooks/useTimeout.jsx delete mode 100644 sources-gen/hooks/useToggle.jsx delete mode 100644 sources-gen/hooks/useTransition.jsx delete mode 100644 sources-gen/hooks/useTranslation.jsx delete mode 100644 sources-gen/hooks/useValidateTicketAndLoginUser.jsx delete mode 100644 sources-gen/hooks/vocabularySearchHooks.jsx delete mode 100644 sources-gen/imports delete mode 100644 sources-gen/imports.uniq delete mode 100644 sources-gen/index.jsx delete mode 100644 sources-gen/pages/CoursePage.jsx delete mode 100644 sources-gen/pages/DashboardPage.jsx delete mode 100644 sources-gen/pages/Default404Page.jsx delete mode 100644 sources-gen/pages/GrammarOverviewPage.jsx delete mode 100644 sources-gen/pages/GrammarPage.jsx delete mode 100644 sources-gen/pages/HelpPage.jsx delete mode 100644 sources-gen/pages/LegalPage.jsx delete mode 100644 sources-gen/pages/LessonExtrasPage.jsx delete mode 100644 sources-gen/pages/LessonPage.jsx delete mode 100644 sources-gen/pages/LessonSummaryPage.jsx delete mode 100644 sources-gen/pages/MainPage.jsx delete mode 100644 sources-gen/pages/ManuscriptPage.jsx delete mode 100644 sources-gen/pages/PlacementAndFinalTestResultPage.jsx delete mode 100644 sources-gen/pages/PlacementTestPage.jsx delete mode 100644 sources-gen/pages/VocabularyPage.jsx delete mode 100644 sources-gen/serviceWorker.jsx delete mode 100644 sources-gen/services/certificateService.jsx delete mode 100644 sources-gen/services/learnProgressService.jsx delete mode 100644 sources-gen/services/passwordService.jsx delete mode 100644 sources-gen/services/userService.jsx delete mode 100644 sources-gen/state/common/apiActions.jsx delete mode 100644 sources-gen/state/middlewares/apiMiddleware.jsx delete mode 100644 sources-gen/state/mode/lessonExerciseModeDuck.jsx delete mode 100644 sources-gen/state/mode/lessonExerciseModeSelectors.jsx delete mode 100644 sources-gen/state/progress/learnProgress.jsx delete mode 100644 sources-gen/state/progress/learnProgressDuck.jsx delete mode 100644 sources-gen/state/progress/learnProgressSelectors.jsx delete mode 100644 sources-gen/state/progress/serverDataFilterUtils.jsx delete mode 100644 sources-gen/state/progress/utils.jsx delete mode 100644 sources-gen/state/rootReducers.jsx delete mode 100644 sources-gen/state/store.jsx delete mode 100644 sources-gen/state/user/userDuck.jsx delete mode 100644 sources-gen/state/user/userSelectors.jsx delete mode 100644 sources-gen/utils/apolloClient.jsx delete mode 100644 sources-gen/utils/audioUtils.jsx delete mode 100644 sources-gen/utils/certificateUtils.jsx delete mode 100644 sources-gen/utils/commons.jsx delete mode 100644 sources-gen/utils/css.jsx delete mode 100644 sources-gen/utils/errorClassAssigner.jsx delete mode 100644 sources-gen/utils/globals.jsx delete mode 100644 sources-gen/utils/htmlUtils.jsx delete mode 100644 sources-gen/utils/i18n.jsx delete mode 100644 sources-gen/utils/imgUtils.jsx delete mode 100644 sources-gen/utils/jsonPath.jsx delete mode 100644 sources-gen/utils/learningLevelUtils.jsx delete mode 100644 sources-gen/utils/lessonUtils.jsx delete mode 100644 sources-gen/utils/mappers/langMapper.jsx delete mode 100644 sources-gen/utils/mappers/lessonPartToTranslationCode.jsx delete mode 100644 sources-gen/utils/mappers/passwordReset.jsx delete mode 100644 sources-gen/utils/mappers/placementTestCourseIds.jsx delete mode 100644 sources-gen/utils/mappers/rtlLanguages.jsx delete mode 100644 sources-gen/utils/mappers/subtitlesLabel.jsx delete mode 100644 sources-gen/utils/pageMetadata.jsx delete mode 100644 sources-gen/utils/replacers/exerciseReplacer.jsx delete mode 100644 sources-gen/utils/replacers/htmlReplacer.jsx delete mode 100644 sources-gen/utils/replacers/imageReplacer.jsx delete mode 100644 sources-gen/utils/replacers/knowledgeReplacer.jsx delete mode 100644 sources-gen/utils/replacers/replaceCommons.jsx delete mode 100644 sources-gen/utils/replacers/useImagePlaceholderReplacementEffect.jsx delete mode 100644 sources-gen/utils/ssr.jsx delete mode 100644 sources-gen/utils/url/feedbackHelpers.jsx delete mode 100644 sources-gen/utils/url/pathAnalyser.jsx delete mode 100644 sources-gen/utils/url/url.jsx delete mode 100644 sources-gen/utils/url/urlFactory.jsx delete mode 100644 sources-gen/utils/url/urlUtils.jsx delete mode 100644 sources-gen/utils/userUtils.jsx delete mode 100644 sources-gen/utils/validation/validationMessages.jsx delete mode 100644 sources-gen/utils/validation/validators.jsx delete mode 100644 sources-gen/video/api.jsx delete mode 100644 sources-gen/video/audioPlugins.jsx delete mode 100644 sources-gen/video/useVideoPlayerEffect.jsx delete mode 100644 sources-gen/video/videoPlugins.jsx delete mode 100644 sources-gen/video/videoTypeMatcher.jsx delete mode 100644 sources-gen/video/videojs.jsx delete mode 100644 sources-gen/vite.config.js delete mode 100644 sources-gen/webpack:/src/components/Lesson/LessonExercise/Keyboard/index.css create mode 100644 static/assets/audio/signal_sound_failure.mp3 create mode 100644 static/assets/audio/signal_sound_success.mp3 rename {sources-gen => static}/assets/css/basestyles.css (100%) rename {sources-gen => static}/assets/css/customBaku.css (100%) rename {sources-gen => static}/assets/css/stylesheets.css (100%) create mode 100644 static/assets/fonts/dw-theAntiquaB-W5Plain-web/dwtheantiquab-w5plain.woff create mode 100644 static/assets/fonts/dw-theAntiquaB-W5Plain-web/dwtheantiquab-w5plain.woff2 create mode 100644 static/assets/fonts/dw-theAntiquaB-W5PlainItalic-web/DWTheAntiquaB-W5PlainItalic.woff create mode 100644 static/assets/fonts/dw-theAntiquaB-W5PlainItalic-web/DWTheAntiquaB-W5PlainItalic.woff2 create mode 100644 static/assets/fonts/dw-theAntiquaB-W7Bold-web/DWTheAntiquaB-W7Bold.woff create mode 100644 static/assets/fonts/dw-theAntiquaB-W7Bold-web/DWTheAntiquaB-W7Bold.woff2 create mode 100644 static/assets/images/bg-dw-desktop.jpg create mode 100644 static/assets/images/landing/course_landing-1200x675.jpg create mode 100644 static/assets/images/landing/course_landing-480x270.jpg create mode 100644 static/assets/images/landing/course_landing-768x432.jpg create mode 100644 static/assets/images/landing/course_landing-992x558.jpg create mode 100644 static/favicon.png rename {sources-gen => static}/index.html (94%) create mode 100644 static/logo192.png create mode 100644 static/vite.config.js diff --git a/.gitignore b/.gitignore index c2658d7..61195d5 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ node_modules/ +orig/ diff --git a/README.md b/README.md index a78247e..c3e4404 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,16 @@ # [Arreglando bugs ajenos](https://nulo.in/Arreglando%20bugs%20ajenos.html) -Pista: el código está en `sources-gen/`. Añadí la config de nginx de learngerman.nulo.in en `learngerman.nulo.in.conf`. +Este repositorio contiene los mapas descargados y assets junto a los scripts y parches para extraer y levantar con Vite. Añadí la config de nginx de learngerman.nulo.in en `learngerman.nulo.in.conf`. + +## Levantar + +```sh +pnpm install +./extraer.sh +pnpm run dev +# El servidor local tiene un proxy a learngerman.dw.com para la API y el login. +``` + +## Actualizar código + +Descargar nuevos mapas a `maps/`. Extraer con `./extraer.sh`. Ver si se necesitan assets nuevos con `grep -r assets orig/`. diff --git a/extraer.sh b/extraer.sh new file mode 100755 index 0000000..99286d3 --- /dev/null +++ b/extraer.sh @@ -0,0 +1,40 @@ +#!/bin/sh +big () { + echo '===================================' + echo "$1" + echo '===================================' +} + +rm -rf orig +mkdir -p orig +cd orig || exit + +big 'Extrayendo código de los source maps' +for f in ../maps/*.map; do + node ../source-from-sourcemaps.js "$f" +done +mv sources-gen/* . +rm -r sources-gen +# Por alguna razón un CSS se extrae ahí +cp -r src/components/* ./components/ + +big '.js -> .jsx' +find . -iname '*.js' -exec mv {} {}x \; + +big 'Parcheando .svg' +find . -iname '*.svg' -exec sh -c ' + echo "const __webpack_public_path__ = \"https://learngerman.dw.com/\";" > "${1}.js" + cat "$1" >> "${1}.js" + rm "$1" +' sh {} \; + +big 'Copiando archivos de static/' +cp -r ../static/* ./ + +big 'Parcheando...' +for f in ../patches/*; do + echo "--> Parche $f" + patch -p1 < "$f" +done + +big 'DONE. Código extraido en "orig".' diff --git a/links b/links deleted file mode 100644 index 37d9425..0000000 --- a/links +++ /dev/null @@ -1,4 +0,0 @@ -https://learngerman.dw.com/static/css/main.f50335e4.chunk.css.map -https://learngerman.dw.com/static/css/7.c65299ef.chunk.css.map -https://learngerman.dw.com/static/css/playerPlugins-video.4cb21404.chunk.css.map -https://learngerman.dw.com/static/css/playerPlugins-audio.dcc31119.chunk.css.map diff --git a/0.0c5b2e6a.chunk.js.map b/maps/0.0c5b2e6a.chunk.js.map similarity index 100% rename from 0.0c5b2e6a.chunk.js.map rename to maps/0.0c5b2e6a.chunk.js.map diff --git a/6.776c1e8b.chunk.js.map b/maps/6.776c1e8b.chunk.js.map similarity index 100% rename from 6.776c1e8b.chunk.js.map rename to maps/6.776c1e8b.chunk.js.map diff --git a/7.c65299ef.chunk.css.map b/maps/7.c65299ef.chunk.css.map similarity index 100% rename from 7.c65299ef.chunk.css.map rename to maps/7.c65299ef.chunk.css.map diff --git a/7.f024fa6c.chunk.js.map b/maps/7.f024fa6c.chunk.js.map similarity index 100% rename from 7.f024fa6c.chunk.js.map rename to maps/7.f024fa6c.chunk.js.map diff --git a/8.16508763.chunk.js.map b/maps/8.16508763.chunk.js.map similarity index 100% rename from 8.16508763.chunk.js.map rename to maps/8.16508763.chunk.js.map diff --git a/main.6c5fc115.chunk.js.map b/maps/main.6c5fc115.chunk.js.map similarity index 100% rename from main.6c5fc115.chunk.js.map rename to maps/main.6c5fc115.chunk.js.map diff --git a/main.f50335e4.chunk.css.map b/maps/main.f50335e4.chunk.css.map similarity index 100% rename from main.f50335e4.chunk.css.map rename to maps/main.f50335e4.chunk.css.map diff --git a/player-custom.19eb3d6e.chunk.js.map b/maps/player-custom.19eb3d6e.chunk.js.map similarity index 100% rename from player-custom.19eb3d6e.chunk.js.map rename to maps/player-custom.19eb3d6e.chunk.js.map diff --git a/playerPlugins-audio.4aa8d1ef.chunk.js.map b/maps/playerPlugins-audio.4aa8d1ef.chunk.js.map similarity index 100% rename from playerPlugins-audio.4aa8d1ef.chunk.js.map rename to maps/playerPlugins-audio.4aa8d1ef.chunk.js.map diff --git a/playerPlugins-audio.dcc31119.chunk.css.map b/maps/playerPlugins-audio.dcc31119.chunk.css.map similarity index 100% rename from playerPlugins-audio.dcc31119.chunk.css.map rename to maps/playerPlugins-audio.dcc31119.chunk.css.map diff --git a/playerPlugins-video.4cb21404.chunk.css.map b/maps/playerPlugins-video.4cb21404.chunk.css.map similarity index 100% rename from playerPlugins-video.4cb21404.chunk.css.map rename to maps/playerPlugins-video.4cb21404.chunk.css.map diff --git a/playerPlugins-video.5f4c24a0.chunk.js.map b/maps/playerPlugins-video.5f4c24a0.chunk.js.map similarity index 100% rename from playerPlugins-video.5f4c24a0.chunk.js.map rename to maps/playerPlugins-video.5f4c24a0.chunk.js.map diff --git a/package.json b/package.json index ee9fc29..2e34cbf 100644 --- a/package.json +++ b/package.json @@ -1,4 +1,7 @@ { + "scripts": { + "dev": "cd orig/ && vite" + }, "dependencies": { "@apollo/client": "^3.4.16", "classnames": "^2.3.1", diff --git a/patches/0001-fake-process.env-config.jsx.diff b/patches/0001-fake-process.env-config.jsx.diff new file mode 100644 index 0000000..971e5f9 --- /dev/null +++ b/patches/0001-fake-process.env-config.jsx.diff @@ -0,0 +1,14 @@ +--- orig/config.jsx 2021-10-11 20:14:31.701314123 -0300 ++++ sources-gen/config.jsx 2021-10-11 20:12:23.251741729 -0300 +@@ -1,3 +1,11 @@ ++const process = { ++ env: { ++ //REACT_APP_GRAPHQL_BASE_URL: "https://learngerman.dw.com/graphql", ++ REACT_APP_GRAPHQL_BASE_URL: import.meta.env.VITE_GRAPHQL_BASE_URL, ++ REACT_APP_RECAPTCHA_SITEKEY: null, ++ } ++} ++ + const config = { + graphQL: { + baseUrl: process.env.REACT_APP_GRAPHQL_BASE_URL || '/graphql', diff --git a/patches/0002-use-details-in-accordion.diff b/patches/0002-use-details-in-accordion.diff new file mode 100644 index 0000000..46185ba --- /dev/null +++ b/patches/0002-use-details-in-accordion.diff @@ -0,0 +1,50 @@ +--- orig/components/ContentContainer/AccordionContainer.jsx 2021-10-11 20:30:09.799665485 -0300 ++++ sources-gen/components/ContentContainer/AccordionContainer.jsx 2021-10-11 15:49:17.793082410 -0300 +@@ -6,43 +6,26 @@ + import { useTranslation } from '../../hooks/useTranslation'; + + export const AccordionContainer = ({ title, children, className }) => { +- const element = useRef(null); +- const [isOpen, { toggleOnClick }] = useToggle(); +- const height = element.current ? element.current.scrollHeight : '0'; + const titleTranslation = useTranslation(title); + + return ( +-
+-
++
++ +
+- +
+-
++ + + {children} + +-
++ + ); + }; + + export const AccordionContainerContent = styled.div` +- max-height: ${({ isOpen, height }) => (isOpen ? height : '1')}px; + overflow: hidden; + background-color: ${colors.LG_WHITE}; + transition: max-height 0.7s; diff --git a/patches/0003-fix-broken-exercises.diff b/patches/0003-fix-broken-exercises.diff new file mode 100644 index 0000000..504195d --- /dev/null +++ b/patches/0003-fix-broken-exercises.diff @@ -0,0 +1,28 @@ +--- orig/components/Lesson/LessonExercise/LessonExerciseItem/LessonExerciseItem.jsx 2021-10-11 20:29:07.983390638 -0300 ++++ sources-gen/components/Lesson/LessonExercise/LessonExerciseItem/LessonExerciseItem.jsx 2021-10-11 14:15:46.480142077 -0300 +@@ -91,12 +91,20 @@ + + + ); ++ // XXX: Here is the problem. These exercises return inputType == 'VIDEO' ++ // even though they don't have any videos (videos == []) causing some ++ // code that assumes that there is a video inside videos to fail ++ // (the MediaInputVideo component.) + case 'VIDEO': +- return ( +-
+- +-
+- ); ++ // This "if" is our patch. If it isn't true, it fallsthrough to the default ++ // behaviour (returning null.) ++ if (data.content.videos.length > 0) { ++ return ( ++
++ ++
++ ); ++ } + default: + return null; + } diff --git a/patches/0004-react-render-instead-of-hydrate.diff b/patches/0004-react-render-instead-of-hydrate.diff new file mode 100644 index 0000000..641e784 --- /dev/null +++ b/patches/0004-react-render-instead-of-hydrate.diff @@ -0,0 +1,11 @@ +--- orig/index.jsx 2021-10-11 21:08:09.858345720 -0300 ++++ sources-gen/index.jsx 2021-10-11 21:09:05.158218059 -0300 +@@ -30,7 +30,7 @@ + cache: cache.restore(window.__APOLLO_STATE__), // eslint-disable-line no-underscore-dangle + }); + +-ReactDOM.hydrate( ++ReactDOM.render( + + + diff --git a/patches/0005-no-ssr.diff b/patches/0005-no-ssr.diff new file mode 100644 index 0000000..46d2baa --- /dev/null +++ b/patches/0005-no-ssr.diff @@ -0,0 +1,11 @@ +--- orig/utils/ssr.jsx 2021-10-11 21:17:02.041396123 -0300 ++++ sources-gen/utils/ssr.jsx 2021-10-11 21:22:17.825984088 -0300 +@@ -1,7 +1,3 @@ +-function isServer() { ++export function isServer() { + return !(typeof window !== 'undefined' && window.document); + } +-// CommonJS export to be able to use it on server and client +-module.exports = { +- isServer, +-}; diff --git a/source-from-sourcemaps.js b/source-from-sourcemaps.js index aa401fe..44bdec3 100644 --- a/source-from-sourcemaps.js +++ b/source-from-sourcemaps.js @@ -1,47 +1,61 @@ #!/usr/bin/env node +// Gracias a: +// - Código original: https://github.com/akx/source-from-sourcemaps +// - Aguante: https://gist.github.com/banyudu/b17a9cb3f05296b76a9f3051f66c3dcd +// - Algoritmo: https://github.com/rarecoil/unwebpack-sourcemap -const fs = require("fs"); -const util = require("util"); -const writeFileP = util.promisify(fs.writeFile); -const readFileP = util.promisify(fs.readFile); -const mkdirp = require("mkdirp"); -const path = require("path"); -const { SourceMapConsumer } = require("source-map"); -const minimist = require("minimist"); +const fs = require("fs") +const util = require("util") +const writeFileP = util.promisify(fs.writeFile) +const readFileP = util.promisify(fs.readFile) +const mkdirP = util.promisify(fs.mkdir) +const path = require("path") +const { SourceMapConsumer } = require("source-map") -async function processSource(consumer, src) { - const fsSrc = - "sources-gen/" + - src - .replace(/webpack:\/\/\//, "") - .replace(/~\//, "node_modules/") - .replace(/\?.+$/, ""); - const source = consumer.sourceContentFor(src, true); - if (!source) { - console.warn("Unable to source:", src); - return; - } - await mkdirp(path.dirname(fsSrc)); - await writeFileP(fsSrc, source, "UTF-8"); - console.log(`Wrote ${fsSrc}`); +const outputDir = 'sources-gen' + +function sanitizePath (path) { + let newPath = path + .replace(/^webpack:\/\/\/?/, "") + .replace(/~\//, "node_modules/") + .replace(/\?.+$/, "") + .replace(/\.\.\//g, 'parent_dir/') + .replace(/\.\//g, '') + return newPath } async function processFile(pth) { - const data = await readFileP(pth, "UTF-8"); - return await SourceMapConsumer.with(data, null, async (consumer) => { - const processors = consumer.sources.map((src) => - processSource(consumer, src) - ); - return await Promise.all(processors); - }); + const data = await readFileP(pth, "UTF-8"); + const consumer = await new SourceMapConsumer(data); + + const processors = consumer.sources.map(async (src) => { + const fsSrc = path.join( + outputDir, + sanitizePath(src) + ) + if (fsSrc.includes('node_modules')) { + console.warn(`Not saving ${fsSrc} because it is node_modules`) + return + } + + const source = consumer.sourceContentFor(src, true) + if (!source) { + console.warn("Unable to source", src) + return + } + await mkdirP(path.dirname(fsSrc), { recursive: true }) + await writeFileP(fsSrc, source, "UTF-8") + console.log(`Wrote ${fsSrc}`) + }) + await Promise.all(processors) + + consumer.destroy(); } -async function main() { - const args = minimist(process.argv.slice(2)); - const processors = args._.map((pth) => processFile(pth)); - return await Promise.all(processors); +function main() { + return processFile(process.argv[2]) } if (!module.parent) { - main().then(() => process.exit(0)); + main().then(() => process.exit(0)); } diff --git a/sources-gen/.pnpm-debug.log b/sources-gen/.pnpm-debug.log deleted file mode 100644 index d9f22c0..0000000 --- a/sources-gen/.pnpm-debug.log +++ /dev/null @@ -1,14 +0,0 @@ -{ - "0 debug pnpm:scope": { - "selected": 1 - }, - "1 error pnpm": { - "code": "ERR_PNPM_NO_SCRIPT", - "err": { - "name": "pnpm", - "message": "Missing script: vite", - "code": "ERR_PNPM_NO_SCRIPT", - "stack": "pnpm: Missing script: vite\n at Object.handler (/home/nulo/.npm/prefix/lib/node_modules/pnpm/dist/pnpm.cjs:129183:15)\n at async /home/nulo/.npm/prefix/lib/node_modules/pnpm/dist/pnpm.cjs:133329:20\n at async run (/home/nulo/.npm/prefix/lib/node_modules/pnpm/dist/pnpm.cjs:133304:34)\n at async runPnpm (/home/nulo/.npm/prefix/lib/node_modules/pnpm/dist/pnpm.cjs:133514:5)\n at async /home/nulo/.npm/prefix/lib/node_modules/pnpm/dist/pnpm.cjs:133506:7" - } - } -} \ No newline at end of file diff --git a/sources-gen/assets/fonts/dw-theAntiquaB-W5Plain-web/dwtheantiquab-w5plain.woff b/sources-gen/assets/fonts/dw-theAntiquaB-W5Plain-web/dwtheantiquab-w5plain.woff deleted file mode 100644 index d5fd351..0000000 --- a/sources-gen/assets/fonts/dw-theAntiquaB-W5Plain-web/dwtheantiquab-w5plain.woff +++ /dev/null @@ -1 +0,0 @@ -export default __webpack_public_path__ + "static/media/dwtheantiquab-w5plain.94c5b804.woff"; \ No newline at end of file diff --git a/sources-gen/assets/fonts/dw-theAntiquaB-W5Plain-web/dwtheantiquab-w5plain.woff2 b/sources-gen/assets/fonts/dw-theAntiquaB-W5Plain-web/dwtheantiquab-w5plain.woff2 deleted file mode 100644 index 1c19eb0..0000000 --- a/sources-gen/assets/fonts/dw-theAntiquaB-W5Plain-web/dwtheantiquab-w5plain.woff2 +++ /dev/null @@ -1 +0,0 @@ -export default __webpack_public_path__ + "static/media/dwtheantiquab-w5plain.524a5eac.woff2"; \ No newline at end of file diff --git a/sources-gen/assets/fonts/dw-theAntiquaB-W5PlainItalic-web/DWTheAntiquaB-W5PlainItalic.woff b/sources-gen/assets/fonts/dw-theAntiquaB-W5PlainItalic-web/DWTheAntiquaB-W5PlainItalic.woff deleted file mode 100644 index 8d556ff..0000000 --- a/sources-gen/assets/fonts/dw-theAntiquaB-W5PlainItalic-web/DWTheAntiquaB-W5PlainItalic.woff +++ /dev/null @@ -1 +0,0 @@ -export default __webpack_public_path__ + "static/media/DWTheAntiquaB-W5PlainItalic.0c806fe1.woff"; \ No newline at end of file diff --git a/sources-gen/assets/fonts/dw-theAntiquaB-W5PlainItalic-web/DWTheAntiquaB-W5PlainItalic.woff2 b/sources-gen/assets/fonts/dw-theAntiquaB-W5PlainItalic-web/DWTheAntiquaB-W5PlainItalic.woff2 deleted file mode 100644 index 2323da8..0000000 --- a/sources-gen/assets/fonts/dw-theAntiquaB-W5PlainItalic-web/DWTheAntiquaB-W5PlainItalic.woff2 +++ /dev/null @@ -1 +0,0 @@ -export default __webpack_public_path__ + "static/media/DWTheAntiquaB-W5PlainItalic.390937af.woff2"; \ No newline at end of file diff --git a/sources-gen/assets/fonts/dw-theAntiquaB-W7Bold-web/DWTheAntiquaB-W7Bold.woff b/sources-gen/assets/fonts/dw-theAntiquaB-W7Bold-web/DWTheAntiquaB-W7Bold.woff deleted file mode 100644 index 8db2343..0000000 --- a/sources-gen/assets/fonts/dw-theAntiquaB-W7Bold-web/DWTheAntiquaB-W7Bold.woff +++ /dev/null @@ -1 +0,0 @@ -export default __webpack_public_path__ + "static/media/DWTheAntiquaB-W7Bold.73a35783.woff"; \ No newline at end of file diff --git a/sources-gen/assets/fonts/dw-theAntiquaB-W7Bold-web/DWTheAntiquaB-W7Bold.woff2 b/sources-gen/assets/fonts/dw-theAntiquaB-W7Bold-web/DWTheAntiquaB-W7Bold.woff2 deleted file mode 100644 index cc4dcad..0000000 --- a/sources-gen/assets/fonts/dw-theAntiquaB-W7Bold-web/DWTheAntiquaB-W7Bold.woff2 +++ /dev/null @@ -1 +0,0 @@ -export default __webpack_public_path__ + "static/media/DWTheAntiquaB-W7Bold.c739cf0d.woff2"; \ No newline at end of file diff --git a/sources-gen/assets/icons/DwClaim.jsx b/sources-gen/assets/icons/DwClaim.jsx deleted file mode 100644 index 1b8b74b..0000000 --- a/sources-gen/assets/icons/DwClaim.jsx +++ /dev/null @@ -1,4 +0,0 @@ -import styled from 'styled-components'; -import { ReactComponent as ClaimLogo } from '../svg/dw-claim.svg'; - -export const StyledClaimLogo = styled(props => )``; diff --git a/sources-gen/assets/icons/DwLogo.jsx b/sources-gen/assets/icons/DwLogo.jsx deleted file mode 100644 index 5859017..0000000 --- a/sources-gen/assets/icons/DwLogo.jsx +++ /dev/null @@ -1,4 +0,0 @@ -import styled from 'styled-components'; -import { ReactComponent as Logo } from '../svg/dw-logo.svg'; - -export const StyledLogo = styled(props => )``; diff --git a/sources-gen/assets/icons/Smiley.jsx b/sources-gen/assets/icons/Smiley.jsx deleted file mode 100644 index 570c121..0000000 --- a/sources-gen/assets/icons/Smiley.jsx +++ /dev/null @@ -1,6 +0,0 @@ -import styled from 'styled-components'; -import { ReactComponent as SmileyPositive } from '../svg/smiley-positive.svg'; -import { ReactComponent as SmileyNegative } from '../svg/smiley-negative.svg'; - -export const StyledSmileyPositive = styled(SmileyPositive)``; -export const StyledSmileyNegative = styled(SmileyNegative)``; diff --git a/sources-gen/assets/icons/ToggleableArrowIcon.jsx b/sources-gen/assets/icons/ToggleableArrowIcon.jsx deleted file mode 100644 index 1cddd48..0000000 --- a/sources-gen/assets/icons/ToggleableArrowIcon.jsx +++ /dev/null @@ -1,4 +0,0 @@ -import styled from 'styled-components'; -import { ReactComponent as ToggleableArrowIcon } from '../svg/toggleableArrow.svg'; - -export const StyledToggleableArrowIcon = styled(props => )``; diff --git a/sources-gen/assets/images/bg-dw-desktop.jpg b/sources-gen/assets/images/bg-dw-desktop.jpg deleted file mode 100644 index 41fdab9..0000000 --- a/sources-gen/assets/images/bg-dw-desktop.jpg +++ /dev/null @@ -1 +0,0 @@ -export default __webpack_public_path__ + "static/media/bg-dw-desktop.4aec073f.jpg"; \ No newline at end of file diff --git a/sources-gen/assets/images/landing/course_landing-1200x675.jpg b/sources-gen/assets/images/landing/course_landing-1200x675.jpg deleted file mode 100644 index 5a276d9..0000000 --- a/sources-gen/assets/images/landing/course_landing-1200x675.jpg +++ /dev/null @@ -1 +0,0 @@ -export default __webpack_public_path__ + "static/media/course_landing-1200x675.f68dc5b5.jpg"; \ No newline at end of file diff --git a/sources-gen/assets/images/landing/course_landing-480x270.jpg b/sources-gen/assets/images/landing/course_landing-480x270.jpg deleted file mode 100644 index f50d40f..0000000 --- a/sources-gen/assets/images/landing/course_landing-480x270.jpg +++ /dev/null @@ -1 +0,0 @@ -export default __webpack_public_path__ + "static/media/course_landing-480x270.5a82869e.jpg"; \ No newline at end of file diff --git a/sources-gen/assets/images/landing/course_landing-768x432.jpg b/sources-gen/assets/images/landing/course_landing-768x432.jpg deleted file mode 100644 index 94d2520..0000000 --- a/sources-gen/assets/images/landing/course_landing-768x432.jpg +++ /dev/null @@ -1 +0,0 @@ -export default __webpack_public_path__ + "static/media/course_landing-768x432.d54bc099.jpg"; \ No newline at end of file diff --git a/sources-gen/assets/images/landing/course_landing-992x558.jpg b/sources-gen/assets/images/landing/course_landing-992x558.jpg deleted file mode 100644 index 2a3d331..0000000 --- a/sources-gen/assets/images/landing/course_landing-992x558.jpg +++ /dev/null @@ -1 +0,0 @@ -export default __webpack_public_path__ + "static/media/course_landing-992x558.4309e861.jpg"; \ No newline at end of file diff --git a/sources-gen/assets/svg/dw-claim.svg.js b/sources-gen/assets/svg/dw-claim.svg.js deleted file mode 100644 index 2147643..0000000 --- a/sources-gen/assets/svg/dw-claim.svg.js +++ /dev/null @@ -1,36 +0,0 @@ -const __webpack_public_path__ = "https://learngerman.dw.com/"; -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - -function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } - -function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } - -import * as React from "react"; - -function SvgDwClaim(_ref, svgRef) { - var title = _ref.title, - titleId = _ref.titleId, - props = _objectWithoutProperties(_ref, ["title", "titleId"]); - - return /*#__PURE__*/React.createElement("svg", _extends({ - viewBox: "225 40 330 35", - xmlns: "http://www.w3.org/2000/svg", - ref: svgRef, - "aria-labelledby": titleId - }, props), title ? /*#__PURE__*/React.createElement("title", { - id: titleId - }, title) : null, /*#__PURE__*/React.createElement("g", { - className: "claimBox" - }, /*#__PURE__*/React.createElement("g", { - className: "claimClaim" - }, /*#__PURE__*/React.createElement("path", { - d: "M268.479,73.127l0,-1.301c-0.655,-0.522 -1.526,-1.045 -2.443,-1.435l-3.042,-23.86c1.13,-0.305 2.35,-0.913 3.31,-1.478l0,-1.305l-8.012,0l-8.704,23.028l-8.882,-23.028l-8.007,0l0,1.305c0.999,0.523 2.222,1.131 3.348,1.478l-2.999,23.948c-0.743,0.263 -1.614,0.785 -2.354,1.347l0,1.301l8.793,0l0,-1.301c-0.824,-0.522 -1.741,-0.996 -3.046,-1.347l1.568,-21.769l0.043,0l9.4,24.417l2.481,0l9.184,-24.68l0.046,0l2.438,21.901c-1.134,0.305 -2.311,0.916 -3.224,1.478l0,1.301l10.102,0ZM290.589,69.346c-1.305,0.391 -2.35,0.478 -2.35,0.478c0,0 -0.352,-0.867 -0.352,-2.7l0,-9.88c0,-4.354 -2.733,-6.181 -7.478,-6.181c-2.832,0 -5.142,0.519 -7.186,1.304l0,5.659l1.525,0c0,0 0.956,-1.529 1.564,-3.967c0,0 1.265,-0.913 3.18,-0.913c2.922,0 4.312,1.919 4.312,4.88l0,2.438c-7.666,-0.04 -12.102,3.61 -12.102,7.14c0,3.44 2.392,5.918 5.917,5.918c2.701,0 5.402,-1.739 6.618,-4.041l0.046,0c0,0 0.043,2.259 1.173,4.132c3.174,-0.919 5.697,-2.871 5.697,-2.871l-0.564,-1.396ZM283.804,65.821c0,2.871 -2.439,4.79 -4.49,4.79c-1.954,0 -3.44,-1.568 -3.44,-3.789c0,-2.224 1.614,-4.447 7.93,-4.315l0,3.314ZM316.618,71.35c-1.78,-0.306 -3.042,-0.785 -3.042,-0.785l0,-29.467c-4.264,-0.093 -7.399,0.56 -7.399,0.56l0,1.348c2.001,0.348 3.312,0.781 3.312,0.781l0,7.581c0,0 -1.83,-0.213 -3.75,-0.213c-6.528,0 -11.49,4 -11.49,12.187c0,6.092 3.085,10.18 8.182,10.18c3.657,0 6.315,-2.303 7.36,-4.873l0.046,0.043c0,-0.004 -0.305,1.869 -0.263,4.566c3.956,0.132 7.044,-0.525 7.044,-0.525l0,-1.383ZM309.489,63.514c0,4.004 -2.445,7.139 -5.356,7.139c-3.617,0 -5.622,-3.355 -5.622,-8.231c0,-6.01 2.398,-9.144 6.443,-9.144c1.876,0 3.355,0.433 4.535,1.222l0,9.014ZM337.997,60.162c0,-5.488 -2.695,-9.099 -8.487,-9.099c-6.27,0 -9.792,4.741 -9.792,11.576c0,7.098 3.522,10.84 9.71,10.84c3.265,0 6.262,-1.219 8.569,-3l-0.74,-1.699c-1.567,1.083 -4.13,1.873 -6.27,1.873c-4.399,0 -6.966,-2.744 -6.966,-8.278l0,-0.607l13.976,0l0,-1.606ZM333.649,59.81l-9.539,0c0.306,-3.743 1.912,-6.664 4.962,-6.664c3.096,0 4.616,2.882 4.577,6.664ZM367.076,47.274l0,-5.793c-1.222,-0.298 -2.654,-0.476 -4.048,-0.476c-5.487,0 -8.049,2.957 -8.049,7.705l0,2.744l-4.18,0l0,2.087l4.18,0l0,16.985c-2.087,0.521 -3.527,1.3 -3.527,1.3l0,1.301l11.225,0l0,-1.301c0,0 -1.522,-0.736 -3.615,-1.3l0,-16.985l5.747,0l0,-2.087l-5.747,0l0,-3.219c0,-3.356 0.696,-5.229 3.398,-5.229c0.568,0 1.172,0.085 1.698,0.26c0.345,2.047 1.39,4.008 1.39,4.008l1.528,0ZM387.793,61.776c0,-6.842 -3.824,-10.713 -9.966,-10.713c-6.269,0 -11.529,4.134 -11.529,11.707c0,6.881 3.82,10.752 9.966,10.752c6.269,0 11.529,-4.173 11.529,-11.746ZM383.446,62.553c0,5.666 -2.263,8.576 -5.967,8.576c-4.396,0 -6.834,-3.699 -6.834,-9.141c0,-5.666 2.263,-8.576 5.92,-8.576c4.397,0 6.881,3.739 6.881,9.141ZM407.337,51.543c-0.824,-0.305 -1.954,-0.522 -3.088,-0.522c-2.741,0 -4.443,2.128 -5.616,5.476l-0.132,0c0.264,-1.691 0.349,-3.39 0.349,-5.171c-2.385,-0.088 -5.349,0.128 -7.265,0.522l0,1.344c1.088,0.171 2.311,0.476 3.309,0.824l0,16.51c-1.215,0.304 -2.26,0.738 -3.309,1.3l0,1.301l10.837,0l0,-1.301c-1.088,-0.522 -2.222,-0.957 -3.441,-1.3l0,-8.407c0,-3.746 1.483,-7.313 4.4,-7.313c1.305,0 2.389,0.432 3.394,0.909l0.562,-4.172ZM457.531,73.127l0,-1.301c0,0 -1.35,-0.824 -2.957,-1.3c0,0 0.175,-4.052 0.175,-9.799c0,-6.536 -2.307,-9.664 -6.874,-9.664c-3.664,0 -6.493,2.083 -7.581,4.869l-0.046,0c-0.437,-2.569 -2.389,-4.869 -6.525,-4.869c-3.441,0 -6.273,2.129 -7.361,4.788l-0.086,0c0,0 0.303,-1.835 0.303,-4.525c-4.169,-0.131 -7.35,0.522 -7.35,0.522l0,1.344c1.956,0.349 3.309,0.824 3.309,0.824l0,16.51c-1.788,0.429 -3.309,1.3 -3.309,1.3l0,1.301l10.186,0l0,-1.255c0,0 -1.4,-0.782 -2.793,-1.307l0,-9.535c0,-3.391 2.093,-7.231 5.622,-7.231c3.526,0 4.265,2.965 4.265,5.752l0,11.014c-1.087,0.437 -2.093,0.959 -2.786,1.307l0,1.255l9.663,0l0,-1.255c-0.697,-0.301 -1.741,-0.87 -2.786,-1.307l0,-9.535c0,-3.391 2.047,-7.231 5.705,-7.231c3.308,0 4.353,3.139 4.353,8.016c0,4.918 -0.171,8.75 -0.171,8.75c-1.528,0.525 -2.79,1.307 -2.79,1.307l0,1.255l9.834,0ZM468.72,44.573c0,-1.563 -1.13,-2.741 -2.741,-2.741c-1.567,0 -2.74,1.178 -2.74,2.741c0,1.525 1.173,2.698 2.74,2.698c1.611,0 2.741,-1.173 2.741,-2.698ZM471.072,73.127l0,-1.301c0,0 -1.396,-0.824 -3.052,-1.3l0,-19.2c-4.254,-0.131 -7.393,0.522 -7.393,0.522l0,1.344c1.916,0.349 3.306,0.824 3.306,0.824l0,16.51c-1.739,0.429 -3.306,1.3 -3.306,1.3l0,1.301l10.445,0ZM498.628,73.127l0,-1.301c0,0 -1.355,-0.824 -2.965,-1.3c0,0 0.221,-4.098 0.221,-9.799c0,-6.536 -2.26,-9.664 -7.009,-9.664c-3.831,0 -6.532,2.218 -7.577,4.788l-0.085,0c0,0 0.302,-1.835 0.302,-4.525c-4.173,-0.131 -7.354,0.522 -7.354,0.522l0,1.344c1.966,0.349 3.313,0.824 3.313,0.824l0,16.51c-1.83,0.476 -3.313,1.3 -3.313,1.3l0,1.301l10.321,0l0,-1.255c0,0 -1.353,-0.782 -2.921,-1.307l0,-9.535c0,-3.438 2.089,-7.231 5.793,-7.231c3.441,0 4.4,3.139 4.4,8.016c0,4.918 -0.178,8.75 -0.178,8.75c-1.567,0.525 -2.918,1.307 -2.918,1.307l0,1.255l9.97,0ZM524.395,71.35c-1.781,-0.306 -3.046,-0.785 -3.046,-0.785l0,-29.467c-4.258,-0.093 -7.396,0.56 -7.396,0.56l0,1.348c2,0.348 3.313,0.781 3.313,0.781l0,7.581c0,0 -1.834,-0.213 -3.75,-0.213c-6.533,0 -11.491,4 -11.491,12.187c0,6.092 3.089,10.18 8.185,10.18c3.654,0 6.316,-2.303 7.353,-4.873l0.047,0.043c0,-0.004 -0.305,1.869 -0.263,4.566c3.955,0.132 7.048,-0.525 7.048,-0.525l0,-1.383ZM517.266,63.514c0,4.004 -2.446,7.139 -5.357,7.139c-3.618,0 -5.622,-3.355 -5.622,-8.231c0,-6.01 2.395,-9.144 6.445,-9.144c1.875,0 3.353,0.433 4.534,1.222l0,9.014ZM542.812,66.949c0,-7.228 -10.406,-5.483 -10.406,-11.013c0,-1.653 1.049,-2.698 2.917,-2.698c1.266,0 2.401,0.303 3.05,0.647c0.31,1.27 0.742,2.57 1.305,3.572l1.563,0l0,-5.829c-1.304,-0.348 -3.128,-0.565 -5.001,-0.565c-4.662,0 -7.837,2.605 -7.837,5.961c0,7.445 10.319,5.576 10.319,11.017c0,2.09 -1.309,2.961 -3.227,2.961c-1.607,0 -3,-0.437 -4.045,-0.871c-0.26,-1.174 -0.821,-2.488 -1.308,-3.572l-1.603,0l0,6.223c1.734,0.437 3.604,0.654 5.829,0.654c4.401,0 8.444,-2.694 8.444,-6.487ZM552.995,70.781c0,-1.567 -1.174,-2.693 -2.698,-2.693c-1.564,0 -2.74,1.126 -2.74,2.693c0,1.565 1.176,2.741 2.74,2.741c1.524,0 2.698,-1.176 2.698,-2.741Z", - style: { - fillRule: "nonzero" - } - })))); -} - -var ForwardRef = /*#__PURE__*/React.forwardRef(SvgDwClaim); -export default __webpack_public_path__ + "static/media/dw-claim.dad03c02.svg"; -export { ForwardRef as ReactComponent }; \ No newline at end of file diff --git a/sources-gen/assets/svg/dw-logo-mobile.svg.js b/sources-gen/assets/svg/dw-logo-mobile.svg.js deleted file mode 100644 index bdf0701..0000000 --- a/sources-gen/assets/svg/dw-logo-mobile.svg.js +++ /dev/null @@ -1,2 +0,0 @@ -const __webpack_public_path__ = "https://learngerman.dw.com/"; -export default __webpack_public_path__ + "static/media/dw-logo-mobile.7e6e58ec.svg"; \ No newline at end of file diff --git a/sources-gen/assets/svg/dw-logo-tablet.svg.js b/sources-gen/assets/svg/dw-logo-tablet.svg.js deleted file mode 100644 index 246f426..0000000 --- a/sources-gen/assets/svg/dw-logo-tablet.svg.js +++ /dev/null @@ -1,2 +0,0 @@ -const __webpack_public_path__ = "https://learngerman.dw.com/"; -export default __webpack_public_path__ + "static/media/dw-logo-tablet.ac032dbb.svg"; \ No newline at end of file diff --git a/sources-gen/assets/svg/dw-logo.svg.js b/sources-gen/assets/svg/dw-logo.svg.js deleted file mode 100644 index 963fa5a..0000000 --- a/sources-gen/assets/svg/dw-logo.svg.js +++ /dev/null @@ -1,37 +0,0 @@ -const __webpack_public_path__ = "https://learngerman.dw.com/"; -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - -function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } - -function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } - -import * as React from "react"; - -var _ref2 = /*#__PURE__*/React.createElement("g", { - className: "logoBox", - fillRule: "evenodd" -}, /*#__PURE__*/React.createElement("g", { - className: "logoLogo" -}, /*#__PURE__*/React.createElement("path", { - d: "M15.5929091,3.39736364 C22.287,3.39736364 27.714,8.82381818 27.714,15.5184545 C27.714,22.2125455 22.287,27.6392727 15.5929091,27.6392727 C8.89881818,27.6392727 3.47181818,22.2125455 3.47181818,15.5184545 C3.47181818,8.82381818 8.89881818,3.39736364 15.5929091,3.39736364 L15.5929091,3.39736364 Z M26.9959091,5.16463636 C29.8276364,1.99527273 33.9458182,0 38.5303636,0 C47.0694545,0 53.9920909,6.92236364 53.9920909,15.4617273 C53.9920909,24.0010909 47.0694545,30.9234545 38.5303636,30.9234545 C33.9458182,30.9234545 29.8276364,28.9281818 26.9959091,25.7585455 C24.1644545,28.9281818 20.046,30.9234545 15.4614545,30.9234545 C6.92209091,30.9234545 0,24.0010909 0,15.4617273 C0,6.92236364 6.92209091,1.93784382e-15 15.4614545,1.93784382e-15 C20.046,1.93784382e-15 24.1644545,1.99527273 26.9959091,5.16463636 L26.9959091,5.16463636 Z M15.9913636,13.0819091 L12.6553636,13.0819091 L12.6553636,18.0845455 L15.9913636,18.0845455 C18.4150909,18.0845455 19.2714545,17.0787273 19.2714545,15.5833636 C19.2714545,14.088 18.4085455,13.0819091 15.9913636,13.0819091 L15.9913636,13.0819091 Z M16.4511818,9.59536364 C19.8250909,9.59536364 23.2835455,11.292 23.2835455,15.5828182 C23.2835455,19.8739091 19.8250909,21.5705455 16.4511818,21.5705455 L8.886,21.5705455 L8.886,9.59536364 L16.4511818,9.59536364 L16.4511818,9.59536364 Z M35.4119983,15.9318147 L37.5403715,10.1204985 L40.4334297,10.1204985 L42.5618029,15.9318147 L44.2678615,10.1204985 L48.0692727,10.1204985 L44.4908946,21.3263197 L41.2676315,21.3263197 L38.9674938,15.9016908 L36.7070387,21.3263197 L33.483486,21.3263197 L29.9048182,10.1204985 L33.7062294,10.1204985 L35.4119983,15.9318147 L35.4119983,15.9318147 Z", - id: "Shape" -}))); - -function SvgDwLogo(_ref, svgRef) { - var title = _ref.title, - titleId = _ref.titleId, - props = _objectWithoutProperties(_ref, ["title", "titleId"]); - - return /*#__PURE__*/React.createElement("svg", _extends({ - viewBox: "0 0 54 31", - xmlns: "http://www.w3.org/2000/svg", - ref: svgRef, - "aria-labelledby": titleId - }, props), title ? /*#__PURE__*/React.createElement("title", { - id: titleId - }, title) : null, _ref2); -} - -var ForwardRef = /*#__PURE__*/React.forwardRef(SvgDwLogo); -export default __webpack_public_path__ + "static/media/dw-logo.ff9012af.svg"; -export { ForwardRef as ReactComponent }; \ No newline at end of file diff --git a/sources-gen/assets/svg/icon-course-cert-gray.svg.js b/sources-gen/assets/svg/icon-course-cert-gray.svg.js deleted file mode 100644 index e8ab37e..0000000 --- a/sources-gen/assets/svg/icon-course-cert-gray.svg.js +++ /dev/null @@ -1,2 +0,0 @@ -const __webpack_public_path__ = "https://learngerman.dw.com/"; -export default __webpack_public_path__ + "static/media/icon-course-cert-gray.0fdcab0c.svg"; \ No newline at end of file diff --git a/sources-gen/assets/svg/icon-hint-circle-orange.svg.js b/sources-gen/assets/svg/icon-hint-circle-orange.svg.js deleted file mode 100644 index c7df4af..0000000 --- a/sources-gen/assets/svg/icon-hint-circle-orange.svg.js +++ /dev/null @@ -1,42 +0,0 @@ -const __webpack_public_path__ = "https://learngerman.dw.com/"; -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - -function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } - -function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } - -import * as React from "react"; - -function SvgIconHintCircleOrange(_ref, svgRef) { - var title = _ref.title, - titleId = _ref.titleId, - props = _objectWithoutProperties(_ref, ["title", "titleId"]); - - return /*#__PURE__*/React.createElement("svg", _extends({ - width: "18px", - height: "18px", - viewBox: "0 0 18 18", - xmlns: "http://www.w3.org/2000/svg", - xmlnsXlink: "http://www.w3.org/1999/xlink", - xmlSpace: "preserve", - style: { - fillRule: "evenodd", - clipRule: "evenodd", - strokeLinejoin: "round", - strokeMiterlimit: 1.41421 - }, - ref: svgRef, - "aria-labelledby": titleId - }, props), title ? /*#__PURE__*/React.createElement("title", { - id: titleId - }, title) : null, /*#__PURE__*/React.createElement("path", { - d: "M9,0C13.967,0 18,4.033 18,9C18,13.967 13.967,18 9,18C4.033,18 0,13.967 0,9C0,4.033 4.033,0 9,0ZM12.189,14.994L12.189,14.343L10.027,13.623L10.027,6.966C8.269,6.966 7.525,7.069 6.206,7.289L6.206,7.903C7.113,8.041 7.538,8.144 7.977,8.337L7.977,13.657C7.181,13.849 6.502,14.013 5.87,14.343L5.87,14.994L12.189,14.994ZM8.984,5.417C8.544,5.417 8.31,5.322 8.007,5.02C7.705,4.718 7.61,4.484 7.61,4.044C7.61,3.605 7.705,3.37 8.007,3.068C8.31,2.765 8.544,2.67 8.984,2.67C9.424,2.67 9.657,2.765 9.96,3.068C10.262,3.37 10.357,3.605 10.357,4.044C10.357,4.484 10.262,4.718 9.96,5.02C9.657,5.322 9.424,5.417 8.984,5.417Z", - style: { - fill: "#f08c00" - } - })); -} - -var ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconHintCircleOrange); -export default __webpack_public_path__ + "static/media/icon-hint-circle-orange.764164ab.svg"; -export { ForwardRef as ReactComponent }; \ No newline at end of file diff --git a/sources-gen/assets/svg/icon-hint.svg.js b/sources-gen/assets/svg/icon-hint.svg.js deleted file mode 100644 index 96d8261..0000000 --- a/sources-gen/assets/svg/icon-hint.svg.js +++ /dev/null @@ -1,39 +0,0 @@ -const __webpack_public_path__ = "https://learngerman.dw.com/"; -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - -function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } - -function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } - -import * as React from "react"; - -function SvgIconHint(_ref, svgRef) { - var title = _ref.title, - titleId = _ref.titleId, - props = _objectWithoutProperties(_ref, ["title", "titleId"]); - - return /*#__PURE__*/React.createElement("svg", _extends({ - width: "10px", - height: "18px", - viewBox: "0 0 10 18", - xmlns: "http://www.w3.org/2000/svg", - xmlnsXlink: "http://www.w3.org/1999/xlink", - style: { - fillRule: "evenodd" - }, - ref: svgRef, - "aria-labelledby": titleId - }, props), title ? /*#__PURE__*/React.createElement("title", { - id: titleId - }, title) : null, /*#__PURE__*/React.createElement("path", { - d: "M369.101562,1457.80899 L369.101562,1456.85041 C369.918135,1456.42437 370.841202,1456.08709 371.870793,1455.83857 L371.870793,1448.22319 C371.302743,1447.97467 370.432929,1447.76165 369.261326,1447.58413 L369.261326,1446.67881 C370.965476,1446.39478 372.953622,1446.25277 375.225823,1446.25277 L375.225823,1455.83857 L378.101562,1456.85041 L378.101562,1457.80899 L369.101562,1457.80899 Z M373.308663,1444.17585 C372.740613,1444.17585 372.261328,1443.98059 371.870793,1443.59005 C371.480259,1443.19952 371.284994,1442.72023 371.284994,1442.15218 C371.284994,1441.58413 371.480259,1441.10485 371.870793,1440.71431 C372.261328,1440.32378 372.740613,1440.12851 373.308663,1440.12851 C373.876713,1440.12851 374.355998,1440.32378 374.746533,1440.71431 C375.137067,1441.10485 375.332332,1441.58413 375.332332,1442.15218 C375.332332,1442.72023 375.137067,1443.19952 374.746533,1443.59005 C374.355998,1443.98059 373.876713,1444.17585 373.308663,1444.17585 L373.308663,1444.17585 Z", - style: { - fill: "#f08c00" - }, - transform: "translate(-369.000000, -1440.000000)" - })); -} - -var ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconHint); -export default __webpack_public_path__ + "static/media/icon-hint.484f8f25.svg"; -export { ForwardRef as ReactComponent }; \ No newline at end of file diff --git a/sources-gen/assets/svg/icon-language-world-w.svg.js b/sources-gen/assets/svg/icon-language-world-w.svg.js deleted file mode 100644 index 9b7b37d..0000000 --- a/sources-gen/assets/svg/icon-language-world-w.svg.js +++ /dev/null @@ -1,43 +0,0 @@ -const __webpack_public_path__ = "https://learngerman.dw.com/"; -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - -function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } - -function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } - -import * as React from "react"; - -function SvgIconLanguageWorldW(_ref, svgRef) { - var title = _ref.title, - titleId = _ref.titleId, - props = _objectWithoutProperties(_ref, ["title", "titleId"]); - - return /*#__PURE__*/React.createElement("svg", _extends({ - width: "16px", - height: "16px", - viewBox: "0 0 16 16", - xmlns: "http://www.w3.org/2000/svg", - xmlnsXlink: "http://www.w3.org/1999/xlink", - xmlSpace: "preserve", - style: { - fillRule: "evenodd", - clipRule: "evenodd", - strokeLinejoin: "round", - strokeMiterlimit: 1.41421 - }, - ref: svgRef, - "aria-labelledby": titleId - }, props), title ? /*#__PURE__*/React.createElement("title", { - id: titleId - }, title) : null, /*#__PURE__*/React.createElement("path", { - d: "M7.976,0.026c-1.443,0 -2.784,0.36 -4.021,1.082c-1.208,0.707 -2.165,1.665 -2.872,2.873c-0.722,1.252 -1.083,2.599 -1.083,4.043c0,1.443 0.361,2.784 1.083,4.021c0.707,1.208 1.664,2.165 2.872,2.872c1.237,0.722 2.578,1.083 4.021,1.083c1.444,0 2.784,-0.361 4.021,-1.083c1.208,-0.707 2.166,-1.664 2.873,-2.872c0.736,-1.237 1.104,-2.578 1.104,-4.021c0,-1.444 -0.36,-2.784 -1.082,-4.021c-0.707,-1.208 -1.665,-2.166 -2.873,-2.873c-1.252,-0.736 -2.599,-1.104 -4.043,-1.104Zm3.005,6.451c1.208,-0.25 2.268,-0.641 3.182,-1.171c0.383,0.855 0.574,1.76 0.574,2.718c0,1.149 -0.272,2.209 -0.817,3.181c-0.973,-0.486 -1.974,-0.832 -3.005,-1.038c0.088,-0.692 0.132,-1.407 0.132,-2.143c0,-0.53 -0.022,-1.046 -0.066,-1.547Zm2.629,-2.165c-0.942,0.398 -1.878,0.677 -2.806,0.84c-0.25,-1.429 -0.648,-2.659 -1.193,-3.69c0.825,0.206 1.584,0.556 2.276,1.049c0.692,0.494 1.267,1.094 1.723,1.801Zm-3.734,3.712c0,0.781 -0.037,1.429 -0.11,1.944c-0.634,-0.073 -1.23,-0.11 -1.79,-0.11c-0.56,0 -1.156,0.037 -1.789,0.11c-0.074,-0.692 -0.111,-1.34 -0.111,-1.944c0,-0.309 0.015,-0.759 0.044,-1.348c0.516,0.074 1.138,0.111 1.867,0.111c0.729,0 1.344,-0.037 1.845,-0.111c0.03,0.589 0.044,1.039 0.044,1.348Zm-1.414,-6.739c0.589,1.178 0.995,2.526 1.215,4.043c-0.736,0.059 -1.303,0.089 -1.701,0.089c-0.398,0 -0.965,-0.03 -1.701,-0.089c0.236,-1.517 0.641,-2.865 1.215,-4.043c0.103,-0.015 0.265,-0.022 0.486,-0.022c0.221,0 0.383,0.007 0.486,0.022Zm-2.121,0.177c-0.56,1.09 -0.957,2.32 -1.193,3.69c-0.972,-0.192 -1.907,-0.472 -2.806,-0.84c0.471,-0.707 1.05,-1.307 1.734,-1.801c0.685,-0.493 1.44,-0.843 2.265,-1.049Zm-4.551,3.844c0.942,0.53 2.003,0.921 3.181,1.171c-0.044,0.501 -0.066,1.017 -0.066,1.547c0,0.736 0.044,1.451 0.133,2.143c-1.032,0.206 -2.033,0.552 -3.005,1.038c-0.531,-0.986 -0.796,-2.047 -0.796,-3.181c0,-0.943 0.184,-1.849 0.553,-2.718Zm0.906,6.894c0.824,-0.324 1.679,-0.56 2.563,-0.707c0.235,1.119 0.596,2.143 1.082,3.071c-0.722,-0.192 -1.395,-0.49 -2.021,-0.895c-0.627,-0.405 -1.168,-0.895 -1.624,-1.469Zm4.794,2.541c-0.486,-0.973 -0.854,-2.114 -1.105,-3.425c0.531,-0.044 1.068,-0.066 1.613,-0.066c0.545,0 1.068,0.022 1.569,0.066c-0.25,1.311 -0.619,2.452 -1.105,3.425c-0.103,0.014 -0.265,0.022 -0.486,0.022c-0.221,0 -0.383,-0.008 -0.486,-0.022Zm2.121,-0.177c0.486,-0.928 0.847,-1.952 1.083,-3.071c0.898,0.147 1.76,0.383 2.585,0.707c-0.471,0.589 -1.02,1.086 -1.646,1.491c-0.626,0.405 -1.3,0.696 -2.022,0.873Z", - style: { - fill: "#fff", - fillRule: "nonzero" - } - })); -} - -var ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconLanguageWorldW); -export default __webpack_public_path__ + "static/media/icon-language-world-w.bb8502bb.svg"; -export { ForwardRef as ReactComponent }; \ No newline at end of file diff --git a/sources-gen/assets/svg/icon-user-navi.svg.js b/sources-gen/assets/svg/icon-user-navi.svg.js deleted file mode 100644 index 3a685a1..0000000 --- a/sources-gen/assets/svg/icon-user-navi.svg.js +++ /dev/null @@ -1,53 +0,0 @@ -const __webpack_public_path__ = "https://learngerman.dw.com/"; -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - -function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } - -function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } - -import * as React from "react"; - -var _ref2 = /*#__PURE__*/React.createElement("desc", null, "Person Icon"); - -var _ref3 = /*#__PURE__*/React.createElement("g", { - id: "Seiten", - stroke: "none", - strokeWidth: 1, - fill: "none", - fillRule: "evenodd", - opacity: 1 -}, /*#__PURE__*/React.createElement("g", { - id: "06-desk-lektionsinfo+burger", - transform: "translate(-1146.000000, -501.000000)", - fill: "#FFFFFF" -}, /*#__PURE__*/React.createElement("g", { - id: "burgernavi-d", - transform: "translate(920.000000, 170.000000)" -}, /*#__PURE__*/React.createElement("path", { - d: "M241.86087,345.655072 C239.603853,344.603859 238.150728,344.078261 237.501449,344.078261 L233.976812,345.284058 L230.35942,344.078261 C230.081158,344.078261 229.578748,344.209661 228.852174,344.472464 C228.1256,344.735267 227.468602,344.990337 226.881159,345.237681 L226,345.655072 L226,347 L241.86087,347 L241.86087,345.655072 Z M229.988406,340.507246 C231.008701,342.64059 232.338156,343.707246 233.976812,343.707246 C235.584549,343.707246 236.898546,342.64059 237.918841,340.507246 C238.289857,340.383574 238.591303,339.997105 238.823188,339.347826 C239.055074,338.698547 239.155556,338.072467 239.124638,337.469565 C239.09372,336.866664 238.954591,336.565217 238.707246,336.565217 C239.047345,335.606758 239.047345,334.802902 238.707246,334.153623 C238.676328,334.060869 238.629952,333.944928 238.568116,333.805797 C238.50628,333.666666 238.343963,333.419325 238.081159,333.063768 C237.818356,332.708211 237.524639,332.391306 237.2,332.113043 C236.875361,331.834781 236.427056,331.579711 235.855072,331.347826 C235.283089,331.115941 234.657008,331 233.976812,331 C232.925599,331 231.998072,331.262799 231.194203,331.788406 C230.390334,332.314012 229.849277,332.839611 229.571014,333.365217 L229.2,334.153623 L229.153623,334.292754 C229.122705,334.35459 229.099517,334.455072 229.084058,334.594203 C229.068599,334.733334 229.05314,334.887922 229.037681,335.057971 C229.022222,335.22802 229.029952,335.444443 229.06087,335.707246 C229.091788,335.97005 229.138164,336.256037 229.2,336.565217 C228.952656,336.565217 228.813527,336.866664 228.782609,337.469565 C228.751691,338.072467 228.852173,338.698547 229.084058,339.347826 C229.315943,339.997105 229.617389,340.383574 229.988406,340.507246 L229.988406,340.507246 Z M230.127536,335.776812 C230.127536,335.684058 230.166183,335.591305 230.243478,335.498551 C230.320773,335.405797 230.552655,335.282126 230.93913,335.127536 C231.325606,334.972946 231.889851,335.05024 232.631884,335.35942 C233.373917,335.637683 234.085021,335.714976 234.765217,335.591304 C235.445414,335.467632 235.971013,335.313044 236.342029,335.127536 C236.713045,334.942028 236.991303,334.756523 237.176812,334.571014 C237.331402,334.571014 237.462801,334.764249 237.571014,335.150725 C237.679228,335.5372 237.733333,335.869564 237.733333,336.147826 L237.733333,337.353623 C237.918842,337.353623 238.042512,337.369082 238.104348,337.4 C238.166184,337.430918 238.197101,337.570047 238.197101,337.817391 C238.197101,338.064736 238.135266,338.435746 238.011594,338.930435 C237.733332,339.456041 237.455074,339.718841 237.176812,339.718841 C237.084058,339.966185 236.952658,340.259902 236.782609,340.6 C236.61256,340.940098 236.257008,341.403862 235.715942,341.991304 C235.174877,342.578747 234.595172,342.872464 233.976812,342.872464 C233.358451,342.872464 232.786476,342.609664 232.26087,342.084058 C231.735263,341.558451 231.364252,341.032853 231.147826,340.507246 L230.823188,339.718841 C230.699516,339.718841 230.560387,339.649276 230.405797,339.510145 C230.251207,339.371014 230.127537,339.239614 230.034783,339.115942 L229.895652,338.930435 C229.61739,337.879222 229.694684,337.353623 230.127536,337.353623 L230.127536,335.776812 Z", - id: "Shape" -})))); - -function SvgIconUserNavi(_ref, svgRef) { - var title = _ref.title, - titleId = _ref.titleId, - props = _objectWithoutProperties(_ref, ["title", "titleId"]); - - return /*#__PURE__*/React.createElement("svg", _extends({ - width: "16px", - height: "16px", - viewBox: "0 0 16 16", - xmlns: "http://www.w3.org/2000/svg", - xmlnsXlink: "http://www.w3.org/1999/xlink", - ref: svgRef, - "aria-labelledby": titleId - }, props), title === undefined ? /*#__PURE__*/React.createElement("title", { - id: titleId - }, "Avatar") : title ? /*#__PURE__*/React.createElement("title", { - id: titleId - }, title) : null, _ref2, _ref3); -} - -var ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconUserNavi); -export default __webpack_public_path__ + "static/media/icon-user-navi.68643217.svg"; -export { ForwardRef as ReactComponent }; \ No newline at end of file diff --git a/sources-gen/assets/svg/keyboard.svg.js b/sources-gen/assets/svg/keyboard.svg.js deleted file mode 100644 index ff87a55..0000000 --- a/sources-gen/assets/svg/keyboard.svg.js +++ /dev/null @@ -1,104 +0,0 @@ -const __webpack_public_path__ = "https://learngerman.dw.com/"; -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - -function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } - -function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } - -import * as React from "react"; - -var _ref2 = /*#__PURE__*/React.createElement("rect", { - width: 2, - height: 2, - x: 2, - y: 6 -}); - -var _ref3 = /*#__PURE__*/React.createElement("rect", { - width: 2, - height: 2, - x: 5, - y: 6 -}); - -var _ref4 = /*#__PURE__*/React.createElement("rect", { - width: 2, - height: 2, - x: 8, - y: 6 -}); - -var _ref5 = /*#__PURE__*/React.createElement("path", { - d: "m 11,6 3,0 0,5 -2,0 0,-3 -1,0 z" -}); - -var _ref6 = /*#__PURE__*/React.createElement("rect", { - width: 2, - height: 2, - x: 12, - y: 12 -}); - -var _ref7 = /*#__PURE__*/React.createElement("rect", { - width: 6, - height: 2, - x: 5, - y: 12 -}); - -var _ref8 = /*#__PURE__*/React.createElement("rect", { - width: 2, - height: 2, - x: 9, - y: 9 -}); - -var _ref9 = /*#__PURE__*/React.createElement("rect", { - width: 2, - height: 2, - x: 6, - y: 9 -}); - -var _ref10 = /*#__PURE__*/React.createElement("rect", { - width: 2, - height: 2, - x: 2, - y: 12 -}); - -var _ref11 = /*#__PURE__*/React.createElement("rect", { - width: 3, - height: 2, - x: 2, - y: 9 -}); - -function SvgKeyboard(_ref, svgRef) { - var title = _ref.title, - titleId = _ref.titleId, - props = _objectWithoutProperties(_ref, ["title", "titleId"]); - - return /*#__PURE__*/React.createElement("svg", _extends({ - xmlns: "http://www.w3.org/2000/svg", - width: 16, - height: 16, - style: { - fill: "#888" - }, - ref: svgRef, - "aria-labelledby": titleId - }, props), title ? /*#__PURE__*/React.createElement("title", { - id: titleId - }, title) : null, /*#__PURE__*/React.createElement("g", null, /*#__PURE__*/React.createElement("path", { - style: { - fill: "none", - stroke: "#888" - }, - d: "M 0.5,4.5 15.5,4.5 15.5,15.5 0.5,15.5 Z" - }), _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _ref10, _ref11)); -} - -var ForwardRef = /*#__PURE__*/React.forwardRef(SvgKeyboard); -export default __webpack_public_path__ + "static/media/keyboard.3a060932.svg"; -export { ForwardRef as ReactComponent }; \ No newline at end of file diff --git a/sources-gen/assets/svg/nav-cross-black-lg.svg.js b/sources-gen/assets/svg/nav-cross-black-lg.svg.js deleted file mode 100644 index ea1c8ca..0000000 --- a/sources-gen/assets/svg/nav-cross-black-lg.svg.js +++ /dev/null @@ -1,2 +0,0 @@ -const __webpack_public_path__ = "https://learngerman.dw.com/"; -export default __webpack_public_path__ + "static/media/nav-cross-black-lg.4c2e3c0d.svg"; \ No newline at end of file diff --git a/sources-gen/assets/svg/nav-cross-black-md.svg.js b/sources-gen/assets/svg/nav-cross-black-md.svg.js deleted file mode 100644 index f5c9ffc..0000000 --- a/sources-gen/assets/svg/nav-cross-black-md.svg.js +++ /dev/null @@ -1,2 +0,0 @@ -const __webpack_public_path__ = "https://learngerman.dw.com/"; -export default __webpack_public_path__ + "static/media/nav-cross-black-md.f5825c8f.svg"; \ No newline at end of file diff --git a/sources-gen/assets/svg/nav-cross-lg.svg.js b/sources-gen/assets/svg/nav-cross-lg.svg.js deleted file mode 100644 index faefb0a..0000000 --- a/sources-gen/assets/svg/nav-cross-lg.svg.js +++ /dev/null @@ -1,2 +0,0 @@ -const __webpack_public_path__ = "https://learngerman.dw.com/"; -export default __webpack_public_path__ + "static/media/nav-cross-lg.a759f43e.svg"; \ No newline at end of file diff --git a/sources-gen/assets/svg/nav-cross-xs.svg.js b/sources-gen/assets/svg/nav-cross-xs.svg.js deleted file mode 100644 index 78782ba..0000000 --- a/sources-gen/assets/svg/nav-cross-xs.svg.js +++ /dev/null @@ -1,2 +0,0 @@ -const __webpack_public_path__ = "https://learngerman.dw.com/"; -export default __webpack_public_path__ + "static/media/nav-cross-xs.fec778ad.svg"; \ No newline at end of file diff --git a/sources-gen/assets/svg/smiley-negative.svg.js b/sources-gen/assets/svg/smiley-negative.svg.js deleted file mode 100644 index b58a455..0000000 --- a/sources-gen/assets/svg/smiley-negative.svg.js +++ /dev/null @@ -1,66 +0,0 @@ -const __webpack_public_path__ = "https://learngerman.dw.com/"; -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - -function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } - -function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } - -import * as React from "react"; - -function SvgSmileyNegative(_ref, svgRef) { - var title = _ref.title, - titleId = _ref.titleId, - props = _objectWithoutProperties(_ref, ["title", "titleId"]); - - return /*#__PURE__*/React.createElement("svg", _extends({ - width: "100%", - height: "100%", - viewBox: "0 0 55 54", - xmlns: "http://www.w3.org/2000/svg", - xmlnsXlink: "http://www.w3.org/1999/xlink", - xmlSpace: "preserve", - style: { - fillRule: "evenodd", - clipRule: "evenodd", - strokeLinejoin: "round", - strokeMiterlimit: 1.41421 - }, - ref: svgRef, - "aria-labelledby": titleId - }, props), title ? /*#__PURE__*/React.createElement("title", { - id: titleId - }, title) : null, /*#__PURE__*/React.createElement("circle", { - className: "dot", - cx: 27.5, - cy: 27, - r: 27, - style: { - fill: "#A9A094" - } - }), /*#__PURE__*/React.createElement("g", { - id: "face" - }, /*#__PURE__*/React.createElement("circle", { - cx: 18.5, - cy: 18.5, - r: 3.5, - style: { - fill: "#fff" - } - }), /*#__PURE__*/React.createElement("circle", { - cx: 36.5, - cy: 18.5, - r: 3.5, - style: { - fill: "#fff" - } - }), /*#__PURE__*/React.createElement("path", { - d: "M40.902,32.312l-26.41,5.613l0.624,2.935l26.41,-5.614l-0.624,-2.934Z", - style: { - fill: "#fff" - } - }))); -} - -var ForwardRef = /*#__PURE__*/React.forwardRef(SvgSmileyNegative); -export default __webpack_public_path__ + "static/media/smiley-negative.6c289ab6.svg"; -export { ForwardRef as ReactComponent }; \ No newline at end of file diff --git a/sources-gen/assets/svg/smiley-positive.svg.js b/sources-gen/assets/svg/smiley-positive.svg.js deleted file mode 100644 index 8b8e1d3..0000000 --- a/sources-gen/assets/svg/smiley-positive.svg.js +++ /dev/null @@ -1,57 +0,0 @@ -const __webpack_public_path__ = "https://learngerman.dw.com/"; -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - -function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } - -function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } - -import * as React from "react"; - -function SvgSmileyPositive(_ref, svgRef) { - var title = _ref.title, - titleId = _ref.titleId, - props = _objectWithoutProperties(_ref, ["title", "titleId"]); - - return /*#__PURE__*/React.createElement("svg", _extends({ - width: "100%", - height: "100%", - viewBox: "0 0 55 54", - xmlns: "http://www.w3.org/2000/svg", - xmlnsXlink: "http://www.w3.org/1999/xlink", - xmlSpace: "preserve", - style: { - fillRule: "evenodd", - clipRule: "evenodd", - strokeLinejoin: "round", - strokeMiterlimit: 1.41421 - }, - ref: svgRef, - "aria-labelledby": titleId - }, props), title ? /*#__PURE__*/React.createElement("title", { - id: titleId - }, title) : null, /*#__PURE__*/React.createElement("circle", { - className: "dot", - cx: 27.5, - cy: 27, - r: 27, - style: { - fill: "#A9A094" - } - }), /*#__PURE__*/React.createElement("g", { - id: "face" - }, /*#__PURE__*/React.createElement("path", { - d: "M26.439,37.092l-11.313,-11.314l-2.829,2.829l11.314,11.313l2.828,-2.828Z", - style: { - fill: "#fff" - } - }), /*#__PURE__*/React.createElement("path", { - d: "M39.874,18l-19.092,19.092l2.829,2.828l19.092,-19.092l-2.829,-2.828Z", - style: { - fill: "#fff" - } - }))); -} - -var ForwardRef = /*#__PURE__*/React.forwardRef(SvgSmileyPositive); -export default __webpack_public_path__ + "static/media/smiley-positive.3d91069e.svg"; -export { ForwardRef as ReactComponent }; \ No newline at end of file diff --git a/sources-gen/assets/svg/star-gray.svg.js b/sources-gen/assets/svg/star-gray.svg.js deleted file mode 100644 index 081db05..0000000 --- a/sources-gen/assets/svg/star-gray.svg.js +++ /dev/null @@ -1,2 +0,0 @@ -const __webpack_public_path__ = "https://learngerman.dw.com/"; -export default __webpack_public_path__ + "static/media/star-gray.84ad33dd.svg"; \ No newline at end of file diff --git a/sources-gen/assets/svg/star-white.svg.js b/sources-gen/assets/svg/star-white.svg.js deleted file mode 100644 index c8daaab..0000000 --- a/sources-gen/assets/svg/star-white.svg.js +++ /dev/null @@ -1,2 +0,0 @@ -const __webpack_public_path__ = "https://learngerman.dw.com/"; -export default __webpack_public_path__ + "static/media/star-white.d32dc96a.svg"; \ No newline at end of file diff --git a/sources-gen/assets/svg/tick.svg.js b/sources-gen/assets/svg/tick.svg.js deleted file mode 100644 index 7efd211..0000000 --- a/sources-gen/assets/svg/tick.svg.js +++ /dev/null @@ -1,41 +0,0 @@ -const __webpack_public_path__ = "https://learngerman.dw.com/"; -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - -function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } - -function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } - -import * as React from "react"; - -var _ref2 = /*#__PURE__*/React.createElement("g", { - fill: "none", - fillRule: "evenodd" -}, /*#__PURE__*/React.createElement("path", { - d: "M-2.5-2.5h17v17h-17z" -}), /*#__PURE__*/React.createElement("path", { - fill: "#FFF", - d: "M12.906 1.219C7.434 4.9 5.47 10.25 5.47 10.25H4.406S2.581 7.472.688 6.531l.53-1.062c2.089.469 3.72 1.593 3.72 1.593s1.78-3.61 7.437-6.906l.531 1.063z" -}), /*#__PURE__*/React.createElement("path", { - d: "M-4 16h20V-4H-4z" -})); - -function SvgTick(_ref, svgRef) { - var title = _ref.title, - titleId = _ref.titleId, - props = _objectWithoutProperties(_ref, ["title", "titleId"]); - - return /*#__PURE__*/React.createElement("svg", _extends({ - xmlns: "http://www.w3.org/2000/svg", - width: 13, - height: 11, - viewBox: "0 0 13 11", - ref: svgRef, - "aria-labelledby": titleId - }, props), title ? /*#__PURE__*/React.createElement("title", { - id: titleId - }, title) : null, _ref2); -} - -var ForwardRef = /*#__PURE__*/React.forwardRef(SvgTick); -export default __webpack_public_path__ + "static/media/tick.adf0c598.svg"; -export { ForwardRef as ReactComponent }; \ No newline at end of file diff --git a/sources-gen/assets/svg/toggleableArrow.svg.js b/sources-gen/assets/svg/toggleableArrow.svg.js deleted file mode 100644 index b15e737..0000000 --- a/sources-gen/assets/svg/toggleableArrow.svg.js +++ /dev/null @@ -1,37 +0,0 @@ -const __webpack_public_path__ = "https://learngerman.dw.com/"; -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - -function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } - -function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } - -import * as React from "react"; - -var _ref2 = /*#__PURE__*/React.createElement("g", { - className: "arrowBox", - fillRule: "evenodd" -}, /*#__PURE__*/React.createElement("g", { - className: "arrowArrow", - transform: "translate(12, 12), rotate(0 0 0) scale(1.0)" -}, /*#__PURE__*/React.createElement("polygon", { - points: "12 -4.7125 0 4.9375 -12 -4.6875 -10.375 -5.5 0 0.125 10.375 -5.5" -}))); - -function SvgToggleableArrow(_ref, svgRef) { - var title = _ref.title, - titleId = _ref.titleId, - props = _objectWithoutProperties(_ref, ["title", "titleId"]); - - return /*#__PURE__*/React.createElement("svg", _extends({ - viewBox: "0 0 24 24", - xmlns: "http://www.w3.org/2000/svg", - ref: svgRef, - "aria-labelledby": titleId - }, props), title ? /*#__PURE__*/React.createElement("title", { - id: titleId - }, title) : null, _ref2); -} - -var ForwardRef = /*#__PURE__*/React.forwardRef(SvgToggleableArrow); -export default __webpack_public_path__ + "static/media/toggleableArrow.a17a06a6.svg"; -export { ForwardRef as ReactComponent }; \ No newline at end of file diff --git a/sources-gen/components/Accordion/Accordion.jsx b/sources-gen/components/Accordion/Accordion.jsx deleted file mode 100644 index a39ffa9..0000000 --- a/sources-gen/components/Accordion/Accordion.jsx +++ /dev/null @@ -1,23 +0,0 @@ -import styled from 'styled-components'; -import { StyledAccordionItem as AccordionItem } from './AccordionItem/AccordionItem'; -import { grammarOverviewColors } from '../../constants/grammarOverviewColors'; - -export const Accordion = ({ className, data }) => { - return ( -
- {data.map((accordionData, index) => ( - - ))} -
- ); -}; - -export const StyledAccordion = styled(Accordion)` - display: block; -`; diff --git a/sources-gen/components/Accordion/AccordionItem/AccordionItem.jsx b/sources-gen/components/Accordion/AccordionItem/AccordionItem.jsx deleted file mode 100644 index f7a99f5..0000000 --- a/sources-gen/components/Accordion/AccordionItem/AccordionItem.jsx +++ /dev/null @@ -1,111 +0,0 @@ -import { useRef } from 'react'; -import styled from 'styled-components'; -import { Link } from 'react-router-dom'; -import { useToggle } from '../../../hooks/useToggle'; -import { colors, resolutions } from '../../../utils/css'; -import { StyledToggleableArrow as ToggleableArrow } from '../../ToggleableArrow/ToggleableArrow'; -import { I18nText } from '../../I18n/I18nText'; -import { getContentUrl } from '../../../utils/url/urlFactory'; - -export const AccordionItem = ({ title, contents, className }) => { - const element = useRef(null); - const [isOpen, { toggleOnClick }] = useToggle(); - const height = element.current ? element.current.scrollHeight : '0'; - return ( -
- - - {contents.map(content => ( -
- - {content.shortTitle} - -
- ))} -
-
- ); -}; - -export const StyledAccordionItem = styled(AccordionItem)` - font-family: DWTheAntiquaB, Georgia, serif; - font-weight: 400; - font-size: 18px; - line-height: 25px; - text-align: left; - - display: flex; - flex-direction: column; - margin: 0px; - - .accordionItem-btn { - display: flex; - position: relative; - width: 100%; - padding: 20px; - background-color: ${({ backgroundColor }) => backgroundColor}; - color: ${colors.LG_WHITE}; - cursor: pointer; - align-items: center; - border: none; - :hover { - background-color: ${colors.LG_GRAY_9}; - } - :focus { - color: ${colors.LG_BAHAMA_BLUE}; - text-decoration: underline; - } - } - - .toggleable-arrow { - right: 18px; - } -`; - -export const AccordionItemContent = styled.div` - max-height: ${({ isOpen, height }) => (isOpen ? height : '1')}px; - overflow: hidden; - background-color: ${colors.LG_WHITE}; - transition: max-height 0.7s; - - .accordionItem-text { - font-size: 18px; - line-height: 25px; - border-bottom-width: 1px; - border-bottom-style: solid; - border-bottom-color: ${colors.LG_GRAY_12}; - - a { - color: ${colors.LG_GRAY_9}; - text-decoration: none; - padding: 20px; - display: block; - &:hover { - color: ${colors.LG_WHITE}; - background-color: ${colors.LG_GRAY_9}; - } - } - - @media (max-width: ${resolutions.max.mobile}px) { - font-size: 15px; - line-height: 20px; - } - } -`; diff --git a/sources-gen/components/App.jsx b/sources-gen/components/App.jsx deleted file mode 100644 index 1053932..0000000 --- a/sources-gen/components/App.jsx +++ /dev/null @@ -1,214 +0,0 @@ -import { Redirect, Route, Switch } from 'react-router-dom'; -import { useParams } from 'react-router'; -import { Default404Page } from '../pages/Default404Page'; -import { urlPrefixToType } from '../utils/url/url'; -import { CoursePage } from '../pages/CoursePage'; -import { GrammarPage } from '../pages/GrammarPage'; -import { DashboardPage } from '../pages/DashboardPage'; -import { GrammarOverviewPage } from '../pages/GrammarOverviewPage'; -import { pathPartials } from '../utils/url/pathAnalyser'; -import { LessonPage } from '../pages/LessonPage'; -import { - PAGE_GRAMMAR, - PAGE_LEGAL, - PAGE_OVERVIEW, - PAGE_PASSWORD_CHANGE, - PAGE_PASSWORD_RESET, - PAGE_PLACEMENT_TEST, - PAGE_PROFILE, - PAGE_REGISTRATION, - PAGE_VOCABULARY, - PAGE_VOCABULARY_TRAINER, - PAGE_VOCABULARY_TRAINER_START, - STATUS_FEEDBACK, -} from '../utils/url/urlFactory'; -import { FEEDBACK_TYPES } from '../constants/feedback'; -import { RestrictedRoute } from './RestrictedRoute/RestrictedRoute'; -import { ConfirmUserRegistrationContainer } from './user/ConfirmUserRegistrationContainer'; -import { Registration } from './user/Registration'; -import { PasswordChange } from './user/PasswordChange'; -import { PasswordReset } from './user/PasswordReset'; -import { StatusFeedback } from './StatusFeedback/StatusFeedback'; -import { PageContainer, withPageContainerAndMetadata } from './Page/PageContainer'; -import { UserProfile } from './user/UserProfile'; -import { SetNewPassword } from './user/SetNewPassword'; -import { PlacementTestPage } from '../pages/PlacementTestPage'; -import { VocabularyTrainer } from './VocabularyTrainer/VocabularyTrainer'; -import { PlacementAndFinalTestResultPage } from '../pages/PlacementAndFinalTestResultPage'; -import { HelpPage } from '../pages/HelpPage'; -import { GTM_NO_CONTENT_PAGE_IDS, PAGE_TYPES } from '../constants/pageTypes'; -import { PageMetaData } from './Page/PageMetaData'; -import { LegalPage } from '../pages/LegalPage'; -import { VocabularyPage } from '../pages/VocabularyPage'; -import { GtmScriptWithDataLayer } from './GoogleTagManager'; - -const typeToPage = { - COURSE: { - type: 'Course', - component: CoursePage, - }, - GRAMMAR: { - type: 'Grammar', - component: GrammarPage, - }, - LESSON: { - type: 'Lesson', - component: LessonPage, - }, - PLACEMENT: { - type: 'Placement', - component: PlacementAndFinalTestResultPage, - }, - FINAL: { - type: 'Final', - component: PlacementAndFinalTestResultPage, - }, -}; - -export const ContentPage = () => { - const params = useParams(); - const pageDef = typeToPage[urlPrefixToType(params.typeId)]; - const Tag = pageDef.component; - return ; -}; - -export const App = () => ( - - ( - - )} - /> - - - - - - - - - withPageContainerAndMetadata({ - component: Registration, - pageType: PAGE_TYPES.REGISTER_USER, - useDescriptionTranslation: true, - }) - } - /> - ( - - - - - - )} - /> - ( - - )} - /> - - withPageContainerAndMetadata({ - component: UserProfile, - pageType: PAGE_TYPES.USER_PROFILE, - addDescriptionAndKeywordsMeta: false, - }) - } - feedbackType={FEEDBACK_TYPES.MISSING_USER_PROFILE} - /> - - withPageContainerAndMetadata({ - component: PasswordChange, - pageType: PAGE_TYPES.PASSWORD_CHANGE, - addDescriptionAndKeywordsMeta: false, - }) - } - /> - - withPageContainerAndMetadata({ - component: VocabularyTrainer, - pageType: PAGE_TYPES.VOCABULARY_TRAINER, - addDescriptionAndKeywordsMeta: false, - }) - } - /> - - withPageContainerAndMetadata({ - component: PasswordReset, - pageType: PAGE_TYPES.PASSWORD_RESET, - addDescriptionAndKeywordsMeta: false, - }) - } - /> - - withPageContainerAndMetadata({ - component: StatusFeedback, - pageType: PAGE_TYPES.FEEDBACK_STATUS, - addDescriptionAndKeywordsMeta: false, - }) - } - /> - - - - -); diff --git a/sources-gen/components/BurgerButton/BurgerButton.jsx b/sources-gen/components/BurgerButton/BurgerButton.jsx deleted file mode 100644 index f393f26..0000000 --- a/sources-gen/components/BurgerButton/BurgerButton.jsx +++ /dev/null @@ -1,177 +0,0 @@ -import styled from 'styled-components'; -import { colors, resolutions } from '../../utils/css'; -import navCrossBlackMd from '../../assets/svg/nav-cross-black-md.svg'; -import navCrossBlackLg from '../../assets/svg/nav-cross-black-lg.svg'; -import navCrossXs from '../../assets/svg/nav-cross-xs.svg'; -import navCrossLg from '../../assets/svg/nav-cross-lg.svg'; -import { StyledIconBar as IconBar } from '../IconBar/IconBar'; - -export const BurgerButton = ({ - isNavMenuOpen, - toggleIsNavMenuOpen, - setIsLanguageSubMenuOpen, - className, -}) => ( - -); - -const defaultHoverStyles = ` - &:hover { - .close-menu { - background: url(${navCrossXs}); - background-size: cover; - } - } - &:hover { - ${IconBar} { - background-color: ${colors.LG_BLACK}; - } - } -`; - -/* - CSS parsed by a string helper function to return css string with styling blocks as arguments, - could not be tested with jest-styled-components. - It reads the media option correctly (media: (hover:hover)). But it throws an unknown error. - While using string templates passes with known media option. -*/ -const mediaHoverDeviceDetection = ` - @media (hover: hover) and (pointer: fine) { - ${defaultHoverStyles} - } - @media (hover: none) and (pointer: coarse) { - ${defaultHoverStyles} - } -`; - -const closeMenuMobile = ` - height: 12px; - width: 13px; -`; - -const closeMenuTablet = ` - height: 21px; - width: 22px; -`; - -export const StyledBurgerButton = styled(BurgerButton)` - z-index: 3000; - display: block; - position: fixed; - background-color: transparent; - background-image: none; - padding: 0; - /*! @noflip */ - right: 20px; - top: 13px; - - border: none; - border-radius: 0; - - -webkit-appearance: button; - cursor: pointer; - - @media (max-width: ${resolutions.max.mobile}px) { - top: 20px; - &:hover { - .close-menu { - ${closeMenuMobile} - } - } - } - - @media (min-width: ${resolutions.min.tablet}px) and (max-width: ${resolutions.max.tablet}px) { - top: 28px; - &:hover { - .close-menu { - ${closeMenuTablet} - } - } - } - - @media (min-width: ${resolutions.min.desktop}px) { - margin-top: 32px; - z-index: 1; - position: absolute; - top: 0; - /*! @noflip */ - right: 30px; - } - - ${mediaHoverDeviceDetection} - - &:focus { - outline: 0; - .close-menu { - background: url(${navCrossBlackLg}); - background-size: cover; - } - } - - .close-menu { - background: url(${navCrossLg}); - display: block; - height: 21px; - margin-top: 5px; - /*! @noflip */ - right: 15px; - width: 22px; - - @media (max-width: ${resolutions.min.desktop}px) { - background: url(${navCrossXs}); - height: 12px; - width: 13px; - } - - @media (min-width: ${resolutions.min.tablet}px) and (max-width: ${resolutions.max.tablet}px) { - background: url(${navCrossBlackMd}); - height: 21px; - margin-top: 5px; - width: 22px; - } - - @media (min-width: ${resolutions.min.desktop}px) { - background: url(${navCrossBlackMd}); - height: 21px; - margin-top: 0px; - position: absolute; - /*! @noflip */ - right: 0px; - width: 22px; - } - } - - .screen-reader-only { - border: none; - clip: rect(0, 0, 0, 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; - } -`; diff --git a/sources-gen/components/Checkbox/Checkbox.jsx b/sources-gen/components/Checkbox/Checkbox.jsx deleted file mode 100644 index b43003b..0000000 --- a/sources-gen/components/Checkbox/Checkbox.jsx +++ /dev/null @@ -1,44 +0,0 @@ -import { hasErrorClassAssigner } from '../../utils/errorClassAssigner'; -import { getTranslatedValidationMessage } from '../../utils/validation/validationMessages'; -import { useI18nContext } from '../../context/I18nContext'; - -export const Checkbox = ({ - name, - labelText, - validationErrorTranslationKey, - register, - validationError, - ...restProps -}) => { - const { i18n } = useI18nContext(); - - return ( -
-
-
- - - - -
- {validationError && ( - - {getTranslatedValidationMessage({ - name, - validationErrorTranslationKey, - validationType: validationError.type, - t: i18n.t, - })} - - )} -
-
- ); -}; diff --git a/sources-gen/components/ContentContainer/AccordionContainer.jsx b/sources-gen/components/ContentContainer/AccordionContainer.jsx deleted file mode 100644 index d0ea66e..0000000 --- a/sources-gen/components/ContentContainer/AccordionContainer.jsx +++ /dev/null @@ -1,53 +0,0 @@ -import styled from 'styled-components'; -import { useRef } from 'react'; -import { useToggle } from '../../hooks/useToggle'; -import { StyledToggleableArrow as ToggleableArrow } from '../ToggleableArrow/ToggleableArrow'; -import { colors } from '../../utils/css'; -import { useTranslation } from '../../hooks/useTranslation'; - -export const AccordionContainer = ({ title, children, className }) => { - const titleTranslation = useTranslation(title); - - return ( -
- -
-

- {titleTranslation} -

-
-
- - {children} - -
- ); -}; - -export const AccordionContainerContent = styled.div` - overflow: hidden; - background-color: ${colors.LG_WHITE}; - transition: max-height 0.7s; - margin-bottom: 20px; -`; - -export const StyledAccordionContainer = styled(AccordionContainer)` - button { - outline: none; - padding: 0; - display: flex; - position: relative; - cursor: pointer; - border: none; - background-color: ${colors.LG_WHITE}; - width: 10em; - } - .toggleable-arrow { - position: relative; - top: 0.1em; - margin-left: 0.2em; - width: 20px; - height: 17px; - } -`; diff --git a/sources-gen/components/ContentContainer/AccordionContainer.jsx.orig b/sources-gen/components/ContentContainer/AccordionContainer.jsx.orig deleted file mode 100644 index ed71204..0000000 --- a/sources-gen/components/ContentContainer/AccordionContainer.jsx.orig +++ /dev/null @@ -1,70 +0,0 @@ -import styled from 'styled-components'; -import { useRef } from 'react'; -import { useToggle } from '../../hooks/useToggle'; -import { StyledToggleableArrow as ToggleableArrow } from '../ToggleableArrow/ToggleableArrow'; -import { colors } from '../../utils/css'; -import { useTranslation } from '../../hooks/useTranslation'; - -export const AccordionContainer = ({ title, children, className }) => { - const element = useRef(null); - const [isOpen, { toggleOnClick }] = useToggle(); - const height = element.current ? element.current.scrollHeight : '0'; - const titleTranslation = useTranslation(title); - - return ( -
-
-
- -
-
- - {children} - -
- ); -}; - -export const AccordionContainerContent = styled.div` - max-height: ${({ isOpen, height }) => (isOpen ? height : '1')}px; - overflow: hidden; - background-color: ${colors.LG_WHITE}; - transition: max-height 0.7s; - margin-bottom: 20px; -`; - -export const StyledAccordionContainer = styled(AccordionContainer)` - button { - outline: none; - padding: 0; - display: flex; - position: relative; - cursor: pointer; - border: none; - background-color: ${colors.LG_WHITE}; - width: 10em; - } - .toggleable-arrow { - position: relative; - top: 0.1em; - margin-left: 0.2em; - width: 20px; - height: 17px; - } -`; diff --git a/sources-gen/components/ContentContainer/ContentBottomLine/ContentBottomLine.jsx b/sources-gen/components/ContentContainer/ContentBottomLine/ContentBottomLine.jsx deleted file mode 100644 index 6b382d0..0000000 --- a/sources-gen/components/ContentContainer/ContentBottomLine/ContentBottomLine.jsx +++ /dev/null @@ -1,5 +0,0 @@ -export const ContentBottomLine = () => ( -
-
-
-); diff --git a/sources-gen/components/ContentContainer/ContentContainer.jsx b/sources-gen/components/ContentContainer/ContentContainer.jsx deleted file mode 100644 index 58bae2b..0000000 --- a/sources-gen/components/ContentContainer/ContentContainer.jsx +++ /dev/null @@ -1,9 +0,0 @@ -import { ContentNavTitle } from './ContentNavTitle/ContentNavTitle'; - -export const ContentContainer = ({ title, children }) => ( -
- - {children} - -
-); diff --git a/sources-gen/components/ContentContainer/ContentHeadline/ContentHeadline.jsx b/sources-gen/components/ContentContainer/ContentHeadline/ContentHeadline.jsx deleted file mode 100644 index 0a29f83..0000000 --- a/sources-gen/components/ContentContainer/ContentHeadline/ContentHeadline.jsx +++ /dev/null @@ -1,13 +0,0 @@ -import classnames from 'classnames'; - -export const ContentHeadline = ({ children, isStandalone = false }) => { - return ( -
-
-
- {children} -
-
-
- ); -}; diff --git a/sources-gen/components/ContentContainer/ContentNavTitle/ContentNavTitle.jsx b/sources-gen/components/ContentContainer/ContentNavTitle/ContentNavTitle.jsx deleted file mode 100644 index 012d553..0000000 --- a/sources-gen/components/ContentContainer/ContentNavTitle/ContentNavTitle.jsx +++ /dev/null @@ -1,22 +0,0 @@ -import classnames from 'classnames'; -import { I18nText } from '../../I18n/I18nText'; - -export const ContentNavTitle = ({ title, top, bottom }) => ( -
-
-
- -
-
-
-); diff --git a/sources-gen/components/ContentContainer/ContentSection/ContentSection.jsx b/sources-gen/components/ContentContainer/ContentSection/ContentSection.jsx deleted file mode 100644 index d316eaa..0000000 --- a/sources-gen/components/ContentContainer/ContentSection/ContentSection.jsx +++ /dev/null @@ -1,16 +0,0 @@ -import { I18nText } from '../../I18n/I18nText'; - -export const ContentSection = ({ title, children }) => ( - <> -
-
- -
-
-
-
-
{children}
-
-
- -); diff --git a/sources-gen/components/Course/CourseHeroImage/CourseHeroImage.jsx b/sources-gen/components/Course/CourseHeroImage/CourseHeroImage.jsx deleted file mode 100644 index 73162ba..0000000 --- a/sources-gen/components/Course/CourseHeroImage/CourseHeroImage.jsx +++ /dev/null @@ -1,69 +0,0 @@ -import styled from 'styled-components'; -import { StyledHeroTemplate as HeroTemplate } from '../../HeroTemplate/HeroTemplate'; -import { resolutions } from '../../../utils/css'; - -const determineImage = ({ imageId, imageBasePath }) => { - return `${imageBasePath}/${imageId}`; -}; - -export const StyledCourseHeroImage = styled(HeroTemplate)` - background: url(${determineImage}_509.jpg) center center / cover no-repeat; - height: 320px; - - .content { - width: 100%; - padding: 0 20px; - } - - .title { - margin: 0; - white-space: nowrap; - overflow-x: hidden; - text-overflow: ellipsis; - } - - .identifier { - text-transform: uppercase; - font: 700 40px Helvetica, Arial, sans-serif; - opacity: 0.5; - } - - .description { - /* @noflip */ - direction: ltr; - font: 400 40px DWTheAntiquaB, Georgia, serif; - opacity: 1; - margin: 0 8px; - } - - @media (max-width: ${resolutions.max.tablet}px) { - .identifier, - .description { - font-size: 36px; - } - } - - @media (max-width: 992px) { - background: url(${determineImage}_507.jpg) center center / cover no-repeat; - - .identifier, - .description { - font-size: 32px; - } - } - - @media (max-width: ${resolutions.max.mobile}px) { - .identifier, - .description { - font-size: 28px; - } - } - - @media (max-width: 480px) { - background: url(${determineImage}_503.jpg) center center / cover no-repeat; - } - - @media (max-width: 360px) { - background: url(${determineImage}_501.jpg) center center / cover no-repeat; - } -`; diff --git a/sources-gen/components/Course/CourseList/CourseAccordion/CourseAccordion.jsx b/sources-gen/components/Course/CourseList/CourseAccordion/CourseAccordion.jsx deleted file mode 100644 index e50375d..0000000 --- a/sources-gen/components/Course/CourseList/CourseAccordion/CourseAccordion.jsx +++ /dev/null @@ -1,30 +0,0 @@ -import { resolutions } from '../../../../utils/css'; -import { useToggle } from '../../../../hooks/useToggle'; -import { StyledCourseHeader as CourseHeader } from '../CourseHeader/CourseHeader'; -import { StyledLessonList as LessonList } from '../LessonList/LessonList'; -import globals from '../../../../utils/globals'; - -export const CourseAccordion = ({ groupNameTranslationKey, groupedLessons, onClickReset }) => { - const isOnDesktop = globals.window.innerWidth >= resolutions.min.desktop; - const [isOpen, { toggleOnClick, toggleOnKeyPress }] = useToggle({ initialState: isOnDesktop }); - - return ( -
- - -
- ); -}; diff --git a/sources-gen/components/Course/CourseList/CourseHeader/CourseHeader.jsx b/sources-gen/components/Course/CourseList/CourseHeader/CourseHeader.jsx deleted file mode 100644 index ce176d8..0000000 --- a/sources-gen/components/Course/CourseList/CourseHeader/CourseHeader.jsx +++ /dev/null @@ -1,78 +0,0 @@ -import styled from 'styled-components'; -import classnames from 'classnames'; -import { I18nText } from '../../../I18n/I18nText'; -import { colors, resolutions } from '../../../../utils/css'; -import { StyledToggleableArrow as ToggleableArrow } from '../../../ToggleableArrow/ToggleableArrow'; - -const CourseHeader = ({ className, groupNameTranslationKey, isOpen, onClick, onKeyPress }) => { - return ( -
- - -
- ); -}; - -export const StyledCourseHeader = styled(CourseHeader)` - display: flex; - justify-content: space-between; - align-items: center; - width: 100%; - border-top: 1px solid ${colors.LG_GRAY_TRANSPARENT_1}; - height: 163px; - pointer-events: none; - - .title { - height: 25px; - background-color: ${colors.LG_WHITE}; - color: ${colors.LG_GRAY_13}; - white-space: nowrap; - overflow-x: hidden; - text-overflow: ellipsis; - font-family: Helvetica, Arial, sans-serif; - font-weight: 700; - font-size: 22px; - line-height: 23px; - margin: 0; - padding: 0 20px; - } - - .toggleable-arrow { - display: none; - } - - @media (max-width: ${resolutions.max.tablet}px) { - height: 94px; - pointer-events: all; - - .title { - padding: 0 45px 0 20px; - border-top: 0; - } - - .toggleable-arrow { - display: inline-block; - right: 40px; - } - } -`; diff --git a/sources-gen/components/Course/CourseList/CourseList.jsx b/sources-gen/components/Course/CourseList/CourseList.jsx deleted file mode 100644 index 993df13..0000000 --- a/sources-gen/components/Course/CourseList/CourseList.jsx +++ /dev/null @@ -1,48 +0,0 @@ -import styled from 'styled-components'; -import { colors, resolutions } from '../../../utils/css'; -import { CourseAccordion } from './CourseAccordion/CourseAccordion'; - -export const CourseList = ({ className, groupedLessons, onClickResetLesson }) => ( -
    - {Object.keys(groupedLessons).map(key => ( - // group lessons by their group names -
  • - -
  • - ))} -
-); - -export const StyledCourseList = styled(CourseList)` - * { - box-sizing: border-box; - } - - display: grid; - grid-template-columns: repeat(4, 1fr); - width: 100%; - list-style-type: none; - margin: 0; - padding: 0; - - .course { - display: inline-block; - background: ${colors.LG_WHITE}; - - &:nth-child(odd) { - .accordion .lesson-list { - background-color: ${colors.LG_GRAY_3}; - } - } - } - - @media (max-width: ${resolutions.max.tablet}px) { - grid-template-columns: 100%; - } -`; diff --git a/sources-gen/components/Course/CourseList/LessionItem/LessonItem.jsx b/sources-gen/components/Course/CourseList/LessionItem/LessonItem.jsx deleted file mode 100644 index 9a58f38..0000000 --- a/sources-gen/components/Course/CourseList/LessionItem/LessonItem.jsx +++ /dev/null @@ -1,120 +0,0 @@ -import styled from 'styled-components'; -import { Link } from 'react-router-dom'; -import { useSelector } from 'react-redux'; -import { StyledText as Text } from '../../../Text/Text'; -import { colors } from '../../../../utils/css'; -import { getContentUrl } from '../../../../utils/url/urlFactory'; -import { StyledLessonScore as LessonScore } from './LessonScore'; -import { StyledSmallProgressResetButton as ProgressResetButton } from '../../Progress/ProgressResetButton'; -import { LearnProgressIcon } from '../../../LearnProgressIcon/LearnProgressIcon'; -import { findLessonLearnProgressSelector } from '../../../../state/progress/learnProgressSelectors'; - -export const LessonItem = ({ lesson, className, onClickReset }) => { - const lessonId = lesson.id; - const lessonProgress = useSelector(findLessonLearnProgressSelector(lessonId)); - - const onHandleResetClick = e => { - onClickReset(e, lessonId); - }; - - return ( - <> - - - {lesson.shortTitle} - -
- -
- - {lesson.learningTargetHeadline} - - {lessonProgress && ( - <> - - - - )} - - {lesson.grammarDescription} - - - - ); -}; - -const alignProgressData = '5px'; - -export const StyledLessonItem = styled(LessonItem)` - border-top: 1px solid ${colors.LG_GRAY_TRANSPARENT_1}; - color: ${colors.LG_GRAY_8}; - display: grid; - font-size: 14px; - grid-template-columns: 1fr auto; - grid-template-rows: repeat(3, 1fr); - height: 102px; - padding: 10px 20px; - overflow-y: hidden; - text-decoration: none; - - &:hover { - color: ${colors.LG_GRAY_8}; - text-decoration: none; - } - - .title { - color: ${colors.LG_GRAY_9}; - font-family: DWTheAntiquaBBold, Georgia-Bold, serif; - font-size: 17px; - line-height: 24px; - margin: 0; - overflow-x: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - - .learningTarget, - .categories { - font-family: DWTheAntiquaB, Georgia, serif; - overflow-x: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - - .categories { - grid-column: 1 / 2; - } - - .tile-progress { - display: flex; - justify-content: flex-end; - padding: 5px 0 0 0; - padding-right: ${alignProgressData}; - } - - .lessonScore { - grid-column-start: 2; - justify-self: flex-end; - padding-right: ${alignProgressData}; - } - - .resetButton { - grid-column-start: 2; - grid-row-start: 3; - justify-self: center; - } -`; diff --git a/sources-gen/components/Course/CourseList/LessionItem/LessonScore.jsx b/sources-gen/components/Course/CourseList/LessionItem/LessonScore.jsx deleted file mode 100644 index d2b2442..0000000 --- a/sources-gen/components/Course/CourseList/LessionItem/LessonScore.jsx +++ /dev/null @@ -1,41 +0,0 @@ -import styled from 'styled-components'; -import { colors } from '../../../../utils/css'; -import { calculatePercentage } from '../../../../utils/commons'; - -export const LessonScore = ({ className, lessonProgress }) => { - const { resultPoints, maxPointsForAllExercises } = lessonProgress; - - const resultPointsClassName = () => { - const resultInPercentage = calculatePercentage(resultPoints, maxPointsForAllExercises); - - if (resultInPercentage >= 70) { - return 'good'; - } - if (resultInPercentage <= 40) { - return 'low'; - } - return 'mid'; - }; - - return ( -
- {resultPoints} - / - {maxPointsForAllExercises} -
- ); -}; - -export const StyledLessonScore = styled(LessonScore)` - font-size: 14px; - - .low { - color: ${colors.LG_RED_SCORE}; - } - .mid { - color: ${colors.LG_GRAY_11}; - } - .good { - color: ${colors.LG_GREEN_SCORE}; - } -`; diff --git a/sources-gen/components/Course/CourseList/LessonList/LessonList.jsx b/sources-gen/components/Course/CourseList/LessonList/LessonList.jsx deleted file mode 100644 index b6372fe..0000000 --- a/sources-gen/components/Course/CourseList/LessonList/LessonList.jsx +++ /dev/null @@ -1,47 +0,0 @@ -import styled from 'styled-components'; -import classnames from 'classnames'; -import { colors, resolutions } from '../../../../utils/css'; -import { StyledLessonItem as LessonItem } from '../LessionItem/LessonItem'; - -export const LessonList = ({ className, groupedLessons, onClickReset, isOpen = true }) => ( - // eslint-disable-next-line jsx-a11y/role-supports-aria-props -
    - {groupedLessons.map(lesson => ( -
  • - -
  • - ))} -
-); - -export const StyledLessonList = styled(LessonList)` - transition: max-height 0.3s linear; - overflow-y: hidden; - visibility: visible; - max-height: ${props => props.groupedLessons.length * 102}px; - list-style-type: none; - margin: 0; - padding: 0; - - @media (max-width: ${resolutions.max.tablet}px) { - background-color: ${colors.LG_GRAY_3}; - - &:last-child { - border-bottom: 0; - } - - &.collapsed { - visibility: hidden; - max-height: 0; - } - } -`; diff --git a/sources-gen/components/Course/CourseOverview.jsx b/sources-gen/components/Course/CourseOverview.jsx deleted file mode 100644 index 133abb4..0000000 --- a/sources-gen/components/Course/CourseOverview.jsx +++ /dev/null @@ -1,140 +0,0 @@ -import { useEffect, useState } from 'react'; -import { useDispatch } from 'react-redux'; -import { createGlobalStyle } from 'styled-components'; -import { - groupBy, - isFinalTestPredicate, - removeContentLinksWithEmptyTarget, -} from '../../utils/commons'; -import { useFrontendConfig } from '../../hooks/useFrontendConfig'; -import { - deleteCourseProgress, - deleteLessonProgress, - initCourse, - readCourseProgress, - readLessonProgresses, -} from '../../state/progress/learnProgressDuck'; -import { isMonolingualCourse } from '../../constants/isLtrContentOnly'; -import { StyledCourseHeroImage as CoursePageHeroImage } from './CourseHeroImage/CourseHeroImage'; -import { I18nText } from '../I18n/I18nText'; -import { StyledCourseList as CourseList } from './CourseList/CourseList'; -import { ModalIntegration } from '../Modal/ModalIntegration'; -import { ResetModal } from '../Modal/ResetModal'; -import { StyledCourseProgress as CourseProgress } from './Progress/CourseProgress'; -import { learningLevelMapper } from '../../utils/learningLevelUtils'; - -export const LTRContentCourseOverviewStyle = createGlobalStyle` - #courses { - .title, - span[aria-label*="lesson"] { - /* @noflip */ - direction: ltr; - } - .content .title { - /* @noflip */ - text-align: left; - } - } -`; - -export const CourseOverview = ({ data, contentId }) => { - const isMonoLingualCourse = isMonolingualCourse(contentId); - - const { - name, - dkLearningLevel, - contentLinks: lessonContentLinks, - mainContentImageLink, - learningMetaInfo: { achievableScore, exerciseCount } = {}, - } = data.content; - const filteredContentLinks = removeContentLinksWithEmptyTarget(lessonContentLinks); - const finalLessonId = filteredContentLinks - .filter(contentLink => isFinalTestPredicate(contentLink)) - .map(contentLink => contentLink.target.id); - const allLessonIds = filteredContentLinks.map(contentLink => contentLink.target.id); - const groupedLessons = groupBy('groupName', filteredContentLinks); - const { imageBasePath } = useFrontendConfig(); - const [isResetModalOpen, setResetModalOpen] = useState(false); - const [lessonIdToDelete, setLessonIdToDelete] = useState(null); - - const dispatch = useDispatch(); - - useEffect(() => { - dispatch( - initCourse({ - allExerciseCount: exerciseCount, - maxPointsForAllExercises: achievableScore, - cosCourseId: contentId, - }), - ); - dispatch(readLessonProgresses(allLessonIds)); - dispatch(readCourseProgress(contentId)); - }, []); // eslint-disable-line react-hooks/exhaustive-deps - - const onClickResetCourse = () => { - setResetModalOpen(true); - }; - - const onClickResetLesson = (e, lessonId) => { - e.preventDefault(); - setLessonIdToDelete(lessonId); - setResetModalOpen(true); - }; - - const onConfirmResetProgress = () => { - if (lessonIdToDelete) { - dispatch(deleteLessonProgress(lessonIdToDelete)); - setLessonIdToDelete(null); - } else { - dispatch(deleteCourseProgress(contentId)); - } - setResetModalOpen(false); - }; - - const onCancelResetModal = () => { - setLessonIdToDelete(null); - setResetModalOpen(false); - }; - - return ( -
- {isMonoLingualCourse && } -
-
-
- -

- - -

-
-
-
-
-
- -
-
- -
- - - -
- ); -}; diff --git a/sources-gen/components/Course/Progress/CourseProgress.jsx b/sources-gen/components/Course/Progress/CourseProgress.jsx deleted file mode 100644 index b315461..0000000 --- a/sources-gen/components/Course/Progress/CourseProgress.jsx +++ /dev/null @@ -1,27 +0,0 @@ -import styled from 'styled-components'; -import { useSelector } from 'react-redux'; -import { StyledProgressResetButton as ProgressResetButton } from './ProgressResetButton'; -import { LearnProgressIcon } from '../../LearnProgressIcon/LearnProgressIcon'; -import { findCourseLearnProgressSelector } from '../../../state/progress/learnProgressSelectors'; - -export const CourseProgress = ({ className, courseId, finalLessonId, onClickResetCourse }) => { - const { courseProgress } = useSelector(findCourseLearnProgressSelector(courseId)); - - return ( -
- - -
- ); -}; - -export const StyledCourseProgress = styled(CourseProgress)` - display: flex; - justify-content: flex-end; - align-items: center; - padding-right: 25px; - - > * { - margin: 14px; - } -`; diff --git a/sources-gen/components/Course/Progress/ProgressResetButton.jsx b/sources-gen/components/Course/Progress/ProgressResetButton.jsx deleted file mode 100644 index 8df5e33..0000000 --- a/sources-gen/components/Course/Progress/ProgressResetButton.jsx +++ /dev/null @@ -1,25 +0,0 @@ -import styled from 'styled-components'; -import { I18nText } from '../../I18n/I18nText'; -import { colors } from '../../../utils/css'; - -export const ProgressResetButton = ({ className, onClickReset }) => { - return ( - - ); -}; - -export const StyledProgressResetButton = styled(ProgressResetButton)` - background-color: ${colors.LG_GRAY_2}; - border: 1px solid transparent; - color: ${colors.LG_WHITE}; - font-size: 12px; - min-height: 31px; - padding: 3px 10px; -`; - -export const StyledSmallProgressResetButton = styled(StyledProgressResetButton)` - min-height: 27px; - padding: 1px 7px; -`; diff --git a/sources-gen/components/Dashboard/Dashboard.jsx b/sources-gen/components/Dashboard/Dashboard.jsx deleted file mode 100644 index 6db38bb..0000000 --- a/sources-gen/components/Dashboard/Dashboard.jsx +++ /dev/null @@ -1,29 +0,0 @@ -import { useEffect } from 'react'; -import { useDispatch } from 'react-redux'; -import { StyledMainHeroImage } from '../MainHeroImage/MainHeroImage'; -import { StyledTiles } from './Tiles/Tiles'; -import { I18nText } from '../I18n/I18nText'; -import { readCourseProgresses } from '../../state/progress/learnProgressDuck'; - -export const Dashboard = ({ data }) => { - const dispatch = useDispatch(); - - useEffect(() => { - const courseIds = data.map(course => course.id); - dispatch(readCourseProgresses(courseIds)); - }, [data, dispatch]); - - return ( -
- - - - - -
- ); -}; diff --git a/sources-gen/components/Dashboard/Tiles/Tile/BlankTile.jsx b/sources-gen/components/Dashboard/Tiles/Tile/BlankTile.jsx deleted file mode 100644 index 40815ac..0000000 --- a/sources-gen/components/Dashboard/Tiles/Tile/BlankTile.jsx +++ /dev/null @@ -1,28 +0,0 @@ -import styled from 'styled-components'; -import { colors, resolutions } from '../../../../utils/css'; -import { useRtlContext } from '../../../../hooks/useRtl'; - -const BlankTile = ({ className }) => { - const { isRtl } = useRtlContext(); - return
; -}; - -export const StyledBlankTile = styled(BlankTile)` - border-top: 1px solid ${colors.LG_WHITE}; - border-right: 1px solid ${colors.LG_WHITE}; - background: ${colors.DW_LIGHT_BLUE}; - text-decoration: none; - - @media (max-width: ${resolutions.max.tablet}px) { - height: 180px; - width: 100%; - - &.rtl { - border-right-width: 0; - } - } - - @media (max-width: ${resolutions.max.mobile}px) { - display: none; - } -`; diff --git a/sources-gen/components/Dashboard/Tiles/Tile/MoreCoursesTile.jsx b/sources-gen/components/Dashboard/Tiles/Tile/MoreCoursesTile.jsx deleted file mode 100644 index bb852dd..0000000 --- a/sources-gen/components/Dashboard/Tiles/Tile/MoreCoursesTile.jsx +++ /dev/null @@ -1,23 +0,0 @@ -import styled from 'styled-components'; -import { StyledTile as Tile } from './Tile'; - -export const MoreCoursesTile = ({ className, backgroundColor }) => ( - -); - -export const StyledMoreCoursesTile = styled(MoreCoursesTile)` - .tile-progress { - display: none; - } -`; diff --git a/sources-gen/components/Dashboard/Tiles/Tile/Tile.jsx b/sources-gen/components/Dashboard/Tiles/Tile/Tile.jsx deleted file mode 100644 index 6c6b49e..0000000 --- a/sources-gen/components/Dashboard/Tiles/Tile/Tile.jsx +++ /dev/null @@ -1,186 +0,0 @@ -import styled from 'styled-components'; -import gql from 'graphql-tag'; -import { Link } from 'react-router-dom'; -import { useSelector } from 'react-redux'; -import { colors, resolutions } from '../../../../utils/css'; -import { I18nText } from '../../../I18n/I18nText'; -import { learningLevelMapper } from '../../../../utils/learningLevelUtils'; -import { getContentUrl } from '../../../../utils/url/urlFactory'; -import { LearnProgressIcon } from '../../../LearnProgressIcon/LearnProgressIcon'; -import { findCourseLearnProgressSelector } from '../../../../state/progress/learnProgressSelectors'; -import { userSelector } from '../../../../state/user/userSelectors'; -import { progressIconColors } from '../../../ProgressIcon/progressIconColors'; - -export const tileFragment = gql` - fragment Tile on Course { - id - name - language - subTitle - dkLearningLevel - } -`; - -export const Tile = ({ className, data }) => { - const { dkLearningLevel, name, subTitle, id } = data; - const { courseProgress } = useSelector(findCourseLearnProgressSelector(id)); - const { isLoggedIn } = useSelector(userSelector); - - return ( - - {isLoggedIn && ( -
- -
- )} -

{learningLevelMapper[dkLearningLevel]}

- - -
- ); -}; - -const LinkWrapper = ({ children, linkData, className }) => { - return linkData.href ? ( - - {children} - - ) : ( - - {children} - - ); -}; - -export const StyledTile = styled(Tile)` - --absElemOffset: 84px; - padding: var(--absElemOffset) 20px 20px 20px; - display: flex; - flex-direction: column; - width: 300px; - height: 250px; - box-sizing: border-box; - position: relative; - border-color: ${colors.LG_WHITE}; - border-style: solid; - border-width: 1px 1px 0 0; - background-color: ${({ backgroundColor }) => backgroundColor}; - color: ${colors.LG_WHITE}; - - &:nth-child(4n) { - border-right-width: 0; - } - - &.tile-container { - text-decoration: none; - :hover, - :active, - :focus { - color: ${colors.LG_TRANSPARENT_WHITE_50}; - } - } - - .tile-learningLevel { - font: 400 70px / var(--absElemOffset) Helvetica, Arial, sans-serif; - height: var(--absElemOffset); - text-align: start; - margin: 0; - padding: 0; - position: absolute; - top: 0; - } - - .tile-name { - font: 400 23px/25px DWTheAntiquaBBold, Georgia, serif; - margin: 0 0 7px; - width: 100%; - } - - .tile-subTitle { - font: 400 16px/25px DWTheAntiquaB, Georgia, serif; - max-height: 60%; - opacity: 0.9; - max-width: 95%; - } - - .tile-progress { - position: absolute; - top: 0; - padding-top: 20px; - width: calc(100% - 40px); - height: var(--absElemOffset); - display: flex; - justify-content: flex-end; - } - - @media (max-width: ${resolutions.max.tablet}px) { - --absElemOffset: 64px; - height: 180px; - width: 100%; - border-width: 1px 1px 0 0; - - &:nth-child(2n) { - border-right-width: 0; - } - - .tile-learningLevel { - font: 400 54px/64px Helvetica, Arial, sans-serif; - height: var(--absElemOffset); - } - - .tile-name { - font-size: 22px; - } - - .tile-subTitle { - font-size: 15px; - } - - .tile-progress { - height: var(--absElemOffset); - padding-top: 15px; - } - } - - @media (max-width: ${resolutions.max.mobile}px) { - height: 90px; - padding: 10px; - border-width: 1px 0 0 0; - justify-content: center; - - .tile-learningLevel { - line-height: 90px; - font-size: 36px; - width: 58px; - height: 90px; - margin: 0 0 0 6px; - } - - .tile-name { - position: relative; - font-size: 17px; - line-height: 19px; - font-weight: 400; - margin: 0 25px 3px 64px; - width: calc(100% - 89px); - } - - .tile-subTitle { - font-size: 14px; - font-weight: 400; - line-height: 19px; - flex-direction: row; - margin: 0 25px 0 64px; - width: calc(100% - 89px); - } - - .tile-progress { - width: calc(100% - 20px); - } - } -`; diff --git a/sources-gen/components/Dashboard/Tiles/Tiles.jsx b/sources-gen/components/Dashboard/Tiles/Tiles.jsx deleted file mode 100644 index 05533c9..0000000 --- a/sources-gen/components/Dashboard/Tiles/Tiles.jsx +++ /dev/null @@ -1,56 +0,0 @@ -import { Fragment } from 'react'; -import styled from 'styled-components'; -import { colors, resolutions } from '../../../utils/css'; -import { StyledTile as Tile } from './Tile/Tile'; -import { StyledBlankTile as BlankTile } from './Tile/BlankTile'; -import { StyledMoreCoursesTile as MoreCoursesTile } from './Tile/MoreCoursesTile'; -import { tileColors } from '../../../constants/tileColors'; -import { uniqueId } from '../../../utils/htmlUtils'; - -export const Tiles = ({ className, data }) => { - return ( - - ); -}; - -export const StyledTiles = styled(Tiles)` - display: grid; - grid-template-columns: repeat(4, 1fr); - width: 100%; - min-height: 500px; - border-bottom: 1px solid ${colors.LG_WHITE}; - - @media (min-width: ${resolutions.min.desktop}px) { - width: 1200px; - } - - @media (max-width: ${resolutions.max.tablet}px) { - grid-template-columns: repeat(2, 1fr); - } - - @media (max-width: ${resolutions.max.mobile}px) { - grid-template-columns: 1fr; - width: 100%; - } -`; diff --git a/sources-gen/components/DwPicture/DwPicture.jsx b/sources-gen/components/DwPicture/DwPicture.jsx deleted file mode 100644 index fc5d5da..0000000 --- a/sources-gen/components/DwPicture/DwPicture.jsx +++ /dev/null @@ -1,36 +0,0 @@ -import { useFrontendConfig } from '../../hooks/useFrontendConfig'; -import { imgWithFormatFn, format } from '../../utils/imgUtils'; -import { resolutions } from '../../utils/css'; -import { Picture } from '../Picture/Picture'; - -export const DwPicture = ({ imageId, ...inProps }) => { - const { imageBasePath } = useFrontendConfig(); - - const imgWithFormat = imgWithFormatFn(imageId, imageBasePath); - - const defaultProps = { - fallbackUrl: imgWithFormat(format.full), - sources: [ - { - media: `(min-width: ${resolutions.min.full}px)`, - srcSet: imgWithFormat(format.full), - }, - { - media: `(min-width: ${resolutions.min.tabletLandscape}px)`, - srcSet: imgWithFormat(format.lg), - }, - { - media: `(min-width: ${resolutions.min.tablet}px)`, - srcSet: imgWithFormat(format.md), - }, - { - media: `(min-width: ${resolutions.min.mobile}px)`, - srcSet: imgWithFormat(format.sm), - }, - ], - }; - - const props = { ...defaultProps, ...inProps }; - - return ; -}; diff --git a/sources-gen/components/Footer/Footer.jsx b/sources-gen/components/Footer/Footer.jsx deleted file mode 100644 index ef2c8e3..0000000 --- a/sources-gen/components/Footer/Footer.jsx +++ /dev/null @@ -1,168 +0,0 @@ -import styled from 'styled-components'; -import gql from 'graphql-tag'; -import { useParams } from 'react-router-dom'; -import { colors, resolutions } from '../../utils/css'; -import { I18nText } from '../I18n/I18nText'; -import { - getDwContactUrl, - getDwUrlWithLang, - getFooterLinkForNamedUrl, - getLegalUrl, -} from '../../utils/url/urlFactory'; -import { useRtlContext } from '../../hooks/useRtl'; -import { legalFragment } from '../LegalNotice/LegalNotice'; - -export const footerFragment = { - name: 'Footer', - fragment() { - return gql`fragment ${this.name} on Query { - footer(lang: $lang) { - accessibility(appName: "mdl") { - namedUrl - } - policy(appName: "mdl") { - namedUrl - } - ${legalFragment.partial()} - } - } - `; - }, -}; - -export const Footer = ({ className, data }) => { - const { isRtl } = useRtlContext(); - const { langCode } = useParams(); - - const rtlClass = isRtl ? 'rtl' : ''; - return ( -
-
    - {footerData({ langCode, data }).map(footerObject => ( -
  • - -
  • - ))} -
-
- ); -}; - -const footerData = ({ langCode, data }) => [ - { - translation: { - key: 'footer.copyright', - parameters: { first: new Date().getFullYear() }, - }, - id: 0, - aria: 'footer.copyright', - role: 'Firm name', - }, - { - translation: 'footer.dw', - id: 1, - href: getDwUrlWithLang({ langCode }), - target: '_blank', - aria: 'footer.dw', - role: 'link', - }, - { - translation: 'footer.privacyPolicy', - id: 2, - href: getFooterLinkForNamedUrl({ namedUrl: data.footer.policy.namedUrl }), - target: '_blank', - aria: 'footer.privacyPolicy', - role: 'link', - }, - { - translation: 'footer.accessibility', - id: 3, - href: getFooterLinkForNamedUrl({ namedUrl: data.footer.accessibility.namedUrl }), - target: '_blank', - aria: 'footer.accessibility', - role: 'link', - }, - { - translation: 'footer.legal', - id: 4, - href: getLegalUrl(langCode), - target: '', - aria: 'footer.legal', - role: 'link', - }, - { - translation: 'footer.contact', - id: 5, - href: getDwContactUrl(), - target: '_blank', - aria: 'footer.contact', - role: 'link', - }, -]; - -export const StyledFooter = styled(Footer)` - box-sizing: border-box; - display: flex; - flex-wrap: wrap; - flex-direction: row; - align-items: center; - width: 100%; - min-height: 90px; - font-family: Helvetica, Arial, sans-serif; - line-height: 45px; - margin: 20px 0; - background: ${colors.LG_BLUE_7}; - - ul { - display: flex; - flex-flow: row wrap; - flex-direction: row; - max-width: 100%; - list-style-type: none; - padding: 10px 0; - text-align: center; - margin: 0; - } - - li { - margin-right: 12px; - padding: 0 0 0 12px; - - &.rtl { - direction: rtl; - } - } - - .footer-link { - text-decoration: none; - font-size: 15px; - color: ${colors.LG_BLUE_4}; - background-color: transparent; - :hover, - :active, - :focus { - color: ${colors.LG_WHITE}; - } - } - - @media (max-width: ${resolutions.max.tablet}px) { - margin: 0; - } - - @media (max-width: ${resolutions.max.mobile}px) { - max-width: 100%; - min-height: 65px; - - ul { - justify-content: center; - } - } -`; diff --git a/sources-gen/components/GdprLayer/BrowserOnly.jsx b/sources-gen/components/GdprLayer/BrowserOnly.jsx deleted file mode 100644 index 6555ce3..0000000 --- a/sources-gen/components/GdprLayer/BrowserOnly.jsx +++ /dev/null @@ -1,5 +0,0 @@ -import { isServer } from '../../utils/ssr'; - -export const BrowserOnly = ({ children, ...restProps }) => ( -
{!isServer() && children}
-); diff --git a/sources-gen/components/GdprLayer/GdprLayer.jsx b/sources-gen/components/GdprLayer/GdprLayer.jsx deleted file mode 100644 index b3adb37..0000000 --- a/sources-gen/components/GdprLayer/GdprLayer.jsx +++ /dev/null @@ -1,44 +0,0 @@ -import { useSelector } from 'react-redux'; -import config from '../../config'; -import { userSelector } from '../../state/user/userSelectors'; -import { useLocalStorage } from '../../hooks/useLocalStorage'; -import { I18nText } from '../I18n/I18nText'; -import { BrowserOnly } from './BrowserOnly'; - -export const GdprLayer = ({ footerData }) => { - const { isLoggedIn } = useSelector(userSelector); - const [hasAcceptedGdpr, setHasAcceptedGdpr] = useLocalStorage('hasAcceptedGdpr'); - const { namedUrl } = footerData.footer.policy || {}; - - if (isLoggedIn || hasAcceptedGdpr) { - return null; - } - - return ( - -
-
-
- -
-
- - setHasAcceptedGdpr(true)} - /> -
-
-
-
- ); -}; diff --git a/sources-gen/components/GoogleTagManager/GtmDataLayer.jsx b/sources-gen/components/GoogleTagManager/GtmDataLayer.jsx deleted file mode 100644 index 80aa964..0000000 --- a/sources-gen/components/GoogleTagManager/GtmDataLayer.jsx +++ /dev/null @@ -1,40 +0,0 @@ -import { Helmet } from 'react-helmet-async'; -import { GtmNoScriptFallback } from './GtmNoScriptFallback'; -import { useStaticInfoForGtm } from './hooks/useStaticInfoForGtm'; -import { gtmDataLayerPartial, TrackingUtils } from './TrackingUtils'; -import { useCourseData } from '../../hooks/useCourseData'; - -export const gtmDataLayerFragment = gtmDataLayerPartial; - -export const GtmDataLayer = ({ content, noContentPageId, push = false }) => { - const { gtmLevel1Id: level1Id, macaParam, pageUrl } = useStaticInfoForGtm(); - const { courseId } = useCourseData(); - - const dataLayer = TrackingUtils.generateDataLayer({ - content, - macaParam, - level1Id, - pageUrl, - courseId, - noContentPageId, - }); - - if (push) { - TrackingUtils.pushToGoogleTagManager({ - withReset: true, - datalayerObj: { - event: 'onPageChange', - ...dataLayer, - }, - }); - } - - return ( - <> - - - - - - ); -}; diff --git a/sources-gen/components/GoogleTagManager/GtmLoadScript.jsx b/sources-gen/components/GoogleTagManager/GtmLoadScript.jsx deleted file mode 100644 index 7d29838..0000000 --- a/sources-gen/components/GoogleTagManager/GtmLoadScript.jsx +++ /dev/null @@ -1,13 +0,0 @@ -import { Helmet } from 'react-helmet-async'; -import { useFrontendConfig } from '../../hooks/useFrontendConfig'; - -export const GtmLoadScript = () => ( - - - -); diff --git a/sources-gen/components/GoogleTagManager/GtmNoScriptFallback.jsx b/sources-gen/components/GoogleTagManager/GtmNoScriptFallback.jsx deleted file mode 100644 index cc570b8..0000000 --- a/sources-gen/components/GoogleTagManager/GtmNoScriptFallback.jsx +++ /dev/null @@ -1,23 +0,0 @@ -import { objectToQueryParams } from '../../utils/url/url'; -import { useFrontendConfig } from '../../hooks/useFrontendConfig'; - -export const GtmNoScriptFallback = ({ dataLayer }) => { - const hideIframeStyles = { - display: 'none', - visibility: 'hidden', - }; - const { gtmId } = useFrontendConfig(); - return ( -
Page not found (404).
+ + + \ No newline at end of file diff --git a/static/assets/images/landing/course_landing-480x270.jpg b/static/assets/images/landing/course_landing-480x270.jpg new file mode 100644 index 0000000..a920474 --- /dev/null +++ b/static/assets/images/landing/course_landing-480x270.jpg @@ -0,0 +1,117 @@ + + +
+ + +
+ \ No newline at end of file diff --git a/static/assets/images/landing/course_landing-768x432.jpg b/static/assets/images/landing/course_landing-768x432.jpg new file mode 100644 index 0000000..33b4ce0 --- /dev/null +++ b/static/assets/images/landing/course_landing-768x432.jpg @@ -0,0 +1,117 @@ + + +
+ + +
+ \ No newline at end of file diff --git a/static/assets/images/landing/course_landing-992x558.jpg b/static/assets/images/landing/course_landing-992x558.jpg new file mode 100644 index 0000000..95374c0 --- /dev/null +++ b/static/assets/images/landing/course_landing-992x558.jpg @@ -0,0 +1,117 @@ + + +
+ + +
+ \ No newline at end of file diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..565287719e52ccac12953e0331e74e5bf41e14c4 GIT binary patch literal 1077 zcmV-51j_q~P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1IkH6K~zXfWBmXB zKLafR6O^VI7`1>Pz!}MBuH9d{<;a24*B?B4Ex^ki;AEU1hcbzn(|Vj&)mK?Sj%0=!&MQ3i&_8S5IRt%Y(h z01GqIxm9htsOHh#K+6c31kC98At-7 z_rU3E9Biy5@!lKuoe6a_2MQiJe-osdf#JumUl0Zypj#j>De~d-H(-K+aI;$%FzLs5 zW_IeR$j12C0Hq$kd#xRRZmM^ZqkLy@sL`gaHRwQjwxZfuW}S;qgfbq}AM^Gkh0ORW(5h#;3VCcsI z!UAR?^h}5en1$8ZwL+mB;sA4*8??^i&`PdYkn0O>uM70@N*g15f*i^llI7R;d{K#pP`tSQ&4$Tlo z7LI?P9s`X<4DN|-a-=82;zC8Q?>oc>6`mbA?nYhIMeSGlm?X7>`UNbVY{e6E2 + + + + - + Free German Courses Level A1 to B1 | DW Learn German @@ -21,5 +25,7 @@ +
+ diff --git a/static/logo192.png b/static/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 zcmZWtbyO6NvR-oO24RV%BvuJ&=?+<7=`LvyB&A_#M7mSDYw1v6DJkiYl9XjT!%$dLEBTQ8R9|wd3008in6lFF3GV-6mLi?MoP_y~}QUnaDCHI#t z7w^m$@6DI)|C8_jrT?q=f8D?0AM?L)Z}xAo^e^W>t$*Y0KlT5=@bBjT9kxb%-KNdk zeOS1tKO#ChhG7%{ApNBzE2ZVNcxbrin#E1TiAw#BlUhXllzhN$qWez5l;h+t^q#Eav8PhR2|T}y5kkflaK`ba-eoE+Z2q@o6P$)=&` z+(8}+-McnNO>e#$Rr{32ngsZIAX>GH??tqgwUuUz6kjns|LjsB37zUEWd|(&O!)DY zQLrq%Y>)Y8G`yYbYCx&aVHi@-vZ3|ebG!f$sTQqMgi0hWRJ^Wc+Ibv!udh_r%2|U) zPi|E^PK?UE!>_4`f`1k4hqqj_$+d!EB_#IYt;f9)fBOumGNyglU(ofY`yHq4Y?B%- zp&G!MRY<~ajTgIHErMe(Z8JG*;D-PJhd@RX@QatggM7+G(Lz8eZ;73)72Hfx5KDOE zkT(m}i2;@X2AT5fW?qVp?@WgN$aT+f_6eo?IsLh;jscNRp|8H}Z9p_UBO^SJXpZew zEK8fz|0Th%(Wr|KZBGTM4yxkA5CFdAj8=QSrT$fKW#tweUFqr0TZ9D~a5lF{)%-tTGMK^2tz(y2v$i%V8XAxIywrZCp=)83p(zIk6@S5AWl|Oa2hF`~~^W zI;KeOSkw1O#TiQ8;U7OPXjZM|KrnN}9arP)m0v$c|L)lF`j_rpG(zW1Qjv$=^|p*f z>)Na{D&>n`jOWMwB^TM}slgTEcjxTlUby89j1)|6ydRfWERn3|7Zd2&e7?!K&5G$x z`5U3uFtn4~SZq|LjFVrz$3iln-+ucY4q$BC{CSm7Xe5c1J<=%Oagztj{ifpaZk_bQ z9Sb-LaQMKp-qJA*bP6DzgE3`}*i1o3GKmo2pn@dj0;He}F=BgINo};6gQF8!n0ULZ zL>kC0nPSFzlcB7p41doao2F7%6IUTi_+!L`MM4o*#Y#0v~WiO8uSeAUNp=vA2KaR&=jNR2iVwG>7t%sG2x_~yXzY)7K& zk3p+O0AFZ1eu^T3s};B%6TpJ6h-Y%B^*zT&SN7C=N;g|#dGIVMSOru3iv^SvO>h4M=t-N1GSLLDqVTcgurco6)3&XpU!FP6Hlrmj}f$ zp95;b)>M~`kxuZF3r~a!rMf4|&1=uMG$;h^g=Kl;H&Np-(pFT9FF@++MMEx3RBsK?AU0fPk-#mdR)Wdkj)`>ZMl#^<80kM87VvsI3r_c@_vX=fdQ`_9-d(xiI z4K;1y1TiPj_RPh*SpDI7U~^QQ?%0&!$Sh#?x_@;ag)P}ZkAik{_WPB4rHyW#%>|Gs zdbhyt=qQPA7`?h2_8T;-E6HI#im9K>au*(j4;kzwMSLgo6u*}-K`$_Gzgu&XE)udQ zmQ72^eZd|vzI)~!20JV-v-T|<4@7ruqrj|o4=JJPlybwMg;M$Ud7>h6g()CT@wXm` zbq=A(t;RJ^{Xxi*Ff~!|3!-l_PS{AyNAU~t{h;(N(PXMEf^R(B+ZVX3 z8y0;0A8hJYp@g+c*`>eTA|3Tgv9U8#BDTO9@a@gVMDxr(fVaEqL1tl?md{v^j8aUv zm&%PX4^|rX|?E4^CkplWWNv*OKM>DxPa z!RJ)U^0-WJMi)Ksc!^ixOtw^egoAZZ2Cg;X7(5xZG7yL_;UJ#yp*ZD-;I^Z9qkP`} zwCTs0*%rIVF1sgLervtnUo&brwz?6?PXRuOCS*JI-WL6GKy7-~yi0giTEMmDs_-UX zo=+nFrW_EfTg>oY72_4Z0*uG>MnXP=c0VpT&*|rvv1iStW;*^={rP1y?Hv+6R6bxFMkxpWkJ>m7Ba{>zc_q zEefC3jsXdyS5??Mz7IET$Kft|EMNJIv7Ny8ZOcKnzf`K5Cd)&`-fTY#W&jnV0l2vt z?Gqhic}l}mCv1yUEy$%DP}4AN;36$=7aNI^*AzV(eYGeJ(Px-j<^gSDp5dBAv2#?; zcMXv#aj>%;MiG^q^$0MSg-(uTl!xm49dH!{X0){Ew7ThWV~Gtj7h%ZD zVN-R-^7Cf0VH!8O)uUHPL2mO2tmE*cecwQv_5CzWeh)ykX8r5Hi`ehYo)d{Jnh&3p z9ndXT$OW51#H5cFKa76c<%nNkP~FU93b5h-|Cb}ScHs@4Q#|}byWg;KDMJ#|l zE=MKD*F@HDBcX@~QJH%56eh~jfPO-uKm}~t7VkHxHT;)4sd+?Wc4* z>CyR*{w@4(gnYRdFq=^(#-ytb^5ESD?x<0Skhb%Pt?npNW1m+Nv`tr9+qN<3H1f<% zZvNEqyK5FgPsQ`QIu9P0x_}wJR~^CotL|n zk?dn;tLRw9jJTur4uWoX6iMm914f0AJfB@C74a;_qRrAP4E7l890P&{v<}>_&GLrW z)klculcg`?zJO~4;BBAa=POU%aN|pmZJn2{hA!d!*lwO%YSIzv8bTJ}=nhC^n}g(ld^rn#kq9Z3)z`k9lvV>y#!F4e{5c$tnr9M{V)0m(Z< z#88vX6-AW7T2UUwW`g<;8I$Jb!R%z@rCcGT)-2k7&x9kZZT66}Ztid~6t0jKb&9mm zpa}LCb`bz`{MzpZR#E*QuBiZXI#<`5qxx=&LMr-UUf~@dRk}YI2hbMsAMWOmDzYtm zjof16D=mc`^B$+_bCG$$@R0t;e?~UkF?7<(vkb70*EQB1rfUWXh$j)R2)+dNAH5%R zEBs^?N;UMdy}V};59Gu#0$q53$}|+q7CIGg_w_WlvE}AdqoS<7DY1LWS9?TrfmcvT zaypmplwn=P4;a8-%l^e?f`OpGb}%(_mFsL&GywhyN(-VROj`4~V~9bGv%UhcA|YW% zs{;nh@aDX11y^HOFXB$a7#Sr3cEtNd4eLm@Y#fc&j)TGvbbMwze zXtekX_wJqxe4NhuW$r}cNy|L{V=t#$%SuWEW)YZTH|!iT79k#?632OFse{+BT_gau zJwQcbH{b}dzKO?^dV&3nTILYlGw{27UJ72ZN){BILd_HV_s$WfI2DC<9LIHFmtyw? zQ;?MuK7g%Ym+4e^W#5}WDLpko%jPOC=aN)3!=8)s#Rnercak&b3ESRX3z{xfKBF8L z5%CGkFmGO@x?_mPGlpEej!3!AMddChabyf~nJNZxx!D&{@xEb!TDyvqSj%Y5@A{}9 zRzoBn0?x}=krh{ok3Nn%e)#~uh;6jpezhA)ySb^b#E>73e*frBFu6IZ^D7Ii&rsiU z%jzygxT-n*joJpY4o&8UXr2s%j^Q{?e-voloX`4DQyEK+DmrZh8A$)iWL#NO9+Y@!sO2f@rI!@jN@>HOA< z?q2l{^%mY*PNx2FoX+A7X3N}(RV$B`g&N=e0uvAvEN1W^{*W?zT1i#fxuw10%~))J zjx#gxoVlXREWZf4hRkgdHx5V_S*;p-y%JtGgQ4}lnA~MBz-AFdxUxU1RIT$`sal|X zPB6sEVRjGbXIP0U+?rT|y5+ev&OMX*5C$n2SBPZr`jqzrmpVrNciR0e*Wm?fK6DY& zl(XQZ60yWXV-|Ps!A{EF;=_z(YAF=T(-MkJXUoX zI{UMQDAV2}Ya?EisdEW;@pE6dt;j0fg5oT2dxCi{wqWJ<)|SR6fxX~5CzblPGr8cb zUBVJ2CQd~3L?7yfTpLNbt)He1D>*KXI^GK%<`bq^cUq$Q@uJifG>p3LU(!H=C)aEL zenk7pVg}0{dKU}&l)Y2Y2eFMdS(JS0}oZUuVaf2+K*YFNGHB`^YGcIpnBlMhO7d4@vV zv(@N}(k#REdul8~fP+^F@ky*wt@~&|(&&meNO>rKDEnB{ykAZ}k>e@lad7to>Ao$B zz<1(L=#J*u4_LB=8w+*{KFK^u00NAmeNN7pr+Pf+N*Zl^dO{LM-hMHyP6N!~`24jd zXYP|Ze;dRXKdF2iJG$U{k=S86l@pytLx}$JFFs8e)*Vi?aVBtGJ3JZUj!~c{(rw5>vuRF$`^p!P8w1B=O!skwkO5yd4_XuG^QVF z`-r5K7(IPSiKQ2|U9+`@Js!g6sfJwAHVd|s?|mnC*q zp|B|z)(8+mxXyxQ{8Pg3F4|tdpgZZSoU4P&9I8)nHo1@)9_9u&NcT^FI)6|hsAZFk zZ+arl&@*>RXBf-OZxhZerOr&dN5LW9@gV=oGFbK*J+m#R-|e6(Loz(;g@T^*oO)0R zN`N=X46b{7yk5FZGr#5&n1!-@j@g02g|X>MOpF3#IjZ_4wg{dX+G9eqS+Es9@6nC7 zD9$NuVJI}6ZlwtUm5cCAiYv0(Yi{%eH+}t)!E^>^KxB5^L~a`4%1~5q6h>d;paC9c zTj0wTCKrhWf+F#5>EgX`sl%POl?oyCq0(w0xoL?L%)|Q7d|Hl92rUYAU#lc**I&^6p=4lNQPa0 znQ|A~i0ip@`B=FW-Q;zh?-wF;Wl5!+q3GXDu-x&}$gUO)NoO7^$BeEIrd~1Dh{Tr` z8s<(Bn@gZ(mkIGnmYh_ehXnq78QL$pNDi)|QcT*|GtS%nz1uKE+E{7jdEBp%h0}%r zD2|KmYGiPa4;md-t_m5YDz#c*oV_FqXd85d@eub?9N61QuYcb3CnVWpM(D-^|CmkL z(F}L&N7qhL2PCq)fRh}XO@U`Yn<?TNGR4L(mF7#4u29{i~@k;pLsgl({YW5`Mo+p=zZn3L*4{JU;++dG9 X@eDJUQo;Ye2mwlRs