@gtkx/react 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/adw/element-behaviors.js +19 -107
- package/dist/adw/element-behaviors.js.map +1 -1
- package/dist/element-behaviors.js +21 -116
- package/dist/element-behaviors.js.map +1 -1
- package/dist/reconciler/behaviors.d.ts +19 -3
- package/dist/reconciler/behaviors.d.ts.map +1 -1
- package/dist/reconciler/behaviors.js +42 -17
- package/dist/reconciler/behaviors.js.map +1 -1
- package/package.json +5 -5
- package/src/adw/element-behaviors.ts +22 -162
- package/src/element-behaviors.ts +27 -167
- package/src/reconciler/behaviors.ts +81 -32
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element-behaviors.js","sourceRoot":"","sources":["../src/element-behaviors.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as GObject from \"@gtkx/gi/gobject\";\nimport * as Gio from \"@gtkx/gi/gio\";\nimport * as GLib from \"@gtkx/gi/glib\";\nimport * as Gtk from \"@gtkx/gi/gtk\";\nimport type {\n ActionAccel,\n CreditSection,\n DragSourceIcon,\n LevelBarOffset,\n MainOption,\n MenuItem,\n ScaleMark,\n VflConstraints,\n} from \"./prop-types.js\";\nimport { BUILTIN_ELEMENTS, SINGLE_CHILD_TYPES } from \"./element-config.js\";\nimport {\n addRemoveSlot,\n adoptedChildrenSlot,\n applicationCreator,\n boxSlot,\n childSetterSlot,\n controlledText,\n deferred,\n list,\n slot,\n value,\n wrappingIndexedSlot,\n} from \"./reconciler/behaviors.js\";\nimport {\n type ElementBehavior,\n type ElementConfig,\n forTypes,\n type Props,\n registerElements,\n} from \"./reconciler/registry.js\";\nimport { applyWrite } from \"./reconciler/signals.js\";\nimport { applyStyle, CSS_CLASSES_PROP, styleClass } from \"./reconciler/style.js\";\n\ntype SelectedIndexState = { desired: number | undefined; isScheduled: boolean; disconnect: (() => void) | null };\n\nconst SELECTED_INDEX_PROP = \"selectedIndex\";\nconst SELECTION_SIGNAL = \"selected-rows-changed\";\nconst NO_SELECTION = -1;\n\nconst BUILTIN_BEHAVIORS: Record<string, ElementConfig<never>> = {\n ...forTypes(SINGLE_CHILD_TYPES, {\n behaviors: [childSetterSlot()],\n }),\n ...forTypes([\"GtkHeaderBar\", \"GtkActionBar\"], {\n behaviors: [\n addRemoveSlot<Gtk.Widget, Gtk.HeaderBar | Gtk.ActionBar>(\n \"start\",\n \"GtkWidget\",\n (bar, child) => {\n bar.packStart(child);\n },\n (bar, child) => {\n bar.remove(child);\n },\n ),\n addRemoveSlot<Gtk.Widget, Gtk.HeaderBar | Gtk.ActionBar>(\n \"end\",\n \"GtkWidget\",\n (bar, child) => {\n bar.packEnd(child);\n },\n (bar, child) => {\n bar.remove(child);\n },\n ),\n ],\n }),\n GtkWindow: {\n behaviors: [childSetterSlot()],\n },\n GtkWidget: {\n behaviors: [\n slot<Gtk.Widget, Gtk.Popover>(\"children\", \"GtkPopover\", {\n attach: (parent, popover) => {\n popover.setParent(parent);\n },\n detach: (_parent, popover) => {\n popover.unparent();\n },\n }),\n addRemoveSlot<Gtk.EventController, Gtk.Widget>(\n \"controllers\",\n \"GtkEventController\",\n (widget, controller) => {\n widget.addController(controller);\n },\n (widget, controller) => {\n widget.removeController(controller);\n },\n ),\n slot<Gtk.Widget, Gtk.LayoutManager>(\"layoutManager\", \"GtkLayoutManager\", {\n attach: (widget, manager) => {\n widget.setLayoutManager(manager);\n },\n detach: (widget) => {\n widget.setLayoutManager(null);\n },\n }),\n slot<Gtk.Widget, Gio.ActionGroup>(\"actionGroups\", \"GActionGroup\", {\n attach: (widget, group, info) => {\n widget.insertActionGroup((info.props.prefix as string | null) ?? \"\", group);\n },\n detach: (widget, _group, info) => {\n widget.insertActionGroup((info.props.prefix as string | null) ?? \"\", null);\n },\n }),\n styleBehavior(),\n ],\n },\n GtkBox: {\n behaviors: [boxSlot<Gtk.Box>()],\n },\n GtkListBox: {\n behaviors: [\n wrappingIndexedSlot(Gtk.ListBoxRow, (row, inner) => {\n row.setChild(inner);\n }),\n selectedIndexBehavior(),\n ],\n },\n GtkFlowBox: {\n behaviors: [\n wrappingIndexedSlot(Gtk.FlowBoxChild, (child, inner) => {\n child.setChild(inner);\n }),\n ],\n },\n GtkOverlay: {\n behaviors: [\n childSetterSlot<Gtk.Overlay>(),\n slot<Gtk.Overlay, Gtk.Widget>(\"overlays\", \"GtkWidget\", {\n attach: (overlay, child) => {\n overlay.addOverlay(child);\n },\n detach: (overlay, child) => {\n overlay.removeOverlay(child);\n },\n resolve: layoutChild,\n }),\n ],\n },\n GtkShortcutController: {\n behaviors: [\n addRemoveSlot<Gtk.Shortcut, Gtk.ShortcutController>(\n \"shortcuts\",\n \"GtkShortcut\",\n (controller, shortcut) => {\n controller.addShortcut(shortcut);\n },\n (controller, shortcut) => {\n controller.removeShortcut(shortcut);\n },\n ),\n ],\n },\n GtkTextChildAnchor: {\n behaviors: [{ create: () => Gtk.TextChildAnchor.new() }],\n },\n GtkTextView: {\n behaviors: [\n slot<Gtk.TextView, Gtk.TextBuffer>(\"children\", \"GtkTextBuffer\", {\n attach: (view, buffer) => {\n view.setBuffer(buffer);\n },\n detach: (view) => {\n view.setBuffer(null);\n },\n }),\n ],\n },\n GActionMap: {\n behaviors: [\n slot<Gio.ActionMap, Gio.Action>(\"actions\", \"GAction\", {\n attach: (map, action) => {\n map.addAction(action);\n },\n detach: (map, _action, info) => {\n map.removeAction((info.props.name as string | null) ?? \"\");\n },\n }),\n ],\n },\n GMenu: {\n behaviors: [\n list<Gio.Menu, MenuItem>(\"items\", {\n clear: (menu) => {\n menu.removeAll();\n },\n add: (menu, item) => {\n appendMenuItem(menu, item);\n },\n }),\n ],\n },\n GtkColumnView: {\n behaviors: [\n slot<Gtk.ColumnView, Gtk.ColumnViewColumn>(\"children\", \"GtkColumnViewColumn\", {\n attach: (view, column, info) => {\n view.insertColumn(info.index, column);\n },\n detach: (view, column) => {\n view.removeColumn(column);\n },\n }),\n ],\n },\n GtkGrid: {\n behaviors: [\n slot<Gtk.Grid, Gtk.Widget>(\"children\", \"GtkWidget\", {\n attach: (grid, child) => {\n grid.attach(child, 0, 0, 1, 1);\n },\n detach: (grid, child) => {\n grid.remove(child);\n },\n resolve: layoutChild,\n }),\n ],\n },\n GtkFixed: {\n behaviors: [\n slot<Gtk.Fixed, Gtk.Widget>(\"children\", \"GtkWidget\", {\n attach: (fixed, child) => {\n fixed.put(child, 0, 0);\n },\n detach: (fixed, child) => {\n fixed.remove(child);\n },\n resolve: layoutChild,\n }),\n ],\n },\n GtkSizeGroup: {\n behaviors: [\n list<Gtk.SizeGroup, Gtk.Widget>(\"widgets\", {\n add: (group, widget) => {\n group.addWidget(widget);\n },\n remove: (group, widget) => {\n group.removeWidget(widget);\n },\n }),\n ],\n },\n GtkConstraintLayout: {\n behaviors: [\n addRemoveSlot<Gtk.Constraint, Gtk.ConstraintLayout>(\n \"constraints\",\n \"GtkConstraint\",\n (layout, constraint) => {\n layout.addConstraint(constraint);\n },\n (layout, constraint) => {\n layout.removeConstraint(constraint);\n },\n ),\n addRemoveSlot<Gtk.ConstraintGuide, Gtk.ConstraintLayout>(\n \"guides\",\n \"GtkConstraintGuide\",\n (layout, guide) => {\n layout.addGuide(guide);\n },\n (layout, guide) => {\n layout.removeGuide(guide);\n },\n ),\n list<Gtk.ConstraintLayout, VflConstraints, Gtk.Constraint[]>(\"vfl\", {\n add: (layout, item) => [\n ...layout.addConstraintsFromDescription(\n item.lines,\n item.hspacing ?? 0,\n item.vspacing ?? 0,\n item.views ?? new Map<string, Gtk.ConstraintTarget>(),\n ),\n ],\n remove: (layout, _item, constraints) => {\n for (const constraint of constraints) {\n layout.removeConstraint(constraint);\n }\n },\n }),\n ],\n },\n GtkStack: {\n behaviors: [\n adoptedChildrenSlot<Gtk.Stack, Gtk.Widget>(\n \"GtkWidget\",\n (stack, child) => stack.addChild(child),\n (stack, child) => {\n stack.remove(child);\n },\n ),\n deferred<Gtk.Stack, string>(\"visibleChildName\", (stack, name) => stack.getChildByName(name) !== null),\n ],\n },\n GtkNotebook: {\n behaviors: [\n slot<Gtk.Notebook, Gtk.Widget>(\"children\", \"GtkWidget\", {\n attach: (notebook, child, info) => notebook.insertPage(child, null, info.index),\n reorder: (notebook, child, info) => {\n notebook.reorderChild(child, info.index);\n },\n detach: (notebook, child) => {\n notebook.detachTab(child);\n },\n resolve: (notebook, child) => notebook.getPage(child),\n }),\n ],\n },\n GtkApplication: {\n behaviors: [\n applicationCreator(Gtk.Application),\n addRemoveSlot<Gtk.Window, Gtk.Application>(\n \"children\",\n \"GtkWindow\",\n (application, window) => {\n application.addWindow(window);\n },\n (application, window) => {\n application.removeWindow(window);\n },\n ),\n list<Gtk.Application, ActionAccel>(\"actionAccels\", {\n add: (application, item) => {\n application.setAccelsForAction(item.detailedActionName, item.accels);\n },\n remove: (application, item) => {\n application.setAccelsForAction(item.detailedActionName, []);\n },\n }),\n list<Gtk.Application, MainOption>(\"mainOptions\", {\n add: (application, option) => {\n addMainOption(application, option);\n },\n }),\n ],\n },\n GtkAboutDialog: {\n behaviors: [\n list<Gtk.AboutDialog, CreditSection>(\"creditSections\", {\n add: (dialog, section) => {\n dialog.addCreditSection(section.sectionName, section.people);\n },\n }),\n ],\n },\n GtkScale: {\n behaviors: [\n list<Gtk.Scale, ScaleMark>(\"marks\", {\n add: (scale, mark) => {\n scale.addMark(mark.value ?? 0, mark.position, mark.markup ?? null);\n },\n clear: (scale) => {\n scale.clearMarks();\n },\n }),\n ],\n },\n GtkCalendar: {\n behaviors: [\n list<Gtk.Calendar, number>(\"markedDays\", {\n add: (calendar, day) => {\n calendar.markDay(day);\n },\n clear: (calendar) => {\n calendar.clearMarks();\n },\n }),\n ],\n },\n GtkLevelBar: {\n behaviors: [\n list<Gtk.LevelBar, LevelBarOffset>(\"offsets\", {\n add: (bar, offset) => {\n bar.addOffsetValue(offset.name, offset.value ?? 0);\n },\n remove: (bar, offset) => {\n bar.removeOffsetValue(offset.name);\n },\n }),\n ],\n },\n GtkDropTarget: {\n behaviors: [\n value<Gtk.DropTarget, GObject.Type[]>(\"types\", (target, types) => {\n target.setGtypes(types);\n }),\n ],\n },\n GtkDrawingArea: {\n behaviors: [\n value<Gtk.DrawingArea, Gtk.DrawingAreaDrawFunc>(\"drawFunc\", (area, draw) => {\n area.setDrawFunc(draw);\n area.queueDraw();\n }),\n ],\n },\n GtkDragSource: {\n behaviors: [\n value<Gtk.DragSource, DragSourceIcon>(\"icon\", (source, icon) => {\n source.setIcon(icon.paintable ?? null, icon.hotX ?? 0, icon.hotY ?? 0);\n }),\n ],\n },\n GtkEditable: {\n behaviors: [controlledText(\"text\")],\n },\n};\n\nfunction layoutChild(parent: Gtk.Widget, child: Gtk.Widget): GObject.Object | null {\n return parent.getLayoutManager()?.getLayoutChild(child) ?? null;\n}\n\nconst isNullish = (value: unknown): boolean => value === undefined || value === null;\nconst isInitialNull = (prevValue: unknown, value: unknown): boolean => value === null && prevValue === undefined;\n\nconst withStyleClass = (classes: unknown, className: string): string[] =>\n Array.isArray(classes) ? [...(classes as string[]), className] : [className];\n\nconst hasCssClassesChange = (prev: Props, next: Props): boolean => {\n const classes = next.cssClasses;\n\n if (classes === undefined || Object.is(prev.cssClasses, classes)) {\n return false;\n }\n\n return !isInitialNull(prev.cssClasses, classes);\n};\n\nconst didWriteCssClasses = (widget: Gtk.Widget, prev: Props, next: Props, className: string | null): boolean => {\n if (className === null || !hasCssClassesChange(prev, next)) {\n return false;\n }\n\n applyWrite(CSS_CLASSES_PROP, () => {\n Reflect.set(widget, CSS_CLASSES_PROP, withStyleClass(next.cssClasses, className));\n });\n\n return true;\n};\n\nconst isRestyled = (prev: Props, next: Props): boolean => {\n if (isNullish(prev.style) && isNullish(next.style)) {\n return false;\n }\n\n return !Object.is(prev.style, next.style);\n};\n\nfunction updateStyle(widget: Gtk.Widget, prev: Props, next: Props): Iterable<string> | undefined {\n const isChanged = isRestyled(prev, next);\n const className = isChanged ? applyStyle(widget, next.style) : styleClass(widget);\n\n if (!isChanged && className === null) {\n return;\n }\n\n return didWriteCssClasses(widget, prev, next, className) ? [\"style\", \"cssClasses\"] : [\"style\"];\n}\n\nfunction styleBehavior(): ElementBehavior<Gtk.Widget> {\n return { update: updateStyle };\n}\n\nfunction selectedRowIndex(box: Gtk.ListBox): number {\n return box.getSelectedRow()?.getIndex() ?? NO_SELECTION;\n}\n\nfunction selectedIndexError(value: number): Error {\n return new Error(\n \"The 'selectedIndex' of a <GtkListBox> must be a whole number, or -1 to select no row; \" +\n `received ${String(value)}.`,\n );\n}\n\nfunction desiredIndex(value: unknown): number | undefined {\n if (value === null) {\n return NO_SELECTION;\n }\n\n if (typeof value !== \"number\") {\n return undefined;\n }\n\n if (!Number.isSafeInteger(value)) {\n throw selectedIndexError(value);\n }\n\n return value;\n}\n\nfunction selectRowAt(box: Gtk.ListBox, row: Gtk.ListBoxRow): void {\n applyWrite(SELECTED_INDEX_PROP, () => {\n box.selectRow(row);\n });\n}\n\nfunction clearSelection(box: Gtk.ListBox): void {\n applyWrite(SELECTED_INDEX_PROP, () => {\n box.unselectAll();\n });\n}\n\nfunction applySelectedIndex(box: Gtk.ListBox, state: SelectedIndexState): void {\n const { desired } = state;\n\n if (desired === undefined || selectedRowIndex(box) === desired) {\n return;\n }\n\n if (desired < 0) {\n clearSelection(box);\n\n return;\n }\n\n const row = box.getRowAtIndex(desired);\n\n if (row !== null) {\n selectRowAt(box, row);\n }\n}\n\nfunction scheduleSelectedIndex(box: Gtk.ListBox, state: SelectedIndexState): void {\n if (state.isScheduled) {\n return;\n }\n\n state.isScheduled = true;\n\n queueMicrotask(() => {\n state.isScheduled = false;\n\n if (state.disconnect !== null) {\n applySelectedIndex(box, state);\n }\n });\n}\n\nfunction watchSelectionDrift(box: Gtk.ListBox, state: SelectedIndexState): void {\n if (state.disconnect !== null) {\n return;\n }\n\n const handler = (): undefined => {\n scheduleSelectedIndex(box, state);\n };\n\n box.on(SELECTION_SIGNAL, handler);\n\n state.disconnect = (): void => {\n box.off(SELECTION_SIGNAL, handler);\n };\n}\n\nfunction selectedIndexBehavior(): ElementBehavior<Gtk.ListBox> {\n return {\n deferred: [SELECTED_INDEX_PROP],\n initialize: (): SelectedIndexState => ({ desired: undefined, isScheduled: false, disconnect: null }),\n update: (_box, _prev, next, context) => {\n (context as SelectedIndexState).desired = desiredIndex(next[SELECTED_INDEX_PROP]);\n\n return [SELECTED_INDEX_PROP];\n },\n flush: (box, context) => {\n applySelectedIndex(box, context as SelectedIndexState);\n watchSelectionDrift(box, context as SelectedIndexState);\n },\n teardown: (_box, context) => {\n const state = context as SelectedIndexState;\n state.disconnect?.();\n state.disconnect = null;\n },\n };\n}\n\nconst addMainOption = (application: Gtk.Application, option: MainOption): void => {\n application.addMainOption(\n option.longName,\n option.shortName?.codePointAt(0) ?? 0,\n option.flags ?? GLib.OptionFlags.NONE,\n option.arg ?? GLib.OptionArg.NONE,\n option.description,\n option.argDescription ?? null,\n );\n};\n\nconst buildMenu = (items: MenuItem[]): Gio.Menu => {\n const menu = Gio.Menu.new();\n\n for (const item of items) {\n appendMenuItem(menu, item);\n }\n\n return menu;\n};\n\nfunction appendMenuItem(menu: Gio.Menu, item: MenuItem): void {\n const label = item.label ?? null;\n\n if (item.submenu !== undefined) {\n menu.appendSubmenu(label, buildMenu(item.submenu));\n\n return;\n }\n\n if (item.section !== undefined) {\n menu.appendSection(label, buildMenu(item.section));\n\n return;\n }\n\n menu.append(label, item.action ?? null);\n}\n\nregisterElements(BUILTIN_ELEMENTS);\nregisterElements(BUILTIN_BEHAVIORS);\n"]}
|
|
1
|
+
{"version":3,"file":"element-behaviors.js","sourceRoot":"","sources":["../src/element-behaviors.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as GObject from \"@gtkx/gi/gobject\";\nimport * as Gio from \"@gtkx/gi/gio\";\nimport * as GLib from \"@gtkx/gi/glib\";\nimport * as Gtk from \"@gtkx/gi/gtk\";\nimport type {\n ActionAccel,\n CreditSection,\n DragSourceIcon,\n LevelBarOffset,\n MainOption,\n MenuItem,\n ScaleMark,\n VflConstraints,\n} from \"./prop-types.js\";\nimport { BUILTIN_ELEMENTS, SINGLE_CHILD_TYPES } from \"./element-config.js\";\nimport {\n applicationCreator,\n boxSlot,\n childSetterSlot,\n controlledText,\n deferred,\n deferredWith,\n list,\n methodSlot,\n setterSlot,\n slot,\n value,\n wrappingIndexedSlot,\n} from \"./reconciler/behaviors.js\";\nimport {\n type ElementBehavior,\n type ElementConfig,\n forTypes,\n type Props,\n registerElements,\n} from \"./reconciler/registry.js\";\nimport { applyWrite } from \"./reconciler/signals.js\";\nimport { applyStyle, CSS_CLASSES_PROP, styleClass } from \"./reconciler/style.js\";\n\nconst SELECTED_INDEX_PROP = \"selectedIndex\";\nconst SELECTION_SIGNAL = \"selected-rows-changed\";\nconst NO_SELECTION = -1;\n\nconst BUILTIN_BEHAVIORS: Record<string, ElementConfig<never>> = {\n ...forTypes(SINGLE_CHILD_TYPES, {\n behaviors: [childSetterSlot()],\n }),\n ...forTypes([\"GtkHeaderBar\", \"GtkActionBar\"], {\n behaviors: [\n methodSlot<Gtk.HeaderBar | Gtk.ActionBar, Gtk.Widget>(\"start\", \"GtkWidget\", \"packStart\", \"remove\"),\n methodSlot<Gtk.HeaderBar | Gtk.ActionBar, Gtk.Widget>(\"end\", \"GtkWidget\", \"packEnd\", \"remove\"),\n ],\n }),\n GtkWindow: {\n behaviors: [childSetterSlot()],\n },\n GtkWidget: {\n behaviors: [\n slot<Gtk.Widget, Gtk.Popover>(\"children\", \"GtkPopover\", {\n attach: (parent, popover) => {\n popover.setParent(parent);\n },\n detach: (_parent, popover) => {\n popover.unparent();\n },\n }),\n methodSlot<Gtk.Widget, Gtk.EventController>(\n \"controllers\", \"GtkEventController\", \"addController\", \"removeController\",\n ),\n setterSlot<Gtk.Widget, Gtk.LayoutManager>(\"layoutManager\", \"GtkLayoutManager\", \"setLayoutManager\"),\n slot<Gtk.Widget, Gio.ActionGroup>(\"actionGroups\", \"GActionGroup\", {\n attach: (widget, group, info) => {\n widget.insertActionGroup((info.props.prefix as string | null) ?? \"\", group);\n },\n detach: (widget, _group, info) => {\n widget.insertActionGroup((info.props.prefix as string | null) ?? \"\", null);\n },\n }),\n styleBehavior(),\n ],\n },\n GtkBox: {\n behaviors: [boxSlot<Gtk.Box>()],\n },\n GtkListBox: {\n behaviors: [\n wrappingIndexedSlot(Gtk.ListBoxRow, (row, inner) => {\n row.setChild(inner);\n }),\n selectedIndexBehavior(),\n ],\n },\n GtkFlowBox: {\n behaviors: [\n wrappingIndexedSlot(Gtk.FlowBoxChild, (child, inner) => {\n child.setChild(inner);\n }),\n ],\n },\n GtkOverlay: {\n behaviors: [\n childSetterSlot<Gtk.Overlay>(),\n slot<Gtk.Overlay, Gtk.Widget>(\"overlays\", \"GtkWidget\", {\n attach: (overlay, child) => {\n overlay.addOverlay(child);\n },\n detach: (overlay, child) => {\n overlay.removeOverlay(child);\n },\n resolve: layoutChild,\n }),\n ],\n },\n GtkShortcutController: {\n behaviors: [\n methodSlot<Gtk.ShortcutController, Gtk.Shortcut>(\n \"shortcuts\", \"GtkShortcut\", \"addShortcut\", \"removeShortcut\",\n ),\n ],\n },\n GtkTextChildAnchor: {\n behaviors: [{ create: () => Gtk.TextChildAnchor.new() }],\n },\n GtkTextView: {\n behaviors: [setterSlot<Gtk.TextView, Gtk.TextBuffer>(\"children\", \"GtkTextBuffer\", \"setBuffer\")],\n },\n GActionMap: {\n behaviors: [\n slot<Gio.ActionMap, Gio.Action>(\"actions\", \"GAction\", {\n attach: (map, action) => {\n map.addAction(action);\n },\n detach: (map, _action, info) => {\n map.removeAction((info.props.name as string | null) ?? \"\");\n },\n }),\n ],\n },\n GMenu: {\n behaviors: [\n list<Gio.Menu, MenuItem>(\"items\", {\n clear: (menu) => {\n menu.removeAll();\n },\n add: (menu, item) => {\n appendMenuItem(menu, item);\n },\n }),\n ],\n },\n GtkColumnView: {\n behaviors: [\n slot<Gtk.ColumnView, Gtk.ColumnViewColumn>(\"children\", \"GtkColumnViewColumn\", {\n attach: (view, column, info) => {\n view.insertColumn(info.index, column);\n },\n detach: (view, column) => {\n view.removeColumn(column);\n },\n }),\n ],\n },\n GtkGrid: {\n behaviors: [\n slot<Gtk.Grid, Gtk.Widget>(\"children\", \"GtkWidget\", {\n attach: (grid, child) => {\n grid.attach(child, 0, 0, 1, 1);\n },\n detach: (grid, child) => {\n grid.remove(child);\n },\n resolve: layoutChild,\n }),\n ],\n },\n GtkFixed: {\n behaviors: [\n slot<Gtk.Fixed, Gtk.Widget>(\"children\", \"GtkWidget\", {\n attach: (fixed, child) => {\n fixed.put(child, 0, 0);\n },\n detach: (fixed, child) => {\n fixed.remove(child);\n },\n resolve: layoutChild,\n }),\n ],\n },\n GtkSizeGroup: {\n behaviors: [\n list<Gtk.SizeGroup, Gtk.Widget>(\"widgets\", {\n add: (group, widget) => {\n group.addWidget(widget);\n },\n remove: (group, widget) => {\n group.removeWidget(widget);\n },\n }),\n ],\n },\n GtkConstraintLayout: {\n behaviors: [\n methodSlot<Gtk.ConstraintLayout, Gtk.Constraint>(\n \"constraints\", \"GtkConstraint\", \"addConstraint\", \"removeConstraint\",\n ),\n methodSlot<Gtk.ConstraintLayout, Gtk.ConstraintGuide>(\n \"guides\", \"GtkConstraintGuide\", \"addGuide\", \"removeGuide\",\n ),\n list<Gtk.ConstraintLayout, VflConstraints, Gtk.Constraint[]>(\"vfl\", {\n add: (layout, item) => [\n ...layout.addConstraintsFromDescription(\n item.lines,\n item.hspacing ?? 0,\n item.vspacing ?? 0,\n item.views ?? new Map<string, Gtk.ConstraintTarget>(),\n ),\n ],\n remove: (layout, _item, constraints) => {\n for (const constraint of constraints) {\n layout.removeConstraint(constraint);\n }\n },\n }),\n ],\n },\n GtkStack: {\n behaviors: [\n methodSlot<Gtk.Stack, Gtk.Widget>(\"children\", \"GtkWidget\", \"addChild\", \"remove\"),\n deferred<Gtk.Stack, string>(\"visibleChildName\", (stack, name) => stack.getChildByName(name) !== null),\n ],\n },\n GtkNotebook: {\n behaviors: [\n slot<Gtk.Notebook, Gtk.Widget>(\"children\", \"GtkWidget\", {\n attach: (notebook, child, info) => notebook.insertPage(child, null, info.index),\n reorder: (notebook, child, info) => {\n notebook.reorderChild(child, info.index);\n },\n detach: (notebook, child) => {\n notebook.detachTab(child);\n },\n resolve: (notebook, child) => notebook.getPage(child),\n }),\n ],\n },\n GtkApplication: {\n behaviors: [\n applicationCreator(Gtk.Application),\n methodSlot<Gtk.Application, Gtk.Window>(\"children\", \"GtkWindow\", \"addWindow\", \"removeWindow\"),\n list<Gtk.Application, ActionAccel>(\"actionAccels\", {\n add: (application, item) => {\n application.setAccelsForAction(item.detailedActionName, item.accels);\n },\n remove: (application, item) => {\n application.setAccelsForAction(item.detailedActionName, []);\n },\n }),\n list<Gtk.Application, MainOption>(\"mainOptions\", {\n add: (application, option) => {\n addMainOption(application, option);\n },\n }),\n ],\n },\n GtkAboutDialog: {\n behaviors: [\n list<Gtk.AboutDialog, CreditSection>(\"creditSections\", {\n add: (dialog, section) => {\n dialog.addCreditSection(section.sectionName, section.people);\n },\n }),\n ],\n },\n GtkScale: {\n behaviors: [\n list<Gtk.Scale, ScaleMark>(\"marks\", {\n add: (scale, mark) => {\n scale.addMark(mark.value ?? 0, mark.position, mark.markup ?? null);\n },\n clear: (scale) => {\n scale.clearMarks();\n },\n }),\n ],\n },\n GtkCalendar: {\n behaviors: [\n list<Gtk.Calendar, number>(\"markedDays\", {\n add: (calendar, day) => {\n calendar.markDay(day);\n },\n clear: (calendar) => {\n calendar.clearMarks();\n },\n }),\n ],\n },\n GtkLevelBar: {\n behaviors: [\n list<Gtk.LevelBar, LevelBarOffset>(\"offsets\", {\n add: (bar, offset) => {\n bar.addOffsetValue(offset.name, offset.value ?? 0);\n },\n remove: (bar, offset) => {\n bar.removeOffsetValue(offset.name);\n },\n }),\n ],\n },\n GtkDropTarget: {\n behaviors: [\n value<Gtk.DropTarget, GObject.Type[]>(\"types\", (target, types) => {\n target.setGtypes(types);\n }),\n ],\n },\n GtkDrawingArea: {\n behaviors: [\n value<Gtk.DrawingArea, Gtk.DrawingAreaDrawFunc>(\"drawFunc\", (area, draw) => {\n area.setDrawFunc(draw);\n area.queueDraw();\n }),\n ],\n },\n GtkDragSource: {\n behaviors: [\n value<Gtk.DragSource, DragSourceIcon>(\"icon\", (source, icon) => {\n source.setIcon(icon.paintable ?? null, icon.hotX ?? 0, icon.hotY ?? 0);\n }),\n ],\n },\n GtkEditable: {\n behaviors: [controlledText(\"text\")],\n },\n};\n\nfunction layoutChild(parent: Gtk.Widget, child: Gtk.Widget): GObject.Object | null {\n return parent.getLayoutManager()?.getLayoutChild(child) ?? null;\n}\n\nconst isNullish = (value: unknown): boolean => value === undefined || value === null;\nconst isInitialNull = (prevValue: unknown, value: unknown): boolean => value === null && prevValue === undefined;\n\nconst withStyleClass = (classes: unknown, className: string): string[] =>\n Array.isArray(classes) ? [...(classes as string[]), className] : [className];\n\nconst hasCssClassesChange = (prev: Props, next: Props): boolean => {\n const classes = next.cssClasses;\n\n if (classes === undefined || Object.is(prev.cssClasses, classes)) {\n return false;\n }\n\n return !isInitialNull(prev.cssClasses, classes);\n};\n\nconst didWriteCssClasses = (widget: Gtk.Widget, prev: Props, next: Props, className: string | null): boolean => {\n if (className === null || !hasCssClassesChange(prev, next)) {\n return false;\n }\n\n applyWrite(CSS_CLASSES_PROP, () => {\n Reflect.set(widget, CSS_CLASSES_PROP, withStyleClass(next.cssClasses, className));\n });\n\n return true;\n};\n\nconst isRestyled = (prev: Props, next: Props): boolean => {\n if (isNullish(prev.style) && isNullish(next.style)) {\n return false;\n }\n\n return !Object.is(prev.style, next.style);\n};\n\nfunction updateStyle(widget: Gtk.Widget, prev: Props, next: Props): Iterable<string> | undefined {\n const isChanged = isRestyled(prev, next);\n const className = isChanged ? applyStyle(widget, next.style) : styleClass(widget);\n\n if (!isChanged && className === null) {\n return;\n }\n\n return didWriteCssClasses(widget, prev, next, className) ? [\"style\", \"cssClasses\"] : [\"style\"];\n}\n\nfunction styleBehavior(): ElementBehavior<Gtk.Widget> {\n return { update: updateStyle };\n}\n\nfunction selectedRowIndex(box: Gtk.ListBox): number {\n return box.getSelectedRow()?.getIndex() ?? NO_SELECTION;\n}\n\nfunction selectedIndexError(value: number): Error {\n return new Error(\n \"The 'selectedIndex' of a <GtkListBox> must be a whole number, or -1 to select no row; \" +\n `received ${String(value)}.`,\n );\n}\n\nfunction desiredIndex(value: unknown): number | undefined {\n if (value === null) {\n return NO_SELECTION;\n }\n\n if (typeof value !== \"number\") {\n return undefined;\n }\n\n if (!Number.isSafeInteger(value)) {\n throw selectedIndexError(value);\n }\n\n return value;\n}\n\nfunction applySelectedIndex(box: Gtk.ListBox, index: number): void {\n if (index < 0) {\n box.unselectAll();\n\n return;\n }\n\n const row = box.getRowAtIndex(index);\n\n if (row !== null) {\n box.selectRow(row);\n }\n}\n\nfunction selectedIndexBehavior(): ElementBehavior<Gtk.ListBox> {\n return deferredWith<Gtk.ListBox, number>(SELECTED_INDEX_PROP, {\n parse: desiredIndex,\n read: selectedRowIndex,\n write: applySelectedIndex,\n signal: SELECTION_SIGNAL,\n });\n}\n\nconst addMainOption = (application: Gtk.Application, option: MainOption): void => {\n application.addMainOption(\n option.longName,\n option.shortName?.codePointAt(0) ?? 0,\n option.flags ?? GLib.OptionFlags.NONE,\n option.arg ?? GLib.OptionArg.NONE,\n option.description,\n option.argDescription ?? null,\n );\n};\n\nconst buildMenu = (items: MenuItem[]): Gio.Menu => {\n const menu = Gio.Menu.new();\n\n for (const item of items) {\n appendMenuItem(menu, item);\n }\n\n return menu;\n};\n\nfunction appendMenuItem(menu: Gio.Menu, item: MenuItem): void {\n const label = item.label ?? null;\n\n if (item.submenu !== undefined) {\n menu.appendSubmenu(label, buildMenu(item.submenu));\n\n return;\n }\n\n if (item.section !== undefined) {\n menu.appendSection(label, buildMenu(item.section));\n\n return;\n }\n\n menu.append(label, item.action ?? null);\n}\n\nregisterElements(BUILTIN_ELEMENTS);\nregisterElements(BUILTIN_BEHAVIORS);\n"]}
|
|
@@ -15,12 +15,27 @@ type ListHooks<P extends GObject.Object, I, H> = {
|
|
|
15
15
|
clear?: (parent: P) => void;
|
|
16
16
|
};
|
|
17
17
|
type CanApply<P extends GObject.Object, V> = (object: P, value: V) => boolean;
|
|
18
|
+
type DeferredOps<P extends GObject.Object, V> = {
|
|
19
|
+
canApply?: CanApply<P, V> | undefined;
|
|
20
|
+
parse?: ((value: unknown) => V | undefined) | undefined;
|
|
21
|
+
read: (object: P) => unknown;
|
|
22
|
+
write: (object: P, value: V) => void;
|
|
23
|
+
signal?: string | undefined;
|
|
24
|
+
};
|
|
25
|
+
type DeferredHooks<P extends GObject.Object, V> = Omit<DeferredOps<P, V>, "read" | "write"> & {
|
|
26
|
+
read?: ((object: P) => unknown) | undefined;
|
|
27
|
+
write?: ((object: P, value: V) => void) | undefined;
|
|
28
|
+
};
|
|
18
29
|
type ChildSetter = GObject.Object & {
|
|
19
30
|
setChild: (child: Gtk.Widget | null) => void;
|
|
20
31
|
};
|
|
21
32
|
type ContentSetter<C extends Gtk.Widget> = GObject.Object & {
|
|
22
33
|
setContent: (content: C | null) => void;
|
|
23
34
|
};
|
|
35
|
+
type MatchingKey<P, F> = keyof P & string & {
|
|
36
|
+
[K in keyof P]: P[K] extends F ? K : never;
|
|
37
|
+
}[keyof P];
|
|
38
|
+
type MethodKey<P, A> = MatchingKey<P, (argument: A) => unknown>;
|
|
24
39
|
type BoxLike = GObject.Object & {
|
|
25
40
|
remove: (child: Gtk.Widget) => void;
|
|
26
41
|
insertChildAfter: (child: Gtk.Widget, sibling: Gtk.Widget | null) => unknown;
|
|
@@ -34,15 +49,16 @@ declare const childMatcher: (name: string) => ((child: GObject.Object) => boolea
|
|
|
34
49
|
declare const slot: <P extends GObject.Object, C extends GObject.Object>(slotName: string, childType: string, hooks: SlotHooks<P, C>) => ElementBehavior;
|
|
35
50
|
declare const value: <P extends GObject.Object, V>(prop: string, apply: ValueApply<P, V>) => ElementBehavior<P>;
|
|
36
51
|
declare const list: <P extends GObject.Object, I, H = void>(prop: string, hooks: ListHooks<P, I, H>) => ElementBehavior<P>;
|
|
52
|
+
declare const deferredWith: <P extends GObject.Object, V>(prop: string, hooks: DeferredHooks<P, V>) => ElementBehavior<P>;
|
|
37
53
|
declare const deferred: <P extends GObject.Object, V>(prop: string, canApply?: CanApply<P, V>) => ElementBehavior<P>;
|
|
38
54
|
declare const controlledText: (prop: string) => ElementBehavior;
|
|
39
55
|
declare const childSetterSlot: <P extends ChildSetter>() => ElementBehavior<P>;
|
|
40
56
|
declare const contentSetterSlot: <P extends ContentSetter<C>, C extends Gtk.Widget = Gtk.Widget>(childType?: string) => ElementBehavior<P>;
|
|
41
57
|
declare const boxSlot: <P extends BoxLike>() => ElementBehavior<P>;
|
|
42
|
-
declare const
|
|
58
|
+
declare const methodSlot: <P extends GObject.Object, C extends GObject.Object>(slotName: string, childType: string, add: MethodKey<P, C>, remove?: MethodKey<P, C>) => ElementBehavior;
|
|
59
|
+
declare const setterSlot: <P extends GObject.Object, C extends GObject.Object>(slotName: string, childType: string, setter: MethodKey<P, C | null>) => ElementBehavior;
|
|
43
60
|
declare const indexedSlot: <P extends IndexedChildHost<C>, C extends GObject.Object>(slotName: string, childType: string) => ElementBehavior<P>;
|
|
44
|
-
declare const adoptedChildrenSlot: <P extends GObject.Object, C extends GObject.Object>(childType: string, add: (parent: P, item: C) => unknown, remove: (parent: P, item: C) => void) => ElementBehavior;
|
|
45
61
|
declare const wrappingIndexedSlot: <W extends Gtk.Widget, P extends IndexedChildHost<Gtk.Widget>>(Wrapper: new (props: Props) => W, setChild: (wrapper: W, inner: Gtk.Widget) => void) => ElementBehavior<P>;
|
|
46
62
|
declare const applicationCreator: <P extends GObject.Object & CommandLineApplication, C extends Props>(base: ApplicationClass<P, C>) => ElementBehavior<P>;
|
|
47
|
-
export { applicationCreator, childMatcher, slot, value, list, deferred, controlledText, childSetterSlot, contentSetterSlot, boxSlot,
|
|
63
|
+
export { applicationCreator, childMatcher, slot, value, list, deferred, deferredWith, controlledText, childSetterSlot, contentSetterSlot, boxSlot, methodSlot, setterSlot, indexedSlot, wrappingIndexedSlot, };
|
|
48
64
|
//# sourceMappingURL=behaviors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"behaviors.d.ts","sourceRoot":"","sources":["../../src/reconciler/behaviors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,KAAK,GAAG,MAAM,cAAc,CAAC;AACzC,OAAO,EAEH,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAM9B,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAKnF,KAAK,SAAS,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,EAAE,CAAC,SAAS,OAAO,CAAC,MAAM,IAAI;IACjE,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC;IAC1D,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACzD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC;IAC5D,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAC5D,CAAC;AAEF,KAAK,UAAU,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAE7E,KAAK,SAAS,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI;IAC7C,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IACjD,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;CAC/B,CAAC;AAKF,KAAK,QAAQ,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"behaviors.d.ts","sourceRoot":"","sources":["../../src/reconciler/behaviors.ts"],"names":[],"mappings":"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"}
|
|
@@ -74,18 +74,19 @@ const list = (prop, hooks) => {
|
|
|
74
74
|
}
|
|
75
75
|
return behavior;
|
|
76
76
|
};
|
|
77
|
-
const settleDeferred = (object, state, prop,
|
|
78
|
-
if (!state.isPresent || Object.is(
|
|
77
|
+
const settleDeferred = (object, state, prop, ops) => {
|
|
78
|
+
if (!state.isPresent || Object.is(ops.read(object), state.desired)) {
|
|
79
79
|
return;
|
|
80
80
|
}
|
|
81
|
-
|
|
81
|
+
const desired = state.desired;
|
|
82
|
+
if (ops.canApply !== undefined && !ops.canApply(object, desired)) {
|
|
82
83
|
return;
|
|
83
84
|
}
|
|
84
85
|
applyWrite(prop, () => {
|
|
85
|
-
|
|
86
|
+
ops.write(object, desired);
|
|
86
87
|
});
|
|
87
88
|
};
|
|
88
|
-
const scheduleSettle = (object, state, prop,
|
|
89
|
+
const scheduleSettle = (object, state, prop, ops) => {
|
|
89
90
|
if (state.isScheduled) {
|
|
90
91
|
return;
|
|
91
92
|
}
|
|
@@ -93,36 +94,36 @@ const scheduleSettle = (object, state, prop, canApply) => {
|
|
|
93
94
|
queueMicrotask(() => {
|
|
94
95
|
state.isScheduled = false;
|
|
95
96
|
if (state.disconnect !== null) {
|
|
96
|
-
settleDeferred(object, state, prop,
|
|
97
|
+
settleDeferred(object, state, prop, ops);
|
|
97
98
|
}
|
|
98
99
|
});
|
|
99
100
|
};
|
|
100
|
-
const watchDrift = (object, state, prop,
|
|
101
|
+
const watchDrift = (object, state, prop, ops) => {
|
|
101
102
|
if (state.disconnect !== null) {
|
|
102
103
|
return;
|
|
103
104
|
}
|
|
104
|
-
const signal = `notify::${getPropertyName(object, prop) ?? unsanitizeIdentifier(kebabCase(prop))}`;
|
|
105
|
+
const signal = ops.signal ?? `notify::${getPropertyName(object, prop) ?? unsanitizeIdentifier(kebabCase(prop))}`;
|
|
105
106
|
const handler = () => {
|
|
106
|
-
scheduleSettle(object, state, prop,
|
|
107
|
+
scheduleSettle(object, state, prop, ops);
|
|
107
108
|
};
|
|
108
109
|
object.on(signal, handler);
|
|
109
110
|
state.disconnect = () => {
|
|
110
111
|
object.off(signal, handler);
|
|
111
112
|
};
|
|
112
113
|
};
|
|
113
|
-
const
|
|
114
|
+
const deferredBehavior = (prop, ops) => ({
|
|
114
115
|
deferred: [prop],
|
|
115
116
|
initialize: () => ({ desired: undefined, isPresent: false, isScheduled: false, disconnect: null }),
|
|
116
117
|
update: (_object, _prev, next, context) => {
|
|
117
118
|
const state = context;
|
|
118
|
-
state.desired = next[prop];
|
|
119
|
-
state.isPresent =
|
|
119
|
+
state.desired = ops.parse === undefined ? next[prop] : ops.parse(next[prop]);
|
|
120
|
+
state.isPresent = state.desired !== undefined;
|
|
120
121
|
return [prop];
|
|
121
122
|
},
|
|
122
123
|
flush: (object, context) => {
|
|
123
124
|
const state = context;
|
|
124
|
-
settleDeferred(object, state, prop,
|
|
125
|
-
watchDrift(object, state, prop,
|
|
125
|
+
settleDeferred(object, state, prop, ops);
|
|
126
|
+
watchDrift(object, state, prop, ops);
|
|
126
127
|
},
|
|
127
128
|
teardown: (_object, context) => {
|
|
128
129
|
const state = context;
|
|
@@ -130,6 +131,14 @@ const deferred = (prop, canApply) => ({
|
|
|
130
131
|
state.disconnect = null;
|
|
131
132
|
},
|
|
132
133
|
});
|
|
134
|
+
const deferredWith = (prop, hooks) => deferredBehavior(prop, {
|
|
135
|
+
...hooks,
|
|
136
|
+
read: hooks.read ?? ((object) => Reflect.get(object, prop)),
|
|
137
|
+
write: hooks.write ?? ((object, value) => {
|
|
138
|
+
Reflect.set(object, prop, value);
|
|
139
|
+
}),
|
|
140
|
+
});
|
|
141
|
+
const deferred = (prop, canApply) => deferredWith(prop, { canApply });
|
|
133
142
|
const controlledText = (prop) => value(prop, (object, next) => {
|
|
134
143
|
if (!hasSameText(object, prop, next)) {
|
|
135
144
|
applyWrite(prop, () => {
|
|
@@ -162,7 +171,24 @@ const boxSlot = () => slot("children", "GtkWidget", {
|
|
|
162
171
|
box.reorderChildAfter(child, info.sibling);
|
|
163
172
|
},
|
|
164
173
|
});
|
|
165
|
-
const
|
|
174
|
+
const callMethod = (parent, method, argument) => parent[method](argument);
|
|
175
|
+
const methodSlot = (slotName, childType, add, remove) => {
|
|
176
|
+
const hooks = { attach: (parent, child) => callMethod(parent, add, child) };
|
|
177
|
+
if (remove !== undefined) {
|
|
178
|
+
hooks.detach = (parent, child) => {
|
|
179
|
+
callMethod(parent, remove, child);
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
return slot(slotName, childType, hooks);
|
|
183
|
+
};
|
|
184
|
+
const setterSlot = (slotName, childType, setter) => slot(slotName, childType, {
|
|
185
|
+
attach: (parent, child) => {
|
|
186
|
+
callMethod(parent, setter, child);
|
|
187
|
+
},
|
|
188
|
+
detach: (parent) => {
|
|
189
|
+
callMethod(parent, setter, null);
|
|
190
|
+
},
|
|
191
|
+
});
|
|
166
192
|
const indexedSlot = (slotName, childType) => slot(slotName, childType, {
|
|
167
193
|
attach: (parent, child, info) => {
|
|
168
194
|
parent.insert(child, info.index);
|
|
@@ -175,7 +201,6 @@ const indexedSlot = (slotName, childType) => slot(slotName, childType, {
|
|
|
175
201
|
parent.insert(child, info.index);
|
|
176
202
|
},
|
|
177
203
|
});
|
|
178
|
-
const adoptedChildrenSlot = (childType, add, remove) => addRemoveSlot("children", childType, add, remove);
|
|
179
204
|
const wrappedRow = (Wrapper, setChild, rows, child) => {
|
|
180
205
|
if (child instanceof Wrapper) {
|
|
181
206
|
return child;
|
|
@@ -207,5 +232,5 @@ const wrappingIndexedSlot = (Wrapper, setChild) => ({
|
|
|
207
232
|
const applicationCreator = (base) => ({
|
|
208
233
|
create: (props) => createApplication(base, props),
|
|
209
234
|
});
|
|
210
|
-
export { applicationCreator, childMatcher, slot, value, list, deferred, controlledText, childSetterSlot, contentSetterSlot, boxSlot,
|
|
235
|
+
export { applicationCreator, childMatcher, slot, value, list, deferred, deferredWith, controlledText, childSetterSlot, contentSetterSlot, boxSlot, methodSlot, setterSlot, indexedSlot, wrappingIndexedSlot, };
|
|
211
236
|
//# sourceMappingURL=behaviors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"behaviors.js","sourceRoot":"","sources":["../../src/reconciler/behaviors.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as GObject from \"@gtkx/gi/gobject\";\nimport type * as Gtk from \"@gtkx/gi/gtk\";\nimport {\n type AnyClass,\n type ApplicationClass,\n type CommandLineApplication,\n createApplication,\n getClassType,\n TYPE_INVALID,\n typeFromName,\n typeIsA,\n} from \"@gtkx/runtime\";\nimport { getOrInsert, isDeepEqual, kebabCase, structuredClone, unsanitizeIdentifier } from \"@gtkx/utils\";\nimport type { DetachInfo, ElementBehavior, PlaceInfo, Props } from \"./registry.js\";\nimport { getPropertyName } from \"./metadata.js\";\nimport { applyWrite } from \"./signals.js\";\nimport { hasSameText } from \"./text.js\";\n\ntype SlotHooks<P extends GObject.Object, C extends GObject.Object> = {\n attach: (parent: P, child: C, info: PlaceInfo) => unknown;\n detach?: (parent: P, child: C, info: DetachInfo) => void;\n reorder?: (parent: P, child: C, info: PlaceInfo) => unknown;\n resolve?: (parent: P, child: C) => GObject.Object | null;\n};\n\ntype ValueApply<P extends GObject.Object, V> = (object: P, value: V) => void;\n\ntype ListHooks<P extends GObject.Object, I, H> = {\n add?: (parent: P, item: I) => H;\n remove?: (parent: P, item: I, handle: H) => void;\n clear?: (parent: P) => void;\n};\n\ntype ListEntry = { item: unknown; handle: unknown };\ntype ListState = { snapshot: unknown[]; entries: ListEntry[] };\ntype DeferredState = { desired: unknown; isPresent: boolean; isScheduled: boolean; disconnect: (() => void) | null };\ntype CanApply<P extends GObject.Object, V> = (object: P, value: V) => boolean;\ntype ChildSetter = GObject.Object & { setChild: (child: Gtk.Widget | null) => void };\ntype ContentSetter<C extends Gtk.Widget> = GObject.Object & { setContent: (content: C | null) => void };\n\ntype BoxLike = GObject.Object & {\n remove: (child: Gtk.Widget) => void;\n insertChildAfter: (child: Gtk.Widget, sibling: Gtk.Widget | null) => unknown;\n reorderChildAfter: (child: Gtk.Widget, sibling: Gtk.Widget | null) => void;\n};\n\ntype RowCache = WeakMap<GObject.Object, Gtk.Widget>;\n\ntype IndexedChildHost<C extends GObject.Object> = GObject.Object & {\n remove: (child: C) => void;\n insert: (child: C, position: number) => unknown;\n};\n\nconst childTypeCache: Map<string, bigint> = new Map();\n\nconst childTypeFor = (name: string): bigint => getOrInsert(childTypeCache, name, typeFromName);\n\nconst childMatcher =\n (name: string): ((child: GObject.Object) => boolean) =>\n (child) => {\n const type = childTypeFor(name);\n\n return type === TYPE_INVALID || typeIsA(getClassType(child.constructor as AnyClass), type);\n };\n\nconst slotAttach =\n <P extends GObject.Object, C extends GObject.Object>(\n slotName: string,\n isMatch: (child: GObject.Object) => boolean,\n attach: SlotHooks<P, C>[\"attach\"],\n ): NonNullable<ElementBehavior[\"attach\"]> =>\n (object, child, info) => {\n if (info.slot !== slotName || !isMatch(child)) {\n return;\n }\n\n return attach(object as P, child as C, info) ?? true;\n };\n\nconst slot = <P extends GObject.Object, C extends GObject.Object>(\n slotName: string,\n childType: string,\n hooks: SlotHooks<P, C>,\n): ElementBehavior => {\n const matches = childMatcher(childType);\n const { attach, detach, reorder, resolve } = hooks;\n const behavior: ElementBehavior = { attach: slotAttach(slotName, matches, attach) };\n\n if (reorder !== undefined) {\n behavior.reorder = (object, child, info) => reorder(object as P, child as C, info) ?? true;\n }\n\n if (detach !== undefined) {\n behavior.detach = (object, child, info) => {\n detach(object as P, child as C, info);\n };\n }\n\n if (resolve !== undefined) {\n behavior.resolve = (object, child) => resolve(object as P, child as C);\n }\n\n return behavior;\n};\n\nconst value = <P extends GObject.Object, V>(\n prop: string,\n apply: ValueApply<P, V>,\n): ElementBehavior<P> => ({\n update: (object, prev, next) => {\n if (!Object.is(prev[prop], next[prop]) && next[prop] !== undefined) {\n apply(object, next[prop] as V);\n }\n\n return [prop];\n },\n});\n\nconst teardownList = <P extends GObject.Object, I, H>(\n object: P,\n entries: ListEntry[],\n hooks: ListHooks<P, I, H>,\n): void => {\n if (hooks.clear !== undefined) {\n hooks.clear(object);\n\n return;\n }\n\n for (const entry of entries) {\n hooks.remove?.(object, entry.item as I, entry.handle as H);\n }\n};\n\nconst listUpdate = <P extends GObject.Object, I, H>(\n prop: string,\n hooks: ListHooks<P, I, H>,\n): NonNullable<ElementBehavior<P>[\"update\"]> => {\n const { add } = hooks;\n\n return (object, _prev, next, context) => {\n const state = context as ListState;\n const raw = next[prop];\n const items: unknown[] = Array.isArray(raw) ? raw : [];\n\n if (isDeepEqual(state.snapshot, items)) {\n return [prop];\n }\n\n teardownList(object, state.entries, hooks);\n state.entries = items.map((item) => ({ item, handle: add?.(object, item as I) }));\n state.snapshot = structuredClone(items);\n\n return [prop];\n };\n};\n\nconst list = <P extends GObject.Object, I, H = void>(\n prop: string,\n hooks: ListHooks<P, I, H>,\n): ElementBehavior<P> => {\n const behavior: ElementBehavior<P> = {\n initialize: (): ListState => ({ snapshot: [], entries: [] }),\n update: listUpdate(prop, hooks),\n };\n\n if (hooks.remove === undefined && hooks.clear === undefined) {\n behavior.constructOnly = [prop];\n }\n\n return behavior;\n};\n\nconst settleDeferred = <P extends GObject.Object, V>(\n object: GObject.Object,\n state: DeferredState,\n prop: string,\n canApply: CanApply<P, V> | undefined,\n): void => {\n if (!state.isPresent || Object.is(Reflect.get(object, prop), state.desired)) {\n return;\n }\n\n if (canApply !== undefined && !canApply(object as P, state.desired as V)) {\n return;\n }\n\n applyWrite(prop, () => {\n Reflect.set(object, prop, state.desired);\n });\n};\n\nconst scheduleSettle = <P extends GObject.Object, V>(\n object: GObject.Object,\n state: DeferredState,\n prop: string,\n canApply: CanApply<P, V> | undefined,\n): void => {\n if (state.isScheduled) {\n return;\n }\n\n state.isScheduled = true;\n\n queueMicrotask(() => {\n state.isScheduled = false;\n\n if (state.disconnect !== null) {\n settleDeferred(object, state, prop, canApply);\n }\n });\n};\n\nconst watchDrift = <P extends GObject.Object, V>(\n object: GObject.Object,\n state: DeferredState,\n prop: string,\n canApply: CanApply<P, V> | undefined,\n): void => {\n if (state.disconnect !== null) {\n return;\n }\n\n const signal = `notify::${getPropertyName(object, prop) ?? unsanitizeIdentifier(kebabCase(prop))}`;\n\n const handler = (): undefined => {\n scheduleSettle(object, state, prop, canApply);\n };\n\n object.on(signal, handler);\n\n state.disconnect = (): void => {\n object.off(signal, handler);\n };\n};\n\nconst deferred = <P extends GObject.Object, V>(\n prop: string,\n canApply?: CanApply<P, V>,\n): ElementBehavior<P> => ({\n deferred: [prop],\n initialize: (): DeferredState => ({ desired: undefined, isPresent: false, isScheduled: false, disconnect: null }),\n update: (_object, _prev, next, context) => {\n const state = context as DeferredState;\n state.desired = next[prop];\n state.isPresent = next[prop] !== undefined;\n\n return [prop];\n },\n flush: (object, context) => {\n const state = context as DeferredState;\n settleDeferred(object, state, prop, canApply);\n watchDrift(object, state, prop, canApply);\n },\n teardown: (_object, context) => {\n const state = context as DeferredState;\n state.disconnect?.();\n state.disconnect = null;\n },\n});\n\nconst controlledText = (prop: string): ElementBehavior =>\n value(prop, (object, next) => {\n if (!hasSameText(object, prop, next)) {\n applyWrite(prop, () => {\n Reflect.set(object, prop, next);\n });\n }\n });\n\nconst childSetterSlot = <P extends ChildSetter>(): ElementBehavior<P> =>\n slot<P, Gtk.Widget>(\"children\", \"GtkWidget\", {\n attach: (parent, child) => {\n parent.setChild(child);\n },\n detach: (parent) => {\n parent.setChild(null);\n },\n });\n\nconst contentSetterSlot = <P extends ContentSetter<C>, C extends Gtk.Widget = Gtk.Widget>(\n childType = \"GtkWidget\",\n): ElementBehavior<P> =>\n slot<P, C>(\"children\", childType, {\n attach: (parent, child) => {\n parent.setContent(child);\n },\n detach: (parent) => {\n parent.setContent(null);\n },\n });\n\nconst boxSlot = <P extends BoxLike>(): ElementBehavior<P> =>\n slot<P, Gtk.Widget>(\"children\", \"GtkWidget\", {\n attach: (box, child, info) => box.insertChildAfter(child, info.sibling as Gtk.Widget | null),\n detach: (box, child) => {\n box.remove(child);\n },\n reorder: (box, child, info) => {\n box.reorderChildAfter(child, info.sibling as Gtk.Widget | null);\n },\n });\n\nconst addRemoveSlot = <C extends GObject.Object, P extends GObject.Object>(\n slotName: string,\n childType: string,\n add: (parent: P, child: C) => unknown,\n remove: (parent: P, child: C) => void,\n): ElementBehavior => slot<P, C>(slotName, childType, { attach: add, detach: remove });\n\nconst indexedSlot = <P extends IndexedChildHost<C>, C extends GObject.Object>(\n slotName: string,\n childType: string,\n): ElementBehavior<P> =>\n slot<P, C>(slotName, childType, {\n attach: (parent, child, info) => {\n parent.insert(child, info.index);\n },\n detach: (parent, child) => {\n parent.remove(child);\n },\n reorder: (parent, child, info) => {\n parent.remove(child);\n parent.insert(child, info.index);\n },\n });\n\nconst adoptedChildrenSlot = <P extends GObject.Object, C extends GObject.Object>(\n childType: string,\n add: (parent: P, item: C) => unknown,\n remove: (parent: P, item: C) => void,\n): ElementBehavior => addRemoveSlot<C, P>(\"children\", childType, add, remove);\n\nconst wrappedRow = <W extends Gtk.Widget>(\n Wrapper: new (props: Props) => W,\n setChild: (wrapper: W, inner: Gtk.Widget) => void,\n rows: RowCache,\n child: Gtk.Widget,\n): Gtk.Widget => {\n if (child instanceof Wrapper) {\n return child;\n }\n\n const existing = rows.get(child);\n\n if (existing !== undefined) {\n return existing;\n }\n\n const wrapper = new Wrapper({});\n setChild(wrapper, child);\n rows.set(child, wrapper);\n\n return wrapper;\n};\n\nconst removeWrappedRow = (\n Wrapper: new (props: Props) => Gtk.Widget,\n parent: IndexedChildHost<Gtk.Widget>,\n child: Gtk.Widget,\n rows: RowCache,\n): void => {\n const row = child instanceof Wrapper ? child : rows.get(child);\n\n if (row !== undefined) {\n parent.remove(row);\n }\n};\n\nconst wrappingIndexedSlot = <W extends Gtk.Widget, P extends IndexedChildHost<Gtk.Widget>>(\n Wrapper: new (props: Props) => W,\n setChild: (wrapper: W, inner: Gtk.Widget) => void,\n): ElementBehavior<P> => ({\n ...slot<P, Gtk.Widget>(\"children\", \"GtkWidget\", {\n attach: (parent, child, info) =>\n parent.insert(wrappedRow(Wrapper, setChild, info.context as RowCache, child), info.index),\n detach: (parent, child, info) => {\n removeWrappedRow(Wrapper, parent, child, info.context as RowCache);\n },\n }),\n initialize: (): RowCache => new WeakMap(),\n});\n\nconst applicationCreator = <P extends GObject.Object & CommandLineApplication, C extends Props>(\n base: ApplicationClass<P, C>,\n): ElementBehavior<P> => ({\n create: (props) => createApplication(base, props as C),\n});\n\nexport {\n applicationCreator,\n childMatcher,\n slot,\n value,\n list,\n deferred,\n controlledText,\n childSetterSlot,\n contentSetterSlot,\n boxSlot,\n addRemoveSlot,\n adoptedChildrenSlot,\n indexedSlot,\n wrappingIndexedSlot,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"behaviors.js","sourceRoot":"","sources":["../../src/reconciler/behaviors.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as GObject from \"@gtkx/gi/gobject\";\nimport type * as Gtk from \"@gtkx/gi/gtk\";\nimport {\n type AnyClass,\n type ApplicationClass,\n type CommandLineApplication,\n createApplication,\n getClassType,\n TYPE_INVALID,\n typeFromName,\n typeIsA,\n} from \"@gtkx/runtime\";\nimport { getOrInsert, isDeepEqual, kebabCase, structuredClone, unsanitizeIdentifier } from \"@gtkx/utils\";\nimport type { DetachInfo, ElementBehavior, PlaceInfo, Props } from \"./registry.js\";\nimport { getPropertyName } from \"./metadata.js\";\nimport { applyWrite } from \"./signals.js\";\nimport { hasSameText } from \"./text.js\";\n\ntype SlotHooks<P extends GObject.Object, C extends GObject.Object> = {\n attach: (parent: P, child: C, info: PlaceInfo) => unknown;\n detach?: (parent: P, child: C, info: DetachInfo) => void;\n reorder?: (parent: P, child: C, info: PlaceInfo) => unknown;\n resolve?: (parent: P, child: C) => GObject.Object | null;\n};\n\ntype ValueApply<P extends GObject.Object, V> = (object: P, value: V) => void;\n\ntype ListHooks<P extends GObject.Object, I, H> = {\n add?: (parent: P, item: I) => H;\n remove?: (parent: P, item: I, handle: H) => void;\n clear?: (parent: P) => void;\n};\n\ntype ListEntry = { item: unknown; handle: unknown };\ntype ListState = { snapshot: unknown[]; entries: ListEntry[] };\ntype DeferredState = { desired: unknown; isPresent: boolean; isScheduled: boolean; disconnect: (() => void) | null };\ntype CanApply<P extends GObject.Object, V> = (object: P, value: V) => boolean;\n\ntype DeferredOps<P extends GObject.Object, V> = {\n canApply?: CanApply<P, V> | undefined;\n parse?: ((value: unknown) => V | undefined) | undefined;\n read: (object: P) => unknown;\n write: (object: P, value: V) => void;\n signal?: string | undefined;\n};\n\ntype DeferredHooks<P extends GObject.Object, V> = Omit<DeferredOps<P, V>, \"read\" | \"write\"> & {\n read?: ((object: P) => unknown) | undefined;\n write?: ((object: P, value: V) => void) | undefined;\n};\n\ntype ChildSetter = GObject.Object & { setChild: (child: Gtk.Widget | null) => void };\ntype ContentSetter<C extends Gtk.Widget> = GObject.Object & { setContent: (content: C | null) => void };\ntype MatchingKey<P, F> = keyof P & string & { [K in keyof P]: P[K] extends F ? K : never }[keyof P];\ntype MethodKey<P, A> = MatchingKey<P, (argument: A) => unknown>;\n\ntype BoxLike = GObject.Object & {\n remove: (child: Gtk.Widget) => void;\n insertChildAfter: (child: Gtk.Widget, sibling: Gtk.Widget | null) => unknown;\n reorderChildAfter: (child: Gtk.Widget, sibling: Gtk.Widget | null) => void;\n};\n\ntype RowCache = WeakMap<GObject.Object, Gtk.Widget>;\n\ntype IndexedChildHost<C extends GObject.Object> = GObject.Object & {\n remove: (child: C) => void;\n insert: (child: C, position: number) => unknown;\n};\n\nconst childTypeCache: Map<string, bigint> = new Map();\n\nconst childTypeFor = (name: string): bigint => getOrInsert(childTypeCache, name, typeFromName);\n\nconst childMatcher =\n (name: string): ((child: GObject.Object) => boolean) =>\n (child) => {\n const type = childTypeFor(name);\n\n return type === TYPE_INVALID || typeIsA(getClassType(child.constructor as AnyClass), type);\n };\n\nconst slotAttach =\n <P extends GObject.Object, C extends GObject.Object>(\n slotName: string,\n isMatch: (child: GObject.Object) => boolean,\n attach: SlotHooks<P, C>[\"attach\"],\n ): NonNullable<ElementBehavior[\"attach\"]> =>\n (object, child, info) => {\n if (info.slot !== slotName || !isMatch(child)) {\n return;\n }\n\n return attach(object as P, child as C, info) ?? true;\n };\n\nconst slot = <P extends GObject.Object, C extends GObject.Object>(\n slotName: string,\n childType: string,\n hooks: SlotHooks<P, C>,\n): ElementBehavior => {\n const matches = childMatcher(childType);\n const { attach, detach, reorder, resolve } = hooks;\n const behavior: ElementBehavior = { attach: slotAttach(slotName, matches, attach) };\n\n if (reorder !== undefined) {\n behavior.reorder = (object, child, info) => reorder(object as P, child as C, info) ?? true;\n }\n\n if (detach !== undefined) {\n behavior.detach = (object, child, info) => {\n detach(object as P, child as C, info);\n };\n }\n\n if (resolve !== undefined) {\n behavior.resolve = (object, child) => resolve(object as P, child as C);\n }\n\n return behavior;\n};\n\nconst value = <P extends GObject.Object, V>(\n prop: string,\n apply: ValueApply<P, V>,\n): ElementBehavior<P> => ({\n update: (object, prev, next) => {\n if (!Object.is(prev[prop], next[prop]) && next[prop] !== undefined) {\n apply(object, next[prop] as V);\n }\n\n return [prop];\n },\n});\n\nconst teardownList = <P extends GObject.Object, I, H>(\n object: P,\n entries: ListEntry[],\n hooks: ListHooks<P, I, H>,\n): void => {\n if (hooks.clear !== undefined) {\n hooks.clear(object);\n\n return;\n }\n\n for (const entry of entries) {\n hooks.remove?.(object, entry.item as I, entry.handle as H);\n }\n};\n\nconst listUpdate = <P extends GObject.Object, I, H>(\n prop: string,\n hooks: ListHooks<P, I, H>,\n): NonNullable<ElementBehavior<P>[\"update\"]> => {\n const { add } = hooks;\n\n return (object, _prev, next, context) => {\n const state = context as ListState;\n const raw = next[prop];\n const items: unknown[] = Array.isArray(raw) ? raw : [];\n\n if (isDeepEqual(state.snapshot, items)) {\n return [prop];\n }\n\n teardownList(object, state.entries, hooks);\n state.entries = items.map((item) => ({ item, handle: add?.(object, item as I) }));\n state.snapshot = structuredClone(items);\n\n return [prop];\n };\n};\n\nconst list = <P extends GObject.Object, I, H = void>(\n prop: string,\n hooks: ListHooks<P, I, H>,\n): ElementBehavior<P> => {\n const behavior: ElementBehavior<P> = {\n initialize: (): ListState => ({ snapshot: [], entries: [] }),\n update: listUpdate(prop, hooks),\n };\n\n if (hooks.remove === undefined && hooks.clear === undefined) {\n behavior.constructOnly = [prop];\n }\n\n return behavior;\n};\n\nconst settleDeferred = <P extends GObject.Object, V>(\n object: P,\n state: DeferredState,\n prop: string,\n ops: DeferredOps<P, V>,\n): void => {\n if (!state.isPresent || Object.is(ops.read(object), state.desired)) {\n return;\n }\n\n const desired = state.desired as V;\n\n if (ops.canApply !== undefined && !ops.canApply(object, desired)) {\n return;\n }\n\n applyWrite(prop, () => {\n ops.write(object, desired);\n });\n};\n\nconst scheduleSettle = <P extends GObject.Object, V>(\n object: P,\n state: DeferredState,\n prop: string,\n ops: DeferredOps<P, V>,\n): void => {\n if (state.isScheduled) {\n return;\n }\n\n state.isScheduled = true;\n\n queueMicrotask(() => {\n state.isScheduled = false;\n\n if (state.disconnect !== null) {\n settleDeferred(object, state, prop, ops);\n }\n });\n};\n\nconst watchDrift = <P extends GObject.Object, V>(\n object: P,\n state: DeferredState,\n prop: string,\n ops: DeferredOps<P, V>,\n): void => {\n if (state.disconnect !== null) {\n return;\n }\n\n const signal = ops.signal ?? `notify::${getPropertyName(object, prop) ?? unsanitizeIdentifier(kebabCase(prop))}`;\n\n const handler = (): undefined => {\n scheduleSettle(object, state, prop, ops);\n };\n\n object.on(signal, handler);\n\n state.disconnect = (): void => {\n object.off(signal, handler);\n };\n};\n\nconst deferredBehavior = <P extends GObject.Object, V>(prop: string, ops: DeferredOps<P, V>): ElementBehavior<P> => ({\n deferred: [prop],\n initialize: (): DeferredState => ({ desired: undefined, isPresent: false, isScheduled: false, disconnect: null }),\n update: (_object, _prev, next, context) => {\n const state = context as DeferredState;\n state.desired = ops.parse === undefined ? next[prop] : ops.parse(next[prop]);\n state.isPresent = state.desired !== undefined;\n\n return [prop];\n },\n flush: (object, context) => {\n const state = context as DeferredState;\n settleDeferred(object, state, prop, ops);\n watchDrift(object, state, prop, ops);\n },\n teardown: (_object, context) => {\n const state = context as DeferredState;\n state.disconnect?.();\n state.disconnect = null;\n },\n});\n\nconst deferredWith = <P extends GObject.Object, V>(prop: string, hooks: DeferredHooks<P, V>): ElementBehavior<P> =>\n deferredBehavior<P, V>(prop, {\n ...hooks,\n read: hooks.read ?? ((object) => Reflect.get(object, prop)),\n write: hooks.write ?? ((object, value) => {\n Reflect.set(object, prop, value);\n }),\n });\n\nconst deferred = <P extends GObject.Object, V>(prop: string, canApply?: CanApply<P, V>): ElementBehavior<P> =>\n deferredWith<P, V>(prop, { canApply });\n\nconst controlledText = (prop: string): ElementBehavior =>\n value(prop, (object, next) => {\n if (!hasSameText(object, prop, next)) {\n applyWrite(prop, () => {\n Reflect.set(object, prop, next);\n });\n }\n });\n\nconst childSetterSlot = <P extends ChildSetter>(): ElementBehavior<P> =>\n slot<P, Gtk.Widget>(\"children\", \"GtkWidget\", {\n attach: (parent, child) => {\n parent.setChild(child);\n },\n detach: (parent) => {\n parent.setChild(null);\n },\n });\n\nconst contentSetterSlot = <P extends ContentSetter<C>, C extends Gtk.Widget = Gtk.Widget>(\n childType = \"GtkWidget\",\n): ElementBehavior<P> =>\n slot<P, C>(\"children\", childType, {\n attach: (parent, child) => {\n parent.setContent(child);\n },\n detach: (parent) => {\n parent.setContent(null);\n },\n });\n\nconst boxSlot = <P extends BoxLike>(): ElementBehavior<P> =>\n slot<P, Gtk.Widget>(\"children\", \"GtkWidget\", {\n attach: (box, child, info) => box.insertChildAfter(child, info.sibling as Gtk.Widget | null),\n detach: (box, child) => {\n box.remove(child);\n },\n reorder: (box, child, info) => {\n box.reorderChildAfter(child, info.sibling as Gtk.Widget | null);\n },\n });\n\nconst callMethod = <P extends GObject.Object, A>(parent: P, method: MethodKey<P, A>, argument: A): unknown =>\n (parent[method] as (argument: A) => unknown)(argument);\n\nconst methodSlot = <P extends GObject.Object, C extends GObject.Object>(\n slotName: string,\n childType: string,\n add: MethodKey<P, C>,\n remove?: MethodKey<P, C>,\n): ElementBehavior => {\n const hooks: SlotHooks<P, C> = { attach: (parent, child) => callMethod(parent, add, child) };\n\n if (remove !== undefined) {\n hooks.detach = (parent, child) => {\n callMethod(parent, remove, child);\n };\n }\n\n return slot<P, C>(slotName, childType, hooks);\n};\n\nconst setterSlot = <P extends GObject.Object, C extends GObject.Object>(\n slotName: string,\n childType: string,\n setter: MethodKey<P, C | null>,\n): ElementBehavior =>\n slot<P, C>(slotName, childType, {\n attach: (parent, child) => {\n callMethod<P, C | null>(parent, setter, child);\n },\n detach: (parent) => {\n callMethod<P, C | null>(parent, setter, null);\n },\n });\n\nconst indexedSlot = <P extends IndexedChildHost<C>, C extends GObject.Object>(\n slotName: string,\n childType: string,\n): ElementBehavior<P> =>\n slot<P, C>(slotName, childType, {\n attach: (parent, child, info) => {\n parent.insert(child, info.index);\n },\n detach: (parent, child) => {\n parent.remove(child);\n },\n reorder: (parent, child, info) => {\n parent.remove(child);\n parent.insert(child, info.index);\n },\n });\n\nconst wrappedRow = <W extends Gtk.Widget>(\n Wrapper: new (props: Props) => W,\n setChild: (wrapper: W, inner: Gtk.Widget) => void,\n rows: RowCache,\n child: Gtk.Widget,\n): Gtk.Widget => {\n if (child instanceof Wrapper) {\n return child;\n }\n\n const existing = rows.get(child);\n\n if (existing !== undefined) {\n return existing;\n }\n\n const wrapper = new Wrapper({});\n setChild(wrapper, child);\n rows.set(child, wrapper);\n\n return wrapper;\n};\n\nconst removeWrappedRow = (\n Wrapper: new (props: Props) => Gtk.Widget,\n parent: IndexedChildHost<Gtk.Widget>,\n child: Gtk.Widget,\n rows: RowCache,\n): void => {\n const row = child instanceof Wrapper ? child : rows.get(child);\n\n if (row !== undefined) {\n parent.remove(row);\n }\n};\n\nconst wrappingIndexedSlot = <W extends Gtk.Widget, P extends IndexedChildHost<Gtk.Widget>>(\n Wrapper: new (props: Props) => W,\n setChild: (wrapper: W, inner: Gtk.Widget) => void,\n): ElementBehavior<P> => ({\n ...slot<P, Gtk.Widget>(\"children\", \"GtkWidget\", {\n attach: (parent, child, info) =>\n parent.insert(wrappedRow(Wrapper, setChild, info.context as RowCache, child), info.index),\n detach: (parent, child, info) => {\n removeWrappedRow(Wrapper, parent, child, info.context as RowCache);\n },\n }),\n initialize: (): RowCache => new WeakMap(),\n});\n\nconst applicationCreator = <P extends GObject.Object & CommandLineApplication, C extends Props>(\n base: ApplicationClass<P, C>,\n): ElementBehavior<P> => ({\n create: (props) => createApplication(base, props as C),\n});\n\nexport {\n applicationCreator,\n childMatcher,\n slot,\n value,\n list,\n deferred,\n deferredWith,\n controlledText,\n childSetterSlot,\n contentSetterSlot,\n boxSlot,\n methodSlot,\n setterSlot,\n indexedSlot,\n wrappingIndexedSlot,\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gtkx/react",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "React reconciler for GTK. Renders real GTK4 widget trees.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"gtkx",
|
|
@@ -86,10 +86,10 @@
|
|
|
86
86
|
},
|
|
87
87
|
"dependencies": {
|
|
88
88
|
"react-reconciler": "^0.33.0",
|
|
89
|
-
"@gtkx/config": "1.
|
|
90
|
-
"@gtkx/
|
|
91
|
-
"@gtkx/
|
|
92
|
-
"@gtkx/utils": "1.
|
|
89
|
+
"@gtkx/config": "1.5.0",
|
|
90
|
+
"@gtkx/css": "1.5.0",
|
|
91
|
+
"@gtkx/runtime": "1.5.0",
|
|
92
|
+
"@gtkx/utils": "1.5.0"
|
|
93
93
|
},
|
|
94
94
|
"devDependencies": {
|
|
95
95
|
"@types/react": "^19.2.18",
|