@gtkx/react 1.0.0-rc.3 → 1.0.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 (203) hide show
  1. package/README.md +8 -9
  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 +4 -4
  7. package/dist/adw/dialog.d.ts.map +1 -1
  8. package/dist/adw/dialog.js +16 -21
  9. package/dist/adw/dialog.js.map +1 -1
  10. package/dist/adw/element-behaviors.js +104 -57
  11. package/dist/adw/element-behaviors.js.map +1 -1
  12. package/dist/adw/element-config.d.ts +0 -5
  13. package/dist/adw/element-config.d.ts.map +1 -1
  14. package/dist/adw/element-config.js +25 -26
  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 +35 -4
  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-window.d.ts +5 -0
  26. package/dist/components/application-window.d.ts.map +1 -0
  27. package/dist/components/application-window.js +7 -0
  28. package/dist/components/application-window.js.map +1 -0
  29. package/dist/components/application.d.ts +3 -8
  30. package/dist/components/application.d.ts.map +1 -1
  31. package/dist/components/application.js +22 -6
  32. package/dist/components/application.js.map +1 -1
  33. package/dist/components/element.d.ts +13 -2
  34. package/dist/components/element.d.ts.map +1 -1
  35. package/dist/components/element.js +39 -15
  36. package/dist/components/element.js.map +1 -1
  37. package/dist/components/portaled.d.ts +5 -0
  38. package/dist/components/portaled.d.ts.map +1 -0
  39. package/dist/components/portaled.js +8 -0
  40. package/dist/components/portaled.js.map +1 -0
  41. package/dist/components/window.d.ts +6 -5
  42. package/dist/components/window.d.ts.map +1 -1
  43. package/dist/components/window.js +17 -16
  44. package/dist/components/window.js.map +1 -1
  45. package/dist/config.d.ts +7 -2
  46. package/dist/config.d.ts.map +1 -1
  47. package/dist/config.js +5 -1
  48. package/dist/config.js.map +1 -1
  49. package/dist/element-behaviors.js +11 -2
  50. package/dist/element-behaviors.js.map +1 -1
  51. package/dist/element-config.d.ts +4 -3
  52. package/dist/element-config.d.ts.map +1 -1
  53. package/dist/element-config.js +19 -15
  54. package/dist/element-config.js.map +1 -1
  55. package/dist/hooks/use-bind-setting.d.ts +8 -7
  56. package/dist/hooks/use-bind-setting.d.ts.map +1 -1
  57. package/dist/hooks/use-bind-setting.js +2 -7
  58. package/dist/hooks/use-bind-setting.js.map +1 -1
  59. package/dist/hooks/use-merged-refs.d.ts +1 -4
  60. package/dist/hooks/use-merged-refs.d.ts.map +1 -1
  61. package/dist/hooks/use-merged-refs.js +1 -1
  62. package/dist/hooks/use-merged-refs.js.map +1 -1
  63. package/dist/hooks/use-parent-window.d.ts +3 -1
  64. package/dist/hooks/use-parent-window.d.ts.map +1 -1
  65. package/dist/hooks/use-parent-window.js +3 -1
  66. package/dist/hooks/use-parent-window.js.map +1 -1
  67. package/dist/hooks/use-presented-instance.d.ts +12 -0
  68. package/dist/hooks/use-presented-instance.d.ts.map +1 -0
  69. package/dist/hooks/use-presented-instance.js +27 -0
  70. package/dist/hooks/use-presented-instance.js.map +1 -0
  71. package/dist/hooks/use-property.d.ts +4 -3
  72. package/dist/hooks/use-property.d.ts.map +1 -1
  73. package/dist/hooks/use-property.js +1 -2
  74. package/dist/hooks/use-property.js.map +1 -1
  75. package/dist/hooks/use-setting.d.ts +2 -3
  76. package/dist/hooks/use-setting.d.ts.map +1 -1
  77. package/dist/hooks/use-setting.js +2 -3
  78. package/dist/hooks/use-setting.js.map +1 -1
  79. package/dist/hooks/use-signal.d.ts +15 -8
  80. package/dist/hooks/use-signal.d.ts.map +1 -1
  81. package/dist/hooks/use-signal.js +6 -8
  82. package/dist/hooks/use-signal.js.map +1 -1
  83. package/dist/index.d.ts +10 -2
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +8 -0
  86. package/dist/index.js.map +1 -1
  87. package/dist/internal.d.ts +8 -5
  88. package/dist/internal.d.ts.map +1 -1
  89. package/dist/internal.js +7 -5
  90. package/dist/internal.js.map +1 -1
  91. package/dist/prop-types.d.ts +88 -4
  92. package/dist/prop-types.d.ts.map +1 -1
  93. package/dist/prop-types.js.map +1 -1
  94. package/dist/reconciler/apply-props.d.ts +4 -4
  95. package/dist/reconciler/apply-props.d.ts.map +1 -1
  96. package/dist/reconciler/apply-props.js +62 -20
  97. package/dist/reconciler/apply-props.js.map +1 -1
  98. package/dist/reconciler/behaviors.d.ts +9 -20
  99. package/dist/reconciler/behaviors.d.ts.map +1 -1
  100. package/dist/reconciler/behaviors.js +44 -41
  101. package/dist/reconciler/behaviors.js.map +1 -1
  102. package/dist/reconciler/devtools.d.ts +6 -0
  103. package/dist/reconciler/devtools.d.ts.map +1 -0
  104. package/dist/reconciler/devtools.js +11 -0
  105. package/dist/reconciler/devtools.js.map +1 -0
  106. package/dist/reconciler/host-config.d.ts +1 -1
  107. package/dist/reconciler/host-config.d.ts.map +1 -1
  108. package/dist/reconciler/host-config.js +17 -26
  109. package/dist/reconciler/host-config.js.map +1 -1
  110. package/dist/reconciler/instance.d.ts.map +1 -1
  111. package/dist/reconciler/instance.js +6 -4
  112. package/dist/reconciler/instance.js.map +1 -1
  113. package/dist/reconciler/metadata.d.ts +2 -2
  114. package/dist/reconciler/metadata.d.ts.map +1 -1
  115. package/dist/reconciler/metadata.js +9 -11
  116. package/dist/reconciler/metadata.js.map +1 -1
  117. package/dist/reconciler/node.d.ts +4 -3
  118. package/dist/reconciler/node.d.ts.map +1 -1
  119. package/dist/reconciler/node.js +8 -7
  120. package/dist/reconciler/node.js.map +1 -1
  121. package/dist/reconciler/placement.js +20 -20
  122. package/dist/reconciler/placement.js.map +1 -1
  123. package/dist/reconciler/registry.d.ts +46 -32
  124. package/dist/reconciler/registry.d.ts.map +1 -1
  125. package/dist/reconciler/registry.js +10 -19
  126. package/dist/reconciler/registry.js.map +1 -1
  127. package/dist/reconciler/root-element.d.ts +1 -1
  128. package/dist/reconciler/root-element.d.ts.map +1 -1
  129. package/dist/reconciler/root-element.js +0 -1
  130. package/dist/reconciler/root-element.js.map +1 -1
  131. package/dist/reconciler/root.d.ts +9 -20
  132. package/dist/reconciler/root.d.ts.map +1 -1
  133. package/dist/reconciler/root.js +6 -19
  134. package/dist/reconciler/root.js.map +1 -1
  135. package/dist/reconciler/signals.d.ts +1 -2
  136. package/dist/reconciler/signals.d.ts.map +1 -1
  137. package/dist/reconciler/signals.js +3 -3
  138. package/dist/reconciler/signals.js.map +1 -1
  139. package/dist/reconciler/text.js +5 -5
  140. package/dist/reconciler/text.js.map +1 -1
  141. package/dist/utils/accessible-props.d.ts +57 -9
  142. package/dist/utils/accessible-props.d.ts.map +1 -1
  143. package/dist/utils/accessible-props.js +11 -13
  144. package/dist/utils/accessible-props.js.map +1 -1
  145. package/dist/utils/ref-prop.d.ts +0 -6
  146. package/dist/utils/ref-prop.d.ts.map +1 -1
  147. package/dist/utils/ref-prop.js +0 -6
  148. package/dist/utils/ref-prop.js.map +1 -1
  149. package/dist/utils/settings.d.ts +7 -0
  150. package/dist/utils/settings.d.ts.map +1 -1
  151. package/dist/utils/settings.js.map +1 -1
  152. package/dist/utils/variant.d.ts +33 -1
  153. package/dist/utils/variant.d.ts.map +1 -1
  154. package/dist/utils/variant.js.map +1 -1
  155. package/env.d.ts +11 -4
  156. package/package.json +5 -5
  157. package/src/adw/config.ts +1 -0
  158. package/src/adw/dialog.tsx +23 -25
  159. package/src/adw/element-behaviors.ts +131 -60
  160. package/src/adw/element-config.ts +25 -26
  161. package/src/adw/index.ts +1 -0
  162. package/src/adw/prop-types.ts +36 -3
  163. package/src/bootstrap.ts +1 -1
  164. package/src/components/application-window.tsx +10 -0
  165. package/src/components/application.tsx +32 -5
  166. package/src/components/element.tsx +52 -17
  167. package/src/components/portaled.tsx +14 -0
  168. package/src/components/window.tsx +25 -23
  169. package/src/config.ts +13 -8
  170. package/src/element-behaviors.ts +20 -1
  171. package/src/element-config.ts +19 -15
  172. package/src/hooks/use-bind-setting.ts +8 -7
  173. package/src/hooks/use-merged-refs.ts +1 -1
  174. package/src/hooks/use-parent-window.ts +3 -1
  175. package/src/hooks/use-presented-instance.tsx +50 -0
  176. package/src/hooks/use-property.ts +4 -3
  177. package/src/hooks/use-setting.ts +2 -3
  178. package/src/hooks/use-signal.ts +18 -11
  179. package/src/index.ts +10 -2
  180. package/src/internal.ts +8 -5
  181. package/src/prop-types.ts +119 -11
  182. package/src/reconciler/apply-props.ts +77 -24
  183. package/src/reconciler/behaviors.ts +77 -50
  184. package/src/reconciler/devtools.ts +18 -0
  185. package/src/reconciler/host-config.ts +20 -32
  186. package/src/reconciler/instance.ts +7 -4
  187. package/src/reconciler/metadata.ts +11 -14
  188. package/src/reconciler/node.ts +12 -9
  189. package/src/reconciler/placement.ts +25 -25
  190. package/src/reconciler/registry.ts +56 -39
  191. package/src/reconciler/root-element.ts +4 -2
  192. package/src/reconciler/root.ts +12 -20
  193. package/src/reconciler/signals.ts +2 -3
  194. package/src/reconciler/text.ts +6 -6
  195. package/src/utils/accessible-props.ts +70 -25
  196. package/src/utils/ref-prop.ts +0 -6
  197. package/src/utils/settings.ts +7 -0
  198. package/src/utils/variant.ts +33 -1
  199. package/dist/utils/accessible-metadata.d.ts +0 -12
  200. package/dist/utils/accessible-metadata.d.ts.map +0 -1
  201. package/dist/utils/accessible-metadata.js +0 -25
  202. package/dist/utils/accessible-metadata.js.map +0 -1
  203. package/src/utils/accessible-metadata.ts +0 -31
@@ -19,7 +19,7 @@ const invokeHandler = (target, record, notifyProperty, args) => notifyProperty =
19
19
  ? record.handler(...args, target.object)
20
20
  : record.handler(Reflect.get(target.object, notifyProperty), target.object);
