From 6ffb1ea00bae49bf3b12ccf874eb095e1ffef797 Mon Sep 17 00:00:00 2001 From: Richard Harris Date: Sun, 17 Mar 2019 22:20:32 -0400 Subject: [PATCH] more tidying up --- src/compile/Component.ts | 1 + src/compile/render-dom/Block.ts | 6 +- src/compile/render-dom/index.ts | 2 +- src/compile/render-dom/wrappers/AwaitBlock.ts | 6 +- src/compile/render-dom/wrappers/EachBlock.ts | 30 ++--- .../render-dom/wrappers/Element/Attribute.ts | 12 +- .../render-dom/wrappers/Element/Binding.ts | 14 +-- .../wrappers/Element/StyleAttribute.ts | 4 +- .../render-dom/wrappers/Element/index.ts | 30 ++--- src/compile/render-dom/wrappers/IfBlock.ts | 10 +- .../wrappers/InlineComponent/index.ts | 6 +- .../render-dom/wrappers/MustacheTag.ts | 8 +- .../render-dom/wrappers/RawMustacheTag.ts | 18 +-- src/compile/render-dom/wrappers/Slot.ts | 2 +- src/compile/render-dom/wrappers/Text.ts | 6 +- src/compile/render-dom/wrappers/Window.ts | 4 +- .../render-dom/wrappers/shared/Wrapper.ts | 4 +- .../wrappers/shared/addEventHandlers.ts | 8 +- src/compile/render-ssr/handlers/AwaitBlock.ts | 2 +- .../render-ssr/handlers/InlineComponent.ts | 2 +- src/compile/wrapModule.ts | 7 +- src/internal/Component.js | 10 +- src/internal/await-block.js | 6 +- src/internal/dom.js | 95 ++++++--------- src/internal/keyed-each.js | 12 +- src/internal/spread.js | 2 +- src/internal/ssr.js | 10 +- src/internal/style_manager.js | 4 +- src/internal/utils.js | 6 +- .../action-custom-event-handler/expected.js | 18 ++- test/js/samples/action/expected.js | 18 ++- test/js/samples/bind-width-height/expected.js | 22 +++- .../expected.js | 31 +++-- .../component-static-array/expected.js | 12 +- .../component-static-immutable/expected.js | 12 +- .../component-static-immutable2/expected.js | 12 +- test/js/samples/component-static/expected.js | 12 +- .../samples/computed-collapsed-if/expected.js | 7 +- test/js/samples/css-media-query/expected.js | 21 +++- .../css-shadow-dom-keyframes/expected.js | 18 ++- test/js/samples/debug-empty/expected.js | 46 +++++--- .../debug-foo-bar-baz-things/expected.js | 73 +++++++----- test/js/samples/debug-foo/expected.js | 73 +++++++----- test/js/samples/debug-ssr-foo/expected.js | 7 +- .../samples/deconflict-builtins/expected.js | 49 +++++--- .../js/samples/deconflict-globals/expected.js | 7 +- .../expected.js | 44 ++++--- test/js/samples/do-use-dataset/expected.js | 31 +++-- .../samples/dont-invalidate-this/expected.js | 21 +++- .../dont-use-dataset-in-legacy/expected.js | 38 +++--- .../dont-use-dataset-in-svg/expected.js | 30 +++-- test/js/samples/dynamic-import/expected.js | 12 +- .../each-block-array-literal/expected.js | 49 +++++--- .../each-block-changed-check/expected.js | 95 ++++++++------- .../each-block-keyed-animated/expected.js | 55 ++++++--- test/js/samples/each-block-keyed/expected.js | 53 ++++++--- .../event-handler-no-passive/expected.js | 21 +++- test/js/samples/event-modifiers/expected.js | 48 +++++--- .../js/samples/head-no-whitespace/expected.js | 20 +++- test/js/samples/hoisted-const/expected.js | 26 +++-- test/js/samples/hoisted-let/expected.js | 26 +++-- .../js/samples/if-block-no-update/expected.js | 37 +++--- test/js/samples/if-block-simple/expected.js | 29 +++-- .../expected.js | 27 +++-- .../inline-style-optimized-url/expected.js | 23 ++-- .../inline-style-optimized/expected.js | 23 ++-- .../inline-style-unoptimized/expected.js | 31 +++-- test/js/samples/input-files/expected.js | 24 ++-- test/js/samples/input-range/expected.js | 30 +++-- .../input-without-blowback-guard/expected.js | 24 ++-- .../expected.js | 46 +++++--- .../expected.js | 48 +++++--- .../expected.js | 46 +++++--- .../expected.js | 48 +++++--- test/js/samples/legacy-input-type/expected.js | 21 +++- test/js/samples/media-bindings/expected.js | 44 ++++--- .../non-imported-component/expected.js | 27 +++-- .../samples/non-mutable-reference/expected.js | 34 ++++-- .../expected.js | 7 +- .../expected.js | 7 +- .../samples/select-dynamic-value/expected.js | 23 ++-- test/js/samples/setup-method/expected.js | 7 +- test/js/samples/svg-title/expected.js | 28 +++-- test/js/samples/title/expected.js | 7 +- test/js/samples/transition-local/expected.js | 41 ++++--- .../use-elements-as-anchors/expected.js | 109 ++++++++++-------- .../samples/window-binding-scroll/expected.js | 37 ++++-- 87 files changed, 1349 insertions(+), 813 deletions(-) diff --git a/src/compile/Component.ts b/src/compile/Component.ts index 82998a0b93..8a6b17f96c 100644 --- a/src/compile/Component.ts +++ b/src/compile/Component.ts @@ -365,6 +365,7 @@ export default class Component { } reserved.forEach(add); + internal_exports.forEach(add); this.var_lookup.forEach((value, key) => add(key)); return (name: string) => { diff --git a/src/compile/render-dom/Block.ts b/src/compile/render-dom/Block.ts index 148f5d3f50..2039663b81 100644 --- a/src/compile/render-dom/Block.ts +++ b/src/compile/render-dom/Block.ts @@ -167,10 +167,10 @@ export default class Block { if (parentNode) { this.builders.mount.add_line(`@append(${parentNode}, ${name});`); - if (parentNode === 'document.head') this.builders.destroy.add_line(`@detachNode(${name});`); + if (parentNode === 'document.head') this.builders.destroy.add_line(`@detach(${name});`); } else { this.builders.mount.add_line(`@insert(#target, ${name}, anchor);`); - if (!noDetach) this.builders.destroy.add_conditional('detach', `@detachNode(${name});`); + if (!noDetach) this.builders.destroy.add_conditional('detaching', `@detach(${name});`); } } @@ -354,7 +354,7 @@ export default class Block { properties.add_line(`d: @noop`); } else { properties.add_block(deindent` - ${methodName('d', 'destroy')}(detach) { + ${methodName('d', 'destroy')}(detaching) { ${this.builders.destroy} } `); diff --git a/src/compile/render-dom/index.ts b/src/compile/render-dom/index.ts index 2245c7d2b0..dbe21b9864 100644 --- a/src/compile/render-dom/index.ts +++ b/src/compile/render-dom/index.ts @@ -40,7 +40,7 @@ export default function dom( if (styles && component.compileOptions.css !== false && !options.customElement) { builder.add_block(deindent` function @add_css() { - var style = @createElement("style"); + var style = @element("style"); style.id = '${component.stylesheet.id}-style'; style.textContent = ${styles}; @append(document.head, style); diff --git a/src/compile/render-dom/wrappers/AwaitBlock.ts b/src/compile/render-dom/wrappers/AwaitBlock.ts index ca1c01a103..e632cef86c 100644 --- a/src/compile/render-dom/wrappers/AwaitBlock.ts +++ b/src/compile/render-dom/wrappers/AwaitBlock.ts @@ -152,7 +152,7 @@ export default class AwaitBlockWrapper extends Wrapper { `); block.builders.init.add_block(deindent` - @handlePromise(${promise} = ${snippet}, ${info}); + @handle_promise(${promise} = ${snippet}, ${info}); `); block.builders.create.add_block(deindent` @@ -191,7 +191,7 @@ export default class AwaitBlockWrapper extends Wrapper { conditions.push( `${promise} !== (${promise} = ${snippet})`, - `@handlePromise(${promise}, ${info})` + `@handle_promise(${promise}, ${info})` ); block.builders.update.add_line( @@ -222,7 +222,7 @@ export default class AwaitBlockWrapper extends Wrapper { } block.builders.destroy.add_block(deindent` - ${info}.block.d(${parentNode ? '' : 'detach'}); + ${info}.block.d(${parentNode ? '' : 'detaching'}); ${info} = null; `); diff --git a/src/compile/render-dom/wrappers/EachBlock.ts b/src/compile/render-dom/wrappers/EachBlock.ts index b44cec3a7e..f9a6dd5aff 100644 --- a/src/compile/render-dom/wrappers/EachBlock.ts +++ b/src/compile/render-dom/wrappers/EachBlock.ts @@ -207,8 +207,8 @@ export default class EachBlockWrapper extends Wrapper { if (needsAnchor) { block.addElement( this.vars.anchor, - `@createComment()`, - parentNodes && `@createComment()`, + `@comment()`, + parentNodes && `@comment()`, parentNode ); } @@ -263,7 +263,7 @@ export default class EachBlockWrapper extends Wrapper { } block.builders.destroy.add_block(deindent` - if (${each_block_else}) ${each_block_else}.d(${parentNode ? '' : 'detach'}); + if (${each_block_else}) ${each_block_else}.d(${parentNode ? '' : 'detaching'}); `); } @@ -292,7 +292,7 @@ export default class EachBlockWrapper extends Wrapper { const lookup = block.getUniqueName(`${this.var}_lookup`); block.addVariable(iterations, '[]'); - block.addVariable(lookup, `@blankObject()`); + block.addVariable(lookup, `@blank_object()`); if (this.fragment.nodes[0].isDomNode()) { this.block.first = this.fragment.nodes[0].var; @@ -300,8 +300,8 @@ export default class EachBlockWrapper extends Wrapper { this.block.first = this.block.getUniqueName('first'); this.block.addElement( this.block.first, - `@createComment()`, - parentNodes && `@createComment()`, + `@comment()`, + parentNodes && `@comment()`, null ); } @@ -338,17 +338,17 @@ export default class EachBlockWrapper extends Wrapper { const rects = block.getUniqueName('rects'); const destroy = this.node.hasAnimation - ? `@fixAndOutroAndDestroyBlock` + ? `@fix_and_outro_and_destroy_block` : this.block.hasOutros - ? `@outroAndDestroyBlock` - : `@destroyBlock`; + ? `@outro_and_destroy_block` + : `@destroy_block`; block.builders.update.add_block(deindent` const ${this.vars.each_block_value} = ${snippet}; ${this.block.hasOutros && `@group_outros();`} ${this.node.hasAnimation && `for (let #i = 0; #i < ${view_length}; #i += 1) ${iterations}[#i].r();`} - ${iterations} = @updateKeyedEach(${iterations}, changed, ${get_key}, ${dynamic ? '1' : '0'}, ctx, ${this.vars.each_block_value}, ${lookup}, ${updateMountNode}, ${destroy}, ${create_each_block}, ${anchor}, ${this.vars.get_each_context}); + ${iterations} = @update_keyed_each(${iterations}, changed, ${get_key}, ${dynamic ? '1' : '0'}, ctx, ${this.vars.each_block_value}, ${lookup}, ${updateMountNode}, ${destroy}, ${create_each_block}, ${anchor}, ${this.vars.get_each_context}); ${this.node.hasAnimation && `for (let #i = 0; #i < ${view_length}; #i += 1) ${iterations}[#i].a();`} ${this.block.hasOutros && `@check_outros();`} `); @@ -360,7 +360,7 @@ export default class EachBlockWrapper extends Wrapper { } block.builders.destroy.add_block(deindent` - for (#i = 0; #i < ${view_length}; #i += 1) ${iterations}[#i].d(${parentNode ? '' : 'detach'}); + for (#i = 0; #i < ${view_length}; #i += 1) ${iterations}[#i].d(${parentNode ? '' : 'detaching'}); `); } @@ -421,11 +421,11 @@ export default class EachBlockWrapper extends Wrapper { const outroBlock = this.block.hasOutros && block.getUniqueName('outroBlock') if (outroBlock) { block.builders.init.add_block(deindent` - function ${outroBlock}(i, detach, local) { + function ${outroBlock}(i, detaching, local) { if (${iterations}[i]) { - if (detach) { + if (detaching) { @on_outro(() => { - ${iterations}[i].d(detach); + ${iterations}[i].d(detaching); ${iterations}[i] = null; }); } @@ -507,6 +507,6 @@ export default class EachBlockWrapper extends Wrapper { ); } - block.builders.destroy.add_block(`@destroyEach(${iterations}, detach);`); + block.builders.destroy.add_block(`@destroy_each(${iterations}, detaching);`); } } \ No newline at end of file diff --git a/src/compile/render-dom/wrappers/Element/Attribute.ts b/src/compile/render-dom/wrappers/Element/Attribute.ts index 39d110dade..434dabc21f 100644 --- a/src/compile/render-dom/wrappers/Element/Attribute.ts +++ b/src/compile/render-dom/wrappers/Element/Attribute.ts @@ -59,10 +59,10 @@ export default class AttributeWrapper { // namespaced attributes but I'm not sure that's applicable in // HTML5? const method = /-/.test(element.node.name) - ? '@setCustomElementData' + ? '@set_custom_element_data' : name.slice(0, 6) === 'xlink:' - ? '@setXlinkAttribute' - : '@setAttribute'; + ? '@xlink_attr' + : '@attr'; const isLegacyInputType = element.renderer.component.compileOptions.legacy && name === 'type' && this.parent.node.name === 'input'; @@ -112,9 +112,9 @@ export default class AttributeWrapper { if (isLegacyInputType) { block.builders.hydrate.add_line( - `@setInputType(${element.var}, ${init});` + `@set_input_type(${element.var}, ${init});` ); - updater = `@setInputType(${element.var}, ${shouldCache ? last : value});`; + updater = `@set_input_type(${element.var}, ${shouldCache ? last : value});`; } else if (isSelectValueAttribute) { // annoying special case const isMultipleSelect = element.getStaticAttributeValue('multiple'); @@ -183,7 +183,7 @@ export default class AttributeWrapper { const statement = ( isLegacyInputType - ? `@setInputType(${element.var}, ${value});` + ? `@set_input_type(${element.var}, ${value});` : propertyName ? `${element.var}.${propertyName} = ${value};` : isDataSet diff --git a/src/compile/render-dom/wrappers/Element/Binding.ts b/src/compile/render-dom/wrappers/Element/Binding.ts index a0021bb846..ca90672f10 100644 --- a/src/compile/render-dom/wrappers/Element/Binding.ts +++ b/src/compile/render-dom/wrappers/Element/Binding.ts @@ -187,8 +187,8 @@ function getDomUpdater( if (node.name === 'select') { return node.getStaticAttributeValue('multiple') === true ? - `@selectOptions(${element.var}, ${binding.snippet})` : - `@selectOption(${element.var}, ${binding.snippet})`; + `@select_options(${element.var}, ${binding.snippet})` : + `@select_option(${element.var}, ${binding.snippet})`; } if (binding.node.name === 'group') { @@ -288,8 +288,8 @@ function getValueFromDom( //