@almadar/ui 2.47.1 → 2.48.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.
@@ -47219,15 +47219,16 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate }) {
47219
47219
  return orbitals.filter((o) => typeof o.name === "string").map((o) => o.name);
47220
47220
  }, [schema]);
47221
47221
  const entityStore = useEntityStore();
47222
- React125.useEffect(() => {
47223
- if (!serverUrl && mockData) {
47224
- for (const [entityType, records] of Object.entries(mockData)) {
47225
- if (Array.isArray(records)) {
47226
- entityStore.setAll(entityType, records);
47227
- }
47222
+ const seededRef = React125.useRef("");
47223
+ const mockKey = mockData ? Object.keys(mockData).sort().join(",") : "";
47224
+ if (!serverUrl && mockData && seededRef.current !== mockKey) {
47225
+ seededRef.current = mockKey;
47226
+ for (const [entityType, records] of Object.entries(mockData)) {
47227
+ if (Array.isArray(records)) {
47228
+ entityStore.setAll(entityType, records);
47228
47229
  }
47229
47230
  }
47230
- }, [mockData, serverUrl, entityStore]);
47231
+ }
47231
47232
  const inner = /* @__PURE__ */ jsxRuntime.jsx(VerificationProvider, { enabled: true, children: /* @__PURE__ */ jsxRuntime.jsx(SlotsProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(EntitySchemaProvider, { entities: Array.from(allEntities.values()), children: [
47232
47233
  /* @__PURE__ */ jsxRuntime.jsx(TraitInitializer, { traits: allPageTraits, orbitalNames: serverUrl ? orbitalNames : void 0, onNavigate }),
47233
47234
  /* @__PURE__ */ jsxRuntime.jsx(SlotBridge, {}),
package/dist/avl/index.js CHANGED
@@ -47171,15 +47171,16 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate }) {
47171
47171
  return orbitals.filter((o) => typeof o.name === "string").map((o) => o.name);
47172
47172
  }, [schema]);
47173
47173
  const entityStore = useEntityStore();
47174
- useEffect(() => {
47175
- if (!serverUrl && mockData) {
47176
- for (const [entityType, records] of Object.entries(mockData)) {
47177
- if (Array.isArray(records)) {
47178
- entityStore.setAll(entityType, records);
47179
- }
47174
+ const seededRef = useRef("");
47175
+ const mockKey = mockData ? Object.keys(mockData).sort().join(",") : "";
47176
+ if (!serverUrl && mockData && seededRef.current !== mockKey) {
47177
+ seededRef.current = mockKey;
47178
+ for (const [entityType, records] of Object.entries(mockData)) {
47179
+ if (Array.isArray(records)) {
47180
+ entityStore.setAll(entityType, records);
47180
47181
  }
47181
47182
  }
47182
- }, [mockData, serverUrl, entityStore]);
47183
+ }
47183
47184
  const inner = /* @__PURE__ */ jsx(VerificationProvider, { enabled: true, children: /* @__PURE__ */ jsx(SlotsProvider, { children: /* @__PURE__ */ jsxs(EntitySchemaProvider, { entities: Array.from(allEntities.values()), children: [
47184
47185
  /* @__PURE__ */ jsx(TraitInitializer, { traits: allPageTraits, orbitalNames: serverUrl ? orbitalNames : void 0, onNavigate }),
47185
47186
  /* @__PURE__ */ jsx(SlotBridge, {}),
@@ -69,6 +69,13 @@ export interface DataGridProps {
69
69
  hasMore?: boolean;
70
70
  /** Render prop for custom per-item content. When provided, `fields` and `itemActions` are ignored. */
71
71
  children?: (item: Record<string, unknown>, index: number) => React.ReactNode;
72
+ /**
73
+ * Per-item render function (schema-level alias for children render prop).
74
+ * In .orb schemas: ["fn", "item", { pattern tree with @item.field bindings }]
75
+ * The compiler converts this to the children render prop.
76
+ * @deprecated Use children render prop in React code. This prop exists for pattern registry sync.
77
+ */
78
+ renderItem?: (item: Record<string, unknown>, index: number) => React.ReactNode;
72
79
  /** Max items to show before "Show More" button. Defaults to 0 (disabled). */
73
80
  pageSize?: number;
74
81
  }
@@ -89,6 +89,13 @@ export interface DataListProps {
89
89
  hasMore?: boolean;
90
90
  /** Render prop for custom per-item content. When provided, `fields` and `itemActions` are ignored. */
91
91
  children?: (item: Record<string, unknown>, index: number) => React.ReactNode;
92
+ /**
93
+ * Per-item render function (schema-level alias for children render prop).
94
+ * In .orb schemas: ["fn", "item", { pattern tree with @item.field bindings }]
95
+ * The compiler converts this to the children render prop.
96
+ * @deprecated Use children render prop in React code. This prop exists for pattern registry sync.
97
+ */
98
+ renderItem?: (item: Record<string, unknown>, index: number) => React.ReactNode;
92
99
  /** Max items to show before "Show More" button. Defaults to 5. Set to 0 to disable. */
93
100
  pageSize?: number;
94
101
  }
@@ -33643,15 +33643,16 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate }) {
33643
33643
  return orbitals.filter((o) => typeof o.name === "string").map((o) => o.name);
33644
33644
  }, [schema]);
33645
33645
  const entityStore = useEntityStore();
33646
- React117.useEffect(() => {
33647
- if (!serverUrl && mockData) {
33648
- for (const [entityType, records] of Object.entries(mockData)) {
33649
- if (Array.isArray(records)) {
33650
- entityStore.setAll(entityType, records);
33651
- }
33646
+ const seededRef = React117.useRef("");
33647
+ const mockKey = mockData ? Object.keys(mockData).sort().join(",") : "";
33648
+ if (!serverUrl && mockData && seededRef.current !== mockKey) {
33649
+ seededRef.current = mockKey;
33650
+ for (const [entityType, records] of Object.entries(mockData)) {
33651
+ if (Array.isArray(records)) {
33652
+ entityStore.setAll(entityType, records);
33652
33653
  }
33653
33654
  }
33654
- }, [mockData, serverUrl, entityStore]);
33655
+ }
33655
33656
  const inner = /* @__PURE__ */ jsxRuntime.jsx(VerificationProvider, { enabled: true, children: /* @__PURE__ */ jsxRuntime.jsx(SlotsProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(EntitySchemaProvider, { entities: Array.from(allEntities.values()), children: [
33656
33657
  /* @__PURE__ */ jsxRuntime.jsx(TraitInitializer, { traits: allPageTraits, orbitalNames: serverUrl ? orbitalNames : void 0, onNavigate }),
33657
33658
  /* @__PURE__ */ jsxRuntime.jsx(SlotBridge, {}),
@@ -33596,15 +33596,16 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate }) {
33596
33596
  return orbitals.filter((o) => typeof o.name === "string").map((o) => o.name);
33597
33597
  }, [schema]);
33598
33598
  const entityStore = useEntityStore();
33599
- useEffect(() => {
33600
- if (!serverUrl && mockData) {
33601
- for (const [entityType, records] of Object.entries(mockData)) {
33602
- if (Array.isArray(records)) {
33603
- entityStore.setAll(entityType, records);
33604
- }
33599
+ const seededRef = useRef("");
33600
+ const mockKey = mockData ? Object.keys(mockData).sort().join(",") : "";
33601
+ if (!serverUrl && mockData && seededRef.current !== mockKey) {
33602
+ seededRef.current = mockKey;
33603
+ for (const [entityType, records] of Object.entries(mockData)) {
33604
+ if (Array.isArray(records)) {
33605
+ entityStore.setAll(entityType, records);
33605
33606
  }
33606
33607
  }
33607
- }, [mockData, serverUrl, entityStore]);
33608
+ }
33608
33609
  const inner = /* @__PURE__ */ jsx(VerificationProvider, { enabled: true, children: /* @__PURE__ */ jsx(SlotsProvider, { children: /* @__PURE__ */ jsxs(EntitySchemaProvider, { entities: Array.from(allEntities.values()), children: [
33609
33610
  /* @__PURE__ */ jsx(TraitInitializer, { traits: allPageTraits, orbitalNames: serverUrl ? orbitalNames : void 0, onNavigate }),
33610
33611
  /* @__PURE__ */ jsx(SlotBridge, {}),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@almadar/ui",
3
- "version": "2.47.1",
3
+ "version": "2.48.2",
4
4
  "description": "React UI components, hooks, and providers for Almadar",
5
5
  "type": "module",
6
6
  "main": "./dist/components/index.js",