From 8f4c6d0dbc08e814f77b8e3b8284718c3fb34019 Mon Sep 17 00:00:00 2001 From: paoloricciuti Date: Mon, 24 Mar 2025 14:53:16 +0100 Subject: [PATCH 1/2] feat: add templating mode selector --- packages/editor/src/lib/Workspace.svelte.ts | 9 ++++++++- .../editor/src/lib/compile-worker/worker.ts | 3 ++- .../src/lib/Output/CompilerOptions.svelte | 19 ++++++++++++++++++- packages/repl/src/lib/Output/Viewer.svelte | 1 + packages/repl/src/lib/Repl.svelte | 5 ++++- .../repl/src/lib/workers/bundler/index.ts | 14 ++++++++++---- 6 files changed, 43 insertions(+), 8 deletions(-) diff --git a/packages/editor/src/lib/Workspace.svelte.ts b/packages/editor/src/lib/Workspace.svelte.ts index 17e1e2f65b..a6e8039e5f 100644 --- a/packages/editor/src/lib/Workspace.svelte.ts +++ b/packages/editor/src/lib/Workspace.svelte.ts @@ -94,6 +94,7 @@ export interface ExposedCompilerOptions { generate: 'client' | 'server'; dev: boolean; modernAst: boolean; + templatingMode: 'string' | 'functional'; } export class Workspace { @@ -104,7 +105,8 @@ export class Workspace { #compiler_options = $state.raw({ generate: 'client', dev: false, - modernAst: true + modernAst: true, + templatingMode: 'string' }); compiled = $state>({}); @@ -453,6 +455,11 @@ export class Workspace { update_compiler_options(options: Partial) { this.#compiler_options = { ...this.#compiler_options, ...options }; this.#reset_diagnostics(); + for (let file of this.#files) { + if (is_file(file)) { + this.#onupdate(file); + } + } } update_file(file: File) { diff --git a/packages/editor/src/lib/compile-worker/worker.ts b/packages/editor/src/lib/compile-worker/worker.ts index c00ed75e9f..6766f02c00 100644 --- a/packages/editor/src/lib/compile-worker/worker.ts +++ b/packages/editor/src/lib/compile-worker/worker.ts @@ -116,7 +116,8 @@ addEventListener('message', async (event) => { : 'ssr' : options.generate, dev: options.dev, - filename: file.name + filename: file.name, + templatingMode: options.templatingMode }; if (!is_svelte_3_or_4) { diff --git a/packages/repl/src/lib/Output/CompilerOptions.svelte b/packages/repl/src/lib/Output/CompilerOptions.svelte index b67f20f4dd..617916f80a 100644 --- a/packages/repl/src/lib/Output/CompilerOptions.svelte +++ b/packages/repl/src/lib/Output/CompilerOptions.svelte @@ -24,6 +24,23 @@ {/each}, +
+ templatingMode: + + {#each ['string', 'functional'] as const as templating_mode} + { + workspace.update_compiler_options({ templatingMode: templating_mode }); + }} + /> + + {/each}, +
+