@almadar/ui 5.125.0 → 5.127.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.
@@ -18876,6 +18876,32 @@ var init_ButtonGroup = __esm({
18876
18876
  ButtonGroup.displayName = "ButtonGroup";
18877
18877
  }
18878
18878
  });
18879
+
18880
+ // lib/getNestedValue.ts
18881
+ function getNestedValue(obj, path) {
18882
+ if (obj === null || obj === void 0 || !path) {
18883
+ return void 0;
18884
+ }
18885
+ if (!path.includes(".")) {
18886
+ return obj[path];
18887
+ }
18888
+ const parts = path.split(".");
18889
+ let value = obj;
18890
+ for (const part of parts) {
18891
+ if (value === null || value === void 0) {
18892
+ return void 0;
18893
+ }
18894
+ if (typeof value !== "object" || Array.isArray(value)) {
18895
+ return void 0;
18896
+ }
18897
+ value = value[part];
18898
+ }
18899
+ return value;
18900
+ }
18901
+ var init_getNestedValue = __esm({
18902
+ "lib/getNestedValue.ts"() {
18903
+ }
18904
+ });
18879
18905
  function useSwipeGesture(callbacks, options = {}) {
18880
18906
  const { threshold = 50, velocityThreshold = 0.3, preventDefault = false } = options;
18881
18907
  const startX = React84.useRef(0);
@@ -18989,17 +19015,31 @@ function getWeekDays(start) {
18989
19015
  }
18990
19016
  return days;
18991
19017
  }
