`)
})
+ test("multiple _ssrInterpolate at parent and child import dependency once", () => {
+ expect( compile(`<div>{{ hello }}<textarea v-bind="a"></textarea></div>`).code)
+ .toMatchInlineSnapshot(`
+ "const { ssrRenderAttrs: _ssrRenderAttrs, ssrInterpolate: _ssrInterpolate } = require(\\"@vue/server-renderer\\")
+
+ return function ssrRender(_ctx, _push, _parent, _attrs) {
+ let _temp0
+
+ _push(\`<div\${
+ _ssrRenderAttrs(_attrs)
+ }>\${
+ _ssrInterpolate(_ctx.hello)
+ }<textarea\${
+ _ssrRenderAttrs(_temp0 = _ctx.a, \\"textarea\\")
+ }>\${
+ _ssrInterpolate((\\"value\\" in _temp0) ? _temp0.value : \\"\\")
+ }</textarea></div>\`)
+ }"
+ `);
+ });
+
test('should pass tag to custom elements w/ dynamic v-bind', () => {
expect(
compile(`<my-foo v-bind="obj"></my-foo>`, {
// Finalize helpers.
// We need to separate helpers imported from 'vue' vs. '@vue/server-renderer'
- ast.ssrHelpers = [
+ ast.ssrHelpers = Array.from(new Set([
...ast.helpers.filter(h => h in ssrHelpers),
...context.helpers
- ]
+ ]))
+
ast.helpers = ast.helpers.filter(h => !(h in ssrHelpers))
}