From 9b2a7e17ad1fa28ddb5424b6c2d0d16fb00cdcd0 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Sat, 9 Dec 2017 17:49:01 -0500 Subject: [PATCH] remove preprocess from ssr renderer --- src/generators/Generator.ts | 20 ++++ src/generators/nodes/Attribute.ts | 6 +- src/generators/nodes/Element.ts | 12 -- src/generators/server-side-rendering/index.ts | 3 - .../server-side-rendering/preprocess.ts | 112 ------------------ .../server-side-rendering/visitors/Element.ts | 6 +- 6 files changed, 25 insertions(+), 134 deletions(-) delete mode 100644 src/generators/server-side-rendering/preprocess.ts diff --git a/src/generators/Generator.ts b/src/generators/Generator.ts index 148e659365..e5467d1f45 100644 --- a/src/generators/Generator.ts +++ b/src/generators/Generator.ts @@ -725,6 +725,10 @@ export default class Generator { node.__proto__ = nodes[node.type].prototype; } + if (node.type === 'Element') { + generator.stylesheet.apply(node); + } + if (node.type === 'EachBlock') { node.metadata = contextualise(node.expression, contextDependencies, indexes); @@ -800,6 +804,22 @@ export default class Generator { indexes = indexesStack[indexesStack.length - 1]; } } + + if (node.type === 'Element' && node.name === 'option') { + // Special case — treat these the same way: + // + // + const valueAttribute = node.attributes.find((attribute: Node) => attribute.name === 'value'); + + if (!valueAttribute) { + node.attributes.push(new nodes.Attribute({ + generator, + name: 'value', + value: node.children, + parent: node + })); + } + } } }); } diff --git a/src/generators/nodes/Attribute.ts b/src/generators/nodes/Attribute.ts index f83140dadf..44f24712fc 100644 --- a/src/generators/nodes/Attribute.ts +++ b/src/generators/nodes/Attribute.ts @@ -162,11 +162,7 @@ export default class Attribute { updater = `@setInputType(${node.var}, ${shouldCache ? last : value});`; } else if (isSelectValueAttribute) { // annoying special case - const isMultipleSelect = - node.name === 'select' && - node.attributes.find( - (attr: Attribute) => attr.name.toLowerCase() === 'multiple' - ); // TODO use getStaticAttributeValue + const isMultipleSelect = node.getStaticAttributeValue('multiple'); const i = block.getUniqueName('i'); const option = block.getUniqueName('option'); diff --git a/src/generators/nodes/Element.ts b/src/generators/nodes/Element.ts index 94809e85cb..2298ff8466 100644 --- a/src/generators/nodes/Element.ts +++ b/src/generators/nodes/Element.ts @@ -89,18 +89,6 @@ export default class Element extends Node { const valueAttribute = this.attributes.find((attribute: Attribute) => attribute.name === 'value'); - // Treat these the same way: - // - // - if (this.name === 'option' && !valueAttribute) { - this.attributes.push(new Attribute({ - generator: this.generator, - name: 'value', - value: this.children, - parent: this - })); - } - if (this.name === 'textarea') { // this is an egregious hack, but it's the easiest way to get