@gtkx/react 0.21.0 → 1.0.0-rc.1
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 +137 -34
- package/dist/components/application.d.ts +10 -0
- package/dist/components/application.d.ts.map +1 -0
- package/dist/components/application.js +26 -0
- package/dist/components/application.js.map +1 -0
- package/dist/components/window.d.ts +8 -0
- package/dist/components/window.d.ts.map +1 -0
- package/dist/components/window.js +23 -0
- package/dist/components/window.js.map +1 -0
- package/dist/hooks/use-application.d.ts +8 -0
- package/dist/hooks/use-application.d.ts.map +1 -0
- package/dist/hooks/use-application.js +13 -0
- package/dist/hooks/use-application.js.map +1 -0
- package/dist/hooks/use-bind-setting.d.ts +6 -0
- package/dist/hooks/use-bind-setting.d.ts.map +1 -0
- package/dist/hooks/use-bind-setting.js +19 -0
- package/dist/hooks/use-bind-setting.js.map +1 -0
- package/dist/hooks/use-merge-refs.d.ts +3 -0
- package/dist/hooks/use-merge-refs.d.ts.map +1 -0
- package/dist/hooks/use-merge-refs.js +48 -0
- package/dist/hooks/use-merge-refs.js.map +1 -0
- package/dist/hooks/use-object-attachment.d.ts +10 -0
- package/dist/hooks/use-object-attachment.d.ts.map +1 -0
- package/dist/hooks/use-object-attachment.js +24 -0
- package/dist/hooks/use-object-attachment.js.map +1 -0
- package/dist/hooks/use-object-value.d.ts +4 -0
- package/dist/hooks/use-object-value.d.ts.map +1 -0
- package/dist/hooks/use-object-value.js +32 -0
- package/dist/hooks/use-object-value.js.map +1 -0
- package/dist/hooks/use-parent-window.d.ts +8 -0
- package/dist/hooks/use-parent-window.d.ts.map +1 -0
- package/dist/hooks/use-parent-window.js +7 -0
- package/dist/hooks/use-parent-window.js.map +1 -0
- package/dist/hooks/use-property.d.ts +14 -0
- package/dist/hooks/use-property.d.ts.map +1 -0
- package/dist/hooks/use-property.js +13 -0
- package/dist/hooks/use-property.js.map +1 -0
- package/dist/hooks/use-setting.d.ts +25 -0
- package/dist/hooks/use-setting.d.ts.map +1 -0
- package/dist/hooks/use-setting.js +15 -0
- package/dist/hooks/use-setting.js.map +1 -0
- package/dist/hooks/use-signal.d.ts +21 -0
- package/dist/hooks/use-signal.d.ts.map +1 -0
- package/dist/hooks/use-signal.js +20 -0
- package/dist/hooks/use-signal.js.map +1 -0
- package/dist/index.d.ts +14 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -7
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +14 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +14 -0
- package/dist/internal.js.map +1 -0
- package/dist/libraries/adw/dialog.d.ts +8 -0
- package/dist/libraries/adw/dialog.d.ts.map +1 -0
- package/dist/libraries/adw/dialog.js +25 -0
- package/dist/libraries/adw/dialog.js.map +1 -0
- package/dist/libraries/adw/index.d.ts +2 -0
- package/dist/libraries/adw/index.d.ts.map +1 -0
- package/dist/libraries/adw/index.js +2 -0
- package/dist/libraries/adw/index.js.map +1 -0
- package/dist/reconciler/accessible.d.ts +59 -0
- package/dist/reconciler/accessible.d.ts.map +1 -0
- package/dist/reconciler/accessible.js +143 -0
- package/dist/reconciler/accessible.js.map +1 -0
- package/dist/reconciler/apply-props.d.ts +8 -0
- package/dist/reconciler/apply-props.d.ts.map +1 -0
- package/dist/reconciler/apply-props.js +92 -0
- package/dist/reconciler/apply-props.js.map +1 -0
- package/dist/reconciler/commit-flush.d.ts +3 -0
- package/dist/reconciler/commit-flush.d.ts.map +1 -0
- package/dist/reconciler/commit-flush.js +13 -0
- package/dist/reconciler/commit-flush.js.map +1 -0
- package/dist/reconciler/container-attach.d.ts +10 -0
- package/dist/reconciler/container-attach.d.ts.map +1 -0
- package/dist/reconciler/container-attach.js +216 -0
- package/dist/reconciler/container-attach.js.map +1 -0
- package/dist/reconciler/content-rebuild.d.ts +3 -0
- package/dist/reconciler/content-rebuild.d.ts.map +1 -0
- package/dist/reconciler/content-rebuild.js +15 -0
- package/dist/reconciler/content-rebuild.js.map +1 -0
- package/dist/reconciler/dispatch.d.ts +6 -0
- package/dist/reconciler/dispatch.d.ts.map +1 -0
- package/dist/reconciler/dispatch.js +61 -0
- package/dist/reconciler/dispatch.js.map +1 -0
- package/dist/reconciler/element-prop-appliers.d.ts +5 -0
- package/dist/reconciler/element-prop-appliers.d.ts.map +1 -0
- package/dist/reconciler/element-prop-appliers.js +104 -0
- package/dist/reconciler/element-prop-appliers.js.map +1 -0
- package/dist/reconciler/element-props.d.ts +25 -0
- package/dist/reconciler/element-props.d.ts.map +1 -0
- package/dist/reconciler/element-props.js +157 -0
- package/dist/reconciler/element-props.js.map +1 -0
- package/dist/reconciler/host-config.d.ts +13 -0
- package/dist/reconciler/host-config.d.ts.map +1 -0
- package/dist/reconciler/host-config.js +309 -0
- package/dist/reconciler/host-config.js.map +1 -0
- package/dist/reconciler/instance.d.ts +6 -0
- package/dist/reconciler/instance.d.ts.map +1 -0
- package/dist/reconciler/instance.js +27 -0
- package/dist/reconciler/instance.js.map +1 -0
- package/dist/reconciler/label-text-rebuild.d.ts +3 -0
- package/dist/reconciler/label-text-rebuild.d.ts.map +1 -0
- package/dist/reconciler/label-text-rebuild.js +22 -0
- package/dist/reconciler/label-text-rebuild.js.map +1 -0
- package/dist/reconciler/portal.d.ts +11 -0
- package/dist/reconciler/portal.d.ts.map +1 -0
- package/dist/reconciler/portal.js +20 -0
- package/dist/reconciler/portal.js.map +1 -0
- package/dist/reconciler/reconciler-error-handler.d.ts +7 -0
- package/dist/reconciler/reconciler-error-handler.d.ts.map +1 -0
- package/dist/reconciler/reconciler-error-handler.js +24 -0
- package/dist/reconciler/reconciler-error-handler.js.map +1 -0
- package/dist/reconciler/reconciler-root.d.ts +19 -0
- package/dist/reconciler/reconciler-root.d.ts.map +1 -0
- package/dist/reconciler/reconciler-root.js +24 -0
- package/dist/reconciler/reconciler-root.js.map +1 -0
- package/dist/reconciler/reconciler.d.ts +3 -0
- package/dist/reconciler/reconciler.d.ts.map +1 -0
- package/dist/reconciler/reconciler.js +12 -0
- package/dist/reconciler/reconciler.js.map +1 -0
- package/dist/reconciler/render.d.ts +23 -0
- package/dist/reconciler/render.d.ts.map +1 -0
- package/dist/reconciler/render.js +46 -0
- package/dist/reconciler/render.js.map +1 -0
- package/dist/reconciler/root-element.d.ts +14 -0
- package/dist/reconciler/root-element.d.ts.map +1 -0
- package/dist/reconciler/root-element.js +7 -0
- package/dist/reconciler/root-element.js.map +1 -0
- package/dist/reconciler/signal-store.d.ts +22 -0
- package/dist/reconciler/signal-store.d.ts.map +1 -0
- package/dist/reconciler/signal-store.js +84 -0
- package/dist/reconciler/signal-store.js.map +1 -0
- package/dist/reconciler/state.d.ts +36 -0
- package/dist/reconciler/state.d.ts.map +1 -0
- package/dist/reconciler/state.js +38 -0
- package/dist/reconciler/state.js.map +1 -0
- package/dist/reconciler/text-buffer-controller.d.ts +17 -0
- package/dist/reconciler/text-buffer-controller.d.ts.map +1 -0
- package/dist/reconciler/text-buffer-controller.js +102 -0
- package/dist/reconciler/text-buffer-controller.js.map +1 -0
- package/dist/reconciler/text-buffer-rebuild.d.ts +3 -0
- package/dist/reconciler/text-buffer-rebuild.d.ts.map +1 -0
- package/dist/reconciler/text-buffer-rebuild.js +7 -0
- package/dist/reconciler/text-buffer-rebuild.js.map +1 -0
- package/dist/reconciler/text-node.d.ts +7 -0
- package/dist/reconciler/text-node.d.ts.map +1 -0
- package/dist/reconciler/text-node.js +8 -0
- package/dist/reconciler/text-node.js.map +1 -0
- package/dist/reconciler/types.d.ts +5 -0
- package/dist/reconciler/types.d.ts.map +1 -0
- package/dist/reconciler/types.js.map +1 -0
- package/dist/reconciler/visibility.d.ts +6 -0
- package/dist/reconciler/visibility.d.ts.map +1 -0
- package/dist/reconciler/visibility.js +57 -0
- package/dist/reconciler/visibility.js.map +1 -0
- package/dist/reconciler/wrapper-apply.d.ts +6 -0
- package/dist/reconciler/wrapper-apply.d.ts.map +1 -0
- package/dist/reconciler/wrapper-apply.js +287 -0
- package/dist/reconciler/wrapper-apply.js.map +1 -0
- package/dist/reconciler/wrapper-content.d.ts +8 -0
- package/dist/reconciler/wrapper-content.d.ts.map +1 -0
- package/dist/reconciler/wrapper-content.js +19 -0
- package/dist/reconciler/wrapper-content.js.map +1 -0
- package/dist/reconciler/wrapper-node.d.ts +8 -0
- package/dist/reconciler/wrapper-node.d.ts.map +1 -0
- package/dist/reconciler/wrapper-node.js +4 -0
- package/dist/reconciler/wrapper-node.js.map +1 -0
- package/dist/reconciler/wrapper-protocol.d.ts +13 -0
- package/dist/reconciler/wrapper-protocol.d.ts.map +1 -0
- package/dist/reconciler/wrapper-protocol.js +20 -0
- package/dist/reconciler/wrapper-protocol.js.map +1 -0
- package/dist/utils/accessible-metadata.d.ts +5 -0
- package/dist/utils/accessible-metadata.d.ts.map +1 -0
- package/dist/utils/accessible-metadata.js +22 -0
- package/dist/utils/accessible-metadata.js.map +1 -0
- package/dist/utils/create-element-component.d.ts +4 -0
- package/dist/utils/create-element-component.d.ts.map +1 -0
- package/dist/utils/create-element-component.js +54 -0
- package/dist/utils/create-element-component.js.map +1 -0
- package/dist/utils/gtype.d.ts +16 -0
- package/dist/utils/gtype.d.ts.map +1 -0
- package/dist/utils/gtype.js +127 -0
- package/dist/utils/gtype.js.map +1 -0
- package/dist/utils/notify-name.d.ts +5 -0
- package/dist/utils/notify-name.d.ts.map +1 -0
- package/dist/utils/notify-name.js +6 -0
- package/dist/utils/notify-name.js.map +1 -0
- package/dist/utils/object-prop.d.ts +8 -0
- package/dist/utils/object-prop.d.ts.map +1 -0
- package/dist/utils/object-prop.js +9 -0
- package/dist/utils/object-prop.js.map +1 -0
- package/dist/utils/settings-accessor.d.ts +8 -0
- package/dist/utils/settings-accessor.d.ts.map +1 -0
- package/dist/utils/settings-accessor.js +69 -0
- package/dist/utils/settings-accessor.js.map +1 -0
- package/dist/utils/wrapper-node-jsx.d.ts +32 -0
- package/dist/utils/wrapper-node-jsx.d.ts.map +1 -0
- package/dist/utils/wrapper-node-jsx.js +2 -0
- package/dist/utils/wrapper-node-jsx.js.map +1 -0
- package/package.json +22 -8
- package/src/components/application.tsx +43 -0
- package/src/components/window.tsx +36 -0
- package/src/hooks/use-application.ts +17 -0
- package/src/hooks/use-bind-setting.ts +35 -0
- package/src/hooks/use-merge-refs.ts +53 -0
- package/src/hooks/use-object-attachment.ts +35 -0
- package/src/hooks/use-object-value.ts +50 -0
- package/src/hooks/use-parent-window.ts +9 -0
- package/src/hooks/use-property.ts +22 -0
- package/src/hooks/use-setting.ts +47 -0
- package/src/hooks/use-signal.ts +71 -0
- package/src/index.ts +15 -14
- package/src/internal.ts +24 -0
- package/src/libraries/adw/dialog.tsx +34 -0
- package/src/libraries/adw/index.ts +1 -0
- package/src/reconciler/accessible.ts +232 -0
- package/src/reconciler/apply-props.ts +117 -0
- package/src/reconciler/commit-flush.ts +13 -0
- package/src/reconciler/container-attach.ts +219 -0
- package/src/reconciler/content-rebuild.ts +19 -0
- package/src/reconciler/dispatch.ts +58 -0
- package/src/reconciler/element-prop-appliers.ts +110 -0
- package/src/reconciler/element-props.ts +192 -0
- package/src/reconciler/host-config.ts +405 -0
- package/src/reconciler/instance.ts +30 -0
- package/src/reconciler/label-text-rebuild.ts +26 -0
- package/src/reconciler/portal.ts +28 -0
- package/src/reconciler/reconciler-error-handler.ts +29 -0
- package/src/reconciler/reconciler-root.ts +57 -0
- package/src/reconciler/reconciler.ts +13 -0
- package/src/reconciler/render.ts +61 -0
- package/src/reconciler/root-element.ts +14 -0
- package/src/reconciler/signal-store.ts +103 -0
- package/src/reconciler/state.ts +72 -0
- package/src/reconciler/text-buffer-controller.ts +107 -0
- package/src/reconciler/text-buffer-rebuild.ts +12 -0
- package/src/reconciler/text-node.ts +13 -0
- package/src/reconciler/types.ts +6 -0
- package/src/reconciler/visibility.ts +52 -0
- package/src/reconciler/wrapper-apply.ts +308 -0
- package/src/reconciler/wrapper-content.ts +24 -0
- package/src/reconciler/wrapper-node.ts +8 -0
- package/src/reconciler/wrapper-protocol.ts +32 -0
- package/src/utils/accessible-metadata.ts +26 -0
- package/src/utils/create-element-component.ts +77 -0
- package/src/utils/gtype.ts +166 -0
- package/src/utils/notify-name.ts +10 -0
- package/src/utils/object-prop.ts +13 -0
- package/src/utils/settings-accessor.ts +89 -0
- package/src/utils/wrapper-node-jsx.ts +34 -0
- package/dist/components/compound.d.ts +0 -40
- package/dist/components/compound.d.ts.map +0 -1
- package/dist/components/compound.js +0 -46
- package/dist/components/compound.js.map +0 -1
- package/dist/components/list.d.ts +0 -75
- package/dist/components/list.d.ts.map +0 -1
- package/dist/components/list.js +0 -81
- package/dist/components/list.js.map +0 -1
- package/dist/components/slot-widget.d.ts +0 -15
- package/dist/components/slot-widget.d.ts.map +0 -1
- package/dist/components/slot-widget.js +0 -37
- package/dist/components/slot-widget.js.map +0 -1
- package/dist/errors.d.ts +0 -15
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -44
- package/dist/errors.js.map +0 -1
- package/dist/factory.d.ts +0 -5
- package/dist/factory.d.ts.map +0 -1
- package/dist/factory.js +0 -37
- package/dist/factory.js.map +0 -1
- package/dist/generated/compounds.d.ts +0 -2672
- package/dist/generated/compounds.d.ts.map +0 -1
- package/dist/generated/compounds.js +0 -2624
- package/dist/generated/compounds.js.map +0 -1
- package/dist/generated/internal.d.ts +0 -16
- package/dist/generated/internal.d.ts.map +0 -1
- package/dist/generated/internal.js +0 -3638
- package/dist/generated/internal.js.map +0 -1
- package/dist/generated/jsx.d.ts +0 -17074
- package/dist/generated/jsx.d.ts.map +0 -1
- package/dist/generated/jsx.js +0 -6715
- package/dist/generated/jsx.js.map +0 -1
- package/dist/generated/registry.d.ts +0 -5
- package/dist/generated/registry.d.ts.map +0 -1
- package/dist/generated/registry.js +0 -13
- package/dist/generated/registry.js.map +0 -1
- package/dist/host-config.d.ts +0 -24
- package/dist/host-config.d.ts.map +0 -1
- package/dist/host-config.js +0 -172
- package/dist/host-config.js.map +0 -1
- package/dist/jsx.d.ts +0 -974
- package/dist/jsx.d.ts.map +0 -1
- package/dist/jsx.js +0 -8
- package/dist/jsx.js.map +0 -1
- package/dist/metadata.d.ts +0 -5
- package/dist/metadata.d.ts.map +0 -1
- package/dist/metadata.js +0 -33
- package/dist/metadata.js.map +0 -1
- package/dist/node.d.ts +0 -25
- package/dist/node.d.ts.map +0 -1
- package/dist/node.js +0 -85
- package/dist/node.js.map +0 -1
- package/dist/nodes/adjustable.d.ts +0 -11
- package/dist/nodes/adjustable.d.ts.map +0 -1
- package/dist/nodes/adjustable.js +0 -46
- package/dist/nodes/adjustable.js.map +0 -1
- package/dist/nodes/alert-dialog-response.d.ts +0 -15
- package/dist/nodes/alert-dialog-response.d.ts.map +0 -1
- package/dist/nodes/alert-dialog-response.js +0 -61
- package/dist/nodes/alert-dialog-response.js.map +0 -1
- package/dist/nodes/alert-dialog.d.ts +0 -14
- package/dist/nodes/alert-dialog.d.ts.map +0 -1
- package/dist/nodes/alert-dialog.js +0 -41
- package/dist/nodes/alert-dialog.js.map +0 -1
- package/dist/nodes/animation.d.ts +0 -39
- package/dist/nodes/animation.d.ts.map +0 -1
- package/dist/nodes/animation.js +0 -326
- package/dist/nodes/animation.js.map +0 -1
- package/dist/nodes/application.d.ts +0 -12
- package/dist/nodes/application.d.ts.map +0 -1
- package/dist/nodes/application.js +0 -51
- package/dist/nodes/application.js.map +0 -1
- package/dist/nodes/calendar.d.ts +0 -18
- package/dist/nodes/calendar.d.ts.map +0 -1
- package/dist/nodes/calendar.js +0 -28
- package/dist/nodes/calendar.js.map +0 -1
- package/dist/nodes/color-dialog-button.d.ts +0 -15
- package/dist/nodes/color-dialog-button.d.ts.map +0 -1
- package/dist/nodes/color-dialog-button.js +0 -43
- package/dist/nodes/color-dialog-button.js.map +0 -1
- package/dist/nodes/column-view-column.d.ts +0 -36
- package/dist/nodes/column-view-column.d.ts.map +0 -1
- package/dist/nodes/column-view-column.js +0 -168
- package/dist/nodes/column-view-column.js.map +0 -1
- package/dist/nodes/container-slot.d.ts +0 -18
- package/dist/nodes/container-slot.d.ts.map +0 -1
- package/dist/nodes/container-slot.js +0 -81
- package/dist/nodes/container-slot.js.map +0 -1
- package/dist/nodes/dialog.d.ts +0 -10
- package/dist/nodes/dialog.d.ts.map +0 -1
- package/dist/nodes/dialog.js +0 -20
- package/dist/nodes/dialog.js.map +0 -1
- package/dist/nodes/drawing-area.d.ts +0 -19
- package/dist/nodes/drawing-area.d.ts.map +0 -1
- package/dist/nodes/drawing-area.js +0 -40
- package/dist/nodes/drawing-area.js.map +0 -1
- package/dist/nodes/event-controller.d.ts +0 -15
- package/dist/nodes/event-controller.d.ts.map +0 -1
- package/dist/nodes/event-controller.js +0 -73
- package/dist/nodes/event-controller.js.map +0 -1
- package/dist/nodes/fixed-child.d.ts +0 -19
- package/dist/nodes/fixed-child.d.ts.map +0 -1
- package/dist/nodes/fixed-child.js +0 -99
- package/dist/nodes/fixed-child.js.map +0 -1
- package/dist/nodes/font-dialog-button.d.ts +0 -15
- package/dist/nodes/font-dialog-button.d.ts.map +0 -1
- package/dist/nodes/font-dialog-button.js +0 -76
- package/dist/nodes/font-dialog-button.js.map +0 -1
- package/dist/nodes/grid-child.d.ts +0 -19
- package/dist/nodes/grid-child.d.ts.map +0 -1
- package/dist/nodes/grid-child.js +0 -94
- package/dist/nodes/grid-child.js.map +0 -1
- package/dist/nodes/internal/accessible.d.ts +0 -5
- package/dist/nodes/internal/accessible.d.ts.map +0 -1
- package/dist/nodes/internal/accessible.js +0 -119
- package/dist/nodes/internal/accessible.js.map +0 -1
- package/dist/nodes/internal/bound-item.d.ts +0 -4
- package/dist/nodes/internal/bound-item.d.ts.map +0 -1
- package/dist/nodes/internal/bound-item.js +0 -2
- package/dist/nodes/internal/bound-item.js.map +0 -1
- package/dist/nodes/internal/construct.d.ts +0 -3
- package/dist/nodes/internal/construct.d.ts.map +0 -1
- package/dist/nodes/internal/construct.js +0 -44
- package/dist/nodes/internal/construct.js.map +0 -1
- package/dist/nodes/internal/predicates.d.ts +0 -51
- package/dist/nodes/internal/predicates.d.ts.map +0 -1
- package/dist/nodes/internal/predicates.js +0 -36
- package/dist/nodes/internal/predicates.js.map +0 -1
- package/dist/nodes/internal/props.d.ts +0 -6
- package/dist/nodes/internal/props.d.ts.map +0 -1
- package/dist/nodes/internal/props.js +0 -43
- package/dist/nodes/internal/props.js.map +0 -1
- package/dist/nodes/internal/signal-store.d.ts +0 -22
- package/dist/nodes/internal/signal-store.d.ts.map +0 -1
- package/dist/nodes/internal/signal-store.js +0 -98
- package/dist/nodes/internal/signal-store.js.map +0 -1
- package/dist/nodes/internal/text-buffer-controller.d.ts +0 -40
- package/dist/nodes/internal/text-buffer-controller.d.ts.map +0 -1
- package/dist/nodes/internal/text-buffer-controller.js +0 -327
- package/dist/nodes/internal/text-buffer-controller.js.map +0 -1
- package/dist/nodes/internal/widget.d.ts +0 -8
- package/dist/nodes/internal/widget.d.ts.map +0 -1
- package/dist/nodes/internal/widget.js +0 -68
- package/dist/nodes/internal/widget.js.map +0 -1
- package/dist/nodes/level-bar.d.ts +0 -12
- package/dist/nodes/level-bar.d.ts.map +0 -1
- package/dist/nodes/level-bar.js +0 -24
- package/dist/nodes/level-bar.js.map +0 -1
- package/dist/nodes/list-item-node.d.ts +0 -12
- package/dist/nodes/list-item-node.d.ts.map +0 -1
- package/dist/nodes/list-item-node.js +0 -45
- package/dist/nodes/list-item-node.js.map +0 -1
- package/dist/nodes/list.d.ts +0 -100
- package/dist/nodes/list.d.ts.map +0 -1
- package/dist/nodes/list.js +0 -950
- package/dist/nodes/list.js.map +0 -1
- package/dist/nodes/menu.d.ts +0 -7
- package/dist/nodes/menu.d.ts.map +0 -1
- package/dist/nodes/menu.js +0 -20
- package/dist/nodes/menu.js.map +0 -1
- package/dist/nodes/models/menu.d.ts +0 -47
- package/dist/nodes/models/menu.d.ts.map +0 -1
- package/dist/nodes/models/menu.js +0 -240
- package/dist/nodes/models/menu.js.map +0 -1
- package/dist/nodes/navigation-page.d.ts +0 -19
- package/dist/nodes/navigation-page.d.ts.map +0 -1
- package/dist/nodes/navigation-page.js +0 -129
- package/dist/nodes/navigation-page.js.map +0 -1
- package/dist/nodes/navigation-view.d.ts +0 -19
- package/dist/nodes/navigation-view.d.ts.map +0 -1
- package/dist/nodes/navigation-view.js +0 -51
- package/dist/nodes/navigation-view.js.map +0 -1
- package/dist/nodes/notebook-page-tab.d.ts +0 -15
- package/dist/nodes/notebook-page-tab.d.ts.map +0 -1
- package/dist/nodes/notebook-page-tab.js +0 -40
- package/dist/nodes/notebook-page-tab.js.map +0 -1
- package/dist/nodes/notebook-page.d.ts +0 -29
- package/dist/nodes/notebook-page.d.ts.map +0 -1
- package/dist/nodes/notebook-page.js +0 -151
- package/dist/nodes/notebook-page.js.map +0 -1
- package/dist/nodes/notebook.d.ts +0 -16
- package/dist/nodes/notebook.d.ts.map +0 -1
- package/dist/nodes/notebook.js +0 -31
- package/dist/nodes/notebook.js.map +0 -1
- package/dist/nodes/overlay-child.d.ts +0 -20
- package/dist/nodes/overlay-child.d.ts.map +0 -1
- package/dist/nodes/overlay-child.js +0 -109
- package/dist/nodes/overlay-child.js.map +0 -1
- package/dist/nodes/popover-menu.d.ts +0 -19
- package/dist/nodes/popover-menu.d.ts.map +0 -1
- package/dist/nodes/popover-menu.js +0 -54
- package/dist/nodes/popover-menu.js.map +0 -1
- package/dist/nodes/scale.d.ts +0 -10
- package/dist/nodes/scale.d.ts.map +0 -1
- package/dist/nodes/scale.js +0 -19
- package/dist/nodes/scale.js.map +0 -1
- package/dist/nodes/scrolled-window.d.ts +0 -11
- package/dist/nodes/scrolled-window.d.ts.map +0 -1
- package/dist/nodes/scrolled-window.js +0 -18
- package/dist/nodes/scrolled-window.js.map +0 -1
- package/dist/nodes/search-bar.d.ts +0 -11
- package/dist/nodes/search-bar.d.ts.map +0 -1
- package/dist/nodes/search-bar.js +0 -16
- package/dist/nodes/search-bar.js.map +0 -1
- package/dist/nodes/shortcut.d.ts +0 -19
- package/dist/nodes/shortcut.d.ts.map +0 -1
- package/dist/nodes/shortcut.js +0 -72
- package/dist/nodes/shortcut.js.map +0 -1
- package/dist/nodes/slot.d.ts +0 -21
- package/dist/nodes/slot.d.ts.map +0 -1
- package/dist/nodes/slot.js +0 -102
- package/dist/nodes/slot.js.map +0 -1
- package/dist/nodes/source-view.d.ts +0 -18
- package/dist/nodes/source-view.d.ts.map +0 -1
- package/dist/nodes/source-view.js +0 -94
- package/dist/nodes/source-view.js.map +0 -1
- package/dist/nodes/spin-row.d.ts +0 -14
- package/dist/nodes/spin-row.d.ts.map +0 -1
- package/dist/nodes/spin-row.js +0 -46
- package/dist/nodes/spin-row.js.map +0 -1
- package/dist/nodes/stack-page.d.ts +0 -22
- package/dist/nodes/stack-page.d.ts.map +0 -1
- package/dist/nodes/stack-page.js +0 -140
- package/dist/nodes/stack-page.js.map +0 -1
- package/dist/nodes/stack.d.ts +0 -13
- package/dist/nodes/stack.d.ts.map +0 -1
- package/dist/nodes/stack.js +0 -21
- package/dist/nodes/stack.js.map +0 -1
- package/dist/nodes/switch-row.d.ts +0 -11
- package/dist/nodes/switch-row.d.ts.map +0 -1
- package/dist/nodes/switch-row.js +0 -15
- package/dist/nodes/switch-row.js.map +0 -1
- package/dist/nodes/text-anchor.d.ts +0 -23
- package/dist/nodes/text-anchor.d.ts.map +0 -1
- package/dist/nodes/text-anchor.js +0 -74
- package/dist/nodes/text-anchor.js.map +0 -1
- package/dist/nodes/text-content.d.ts +0 -12
- package/dist/nodes/text-content.d.ts.map +0 -1
- package/dist/nodes/text-content.js +0 -2
- package/dist/nodes/text-content.js.map +0 -1
- package/dist/nodes/text-paintable.d.ts +0 -19
- package/dist/nodes/text-paintable.d.ts.map +0 -1
- package/dist/nodes/text-paintable.js +0 -42
- package/dist/nodes/text-paintable.js.map +0 -1
- package/dist/nodes/text-segment.d.ts +0 -18
- package/dist/nodes/text-segment.d.ts.map +0 -1
- package/dist/nodes/text-segment.js +0 -38
- package/dist/nodes/text-segment.js.map +0 -1
- package/dist/nodes/text-tag.d.ts +0 -38
- package/dist/nodes/text-tag.d.ts.map +0 -1
- package/dist/nodes/text-tag.js +0 -247
- package/dist/nodes/text-tag.js.map +0 -1
- package/dist/nodes/text-view.d.ts +0 -29
- package/dist/nodes/text-view.d.ts.map +0 -1
- package/dist/nodes/text-view.js +0 -80
- package/dist/nodes/text-view.js.map +0 -1
- package/dist/nodes/toggle-group.d.ts +0 -17
- package/dist/nodes/toggle-group.d.ts.map +0 -1
- package/dist/nodes/toggle-group.js +0 -65
- package/dist/nodes/toggle-group.js.map +0 -1
- package/dist/nodes/toggle.d.ts +0 -16
- package/dist/nodes/toggle.d.ts.map +0 -1
- package/dist/nodes/toggle.js +0 -61
- package/dist/nodes/toggle.js.map +0 -1
- package/dist/nodes/virtual.d.ts +0 -7
- package/dist/nodes/virtual.d.ts.map +0 -1
- package/dist/nodes/virtual.js +0 -9
- package/dist/nodes/virtual.js.map +0 -1
- package/dist/nodes/web-view.d.ts +0 -11
- package/dist/nodes/web-view.d.ts.map +0 -1
- package/dist/nodes/web-view.js +0 -16
- package/dist/nodes/web-view.js.map +0 -1
- package/dist/nodes/widget.d.ts +0 -26
- package/dist/nodes/widget.d.ts.map +0 -1
- package/dist/nodes/widget.js +0 -308
- package/dist/nodes/widget.js.map +0 -1
- package/dist/nodes/window.d.ts +0 -31
- package/dist/nodes/window.d.ts.map +0 -1
- package/dist/nodes/window.js +0 -122
- package/dist/nodes/window.js.map +0 -1
- package/dist/portal.d.ts +0 -29
- package/dist/portal.d.ts.map +0 -1
- package/dist/portal.js +0 -35
- package/dist/portal.js.map +0 -1
- package/dist/reconciler.d.ts +0 -34
- package/dist/reconciler.d.ts.map +0 -1
- package/dist/reconciler.js +0 -48
- package/dist/reconciler.js.map +0 -1
- package/dist/registry.d.ts +0 -18
- package/dist/registry.d.ts.map +0 -1
- package/dist/registry.js +0 -98
- package/dist/registry.js.map +0 -1
- package/dist/render.d.ts +0 -117
- package/dist/render.d.ts.map +0 -1
- package/dist/render.js +0 -159
- package/dist/render.js.map +0 -1
- package/dist/types.d.ts +0 -6
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/use-property.d.ts +0 -29
- package/dist/use-property.d.ts.map +0 -1
- package/dist/use-property.js +0 -44
- package/dist/use-property.js.map +0 -1
- package/dist/use-setting.d.ts +0 -36
- package/dist/use-setting.d.ts.map +0 -1
- package/dist/use-setting.js +0 -68
- package/dist/use-setting.js.map +0 -1
- package/src/components/compound.tsx +0 -57
- package/src/components/list.tsx +0 -140
- package/src/components/slot-widget.tsx +0 -46
- package/src/errors.ts +0 -53
- package/src/factory.ts +0 -62
- package/src/generated/compounds.ts +0 -2741
- package/src/generated/internal.ts +0 -3642
- package/src/generated/jsx.ts +0 -17383
- package/src/generated/registry.ts +0 -17
- package/src/host-config.ts +0 -219
- package/src/jsx.ts +0 -1033
- package/src/metadata.ts +0 -43
- package/src/node.ts +0 -107
- package/src/nodes/adjustable.ts +0 -68
- package/src/nodes/alert-dialog-response.ts +0 -78
- package/src/nodes/alert-dialog.ts +0 -55
- package/src/nodes/animation.ts +0 -409
- package/src/nodes/application.ts +0 -61
- package/src/nodes/calendar.ts +0 -42
- package/src/nodes/color-dialog-button.ts +0 -69
- package/src/nodes/column-view-column.ts +0 -189
- package/src/nodes/container-slot.ts +0 -100
- package/src/nodes/dialog.ts +0 -25
- package/src/nodes/drawing-area.ts +0 -53
- package/src/nodes/event-controller.ts +0 -96
- package/src/nodes/fixed-child.ts +0 -122
- package/src/nodes/font-dialog-button.ts +0 -107
- package/src/nodes/grid-child.ts +0 -116
- package/src/nodes/internal/accessible.ts +0 -155
- package/src/nodes/internal/bound-item.ts +0 -4
- package/src/nodes/internal/construct.ts +0 -60
- package/src/nodes/internal/predicates.ts +0 -80
- package/src/nodes/internal/props.ts +0 -51
- package/src/nodes/internal/signal-store.ts +0 -141
- package/src/nodes/internal/text-buffer-controller.ts +0 -417
- package/src/nodes/internal/widget.ts +0 -74
- package/src/nodes/level-bar.ts +0 -36
- package/src/nodes/list-item-node.ts +0 -53
- package/src/nodes/list.ts +0 -1082
- package/src/nodes/menu.ts +0 -27
- package/src/nodes/models/menu.ts +0 -314
- package/src/nodes/navigation-page.ts +0 -154
- package/src/nodes/navigation-view.ts +0 -66
- package/src/nodes/notebook-page-tab.ts +0 -55
- package/src/nodes/notebook-page.ts +0 -189
- package/src/nodes/notebook.ts +0 -42
- package/src/nodes/overlay-child.ts +0 -130
- package/src/nodes/popover-menu.ts +0 -67
- package/src/nodes/scale.ts +0 -28
- package/src/nodes/scrolled-window.ts +0 -23
- package/src/nodes/search-bar.ts +0 -27
- package/src/nodes/shortcut.ts +0 -86
- package/src/nodes/slot.ts +0 -138
- package/src/nodes/source-view.ts +0 -130
- package/src/nodes/spin-row.ts +0 -72
- package/src/nodes/stack-page.ts +0 -170
- package/src/nodes/stack.ts +0 -35
- package/src/nodes/switch-row.ts +0 -26
- package/src/nodes/text-anchor.ts +0 -88
- package/src/nodes/text-content.ts +0 -14
- package/src/nodes/text-paintable.ts +0 -51
- package/src/nodes/text-segment.ts +0 -55
- package/src/nodes/text-tag.ts +0 -298
- package/src/nodes/text-view.ts +0 -100
- package/src/nodes/toggle-group.ts +0 -81
- package/src/nodes/toggle.ts +0 -72
- package/src/nodes/virtual.ts +0 -16
- package/src/nodes/web-view.ts +0 -22
- package/src/nodes/widget.ts +0 -369
- package/src/nodes/window.ts +0 -172
- package/src/portal.ts +0 -37
- package/src/reconciler.ts +0 -52
- package/src/registry.ts +0 -119
- package/src/render.tsx +0 -192
- package/src/types.ts +0 -13
- package/src/use-property.ts +0 -58
- package/src/use-setting.ts +0 -96
- /package/dist/{types.js → reconciler/types.js} +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as GObject from "@gtkx/gi/gobject";
|
|
2
|
+
import { collectConstructableProps, requireClassByName } from "../utils/gtype.js";
|
|
3
|
+
import { constructionSkipProps } from "./element-props.js";
|
|
4
|
+
import { registerState } from "./state.js";
|
|
5
|
+
import { createWrapperNode } from "./wrapper-node.js";
|
|
6
|
+
const pickConstructProps = (gtype, props) => {
|
|
7
|
+
const constructable = collectConstructableProps(gtype);
|
|
8
|
+
const skipped = constructionSkipProps(gtype);
|
|
9
|
+
const result = {};
|
|
10
|
+
for (const name in props) {
|
|
11
|
+
if (constructable.has(name) && !skipped.has(name))
|
|
12
|
+
result[name] = props[name];
|
|
13
|
+
}
|
|
14
|
+
return result;
|
|
15
|
+
};
|
|
16
|
+
export const createElementInstance = (type, props, rootContainer) => {
|
|
17
|
+
const cls = requireClassByName(type);
|
|
18
|
+
const node = new cls(pickConstructProps(GObject.typeFromName(type), props));
|
|
19
|
+
registerState(node, { props, rootContainer });
|
|
20
|
+
return node;
|
|
21
|
+
};
|
|
22
|
+
export const createWrapperInstance = (kind, props, rootContainer) => {
|
|
23
|
+
const node = createWrapperNode();
|
|
24
|
+
registerState(node, { kind, props, rootContainer });
|
|
25
|
+
return node;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=instance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance.js","sourceRoot":"","sources":["../../src/reconciler/instance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAa,aAAa,EAAE,MAAM,YAAY,CAAC;AAEtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtD,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAE,KAAY,EAAS,EAAE;IAC9D,MAAM,aAAa,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAY,EAAE,KAAY,EAAE,aAAwB,EAAQ,EAAE;IAChG,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5E,aAAa,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAiB,EAAE,KAAY,EAAE,aAAwB,EAAQ,EAAE;IACrG,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;IACjC,aAAa,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;IACpD,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC","sourcesContent":["import * as GObject from \"@gtkx/gi/gobject\";\nimport { collectConstructableProps, requireClassByName } from \"../utils/gtype.js\";\nimport { constructionSkipProps } from \"./element-props.js\";\nimport { type Node, registerState } from \"./state.js\";\nimport type { Container, Props } from \"./types.js\";\nimport { createWrapperNode } from \"./wrapper-node.js\";\nimport type { WrapperKind } from \"./wrapper-protocol.js\";\n\nconst pickConstructProps = (gtype: bigint, props: Props): Props => {\n const constructable = collectConstructableProps(gtype);\n const skipped = constructionSkipProps(gtype);\n const result: Props = {};\n for (const name in props) {\n if (constructable.has(name) && !skipped.has(name)) result[name] = props[name];\n }\n return result;\n};\n\nexport const createElementInstance = (type: string, props: Props, rootContainer: Container): Node => {\n const cls = requireClassByName(type);\n const node = new cls(pickConstructProps(GObject.typeFromName(type), props));\n registerState(node, { props, rootContainer });\n return node;\n};\n\nexport const createWrapperInstance = (kind: WrapperKind, props: Props, rootContainer: Container): Node => {\n const node = createWrapperNode();\n registerState(node, { kind, props, rootContainer });\n return node;\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"label-text-rebuild.d.ts","sourceRoot":"","sources":["../../src/reconciler/label-text-rebuild.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAAW,MAAM,YAAY,CAAC;AAiBhD,eAAO,MAAM,wBAAwB,SAAU,IAAI,KAAG,IAMrD,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as Gtk from "@gtkx/gi/gtk";
|
|
2
|
+
import { scheduleContentRebuild } from "./content-rebuild.js";
|
|
3
|
+
import { stateOf } from "./state.js";
|
|
4
|
+
import { isLabelTextNode } from "./text-node.js";
|
|
5
|
+
const rebuildLabelText = (owner) => {
|
|
6
|
+
const state = stateOf(owner);
|
|
7
|
+
const runs = state.children.filter(isLabelTextNode);
|
|
8
|
+
if (state.props.label !== undefined) {
|
|
9
|
+
if (runs.length === 0)
|
|
10
|
+
return;
|
|
11
|
+
throw new Error("<GtkLabel> cannot mix a `label` prop with text children; use one or the other");
|
|
12
|
+
}
|
|
13
|
+
const text = runs
|
|
14
|
+
.filter((run) => !stateOf(run).hidden)
|
|
15
|
+
.map((run) => String(stateOf(run).props.text))
|
|
16
|
+
.join("");
|
|
17
|
+
owner.setLabel(text);
|
|
18
|
+
};
|
|
19
|
+
export const scheduleLabelTextRebuild = (node) => {
|
|
20
|
+
scheduleContentRebuild(node, (candidate) => candidate instanceof Gtk.Label, (owner) => () => rebuildLabelText(owner));
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=label-text-rebuild.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"label-text-rebuild.js","sourceRoot":"","sources":["../../src/reconciler/label-text-rebuild.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAa,OAAO,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,gBAAgB,GAAG,CAAC,KAAgB,EAAQ,EAAE;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACpD,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC9B,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC;IACrG,CAAC;IACD,MAAM,IAAI,GAAG,IAAI;SACZ,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;SACrC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC7C,IAAI,CAAC,EAAE,CAAC,CAAC;IACd,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,IAAU,EAAQ,EAAE;IACzD,sBAAsB,CAClB,IAAI,EACJ,CAAC,SAAS,EAA0B,EAAE,CAAC,SAAS,YAAY,GAAG,CAAC,KAAK,EACrE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAC3C,CAAC;AACN,CAAC,CAAC","sourcesContent":["import * as Gtk from \"@gtkx/gi/gtk\";\nimport { scheduleContentRebuild } from \"./content-rebuild.js\";\nimport { type Node, stateOf } from \"./state.js\";\nimport { isLabelTextNode } from \"./text-node.js\";\n\nconst rebuildLabelText = (owner: Gtk.Label): void => {\n const state = stateOf(owner);\n const runs = state.children.filter(isLabelTextNode);\n if (state.props.label !== undefined) {\n if (runs.length === 0) return;\n throw new Error(\"<GtkLabel> cannot mix a `label` prop with text children; use one or the other\");\n }\n const text = runs\n .filter((run) => !stateOf(run).hidden)\n .map((run) => String(stateOf(run).props.text))\n .join(\"\");\n owner.setLabel(text);\n};\n\nexport const scheduleLabelTextRebuild = (node: Node): void => {\n scheduleContentRebuild(\n node,\n (candidate): candidate is Gtk.Label => candidate instanceof Gtk.Label,\n (owner) => () => rebuildLabelText(owner),\n );\n};\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ReactNode, ReactPortal } from "react";
|
|
2
|
+
import type { Container } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Creates a React portal that renders `children` into a different container in the widget tree.
|
|
5
|
+
*
|
|
6
|
+
* @param children The nodes to render inside the container.
|
|
7
|
+
* @param container The GObject or root element to render into.
|
|
8
|
+
* @param key An optional React key for the portal.
|
|
9
|
+
*/
|
|
10
|
+
export declare const createPortal: (children: ReactNode, container: Container, key?: string | null) => ReactPortal;
|
|
11
|
+
//# sourceMappingURL=portal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portal.d.ts","sourceRoot":"","sources":["../../src/reconciler/portal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQ5C;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,aAAc,SAAS,aAAa,SAAS,QAAQ,MAAM,GAAG,IAAI,KAAG,WAW7F,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a React portal that renders `children` into a different container in the widget tree.
|
|
3
|
+
*
|
|
4
|
+
* @param children The nodes to render inside the container.
|
|
5
|
+
* @param container The GObject or root element to render into.
|
|
6
|
+
* @param key An optional React key for the portal.
|
|
7
|
+
*/
|
|
8
|
+
export const createPortal = (children, container, key) => {
|
|
9
|
+
const portal = {
|
|
10
|
+
$$typeof: Symbol.for("react.portal"),
|
|
11
|
+
type: "",
|
|
12
|
+
props: { children },
|
|
13
|
+
key: key ?? null,
|
|
14
|
+
children,
|
|
15
|
+
containerInfo: container,
|
|
16
|
+
implementation: null,
|
|
17
|
+
};
|
|
18
|
+
return portal;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=portal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portal.js","sourceRoot":"","sources":["../../src/reconciler/portal.ts"],"names":[],"mappings":"AASA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAmB,EAAE,SAAoB,EAAE,GAAmB,EAAe,EAAE;IACxG,MAAM,MAAM,GAAiB;QACzB,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;QACpC,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,EAAE,QAAQ,EAAE;QACnB,GAAG,EAAE,GAAG,IAAI,IAAI;QAChB,QAAQ;QACR,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,IAAI;KACvB,CAAC;IACF,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC","sourcesContent":["import type { ReactNode, ReactPortal } from \"react\";\nimport type { Container } from \"./types.js\";\n\ntype ObjectPortal = ReactPortal & {\n $$typeof: symbol;\n containerInfo: Container;\n implementation: null;\n};\n\n/**\n * Creates a React portal that renders `children` into a different container in the widget tree.\n *\n * @param children The nodes to render inside the container.\n * @param container The GObject or root element to render into.\n * @param key An optional React key for the portal.\n */\nexport const createPortal = (children: ReactNode, container: Container, key?: string | null): ReactPortal => {\n const portal: ObjectPortal = {\n $$typeof: Symbol.for(\"react.portal\"),\n type: \"\",\n props: { children },\n key: key ?? null,\n children,\n containerInfo: container,\n implementation: null,\n };\n return portal;\n};\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Logger } from "@gtkx/utils";
|
|
2
|
+
export declare const log: Logger;
|
|
3
|
+
export type ReconcilerErrorHandler = (error: unknown) => void;
|
|
4
|
+
export declare function setReconcilerErrorHandler(handler: ReconcilerErrorHandler | null): ReconcilerErrorHandler | null;
|
|
5
|
+
export declare function reportReconcilerError(error: unknown): void;
|
|
6
|
+
export declare function catchReconcilerError(fn: () => void): void;
|
|
7
|
+
//# sourceMappingURL=reconciler-error-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconciler-error-handler.d.ts","sourceRoot":"","sources":["../../src/reconciler/reconciler-error-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAExD,eAAO,MAAM,GAAG,EAAE,MAA8B,CAAC;AAEjD,MAAM,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;AAI9D,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,GAAG,sBAAsB,GAAG,IAAI,CAI/G;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAM1D;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAMzD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { createLogger } from "@gtkx/utils";
|
|
2
|
+
export const log = createLogger("react");
|
|
3
|
+
let errorHandler = null;
|
|
4
|
+
export function setReconcilerErrorHandler(handler) {
|
|
5
|
+
const prior = errorHandler;
|
|
6
|
+
errorHandler = handler;
|
|
7
|
+
return prior;
|
|
8
|
+
}
|
|
9
|
+
export function reportReconcilerError(error) {
|
|
10
|
+
if (errorHandler) {
|
|
11
|
+
errorHandler(error);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
log.error("unhandled reconciler error", error);
|
|
15
|
+
}
|
|
16
|
+
export function catchReconcilerError(fn) {
|
|
17
|
+
try {
|
|
18
|
+
fn();
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
reportReconcilerError(error);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=reconciler-error-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconciler-error-handler.js","sourceRoot":"","sources":["../../src/reconciler/reconciler-error-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAe,MAAM,aAAa,CAAC;AAExD,MAAM,CAAC,MAAM,GAAG,GAAW,YAAY,CAAC,OAAO,CAAC,CAAC;AAIjD,IAAI,YAAY,GAAkC,IAAI,CAAC;AAEvD,MAAM,UAAU,yBAAyB,CAAC,OAAsC;IAC5E,MAAM,KAAK,GAAG,YAAY,CAAC;IAC3B,YAAY,GAAG,OAAO,CAAC;IACvB,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAChD,IAAI,YAAY,EAAE,CAAC;QACf,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,OAAO;IACX,CAAC;IACD,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,EAAc;IAC/C,IAAI,CAAC;QACD,EAAE,EAAE,CAAC;IACT,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;AACL,CAAC","sourcesContent":["import { createLogger, type Logger } from \"@gtkx/utils\";\n\nexport const log: Logger = createLogger(\"react\");\n\nexport type ReconcilerErrorHandler = (error: unknown) => void;\n\nlet errorHandler: ReconcilerErrorHandler | null = null;\n\nexport function setReconcilerErrorHandler(handler: ReconcilerErrorHandler | null): ReconcilerErrorHandler | null {\n const prior = errorHandler;\n errorHandler = handler;\n return prior;\n}\n\nexport function reportReconcilerError(error: unknown): void {\n if (errorHandler) {\n errorHandler(error);\n return;\n }\n log.error(\"unhandled reconciler error\", error);\n}\n\nexport function catchReconcilerError(fn: () => void): void {\n try {\n fn();\n } catch (error) {\n reportReconcilerError(error);\n }\n}\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { Container } from "./types.js";
|
|
3
|
+
type ReconcilerErrorCallback = (error: Error, info: {
|
|
4
|
+
componentStack?: string | null;
|
|
5
|
+
}) => void;
|
|
6
|
+
export type ReconcilerRootOptions = {
|
|
7
|
+
containerInfo: Container;
|
|
8
|
+
onUncaughtError: ReconcilerErrorCallback;
|
|
9
|
+
onCaughtError: ReconcilerErrorCallback;
|
|
10
|
+
onRecoverableError?: ReconcilerErrorCallback;
|
|
11
|
+
};
|
|
12
|
+
export type ReconcilerRoot = {
|
|
13
|
+
update(element: ReactNode): void;
|
|
14
|
+
unmount<R>(free: (root: ReconcilerRoot) => R): R | undefined;
|
|
15
|
+
};
|
|
16
|
+
export declare const createReconcilerRoot: (options: ReconcilerRootOptions) => ReconcilerRoot;
|
|
17
|
+
export declare const unmountAllReconcilerRoots: (free: (root: ReconcilerRoot) => void) => void;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=reconciler-root.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconciler-root.d.ts","sourceRoot":"","sources":["../../src/reconciler/reconciler-root.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAM5C,KAAK,uBAAuB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,KAAK,IAAI,CAAC;AAEhG,MAAM,MAAM,qBAAqB,GAAG;IAChC,aAAa,EAAE,SAAS,CAAC;IACzB,eAAe,EAAE,uBAAuB,CAAC;IACzC,aAAa,EAAE,uBAAuB,CAAC;IACvC,kBAAkB,CAAC,EAAE,uBAAuB,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IACzB,MAAM,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,CAAC;IACjC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;CAChE,CAAC;AAIF,eAAO,MAAM,oBAAoB,YAAa,qBAAqB,KAAG,cA0BrE,CAAC;AAEF,eAAO,MAAM,yBAAyB,SAAU,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,KAAG,IAIhF,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { reconciler } from "./reconciler.js";
|
|
2
|
+
const noop = () => { };
|
|
3
|
+
const activeRoots = new Set();
|
|
4
|
+
export const createReconcilerRoot = (options) => {
|
|
5
|
+
const fiberRoot = reconciler.createContainer(options.containerInfo, 1, null, false, null, "", options.onUncaughtError, options.onCaughtError, options.onRecoverableError ?? noop, noop);
|
|
6
|
+
const root = {
|
|
7
|
+
update: (element) => {
|
|
8
|
+
reconciler.updateContainer(element, fiberRoot, null, noop);
|
|
9
|
+
},
|
|
10
|
+
unmount: (free) => {
|
|
11
|
+
if (!activeRoots.delete(root))
|
|
12
|
+
return undefined;
|
|
13
|
+
return free(root);
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
activeRoots.add(root);
|
|
17
|
+
return root;
|
|
18
|
+
};
|
|
19
|
+
export const unmountAllReconcilerRoots = (free) => {
|
|
20
|
+
const roots = [...activeRoots];
|
|
21
|
+
activeRoots.clear();
|
|
22
|
+
roots.forEach(free);
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=reconciler-root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconciler-root.js","sourceRoot":"","sources":["../../src/reconciler/reconciler-root.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,MAAM,IAAI,GAAG,GAAS,EAAE,GAAE,CAAC,CAAC;AAkB5B,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAA8B,EAAkB,EAAE;IACnF,MAAM,SAAS,GAAc,UAAU,CAAC,eAAe,CACnD,OAAO,CAAC,aAAa,EACrB,CAAC,EACD,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,EAAE,EACF,OAAO,CAAC,eAAe,EACvB,OAAO,CAAC,aAAa,EACrB,OAAO,CAAC,kBAAkB,IAAI,IAAI,EAClC,IAAI,CACP,CAAC;IAEF,MAAM,IAAI,GAAmB;QACzB,MAAM,EAAE,CAAC,OAAkB,EAAQ,EAAE;YACjC,UAAU,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,EAAE,CAAI,IAAiC,EAAiB,EAAE;YAC7D,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,OAAO,SAAS,CAAC;YAChD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;KACJ,CAAC;IAEF,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,IAAoC,EAAQ,EAAE;IACpF,MAAM,KAAK,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;IAC/B,WAAW,CAAC,KAAK,EAAE,CAAC;IACpB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC,CAAC","sourcesContent":["import type { ReactNode } from \"react\";\nimport { reconciler } from \"./reconciler.js\";\nimport type { Container } from \"./types.js\";\n\nconst noop = (): void => {};\n\ntype FiberRoot = ReturnType<typeof reconciler.createContainer>;\n\ntype ReconcilerErrorCallback = (error: Error, info: { componentStack?: string | null }) => void;\n\nexport type ReconcilerRootOptions = {\n containerInfo: Container;\n onUncaughtError: ReconcilerErrorCallback;\n onCaughtError: ReconcilerErrorCallback;\n onRecoverableError?: ReconcilerErrorCallback;\n};\n\nexport type ReconcilerRoot = {\n update(element: ReactNode): void;\n unmount<R>(free: (root: ReconcilerRoot) => R): R | undefined;\n};\n\nconst activeRoots = new Set<ReconcilerRoot>();\n\nexport const createReconcilerRoot = (options: ReconcilerRootOptions): ReconcilerRoot => {\n const fiberRoot: FiberRoot = reconciler.createContainer(\n options.containerInfo,\n 1,\n null,\n false,\n null,\n \"\",\n options.onUncaughtError,\n options.onCaughtError,\n options.onRecoverableError ?? noop,\n noop,\n );\n\n const root: ReconcilerRoot = {\n update: (element: ReactNode): void => {\n reconciler.updateContainer(element, fiberRoot, null, noop);\n },\n unmount: <R>(free: (root: ReconcilerRoot) => R): R | undefined => {\n if (!activeRoots.delete(root)) return undefined;\n return free(root);\n },\n };\n\n activeRoots.add(root);\n return root;\n};\n\nexport const unmountAllReconcilerRoots = (free: (root: ReconcilerRoot) => void): void => {\n const roots = [...activeRoots];\n activeRoots.clear();\n roots.forEach(free);\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconciler.d.ts","sourceRoot":"","sources":["../../src/reconciler/reconciler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE7E,eAAO,MAAM,UAAU,EAAE,kBAAwD,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import ReactReconciler from "react-reconciler";
|
|
2
|
+
import packageJson from "../../package.json" with { type: "json" };
|
|
3
|
+
import { createHostConfig } from "./host-config.js";
|
|
4
|
+
export const reconciler = ReactReconciler(createHostConfig());
|
|
5
|
+
if (process.env.NODE_ENV !== "production") {
|
|
6
|
+
reconciler.injectIntoDevTools({
|
|
7
|
+
bundleType: 1,
|
|
8
|
+
version: packageJson.version,
|
|
9
|
+
rendererPackageName: "@gtkx/react",
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=reconciler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconciler.js","sourceRoot":"","sources":["../../src/reconciler/reconciler.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,kBAAkB,CAAC;AAC/C,OAAO,WAAW,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAA2B,MAAM,kBAAkB,CAAC;AAE7E,MAAM,CAAC,MAAM,UAAU,GAAuB,eAAe,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAElF,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;IACxC,UAAU,CAAC,kBAAkB,CAAC;QAC1B,UAAU,EAAE,CAAC;QACb,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,mBAAmB,EAAE,aAAa;KACrC,CAAC,CAAC;AACP,CAAC","sourcesContent":["import ReactReconciler from \"react-reconciler\";\nimport packageJson from \"../../package.json\" with { type: \"json\" };\nimport { createHostConfig, type ReconcilerInstance } from \"./host-config.js\";\n\nexport const reconciler: ReconcilerInstance = ReactReconciler(createHostConfig());\n\nif (process.env.NODE_ENV !== \"production\") {\n reconciler.injectIntoDevTools({\n bundleType: 1,\n version: packageJson.version,\n rendererPackageName: \"@gtkx/react\",\n });\n}\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import { type RootElement } from "./root-element.js";
|
|
3
|
+
/**
|
|
4
|
+
* A render root that mounts a React element tree into a container and can unmount it.
|
|
5
|
+
*/
|
|
6
|
+
export type Root = {
|
|
7
|
+
render(element: ReactNode): void;
|
|
8
|
+
unmount(): void;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Creates a render root for a container, wiring reconciler error handling to the container's signal store.
|
|
12
|
+
*
|
|
13
|
+
* @param container The root element to render into; defaults to the shared `rootElement`.
|
|
14
|
+
* @returns A root with `render` and `unmount` methods.
|
|
15
|
+
*/
|
|
16
|
+
export declare const createRoot: (container?: RootElement) => Root;
|
|
17
|
+
/**
|
|
18
|
+
* Unmounts all active render roots.
|
|
19
|
+
*
|
|
20
|
+
* @returns `true` once every root has been torn down.
|
|
21
|
+
*/
|
|
22
|
+
export declare const quit: () => true;
|
|
23
|
+
//# sourceMappingURL=render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/reconciler/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,mBAAmB,CAAC;AAUlE;;GAEG;AACH,MAAM,MAAM,IAAI,GAAG;IACf,MAAM,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,CAAC;IACjC,OAAO,IAAI,IAAI,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,eAAe,WAAW,KAAiB,IAuBjE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,IAAI,QAAO,IAGvB,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { log, setReconcilerErrorHandler } from "./reconciler-error-handler.js";
|
|
2
|
+
import { createReconcilerRoot, unmountAllReconcilerRoots } from "./reconciler-root.js";
|
|
3
|
+
import { rootElement } from "./root-element.js";
|
|
4
|
+
import { getSignalStore } from "./signal-store.js";
|
|
5
|
+
const priorHandlers = new WeakMap();
|
|
6
|
+
const teardownRoot = (root) => {
|
|
7
|
+
setReconcilerErrorHandler(priorHandlers.get(root) ?? null);
|
|
8
|
+
root.update(null);
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Creates a render root for a container, wiring reconciler error handling to the container's signal store.
|
|
12
|
+
*
|
|
13
|
+
* @param container The root element to render into; defaults to the shared `rootElement`.
|
|
14
|
+
* @returns A root with `render` and `unmount` methods.
|
|
15
|
+
*/
|
|
16
|
+
export const createRoot = (container = rootElement) => {
|
|
17
|
+
const onUncaughtError = (error) => {
|
|
18
|
+
getSignalStore(container).unblock();
|
|
19
|
+
throw error;
|
|
20
|
+
};
|
|
21
|
+
const onCaughtError = (error) => {
|
|
22
|
+
getSignalStore(container).unblock();
|
|
23
|
+
log.error("caught render error", error);
|
|
24
|
+
};
|
|
25
|
+
const priorHandler = setReconcilerErrorHandler(onUncaughtError);
|
|
26
|
+
const root = createReconcilerRoot({ containerInfo: container, onUncaughtError, onCaughtError });
|
|
27
|
+
priorHandlers.set(root, priorHandler);
|
|
28
|
+
return {
|
|
29
|
+
render: (element) => {
|
|
30
|
+
root.update(element);
|
|
31
|
+
},
|
|
32
|
+
unmount: () => {
|
|
33
|
+
root.unmount(teardownRoot);
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Unmounts all active render roots.
|
|
39
|
+
*
|
|
40
|
+
* @returns `true` once every root has been torn down.
|
|
41
|
+
*/
|
|
42
|
+
export const quit = () => {
|
|
43
|
+
unmountAllReconcilerRoots(teardownRoot);
|
|
44
|
+
return true;
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/reconciler/render.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAA+B,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC5G,OAAO,EAAE,oBAAoB,EAAuB,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAC5G,OAAO,EAAoB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,aAAa,GAAG,IAAI,OAAO,EAAiD,CAAC;AAEnF,MAAM,YAAY,GAAG,CAAC,IAAoB,EAAQ,EAAE;IAChD,yBAAyB,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAC3D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC,CAAC;AAUF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,SAAS,GAAgB,WAAW,EAAQ,EAAE;IACrE,MAAM,eAAe,GAAG,CAAC,KAAc,EAAQ,EAAE;QAC7C,cAAc,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,KAAK,CAAC;IAChB,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,CAAC,KAAc,EAAQ,EAAE;QAC3C,cAAc,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QACpC,GAAG,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,yBAAyB,CAAC,eAAe,CAAC,CAAC;IAEhE,MAAM,IAAI,GAAG,oBAAoB,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,CAAC;IAChG,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAEtC,OAAO;QACH,MAAM,EAAE,CAAC,OAAkB,EAAQ,EAAE;YACjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,EAAE,GAAS,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC/B,CAAC;KACJ,CAAC;AACN,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,GAAS,EAAE;IAC3B,yBAAyB,CAAC,YAAY,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC","sourcesContent":["import type { ReactNode } from \"react\";\nimport { log, type ReconcilerErrorHandler, setReconcilerErrorHandler } from \"./reconciler-error-handler.js\";\nimport { createReconcilerRoot, type ReconcilerRoot, unmountAllReconcilerRoots } from \"./reconciler-root.js\";\nimport { type RootElement, rootElement } from \"./root-element.js\";\nimport { getSignalStore } from \"./signal-store.js\";\n\nconst priorHandlers = new WeakMap<ReconcilerRoot, ReconcilerErrorHandler | null>();\n\nconst teardownRoot = (root: ReconcilerRoot): void => {\n setReconcilerErrorHandler(priorHandlers.get(root) ?? null);\n root.update(null);\n};\n\n/**\n * A render root that mounts a React element tree into a container and can unmount it.\n */\nexport type Root = {\n render(element: ReactNode): void;\n unmount(): void;\n};\n\n/**\n * Creates a render root for a container, wiring reconciler error handling to the container's signal store.\n *\n * @param container The root element to render into; defaults to the shared `rootElement`.\n * @returns A root with `render` and `unmount` methods.\n */\nexport const createRoot = (container: RootElement = rootElement): Root => {\n const onUncaughtError = (error: unknown): void => {\n getSignalStore(container).unblock();\n throw error;\n };\n const onCaughtError = (error: unknown): void => {\n getSignalStore(container).unblock();\n log.error(\"caught render error\", error);\n };\n\n const priorHandler = setReconcilerErrorHandler(onUncaughtError);\n\n const root = createReconcilerRoot({ containerInfo: container, onUncaughtError, onCaughtError });\n priorHandlers.set(root, priorHandler);\n\n return {\n render: (element: ReactNode): void => {\n root.update(element);\n },\n unmount: (): void => {\n root.unmount(teardownRoot);\n },\n };\n};\n\n/**\n * Unmounts all active render roots.\n *\n * @returns `true` once every root has been torn down.\n */\nexport const quit = (): true => {\n unmountAllReconcilerRoots(teardownRoot);\n return true;\n};\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
declare const ROOT_ELEMENT: unique symbol;
|
|
2
|
+
/**
|
|
3
|
+
* The type of the singleton marker used as the top-level render container.
|
|
4
|
+
*/
|
|
5
|
+
export type RootElement = {
|
|
6
|
+
[ROOT_ELEMENT]: true;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* The shared root element used as the default container for `createRoot`.
|
|
10
|
+
*/
|
|
11
|
+
export declare const rootElement: RootElement;
|
|
12
|
+
export declare const isRootElement: (value: unknown) => value is RootElement;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=root-element.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"root-element.d.ts","sourceRoot":"","sources":["../../src/reconciler/root-element.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,YAAY,EAAE,OAAO,MAAuC,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IAAE,CAAC,YAAY,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAEnD;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,WAAsC,CAAC;AAEjE,eAAO,MAAM,aAAa,UAAW,OAAO,KAAG,KAAK,IAAI,WACgB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
const ROOT_ELEMENT = Symbol.for("gtkx.rootElement");
|
|
2
|
+
/**
|
|
3
|
+
* The shared root element used as the default container for `createRoot`.
|
|
4
|
+
*/
|
|
5
|
+
export const rootElement = { [ROOT_ELEMENT]: true };
|
|
6
|
+
export const isRootElement = (value) => typeof value === "object" && value !== null && ROOT_ELEMENT in value;
|
|
7
|
+
//# sourceMappingURL=root-element.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"root-element.js","sourceRoot":"","sources":["../../src/reconciler/root-element.ts"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAAkB,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAOnE;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAgB,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;AAEjE,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 ROOT_ELEMENT: unique symbol = Symbol.for(\"gtkx.rootElement\");\n\n/**\n * The type of the singleton marker used as the top-level render container.\n */\nexport type RootElement = { [ROOT_ELEMENT]: true };\n\n/**\n * The shared root element used as the default container for `createRoot`.\n */\nexport const rootElement: RootElement = { [ROOT_ELEMENT]: true };\n\nexport const isRootElement = (value: unknown): value is RootElement =>\n typeof value === \"object\" && value !== null && ROOT_ELEMENT in value;\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type * as GObject from "@gtkx/gi/gobject";
|
|
2
|
+
import type { SignalHandler } from "@gtkx/runtime";
|
|
3
|
+
type SignalBinding = {
|
|
4
|
+
instance: GObject.Object;
|
|
5
|
+
signal: string;
|
|
6
|
+
handler?: SignalHandler | undefined;
|
|
7
|
+
};
|
|
8
|
+
export declare class SignalStore {
|
|
9
|
+
private instanceHandlers;
|
|
10
|
+
private blockDepth;
|
|
11
|
+
private getInstanceMap;
|
|
12
|
+
private gateHandler;
|
|
13
|
+
private disconnect;
|
|
14
|
+
private connect;
|
|
15
|
+
set(binding: SignalBinding): void;
|
|
16
|
+
clear(instance: GObject.Object): void;
|
|
17
|
+
block(): void;
|
|
18
|
+
unblock(): void;
|
|
19
|
+
}
|
|
20
|
+
export declare function getSignalStore(rootContainer: object): SignalStore;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=signal-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-store.d.ts","sourceRoot":"","sources":["../../src/reconciler/signal-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAgBnD,KAAK,aAAa,GAAG;IACjB,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;CACvC,CAAC;AAEF,qBAAa,WAAW;IACpB,OAAO,CAAC,gBAAgB,CAAuD;IAE/E,OAAO,CAAC,UAAU,CAAa;IAE/B,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,OAAO;IAOR,GAAG,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAOvC;IAEM,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAU3C;IAEM,KAAK,IAAI,IAAI,CAEnB;IAEM,OAAO,IAAI,IAAI,CAErB;CACJ;AAID,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,WAAW,CAOjE"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
const UNBLOCKED_SIGNALS = new Set([
|
|
2
|
+
"realize",
|
|
3
|
+
"unrealize",
|
|
4
|
+
"map",
|
|
5
|
+
"unmap",
|
|
6
|
+
"show",
|
|
7
|
+
"hide",
|
|
8
|
+
"destroy",
|
|
9
|
+
"resize",
|
|
10
|
+
"render",
|
|
11
|
+
"input",
|
|
12
|
+
"output",
|
|
13
|
+
]);
|
|
14
|
+
export class SignalStore {
|
|
15
|
+
instanceHandlers = new Map();
|
|
16
|
+
blockDepth = 0;
|
|
17
|
+
getInstanceMap(instance) {
|
|
18
|
+
let instanceMap = this.instanceHandlers.get(instance);
|
|
19
|
+
if (!instanceMap) {
|
|
20
|
+
instanceMap = new Map();
|
|
21
|
+
this.instanceHandlers.set(instance, instanceMap);
|
|
22
|
+
}
|
|
23
|
+
return instanceMap;
|
|
24
|
+
}
|
|
25
|
+
gateHandler(handler, signal, instance) {
|
|
26
|
+
return (...args) => {
|
|
27
|
+
if (this.blockDepth > 0 && !UNBLOCKED_SIGNALS.has(signal)) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
return handler(...args, instance);
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
disconnect(instance, signal) {
|
|
34
|
+
const instanceMap = this.instanceHandlers.get(instance);
|
|
35
|
+
if (!instanceMap)
|
|
36
|
+
return;
|
|
37
|
+
const handlerId = instanceMap.get(signal);
|
|
38
|
+
if (handlerId === undefined)
|
|
39
|
+
return;
|
|
40
|
+
instance.disconnect(handlerId);
|
|
41
|
+
instanceMap.delete(signal);
|
|
42
|
+
if (instanceMap.size === 0)
|
|
43
|
+
this.instanceHandlers.delete(instance);
|
|
44
|
+
}
|
|
45
|
+
connect(binding) {
|
|
46
|
+
const { instance, signal, handler } = binding;
|
|
47
|
+
const gatedHandler = this.gateHandler(handler, signal, instance);
|
|
48
|
+
const handlerId = instance.connect(signal, gatedHandler);
|
|
49
|
+
this.getInstanceMap(instance).set(signal, handlerId);
|
|
50
|
+
}
|
|
51
|
+
set(binding) {
|
|
52
|
+
const { instance, signal, handler } = binding;
|
|
53
|
+
this.disconnect(instance, signal);
|
|
54
|
+
if (handler) {
|
|
55
|
+
this.connect({ instance, signal, handler });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
clear(instance) {
|
|
59
|
+
const instanceMap = this.instanceHandlers.get(instance);
|
|
60
|
+
if (instanceMap) {
|
|
61
|
+
for (const [, handlerId] of instanceMap) {
|
|
62
|
+
instance.disconnect(handlerId);
|
|
63
|
+
}
|
|
64
|
+
this.instanceHandlers.delete(instance);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
block() {
|
|
68
|
+
this.blockDepth += 1;
|
|
69
|
+
}
|
|
70
|
+
unblock() {
|
|
71
|
+
if (this.blockDepth > 0)
|
|
72
|
+
this.blockDepth -= 1;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const signalStores = new WeakMap();
|
|
76
|
+
export function getSignalStore(rootContainer) {
|
|
77
|
+
let store = signalStores.get(rootContainer);
|
|
78
|
+
if (!store) {
|
|
79
|
+
store = new SignalStore();
|
|
80
|
+
signalStores.set(rootContainer, store);
|
|
81
|
+
}
|
|
82
|
+
return store;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=signal-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-store.js","sourceRoot":"","sources":["../../src/reconciler/signal-store.ts"],"names":[],"mappings":"AAGA,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAC9B,SAAS;IACT,WAAW;IACX,KAAK;IACL,OAAO;IACP,MAAM;IACN,MAAM;IACN,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,QAAQ;CACX,CAAC,CAAC;AAQH,MAAM,OAAO,WAAW;IACZ,gBAAgB,GAA6C,IAAI,GAAG,EAAE,CAAC;IAEvE,UAAU,GAAW,CAAC,CAAC;IAEvB,cAAc,CAAC,QAAwB;QAC3C,IAAI,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAEO,WAAW,CAAC,OAAsB,EAAE,MAAc,EAAE,QAAwB;QAChF,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE;YAC1B,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxD,OAAO;YACX,CAAC;YACD,OAAO,OAAO,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAC;QACtC,CAAC,CAAC;IACN,CAAC;IAEO,UAAU,CAAC,QAAwB,EAAE,MAAc;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW;YAAE,OAAO;QACzB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO;QACpC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC/B,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC;YAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvE,CAAC;IAEO,OAAO,CAAC,OAAmD;QAC/D,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACzD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzD,CAAC;IAEM,GAAG,CAAC,OAAsB;QAC7B,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAElC,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,QAAwB;QACjC,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAExD,IAAI,WAAW,EAAE,CAAC;YACd,KAAK,MAAM,CAAC,EAAE,SAAS,CAAC,IAAI,WAAW,EAAE,CAAC;gBACtC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACnC,CAAC;YAED,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;IACL,CAAC;IAEM,KAAK;QACR,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;IACzB,CAAC;IAEM,OAAO;QACV,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC;YAAE,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;IAClD,CAAC;CACJ;AAED,MAAM,YAAY,GAAG,IAAI,OAAO,EAAuB,CAAC;AAExD,MAAM,UAAU,cAAc,CAAC,aAAqB;IAChD,IAAI,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;QAC1B,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC","sourcesContent":["import type * as GObject from \"@gtkx/gi/gobject\";\nimport type { SignalHandler } from \"@gtkx/runtime\";\n\nconst UNBLOCKED_SIGNALS = new Set([\n \"realize\",\n \"unrealize\",\n \"map\",\n \"unmap\",\n \"show\",\n \"hide\",\n \"destroy\",\n \"resize\",\n \"render\",\n \"input\",\n \"output\",\n]);\n\ntype SignalBinding = {\n instance: GObject.Object;\n signal: string;\n handler?: SignalHandler | undefined;\n};\n\nexport class SignalStore {\n private instanceHandlers: Map<GObject.Object, Map<string, number>> = new Map();\n\n private blockDepth: number = 0;\n\n private getInstanceMap(instance: GObject.Object): Map<string, number> {\n let instanceMap = this.instanceHandlers.get(instance);\n if (!instanceMap) {\n instanceMap = new Map();\n this.instanceHandlers.set(instance, instanceMap);\n }\n return instanceMap;\n }\n\n private gateHandler(handler: SignalHandler, signal: string, instance: GObject.Object): SignalHandler {\n return (...args: unknown[]) => {\n if (this.blockDepth > 0 && !UNBLOCKED_SIGNALS.has(signal)) {\n return;\n }\n return handler(...args, instance);\n };\n }\n\n private disconnect(instance: GObject.Object, signal: string): void {\n const instanceMap = this.instanceHandlers.get(instance);\n if (!instanceMap) return;\n const handlerId = instanceMap.get(signal);\n if (handlerId === undefined) return;\n instance.disconnect(handlerId);\n instanceMap.delete(signal);\n if (instanceMap.size === 0) this.instanceHandlers.delete(instance);\n }\n\n private connect(binding: SignalBinding & { handler: SignalHandler }): void {\n const { instance, signal, handler } = binding;\n const gatedHandler = this.gateHandler(handler, signal, instance);\n const handlerId = instance.connect(signal, gatedHandler);\n this.getInstanceMap(instance).set(signal, handlerId);\n }\n\n public set(binding: SignalBinding): void {\n const { instance, signal, handler } = binding;\n this.disconnect(instance, signal);\n\n if (handler) {\n this.connect({ instance, signal, handler });\n }\n }\n\n public clear(instance: GObject.Object): void {\n const instanceMap = this.instanceHandlers.get(instance);\n\n if (instanceMap) {\n for (const [, handlerId] of instanceMap) {\n instance.disconnect(handlerId);\n }\n\n this.instanceHandlers.delete(instance);\n }\n }\n\n public block(): void {\n this.blockDepth += 1;\n }\n\n public unblock(): void {\n if (this.blockDepth > 0) this.blockDepth -= 1;\n }\n}\n\nconst signalStores = new WeakMap<object, SignalStore>();\n\nexport function getSignalStore(rootContainer: object): SignalStore {\n let store = signalStores.get(rootContainer);\n if (!store) {\n store = new SignalStore();\n signalStores.set(rootContainer, store);\n }\n return store;\n}\n"]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as GObject from "@gtkx/gi/gobject";
|
|
2
|
+
import { type RootElement } from "./root-element.js";
|
|
3
|
+
import { type SignalStore } from "./signal-store.js";
|
|
4
|
+
import type { Container, Props } from "./types.js";
|
|
5
|
+
import { type WrapperNode } from "./wrapper-node.js";
|
|
6
|
+
import type { WrapperKind } from "./wrapper-protocol.js";
|
|
7
|
+
export type Node = GObject.Object | WrapperNode | RootElement;
|
|
8
|
+
export type ElementHandler = {
|
|
9
|
+
attach(anchor?: GObject.Object | null, fresh?: boolean): void;
|
|
10
|
+
detach(): void;
|
|
11
|
+
};
|
|
12
|
+
export type ElementMapping = (child: Node, parent: Node) => ElementHandler | null;
|
|
13
|
+
export type State = {
|
|
14
|
+
kind?: WrapperKind | undefined;
|
|
15
|
+
props: Props;
|
|
16
|
+
parent: Node | null;
|
|
17
|
+
children: Node[];
|
|
18
|
+
rootContainer: Container;
|
|
19
|
+
signalStore: SignalStore;
|
|
20
|
+
adoptedInstance?: GObject.Object | undefined;
|
|
21
|
+
hidden?: boolean | undefined;
|
|
22
|
+
visibleWhenShown?: boolean | undefined;
|
|
23
|
+
};
|
|
24
|
+
type StateSeed = {
|
|
25
|
+
kind?: WrapperKind;
|
|
26
|
+
props: Props;
|
|
27
|
+
rootContainer: Container;
|
|
28
|
+
};
|
|
29
|
+
export declare const registerState: (node: Node, { kind, props, rootContainer }: StateSeed) => State;
|
|
30
|
+
export declare const ensureState: (container: Container) => State;
|
|
31
|
+
export declare const registeredStateOf: (node: Node) => State | undefined;
|
|
32
|
+
export declare const stateOf: (node: Node) => State;
|
|
33
|
+
export declare const hasWrapperKind: (node: Node, kind: WrapperKind) => boolean;
|
|
34
|
+
export declare const closestInstance: <T extends Node>(node: Node, matches: (node: Node) => node is T) => T | null;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/reconciler/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,WAAW,GAAG,WAAW,CAAC;AAE9D,MAAM,MAAM,cAAc,GAAG;IACzB,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9D,MAAM,IAAI,IAAI,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,KAAK,cAAc,GAAG,IAAI,CAAC;AAElF,MAAM,MAAM,KAAK,GAAG;IAChB,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,aAAa,EAAE,SAAS,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAC7C,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC1C,CAAC;AAIF,KAAK,SAAS,GAAG;IACb,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,SAAS,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,aAAa,SAAU,IAAI,kCAAkC,SAAS,KAAG,KAWrF,CAAC;AAEF,eAAO,MAAM,WAAW,cAAe,SAAS,KAAG,KAC6C,CAAC;AAEjG,eAAO,MAAM,iBAAiB,SAAU,IAAI,KAAG,KAAK,GAAG,SAA+B,CAAC;AAEvF,eAAO,MAAM,OAAO,SAAU,IAAI,KAAG,KAKpC,CAAC;AAEF,eAAO,MAAM,cAAc,SAAU,IAAI,QAAQ,WAAW,KAAG,OACT,CAAC;AAEvD,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,IAAI,QAAQ,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,IAAI,CAAC,KAAG,CAAC,GAAG,IAOpG,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as GObject from "@gtkx/gi/gobject";
|
|
2
|
+
import { isRootElement } from "./root-element.js";
|
|
3
|
+
import { getSignalStore } from "./signal-store.js";
|
|
4
|
+
import { isWrapperNode } from "./wrapper-node.js";
|
|
5
|
+
const stateMap = new WeakMap();
|
|
6
|
+
export const registerState = (node, { kind, props, rootContainer }) => {
|
|
7
|
+
const state = {
|
|
8
|
+
kind,
|
|
9
|
+
props,
|
|
10
|
+
parent: null,
|
|
11
|
+
children: [],
|
|
12
|
+
rootContainer,
|
|
13
|
+
signalStore: getSignalStore(rootContainer),
|
|
14
|
+
};
|
|
15
|
+
stateMap.set(node, state);
|
|
16
|
+
return state;
|
|
17
|
+
};
|
|
18
|
+
export const ensureState = (container) => stateMap.get(container) ?? registerState(container, { props: {}, rootContainer: container });
|
|
19
|
+
export const registeredStateOf = (node) => stateMap.get(node);
|
|
20
|
+
export const stateOf = (node) => {
|
|
21
|
+
const state = stateMap.get(node);
|
|
22
|
+
if (state)
|
|
23
|
+
return state;
|
|
24
|
+
if (node instanceof GObject.Object || isRootElement(node))
|
|
25
|
+
return ensureState(node);
|
|
26
|
+
throw new Error("reconciler node has no registered state");
|
|
27
|
+
};
|
|
28
|
+
export const hasWrapperKind = (node, kind) => isWrapperNode(node) && stateOf(node).kind === kind;
|
|
29
|
+
export const closestInstance = (node, matches) => {
|
|
30
|
+
let current = node;
|
|
31
|
+
while (current !== null) {
|
|
32
|
+
if (matches(current))
|
|
33
|
+
return current;
|
|
34
|
+
current = stateOf(current).parent;
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/reconciler/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAoB,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAwBpE,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAe,CAAC;AAQ5C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAa,EAAS,EAAE;IAC1F,MAAM,KAAK,GAAU;QACjB,IAAI;QACJ,KAAK;QACL,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,EAAE;QACZ,aAAa;QACb,WAAW,EAAE,cAAc,CAAC,aAAa,CAAC;KAC7C,CAAC;IACF,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1B,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAAoB,EAAS,EAAE,CACvD,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC;AAEjG,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAU,EAAqB,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAEvF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAU,EAAS,EAAE;IACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,IAAI,YAAY,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC;QAAE,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IACpF,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAU,EAAE,IAAiB,EAAW,EAAE,CACrE,aAAa,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;AAEvD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAiB,IAAU,EAAE,OAAkC,EAAY,EAAE;IACxG,IAAI,OAAO,GAAgB,IAAI,CAAC;IAChC,OAAO,OAAO,KAAK,IAAI,EAAE,CAAC;QACtB,IAAI,OAAO,CAAC,OAAO,CAAC;YAAE,OAAO,OAAO,CAAC;QACrC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IACtC,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC","sourcesContent":["import * as GObject from \"@gtkx/gi/gobject\";\nimport { isRootElement, type RootElement } from \"./root-element.js\";\nimport { getSignalStore, type SignalStore } from \"./signal-store.js\";\nimport type { Container, Props } from \"./types.js\";\nimport { isWrapperNode, type WrapperNode } from \"./wrapper-node.js\";\nimport type { WrapperKind } from \"./wrapper-protocol.js\";\n\nexport type Node = GObject.Object | WrapperNode | RootElement;\n\nexport type ElementHandler = {\n attach(anchor?: GObject.Object | null, fresh?: boolean): void;\n detach(): void;\n};\n\nexport type ElementMapping = (child: Node, parent: Node) => ElementHandler | null;\n\nexport type State = {\n kind?: WrapperKind | undefined;\n props: Props;\n parent: Node | null;\n children: Node[];\n rootContainer: Container;\n signalStore: SignalStore;\n adoptedInstance?: GObject.Object | undefined;\n hidden?: boolean | undefined;\n visibleWhenShown?: boolean | undefined;\n};\n\nconst stateMap = new WeakMap<Node, State>();\n\ntype StateSeed = {\n kind?: WrapperKind;\n props: Props;\n rootContainer: Container;\n};\n\nexport const registerState = (node: Node, { kind, props, rootContainer }: StateSeed): State => {\n const state: State = {\n kind,\n props,\n parent: null,\n children: [],\n rootContainer,\n signalStore: getSignalStore(rootContainer),\n };\n stateMap.set(node, state);\n return state;\n};\n\nexport const ensureState = (container: Container): State =>\n stateMap.get(container) ?? registerState(container, { props: {}, rootContainer: container });\n\nexport const registeredStateOf = (node: Node): State | undefined => stateMap.get(node);\n\nexport const stateOf = (node: Node): State => {\n const state = stateMap.get(node);\n if (state) return state;\n if (node instanceof GObject.Object || isRootElement(node)) return ensureState(node);\n throw new Error(\"reconciler node has no registered state\");\n};\n\nexport const hasWrapperKind = (node: Node, kind: WrapperKind): boolean =>\n isWrapperNode(node) && stateOf(node).kind === kind;\n\nexport const closestInstance = <T extends Node>(node: Node, matches: (node: Node) => node is T): T | null => {\n let current: Node | null = node;\n while (current !== null) {\n if (matches(current)) return current;\n current = stateOf(current).parent;\n }\n return null;\n};\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as Gtk from "@gtkx/gi/gtk";
|
|
2
|
+
export declare class TextBufferController {
|
|
3
|
+
private managesContent;
|
|
4
|
+
private owner;
|
|
5
|
+
constructor(owner: Gtk.TextBuffer);
|
|
6
|
+
private resolveView;
|
|
7
|
+
private hasManagedChildren;
|
|
8
|
+
rebuild: () => void;
|
|
9
|
+
private clearBuffer;
|
|
10
|
+
private insertChildren;
|
|
11
|
+
private insertChild;
|
|
12
|
+
private insertTag;
|
|
13
|
+
private insertAnchor;
|
|
14
|
+
private insertPaintable;
|
|
15
|
+
private insertText;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=text-buffer-controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-buffer-controller.d.ts","sourceRoot":"","sources":["../../src/reconciler/text-buffer-controller.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AAKpC,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,KAAK,CAAiB;IAE9B,YAAY,KAAK,EAAE,GAAG,CAAC,UAAU,EAEhC;IAED,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,kBAAkB;IAInB,OAAO,QAAO,IAAI,CAcvB;IAEF,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,UAAU;CAIrB"}
|