@@ -26,8 +26,8 @@ use util::*;
2626use yewdux:: { prelude:: use_store, use_dispatch, YewduxRoot } ;
2727use zip:: { write:: FileOptions , CompressionMethod , ZipWriter } ;
2828
29- #[ function_component]
30- fn App ( _props : & ( ) ) -> Html {
29+ #[ function_component( App ) ]
30+ fn app ( ) -> Html {
3131 let generating = use_state_eq ( || false ) ;
3232 let generating_setter = generating. setter ( ) ;
3333
@@ -163,87 +163,94 @@ fn App(_props: &()) -> Html {
163163 } ;
164164
165165 html ! {
166- <YewduxRoot >
167- <div class="container" >
168- <div class={ classes!( "column" ) } >
169- <h1>
170- { "svg2gcode" }
171- </h1>
172- <p>
173- { env!( "CARGO_PKG_DESCRIPTION" ) }
174- </p>
175- <SvgForm />
176- <ButtonGroup >
177- <Button
178- title="Generate G-Code"
179- style={ ButtonStyle :: Primary }
180- loading={ * generating}
181- icon={
182- html_nested! (
183- <Icon name={ IconName :: Download } />
184- )
185- }
186- disabled={ generate_disabled}
187- onclick={ generate_onclick}
188- />
189- <HyperlinkButton
190- title="Settings"
191- style={ ButtonStyle :: Default }
192- icon={ IconName :: Edit }
193- href="#settings"
194- />
195- </ButtonGroup >
196- <div class={ classes!( "card-container" , "columns" ) } >
197- {
198- for app_store. svgs. iter( ) . enumerate( ) . map( |( i, svg) | {
199- let svg_base64 = base64:: engine:: general_purpose:: STANDARD_NO_PAD . encode( svg. content. as_bytes( ) ) ;
200- let remove_svg_onclick = app_dispatch. reduce_mut_callback( move |app| {
201- app. svgs. remove( i) ;
202- } ) ;
203- let footer = html!{
204- <Button
205- title="Remove"
206- style={ ButtonStyle :: Primary }
207- icon={
208- html_nested!(
209- <Icon name={ IconName :: Delete } />
210- )
211- }
212- onclick={ remove_svg_onclick}
213- />
214- } ;
215- html!{
216- <div class={ classes!( "column" , "col-6" , "col-xs-12" ) } >
217- <Card
218- title={ svg. filename. clone( ) }
219- img={ html_nested!(
220- <img class="img-responsive" src={ format!( "data:image/svg+xml;base64,{}" , svg_base64) } alt={ svg. filename. clone( ) } />
221- ) }
222- footer={ footer}
223- />
224- </div>
225- }
226- } )
166+ <div class="container" >
167+ <div class={ classes!( "column" ) } >
168+ <h1>
169+ { "svg2gcode" }
170+ </h1>
171+ <p>
172+ { env!( "CARGO_PKG_DESCRIPTION" ) }
173+ </p>
174+ <SvgForm />
175+ <ButtonGroup >
176+ <Button
177+ title="Generate G-Code"
178+ style={ ButtonStyle :: Primary }
179+ loading={ * generating}
180+ icon={
181+ html_nested! (
182+ <Icon name={ IconName :: Download } />
183+ )
227184 }
228- </div>
229- <SettingsForm />
230- <ImportExportModal />
231- </div>
232- <div class={ classes!( "text-right" , "column" ) } >
233- <p>
234- { "See the project " }
235- <a href={ env!( "CARGO_PKG_REPOSITORY" ) } >
236- { "on GitHub" }
237- </a>
238- { " for support" }
239- </p>
185+ disabled={ generate_disabled}
186+ onclick={ generate_onclick}
187+ />
188+ <HyperlinkButton
189+ title="Settings"
190+ style={ ButtonStyle :: Default }
191+ icon={ IconName :: Edit }
192+ href="#settings"
193+ />
194+ </ButtonGroup >
195+ <div class={ classes!( "card-container" , "columns" ) } >
196+ {
197+ for app_store. svgs. iter( ) . enumerate( ) . map( |( i, svg) | {
198+ let svg_base64 = base64:: engine:: general_purpose:: STANDARD_NO_PAD . encode( svg. content. as_bytes( ) ) ;
199+ let remove_svg_onclick = app_dispatch. reduce_mut_callback( move |app| {
200+ app. svgs. remove( i) ;
201+ } ) ;
202+ let footer = html!{
203+ <Button
204+ title="Remove"
205+ style={ ButtonStyle :: Primary }
206+ icon={
207+ html_nested!(
208+ <Icon name={ IconName :: Delete } />
209+ )
210+ }
211+ onclick={ remove_svg_onclick}
212+ />
213+ } ;
214+ html!{
215+ <div class={ classes!( "column" , "col-6" , "col-xs-12" ) } >
216+ <Card
217+ title={ svg. filename. clone( ) }
218+ img={ html_nested!(
219+ <img class="img-responsive" src={ format!( "data:image/svg+xml;base64,{}" , svg_base64) } alt={ svg. filename. clone( ) } />
220+ ) }
221+ footer={ footer}
222+ />
223+ </div>
224+ }
225+ } )
226+ }
240227 </div>
228+ <SettingsForm />
229+ <ImportExportModal />
230+ </div>
231+ <div class={ classes!( "text-right" , "column" ) } >
232+ <p>
233+ { "See the project " }
234+ <a href={ env!( "CARGO_PKG_REPOSITORY" ) } >
235+ { "on GitHub" }
236+ </a>
237+ { " for support" }
238+ </p>
241239 </div>
240+ </div>
241+ }
242+ }
243+
244+ #[ function_component( AppContainer ) ]
245+ fn app_container ( ) -> Html {
246+ html ! {
247+ <YewduxRoot >
248+ <App />
242249 </YewduxRoot >
243250 }
244251}
245252
246253fn main ( ) {
247254 wasm_logger:: init ( wasm_logger:: Config :: new ( Level :: Info ) ) ;
248- yew:: Renderer :: < App > :: new ( ) . render ( ) ;
255+ yew:: Renderer :: < AppContainer > :: new ( ) . render ( ) ;
249256}
0 commit comments