18992
- function generateDefaultTimeSlots() {
19018
+ function eventStartDate(event, startField) {
19019
+ const raw = getNestedValue(event, startField);
19020
+ return new Date(raw ?? "");
19021
+ }
19022
+ function generateDefaultTimeSlots(events2, startField) {
19023
+ let first = DEFAULT_FIRST_HOUR;
19024
+ let last = DEFAULT_LAST_HOUR;
19025
+ for (const ev of events2) {
19026
+ const start = eventStartDate(ev, startField);
19027
+ if (Number.isNaN(start.getTime())) continue;
19028
+ const hour = start.getHours();
19029
+ if (hour < first) first = hour;
19030
+ if (hour > last) last = hour;
19031
+ }
18993
19032
  const slots = [];
18994
- for (let hour = 9; hour <= 17; hour++) {
18995
- slots.push(`${hour.toString().padStart(2, "0")}:00`);
19033
+ for (let hour = first; hour <= last; hour++) {
19034
+ slots.push(slotLabel(hour));
18996
19035
  }
18997
19036
  return slots;
18998
19037
  }
18999
- function eventInSlot(event, day, slotTime) {
19000
- const eventStart = new Date(event.startTime);
19001
- const [slotHour, slotMinute] = slotTime.split(":").map(Number);
19002
- return eventStart.toDateString() === day.toDateString() && eventStart.getHours() === slotHour && eventStart.getMinutes() === slotMinute;
19038
+ function eventInSlot(event, day, slotTime, startField) {
19039
+ const eventStart = eventStartDate(event, startField);
19040
+ if (Number.isNaN(eventStart.getTime())) return false;
19041
+ const [slotHour] = slotTime.split(":").map(Number);
19042
+ return eventStart.toDateString() === day.toDateString() && eventStart.getHours() === slotHour;
19003
19043
  }
19004
19044
  function CalendarGrid({
19005
19045
  weekStart,
@@ -19013,7 +19053,12 @@ function CalendarGrid({
19013
19053
  longPressPayload,
19014
19054
  swipeLeftEvent,
19015
19055
  swipeRightEvent,
19016
- dayWindow = "auto"
19056
+ dayWindow = "auto",
19057
+ titleField = "title",
19058
+ startField = "startTime",
19059
+ colorField = "color",
19060
+ children,
19061
+ renderItem
19017
19062
  }) {
19018
19063
  const evs = Array.isArray(events2) ? events2 : events2 ? [events2] : [];
19019
19064
  const eventBus = useEventBus();
@@ -19028,8 +19073,8 @@ function CalendarGrid({
19028
19073
  [resolvedWeekStart]
19029
19074
  );
19030
19075
  const resolvedTimeSlots = React84.useMemo(
19031
- () => timeSlots ?? generateDefaultTimeSlots(),
19032
- [timeSlots]
19076
+ () => timeSlots ?? generateDefaultTimeSlots(evs, startField),
19077
+ [timeSlots, evs, startField]
19033
19078
  );
19034
19079
  const visibleCount = useDayWindow(dayWindow);
19035
19080
  const [dayOffset, setDayOffset] = React84.useState(0);
@@ -19066,9 +19111,9 @@ function CalendarGrid({
19066
19111
  );
19067
19112
  const eventsForDayCount = React84.useCallback(
19068
19113
  (day) => evs.filter(
19069
- (ev) => new Date(ev.startTime).toDateString() === day.toDateString()
19114
+ (ev) => eventStartDate(ev, startField).toDateString() === day.toDateString()
19070
19115
  ).length,
19071
- [events2]
19116
+ [events2, startField]
19072
19117
  );
19073
19118
  const swipeCallbacks = React84.useMemo(() => ({
19074
19119
  onSwipeLeft: swipeLeftEvent ? () => eventBus.emit(`UI:${swipeLeftEvent}`, {}) : void 0,
@@ -19087,8 +19132,11 @@ function CalendarGrid({
19087
19132
  eventBus.emit(`UI:${longPressEvent}`, { date: day.toISOString(), time, ...longPressPayload });
19088
19133
  }, 500);
19089
19134
  }, [longPressEvent, longPressPayload, eventBus]);
19135
+ const renderChip = children ?? renderItem;
19090
19136
  const renderEvent = (event) => {
19091
- const color = event.color;
19137
+ const color = getNestedValue(event, colorField);
19138
+ const label = String(getNestedValue(event, titleField) ?? "");
19139
+ const eventIndex = evs.indexOf(event);
19092
19140
  return /* @__PURE__ */ jsxRuntime.jsx(
19093
19141
  Box,
19094
19142
  {
@@ -19100,7 +19148,7 @@ function CalendarGrid({
19100
19148
  color ? color : "bg-primary/10 border-primary/30 text-primary"
19101
19149
  ),
19102
19150
  onClick: (e) => handleEventClick(event, e),
19103
- children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "truncate font-medium", children: event.title })
19151
+ children: renderChip ? renderChip(event, eventIndex) : /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "truncate font-medium", children: label })
19104
19152
  },
19105
19153
  event.id
19106
19154
  );
@@ -19184,7 +19232,7 @@ function CalendarGrid({
19184
19232
  ) }),
19185
19233
  visibleDays.map((day) => {
19186
19234
  const slotEvents = evs.filter(
19187
- (ev) => eventInSlot(ev, day, time)
19235
+ (ev) => eventInSlot(ev, day, time, startField)
19188
19236
  );
19189
19237
  const isToday = day.toDateString() === (/* @__PURE__ */ new Date()).toDateString();
19190
19238
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -19216,11 +19264,12 @@ function CalendarGrid({
19216
19264
  }
19217
19265
  );
19218
19266
  }
19219
- var SHORT_DATE;
19267
+ var SHORT_DATE, DEFAULT_FIRST_HOUR, DEFAULT_LAST_HOUR, slotLabel;
19220
19268
  var init_CalendarGrid = __esm({
19221
19269
  "components/core/molecules/CalendarGrid.tsx"() {
19222
19270
  "use client";
19223
19271
  init_cn();
19272
+ init_getNestedValue();
19224
19273
  init_Box();
19225
19274
  init_Button();
19226
19275
  init_Stack();
@@ -19231,35 +19280,12 @@ var init_CalendarGrid = __esm({
19231
19280
  init_useEventBus();
19232
19281
  init_useSwipeGesture();
19233
19282
  SHORT_DATE = { month: "short", day: "numeric" };
19283
+ DEFAULT_FIRST_HOUR = 9;
19284
+ DEFAULT_LAST_HOUR = 17;
19285
+ slotLabel = (hour) => `${hour.toString().padStart(2, "0")}:00`;
19234
19286
  CalendarGrid.displayName = "CalendarGrid";
19235
19287
  }
19236
19288
  });
19237
-
19238
- // lib/getNestedValue.ts
19239
- function getNestedValue(obj, path) {
19240
- if (obj === null || obj === void 0 || !path) {
19241
- return void 0;
19242
- }
19243
- if (!path.includes(".")) {
19244
- return obj[path];
19245
- }
19246
- const parts = path.split(".");
19247
- let value = obj;
19248
- for (const part of parts) {
19249
- if (value === null || value === void 0) {
19250
- return void 0;
19251
- }
19252
- if (typeof value !== "object" || Array.isArray(value)) {
19253
- return void 0;
19254
- }
19255
- value = value[part];
19256
- }
19257
- return value;
19258
- }
19259
- var init_getNestedValue = __esm({
19260
- "lib/getNestedValue.ts"() {
19261
- }
19262
- });
19263
19289
  var Pagination;
19264
19290
  var init_Pagination = __esm({
19265
19291
  "components/core/molecules/Pagination.tsx"() {
@@ -43957,6 +43983,13 @@ function MaybeTraitScope({
43957
43983
  if (wrap) {
43958
43984
  return /* @__PURE__ */ jsxRuntime.jsx(providers.TraitScopeProvider, { orbital, trait: sourceTrait, children });
43959
43985
  }
43986
+ if (sourceTrait !== void 0 && schemaCtx !== null) {
43987
+ scopeWrapLog.warn("decline", {
43988
+ sourceTrait,
43989
+ orbitalsByTraitSize: schemaCtx.orbitalsByTrait.size,
43990
+ reason: "sourceTrait not in orbitalsByTrait \u2014 children render unscoped"
43991
+ });
43992
+ }
43960
43993
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
43961
43994
  }
43962
43995
  function UISlotComponent({
@@ -44254,7 +44287,7 @@ function renderPatternChildren(children, onDismiss, parentId = "root", parentPat
44254
44287
  const childId = `${parentId}-${index}`;
44255
44288
  const childPath = parentPath === "root" ? `root.children.${index}` : `${parentPath}.children.${index}`;
44256
44289
  const childAsRecord = child;
44257
- const { type: _childType, props: nestedProps, _id: _childNodeId, children: _childChildren, ...flatProps } = childAsRecord;
44290
+ const { type: _childType, props: nestedProps, _id: _childNodeId, _sourceTrait: childSourceTrait, children: _childChildren, ...flatProps } = childAsRecord;
44258
44291
  const resolvedProps = nestedProps !== void 0 ? nestedProps : flatProps;
44259
44292
  if (_childChildren !== void 0 && nestedProps === void 0) {
44260
44293
  resolvedProps.children = _childChildren;
@@ -44269,11 +44302,14 @@ function renderPatternChildren(children, onDismiss, parentId = "root", parentPat
44269
44302
  // (e.g. form-section inside a stack) can resolve entityDef via
44270
44303
  // the trait's linkedEntity for form-field enrichment. The orbCtx
44271
44304
  // (slot/transition/state/entity) propagates the same way so every
44272
- // nested node carries a complete contextual-edit address.
44273
- ...sourceTrait !== void 0 && { sourceTrait },
44305
+ // nested node carries a complete contextual-edit address. A child
44306
+ // carrying its own `_sourceTrait` (multi-source slot stack) owns it
44307
+ // outright — inheriting the synthetic wrapper's sentinel instead
44308
+ // would erase the real owner.
44309
+ ...childSourceTrait !== void 0 ? { sourceTrait: childSourceTrait } : sourceTrait !== void 0 && { sourceTrait },
44274
44310
  ...orbCtx ?? {}
44275
44311
  };
44276
- return /* @__PURE__ */ jsxRuntime.jsx(
44312
+ const renderedChild = /* @__PURE__ */ jsxRuntime.jsx(
44277
44313
  SlotContentRenderer,
44278
44314
  {
44279
44315
  content: childContent,
@@ -44282,6 +44318,7 @@ function renderPatternChildren(children, onDismiss, parentId = "root", parentPat
44282
44318
  },
44283
44319
  childId
44284
44320
  );
44321
+ return childSourceTrait !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx(MaybeTraitScope, { sourceTrait: childSourceTrait, children: renderedChild }, childId) : renderedChild;
44285
44322
  });
44286
44323
  }
44287
44324
  function toDrawableNodes(children) {
@@ -18801,6 +18801,32 @@ var init_ButtonGroup = __esm({
18801
18801
  ButtonGroup.displayName = "ButtonGroup";
18802
18802
  }
18803
18803
  });
18804
+
18805
+ // lib/getNestedValue.ts
18806
+ function getNestedValue(obj, path) {
18807
+ if (obj === null || obj === void 0 || !path) {
18808
+ return void 0;
18809
+ }
18810
+ if (!path.includes(".")) {
18811
+ return obj[path];
18812
+ }
18813
+ const parts = path.split(".");
18814
+ let value = obj;
18815
+ for (const part of parts) {
18816
+ if (value === null || value === void 0) {
18817
+ return void 0;
18818
+ }
18819
+ if (typeof value !== "object" || Array.isArray(value)) {
18820
+ return void 0;
18821
+ }
18822
+ value = value[part];
18823
+ }
18824
+ return value;
18825
+ }
18826
+ var init_getNestedValue = __esm({
18827
+ "lib/getNestedValue.ts"() {
18828
+ }
18829
+ });
18804
18830
  function useSwipeGesture(callbacks, options = {}) {
18805
18831
  const { threshold = 50, velocityThreshold = 0.3, preventDefault = false } = options;
18806
18832
  const startX = useRef(0);
@@ -18914,17 +18940,31 @@ function getWeekDays(start) {
18914
18940
  }
18915
18941
  return days;
18916
18942
  }
18917
- function generateDefaultTimeSlots() {
18943
+ function eventStartDate(event, startField) {
18944
+ const raw = getNestedValue(event, startField);
18945
+ return new Date(raw ?? "");
18946
+ }
18947
+ function generateDefaultTimeSlots(events2, startField) {
18948
+ let first = DEFAULT_FIRST_HOUR;
18949
+ let last = DEFAULT_LAST_HOUR;
18950
+ for (const ev of events2) {
18951
+ const start = eventStartDate(ev, startField);
18952
+ if (Number.isNaN(start.getTime())) continue;
18953
+ const hour = start.getHours();
18954
+ if (hour < first) first = hour;
18955
+ if (hour > last) last = hour;
18956
+ }
18918
18957
  const slots = [];
18919
- for (let hour = 9; hour <= 17; hour++) {
18920
- slots.push(`${hour.toString().padStart(2, "0")}:00`);
18958
+ for (let hour = first; hour <= last; hour++) {
18959
+ slots.push(slotLabel(hour));
18921
18960
  }
18922
18961
  return slots;
18923
18962
  }
18924
- function eventInSlot(event, day, slotTime) {
18925
- const eventStart = new Date(event.startTime);
18926
- const [slotHour, slotMinute] = slotTime.split(":").map(Number);
18927
- return eventStart.toDateString() === day.toDateString() && eventStart.getHours() === slotHour && eventStart.getMinutes() === slotMinute;
18963
+ function eventInSlot(event, day, slotTime, startField) {
18964
+ const eventStart = eventStartDate(event, startField);
18965
+ if (Number.isNaN(eventStart.getTime())) return false;
18966
+ const [slotHour] = slotTime.split(":").map(Number);
18967
+ return eventStart.toDateString() === day.toDateString() && eventStart.getHours() === slotHour;
18928
18968
  }
18929
18969
  function CalendarGrid({
18930
18970
  weekStart,
@@ -18938,7 +18978,12 @@ function CalendarGrid({
18938
18978
  longPressPayload,
18939
18979
  swipeLeftEvent,
18940
18980
  swipeRightEvent,
18941
- dayWindow = "auto"
18981
+ dayWindow = "auto",
18982
+ titleField = "title",
18983
+ startField = "startTime",
18984
+ colorField = "color",
18985
+ children,
18986
+ renderItem
18942
18987
  }) {
18943
18988
  const evs = Array.isArray(events2) ? events2 : events2 ? [events2] : [];
18944
18989
  const eventBus = useEventBus();
@@ -18953,8 +18998,8 @@ function CalendarGrid({
18953
18998
  [resolvedWeekStart]
18954
18999
  );
18955
19000
  const resolvedTimeSlots = useMemo(
18956
- () => timeSlots ?? generateDefaultTimeSlots(),
18957
- [timeSlots]
19001
+ () => timeSlots ?? generateDefaultTimeSlots(evs, startField),
19002
+ [timeSlots, evs, startField]
18958
19003
  );
18959
19004
  const visibleCount = useDayWindow(dayWindow);
18960
19005
  const [dayOffset, setDayOffset] = useState(0);
@@ -18991,9 +19036,9 @@ function CalendarGrid({
18991
19036
  );
18992
19037
  const eventsForDayCount = useCallback(
18993
19038
  (day) => evs.filter(
18994
- (ev) => new Date(ev.startTime).toDateString() === day.toDateString()
19039
+ (ev) => eventStartDate(ev, startField).toDateString() === day.toDateString()
18995
19040
  ).length,
18996
- [events2]
19041
+ [events2, startField]
18997
19042
  );
18998
19043
  const swipeCallbacks = useMemo(() => ({
18999
19044
  onSwipeLeft: swipeLeftEvent ? () => eventBus.emit(`UI:${swipeLeftEvent}`, {}) : void 0,
@@ -19012,8 +19057,11 @@ function CalendarGrid({
19012
19057
  eventBus.emit(`UI:${longPressEvent}`, { date: day.toISOString(), time, ...longPressPayload });
19013
19058
  }, 500);
19014
19059
  }, [longPressEvent, longPressPayload, eventBus]);
19060
+ const renderChip = children ?? renderItem;
19015
19061
  const renderEvent = (event) => {
19016
- const color = event.color;
19062
+ const color = getNestedValue(event, colorField);
19063
+ const label = String(getNestedValue(event, titleField) ?? "");
19064
+ const eventIndex = evs.indexOf(event);
19017
19065
  return /* @__PURE__ */ jsx(
19018
19066
  Box,
19019
19067
  {
@@ -19025,7 +19073,7 @@ function CalendarGrid({
19025
19073
  color ? color : "bg-primary/10 border-primary/30 text-primary"
19026
19074
  ),
19027
19075
  onClick: (e) => handleEventClick(event, e),
19028
- children: /* @__PURE__ */ jsx(Typography, { variant: "small", className: "truncate font-medium", children: event.title })
19076
+ children: renderChip ? renderChip(event, eventIndex) : /* @__PURE__ */ jsx(Typography, { variant: "small", className: "truncate font-medium", children: label })
19029
19077
  },
19030
19078
  event.id
19031
19079
  );
@@ -19109,7 +19157,7 @@ function CalendarGrid({
19109
19157
  ) }),
19110
19158
  visibleDays.map((day) => {
19111
19159
  const slotEvents = evs.filter(
19112
- (ev) => eventInSlot(ev, day, time)
19160
+ (ev) => eventInSlot(ev, day, time, startField)
19113
19161
  );
19114
19162
  const isToday = day.toDateString() === (/* @__PURE__ */ new Date()).toDateString();
19115
19163
  return /* @__PURE__ */ jsx(
@@ -19141,11 +19189,12 @@ function CalendarGrid({
19141
19189
  }
19142
19190
  );
19143
19191
  }
19144
- var SHORT_DATE;
19192
+ var SHORT_DATE, DEFAULT_FIRST_HOUR, DEFAULT_LAST_HOUR, slotLabel;
19145
19193
  var init_CalendarGrid = __esm({
19146
19194
  "components/core/molecules/CalendarGrid.tsx"() {
19147
19195
  "use client";
19148
19196
  init_cn();
19197
+ init_getNestedValue();
19149
19198
  init_Box();
19150
19199
  init_Button();
19151
19200
  init_Stack();
@@ -19156,35 +19205,12 @@ var init_CalendarGrid = __esm({
19156
19205
  init_useEventBus();
19157
19206
  init_useSwipeGesture();
19158
19207
  SHORT_DATE = { month: "short", day: "numeric" };
19208
+ DEFAULT_FIRST_HOUR = 9;
19209
+ DEFAULT_LAST_HOUR = 17;
19210
+ slotLabel = (hour) => `${hour.toString().padStart(2, "0")}:00`;
19159
19211
  CalendarGrid.displayName = "CalendarGrid";
19160
19212
  }
19161
19213
  });
19162
-
19163
- // lib/getNestedValue.ts
19164
- function getNestedValue(obj, path) {
19165
- if (obj === null || obj === void 0 || !path) {
19166
- return void 0;
19167
- }
19168
- if (!path.includes(".")) {
19169
- return obj[path];
19170
- }
19171
- const parts = path.split(".");
19172
- let value = obj;
19173
- for (const part of parts) {
19174
- if (value === null || value === void 0) {
19175
- return void 0;
19176
- }
19177
- if (typeof value !== "object" || Array.isArray(value)) {
19178
- return void 0;
19179
- }
19180
- value = value[part];
19181
- }
19182
- return value;
19183
- }
19184
- var init_getNestedValue = __esm({
19185
- "lib/getNestedValue.ts"() {
19186
- }
19187
- });
19188
19214
  var Pagination;
19189
19215
  var init_Pagination = __esm({
19190
19216
  "components/core/molecules/Pagination.tsx"() {
@@ -43882,6 +43908,13 @@ function MaybeTraitScope({
43882
43908
  if (wrap) {
43883
43909
  return /* @__PURE__ */ jsx(TraitScopeProvider, { orbital, trait: sourceTrait, children });
43884
43910
  }
43911
+ if (sourceTrait !== void 0 && schemaCtx !== null) {
43912
+ scopeWrapLog.warn("decline", {
43913
+ sourceTrait,
43914
+ orbitalsByTraitSize: schemaCtx.orbitalsByTrait.size,
43915
+ reason: "sourceTrait not in orbitalsByTrait \u2014 children render unscoped"
43916
+ });
43917
+ }
43885
43918
  return /* @__PURE__ */ jsx(Fragment, { children });
43886
43919
  }
43887
43920
  function UISlotComponent({
@@ -44179,7 +44212,7 @@ function renderPatternChildren(children, onDismiss, parentId = "root", parentPat
44179
44212
  const childId = `${parentId}-${index}`;
44180
44213
  const childPath = parentPath === "root" ? `root.children.${index}` : `${parentPath}.children.${index}`;
44181
44214
  const childAsRecord = child;
44182
- const { type: _childType, props: nestedProps, _id: _childNodeId, children: _childChildren, ...flatProps } = childAsRecord;
44215
+ const { type: _childType, props: nestedProps, _id: _childNodeId, _sourceTrait: childSourceTrait, children: _childChildren, ...flatProps } = childAsRecord;
44183
44216
  const resolvedProps = nestedProps !== void 0 ? nestedProps : flatProps;
44184
44217
  if (_childChildren !== void 0 && nestedProps === void 0) {
44185
44218
  resolvedProps.children = _childChildren;
@@ -44194,11 +44227,14 @@ function renderPatternChildren(children, onDismiss, parentId = "root", parentPat
44194
44227
  // (e.g. form-section inside a stack) can resolve entityDef via
44195
44228
  // the trait's linkedEntity for form-field enrichment. The orbCtx
44196
44229
  // (slot/transition/state/entity) propagates the same way so every
44197
- // nested node carries a complete contextual-edit address.
44198
- ...sourceTrait !== void 0 && { sourceTrait },
44230
+ // nested node carries a complete contextual-edit address. A child
44231
+ // carrying its own `_sourceTrait` (multi-source slot stack) owns it
44232
+ // outright — inheriting the synthetic wrapper's sentinel instead
44233
+ // would erase the real owner.
44234
+ ...childSourceTrait !== void 0 ? { sourceTrait: childSourceTrait } : sourceTrait !== void 0 && { sourceTrait },
44199
44235
  ...orbCtx ?? {}
44200
44236
  };
44201
- return /* @__PURE__ */ jsx(
44237
+ const renderedChild = /* @__PURE__ */ jsx(
44202
44238
  SlotContentRenderer,
44203
44239
  {
44204
44240
  content: childContent,
@@ -44207,6 +44243,7 @@ function renderPatternChildren(children, onDismiss, parentId = "root", parentPat
44207
44243
  },
44208
44244
  childId
44209
44245
  );
44246
+ return childSourceTrait !== void 0 ? /* @__PURE__ */ jsx(MaybeTraitScope, { sourceTrait: childSourceTrait, children: renderedChild }, childId) : renderedChild;
44210
44247
  });
44211
44248
  }
44212
44249
  function toDrawableNodes(children) {