11import { getPlaygroundUrl } from '../sdk' ;
22import {
3+ addTemplateToIndex ,
34 createLoginContainer ,
45 createOpenItem ,
56 createProjectInfoUI ,
@@ -10,6 +11,7 @@ import {
1011 displayLoggedOut ,
1112 getFullscreenButton ,
1213 getResultElement ,
14+ initTemplatesSearchIndex ,
1315 loadingMessage ,
1416 noUserTemplates ,
1517} from './UI' ;
@@ -3147,10 +3149,10 @@ const handleLogout = () => {
31473149} ;
31483150
31493151const handleNew = ( ) => {
3150- const templatesContainer = createTemplatesContainer ( eventsManager , ( ) => loadUserTemplates ( ) ) ;
3151- const userTemplatesScreen = UI . getUserTemplatesScreen ( templatesContainer ) ;
3152+ const templatesContainer = createTemplatesContainer ( eventsManager ) ;
31523153
31533154 const loadUserTemplates = async ( ) => {
3155+ const userTemplatesScreen = UI . getUserTemplatesScreen ( templatesContainer ) ;
31543156 const defaultTemplate = getAppData ( ) ?. defaultTemplate ;
31553157 const userTemplates = ( ( await stores . templates ?. getList ( ) ) || [ ] ) . sort ( ( a , b ) =>
31563158 a . id === defaultTemplate ? - 1 : b . id === defaultTemplate ? 1 : 0 ,
@@ -3174,6 +3176,7 @@ const handleNew = () => {
31743176 getLanguageByAlias ,
31753177 true ,
31763178 ) ;
3179+ addTemplateToIndex ( item ) ;
31773180
31783181 if ( defaultTemplate === item . id ) {
31793182 link . parentElement ?. classList . add ( 'selected' ) ;
@@ -3255,41 +3258,50 @@ const handleNew = () => {
32553258 } ) ;
32563259 } ;
32573260
3258- let starterTemplatesCache : Template [ ] ;
32593261 const createTemplatesUI = async ( ) => {
3262+ initTemplatesSearchIndex ( ) ;
32603263 const starterTemplatesList = UI . getStarterTemplatesList ( templatesContainer ) ;
3264+ if ( ! starterTemplatesList ) return ;
3265+ starterTemplatesList . innerHTML = '' ;
3266+ const searchInput = UI . getTemplatesSearchInput ( templatesContainer ) ;
3267+ if ( searchInput ) {
3268+ searchInput . value = '' ;
3269+ }
32613270 const loadingText = starterTemplatesList ?. firstElementChild ;
3262- if ( ! starterTemplatesCache ) {
3263- getTemplates ( )
3264- . then ( ( starterTemplates ) => {
3265- starterTemplatesCache = starterTemplates ;
3266- loadingText ?. remove ( ) ;
3267- starterTemplates . forEach ( ( template ) => {
3268- const link = createStarterTemplateLink ( template , starterTemplatesList , baseUrl ) ;
3269- eventsManager . addEventListener (
3270- link ,
3271- 'click' ,
3272- ( event ) => {
3273- event . preventDefault ( ) ;
3274- loadStarterTemplate ( template . name , /* checkSaved= */ false ) ;
3275- } ,
3276- false ,
3277- ) ;
3278- } ) ;
3279- } )
3280- . catch ( ( ) => {
3281- loadingText ?. remove ( ) ;
3282- notifications . error (
3283- window . deps . translateString (
3284- 'core.error.failedToLoadTemplates' ,
3285- 'Failed loading starter templates' ,
3286- ) ,
3271+ getTemplates ( )
3272+ . then ( ( starterTemplates ) => {
3273+ loadingText ?. remove ( ) ;
3274+ starterTemplates . forEach ( ( template , id ) => {
3275+ const link = createStarterTemplateLink (
3276+ { id : String ( id ) , ...template } ,
3277+ starterTemplatesList ,
3278+ baseUrl ,
3279+ ) ;
3280+ addTemplateToIndex ( { id : String ( id ) , ...template } ) ;
3281+ eventsManager . addEventListener (
3282+ link ,
3283+ 'click' ,
3284+ ( event ) => {
3285+ event . preventDefault ( ) ;
3286+ loadStarterTemplate ( template . name , /* checkSaved= */ false ) ;
3287+ } ,
3288+ false ,
32873289 ) ;
32883290 } ) ;
3289- }
3291+ } )
3292+ . catch ( ( ) => {
3293+ loadingText ?. remove ( ) ;
3294+ notifications . error (
3295+ window . deps . translateString (
3296+ 'core.error.failedToLoadTemplates' ,
3297+ 'Failed loading starter templates' ,
3298+ ) ,
3299+ ) ;
3300+ } ) ;
32903301
3291- setTimeout ( ( ) => UI . getStarterTemplatesTab ( templatesContainer ) ?. click ( ) ) ;
3292- modal . show ( templatesContainer , { isAsync : true } ) ;
3302+ loadUserTemplates ( ) ;
3303+ requestAnimationFrame ( ( ) => UI . getStarterTemplatesTab ( templatesContainer ) ?. click ( ) ) ;
3304+ modal . show ( templatesContainer , { isAsync : true , size : 'large-fixed' } ) ;
32933305 } ;
32943306
32953307 eventsManager . addEventListener (
0 commit comments