Skip to content

Commit 6397111

Browse files
committed
docs(storybook): update README module to Storybook v7 api
1 parent 59df9fc commit 6397111

File tree

1 file changed

+30
-20
lines changed

1 file changed

+30
-20
lines changed

storyhelpers/storybook-readme/register.js

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@
33
/* eslint-disable @typescript-eslint/no-unused-vars */
44
import 'github-markdown-css/github-markdown.css';
55

6-
import { addons, types } from '@storybook/addons';
6+
import {
7+
addons,
8+
types,
9+
useStorybookApi,
10+
useChannel,
11+
} from '@storybook/manager-api';
712
import { AddonPanel } from '@storybook/components';
813
import { STORY_RENDERED } from '@storybook/core-events';
914
import React, { useEffect, useState } from 'react';
@@ -18,24 +23,22 @@ import remarkGfm from 'remark-gfm';
1823
const ADDON_ID = 'readme';
1924
const PANEL_ID = `${ADDON_ID}/panel`;
2025

21-
const Readme = props => {
26+
const Readme = () => {
27+
const api = useStorybookApi();
2228
const [markdown, setMarkdown] = useState();
2329
const [useDarkMode, setUseDarkMode] = useState();
2430

25-
useEffect(() => {
26-
setUseDarkMode(window.matchMedia('(prefers-color-scheme: dark)').matches);
27-
window
28-
.matchMedia('(prefers-color-scheme: dark)')
29-
.addEventListener('change', updateUseDarkMode);
30-
31-
const api = props.api;
32-
api.on(STORY_RENDERED, () => {
31+
useChannel({
32+
[STORY_RENDERED]: async () => {
3333
setMarkdown('');
34-
const component = api.getCurrentStoryData().component;
34+
const componentPath = api.getCurrentStoryData().importPath.split('/');
35+
const component = componentPath[componentPath.length - 1].split('.')[0];
3536
if (component) {
3637
try {
37-
const readme =
38-
require(`!raw-loader!../../packages/${component}/README.md`).default;
38+
const readmeUrl = `../../packages/${component}/README.md`;
39+
const readme = await fetch(readmeUrl, {
40+
headers: { 'Content-Type': 'text/plain' },
41+
}).then(res => res.text());
3942

4043
setMarkdown(readme);
4144

@@ -55,7 +58,18 @@ const Readme = props => {
5558
console.warn('No README file found for', component);
5659
}
5760
}
58-
});
61+
},
62+
});
63+
64+
const updateUseDarkMode = event => {
65+
setUseDarkMode(event.matches);
66+
};
67+
68+
useEffect(() => {
69+
setUseDarkMode(window.matchMedia('(prefers-color-scheme: dark)').matches);
70+
window
71+
.matchMedia('(prefers-color-scheme: dark)')
72+
.addEventListener('change', updateUseDarkMode);
5973

6074
return function cleanup() {
6175
window
@@ -64,10 +78,6 @@ const Readme = props => {
6478
};
6579
}, []);
6680

67-
const updateUseDarkMode = event => {
68-
setUseDarkMode(event.matches);
69-
};
70-
7181
const renderReadme = () => (
7282
<ReactMarkdown
7383
children={markdown}
@@ -99,7 +109,7 @@ const Readme = props => {
99109

100110
const renderNoReadme = () => (
101111
<div>
102-
<h3>There's no readme for this component</h3>
112+
<h3>There's no readme wgr for this component</h3>
103113
</div>
104114
);
105115

@@ -116,7 +126,7 @@ addons.register(ADDON_ID, api => {
116126
title: 'Readme',
117127
render: ({ active, key }) => (
118128
<AddonPanel active={active} key={key}>
119-
<Readme api={api} />
129+
<Readme />
120130
</AddonPanel>
121131
),
122132
});

0 commit comments

Comments
 (0)