diff --git a/packages/core/src/transforms/function.ts b/packages/core/src/transforms/function.ts index 8d7e1e0..3d7e570 100644 --- a/packages/core/src/transforms/function.ts +++ b/packages/core/src/transforms/function.ts @@ -1,3 +1,5 @@ +import { toCamelCase } from "../utils" + import { Transform } from "./index" const function_: Transform<(...args: unknown[]) => unknown> = { @@ -13,6 +15,14 @@ const function_: Transform<(...args: unknown[]) => unknown> = { // @ts-expect-error return global[value] } + + const functionName = toCamelCase(attribute) + + //@ts-expect-error + if (typeof element !== "undefined" && functionName in element.container) { + // @ts-expect-error + return element.container[functionName] + } })() return typeof fn === "function" ? fn.bind(element) : undefined diff --git a/packages/react-to-web-component/src/react-to-web-component.test.tsx b/packages/react-to-web-component/src/react-to-web-component.test.tsx index 4d89e7e..ea17539 100644 --- a/packages/react-to-web-component/src/react-to-web-component.test.tsx +++ b/packages/react-to-web-component/src/react-to-web-component.test.tsx @@ -363,4 +363,56 @@ describe("react-to-web-component 1", () => { button.click() }) }) + + it("Supports class function to react props", async () => { + + const ClassGreeting: React.FC<{ name: string, sayHello: () => void }> = ({ name, sayHello }) => ( +