From 2f09ed83386b334f0dfb7f376b99739b15e49fc9 Mon Sep 17 00:00:00 2001 From: Aylur Date: Sun, 24 Nov 2024 00:04:07 +0000 Subject: gjs gtk4 support export jsx-runtime --- lang/gjs/src/gtk3/jsx-runtime.ts | 31 ++++--------------------------- 1 file changed, 4 insertions(+), 27 deletions(-) (limited to 'lang/gjs/src/gtk3/jsx-runtime.ts') diff --git a/lang/gjs/src/gtk3/jsx-runtime.ts b/lang/gjs/src/gtk3/jsx-runtime.ts index 9da4bb6..f37c695 100644 --- a/lang/gjs/src/gtk3/jsx-runtime.ts +++ b/lang/gjs/src/gtk3/jsx-runtime.ts @@ -1,11 +1,8 @@ import Gtk from "gi://Gtk?version=3.0" -import { mergeBindings, type BindableChild } from "./astalify.js" +import { type BindableChild } from "./astalify.js" +import { mergeBindings, jsx as _jsx } from "../_astal.js" import * as Widget from "./widget.js" -function isArrowFunction(func: any): func is (args: any) => any { - return !Object.hasOwn(func, "prototype") -} - export function Fragment({ children = [], child }: { child?: BindableChild children?: Array @@ -16,29 +13,9 @@ export function Fragment({ children = [], child }: { export function jsx( ctor: keyof typeof ctors | typeof Gtk.Widget, - { children, ...props }: any, + props: any, ) { - children ??= [] - - if (!Array.isArray(children)) - children = [children] - - children = children.filter(Boolean) - - if (children.length === 1) - props.child = children[0] - else if (children.length > 1) - props.children = children - - if (typeof ctor === "string") { - return new ctors[ctor](props) - } - - if (isArrowFunction(ctor)) - return ctor(props) - - // @ts-expect-error can be class or function - return new ctor(props) + return _jsx(ctors, ctor as any, props) } const ctors = { -- cgit v1.2.3 From f00e558c6af391bc7ae0b64190da37f876f12c79 Mon Sep 17 00:00:00 2001 From: Aylur Date: Wed, 25 Dec 2024 02:36:28 +0100 Subject: docs: add gtk4 jsx documentation --- lang/gjs/src/gtk3/jsx-runtime.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lang/gjs/src/gtk3/jsx-runtime.ts') diff --git a/lang/gjs/src/gtk3/jsx-runtime.ts b/lang/gjs/src/gtk3/jsx-runtime.ts index cc97f2e..ee720af 100644 --- a/lang/gjs/src/gtk3/jsx-runtime.ts +++ b/lang/gjs/src/gtk3/jsx-runtime.ts @@ -61,7 +61,7 @@ declare global { label: Widget.LabelProps levelbar: Widget.LevelBarProps // TODO: listbox - menubutton: Widget.MenuButton, + menubutton: Widget.MenuButtonProps overlay: Widget.OverlayProps revealer: Widget.RevealerProps scrollable: Widget.ScrollableProps -- cgit v1.2.3