@gtkx/react 0.17.3 → 0.18.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.
Files changed (193) hide show
  1. package/dist/factory.d.ts +0 -1
  2. package/dist/factory.js +21 -8
  3. package/dist/generated/internal.d.ts +4 -51
  4. package/dist/generated/internal.js +626 -412
  5. package/dist/generated/jsx.d.ts +453 -958
  6. package/dist/host-config.d.ts +1 -1
  7. package/dist/host-config.js +18 -23
  8. package/dist/index.d.ts +1 -1
  9. package/dist/index.js +1 -1
  10. package/dist/jsx.d.ts +579 -302
  11. package/dist/jsx.js +37 -179
  12. package/dist/metadata.d.ts +3 -0
  13. package/dist/metadata.js +26 -0
  14. package/dist/node.d.ts +20 -12
  15. package/dist/node.js +72 -17
  16. package/dist/nodes/adjustable.d.ts +3 -16
  17. package/dist/nodes/adjustable.js +5 -22
  18. package/dist/nodes/alert-dialog-response.d.ts +14 -1
  19. package/dist/nodes/alert-dialog-response.js +36 -62
  20. package/dist/nodes/animation.d.ts +37 -1
  21. package/dist/nodes/animation.js +162 -105
  22. package/dist/nodes/application.d.ts +11 -1
  23. package/dist/nodes/application.js +17 -38
  24. package/dist/nodes/calendar.d.ts +13 -0
  25. package/dist/nodes/calendar.js +10 -16
  26. package/dist/nodes/color-dialog-button.d.ts +13 -0
  27. package/dist/nodes/color-dialog-button.js +10 -38
  28. package/dist/nodes/column-view-column.d.ts +13 -11
  29. package/dist/nodes/column-view-column.js +27 -23
  30. package/dist/nodes/column-view.d.ts +31 -0
  31. package/dist/nodes/column-view.js +44 -44
  32. package/dist/nodes/container-slot.d.ts +15 -0
  33. package/dist/nodes/container-slot.js +68 -0
  34. package/dist/nodes/dialog.d.ts +6 -8
  35. package/dist/nodes/dialog.js +12 -13
  36. package/dist/nodes/drawing-area.d.ts +12 -0
  37. package/dist/nodes/drawing-area.js +24 -24
  38. package/dist/nodes/drop-down.d.ts +22 -0
  39. package/dist/nodes/drop-down.js +72 -0
  40. package/dist/nodes/event-controller.d.ts +8 -17
  41. package/dist/nodes/event-controller.js +20 -42
  42. package/dist/nodes/fixed-child.d.ts +18 -1
  43. package/dist/nodes/fixed-child.js +52 -36
  44. package/dist/nodes/font-dialog-button.d.ts +13 -0
  45. package/dist/nodes/font-dialog-button.js +12 -35
  46. package/dist/nodes/grid-child.d.ts +17 -1
  47. package/dist/nodes/grid-child.js +57 -37
  48. package/dist/nodes/grid-view.d.ts +24 -0
  49. package/dist/nodes/grid-view.js +73 -0
  50. package/dist/nodes/internal/base-item-renderer.d.ts +7 -9
  51. package/dist/nodes/internal/base-item-renderer.js +15 -18
  52. package/dist/nodes/internal/grid-item-renderer.d.ts +17 -0
  53. package/dist/nodes/internal/grid-item-renderer.js +59 -0
  54. package/dist/nodes/internal/list-item-renderer.d.ts +14 -9
  55. package/dist/nodes/internal/list-item-renderer.js +96 -35
  56. package/dist/nodes/internal/list-store.d.ts +5 -0
  57. package/dist/nodes/internal/list-store.js +39 -9
  58. package/dist/nodes/internal/predicates.d.ts +4 -19
  59. package/dist/nodes/internal/predicates.js +1 -20
  60. package/dist/nodes/internal/props.d.ts +5 -0
  61. package/dist/nodes/internal/props.js +42 -0
  62. package/dist/nodes/internal/{selection-model.d.ts → selection-model-controller.d.ts} +4 -9
  63. package/dist/nodes/internal/{selection-model.js → selection-model-controller.js} +6 -15
  64. package/dist/nodes/internal/signal-store.js +12 -5
  65. package/dist/nodes/internal/simple-list-store.d.ts +5 -0
  66. package/dist/nodes/internal/simple-list-store.js +42 -13
  67. package/dist/nodes/internal/text-buffer-controller.d.ts +4 -12
  68. package/dist/nodes/internal/text-buffer-controller.js +32 -33
  69. package/dist/nodes/internal/tree-store.d.ts +7 -0
  70. package/dist/nodes/internal/tree-store.js +75 -18
  71. package/dist/nodes/internal/widget.d.ts +7 -0
  72. package/dist/nodes/internal/widget.js +68 -0
  73. package/dist/nodes/level-bar.d.ts +10 -0
  74. package/dist/nodes/level-bar.js +11 -22
  75. package/dist/nodes/list-item.d.ts +17 -9
  76. package/dist/nodes/list-item.js +67 -12
  77. package/dist/nodes/list-view.d.ts +23 -0
  78. package/dist/nodes/list-view.js +27 -31
  79. package/dist/nodes/menu.d.ts +2 -4
  80. package/dist/nodes/menu.js +0 -6
  81. package/dist/nodes/models/grid.d.ts +27 -0
  82. package/dist/nodes/models/grid.js +68 -0
  83. package/dist/nodes/models/list.d.ts +15 -13
  84. package/dist/nodes/models/list.js +48 -26
  85. package/dist/nodes/models/menu.d.ts +15 -16
  86. package/dist/nodes/models/menu.js +63 -93
  87. package/dist/nodes/navigation-page.d.ts +16 -10
  88. package/dist/nodes/navigation-page.js +108 -31
  89. package/dist/nodes/navigation-view.d.ts +15 -0
  90. package/dist/nodes/navigation-view.js +15 -65
  91. package/dist/nodes/notebook-page-tab.d.ts +10 -12
  92. package/dist/nodes/notebook-page-tab.js +24 -27
  93. package/dist/nodes/notebook-page.d.ts +19 -16
  94. package/dist/nodes/notebook-page.js +75 -56
  95. package/dist/nodes/notebook.d.ts +10 -1
  96. package/dist/nodes/notebook.js +10 -22
  97. package/dist/nodes/overlay-child.d.ts +17 -1
  98. package/dist/nodes/overlay-child.js +53 -75
  99. package/dist/nodes/popover-menu.d.ts +15 -0
  100. package/dist/nodes/popover-menu.js +13 -26
  101. package/dist/nodes/scale.d.ts +8 -0
  102. package/dist/nodes/scale.js +2 -11
  103. package/dist/nodes/scrolled-window.d.ts +9 -0
  104. package/dist/nodes/scrolled-window.js +5 -11
  105. package/dist/nodes/search-bar.d.ts +9 -0
  106. package/dist/nodes/search-bar.js +8 -33
  107. package/dist/nodes/shortcut-controller.d.ts +9 -1
  108. package/dist/nodes/shortcut-controller.js +12 -25
  109. package/dist/nodes/shortcut.d.ts +11 -33
  110. package/dist/nodes/shortcut.js +19 -15
  111. package/dist/nodes/slot.d.ts +16 -15
  112. package/dist/nodes/slot.js +63 -57
  113. package/dist/nodes/source-view.d.ts +16 -0
  114. package/dist/nodes/source-view.js +44 -44
  115. package/dist/nodes/stack-page.d.ts +21 -1
  116. package/dist/nodes/stack-page.js +68 -17
  117. package/dist/nodes/stack.d.ts +11 -0
  118. package/dist/nodes/stack.js +8 -26
  119. package/dist/nodes/text-anchor.d.ts +11 -30
  120. package/dist/nodes/text-anchor.js +20 -22
  121. package/dist/nodes/text-content.d.ts +1 -0
  122. package/dist/nodes/text-content.js +1 -1
  123. package/dist/nodes/text-paintable.d.ts +10 -15
  124. package/dist/nodes/text-paintable.js +16 -9
  125. package/dist/nodes/text-segment.d.ts +12 -10
  126. package/dist/nodes/text-segment.js +19 -11
  127. package/dist/nodes/text-tag.d.ts +20 -119
  128. package/dist/nodes/text-tag.js +153 -119
  129. package/dist/nodes/text-view.d.ts +13 -18
  130. package/dist/nodes/text-view.js +17 -17
  131. package/dist/nodes/toggle-group.d.ts +9 -0
  132. package/dist/nodes/toggle-group.js +8 -33
  133. package/dist/nodes/toggle.d.ts +15 -1
  134. package/dist/nodes/toggle.js +34 -52
  135. package/dist/nodes/virtual.d.ts +3 -10
  136. package/dist/nodes/virtual.js +1 -14
  137. package/dist/nodes/web-view.d.ts +9 -0
  138. package/dist/nodes/web-view.js +10 -24
  139. package/dist/nodes/widget.d.ts +17 -13
  140. package/dist/nodes/widget.js +185 -112
  141. package/dist/nodes/window.d.ts +20 -21
  142. package/dist/nodes/window.js +54 -35
  143. package/dist/registry.d.ts +17 -6
  144. package/dist/registry.js +104 -5
  145. package/dist/render.d.ts +0 -9
  146. package/dist/render.js +0 -11
  147. package/package.json +3 -3
  148. package/dist/animation/css-builder.d.ts +0 -3
  149. package/dist/animation/css-builder.js +0 -53
  150. package/dist/animation/types.d.ts +0 -120
  151. package/dist/animation/types.js +0 -1
  152. package/dist/nodes/abstract/positional-child.d.ts +0 -9
  153. package/dist/nodes/abstract/positional-child.js +0 -29
  154. package/dist/nodes/abstract/virtual-container.d.ts +0 -21
  155. package/dist/nodes/abstract/virtual-container.js +0 -68
  156. package/dist/nodes/abstract/virtual-single-child.d.ts +0 -18
  157. package/dist/nodes/abstract/virtual-single-child.js +0 -55
  158. package/dist/nodes/action-row-child.d.ts +0 -1
  159. package/dist/nodes/action-row-child.js +0 -30
  160. package/dist/nodes/autowrapped.d.ts +0 -1
  161. package/dist/nodes/autowrapped.js +0 -115
  162. package/dist/nodes/expander-row-child.d.ts +0 -1
  163. package/dist/nodes/expander-row-child.js +0 -30
  164. package/dist/nodes/grid.d.ts +0 -1
  165. package/dist/nodes/grid.js +0 -41
  166. package/dist/nodes/index.d.ts +0 -56
  167. package/dist/nodes/index.js +0 -56
  168. package/dist/nodes/internal/child-attachment.d.ts +0 -26
  169. package/dist/nodes/internal/child-attachment.js +0 -48
  170. package/dist/nodes/internal/deferred-action.d.ts +0 -9
  171. package/dist/nodes/internal/deferred-action.js +0 -22
  172. package/dist/nodes/internal/text-tag-styles.d.ts +0 -43
  173. package/dist/nodes/internal/text-tag-styles.js +0 -52
  174. package/dist/nodes/internal/tree-list-item-renderer.d.ts +0 -26
  175. package/dist/nodes/internal/tree-list-item-renderer.js +0 -134
  176. package/dist/nodes/internal/utils.d.ts +0 -12
  177. package/dist/nodes/internal/utils.js +0 -92
  178. package/dist/nodes/models/tree-list.d.ts +0 -28
  179. package/dist/nodes/models/tree-list.js +0 -113
  180. package/dist/nodes/pack-child.d.ts +0 -1
  181. package/dist/nodes/pack-child.js +0 -30
  182. package/dist/nodes/simple-list-item.d.ts +0 -9
  183. package/dist/nodes/simple-list-item.js +0 -9
  184. package/dist/nodes/simple-list-view.d.ts +0 -1
  185. package/dist/nodes/simple-list-view.js +0 -74
  186. package/dist/nodes/toolbar-child.d.ts +0 -1
  187. package/dist/nodes/toolbar-child.js +0 -30
  188. package/dist/nodes/tree-list-item.d.ts +0 -22
  189. package/dist/nodes/tree-list-item.js +0 -90
  190. package/dist/nodes/tree-list-view.d.ts +0 -1
  191. package/dist/nodes/tree-list-view.js +0 -77
  192. package/dist/scheduler.d.ts +0 -26
  193. package/dist/scheduler.js +0 -42
