* chore(packages): Update redux utils
* feat(Panes): Invert control of panes map creation
* feat(Modern): Add view
* feat(Panes): Decouple panes from Challenges
* fix(Challenges): Decouple challenge views from panes map
* fix(Challenge/views): PanesMap => mapStateToPanesMap
This clarifies what these functions are doing
* fix(Challenges): Add view type
* fix(Panes): Remove unneeded panes container
* feat(Panes): Invert control of pane content render
This decouples the Panes from the content they render, allowing for
greater flexibility.
* feat(Modern): Add side panel
This is common between modern and classic
* feat(seed): Array to string file content
* fix(files): Modern files should be polyvinyls
* feat(Modern): Create editors per file
* fix(seed/React): Incorrect keyfile name
* feat(Modern): Highligh jsx correctly
This adds highlighting for jsx. Unfortunately, this disables linting for
non-javascript files as jshint will only work for those
* feat(rechallenge): Add jsx ext to babel transformer
* feat(seed): Normalize challenge files head/tail/content
* refactor(rechallenge/build): Rename function
* fix(code-storage): Pull in files from localStorage
* feat(Modern/React): Add Enzyme to test runner
This enables testing of React challenges
* feat(Modern): Add submission type
* refactor(Panes): Rename panes map update action
* chore(packages): Update redux utils
* feat(Panes): Invert control of panes map creation
* feat(Modern): Add view
* feat(Panes): Decouple panes from Challenges
* fix(Challenges): Decouple challenge views from panes map
* fix(Challenge/views): PanesMap => mapStateToPanesMap
This clarifies what these functions are doing
* fix(Challenges): Add view type
* fix(Panes): Remove unneeded panes container
* feat(Panes): Invert control of pane content render
This decouples the Panes from the content they render, allowing for
greater flexibility.
* feat(Modern): Add side panel
This is common between modern and classic
* feat(seed): Array to string file content
* fix(files): Modern files should be polyvinyls
* feat(Modern): Create editors per file
* fix(seed/React): Incorrect keyfile name
* feat(Modern): Highligh jsx correctly
This adds highlighting for jsx. Unfortunately, this disables linting for
non-javascript files as jshint will only work for those
* feat(rechallenge): Add jsx ext to babel transformer
* feat(seed): Normalize challenge files head/tail/content
* refactor(rechallenge/build): Rename function
* fix(code-storage): Pull in files from localStorage
* feat(Modern/React): Add Enzyme to test runner
This enables testing of React challenges
* feat(Modern): Add submission type
* refactor(Panes): Rename panes map update action
The default text of the legend is confusing given the low range of
values used. Cal-heatmap expects higher legend values, such as [10, 20,
30, 40], rather than [1, 2, 3]. This change will hopefully make the
mouseover text for the legend a little less confusing.
BREAKING CHANGE: None
Closes#16124
* feat(seed): Add modern challenge
* chore(react): Use prop-types package
* feat: Initial refactor to redux-first-router
BREAKING CHANGE: Everything is different!
* feat: First rendering
* feat(routes): Challenges view render but failing
* fix(Challenges): Remove contain HOC
* fix(RFR): Add params selector
* fix(RFR): :en should be :lang
* fix: Update berks utils for redux
* fix(Map): Challenge link to arg
* fix(Map): Add trailing slash to map page
* fix(RFR): Use FCC Link
Use fcc Link to get around issue of lang being undefined
* fix(Router): Link to is required
* fix(app): Rely on RFR state for app lang
* chore(RFR): Remove unused RFR Link
* fix(RFR): Hydrate initial challenge using RFR and RO
* fix: Casing issue
* fix(RFR): Undefined links
* fix(RFR): Use onRoute<name> convention for route types
* feat(server/react): Add helpful redux logging/throwing
* fix(server/react): Strip out nonjson from state
This prevents thunks in routesMap from breaking serialization
* fix(RFR/Link): Should accept any renderable
* fix(RFR): Get redirects working
* fix(RFR): Redirects and not found's
* fix(Map): Move challenge onClick handler
* fix(Map): Allow Router.link to handle clicks after onClick
* fix(routes): Remove react-router-redux
* feat(Router): Add lang to all route actions by default
* fix(entities): Only fetch challenge if not already loaded
* fix(Files): Move files to own feature
* chore(Challenges): Remove vestigial hints logic
* fix(RFR): Update challenges on route challenges
* fix(code-storage): Should use events instead of commands
* fix(Map): ClickOnMap should not hold on to event
* chore(lint): Use eslint-config-freecodecamp
Closes#15938
* feat(Panes): Update panes on route instead of render
* fix(Panes): Store panesmap and update on fetchchallenges
* fix(Panes): Normalize panesmaps
* fix(Panes): Remove filter from createpanemap
* fix(Panes): Middleware on location meta object
* feat(Panes): Filter preview on nonhtml challenges
* build(babel): Add lodash babel plugin
* chore(lint): Lint js files
* fix(server/user-stats): Remove use of lodash chain
this interferes with babel-plugin-lodash
* feat(dev): Add remote redux devtools for ssr
* fix(Panes): Dispatch mount action
this is needed to trigger window/divider epics
* fix(Panes): Getpane to use new panesmap format
* fix(Panes): Always update panes after state
this lets the panes logic be affected by changes in state
* feat(seed): Add modern challenge
* chore(react): Use prop-types package
* feat: Initial refactor to redux-first-router
BREAKING CHANGE: Everything is different!
* feat: First rendering
* feat(routes): Challenges view render but failing
* fix(Challenges): Remove contain HOC
* fix(RFR): Add params selector
* fix(RFR): :en should be :lang
* fix: Update berks utils for redux
* fix(Map): Challenge link to arg
* fix(Map): Add trailing slash to map page
* fix(RFR): Use FCC Link
Use fcc Link to get around issue of lang being undefined
* fix(Router): Link to is required
* fix(app): Rely on RFR state for app lang
* chore(RFR): Remove unused RFR Link
* fix(RFR): Hydrate initial challenge using RFR and RO
* fix: Casing issue
* fix(RFR): Undefined links
* fix(RFR): Use onRoute<name> convention for route types
* feat(server/react): Add helpful redux logging/throwing
* fix(server/react): Strip out nonjson from state
This prevents thunks in routesMap from breaking serialization
* fix(RFR/Link): Should accept any renderable
* fix(RFR): Get redirects working
* fix(RFR): Redirects and not found's
* fix(Map): Move challenge onClick handler
* fix(Map): Allow Router.link to handle clicks after onClick
* fix(routes): Remove react-router-redux
* feat(Router): Add lang to all route actions by default
* fix(entities): Only fetch challenge if not already loaded
* fix(Files): Move files to own feature
* chore(Challenges): Remove vestigial hints logic
* fix(RFR): Update challenges on route challenges
* fix(code-storage): Should use events instead of commands
* fix(Map): ClickOnMap should not hold on to event
* chore(lint): Use eslint-config-freecodecamp
Closes#15938
* feat(Panes): Update panes on route instead of render
* fix(Panes): Store panesmap and update on fetchchallenges
* fix(Panes): Normalize panesmaps
* fix(Panes): Remove filter from createpanemap
* fix(Panes): Middleware on location meta object
* feat(Panes): Filter preview on nonhtml challenges
* build(babel): Add lodash babel plugin
* chore(lint): Lint js files
* fix(server/user-stats): Remove use of lodash chain
this interferes with babel-plugin-lodash
* feat(dev): Add remote redux devtools for ssr
* fix(Panes): Dispatch mount action
this is needed to trigger window/divider epics
* fix(Panes): Getpane to use new panesmap format
* fix(Panes): Always update panes after state
this lets the panes logic be affected by changes in state