@gtkx/react 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -4
- package/dist/adw/dialog.js +2 -2
- package/dist/adw/dialog.js.map +1 -1
- package/dist/components/application.d.ts.map +1 -1
- package/dist/components/application.js +3 -3
- package/dist/components/application.js.map +1 -1
- package/dist/components/window.js +3 -3
- package/dist/components/window.js.map +1 -1
- package/dist/element-behaviors.js +93 -3
- package/dist/element-behaviors.js.map +1 -1
- package/dist/element-config.js +1 -1
- package/dist/element-config.js.map +1 -1
- package/dist/hooks/use-bind-setting.d.ts.map +1 -1
- package/dist/hooks/use-bind-setting.js +3 -2
- package/dist/hooks/use-bind-setting.js.map +1 -1
- package/dist/hooks/use-property.d.ts +1 -1
- package/dist/hooks/use-property.d.ts.map +1 -1
- package/dist/hooks/use-property.js +5 -1
- package/dist/hooks/use-property.js.map +1 -1
- package/dist/prop-types.d.ts +9 -1
- package/dist/prop-types.d.ts.map +1 -1
- package/dist/prop-types.js.map +1 -1
- package/dist/reconciler/apply-props.d.ts +2 -1
- package/dist/reconciler/apply-props.d.ts.map +1 -1
- package/dist/reconciler/apply-props.js +59 -24
- package/dist/reconciler/apply-props.js.map +1 -1
- package/dist/reconciler/behaviors.d.ts.map +1 -1
- package/dist/reconciler/behaviors.js +40 -9
- package/dist/reconciler/behaviors.js.map +1 -1
- package/dist/reconciler/host-config.d.ts.map +1 -1
- package/dist/reconciler/host-config.js +2 -1
- package/dist/reconciler/host-config.js.map +1 -1
- package/dist/reconciler/metadata.d.ts +6 -1
- package/dist/reconciler/metadata.d.ts.map +1 -1
- package/dist/reconciler/metadata.js +39 -6
- package/dist/reconciler/metadata.js.map +1 -1
- package/dist/reconciler/placement.js +4 -4
- package/dist/reconciler/placement.js.map +1 -1
- package/dist/reconciler/registry.d.ts +2 -0
- package/dist/reconciler/registry.d.ts.map +1 -1
- package/dist/reconciler/registry.js.map +1 -1
- package/dist/reconciler/root.d.ts.map +1 -1
- package/dist/reconciler/root.js.map +1 -1
- package/dist/reconciler/signals.d.ts +3 -2
- package/dist/reconciler/signals.d.ts.map +1 -1
- package/dist/reconciler/signals.js +49 -16
- package/dist/reconciler/signals.js.map +1 -1
- package/dist/reconciler/style.d.ts +2 -1
- package/dist/reconciler/style.d.ts.map +1 -1
- package/dist/reconciler/style.js +4 -3
- package/dist/reconciler/style.js.map +1 -1
- package/dist/reconciler/text.js +3 -3
- package/dist/reconciler/text.js.map +1 -1
- package/env.d.ts +10 -7
- package/package.json +6 -6
- package/src/adw/dialog.tsx +2 -2
- package/src/components/application.tsx +18 -3
- package/src/components/window.tsx +3 -3
- package/src/element-behaviors.ts +122 -3
- package/src/element-config.ts +1 -1
- package/src/hooks/use-bind-setting.ts +3 -2
- package/src/hooks/use-property.ts +6 -2
- package/src/prop-types.ts +10 -0
- package/src/reconciler/apply-props.ts +73 -26
- package/src/reconciler/behaviors.ts +60 -12
- package/src/reconciler/host-config.ts +3 -1
- package/src/reconciler/metadata.ts +62 -6
- package/src/reconciler/placement.ts +4 -4
- package/src/reconciler/registry.ts +2 -0
- package/src/reconciler/root.ts +1 -1
- package/src/reconciler/signals.ts +62 -17
- package/src/reconciler/style.ts +4 -3
- package/src/reconciler/text.ts +3 -3
package/README.md
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
<h1 align="center">GTKX</h1>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
The React framework for Linux.<br />
|
|
9
|
-
Write native
|
|
10
|
-
|
|
8
|
+
The React framework for Linux, built on GTK.<br />
|
|
9
|
+
Write native GTK4 desktop applications with React and TypeScript.
|
|
10
|
+
Real GTK widgets, the GNOME stack, and standard web tooling.
|
|
11
11
|
</p>
|
|
12
12
|
|
|
13
13
|
<p align="center">
|
|
@@ -98,7 +98,7 @@ GTK4 is mature, and GtkBuilder XML can lay out a static interface, but nothing r
|
|
|
98
98
|
- a React reconciler that exposes every GObject as a JSX element,
|
|
99
99
|
- a CLI for scaffolding, development, and production builds,
|
|
100
100
|
- a dev server with Fast Refresh that patches your running UI in place,
|
|
101
|
-
- CSS-in-JS styling, React Spring animations, and high-level list, grid, and dialog components,
|
|
101
|
+
- CSS-in-JS styling, React Spring animations, React Navigation stack, tab, drawer, and split view navigators, and high-level list, grid, and dialog components,
|
|
102
102
|
- a Testing Library-style API for querying and driving your widgets in tests,
|
|
103
103
|
- and a Model Context Protocol (MCP) server that exposes your live app to AI agents.
|
|
104
104
|
|
|
@@ -158,6 +158,7 @@ Explore the [example apps](https://github.com/gtkx-org/gtkx/tree/main/examples):
|
|
|
158
158
|
- [`gtk-demo`](https://github.com/gtkx-org/gtkx/tree/main/examples/gtk-demo): a React port of the official GTK4 widget showcase, covering lists, dialogs, gestures, CSS, and OpenGL.
|
|
159
159
|
- [`browser`](https://github.com/gtkx-org/gtkx/tree/main/examples/browser): a WebKitWebView-based web browser.
|
|
160
160
|
- [`animations`](https://github.com/gtkx-org/gtkx/tree/main/examples/animations): a tour of `@gtkx/animated`, React Spring animations driven by the GTK frame clock.
|
|
161
|
+
- [`navigation`](https://github.com/gtkx-org/gtkx/tree/main/examples/navigation): a tour of `@gtkx/navigation`, React Navigation's stack, tab, and drawer navigators rendered with libadwaita.
|
|
161
162
|
- [`tutorial`](https://github.com/gtkx-org/gtkx/tree/main/examples/tutorial): the Tasks app the documentation builds.
|
|
162
163
|
|
|
163
164
|
## Status
|
package/dist/adw/dialog.js
CHANGED
|
@@ -2,9 +2,9 @@ import { useCallback } from "react";
|
|
|
2
2
|
import { createPortaledComponent } from "../components/portaled.js";
|
|
3
3
|
import { useParentWindow } from "../hooks/use-parent-window.js";
|
|
4
4
|
import { createPresentedComponent } from "../hooks/use-presented-instance.js";
|
|
5
|
-
import {
|
|
5
|
+
import { applyMutation } from "../reconciler/signals.js";
|
|
6
6
|
const closeDialog = (dialog) => {
|
|
7
|
-
|
|
7
|
+
applyMutation(() => {
|
|
8
8
|
dialog.forceClose();
|
|
9
9
|
});
|
|
10
10
|
};
|
package/dist/adw/dialog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../src/adw/dialog.tsx"],"names":[],"mappings":"AACA,OAAO,EAAoC,WAAW,EAAE,MAAM,OAAO,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAuB,MAAM,oCAAoC,CAAC;AACnG,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../src/adw/dialog.tsx"],"names":[],"mappings":"AACA,OAAO,EAAoC,WAAW,EAAE,MAAM,OAAO,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAuB,MAAM,oCAAoC,CAAC;AACnG,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAIzD,MAAM,WAAW,GAAG,CAAC,MAAkB,EAAQ,EAAE;IAC7C,aAAa,CAAC,GAAG,EAAE;QACf,MAAM,CAAC,UAAU,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,GAAmC,EAAE;IAC1D,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IAEjC,OAAO,WAAW,CACd,CAAC,MAAkB,EAAE,EAAE;QACnB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC,EACD,CAAC,MAAM,CAAC,CACX,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,SAAsB,EAAgD,EAAE,CACnG,uBAAuB,CACnB,wBAAwB,CAAa,SAAS,EAAE;IAC5C,UAAU,EAAE,gBAAgB;IAC5B,OAAO,EAAE,WAAW;CACvB,CAAC,CACL,CAAC;AAEN,gBAAgB;AAChB,OAAO,EAAE,qBAAqB,EAAE,CAAC","sourcesContent":["import type * as Adw from \"@gtkx/gi/adw\";\nimport { type ElementType, type ReactNode, useCallback } from \"react\";\nimport { createPortaledComponent } from \"../components/portaled.js\";\nimport { useParentWindow } from \"../hooks/use-parent-window.js\";\nimport { createPresentedComponent, type PresentedProps } from \"../hooks/use-presented-instance.js\";\nimport { applyMutation } from \"../reconciler/signals.js\";\n\ntype DialogComponentProps = PresentedProps<Adw.Dialog>;\n\nconst closeDialog = (dialog: Adw.Dialog): void => {\n applyMutation(() => {\n dialog.forceClose();\n });\n};\n\nconst usePresentDialog = (): ((dialog: Adw.Dialog) => void) => {\n const parent = useParentWindow();\n\n return useCallback(\n (dialog: Adw.Dialog) => {\n dialog.present(parent);\n },\n [parent],\n );\n};\n\nconst createDialogComponent = (Component: ElementType): ((props: DialogComponentProps) => ReactNode) =>\n createPortaledComponent(\n createPresentedComponent<Adw.Dialog>(Component, {\n usePresent: usePresentDialog,\n dismiss: closeDialog,\n }),\n );\n\n/** @internal */\nexport { createDialogComponent };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/components/application.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAuC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/components/application.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAuC,MAAM,OAAO,CAAC;AA4G9F,QAAA,MAAM,0BAA0B,GAAI,WAAW,WAAW,KAAG,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,SAAS,CAC3B,CAAC;AAEjE,gBAAgB;AAChB,OAAO,EAAE,0BAA0B,EAAE,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { quitApplication, runApplication } from "@gtkx/runtime";
|
|
|
3
3
|
import { pickBy, warn } from "@gtkx/utils";
|
|
4
4
|
import process from "node:process";
|
|
5
5
|
import { useLayoutEffect, useState } from "react";
|
|
6
|
-
import { applicationId as defaultApplicationId } from "virtual:gtkx-config";
|
|
6
|
+
import { applicationId as defaultApplicationId, resourceBasePath as defaultResourceBasePath, } from "virtual:gtkx-config";
|
|
7
7
|
import { ApplicationContext } from "../hooks/use-application.js";
|
|
8
8
|
import { useMergedRef } from "../hooks/use-merged-refs.js";
|
|
9
9
|
import { createPortaledComponent } from "./portaled.js";
|
|
@@ -49,13 +49,13 @@ const applicationChildren = (application, children) => {
|
|
|
49
49
|
return _jsx(ApplicationContext.Provider, { value: application, children: children });
|
|
50
50
|
};
|
|
51
51
|
const createApplicationElement = (Component) => {
|
|
52
|
-
return ({ applicationId = defaultApplicationId, children, ref, ...rest }) => {
|
|
52
|
+
return ({ applicationId = defaultApplicationId, children, ref, resourceBasePath = defaultResourceBasePath, ...rest }) => {
|
|
53
53
|
const [application, setApplication] = useState(null);
|
|
54
54
|
const [activated, setActivated] = useState(false);
|
|
55
55
|
useApplicationLifecycle(application, setActivated, applicationId);
|
|
56
56
|
const mergedRef = useMergedRef(ref, setApplication);
|
|
57
57
|
const appliedProps = activated ? rest : pickBy(rest, (_value, key) => !POST_ACTIVATE_PROPS.has(key));
|
|
58
|
-
return (_jsx(Component, { ref: mergedRef, applicationId: applicationId, ...appliedProps, children: activated ? applicationChildren(application, children) : null }));
|
|
58
|
+
return (_jsx(Component, { ref: mergedRef, applicationId: applicationId, ...appliedProps, resourceBasePath: resourceBasePath, children: activated ? applicationChildren(application, children) : null }));
|
|
59
59
|
};
|
|
60
60
|
};
|
|
61
61
|
const createApplicationComponent = (Component) => createPortaledComponent(createApplicationElement(Component));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/components/application.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAA8C,eAAe,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9F,OAAO,
|
|
1
|
+
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/components/application.tsx"],"names":[],"mappings":"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","sourcesContent":["import type * as Gtk from \"@gtkx/gi/gtk\";\nimport { quitApplication, runApplication } from \"@gtkx/runtime\";\nimport { pickBy, warn } from \"@gtkx/utils\";\nimport process from \"node:process\";\nimport { type ElementType, type ReactNode, type Ref, useLayoutEffect, useState } from \"react\";\nimport {\n applicationId as defaultApplicationId,\n resourceBasePath as defaultResourceBasePath,\n} from \"virtual:gtkx-config\";\nimport { ApplicationContext } from \"../hooks/use-application.js\";\nimport { useMergedRef } from \"../hooks/use-merged-refs.js\";\nimport { createPortaledComponent } from \"./portaled.js\";\n\ntype ApplicationComponentProps = {\n applicationId?: string | null | undefined;\n children?: ReactNode | undefined;\n ref?: Ref<Gtk.Application | null> | undefined;\n resourceBasePath?: string | null | undefined;\n};\n\nconst POST_ACTIVATE_PROPS = new Set([\"menubar\"]);\n\nconst commandLine = (applicationId: string | null): string[] => [\n applicationId?.split(\".\").at(-1) ?? \"gtkx\",\n ...process.argv.slice(2),\n];\n\nconst reportOwnedApplicationId = (application: Gtk.Application): void => {\n if (!application.getIsRegistered() || !application.getIsRemote()) {\n return;\n }\n\n warn(\n `Another process already owns ${application.applicationId ?? \"this application ID\"}, so this process ` +\n \"registered as a remote instance and can never show a window. Quit that instance or change \" +\n \"applicationId, then start this application again.\",\n );\n};\n\nconst startApplication = (\n application: Gtk.Application,\n setActivated: (isActivated: boolean) => void,\n applicationId: string | null,\n): void => {\n application.on(\"activate\", () => {\n setActivated(true);\n });\n\n const { exitStatus } = runApplication(application, commandLine(applicationId));\n reportOwnedApplicationId(application);\n\n if (exitStatus !== 0) {\n process.exitCode = exitStatus;\n }\n};\n\nconst useApplicationLifecycle = (\n application: Gtk.Application | null,\n setActivated: (isActivated: boolean) => void,\n applicationId: string | null,\n): void => {\n useLayoutEffect(() => {\n if (!application) {\n return;\n }\n\n startApplication(application, setActivated, applicationId);\n\n return () => {\n quitApplication(application);\n setActivated(false);\n };\n }, [application, setActivated, applicationId]);\n};\n\nconst applicationChildren = (application: Gtk.Application | null, children: ReactNode): ReactNode => {\n if (!application) {\n return null;\n }\n\n return <ApplicationContext.Provider value={application}>{children}</ApplicationContext.Provider>;\n};\n\nconst createApplicationElement = (\n Component: ElementType,\n): ((props: ApplicationComponentProps) => ReactNode) => {\n return ({\n applicationId = defaultApplicationId,\n children,\n ref,\n resourceBasePath = defaultResourceBasePath,\n ...rest\n }: ApplicationComponentProps): ReactNode => {\n const [application, setApplication] = useState<Gtk.Application | null>(null);\n const [activated, setActivated] = useState(false);\n useApplicationLifecycle(application, setActivated, applicationId);\n const mergedRef = useMergedRef(ref, setApplication);\n const appliedProps = activated ? rest : pickBy(rest, (_value, key) => !POST_ACTIVATE_PROPS.has(key));\n\n return (\n <Component\n ref={mergedRef}\n applicationId={applicationId}\n {...appliedProps}\n resourceBasePath={resourceBasePath}\n >\n {activated ? applicationChildren(application, children) : null}\n </Component>\n );\n };\n};\n\nconst createApplicationComponent = (Component: ElementType): ((props: unknown) => ReactNode) =>\n createPortaledComponent(createApplicationElement(Component));\n\n/** @internal */\nexport { createApplicationComponent };\n"]}
|
|
@@ -2,15 +2,15 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { use } from "react";
|
|
3
3
|
import { ParentWindowContext } from "../hooks/use-parent-window.js";
|
|
4
4
|
import { createPresentedComponent } from "../hooks/use-presented-instance.js";
|
|
5
|
-
import {
|
|
5
|
+
import { applyMutation } from "../reconciler/signals.js";
|
|
6
6
|
import { createPortaledComponent } from "./portaled.js";
|
|
7
7
|
const presentWindow = (window) => {
|
|
8
|
-
|
|
8
|
+
applyMutation(() => {
|
|
9
9
|
window.present();
|
|
10
10
|
});
|
|
11
11
|
};
|
|
12
12
|
const destroyWindow = (window) => {
|
|
13
|
-
|
|
13
|
+
applyMutation(() => {
|
|
14
14
|
window.destroy();
|
|
15
15
|
});
|
|
16
16
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"window.js","sourceRoot":"","sources":["../../src/components/window.tsx"],"names":[],"mappings":";AACA,OAAO,EAAuD,GAAG,EAAE,MAAM,OAAO,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAuB,MAAM,oCAAoC,CAAC;AACnG,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"window.js","sourceRoot":"","sources":["../../src/components/window.tsx"],"names":[],"mappings":";AACA,OAAO,EAAuD,GAAG,EAAE,MAAM,OAAO,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAuB,MAAM,oCAAoC,CAAC;AACnG,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAOxD,MAAM,aAAa,GAAG,CAAC,MAAkB,EAAQ,EAAE;IAC/C,aAAa,CAAC,GAAG,EAAE;QACf,MAAM,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,MAAkB,EAAQ,EAAE;IAC/C,aAAa,CAAC,GAAG,EAAE;QACf,MAAM,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,GAAmC,EAAE,CAAC,aAAa,CAAC;AAE7E,MAAM,8BAA8B,GAAG,CAAC,SAAsB,EAAsD,EAAE,CAClH,wBAAwB,CAAa,SAAS,EAAE;IAC5C,UAAU,EAAE,gBAAgB;IAC5B,OAAO,EAAE,aAAa;IACtB,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CACvB,KAAC,mBAAmB,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,YAAG,OAAO,GAAgC,CACxF;CACJ,CAAC,CAAC;AAEP,MAAM,uBAAuB,GAAG,CAAC,SAAsB,EAAgD,EAAE;IACrG,OAAO,CAAC,KAA2B,EAAa,EAAE;QAC9C,MAAM,MAAM,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACxC,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,CAAC;QAExE,OAAO,KAAC,SAAS,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAI,CAAC;IACzF,CAAC,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,SAAsB,EAAmC,EAAE,CACtF,uBAAuB,CAAC,uBAAuB,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAEhG,OAAO,EAAE,8BAA8B,EAAE,CAAC;AAC1C,gBAAgB;AAChB,OAAO,EAAE,qBAAqB,EAAE,CAAC","sourcesContent":["import type * as Gtk from \"@gtkx/gi/gtk\";\nimport { type ElementType, type ReactElement, type ReactNode, use } from \"react\";\nimport { ParentWindowContext } from \"../hooks/use-parent-window.js\";\nimport { createPresentedComponent, type PresentedProps } from \"../hooks/use-presented-instance.js\";\nimport { applyMutation } from \"../reconciler/signals.js\";\nimport { createPortaledComponent } from \"./portaled.js\";\n\ntype WindowComponentProps = PresentedProps<Gtk.Window> & {\n // eslint-disable-next-line gtkx/accessor-naming\n transientFor?: Gtk.Window | ReactElement | null | undefined;\n};\n\nconst presentWindow = (window: Gtk.Window): void => {\n applyMutation(() => {\n window.present();\n });\n};\n\nconst destroyWindow = (window: Gtk.Window): void => {\n applyMutation(() => {\n window.destroy();\n });\n};\n\nconst usePresentWindow = (): ((window: Gtk.Window) => void) => presentWindow;\n\nconst createPresentedWindowComponent = (Component: ElementType): ((props: PresentedProps<Gtk.Window>) => ReactNode) =>\n createPresentedComponent<Gtk.Window>(Component, {\n usePresent: usePresentWindow,\n dismiss: destroyWindow,\n wrap: (element, window) => (\n <ParentWindowContext.Provider value={window}>{element}</ParentWindowContext.Provider>\n ),\n });\n\nconst withDefaultTransientFor = (Component: ElementType): ((props: WindowComponentProps) => ReactNode) => {\n return (props: WindowComponentProps): ReactNode => {\n const parent = use(ParentWindowContext);\n const isDefaulted = props.transientFor === undefined && parent !== null;\n\n return <Component {...(isDefaulted ? { ...props, transientFor: parent } : props)} />;\n };\n};\n\nconst createWindowComponent = (Component: ElementType): ((props: unknown) => ReactNode) =>\n createPortaledComponent(withDefaultTransientFor(createPresentedWindowComponent(Component)));\n\nexport { createPresentedWindowComponent };\n/** @internal */\nexport { createWindowComponent };\n"]}
|
|
@@ -5,7 +5,10 @@ import { BUILTIN_ELEMENTS, SINGLE_CHILD_TYPES } from "./element-config.js";
|
|
|
5
5
|
import { addRemoveSlot, adoptedChildrenSlot, applicationCreator, boxSlot, childSetterSlot, controlledText, deferred, list, slot, value, wrappingIndexedSlot, } from "./reconciler/behaviors.js";
|
|
6
6
|
import { forTypes, registerElements, } from "./reconciler/registry.js";
|
|
7
7
|
import { applyWrite } from "./reconciler/signals.js";
|
|
8
|
-
import { applyStyle, styleClass } from "./reconciler/style.js";
|
|
8
|
+
import { applyStyle, CSS_CLASSES_PROP, styleClass } from "./reconciler/style.js";
|
|
9
|
+
const SELECTED_INDEX_PROP = "selectedIndex";
|
|
10
|
+
const SELECTION_SIGNAL = "selected-rows-changed";
|
|
11
|
+
const NO_SELECTION = -1;
|
|
9
12
|
const BUILTIN_BEHAVIORS = {
|
|
10
13
|
...forTypes(SINGLE_CHILD_TYPES, {
|
|
11
14
|
behaviors: [childSetterSlot()],
|
|
@@ -69,6 +72,7 @@ const BUILTIN_BEHAVIORS = {
|
|
|
69
72
|
wrappingIndexedSlot(Gtk.ListBoxRow, (row, inner) => {
|
|
70
73
|
row.setChild(inner);
|
|
71
74
|
}),
|
|
75
|
+
selectedIndexBehavior(),
|
|
72
76
|
],
|
|
73
77
|
},
|
|
74
78
|
GtkFlowBox: {
|
|
@@ -347,8 +351,8 @@ const didWriteCssClasses = (widget, prev, next, className) => {
|
|
|
347
351
|
if (className === null || !hasCssClassesChange(prev, next)) {
|
|
348
352
|
return false;
|
|
349
353
|
}
|
|
350
|
-
applyWrite(() => {
|
|
351
|
-
Reflect.set(widget,
|
|
354
|
+
applyWrite(CSS_CLASSES_PROP, () => {
|
|
355
|
+
Reflect.set(widget, CSS_CLASSES_PROP, withStyleClass(next.cssClasses, className));
|
|
352
356
|
});
|
|
353
357
|
return true;
|
|
354
358
|
};
|
|
@@ -369,6 +373,92 @@ function updateStyle(widget, prev, next) {
|
|
|
369
373
|
function styleBehavior() {
|
|
370
374
|
return { update: updateStyle };
|
|
371
375
|
}
|
|
376
|
+
function selectedRowIndex(box) {
|
|
377
|
+
return box.getSelectedRow()?.getIndex() ?? NO_SELECTION;
|
|
378
|
+
}
|
|
379
|
+
function selectedIndexError(value) {
|
|
380
|
+
return new Error("The 'selectedIndex' of a <GtkListBox> must be a whole number, or -1 to select no row; " +
|
|
381
|
+
`received ${String(value)}.`);
|
|
382
|
+
}
|
|
383
|
+
function desiredIndex(value) {
|
|
384
|
+
if (value === null) {
|
|
385
|
+
return NO_SELECTION;
|
|
386
|
+
}
|
|
387
|
+
if (typeof value !== "number") {
|
|
388
|
+
return undefined;
|
|
389
|
+
}
|
|
390
|
+
if (!Number.isSafeInteger(value)) {
|
|
391
|
+
throw selectedIndexError(value);
|
|
392
|
+
}
|
|
393
|
+
return value;
|
|
394
|
+
}
|
|
395
|
+
function selectRowAt(box, row) {
|
|
396
|
+
applyWrite(SELECTED_INDEX_PROP, () => {
|
|
397
|
+
box.selectRow(row);
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
function clearSelection(box) {
|
|
401
|
+
applyWrite(SELECTED_INDEX_PROP, () => {
|
|
402
|
+
box.unselectAll();
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
function applySelectedIndex(box, state) {
|
|
406
|
+
const { desired } = state;
|
|
407
|
+
if (desired === undefined || selectedRowIndex(box) === desired) {
|
|
408
|
+
return;
|
|
409
|
+
}
|
|
410
|
+
if (desired < 0) {
|
|
411
|
+
clearSelection(box);
|
|
412
|
+
return;
|
|
413
|
+
}
|
|
414
|
+
const row = box.getRowAtIndex(desired);
|
|
415
|
+
if (row !== null) {
|
|
416
|
+
selectRowAt(box, row);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
function scheduleSelectedIndex(box, state) {
|
|
420
|
+
if (state.isScheduled) {
|
|
421
|
+
return;
|
|
422
|
+
}
|
|
423
|
+
state.isScheduled = true;
|
|
424
|
+
queueMicrotask(() => {
|
|
425
|
+
state.isScheduled = false;
|
|
426
|
+
if (state.disconnect !== null) {
|
|
427
|
+
applySelectedIndex(box, state);
|
|
428
|
+
}
|
|
429
|
+
});
|
|
430
|
+
}
|
|
431
|
+
function watchSelectionDrift(box, state) {
|
|
432
|
+
if (state.disconnect !== null) {
|
|
433
|
+
return;
|
|
434
|
+
}
|
|
435
|
+
const handler = () => {
|
|
436
|
+
scheduleSelectedIndex(box, state);
|
|
437
|
+
};
|
|
438
|
+
box.on(SELECTION_SIGNAL, handler);
|
|
439
|
+
state.disconnect = () => {
|
|
440
|
+
box.off(SELECTION_SIGNAL, handler);
|
|
441
|
+
};
|
|
442
|
+
}
|
|
443
|
+
function selectedIndexBehavior() {
|
|
444
|
+
return {
|
|
445
|
+
deferred: [SELECTED_INDEX_PROP],
|
|
446
|
+
initialize: () => ({ desired: undefined, isScheduled: false, disconnect: null }),
|
|
447
|
+
update: (_box, _prev, next, context) => {
|
|
448
|
+
context.desired = desiredIndex(next[SELECTED_INDEX_PROP]);
|
|
449
|
+
return [SELECTED_INDEX_PROP];
|
|
450
|
+
},
|
|
451
|
+
flush: (box, context) => {
|
|
452
|
+
applySelectedIndex(box, context);
|
|
453
|
+
watchSelectionDrift(box, context);
|
|
454
|
+
},
|
|
455
|
+
teardown: (_box, context) => {
|
|
456
|
+
const state = context;
|
|
457
|
+
state.disconnect?.();
|
|
458
|
+
state.disconnect = null;
|
|
459
|
+
},
|
|
460
|
+
};
|
|
461
|
+
}
|
|
372
462
|
const addMainOption = (application, option) => {
|
|
373
463
|
application.addMainOption(option.longName, option.shortName?.codePointAt(0) ?? 0, option.flags ?? GLib.OptionFlags.NONE, option.arg ?? GLib.OptionArg.NONE, option.description, option.argDescription ?? null);
|
|
374
464
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element-behaviors.js","sourceRoot":"","sources":["../src/element-behaviors.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as GObject from \"@gtkx/gi/gobject\";\nimport * as Gio from \"@gtkx/gi/gio\";\nimport * as GLib from \"@gtkx/gi/glib\";\nimport * as Gtk from \"@gtkx/gi/gtk\";\nimport type {\n ActionAccel,\n CreditSection,\n DragSourceIcon,\n LevelBarOffset,\n MainOption,\n MenuItem,\n ScaleMark,\n VflConstraints,\n} from \"./prop-types.js\";\nimport { BUILTIN_ELEMENTS, SINGLE_CHILD_TYPES } from \"./element-config.js\";\nimport {\n addRemoveSlot,\n adoptedChildrenSlot,\n applicationCreator,\n boxSlot,\n childSetterSlot,\n controlledText,\n deferred,\n list,\n slot,\n value,\n wrappingIndexedSlot,\n} from \"./reconciler/behaviors.js\";\nimport {\n type ElementBehavior,\n type ElementConfig,\n forTypes,\n type Props,\n registerElements,\n} from \"./reconciler/registry.js\";\nimport { applyWrite } from \"./reconciler/signals.js\";\nimport { applyStyle, styleClass } from \"./reconciler/style.js\";\n\nconst BUILTIN_BEHAVIORS: Record<string, ElementConfig<never>> = {\n ...forTypes(SINGLE_CHILD_TYPES, {\n behaviors: [childSetterSlot()],\n }),\n ...forTypes([\"GtkHeaderBar\", \"GtkActionBar\"], {\n behaviors: [\n addRemoveSlot<Gtk.Widget, Gtk.HeaderBar | Gtk.ActionBar>(\n \"start\",\n \"GtkWidget\",\n (bar, child) => {\n bar.packStart(child);\n },\n (bar, child) => {\n bar.remove(child);\n },\n ),\n addRemoveSlot<Gtk.Widget, Gtk.HeaderBar | Gtk.ActionBar>(\n \"end\",\n \"GtkWidget\",\n (bar, child) => {\n bar.packEnd(child);\n },\n (bar, child) => {\n bar.remove(child);\n },\n ),\n ],\n }),\n GtkWindow: {\n behaviors: [childSetterSlot()],\n },\n GtkWidget: {\n behaviors: [\n slot<Gtk.Widget, Gtk.Popover>(\"children\", \"GtkPopover\", {\n attach: (parent, popover) => {\n popover.setParent(parent);\n },\n detach: (_parent, popover) => {\n popover.unparent();\n },\n }),\n addRemoveSlot<Gtk.EventController, Gtk.Widget>(\n \"controllers\",\n \"GtkEventController\",\n (widget, controller) => {\n widget.addController(controller);\n },\n (widget, controller) => {\n widget.removeController(controller);\n },\n ),\n slot<Gtk.Widget, Gtk.LayoutManager>(\"layoutManager\", \"GtkLayoutManager\", {\n attach: (widget, manager) => {\n widget.setLayoutManager(manager);\n },\n detach: (widget) => {\n widget.setLayoutManager(null);\n },\n }),\n slot<Gtk.Widget, Gio.ActionGroup>(\"actionGroups\", \"GActionGroup\", {\n attach: (widget, group, info) => {\n widget.insertActionGroup((info.props.prefix as string | null) ?? \"\", group);\n },\n detach: (widget, _group, info) => {\n widget.insertActionGroup((info.props.prefix as string | null) ?? \"\", null);\n },\n }),\n styleBehavior(),\n ],\n },\n GtkBox: {\n behaviors: [boxSlot<Gtk.Box>()],\n },\n GtkListBox: {\n behaviors: [\n wrappingIndexedSlot(Gtk.ListBoxRow, (row, inner) => {\n row.setChild(inner);\n }),\n ],\n },\n GtkFlowBox: {\n behaviors: [\n wrappingIndexedSlot(Gtk.FlowBoxChild, (child, inner) => {\n child.setChild(inner);\n }),\n ],\n },\n GtkOverlay: {\n behaviors: [\n childSetterSlot<Gtk.Overlay>(),\n slot<Gtk.Overlay, Gtk.Widget>(\"overlays\", \"GtkWidget\", {\n attach: (overlay, child) => {\n overlay.addOverlay(child);\n },\n detach: (overlay, child) => {\n overlay.removeOverlay(child);\n },\n resolve: layoutChild,\n }),\n ],\n },\n GtkShortcutController: {\n behaviors: [\n addRemoveSlot<Gtk.Shortcut, Gtk.ShortcutController>(\n \"shortcuts\",\n \"GtkShortcut\",\n (controller, shortcut) => {\n controller.addShortcut(shortcut);\n },\n (controller, shortcut) => {\n controller.removeShortcut(shortcut);\n },\n ),\n ],\n },\n GtkTextChildAnchor: {\n behaviors: [{ create: () => Gtk.TextChildAnchor.new() }],\n },\n GtkTextView: {\n behaviors: [\n slot<Gtk.TextView, Gtk.TextBuffer>(\"children\", \"GtkTextBuffer\", {\n attach: (view, buffer) => {\n view.setBuffer(buffer);\n },\n detach: (view) => {\n view.setBuffer(null);\n },\n }),\n ],\n },\n GActionMap: {\n behaviors: [\n slot<Gio.ActionMap, Gio.Action>(\"actions\", \"GAction\", {\n attach: (map, action) => {\n map.addAction(action);\n },\n detach: (map, _action, info) => {\n map.removeAction((info.props.name as string | null) ?? \"\");\n },\n }),\n ],\n },\n GMenu: {\n behaviors: [\n list<Gio.Menu, MenuItem>(\"items\", {\n clear: (menu) => {\n menu.removeAll();\n },\n add: (menu, item) => {\n appendMenuItem(menu, item);\n },\n }),\n ],\n },\n GtkColumnView: {\n behaviors: [\n slot<Gtk.ColumnView, Gtk.ColumnViewColumn>(\"children\", \"GtkColumnViewColumn\", {\n attach: (view, column, info) => {\n view.insertColumn(info.index, column);\n },\n detach: (view, column) => {\n view.removeColumn(column);\n },\n }),\n ],\n },\n GtkGrid: {\n behaviors: [\n slot<Gtk.Grid, Gtk.Widget>(\"children\", \"GtkWidget\", {\n attach: (grid, child) => {\n grid.attach(child, 0, 0, 1, 1);\n },\n detach: (grid, child) => {\n grid.remove(child);\n },\n resolve: layoutChild,\n }),\n ],\n },\n GtkFixed: {\n behaviors: [\n slot<Gtk.Fixed, Gtk.Widget>(\"children\", \"GtkWidget\", {\n attach: (fixed, child) => {\n fixed.put(child, 0, 0);\n },\n detach: (fixed, child) => {\n fixed.remove(child);\n },\n resolve: layoutChild,\n }),\n ],\n },\n GtkSizeGroup: {\n behaviors: [\n list<Gtk.SizeGroup, Gtk.Widget>(\"widgets\", {\n add: (group, widget) => {\n group.addWidget(widget);\n },\n remove: (group, widget) => {\n group.removeWidget(widget);\n },\n }),\n ],\n },\n GtkConstraintLayout: {\n behaviors: [\n addRemoveSlot<Gtk.Constraint, Gtk.ConstraintLayout>(\n \"constraints\",\n \"GtkConstraint\",\n (layout, constraint) => {\n layout.addConstraint(constraint);\n },\n (layout, constraint) => {\n layout.removeConstraint(constraint);\n },\n ),\n addRemoveSlot<Gtk.ConstraintGuide, Gtk.ConstraintLayout>(\n \"guides\",\n \"GtkConstraintGuide\",\n (layout, guide) => {\n layout.addGuide(guide);\n },\n (layout, guide) => {\n layout.removeGuide(guide);\n },\n ),\n list<Gtk.ConstraintLayout, VflConstraints, Gtk.Constraint[]>(\"vfl\", {\n add: (layout, item) => [\n ...layout.addConstraintsFromDescription(\n item.lines,\n item.hspacing ?? 0,\n item.vspacing ?? 0,\n item.views ?? new Map<string, Gtk.ConstraintTarget>(),\n ),\n ],\n remove: (layout, _item, constraints) => {\n for (const constraint of constraints) {\n layout.removeConstraint(constraint);\n }\n },\n }),\n ],\n },\n GtkStack: {\n behaviors: [\n adoptedChildrenSlot<Gtk.Stack, Gtk.Widget>(\n \"GtkWidget\",\n (stack, child) => stack.addChild(child),\n (stack, child) => {\n stack.remove(child);\n },\n ),\n deferred<Gtk.Stack, string>(\"visibleChildName\", (stack, name) => stack.getChildByName(name) !== null),\n ],\n },\n GtkNotebook: {\n behaviors: [\n slot<Gtk.Notebook, Gtk.Widget>(\"children\", \"GtkWidget\", {\n attach: (notebook, child, info) => notebook.insertPage(child, null, info.index),\n reorder: (notebook, child, info) => {\n notebook.reorderChild(child, info.index);\n },\n detach: (notebook, child) => {\n notebook.detachTab(child);\n },\n resolve: (notebook, child) => notebook.getPage(child),\n }),\n ],\n },\n GtkApplication: {\n behaviors: [\n applicationCreator(Gtk.Application),\n addRemoveSlot<Gtk.Window, Gtk.Application>(\n \"children\",\n \"GtkWindow\",\n (application, window) => {\n application.addWindow(window);\n },\n (application, window) => {\n application.removeWindow(window);\n },\n ),\n list<Gtk.Application, ActionAccel>(\"actionAccels\", {\n add: (application, item) => {\n application.setAccelsForAction(item.detailedActionName, item.accels);\n },\n remove: (application, item) => {\n application.setAccelsForAction(item.detailedActionName, []);\n },\n }),\n list<Gtk.Application, MainOption>(\"mainOptions\", {\n add: (application, option) => {\n addMainOption(application, option);\n },\n }),\n ],\n },\n GtkAboutDialog: {\n behaviors: [\n list<Gtk.AboutDialog, CreditSection>(\"creditSections\", {\n add: (dialog, section) => {\n dialog.addCreditSection(section.sectionName, section.people);\n },\n }),\n ],\n },\n GtkScale: {\n behaviors: [\n list<Gtk.Scale, ScaleMark>(\"marks\", {\n add: (scale, mark) => {\n scale.addMark(mark.value ?? 0, mark.position, mark.markup ?? null);\n },\n clear: (scale) => {\n scale.clearMarks();\n },\n }),\n ],\n },\n GtkCalendar: {\n behaviors: [\n list<Gtk.Calendar, number>(\"markedDays\", {\n add: (calendar, day) => {\n calendar.markDay(day);\n },\n clear: (calendar) => {\n calendar.clearMarks();\n },\n }),\n ],\n },\n GtkLevelBar: {\n behaviors: [\n list<Gtk.LevelBar, LevelBarOffset>(\"offsets\", {\n add: (bar, offset) => {\n bar.addOffsetValue(offset.name, offset.value ?? 0);\n },\n remove: (bar, offset) => {\n bar.removeOffsetValue(offset.name);\n },\n }),\n ],\n },\n GtkDropTarget: {\n behaviors: [\n value<Gtk.DropTarget, GObject.Type[]>(\"types\", (target, types) => {\n target.setGtypes(types);\n }),\n ],\n },\n GtkDrawingArea: {\n behaviors: [\n value<Gtk.DrawingArea, Gtk.DrawingAreaDrawFunc>(\"drawFunc\", (area, draw) => {\n area.setDrawFunc(draw);\n area.queueDraw();\n }),\n ],\n },\n GtkDragSource: {\n behaviors: [\n value<Gtk.DragSource, DragSourceIcon>(\"icon\", (source, icon) => {\n source.setIcon(icon.paintable ?? null, icon.hotX ?? 0, icon.hotY ?? 0);\n }),\n ],\n },\n GtkEditable: {\n behaviors: [controlledText(\"text\")],\n },\n};\n\nfunction layoutChild(parent: Gtk.Widget, child: Gtk.Widget): GObject.Object | null {\n return parent.getLayoutManager()?.getLayoutChild(child) ?? null;\n}\n\nconst isNullish = (value: unknown): boolean => value === undefined || value === null;\nconst isInitialNull = (prevValue: unknown, value: unknown): boolean => value === null && prevValue === undefined;\n\nconst withStyleClass = (classes: unknown, className: string): string[] =>\n Array.isArray(classes) ? [...(classes as string[]), className] : [className];\n\nconst hasCssClassesChange = (prev: Props, next: Props): boolean => {\n const classes = next.cssClasses;\n\n if (classes === undefined || Object.is(prev.cssClasses, classes)) {\n return false;\n }\n\n return !isInitialNull(prev.cssClasses, classes);\n};\n\nconst didWriteCssClasses = (widget: Gtk.Widget, prev: Props, next: Props, className: string | null): boolean => {\n if (className === null || !hasCssClassesChange(prev, next)) {\n return false;\n }\n\n applyWrite(() => {\n Reflect.set(widget, \"cssClasses\", withStyleClass(next.cssClasses, className));\n });\n\n return true;\n};\n\nconst isRestyled = (prev: Props, next: Props): boolean => {\n if (isNullish(prev.style) && isNullish(next.style)) {\n return false;\n }\n\n return !Object.is(prev.style, next.style);\n};\n\nfunction updateStyle(widget: Gtk.Widget, prev: Props, next: Props): Iterable<string> | undefined {\n const isChanged = isRestyled(prev, next);\n const className = isChanged ? applyStyle(widget, next.style) : styleClass(widget);\n\n if (!isChanged && className === null) {\n return;\n }\n\n return didWriteCssClasses(widget, prev, next, className) ? [\"style\", \"cssClasses\"] : [\"style\"];\n}\n\nfunction styleBehavior(): ElementBehavior<Gtk.Widget> {\n return { update: updateStyle };\n}\n\nconst addMainOption = (application: Gtk.Application, option: MainOption): void => {\n application.addMainOption(\n option.longName,\n option.shortName?.codePointAt(0) ?? 0,\n option.flags ?? GLib.OptionFlags.NONE,\n option.arg ?? GLib.OptionArg.NONE,\n option.description,\n option.argDescription ?? null,\n );\n};\n\nconst buildMenu = (items: MenuItem[]): Gio.Menu => {\n const menu = Gio.Menu.new();\n\n for (const item of items) {\n appendMenuItem(menu, item);\n }\n\n return menu;\n};\n\nfunction appendMenuItem(menu: Gio.Menu, item: MenuItem): void {\n const label = item.label ?? null;\n\n if (item.submenu !== undefined) {\n menu.appendSubmenu(label, buildMenu(item.submenu));\n\n return;\n }\n\n if (item.section !== undefined) {\n menu.appendSection(label, buildMenu(item.section));\n\n return;\n }\n\n menu.append(label, item.action ?? null);\n}\n\nregisterElements(BUILTIN_ELEMENTS);\nregisterElements(BUILTIN_BEHAVIORS);\n"]}
|
|
1
|
+
{"version":3,"file":"element-behaviors.js","sourceRoot":"","sources":["../src/element-behaviors.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as GObject from \"@gtkx/gi/gobject\";\nimport * as Gio from \"@gtkx/gi/gio\";\nimport * as GLib from \"@gtkx/gi/glib\";\nimport * as Gtk from \"@gtkx/gi/gtk\";\nimport type {\n ActionAccel,\n CreditSection,\n DragSourceIcon,\n LevelBarOffset,\n MainOption,\n MenuItem,\n ScaleMark,\n VflConstraints,\n} from \"./prop-types.js\";\nimport { BUILTIN_ELEMENTS, SINGLE_CHILD_TYPES } from \"./element-config.js\";\nimport {\n addRemoveSlot,\n adoptedChildrenSlot,\n applicationCreator,\n boxSlot,\n childSetterSlot,\n controlledText,\n deferred,\n list,\n slot,\n value,\n wrappingIndexedSlot,\n} from \"./reconciler/behaviors.js\";\nimport {\n type ElementBehavior,\n type ElementConfig,\n forTypes,\n type Props,\n registerElements,\n} from \"./reconciler/registry.js\";\nimport { applyWrite } from \"./reconciler/signals.js\";\nimport { applyStyle, CSS_CLASSES_PROP, styleClass } from \"./reconciler/style.js\";\n\ntype SelectedIndexState = { desired: number | undefined; isScheduled: boolean; disconnect: (() => void) | null };\n\nconst SELECTED_INDEX_PROP = \"selectedIndex\";\nconst SELECTION_SIGNAL = \"selected-rows-changed\";\nconst NO_SELECTION = -1;\n\nconst BUILTIN_BEHAVIORS: Record<string, ElementConfig<never>> = {\n ...forTypes(SINGLE_CHILD_TYPES, {\n behaviors: [childSetterSlot()],\n }),\n ...forTypes([\"GtkHeaderBar\", \"GtkActionBar\"], {\n behaviors: [\n addRemoveSlot<Gtk.Widget, Gtk.HeaderBar | Gtk.ActionBar>(\n \"start\",\n \"GtkWidget\",\n (bar, child) => {\n bar.packStart(child);\n },\n (bar, child) => {\n bar.remove(child);\n },\n ),\n addRemoveSlot<Gtk.Widget, Gtk.HeaderBar | Gtk.ActionBar>(\n \"end\",\n \"GtkWidget\",\n (bar, child) => {\n bar.packEnd(child);\n },\n (bar, child) => {\n bar.remove(child);\n },\n ),\n ],\n }),\n GtkWindow: {\n behaviors: [childSetterSlot()],\n },\n GtkWidget: {\n behaviors: [\n slot<Gtk.Widget, Gtk.Popover>(\"children\", \"GtkPopover\", {\n attach: (parent, popover) => {\n popover.setParent(parent);\n },\n detach: (_parent, popover) => {\n popover.unparent();\n },\n }),\n addRemoveSlot<Gtk.EventController, Gtk.Widget>(\n \"controllers\",\n \"GtkEventController\",\n (widget, controller) => {\n widget.addController(controller);\n },\n (widget, controller) => {\n widget.removeController(controller);\n },\n ),\n slot<Gtk.Widget, Gtk.LayoutManager>(\"layoutManager\", \"GtkLayoutManager\", {\n attach: (widget, manager) => {\n widget.setLayoutManager(manager);\n },\n detach: (widget) => {\n widget.setLayoutManager(null);\n },\n }),\n slot<Gtk.Widget, Gio.ActionGroup>(\"actionGroups\", \"GActionGroup\", {\n attach: (widget, group, info) => {\n widget.insertActionGroup((info.props.prefix as string | null) ?? \"\", group);\n },\n detach: (widget, _group, info) => {\n widget.insertActionGroup((info.props.prefix as string | null) ?? \"\", null);\n },\n }),\n styleBehavior(),\n ],\n },\n GtkBox: {\n behaviors: [boxSlot<Gtk.Box>()],\n },\n GtkListBox: {\n behaviors: [\n wrappingIndexedSlot(Gtk.ListBoxRow, (row, inner) => {\n row.setChild(inner);\n }),\n selectedIndexBehavior(),\n ],\n },\n GtkFlowBox: {\n behaviors: [\n wrappingIndexedSlot(Gtk.FlowBoxChild, (child, inner) => {\n child.setChild(inner);\n }),\n ],\n },\n GtkOverlay: {\n behaviors: [\n childSetterSlot<Gtk.Overlay>(),\n slot<Gtk.Overlay, Gtk.Widget>(\"overlays\", \"GtkWidget\", {\n attach: (overlay, child) => {\n overlay.addOverlay(child);\n },\n detach: (overlay, child) => {\n overlay.removeOverlay(child);\n },\n resolve: layoutChild,\n }),\n ],\n },\n GtkShortcutController: {\n behaviors: [\n addRemoveSlot<Gtk.Shortcut, Gtk.ShortcutController>(\n \"shortcuts\",\n \"GtkShortcut\",\n (controller, shortcut) => {\n controller.addShortcut(shortcut);\n },\n (controller, shortcut) => {\n controller.removeShortcut(shortcut);\n },\n ),\n ],\n },\n GtkTextChildAnchor: {\n behaviors: [{ create: () => Gtk.TextChildAnchor.new() }],\n },\n GtkTextView: {\n behaviors: [\n slot<Gtk.TextView, Gtk.TextBuffer>(\"children\", \"GtkTextBuffer\", {\n attach: (view, buffer) => {\n view.setBuffer(buffer);\n },\n detach: (view) => {\n view.setBuffer(null);\n },\n }),\n ],\n },\n GActionMap: {\n behaviors: [\n slot<Gio.ActionMap, Gio.Action>(\"actions\", \"GAction\", {\n attach: (map, action) => {\n map.addAction(action);\n },\n detach: (map, _action, info) => {\n map.removeAction((info.props.name as string | null) ?? \"\");\n },\n }),\n ],\n },\n GMenu: {\n behaviors: [\n list<Gio.Menu, MenuItem>(\"items\", {\n clear: (menu) => {\n menu.removeAll();\n },\n add: (menu, item) => {\n appendMenuItem(menu, item);\n },\n }),\n ],\n },\n GtkColumnView: {\n behaviors: [\n slot<Gtk.ColumnView, Gtk.ColumnViewColumn>(\"children\", \"GtkColumnViewColumn\", {\n attach: (view, column, info) => {\n view.insertColumn(info.index, column);\n },\n detach: (view, column) => {\n view.removeColumn(column);\n },\n }),\n ],\n },\n GtkGrid: {\n behaviors: [\n slot<Gtk.Grid, Gtk.Widget>(\"children\", \"GtkWidget\", {\n attach: (grid, child) => {\n grid.attach(child, 0, 0, 1, 1);\n },\n detach: (grid, child) => {\n grid.remove(child);\n },\n resolve: layoutChild,\n }),\n ],\n },\n GtkFixed: {\n behaviors: [\n slot<Gtk.Fixed, Gtk.Widget>(\"children\", \"GtkWidget\", {\n attach: (fixed, child) => {\n fixed.put(child, 0, 0);\n },\n detach: (fixed, child) => {\n fixed.remove(child);\n },\n resolve: layoutChild,\n }),\n ],\n },\n GtkSizeGroup: {\n behaviors: [\n list<Gtk.SizeGroup, Gtk.Widget>(\"widgets\", {\n add: (group, widget) => {\n group.addWidget(widget);\n },\n remove: (group, widget) => {\n group.removeWidget(widget);\n },\n }),\n ],\n },\n GtkConstraintLayout: {\n behaviors: [\n addRemoveSlot<Gtk.Constraint, Gtk.ConstraintLayout>(\n \"constraints\",\n \"GtkConstraint\",\n (layout, constraint) => {\n layout.addConstraint(constraint);\n },\n (layout, constraint) => {\n layout.removeConstraint(constraint);\n },\n ),\n addRemoveSlot<Gtk.ConstraintGuide, Gtk.ConstraintLayout>(\n \"guides\",\n \"GtkConstraintGuide\",\n (layout, guide) => {\n layout.addGuide(guide);\n },\n (layout, guide) => {\n layout.removeGuide(guide);\n },\n ),\n list<Gtk.ConstraintLayout, VflConstraints, Gtk.Constraint[]>(\"vfl\", {\n add: (layout, item) => [\n ...layout.addConstraintsFromDescription(\n item.lines,\n item.hspacing ?? 0,\n item.vspacing ?? 0,\n item.views ?? new Map<string, Gtk.ConstraintTarget>(),\n ),\n ],\n remove: (layout, _item, constraints) => {\n for (const constraint of constraints) {\n layout.removeConstraint(constraint);\n }\n },\n }),\n ],\n },\n GtkStack: {\n behaviors: [\n adoptedChildrenSlot<Gtk.Stack, Gtk.Widget>(\n \"GtkWidget\",\n (stack, child) => stack.addChild(child),\n (stack, child) => {\n stack.remove(child);\n },\n ),\n deferred<Gtk.Stack, string>(\"visibleChildName\", (stack, name) => stack.getChildByName(name) !== null),\n ],\n },\n GtkNotebook: {\n behaviors: [\n slot<Gtk.Notebook, Gtk.Widget>(\"children\", \"GtkWidget\", {\n attach: (notebook, child, info) => notebook.insertPage(child, null, info.index),\n reorder: (notebook, child, info) => {\n notebook.reorderChild(child, info.index);\n },\n detach: (notebook, child) => {\n notebook.detachTab(child);\n },\n resolve: (notebook, child) => notebook.getPage(child),\n }),\n ],\n },\n GtkApplication: {\n behaviors: [\n applicationCreator(Gtk.Application),\n addRemoveSlot<Gtk.Window, Gtk.Application>(\n \"children\",\n \"GtkWindow\",\n (application, window) => {\n application.addWindow(window);\n },\n (application, window) => {\n application.removeWindow(window);\n },\n ),\n list<Gtk.Application, ActionAccel>(\"actionAccels\", {\n add: (application, item) => {\n application.setAccelsForAction(item.detailedActionName, item.accels);\n },\n remove: (application, item) => {\n application.setAccelsForAction(item.detailedActionName, []);\n },\n }),\n list<Gtk.Application, MainOption>(\"mainOptions\", {\n add: (application, option) => {\n addMainOption(application, option);\n },\n }),\n ],\n },\n GtkAboutDialog: {\n behaviors: [\n list<Gtk.AboutDialog, CreditSection>(\"creditSections\", {\n add: (dialog, section) => {\n dialog.addCreditSection(section.sectionName, section.people);\n },\n }),\n ],\n },\n GtkScale: {\n behaviors: [\n list<Gtk.Scale, ScaleMark>(\"marks\", {\n add: (scale, mark) => {\n scale.addMark(mark.value ?? 0, mark.position, mark.markup ?? null);\n },\n clear: (scale) => {\n scale.clearMarks();\n },\n }),\n ],\n },\n GtkCalendar: {\n behaviors: [\n list<Gtk.Calendar, number>(\"markedDays\", {\n add: (calendar, day) => {\n calendar.markDay(day);\n },\n clear: (calendar) => {\n calendar.clearMarks();\n },\n }),\n ],\n },\n GtkLevelBar: {\n behaviors: [\n list<Gtk.LevelBar, LevelBarOffset>(\"offsets\", {\n add: (bar, offset) => {\n bar.addOffsetValue(offset.name, offset.value ?? 0);\n },\n remove: (bar, offset) => {\n bar.removeOffsetValue(offset.name);\n },\n }),\n ],\n },\n GtkDropTarget: {\n behaviors: [\n value<Gtk.DropTarget, GObject.Type[]>(\"types\", (target, types) => {\n target.setGtypes(types);\n }),\n ],\n },\n GtkDrawingArea: {\n behaviors: [\n value<Gtk.DrawingArea, Gtk.DrawingAreaDrawFunc>(\"drawFunc\", (area, draw) => {\n area.setDrawFunc(draw);\n area.queueDraw();\n }),\n ],\n },\n GtkDragSource: {\n behaviors: [\n value<Gtk.DragSource, DragSourceIcon>(\"icon\", (source, icon) => {\n source.setIcon(icon.paintable ?? null, icon.hotX ?? 0, icon.hotY ?? 0);\n }),\n ],\n },\n GtkEditable: {\n behaviors: [controlledText(\"text\")],\n },\n};\n\nfunction layoutChild(parent: Gtk.Widget, child: Gtk.Widget): GObject.Object | null {\n return parent.getLayoutManager()?.getLayoutChild(child) ?? null;\n}\n\nconst isNullish = (value: unknown): boolean => value === undefined || value === null;\nconst isInitialNull = (prevValue: unknown, value: unknown): boolean => value === null && prevValue === undefined;\n\nconst withStyleClass = (classes: unknown, className: string): string[] =>\n Array.isArray(classes) ? [...(classes as string[]), className] : [className];\n\nconst hasCssClassesChange = (prev: Props, next: Props): boolean => {\n const classes = next.cssClasses;\n\n if (classes === undefined || Object.is(prev.cssClasses, classes)) {\n return false;\n }\n\n return !isInitialNull(prev.cssClasses, classes);\n};\n\nconst didWriteCssClasses = (widget: Gtk.Widget, prev: Props, next: Props, className: string | null): boolean => {\n if (className === null || !hasCssClassesChange(prev, next)) {\n return false;\n }\n\n applyWrite(CSS_CLASSES_PROP, () => {\n Reflect.set(widget, CSS_CLASSES_PROP, withStyleClass(next.cssClasses, className));\n });\n\n return true;\n};\n\nconst isRestyled = (prev: Props, next: Props): boolean => {\n if (isNullish(prev.style) && isNullish(next.style)) {\n return false;\n }\n\n return !Object.is(prev.style, next.style);\n};\n\nfunction updateStyle(widget: Gtk.Widget, prev: Props, next: Props): Iterable<string> | undefined {\n const isChanged = isRestyled(prev, next);\n const className = isChanged ? applyStyle(widget, next.style) : styleClass(widget);\n\n if (!isChanged && className === null) {\n return;\n }\n\n return didWriteCssClasses(widget, prev, next, className) ? [\"style\", \"cssClasses\"] : [\"style\"];\n}\n\nfunction styleBehavior(): ElementBehavior<Gtk.Widget> {\n return { update: updateStyle };\n}\n\nfunction selectedRowIndex(box: Gtk.ListBox): number {\n return box.getSelectedRow()?.getIndex() ?? NO_SELECTION;\n}\n\nfunction selectedIndexError(value: number): Error {\n return new Error(\n \"The 'selectedIndex' of a <GtkListBox> must be a whole number, or -1 to select no row; \" +\n `received ${String(value)}.`,\n );\n}\n\nfunction desiredIndex(value: unknown): number | undefined {\n if (value === null) {\n return NO_SELECTION;\n }\n\n if (typeof value !== \"number\") {\n return undefined;\n }\n\n if (!Number.isSafeInteger(value)) {\n throw selectedIndexError(value);\n }\n\n return value;\n}\n\nfunction selectRowAt(box: Gtk.ListBox, row: Gtk.ListBoxRow): void {\n applyWrite(SELECTED_INDEX_PROP, () => {\n box.selectRow(row);\n });\n}\n\nfunction clearSelection(box: Gtk.ListBox): void {\n applyWrite(SELECTED_INDEX_PROP, () => {\n box.unselectAll();\n });\n}\n\nfunction applySelectedIndex(box: Gtk.ListBox, state: SelectedIndexState): void {\n const { desired } = state;\n\n if (desired === undefined || selectedRowIndex(box) === desired) {\n return;\n }\n\n if (desired < 0) {\n clearSelection(box);\n\n return;\n }\n\n const row = box.getRowAtIndex(desired);\n\n if (row !== null) {\n selectRowAt(box, row);\n }\n}\n\nfunction scheduleSelectedIndex(box: Gtk.ListBox, state: SelectedIndexState): void {\n if (state.isScheduled) {\n return;\n }\n\n state.isScheduled = true;\n\n queueMicrotask(() => {\n state.isScheduled = false;\n\n if (state.disconnect !== null) {\n applySelectedIndex(box, state);\n }\n });\n}\n\nfunction watchSelectionDrift(box: Gtk.ListBox, state: SelectedIndexState): void {\n if (state.disconnect !== null) {\n return;\n }\n\n const handler = (): undefined => {\n scheduleSelectedIndex(box, state);\n };\n\n box.on(SELECTION_SIGNAL, handler);\n\n state.disconnect = (): void => {\n box.off(SELECTION_SIGNAL, handler);\n };\n}\n\nfunction selectedIndexBehavior(): ElementBehavior<Gtk.ListBox> {\n return {\n deferred: [SELECTED_INDEX_PROP],\n initialize: (): SelectedIndexState => ({ desired: undefined, isScheduled: false, disconnect: null }),\n update: (_box, _prev, next, context) => {\n (context as SelectedIndexState).desired = desiredIndex(next[SELECTED_INDEX_PROP]);\n\n return [SELECTED_INDEX_PROP];\n },\n flush: (box, context) => {\n applySelectedIndex(box, context as SelectedIndexState);\n watchSelectionDrift(box, context as SelectedIndexState);\n },\n teardown: (_box, context) => {\n const state = context as SelectedIndexState;\n state.disconnect?.();\n state.disconnect = null;\n },\n };\n}\n\nconst addMainOption = (application: Gtk.Application, option: MainOption): void => {\n application.addMainOption(\n option.longName,\n option.shortName?.codePointAt(0) ?? 0,\n option.flags ?? GLib.OptionFlags.NONE,\n option.arg ?? GLib.OptionArg.NONE,\n option.description,\n option.argDescription ?? null,\n );\n};\n\nconst buildMenu = (items: MenuItem[]): Gio.Menu => {\n const menu = Gio.Menu.new();\n\n for (const item of items) {\n appendMenuItem(menu, item);\n }\n\n return menu;\n};\n\nfunction appendMenuItem(menu: Gio.Menu, item: MenuItem): void {\n const label = item.label ?? null;\n\n if (item.submenu !== undefined) {\n menu.appendSubmenu(label, buildMenu(item.submenu));\n\n return;\n }\n\n if (item.section !== undefined) {\n menu.appendSection(label, buildMenu(item.section));\n\n return;\n }\n\n menu.append(label, item.action ?? null);\n}\n\nregisterElements(BUILTIN_ELEMENTS);\nregisterElements(BUILTIN_BEHAVIORS);\n"]}
|
package/dist/element-config.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element-config.js","sourceRoot":"","sources":["../src/element-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,QAAQ,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAElF,MAAM,kBAAkB,GAAa;IACjC,gBAAgB;IAChB,WAAW;IACX,gBAAgB;IAChB,aAAa;IACb,aAAa;IACb,iBAAiB;IACjB,UAAU;IACV,oBAAoB;IACpB,eAAe;IACf,eAAe;IACf,aAAa;IACb,eAAe;IACf,YAAY;IACZ,eAAe;IACf,aAAa;IACb,mBAAmB;IACnB,cAAc;IACd,iBAAiB;IACjB,aAAa;IACb,iBAAiB;CACpB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,gBAAgB,GAAkC;IACpD,GAAG,QAAQ,CAAC,kBAAkB,EAAE;QAC5B,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC;QAChC,YAAY,EAAE,CAAC,OAAO,CAAC;KAC1B,CAAC;IACF,GAAG,QAAQ,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC,EAAE;QAC1C,KAAK,EAAE,QAAQ,CAAC,mBAAmB,CAAC;KACvC,CAAC;IACF,SAAS,EAAE;QACP,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC;QAChC,SAAS,EAAE,QAAQ,CAAC,uBAAuB,CAAC;QAC5C,YAAY,EAAE,CAAC,OAAO,CAAC;KAC1B;IACD,oBAAoB,EAAE;QAClB,SAAS,EAAE,QAAQ,CAAC,kCAAkC,CAAC;KAC1D;IACD,QAAQ,EAAE;QACN,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC;KACnC;IACD,aAAa,EAAE;QACX,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC;KACnC;IACD,UAAU,EAAE;QACR,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC;KACnC;IACD,kBAAkB,EAAE;QAChB,KAAK,EAAE,QAAQ,CAAC,yBAAyB,CAAC;KAC7C;IACD,kBAAkB,EAAE;QAChB,MAAM,EAAE,IAAI;KACf;IACD,mBAAmB,EAAE;QACjB,MAAM,EAAE,IAAI;KACf;IACD,qBAAqB,EAAE;QACnB,MAAM,EAAE,IAAI;KACf;IACD,YAAY,EAAE;QACV,MAAM,EAAE,IAAI;KACf;IACD,eAAe,EAAE;QACb,MAAM,EAAE,IAAI;KACf;IACD,YAAY,EAAE;QACV,KAAK,EAAE,QAAQ,CAAC,kBAAkB,CAAC;KACtC;IACD,SAAS,EAAE;QACP,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC;KACpC;IACD,MAAM,EAAE;QACJ,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC;KACnC;IACD,UAAU,EAAE;QACR,KAAK,EAAE,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"element-config.js","sourceRoot":"","sources":["../src/element-config.ts"],"names":[],"mappings":"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","sourcesContent":["import { type ElementConfig, forTypes, internal } from \"./reconciler/registry.js\";\n\nconst SINGLE_CHILD_TYPES: string[] = [\n \"GtkAspectFrame\",\n \"GtkButton\",\n \"GtkCheckButton\",\n \"GtkDragIcon\",\n \"GtkExpander\",\n \"GtkFlowBoxChild\",\n \"GtkFrame\",\n \"GtkGraphicsOffload\",\n \"GtkListBoxRow\",\n \"GtkListHeader\",\n \"GtkListItem\",\n \"GtkMenuButton\",\n \"GtkPopover\",\n \"GtkPopoverBin\",\n \"GtkRevealer\",\n \"GtkScrolledWindow\",\n \"GtkSearchBar\",\n \"GtkTreeExpander\",\n \"GtkViewport\",\n \"GtkWindowHandle\",\n];\n\n/**\n * The framework's own element configuration for the GTK types it customizes: the base props interface each\n * generated element extends, the component that wraps it, the GObject properties left out of its generated\n * props, and whether its GObject is created by its parent. Carries no behaviors, so importing it never\n * reaches the GObject bindings.\n */\nconst BUILTIN_ELEMENTS: Record<string, ElementConfig> = {\n ...forTypes(SINGLE_CHILD_TYPES, {\n props: internal(\"ChildrenProps\"),\n omittedProps: [\"child\"],\n }),\n ...forTypes([\"GtkHeaderBar\", \"GtkActionBar\"], {\n props: internal(\"GtkHeaderBarProps\"),\n }),\n GtkWindow: {\n props: internal(\"ChildrenProps\"),\n component: internal(\"createWindowComponent\"),\n omittedProps: [\"child\"],\n },\n GtkApplicationWindow: {\n component: internal(\"createApplicationWindowComponent\"),\n },\n GtkLabel: {\n props: internal(\"ChildrenProps\"),\n },\n GtkTextBuffer: {\n props: internal(\"ChildrenProps\"),\n },\n GtkTextTag: {\n props: internal(\"ChildrenProps\"),\n },\n GtkTextChildAnchor: {\n props: internal(\"GtkTextChildAnchorProps\"),\n },\n GtkGridLayoutChild: {\n isLazy: true,\n },\n GtkFixedLayoutChild: {\n isLazy: true,\n },\n GtkOverlayLayoutChild: {\n isLazy: true,\n },\n GtkStackPage: {\n isLazy: true,\n },\n GtkNotebookPage: {\n isLazy: true,\n },\n GActionGroup: {\n props: internal(\"ActionGroupProps\"),\n },\n GtkWidget: {\n props: internal(\"GtkWidgetProps\"),\n },\n GtkBox: {\n props: internal(\"ChildrenProps\"),\n },\n GtkListBox: {\n props: internal(\"GtkListBoxProps\"),\n },\n GtkFlowBox: {\n props: internal(\"ChildrenProps\"),\n },\n GtkOverlay: {\n props: internal(\"GtkOverlayProps\"),\n omittedProps: [\"child\"],\n },\n GtkShortcutController: {\n props: internal(\"GtkShortcutControllerProps\"),\n },\n GtkTextView: {\n props: internal(\"ChildrenProps\"),\n },\n GActionMap: {\n props: internal(\"ActionMapProps\"),\n },\n GMenu: {\n props: internal(\"MenuProps\"),\n },\n GtkColumnView: {\n props: internal(\"ChildrenProps\"),\n },\n GtkGrid: {\n props: internal(\"ChildrenProps\"),\n },\n GtkFixed: {\n props: internal(\"ChildrenProps\"),\n },\n GtkSizeGroup: {\n props: internal(\"GtkSizeGroupProps\"),\n component: internal(\"createPortaledComponent\"),\n },\n GtkConstraintLayout: {\n props: internal(\"GtkConstraintLayoutProps\"),\n },\n GtkStack: {\n props: internal(\"ChildrenProps\"),\n },\n GtkNotebook: {\n props: internal(\"ChildrenProps\"),\n },\n GtkApplication: {\n props: internal(\"GtkApplicationProps\"),\n component: internal(\"createApplicationComponent\"),\n },\n GtkAboutDialog: {\n props: internal(\"GtkAboutDialogProps\"),\n },\n GtkScale: {\n props: internal(\"GtkScaleProps\"),\n },\n GtkCalendar: {\n props: internal(\"GtkCalendarProps\"),\n },\n GtkLevelBar: {\n props: internal(\"GtkLevelBarProps\"),\n },\n GtkDropTarget: {\n props: internal(\"GtkDropTargetProps\"),\n },\n GtkDrawingArea: {\n props: internal(\"GtkDrawingAreaProps\"),\n },\n GtkDragSource: {\n props: internal(\"GtkDragSourceProps\"),\n },\n};\n\nexport { SINGLE_CHILD_TYPES, BUILTIN_ELEMENTS };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-bind-setting.d.ts","sourceRoot":"","sources":["../../src/hooks/use-bind-setting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAGpC,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"use-bind-setting.d.ts","sourceRoot":"","sources":["../../src/hooks/use-bind-setting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAGpC,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,OAAO,EAAE,KAAK,OAAO,EAAkB,MAAM,sBAAsB,CAAC;AAGpE,0CAA0C;AAC1C,KAAK,qBAAqB,CAAC,CAAC,SAAS,kBAAkB,IAAI;IACvD,iDAAiD;IACjD,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAC1B,kCAAkC;IAClC,GAAG,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;IACtB,oGAAoG;IACpG,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB,kGAAkG;IAClG,KAAK,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC;CACjC,CAAC;AAEF;;;GAGG;AACH,iBAAS,cAAc,CAAC,CAAC,SAAS,kBAAkB,EAAE,EAClD,MAAM,EACN,GAAG,EACH,MAAM,EACN,QAAQ,EACR,KAAqC,GACxC,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,IAAI,CAiBjC;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as Gio from "@gtkx/gi/gio";
|
|
2
2
|
import { kebabCase } from "@gtkx/utils";
|
|
3
3
|
import { useLayoutEffect } from "react";
|
|
4
|
+
import { getPropertyName } from "../reconciler/metadata.js";
|
|
4
5
|
import { resolveRefProp } from "../utils/ref-prop.js";
|
|
5
6
|
import { useSettings } from "./use-setting.js";
|
|
6
7
|
/**
|
|
@@ -9,17 +10,17 @@ import { useSettings } from "./use-setting.js";
|
|
|
9
10
|
*/
|
|
10
11
|
function useBindSetting({ schema, key, object, property, flags = Gio.SettingsBindFlags.DEFAULT, }) {
|
|
11
12
|
const settings = useSettings(schema);
|
|
12
|
-
const propertyName = kebabCase(property);
|
|
13
13
|
useLayoutEffect(() => {
|
|
14
14
|
const resolved = resolveRefProp(object);
|
|
15
15
|
if (!resolved) {
|
|
16
16
|
return;
|
|
17
17
|
}
|
|
18
|
+
const propertyName = getPropertyName(resolved, property) ?? kebabCase(property);
|
|
18
19
|
settings.bind(key, resolved, propertyName, flags);
|
|
19
20
|
return () => {
|
|
20
21
|
Gio.Settings.unbind(resolved, propertyName);
|
|
21
22
|
};
|
|
22
|
-
}, [settings, key, object,
|
|
23
|
+
}, [settings, key, object, property, flags]);
|
|
23
24
|
}
|
|
24
25
|
export { useBindSetting };
|
|
25
26
|
//# sourceMappingURL=use-bind-setting.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-bind-setting.js","sourceRoot":"","sources":["../../src/hooks/use-bind-setting.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAExC,OAAO,EAAgB,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAgB/C;;;GAGG;AACH,SAAS,cAAc,CAA+B,EAClD,MAAM,EACN,GAAG,EACH,MAAM,EACN,QAAQ,EACR,KAAK,GAAG,GAAG,CAAC,iBAAiB,CAAC,OAAO,GACd;IACvB,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"use-bind-setting.js","sourceRoot":"","sources":["../../src/hooks/use-bind-setting.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAgB,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAgB/C;;;GAGG;AACH,SAAS,cAAc,CAA+B,EAClD,MAAM,EACN,GAAG,EACH,MAAM,EACN,QAAQ,EACR,KAAK,GAAG,GAAG,CAAC,iBAAiB,CAAC,OAAO,GACd;IACvB,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAErC,eAAe,CAAC,GAAG,EAAE;QACjB,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QAExC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO;QACX,CAAC;QAED,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC;QAChF,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QAElD,OAAO,GAAG,EAAE;YACR,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAChD,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,CAAC","sourcesContent":["import type * as GObject from \"@gtkx/gi/gobject\";\nimport * as Gio from \"@gtkx/gi/gio\";\nimport { kebabCase } from \"@gtkx/utils\";\nimport { useLayoutEffect } from \"react\";\nimport type { SettingsSchema, SettingsSchemaKeys } from \"../utils/settings.js\";\nimport { getPropertyName } from \"../reconciler/metadata.js\";\nimport { type RefProp, resolveRefProp } from \"../utils/ref-prop.js\";\nimport { useSettings } from \"./use-setting.js\";\n\n/** Options for {@link useBindSetting}. */\ntype UseBindSettingOptions<K extends SettingsSchemaKeys> = {\n /** Schema the settings object is opened from. */\n schema: SettingsSchema<K>;\n /** Key of that schema to bind. */\n key: keyof K & string;\n /** Object holding the property, given directly or as a ref; nothing is bound while it is absent. */\n object: RefProp<GObject.Object>;\n /** camelCase name of the property to keep in sync with the key. */\n property: string;\n /** Direction and conversion behavior of the bind; defaults to `Gio.SettingsBindFlags.DEFAULT`. */\n flags?: Gio.SettingsBindFlags;\n};\n\n/**\n * Binds a GSettings key to a property of a GObject, keeping the two in sync until the component unmounts.\n * `property` is given in camelCase, and `flags` defaults to `Gio.SettingsBindFlags.DEFAULT`, a two-way bind.\n */\nfunction useBindSetting<K extends SettingsSchemaKeys>({\n schema,\n key,\n object,\n property,\n flags = Gio.SettingsBindFlags.DEFAULT,\n}: UseBindSettingOptions<K>): void {\n const settings = useSettings(schema);\n\n useLayoutEffect(() => {\n const resolved = resolveRefProp(object);\n\n if (!resolved) {\n return;\n }\n\n const propertyName = getPropertyName(resolved, property) ?? kebabCase(property);\n settings.bind(key, resolved, propertyName, flags);\n\n return () => {\n Gio.Settings.unbind(resolved, propertyName);\n };\n }, [settings, key, object, property, flags]);\n}\n\nexport { useBindSetting };\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type * as GObject from "@gtkx/gi/gobject";
|
|
2
|
-
import type
|
|
2
|
+
import { type RefProp } from "../utils/ref-prop.js";
|
|
3
3
|
/** The property map `T` declares, from camelCase property name to value type. */
|
|
4
4
|
type Properties<T extends GObject.Object> = NonNullable<T["__properties__"]>;
|
|
5
5
|
/** Every property `T` declares that is also readable off the instance, in camelCase. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-property.d.ts","sourceRoot":"","sources":["../../src/hooks/use-property.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"use-property.d.ts","sourceRoot":"","sources":["../../src/hooks/use-property.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAAE,KAAK,OAAO,EAAkB,MAAM,sBAAsB,CAAC;AAGpE,iFAAiF;AACjF,KAAK,UAAU,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC7E,wFAAwF;AACxF,KAAK,YAAY,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,IAAI,MAAM,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAE5E;;;;;GAKG;AACH,iBAAS,WAAW,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EACpE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAClB,YAAY,EAAE,CAAC,GAAG,MAAM,GACzB,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAKlB;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { kebabCase } from "@gtkx/utils";
|
|
2
|
+
import { getPropertyName } from "../reconciler/metadata.js";
|
|
3
|
+
import { resolveRefProp } from "../utils/ref-prop.js";
|
|
2
4
|
import { useObjectValue } from "./use-object-value.js";
|
|
3
5
|
/**
|
|
4
6
|
* Subscribes to a GObject property and returns its current value, re-rendering when the property changes.
|
|
@@ -7,7 +9,9 @@ import { useObjectValue } from "./use-object-value.js";
|
|
|
7
9
|
* @returns The current value, or `undefined` while the object is null or an unresolved ref.
|
|
8
10
|
*/
|
|
9
11
|
function useProperty(object, propertyName) {
|
|
10
|
-
|
|
12
|
+
const resolved = resolveRefProp(object);
|
|
13
|
+
const name = (resolved === null ? undefined : getPropertyName(resolved, propertyName)) ?? kebabCase(propertyName);
|
|
14
|
+
return useObjectValue(object, `notify::${name}`, (obj) => obj?.[propertyName]);
|
|
11
15
|
}
|
|
12
16
|
export { useProperty };
|
|
13
17
|
//# sourceMappingURL=use-property.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-property.js","sourceRoot":"","sources":["../../src/hooks/use-property.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"use-property.js","sourceRoot":"","sources":["../../src/hooks/use-property.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAgB,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAOvD;;;;;GAKG;AACH,SAAS,WAAW,CAChB,MAAkB,EAClB,YAAwB;IAExB,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,IAAI,SAAS,CAAC,YAAY,CAAC,CAAC;IAElH,OAAO,cAAc,CAAC,MAAM,EAAE,WAAW,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,CAAC","sourcesContent":["import type * as GObject from \"@gtkx/gi/gobject\";\nimport { kebabCase } from \"@gtkx/utils\";\nimport { getPropertyName } from \"../reconciler/metadata.js\";\nimport { type RefProp, resolveRefProp } from \"../utils/ref-prop.js\";\nimport { useObjectValue } from \"./use-object-value.js\";\n\n/** The property map `T` declares, from camelCase property name to value type. */\ntype Properties<T extends GObject.Object> = NonNullable<T[\"__properties__\"]>;\n/** Every property `T` declares that is also readable off the instance, in camelCase. */\ntype PropertyName<T extends GObject.Object> = keyof Properties<T> & keyof T;\n\n/**\n * Subscribes to a GObject property and returns its current value, re-rendering when the property changes.\n *\n * @param propertyName The camelCase name of a readable property on the object.\n * @returns The current value, or `undefined` while the object is null or an unresolved ref.\n */\nfunction useProperty<T extends GObject.Object, P extends PropertyName<T>>(\n object: RefProp<T>,\n propertyName: P & string,\n): T[P] | undefined {\n const resolved = resolveRefProp(object);\n const name = (resolved === null ? undefined : getPropertyName(resolved, propertyName)) ?? kebabCase(propertyName);\n\n return useObjectValue(object, `notify::${name}`, (obj) => obj?.[propertyName]);\n}\n\nexport { useProperty };\n"]}
|