mirror of https://github.com/vuejs/core.git
feat: add api for document.createTextNode
This commit is contained in:
parent
45858c085d
commit
9602cd2011
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
exports[`comile > bindings 1`] = `
|
exports[`comile > bindings 1`] = `
|
||||||
"import { watchEffect } from 'vue';
|
"import { watchEffect } from 'vue';
|
||||||
import { template, children, insert, setText } from 'vue/vapor';
|
import { template, children, createTextNode, insert, setText } from 'vue/vapor';
|
||||||
const t0 = template(\`<div>count is <!>.</div>\`);
|
const t0 = template(\`<div>count is <!>.</div>\`);
|
||||||
export function render() {
|
export function render() {
|
||||||
const n0 = t0();
|
const n0 = t0();
|
||||||
|
@ -14,7 +14,7 @@ export function render() {
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
} = children(root);
|
} = children(root);
|
||||||
const n2 = document.createTextNode(count.value);
|
const n2 = createTextNode(count.value);
|
||||||
insert(n2, n1, n3);
|
insert(n2, n1, n3);
|
||||||
watchEffect(() => {
|
watchEffect(() => {
|
||||||
setText(n2, undefined, count.value);
|
setText(n2, undefined, count.value);
|
||||||
|
@ -110,7 +110,7 @@ export function render() {
|
||||||
`;
|
`;
|
||||||
|
|
||||||
exports[`comile > directives > v-once > basic 1`] = `
|
exports[`comile > directives > v-once > basic 1`] = `
|
||||||
"import { template, children, insert, setText, setAttr } from 'vue/vapor';
|
"import { template, children, createTextNode, insert, setText, setAttr } from 'vue/vapor';
|
||||||
const t0 = template(\`<div> <span></span></div>\`);
|
const t0 = template(\`<div> <span></span></div>\`);
|
||||||
export function render() {
|
export function render() {
|
||||||
const n0 = t0();
|
const n0 = t0();
|
||||||
|
@ -122,7 +122,7 @@ export function render() {
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
} = children(root);
|
} = children(root);
|
||||||
const n2 = document.createTextNode(msg.value);
|
const n2 = createTextNode(msg.value);
|
||||||
insert(n2, n1, 0 /* InsertPosition.FIRST */);
|
insert(n2, n1, 0 /* InsertPosition.FIRST */);
|
||||||
setText(n2, undefined, msg.value);
|
setText(n2, undefined, msg.value);
|
||||||
setAttr(n3, 'class', undefined, clz.value);
|
setAttr(n3, 'class', undefined, clz.value);
|
||||||
|
@ -177,13 +177,13 @@ export function render() {
|
||||||
|
|
||||||
exports[`comile > static + dynamic root 1`] = `
|
exports[`comile > static + dynamic root 1`] = `
|
||||||
"import { watchEffect } from 'vue';
|
"import { watchEffect } from 'vue';
|
||||||
import { template, insert, setText } from 'vue/vapor';
|
import { template, createTextNode, insert, setText } from 'vue/vapor';
|
||||||
const t0 = template(\`2\`);
|
const t0 = template(\`2\`);
|
||||||
export function render() {
|
export function render() {
|
||||||
const n0 = t0();
|
const n0 = t0();
|
||||||
const n1 = document.createTextNode(1);
|
const n1 = createTextNode(1);
|
||||||
insert(n1, n0, 0 /* InsertPosition.FIRST */);
|
insert(n1, n0, 0 /* InsertPosition.FIRST */);
|
||||||
const n2 = document.createTextNode(3);
|
const n2 = createTextNode(3);
|
||||||
insert(n2, n0);
|
insert(n2, n0);
|
||||||
watchEffect(() => {
|
watchEffect(() => {
|
||||||
setText(n1, undefined, 1);
|
setText(n1, undefined, 1);
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
exports[`fixtures 1`] = `
|
exports[`fixtures 1`] = `
|
||||||
"import { defineComponent as _defineComponent } from 'vue'
|
"import { defineComponent as _defineComponent } from 'vue'
|
||||||
import { watchEffect } from 'vue'
|
import { watchEffect } from 'vue'
|
||||||
import { template, children, insert, setText, on, setHtml } from 'vue/vapor'
|
import { template, children, createTextNode, insert, setText, on, setHtml } from 'vue/vapor'
|
||||||
const t0 = template(\`<h1 id=\\"title\\">Counter</h1><p>Count: </p><p>Double: </p><button>Increment</button><div></div><input type=\\"text\\"><p>once: </p><p>{{ count }}</p>\`)
|
const t0 = template(\`<h1 id=\\"title\\">Counter</h1><p>Count: </p><p>Double: </p><button>Increment</button><div></div><input type=\\"text\\"><p>once: </p><p>{{ count }}</p>\`)
|
||||||
import { ref, computed } from 'vue'
|
import { ref, computed } from 'vue'
|
||||||
|
|
||||||
|
@ -21,11 +21,11 @@ const increment = () => count.value++
|
||||||
return (() => {
|
return (() => {
|
||||||
const n0 = t0()
|
const n0 = t0()
|
||||||
const { 1: [n1], 2: [n3], 3: [n5], 4: [n6], 6: [n7],} = children(root)
|
const { 1: [n1], 2: [n3], 3: [n5], 4: [n6], 6: [n7],} = children(root)
|
||||||
const n2 = document.createTextNode(count.value)
|
const n2 = createTextNode(count.value)
|
||||||
insert(n2, n1)
|
insert(n2, n1)
|
||||||
const n4 = document.createTextNode(double.value)
|
const n4 = createTextNode(double.value)
|
||||||
insert(n4, n3)
|
insert(n4, n3)
|
||||||
const n8 = document.createTextNode(count.value)
|
const n8 = createTextNode(count.value)
|
||||||
insert(n8, n7)
|
insert(n8, n7)
|
||||||
setText(n8, undefined, count.value)
|
setText(n8, undefined, count.value)
|
||||||
watchEffect(() => {
|
watchEffect(() => {
|
||||||
|
|
|
@ -104,9 +104,9 @@ export function generate(
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
case IRNodeTypes.TEXT_NODE: {
|
case IRNodeTypes.CREATE_TEXT_NODE: {
|
||||||
// TODO handle by runtime: document.createTextNode
|
code = `const n${operation.id} = createTextNode(${operation.value})\n`
|
||||||
code = `const n${operation.id} = document.createTextNode(${operation.value})\n`
|
vaporHelpers.add('createTextNode')
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ export const enum IRNodeTypes {
|
||||||
SET_HTML,
|
SET_HTML,
|
||||||
|
|
||||||
INSERT_NODE,
|
INSERT_NODE,
|
||||||
TEXT_NODE,
|
CREATE_TEXT_NODE,
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IRNode {
|
export interface IRNode {
|
||||||
|
@ -59,8 +59,8 @@ export interface SetHtmlIRNode extends IRNode {
|
||||||
value: string
|
value: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface TextNodeIRNode extends IRNode {
|
export interface CreateTextNodeIRNode extends IRNode {
|
||||||
type: IRNodeTypes.TEXT_NODE
|
type: IRNodeTypes.CREATE_TEXT_NODE
|
||||||
id: number
|
id: number
|
||||||
value: string
|
value: string
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,7 @@ export type OperationNode =
|
||||||
| SetTextIRNode
|
| SetTextIRNode
|
||||||
| SetEventIRNode
|
| SetEventIRNode
|
||||||
| SetHtmlIRNode
|
| SetHtmlIRNode
|
||||||
| TextNodeIRNode
|
| CreateTextNodeIRNode
|
||||||
| InsertNodeIRNode
|
| InsertNodeIRNode
|
||||||
|
|
||||||
export interface DynamicChild {
|
export interface DynamicChild {
|
||||||
|
|
|
@ -275,7 +275,7 @@ function transformInterpolation(
|
||||||
|
|
||||||
ctx.registerOpration(
|
ctx.registerOpration(
|
||||||
{
|
{
|
||||||
type: IRNodeTypes.TEXT_NODE,
|
type: IRNodeTypes.CREATE_TEXT_NODE,
|
||||||
loc: node.loc,
|
loc: node.loc,
|
||||||
id,
|
id,
|
||||||
value: expr,
|
value: expr,
|
||||||
|
|
|
@ -123,3 +123,7 @@ type Children = Record<number, [ChildNode, Children]>
|
||||||
export function children(n: ChildNode): Children {
|
export function children(n: ChildNode): Children {
|
||||||
return { ...Array.from(n.childNodes).map(n => [n, children(n)]) }
|
return { ...Array.from(n.childNodes).map(n => [n, children(n)]) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function createTextNode(data: string): Text {
|
||||||
|
return document.createTextNode(data)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue