@gtkx/react 1.0.0-rc.3 → 1.0.0-rc.4

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.
Files changed (164) hide show
  1. package/README.md +4 -5
  2. package/dist/adw/config.d.ts +1 -0
  3. package/dist/adw/config.d.ts.map +1 -1
  4. package/dist/adw/config.js +1 -0
  5. package/dist/adw/config.js.map +1 -1
  6. package/dist/adw/dialog.d.ts +1 -0
  7. package/dist/adw/dialog.d.ts.map +1 -1
  8. package/dist/adw/dialog.js +1 -0
  9. package/dist/adw/dialog.js.map +1 -1
  10. package/dist/adw/element-behaviors.js +2 -3
  11. package/dist/adw/element-behaviors.js.map +1 -1
  12. package/dist/adw/element-config.d.ts +4 -3
  13. package/dist/adw/element-config.d.ts.map +1 -1
  14. package/dist/adw/element-config.js +14 -13
  15. package/dist/adw/element-config.js.map +1 -1
  16. package/dist/adw/index.d.ts +1 -0
  17. package/dist/adw/index.d.ts.map +1 -1
  18. package/dist/adw/index.js +1 -0
  19. package/dist/adw/index.js.map +1 -1
  20. package/dist/adw/prop-types.d.ts +1 -1
  21. package/dist/adw/prop-types.d.ts.map +1 -1
  22. package/dist/adw/prop-types.js.map +1 -1
  23. package/dist/bootstrap.js +1 -1
  24. package/dist/bootstrap.js.map +1 -1
  25. package/dist/components/application.d.ts +1 -0
  26. package/dist/components/application.d.ts.map +1 -1
  27. package/dist/components/application.js +1 -0
  28. package/dist/components/application.js.map +1 -1
  29. package/dist/components/element.d.ts +0 -1
  30. package/dist/components/element.d.ts.map +1 -1
  31. package/dist/components/element.js +0 -1
  32. package/dist/components/element.js.map +1 -1
  33. package/dist/components/window.d.ts +1 -0
  34. package/dist/components/window.d.ts.map +1 -1
  35. package/dist/components/window.js +1 -0
  36. package/dist/components/window.js.map +1 -1
  37. package/dist/config.d.ts +5 -2
  38. package/dist/config.d.ts.map +1 -1
  39. package/dist/config.js +3 -1
  40. package/dist/config.js.map +1 -1
  41. package/dist/element-behaviors.js +0 -1
  42. package/dist/element-behaviors.js.map +1 -1
  43. package/dist/element-config.d.ts +4 -3
  44. package/dist/element-config.d.ts.map +1 -1
  45. package/dist/element-config.js +12 -11
  46. package/dist/element-config.js.map +1 -1
  47. package/dist/hooks/use-bind-setting.d.ts +8 -7
  48. package/dist/hooks/use-bind-setting.d.ts.map +1 -1
  49. package/dist/hooks/use-bind-setting.js +2 -7
  50. package/dist/hooks/use-bind-setting.js.map +1 -1
  51. package/dist/hooks/use-parent-window.d.ts +3 -1
  52. package/dist/hooks/use-parent-window.d.ts.map +1 -1
  53. package/dist/hooks/use-parent-window.js +3 -1
  54. package/dist/hooks/use-parent-window.js.map +1 -1
  55. package/dist/hooks/use-property.d.ts +2 -2
  56. package/dist/hooks/use-property.d.ts.map +1 -1
  57. package/dist/hooks/use-property.js +1 -2
  58. package/dist/hooks/use-property.js.map +1 -1
  59. package/dist/hooks/use-setting.d.ts +2 -3
  60. package/dist/hooks/use-setting.d.ts.map +1 -1
  61. package/dist/hooks/use-setting.js +2 -3
  62. package/dist/hooks/use-setting.js.map +1 -1
  63. package/dist/hooks/use-signal.d.ts +13 -7
  64. package/dist/hooks/use-signal.d.ts.map +1 -1
  65. package/dist/hooks/use-signal.js +6 -8
  66. package/dist/hooks/use-signal.js.map +1 -1
  67. package/dist/index.d.ts +10 -2
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +8 -0
  70. package/dist/index.js.map +1 -1
  71. package/dist/internal.d.ts +4 -3
  72. package/dist/internal.d.ts.map +1 -1
  73. package/dist/internal.js +2 -3
  74. package/dist/internal.js.map +1 -1
  75. package/dist/prop-types.d.ts +60 -0
  76. package/dist/prop-types.d.ts.map +1 -1
  77. package/dist/prop-types.js.map +1 -1
  78. package/dist/reconciler/behaviors.d.ts +0 -15
  79. package/dist/reconciler/behaviors.d.ts.map +1 -1
  80. package/dist/reconciler/behaviors.js +5 -20
  81. package/dist/reconciler/behaviors.js.map +1 -1
  82. package/dist/reconciler/host-config.d.ts +1 -1
  83. package/dist/reconciler/host-config.d.ts.map +1 -1
  84. package/dist/reconciler/host-config.js.map +1 -1
  85. package/dist/reconciler/instance.js +1 -1
  86. package/dist/reconciler/instance.js.map +1 -1
  87. package/dist/reconciler/metadata.d.ts +1 -1
  88. package/dist/reconciler/metadata.d.ts.map +1 -1
  89. package/dist/reconciler/metadata.js +7 -7
  90. package/dist/reconciler/metadata.js.map +1 -1
  91. package/dist/reconciler/node.d.ts +2 -2
  92. package/dist/reconciler/node.d.ts.map +1 -1
  93. package/dist/reconciler/node.js +1 -1
  94. package/dist/reconciler/node.js.map +1 -1
  95. package/dist/reconciler/placement.js +6 -6
  96. package/dist/reconciler/placement.js.map +1 -1
  97. package/dist/reconciler/registry.d.ts +42 -30
  98. package/dist/reconciler/registry.d.ts.map +1 -1
  99. package/dist/reconciler/registry.js +10 -19
  100. package/dist/reconciler/registry.js.map +1 -1
  101. package/dist/reconciler/root-element.d.ts +0 -1
  102. package/dist/reconciler/root-element.d.ts.map +1 -1
  103. package/dist/reconciler/root-element.js +0 -1
  104. package/dist/reconciler/root-element.js.map +1 -1
  105. package/dist/reconciler/root.d.ts +6 -20
  106. package/dist/reconciler/root.d.ts.map +1 -1
  107. package/dist/reconciler/root.js +4 -19
  108. package/dist/reconciler/root.js.map +1 -1
  109. package/dist/reconciler/signals.js +2 -2
  110. package/dist/reconciler/signals.js.map +1 -1
  111. package/dist/reconciler/text.js +5 -5
  112. package/dist/reconciler/text.js.map +1 -1
  113. package/dist/utils/accessible-metadata.d.ts +0 -7
  114. package/dist/utils/accessible-metadata.d.ts.map +1 -1
  115. package/dist/utils/accessible-metadata.js +0 -7
  116. package/dist/utils/accessible-metadata.js.map +1 -1
  117. package/dist/utils/accessible-props.d.ts +49 -1
  118. package/dist/utils/accessible-props.d.ts.map +1 -1
  119. package/dist/utils/accessible-props.js.map +1 -1
  120. package/dist/utils/ref-prop.d.ts +0 -6
  121. package/dist/utils/ref-prop.d.ts.map +1 -1
  122. package/dist/utils/ref-prop.js +0 -6
  123. package/dist/utils/ref-prop.js.map +1 -1
  124. package/dist/utils/settings.d.ts +6 -0
  125. package/dist/utils/settings.d.ts.map +1 -1
  126. package/dist/utils/settings.js.map +1 -1
  127. package/env.d.ts +11 -4
  128. package/package.json +5 -5
  129. package/src/adw/config.ts +1 -0
  130. package/src/adw/dialog.tsx +1 -0
  131. package/src/adw/element-behaviors.ts +2 -3
  132. package/src/adw/element-config.ts +14 -13
  133. package/src/adw/index.ts +1 -0
  134. package/src/adw/prop-types.ts +1 -1
  135. package/src/bootstrap.ts +1 -1
  136. package/src/components/application.tsx +1 -0
  137. package/src/components/element.tsx +0 -1
  138. package/src/components/window.tsx +1 -0
  139. package/src/config.ts +5 -9
  140. package/src/element-behaviors.ts +0 -1
  141. package/src/element-config.ts +12 -11
  142. package/src/hooks/use-bind-setting.ts +8 -7
  143. package/src/hooks/use-parent-window.ts +3 -1
  144. package/src/hooks/use-property.ts +2 -2
  145. package/src/hooks/use-setting.ts +2 -3
  146. package/src/hooks/use-signal.ts +16 -10
  147. package/src/index.ts +10 -2
  148. package/src/internal.ts +4 -3
  149. package/src/prop-types.ts +86 -5
  150. package/src/reconciler/behaviors.ts +6 -21
  151. package/src/reconciler/host-config.ts +1 -1
  152. package/src/reconciler/instance.ts +1 -1
  153. package/src/reconciler/metadata.ts +8 -8
  154. package/src/reconciler/node.ts +3 -3
  155. package/src/reconciler/placement.ts +6 -6
  156. package/src/reconciler/registry.ts +52 -37
  157. package/src/reconciler/root-element.ts +0 -1
  158. package/src/reconciler/root.ts +6 -20
  159. package/src/reconciler/signals.ts +2 -2
  160. package/src/reconciler/text.ts +6 -6
  161. package/src/utils/accessible-metadata.ts +0 -7
  162. package/src/utils/accessible-props.ts +49 -1
  163. package/src/utils/ref-prop.ts +0 -6
  164. package/src/utils/settings.ts +6 -0
