From 0dfcd19629093a25304951c73d1f51ef9b5460b5 Mon Sep 17 00:00:00 2001 From: Tan Li Hau Date: Fri, 12 Jun 2020 01:24:27 +0800 Subject: [PATCH 1/2] spread condition for input element --- .../render_dom/wrappers/Element/Attribute.ts | 177 +++++++++++------- .../wrappers/Element/SpreadAttribute.ts | 3 + .../render_dom/wrappers/Element/index.ts | 27 +-- .../InputOne.svelte | 18 ++ .../InputTwo.svelte | 19 ++ .../spread-element-input-value/_config.js | 62 ++++++ .../spread-element-input-value/main.svelte | 9 + .../spread-element-input-value/utils.js | 6 + 8 files changed, 239 insertions(+), 82 deletions(-) create mode 100644 src/compiler/compile/render_dom/wrappers/Element/SpreadAttribute.ts create mode 100644 test/runtime/samples/spread-element-input-value/InputOne.svelte create mode 100644 test/runtime/samples/spread-element-input-value/InputTwo.svelte create mode 100644 test/runtime/samples/spread-element-input-value/_config.js create mode 100644 test/runtime/samples/spread-element-input-value/main.svelte create mode 100644 test/runtime/samples/spread-element-input-value/utils.js diff --git a/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts b/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts index 86b67ca47e37..ec281648b895 100644 --- a/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts +++ b/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts @@ -7,8 +7,9 @@ import { b, x } from 'code-red'; import Expression from '../../../nodes/shared/Expression'; import Text from '../../../nodes/Text'; import handle_select_value_binding from './handle_select_value_binding'; +import { Identifier, Node } from 'estree'; -export default class AttributeWrapper { +export class BaseAttributeWrapper { node: Attribute; parent: ElementWrapper; @@ -21,7 +22,29 @@ export default class AttributeWrapper { parent.not_static_content(); block.add_dependencies(node.dependencies); + } + } + + render(_block: Block) {} +} +export default class AttributeWrapper extends BaseAttributeWrapper { + node: Attribute; + parent: ElementWrapper; + metadata: any; + name: string; + property_name: string; + is_indirectly_bound_value: boolean; + is_src: boolean; + is_select_value_attribute: boolean; + is_input_value: boolean; + should_cache: boolean; + last: Identifier; + + constructor(parent: ElementWrapper, block: Block, node: Attribute) { + super(parent, block, node); + + if (node.dependencies.size > 0) { // special case —