From 802afc6b7b57e6b9ba9dabeb29a56d42a4b313d9 Mon Sep 17 00:00:00 2001 From: Justinas Delinda <8914032+minht11@users.noreply.github.com> Date: Tue, 3 Jun 2025 23:56:10 +0300 Subject: [PATCH] feat: make internal Svelte Custom Element treeshakable --- .changeset/warm-jokes-perform.md | 5 +++++ .../internal/client/dom/elements/custom-element.js | 12 ++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 .changeset/warm-jokes-perform.md diff --git a/.changeset/warm-jokes-perform.md b/.changeset/warm-jokes-perform.md new file mode 100644 index 0000000000..3487de8c80 --- /dev/null +++ b/.changeset/warm-jokes-perform.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +Make internal Svelte Custom Element treeshakable diff --git a/packages/svelte/src/internal/client/dom/elements/custom-element.js b/packages/svelte/src/internal/client/dom/elements/custom-element.js index 2d118bfab3..95f57be740 100644 --- a/packages/svelte/src/internal/client/dom/elements/custom-element.js +++ b/packages/svelte/src/internal/client/dom/elements/custom-element.js @@ -10,11 +10,12 @@ import { define_property, get_descriptor, object_keys } from '../../../shared/ut * @property {'String'|'Boolean'|'Number'|'Array'|'Object'} [type] */ -/** @type {any} */ -let SvelteElement; +function get_svelte_element_class() { + if (typeof HTMLElement !== 'function') { + return; + } -if (typeof HTMLElement === 'function') { - SvelteElement = class extends HTMLElement { + return class extends HTMLElement { /** The Svelte component constructor */ $$ctor; /** Slots */ @@ -219,6 +220,9 @@ if (typeof HTMLElement === 'function') { }; } +/** @type {any} */ +const SvelteElement = /* @__PURE__ */ get_svelte_element_class(); + /** * @param {string} prop * @param {any} value