@object-ui/fields 3.1.2 → 3.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/AddressField-B6fPb2Fs.js +3 -0
  2. package/dist/AddressField-Ctsxkj35.cjs +1 -0
  3. package/dist/AutoNumberField-DXIYJfiB.js +3 -0
  4. package/dist/AutoNumberField-f76XU1bR.cjs +1 -0
  5. package/dist/AvatarField-BHpex3Wa.js +3 -0
  6. package/dist/AvatarField-CXOdYavl.cjs +1 -0
  7. package/dist/BooleanField-Bs0urhsx.js +3 -0
  8. package/dist/BooleanField-DeexI_O2.cjs +1 -0
  9. package/dist/CodeField-DDOMH8E8.cjs +1 -0
  10. package/dist/CodeField-tRACqngO.js +3 -0
  11. package/dist/ColorField-Bar6bOJw.js +3 -0
  12. package/dist/ColorField-CM9CxZ9h.cjs +1 -0
  13. package/dist/CurrencyField-CezTX_rA.cjs +1 -0
  14. package/dist/CurrencyField-D4VwXI9k.js +3 -0
  15. package/dist/DateField-DDUllj7w.cjs +1 -0
  16. package/dist/DateField-DjGiK6BH.js +3 -0
  17. package/dist/DateTimeField-DBh-dYdR.js +3 -0
  18. package/dist/DateTimeField-DDqgVN3b.cjs +1 -0
  19. package/dist/EmailField-B-3nY8Pr.cjs +1 -0
  20. package/dist/EmailField-Cp6yJlpH.js +3 -0
  21. package/dist/FileField-C1bcL7tu.cjs +1 -0
  22. package/dist/FileField-DUgt6ai3.js +3 -0
  23. package/dist/FormulaField-BLV1KgkQ.js +3 -0
  24. package/dist/FormulaField-CsbQIZ7S.cjs +1 -0
  25. package/dist/GeolocationField-BbIRH51u.js +3 -0
  26. package/dist/GeolocationField-UFu9VR-x.cjs +1 -0
  27. package/dist/GridField-2m74haE0.cjs +1 -0
  28. package/dist/GridField-O3Jd1NuJ.js +3 -0
  29. package/dist/ImageField-Cna7g6KL.cjs +1 -0
  30. package/dist/ImageField-rc1Nzcvb.js +3 -0
  31. package/dist/LocationField-DpRe9QlH.cjs +1 -0
  32. package/dist/LocationField-QZPPYo0J.js +3 -0
  33. package/dist/LookupField-BX4sK8NG.js +904 -0
  34. package/dist/LookupField-C9rPrHi_.cjs +1 -0
  35. package/dist/MasterDetailField-BXncIT1s.js +3 -0
  36. package/dist/MasterDetailField-TNP2825Z.cjs +1 -0
  37. package/dist/NumberField-DCHTzmDG.js +3 -0
  38. package/dist/NumberField-SqRwbcY8.cjs +1 -0
  39. package/dist/ObjectField-BEUHpn_X.js +3 -0
  40. package/dist/ObjectField-BWZwaFIG.cjs +1 -0
  41. package/dist/PasswordField-BZ_OeQyw.js +3 -0
  42. package/dist/PasswordField-kLp-ZyPm.cjs +1 -0
  43. package/dist/PercentField-B2t2knlc.js +3 -0
  44. package/dist/PercentField-BzhD6tQm.cjs +1 -0
  45. package/dist/PhoneField-CirvuysP.cjs +1 -0
  46. package/dist/PhoneField-CkrCFmcO.js +3 -0
  47. package/dist/QRCodeField-C4OOLCbE.cjs +1 -0
  48. package/dist/QRCodeField-CQoGow8y.js +3 -0
  49. package/dist/RatingField-CZG8SgQ8.cjs +1 -0
  50. package/dist/RatingField-DecDJkou.js +3 -0
  51. package/dist/RichTextField-Bog2i4NN.cjs +1 -0
  52. package/dist/RichTextField-b-8QbNCJ.js +3 -0
  53. package/dist/SelectField-CAa6c0cB.cjs +1 -0
  54. package/dist/SelectField-DMy5IxRc.js +3 -0
  55. package/dist/SignatureField-BvTPE7Dn.js +3 -0
  56. package/dist/SignatureField-jsb-0AYp.cjs +1 -0
  57. package/dist/SliderField-B7WvKFv7.js +3 -0
  58. package/dist/SliderField-DRjEJSxK.cjs +1 -0
  59. package/dist/SummaryField-DA16Edq3.cjs +1 -0
  60. package/dist/SummaryField-DVSVfKmY.js +3 -0
  61. package/dist/TextAreaField--ut87UiB.js +3 -0
  62. package/dist/TextAreaField-Cxp3DFC6.cjs +1 -0
  63. package/dist/TextField-CkEDGbkQ.js +3 -0
  64. package/dist/TextField-aLAzBaLZ.cjs +1 -0
  65. package/dist/TimeField-D0lF0y_I.cjs +1 -0
  66. package/dist/TimeField-DA_S6lQV.js +3 -0
  67. package/dist/UrlField-D0ugmD3f.cjs +1 -0
  68. package/dist/UrlField-DCnXHR1A.js +3 -0
  69. package/dist/UserField-DGlorzyG.cjs +1 -0
  70. package/dist/UserField-V0GmvyGV.js +3 -0
  71. package/dist/VectorField-BSD85ntU.cjs +1 -0
  72. package/dist/VectorField-CVi5yrrc.js +3 -0
  73. package/dist/fields/src/index.d.ts +8 -0
  74. package/dist/fields/src/record-picker-dialog.stories.d.ts +25 -0
  75. package/dist/fields/src/record-picker.test.d.ts +1 -0
  76. package/dist/fields/src/widgets/LookupField.d.ts +13 -2
  77. package/dist/fields/src/widgets/RecordPickerDialog.d.ts +166 -0
  78. package/dist/fields/src/widgets/_cell-renderer-bridge.d.ts +3 -0
  79. package/dist/index.cjs +4 -9
  80. package/dist/index.js +2229 -2682
  81. package/dist/jsx-runtime-DHCF5ANT.cjs +6 -0
  82. package/dist/jsx-runtime-MxADXuRH.js +189 -0
  83. package/package.json +8 -7
  84. package/src/__tests__/cell-renderers.test.tsx +133 -4
  85. package/src/complex-widgets.test.tsx +426 -2
  86. package/src/index.tsx +76 -22
  87. package/src/record-picker-dialog.stories.tsx +160 -0
  88. package/src/record-picker.test.tsx +1696 -0
  89. package/src/widgets/LookupField.tsx +485 -80
  90. package/src/widgets/RecordPickerDialog.tsx +1182 -0
  91. package/src/widgets/_cell-renderer-bridge.ts +19 -0
