From 587c16866461b075a7fc14a291fb4e7f1405ef5f Mon Sep 17 00:00:00 2001 From: Nguyen Tran Date: Tue, 25 Apr 2023 15:46:29 -0400 Subject: [PATCH] Allow dynamic slots in validate_slot array --- src/compiler/compile/render_dom/index.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/compiler/compile/render_dom/index.ts b/src/compiler/compile/render_dom/index.ts index 58b7a8317b..d13d410db0 100644 --- a/src/compiler/compile/render_dom/index.ts +++ b/src/compiler/compile/render_dom/index.ts @@ -13,6 +13,7 @@ import { flatten } from '../../utils/flatten'; import check_enable_sourcemap from '../utils/check_enable_sourcemap'; import { push_array } from '../../utils/push_array'; import { regex_backslashes } from '../../utils/patterns'; +import { get_attribute_value } from '../render_ssr/handlers/shared/get_attribute_value'; export default function dom( component: Component, @@ -459,6 +460,11 @@ export default function dom( }) as Expression) }; + const slot_list = { + type: 'ArrayExpression', + elements: [...component.slots.values()].map(slot => get_attribute_value(slot.name_attribute)) + }; + body.push(b` function ${definition}(${args}) { ${injected.map(name => b`let ${name};`)} @@ -472,11 +478,11 @@ export default function dom( ${resubscribable_reactive_store_unsubscribers} ${component.slots.size || component.compile_options.dev || uses_slots ? b`let { $$slots: #slots = {}, $$scope } = $$props;` : null} - ${component.compile_options.dev && b`@validate_slots('${component.tag}', #slots, [${[...component.slots.keys()].map(key => `'${key}'`).join(',')}]);`} ${compute_slots} ${instance_javascript} + ${component.compile_options.dev && b`@validate_slots('${component.tag}', #slots, ${slot_list});`} ${missing_props_check} ${unknown_props_check}