Skip to content

Commit 2720a2d

Browse files
authored
docs(CodeSandbox): fix paths for images in exported examples (#3758)
1 parent a6e5824 commit 2720a2d

4 files changed

Lines changed: 41 additions & 7 deletions

File tree

docs/src/components/ComponentDoc/ComponentControls/ComponentControlsCodeSandbox.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import * as _ from 'lodash'
21
import PropTypes from 'prop-types'
32
import * as React from 'react'
43
import CodeSandboxer from 'react-codesandboxer'
54
import { Menu } from 'semantic-ui-react'
65

7-
import { externals } from 'docs/src/components/ComponentDoc/ExampleEditor/renderConfig'
6+
import createPackageJson from './createPackageJson'
7+
import enhanceExampleCode from './enhanceExampleCode'
88

99
const appTemplate = `import React from "react";
1010
import ReactDOM from "react-dom";
@@ -47,7 +47,6 @@ ReactDOM.render(
4747
document.getElementById("root")
4848
);
4949
`
50-
const dependencies = _.mapValues(externals, () => 'latest')
5150

5251
class ComponentControlsCodeSandbox extends React.Component {
5352
static propTypes = {
@@ -94,11 +93,10 @@ class ComponentControlsCodeSandbox extends React.Component {
9493
<CodeSandboxer
9594
afterDeploy={this.handleDeploy}
9695
examplePath='/'
97-
example={exampleCode}
98-
dependencies={dependencies}
99-
name='semantic-ui-react-example'
96+
example={enhanceExampleCode(exampleCode)}
10097
providedFiles={{
10198
'index.js': { content: appTemplate },
99+
'package.json': createPackageJson(),
102100
}}
103101
skipRedirect
104102
template='create-react-app'
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import * as _ from 'lodash'
2+
import { externals } from 'docs/src/components/ComponentDoc/ExampleEditor/renderConfig'
3+
4+
const name = 'semantic-ui-example'
5+
const description = 'An exported example from Semantic UI React, https://react.semantic-ui.com/'
6+
const dependencies = {
7+
..._.mapValues(externals, () => 'latest'),
8+
// required to enable all features due old templates in https://github.com/codesandbox/codesandbox-importers
9+
'react-scripts': 'latest',
10+
}
11+
12+
const createPackageJson = () => ({
13+
content: JSON.stringify(
14+
{
15+
name,
16+
version: '1.0.0',
17+
description,
18+
main: 'index.js',
19+
dependencies,
20+
},
21+
null,
22+
2,
23+
),
24+
})
25+
26+
export default createPackageJson
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
const imagesRegex = /\/images\//gm
2+
3+
const enhanceExampleCode = (code) => {
4+
// To have absolute paths on CodeSandbox for images
5+
return code.replace(imagesRegex, 'https://react.semantic-ui.com/images/')
6+
}
7+
8+
export default enhanceExampleCode

docs/src/components/ComponentDoc/ExampleEditor/renderConfig.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import * as docsComponents from '@stardust-ui/docs-components'
22
import faker from 'faker'
33
import React from 'react'
4+
import ReactDOM from 'react-dom'
45
import PropTypes from 'prop-types'
56
import * as SUIR from 'semantic-ui-react'
67

@@ -20,8 +21,9 @@ export const externals = {
2021
'@stardust-ui/docs-components': docsComponents,
2122
faker,
2223
lodash: require('lodash'),
23-
react: React,
2424
'prop-types': PropTypes,
25+
react: React,
26+
'react-dom': ReactDOM,
2527
'semantic-ui-react': SUIR,
2628
}
2729

0 commit comments

Comments
 (0)