@@ -2,41 +2,51 @@ import type { Meta, StoryObj } from '@storybook/react'
22import { DiagramFrame } from './DiagramFrame'
33import { createStore , Provider } from 'jotai'
44import { codeAtom , modeAtom , RenderMode } from '../../store/Store'
5+ import { useMemo } from 'react'
6+ import '../../assets/tailwind.css'
57
6- const store = createStore ( )
8+ const DiagramFrameWithCode = ( { code } : { code : string } ) => {
9+ const store = useMemo ( ( ) => {
10+ const s = createStore ( )
11+ s . set ( codeAtom , code )
12+ s . set ( modeAtom , RenderMode . Static )
13+ return s
14+ } , [ code ] )
715
8- const meta : Meta < typeof DiagramFrame > = {
16+ return (
17+ < Provider store = { store } >
18+ < div className = "zenuml" style = { { width : '100%' , height : '600px' } } >
19+ < DiagramFrame />
20+ </ div >
21+ </ Provider >
22+ )
23+ }
24+
25+ const meta : Meta < typeof DiagramFrameWithCode > = {
926 title : 'Components/DiagramFrame' ,
10- component : DiagramFrame ,
27+ tags : [ 'autodocs' ] ,
28+ component : DiagramFrameWithCode ,
1129 parameters : {
1230 layout : 'fullscreen' ,
1331 } ,
14- decorators : [
15- ( Story ) => (
16- < Provider store = { store } >
17- < div style = { { width : '100%' , height : '600px' } } >
18- < Story />
19- </ div >
20- </ Provider >
21- ) ,
22- ] ,
32+ argTypes : {
33+ code : { control : 'text' } ,
34+ } ,
2335}
2436
2537export default meta
2638type Story = StoryObj < typeof meta >
2739
2840export const Default : Story = {
29- render : ( ) => {
30- store . set ( codeAtom , `Alice -> Bob: Hello Bob
31- Bob -> Alice: Hello Alice` )
32- store . set ( modeAtom , RenderMode . Static )
33- return < DiagramFrame />
41+ args : {
42+ code : `Alice -> Bob: Hello Bob
43+ Bob -> Alice: Hello Alice` ,
3444 } ,
3545}
3646
3747export const ComplexSequence : Story = {
38- render : ( ) => {
39- store . set ( codeAtom , `@Actor Client #FFAAAA
48+ args : {
49+ code : `@Actor Client #FFAAAA
4050@Database Database #FFFFAA
4151@Boundary WebServer #AAFFAA
4252
@@ -50,15 +60,13 @@ Client->WebServer.doPost() {
5060 }
5161
5262 WebServer->Client: Response
53- }` )
54- store . set ( modeAtom , RenderMode . Static )
55- return < DiagramFrame />
63+ }` ,
5664 } ,
5765}
5866
5967export const WithFragments : Story = {
60- render : ( ) => {
61- store . set ( codeAtom , `Alice -> Bob: Authentication Request
68+ args : {
69+ code : `Alice -> Bob: Authentication Request
6270
6371alt successful case {
6472 Bob -> Alice: Authentication Accepted
@@ -72,19 +80,15 @@ alt successful case {
7280}
7381
7482Alice -> Bob: Another authentication Request
75- Alice <- Bob: another authentication Response` )
76- store . set ( modeAtom , RenderMode . Static )
77- return < DiagramFrame />
83+ Alice <- Bob: another authentication Response` ,
7884 } ,
7985}
8086
8187export const AsyncMessages : Story = {
82- render : ( ) => {
83- store . set ( codeAtom , `A -> B: Sync message
88+ args : {
89+ code : `A -> B: Sync message
8490A ->> B: Async message
8591B -->> A: Async response
86- B --> A: Sync response` )
87- store . set ( modeAtom , RenderMode . Static )
88- return < DiagramFrame />
92+ B --> A: Sync response` ,
8993 } ,
9094}
0 commit comments