@@ -1 +1 @@
1
- {"version":3,"file":"host-config.js","sourceRoot":"","sources":["../../src/reconciler/host-config.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as GObject from \"@gtkx/gi/gobject\";\nimport * as Gtk from \"@gtkx/gi/gtk\";\nimport { getInstanceType, typeName } from \"@gtkx/runtime\";\nimport { getOrInsert } from \"@gtkx/utils\";\nimport { createContext } from \"react\";\nimport ReactReconciler from \"react-reconciler\";\nimport { DefaultEventPriority, DiscreteEventPriority, NoEventPriority } from \"react-reconciler/constants.js\";\nimport type { Props } from \"./registry.js\";\nimport { Prop } from \"../components/element.js\";\nimport {\n applyAdoptedProps,\n applyElementProps,\n assertConstructOnlyUnchanged,\n flushBehaviors,\n mountBehaviors,\n unmountBehaviors,\n} from \"./apply-props.js\";\nimport { attachChild, detachChild } from \"./child-routing.js\";\nimport { resolveElementNode } from \"./instance.js\";\nimport { typeInfoFor } from \"./metadata.js\";\nimport {\n type AnyNode,\n createElementNode,\n createPropNode,\n createTextNode,\n type Dispatch,\n ELEMENT_KIND,\n type ElementNode,\n type Instance,\n LAZY_KIND,\n lazyTarget,\n type TextNode,\n} from \"./node.js\";\nimport { isRootElement, type RootElement } from \"./root-element.js\";\nimport { disconnectAllHandlers } from \"./signals.js\";\nimport {\n didUpdateTextSurgically,\n enclosingHost,\n flushTextHosts,\n markTextDirty,\n validateContentMix,\n} from \"./text.js\";\n\n/** A top-level container an element tree can be mounted into. */\ntype Container = RootElement | GObject.Object;\n\ntype PriorityTracker = {\n get: () => number;\n set: (priority: number) => void;\n withDiscrete: <T>(fn: () => T) => T;\n};\n\nconst HOST_CONTEXT: Record<string, never> = {};\nconst containerNodes: WeakMap<object, ElementNode> = new WeakMap();\nconst priority = createPriorityTracker();\n\nconst hostConfig = {\n supportsMutation: true,\n supportsPersistence: false,\n supportsHydration: false,\n isPrimaryRenderer: true,\n noTimeout: -1,\n scheduleTimeout: (fn: (...args: unknown[]) => unknown, delay?: number): ReturnType<typeof setTimeout> =>\n setTimeout(fn, delay),\n cancelTimeout: (id: ReturnType<typeof setTimeout>): void => {\n clearTimeout(id);\n },\n createInstance: (type: string, props: Props): Instance => createNode(type, props),\n createTextInstance: (text: string): TextNode => createTextNode(text),\n appendInitialChild: (parent: Instance, child: AnyNode): void => {\n attachChild(parent, child, null);\n },\n finalizeInitialChildren: (instance: Instance, _type: string, props: Props): boolean => {\n if (instance.kind !== ELEMENT_KIND) {\n return false;\n }\n\n validateContentMix(instance, props);\n\n return typeInfoFor(instance.typeName).hasMount;\n },\n commitMount: (instance: Instance): void => {\n if (instance.kind === ELEMENT_KIND) {\n mountBehaviors(instance);\n }\n },\n shouldSetTextContent: (): boolean => false,\n getRootHostContext: (): Record<string, never> => HOST_CONTEXT,\n getChildHostContext: (parent: Record<string, never>): Record<string, never> => parent,\n getPublicInstance: (instance: Instance): object => getPublicInstance(instance),\n prepareForCommit: (): null => null,\n resetAfterCommit: (): void => {\n flushTextHosts();\n flushBehaviors();\n },\n preparePortalMount: (): void => undefined,\n clearContainer: (): void => undefined,\n appendChild: (parent: Instance, child: AnyNode): void => {\n attachChild(parent, child, null);\n },\n appendChildToContainer: (container: Container, child: AnyNode): void => {\n attachToContainer(container, child, null);\n },\n insertBefore: (parent: Instance, child: AnyNode, before: AnyNode): void => {\n attachChild(parent, child, before);\n },\n insertInContainerBefore: (container: Container, child: AnyNode, before: AnyNode): void => {\n attachToContainer(container, child, before);\n },\n removeChild: (parent: Instance, child: AnyNode): void => {\n detachChild(parent, child);\n },\n removeChildFromContainer: (container: Container, child: AnyNode): void => {\n detachFromContainer(container, child);\n },\n commitTextUpdate: (textInstance: TextNode, oldText: string, newText: string): void => {\n textInstance.text = newText;\n const host = enclosingHost(textInstance);\n\n if (host !== null && !didUpdateTextSurgically(host, textInstance, oldText, newText)) {\n markTextDirty(host);\n }\n },\n commitUpdate: (instance: Instance, _type: string, prevProps: Props, nextProps: Props): void => {\n updateInstance(instance, prevProps, nextProps);\n },\n hideInstance: (instance: Instance): void => {\n setWidgetVisible(instance, false);\n },\n unhideInstance: (instance: Instance, props: Props): void => {\n setWidgetVisible(instance, props.visible !== false);\n },\n hideTextInstance: (): void => undefined,\n unhideTextInstance: (): void => undefined,\n detachDeletedInstance: (instance: Instance): void => {\n if (instance.kind === ELEMENT_KIND) {\n disconnectAllHandlers(instance);\n unmountBehaviors(instance);\n } else if (instance.kind === LAZY_KIND && instance.adopted !== null) {\n disconnectAllHandlers(lazyTarget(instance, instance.adopted));\n }\n },\n getInstanceFromNode: (): null => null,\n beforeActiveInstanceBlur: (): void => undefined,\n afterActiveInstanceBlur: (): void => undefined,\n prepareScopeUpdate: (): void => undefined,\n getInstanceFromScope: (): null => null,\n setCurrentUpdatePriority: (next: number): void => {\n priority.set(next);\n },\n getCurrentUpdatePriority: (): number => priority.get(),\n resolveUpdatePriority: (): number => (priority.get() === NoEventPriority ? DefaultEventPriority : priority.get()),\n resetFormInstance: (): void => undefined,\n requestPostPaintCallback: (): void => undefined,\n shouldAttemptEagerTransition: (): boolean => false,\n trackSchedulerEvent: (): void => undefined,\n resolveEventType: (): null => null,\n resolveEventTimeStamp: (): number => -1,\n maySuspendCommit: (): boolean => false,\n preloadInstance: (): boolean => true,\n startSuspendingCommit: (): void => undefined,\n suspendInstance: (): void => undefined,\n waitForCommitToBeReady: (): null => null,\n NotPendingTransition: null,\n HostTransitionContext: createContext(null) as unknown as ReactReconciler.ReactContext<null>,\n};\n\nconst reconciler: ReactReconciler.Reconciler<Container, Instance, TextNode, unknown, unknown, object> =\n ReactReconciler(hostConfig);\n\nfunction createPriorityTracker(): PriorityTracker {\n let current: number = NoEventPriority;\n\n return {\n get: () => current,\n set: (next) => {\n current = next;\n },\n withDiscrete: (fn) => {\n const previous = current;\n current = DiscreteEventPriority;\n\n try {\n return fn();\n } finally {\n current = previous;\n }\n },\n };\n}\n\nconst updateInstance = (instance: Instance, prev: Props, next: Props): void => {\n if (instance.kind === ELEMENT_KIND) {\n assertConstructOnlyUnchanged(instance.typeName, prev, next);\n applyElementProps(instance, prev, next);\n\n return;\n }\n\n if (instance.kind === LAZY_KIND && instance.adopted !== null) {\n assertConstructOnlyUnchanged(instance.typeName, prev, next);\n applyAdoptedProps(lazyTarget(instance, instance.adopted), prev, next);\n instance.props = next;\n }\n};\n\nconst attachToContainer = (container: Container, child: AnyNode, before: AnyNode | null): void => {\n if (!isRootElement(container)) {\n attachChild(getOrCreateContainerNode(container), child, before);\n }\n};\n\nconst detachFromContainer = (container: Container, child: AnyNode): void => {\n if (!isRootElement(container)) {\n detachChild(getOrCreateContainerNode(container), child);\n }\n};\n\nconst getPublicInstance = (instance: Instance): object => {\n if (instance.kind === ELEMENT_KIND) {\n return instance.object;\n }\n\n if (instance.kind === LAZY_KIND) {\n return instance.adopted ?? instance;\n }\n\n return instance;\n};\n\nconst setWidgetVisible = (instance: Instance, isVisible: boolean): void => {\n if (instance.kind === ELEMENT_KIND && instance.object instanceof Gtk.Widget) {\n instance.object.setVisible(isVisible);\n }\n};\n\nconst runDiscrete: Dispatch = (fn) => {\n try {\n return priority.withDiscrete(fn);\n } finally {\n reconciler.flushSyncWork();\n }\n};\n\nconst adoptContainer = (container: GObject.Object): ElementNode => {\n const name = typeName(getInstanceType(container));\n\n if (name === null) {\n throw new Error(\"Cannot adopt a container whose GType has no registered name\");\n }\n\n return createElementNode(name, container, runDiscrete, null);\n};\n\nconst getOrCreateContainerNode = (container: GObject.Object): ElementNode =>\n getOrInsert(containerNodes, container, adoptContainer);\n\nconst createNode = (type: string, props: Props): Instance => {\n if (type === Prop) {\n return createPropNode(props.propName as string);\n }\n\n const node = resolveElementNode(type, props, runDiscrete);\n\n if (node.kind === ELEMENT_KIND) {\n containerNodes.set(node.object, node);\n applyElementProps(node, {}, props);\n }\n\n return node;\n};\n\nexport { reconciler, type Container };\n"]}
1
+ {"version":3,"file":"host-config.js","sourceRoot":"","sources":["../../src/reconciler/host-config.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as GObject from \"@gtkx/gi/gobject\";\nimport * as Gtk from \"@gtkx/gi/gtk\";\nimport { getInstanceType, typeName } from \"@gtkx/runtime\";\nimport { getOrInsert } from \"@gtkx/utils\";\nimport { createContext } from \"react\";\nimport ReactReconciler from \"react-reconciler\";\nimport { DefaultEventPriority, DiscreteEventPriority, NoEventPriority } from \"react-reconciler/constants.js\";\nimport type { Props } from \"./registry.js\";\nimport { Prop } from \"../components/element.js\";\nimport {\n applyAdoptedProps,\n applyElementProps,\n assertConstructOnlyUnchanged,\n flushBehaviors,\n mountBehaviors,\n unmountBehaviors,\n} from \"./apply-props.js\";\nimport { attachChild, detachChild } from \"./child-routing.js\";\nimport { resolveElementNode } from \"./instance.js\";\nimport { typeInfoFor } from \"./metadata.js\";\nimport {\n type AnyNode,\n createElementNode,\n createPropNode,\n createTextNode,\n type Dispatch,\n ELEMENT_KIND,\n type ElementNode,\n type Instance,\n LAZY_KIND,\n lazyTarget,\n type TextNode,\n} from \"./node.js\";\nimport { isRootElement, type RootElement } from \"./root-element.js\";\nimport { disconnectAllHandlers } from \"./signals.js\";\nimport {\n didUpdateTextSurgically,\n enclosingHost,\n flushTextHosts,\n markTextDirty,\n validateContentMix,\n} from \"./text.js\";\n\n/** What a tree is rendered into: any GObject, or the {@link RootElement} marker to render at the top level. */\ntype Container = RootElement | GObject.Object;\n\ntype PriorityTracker = {\n get: () => number;\n set: (priority: number) => void;\n withDiscrete: <T>(fn: () => T) => T;\n};\n\nconst HOST_CONTEXT: Record<string, never> = {};\nconst containerNodes: WeakMap<object, ElementNode> = new WeakMap();\nconst priority = createPriorityTracker();\n\nconst hostConfig = {\n supportsMutation: true,\n supportsPersistence: false,\n supportsHydration: false,\n isPrimaryRenderer: true,\n noTimeout: -1,\n scheduleTimeout: (fn: (...args: unknown[]) => unknown, delay?: number): ReturnType<typeof setTimeout> =>\n setTimeout(fn, delay),\n cancelTimeout: (id: ReturnType<typeof setTimeout>): void => {\n clearTimeout(id);\n },\n createInstance: (type: string, props: Props): Instance => createNode(type, props),\n createTextInstance: (text: string): TextNode => createTextNode(text),\n appendInitialChild: (parent: Instance, child: AnyNode): void => {\n attachChild(parent, child, null);\n },\n finalizeInitialChildren: (instance: Instance, _type: string, props: Props): boolean => {\n if (instance.kind !== ELEMENT_KIND) {\n return false;\n }\n\n validateContentMix(instance, props);\n\n return typeInfoFor(instance.typeName).hasMount;\n },\n commitMount: (instance: Instance): void => {\n if (instance.kind === ELEMENT_KIND) {\n mountBehaviors(instance);\n }\n },\n shouldSetTextContent: (): boolean => false,\n getRootHostContext: (): Record<string, never> => HOST_CONTEXT,\n getChildHostContext: (parent: Record<string, never>): Record<string, never> => parent,\n getPublicInstance: (instance: Instance): object => getPublicInstance(instance),\n prepareForCommit: (): null => null,\n resetAfterCommit: (): void => {\n flushTextHosts();\n flushBehaviors();\n },\n preparePortalMount: (): void => undefined,\n clearContainer: (): void => undefined,\n appendChild: (parent: Instance, child: AnyNode): void => {\n attachChild(parent, child, null);\n },\n appendChildToContainer: (container: Container, child: AnyNode): void => {\n attachToContainer(container, child, null);\n },\n insertBefore: (parent: Instance, child: AnyNode, before: AnyNode): void => {\n attachChild(parent, child, before);\n },\n insertInContainerBefore: (container: Container, child: AnyNode, before: AnyNode): void => {\n attachToContainer(container, child, before);\n },\n removeChild: (parent: Instance, child: AnyNode): void => {\n detachChild(parent, child);\n },\n removeChildFromContainer: (container: Container, child: AnyNode): void => {\n detachFromContainer(container, child);\n },\n commitTextUpdate: (textInstance: TextNode, oldText: string, newText: string): void => {\n textInstance.text = newText;\n const host = enclosingHost(textInstance);\n\n if (host !== null && !didUpdateTextSurgically(host, textInstance, oldText, newText)) {\n markTextDirty(host);\n }\n },\n commitUpdate: (instance: Instance, _type: string, prevProps: Props, nextProps: Props): void => {\n updateInstance(instance, prevProps, nextProps);\n },\n hideInstance: (instance: Instance): void => {\n setWidgetVisible(instance, false);\n },\n unhideInstance: (instance: Instance, props: Props): void => {\n setWidgetVisible(instance, props.visible !== false);\n },\n hideTextInstance: (): void => undefined,\n unhideTextInstance: (): void => undefined,\n detachDeletedInstance: (instance: Instance): void => {\n if (instance.kind === ELEMENT_KIND) {\n disconnectAllHandlers(instance);\n unmountBehaviors(instance);\n } else if (instance.kind === LAZY_KIND && instance.adopted !== null) {\n disconnectAllHandlers(lazyTarget(instance, instance.adopted));\n }\n },\n getInstanceFromNode: (): null => null,\n beforeActiveInstanceBlur: (): void => undefined,\n afterActiveInstanceBlur: (): void => undefined,\n prepareScopeUpdate: (): void => undefined,\n getInstanceFromScope: (): null => null,\n setCurrentUpdatePriority: (next: number): void => {\n priority.set(next);\n },\n getCurrentUpdatePriority: (): number => priority.get(),\n resolveUpdatePriority: (): number => (priority.get() === NoEventPriority ? DefaultEventPriority : priority.get()),\n resetFormInstance: (): void => undefined,\n requestPostPaintCallback: (): void => undefined,\n shouldAttemptEagerTransition: (): boolean => false,\n trackSchedulerEvent: (): void => undefined,\n resolveEventType: (): null => null,\n resolveEventTimeStamp: (): number => -1,\n maySuspendCommit: (): boolean => false,\n preloadInstance: (): boolean => true,\n startSuspendingCommit: (): void => undefined,\n suspendInstance: (): void => undefined,\n waitForCommitToBeReady: (): null => null,\n NotPendingTransition: null,\n HostTransitionContext: createContext(null) as unknown as ReactReconciler.ReactContext<null>,\n};\n\nconst reconciler: ReactReconciler.Reconciler<Container, Instance, TextNode, unknown, unknown, object> =\n ReactReconciler(hostConfig);\n\nfunction createPriorityTracker(): PriorityTracker {\n let current: number = NoEventPriority;\n\n return {\n get: () => current,\n set: (next) => {\n current = next;\n },\n withDiscrete: (fn) => {\n const previous = current;\n current = DiscreteEventPriority;\n\n try {\n return fn();\n } finally {\n current = previous;\n }\n },\n };\n}\n\nconst updateInstance = (instance: Instance, prev: Props, next: Props): void => {\n if (instance.kind === ELEMENT_KIND) {\n assertConstructOnlyUnchanged(instance.typeName, prev, next);\n applyElementProps(instance, prev, next);\n\n return;\n }\n\n if (instance.kind === LAZY_KIND && instance.adopted !== null) {\n assertConstructOnlyUnchanged(instance.typeName, prev, next);\n applyAdoptedProps(lazyTarget(instance, instance.adopted), prev, next);\n instance.props = next;\n }\n};\n\nconst attachToContainer = (container: Container, child: AnyNode, before: AnyNode | null): void => {\n if (!isRootElement(container)) {\n attachChild(getOrCreateContainerNode(container), child, before);\n }\n};\n\nconst detachFromContainer = (container: Container, child: AnyNode): void => {\n if (!isRootElement(container)) {\n detachChild(getOrCreateContainerNode(container), child);\n }\n};\n\nconst getPublicInstance = (instance: Instance): object => {\n if (instance.kind === ELEMENT_KIND) {\n return instance.object;\n }\n\n if (instance.kind === LAZY_KIND) {\n return instance.adopted ?? instance;\n }\n\n return instance;\n};\n\nconst setWidgetVisible = (instance: Instance, isVisible: boolean): void => {\n if (instance.kind === ELEMENT_KIND && instance.object instanceof Gtk.Widget) {\n instance.object.setVisible(isVisible);\n }\n};\n\nconst runDiscrete: Dispatch = (fn) => {\n try {\n return priority.withDiscrete(fn);\n } finally {\n reconciler.flushSyncWork();\n }\n};\n\nconst adoptContainer = (container: GObject.Object): ElementNode => {\n const name = typeName(getInstanceType(container));\n\n if (name === null) {\n throw new Error(\"Cannot adopt a container whose GType has no registered name\");\n }\n\n return createElementNode(name, container, runDiscrete, null);\n};\n\nconst getOrCreateContainerNode = (container: GObject.Object): ElementNode =>\n getOrInsert(containerNodes, container, adoptContainer);\n\nconst createNode = (type: string, props: Props): Instance => {\n if (type === Prop) {\n return createPropNode(props.propName as string);\n }\n\n const node = resolveElementNode(type, props, runDiscrete);\n\n if (node.kind === ELEMENT_KIND) {\n containerNodes.set(node.object, node);\n applyElementProps(node, {}, props);\n }\n\n return node;\n};\n\nexport { reconciler, type Container };\n"]}
@@ -38,7 +38,7 @@ const createObject = (typeName, type, input) => {
38
38
  };