@@ -3,7 +3,7 @@ import type ReactReconciler from "react-reconciler";
3
3
  import type { Node } from "./node.js";
4
4
  import type { Container, Props } from "./types.js";
5
5
  declare global {
6
- var __GTKX_CONTAINER_NODE_CACHE__: Map<number, Node> | undefined;
6
+ var __GTKX_CONTAINER_NODE_CACHE__: WeakMap<Container, Node> | undefined;
7
7
  }
8
8
  type TextInstance = Node;
9
9
  type SuspenseInstance = never;
@@ -1,19 +1,16 @@
1
- import { getNativeId } from "@gtkx/ffi";
2
1
  import React from "react";
3
- import { createNode } from "./factory.js";
4
- import { isBufferedType } from "./nodes/internal/predicates.js";
5
- import { flushAfterCommit } from "./scheduler.js";
2
+ import { createNode, resolveContainerClass } from "./factory.js";
3
+ import { isBuffered } from "./nodes/internal/predicates.js";
6
4
  if (!globalThis.__GTKX_CONTAINER_NODE_CACHE__) {
7
- globalThis.__GTKX_CONTAINER_NODE_CACHE__ = new Map();
5
+ globalThis.__GTKX_CONTAINER_NODE_CACHE__ = new WeakMap();
8
6
  }
