@genesislcap/foundation-react-utils 14.446.1-FUI-2541.1 → 14.446.1-FUI-2541.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"create-react-renderer.d.ts","sourceRoot":"","sources":["../../src/create-react-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,aAAa,EACnB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC9C,OAAO,EAAE;IACP;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,MAAM,EAAE,YAAY,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,KAAK,mBAAmB,CAAC;IACrF;;;;;;;;;;OAUG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,GACA,aAAa,CAoDf"}
1
+ {"version":3,"file":"create-react-renderer.d.ts","sourceRoot":"","sources":["../../src/create-react-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,aAAa,EACnB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC9C,OAAO,EAAE;IACP;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,MAAM,EAAE,YAAY,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,KAAK,mBAAmB,CAAC;IACrF;;;;;;;;;;OAUG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,GACA,aAAa,CAsEf"}
@@ -60,10 +60,27 @@ export function createReactRenderer(Component, options) {
60
60
  errors: 'string',
61
61
  enabled: 'boolean',
62
62
  required: 'boolean',
63
- handleChange: 'method',
64
63
  uischema: 'json',
65
64
  },
66
65
  });
66
+ // r2wc's 'function' type serialises the function to its .name string via
67
+ // setAttribute and then resolves it back via window[name] — which always
68
+ // fails for locally-scoped functions, leaving handleChange as undefined in
69
+ // React. Instead we bypass attribute round-tripping by writing directly into
70
+ // r2wc's internal props bag and triggering a re-render manually.
71
+ const r2wcPropsSym = Symbol.for('r2wc.props');
72
+ const r2wcRenderSym = Symbol.for('r2wc.render');
73
+ Object.defineProperty(WebComponent.prototype, 'handleChange', {
74
+ enumerable: true,
75
+ configurable: true,
76
+ get() {
77
+ return this[r2wcPropsSym].handleChange;
78
+ },
79
+ set(value) {
80
+ this[r2wcPropsSym].handleChange = value;
81
+ this[r2wcRenderSym]();
82
+ },
83
+ });
67
84
  if (!customElements.get(options.name)) {
68
85
  customElements.define(options.name, WebComponent);
69
86
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@genesislcap/foundation-react-utils",
3
3
  "description": "Genesis Foundation React Utils",
4
- "version": "14.446.1-FUI-2541.1",
4
+ "version": "14.446.1-FUI-2541.2",
5
5
  "sideEffects": false,
6
6
  "license": "SEE LICENSE IN license.txt",
7
7
  "main": "dist/esm/index.js",
@@ -29,23 +29,23 @@
29
29
  }
30
30
  },
31
31
  "devDependencies": {
32
- "@genesislcap/foundation-testing": "14.446.1-FUI-2541.1",
33
- "@genesislcap/genx": "14.446.1-FUI-2541.1",
34
- "@genesislcap/rollup-builder": "14.446.1-FUI-2541.1",
35
- "@genesislcap/ts-builder": "14.446.1-FUI-2541.1",
36
- "@genesislcap/uvu-playwright-builder": "14.446.1-FUI-2541.1",
37
- "@genesislcap/vite-builder": "14.446.1-FUI-2541.1",
38
- "@genesislcap/webpack-builder": "14.446.1-FUI-2541.1"
32
+ "@genesislcap/foundation-testing": "14.446.1-FUI-2541.2",
33
+ "@genesislcap/genx": "14.446.1-FUI-2541.2",
34
+ "@genesislcap/rollup-builder": "14.446.1-FUI-2541.2",
35
+ "@genesislcap/ts-builder": "14.446.1-FUI-2541.2",
36
+ "@genesislcap/uvu-playwright-builder": "14.446.1-FUI-2541.2",
37
+ "@genesislcap/vite-builder": "14.446.1-FUI-2541.2",
38
+ "@genesislcap/webpack-builder": "14.446.1-FUI-2541.2"
39
39
  },
40
40
  "peerDependencies": {
41
41
  "react": "^19.0.0",
42
42
  "react-dom": "^19.0.0"
43
43
  },
44
44
  "dependencies": {
45
- "@genesislcap/foundation-forms": "14.446.1-FUI-2541.1",
46
- "@genesislcap/foundation-layout": "14.446.1-FUI-2541.1",
47
- "@genesislcap/foundation-logger": "14.446.1-FUI-2541.1",
48
- "@genesislcap/web-core": "14.446.1-FUI-2541.1",
45
+ "@genesislcap/foundation-forms": "14.446.1-FUI-2541.2",
46
+ "@genesislcap/foundation-layout": "14.446.1-FUI-2541.2",
47
+ "@genesislcap/foundation-logger": "14.446.1-FUI-2541.2",
48
+ "@genesislcap/web-core": "14.446.1-FUI-2541.2",
49
49
  "@jsonforms/core": "^3.2.1",
50
50
  "@r2wc/react-to-web-component": "^2.0.2"
51
51
  },
@@ -58,5 +58,5 @@
58
58
  "access": "public"
59
59
  },
60
60
  "customElements": "dist/custom-elements.json",
61
- "gitHead": "ede3de0912bfd99b4fc0c9f57f2e322c27c8844b"
61
+ "gitHead": "e29fdf28775074bde37c45c152bada6b3b446386"
62
62
  }
@@ -102,11 +102,29 @@ export function createReactRenderer(
102
102
  errors: 'string',
103
103
  enabled: 'boolean',
104
104
  required: 'boolean',
105
- handleChange: 'method',
106
105
  uischema: 'json',
107
106
  },
108
107
  });
109
108
 
109
+ // r2wc's 'function' type serialises the function to its .name string via
110
+ // setAttribute and then resolves it back via window[name] — which always
111
+ // fails for locally-scoped functions, leaving handleChange as undefined in
112
+ // React. Instead we bypass attribute round-tripping by writing directly into
113
+ // r2wc's internal props bag and triggering a re-render manually.
114
+ const r2wcPropsSym = Symbol.for('r2wc.props');
115
+ const r2wcRenderSym = Symbol.for('r2wc.render');
116
+ Object.defineProperty(WebComponent.prototype, 'handleChange', {
117
+ enumerable: true,
118
+ configurable: true,
119
+ get() {
120
+ return (this as any)[r2wcPropsSym].handleChange;
121
+ },
122
+ set(value) {
123
+ (this as any)[r2wcPropsSym].handleChange = value;
124
+ (this as any)[r2wcRenderSym]();
125
+ },
126
+ });
127
+
110
128
  if (!customElements.get(options.name)) {
111
129
  customElements.define(options.name, WebComponent);
112
130
  }