39
39
  const resolveElementNode = (typeName, props, dispatch) => {
40
40
  const info = typeInfoFor(typeName);
41
- if (info.lazy) {
41
+ if (info.isLazy) {
42
42
  return createLazyNode(typeName, props, dispatch);
43
43
  }
44
44
  const type = typeFromName(typeName);
@@ -1 +1 @@
1
- {"version":3,"file":"instance.js","sourceRoot":"","sources":["../../src/reconciler/instance.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as GObject from \"@gtkx/gi/gobject\";\nimport { getWrapperClass, TYPE_INVALID, typeFromName, typeIsA } from \"@gtkx/runtime\";\nimport { pickBy } from \"@gtkx/utils\";\nimport type { Props } from \"./registry.js\";\nimport { type TypeInfo, typeInfoFor } from \"./metadata.js\";\nimport {\n type ContentKind,\n createElementNode,\n createLazyNode,\n type Dispatch,\n type ElementNode,\n type LazyNode,\n} from \"./node.js\";\nimport { ELEMENTS } from \"./registry.js\";\n\ntype WidgetConstructor = new (props: Props) => GObject.Object;\ntype ContentType = { kind: ContentKind; type: bigint };\n\nconst CONTENT_TYPE_NAMES: { kind: ContentKind; name: string }[] = [\n { kind: \"label\", name: \"GtkLabel\" },\n { kind: \"buffer\", name: \"GtkTextBuffer\" },\n { kind: \"tag\", name: \"GtkTextTag\" },\n { kind: \"anchor\", name: \"GtkTextChildAnchor\" },\n];\n\nconst getContentTypes = createContentTypeCache();\n\nfunction createContentTypeCache(): () => ContentType[] {\n let cached: ContentType[] | null = null;\n\n return () => {\n cached ??= CONTENT_TYPE_NAMES.map((entry) => ({ kind: entry.kind, type: typeFromName(entry.name) }));\n\n return cached;\n };\n}\n\nconst resolveContentKind = (type: bigint): ContentKind | null => {\n for (const entry of getContentTypes()) {\n if (entry.type !== TYPE_INVALID && typeIsA(type, entry.type)) {\n return entry.kind;\n }\n }\n\n return null;\n};\n\nconst constructInput = (info: TypeInfo, props: Props): Props =>\n pickBy(\n props,\n (value, name) =>\n value !== undefined &&\n !info.deferred.has(name) &&\n (info.constructOnly.has(name) || info.construct.has(name)),\n );\n\nconst instantiate = (type: bigint, input: Props): GObject.Object => {\n const cls = getWrapperClass(type) as WidgetConstructor;\n\n return new cls(input);\n};\n\nconst createObject = (typeName: string, type: bigint, input: Props): GObject.Object => {\n const create = ELEMENTS[typeName]?.behaviors?.find((behavior) => behavior.create !== undefined)?.create;\n\n return create === undefined ? instantiate(type, input) : create(input);\n};\n\nconst resolveElementNode = (typeName: string, props: Props, dispatch: Dispatch): ElementNode | LazyNode => {\n const info = typeInfoFor(typeName);\n\n if (info.lazy) {\n return createLazyNode(typeName, props, dispatch);\n }\n\n const type = typeFromName(typeName);\n const object = createObject(typeName, type, constructInput(info, props));\n\n return createElementNode(typeName, object, dispatch, resolveContentKind(type));\n};\n\nexport { resolveElementNode };\n"]}
1
+ {"version":3,"file":"instance.js","sourceRoot":"","sources":["../../src/reconciler/instance.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as GObject from \"@gtkx/gi/gobject\";\nimport { getWrapperClass, TYPE_INVALID, typeFromName, typeIsA } from \"@gtkx/runtime\";\nimport { pickBy } from \"@gtkx/utils\";\nimport type { Props } from \"./registry.js\";\nimport { type TypeInfo, typeInfoFor } from \"./metadata.js\";\nimport {\n type ContentKind,\n createElementNode,\n createLazyNode,\n type Dispatch,\n type ElementNode,\n type LazyNode,\n} from \"./node.js\";\nimport { ELEMENTS } from \"./registry.js\";\n\ntype WidgetConstructor = new (props: Props) => GObject.Object;\ntype ContentType = { kind: ContentKind; type: bigint };\n\nconst CONTENT_TYPE_NAMES: { kind: ContentKind; name: string }[] = [\n { kind: \"label\", name: \"GtkLabel\" },\n { kind: \"buffer\", name: \"GtkTextBuffer\" },\n { kind: \"tag\", name: \"GtkTextTag\" },\n { kind: \"anchor\", name: \"GtkTextChildAnchor\" },\n];\n\nconst getContentTypes = createContentTypeCache();\n\nfunction createContentTypeCache(): () => ContentType[] {\n let cached: ContentType[] | null = null;\n\n return () => {\n cached ??= CONTENT_TYPE_NAMES.map((entry) => ({ kind: entry.kind, type: typeFromName(entry.name) }));\n\n return cached;\n };\n}\n\nconst resolveContentKind = (type: bigint): ContentKind | null => {\n for (const entry of getContentTypes()) {\n if (entry.type !== TYPE_INVALID && typeIsA(type, entry.type)) {\n return entry.kind;\n }\n }\n\n return null;\n};\n\nconst constructInput = (info: TypeInfo, props: Props): Props =>\n pickBy(\n props,\n (value, name) =>\n value !== undefined &&\n !info.deferred.has(name) &&\n (info.constructOnly.has(name) || info.construct.has(name)),\n );\n\nconst instantiate = (type: bigint, input: Props): GObject.Object => {\n const cls = getWrapperClass(type) as WidgetConstructor;\n\n return new cls(input);\n};\n\nconst createObject = (typeName: string, type: bigint, input: Props): GObject.Object => {\n const create = ELEMENTS[typeName]?.behaviors?.find((behavior) => behavior.create !== undefined)?.create;\n\n return create === undefined ? instantiate(type, input) : create(input);\n};\n\nconst resolveElementNode = (typeName: string, props: Props, dispatch: Dispatch): ElementNode | LazyNode => {\n const info = typeInfoFor(typeName);\n\n if (info.isLazy) {\n return createLazyNode(typeName, props, dispatch);\n }\n\n const type = typeFromName(typeName);\n const object = createObject(typeName, type, constructInput(info, props));\n\n return createElementNode(typeName, object, dispatch, resolveContentKind(type));\n};\n\nexport { resolveElementNode };\n"]}
@@ -5,7 +5,7 @@ type TypeInfo = {
5
5
  userEventSignals: Set<string>;
6
6
  behaviors: ElementBehavior[];
7
7
  deferred: Set<string>;
8
- lazy: boolean;
8
+ isLazy: boolean;
9
9
  hasFlush: boolean;
10
10
  hasMount: boolean;
11
11
  constructOnly: Set<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/reconciler/metadata.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,eAAe,EAAY,MAAM,eAAe,CAAC;AAE9E,KAAK,QAAQ,GAAG;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC,CAAC;AAmGF,QAAA,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,QAA2D,CAAC;AAEhG,OAAO,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/reconciler/metadata.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,eAAe,EAAY,MAAM,eAAe,CAAC;AAE9E,KAAK,QAAQ,GAAG;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC,CAAC;AAmGF,QAAA,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,QAA2D,CAAC;AAEhG,OAAO,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { TYPE_INVALID, typeFromName, typeInterfaces, typeName, typeParent } from "@gtkx/runtime";
2
2
  import { getOrInsert } from "@gtkx/utils";
3
- import { CONSTRUCT_ONLY_PROPS, CONSTRUCT_PROPS, DEFAULT_PROPS, SIGNALS, userEventSignals } from "virtual:gtkx-config";
3
+ import { constructOnlyProps, constructProps, defaultProps, signals, userEventSignals } from "virtual:gtkx-config";
4
4
  import { deferredProps, ELEMENTS } from "./registry.js";
5
5
  const ancestryCache = new Map();
6
6
  const typeInfoCache = new Map();
@@ -32,10 +32,10 @@ const addAll = (target, source) => {
32
32
  }
33
33
  };
34
34
  const accumulateAncestor = (info, ancestor) => {
35
- Object.assign(info.signals, SIGNALS[ancestor] ?? {});
35
+ Object.assign(info.signals, signals[ancestor] ?? {});
36
36
  addAll(info.userEventSignals, userEventSignals[ancestor]);
37
- addAll(info.constructOnly, CONSTRUCT_ONLY_PROPS[ancestor]);
38
- addAll(info.construct, CONSTRUCT_PROPS[ancestor]);
37
+ addAll(info.constructOnly, constructOnlyProps[ancestor]);
38
+ addAll(info.construct, constructProps[ancestor]);
39
39
  info.behaviors.push(...(ELEMENTS[ancestor]?.behaviors ?? []));
40
40
  };
41
41
  const applyBehaviorFlags = (info, behavior) => {
@@ -60,7 +60,7 @@ const buildTypeInfo = (name) => {
60
60
  userEventSignals: new Set(),
61
61
  behaviors: [],
62
62
  deferred: new Set(),
63
- lazy: false,
63
+ isLazy: false,
64
64
  hasFlush: false,
65
65
  hasMount: false,
66
66
  constructOnly: new Set(),
@@ -71,9 +71,9 @@ const buildTypeInfo = (name) => {
71
71
  accumulateAncestor(info, ancestor);
72
72
  }
73
73
  resolveBehaviorFlags(info);
74
- info.lazy = chain.some((ancestor) => ELEMENTS[ancestor]?.lazy === true);
74
+ info.isLazy = chain.some((ancestor) => ELEMENTS[ancestor]?.isLazy === true);
75
75
  for (const ancestor of chain.toReversed()) {
76
- Object.assign(info.defaults, DEFAULT_PROPS[ancestor] ?? {});
76
+ Object.assign(info.defaults, defaultProps[ancestor] ?? {});
77
77
  }
78
78
  return info;
79
79
  };
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/reconciler/metadata.ts"],"names":[],"mappings":"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","sourcesContent":["import { TYPE_INVALID, typeFromName, typeInterfaces, typeName, typeParent } from \"@gtkx/runtime\";\nimport { getOrInsert } from \"@gtkx/utils\";\nimport { CONSTRUCT_ONLY_PROPS, CONSTRUCT_PROPS, DEFAULT_PROPS, SIGNALS, userEventSignals } from \"virtual:gtkx-config\";\nimport { deferredProps, type ElementBehavior, ELEMENTS } from \"./registry.js\";\n\ntype TypeInfo = {\n typeName: string;\n signals: Record<string, string>;\n userEventSignals: Set<string>;\n behaviors: ElementBehavior[];\n deferred: Set<string>;\n lazy: boolean;\n hasFlush: boolean;\n hasMount: boolean;\n constructOnly: Set<string>;\n construct: Set<string>;\n defaults: Record<string, unknown>;\n};\n\nconst ancestryCache: Map<string, string[]> = new Map();\nconst typeInfoCache: Map<string, TypeInfo> = new Map();\n\nconst addAncestor = (names: string[], seen: Set<string>, name: string | null): void => {\n if (name === null || seen.has(name)) {\n return;\n }\n\n seen.add(name);\n names.push(name);\n};\n\nconst buildAncestry = (name: string): string[] => {\n const names: string[] = [];\n const seen: Set<string> = new Set();\n let type = typeFromName(name);\n\n while (type !== TYPE_INVALID) {\n addAncestor(names, seen, typeName(type));\n\n for (const iface of typeInterfaces(type)) {\n addAncestor(names, seen, typeName(iface));\n }\n\n type = typeParent(type);\n }\n\n return names;\n};\n\nconst ancestryFor = (name: string): string[] => getOrInsert(ancestryCache, name, buildAncestry);\n\nconst addAll = <T>(target: Set<T>, source: Iterable<T> | undefined): void => {\n const items = source ?? [];\n\n for (const item of items) {\n target.add(item);\n }\n};\n\nconst accumulateAncestor = (info: TypeInfo, ancestor: string): void => {\n Object.assign(info.signals, SIGNALS[ancestor] ?? {});\n addAll(info.userEventSignals, userEventSignals[ancestor]);\n addAll(info.constructOnly, CONSTRUCT_ONLY_PROPS[ancestor]);\n addAll(info.construct, CONSTRUCT_PROPS[ancestor]);\n info.behaviors.push(...(ELEMENTS[ancestor]?.behaviors ?? []));\n};\n\nconst applyBehaviorFlags = (info: TypeInfo, behavior: ElementBehavior): void => {\n if (behavior.flush !== undefined) {\n info.hasFlush = true;\n }\n\n if (behavior.mount !== undefined) {\n info.hasMount = true;\n }\n\n addAll(info.deferred, deferredProps(behavior));\n};\n\nconst resolveBehaviorFlags = (info: TypeInfo): void => {\n for (const behavior of info.behaviors) {\n applyBehaviorFlags(info, behavior);\n }\n};\n\nconst buildTypeInfo = (name: string): TypeInfo => {\n const chain = ancestryFor(name);\n\n const info: TypeInfo = {\n typeName: name,\n signals: {},\n userEventSignals: new Set(),\n behaviors: [],\n deferred: new Set(),\n lazy: false,\n hasFlush: false,\n hasMount: false,\n constructOnly: new Set(),\n construct: new Set(),\n defaults: {},\n };\n\n for (const ancestor of chain) {\n accumulateAncestor(info, ancestor);\n }\n\n resolveBehaviorFlags(info);\n info.lazy = chain.some((ancestor) => ELEMENTS[ancestor]?.lazy === true);\n\n for (const ancestor of chain.toReversed()) {\n Object.assign(info.defaults, DEFAULT_PROPS[ancestor] ?? {});\n }\n\n return info;\n};\n\nconst typeInfoFor = (name: string): TypeInfo => getOrInsert(typeInfoCache, name, buildTypeInfo);\n\nexport { typeInfoFor, type TypeInfo };\n"]}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/reconciler/metadata.ts"],"names":[],"mappings":"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","sourcesContent":["import { TYPE_INVALID, typeFromName, typeInterfaces, typeName, typeParent } from \"@gtkx/runtime\";\nimport { getOrInsert } from \"@gtkx/utils\";\nimport { constructOnlyProps, constructProps, defaultProps, signals, userEventSignals } from \"virtual:gtkx-config\";\nimport { deferredProps, type ElementBehavior, ELEMENTS } from \"./registry.js\";\n\ntype TypeInfo = {\n typeName: string;\n signals: Record<string, string>;\n userEventSignals: Set<string>;\n behaviors: ElementBehavior[];\n deferred: Set<string>;\n isLazy: boolean;\n hasFlush: boolean;\n hasMount: boolean;\n constructOnly: Set<string>;\n construct: Set<string>;\n defaults: Record<string, unknown>;\n};\n\nconst ancestryCache: Map<string, string[]> = new Map();\nconst typeInfoCache: Map<string, TypeInfo> = new Map();\n\nconst addAncestor = (names: string[], seen: Set<string>, name: string | null): void => {\n if (name === null || seen.has(name)) {\n return;\n }\n\n seen.add(name);\n names.push(name);\n};\n\nconst buildAncestry = (name: string): string[] => {\n const names: string[] = [];\n const seen: Set<string> = new Set();\n let type = typeFromName(name);\n\n while (type !== TYPE_INVALID) {\n addAncestor(names, seen, typeName(type));\n\n for (const iface of typeInterfaces(type)) {\n addAncestor(names, seen, typeName(iface));\n }\n\n type = typeParent(type);\n }\n\n return names;\n};\n\nconst ancestryFor = (name: string): string[] => getOrInsert(ancestryCache, name, buildAncestry);\n\nconst addAll = <T>(target: Set<T>, source: Iterable<T> | undefined): void => {\n const items = source ?? [];\n\n for (const item of items) {\n target.add(item);\n }\n};\n\nconst accumulateAncestor = (info: TypeInfo, ancestor: string): void => {\n Object.assign(info.signals, signals[ancestor] ?? {});\n addAll(info.userEventSignals, userEventSignals[ancestor]);\n addAll(info.constructOnly, constructOnlyProps[ancestor]);\n addAll(info.construct, constructProps[ancestor]);\n info.behaviors.push(...(ELEMENTS[ancestor]?.behaviors ?? []));\n};\n\nconst applyBehaviorFlags = (info: TypeInfo, behavior: ElementBehavior): void => {\n if (behavior.flush !== undefined) {\n info.hasFlush = true;\n }\n\n if (behavior.mount !== undefined) {\n info.hasMount = true;\n }\n\n addAll(info.deferred, deferredProps(behavior));\n};\n\nconst resolveBehaviorFlags = (info: TypeInfo): void => {\n for (const behavior of info.behaviors) {\n applyBehaviorFlags(info, behavior);\n }\n};\n\nconst buildTypeInfo = (name: string): TypeInfo => {\n const chain = ancestryFor(name);\n\n const info: TypeInfo = {\n typeName: name,\n signals: {},\n userEventSignals: new Set(),\n behaviors: [],\n deferred: new Set(),\n isLazy: false,\n hasFlush: false,\n hasMount: false,\n constructOnly: new Set(),\n construct: new Set(),\n defaults: {},\n };\n\n for (const ancestor of chain) {\n accumulateAncestor(info, ancestor);\n }\n\n resolveBehaviorFlags(info);\n info.isLazy = chain.some((ancestor) => ELEMENTS[ancestor]?.isLazy === true);\n\n for (const ancestor of chain.toReversed()) {\n Object.assign(info.defaults, defaultProps[ancestor] ?? {});\n }\n\n return info;\n};\n\nconst typeInfoFor = (name: string): TypeInfo => getOrInsert(typeInfoCache, name, buildTypeInfo);\n\nexport { typeInfoFor, type TypeInfo };\n"]}
@@ -7,7 +7,7 @@ type HandlerRecord = {
7
7
  signal: string;
8
8
  handler: SignalHandler;
9
9
  wrapped: SignalHandler;
10
- blockable: boolean;
10
+ isBlockable: boolean;
11
11
  };
