diff --git a/.changeset/smart-boats-accept.md b/.changeset/smart-boats-accept.md index b08063eb8d..4cdfeb30d0 100644 --- a/.changeset/smart-boats-accept.md +++ b/.changeset/smart-boats-accept.md @@ -2,4 +2,4 @@ 'svelte': minor --- -feat: functional template generation +feat: add `fragments: 'html' | 'tree'` option for wider CSP compliance diff --git a/packages/svelte/src/compiler/phases/3-transform/client/transform-template/index.js b/packages/svelte/src/compiler/phases/3-transform/client/transform-template/index.js index 61ae9d9b27..01b0bcd1cc 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/transform-template/index.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/transform-template/index.js @@ -36,7 +36,7 @@ function build_locations(nodes) { * @param {number} [flags] */ export function transform_template(state, namespace, flags = 0) { - const tree = state.options.templatingMode === 'functional'; + const tree = state.options.fragments === 'tree'; const expression = tree ? state.template.as_tree() : state.template.as_html(); diff --git a/packages/svelte/src/compiler/types/index.d.ts b/packages/svelte/src/compiler/types/index.d.ts index f836ec7e1f..a53a431cf1 100644 --- a/packages/svelte/src/compiler/types/index.d.ts +++ b/packages/svelte/src/compiler/types/index.d.ts @@ -123,11 +123,14 @@ export interface CompileOptions extends ModuleCompileOptions { */ preserveWhitespace?: boolean; /** - * If `functional`, the template will get compiled to a series of `document.createElement` calls, if `string` it will render the template tp a string and use `template.innerHTML`. + * Which strategy to use when cloning DOM fragments: * - * @default 'string' + * - `html` populates a `