11import CodeSurfer from "code-surfer" ;
22import 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"
55import memoizeOne from "memoize-one" ;
66
77const Notes = ( { notes } ) =>
@@ -17,14 +17,10 @@ const Title = ({ title }) =>
1717class 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 ) ) ;
125123export default ( { theme, ...rest } ) => (
126124 < EnhancedCodeSurfer { ...rest } prismTheme = { theme } />
127125) ;
0 commit comments