12
12
  type Dispatch = (fn: () => unknown) => unknown;
13
13
  type SignalTarget = {
@@ -22,7 +22,7 @@ type PlacedChild = {
22
22
  adopted: GObject.Object | null;
23
23
  slot: string;
24
24
  behavior: ElementBehavior | null;
25
- attached: boolean;
25
+ isAttached: boolean;
26
26
  };
27
27
  type ElementNode = SignalTarget & {
28
28
  kind: typeof ELEMENT_KIND;
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/reconciler/node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/reconciler/node.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,6 @@ const lazyTarget = (node, adopted) => ({
48
48
  typeName: node.typeName,
49
49
  dispatch: node.dispatch,
50
50
  });
51
- const getOrCreateContext = (node, behavior) => getOrInsert(node.contexts, behavior, () => behavior.createContext?.(node.object));
51
+ const getOrCreateContext = (node, behavior) => getOrInsert(node.contexts, behavior, () => behavior.initialize?.(node.object));
52
52
  export { ELEMENT_KIND, PROP_KIND, TEXT_KIND, LAZY_KIND, DEFAULT_SLOT, createPropNode, createLazyNode, createElementNode, createTextNode, nodeObject, lazyTarget, getOrCreateContext, };
53
53
  //# sourceMappingURL=node.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/reconciler/node.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAgE1C,MAAM,YAAY,GAAG,SAAS,CAAC;AAC/B,MAAM,SAAS,GAAG,MAAM,CAAC;AACzB,MAAM,SAAS,GAAG,MAAM,CAAC;AACzB,MAAM,SAAS,GAAG,MAAM,CAAC;AACzB,MAAM,YAAY,GAAG,UAAU,CAAC;AAEhC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAY,EAAE,CAAC,CAAC;IAChD,IAAI,EAAE,SAAS;IACf,IAAI;IACJ,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAE,IAAI;CACf,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAE,KAAY,EAAE,QAAkB,EAAY,EAAE,CAAC,CAAC;IACtF,IAAI,EAAE,SAAS;IACf,QAAQ;IACR,KAAK;IACL,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI,GAAG,EAAE;IACnB,QAAQ;CACX,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,CACtB,QAAgB,EAChB,MAAsB,EACtB,QAAkB,EAClB,WAA+B,EACpB,EAAE,CAAC,CAAC;IACf,IAAI,EAAE,YAAY;IAClB,QAAQ;IACR,MAAM;IACN,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,IAAI,GAAG,EAAE;IACnB,UAAU,EAAE,IAAI,GAAG,EAAE;IACrB,QAAQ,EAAE,IAAI,GAAG,EAAE;IACnB,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,EAAE;IACX,WAAW;IACX,UAAU,EAAE,IAAI;IAChB,QAAQ;CACX,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC,IAAY,EAAY,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAE7F,MAAM,UAAU,GAAG,CAAC,IAAmB,EAAyB,EAAE;IAC9D,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE9B,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,IAAc,EAAE,OAAuB,EAAgB,EAAE,CAAC,CAAC;IAC3E,MAAM,EAAE,OAAO;IACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;CAC1B,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,CAAC,IAAiB,EAAE,QAAyB,EAAW,EAAE,CACjF,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAEtF,OAAO,EACH,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,UAAU,EACV,kBAAkB,GAerB,CAAC","sourcesContent":["import type * as GObject from \"@gtkx/gi/gobject\";\nimport type * as Gtk from \"@gtkx/gi/gtk\";\nimport type { SignalHandler } from \"@gtkx/runtime\";\nimport { getOrInsert } from \"@gtkx/utils\";\nimport type { ElementBehavior, Props } from \"./registry.js\";\n\ntype ContentKind = \"label\" | \"buffer\" | \"tag\" | \"anchor\";\ntype HandlerRecord = { signal: string; handler: SignalHandler; wrapped: SignalHandler; blockable: boolean };\ntype Dispatch = (fn: () => unknown) => unknown;\n\ntype SignalTarget = {\n object: GObject.Object;\n handlers: Map<string, HandlerRecord>;\n typeName: string;\n dispatch: Dispatch;\n};\n\ntype PlacedChild = {\n node: PlaceableNode;\n object: GObject.Object;\n adopted: GObject.Object | null;\n slot: string;\n behavior: ElementBehavior | null;\n attached: boolean;\n};\n\ntype ElementNode = SignalTarget & {\n kind: typeof ELEMENT_KIND;\n props: Props;\n placements: Map<string, PlacedChild[]>;\n contexts: Map<ElementBehavior, unknown>;\n parent: ParentNode | null;\n content: ContentChild[];\n contentKind: ContentKind | null;\n bufferView: Gtk.TextView | null;\n};\n\ntype PropNode = {\n kind: typeof PROP_KIND;\n slot: string;\n children: PlaceableNode[];\n parent: ElementNode | null;\n};\n\ntype LazyNode = {\n kind: typeof LAZY_KIND;\n typeName: string;\n props: Props;\n children: PlaceableNode[];\n parent: ElementNode | null;\n adopted: GObject.Object | null;\n handlers: Map<string, HandlerRecord>;\n dispatch: Dispatch;\n};\n\ntype TextNode = {\n kind: typeof TEXT_KIND;\n text: string;\n parent: ParentNode | null;\n};\n\ntype PlaceableNode = ElementNode | LazyNode;\ntype ParentNode = ElementNode | PropNode | LazyNode;\ntype ContentChild = TextNode | ElementNode;\ntype Instance = ElementNode | PropNode | LazyNode;\ntype AnyNode = Instance | TextNode;\n\nconst ELEMENT_KIND = \"element\";\nconst PROP_KIND = \"prop\";\nconst TEXT_KIND = \"text\";\nconst LAZY_KIND = \"lazy\";\nconst DEFAULT_SLOT = \"children\";\n\nconst createPropNode = (slot: string): PropNode => ({\n kind: PROP_KIND,\n slot,\n children: [],\n parent: null,\n});\n\nconst createLazyNode = (typeName: string, props: Props, dispatch: Dispatch): LazyNode => ({\n kind: LAZY_KIND,\n typeName,\n props,\n children: [],\n parent: null,\n adopted: null,\n handlers: new Map(),\n dispatch,\n});\n\nconst createElementNode = (\n typeName: string,\n object: GObject.Object,\n dispatch: Dispatch,\n contentKind: ContentKind | null,\n): ElementNode => ({\n kind: ELEMENT_KIND,\n typeName,\n object,\n props: {},\n handlers: new Map(),\n placements: new Map(),\n contexts: new Map(),\n parent: null,\n content: [],\n contentKind,\n bufferView: null,\n dispatch,\n});\n\nconst createTextNode = (text: string): TextNode => ({ kind: TEXT_KIND, text, parent: null });\n\nconst nodeObject = (node: PlaceableNode): GObject.Object | null => {\n if (node.kind === LAZY_KIND) {\n const [child] = node.children;\n\n return child === undefined ? null : nodeObject(child);\n }\n\n return node.object;\n};\n\nconst lazyTarget = (node: LazyNode, adopted: GObject.Object): SignalTarget => ({\n object: adopted,\n handlers: node.handlers,\n typeName: node.typeName,\n dispatch: node.dispatch,\n});\n\nconst getOrCreateContext = (node: ElementNode, behavior: ElementBehavior): unknown =>\n getOrInsert(node.contexts, behavior, () => behavior.createContext?.(node.object));\n\nexport {\n ELEMENT_KIND,\n PROP_KIND,\n TEXT_KIND,\n LAZY_KIND,\n DEFAULT_SLOT,\n createPropNode,\n createLazyNode,\n createElementNode,\n createTextNode,\n nodeObject,\n lazyTarget,\n getOrCreateContext,\n type ContentKind,\n type HandlerRecord,\n type Dispatch,\n type SignalTarget,\n type PlacedChild,\n type ElementNode,\n type PropNode,\n type LazyNode,\n type TextNode,\n type PlaceableNode,\n type ParentNode,\n type ContentChild,\n type Instance,\n type AnyNode,\n};\n"]}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/reconciler/node.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAgE1C,MAAM,YAAY,GAAG,SAAS,CAAC;AAC/B,MAAM,SAAS,GAAG,MAAM,CAAC;AACzB,MAAM,SAAS,GAAG,MAAM,CAAC;AACzB,MAAM,SAAS,GAAG,MAAM,CAAC;AACzB,MAAM,YAAY,GAAG,UAAU,CAAC;AAEhC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAY,EAAE,CAAC,CAAC;IAChD,IAAI,EAAE,SAAS;IACf,IAAI;IACJ,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAE,IAAI;CACf,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAE,KAAY,EAAE,QAAkB,EAAY,EAAE,CAAC,CAAC;IACtF,IAAI,EAAE,SAAS;IACf,QAAQ;IACR,KAAK;IACL,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI,GAAG,EAAE;IACnB,QAAQ;CACX,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,CACtB,QAAgB,EAChB,MAAsB,EACtB,QAAkB,EAClB,WAA+B,EACpB,EAAE,CAAC,CAAC;IACf,IAAI,EAAE,YAAY;IAClB,QAAQ;IACR,MAAM;IACN,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,IAAI,GAAG,EAAE;IACnB,UAAU,EAAE,IAAI,GAAG,EAAE;IACrB,QAAQ,EAAE,IAAI,GAAG,EAAE;IACnB,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,EAAE;IACX,WAAW;IACX,UAAU,EAAE,IAAI;IAChB,QAAQ;CACX,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC,IAAY,EAAY,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAE7F,MAAM,UAAU,GAAG,CAAC,IAAmB,EAAyB,EAAE;IAC9D,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE9B,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,IAAc,EAAE,OAAuB,EAAgB,EAAE,CAAC,CAAC;IAC3E,MAAM,EAAE,OAAO;IACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;CAC1B,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,CAAC,IAAiB,EAAE,QAAyB,EAAW,EAAE,CACjF,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAEnF,OAAO,EACH,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,UAAU,EACV,kBAAkB,GAerB,CAAC","sourcesContent":["import type * as GObject from \"@gtkx/gi/gobject\";\nimport type * as Gtk from \"@gtkx/gi/gtk\";\nimport type { SignalHandler } from \"@gtkx/runtime\";\nimport { getOrInsert } from \"@gtkx/utils\";\nimport type { ElementBehavior, Props } from \"./registry.js\";\n\ntype ContentKind = \"label\" | \"buffer\" | \"tag\" | \"anchor\";\ntype HandlerRecord = { signal: string; handler: SignalHandler; wrapped: SignalHandler; isBlockable: boolean };\ntype Dispatch = (fn: () => unknown) => unknown;\n\ntype SignalTarget = {\n object: GObject.Object;\n handlers: Map<string, HandlerRecord>;\n typeName: string;\n dispatch: Dispatch;\n};\n\ntype PlacedChild = {\n node: PlaceableNode;\n object: GObject.Object;\n adopted: GObject.Object | null;\n slot: string;\n behavior: ElementBehavior | null;\n isAttached: boolean;\n};\n\ntype ElementNode = SignalTarget & {\n kind: typeof ELEMENT_KIND;\n props: Props;\n placements: Map<string, PlacedChild[]>;\n contexts: Map<ElementBehavior, unknown>;\n parent: ParentNode | null;\n content: ContentChild[];\n contentKind: ContentKind | null;\n bufferView: Gtk.TextView | null;\n};\n\ntype PropNode = {\n kind: typeof PROP_KIND;\n slot: string;\n children: PlaceableNode[];\n parent: ElementNode | null;\n};\n\ntype LazyNode = {\n kind: typeof LAZY_KIND;\n typeName: string;\n props: Props;\n children: PlaceableNode[];\n parent: ElementNode | null;\n adopted: GObject.Object | null;\n handlers: Map<string, HandlerRecord>;\n dispatch: Dispatch;\n};\n\ntype TextNode = {\n kind: typeof TEXT_KIND;\n text: string;\n parent: ParentNode | null;\n};\n\ntype PlaceableNode = ElementNode | LazyNode;\ntype ParentNode = ElementNode | PropNode | LazyNode;\ntype ContentChild = TextNode | ElementNode;\ntype Instance = ElementNode | PropNode | LazyNode;\ntype AnyNode = Instance | TextNode;\n\nconst ELEMENT_KIND = \"element\";\nconst PROP_KIND = \"prop\";\nconst TEXT_KIND = \"text\";\nconst LAZY_KIND = \"lazy\";\nconst DEFAULT_SLOT = \"children\";\n\nconst createPropNode = (slot: string): PropNode => ({\n kind: PROP_KIND,\n slot,\n children: [],\n parent: null,\n});\n\nconst createLazyNode = (typeName: string, props: Props, dispatch: Dispatch): LazyNode => ({\n kind: LAZY_KIND,\n typeName,\n props,\n children: [],\n parent: null,\n adopted: null,\n handlers: new Map(),\n dispatch,\n});\n\nconst createElementNode = (\n typeName: string,\n object: GObject.Object,\n dispatch: Dispatch,\n contentKind: ContentKind | null,\n): ElementNode => ({\n kind: ELEMENT_KIND,\n typeName,\n object,\n props: {},\n handlers: new Map(),\n placements: new Map(),\n contexts: new Map(),\n parent: null,\n content: [],\n contentKind,\n bufferView: null,\n dispatch,\n});\n\nconst createTextNode = (text: string): TextNode => ({ kind: TEXT_KIND, text, parent: null });\n\nconst nodeObject = (node: PlaceableNode): GObject.Object | null => {\n if (node.kind === LAZY_KIND) {\n const [child] = node.children;\n\n return child === undefined ? null : nodeObject(child);\n }\n\n return node.object;\n};\n\nconst lazyTarget = (node: LazyNode, adopted: GObject.Object): SignalTarget => ({\n object: adopted,\n handlers: node.handlers,\n typeName: node.typeName,\n dispatch: node.dispatch,\n});\n\nconst getOrCreateContext = (node: ElementNode, behavior: ElementBehavior): unknown =>\n getOrInsert(node.contexts, behavior, () => behavior.initialize?.(node.object));\n\nexport {\n ELEMENT_KIND,\n PROP_KIND,\n TEXT_KIND,\n LAZY_KIND,\n DEFAULT_SLOT,\n createPropNode,\n createLazyNode,\n createElementNode,\n createTextNode,\n nodeObject,\n lazyTarget,\n getOrCreateContext,\n type ContentKind,\n type HandlerRecord,\n type Dispatch,\n type SignalTarget,\n type PlacedChild,\n type ElementNode,\n type PropNode,\n type LazyNode,\n type TextNode,\n type PlaceableNode,\n type ParentNode,\n type ContentChild,\n type Instance,\n type AnyNode,\n};\n"]}
@@ -11,7 +11,7 @@ const createEntry = (slot, node) => {
11
11
  if (object === null) {
12
12
  return null;
13
13
  }
14
- return { node, object, adopted: null, slot, behavior: null, attached: false };
14
+ return { node, object, adopted: null, slot, behavior: null, isAttached: false };
15
15
  };
16
16
  const siblingAt = (entries, index) => index > 0 ? (entries[index - 1]?.object ?? null) : null;
17
17
  const placeInfo = (entry, index, sibling, context) => ({
@@ -52,7 +52,7 @@ const setObjectSlot = (parent, entry) => {
52
52
  writeSlot(parent, entry, entry.object);
53
53
  wireBufferView(entry.node, parent);
54
54
  entry.behavior = null;
55
- entry.attached = true;
55
+ entry.isAttached = true;
56
56
  };
57
57
  const didAttach = (ctx, behavior) => {
58
58
  const attach = behavior.attach;
@@ -66,7 +66,7 @@ const didAttach = (ctx, behavior) => {
66
66
  }
67
67
  ctx.entry.behavior = behavior;
68
68
  adoptedFrom(ctx.parent, ctx.entry, behavior, claim);
69
- ctx.entry.attached = true;
69
+ ctx.entry.isAttached = true;
70
70
  applyLazyProps(ctx.entry);
71
71
  return true;
72
72
  };
@@ -103,10 +103,10 @@ const runDetach = (parent, entry) => {
103
103
  behavior.detach?.(parent.object, entry.object, detachInfo(entry, getOrCreateContext(parent, behavior)));
104
104
  };
105
105
  const detachEntry = (parent, entry) => {
106
- if (!entry.attached) {
106
+ if (!entry.isAttached) {
107
107
  return;
108
108
  }
109
- entry.attached = false;
109
+ entry.isAttached = false;
110
110
  applyWrite(() => {
111
111
  runDetach(parent, entry);
112
112
  });
@@ -123,7 +123,7 @@ const rebuild = (parent, entries) => {
123
123
  const getPosition = (entries, before) => indexBeforeOrEnd(entries, before, (entry, target) => entry.node === target);
124
124
  const placeNew = (parent, entry, entries, index) => {
125
125
  attachEntry(parent, entry, index, siblingAt(entries, index));
126
- if (!entry.attached) {
126
+ if (!entry.isAttached) {
127
127
  remove(entries, entry);
128
128
  return;
129
129
  }
@@ -1 +1 @@
1
- {"version":3,"file":"placement.js","sourceRoot":"","sources":["../../src/reconciler/placement.ts"],"names":[],"mappings":"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","sourcesContent":["import * as GObject from \"@gtkx/gi/gobject\";\nimport * as Gtk from \"@gtkx/gi/gtk\";\nimport { getOrInsert, indexBeforeOrEnd, remove } from \"@gtkx/utils\";\nimport type { DetachInfo, ElementBehavior, PlaceInfo } from \"./registry.js\";\nimport { applyAdoptedProps, markFlush } from \"./apply-props.js\";\nimport { typeInfoFor } from \"./metadata.js\";\nimport {\n DEFAULT_SLOT,\n ELEMENT_KIND,\n type ElementNode,\n getOrCreateContext,\n LAZY_KIND,\n lazyTarget,\n nodeObject,\n type PlaceableNode,\n type PlacedChild,\n} from \"./node.js\";\nimport { applyWrite } from \"./signals.js\";\nimport { markTextDirty } from \"./text.js\";\n\ntype AttachContext = { parent: ElementNode; entry: PlacedChild; index: number; sibling: GObject.Object | null };\n\nconst createEntry = (slot: string, node: PlaceableNode): PlacedChild | null => {\n const object = nodeObject(node);\n\n if (object === null) {\n return null;\n }\n\n return { node, object, adopted: null, slot, behavior: null, attached: false };\n};\n\nconst siblingAt = (entries: PlacedChild[], index: number): GObject.Object | null =>\n index > 0 ? (entries[index - 1]?.object ?? null) : null;\n\nconst placeInfo = (entry: PlacedChild, index: number, sibling: GObject.Object | null, context: unknown): PlaceInfo => ({\n slot: entry.slot,\n index,\n sibling,\n adopted: entry.adopted,\n props: entry.node.props,\n context,\n});\n\nconst adoptedFrom = (parent: ElementNode, entry: PlacedChild, behavior: ElementBehavior, claim: unknown): void => {\n if (behavior.resolve !== undefined) {\n entry.adopted = behavior.resolve(parent.object, entry.object);\n\n return;\n }\n\n entry.adopted = claim instanceof GObject.Object ? claim : null;\n};\n\nconst applyLazyProps = (entry: PlacedChild): void => {\n if (entry.node.kind !== LAZY_KIND || entry.adopted === null) {\n return;\n }\n\n applyAdoptedProps(lazyTarget(entry.node, entry.adopted), {}, entry.node.props);\n entry.node.adopted = entry.adopted;\n};\n\nconst wireBufferView = (node: PlaceableNode, parent: ElementNode): void => {\n if (!(node.kind === ELEMENT_KIND && node.contentKind === \"buffer\" && parent.object instanceof Gtk.TextView)) {\n return;\n }\n\n node.bufferView = parent.object;\n markTextDirty(node);\n};\n\nconst writeSlot = (parent: ElementNode, entry: PlacedChild, value: GObject.Object | null): void => {\n applyWrite(() => {\n Reflect.set(parent.object, entry.slot, value);\n });\n};\n\nconst setObjectSlot = (parent: ElementNode, entry: PlacedChild): void => {\n writeSlot(parent, entry, entry.object);\n wireBufferView(entry.node, parent);\n entry.behavior = null;\n entry.attached = true;\n};\n\nconst didAttach = (ctx: AttachContext, behavior: ElementBehavior): boolean => {\n const attach = behavior.attach;\n\n if (attach === undefined) {\n return false;\n }\n\n const context = getOrCreateContext(ctx.parent, behavior);\n const claim = attach(ctx.parent.object, ctx.entry.object, placeInfo(ctx.entry, ctx.index, ctx.sibling, context));\n\n if (claim === undefined) {\n return false;\n }\n\n ctx.entry.behavior = behavior;\n adoptedFrom(ctx.parent, ctx.entry, behavior, claim);\n ctx.entry.attached = true;\n applyLazyProps(ctx.entry);\n\n return true;\n};\n\nconst runAttach = (parent: ElementNode, entry: PlacedChild, index: number, sibling: GObject.Object | null): void => {\n const ctx: AttachContext = { parent, entry, index, sibling };\n\n for (const behavior of typeInfoFor(parent.typeName).behaviors) {\n if (didAttach(ctx, behavior)) {\n return;\n }\n }\n\n if (entry.slot !== DEFAULT_SLOT) {\n setObjectSlot(parent, entry);\n }\n};\n\nconst attachEntry = (parent: ElementNode, entry: PlacedChild, index: number, sibling: GObject.Object | null): void => {\n applyWrite(() => {\n runAttach(parent, entry, index, sibling);\n });\n};\n\nconst detachInfo = (entry: PlacedChild, context: unknown): DetachInfo => ({\n slot: entry.slot,\n adopted: entry.adopted,\n props: entry.node.props,\n context,\n});\n\nconst runDetach = (parent: ElementNode, entry: PlacedChild): void => {\n const behavior = entry.behavior;\n\n if (behavior === null) {\n if (entry.slot !== DEFAULT_SLOT) {\n writeSlot(parent, entry, null);\n }\n\n return;\n }\n\n behavior.detach?.(parent.object, entry.object, detachInfo(entry, getOrCreateContext(parent, behavior)));\n};\n\nconst detachEntry = (parent: ElementNode, entry: PlacedChild): void => {\n if (!entry.attached) {\n return;\n }\n\n entry.attached = false;\n\n applyWrite(() => {\n runDetach(parent, entry);\n });\n};\n\nconst rebuild = (parent: ElementNode, entries: PlacedChild[]): void => {\n for (const entry of entries) {\n detachEntry(parent, entry);\n }\n\n for (const [index, entry] of entries.entries()) {\n entry.behavior = null;\n attachEntry(parent, entry, index, siblingAt(entries, index));\n }\n};\n\nconst getPosition = (entries: PlacedChild[], before: PlaceableNode | null): number =>\n indexBeforeOrEnd(entries, before, (entry, target) => entry.node === target);\n\nconst placeNew = (parent: ElementNode, entry: PlacedChild, entries: PlacedChild[], index: number): void => {\n attachEntry(parent, entry, index, siblingAt(entries, index));\n\n if (!entry.attached) {\n remove(entries, entry);\n\n return;\n }\n\n const isInsertedBeforeEnd = index < entries.length - 1;\n const isCannotReorderInPlace = entry.behavior !== null && entry.behavior.reorder === undefined;\n\n if (isInsertedBeforeEnd && isCannotReorderInPlace) {\n rebuild(parent, entries);\n }\n};\n\nconst moveEntry = (parent: ElementNode, entry: PlacedChild, entries: PlacedChild[], index: number): void => {\n const behavior = entry.behavior;\n const reorder = behavior?.reorder;\n\n if (behavior === null || reorder === undefined) {\n rebuild(parent, entries);\n\n return;\n }\n\n const context = getOrCreateContext(parent, behavior);\n const claim = reorder(parent.object, entry.object, placeInfo(entry, index, siblingAt(entries, index), context));\n adoptedFrom(parent, entry, behavior, claim);\n applyLazyProps(entry);\n};\n\nconst resolveEntry = (\n entries: PlacedChild[],\n existing: number,\n slot: string,\n node: PlaceableNode,\n): PlacedChild | null => {\n if (existing >= 0) {\n return entries[existing] ?? null;\n }\n\n return createEntry(slot, node);\n};\n\nconst placeChild = (\n parent: ElementNode,\n slot: string,\n node: PlaceableNode,\n before: PlaceableNode | null,\n): void => {\n const entries = getOrInsert(parent.placements, slot, () => []);\n const existing = entries.findIndex((entry) => entry.node === node);\n const entry = resolveEntry(entries, existing, slot, node);\n\n if (entry === null) {\n return;\n }\n\n const isMove = existing !== -1;\n\n if (isMove) {\n entries.splice(existing, 1);\n }\n\n const index = getPosition(entries, before);\n entries.splice(index, 0, entry);\n\n if (isMove) {\n moveEntry(parent, entry, entries, index);\n } else {\n placeNew(parent, entry, entries, index);\n }\n\n markFlush(parent);\n};\n\nconst unplaceChild = (parent: ElementNode, slot: string, node: PlaceableNode): void => {\n const entries = parent.placements.get(slot);\n\n if (entries === undefined) {\n return;\n }\n\n const index = entries.findIndex((entry) => entry.node === node);\n\n if (index === -1) {\n return;\n }\n\n const [entry] = entries.splice(index, 1);\n\n if (entry !== undefined) {\n detachEntry(parent, entry);\n }\n\n markFlush(parent);\n};\n\nexport { placeChild, unplaceChild };\n"]}
1
+ {"version":3,"file":"placement.js","sourceRoot":"","sources":["../../src/reconciler/placement.ts"],"names":[],"mappings":"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","sourcesContent":["import * as GObject from \"@gtkx/gi/gobject\";\nimport * as Gtk from \"@gtkx/gi/gtk\";\nimport { getOrInsert, indexBeforeOrEnd, remove } from \"@gtkx/utils\";\nimport type { DetachInfo, ElementBehavior, PlaceInfo } from \"./registry.js\";\nimport { applyAdoptedProps, markFlush } from \"./apply-props.js\";\nimport { typeInfoFor } from \"./metadata.js\";\nimport {\n DEFAULT_SLOT,\n ELEMENT_KIND,\n type ElementNode,\n getOrCreateContext,\n LAZY_KIND,\n lazyTarget,\n nodeObject,\n type PlaceableNode,\n type PlacedChild,\n} from \"./node.js\";\nimport { applyWrite } from \"./signals.js\";\nimport { markTextDirty } from \"./text.js\";\n\ntype AttachContext = { parent: ElementNode; entry: PlacedChild; index: number; sibling: GObject.Object | null };\n\nconst createEntry = (slot: string, node: PlaceableNode): PlacedChild | null => {\n const object = nodeObject(node);\n\n if (object === null) {\n return null;\n }\n\n return { node, object, adopted: null, slot, behavior: null, isAttached: false };\n};\n\nconst siblingAt = (entries: PlacedChild[], index: number): GObject.Object | null =>\n index > 0 ? (entries[index - 1]?.object ?? null) : null;\n\nconst placeInfo = (entry: PlacedChild, index: number, sibling: GObject.Object | null, context: unknown): PlaceInfo => ({\n slot: entry.slot,\n index,\n sibling,\n adopted: entry.adopted,\n props: entry.node.props,\n context,\n});\n\nconst adoptedFrom = (parent: ElementNode, entry: PlacedChild, behavior: ElementBehavior, claim: unknown): void => {\n if (behavior.resolve !== undefined) {\n entry.adopted = behavior.resolve(parent.object, entry.object);\n\n return;\n }\n\n entry.adopted = claim instanceof GObject.Object ? claim : null;\n};\n\nconst applyLazyProps = (entry: PlacedChild): void => {\n if (entry.node.kind !== LAZY_KIND || entry.adopted === null) {\n return;\n }\n\n applyAdoptedProps(lazyTarget(entry.node, entry.adopted), {}, entry.node.props);\n entry.node.adopted = entry.adopted;\n};\n\nconst wireBufferView = (node: PlaceableNode, parent: ElementNode): void => {\n if (!(node.kind === ELEMENT_KIND && node.contentKind === \"buffer\" && parent.object instanceof Gtk.TextView)) {\n return;\n }\n\n node.bufferView = parent.object;\n markTextDirty(node);\n};\n\nconst writeSlot = (parent: ElementNode, entry: PlacedChild, value: GObject.Object | null): void => {\n applyWrite(() => {\n Reflect.set(parent.object, entry.slot, value);\n });\n};\n\nconst setObjectSlot = (parent: ElementNode, entry: PlacedChild): void => {\n writeSlot(parent, entry, entry.object);\n wireBufferView(entry.node, parent);\n entry.behavior = null;\n entry.isAttached = true;\n};\n\nconst didAttach = (ctx: AttachContext, behavior: ElementBehavior): boolean => {\n const attach = behavior.attach;\n\n if (attach === undefined) {\n return false;\n }\n\n const context = getOrCreateContext(ctx.parent, behavior);\n const claim = attach(ctx.parent.object, ctx.entry.object, placeInfo(ctx.entry, ctx.index, ctx.sibling, context));\n\n if (claim === undefined) {\n return false;\n }\n\n ctx.entry.behavior = behavior;\n adoptedFrom(ctx.parent, ctx.entry, behavior, claim);\n ctx.entry.isAttached = true;\n applyLazyProps(ctx.entry);\n\n return true;\n};\n\nconst runAttach = (parent: ElementNode, entry: PlacedChild, index: number, sibling: GObject.Object | null): void => {\n const ctx: AttachContext = { parent, entry, index, sibling };\n\n for (const behavior of typeInfoFor(parent.typeName).behaviors) {\n if (didAttach(ctx, behavior)) {\n return;\n }\n }\n\n if (entry.slot !== DEFAULT_SLOT) {\n setObjectSlot(parent, entry);\n }\n};\n\nconst attachEntry = (parent: ElementNode, entry: PlacedChild, index: number, sibling: GObject.Object | null): void => {\n applyWrite(() => {\n runAttach(parent, entry, index, sibling);\n });\n};\n\nconst detachInfo = (entry: PlacedChild, context: unknown): DetachInfo => ({\n slot: entry.slot,\n adopted: entry.adopted,\n props: entry.node.props,\n context,\n});\n\nconst runDetach = (parent: ElementNode, entry: PlacedChild): void => {\n const behavior = entry.behavior;\n\n if (behavior === null) {\n if (entry.slot !== DEFAULT_SLOT) {\n writeSlot(parent, entry, null);\n }\n\n return;\n }\n\n behavior.detach?.(parent.object, entry.object, detachInfo(entry, getOrCreateContext(parent, behavior)));\n};\n\nconst detachEntry = (parent: ElementNode, entry: PlacedChild): void => {\n if (!entry.isAttached) {\n return;\n }\n\n entry.isAttached = false;\n\n applyWrite(() => {\n runDetach(parent, entry);\n });\n};\n\nconst rebuild = (parent: ElementNode, entries: PlacedChild[]): void => {\n for (const entry of entries) {\n detachEntry(parent, entry);\n }\n\n for (const [index, entry] of entries.entries()) {\n entry.behavior = null;\n attachEntry(parent, entry, index, siblingAt(entries, index));\n }\n};\n\nconst getPosition = (entries: PlacedChild[], before: PlaceableNode | null): number =>\n indexBeforeOrEnd(entries, before, (entry, target) => entry.node === target);\n\nconst placeNew = (parent: ElementNode, entry: PlacedChild, entries: PlacedChild[], index: number): void => {\n attachEntry(parent, entry, index, siblingAt(entries, index));\n\n if (!entry.isAttached) {\n remove(entries, entry);\n\n return;\n }\n\n const isInsertedBeforeEnd = index < entries.length - 1;\n const isCannotReorderInPlace = entry.behavior !== null && entry.behavior.reorder === undefined;\n\n if (isInsertedBeforeEnd && isCannotReorderInPlace) {\n rebuild(parent, entries);\n }\n};\n\nconst moveEntry = (parent: ElementNode, entry: PlacedChild, entries: PlacedChild[], index: number): void => {\n const behavior = entry.behavior;\n const reorder = behavior?.reorder;\n\n if (behavior === null || reorder === undefined) {\n rebuild(parent, entries);\n\n return;\n }\n\n const context = getOrCreateContext(parent, behavior);\n const claim = reorder(parent.object, entry.object, placeInfo(entry, index, siblingAt(entries, index), context));\n adoptedFrom(parent, entry, behavior, claim);\n applyLazyProps(entry);\n};\n\nconst resolveEntry = (\n entries: PlacedChild[],\n existing: number,\n slot: string,\n node: PlaceableNode,\n): PlacedChild | null => {\n if (existing >= 0) {\n return entries[existing] ?? null;\n }\n\n return createEntry(slot, node);\n};\n\nconst placeChild = (\n parent: ElementNode,\n slot: string,\n node: PlaceableNode,\n before: PlaceableNode | null,\n): void => {\n const entries = getOrInsert(parent.placements, slot, () => []);\n const existing = entries.findIndex((entry) => entry.node === node);\n const entry = resolveEntry(entries, existing, slot, node);\n\n if (entry === null) {\n return;\n }\n\n const isMove = existing !== -1;\n\n if (isMove) {\n entries.splice(existing, 1);\n }\n\n const index = getPosition(entries, before);\n entries.splice(index, 0, entry);\n\n if (isMove) {\n moveEntry(parent, entry, entries, index);\n } else {\n placeNew(parent, entry, entries, index);\n }\n\n markFlush(parent);\n};\n\nconst unplaceChild = (parent: ElementNode, slot: string, node: PlaceableNode): void => {\n const entries = parent.placements.get(slot);\n\n if (entries === undefined) {\n return;\n }\n\n const index = entries.findIndex((entry) => entry.node === node);\n\n if (index === -1) {\n return;\n }\n\n const [entry] = entries.splice(index, 1);\n\n if (entry !== undefined) {\n detachEntry(parent, entry);\n }\n\n markFlush(parent);\n};\n\nexport { placeChild, unplaceChild };\n"]}
@@ -3,87 +3,101 @@ import type * as GObject from "@gtkx/gi/gobject";
3
3
  type Props = Record<string, unknown>;
4
4
  /** Per-child values a slot hook receives while placing or moving one child. */
5
5
  type PlaceInfo = {
6
+ /** Name of the slot being filled: `children`, or the prop the child was nested under. */
6
7
  slot: string;
8
+ /** Position of the child among the slot's children. */
7
9
  index: number;
10
+ /** Object of the preceding child in the slot, or null when the child comes first. */
8
11
  sibling: GObject.Object | null;
12
+ /** Object adopted for this child by an earlier attach, or null before it has one. */
9
13
  adopted: GObject.Object | null;
14
+ /** Props of the child element. */
10
15
  props: Props;
16
+ /** Value `initialize` returned for this behavior on the parent. */
11
17
  context: unknown;
12
18
  };
13
19
  /** Per-child values a slot hook receives while removing one child. */
14
20
  type DetachInfo = {
21
+ /** Name of the slot the child is leaving. */
15
22
  slot: string;
23
+ /** Object the container adopted for this child, or null when it adopted none. */
16
24
  adopted: GObject.Object | null;
25
+ /** Props of the child element. */
17
26
  props: Props;
27
+ /** Value `initialize` returned for this behavior on the parent. */
18
28
  context: unknown;
19
29
  };
20
30
  /**
21
- * Customizes how one element type places children and applies props. Every hook receives the
22
- * GObject instance and a private per-node `context` built once by `createContext`. A slot hook
23
- * claims a child by returning a non-`undefined` value; that value, or `resolve`, is the object
24
- * the container adopts for the child. `update` returns the prop names it consumed so those props
25
- * are not also set as plain GObject properties. `create` builds the GObject for types whose
26
- * constructor does more than set properties, and is consulted for its own type only, never
27
- * inherited by subtypes.
31
+ * Customizes how one element type places children and applies props. Hooks other than `create` receive the
32
+ * GObject instance; `update`, `flush`, `mount` and `unmount` also take the private per-node context
33
+ * `initialize` built, and `attach`, `reorder` and `detach` read it off their info object. Subtypes inherit a
34
+ * type's behaviors, except for `create`, which is consulted only for the type it is registered on.
28
35
  */
29
36
  type ElementBehavior<T extends GObject.Object = GObject.Object> = {
37
+ /** Builds the GObject from its construct props, for types whose constructor does more than set properties. */
30
38
  create?: (props: Props) => GObject.Object;
31
- createContext?: (object: T) => unknown;
39
+ /** Builds the private per-node context the other hooks receive, once per node. */
40
+ initialize?: (object: T) => unknown;
41
+ /** Places a child, claiming it by returning anything other than `undefined`. */
32
42
  attach?: (object: T, child: GObject.Object, info: PlaceInfo) => unknown;
43
+ /** Moves an already-attached child; without it, the whole slot is detached and re-attached in order. */
33
44
  reorder?: (object: T, child: GObject.Object, info: PlaceInfo) => unknown;
45
+ /** Removes a child this behavior attached. */
34
46
  detach?: (object: T, child: GObject.Object, info: DetachInfo) => void;
47
+ /** Returns the object the container adopts for a child, overriding whatever `attach` returned. */
35
48
  resolve?: (object: T, child: GObject.Object) => GObject.Object | null;
49
+ /** Applies changed props and returns the names it consumed, which are then not set as GObject properties. */
36
50
  update?: (object: T, prev: Props, next: Props, context: unknown) => Iterable<string> | undefined;
51
+ /** Runs after the commit that touched the node, once every child has been placed. */
37
52
  flush?: (object: T, context: unknown) => void;
53
+ /** Runs once the node and its initial children are attached. */
38
54
  mount?: (object: T, context: unknown) => void;
55
+ /** Runs when React deletes the node. */
39
56
  unmount?: (object: T, context: unknown) => void;
57
+ /** Props to withhold from the constructor, leaving them for a later hook to apply. */
40
58
  deferred?: string[];
41
59
  };
42
60
  /** A named export in a module, referenced as plain data (the module is never imported at runtime). */
43
61
  type ModuleExport = {
62
+ /** Specifier the export is imported from. */
44
63
  module: string;
64
+ /** Identifier the module exports it under. */
45
65
  export: string;
46
66
  };
47
67
  /**
48
- * Per-element configuration keyed by GLib type name: whether the element is lazy (its GObject is
49
- * created by its parent container, as pages and layout children are), the custom behaviors bound to
50
- * its type, an optional component that wraps the generated element, the base props interface its
51
- * generated props extend, and the GObject properties to leave out of the generated props (those a
52
- * behavior already writes from children, such as the `child` and `content` properties). `component`,
53
- * `props` and `omitProps` are inert at runtime; they are read only by codegen.
68
+ * How one GLib type is rendered. `component`, `props` and `omittedProps` are inert at runtime; they are
69
+ * read only by codegen.
54
70
  */
55
71
  type ElementConfig<T extends GObject.Object = GObject.Object> = {
56
- lazy?: boolean;
72
+ /** The element has no GObject of its own; its parent container creates one, as it does for pages. */
73
+ isLazy?: boolean;
74
+ /** Behaviors bound to the type, consulted in registration order and inherited by its subtypes. */
57
75
  behaviors?: ElementBehavior<T>[];
76
+ /** Component that wraps the generated element. */
58
77
  component?: ModuleExport;
78
+ /** Base props interface the generated props extend. */
59
79
  props?: ModuleExport;
60
- omitProps?: string[];
80
+ /** GObject properties to leave out of the generated props, such as those a behavior writes from children. */
81
+ omittedProps?: string[];
61
82
  };
62
83
  /**
63
84
  * Every registered element config, keyed by GLib type name. Adwaita entries appear once `@gtkx/react/adw`
64
85
  * is loaded.
65
86
  */
66
87
  declare const ELEMENTS: Record<string, ElementConfig>;
67
- /** Props a behavior applies after construction; the constructor is never given them. */
68
88
  declare const deferredProps: (behavior: ElementBehavior) => string[];
69
89
  /**
70
90
  * Merges maps of {@link ElementConfig} keyed by GLib type name into one, concatenating each type's
71
- * behaviors and omitted props in the order the maps are given (an earlier map's behaviors come first)
72
- * and taking the last lazy flag, component, and props seen. Use it to combine an app's element config
73
- * with its behaviors.
91
+ * behaviors and omitted props in the order the maps are given (an earlier map's behaviors come first),
92
+ * taking the last component and props seen, and marking a type lazy if any map does. Use it to combine
93
+ * an app's element config with its behaviors.
74
94
  */
75
95
  declare const mergeElementConfigs: (...maps: Record<string, ElementConfig<never>>[]) => Record<string, ElementConfig>;
76
- /**
77
- * Registers a map of {@link ElementConfig} keyed by GLib type name, merging each entry into the
78
- * registry. Behaviors are appended by default (the framework's built-ins register this way); pass
79
- * `{ prepend: true }` for an app's own configuration so its behaviors are consulted before the
80
- * built-ins for the same slot, letting it override them regardless of registration order.
81
- */
82
96
  declare const registerElements: (map: Record<string, ElementConfig<never>>, options?: {
83
- prepend?: boolean;
97
+ isPrepended?: boolean;
84
98
  }) => void;
85
99
  /**
86
- * Identity helper that types the module named by the `elements` entry of `gtkx.config.ts`, enabling
100
+ * Identity helper that types the module named by `elements.behaviors` in `gtkx.config.ts`, enabling
87
101
  * editor autocompletion and type checking. Key each entry by GLib type name and write each behavior
88
102
  * with {@link defineBehavior} so its hooks receive the concrete GObject class.
89
103
  */
@@ -99,9 +113,7 @@ declare const defineElements: (elements: Record<string, ElementConfig<never>>) =
99
113
  * ```
100
114
  */
101
115
  declare const defineBehavior: <T extends GObject.Object>(hooks: ElementBehavior<T>) => ElementBehavior<never>;
102
- /** Spreads one config across many GLib type names. */
103
116
  declare const forTypes: (types: string[], config: ElementConfig<never>) => Record<string, ElementConfig<never>>;
104
- /** References a base props interface exported from `@gtkx/react/internal`. */
105
117
  declare const internal: (name: string) => ModuleExport;
106
118
  export { ELEMENTS, deferredProps, mergeElementConfigs, registerElements, defineElements, defineBehavior, forTypes, internal, type Props, type PlaceInfo, type DetachInfo, type ElementBehavior, type ModuleExport, type ElementConfig, };
107
119
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/reconciler/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAEjD,wFAAwF;AACxF,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAErC,+EAA+E;AAC/E,KAAK,SAAS,GAAG;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,sEAAsE;AACtE,KAAK,UAAU,GAAG;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;;;;;;GAQG;AACH,KAAK,eAAe,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI;IAC9D,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,MAAM,CAAC;IAC1C,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC;IACvC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC;IACxE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC;IACzE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACtE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IACtE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,KAAK,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IACjG,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,sGAAsG;AACtG,KAAK,YAAY,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD;;;;;;;GAOG;AACH,KAAK,aAAa,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI;IAC5D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IACjC,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,QAAA,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAM,CAAC;AAEnD,wFAAwF;AACxF,QAAA,MAAM,aAAa,GAAI,UAAU,eAAe,KAAG,MAAM,EAA6B,CAAC;AA2BvF;;;;;GAKG;AACH,QAAA,MAAM,mBAAmB,GAAI,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,KAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAU1G,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,gBAAgB,GAClB,KAAK,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EACzC,UAAS;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,KACpC,IAIF,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,cAAc,GAAI,UAAU,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,CAChG,CAAC;AAEb;;;;;;;;;GASG;AACH,QAAA,MAAM,cAAc,GAAI,CAAC,SAAS,OAAO,CAAC,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,KAAG,eAAe,CAAC,KAAK,CAAU,CAAC;AAE9G,sDAAsD;AACtD,QAAA,MAAM,QAAQ,GAAI,OAAO,MAAM,EAAE,EAAE,QAAQ,aAAa,CAAC,KAAK,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,CAC1C,CAAC;AAE5D,8EAA8E;AAC9E,QAAA,MAAM,QAAQ,GAAI,MAAM,MAAM,KAAG,YAAkE,CAAC;AAEpG,OAAO,EACH,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,aAAa,GACrB,CAAC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/reconciler/registry.ts"],"names":[],"mappings":"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"}