diff --git a/src/generators/dom/preprocess.ts b/src/generators/dom/preprocess.ts index dac7d5e5e2..b91aacd266 100644 --- a/src/generators/dom/preprocess.ts +++ b/src/generators/dom/preprocess.ts @@ -82,7 +82,7 @@ const preprocessors = { if (elementsWithoutText.has(state.parentNodeName)) return; } - node._state.shouldCreate = true; + node.shouldCreate = true; node.var = block.getUniqueName(`text`); }, diff --git a/src/generators/dom/visitors/EachBlock.ts b/src/generators/dom/visitors/EachBlock.ts index 0e56727624..7796f2414c 100644 --- a/src/generators/dom/visitors/EachBlock.ts +++ b/src/generators/dom/visitors/EachBlock.ts @@ -2,6 +2,7 @@ import deindent from '../../../utils/deindent'; import visit from '../visit'; import { DomGenerator } from '../index'; import Block from '../Block'; +import isDomNode from './shared/isDomNode'; import { Node } from '../../../interfaces'; import { State } from '../interfaces'; @@ -19,7 +20,7 @@ export default function visitEachBlock( const iterations = block.getUniqueName(`${each_block}_iterations`); const params = block.params.join(', '); - const needsAnchor = node.next ? (!node.next._state || !node.next.var) : !state.parentNode; + const needsAnchor = node.next ? !isDomNode(node.next) : !state.parentNode; const anchor = needsAnchor ? block.getUniqueName(`${each_block}_anchor`) : (node.next && node.next.var) || 'null'; diff --git a/src/generators/dom/visitors/IfBlock.ts b/src/generators/dom/visitors/IfBlock.ts index b9e0816cff..3ce27599ff 100644 --- a/src/generators/dom/visitors/IfBlock.ts +++ b/src/generators/dom/visitors/IfBlock.ts @@ -2,6 +2,7 @@ import deindent from '../../../utils/deindent'; import visit from '../visit'; import { DomGenerator } from '../index'; import Block from '../Block'; +import isDomNode from './shared/isDomNode'; import { Node } from '../../../interfaces'; import { State } from '../interfaces'; @@ -79,7 +80,7 @@ export default function visitIfBlock( ) { const name = generator.getUniqueName(`if_block`); - const needsAnchor = node.next ? (!node.next._state || !node.next.var) : !state.parentNode; + const needsAnchor = node.next ? !isDomNode(node.next) : !state.parentNode; const anchor = needsAnchor ? block.getUniqueName(`${name}_anchor`) : (node.next && node.next.var) || 'null'; diff --git a/src/generators/dom/visitors/RawMustacheTag.ts b/src/generators/dom/visitors/RawMustacheTag.ts index 675b17ff2b..ab0ff7991d 100644 --- a/src/generators/dom/visitors/RawMustacheTag.ts +++ b/src/generators/dom/visitors/RawMustacheTag.ts @@ -13,8 +13,8 @@ export default function visitRawMustacheTag( ) { const name = node.var; - const needsAnchorBefore = node.prev ? (node.prev.type !== 'Element' || !node.prev._state || !node.prev.var) : !state.parentNode; - const needsAnchorAfter = node.next ? (node.next.type !== 'Element' || !node.next._state || !node.next.var) : !state.parentNode; + const needsAnchorBefore = node.prev ? node.prev.type !== 'Element' : !state.parentNode; + const needsAnchorAfter = node.next ? node.next.type !== 'Element' : !state.parentNode; const anchorBefore = needsAnchorBefore ? block.getUniqueName(`${name}_before`) diff --git a/src/generators/dom/visitors/Text.ts b/src/generators/dom/visitors/Text.ts index fa1265f474..d4d423d546 100644 --- a/src/generators/dom/visitors/Text.ts +++ b/src/generators/dom/visitors/Text.ts @@ -10,7 +10,8 @@ export default function visitText( state: State, node: Node ) { - if (!node._state.shouldCreate) return; + if (!node.shouldCreate) return; + block.addElement( node.var, `@createText( ${stringify(node.data)} )`, diff --git a/src/generators/dom/visitors/shared/isDomNode.ts b/src/generators/dom/visitors/shared/isDomNode.ts new file mode 100644 index 0000000000..256aa65f4e --- /dev/null +++ b/src/generators/dom/visitors/shared/isDomNode.ts @@ -0,0 +1,5 @@ +import { Node } from '../../../../interfaces'; + +export default function isDomNode(node: Node) { + return node.type === 'Element' || node.type === 'Text' || node.type === 'MustacheTag'; +} \ No newline at end of file