21
21
  const wrapHandler = (target, record, notifyProperty) => (...args) => {
22
- if (record.blockable && isApplyingWrite()) {
22
+ if (record.isBlockable && isApplyingWrite()) {
23
23
  return undefined;
24
24
  }
25
25
  return target.dispatch(() => invokeHandler(target, record, notifyProperty, args));
@@ -35,7 +35,7 @@ const connectHandler = (target, prop, signal, handler) => {
35
35
  }
36
36
  const isBlockable = isBlockableSignal(typeInfoFor(target.typeName), signal);
37
37
  const notifyProperty = getNotifyProperty(signal);
38
- const record = { signal, handler, wrapped: () => undefined, blockable: isBlockable };
38
+ const record = { signal, handler, wrapped: () => undefined, isBlockable };
39
39
  record.wrapped = wrapHandler(target, record, notifyProperty);
40
40
  target.object.on(signal, record.wrapped);
41
41
  target.handlers.set(prop, record);
@@ -54,5 +54,5 @@ const disconnectAllHandlers = (target) => {
54
54
  }
55
55
  target.handlers.clear();
56
56
  };
57
- export { applyWrite, isApplyingWrite, connectHandler, disconnectHandler, disconnectAllHandlers, };
57
+ export { applyWrite, connectHandler, disconnectHandler, disconnectAllHandlers, };
58
58
  //# sourceMappingURL=signals.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"signals.js","sourceRoot":"","sources":["../../src/reconciler/signals.ts"],"names":[],"mappings":"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","sourcesContent":["import { getSignalBaseName, type SignalHandler } from \"@gtkx/runtime\";\nimport { camelCase } from \"@gtkx/utils\";\nimport type { HandlerRecord, SignalTarget } from \"./node.js\";\nimport { type TypeInfo, typeInfoFor } from \"./metadata.js\";\n\nconst NOTIFY_DETAIL_PREFIX = \"notify::\";\nconst writeState: { depth: number } = { depth: 0 };\n\nconst isApplyingWrite = (): boolean => writeState.depth > 0;\n\nconst applyWrite = <T>(write: () => T): T => {\n writeState.depth += 1;\n\n try {\n return write();\n } finally {\n writeState.depth = Math.max(0, writeState.depth - 1);\n }\n};\n\nconst getNotifyProperty = (signal: string): string | null =>\n signal.startsWith(NOTIFY_DETAIL_PREFIX) ? camelCase(signal.slice(NOTIFY_DETAIL_PREFIX.length)) : null;\n\nconst isBlockableSignal = (info: TypeInfo, signal: string): boolean =>\n info.userEventSignals.has(getSignalBaseName(signal));\n\nconst invokeHandler = (\n target: SignalTarget,\n record: HandlerRecord,\n notifyProperty: string | null,\n args: unknown[],\n): unknown =>\n notifyProperty === null\n ? record.handler(...args, target.object)\n : record.handler(Reflect.get(target.object, notifyProperty), target.object);\n\nconst wrapHandler = (target: SignalTarget, record: HandlerRecord, notifyProperty: string | null): SignalHandler =>\n (...args: unknown[]): unknown => {\n if (record.blockable && isApplyingWrite()) {\n return undefined;\n }\n\n return target.dispatch(() => invokeHandler(target, record, notifyProperty, args));\n };\n\nconst connectHandler = (target: SignalTarget, prop: string, signal: string, handler: SignalHandler): void => {\n const existing = target.handlers.get(prop);\n\n if (existing?.signal === signal) {\n existing.handler = handler;\n\n return;\n }\n\n if (existing !== undefined) {\n target.object.off(existing.signal, existing.wrapped);\n }\n\n const isBlockable = isBlockableSignal(typeInfoFor(target.typeName), signal);\n const notifyProperty = getNotifyProperty(signal);\n const record: HandlerRecord = { signal, handler, wrapped: (): undefined => undefined, blockable: isBlockable };\n record.wrapped = wrapHandler(target, record, notifyProperty);\n target.object.on(signal, record.wrapped);\n target.handlers.set(prop, record);\n};\n\nconst disconnectHandler = (target: SignalTarget, prop: string): void => {\n const record = target.handlers.get(prop);\n\n if (record === undefined) {\n return;\n }\n\n target.object.off(record.signal, record.wrapped);\n target.handlers.delete(prop);\n};\n\nconst disconnectAllHandlers = (target: SignalTarget): void => {\n for (const record of target.handlers.values()) {\n target.object.off(record.signal, record.wrapped);\n }\n\n target.handlers.clear();\n};\n\nexport {\n applyWrite,\n isApplyingWrite,\n connectHandler,\n disconnectHandler,\n disconnectAllHandlers,\n};\n"]}
1
+ {"version":3,"file":"signals.js","sourceRoot":"","sources":["../../src/reconciler/signals.ts"],"names":[],"mappings":"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","sourcesContent":["import { getSignalBaseName, type SignalHandler } from \"@gtkx/runtime\";\nimport { camelCase } from \"@gtkx/utils\";\nimport type { HandlerRecord, SignalTarget } from \"./node.js\";\nimport { type TypeInfo, typeInfoFor } from \"./metadata.js\";\n\nconst NOTIFY_DETAIL_PREFIX = \"notify::\";\nconst writeState: { depth: number } = { depth: 0 };\n\nconst isApplyingWrite = (): boolean => writeState.depth > 0;\n\nconst applyWrite = <T>(write: () => T): T => {\n writeState.depth += 1;\n\n try {\n return write();\n } finally {\n writeState.depth = Math.max(0, writeState.depth - 1);\n }\n};\n\nconst getNotifyProperty = (signal: string): string | null =>\n signal.startsWith(NOTIFY_DETAIL_PREFIX) ? camelCase(signal.slice(NOTIFY_DETAIL_PREFIX.length)) : null;\n\nconst isBlockableSignal = (info: TypeInfo, signal: string): boolean =>\n info.userEventSignals.has(getSignalBaseName(signal));\n\nconst invokeHandler = (\n target: SignalTarget,\n record: HandlerRecord,\n notifyProperty: string | null,\n args: unknown[],\n): unknown =>\n notifyProperty === null\n ? record.handler(...args, target.object)\n : record.handler(Reflect.get(target.object, notifyProperty), target.object);\n\nconst wrapHandler = (target: SignalTarget, record: HandlerRecord, notifyProperty: string | null): SignalHandler =>\n (...args: unknown[]): unknown => {\n if (record.isBlockable && isApplyingWrite()) {\n return undefined;\n }\n\n return target.dispatch(() => invokeHandler(target, record, notifyProperty, args));\n };\n\nconst connectHandler = (target: SignalTarget, prop: string, signal: string, handler: SignalHandler): void => {\n const existing = target.handlers.get(prop);\n\n if (existing?.signal === signal) {\n existing.handler = handler;\n\n return;\n }\n\n if (existing !== undefined) {\n target.object.off(existing.signal, existing.wrapped);\n }\n\n const isBlockable = isBlockableSignal(typeInfoFor(target.typeName), signal);\n const notifyProperty = getNotifyProperty(signal);\n const record: HandlerRecord = { signal, handler, wrapped: (): undefined => undefined, isBlockable };\n record.wrapped = wrapHandler(target, record, notifyProperty);\n target.object.on(signal, record.wrapped);\n target.handlers.set(prop, record);\n};\n\nconst disconnectHandler = (target: SignalTarget, prop: string): void => {\n const record = target.handlers.get(prop);\n\n if (record === undefined) {\n return;\n }\n\n target.object.off(record.signal, record.wrapped);\n target.handlers.delete(prop);\n};\n\nconst disconnectAllHandlers = (target: SignalTarget): void => {\n for (const record of target.handlers.values()) {\n target.object.off(record.signal, record.wrapped);\n }\n\n target.handlers.clear();\n};\n\nexport {\n applyWrite,\n connectHandler,\n disconnectHandler,\n disconnectAllHandlers,\n};\n"]}
@@ -49,23 +49,23 @@ const contentTextLength = (node) => {
49
49
  const isTagElement = (node) => node.kind === ELEMENT_KIND && node.contentKind === "tag";
50
50
  const stepOffset = (node, target, offset) => {
51
51
  if (node === target) {
52
- return { found: true, offset };
52
+ return { wasFound: true, offset };
53
53
  }
54
54
  if (isTagElement(node)) {
55
55
  return getOffset(node.content, target, offset);
56
56
  }
57
- return { found: false, offset: offset + contentTextLength(node) };
57
+ return { wasFound: false, offset: offset + contentTextLength(node) };
58
58
  };
59
59
  const getOffset = (nodes, target, start) => {
60
60
  let offset = start;
61
61
  for (const node of nodes) {
62
62
  const step = stepOffset(node, target, offset);
63
- if (step.found) {
63
+ if (step.wasFound) {
64
64
  return step;
65
65
  }
66
66
  offset = step.offset;
67
67
  }
68
- return { found: false, offset };
68
+ return { wasFound: false, offset };
69
69
  };
70
70
  const enclosingTagNodes = (node) => {
71
71
  const nodes = [];
@@ -264,7 +264,7 @@ const didUpdateTextSurgically = (host, node, oldText, newText) => {
264
264
  return false;
265
265
  }
266
266
  const located = getOffset(host.content, node, 0);
267
- if (!located.found) {
267
+ if (!located.wasFound) {
268
268
  return false;
269
269
  }
270
270
  const start = located.offset;
@@ -1 +1 @@
1
- {"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/reconciler/text.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as GObject from \"@gtkx/gi/gobject\";\nimport * as Gdk from \"@gtkx/gi/gdk\";\nimport * as Gtk from \"@gtkx/gi/gtk\";\nimport { drain, indexBeforeOrEnd } from \"@gtkx/utils\";\nimport type { ContentChild, ContentKind, ElementNode, ParentNode, TextNode } from \"./node.js\";\nimport type { Props } from \"./registry.js\";\nimport { ELEMENT_KIND, TEXT_KIND } from \"./node.js\";\nimport { applyWrite } from \"./signals.js\";\n\ntype OffsetResult = { found: boolean; offset: number };\n\ntype BufferBuild = {\n buffer: Gtk.TextBuffer;\n view: Gtk.TextView | null;\n marks: { node: ElementNode; offset: number }[];\n};\n\nconst dirtyHosts: Set<ElementNode> = new Set();\nconst tagTables: WeakMap<object, Gtk.TextTagTable> = new WeakMap();\nconst TEXT_CONTENT_KINDS: Set<string> = new Set([\"label\", \"buffer\", \"tag\"]);\nconst PAINTABLE_PROP = \"paintable\";\nconst TEXT_PROP = \"text\";\n\nconst CONTENT_MIX_RULES: { kind: ContentKind; prop: string; message: string }[] = [\n {\n kind: \"label\",\n prop: \"label\",\n message: \"<GtkLabel> cannot mix a `label` prop with text children; use one or the other\",\n },\n {\n kind: \"buffer\",\n prop: \"text\",\n message: \"<GtkTextBuffer> cannot mix a `text` prop with content children; use one or the other\",\n },\n {\n kind: \"anchor\",\n prop: PAINTABLE_PROP,\n message: \"<GtkTextChildAnchor> cannot mix a `paintable` prop with a child widget; use one or the other\",\n },\n];\n\nconst charLength = (text: string): number => text[Symbol.iterator]().toArray().length;\n\nconst bufferText = (buffer: Gtk.TextBuffer): string =>\n buffer.getText(buffer.getStartIter(), buffer.getEndIter(), false);\n\nconst currentText = (object: GObject.Object): string | null => {\n if (object instanceof Gtk.TextBuffer) {\n return bufferText(object);\n }\n\n if (object instanceof Gtk.Editable || object instanceof Gtk.EntryBuffer) {\n return object.getText();\n }\n\n return null;\n};\n\nconst hasSameText = (object: GObject.Object, prop: string, value: unknown): boolean =>\n prop === TEXT_PROP && typeof value === \"string\" && currentText(object) === value;\n\nconst contentTextLength = (node: ContentChild): number => {\n if (node.kind === TEXT_KIND) {\n return charLength(node.text);\n }\n\n if (node.contentKind === \"tag\") {\n return node.content.reduce((sum, child) => sum + contentTextLength(child), 0);\n }\n\n return node.contentKind === \"anchor\" ? 1 : 0;\n};\n\nconst isTagElement = (node: ContentChild): node is ElementNode =>\n node.kind === ELEMENT_KIND && node.contentKind === \"tag\";\n\nconst stepOffset = (node: ContentChild, target: TextNode, offset: number): OffsetResult => {\n if (node === target) {\n return { found: true, offset };\n }\n\n if (isTagElement(node)) {\n return getOffset(node.content, target, offset);\n }\n\n return { found: false, offset: offset + contentTextLength(node) };\n};\n\nconst getOffset = (nodes: ContentChild[], target: TextNode, start: number): OffsetResult => {\n let offset = start;\n\n for (const node of nodes) {\n const step = stepOffset(node, target, offset);\n\n if (step.found) {\n return step;\n }\n\n offset = step.offset;\n }\n\n return { found: false, offset };\n};\n\nconst enclosingTagNodes = (node: TextNode): ElementNode[] => {\n const nodes: ElementNode[] = [];\n let current: ParentNode | null = node.parent;\n\n while (current !== null && current.kind === ELEMENT_KIND) {\n if (current.contentKind === \"tag\") {\n nodes.push(current);\n }\n\n current = current.parent;\n }\n\n return nodes;\n};\n\nconst textRestrictionError = (text: string): Error =>\n new Error(\n \"Text strings must be rendered within a <GtkLabel> or <GtkTextBuffer> element; \" +\n `received ${JSON.stringify(text)}`,\n );\n\nconst canAcceptText = (host: ElementNode): boolean =>\n host.contentKind !== null && TEXT_CONTENT_KINDS.has(host.contentKind);\n\nconst isRootHost = (node: ElementNode): boolean => node.contentKind === \"label\" || node.contentKind === \"buffer\";\n\nconst mapElementParent = <T>(parent: ParentNode | null, map: (element: ElementNode) => T): T | null =>\n parent !== null && parent.kind === ELEMENT_KIND ? map(parent) : null;\n\nconst parentElement = (node: ElementNode): ElementNode | null => mapElementParent(node.parent, (parent) => parent);\n\nconst getRootHost = (node: ElementNode): ElementNode | null => {\n let current: ElementNode | null = node;\n\n while (current !== null) {\n if (isRootHost(current)) {\n return current;\n }\n\n current = parentElement(current);\n }\n\n return null;\n};\n\nconst markTextDirty = (host: ElementNode): void => {\n const root = getRootHost(host);\n\n if (root !== null) {\n dirtyHosts.add(root);\n }\n};\n\nconst enclosingHost = (node: TextNode): ElementNode | null => mapElementParent(node.parent, getRootHost);\n\nconst addContent = (host: ElementNode, child: ContentChild, before: ContentChild | null): void => {\n const content = host.content;\n const existing = content.indexOf(child);\n\n if (existing !== -1) {\n content.splice(existing, 1);\n }\n\n content.splice(\n indexBeforeOrEnd(content, before, (item, target) => item === target),\n 0,\n child,\n );\n\n child.parent = host;\n markTextDirty(host);\n};\n\nconst removeContent = (host: ElementNode, child: ContentChild): void => {\n const index = host.content.indexOf(child);\n\n if (index !== -1) {\n host.content.splice(index, 1);\n }\n\n markTextDirty(host);\n};\n\nconst validateContentMix = (node: ElementNode, props: Props): void => {\n if (node.content.length === 0) {\n return;\n }\n\n const violated = CONTENT_MIX_RULES.find(\n (rule) => rule.kind === node.contentKind && props[rule.prop] !== undefined,\n );\n\n if (violated !== undefined) {\n throw new Error(violated.message);\n }\n};\n\nconst detachTag = (tag: Gtk.TextTag, table: Gtk.TextTagTable, name: string | null): void => {\n const previous = tagTables.get(tag);\n\n if (previous !== undefined && previous !== table) {\n previous.remove(tag);\n }\n\n if (name === null) {\n return;\n }\n\n const existing = table.lookup(name);\n\n if (existing !== null && existing !== tag) {\n table.remove(existing);\n }\n};\n\nconst ensureTag = (table: Gtk.TextTagTable, node: ElementNode): void => {\n const tag = node.object;\n\n if (!(tag instanceof Gtk.TextTag) || tagTables.get(tag) === table) {\n return;\n }\n\n const name = typeof node.props.name === \"string\" ? node.props.name : null;\n detachTag(tag, table, name);\n\n if (name === null || table.lookup(name) !== tag) {\n table.add(tag);\n }\n\n tagTables.set(tag, table);\n};\n\nconst insertTag = (build: BufferBuild, node: ElementNode): void => {\n const start = build.buffer.getCharCount();\n insertContent(build, node.content);\n const tag = node.object;\n\n if (tag instanceof Gtk.TextTag) {\n ensureTag(build.buffer.getTagTable(), node);\n build.buffer.applyTag(tag, build.buffer.getIterAtOffset(start), build.buffer.getEndIter());\n }\n};\n\nconst contentPaintable = (node: ElementNode): Gdk.Paintable | null => {\n const value = node.props[PAINTABLE_PROP];\n\n return value instanceof Gdk.Paintable ? value : null;\n};\n\nconst isContentPaintableProp = (node: ElementNode, name: string): boolean =>\n name === PAINTABLE_PROP && node.contentKind === \"anchor\";\n\nconst insertAnchor = (build: BufferBuild, node: ElementNode): void => {\n const paintable = contentPaintable(node);\n\n if (paintable !== null) {\n build.buffer.insertPaintable(build.buffer.getEndIter(), paintable);\n\n return;\n }\n\n const anchor = node.object;\n\n if (!(anchor instanceof Gtk.TextChildAnchor)) {\n return;\n }\n\n build.buffer.insertChildAnchor(build.buffer.getEndIter(), anchor);\n const child = node.content[0];\n\n if (build.view !== null && child?.kind === ELEMENT_KIND && child.object instanceof Gtk.Widget) {\n build.view.addChildAtAnchor(child.object, anchor);\n }\n};\n\nconst insertElement = (build: BufferBuild, node: ElementNode): void => {\n if (node.contentKind === \"tag\") {\n insertTag(build, node);\n } else if (node.contentKind === \"anchor\") {\n insertAnchor(build, node);\n } else {\n build.marks.push({ node, offset: build.buffer.getCharCount() });\n }\n};\n\nconst insertContent = (build: BufferBuild, nodes: ContentChild[]): void => {\n for (const child of nodes) {\n if (child.kind === TEXT_KIND) {\n build.buffer.insert(build.buffer.getEndIter(), child.text, -1);\n } else {\n insertElement(build, child);\n }\n }\n};\n\nconst placeMark = (buffer: Gtk.TextBuffer, node: ElementNode, offset: number): void => {\n const mark = node.object;\n\n if (!(mark instanceof Gtk.TextMark)) {\n return;\n }\n\n const iter = buffer.getIterAtOffset(offset);\n\n if (mark.getBuffer() === null) {\n buffer.addMark(mark, iter);\n } else {\n buffer.moveMark(mark, iter);\n }\n};\n\nconst rebuildBuffer = (node: ElementNode): void => {\n const buffer = node.object;\n\n if (node.props.text !== undefined || !(buffer instanceof Gtk.TextBuffer)) {\n return;\n }\n\n applyWrite(() => {\n buffer.setText(\"\", -1);\n const build: BufferBuild = { buffer, view: node.bufferView, marks: [] };\n insertContent(build, node.content);\n\n for (const mark of build.marks) {\n placeMark(buffer, mark.node, mark.offset);\n }\n });\n};\n\nconst rebuildLabel = (node: ElementNode): void => {\n if (node.props.label !== undefined) {\n return;\n }\n\n const label = node.object;\n\n if (!(label instanceof Gtk.Label)) {\n return;\n }\n\n label.setLabel(node.content.map((child) => (child.kind === TEXT_KIND ? child.text : \"\")).join(\"\"));\n};\n\nconst flushTextHosts = (): void => {\n drain(dirtyHosts, (host) => {\n if (host.contentKind === \"label\") {\n rebuildLabel(host);\n } else if (host.contentKind === \"buffer\") {\n rebuildBuffer(host);\n }\n });\n};\n\nconst applyEnclosingTags = (\n buffer: Gtk.TextBuffer,\n node: TextNode,\n startIter: Gtk.TextIter,\n endIter: Gtk.TextIter,\n): void => {\n for (const tagNode of enclosingTagNodes(node)) {\n ensureTag(buffer.getTagTable(), tagNode);\n\n if (tagNode.object instanceof Gtk.TextTag) {\n buffer.applyTag(tagNode.object, startIter, endIter);\n }\n }\n};\n\nconst didUpdateTextSurgically = (host: ElementNode, node: TextNode, oldText: string, newText: string): boolean => {\n const buffer = host.object;\n\n if (host.contentKind !== \"buffer\" || !(buffer instanceof Gtk.TextBuffer)) {\n return false;\n }\n\n const located = getOffset(host.content, node, 0);\n\n if (!located.found) {\n return false;\n }\n\n const start = located.offset;\n\n applyWrite(() => {\n buffer.delete(buffer.getIterAtOffset(start), buffer.getIterAtOffset(start + charLength(oldText)));\n buffer.insert(buffer.getIterAtOffset(start), newText, -1);\n });\n\n const startIter = buffer.getIterAtOffset(start);\n const endIter = buffer.getIterAtOffset(start + charLength(newText));\n applyEnclosingTags(buffer, node, startIter, endIter);\n\n return true;\n};\n\nexport {\n TEXT_PROP,\n textRestrictionError,\n bufferText,\n hasSameText,\n canAcceptText,\n isContentPaintableProp,\n markTextDirty,\n enclosingHost,\n addContent,\n removeContent,\n validateContentMix,\n flushTextHosts,\n didUpdateTextSurgically,\n};\n"]}
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/reconciler/text.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as GObject from \"@gtkx/gi/gobject\";\nimport * as Gdk from \"@gtkx/gi/gdk\";\nimport * as Gtk from \"@gtkx/gi/gtk\";\nimport { drain, indexBeforeOrEnd } from \"@gtkx/utils\";\nimport type { ContentChild, ContentKind, ElementNode, ParentNode, TextNode } from \"./node.js\";\nimport type { Props } from \"./registry.js\";\nimport { ELEMENT_KIND, TEXT_KIND } from \"./node.js\";\nimport { applyWrite } from \"./signals.js\";\n\ntype OffsetResult = { wasFound: boolean; offset: number };\n\ntype BufferBuild = {\n buffer: Gtk.TextBuffer;\n view: Gtk.TextView | null;\n marks: { node: ElementNode; offset: number }[];\n};\n\nconst dirtyHosts: Set<ElementNode> = new Set();\nconst tagTables: WeakMap<object, Gtk.TextTagTable> = new WeakMap();\nconst TEXT_CONTENT_KINDS: Set<string> = new Set([\"label\", \"buffer\", \"tag\"]);\nconst PAINTABLE_PROP = \"paintable\";\nconst TEXT_PROP = \"text\";\n\nconst CONTENT_MIX_RULES: { kind: ContentKind; prop: string; message: string }[] = [\n {\n kind: \"label\",\n prop: \"label\",\n message: \"<GtkLabel> cannot mix a `label` prop with text children; use one or the other\",\n },\n {\n kind: \"buffer\",\n prop: \"text\",\n message: \"<GtkTextBuffer> cannot mix a `text` prop with content children; use one or the other\",\n },\n {\n kind: \"anchor\",\n prop: PAINTABLE_PROP,\n message: \"<GtkTextChildAnchor> cannot mix a `paintable` prop with a child widget; use one or the other\",\n },\n];\n\nconst charLength = (text: string): number => text[Symbol.iterator]().toArray().length;\n\nconst bufferText = (buffer: Gtk.TextBuffer): string =>\n buffer.getText(buffer.getStartIter(), buffer.getEndIter(), false);\n\nconst currentText = (object: GObject.Object): string | null => {\n if (object instanceof Gtk.TextBuffer) {\n return bufferText(object);\n }\n\n if (object instanceof Gtk.Editable || object instanceof Gtk.EntryBuffer) {\n return object.getText();\n }\n\n return null;\n};\n\nconst hasSameText = (object: GObject.Object, prop: string, value: unknown): boolean =>\n prop === TEXT_PROP && typeof value === \"string\" && currentText(object) === value;\n\nconst contentTextLength = (node: ContentChild): number => {\n if (node.kind === TEXT_KIND) {\n return charLength(node.text);\n }\n\n if (node.contentKind === \"tag\") {\n return node.content.reduce((sum, child) => sum + contentTextLength(child), 0);\n }\n\n return node.contentKind === \"anchor\" ? 1 : 0;\n};\n\nconst isTagElement = (node: ContentChild): node is ElementNode =>\n node.kind === ELEMENT_KIND && node.contentKind === \"tag\";\n\nconst stepOffset = (node: ContentChild, target: TextNode, offset: number): OffsetResult => {\n if (node === target) {\n return { wasFound: true, offset };\n }\n\n if (isTagElement(node)) {\n return getOffset(node.content, target, offset);\n }\n\n return { wasFound: false, offset: offset + contentTextLength(node) };\n};\n\nconst getOffset = (nodes: ContentChild[], target: TextNode, start: number): OffsetResult => {\n let offset = start;\n\n for (const node of nodes) {\n const step = stepOffset(node, target, offset);\n\n if (step.wasFound) {\n return step;\n }\n\n offset = step.offset;\n }\n\n return { wasFound: false, offset };\n};\n\nconst enclosingTagNodes = (node: TextNode): ElementNode[] => {\n const nodes: ElementNode[] = [];\n let current: ParentNode | null = node.parent;\n\n while (current !== null && current.kind === ELEMENT_KIND) {\n if (current.contentKind === \"tag\") {\n nodes.push(current);\n }\n\n current = current.parent;\n }\n\n return nodes;\n};\n\nconst textRestrictionError = (text: string): Error =>\n new Error(\n \"Text strings must be rendered within a <GtkLabel> or <GtkTextBuffer> element; \" +\n `received ${JSON.stringify(text)}`,\n );\n\nconst canAcceptText = (host: ElementNode): boolean =>\n host.contentKind !== null && TEXT_CONTENT_KINDS.has(host.contentKind);\n\nconst isRootHost = (node: ElementNode): boolean => node.contentKind === \"label\" || node.contentKind === \"buffer\";\n\nconst mapElementParent = <T>(parent: ParentNode | null, map: (element: ElementNode) => T): T | null =>\n parent !== null && parent.kind === ELEMENT_KIND ? map(parent) : null;\n\nconst parentElement = (node: ElementNode): ElementNode | null => mapElementParent(node.parent, (parent) => parent);\n\nconst getRootHost = (node: ElementNode): ElementNode | null => {\n let current: ElementNode | null = node;\n\n while (current !== null) {\n if (isRootHost(current)) {\n return current;\n }\n\n current = parentElement(current);\n }\n\n return null;\n};\n\nconst markTextDirty = (host: ElementNode): void => {\n const root = getRootHost(host);\n\n if (root !== null) {\n dirtyHosts.add(root);\n }\n};\n\nconst enclosingHost = (node: TextNode): ElementNode | null => mapElementParent(node.parent, getRootHost);\n\nconst addContent = (host: ElementNode, child: ContentChild, before: ContentChild | null): void => {\n const content = host.content;\n const existing = content.indexOf(child);\n\n if (existing !== -1) {\n content.splice(existing, 1);\n }\n\n content.splice(\n indexBeforeOrEnd(content, before, (item, target) => item === target),\n 0,\n child,\n );\n\n child.parent = host;\n markTextDirty(host);\n};\n\nconst removeContent = (host: ElementNode, child: ContentChild): void => {\n const index = host.content.indexOf(child);\n\n if (index !== -1) {\n host.content.splice(index, 1);\n }\n\n markTextDirty(host);\n};\n\nconst validateContentMix = (node: ElementNode, props: Props): void => {\n if (node.content.length === 0) {\n return;\n }\n\n const violated = CONTENT_MIX_RULES.find(\n (rule) => rule.kind === node.contentKind && props[rule.prop] !== undefined,\n );\n\n if (violated !== undefined) {\n throw new Error(violated.message);\n }\n};\n\nconst detachTag = (tag: Gtk.TextTag, table: Gtk.TextTagTable, name: string | null): void => {\n const previous = tagTables.get(tag);\n\n if (previous !== undefined && previous !== table) {\n previous.remove(tag);\n }\n\n if (name === null) {\n return;\n }\n\n const existing = table.lookup(name);\n\n if (existing !== null && existing !== tag) {\n table.remove(existing);\n }\n};\n\nconst ensureTag = (table: Gtk.TextTagTable, node: ElementNode): void => {\n const tag = node.object;\n\n if (!(tag instanceof Gtk.TextTag) || tagTables.get(tag) === table) {\n return;\n }\n\n const name = typeof node.props.name === \"string\" ? node.props.name : null;\n detachTag(tag, table, name);\n\n if (name === null || table.lookup(name) !== tag) {\n table.add(tag);\n }\n\n tagTables.set(tag, table);\n};\n\nconst insertTag = (build: BufferBuild, node: ElementNode): void => {\n const start = build.buffer.getCharCount();\n insertContent(build, node.content);\n const tag = node.object;\n\n if (tag instanceof Gtk.TextTag) {\n ensureTag(build.buffer.getTagTable(), node);\n build.buffer.applyTag(tag, build.buffer.getIterAtOffset(start), build.buffer.getEndIter());\n }\n};\n\nconst contentPaintable = (node: ElementNode): Gdk.Paintable | null => {\n const value = node.props[PAINTABLE_PROP];\n\n return value instanceof Gdk.Paintable ? value : null;\n};\n\nconst isContentPaintableProp = (node: ElementNode, name: string): boolean =>\n name === PAINTABLE_PROP && node.contentKind === \"anchor\";\n\nconst insertAnchor = (build: BufferBuild, node: ElementNode): void => {\n const paintable = contentPaintable(node);\n\n if (paintable !== null) {\n build.buffer.insertPaintable(build.buffer.getEndIter(), paintable);\n\n return;\n }\n\n const anchor = node.object;\n\n if (!(anchor instanceof Gtk.TextChildAnchor)) {\n return;\n }\n\n build.buffer.insertChildAnchor(build.buffer.getEndIter(), anchor);\n const child = node.content[0];\n\n if (build.view !== null && child?.kind === ELEMENT_KIND && child.object instanceof Gtk.Widget) {\n build.view.addChildAtAnchor(child.object, anchor);\n }\n};\n\nconst insertElement = (build: BufferBuild, node: ElementNode): void => {\n if (node.contentKind === \"tag\") {\n insertTag(build, node);\n } else if (node.contentKind === \"anchor\") {\n insertAnchor(build, node);\n } else {\n build.marks.push({ node, offset: build.buffer.getCharCount() });\n }\n};\n\nconst insertContent = (build: BufferBuild, nodes: ContentChild[]): void => {\n for (const child of nodes) {\n if (child.kind === TEXT_KIND) {\n build.buffer.insert(build.buffer.getEndIter(), child.text, -1);\n } else {\n insertElement(build, child);\n }\n }\n};\n\nconst placeMark = (buffer: Gtk.TextBuffer, node: ElementNode, offset: number): void => {\n const mark = node.object;\n\n if (!(mark instanceof Gtk.TextMark)) {\n return;\n }\n\n const iter = buffer.getIterAtOffset(offset);\n\n if (mark.getBuffer() === null) {\n buffer.addMark(mark, iter);\n } else {\n buffer.moveMark(mark, iter);\n }\n};\n\nconst rebuildBuffer = (node: ElementNode): void => {\n const buffer = node.object;\n\n if (node.props.text !== undefined || !(buffer instanceof Gtk.TextBuffer)) {\n return;\n }\n\n applyWrite(() => {\n buffer.setText(\"\", -1);\n const build: BufferBuild = { buffer, view: node.bufferView, marks: [] };\n insertContent(build, node.content);\n\n for (const mark of build.marks) {\n placeMark(buffer, mark.node, mark.offset);\n }\n });\n};\n\nconst rebuildLabel = (node: ElementNode): void => {\n if (node.props.label !== undefined) {\n return;\n }\n\n const label = node.object;\n\n if (!(label instanceof Gtk.Label)) {\n return;\n }\n\n label.setLabel(node.content.map((child) => (child.kind === TEXT_KIND ? child.text : \"\")).join(\"\"));\n};\n\nconst flushTextHosts = (): void => {\n drain(dirtyHosts, (host) => {\n if (host.contentKind === \"label\") {\n rebuildLabel(host);\n } else if (host.contentKind === \"buffer\") {\n rebuildBuffer(host);\n }\n });\n};\n\nconst applyEnclosingTags = (\n buffer: Gtk.TextBuffer,\n node: TextNode,\n startIter: Gtk.TextIter,\n endIter: Gtk.TextIter,\n): void => {\n for (const tagNode of enclosingTagNodes(node)) {\n ensureTag(buffer.getTagTable(), tagNode);\n\n if (tagNode.object instanceof Gtk.TextTag) {\n buffer.applyTag(tagNode.object, startIter, endIter);\n }\n }\n};\n\nconst didUpdateTextSurgically = (host: ElementNode, node: TextNode, oldText: string, newText: string): boolean => {\n const buffer = host.object;\n\n if (host.contentKind !== \"buffer\" || !(buffer instanceof Gtk.TextBuffer)) {\n return false;\n }\n\n const located = getOffset(host.content, node, 0);\n\n if (!located.wasFound) {\n return false;\n }\n\n const start = located.offset;\n\n applyWrite(() => {\n buffer.delete(buffer.getIterAtOffset(start), buffer.getIterAtOffset(start + charLength(oldText)));\n buffer.insert(buffer.getIterAtOffset(start), newText, -1);\n });\n\n const startIter = buffer.getIterAtOffset(start);\n const endIter = buffer.getIterAtOffset(start + charLength(newText));\n applyEnclosingTags(buffer, node, startIter, endIter);\n\n return true;\n};\n\nexport {\n TEXT_PROP,\n textRestrictionError,\n bufferText,\n hasSameText,\n canAcceptText,\n isContentPaintableProp,\n markTextDirty,\n enclosingHost,\n addContent,\n removeContent,\n validateContentMix,\n flushTextHosts,\n didUpdateTextSurgically,\n};\n"]}
@@ -3,55 +3,103 @@ import type { Props } from "../reconciler/registry.js";
3
3
  /**
4
4
  * Accessibility props available on every widget. Each member maps to a GTK4 accessible attribute
5
5
  * (a `Gtk.AccessibleProperty`, `Gtk.AccessibleState`, or `Gtk.AccessibleRelation`) and is applied
6
- * to the widget's accessible interface; setting a member to `undefined` resets that attribute to its default.
6
+ * to the widget's accessible interface. Setting a member to `null` or `undefined`, or dropping it from the
7
+ * props, resets that attribute to its default.
7
8
  */
8
9
  type AccessibleProps = {
10
+ /** How the widget completes the text being typed into it. */
9
11
  accessibleAutocomplete?: Gtk.AccessibleAutocomplete | null | undefined;
12
+ /** Longer description announced after the label. */
10
13
  accessibleDescription?: string | null | undefined;
14
+ /** Whether activating the widget opens a popup. */
11
15
  accessibleHasPopup?: boolean | null | undefined;
16
+ /** Keyboard shortcuts that activate the widget. */
12
17
  accessibleKeyShortcuts?: string | null | undefined;
18
+ /** Short name announced for the widget. */
13
19
  accessibleLabel?: string | null | undefined;
20
+ /** Depth of the widget within a hierarchy of headings, list items, or tree rows. */
14
21
  accessibleLevel?: number | null | undefined;
22
+ /** Whether the widget blocks interaction with everything behind it. */
15
23
  accessibleModal?: boolean | null | undefined;
24
+ /** Whether the text input accepts more than one line. */
16
25
  accessibleMultiLine?: boolean | null | undefined;
26
+ /** Whether more than one of the widget's items can be selected at a time. */
17
27
  accessibleMultiSelectable?: boolean | null | undefined;
28
+ /** Whether the widget arranges its items horizontally or vertically. */
18
29
  accessibleOrientation?: Gtk.Orientation | null | undefined;
30
+ /** Hint announced while the input is empty. */
19
31
  accessiblePlaceholder?: string | null | undefined;
32
+ /** Whether the value can be read but not changed. */
20
33
  accessibleReadOnly?: boolean | null | undefined;
34
+ /** Whether a value has to be supplied before the form can be submitted. */
21
35
  accessibleRequired?: boolean | null | undefined;
36
+ /** Wording that replaces the default announcement of the widget's role. */
22
37
  accessibleRoleDescription?: string | null | undefined;
38
+ /** Direction the widget's items are sorted in. */
23
39
  accessibleSort?: Gtk.AccessibleSort | null | undefined;
40
+ /** Upper bound of the widget's value range. */
24
41
  accessibleValueMax?: number | null | undefined;
42
+ /** Lower bound of the widget's value range. */
25
43
  accessibleValueMin?: number | null | undefined;
44
+ /** Current value within the widget's range. */
26
45
  accessibleValueNow?: number | null | undefined;
46
+ /** Wording announced in place of the numeric value. */
27
47
  accessibleValueText?: string | null | undefined;
48
+ /** Help text describing how to use the widget. */
28
49
  accessibleHelpText?: string | null | undefined;
50
+ /** Whether the widget is still loading and its content may yet change. */
29
51
  accessibleBusy?: boolean | null | undefined;
52
+ /** Checked state of a check button or menu item, which may be mixed. */
30
53
  accessibleChecked?: Gtk.AccessibleTristate | null | undefined;
54
+ /** Whether the widget is visible but cannot be edited or operated. */
31
55
  accessibleDisabled?: boolean | null | undefined;
56
+ /** Whether the content the widget discloses is showing. */
32
57
  accessibleExpanded?: boolean | null | undefined;
58
+ /** Whether the widget is kept out of the accessibility tree. */
33
59
  accessibleHidden?: boolean | null | undefined;
60
+ /** Whether the entered value fails validation, and in what way. */
34
61
  accessibleInvalid?: Gtk.AccessibleInvalidState | null | undefined;
62
+ /** Pressed state of a toggle button, which may be mixed. */
35
63
  accessiblePressed?: Gtk.AccessibleTristate | null | undefined;
64
+ /** Whether the widget is selected within its container. */
36
65
  accessibleSelected?: boolean | null | undefined;
66
+ /** Whether the link has already been followed. */
37
67
  accessibleVisited?: boolean | null | undefined;
38
- accessibleActiveDescendant?: Gtk.Widget | null | undefined;
68
+ /** Descendant that holds the focus while the widget itself keeps it. */
69
+ accessibleActiveDescendant?: Gtk.Accessible | null | undefined;
70
+ /** Total number of columns in the table, including any that are not rendered. */
39
71
  accessibleColCount?: number | null | undefined;
72
+ /** One-based column position of the cell within its table. */
40
73
  accessibleColIndex?: number | null | undefined;
74
+ /** Wording announced in place of the numeric column position. */
41
75
  accessibleColIndexText?: string | null | undefined;
76
+ /** Number of columns the cell spans. */
42
77
  accessibleColSpan?: number | null | undefined;
43
- accessibleControls?: Gtk.Widget[] | null | undefined;
44
- accessibleDescribedBy?: Gtk.Widget[] | null | undefined;
45
- accessibleDetails?: Gtk.Widget[] | null | undefined;
46
- accessibleErrorMessage?: Gtk.Widget[] | null | undefined;
47
- accessibleFlowTo?: Gtk.Widget[] | null | undefined;
48
- accessibleLabelledBy?: Gtk.Widget[] | null | undefined;
49
- accessibleOwns?: Gtk.Widget[] | null | undefined;
78
+ /** Widgets whose content or presence this widget controls. */
79
+ accessibleControls?: Gtk.Accessible[] | null | undefined;
80
+ /** Widgets that describe this one. */
81
+ accessibleDescribedBy?: Gtk.Accessible[] | null | undefined;
82
+ /** Widgets holding extended detail about this one. */
83
+ accessibleDetails?: Gtk.Accessible[] | null | undefined;
84
+ /** Widgets holding the message that explains why the value is invalid. */
85
+ accessibleErrorMessage?: Gtk.Accessible[] | null | undefined;
86
+ /** Widgets to read next, overriding the default reading order. */
87
+ accessibleFlowTo?: Gtk.Accessible[] | null | undefined;
88
+ /** Widgets that label this one. */
89
+ accessibleLabelledBy?: Gtk.Accessible[] | null | undefined;
90
+ /** Widgets this one owns that the widget hierarchy does not already imply. */
91
+ accessibleOwns?: Gtk.Accessible[] | null | undefined;
92
+ /** One-based position of the widget within its set. */
50
93
  accessiblePosInSet?: number | null | undefined;
94
+ /** Total number of rows in the table, including any that are not rendered. */
51
95
  accessibleRowCount?: number | null | undefined;
96
+ /** One-based row position of the cell within its table. */
52
97
  accessibleRowIndex?: number | null | undefined;
98
+ /** Wording announced in place of the numeric row position. */
53
99
  accessibleRowIndexText?: string | null | undefined;
100
+ /** Number of rows the cell spans. */
54
101
  accessibleRowSpan?: number | null | undefined;
102
+ /** Total number of items in the set the widget belongs to. */
55
103
  accessibleSetSize?: number | null | undefined;
56
104
  };
57
105
  declare const isAccessibleProp: (name: string) => name is keyof AccessibleProps;
@@ -1 +1 @@
1
- {"version":3,"file":"accessible-props.d.ts","sourceRoot":"","sources":["../../src/utils/accessible-props.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accessible-props.d.ts","sourceRoot":"","sources":["../../src/utils/accessible-props.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import * as GObject from "@gtkx/gi/gobject";
2
2
  import * as Gtk from "@gtkx/gi/gtk";
3
- import { deleteAccessibleMetadata, setAccessibleMetadata } from "./accessible-metadata.js";
4
3
  const ACCESSIBLE_PROP_MAP = {
5
4
  accessibleAutocomplete: buildProperty(Gtk.AccessibleProperty.AUTOCOMPLETE, "int"),
6
5
  accessibleDescription: buildProperty(Gtk.AccessibleProperty.DESCRIPTION, "string"),
@@ -25,12 +24,12 @@ const ACCESSIBLE_PROP_MAP = {
25
24
  accessibleBusy: buildState(Gtk.AccessibleState.BUSY, "boolean"),
26
25
  accessibleChecked: buildState(Gtk.AccessibleState.CHECKED, "int"),
27
26
  accessibleDisabled: buildState(Gtk.AccessibleState.DISABLED, "boolean"),
28
- accessibleExpanded: buildState(Gtk.AccessibleState.EXPANDED, "int"),
27
+ accessibleExpanded: buildState(Gtk.AccessibleState.EXPANDED, "optionalBoolean"),
29
28
  accessibleHidden: buildState(Gtk.AccessibleState.HIDDEN, "boolean"),
30
29
  accessibleInvalid: buildState(Gtk.AccessibleState.INVALID, "int"),
31
30
  accessiblePressed: buildState(Gtk.AccessibleState.PRESSED, "int"),
32
- accessibleSelected: buildState(Gtk.AccessibleState.SELECTED, "int"),
33
- accessibleVisited: buildState(Gtk.AccessibleState.VISITED, "int"),
31
+ accessibleSelected: buildState(Gtk.AccessibleState.SELECTED, "optionalBoolean"),
32
+ accessibleVisited: buildState(Gtk.AccessibleState.VISITED, "optionalBoolean"),
34
33
  accessibleActiveDescendant: buildRelation(Gtk.AccessibleRelation.ACTIVE_DESCENDANT, "object"),
35
34
  accessibleColCount: buildRelation(Gtk.AccessibleRelation.COL_COUNT, "int"),
36
35
  accessibleColIndex: buildRelation(Gtk.AccessibleRelation.COL_INDEX, "int"),
@@ -83,6 +82,11 @@ const buildValue = (descriptor, jsValue) => {
83
82
  v.setBoolean(jsValue);
84
83
  });
85
84
  }
85
+ case "optionalBoolean": {
86
+ return GObject.buildValue(GObject.TYPE_INT, (v) => {
87
+ v.setInt(jsValue === true ? 1 : 0);
88
+ });
89
+ }
86
90
  case "int": {
87
91
  return GObject.buildValue(GObject.TYPE_INT, (v) => {
88
92
  v.setInt(jsValue);
@@ -143,22 +147,17 @@ function resetDescriptor(widget, descriptor) {
143
147
  const applyChangedProp = (widget, name, newValue) => {
144
148
  if (newValue == null) {
145
149
  resetDescriptor(widget, ACCESSIBLE_PROP_MAP[name]);
146
- deleteAccessibleMetadata(widget, name);
147
150
  }
148
151
  else {
149
152
  applyDescriptor(widget, ACCESSIBLE_PROP_MAP[name], newValue);
150
- setAccessibleMetadata(widget, name, newValue);
151
153
  }
152
154
  };
153
- const applyChangedProps = (widget, oldProps, newProps) => {
155
+ const applyChangedProps = (widget, newProps) => {
154
156
  for (const name in newProps) {
155
157
  if (!isAccessibleProp(name)) {
156
158
  continue;
157
159
  }
158
- const newValue = newProps[name];
159
- if (oldProps?.[name] !== newValue) {
160
- applyChangedProp(widget, name, newValue);
161
- }
160
+ applyChangedProp(widget, name, newProps[name]);
162
161
  }
163
162
  };
164
163
  const isRemovedAccessibleProp = (name, oldProps, newProps) => !Object.hasOwn(newProps, name) && isAccessibleProp(name) && oldProps[name] !== undefined;
@@ -168,11 +167,10 @@ const resetRemovedProps = (widget, oldProps, newProps) => {
168
167
  continue;
169
168
  }
170
169
  resetDescriptor(widget, ACCESSIBLE_PROP_MAP[name]);
171
- deleteAccessibleMetadata(widget, name);
172
170
  }
173
171
  };
174
172
  const applyAccessibleProps = (widget, oldProps, newProps) => {
175
- applyChangedProps(widget, oldProps, newProps);
173
+ applyChangedProps(widget, newProps);
176
174
  if (oldProps) {
177
175
  resetRemovedProps(widget, oldProps, newProps);
178
176
  }
@@ -1 +1 @@
1
- {"version":3,"file":"accessible-props.js","sourceRoot":"","sources":["../../src/utils/accessible-props.ts"],"names":[],"mappings":"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","sourcesContent":["import * as GObject from \"@gtkx/gi/gobject\";\nimport * as Gtk from \"@gtkx/gi/gtk\";\nimport type { Props } from \"../reconciler/registry.js\";\nimport { deleteAccessibleMetadata, setAccessibleMetadata } from \"./accessible-metadata.js\";\n\n/**\n * Accessibility props available on every widget. Each member maps to a GTK4 accessible attribute\n * (a `Gtk.AccessibleProperty`, `Gtk.AccessibleState`, or `Gtk.AccessibleRelation`) and is applied\n * to the widget's accessible interface; setting a member to `undefined` resets that attribute to its default.\n */\ntype AccessibleProps = {\n accessibleAutocomplete?: Gtk.AccessibleAutocomplete | null | undefined;\n accessibleDescription?: string | null | undefined;\n accessibleHasPopup?: boolean | null | undefined;\n accessibleKeyShortcuts?: string | null | undefined;\n accessibleLabel?: string | null | undefined;\n accessibleLevel?: number | null | undefined;\n accessibleModal?: boolean | null | undefined;\n accessibleMultiLine?: boolean | null | undefined;\n accessibleMultiSelectable?: boolean | null | undefined;\n accessibleOrientation?: Gtk.Orientation | null | undefined;\n accessiblePlaceholder?: string | null | undefined;\n accessibleReadOnly?: boolean | null | undefined;\n accessibleRequired?: boolean | null | undefined;\n accessibleRoleDescription?: string | null | undefined;\n accessibleSort?: Gtk.AccessibleSort | null | undefined;\n accessibleValueMax?: number | null | undefined;\n accessibleValueMin?: number | null | undefined;\n accessibleValueNow?: number | null | undefined;\n accessibleValueText?: string | null | undefined;\n accessibleHelpText?: string | null | undefined;\n accessibleBusy?: boolean | null | undefined;\n accessibleChecked?: Gtk.AccessibleTristate | null | undefined;\n accessibleDisabled?: boolean | null | undefined;\n accessibleExpanded?: boolean | null | undefined;\n accessibleHidden?: boolean | null | undefined;\n accessibleInvalid?: Gtk.AccessibleInvalidState | null | undefined;\n accessiblePressed?: Gtk.AccessibleTristate | null | undefined;\n accessibleSelected?: boolean | null | undefined;\n accessibleVisited?: boolean | null | undefined;\n accessibleActiveDescendant?: Gtk.Widget | null | undefined;\n accessibleColCount?: number | null | undefined;\n accessibleColIndex?: number | null | undefined;\n accessibleColIndexText?: string | null | undefined;\n accessibleColSpan?: number | null | undefined;\n accessibleControls?: Gtk.Widget[] | null | undefined;\n accessibleDescribedBy?: Gtk.Widget[] | null | undefined;\n accessibleDetails?: Gtk.Widget[] | null | undefined;\n accessibleErrorMessage?: Gtk.Widget[] | null | undefined;\n accessibleFlowTo?: Gtk.Widget[] | null | undefined;\n accessibleLabelledBy?: Gtk.Widget[] | null | undefined;\n accessibleOwns?: Gtk.Widget[] | null | undefined;\n accessiblePosInSet?: number | null | undefined;\n accessibleRowCount?: number | null | undefined;\n accessibleRowIndex?: number | null | undefined;\n accessibleRowIndexText?: string | null | undefined;\n accessibleRowSpan?: number | null | undefined;\n accessibleSetSize?: number | null | undefined;\n};\n\ntype AccessibleValueType = \"string\" | \"boolean\" | \"int\" | \"double\" | \"object\" | \"list\";\n\ntype AccessiblePropertyDescriptor = {\n kind: \"property\";\n property: Gtk.AccessibleProperty;\n type: AccessibleValueType;\n};\n\ntype AccessibleStateDescriptor = {\n kind: \"state\";\n state: Gtk.AccessibleState;\n type: AccessibleValueType;\n};\n\ntype AccessibleRelationDescriptor = {\n kind: \"relation\";\n relation: Gtk.AccessibleRelation;\n type: AccessibleValueType;\n};\n\ntype AccessibleDescriptor = AccessiblePropertyDescriptor | AccessibleStateDescriptor | AccessibleRelationDescriptor;\n\nconst ACCESSIBLE_PROP_MAP: Record<keyof AccessibleProps, AccessibleDescriptor> = {\n accessibleAutocomplete: buildProperty(Gtk.AccessibleProperty.AUTOCOMPLETE, \"int\"),\n accessibleDescription: buildProperty(Gtk.AccessibleProperty.DESCRIPTION, \"string\"),\n accessibleHasPopup: buildProperty(Gtk.AccessibleProperty.HAS_POPUP, \"boolean\"),\n accessibleKeyShortcuts: buildProperty(Gtk.AccessibleProperty.KEY_SHORTCUTS, \"string\"),\n accessibleLabel: buildProperty(Gtk.AccessibleProperty.LABEL, \"string\"),\n accessibleLevel: buildProperty(Gtk.AccessibleProperty.LEVEL, \"int\"),\n accessibleModal: buildProperty(Gtk.AccessibleProperty.MODAL, \"boolean\"),\n accessibleMultiLine: buildProperty(Gtk.AccessibleProperty.MULTI_LINE, \"boolean\"),\n accessibleMultiSelectable: buildProperty(Gtk.AccessibleProperty.MULTI_SELECTABLE, \"boolean\"),\n accessibleOrientation: buildProperty(Gtk.AccessibleProperty.ORIENTATION, \"int\"),\n accessiblePlaceholder: buildProperty(Gtk.AccessibleProperty.PLACEHOLDER, \"string\"),\n accessibleReadOnly: buildProperty(Gtk.AccessibleProperty.READ_ONLY, \"boolean\"),\n accessibleRequired: buildProperty(Gtk.AccessibleProperty.REQUIRED, \"boolean\"),\n accessibleRoleDescription: buildProperty(Gtk.AccessibleProperty.ROLE_DESCRIPTION, \"string\"),\n accessibleSort: buildProperty(Gtk.AccessibleProperty.SORT, \"int\"),\n accessibleValueMax: buildProperty(Gtk.AccessibleProperty.VALUE_MAX, \"double\"),\n accessibleValueMin: buildProperty(Gtk.AccessibleProperty.VALUE_MIN, \"double\"),\n accessibleValueNow: buildProperty(Gtk.AccessibleProperty.VALUE_NOW, \"double\"),\n accessibleValueText: buildProperty(Gtk.AccessibleProperty.VALUE_TEXT, \"string\"),\n accessibleHelpText: buildProperty(Gtk.AccessibleProperty.HELP_TEXT, \"string\"),\n accessibleBusy: buildState(Gtk.AccessibleState.BUSY, \"boolean\"),\n accessibleChecked: buildState(Gtk.AccessibleState.CHECKED, \"int\"),\n accessibleDisabled: buildState(Gtk.AccessibleState.DISABLED, \"boolean\"),\n accessibleExpanded: buildState(Gtk.AccessibleState.EXPANDED, \"int\"),\n accessibleHidden: buildState(Gtk.AccessibleState.HIDDEN, \"boolean\"),\n accessibleInvalid: buildState(Gtk.AccessibleState.INVALID, \"int\"),\n accessiblePressed: buildState(Gtk.AccessibleState.PRESSED, \"int\"),\n accessibleSelected: buildState(Gtk.AccessibleState.SELECTED, \"int\"),\n accessibleVisited: buildState(Gtk.AccessibleState.VISITED, \"int\"),\n accessibleActiveDescendant: buildRelation(Gtk.AccessibleRelation.ACTIVE_DESCENDANT, \"object\"),\n accessibleColCount: buildRelation(Gtk.AccessibleRelation.COL_COUNT, \"int\"),\n accessibleColIndex: buildRelation(Gtk.AccessibleRelation.COL_INDEX, \"int\"),\n accessibleColIndexText: buildRelation(Gtk.AccessibleRelation.COL_INDEX_TEXT, \"string\"),\n accessibleColSpan: buildRelation(Gtk.AccessibleRelation.COL_SPAN, \"int\"),\n accessibleControls: buildRelation(Gtk.AccessibleRelation.CONTROLS, \"list\"),\n accessibleDescribedBy: buildRelation(Gtk.AccessibleRelation.DESCRIBED_BY, \"list\"),\n accessibleDetails: buildRelation(Gtk.AccessibleRelation.DETAILS, \"list\"),\n accessibleErrorMessage: buildRelation(Gtk.AccessibleRelation.ERROR_MESSAGE, \"list\"),\n accessibleFlowTo: buildRelation(Gtk.AccessibleRelation.FLOW_TO, \"list\"),\n accessibleLabelledBy: buildRelation(Gtk.AccessibleRelation.LABELLED_BY, \"list\"),\n accessibleOwns: buildRelation(Gtk.AccessibleRelation.OWNS, \"list\"),\n accessiblePosInSet: buildRelation(Gtk.AccessibleRelation.POS_IN_SET, \"int\"),\n accessibleRowCount: buildRelation(Gtk.AccessibleRelation.ROW_COUNT, \"int\"),\n accessibleRowIndex: buildRelation(Gtk.AccessibleRelation.ROW_INDEX, \"int\"),\n accessibleRowIndexText: buildRelation(Gtk.AccessibleRelation.ROW_INDEX_TEXT, \"string\"),\n accessibleRowSpan: buildRelation(Gtk.AccessibleRelation.ROW_SPAN, \"int\"),\n accessibleSetSize: buildRelation(Gtk.AccessibleRelation.SET_SIZE, \"int\"),\n};\n\nfunction buildProperty(property: Gtk.AccessibleProperty, type: AccessibleValueType): AccessiblePropertyDescriptor {\n return {\n kind: \"property\",\n property,\n type,\n };\n}\n\nfunction buildState(state: Gtk.AccessibleState, type: AccessibleValueType): AccessibleStateDescriptor {\n return {\n kind: \"state\",\n state,\n type,\n };\n}\n\nfunction buildRelation(relation: Gtk.AccessibleRelation, type: AccessibleValueType): AccessibleRelationDescriptor {\n return {\n kind: \"relation\",\n relation,\n type,\n };\n}\n\nconst buildValue = (descriptor: AccessibleDescriptor, jsValue: unknown): GObject.Value => {\n switch (descriptor.type) {\n case \"string\": {\n return GObject.buildValue(GObject.TYPE_STRING, (v) => {\n v.setString(jsValue as string);\n });\n }\n case \"boolean\": {\n return GObject.buildValue(GObject.TYPE_BOOLEAN, (v) => {\n v.setBoolean(jsValue as boolean);\n });\n }\n case \"int\": {\n return GObject.buildValue(GObject.TYPE_INT, (v) => {\n v.setInt(jsValue as number);\n });\n }\n case \"double\": {\n return GObject.buildValue(GObject.TYPE_DOUBLE, (v) => {\n v.setDouble(jsValue as number);\n });\n }\n case \"object\": {\n return GObject.buildValue(GObject.TYPE_OBJECT, (v) => {\n v.setObject(jsValue as GObject.Object | null);\n });\n }\n case \"list\": {\n const list = Gtk.AccessibleList.newFromList(jsValue as Gtk.Widget[]);\n\n return GObject.buildValue(Gtk.AccessibleList.prototype.__type__, (v) => {\n v.setBoxed(list);\n });\n }\n }\n};\n\nconst isAccessibleProp = (name: string): name is keyof AccessibleProps =>\n Object.hasOwn(ACCESSIBLE_PROP_MAP, name);\n\nfunction applyDescriptor(widget: Gtk.Accessible, descriptor: AccessibleDescriptor, newValue: unknown): void {\n const value = buildValue(descriptor, newValue);\n\n switch (descriptor.kind) {\n case \"property\": {\n widget.updateProperty([descriptor.property], [value]);\n break;\n }\n case \"state\": {\n widget.updateState([descriptor.state], [value]);\n break;\n }\n case \"relation\": {\n widget.updateRelation([descriptor.relation], [value]);\n break;\n }\n }\n}\n\nfunction resetDescriptor(widget: Gtk.Accessible, descriptor: AccessibleDescriptor): void {\n switch (descriptor.kind) {\n case \"property\": {\n widget.resetProperty(descriptor.property);\n break;\n }\n case \"state\": {\n widget.resetState(descriptor.state);\n break;\n }\n case \"relation\": {\n widget.resetRelation(descriptor.relation);\n break;\n }\n }\n}\n\nconst applyChangedProp = (widget: Gtk.Accessible, name: keyof AccessibleProps, newValue: unknown): void => {\n if (newValue == null) {\n resetDescriptor(widget, ACCESSIBLE_PROP_MAP[name]);\n deleteAccessibleMetadata(widget, name);\n } else {\n applyDescriptor(widget, ACCESSIBLE_PROP_MAP[name], newValue);\n setAccessibleMetadata(widget, name, newValue);\n }\n};\n\nconst applyChangedProps = (widget: Gtk.Accessible, oldProps: Props | null, newProps: Props): void => {\n for (const name in newProps) {\n if (!isAccessibleProp(name)) {\n continue;\n }\n\n const newValue = newProps[name];\n\n if (oldProps?.[name] !== newValue) {\n applyChangedProp(widget, name, newValue);\n }\n }\n};\n\nconst isRemovedAccessibleProp = (name: string, oldProps: Props, newProps: Props): name is keyof AccessibleProps =>\n !Object.hasOwn(newProps, name) && isAccessibleProp(name) && oldProps[name] !== undefined;\n\nconst resetRemovedProps = (widget: Gtk.Accessible, oldProps: Props, newProps: Props): void => {\n for (const name in oldProps) {\n if (!isRemovedAccessibleProp(name, oldProps, newProps)) {\n continue;\n }\n\n resetDescriptor(widget, ACCESSIBLE_PROP_MAP[name]);\n deleteAccessibleMetadata(widget, name);\n }\n};\n\nconst applyAccessibleProps = (widget: Gtk.Accessible, oldProps: Props | null, newProps: Props): void => {\n applyChangedProps(widget, oldProps, newProps);\n\n if (oldProps) {\n resetRemovedProps(widget, oldProps, newProps);\n }\n};\n\nexport { isAccessibleProp, applyAccessibleProps, type AccessibleProps };\n"]}
1
+ {"version":3,"file":"accessible-props.js","sourceRoot":"","sources":["../../src/utils/accessible-props.ts"],"names":[],"mappings":"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","sourcesContent":["import * as GObject from \"@gtkx/gi/gobject\";\nimport * as Gtk from \"@gtkx/gi/gtk\";\nimport type { Props } from \"../reconciler/registry.js\";\n\n/**\n * Accessibility props available on every widget. Each member maps to a GTK4 accessible attribute\n * (a `Gtk.AccessibleProperty`, `Gtk.AccessibleState`, or `Gtk.AccessibleRelation`) and is applied\n * to the widget's accessible interface. Setting a member to `null` or `undefined`, or dropping it from the\n * props, resets that attribute to its default.\n */\ntype AccessibleProps = {\n /** How the widget completes the text being typed into it. */\n accessibleAutocomplete?: Gtk.AccessibleAutocomplete | null | undefined;\n /** Longer description announced after the label. */\n accessibleDescription?: string | null | undefined;\n /** Whether activating the widget opens a popup. */\n accessibleHasPopup?: boolean | null | undefined;\n /** Keyboard shortcuts that activate the widget. */\n accessibleKeyShortcuts?: string | null | undefined;\n /** Short name announced for the widget. */\n accessibleLabel?: string | null | undefined;\n /** Depth of the widget within a hierarchy of headings, list items, or tree rows. */\n accessibleLevel?: number | null | undefined;\n /** Whether the widget blocks interaction with everything behind it. */\n accessibleModal?: boolean | null | undefined;\n /** Whether the text input accepts more than one line. */\n accessibleMultiLine?: boolean | null | undefined;\n /** Whether more than one of the widget's items can be selected at a time. */\n accessibleMultiSelectable?: boolean | null | undefined;\n /** Whether the widget arranges its items horizontally or vertically. */\n accessibleOrientation?: Gtk.Orientation | null | undefined;\n /** Hint announced while the input is empty. */\n accessiblePlaceholder?: string | null | undefined;\n /** Whether the value can be read but not changed. */\n accessibleReadOnly?: boolean | null | undefined;\n /** Whether a value has to be supplied before the form can be submitted. */\n accessibleRequired?: boolean | null | undefined;\n /** Wording that replaces the default announcement of the widget's role. */\n accessibleRoleDescription?: string | null | undefined;\n /** Direction the widget's items are sorted in. */\n accessibleSort?: Gtk.AccessibleSort | null | undefined;\n /** Upper bound of the widget's value range. */\n accessibleValueMax?: number | null | undefined;\n /** Lower bound of the widget's value range. */\n accessibleValueMin?: number | null | undefined;\n /** Current value within the widget's range. */\n accessibleValueNow?: number | null | undefined;\n /** Wording announced in place of the numeric value. */\n accessibleValueText?: string | null | undefined;\n /** Help text describing how to use the widget. */\n accessibleHelpText?: string | null | undefined;\n /** Whether the widget is still loading and its content may yet change. */\n accessibleBusy?: boolean | null | undefined;\n /** Checked state of a check button or menu item, which may be mixed. */\n accessibleChecked?: Gtk.AccessibleTristate | null | undefined;\n /** Whether the widget is visible but cannot be edited or operated. */\n accessibleDisabled?: boolean | null | undefined;\n /** Whether the content the widget discloses is showing. */\n accessibleExpanded?: boolean | null | undefined;\n /** Whether the widget is kept out of the accessibility tree. */\n accessibleHidden?: boolean | null | undefined;\n /** Whether the entered value fails validation, and in what way. */\n accessibleInvalid?: Gtk.AccessibleInvalidState | null | undefined;\n /** Pressed state of a toggle button, which may be mixed. */\n accessiblePressed?: Gtk.AccessibleTristate | null | undefined;\n /** Whether the widget is selected within its container. */\n accessibleSelected?: boolean | null | undefined;\n /** Whether the link has already been followed. */\n accessibleVisited?: boolean | null | undefined;\n /** Descendant that holds the focus while the widget itself keeps it. */\n accessibleActiveDescendant?: Gtk.Accessible | null | undefined;\n /** Total number of columns in the table, including any that are not rendered. */\n accessibleColCount?: number | null | undefined;\n /** One-based column position of the cell within its table. */\n accessibleColIndex?: number | null | undefined;\n /** Wording announced in place of the numeric column position. */\n accessibleColIndexText?: string | null | undefined;\n /** Number of columns the cell spans. */\n accessibleColSpan?: number | null | undefined;\n /** Widgets whose content or presence this widget controls. */\n accessibleControls?: Gtk.Accessible[] | null | undefined;\n /** Widgets that describe this one. */\n accessibleDescribedBy?: Gtk.Accessible[] | null | undefined;\n /** Widgets holding extended detail about this one. */\n accessibleDetails?: Gtk.Accessible[] | null | undefined;\n /** Widgets holding the message that explains why the value is invalid. */\n accessibleErrorMessage?: Gtk.Accessible[] | null | undefined;\n /** Widgets to read next, overriding the default reading order. */\n accessibleFlowTo?: Gtk.Accessible[] | null | undefined;\n /** Widgets that label this one. */\n accessibleLabelledBy?: Gtk.Accessible[] | null | undefined;\n /** Widgets this one owns that the widget hierarchy does not already imply. */\n accessibleOwns?: Gtk.Accessible[] | null | undefined;\n /** One-based position of the widget within its set. */\n accessiblePosInSet?: number | null | undefined;\n /** Total number of rows in the table, including any that are not rendered. */\n accessibleRowCount?: number | null | undefined;\n /** One-based row position of the cell within its table. */\n accessibleRowIndex?: number | null | undefined;\n /** Wording announced in place of the numeric row position. */\n accessibleRowIndexText?: string | null | undefined;\n /** Number of rows the cell spans. */\n accessibleRowSpan?: number | null | undefined;\n /** Total number of items in the set the widget belongs to. */\n accessibleSetSize?: number | null | undefined;\n};\n\ntype AccessibleValueType = \"string\" | \"boolean\" | \"optionalBoolean\" | \"int\" | \"double\" | \"object\" | \"list\";\n\ntype AccessiblePropertyDescriptor = {\n kind: \"property\";\n property: Gtk.AccessibleProperty;\n type: AccessibleValueType;\n};\n\ntype AccessibleStateDescriptor = {\n kind: \"state\";\n state: Gtk.AccessibleState;\n type: AccessibleValueType;\n};\n\ntype AccessibleRelationDescriptor = {\n kind: \"relation\";\n relation: Gtk.AccessibleRelation;\n type: AccessibleValueType;\n};\n\ntype AccessibleDescriptor = AccessiblePropertyDescriptor | AccessibleStateDescriptor | AccessibleRelationDescriptor;\n\nconst ACCESSIBLE_PROP_MAP: Record<keyof AccessibleProps, AccessibleDescriptor> = {\n accessibleAutocomplete: buildProperty(Gtk.AccessibleProperty.AUTOCOMPLETE, \"int\"),\n accessibleDescription: buildProperty(Gtk.AccessibleProperty.DESCRIPTION, \"string\"),\n accessibleHasPopup: buildProperty(Gtk.AccessibleProperty.HAS_POPUP, \"boolean\"),\n accessibleKeyShortcuts: buildProperty(Gtk.AccessibleProperty.KEY_SHORTCUTS, \"string\"),\n accessibleLabel: buildProperty(Gtk.AccessibleProperty.LABEL, \"string\"),\n accessibleLevel: buildProperty(Gtk.AccessibleProperty.LEVEL, \"int\"),\n accessibleModal: buildProperty(Gtk.AccessibleProperty.MODAL, \"boolean\"),\n accessibleMultiLine: buildProperty(Gtk.AccessibleProperty.MULTI_LINE, \"boolean\"),\n accessibleMultiSelectable: buildProperty(Gtk.AccessibleProperty.MULTI_SELECTABLE, \"boolean\"),\n accessibleOrientation: buildProperty(Gtk.AccessibleProperty.ORIENTATION, \"int\"),\n accessiblePlaceholder: buildProperty(Gtk.AccessibleProperty.PLACEHOLDER, \"string\"),\n accessibleReadOnly: buildProperty(Gtk.AccessibleProperty.READ_ONLY, \"boolean\"),\n accessibleRequired: buildProperty(Gtk.AccessibleProperty.REQUIRED, \"boolean\"),\n accessibleRoleDescription: buildProperty(Gtk.AccessibleProperty.ROLE_DESCRIPTION, \"string\"),\n accessibleSort: buildProperty(Gtk.AccessibleProperty.SORT, \"int\"),\n accessibleValueMax: buildProperty(Gtk.AccessibleProperty.VALUE_MAX, \"double\"),\n accessibleValueMin: buildProperty(Gtk.AccessibleProperty.VALUE_MIN, \"double\"),\n accessibleValueNow: buildProperty(Gtk.AccessibleProperty.VALUE_NOW, \"double\"),\n accessibleValueText: buildProperty(Gtk.AccessibleProperty.VALUE_TEXT, \"string\"),\n accessibleHelpText: buildProperty(Gtk.AccessibleProperty.HELP_TEXT, \"string\"),\n accessibleBusy: buildState(Gtk.AccessibleState.BUSY, \"boolean\"),\n accessibleChecked: buildState(Gtk.AccessibleState.CHECKED, \"int\"),\n accessibleDisabled: buildState(Gtk.AccessibleState.DISABLED, \"boolean\"),\n accessibleExpanded: buildState(Gtk.AccessibleState.EXPANDED, \"optionalBoolean\"),\n accessibleHidden: buildState(Gtk.AccessibleState.HIDDEN, \"boolean\"),\n accessibleInvalid: buildState(Gtk.AccessibleState.INVALID, \"int\"),\n accessiblePressed: buildState(Gtk.AccessibleState.PRESSED, \"int\"),\n accessibleSelected: buildState(Gtk.AccessibleState.SELECTED, \"optionalBoolean\"),\n accessibleVisited: buildState(Gtk.AccessibleState.VISITED, \"optionalBoolean\"),\n accessibleActiveDescendant: buildRelation(Gtk.AccessibleRelation.ACTIVE_DESCENDANT, \"object\"),\n accessibleColCount: buildRelation(Gtk.AccessibleRelation.COL_COUNT, \"int\"),\n accessibleColIndex: buildRelation(Gtk.AccessibleRelation.COL_INDEX, \"int\"),\n accessibleColIndexText: buildRelation(Gtk.AccessibleRelation.COL_INDEX_TEXT, \"string\"),\n accessibleColSpan: buildRelation(Gtk.AccessibleRelation.COL_SPAN, \"int\"),\n accessibleControls: buildRelation(Gtk.AccessibleRelation.CONTROLS, \"list\"),\n accessibleDescribedBy: buildRelation(Gtk.AccessibleRelation.DESCRIBED_BY, \"list\"),\n accessibleDetails: buildRelation(Gtk.AccessibleRelation.DETAILS, \"list\"),\n accessibleErrorMessage: buildRelation(Gtk.AccessibleRelation.ERROR_MESSAGE, \"list\"),\n accessibleFlowTo: buildRelation(Gtk.AccessibleRelation.FLOW_TO, \"list\"),\n accessibleLabelledBy: buildRelation(Gtk.AccessibleRelation.LABELLED_BY, \"list\"),\n accessibleOwns: buildRelation(Gtk.AccessibleRelation.OWNS, \"list\"),\n accessiblePosInSet: buildRelation(Gtk.AccessibleRelation.POS_IN_SET, \"int\"),\n accessibleRowCount: buildRelation(Gtk.AccessibleRelation.ROW_COUNT, \"int\"),\n accessibleRowIndex: buildRelation(Gtk.AccessibleRelation.ROW_INDEX, \"int\"),\n accessibleRowIndexText: buildRelation(Gtk.AccessibleRelation.ROW_INDEX_TEXT, \"string\"),\n accessibleRowSpan: buildRelation(Gtk.AccessibleRelation.ROW_SPAN, \"int\"),\n accessibleSetSize: buildRelation(Gtk.AccessibleRelation.SET_SIZE, \"int\"),\n};\n\nfunction buildProperty(property: Gtk.AccessibleProperty, type: AccessibleValueType): AccessiblePropertyDescriptor {\n return {\n kind: \"property\",\n property,\n type,\n };\n}\n\nfunction buildState(state: Gtk.AccessibleState, type: AccessibleValueType): AccessibleStateDescriptor {\n return {\n kind: \"state\",\n state,\n type,\n };\n}\n\nfunction buildRelation(relation: Gtk.AccessibleRelation, type: AccessibleValueType): AccessibleRelationDescriptor {\n return {\n kind: \"relation\",\n relation,\n type,\n };\n}\n\nconst buildValue = (descriptor: AccessibleDescriptor, jsValue: unknown): GObject.Value => {\n switch (descriptor.type) {\n case \"string\": {\n return GObject.buildValue(GObject.TYPE_STRING, (v) => {\n v.setString(jsValue as string);\n });\n }\n case \"boolean\": {\n return GObject.buildValue(GObject.TYPE_BOOLEAN, (v) => {\n v.setBoolean(jsValue as boolean);\n });\n }\n case \"optionalBoolean\": {\n return GObject.buildValue(GObject.TYPE_INT, (v) => {\n v.setInt(jsValue === true ? 1 : 0);\n });\n }\n case \"int\": {\n return GObject.buildValue(GObject.TYPE_INT, (v) => {\n v.setInt(jsValue as number);\n });\n }\n case \"double\": {\n return GObject.buildValue(GObject.TYPE_DOUBLE, (v) => {\n v.setDouble(jsValue as number);\n });\n }\n case \"object\": {\n return GObject.buildValue(GObject.TYPE_OBJECT, (v) => {\n v.setObject(jsValue as GObject.Object | null);\n });\n }\n case \"list\": {\n const list = Gtk.AccessibleList.newFromList(jsValue as Gtk.Accessible[]);\n\n return GObject.buildValue(Gtk.AccessibleList.prototype.__type__, (v) => {\n v.setBoxed(list);\n });\n }\n }\n};\n\nconst isAccessibleProp = (name: string): name is keyof AccessibleProps =>\n Object.hasOwn(ACCESSIBLE_PROP_MAP, name);\n\nfunction applyDescriptor(widget: Gtk.Accessible, descriptor: AccessibleDescriptor, newValue: unknown): void {\n const value = buildValue(descriptor, newValue);\n\n switch (descriptor.kind) {\n case \"property\": {\n widget.updateProperty([descriptor.property], [value]);\n break;\n }\n case \"state\": {\n widget.updateState([descriptor.state], [value]);\n break;\n }\n case \"relation\": {\n widget.updateRelation([descriptor.relation], [value]);\n break;\n }\n }\n}\n\nfunction resetDescriptor(widget: Gtk.Accessible, descriptor: AccessibleDescriptor): void {\n switch (descriptor.kind) {\n case \"property\": {\n widget.resetProperty(descriptor.property);\n break;\n }\n case \"state\": {\n widget.resetState(descriptor.state);\n break;\n }\n case \"relation\": {\n widget.resetRelation(descriptor.relation);\n break;\n }\n }\n}\n\nconst applyChangedProp = (widget: Gtk.Accessible, name: keyof AccessibleProps, newValue: unknown): void => {\n if (newValue == null) {\n resetDescriptor(widget, ACCESSIBLE_PROP_MAP[name]);\n } else {\n applyDescriptor(widget, ACCESSIBLE_PROP_MAP[name], newValue);\n }\n};\n\nconst applyChangedProps = (widget: Gtk.Accessible, newProps: Props): void => {\n for (const name in newProps) {\n if (!isAccessibleProp(name)) {\n continue;\n }\n\n applyChangedProp(widget, name, newProps[name]);\n }\n};\n\nconst isRemovedAccessibleProp = (name: string, oldProps: Props, newProps: Props): name is keyof AccessibleProps =>\n !Object.hasOwn(newProps, name) && isAccessibleProp(name) && oldProps[name] !== undefined;\n\nconst resetRemovedProps = (widget: Gtk.Accessible, oldProps: Props, newProps: Props): void => {\n for (const name in oldProps) {\n if (!isRemovedAccessibleProp(name, oldProps, newProps)) {\n continue;\n }\n\n resetDescriptor(widget, ACCESSIBLE_PROP_MAP[name]);\n }\n};\n\nconst applyAccessibleProps = (widget: Gtk.Accessible, oldProps: Props | null, newProps: Props): void => {\n applyChangedProps(widget, newProps);\n\n if (oldProps) {\n resetRemovedProps(widget, oldProps, newProps);\n }\n};\n\nexport { isAccessibleProp, applyAccessibleProps, type AccessibleProps };\n"]}
@@ -4,12 +4,6 @@ import type { RefObject } from "react";
4
4
  * or null or undefined when the target is absent.
5
5
  */
6
6
  type RefProp<T extends object> = T | RefObject<T | null> | null | undefined;
7
- /**
8
- * Resolves a {@link RefProp} to the concrete object it points at, or null when it is absent or unresolved.
9
- *
10
- * @param prop The target object, a ref to one, or null/undefined.
11
- * @returns The resolved object, or null.
12
- */
13
7
  declare const resolveRefProp: <T extends object>(prop: RefProp<T>) => T | null;
14
8
  export { resolveRefProp, type RefProp };
15
9
  //# sourceMappingURL=ref-prop.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ref-prop.d.ts","sourceRoot":"","sources":["../../src/utils/ref-prop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;;GAGG;AACH,KAAK,OAAO,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;AAK5E;;;;;GAKG;AACH,QAAA,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAG,CAAC,GAAG,IAUhE,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,KAAK,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"ref-prop.d.ts","sourceRoot":"","sources":["../../src/utils/ref-prop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;;GAGG;AACH,KAAK,OAAO,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;AAK5E,QAAA,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAG,CAAC,GAAG,IAUhE,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,KAAK,OAAO,EAAE,CAAC"}
@@ -1,10 +1,4 @@
1
1
  const isRefObject = (value) => typeof value === "object" && "current" in value;
2
- /**
3
- * Resolves a {@link RefProp} to the concrete object it points at, or null when it is absent or unresolved.
4
- *
5
- * @param prop The target object, a ref to one, or null/undefined.
6
- * @returns The resolved object, or null.
7
- */
8
2
  const resolveRefProp = (prop) => {
9
3
  if (prop === null || prop === undefined) {
10
4
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"ref-prop.js","sourceRoot":"","sources":["../../src/utils/ref-prop.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,GAAG,CAAmB,KAA8B,EAAgC,EAAE,CACnG,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,cAAc,GAAG,CAAmB,IAAgB,EAAY,EAAE;IACpE,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,OAAO,EAAE,cAAc,EAAgB,CAAC","sourcesContent":["import type { RefObject } from \"react\";\n\n/**\n * A way to reach a GObject: the object itself, a ref object whose `current` is the object or null,\n * or null or undefined when the target is absent.\n */\ntype RefProp<T extends object> = T | RefObject<T | null> | null | undefined;\n\nconst isRefObject = <T extends object>(value: T | RefObject<T | null>): value is RefObject<T | null> =>\n typeof value === \"object\" && \"current\" in value;\n\n/**\n * Resolves a {@link RefProp} to the concrete object it points at, or null when it is absent or unresolved.\n *\n * @param prop The target object, a ref to one, or null/undefined.\n * @returns The resolved object, or null.\n */\nconst resolveRefProp = <T extends object>(prop: RefProp<T>): T | null => {\n if (prop === null || prop === undefined) {\n return null;\n }\n\n if (isRefObject(prop)) {\n return prop.current;\n }\n\n return prop;\n};\n\nexport { resolveRefProp, type RefProp };\n"]}
1
+ {"version":3,"file":"ref-prop.js","sourceRoot":"","sources":["../../src/utils/ref-prop.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,GAAG,CAAmB,KAA8B,EAAgC,EAAE,CACnG,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,CAAC;AAEpD,MAAM,cAAc,GAAG,CAAmB,IAAgB,EAAY,EAAE;IACpE,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,OAAO,EAAE,cAAc,EAAgB,CAAC","sourcesContent":["import type { RefObject } from \"react\";\n\n/**\n * A way to reach a GObject: the object itself, a ref object whose `current` is the object or null,\n * or null or undefined when the target is absent.\n */\ntype RefProp<T extends object> = T | RefObject<T | null> | null | undefined;\n\nconst isRefObject = <T extends object>(value: T | RefObject<T | null>): value is RefObject<T | null> =>\n typeof value === \"object\" && \"current\" in value;\n\nconst resolveRefProp = <T extends object>(prop: RefProp<T>): T | null => {\n if (prop === null || prop === undefined) {\n return null;\n }\n\n if (isRefObject(prop)) {\n return prop.current;\n }\n\n return prop;\n};\n\nexport { resolveRefProp, type RefProp };\n"]}
@@ -1,11 +1,18 @@
1
1
  import type * as Gio from "@gtkx/gi/gio";
2
2
  import { type VariantValue } from "./variant.js";
3
+ /** Maps each key of a GSettings schema to its kind: a GVariant type string, or `enum` or `flags`. */
3
4
  type SettingsSchemaKeys = Record<string, string>;
5
+ /** Value type a key kind stands for: `number` for `enum` and `flags`, otherwise the unpacked GVariant. */
4
6
  type SettingKindValue<S extends string> = S extends "enum" | "flags" ? number : VariantValue<S>;
7
+ /** Value type of key `P`, looked up by its kind in schema `K`, that reads and writes of that key take. */
5
8
  type SettingValue<K extends SettingsSchemaKeys, P extends keyof K> = SettingKindValue<K[P] & string>;
9
+ /** A GSettings schema, as described by the modules GTKX generates from a project's `.gschema.xml` files. */
6
10
  type SettingsSchema<K extends SettingsSchemaKeys = SettingsSchemaKeys> = {
11
+ /** Schema id it is looked up by, such as `org.gtkx.Example`. */
7
12
  id: string;
13
+ /** Path a relocatable schema is instantiated at, or `null` to use the schema's own path. */
8
14
  path: string | null;
15
+ /** Kind of every key the schema declares, which types reads and writes of that key. */
9
16
  keys: K;
10
17
  };
11
18
  type ResolvedSettingAccessor<K extends SettingsSchemaKeys, P extends keyof K> = {
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/utils/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,cAAc,CAAC;AACzC,OAAO,EAAgD,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAE/F,KAAK,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACjD,KAAK,gBAAgB,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAChG,KAAK,YAAY,CAAC,CAAC,SAAS,kBAAkB,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAErG,KAAK,cAAc,CAAC,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,IAAI;IACrE,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,CAAC,CAAC;CACX,CAAC;AAOF,KAAK,uBAAuB,CAAC,CAAC,SAAS,kBAAkB,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI;IAC5E,GAAG,EAAE,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,GAAG,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;CAC5C,CAAC;AA4BF,QAAA,MAAM,sBAAsB,GAAI,CAAC,SAAS,kBAAkB,EAAE,CAAC,SAAS,MAAM,CAAC,EAC3E,UAAU,GAAG,CAAC,QAAQ,EACtB,QAAQ,cAAc,CAAC,CAAC,CAAC,EACzB,KAAK,CAAC,GAAG,MAAM,KAChB,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAa9B,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,KAAK,kBAAkB,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/utils/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,cAAc,CAAC;AACzC,OAAO,EAAgD,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAE/F,qGAAqG;AACrG,KAAK,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACjD,0GAA0G;AAC1G,KAAK,gBAAgB,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAChG,0GAA0G;AAC1G,KAAK,YAAY,CAAC,CAAC,SAAS,kBAAkB,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAErG,4GAA4G;AAC5G,KAAK,cAAc,CAAC,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,IAAI;IACrE,gEAAgE;IAChE,EAAE,EAAE,MAAM,CAAC;IACX,4FAA4F;IAC5F,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,uFAAuF;IACvF,IAAI,EAAE,CAAC,CAAC;CACX,CAAC;AAOF,KAAK,uBAAuB,CAAC,CAAC,SAAS,kBAAkB,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI;IAC5E,GAAG,EAAE,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,GAAG,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;CAC5C,CAAC;AA4BF,QAAA,MAAM,sBAAsB,GAAI,CAAC,SAAS,kBAAkB,EAAE,CAAC,SAAS,MAAM,CAAC,EAC3E,UAAU,GAAG,CAAC,QAAQ,EACtB,QAAQ,cAAc,CAAC,CAAC,CAAC,EACzB,KAAK,CAAC,GAAG,MAAM,KAChB,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAa9B,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,KAAK,kBAAkB,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,CAAC"}