diff --git a/packages/core/src/__tests__/__snapshots__/alpine.test.ts.snap b/packages/core/src/__tests__/__snapshots__/alpine.test.ts.snap index 70d62c0dbf..8f5690c779 100644 --- a/packages/core/src/__tests__/__snapshots__/alpine.test.ts.snap +++ b/packages/core/src/__tests__/__snapshots__/alpine.test.ts.snap @@ -1571,6 +1571,20 @@ exports[`Alpine.js > jsx > Javascript Test > componentWithContext 1`] = ` " `; +exports[`Alpine.js > jsx > Javascript Test > componentWithContextMultiRoot 1`] = ` +"
+
+ +
other
+
+ +" +`; + exports[`Alpine.js > jsx > Javascript Test > contentState 1`] = ` "
setting context
+" +`; + exports[`Alpine.js > jsx > Typescript Test > contentState 1`] = ` "
setting context
+" +`; + exports[`Html > jsx > Javascript Test > contentState 1`] = ` "
setting context
" @@ -9206,6 +9263,63 @@ exports[`Html > jsx > Typescript Test > componentWithContext 1`] = ` " `; +exports[`Html > jsx > Typescript Test > componentWithContextMultiRoot 1`] = ` +" + +
other
+ + +" +`; + exports[`Html > jsx > Typescript Test > contentState 1`] = ` "
setting context
" diff --git a/packages/core/src/__tests__/__snapshots__/liquid.test.ts.snap b/packages/core/src/__tests__/__snapshots__/liquid.test.ts.snap index 7ef964aef1..e253d0ea8c 100644 --- a/packages/core/src/__tests__/__snapshots__/liquid.test.ts.snap +++ b/packages/core/src/__tests__/__snapshots__/liquid.test.ts.snap @@ -529,6 +529,15 @@ exports[`Liquid > jsx > Javascript Test > componentWithContext 1`] = ` " `; +exports[`Liquid > jsx > Javascript Test > componentWithContextMultiRoot 1`] = ` +"
+
{{foo.value}}
+ +
other
+
+" +`; + exports[`Liquid > jsx > Javascript Test > contentState 1`] = ` "
setting context
" @@ -1341,6 +1350,15 @@ exports[`Liquid > jsx > Typescript Test > componentWithContext 1`] = ` " `; +exports[`Liquid > jsx > Typescript Test > componentWithContextMultiRoot 1`] = ` +"
+
{{foo.value}}
+ +
other
+
+" +`; + exports[`Liquid > jsx > Typescript Test > contentState 1`] = ` "
setting context
" diff --git a/packages/core/src/__tests__/__snapshots__/lit.test.ts.snap b/packages/core/src/__tests__/__snapshots__/lit.test.ts.snap index 1cd573b73d..dee0b3cd36 100644 --- a/packages/core/src/__tests__/__snapshots__/lit.test.ts.snap +++ b/packages/core/src/__tests__/__snapshots__/lit.test.ts.snap @@ -2541,6 +2541,40 @@ export default class ComponentWithContext extends LitElement { " `; +exports[`Lit > jsx > Javascript Test > componentWithContextMultiRoot 1`] = ` +"import Context1 from \\"@dummy/1\\"; +import Context2 from \\"@dummy/2\\"; + +import { LitElement, html, css } from \\"lit\\"; +import { customElement, property, state, query } from \\"lit/decorators.js\\"; + +export interface ComponentWithContextProps { + content: string; +} + +@customElement(\\"component-with-context\\") +export default class ComponentWithContext extends LitElement { + createRenderRoot() { + return this; + } + + @property() content: any; + + render() { + return html\` + + + \${foo.value} + +
other
+
+ + \`; + } +} +" +`; + exports[`Lit > jsx > Javascript Test > contentState 1`] = ` "import \\"@dummy/context.js\\"; @@ -6712,6 +6746,40 @@ export default class ComponentWithContext extends LitElement { " `; +exports[`Lit > jsx > Typescript Test > componentWithContextMultiRoot 1`] = ` +"import Context1 from \\"@dummy/1\\"; +import Context2 from \\"@dummy/2\\"; + +import { LitElement, html, css } from \\"lit\\"; +import { customElement, property, state, query } from \\"lit/decorators.js\\"; + +export interface ComponentWithContextProps { + content: string; +} + +@customElement(\\"component-with-context\\") +export default class ComponentWithContext extends LitElement { + createRenderRoot() { + return this; + } + + @property() content: any; + + render() { + return html\` + + + \${foo.value} + +
other
+
+ + \`; + } +} +" +`; + exports[`Lit > jsx > Typescript Test > contentState 1`] = ` "import \\"@dummy/context.js\\"; diff --git a/packages/core/src/__tests__/__snapshots__/marko.test.ts.snap b/packages/core/src/__tests__/__snapshots__/marko.test.ts.snap index 8852f5e76b..450e49c601 100644 --- a/packages/core/src/__tests__/__snapshots__/marko.test.ts.snap +++ b/packages/core/src/__tests__/__snapshots__/marko.test.ts.snap @@ -1490,6 +1490,17 @@ class {} \${foo.value}" `; +exports[`Marko > jsx > Javascript Test > componentWithContextMultiRoot 1`] = ` +"import Context1 from \\"@dummy/1\\"; +import Context2 from \\"@dummy/2\\"; + +class {} + +\${foo.value} + +
other
" +`; + exports[`Marko > jsx > Javascript Test > contentState 1`] = ` "import BuilderContext from \\"@dummy/context.marko\\"; @@ -3669,6 +3680,17 @@ class {} \${foo.value}" `; +exports[`Marko > jsx > Typescript Test > componentWithContextMultiRoot 1`] = ` +"import Context1 from \\"@dummy/1\\"; +import Context2 from \\"@dummy/2\\"; + +class {} + +\${foo.value} + +
other
" +`; + exports[`Marko > jsx > Typescript Test > contentState 1`] = ` "import BuilderContext from \\"@dummy/context.marko\\"; diff --git a/packages/core/src/__tests__/__snapshots__/parse-jsx.test.ts.snap b/packages/core/src/__tests__/__snapshots__/parse-jsx.test.ts.snap index ae5763419b..b4ee750e18 100644 --- a/packages/core/src/__tests__/__snapshots__/parse-jsx.test.ts.snap +++ b/packages/core/src/__tests__/__snapshots__/parse-jsx.test.ts.snap @@ -7374,6 +7374,166 @@ exports[`Parse JSX > componentWithContext 1`] = ` } `; +exports[`Parse JSX > componentWithContextMultiRoot 1`] = ` +{ + "@type": "@builder.io/mitosis/component", + "children": [ + { + "@type": "@builder.io/mitosis/node", + "bindings": {}, + "children": [ + { + "@type": "@builder.io/mitosis/node", + "bindings": {}, + "children": [], + "meta": {}, + "name": "div", + "properties": { + "_text": " + ", + }, + "scope": {}, + }, + { + "@type": "@builder.io/mitosis/node", + "bindings": {}, + "children": [ + { + "@type": "@builder.io/mitosis/node", + "bindings": { + "_text": { + "code": "foo.value", + }, + }, + "children": [], + "meta": {}, + "name": "div", + "properties": {}, + "scope": {}, + }, + ], + "meta": {}, + "name": "Fragment", + "properties": {}, + "scope": {}, + }, + { + "@type": "@builder.io/mitosis/node", + "bindings": {}, + "children": [], + "meta": {}, + "name": "div", + "properties": { + "_text": " + ", + }, + "scope": {}, + }, + { + "@type": "@builder.io/mitosis/node", + "bindings": {}, + "children": [ + { + "@type": "@builder.io/mitosis/node", + "bindings": {}, + "children": [], + "meta": {}, + "name": "div", + "properties": { + "_text": "other", + }, + "scope": {}, + }, + ], + "meta": {}, + "name": "div", + "properties": {}, + "scope": {}, + }, + { + "@type": "@builder.io/mitosis/node", + "bindings": {}, + "children": [], + "meta": {}, + "name": "div", + "properties": { + "_text": " + ", + }, + "scope": {}, + }, + ], + "meta": {}, + "name": "Fragment", + "properties": {}, + "scope": {}, + }, + ], + "context": { + "get": { + "foo": { + "name": "Context1", + "path": "@dummy/1:default", + }, + }, + "set": { + "@dummy/1:default": { + "name": "Context1", + "value": { + "content": { + "code": "content() { + return props.content; +}", + "type": "method", + }, + "foo": { + "code": "'bar'", + "type": "property", + }, + }, + }, + "@dummy/2:default": { + "name": "Context2", + "value": { + "bar": { + "code": "'baz'", + "type": "property", + }, + }, + }, + }, + }, + "exports": {}, + "hooks": {}, + "imports": [ + { + "imports": { + "Context1": "default", + }, + "path": "@dummy/1", + }, + { + "imports": { + "Context2": "default", + }, + "path": "@dummy/2", + }, + ], + "inputs": [], + "meta": {}, + "name": "ComponentWithContext", + "propsTypeRef": "ComponentWithContextProps", + "refs": {}, + "state": {}, + "subComponents": [], + "types": [ + "export interface ComponentWithContextProps { + content: string +}", + ], +} +`; + exports[`Parse JSX > contentState 1`] = ` { "@type": "@builder.io/mitosis/component", diff --git a/packages/core/src/__tests__/__snapshots__/preact.test.ts.snap b/packages/core/src/__tests__/__snapshots__/preact.test.ts.snap index 9b09d5cac5..d5ecdaf091 100644 --- a/packages/core/src/__tests__/__snapshots__/preact.test.ts.snap +++ b/packages/core/src/__tests__/__snapshots__/preact.test.ts.snap @@ -1739,6 +1739,43 @@ export default function ComponentWithContext(props) { " `; +exports[`Preact > jsx > Javascript Test > componentWithContextMultiRoot 1`] = ` +"/** @jsx h */ +import { h, Fragment } from \\"preact\\"; +import { useContext } from \\"preact/hooks\\"; +import Context1 from \\"@dummy/1\\"; +import Context2 from \\"@dummy/2\\"; + +export default function ComponentWithContext(props) { + const foo = useContext(Context1); + + return ( + + + + {foo.value} + +
other
+
+
+
+ ); +} +" +`; + exports[`Preact > jsx > Javascript Test > contentState 1`] = ` "/** @jsx h */ import { h, Fragment } from \\"preact\\"; @@ -4834,6 +4871,48 @@ export default function ComponentWithContext(props: ComponentWithContextProps) { " `; +exports[`Preact > jsx > Typescript Test > componentWithContextMultiRoot 1`] = ` +"/** @jsx h */ +import { h, Fragment } from \\"preact\\"; +import { useContext } from \\"preact/hooks\\"; + +export interface ComponentWithContextProps { + content: string; +} + +import Context1 from \\"@dummy/1\\"; +import Context2 from \\"@dummy/2\\"; + +export default function ComponentWithContext(props: ComponentWithContextProps) { + const foo = useContext(Context1); + + return ( + + + + {foo.value} + +
other
+
+
+
+ ); +} +" +`; + exports[`Preact > jsx > Typescript Test > contentState 1`] = ` "/** @jsx h */ import { h, Fragment } from \\"preact\\"; diff --git a/packages/core/src/__tests__/__snapshots__/react-native.test.ts.snap b/packages/core/src/__tests__/__snapshots__/react-native.test.ts.snap index 1b3b07a44a..55e58e1a34 100644 --- a/packages/core/src/__tests__/__snapshots__/react-native.test.ts.snap +++ b/packages/core/src/__tests__/__snapshots__/react-native.test.ts.snap @@ -1658,6 +1658,45 @@ export default function ComponentWithContext(props) { " `; +exports[`React Native > jsx > Javascript Test > componentWithContextMultiRoot 1`] = ` +"import * as React from \\"react\\"; +import { View, StyleSheet, Image, Text } from \\"react-native\\"; +import { useContext } from \\"react\\"; +import Context1 from \\"@dummy/1\\"; +import Context2 from \\"@dummy/2\\"; + +export default function ComponentWithContext(props) { + const foo = useContext(Context1); + + return ( + + + <> + {foo.value} + + + other + + + + + ); +} +" +`; + exports[`React Native > jsx > Javascript Test > contentState 1`] = ` "import * as React from \\"react\\"; import { View, StyleSheet, Image, Text } from \\"react-native\\"; @@ -4668,6 +4707,50 @@ export default function ComponentWithContext(props: ComponentWithContextProps) { " `; +exports[`React Native > jsx > Typescript Test > componentWithContextMultiRoot 1`] = ` +"import * as React from \\"react\\"; +import { View, StyleSheet, Image, Text } from \\"react-native\\"; +import { useContext } from \\"react\\"; + +export interface ComponentWithContextProps { + content: string; +} + +import Context1 from \\"@dummy/1\\"; +import Context2 from \\"@dummy/2\\"; + +export default function ComponentWithContext(props: ComponentWithContextProps) { + const foo = useContext(Context1); + + return ( + + + <> + {foo.value} + + + other + + + + + ); +} +" +`; + exports[`React Native > jsx > Typescript Test > contentState 1`] = ` "import * as React from \\"react\\"; import { View, StyleSheet, Image, Text } from \\"react-native\\"; diff --git a/packages/core/src/__tests__/__snapshots__/react.test.ts.snap b/packages/core/src/__tests__/__snapshots__/react.test.ts.snap index 2431cd7985..9289f13680 100644 --- a/packages/core/src/__tests__/__snapshots__/react.test.ts.snap +++ b/packages/core/src/__tests__/__snapshots__/react.test.ts.snap @@ -1693,6 +1693,42 @@ export default function ComponentWithContext(props) { " `; +exports[`React > jsx > Javascript Test > componentWithContextMultiRoot 1`] = ` +"import * as React from \\"react\\"; +import { useContext } from \\"react\\"; +import Context1 from \\"@dummy/1\\"; +import Context2 from \\"@dummy/2\\"; + +export default function ComponentWithContext(props) { + const foo = useContext(Context1); + + return ( + + + <> + {foo.value} + +
other
+ +
+
+ ); +} +" +`; + exports[`React > jsx > Javascript Test > contentState 1`] = ` "import * as React from \\"react\\"; import { useContext } from \\"react\\"; @@ -4703,6 +4739,47 @@ export default function ComponentWithContext(props: ComponentWithContextProps) { " `; +exports[`React > jsx > Typescript Test > componentWithContextMultiRoot 1`] = ` +"import * as React from \\"react\\"; +import { useContext } from \\"react\\"; + +export interface ComponentWithContextProps { + content: string; +} + +import Context1 from \\"@dummy/1\\"; +import Context2 from \\"@dummy/2\\"; + +export default function ComponentWithContext(props: ComponentWithContextProps) { + const foo = useContext(Context1); + + return ( + + + <> + {foo.value} + +
other
+ +
+
+ ); +} +" +`; + exports[`React > jsx > Typescript Test > contentState 1`] = ` "import * as React from \\"react\\"; import { useContext } from \\"react\\"; diff --git a/packages/core/src/__tests__/__snapshots__/rsc.test.ts.snap b/packages/core/src/__tests__/__snapshots__/rsc.test.ts.snap index 7b9c3f4dc9..cdfcf62178 100644 --- a/packages/core/src/__tests__/__snapshots__/rsc.test.ts.snap +++ b/packages/core/src/__tests__/__snapshots__/rsc.test.ts.snap @@ -1547,6 +1547,36 @@ export default function ComponentWithContext(props) { " `; +exports[`RSC > jsx > Javascript Test > componentWithContextMultiRoot 1`] = ` +"import * as React from \\"react\\"; +import Context1 from \\"@dummy/1\\"; +import Context2 from \\"@dummy/2\\"; + +export default function ComponentWithContext(props) { + const _context = { ...props[\\"_context\\"] }; + + const foo = _context[\\"Context1\\"]; + + _context.Context1 = { + foo: \\"bar\\", + content() { + return props.content; + }, + }; + + _context.Context2 = { bar: \\"baz\\" }; + + return ( + <> + {foo.value} + +
other
+ + ); +} +" +`; + exports[`RSC > jsx > Javascript Test > contentState 1`] = ` "import * as React from \\"react\\"; import BuilderContext from \\"@dummy/context.lite\\"; @@ -4398,6 +4428,41 @@ export default function ComponentWithContext(props: ComponentWithContextProps) { " `; +exports[`RSC > jsx > Typescript Test > componentWithContextMultiRoot 1`] = ` +"import * as React from \\"react\\"; + +export interface ComponentWithContextProps { + content: string; +} + +import Context1 from \\"@dummy/1\\"; +import Context2 from \\"@dummy/2\\"; + +export default function ComponentWithContext(props: ComponentWithContextProps) { + const _context = { ...props[\\"_context\\"] }; + + const foo = _context[\\"Context1\\"]; + + _context.Context1 = { + foo: \\"bar\\", + content() { + return props.content; + }, + }; + + _context.Context2 = { bar: \\"baz\\" }; + + return ( + <> + {foo.value} + +
other
+ + ); +} +" +`; + exports[`RSC > jsx > Typescript Test > contentState 1`] = ` "import * as React from \\"react\\"; import BuilderContext from \\"@dummy/context.lite\\"; diff --git a/packages/core/src/__tests__/__snapshots__/solid.test.ts.snap b/packages/core/src/__tests__/__snapshots__/solid.test.ts.snap index f822df563c..cd27cf2e74 100644 --- a/packages/core/src/__tests__/__snapshots__/solid.test.ts.snap +++ b/packages/core/src/__tests__/__snapshots__/solid.test.ts.snap @@ -3692,6 +3692,84 @@ export default ComponentWithContext; " `; +exports[`Solid > jsx > Javascript Test > componentWithContextMultiRoot 1`] = ` +"import { useContext } from \\"solid-js\\"; + +import Context1 from \\"@dummy/1\\"; +import Context2 from \\"@dummy/2\\"; + +function ComponentWithContext(props) { + const foo = useContext(Context1); + + return ( + + + <> + <>{foo.value} +
other
+ +
+
+ ); +} + +export default ComponentWithContext; +" +`; + +exports[`Solid > jsx > Javascript Test > componentWithContextMultiRoot 2`] = ` +"import { useContext } from \\"solid-js\\"; + +import { css } from \\"solid-styled-components\\"; + +import Context1 from \\"@dummy/1\\"; +import Context2 from \\"@dummy/2\\"; + +function ComponentWithContext(props) { + const foo = useContext(Context1); + + return ( + <> + + + <> + <>{foo.value} +
other
+ +
+
+ + ); +} + +export default ComponentWithContext; +" +`; + exports[`Solid > jsx > Javascript Test > contentState 1`] = ` "import BuilderContext from \\"@dummy/context.jsx\\"; @@ -10036,6 +10114,91 @@ export default ComponentWithContext; " `; +exports[`Solid > jsx > Typescript Test > componentWithContextMultiRoot 1`] = ` +"import { useContext } from \\"solid-js\\"; + +export interface ComponentWithContextProps { + content: string; +} + +import Context1 from \\"@dummy/1\\"; +import Context2 from \\"@dummy/2\\"; + +function ComponentWithContext(props: ComponentWithContextProps) { + const foo = useContext(Context1); + + return ( + + + <> + <>{foo.value} +
other
+ +
+
+ ); +} + +export default ComponentWithContext; +" +`; + +exports[`Solid > jsx > Typescript Test > componentWithContextMultiRoot 2`] = ` +"import { useContext } from \\"solid-js\\"; + +import { css } from \\"solid-styled-components\\"; +export interface ComponentWithContextProps { + content: string; +} + +import Context1 from \\"@dummy/1\\"; +import Context2 from \\"@dummy/2\\"; + +function ComponentWithContext(props: ComponentWithContextProps) { + const foo = useContext(Context1); + + return ( + <> + + + <> + <>{foo.value} +
other
+ +
+
+ + ); +} + +export default ComponentWithContext; +" +`; + exports[`Solid > jsx > Typescript Test > contentState 1`] = ` "import BuilderContext from \\"@dummy/context.jsx\\"; diff --git a/packages/core/src/__tests__/__snapshots__/stencil.test.ts.snap b/packages/core/src/__tests__/__snapshots__/stencil.test.ts.snap index 515882107e..f32e77ee3c 100644 --- a/packages/core/src/__tests__/__snapshots__/stencil.test.ts.snap +++ b/packages/core/src/__tests__/__snapshots__/stencil.test.ts.snap @@ -1958,6 +1958,31 @@ export default class ComponentWithContext { " `; +exports[`Stencil > jsx > Javascript Test > componentWithContextMultiRoot 1`] = ` +"import Context1 from \\"@dummy/1\\"; +import Context2 from \\"@dummy/2\\"; + +import { Component, Prop, h, State, Fragment } from \\"@stencil/core\\"; + +@Component({ + tag: \\"component-with-context\\", +}) +export default class ComponentWithContext { + @Prop() content: any; + + render() { + return ( + + {foo.value} + +
other
+
+ ); + } +} +" +`; + exports[`Stencil > jsx > Javascript Test > contentState 1`] = ` "import BuilderContext from \\"@dummy/context.lite\\"; @@ -4751,6 +4776,31 @@ export default class ComponentWithContext { " `; +exports[`Stencil > jsx > Typescript Test > componentWithContextMultiRoot 1`] = ` +"import Context1 from \\"@dummy/1\\"; +import Context2 from \\"@dummy/2\\"; + +import { Component, Prop, h, State, Fragment } from \\"@stencil/core\\"; + +@Component({ + tag: \\"component-with-context\\", +}) +export default class ComponentWithContext { + @Prop() content: any; + + render() { + return ( + + {foo.value} + +
other
+
+ ); + } +} +" +`; + exports[`Stencil > jsx > Typescript Test > contentState 1`] = ` "import BuilderContext from \\"@dummy/context.lite\\"; diff --git a/packages/core/src/__tests__/__snapshots__/svelte.test.ts.snap b/packages/core/src/__tests__/__snapshots__/svelte.test.ts.snap index 50bc6bbec5..fdf5fd9012 100644 --- a/packages/core/src/__tests__/__snapshots__/svelte.test.ts.snap +++ b/packages/core/src/__tests__/__snapshots__/svelte.test.ts.snap @@ -1471,6 +1471,33 @@ exports[`Svelte > jsx > Javascript Test > componentWithContext 1`] = ` {foo.value}" `; +exports[`Svelte > jsx > Javascript Test > componentWithContextMultiRoot 1`] = ` +" + +{foo.value} + +
other
" +`; + exports[`Svelte > jsx > Javascript Test > contentState 1`] = ` " + + + +{foo.value} + +
other
" +`; + exports[`Svelte > jsx > Typescript Test > contentState 1`] = ` "" `; +exports[`Vue > jsx > Javascript Test > componentWithContextMultiRoot 1`] = ` +" + +" +`; + exports[`Vue > jsx > Javascript Test > contentState 1`] = ` "