From c0bbf6091b882be19268f2fb09f4656dc740d28f Mon Sep 17 00:00:00 2001 From: web-padawan Date: Mon, 30 Apr 2018 21:39:52 +0300 Subject: [PATCH 1/2] Avoid using nested templates when setting innerHTML --- src/document-util.ts | 12 ++++---- src/test/unit/project-converter_test.ts | 40 ++++++++++++------------- 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/src/document-util.ts b/src/document-util.ts index 16575f9b..5c51563f 100644 --- a/src/document-util.ts +++ b/src/document-util.ts @@ -540,7 +540,7 @@ export function createDomNodeInsertStatements( jsc.callExpression( jsc.memberExpression( jsc.identifier('document'), jsc.identifier('createElement')), - [jsc.literal('div')]))]); + [jsc.literal('template')]))]); const setDocumentContainerStatement = jsc.expressionStatement(jsc.assignmentExpression( '=', @@ -556,23 +556,25 @@ export function createDomNodeInsertStatements( jsc.memberExpression( jsc.identifier('document'), jsc.identifier('body')), jsc.identifier('appendChild')), - [jsc.identifier(varName)])) + [jsc.memberExpression( + jsc.identifier(varName), jsc.identifier('content'))])) ]; } - const setDisplayNoneStatment = jsc.expressionStatement(jsc.callExpression( + const setDisplayNoneStatement = jsc.expressionStatement(jsc.callExpression( jsc.memberExpression( jsc.identifier(varName), jsc.identifier('setAttribute')), [jsc.literal('style'), jsc.literal('display: none;')])); return [ createElementDiv, - setDisplayNoneStatment, + setDisplayNoneStatement, setDocumentContainerStatement, jsc.expressionStatement(jsc.callExpression( jsc.memberExpression( jsc.memberExpression( jsc.identifier('document'), jsc.identifier('head')), jsc.identifier('appendChild')), - [jsc.identifier(varName)])) + [jsc.memberExpression( + jsc.identifier(varName), jsc.identifier('content'))])) ]; } diff --git a/src/test/unit/project-converter_test.ts b/src/test/unit/project-converter_test.ts index f3eeca01..d6b54d34 100644 --- a/src/test/unit/project-converter_test.ts +++ b/src/test/unit/project-converter_test.ts @@ -1694,16 +1694,16 @@ Polymer({ assertSources(await convert(), { 'test.js': ` import './foo.js'; -const $_documentContainer = document.createElement('div'); +const $_documentContainer = document.createElement('template'); $_documentContainer.setAttribute('style', 'display: none;'); $_documentContainer.innerHTML = \`\`; -document.head.appendChild($_documentContainer); +document.head.appendChild($_documentContainer.content); `, 'foo.js': ` -const $_documentContainer = document.createElement('div'); +const $_documentContainer = document.createElement('template'); $_documentContainer.setAttribute('style', 'display: none;'); $_documentContainer.innerHTML = \`
hello world!
\`; -document.head.appendChild($_documentContainer); +document.head.appendChild($_documentContainer.content); ` }); }); @@ -1930,10 +1930,10 @@ class BarElem extends Element {} assertSources(await convert(), { 'test.js': ` import { Element } from './polymer.js'; -const $_documentContainer = document.createElement('div'); +const $_documentContainer = document.createElement('template'); $_documentContainer.setAttribute('style', 'display: none;'); $_documentContainer.innerHTML = \`
Top
Middle
Bottom
\`; -document.head.appendChild($_documentContainer); +document.head.appendChild($_documentContainer.content); class FooElem extends Element {} class BarElem extends Element {} ` @@ -1971,10 +1971,10 @@ class BarElem extends Element {} assertSources(await convert(), { 'test.js': ` import { Element } from './polymer.js'; -const $_documentContainer = document.createElement('div'); +const $_documentContainer = document.createElement('template'); $_documentContainer.setAttribute('style', 'display: none;'); $_documentContainer.innerHTML = \`
Random footer
\`; -document.head.appendChild($_documentContainer); +document.head.appendChild($_documentContainer.content); customElements.define('foo-elem', class FooElem extends Element { static get template() { return Polymer.html\` @@ -2549,7 +2549,7 @@ Polymer({ }), { 'test.js': ` -const $_documentContainer = document.createElement('div'); +const $_documentContainer = document.createElement('template'); $_documentContainer.setAttribute('style', 'display: none;'); $_documentContainer.innerHTML = \` @@ -2562,7 +2562,7 @@ $_documentContainer.innerHTML = \` ` \`; -document.head.appendChild($_documentContainer); +document.head.appendChild($_documentContainer.content); `, }); }); @@ -2683,27 +2683,27 @@ console.log(foo$4); See: https://github.com/Polymer/polymer-modulizer/issues/154 --> ` }); @@ -2941,7 +2941,7 @@ export const bar = (function() { }); assertSources(await convert(), { 'test.js': ` -const $_documentContainer = document.createElement('div'); +const $_documentContainer = document.createElement('template'); $_documentContainer.setAttribute('style', 'display: none;'); $_documentContainer.innerHTML = \` @@ -2949,7 +2949,7 @@ $_documentContainer.innerHTML = \` \`; -document.head.appendChild($_documentContainer); +document.head.appendChild($_documentContainer.content); customElements.define( 'dom-module-attr', class extends HTMLElement{}); customElements.define( From 1e45391dcacaf698f1d9d36336bc5fd9df9e45cc Mon Sep 17 00:00:00 2001 From: web-padawan Date: Mon, 30 Apr 2018 22:04:37 +0300 Subject: [PATCH 2/2] Update fixtures --- .../iron-icon/expected/demo/index.html | 8 +- .../paper-button/expected/demo/index.html | 8 +- .../paper-button/expected/paper-button.js | 4 +- .../style-props/src/elements-defaults.js | 4 +- .../test/smoke/style-props/src/settings.js | 4 +- .../expected/test/unit/custom-style-import.js | 4 +- .../expected/test/unit/custom-style.html | 112 +++++++++--------- .../test/unit/shady-unscoped-style-import.js | 4 +- .../test/unit/styling-import-shared-styles.js | 4 +- .../test/unit/sub/resolveurl-elements.js | 4 +- .../expected/test/unit/sub/style-import.js | 4 +- 11 files changed, 80 insertions(+), 80 deletions(-) diff --git a/fixtures/packages/iron-icon/expected/demo/index.html b/fixtures/packages/iron-icon/expected/demo/index.html index 5ffb4856..1d5ca77b 100644 --- a/fixtures/packages/iron-icon/expected/demo/index.html +++ b/fixtures/packages/iron-icon/expected/demo/index.html @@ -27,17 +27,17 @@ See: https://github.com/Polymer/polymer-modulizer/issues/154 --> diff --git a/fixtures/packages/paper-button/expected/demo/index.html b/fixtures/packages/paper-button/expected/demo/index.html index d17ea671..8f55185c 100644 --- a/fixtures/packages/paper-button/expected/demo/index.html +++ b/fixtures/packages/paper-button/expected/demo/index.html @@ -34,7 +34,7 @@ See: https://github.com/Polymer/polymer-modulizer/issues/154 --> diff --git a/fixtures/packages/paper-button/expected/paper-button.js b/fixtures/packages/paper-button/expected/paper-button.js index b78e7abc..8b9efb9d 100644 --- a/fixtures/packages/paper-button/expected/paper-button.js +++ b/fixtures/packages/paper-button/expected/paper-button.js @@ -85,7 +85,7 @@ import '../../@polymer/iron-flex-layout/iron-flex-layout.js'; import { PaperButtonBehavior, PaperButtonBehaviorImpl } from '../../@polymer/paper-behaviors/paper-button-behavior.js'; import '../../@polymer/paper-styles/element-styles/paper-material-styles.js'; import { Polymer } from '../../@polymer/polymer/lib/legacy/polymer-fn.js'; -const $_documentContainer = document.createElement('div'); +const $_documentContainer = document.createElement('template'); $_documentContainer.setAttribute('style', 'display: none;'); $_documentContainer.innerHTML = ` @@ -176,7 +176,7 @@ $_documentContainer.innerHTML = ` `; -document.head.appendChild($_documentContainer); +document.head.appendChild($_documentContainer.content); Polymer({ importPath: import.meta.url, is: 'paper-button', diff --git a/fixtures/packages/polymer/expected/test/smoke/style-props/src/elements-defaults.js b/fixtures/packages/polymer/expected/test/smoke/style-props/src/elements-defaults.js index c40f8c5f..4559378c 100644 --- a/fixtures/packages/polymer/expected/test/smoke/style-props/src/elements-defaults.js +++ b/fixtures/packages/polymer/expected/test/smoke/style-props/src/elements-defaults.js @@ -1,4 +1,4 @@ -const $_documentContainer = document.createElement('div'); +const $_documentContainer = document.createElement('template'); $_documentContainer.setAttribute('style', 'display: none;'); $_documentContainer.innerHTML = ``; -document.head.appendChild($_documentContainer); +document.head.appendChild($_documentContainer.content); diff --git a/fixtures/packages/polymer/expected/test/smoke/style-props/src/settings.js b/fixtures/packages/polymer/expected/test/smoke/style-props/src/settings.js index 80dd375a..ba043670 100644 --- a/fixtures/packages/polymer/expected/test/smoke/style-props/src/settings.js +++ b/fixtures/packages/polymer/expected/test/smoke/style-props/src/settings.js @@ -1,6 +1,6 @@ import { Polymer } from '../../../../lib/legacy/polymer-fn.js'; import { html } from '../../../../lib/utils/html-tag.js'; -const $_documentContainer = document.createElement('div'); +const $_documentContainer = document.createElement('template'); $_documentContainer.setAttribute('style', 'display: none;'); $_documentContainer.innerHTML = ` @@ -30,7 +30,7 @@ $_documentContainer.innerHTML = ` `; -document.head.appendChild($_documentContainer); +document.head.appendChild($_documentContainer.content); Polymer({ importPath: import.meta.url, diff --git a/fixtures/packages/polymer/expected/test/unit/custom-style-import.js b/fixtures/packages/polymer/expected/test/unit/custom-style-import.js index 1574c9da..365d8b98 100644 --- a/fixtures/packages/polymer/expected/test/unit/custom-style-import.js +++ b/fixtures/packages/polymer/expected/test/unit/custom-style-import.js @@ -1,5 +1,5 @@ import './sub/style-import.js'; -const $_documentContainer = document.createElement('div'); +const $_documentContainer = document.createElement('template'); $_documentContainer.setAttribute('style', 'display: none;'); $_documentContainer.innerHTML = ` @@ -32,7 +32,7 @@ $_documentContainer.innerHTML = ` `; -document.head.appendChild($_documentContainer); +document.head.appendChild($_documentContainer.content); /** @license diff --git a/fixtures/packages/polymer/expected/test/unit/custom-style.html b/fixtures/packages/polymer/expected/test/unit/custom-style.html index e0d50ca5..cde18789 100644 --- a/fixtures/packages/polymer/expected/test/unit/custom-style.html +++ b/fixtures/packages/polymer/expected/test/unit/custom-style.html @@ -26,7 +26,7 @@ See: https://github.com/Polymer/polymer-modulizer/issues/154 -->