@@ -0,0 +1,6 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,a)=>(a=n==null?{}:e(i(n)),c(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),u=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),d=o((e=>{process.env.NODE_ENV!==`production`&&(function(){function t(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===O?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case _:return`Fragment`;case y:return`Profiler`;case v:return`StrictMode`;case C:return`Suspense`;case w:return`SuspenseList`;case D:return`Activity`}if(typeof e==`object`)switch(typeof e.tag==`number`&&console.error(`Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.`),e.$$typeof){case g:return`Portal`;case x:return e.displayName||`Context`;case b:return(e._context.displayName||`Context`)+`.Consumer`;case S:var n=e.render;return e=e.displayName,e||=(e=n.displayName||n.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case T:return n=e.displayName||null,n===null?t(e.type)||`Memo`:n;case E:n=e._payload,e=e._init;try{return t(e(n))}catch{}}return null}function n(e){return``+e}function r(e){try{n(e);var t=!1}catch{t=!0}if(t){t=console;var r=t.error,i=typeof Symbol==`function`&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||`Object`;return r.call(t,`The provided key is an unsupported type %s. This value must be coerced to a string before using it here.`,i),n(e)}}function i(e){if(e===_)return`<>`;if(typeof e==`object`&&e&&e.$$typeof===E)return`<...>`;try{var n=t(e);return n?`<`+n+`>`:`<...>`}catch{return`<...>`}}function a(){var e=k.A;return e===null?null:e.getOwner()}function o(){return Error(`react-stack-top-frame`)}function s(e){if(A.call(e,`key`)){var t=Object.getOwnPropertyDescriptor(e,`key`).get;if(t&&t.isReactWarning)return!1}return e.key!==void 0}function c(e,t){function n(){N||(N=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",t))}n.isReactWarning=!0,Object.defineProperty(e,`key`,{get:n,configurable:!0})}function l(){var e=t(this.type);return P[e]||(P[e]=!0,console.error(`Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.`)),e=this.props.ref,e===void 0?null:e}function u(e,t,n,r,i,a){var o=n.ref;return e={$$typeof:h,type:e,key:t,props:n,_owner:r},(o===void 0?null:o)===null?Object.defineProperty(e,`ref`,{enumerable:!1,value:null}):Object.defineProperty(e,`ref`,{enumerable:!1,get:l}),e._store={},Object.defineProperty(e._store,`validated`,{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,`_debugInfo`,{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,`_debugStack`,{configurable:!1,enumerable:!1,writable:!0,value:i}),Object.defineProperty(e,`_debugTask`,{configurable:!1,enumerable:!1,writable:!0,value:a}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function d(e,n,i,o,l,d){var p=n.children;if(p!==void 0)if(o)if(j(p)){for(o=0;o<p.length;o++)f(p[o]);Object.freeze&&Object.freeze(p)}else console.error(`React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.`);else f(p);if(A.call(n,`key`)){p=t(e);var m=Object.keys(n).filter(function(e){return e!==`key`});o=0<m.length?`{key: someKey, `+m.join(`: ..., `)+`: ...}`:`{key: someKey}`,L[p+o]||(m=0<m.length?`{`+m.join(`: ..., `)+`: ...}`:`{}`,console.error(`A props object containing a "key" prop is being spread into JSX:
2
+ let props = %s;
3
+ <%s {...props} />
4
+ React keys must be passed directly to JSX without using spread:
5
+ let props = %s;
6
+ <%s key={someKey} {...props} />`,o,p,m,p),L[p+o]=!0)}if(p=null,i!==void 0&&(r(i),p=``+i),s(n)&&(r(n.key),p=``+n.key),`key`in n)for(var h in i={},n)h!==`key`&&(i[h]=n[h]);else i=n;return p&&c(i,typeof e==`function`?e.displayName||e.name||`Unknown`:e),u(e,p,i,a(),l,d)}function f(e){p(e)?e._store&&(e._store.validated=1):typeof e==`object`&&e&&e.$$typeof===E&&(e._payload.status===`fulfilled`?p(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function p(e){return typeof e==`object`&&!!e&&e.$$typeof===h}var m=require(`react`),h=Symbol.for(`react.transitional.element`),g=Symbol.for(`react.portal`),_=Symbol.for(`react.fragment`),v=Symbol.for(`react.strict_mode`),y=Symbol.for(`react.profiler`),b=Symbol.for(`react.consumer`),x=Symbol.for(`react.context`),S=Symbol.for(`react.forward_ref`),C=Symbol.for(`react.suspense`),w=Symbol.for(`react.suspense_list`),T=Symbol.for(`react.memo`),E=Symbol.for(`react.lazy`),D=Symbol.for(`react.activity`),O=Symbol.for(`react.client.reference`),k=m.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,A=Object.prototype.hasOwnProperty,j=Array.isArray,M=console.createTask?console.createTask:function(){return null};m={react_stack_bottom_frame:function(e){return e()}};var N,P={},F=m.react_stack_bottom_frame.bind(m,o)(),I=M(i(o)),L={};e.Fragment=_,e.jsx=function(e,t,n){var r=1e4>k.recentlyCreatedOwnerStacks++;return d(e,t,n,!1,r?Error(`react-stack-top-frame`):F,r?M(i(e)):I)},e.jsxs=function(e,t,n){var r=1e4>k.recentlyCreatedOwnerStacks++;return d(e,t,n,!0,r?Error(`react-stack-top-frame`):F,r?M(i(e)):I)}})()})),f=o(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=u():t.exports=d()}));Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return f}});
@@ -0,0 +1,189 @@
1
+ //#region \0rolldown/runtime.js
2
+ var e = Object.defineProperty, t = (e, t) => () => (t || e((t = { exports: {} }).exports, t), t.exports), n = (t, n) => {
3
+ let r = {};
4
+ for (var i in t) e(r, i, {
5
+ get: t[i],
6
+ enumerable: !0
7
+ });
8
+ return n || e(r, Symbol.toStringTag, { value: "Module" }), r;
9
+ }, r = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(e, { get: (e, t) => (typeof require < "u" ? require : e)[t] }) : e)(function(e) {
10
+ if (typeof require < "u") return require.apply(this, arguments);
11
+ throw Error("Calling `require` for \"" + e + "\" in an environment that doesn't expose the `require` function. See https://rolldown.rs/in-depth/bundling-cjs#require-external-modules for more details.");
12
+ }), i = /* @__PURE__ */ t(((e) => {
13
+ var t = Symbol.for("react.transitional.element"), n = Symbol.for("react.fragment");
14
+ function r(e, n, r) {
15
+ var i = null;
16
+ if (r !== void 0 && (i = "" + r), n.key !== void 0 && (i = "" + n.key), "key" in n) for (var a in r = {}, n) a !== "key" && (r[a] = n[a]);
17
+ else r = n;
18
+ return n = r.ref, {
19
+ $$typeof: t,
20
+ type: e,
21
+ key: i,
22
+ ref: n === void 0 ? null : n,
23
+ props: r
24
+ };
25
+ }
26
+ e.Fragment = n, e.jsx = r, e.jsxs = r;
27
+ })), a = /* @__PURE__ */ t(((e) => {
28
+ process.env.NODE_ENV !== "production" && (function() {
29
+ function t(e) {
30
+ if (e == null) return null;
31
+ if (typeof e == "function") return e.$$typeof === k ? null : e.displayName || e.name || null;
32
+ if (typeof e == "string") return e;
33
+ switch (e) {
34
+ case v: return "Fragment";
35
+ case b: return "Profiler";
36
+ case y: return "StrictMode";
37
+ case w: return "Suspense";
38
+ case T: return "SuspenseList";
39
+ case O: return "Activity";
40
+ }
41
+ if (typeof e == "object") switch (typeof e.tag == "number" && console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), e.$$typeof) {
42
+ case _: return "Portal";
43
+ case S: return e.displayName || "Context";
44
+ case x: return (e._context.displayName || "Context") + ".Consumer";
45
+ case C:
46
+ var n = e.render;
47
+ return e = e.displayName, e ||= (e = n.displayName || n.name || "", e === "" ? "ForwardRef" : "ForwardRef(" + e + ")"), e;
48
+ case E: return n = e.displayName || null, n === null ? t(e.type) || "Memo" : n;
49
+ case D:
50
+ n = e._payload, e = e._init;
51
+ try {
52
+ return t(e(n));
53
+ } catch {}
54
+ }
55
+ return null;
56
+ }
57
+ function n(e) {
58
+ return "" + e;
59
+ }
60
+ function i(e) {
61
+ try {
62
+ n(e);
63
+ var t = !1;
64
+ } catch {
65
+ t = !0;
66
+ }
67
+ if (t) {
68
+ t = console;
69
+ var r = t.error, i = typeof Symbol == "function" && Symbol.toStringTag && e[Symbol.toStringTag] || e.constructor.name || "Object";
70
+ return r.call(t, "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.", i), n(e);
71
+ }
72
+ }
73
+ function a(e) {
74
+ if (e === v) return "<>";
75
+ if (typeof e == "object" && e && e.$$typeof === D) return "<...>";
76
+ try {
77
+ var n = t(e);
78
+ return n ? "<" + n + ">" : "<...>";
79
+ } catch {
80
+ return "<...>";
81
+ }
82
+ }
83
+ function o() {
84
+ var e = A.A;
85
+ return e === null ? null : e.getOwner();
86
+ }
87
+ function s() {
88
+ return Error("react-stack-top-frame");
89
+ }
90
+ function c(e) {
91
+ if (j.call(e, "key")) {
92
+ var t = Object.getOwnPropertyDescriptor(e, "key").get;
93
+ if (t && t.isReactWarning) return !1;
94
+ }
95
+ return e.key !== void 0;
96
+ }
97
+ function l(e, t) {
98
+ function n() {
99
+ P || (P = !0, console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)", t));
100
+ }
101
+ n.isReactWarning = !0, Object.defineProperty(e, "key", {
102
+ get: n,
103
+ configurable: !0
104
+ });
105
+ }
106
+ function u() {
107
+ var e = t(this.type);
108
+ return F[e] || (F[e] = !0, console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")), e = this.props.ref, e === void 0 ? null : e;
109
+ }
110
+ function d(e, t, n, r, i, a) {
111
+ var o = n.ref;
112
+ return e = {
113
+ $$typeof: g,
114
+ type: e,
115
+ key: t,
116
+ props: n,
117
+ _owner: r
118
+ }, (o === void 0 ? null : o) === null ? Object.defineProperty(e, "ref", {
119
+ enumerable: !1,
120
+ value: null
121
+ }) : Object.defineProperty(e, "ref", {
122
+ enumerable: !1,
123
+ get: u
124
+ }), e._store = {}, Object.defineProperty(e._store, "validated", {
125
+ configurable: !1,
126
+ enumerable: !1,
127
+ writable: !0,
128
+ value: 0
129
+ }), Object.defineProperty(e, "_debugInfo", {
130
+ configurable: !1,
131
+ enumerable: !1,
132
+ writable: !0,
133
+ value: null
134
+ }), Object.defineProperty(e, "_debugStack", {
135
+ configurable: !1,
136
+ enumerable: !1,
137
+ writable: !0,
138
+ value: i
139
+ }), Object.defineProperty(e, "_debugTask", {
140
+ configurable: !1,
141
+ enumerable: !1,
142
+ writable: !0,
143
+ value: a
144
+ }), Object.freeze && (Object.freeze(e.props), Object.freeze(e)), e;
145
+ }
146
+ function f(e, n, r, a, s, u) {
147
+ var f = n.children;
148
+ if (f !== void 0) if (a) if (M(f)) {
149
+ for (a = 0; a < f.length; a++) p(f[a]);
150
+ Object.freeze && Object.freeze(f);
151
+ } else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");
152
+ else p(f);
153
+ if (j.call(n, "key")) {
154
+ f = t(e);
155
+ var m = Object.keys(n).filter(function(e) {
156
+ return e !== "key";
157
+ });
158
+ a = 0 < m.length ? "{key: someKey, " + m.join(": ..., ") + ": ...}" : "{key: someKey}", R[f + a] || (m = 0 < m.length ? "{" + m.join(": ..., ") + ": ...}" : "{}", console.error("A props object containing a \"key\" prop is being spread into JSX:\n let props = %s;\n <%s {...props} />\nReact keys must be passed directly to JSX without using spread:\n let props = %s;\n <%s key={someKey} {...props} />", a, f, m, f), R[f + a] = !0);
159
+ }
160
+ if (f = null, r !== void 0 && (i(r), f = "" + r), c(n) && (i(n.key), f = "" + n.key), "key" in n) for (var h in r = {}, n) h !== "key" && (r[h] = n[h]);
161
+ else r = n;
162
+ return f && l(r, typeof e == "function" ? e.displayName || e.name || "Unknown" : e), d(e, f, r, o(), s, u);
163
+ }
164
+ function p(e) {
165
+ m(e) ? e._store && (e._store.validated = 1) : typeof e == "object" && e && e.$$typeof === D && (e._payload.status === "fulfilled" ? m(e._payload.value) && e._payload.value._store && (e._payload.value._store.validated = 1) : e._store && (e._store.validated = 1));
166
+ }
167
+ function m(e) {
168
+ return typeof e == "object" && !!e && e.$$typeof === g;
169
+ }
170
+ var h = r("react"), g = Symbol.for("react.transitional.element"), _ = Symbol.for("react.portal"), v = Symbol.for("react.fragment"), y = Symbol.for("react.strict_mode"), b = Symbol.for("react.profiler"), x = Symbol.for("react.consumer"), S = Symbol.for("react.context"), C = Symbol.for("react.forward_ref"), w = Symbol.for("react.suspense"), T = Symbol.for("react.suspense_list"), E = Symbol.for("react.memo"), D = Symbol.for("react.lazy"), O = Symbol.for("react.activity"), k = Symbol.for("react.client.reference"), A = h.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, j = Object.prototype.hasOwnProperty, M = Array.isArray, N = console.createTask ? console.createTask : function() {
171
+ return null;
172
+ };
173
+ h = { react_stack_bottom_frame: function(e) {
174
+ return e();
175
+ } };
176
+ var P, F = {}, I = h.react_stack_bottom_frame.bind(h, s)(), L = N(a(s)), R = {};
177
+ e.Fragment = v, e.jsx = function(e, t, n) {
178
+ var r = 1e4 > A.recentlyCreatedOwnerStacks++;
179
+ return f(e, t, n, !1, r ? Error("react-stack-top-frame") : I, r ? N(a(e)) : L);
180
+ }, e.jsxs = function(e, t, n) {
181
+ var r = 1e4 > A.recentlyCreatedOwnerStacks++;
182
+ return f(e, t, n, !0, r ? Error("react-stack-top-frame") : I, r ? N(a(e)) : L);
183
+ };
184
+ })();
185
+ })), o = /* @__PURE__ */ t(((e, t) => {
186
+ process.env.NODE_ENV === "production" ? t.exports = i() : t.exports = a();
187
+ }));
188
+ //#endregion
189
+ export { n, o as t };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@object-ui/fields",
3
- "version": "3.1.2",
3
+ "version": "3.1.4",
4
4
  "description": "Field renderers and registry for Object UI",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -23,11 +23,12 @@
23
23
  ],
24
24
  "dependencies": {
25
25
  "clsx": "^2.1.1",
26
- "lucide-react": "^0.576.0",
26
+ "lucide-react": "^0.577.0",
27
27
  "tailwind-merge": "^3.5.0",
28
- "@object-ui/components": "3.1.2",
29
- "@object-ui/core": "3.1.2",
30
- "@object-ui/types": "3.1.2"
28
+ "@object-ui/components": "3.1.4",
29
+ "@object-ui/core": "3.1.4",
30
+ "@object-ui/react": "3.1.4",
31
+ "@object-ui/types": "3.1.4"
31
32
  },
32
33
  "peerDependencies": {
33
34
  "react": "^18.0.0 || ^19.0.0",
@@ -36,9 +37,9 @@
36
37
  "devDependencies": {
37
38
  "@types/react": "19.2.14",
38
39
  "@types/react-dom": "19.2.3",
39
- "@vitejs/plugin-react": "^5.1.4",
40
+ "@vitejs/plugin-react": "^6.0.1",
40
41
  "typescript": "^5.9.3",
41
- "vite": "^7.3.1",
42
+ "vite": "^8.0.1",
42
43
  "vite-plugin-dts": "^4.5.4"
43
44
  },
44
45
  "publishConfig": {
@@ -788,7 +788,7 @@ describe('LookupCellRenderer', () => {
788
788
  it('should render object name when value is an object', () => {
789
789
  render(
790
790
  <LookupCellRenderer
791
- value={{ name: 'Acme Corp', _id: '123' }}
791
+ value={{ name: 'Acme Corp', id: '123' }}
792
792
  field={{ name: 'account', type: 'lookup' } as any}
793
793
  />
794
794
  );
@@ -798,17 +798,17 @@ describe('LookupCellRenderer', () => {
798
798
  it('should render object label when name is missing', () => {
799
799
  render(
800
800
  <LookupCellRenderer
801
- value={{ label: 'Widget Co', _id: '456' }}
801
+ value={{ label: 'Widget Co', id: '456' }}
802
802
  field={{ name: 'account', type: 'lookup' } as any}
803
803
  />
804
804
  );
805
805
  expect(screen.getByText('Widget Co')).toBeInTheDocument();
806
806
  });
807
807
 
808
- it('should render object _id as fallback', () => {
808
+ it('should render object id as fallback', () => {
809
809
  render(
810
810
  <LookupCellRenderer
811
- value={{ _id: '789' }}
811
+ value={{ id: '789' }}
812
812
  field={{ name: 'account', type: 'lookup' } as any}
813
813
  />
814
814
  );
@@ -1041,3 +1041,132 @@ describe('PercentCellRenderer progress-type fields', () => {
1041
1041
  expect(bar).toHaveAttribute('aria-valuenow', '50');
1042
1042
  });
1043
1043
  });
1044
+
1045
+ // =========================================================================
1046
+ // Object value safety (coerceToSafeValue) — prevents React error #310
1047
+ // =========================================================================
1048
+ import {
1049
+ NumberCellRenderer,
1050
+ CurrencyCellRenderer,
1051
+ FormulaCellRenderer,
1052
+ coerceToSafeValue,
1053
+ } from '../index';
1054
+
1055
+ describe('coerceToSafeValue', () => {
1056
+ it('should pass through primitives unchanged', () => {
1057
+ expect(coerceToSafeValue('hello')).toBe('hello');
1058
+ expect(coerceToSafeValue(42)).toBe(42);
1059
+ expect(coerceToSafeValue(true)).toBe(true);
1060
+ expect(coerceToSafeValue(null)).toBe(null);
1061
+ expect(coerceToSafeValue(undefined)).toBe(undefined);
1062
+ });
1063
+
1064
+ it('should extract number from MongoDB $numberDecimal', () => {
1065
+ expect(coerceToSafeValue({ $numberDecimal: '250000' })).toBe(250000);
1066
+ });
1067
+
1068
+ it('should extract string from MongoDB $oid', () => {
1069
+ expect(coerceToSafeValue({ $oid: 'abc123' })).toBe('abc123');
1070
+ });
1071
+
1072
+ it('should extract string from MongoDB $date', () => {
1073
+ expect(coerceToSafeValue({ $date: '2024-01-01T00:00:00Z' })).toBe('2024-01-01T00:00:00Z');
1074
+ });
1075
+
1076
+ it('should extract name from expanded reference object', () => {
1077
+ expect(coerceToSafeValue({ id: 'x', name: 'Acme Corp' })).toBe('Acme Corp');
1078
+ });
1079
+
1080
+ it('should extract label when name is not present', () => {
1081
+ expect(coerceToSafeValue({ id: 'x', label: 'Active' })).toBe('Active');
1082
+ });
1083
+
1084
+ it('should fall back to id when no name/label', () => {
1085
+ expect(coerceToSafeValue({ id: 'abc123' })).toBe('abc123');
1086
+ });
1087
+
1088
+ it('should handle arrays of primitives', () => {
1089
+ expect(coerceToSafeValue(['a', 'b', 'c'])).toBe('a, b, c');
1090
+ });
1091
+
1092
+ it('should handle arrays of objects', () => {
1093
+ expect(coerceToSafeValue([{ name: 'Alice' }, { name: 'Bob' }])).toBe('Alice, Bob');
1094
+ });
1095
+
1096
+ it('should convert Date to ISO string', () => {
1097
+ const d = new Date('2024-06-15T12:00:00Z');
1098
+ expect(coerceToSafeValue(d)).toBe('2024-06-15T12:00:00.000Z');
1099
+ });
1100
+ });
1101
+
1102
+ describe('NumberCellRenderer object safety', () => {
1103
+ it('should handle MongoDB $numberDecimal without crashing', () => {
1104
+ const { container } = render(
1105
+ <NumberCellRenderer
1106
+ value={{ $numberDecimal: '250000' }}
1107
+ field={{ name: 'amount', type: 'number' } as any}
1108
+ />
1109
+ );
1110
+ expect(container.innerHTML).not.toBe('');
1111
+ expect(screen.getByText('250,000')).toBeInTheDocument();
1112
+ });
1113
+
1114
+ it('should handle expanded reference object without crashing', () => {
1115
+ const { container } = render(
1116
+ <NumberCellRenderer
1117
+ value={{ id: 'abc', name: 'Not a number' }}
1118
+ field={{ name: 'amount', type: 'number' } as any}
1119
+ />
1120
+ );
1121
+ expect(container.innerHTML).not.toBe('');
1122
+ // Should render the extracted name string, not crash
1123
+ expect(screen.getByText('Not a number')).toBeInTheDocument();
1124
+ });
1125
+ });
1126
+
1127
+ describe('CurrencyCellRenderer object safety', () => {
1128
+ it('should handle MongoDB $numberDecimal', () => {
1129
+ const { container } = render(
1130
+ <CurrencyCellRenderer
1131
+ value={{ $numberDecimal: '5000' }}
1132
+ field={{ name: 'price', type: 'currency', currency: 'USD' } as any}
1133
+ />
1134
+ );
1135
+ expect(container.innerHTML).not.toBe('');
1136
+ expect(screen.getByText(/5,000/)).toBeInTheDocument();
1137
+ });
1138
+ });
1139
+
1140
+ describe('TextCellRenderer object safety', () => {
1141
+ it('should extract name from object instead of [object Object]', () => {
1142
+ render(
1143
+ <TextCellRenderer
1144
+ value={{ id: 'abc', name: 'Acme Corp' }}
1145
+ field={{ name: 'company', type: 'text' } as any}
1146
+ />
1147
+ );
1148
+ expect(screen.getByText('Acme Corp')).toBeInTheDocument();
1149
+ });
1150
+
1151
+ it('should handle arrays of objects', () => {
1152
+ render(
1153
+ <TextCellRenderer
1154
+ value={[{ name: 'Alice' }, { name: 'Bob' }]}
1155
+ field={{ name: 'contacts', type: 'text' } as any}
1156
+ />
1157
+ );
1158
+ expect(screen.getByText('Alice, Bob')).toBeInTheDocument();
1159
+ });
1160
+ });
1161
+
1162
+ describe('FormulaCellRenderer object safety', () => {
1163
+ it('should extract value from MongoDB $numberDecimal', () => {
1164
+ render(
1165
+ <FormulaCellRenderer
1166
+ value={{ $numberDecimal: '42.5' }}
1167
+ field={{ name: 'calc', type: 'formula' } as any}
1168
+ />
1169
+ );
1170
+ expect(screen.getByText('42.5')).toBeInTheDocument();
1171
+ });
1172
+ });