Skip to content

Commit 1d43c6d

Browse files
committed
Make CodeSurfer compatible with mdx-deck 2.x
1 parent b39c306 commit 1d43c6d

File tree

3 files changed

+12
-14
lines changed

3 files changed

+12
-14
lines changed

fixtures/sample/sample.mdx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { CodeSurfer } from "mdx-deck-code-surfer"
2-
import { dark } from "mdx-deck/themes"
2+
import { dark } from "@mdx-deck/themes"
33
import nightOwl from "prism-react-renderer/themes/nightOwl"
44

55
export { components } from "mdx-deck-code-surfer"
@@ -124,7 +124,7 @@ And you can still add regular notes the ol' fashioned way!
124124
---
125125

126126
```jsx Global Theming
127-
import { dark } from "mdx-deck/themes"
127+
import { dark } from "@mdx-deck/themes"
128128
import nightOwl from "prism-react-renderer/themes/nightOwl"
129129

130130
export const theme = {

packages/mdx-deck-code-surfer/src/deck-code-surfer.js

+9-11
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import CodeSurfer from "code-surfer";
22
import React from "react";
3-
import { withDeck, updaters } from "mdx-deck";
4-
import { withTheme } from "styled-components";
3+
import { withContext } from "@mdx-deck/components"
4+
import { withTheme } from "emotion-theming"
55
import memoizeOne from "memoize-one";
66

77
const Notes = ({ notes }) =>
@@ -17,14 +17,10 @@ const Title = ({ title }) =>
1717
class InnerCodeSurfer extends React.Component {
1818
constructor(props) {
1919
super(props);
20-
const { update, index } = props.deck;
20+
const { register, index } = props.context
21+
if (typeof register !== 'function') return
2122
const parsedSteps = this.parseSteps(props.steps);
22-
const maxStep = parsedSteps.length - 1;
23-
update(updaters.setSteps(index, maxStep));
24-
}
25-
26-
shouldComponentUpdate(nextProps) {
27-
return !!nextProps.deck.active;
23+
register(index, { steps: parsedSteps.length-1 })
2824
}
2925

3026
parseSteps = memoizeOne((steps, notes) => {
@@ -50,6 +46,7 @@ class InnerCodeSurfer extends React.Component {
5046

5147
render() {
5248
let {
49+
context,
5350
code,
5451
steps,
5552
title,
@@ -60,7 +57,8 @@ class InnerCodeSurfer extends React.Component {
6057
...rest
6158
} = this.props;
6259

63-
const stepIndex = this.props.deck.step || 0;
60+
const { step } = context
61+
const stepIndex = step || 0;
6462
const mdxDeckTheme = theme;
6563
prismTheme = prismTheme || mdxDeckTheme.codeSurfer;
6664
showNumbers = showNumbers || (prismTheme && prismTheme.showNumbers);
@@ -121,7 +119,7 @@ class InnerCodeSurfer extends React.Component {
121119
}
122120

123121
// Things I need to do to avoid props name collisions
124-
const EnhancedCodeSurfer = withDeck(withTheme(InnerCodeSurfer));
122+
const EnhancedCodeSurfer = withContext(withTheme(InnerCodeSurfer));
125123
export default ({ theme, ...rest }) => (
126124
<EnhancedCodeSurfer {...rest} prismTheme={theme} />
127125
);

packages/mdx-deck-code-surfer/src/deck-components.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React from "react";
2-
import { Notes } from "mdx-deck";
2+
import { Notes } from "@mdx-deck/components";
33
import DeckCodeSurfer from "./deck-code-surfer";
44

55
class Code extends React.PureComponent {

0 commit comments

Comments
 (0)