@gtkx/react 1.0.0-rc.1 → 1.0.0-rc.2
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/dist/adw/config.d.ts +2 -0
- package/dist/adw/config.d.ts.map +1 -0
- package/dist/adw/config.js +2 -0
- package/dist/adw/config.js.map +1 -0
- package/dist/{libraries/adw → adw}/dialog.d.ts +2 -2
- package/dist/adw/dialog.d.ts.map +1 -0
- package/dist/adw/dialog.js +25 -0
- package/dist/adw/dialog.js.map +1 -0
- package/dist/adw/element-behaviors.d.ts +2 -0
- package/dist/adw/element-behaviors.d.ts.map +1 -0
- package/dist/adw/element-behaviors.js +299 -0
- package/dist/adw/element-behaviors.js.map +1 -0
- package/dist/adw/element-config.d.ts +9 -0
- package/dist/adw/element-config.d.ts.map +1 -0
- package/dist/adw/element-config.js +137 -0
- package/dist/adw/element-config.js.map +1 -0
- package/dist/adw/index.d.ts +4 -0
- package/dist/adw/index.d.ts.map +1 -0
- package/dist/adw/index.js +3 -0
- package/dist/adw/index.js.map +1 -0
- package/dist/adw/prop-types.d.ts +29 -0
- package/dist/adw/prop-types.d.ts.map +1 -0
- package/dist/adw/prop-types.js +2 -0
- package/dist/adw/prop-types.js.map +1 -0
- package/dist/bootstrap.d.ts +2 -0
- package/dist/bootstrap.d.ts.map +1 -0
- package/dist/bootstrap.js +5 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/components/application.d.ts +2 -2
- package/dist/components/application.d.ts.map +1 -1
- package/dist/components/application.js +31 -18
- package/dist/components/application.js.map +1 -1
- package/dist/components/element.d.ts +6 -0
- package/dist/components/element.d.ts.map +1 -0
- package/dist/components/element.js +29 -0
- package/dist/components/element.js.map +1 -0
- package/dist/components/window.d.ts +2 -2
- package/dist/components/window.d.ts.map +1 -1
- package/dist/components/window.js +10 -11
- package/dist/components/window.js.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +3 -0
- package/dist/config.js.map +1 -0
- package/dist/element-behaviors.d.ts +2 -0
- package/dist/element-behaviors.d.ts.map +1 -0
- package/dist/element-behaviors.js +348 -0
- package/dist/element-behaviors.js.map +1 -0
- package/dist/element-config.d.ts +10 -0
- package/dist/element-config.d.ts.map +1 -0
- package/dist/element-config.js +146 -0
- package/dist/element-config.js.map +1 -0
- package/dist/hooks/use-application.d.ts +4 -3
- package/dist/hooks/use-application.d.ts.map +1 -1
- package/dist/hooks/use-application.js +5 -4
- package/dist/hooks/use-application.js.map +1 -1
- package/dist/hooks/use-bind-setting.d.ts +21 -4
- package/dist/hooks/use-bind-setting.d.ts.map +1 -1
- package/dist/hooks/use-bind-setting.js +27 -16
- package/dist/hooks/use-bind-setting.js.map +1 -1
- package/dist/hooks/use-merged-refs.d.ts +8 -0
- package/dist/hooks/use-merged-refs.d.ts.map +1 -0
- package/dist/hooks/use-merged-refs.js +48 -0
- package/dist/hooks/use-merged-refs.js.map +1 -0
- package/dist/hooks/use-object-value.d.ts +3 -2
- package/dist/hooks/use-object-value.d.ts.map +1 -1
- package/dist/hooks/use-object-value.js +18 -21
- package/dist/hooks/use-object-value.js.map +1 -1
- package/dist/hooks/use-parent-window.d.ts +3 -2
- package/dist/hooks/use-parent-window.d.ts.map +1 -1
- package/dist/hooks/use-parent-window.js +3 -2
- package/dist/hooks/use-parent-window.js.map +1 -1
- package/dist/hooks/use-property.d.ts +5 -5
- package/dist/hooks/use-property.d.ts.map +1 -1
- package/dist/hooks/use-property.js +4 -3
- package/dist/hooks/use-property.js.map +1 -1
- package/dist/hooks/use-setting.d.ts +5 -16
- package/dist/hooks/use-setting.d.ts.map +1 -1
- package/dist/hooks/use-setting.js +16 -11
- package/dist/hooks/use-setting.js.map +1 -1
- package/dist/hooks/use-signal.d.ts +10 -7
- package/dist/hooks/use-signal.d.ts.map +1 -1
- package/dist/hooks/use-signal.js +29 -18
- package/dist/hooks/use-signal.js.map +1 -1
- package/dist/index.d.ts +7 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +6 -7
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +5 -7
- package/dist/internal.js.map +1 -1
- package/dist/prop-types.d.ts +110 -0
- package/dist/prop-types.d.ts.map +1 -0
- package/dist/prop-types.js +2 -0
- package/dist/prop-types.js.map +1 -0
- package/dist/reconciler/apply-props.d.ts +10 -7
- package/dist/reconciler/apply-props.d.ts.map +1 -1
- package/dist/reconciler/apply-props.js +182 -84
- package/dist/reconciler/apply-props.js.map +1 -1
- package/dist/reconciler/behaviors.d.ts +59 -0
- package/dist/reconciler/behaviors.d.ts.map +1 -0
- package/dist/reconciler/behaviors.js +172 -0
- package/dist/reconciler/behaviors.js.map +1 -0
- package/dist/reconciler/child-routing.d.ts +5 -0
- package/dist/reconciler/child-routing.d.ts.map +1 -0
- package/dist/reconciler/child-routing.js +156 -0
- package/dist/reconciler/child-routing.js.map +1 -0
- package/dist/reconciler/host-config.d.ts +8 -12
- package/dist/reconciler/host-config.d.ts.map +1 -1
- package/dist/reconciler/host-config.js +175 -270
- package/dist/reconciler/host-config.js.map +1 -1
- package/dist/reconciler/instance.d.ts +4 -5
- package/dist/reconciler/instance.d.ts.map +1 -1
- package/dist/reconciler/instance.js +44 -22
- package/dist/reconciler/instance.js.map +1 -1
- package/dist/reconciler/metadata.d.ts +17 -0
- package/dist/reconciler/metadata.d.ts.map +1 -0
- package/dist/reconciler/metadata.js +82 -0
- package/dist/reconciler/metadata.js.map +1 -0
- package/dist/reconciler/node.d.ts +76 -0
- package/dist/reconciler/node.d.ts.map +1 -0
- package/dist/reconciler/node.js +53 -0
- package/dist/reconciler/node.js.map +1 -0
- package/dist/reconciler/placement.d.ts +5 -0
- package/dist/reconciler/placement.d.ts.map +1 -0
- package/dist/reconciler/placement.js +175 -0
- package/dist/reconciler/placement.js.map +1 -0
- package/dist/reconciler/registry.d.ts +92 -0
- package/dist/reconciler/registry.d.ts.map +1 -0
- package/dist/reconciler/registry.js +64 -0
- package/dist/reconciler/registry.js.map +1 -0
- package/dist/reconciler/root-element.d.ts +9 -12
- package/dist/reconciler/root-element.d.ts.map +1 -1
- package/dist/reconciler/root-element.js +6 -6
- package/dist/reconciler/root-element.js.map +1 -1
- package/dist/reconciler/root.d.ts +56 -0
- package/dist/reconciler/root.d.ts.map +1 -0
- package/dist/reconciler/root.js +109 -0
- package/dist/reconciler/root.js.map +1 -0
- package/dist/reconciler/signals.d.ts +10 -0
- package/dist/reconciler/signals.d.ts.map +1 -0
- package/dist/reconciler/signals.js +70 -0
- package/dist/reconciler/signals.js.map +1 -0
- package/dist/reconciler/text.d.ts +19 -0
- package/dist/reconciler/text.d.ts.map +1 -0
- package/dist/reconciler/text.js +276 -0
- package/dist/reconciler/text.js.map +1 -0
- package/dist/utils/accessible-metadata.d.ts +11 -4
- package/dist/utils/accessible-metadata.d.ts.map +1 -1
- package/dist/utils/accessible-metadata.js +20 -17
- package/dist/utils/accessible-metadata.js.map +1 -1
- package/dist/{reconciler/accessible.d.ts → utils/accessible-props.d.ts} +7 -6
- package/dist/utils/accessible-props.d.ts.map +1 -0
- package/dist/utils/accessible-props.js +181 -0
- package/dist/utils/accessible-props.js.map +1 -0
- package/dist/utils/ref-prop.d.ts +15 -0
- package/dist/utils/ref-prop.d.ts.map +1 -0
- package/dist/utils/ref-prop.js +18 -0
- package/dist/utils/ref-prop.js.map +1 -0
- package/dist/utils/settings.d.ts +17 -0
- package/dist/utils/settings.d.ts.map +1 -0
- package/dist/utils/settings.js +37 -0
- package/dist/utils/settings.js.map +1 -0
- package/dist/utils/variant.d.ts +57 -0
- package/dist/utils/variant.d.ts.map +1 -0
- package/dist/utils/variant.js +197 -0
- package/dist/utils/variant.js.map +1 -0
- package/env.d.ts +9 -0
- package/package.json +36 -11
- package/src/adw/config.ts +1 -0
- package/src/adw/dialog.tsx +35 -0
- package/src/adw/element-behaviors.ts +379 -0
- package/src/adw/element-config.ts +140 -0
- package/src/adw/index.ts +4 -0
- package/src/adw/prop-types.ts +42 -0
- package/src/bootstrap.ts +5 -0
- package/src/components/application.tsx +42 -23
- package/src/components/element.tsx +47 -0
- package/src/components/window.tsx +12 -13
- package/src/config.ts +3 -0
- package/src/element-behaviors.ts +424 -0
- package/src/element-config.ts +148 -0
- package/src/env.d.ts +1 -0
- package/src/hooks/use-application.ts +6 -4
- package/src/hooks/use-bind-setting.ts +47 -31
- package/src/hooks/use-merged-refs.ts +64 -0
- package/src/hooks/use-object-value.ts +27 -23
- package/src/hooks/use-parent-window.ts +4 -2
- package/src/hooks/use-property.ts +11 -10
- package/src/hooks/use-setting.ts +20 -33
- package/src/hooks/use-signal.ts +37 -48
- package/src/index.ts +7 -8
- package/src/internal.ts +7 -18
- package/src/prop-types.ts +142 -0
- package/src/reconciler/apply-props.ts +233 -85
- package/src/reconciler/behaviors.ts +324 -0
- package/src/reconciler/child-routing.ts +202 -0
- package/src/reconciler/host-config.ts +239 -366
- package/src/reconciler/instance.ts +76 -24
- package/src/reconciler/metadata.ts +119 -0
- package/src/reconciler/node.ts +161 -0
- package/src/reconciler/placement.ts +255 -0
- package/src/reconciler/registry.ts +161 -0
- package/src/reconciler/root-element.ts +9 -11
- package/src/reconciler/root.ts +175 -0
- package/src/reconciler/signals.ts +113 -0
- package/src/reconciler/text.ts +407 -0
- package/src/utils/accessible-metadata.ts +23 -18
- package/src/utils/accessible-props.ts +279 -0
- package/src/utils/ref-prop.ts +30 -0
- package/src/utils/settings.ts +69 -0
- package/src/utils/variant.ts +368 -0
- package/dist/hooks/use-merge-refs.d.ts +0 -3
- package/dist/hooks/use-merge-refs.d.ts.map +0 -1
- package/dist/hooks/use-merge-refs.js +0 -48
- package/dist/hooks/use-merge-refs.js.map +0 -1
- package/dist/hooks/use-object-attachment.d.ts +0 -10
- package/dist/hooks/use-object-attachment.d.ts.map +0 -1
- package/dist/hooks/use-object-attachment.js +0 -24
- package/dist/hooks/use-object-attachment.js.map +0 -1
- package/dist/libraries/adw/dialog.d.ts.map +0 -1
- package/dist/libraries/adw/dialog.js +0 -25
- package/dist/libraries/adw/dialog.js.map +0 -1
- package/dist/libraries/adw/index.d.ts +0 -2
- package/dist/libraries/adw/index.d.ts.map +0 -1
- package/dist/libraries/adw/index.js +0 -2
- package/dist/libraries/adw/index.js.map +0 -1
- package/dist/reconciler/accessible.d.ts.map +0 -1
- package/dist/reconciler/accessible.js +0 -143
- package/dist/reconciler/accessible.js.map +0 -1
- package/dist/reconciler/commit-flush.d.ts +0 -3
- package/dist/reconciler/commit-flush.d.ts.map +0 -1
- package/dist/reconciler/commit-flush.js +0 -13
- package/dist/reconciler/commit-flush.js.map +0 -1
- package/dist/reconciler/container-attach.d.ts +0 -10
- package/dist/reconciler/container-attach.d.ts.map +0 -1
- package/dist/reconciler/container-attach.js +0 -216
- package/dist/reconciler/container-attach.js.map +0 -1
- package/dist/reconciler/content-rebuild.d.ts +0 -3
- package/dist/reconciler/content-rebuild.d.ts.map +0 -1
- package/dist/reconciler/content-rebuild.js +0 -15
- package/dist/reconciler/content-rebuild.js.map +0 -1
- package/dist/reconciler/dispatch.d.ts +0 -6
- package/dist/reconciler/dispatch.d.ts.map +0 -1
- package/dist/reconciler/dispatch.js +0 -61
- package/dist/reconciler/dispatch.js.map +0 -1
- package/dist/reconciler/element-prop-appliers.d.ts +0 -5
- package/dist/reconciler/element-prop-appliers.d.ts.map +0 -1
- package/dist/reconciler/element-prop-appliers.js +0 -104
- package/dist/reconciler/element-prop-appliers.js.map +0 -1
- package/dist/reconciler/element-props.d.ts +0 -25
- package/dist/reconciler/element-props.d.ts.map +0 -1
- package/dist/reconciler/element-props.js +0 -157
- package/dist/reconciler/element-props.js.map +0 -1
- package/dist/reconciler/label-text-rebuild.d.ts +0 -3
- package/dist/reconciler/label-text-rebuild.d.ts.map +0 -1
- package/dist/reconciler/label-text-rebuild.js +0 -22
- package/dist/reconciler/label-text-rebuild.js.map +0 -1
- package/dist/reconciler/portal.d.ts +0 -11
- package/dist/reconciler/portal.d.ts.map +0 -1
- package/dist/reconciler/portal.js +0 -20
- package/dist/reconciler/portal.js.map +0 -1
- package/dist/reconciler/reconciler-error-handler.d.ts +0 -7
- package/dist/reconciler/reconciler-error-handler.d.ts.map +0 -1
- package/dist/reconciler/reconciler-error-handler.js +0 -24
- package/dist/reconciler/reconciler-error-handler.js.map +0 -1
- package/dist/reconciler/reconciler-root.d.ts +0 -19
- package/dist/reconciler/reconciler-root.d.ts.map +0 -1
- package/dist/reconciler/reconciler-root.js +0 -24
- package/dist/reconciler/reconciler-root.js.map +0 -1
- package/dist/reconciler/reconciler.d.ts +0 -3
- package/dist/reconciler/reconciler.d.ts.map +0 -1
- package/dist/reconciler/reconciler.js +0 -12
- package/dist/reconciler/reconciler.js.map +0 -1
- package/dist/reconciler/render.d.ts +0 -23
- package/dist/reconciler/render.d.ts.map +0 -1
- package/dist/reconciler/render.js +0 -46
- package/dist/reconciler/render.js.map +0 -1
- package/dist/reconciler/signal-store.d.ts +0 -22
- package/dist/reconciler/signal-store.d.ts.map +0 -1
- package/dist/reconciler/signal-store.js +0 -84
- package/dist/reconciler/signal-store.js.map +0 -1
- package/dist/reconciler/state.d.ts +0 -36
- package/dist/reconciler/state.d.ts.map +0 -1
- package/dist/reconciler/state.js +0 -38
- package/dist/reconciler/state.js.map +0 -1
- package/dist/reconciler/text-buffer-controller.d.ts +0 -17
- package/dist/reconciler/text-buffer-controller.d.ts.map +0 -1
- package/dist/reconciler/text-buffer-controller.js +0 -102
- package/dist/reconciler/text-buffer-controller.js.map +0 -1
- package/dist/reconciler/text-buffer-rebuild.d.ts +0 -3
- package/dist/reconciler/text-buffer-rebuild.d.ts.map +0 -1
- package/dist/reconciler/text-buffer-rebuild.js +0 -7
- package/dist/reconciler/text-buffer-rebuild.js.map +0 -1
- package/dist/reconciler/text-node.d.ts +0 -7
- package/dist/reconciler/text-node.d.ts.map +0 -1
- package/dist/reconciler/text-node.js +0 -8
- package/dist/reconciler/text-node.js.map +0 -1
- package/dist/reconciler/types.d.ts +0 -5
- package/dist/reconciler/types.d.ts.map +0 -1
- package/dist/reconciler/types.js +0 -2
- package/dist/reconciler/types.js.map +0 -1
- package/dist/reconciler/visibility.d.ts +0 -6
- package/dist/reconciler/visibility.d.ts.map +0 -1
- package/dist/reconciler/visibility.js +0 -57
- package/dist/reconciler/visibility.js.map +0 -1
- package/dist/reconciler/wrapper-apply.d.ts +0 -6
- package/dist/reconciler/wrapper-apply.d.ts.map +0 -1
- package/dist/reconciler/wrapper-apply.js +0 -287
- package/dist/reconciler/wrapper-apply.js.map +0 -1
- package/dist/reconciler/wrapper-content.d.ts +0 -8
- package/dist/reconciler/wrapper-content.d.ts.map +0 -1
- package/dist/reconciler/wrapper-content.js +0 -19
- package/dist/reconciler/wrapper-content.js.map +0 -1
- package/dist/reconciler/wrapper-node.d.ts +0 -8
- package/dist/reconciler/wrapper-node.d.ts.map +0 -1
- package/dist/reconciler/wrapper-node.js +0 -4
- package/dist/reconciler/wrapper-node.js.map +0 -1
- package/dist/reconciler/wrapper-protocol.d.ts +0 -13
- package/dist/reconciler/wrapper-protocol.d.ts.map +0 -1
- package/dist/reconciler/wrapper-protocol.js +0 -20
- package/dist/reconciler/wrapper-protocol.js.map +0 -1
- package/dist/utils/create-element-component.d.ts +0 -4
- package/dist/utils/create-element-component.d.ts.map +0 -1
- package/dist/utils/create-element-component.js +0 -54
- package/dist/utils/create-element-component.js.map +0 -1
- package/dist/utils/gtype.d.ts +0 -16
- package/dist/utils/gtype.d.ts.map +0 -1
- package/dist/utils/gtype.js +0 -127
- package/dist/utils/gtype.js.map +0 -1
- package/dist/utils/notify-name.d.ts +0 -5
- package/dist/utils/notify-name.d.ts.map +0 -1
- package/dist/utils/notify-name.js +0 -6
- package/dist/utils/notify-name.js.map +0 -1
- package/dist/utils/object-prop.d.ts +0 -8
- package/dist/utils/object-prop.d.ts.map +0 -1
- package/dist/utils/object-prop.js +0 -9
- package/dist/utils/object-prop.js.map +0 -1
- package/dist/utils/settings-accessor.d.ts +0 -8
- package/dist/utils/settings-accessor.d.ts.map +0 -1
- package/dist/utils/settings-accessor.js +0 -69
- package/dist/utils/settings-accessor.js.map +0 -1
- package/dist/utils/wrapper-node-jsx.d.ts +0 -32
- package/dist/utils/wrapper-node-jsx.d.ts.map +0 -1
- package/dist/utils/wrapper-node-jsx.js +0 -2
- package/dist/utils/wrapper-node-jsx.js.map +0 -1
- package/src/hooks/use-merge-refs.ts +0 -53
- package/src/hooks/use-object-attachment.ts +0 -35
- package/src/libraries/adw/dialog.tsx +0 -34
- package/src/libraries/adw/index.ts +0 -1
- package/src/reconciler/accessible.ts +0 -232
- package/src/reconciler/commit-flush.ts +0 -13
- package/src/reconciler/container-attach.ts +0 -219
- package/src/reconciler/content-rebuild.ts +0 -19
- package/src/reconciler/dispatch.ts +0 -58
- package/src/reconciler/element-prop-appliers.ts +0 -110
- package/src/reconciler/element-props.ts +0 -192
- package/src/reconciler/label-text-rebuild.ts +0 -26
- package/src/reconciler/portal.ts +0 -28
- package/src/reconciler/reconciler-error-handler.ts +0 -29
- package/src/reconciler/reconciler-root.ts +0 -57
- package/src/reconciler/reconciler.ts +0 -13
- package/src/reconciler/render.ts +0 -61
- package/src/reconciler/signal-store.ts +0 -103
- package/src/reconciler/state.ts +0 -72
- package/src/reconciler/text-buffer-controller.ts +0 -107
- package/src/reconciler/text-buffer-rebuild.ts +0 -12
- package/src/reconciler/text-node.ts +0 -13
- package/src/reconciler/types.ts +0 -6
- package/src/reconciler/visibility.ts +0 -52
- package/src/reconciler/wrapper-apply.ts +0 -308
- package/src/reconciler/wrapper-content.ts +0 -24
- package/src/reconciler/wrapper-node.ts +0 -8
- package/src/reconciler/wrapper-protocol.ts +0 -32
- package/src/utils/create-element-component.ts +0 -77
- package/src/utils/gtype.ts +0 -166
- package/src/utils/notify-name.ts +0 -10
- package/src/utils/object-prop.ts +0 -13
- package/src/utils/settings-accessor.ts +0 -89
- package/src/utils/wrapper-node-jsx.ts +0 -34
|
@@ -1,287 +0,0 @@
|
|
|
1
|
-
import * as GObject from "@gtkx/gi/gobject";
|
|
2
|
-
import * as Gtk from "@gtkx/gi/gtk";
|
|
3
|
-
import { applyProps } from "./apply-props.js";
|
|
4
|
-
import { attachChild, detachChild, getFocusWidget, isDescendantOf, unparentWidget } from "./container-attach.js";
|
|
5
|
-
import { adoptContainerPropFor, nullSetterCurrentHolder, resolveContainerProp, runCall, runCallValue, } from "./element-props.js";
|
|
6
|
-
import { hasWrapperKind, registeredStateOf, registerState, stateOf } from "./state.js";
|
|
7
|
-
import { trackedInstance, trackedWidget, wrapperChildInstances } from "./wrapper-content.js";
|
|
8
|
-
import { CONTAINER_PROP_KIND, LAZY_ELEMENT_KIND, OBJECT_PROP_KIND } from "./wrapper-protocol.js";
|
|
9
|
-
const attachedParent = new WeakMap();
|
|
10
|
-
const scopeFor = (child, extra) => ({
|
|
11
|
-
child,
|
|
12
|
-
props: stateOf(child).props,
|
|
13
|
-
...extra,
|
|
14
|
-
});
|
|
15
|
-
const runRemove = (parent, child, cp) => {
|
|
16
|
-
if (cp.remove !== undefined)
|
|
17
|
-
runCall(parent, cp.remove, [child], scopeFor(child));
|
|
18
|
-
};
|
|
19
|
-
const collectContainerSiblings = (parent, cp) => {
|
|
20
|
-
const siblings = [];
|
|
21
|
-
for (const sibling of stateOf(parent).children) {
|
|
22
|
-
if (!(sibling instanceof GObject.Object) || sibling instanceof Gtk.Widget)
|
|
23
|
-
continue;
|
|
24
|
-
if (resolveContainerProp(parent.__type__, sibling.__type__, undefined) === cp)
|
|
25
|
-
siblings.push(sibling);
|
|
26
|
-
}
|
|
27
|
-
return siblings;
|
|
28
|
-
};
|
|
29
|
-
const insertContainerChildAt = (parent, child, cp, index) => {
|
|
30
|
-
if (cp.insert !== undefined && runCall(parent, cp.insert, [child, index], scopeFor(child, { index }))) {
|
|
31
|
-
attachedParent.set(child, parent);
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
const attachContainerChild = (parent, child, cp, anchor) => {
|
|
35
|
-
const isMove = attachedParent.get(child) === parent;
|
|
36
|
-
if (cp.insert !== undefined && (anchor != null || isMove)) {
|
|
37
|
-
if (isMove)
|
|
38
|
-
runRemove(parent, child, cp);
|
|
39
|
-
const siblings = collectContainerSiblings(parent, cp);
|
|
40
|
-
const index = siblings.indexOf(child);
|
|
41
|
-
insertContainerChildAt(parent, child, cp, index);
|
|
42
|
-
if (!isMove) {
|
|
43
|
-
for (const trailing of siblings.slice(index + 1)) {
|
|
44
|
-
runRemove(parent, trailing, cp);
|
|
45
|
-
insertContainerChildAt(parent, trailing, cp, siblings.indexOf(trailing));
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
if (isMove)
|
|
51
|
-
return;
|
|
52
|
-
if (cp.append !== undefined && runCall(parent, cp.append, [child], scopeFor(child))) {
|
|
53
|
-
attachedParent.set(child, parent);
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
const detachContainerChild = (parent, child, cp) => {
|
|
57
|
-
if (attachedParent.get(child) !== parent)
|
|
58
|
-
return;
|
|
59
|
-
const holder = cp.remove !== undefined ? nullSetterCurrentHolder(parent, cp.remove) : undefined;
|
|
60
|
-
if (holder === undefined || holder === child)
|
|
61
|
-
runRemove(parent, child, cp);
|
|
62
|
-
attachedParent.delete(child);
|
|
63
|
-
};
|
|
64
|
-
const resolveContainerChild = (child, parent) => {
|
|
65
|
-
if (!(child instanceof GObject.Object) || child instanceof Gtk.Widget)
|
|
66
|
-
return null;
|
|
67
|
-
if (!(parent instanceof GObject.Object))
|
|
68
|
-
return null;
|
|
69
|
-
const cp = resolveContainerProp(parent.__type__, child.__type__, undefined);
|
|
70
|
-
return cp === null ? null : { child, parent, cp };
|
|
71
|
-
};
|
|
72
|
-
export const containerChildMapping = (child, parent) => {
|
|
73
|
-
const match = resolveContainerChild(child, parent);
|
|
74
|
-
if (match === null)
|
|
75
|
-
return null;
|
|
76
|
-
return {
|
|
77
|
-
attach: (anchor) => attachContainerChild(match.parent, match.child, match.cp, anchor),
|
|
78
|
-
detach: () => detachContainerChild(match.parent, match.child, match.cp),
|
|
79
|
-
};
|
|
80
|
-
};
|
|
81
|
-
const attachPropChild = (parent, child, propName) => {
|
|
82
|
-
const cp = resolveContainerProp(parent.__type__, child.__type__, propName);
|
|
83
|
-
if (cp !== null)
|
|
84
|
-
attachContainerChild(parent, child, cp, null);
|
|
85
|
-
};
|
|
86
|
-
const detachPropChild = (parent, child, propName) => {
|
|
87
|
-
const cp = resolveContainerProp(parent.__type__, child.__type__, propName);
|
|
88
|
-
if (cp !== null)
|
|
89
|
-
detachContainerChild(parent, child, cp);
|
|
90
|
-
};
|
|
91
|
-
const isRooted = (instance) => instance instanceof Gtk.Widget ? instance.getRoot() !== null : true;
|
|
92
|
-
const rescueFocus = (parent, child) => {
|
|
93
|
-
if (!(parent instanceof Gtk.Widget) || !(child instanceof Gtk.Widget))
|
|
94
|
-
return;
|
|
95
|
-
const focus = getFocusWidget(child);
|
|
96
|
-
if (focus && isDescendantOf(focus, child))
|
|
97
|
-
parent.grabFocus();
|
|
98
|
-
};
|
|
99
|
-
const objectPropState = new WeakMap();
|
|
100
|
-
export const objectPropMapping = (child, parent) => {
|
|
101
|
-
if (!hasWrapperKind(child, OBJECT_PROP_KIND) || !(parent instanceof GObject.Object))
|
|
102
|
-
return null;
|
|
103
|
-
return {
|
|
104
|
-
attach: () => {
|
|
105
|
-
const prop = propNameOf(child);
|
|
106
|
-
if (prop === undefined)
|
|
107
|
-
return;
|
|
108
|
-
const value = trackedInstance(child);
|
|
109
|
-
const state = objectPropState.get(child);
|
|
110
|
-
if (state && state.value === value)
|
|
111
|
-
return;
|
|
112
|
-
Reflect.set(parent, prop, value ?? null);
|
|
113
|
-
if (value)
|
|
114
|
-
objectPropState.set(child, { prop, value });
|
|
115
|
-
else
|
|
116
|
-
objectPropState.delete(child);
|
|
117
|
-
},
|
|
118
|
-
detach: () => {
|
|
119
|
-
const state = objectPropState.get(child);
|
|
120
|
-
objectPropState.delete(child);
|
|
121
|
-
if (!state || !isRooted(parent))
|
|
122
|
-
return;
|
|
123
|
-
rescueFocus(parent, state.value);
|
|
124
|
-
Reflect.set(parent, state.prop, null);
|
|
125
|
-
},
|
|
126
|
-
};
|
|
127
|
-
};
|
|
128
|
-
const sameInstances = (a, b) => a.length === b.length && a.every((instance, index) => instance === b[index]);
|
|
129
|
-
const propNameOf = (node) => {
|
|
130
|
-
const propName = stateOf(node).props.propName;
|
|
131
|
-
return typeof propName === "string" ? propName : undefined;
|
|
132
|
-
};
|
|
133
|
-
const containerPropState = new WeakMap();
|
|
134
|
-
const detachContainerPropChild = (instance, parent, propName) => {
|
|
135
|
-
detachPropChild(parent, instance, propName);
|
|
136
|
-
if (instance instanceof Gtk.Widget && instance.getParent() !== null)
|
|
137
|
-
unparentWidget(instance);
|
|
138
|
-
};
|
|
139
|
-
export const containerPropMapping = (child, parent) => {
|
|
140
|
-
if (!hasWrapperKind(child, CONTAINER_PROP_KIND) || !(parent instanceof GObject.Object))
|
|
141
|
-
return null;
|
|
142
|
-
return {
|
|
143
|
-
attach: () => {
|
|
144
|
-
const propName = propNameOf(child);
|
|
145
|
-
if (propName === undefined)
|
|
146
|
-
return;
|
|
147
|
-
const desired = wrapperChildInstances(child);
|
|
148
|
-
const prev = containerPropState.get(child) ?? [];
|
|
149
|
-
if (sameInstances(prev, desired))
|
|
150
|
-
return;
|
|
151
|
-
for (const instance of prev)
|
|
152
|
-
detachContainerPropChild(instance, parent, propName);
|
|
153
|
-
for (const instance of desired)
|
|
154
|
-
attachPropChild(parent, instance, propName);
|
|
155
|
-
containerPropState.set(child, desired);
|
|
156
|
-
},
|
|
157
|
-
detach: () => {
|
|
158
|
-
const propName = propNameOf(child);
|
|
159
|
-
const instances = containerPropState.get(child) ?? [];
|
|
160
|
-
containerPropState.delete(child);
|
|
161
|
-
if (propName === undefined)
|
|
162
|
-
return;
|
|
163
|
-
for (const instance of instances)
|
|
164
|
-
detachContainerPropChild(instance, parent, propName);
|
|
165
|
-
},
|
|
166
|
-
};
|
|
167
|
-
};
|
|
168
|
-
const lazyState = new WeakMap();
|
|
169
|
-
const freshLazyState = () => ({ content: null, instance: null, appliedProps: {}, ordinal: -1 });
|
|
170
|
-
const RESERVED_LAZY_PROPS = new Set(["children", "ref", "key", "kind"]);
|
|
171
|
-
const lazyPropsOf = (nodeProps) => {
|
|
172
|
-
const built = {};
|
|
173
|
-
for (const [name, value] of Object.entries(nodeProps)) {
|
|
174
|
-
if (RESERVED_LAZY_PROPS.has(name))
|
|
175
|
-
continue;
|
|
176
|
-
built[name] = value;
|
|
177
|
-
}
|
|
178
|
-
return built;
|
|
179
|
-
};
|
|
180
|
-
const lazyOrdinal = (parent, node) => {
|
|
181
|
-
let ordinal = 0;
|
|
182
|
-
for (const sibling of stateOf(parent).children) {
|
|
183
|
-
if (sibling === node)
|
|
184
|
-
return ordinal;
|
|
185
|
-
if (hasWrapperKind(sibling, LAZY_ELEMENT_KIND))
|
|
186
|
-
ordinal++;
|
|
187
|
-
}
|
|
188
|
-
return ordinal;
|
|
189
|
-
};
|
|
190
|
-
const appendLazyContent = (parent, cp, node, content) => {
|
|
191
|
-
let appended;
|
|
192
|
-
if (cp.insert !== undefined) {
|
|
193
|
-
const ordinal = lazyOrdinal(parent, node);
|
|
194
|
-
appended = runCallValue(parent, cp.insert, [content, ordinal], {
|
|
195
|
-
child: content,
|
|
196
|
-
index: ordinal,
|
|
197
|
-
props: stateOf(node).props,
|
|
198
|
-
}).value;
|
|
199
|
-
}
|
|
200
|
-
else if (cp.append !== undefined) {
|
|
201
|
-
appended = runCallValue(parent, cp.append, [content], { child: content, props: stateOf(node).props }).value;
|
|
202
|
-
}
|
|
203
|
-
else {
|
|
204
|
-
attachChild(content, parent);
|
|
205
|
-
}
|
|
206
|
-
const accessor = typeof cp.adopt === "string" ? cp.adopt : undefined;
|
|
207
|
-
const acquired = accessor !== undefined ? runCallValue(parent, accessor, [content], { child: content }).value : appended;
|
|
208
|
-
return acquired instanceof GObject.Object ? acquired : undefined;
|
|
209
|
-
};
|
|
210
|
-
const applyAdoptedProps = (state, node) => {
|
|
211
|
-
if (state.instance === null)
|
|
212
|
-
return;
|
|
213
|
-
const built = lazyPropsOf(stateOf(node).props);
|
|
214
|
-
applyProps(state.instance, state.appliedProps, built, {});
|
|
215
|
-
state.appliedProps = built;
|
|
216
|
-
};
|
|
217
|
-
const releaseLazyContent = (node, state, parent, cp) => {
|
|
218
|
-
const { content, instance } = state;
|
|
219
|
-
if (instance !== null) {
|
|
220
|
-
registeredStateOf(instance)?.signalStore.clear(instance);
|
|
221
|
-
stateOf(node).adoptedInstance = undefined;
|
|
222
|
-
}
|
|
223
|
-
state.instance = null;
|
|
224
|
-
state.appliedProps = {};
|
|
225
|
-
if (content !== null) {
|
|
226
|
-
if (cp.remove !== undefined) {
|
|
227
|
-
const stillInside = !(parent instanceof Gtk.Widget) || (content.getParent() !== null && isDescendantOf(content, parent));
|
|
228
|
-
if (stillInside)
|
|
229
|
-
runCall(parent, cp.remove, [content], { child: content, adopted: instance ?? undefined });
|
|
230
|
-
}
|
|
231
|
-
else {
|
|
232
|
-
detachChild(content, parent);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
state.content = null;
|
|
236
|
-
};
|
|
237
|
-
const syncLazyElement = (parent, cp, node) => {
|
|
238
|
-
const state = lazyState.get(node) ?? freshLazyState();
|
|
239
|
-
lazyState.set(node, state);
|
|
240
|
-
const content = trackedWidget(node);
|
|
241
|
-
if (state.content !== null && state.content !== content)
|
|
242
|
-
releaseLazyContent(node, state, parent, cp);
|
|
243
|
-
if (content === null)
|
|
244
|
-
return;
|
|
245
|
-
if (state.instance === null) {
|
|
246
|
-
const instance = appendLazyContent(parent, cp, node, content);
|
|
247
|
-
state.content = content;
|
|
248
|
-
state.ordinal = lazyOrdinal(parent, node);
|
|
249
|
-
if (instance !== undefined) {
|
|
250
|
-
state.instance = instance;
|
|
251
|
-
stateOf(node).adoptedInstance = instance;
|
|
252
|
-
if (!registeredStateOf(instance)) {
|
|
253
|
-
registerState(instance, { props: {}, rootContainer: stateOf(node).rootContainer });
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
else if (cp.reorder !== undefined) {
|
|
258
|
-
const ordinal = lazyOrdinal(parent, node);
|
|
259
|
-
if (ordinal !== state.ordinal) {
|
|
260
|
-
runCall(parent, cp.reorder, [content, ordinal], {
|
|
261
|
-
child: content,
|
|
262
|
-
index: ordinal,
|
|
263
|
-
adopted: state.instance ?? undefined,
|
|
264
|
-
});
|
|
265
|
-
state.ordinal = ordinal;
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
applyAdoptedProps(state, node);
|
|
269
|
-
};
|
|
270
|
-
export const lazyElementMapping = (child, parent) => {
|
|
271
|
-
if (!hasWrapperKind(child, LAZY_ELEMENT_KIND) || !(parent instanceof GObject.Object))
|
|
272
|
-
return null;
|
|
273
|
-
const cp = adoptContainerPropFor(parent.__type__);
|
|
274
|
-
if (cp === null)
|
|
275
|
-
return null;
|
|
276
|
-
return {
|
|
277
|
-
attach: () => syncLazyElement(parent, cp, child),
|
|
278
|
-
detach: () => {
|
|
279
|
-
const state = lazyState.get(child);
|
|
280
|
-
lazyState.delete(child);
|
|
281
|
-
if (!state)
|
|
282
|
-
return;
|
|
283
|
-
releaseLazyContent(child, state, parent, cp);
|
|
284
|
-
},
|
|
285
|
-
};
|
|
286
|
-
};
|
|
287
|
-
//# sourceMappingURL=wrapper-apply.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wrapper-apply.js","sourceRoot":"","sources":["../../src/reconciler/wrapper-apply.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ContainerProp } from \"@gtkx/config\";\nimport * as GObject from \"@gtkx/gi/gobject\";\nimport * as Gtk from \"@gtkx/gi/gtk\";\nimport { applyProps } from \"./apply-props.js\";\nimport { attachChild, detachChild, getFocusWidget, isDescendantOf, unparentWidget } from \"./container-attach.js\";\nimport {\n adoptContainerPropFor,\n type CallScope,\n nullSetterCurrentHolder,\n resolveContainerProp,\n runCall,\n runCallValue,\n} from \"./element-props.js\";\nimport { type ElementMapping, hasWrapperKind, type Node, registeredStateOf, registerState, stateOf } from \"./state.js\";\nimport type { Props } from \"./types.js\";\nimport { trackedInstance, trackedWidget, wrapperChildInstances } from \"./wrapper-content.js\";\nimport { CONTAINER_PROP_KIND, LAZY_ELEMENT_KIND, OBJECT_PROP_KIND } from \"./wrapper-protocol.js\";\n\nconst attachedParent = new WeakMap<GObject.Object, GObject.Object>();\n\nconst scopeFor = (child: GObject.Object, extra?: Partial<CallScope>): CallScope => ({\n child,\n props: stateOf(child).props,\n ...extra,\n});\n\nconst runRemove = (parent: GObject.Object, child: GObject.Object, cp: ContainerProp): void => {\n if (cp.remove !== undefined) runCall(parent, cp.remove, [child], scopeFor(child));\n};\n\nconst collectContainerSiblings = (parent: GObject.Object, cp: ContainerProp): GObject.Object[] => {\n const siblings: GObject.Object[] = [];\n for (const sibling of stateOf(parent).children) {\n if (!(sibling instanceof GObject.Object) || sibling instanceof Gtk.Widget) continue;\n if (resolveContainerProp(parent.__type__, sibling.__type__, undefined) === cp) siblings.push(sibling);\n }\n return siblings;\n};\n\nconst insertContainerChildAt = (\n parent: GObject.Object,\n child: GObject.Object,\n cp: ContainerProp,\n index: number,\n): void => {\n if (cp.insert !== undefined && runCall(parent, cp.insert, [child, index], scopeFor(child, { index }))) {\n attachedParent.set(child, parent);\n }\n};\n\nconst attachContainerChild = (\n parent: GObject.Object,\n child: GObject.Object,\n cp: ContainerProp,\n anchor: GObject.Object | null | undefined,\n): void => {\n const isMove = attachedParent.get(child) === parent;\n if (cp.insert !== undefined && (anchor != null || isMove)) {\n if (isMove) runRemove(parent, child, cp);\n const siblings = collectContainerSiblings(parent, cp);\n const index = siblings.indexOf(child);\n insertContainerChildAt(parent, child, cp, index);\n if (!isMove) {\n for (const trailing of siblings.slice(index + 1)) {\n runRemove(parent, trailing, cp);\n insertContainerChildAt(parent, trailing, cp, siblings.indexOf(trailing));\n }\n }\n return;\n }\n if (isMove) return;\n if (cp.append !== undefined && runCall(parent, cp.append, [child], scopeFor(child))) {\n attachedParent.set(child, parent);\n }\n};\n\nconst detachContainerChild = (parent: GObject.Object, child: GObject.Object, cp: ContainerProp): void => {\n if (attachedParent.get(child) !== parent) return;\n const holder = cp.remove !== undefined ? nullSetterCurrentHolder(parent, cp.remove) : undefined;\n if (holder === undefined || holder === child) runRemove(parent, child, cp);\n attachedParent.delete(child);\n};\n\ntype ContainerChildMatch = { child: GObject.Object; parent: GObject.Object; cp: ContainerProp };\n\nconst resolveContainerChild = (child: Node, parent: Node): ContainerChildMatch | null => {\n if (!(child instanceof GObject.Object) || child instanceof Gtk.Widget) return null;\n if (!(parent instanceof GObject.Object)) return null;\n const cp = resolveContainerProp(parent.__type__, child.__type__, undefined);\n return cp === null ? null : { child, parent, cp };\n};\n\nexport const containerChildMapping: ElementMapping = (child, parent) => {\n const match = resolveContainerChild(child, parent);\n if (match === null) return null;\n return {\n attach: (anchor) => attachContainerChild(match.parent, match.child, match.cp, anchor),\n detach: () => detachContainerChild(match.parent, match.child, match.cp),\n };\n};\n\nconst attachPropChild = (parent: GObject.Object, child: GObject.Object, propName: string): void => {\n const cp = resolveContainerProp(parent.__type__, child.__type__, propName);\n if (cp !== null) attachContainerChild(parent, child, cp, null);\n};\n\nconst detachPropChild = (parent: GObject.Object, child: GObject.Object, propName: string): void => {\n const cp = resolveContainerProp(parent.__type__, child.__type__, propName);\n if (cp !== null) detachContainerChild(parent, child, cp);\n};\n\nconst isRooted = (instance: GObject.Object): boolean =>\n instance instanceof Gtk.Widget ? instance.getRoot() !== null : true;\n\nconst rescueFocus = (parent: GObject.Object, child: GObject.Object | undefined): void => {\n if (!(parent instanceof Gtk.Widget) || !(child instanceof Gtk.Widget)) return;\n const focus = getFocusWidget(child);\n if (focus && isDescendantOf(focus, child)) parent.grabFocus();\n};\n\ntype ObjectPropState = { prop: string; value: GObject.Object };\n\nconst objectPropState = new WeakMap<Node, ObjectPropState>();\n\nexport const objectPropMapping: ElementMapping = (child, parent) => {\n if (!hasWrapperKind(child, OBJECT_PROP_KIND) || !(parent instanceof GObject.Object)) return null;\n return {\n attach: () => {\n const prop = propNameOf(child);\n if (prop === undefined) return;\n const value = trackedInstance(child);\n const state = objectPropState.get(child);\n if (state && state.value === value) return;\n Reflect.set(parent, prop, value ?? null);\n if (value) objectPropState.set(child, { prop, value });\n else objectPropState.delete(child);\n },\n detach: () => {\n const state = objectPropState.get(child);\n objectPropState.delete(child);\n if (!state || !isRooted(parent)) return;\n rescueFocus(parent, state.value);\n Reflect.set(parent, state.prop, null);\n },\n };\n};\n\nconst sameInstances = (a: Node[], b: Node[]): boolean =>\n a.length === b.length && a.every((instance, index) => instance === b[index]);\n\nconst propNameOf = (node: Node): string | undefined => {\n const propName = stateOf(node).props.propName;\n return typeof propName === \"string\" ? propName : undefined;\n};\n\nconst containerPropState = new WeakMap<Node, GObject.Object[]>();\n\nconst detachContainerPropChild = (instance: GObject.Object, parent: GObject.Object, propName: string): void => {\n detachPropChild(parent, instance, propName);\n if (instance instanceof Gtk.Widget && instance.getParent() !== null) unparentWidget(instance);\n};\n\nexport const containerPropMapping: ElementMapping = (child, parent) => {\n if (!hasWrapperKind(child, CONTAINER_PROP_KIND) || !(parent instanceof GObject.Object)) return null;\n return {\n attach: () => {\n const propName = propNameOf(child);\n if (propName === undefined) return;\n const desired = wrapperChildInstances(child);\n const prev = containerPropState.get(child) ?? [];\n if (sameInstances(prev, desired)) return;\n for (const instance of prev) detachContainerPropChild(instance, parent, propName);\n for (const instance of desired) attachPropChild(parent, instance, propName);\n containerPropState.set(child, desired);\n },\n detach: () => {\n const propName = propNameOf(child);\n const instances = containerPropState.get(child) ?? [];\n containerPropState.delete(child);\n if (propName === undefined) return;\n for (const instance of instances) detachContainerPropChild(instance, parent, propName);\n },\n };\n};\n\ntype LazyState = { content: Gtk.Widget | null; instance: GObject.Object | null; appliedProps: Props; ordinal: number };\n\nconst lazyState = new WeakMap<Node, LazyState>();\n\nconst freshLazyState = (): LazyState => ({ content: null, instance: null, appliedProps: {}, ordinal: -1 });\n\nconst RESERVED_LAZY_PROPS = new Set([\"children\", \"ref\", \"key\", \"kind\"]);\n\nconst lazyPropsOf = (nodeProps: Props): Props => {\n const built: Props = {};\n for (const [name, value] of Object.entries(nodeProps)) {\n if (RESERVED_LAZY_PROPS.has(name)) continue;\n built[name] = value;\n }\n return built;\n};\n\nconst lazyOrdinal = (parent: Node, node: Node): number => {\n let ordinal = 0;\n for (const sibling of stateOf(parent).children) {\n if (sibling === node) return ordinal;\n if (hasWrapperKind(sibling, LAZY_ELEMENT_KIND)) ordinal++;\n }\n return ordinal;\n};\n\nconst appendLazyContent = (\n parent: GObject.Object,\n cp: ContainerProp,\n node: Node,\n content: Gtk.Widget,\n): GObject.Object | undefined => {\n let appended: unknown;\n if (cp.insert !== undefined) {\n const ordinal = lazyOrdinal(parent, node);\n appended = runCallValue(parent, cp.insert, [content, ordinal], {\n child: content,\n index: ordinal,\n props: stateOf(node).props,\n }).value;\n } else if (cp.append !== undefined) {\n appended = runCallValue(parent, cp.append, [content], { child: content, props: stateOf(node).props }).value;\n } else {\n attachChild(content, parent);\n }\n const accessor = typeof cp.adopt === \"string\" ? cp.adopt : undefined;\n const acquired =\n accessor !== undefined ? runCallValue(parent, accessor, [content], { child: content }).value : appended;\n return acquired instanceof GObject.Object ? acquired : undefined;\n};\n\nconst applyAdoptedProps = (state: LazyState, node: Node): void => {\n if (state.instance === null) return;\n const built = lazyPropsOf(stateOf(node).props);\n applyProps(state.instance, state.appliedProps, built, {});\n state.appliedProps = built;\n};\n\nconst releaseLazyContent = (node: Node, state: LazyState, parent: GObject.Object, cp: ContainerProp): void => {\n const { content, instance } = state;\n if (instance !== null) {\n registeredStateOf(instance)?.signalStore.clear(instance);\n stateOf(node).adoptedInstance = undefined;\n }\n state.instance = null;\n state.appliedProps = {};\n if (content !== null) {\n if (cp.remove !== undefined) {\n const stillInside =\n !(parent instanceof Gtk.Widget) || (content.getParent() !== null && isDescendantOf(content, parent));\n if (stillInside) runCall(parent, cp.remove, [content], { child: content, adopted: instance ?? undefined });\n } else {\n detachChild(content, parent);\n }\n }\n state.content = null;\n};\n\nconst syncLazyElement = (parent: GObject.Object, cp: ContainerProp, node: Node): void => {\n const state = lazyState.get(node) ?? freshLazyState();\n lazyState.set(node, state);\n const content = trackedWidget(node);\n if (state.content !== null && state.content !== content) releaseLazyContent(node, state, parent, cp);\n if (content === null) return;\n if (state.instance === null) {\n const instance = appendLazyContent(parent, cp, node, content);\n state.content = content;\n state.ordinal = lazyOrdinal(parent, node);\n if (instance !== undefined) {\n state.instance = instance;\n stateOf(node).adoptedInstance = instance;\n if (!registeredStateOf(instance)) {\n registerState(instance, { props: {}, rootContainer: stateOf(node).rootContainer });\n }\n }\n } else if (cp.reorder !== undefined) {\n const ordinal = lazyOrdinal(parent, node);\n if (ordinal !== state.ordinal) {\n runCall(parent, cp.reorder, [content, ordinal], {\n child: content,\n index: ordinal,\n adopted: state.instance ?? undefined,\n });\n state.ordinal = ordinal;\n }\n }\n applyAdoptedProps(state, node);\n};\n\nexport const lazyElementMapping: ElementMapping = (child, parent) => {\n if (!hasWrapperKind(child, LAZY_ELEMENT_KIND) || !(parent instanceof GObject.Object)) return null;\n const cp = adoptContainerPropFor(parent.__type__);\n if (cp === null) return null;\n return {\n attach: () => syncLazyElement(parent, cp, child),\n detach: () => {\n const state = lazyState.get(child);\n lazyState.delete(child);\n if (!state) return;\n releaseLazyContent(child, state, parent, cp);\n },\n };\n};\n"]}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import * as GObject from "@gtkx/gi/gobject";
|
|
2
|
-
import * as Gtk from "@gtkx/gi/gtk";
|
|
3
|
-
import { type Node } from "./state.js";
|
|
4
|
-
export declare const childWidget: (instance: Node) => Gtk.Widget | null;
|
|
5
|
-
export declare const trackedWidget: (node: Node) => Gtk.Widget | null;
|
|
6
|
-
export declare const trackedInstance: (node: Node) => GObject.Object | undefined;
|
|
7
|
-
export declare const wrapperChildInstances: (node: Node) => GObject.Object[];
|
|
8
|
-
//# sourceMappingURL=wrapper-content.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wrapper-content.d.ts","sourceRoot":"","sources":["../../src/reconciler/wrapper-content.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,KAAK,IAAI,EAAW,MAAM,YAAY,CAAC;AAGhD,eAAO,MAAM,WAAW,aAAc,IAAI,KAAG,GAAG,CAAC,MAAM,GAAG,IAA0D,CAAC;AAOrH,eAAO,MAAM,aAAa,SAAU,IAAI,KAAG,GAAG,CAAC,MAAM,GAAG,IAGvD,CAAC;AAEF,eAAO,MAAM,eAAe,SAAU,IAAI,KAAG,OAAO,CAAC,MAAM,GAAG,SAG7D,CAAC;AAEF,eAAO,MAAM,qBAAqB,SAAU,IAAI,KAAG,OAAO,CAAC,MAAM,EACqC,CAAC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import * as GObject from "@gtkx/gi/gobject";
|
|
2
|
-
import * as Gtk from "@gtkx/gi/gtk";
|
|
3
|
-
import { stateOf } from "./state.js";
|
|
4
|
-
import { isWrapperNode } from "./wrapper-node.js";
|
|
5
|
-
export const childWidget = (instance) => (instance instanceof Gtk.Widget ? instance : null);
|
|
6
|
-
const trackedChild = (node) => {
|
|
7
|
-
const { children } = stateOf(node);
|
|
8
|
-
return children.find((child) => !isWrapperNode(child)) ?? children[0] ?? null;
|
|
9
|
-
};
|
|
10
|
-
export const trackedWidget = (node) => {
|
|
11
|
-
const child = trackedChild(node);
|
|
12
|
-
return child instanceof Gtk.Widget ? child : null;
|
|
13
|
-
};
|
|
14
|
-
export const trackedInstance = (node) => {
|
|
15
|
-
const child = trackedChild(node);
|
|
16
|
-
return child instanceof GObject.Object ? child : undefined;
|
|
17
|
-
};
|
|
18
|
-
export const wrapperChildInstances = (node) => stateOf(node).children.filter((child) => child instanceof GObject.Object);
|
|
19
|
-
//# sourceMappingURL=wrapper-content.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wrapper-content.js","sourceRoot":"","sources":["../../src/reconciler/wrapper-content.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAa,OAAO,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAc,EAAqB,EAAE,CAAC,CAAC,QAAQ,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAErH,MAAM,YAAY,GAAG,CAAC,IAAU,EAAe,EAAE;IAC7C,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAClF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAU,EAAqB,EAAE;IAC3D,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,KAAK,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAU,EAA8B,EAAE;IACtE,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,KAAK,YAAY,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAU,EAAoB,EAAE,CAClE,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAA2B,EAAE,CAAC,KAAK,YAAY,OAAO,CAAC,MAAM,CAAC,CAAC","sourcesContent":["import * as GObject from \"@gtkx/gi/gobject\";\nimport * as Gtk from \"@gtkx/gi/gtk\";\nimport { type Node, stateOf } from \"./state.js\";\nimport { isWrapperNode } from \"./wrapper-node.js\";\n\nexport const childWidget = (instance: Node): Gtk.Widget | null => (instance instanceof Gtk.Widget ? instance : null);\n\nconst trackedChild = (node: Node): Node | null => {\n const { children } = stateOf(node);\n return children.find((child) => !isWrapperNode(child)) ?? children[0] ?? null;\n};\n\nexport const trackedWidget = (node: Node): Gtk.Widget | null => {\n const child = trackedChild(node);\n return child instanceof Gtk.Widget ? child : null;\n};\n\nexport const trackedInstance = (node: Node): GObject.Object | undefined => {\n const child = trackedChild(node);\n return child instanceof GObject.Object ? child : undefined;\n};\n\nexport const wrapperChildInstances = (node: Node): GObject.Object[] =>\n stateOf(node).children.filter((child): child is GObject.Object => child instanceof GObject.Object);\n"]}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
declare const WRAPPER_NODE: unique symbol;
|
|
2
|
-
export type WrapperNode = {
|
|
3
|
-
[WRAPPER_NODE]: true;
|
|
4
|
-
};
|
|
5
|
-
export declare const createWrapperNode: () => WrapperNode;
|
|
6
|
-
export declare const isWrapperNode: (value: unknown) => value is WrapperNode;
|
|
7
|
-
export {};
|
|
8
|
-
//# sourceMappingURL=wrapper-node.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wrapper-node.d.ts","sourceRoot":"","sources":["../../src/reconciler/wrapper-node.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,YAAY,EAAE,OAAO,MAAuC,CAAC;AAEnE,MAAM,MAAM,WAAW,GAAG;IAAE,CAAC,YAAY,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAEnD,eAAO,MAAM,iBAAiB,QAAO,WAAyC,CAAC;AAE/E,eAAO,MAAM,aAAa,UAAW,OAAO,KAAG,KAAK,IAAI,WACgB,CAAC"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
const WRAPPER_NODE = Symbol.for("gtkx.wrapperNode");
|
|
2
|
-
export const createWrapperNode = () => ({ [WRAPPER_NODE]: true });
|
|
3
|
-
export const isWrapperNode = (value) => typeof value === "object" && value !== null && WRAPPER_NODE in value;
|
|
4
|
-
//# sourceMappingURL=wrapper-node.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wrapper-node.js","sourceRoot":"","sources":["../../src/reconciler/wrapper-node.ts"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAAkB,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAInE,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAE/E,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAc,EAAwB,EAAE,CAClE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,YAAY,IAAI,KAAK,CAAC","sourcesContent":["const WRAPPER_NODE: unique symbol = Symbol.for(\"gtkx.wrapperNode\");\n\nexport type WrapperNode = { [WRAPPER_NODE]: true };\n\nexport const createWrapperNode = (): WrapperNode => ({ [WRAPPER_NODE]: true });\n\nexport const isWrapperNode = (value: unknown): value is WrapperNode =>\n typeof value === \"object\" && value !== null && WRAPPER_NODE in value;\n"]}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export declare const WRAPPER_NODE_ELEMENT = "__GTKX_WRAPPER_NODE__";
|
|
2
|
-
declare const WRAPPER_KINDS: readonly ["lazy-element", "object-prop", "container-prop", "text-anchor", "text-paintable", "buffer-text", "label-text"];
|
|
3
|
-
export type WrapperKind = (typeof WRAPPER_KINDS)[number];
|
|
4
|
-
export declare const isWrapperKind: (value: unknown) => value is WrapperKind;
|
|
5
|
-
export declare const LAZY_ELEMENT_KIND: WrapperKind;
|
|
6
|
-
export declare const OBJECT_PROP_KIND: WrapperKind;
|
|
7
|
-
export declare const CONTAINER_PROP_KIND: WrapperKind;
|
|
8
|
-
export declare const TEXT_ANCHOR_KIND: WrapperKind;
|
|
9
|
-
export declare const TEXT_PAINTABLE_KIND: WrapperKind;
|
|
10
|
-
export declare const BUFFER_TEXT_KIND: WrapperKind;
|
|
11
|
-
export declare const LABEL_TEXT_KIND: WrapperKind;
|
|
12
|
-
export {};
|
|
13
|
-
//# sourceMappingURL=wrapper-protocol.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wrapper-protocol.d.ts","sourceRoot":"","sources":["../../src/reconciler/wrapper-protocol.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,0BAA0B,CAAC;AAE5D,QAAA,MAAM,aAAa,YACf,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,YAAY,CACN,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAIzD,eAAO,MAAM,aAAa,UAAW,OAAO,KAAG,KAAK,IAAI,WACI,CAAC;AAE7D,eAAO,MAAM,iBAAiB,EAAE,WAA4B,CAAC;AAE7D,eAAO,MAAM,gBAAgB,EAAE,WAA2B,CAAC;AAE3D,eAAO,MAAM,mBAAmB,EAAE,WAA8B,CAAC;AAEjE,eAAO,MAAM,gBAAgB,EAAE,WAA2B,CAAC;AAE3D,eAAO,MAAM,mBAAmB,EAAE,WAA8B,CAAC;AAEjE,eAAO,MAAM,gBAAgB,EAAE,WAA2B,CAAC;AAE3D,eAAO,MAAM,eAAe,EAAE,WAA0B,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export const WRAPPER_NODE_ELEMENT = "__GTKX_WRAPPER_NODE__";
|
|
2
|
-
const WRAPPER_KINDS = [
|
|
3
|
-
"lazy-element",
|
|
4
|
-
"object-prop",
|
|
5
|
-
"container-prop",
|
|
6
|
-
"text-anchor",
|
|
7
|
-
"text-paintable",
|
|
8
|
-
"buffer-text",
|
|
9
|
-
"label-text",
|
|
10
|
-
];
|
|
11
|
-
const WRAPPER_KIND_SET = new Set(WRAPPER_KINDS);
|
|
12
|
-
export const isWrapperKind = (value) => typeof value === "string" && WRAPPER_KIND_SET.has(value);
|
|
13
|
-
export const LAZY_ELEMENT_KIND = "lazy-element";
|
|
14
|
-
export const OBJECT_PROP_KIND = "object-prop";
|
|
15
|
-
export const CONTAINER_PROP_KIND = "container-prop";
|
|
16
|
-
export const TEXT_ANCHOR_KIND = "text-anchor";
|
|
17
|
-
export const TEXT_PAINTABLE_KIND = "text-paintable";
|
|
18
|
-
export const BUFFER_TEXT_KIND = "buffer-text";
|
|
19
|
-
export const LABEL_TEXT_KIND = "label-text";
|
|
20
|
-
//# sourceMappingURL=wrapper-protocol.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wrapper-protocol.js","sourceRoot":"","sources":["../../src/reconciler/wrapper-protocol.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAE5D,MAAM,aAAa,GAAG;IAClB,cAAc;IACd,aAAa;IACb,gBAAgB;IAChB,aAAa;IACb,gBAAgB;IAChB,aAAa;IACb,YAAY;CACN,CAAC;AAIX,MAAM,gBAAgB,GAAgB,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;AAE7D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAc,EAAwB,EAAE,CAClE,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAE7D,MAAM,CAAC,MAAM,iBAAiB,GAAgB,cAAc,CAAC;AAE7D,MAAM,CAAC,MAAM,gBAAgB,GAAgB,aAAa,CAAC;AAE3D,MAAM,CAAC,MAAM,mBAAmB,GAAgB,gBAAgB,CAAC;AAEjE,MAAM,CAAC,MAAM,gBAAgB,GAAgB,aAAa,CAAC;AAE3D,MAAM,CAAC,MAAM,mBAAmB,GAAgB,gBAAgB,CAAC;AAEjE,MAAM,CAAC,MAAM,gBAAgB,GAAgB,aAAa,CAAC;AAE3D,MAAM,CAAC,MAAM,eAAe,GAAgB,YAAY,CAAC","sourcesContent":["export const WRAPPER_NODE_ELEMENT = \"__GTKX_WRAPPER_NODE__\";\n\nconst WRAPPER_KINDS = [\n \"lazy-element\",\n \"object-prop\",\n \"container-prop\",\n \"text-anchor\",\n \"text-paintable\",\n \"buffer-text\",\n \"label-text\",\n] as const;\n\nexport type WrapperKind = (typeof WRAPPER_KINDS)[number];\n\nconst WRAPPER_KIND_SET: Set<string> = new Set(WRAPPER_KINDS);\n\nexport const isWrapperKind = (value: unknown): value is WrapperKind =>\n typeof value === \"string\" && WRAPPER_KIND_SET.has(value);\n\nexport const LAZY_ELEMENT_KIND: WrapperKind = \"lazy-element\";\n\nexport const OBJECT_PROP_KIND: WrapperKind = \"object-prop\";\n\nexport const CONTAINER_PROP_KIND: WrapperKind = \"container-prop\";\n\nexport const TEXT_ANCHOR_KIND: WrapperKind = \"text-anchor\";\n\nexport const TEXT_PAINTABLE_KIND: WrapperKind = \"text-paintable\";\n\nexport const BUFFER_TEXT_KIND: WrapperKind = \"buffer-text\";\n\nexport const LABEL_TEXT_KIND: WrapperKind = \"label-text\";\n"]}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { type ReactNode } from "react";
|
|
2
|
-
export declare const createElementComponent: <P extends object>(elementName: string) => ((props: P) => ReactNode);
|
|
3
|
-
export declare const createLazyElementComponent: <P extends object>() => ((props: P) => ReactNode);
|
|
4
|
-
//# sourceMappingURL=create-element-component.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-element-component.d.ts","sourceRoot":"","sources":["../../src/utils/create-element-component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AA4DtE,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,MAAM,eAAe,MAAM,KAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,SAAS,CAOtG,CAAC;AAIF,eAAO,MAAM,0BAA0B,GAAI,CAAC,SAAS,MAAM,OAAK,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,SAAS,CAKvF,CAAC"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { createElement, isValidElement } from "react";
|
|
2
|
-
import { containerPropNamesFor } from "../reconciler/element-props.js";
|
|
3
|
-
import { CONTAINER_PROP_KIND, LAZY_ELEMENT_KIND, OBJECT_PROP_KIND, WRAPPER_NODE_ELEMENT, } from "../reconciler/wrapper-protocol.js";
|
|
4
|
-
const needsSplit = (props, containerPropNames) => {
|
|
5
|
-
for (const [name, value] of Object.entries(props)) {
|
|
6
|
-
if (name === "children")
|
|
7
|
-
continue;
|
|
8
|
-
if (containerPropNames.has(name))
|
|
9
|
-
return true;
|
|
10
|
-
if (isValidElement(value))
|
|
11
|
-
return true;
|
|
12
|
-
}
|
|
13
|
-
return false;
|
|
14
|
-
};
|
|
15
|
-
const splitProps = (props, containerPropNames) => {
|
|
16
|
-
const rest = {};
|
|
17
|
-
const wrappers = [];
|
|
18
|
-
let children = null;
|
|
19
|
-
for (const [name, value] of Object.entries(props)) {
|
|
20
|
-
if (name === "children") {
|
|
21
|
-
children = value;
|
|
22
|
-
continue;
|
|
23
|
-
}
|
|
24
|
-
if (containerPropNames.has(name)) {
|
|
25
|
-
if (value != null) {
|
|
26
|
-
wrappers.push(createElement(WRAPPER_NODE_ELEMENT, { kind: CONTAINER_PROP_KIND, propName: name, key: `container-prop:${name}` }, value));
|
|
27
|
-
}
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
if (isValidElement(value)) {
|
|
31
|
-
wrappers.push(createElement(WRAPPER_NODE_ELEMENT, { kind: OBJECT_PROP_KIND, propName: name, key: `object-prop:${name}` }, value));
|
|
32
|
-
continue;
|
|
33
|
-
}
|
|
34
|
-
rest[name] = value;
|
|
35
|
-
}
|
|
36
|
-
return { rest, wrappers, children };
|
|
37
|
-
};
|
|
38
|
-
export const createElementComponent = (elementName) => {
|
|
39
|
-
const containerPropNames = containerPropNamesFor(elementName);
|
|
40
|
-
return (props) => {
|
|
41
|
-
if (!needsSplit(props, containerPropNames))
|
|
42
|
-
return createElement(elementName, props);
|
|
43
|
-
const { rest, wrappers, children } = splitProps(props, containerPropNames);
|
|
44
|
-
return createElement(elementName, rest, children, ...wrappers);
|
|
45
|
-
};
|
|
46
|
-
};
|
|
47
|
-
const NO_CONTAINER_PROPS = new Set();
|
|
48
|
-
export const createLazyElementComponent = () => {
|
|
49
|
-
return (props) => {
|
|
50
|
-
const { rest, wrappers, children } = splitProps(props, NO_CONTAINER_PROPS);
|
|
51
|
-
return createElement(WRAPPER_NODE_ELEMENT, { kind: LAZY_ELEMENT_KIND, ...rest }, children, ...wrappers);
|
|
52
|
-
};
|
|
53
|
-
};
|
|
54
|
-
//# sourceMappingURL=create-element-component.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-element-component.js","sourceRoot":"","sources":["../../src/utils/create-element-component.ts"],"names":[],"mappings":"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","sourcesContent":["import { createElement, isValidElement, type ReactNode } from \"react\";\nimport { containerPropNamesFor } from \"../reconciler/element-props.js\";\nimport {\n CONTAINER_PROP_KIND,\n LAZY_ELEMENT_KIND,\n OBJECT_PROP_KIND,\n WRAPPER_NODE_ELEMENT,\n} from \"../reconciler/wrapper-protocol.js\";\n\nconst needsSplit = (props: object, containerPropNames: Set<string>): boolean => {\n for (const [name, value] of Object.entries(props)) {\n if (name === \"children\") continue;\n if (containerPropNames.has(name)) return true;\n if (isValidElement(value)) return true;\n }\n return false;\n};\n\ntype SplitProps = {\n rest: Record<string, unknown>;\n wrappers: ReactNode[];\n children: ReactNode;\n};\n\nconst splitProps = (props: object, containerPropNames: Set<string>): SplitProps => {\n const rest: Record<string, unknown> = {};\n const wrappers: ReactNode[] = [];\n let children: ReactNode = null;\n for (const [name, value] of Object.entries(props)) {\n if (name === \"children\") {\n children = value as ReactNode;\n continue;\n }\n if (containerPropNames.has(name)) {\n if (value != null) {\n wrappers.push(\n createElement(\n WRAPPER_NODE_ELEMENT,\n { kind: CONTAINER_PROP_KIND, propName: name, key: `container-prop:${name}` },\n value as ReactNode,\n ),\n );\n }\n continue;\n }\n if (isValidElement(value)) {\n wrappers.push(\n createElement(\n WRAPPER_NODE_ELEMENT,\n { kind: OBJECT_PROP_KIND, propName: name, key: `object-prop:${name}` },\n value as ReactNode,\n ),\n );\n continue;\n }\n rest[name] = value;\n }\n return { rest, wrappers, children };\n};\n\nexport const createElementComponent = <P extends object>(elementName: string): ((props: P) => ReactNode) => {\n const containerPropNames = containerPropNamesFor(elementName);\n return (props: P): ReactNode => {\n if (!needsSplit(props, containerPropNames)) return createElement(elementName, props);\n const { rest, wrappers, children } = splitProps(props, containerPropNames);\n return createElement(elementName, rest, children, ...wrappers);\n };\n};\n\nconst NO_CONTAINER_PROPS: Set<string> = new Set();\n\nexport const createLazyElementComponent = <P extends object>(): ((props: P) => ReactNode) => {\n return (props: P): ReactNode => {\n const { rest, wrappers, children } = splitProps(props, NO_CONTAINER_PROPS);\n return createElement(WRAPPER_NODE_ELEMENT, { kind: LAZY_ELEMENT_KIND, ...rest }, children, ...wrappers);\n };\n};\n"]}
|
package/dist/utils/gtype.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import * as GObject from "@gtkx/gi/gobject";
|
|
2
|
-
import { type TypedClass } from "@gtkx/runtime";
|
|
3
|
-
export declare const collectTypeNamesWithInterfaces: (gtype: bigint) => string[];
|
|
4
|
-
export declare const foldInheritedTableWithInterfaces: <R, T>(gtype: bigint, table: Record<string, R>, fold: (accumulator: T, row: R) => T, seed: T) => T;
|
|
5
|
-
export declare const typeChainIncludes: (gtype: bigint, name: string) => boolean;
|
|
6
|
-
export declare const collectConstructableProps: (gtype: bigint) => Set<string>;
|
|
7
|
-
export declare const isConstructOnlyProp: (instance: TypedClass, key: string) => boolean;
|
|
8
|
-
export declare const resolveSignal: (instance: TypedClass, propName: string) => string | null;
|
|
9
|
-
type DefaultPropLookup = {
|
|
10
|
-
has: boolean;
|
|
11
|
-
value: unknown;
|
|
12
|
-
};
|
|
13
|
-
export declare const resolveDefaultProp: (instance: TypedClass, key: string) => DefaultPropLookup;
|
|
14
|
-
export declare const requireClassByName: (typeName: string) => (new (props: Record<string, unknown>) => GObject.Object);
|
|
15
|
-
export {};
|
|
16
|
-
//# sourceMappingURL=gtype.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gtype.d.ts","sourceRoot":"","sources":["../../src/utils/gtype.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAsDjE,eAAO,MAAM,8BAA8B,UAAW,MAAM,KAAG,MAAM,EAI/D,CAAC;AAgBP,eAAO,MAAM,gCAAgC,GAAI,CAAC,EAAE,CAAC,SAC1C,MAAM,SACN,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,QAClB,CAAC,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAC7B,CAAC,KACR,CAOF,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW,MAAM,QAAQ,MAAM,KAAG,OAC+B,CAAC;AAiBhG,eAAO,MAAM,yBAAyB,UAAW,MAAM,KAAG,GAAG,CAAC,MAAM,CAW/D,CAAC;AAEN,eAAO,MAAM,mBAAmB,aAAc,UAAU,OAAO,MAAM,KAAG,OAMlE,CAAC;AAEP,eAAO,MAAM,aAAa,aAAc,UAAU,YAAY,MAAM,KAAG,MAAM,GAAG,IAU/E,CAAC;AAEF,KAAK,iBAAiB,GAAG;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAI1D,eAAO,MAAM,kBAAkB,aAAc,UAAU,OAAO,MAAM,KAAG,iBAOjE,CAAC;AAEP,eAAO,MAAM,kBAAkB,aAAc,MAAM,KAAG,CAAC,KAAK,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAS5G,CAAC"}
|