9
7
  const containerNodeCache = globalThis.__GTKX_CONTAINER_NODE_CACHE__;
10
8
  const getOrCreateContainerNode = (container) => {
11
- const id = getNativeId(container.handle);
12
- let node = containerNodeCache.get(id);
9
+ let node = containerNodeCache.get(container);
13
10
  if (!node) {
14
11
  const type = container.constructor.glibTypeName;
15
12
  node = createNode(type, {}, container, container);
16
- containerNodeCache.set(id, node);
13
+ containerNodeCache.set(container, node);
17
14
  }
18
15
  return node;
19
16
  };
@@ -26,7 +23,8 @@ export function createHostConfig() {
26
23
  noTimeout: -1,
27
24
  getRootHostContext: () => ({}),
28
25
  getChildHostContext: (parentHostContext, type) => {
29
- if (isBufferedType(type) || type === "TextTag") {
26
+ const containerClass = resolveContainerClass(type);
27
+ if ((containerClass && isBuffered(containerClass.prototype)) || type === "TextTag") {
30
28
  return { insideTextBuffer: true };
31
29
  }
32
30
  if (parentHostContext.insideTextBuffer) {
@@ -42,26 +40,25 @@ export function createHostConfig() {
42
40
  if (hostContext.insideTextBuffer) {
43
41
  const props = { text };
44
42
  const node = createNode("TextSegment", props, undefined, rootContainer);
45
- node.updateProps(null, props);
43
+ node.commitUpdate(null, props);
46
44
  return node;
47
45
  }
48
46
  const props = { label: text };
49
47
  const node = createNode("GtkLabel", props, undefined, rootContainer);
50
- node.updateProps(null, props);
48
+ node.commitUpdate(null, props);
51
49
  return node;
52
50
  },
53
51
  appendInitialChild: (parent, child) => {
54
- parent.appendChild(child);
52
+ parent.appendInitialChild(child);
55
53
  },
56
54
  finalizeInitialChildren: (instance, _type, props) => {
57
- instance.commitProps(null, props);
58
- return true;
55
+ return instance.finalizeInitialChildren(props);
59
56
  },
60
57
  commitUpdate: (instance, _type, oldProps, newProps) => {
61
- instance.commitProps(oldProps, newProps);
58
+ instance.commitUpdate(oldProps, newProps);
62
59
  },
63
- commitMount: (instance, _type) => {
64
- instance.mount();
60
+ commitMount: (instance) => {
61
+ instance.commitMount();
65
62
  },
66
63
  appendChild: (parent, child) => {
67
64
  parent.appendChild(child);
@@ -87,15 +84,13 @@ export function createHostConfig() {
87
84
  prepareForCommit: () => {
88
85
  return null;
89
86
  },
90
- resetAfterCommit: () => {
91
- flushAfterCommit();
92
- },
87
+ resetAfterCommit: () => { },
93
88
  commitTextUpdate: (textInstance, oldText, newText) => {
94
89
  if (textInstance.typeName === "TextSegment") {
95
- textInstance.commitProps({ text: oldText }, { text: newText });
90
+ textInstance.commitUpdate({ text: oldText }, { text: newText });
96
91
  }
97
92
  else {
98
- textInstance.commitProps({ label: oldText }, { label: newText });
93
+ textInstance.commitUpdate({ label: oldText }, { label: newText });
99
94
  }
100
95
  },
101
96
  clearContainer: () => { },
@@ -118,7 +113,7 @@ export function createHostConfig() {
118
113
  afterActiveInstanceBlur: () => { },
119
114
  prepareScopeUpdate: () => { },
120
115
  getInstanceFromScope: () => null,
121
- detachDeletedInstance: (instance) => instance.unmount(),
116
+ detachDeletedInstance: (instance) => instance.detachDeletedInstance(),
122
117
  resetFormInstance: () => { },
123
118
  requestPostPaintCallback: () => { },
124
119
  shouldAttemptEagerTransition: () => false,
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export * from "./jsx.js";
2
2
  export { createPortal } from "./portal.js";
3
3
  export { reconciler } from "./reconciler.js";
4
- export { ApplicationContext, getApplication, quit, render, setHotReloading, update, useApplication, } from "./render.js";
4
+ export { ApplicationContext, quit, render, setHotReloading, update, useApplication, } from "./render.js";
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  export * from "./jsx.js";
2
2
  export { createPortal } from "./portal.js";
3
3
  export { reconciler } from "./reconciler.js";
4
- export { ApplicationContext, getApplication, quit, render, setHotReloading, update, useApplication, } from "./render.js";
4
+ export { ApplicationContext, quit, render, setHotReloading, update, useApplication, } from "./render.js";