@gtkx/react 0.1.26 → 0.1.27

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.
@@ -25,6 +25,8 @@ export declare class JsxGenerator {
25
25
  private getRequiredConstructorParams;
26
26
  private getConstructorParams;
27
27
  private generateConstructorArgsMetadata;
28
+ private generateSetterGetterMap;
29
+ private collectAllProperties;
28
30
  private getAncestorInterfaces;
29
31
  private findInheritedProperty;
30
32
  private generateSignalHandler;
@@ -97,6 +97,7 @@ export class JsxGenerator {
97
97
  this.generateCommonTypes(widgetClass),
98
98
  widgetPropsInterfaces,
99
99
  this.generateConstructorArgsMetadata(widgets),
100
+ this.generateSetterGetterMap(widgets),
100
101
  this.generateExports(widgets, containerMetadata),
101
102
  this.generateJsxNamespace(widgets, containerMetadata),
102
103
  "export {};",
@@ -374,6 +375,54 @@ ${widgetPropsContent}
374
375
  }
375
376
  return `export const CONSTRUCTOR_PARAMS: Record<string, { name: string; hasDefault: boolean }[]> = {\n${entries.join(",\n")},\n};\n`;
376
377
  }
378
+ generateSetterGetterMap(widgets) {
379
+ const widgetEntries = [];
380
+ for (const widget of widgets) {
381
+ const setterGetterPairs = [];
382
+ const allProps = this.collectAllProperties(widget);
383
+ for (const prop of allProps) {
384
+ if (prop.setter && prop.getter) {
385
+ const setterName = toCamelCase(prop.setter);
386
+ const getterName = toCamelCase(prop.getter);
387
+ setterGetterPairs.push(`"${setterName}": "${getterName}"`);
388
+ }
389
+ }
390
+ if (setterGetterPairs.length > 0) {
391
+ const widgetName = toPascalCase(widget.name);
392
+ widgetEntries.push(`\t${widgetName}: { ${setterGetterPairs.join(", ")} }`);
393
+ }
394
+ }
395
+ if (widgetEntries.length === 0) {
396
+ return `export const SETTER_GETTERS: Record<string, Record<string, string>> = {};\n`;
397
+ }
398
+ return `export const SETTER_GETTERS: Record<string, Record<string, string>> = {\n${widgetEntries.join(",\n")},\n};\n`;
399
+ }
400
+ collectAllProperties(widget) {
401
+ const props = [];
402
+ const seen = new Set();
403
+ let current = widget;
404
+ while (current) {
405
+ for (const prop of current.properties) {
406
+ if (!seen.has(prop.name)) {
407
+ seen.add(prop.name);
408
+ props.push({ setter: prop.setter, getter: prop.getter });
409
+ }
410
+ }
411
+ for (const ifaceName of current.implements) {
412
+ const iface = this.interfaceMap.get(ifaceName);
413
+ if (iface) {
414
+ for (const prop of iface.properties) {
415
+ if (!seen.has(prop.name)) {
416
+ seen.add(prop.name);
417
+ props.push({ setter: prop.setter, getter: prop.getter });
418
+ }
419
+ }
420
+ }
421
+ }
422
+ current = current.parent ? this.classMap.get(current.parent) : undefined;
423
+ }
424
+ return props;
425
+ }
377
426
  getAncestorInterfaces(widget) {
378
427
  const interfaces = new Set();
379
428
  let current = widget.parent ? this.classMap.get(widget.parent) : undefined;
@@ -1266,6 +1266,7 @@ export declare const CONSTRUCTOR_PARAMS: Record<string, {
1266
1266
  name: string;
1267
1267
  hasDefault: boolean;
1268
1268
  }[]>;
1269
+ export declare const SETTER_GETTERS: Record<string, Record<string, string>>;
1269
1270
  export declare const Widget: "Widget";
1270
1271
  export declare const Window: {
1271
1272
  Root: "Window.Root";