Skip to content

Commit b272b3f

Browse files
Merge pull request #30629 from storybookjs/version-non-patch-from-8.6.0-beta.7
Release: Prerelease 8.6.0-beta.8
2 parents acf4f6b + ef3bf3b commit b272b3f

File tree

5 files changed

+69
-48
lines changed

5 files changed

+69
-48
lines changed

CHANGELOG.prerelease.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 8.6.0-beta.8
2+
3+
- Addon-Test: Fix console error in build mode - [#30625](https://github.com/storybookjs/storybook/pull/30625), thanks @JReinhold!
4+
- Manager: Fix panel reactivity - [#30638](https://github.com/storybookjs/storybook/pull/30638), thanks @valentinpalkovic!
5+
16
## 8.6.0-beta.7
27

38
- Angular: Fix @angular/platform-browser/animations never available - [#30618](https://github.com/storybookjs/storybook/pull/30618), thanks @valentinpalkovic!

code/addons/test/src/manager-store.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,7 @@ import { experimental_UniversalStore } from 'storybook/internal/manager-api';
22

33
import { type StoreState, storeOptions } from './constants';
44

5-
export const store = experimental_UniversalStore.create<StoreState>(storeOptions);
5+
export const store = experimental_UniversalStore.create<StoreState>({
6+
...storeOptions,
7+
leader: (globalThis as any).CONFIG_TYPE === 'PRODUCTION',
8+
});
Lines changed: 57 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,70 @@
11
import type { FC } from 'react';
2-
import React from 'react';
2+
import React, { useMemo, useState } from 'react';
33

4-
import { type API_LeafEntry, Addon_TypesEnum } from '@storybook/core/types';
4+
import { Addon_TypesEnum } from '@storybook/core/types';
55

6-
import { Consumer } from '@storybook/core/manager-api';
7-
import type { API, Combo } from '@storybook/core/manager-api';
8-
9-
import memoize from 'memoizerific';
6+
import { useChannel, useStorybookApi, useStorybookState } from '@storybook/core/manager-api';
107

8+
import { STORY_PREPARED } from '../../core-events';
119
import { AddonPanel } from '../components/panel/Panel';
1210

13-
const createPanelActions = memoize(1)((api) => ({
14-
onSelect: (panel: string) => api.setSelectedPanel(panel),
15-
toggleVisibility: () => api.togglePanel(),
16-
togglePosition: () => api.togglePanelPosition(),
17-
}));
11+
const Panel: FC<any> = (props) => {
12+
const api = useStorybookApi();
13+
const state = useStorybookState();
14+
const [story, setStory] = useState(api.getCurrentStoryData());
1815

19-
const getPanels = memoize(1)((api: API, story: API_LeafEntry) => {
20-
const allPanels = api.getElements(Addon_TypesEnum.PANEL);
16+
useChannel(
17+
{
18+
[STORY_PREPARED]: () => {
19+
setStory(api.getCurrentStoryData());
20+
},
21+
},
22+
[]
23+
);
2124

22-
if (!allPanels || !story || story.type !== 'story') {
23-
return allPanels;
24-
}
25+
const { parameters, type } = story ?? {};
2526

26-
const { parameters } = story;
27+
const panelActions = useMemo(
28+
() => ({
29+
onSelect: (panel: string) => api.setSelectedPanel(panel),
30+
toggleVisibility: () => api.togglePanel(),
31+
togglePosition: () => api.togglePanelPosition(),
32+
}),
33+
[api]
34+
);
2735

28-
const filteredPanels: typeof allPanels = {};
29-
Object.entries(allPanels).forEach(([id, panel]) => {
30-
const { paramKey }: any = panel;
31-
if (paramKey && parameters && parameters[paramKey] && parameters[paramKey].disable) {
32-
return;
33-
}
34-
if (
35-
panel.disabled === true ||
36-
(typeof panel.disabled === 'function' && panel.disabled(parameters))
37-
) {
38-
return;
36+
const panels = useMemo(() => {
37+
const allPanels = api.getElements(Addon_TypesEnum.PANEL);
38+
39+
if (!allPanels || type !== 'story') {
40+
return allPanels;
3941
}
40-
filteredPanels[id] = panel;
41-
});
42-
43-
return filteredPanels;
44-
});
45-
46-
const mapper = ({ state, api }: Combo) => ({
47-
panels: getPanels(api, api.getCurrentStoryData()),
48-
selectedPanel: api.getSelectedPanel(),
49-
panelPosition: state.layout.panelPosition,
50-
actions: createPanelActions(api),
51-
shortcuts: api.getShortcutKeys(),
52-
});
53-
54-
const Panel: FC<any> = (props) => (
55-
<Consumer filter={mapper}>{(customProps) => <AddonPanel {...props} {...customProps} />}</Consumer>
56-
);
42+
43+
const filteredPanels: typeof allPanels = {};
44+
Object.entries(allPanels).forEach(([id, p]) => {
45+
const { paramKey }: any = p;
46+
if (paramKey && parameters && parameters[paramKey] && parameters[paramKey].disable) {
47+
return;
48+
}
49+
if (p.disabled === true || (typeof p.disabled === 'function' && p.disabled(parameters))) {
50+
return;
51+
}
52+
filteredPanels[id] = p;
53+
});
54+
55+
return filteredPanels;
56+
}, [api, type, parameters]);
57+
58+
return (
59+
<AddonPanel
60+
panels={panels}
61+
selectedPanel={api.getSelectedPanel()}
62+
panelPosition={state.layout.panelPosition}
63+
actions={panelActions}
64+
shortcuts={api.getShortcutKeys()}
65+
{...props}
66+
/>
67+
);
68+
};
5769

5870
export default Panel;

code/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,5 +303,6 @@
303303
"Dependency Upgrades"
304304
]
305305
]
306-
}
306+
},
307+
"deferredNextVersion": "8.6.0-beta.8"
307308
}

docs/versions/next.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"version":"8.6.0-beta.7","info":{"plain":"- Angular: Fix @angular/platform-browser/animations never available - [#30618](https://github.com/storybookjs/storybook/pull/30618), thanks @valentinpalkovic!\n- Angular: Fix @angular/platform-browser/animations never available - [#30619](https://github.com/storybookjs/storybook/pull/30619), thanks @valentinpalkovic!\n- CLI: Fix peer dep issues for npm users during upgrade - [#30616](https://github.com/storybookjs/storybook/pull/30616), thanks @valentinpalkovic!"}}
1+
{"version":"8.6.0-beta.8","info":{"plain":"- Addon-Test: Fix console error in build mode - [#30625](https://github.com/storybookjs/storybook/pull/30625), thanks @JReinhold!\n- Manager: Fix panel reactivity - [#30638](https://github.com/storybookjs/storybook/pull/30638), thanks @valentinpalkovic!"}}

0 commit comments

Comments
 (0)