unframer 2.22.0 → 2.23.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.
package/src/framer.js CHANGED
@@ -10429,7 +10429,7 @@ function steps(numSteps, direction = 'end',) {
10429
10429
  };
10430
10430
  }
10431
10431
 
10432
- // /:https://app.framerstatic.com/framer.WEKEHMWW.mjs
10432
+ // /:https://app.framerstatic.com/framer.H2TWMMQC.mjs
10433
10433
  import React4 from 'react';
10434
10434
  import { Suspense as Suspense3, } from 'react';
10435
10435
  import { memo as memo2, startTransition as startTransition2, } from 'react';
@@ -13602,7 +13602,7 @@ var MarkSuspenseEffects = {
13602
13602
  function renderPage(Page4, defaultPageStyle,) {
13603
13603
  const props = {
13604
13604
  style: defaultPageStyle,
13605
- 'data-framer-root': true,
13605
+ 'data-framer-root': '',
13606
13606
  };
13607
13607
  return React4.isValidElement(Page4,) ? React4.cloneElement(Page4, props,) : React4.createElement(Page4, props,);
13608
13608
  }
@@ -21215,10 +21215,14 @@ function supportsThemes(presetId, skin,) {
21215
21215
  }
21216
21216
  return false;
21217
21217
  }
21218
- function useIsStaticRenderer() {
21218
+ function isStaticRenderer() {
21219
21219
  const currentTarget = RenderTarget.current();
21220
21220
  return currentTarget === RenderTarget.canvas || currentTarget === RenderTarget.export;
21221
21221
  }
21222
+ function useIsStaticRenderer() {
21223
+ const [isStatic,] = useState(() => isStaticRenderer());
21224
+ return isStatic;
21225
+ }
21222
21226
  var asRecord = (object) => object;
21223
21227
  function memoize(fn,) {
21224
21228
  const cache2 = Object.create(Object.prototype,);
@@ -22644,7 +22648,7 @@ function useStyleAndRect(props,) {
22644
22648
  ...defaultStyle,
22645
22649
  };
22646
22650
  }
22647
- const isRenderingStaticContent = useIsStaticRenderer();
22651
+ const isRenderingStaticContent = isStaticRenderer();
22648
22652
  if (props.positionSticky) {
22649
22653
  if (!isRenderingStaticContent || inCodeComponent) {
22650
22654
  resultStyle.position = 'sticky';
@@ -23095,7 +23099,7 @@ function useRefEffect(ref, effect, deps,) {
23095
23099
  const depsChangedRef = useRef();
23096
23100
  useMemo(() => {
23097
23101
  if (depsChangedRef.current !== void 0) depsChangedRef.current = true;
23098
- }, [deps,],);
23102
+ }, deps ?? [{},],);
23099
23103
  if (!ref) return;
23100
23104
  const depsChanged = depsChangedRef.current;
23101
23105
  if (depsChanged) {
@@ -30657,7 +30661,7 @@ var withFX = (Component18) =>
30657
30661
  ref: forwardedRef,
30658
30662
  },);
30659
30663
  }
30660
- const isRenderingStaticContent = useIsStaticRenderer();
30664
+ const isRenderingStaticContent = isStaticRenderer();
30661
30665
  if (isRenderingStaticContent) {
30662
30666
  const animate4 = isVariantOrVariantList(props.animate,) ? props.animate : void 0;
30663
30667
  const initial2 = isVariantOrVariantList(props.initial,) ? props.initial : void 0;
@@ -31364,26 +31368,36 @@ var CustomCursorContext = /* @__PURE__ */ createContext({
31364
31368
  },);
31365
31369
  var replaceCursorClassName = 'framer-cursor-none';
31366
31370
  var cursorComponentClassName = 'framer-pointer-events-none';
31371
+ function getActiveDefinitions(map2, previousDefinitions, newDefinitions,) {
31372
+ const allCursors = {};
31373
+ for (const [, hashes,] of map2) {
31374
+ for (const hash2 of hashes) {
31375
+ const value = allCursors[hash2] ?? previousDefinitions[hash2] ?? newDefinitions[hash2];
31376
+ if (value) allCursors[hash2] = value;
31377
+ }
31378
+ }
31379
+ return allCursors;
31380
+ }
31367
31381
  var CustomCursorContextProvider = /* @__PURE__ */ memo2(function CustomCursorList({
31368
31382
  children,
31369
31383
  },) {
31370
31384
  const value = useConstant2(() => {
31371
31385
  const events = /* @__PURE__ */ new Set();
31372
31386
  let allCursors = {};
31387
+ const byCaller = /* @__PURE__ */ new Map();
31373
31388
  return {
31374
31389
  onRegisterCursors: (callback) => {
31375
31390
  callback(allCursors,);
31376
31391
  events.add(callback,);
31377
31392
  return () => events.delete(callback,);
31378
31393
  },
31379
- registerCursors: (cursors) => {
31380
- const nextCursors = {};
31381
- for (const key7 in cursors) {
31382
- const cursor = allCursors[key7] ?? cursors[key7];
31383
- if (cursor) nextCursors[key7] = cursor;
31384
- }
31385
- allCursors = nextCursors;
31394
+ registerCursors: (cursors, id3,) => {
31395
+ byCaller.set(id3, Object.keys(cursors,),);
31396
+ allCursors = getActiveDefinitions(byCaller, allCursors, cursors,);
31386
31397
  for (const callback of events) callback(allCursors,);
31398
+ return () => {
31399
+ byCaller.delete(id3,);
31400
+ };
31387
31401
  },
31388
31402
  };
31389
31403
  },);
@@ -31625,9 +31639,10 @@ function useCustomCursors(webPageCursors,) {
31625
31639
  registerCursors,
31626
31640
  } = useContext(CustomCursorContext,);
31627
31641
  const cursors = useConstant2(() => webPageCursors);
31642
+ const id3 = useId();
31628
31643
  useLayoutEffect(() => {
31629
- registerCursors(cursors,);
31630
- }, [registerCursors,],);
31644
+ return registerCursors(cursors, id3,);
31645
+ }, [registerCursors, id3,],);
31631
31646
  }
31632
31647
  var Polygon = {
31633
31648
  /**
@@ -32620,6 +32635,94 @@ function getObserveRouteForPreloadingFn() {
32620
32635
  var observeRouteForPreloading =
32621
32636
  // this also guards `window`
32622
32637
  !shouldPreloadBasedOnUA || typeof IntersectionObserver === 'undefined' ? null : /* @__PURE__ */ getObserveRouteForPreloadingFn();
32638
+ var isPressing = /* @__PURE__ */ new WeakSet();
32639
+ function filterEvents(callback,) {
32640
+ return (event) => {
32641
+ if (event.key !== 'Enter') return;
32642
+ callback(event,);
32643
+ };
32644
+ }
32645
+ function firePointerEvent(target, type,) {
32646
+ target.dispatchEvent(
32647
+ new PointerEvent('pointer' + type, {
32648
+ isPrimary: true,
32649
+ bubbles: true,
32650
+ },),
32651
+ );
32652
+ }
32653
+ var enableKeyboardPress = (focusEvent, eventOptions,) => {
32654
+ const element = focusEvent.currentTarget;
32655
+ if (!element) return;
32656
+ const handleKeydown = filterEvents(() => {
32657
+ if (isPressing.has(element,)) return;
32658
+ firePointerEvent(element, 'down',);
32659
+ const handleKeyup = filterEvents(() => {
32660
+ firePointerEvent(element, 'up',);
32661
+ },);
32662
+ const handleBlur = () => firePointerEvent(element, 'cancel',);
32663
+ element.addEventListener('keyup', handleKeyup, eventOptions,);
32664
+ element.addEventListener('blur', handleBlur, eventOptions,);
32665
+ },);
32666
+ element.addEventListener('keydown', handleKeydown, eventOptions,);
32667
+ element.addEventListener('blur', () => element.removeEventListener('keydown', handleKeydown,), eventOptions,);
32668
+ };
32669
+ function isPointerEvent(event,) {
32670
+ return 'pointerId' in event;
32671
+ }
32672
+ var isPrimaryPointer2 = (event) => {
32673
+ if (event.pointerType === 'mouse') {
32674
+ return typeof event.button !== 'number' || event.button <= 0;
32675
+ } else {
32676
+ return event.isPrimary !== false;
32677
+ }
32678
+ };
32679
+ function isValidPressEvent(event,) {
32680
+ return isPointerEvent(event,) && isPrimaryPointer2(event,);
32681
+ }
32682
+ var isNodeOrChild2 = (parent, child,) => {
32683
+ if (!child) {
32684
+ return false;
32685
+ } else if (parent === child) {
32686
+ return true;
32687
+ } else {
32688
+ return isNodeOrChild2(parent, child.parentElement,);
32689
+ }
32690
+ };
32691
+ function press(element, onPressEnd,) {
32692
+ const gestureAbortController = new AbortController();
32693
+ const cancel = () => gestureAbortController.abort();
32694
+ const eventOptions = {
32695
+ passive: true,
32696
+ signal: gestureAbortController.signal,
32697
+ };
32698
+ const startPress = (startEvent) => {
32699
+ const target = startEvent.currentTarget;
32700
+ if (!isValidPressEvent(startEvent,) || isPressing.has(target,)) return;
32701
+ isPressing.add(target,);
32702
+ const onPointerEnd = (endEvent, success,) => {
32703
+ window.removeEventListener('pointerup', onPointerUp,);
32704
+ window.removeEventListener('pointercancel', onPointerCancel,);
32705
+ if (!isValidPressEvent(endEvent,) || !isPressing.has(target,)) {
32706
+ return;
32707
+ }
32708
+ isPressing.delete(target,);
32709
+ if (success && typeof onPressEnd === 'function') {
32710
+ onPressEnd(endEvent,);
32711
+ }
32712
+ };
32713
+ const onPointerUp = (upEvent) => {
32714
+ onPointerEnd(upEvent, isNodeOrChild2(target, upEvent.target,),);
32715
+ };
32716
+ const onPointerCancel = (cancelEvent) => {
32717
+ onPointerEnd(cancelEvent, false,);
32718
+ };
32719
+ window.addEventListener('pointerup', onPointerUp, eventOptions,);
32720
+ window.addEventListener('pointercancel', onPointerCancel, eventOptions,);
32721
+ };
32722
+ element.addEventListener('pointerdown', startPress, eventOptions,);
32723
+ element.addEventListener('focus', (event) => enableKeyboardPress(event, eventOptions,), eventOptions,);
32724
+ return cancel;
32725
+ }
32623
32726
  var noLocale = Symbol('noLocale',);
32624
32727
  var resolveSlugCache = /* @__PURE__ */ new Map();
32625
32728
  function resolveSlug(unresolvedSlug, utilsByCollectionId, activeLocale,) {
@@ -33030,15 +33133,36 @@ var Link = /* @__PURE__ */ withChildrenCanSuspend(/* @__PURE__ */ forwardRef(fun
33030
33133
  }, [observerCallback,],);
33031
33134
  const {
33032
33135
  navigate: _,
33136
+ onClick,
33033
33137
  ...linkProps
33034
33138
  } = props;
33139
+ const shouldReplaceClickWithPress = Boolean(isIOS() && onClick,);
33140
+ useRefEffect(observerRef, (node) => {
33141
+ if (!shouldReplaceClickWithPress) return;
33142
+ if (node === null) return;
33143
+ const cancel = press(node, onClick,);
33144
+ return () => {
33145
+ if (!observerRef.current) cancel();
33146
+ };
33147
+ }, [shouldReplaceClickWithPress, onClick,],);
33148
+ const onClickProp = onClick
33149
+ ? {
33150
+ // If we've replaced the click handler with press, make onClick noop so we don't try to
33151
+ // respond to the pointer event twice.
33152
+ onClick: shouldReplaceClickWithPress ? noopOnClick : onClick,
33153
+ }
33154
+ : {};
33035
33155
  const el = clone.cloneAsArray(children, {
33036
33156
  ...restProps,
33037
33157
  ...linkProps,
33158
+ ...onClickProp,
33038
33159
  ref: observerRef,
33039
33160
  },);
33040
33161
  return getChildren(el,);
33041
33162
  },),);
33163
+ function noopOnClick(event,) {
33164
+ event.preventDefault();
33165
+ }
33042
33166
  var ParentLinkContext = /* @__PURE__ */ createContext(void 0,);
33043
33167
  function useReplaceNestedLinks(nodeId, href, propsAddedByLink,) {
33044
33168
  const parentLink = useContext(ParentLinkContext,);
@@ -33810,23 +33934,26 @@ function Router({
33810
33934
  value: localeInfo,
33811
33935
  children: /* @__PURE__ */ jsxs(SuspenseThatPreservesDom, {
33812
33936
  children: [
33813
- /* @__PURE__ */ jsx(NotFoundErrorBoundary, {
33937
+ /* @__PURE__ */ jsxs(NotFoundErrorBoundary, {
33814
33938
  notFoundPage,
33815
33939
  defaultPageStyle,
33816
33940
  forceUpdateKey: dep,
33817
- children: /* @__PURE__ */ jsx(WithLayoutTemplate, {
33818
- LayoutTemplate,
33819
- routeId: currentRouteId,
33820
- children: (inLayoutTemplate) => {
33821
- return /* @__PURE__ */ jsxs(Fragment, {
33822
- children: [
33823
- /* @__PURE__ */ jsx(MarkSuspenseEffects.Start, {},),
33824
- pageExistsInCurrentLocale ? renderPage(current.page, inLayoutTemplate ? templatePageStyle : defaultPageStyle,) : // LAYOUT_TEMPLATE @TODO: display: content for not found page?
33825
- notFoundPage && renderPage(notFoundPage, defaultPageStyle,),
33826
- ],
33827
- }, remountKey,);
33828
- },
33829
- },),
33941
+ children: [
33942
+ /* @__PURE__ */ jsx(MarkSuspenseEffects.Start, {},),
33943
+ /* @__PURE__ */ jsx(WithLayoutTemplate, {
33944
+ LayoutTemplate,
33945
+ routeId: currentRouteId,
33946
+ style: defaultPageStyle,
33947
+ children: (inLayoutTemplate) => {
33948
+ return /* @__PURE__ */ jsx(Fragment, {
33949
+ children: pageExistsInCurrentLocale
33950
+ ? renderPage(current.page, inLayoutTemplate ? templatePageStyle : defaultPageStyle,)
33951
+ : // LAYOUT_TEMPLATE @TODO: display: content for not found page?
33952
+ notFoundPage && renderPage(notFoundPage, defaultPageStyle,),
33953
+ }, remountKey,);
33954
+ },
33955
+ },),
33956
+ ],
33830
33957
  },),
33831
33958
  /* @__PURE__ */ jsx(TurnOnReactEventHandling, {},),
33832
33959
  /* @__PURE__ */ jsx(MarkSuspenseEffects.End, {},),
@@ -33839,11 +33966,13 @@ function Router({
33839
33966
  function WithLayoutTemplate({
33840
33967
  LayoutTemplate,
33841
33968
  routeId,
33969
+ style,
33842
33970
  children,
33843
33971
  },) {
33844
33972
  if (!LayoutTemplate) return children(false,);
33845
33973
  return /* @__PURE__ */ jsx(LayoutTemplate, {
33846
33974
  routeId,
33975
+ style,
33847
33976
  children,
33848
33977
  },);
33849
33978
  }
@@ -34845,6 +34974,19 @@ var CompatibilityDatabaseCollection = class {
34845
34974
  return Number(left.pointer,) - Number(right.pointer,);
34846
34975
  }
34847
34976
  };
34977
+ function compareArray(left, right, collation11,) {
34978
+ const leftLength = left.value.length;
34979
+ const rightLength = right.value.length;
34980
+ if (leftLength < rightLength) return -1;
34981
+ if (leftLength > rightLength) return 1;
34982
+ for (let i = 0; i < leftLength; i++) {
34983
+ const leftItem = left.value[i];
34984
+ const rightItem = right.value[i];
34985
+ const result = compare(leftItem, rightItem, collation11,);
34986
+ if (result !== 0) return result;
34987
+ }
34988
+ return 0;
34989
+ }
34848
34990
  function castArray(value, definition,) {
34849
34991
  switch (value == null ? void 0 : value.type) {
34850
34992
  case 'array': {
@@ -34859,6 +35001,11 @@ function castArray(value, definition,) {
34859
35001
  }
34860
35002
  return null;
34861
35003
  }
35004
+ function compareBoolean(left, right,) {
35005
+ if (left.value < right.value) return -1;
35006
+ if (left.value > right.value) return 1;
35007
+ return 0;
35008
+ }
34862
35009
  function castBoolean(value,) {
34863
35010
  switch (value == null ? void 0 : value.type) {
34864
35011
  case 'boolean': {
@@ -34874,10 +35021,15 @@ function castBoolean(value,) {
34874
35021
  }
34875
35022
  return null;
34876
35023
  }
34877
- function toBoolean(value,) {
35024
+ function valueToBoolean(value,) {
34878
35025
  const cast = castBoolean(value,);
34879
35026
  return (cast == null ? void 0 : cast.value) ?? false;
34880
35027
  }
35028
+ function compareColor(left, right,) {
35029
+ if (left.value < right.value) return -1;
35030
+ if (left.value > right.value) return 1;
35031
+ return 0;
35032
+ }
34881
35033
  function castColor(value,) {
34882
35034
  switch (value == null ? void 0 : value.type) {
34883
35035
  case 'color': {
@@ -34886,6 +35038,13 @@ function castColor(value,) {
34886
35038
  }
34887
35039
  return null;
34888
35040
  }
35041
+ function compareDate(left, right,) {
35042
+ const leftDate = new Date(left.value,);
35043
+ const rightDate = new Date(right.value,);
35044
+ if (leftDate < rightDate) return -1;
35045
+ if (leftDate > rightDate) return 1;
35046
+ return 0;
35047
+ }
34889
35048
  function castDate(value,) {
34890
35049
  switch (value == null ? void 0 : value.type) {
34891
35050
  case 'date': {
@@ -34905,6 +35064,11 @@ function castDate(value,) {
34905
35064
  }
34906
35065
  return null;
34907
35066
  }
35067
+ function compareEnum(left, right,) {
35068
+ if (left.value < right.value) return -1;
35069
+ if (left.value > right.value) return 1;
35070
+ return 0;
35071
+ }
34908
35072
  function castEnum(value,) {
34909
35073
  switch (value == null ? void 0 : value.type) {
34910
35074
  case 'enum': {
@@ -34919,6 +35083,11 @@ function castEnum(value,) {
34919
35083
  }
34920
35084
  return null;
34921
35085
  }
35086
+ function compareFile(left, right,) {
35087
+ if (left.value < right.value) return -1;
35088
+ if (left.value > right.value) return 1;
35089
+ return 0;
35090
+ }
34922
35091
  function castFile(value,) {
34923
35092
  switch (value == null ? void 0 : value.type) {
34924
35093
  case 'file': {
@@ -34927,6 +35096,13 @@ function castFile(value,) {
34927
35096
  }
34928
35097
  return null;
34929
35098
  }
35099
+ function compareLink(left, right,) {
35100
+ const leftEncoded = JSON.stringify(left.value,);
35101
+ const rightEncoded = JSON.stringify(right.value,);
35102
+ if (leftEncoded < rightEncoded) return -1;
35103
+ if (leftEncoded > rightEncoded) return 1;
35104
+ return 0;
35105
+ }
34930
35106
  function castLink(value,) {
34931
35107
  switch (value == null ? void 0 : value.type) {
34932
35108
  case 'link': {
@@ -34951,6 +35127,11 @@ function castLink(value,) {
34951
35127
  }
34952
35128
  return null;
34953
35129
  }
35130
+ function compareNumber(left, right,) {
35131
+ if (left.value < right.value) return -1;
35132
+ if (left.value > right.value) return 1;
35133
+ return 0;
35134
+ }
34954
35135
  function castNumber(value,) {
34955
35136
  switch (value == null ? void 0 : value.type) {
34956
35137
  case 'number':
@@ -34967,10 +35148,27 @@ function castNumber(value,) {
34967
35148
  }
34968
35149
  return null;
34969
35150
  }
34970
- function toNumber2(value,) {
35151
+ function valueToNumber(value,) {
34971
35152
  const cast = castNumber(value,);
34972
35153
  return (cast == null ? void 0 : cast.value) ?? null;
34973
35154
  }
35155
+ function compareObject(left, right, collation11,) {
35156
+ const leftKeys = Object.keys(left.value,).sort();
35157
+ const rightKeys = Object.keys(right.value,).sort();
35158
+ if (leftKeys.length < rightKeys.length) return -1;
35159
+ if (leftKeys.length > rightKeys.length) return 1;
35160
+ for (let i = 0; i < leftKeys.length; i++) {
35161
+ const leftKey = leftKeys[i];
35162
+ const rightKey = rightKeys[i];
35163
+ if (leftKey < rightKey) return -1;
35164
+ if (leftKey > rightKey) return 1;
35165
+ const leftValue = left.value[leftKey] ?? null;
35166
+ const rightValue = right.value[rightKey] ?? null;
35167
+ const result = compare(leftValue, rightValue, collation11,);
35168
+ if (result !== 0) return result;
35169
+ }
35170
+ return 0;
35171
+ }
34974
35172
  function castObject(value, definition,) {
34975
35173
  switch (value == null ? void 0 : value.type) {
34976
35174
  case 'object': {
@@ -34988,6 +35186,13 @@ function castObject(value, definition,) {
34988
35186
  }
34989
35187
  return null;
34990
35188
  }
35189
+ function compareResponsiveImage(left, right,) {
35190
+ const leftEncoded = JSON.stringify(left.value,);
35191
+ const rightEncoded = JSON.stringify(right.value,);
35192
+ if (leftEncoded < rightEncoded) return -1;
35193
+ if (leftEncoded > rightEncoded) return 1;
35194
+ return 0;
35195
+ }
34991
35196
  function castResponsiveImage(value,) {
34992
35197
  switch (value == null ? void 0 : value.type) {
34993
35198
  case 'responsiveimage': {
@@ -34996,6 +35201,13 @@ function castResponsiveImage(value,) {
34996
35201
  }
34997
35202
  return null;
34998
35203
  }
35204
+ function compareRichText(left, right,) {
35205
+ const leftValue = left.value;
35206
+ const rightValue = right.value;
35207
+ if (leftValue < rightValue) return -1;
35208
+ if (leftValue > rightValue) return 1;
35209
+ return 0;
35210
+ }
34999
35211
  function castRichText(value,) {
35000
35212
  switch (value == null ? void 0 : value.type) {
35001
35213
  case 'richtext': {
@@ -35004,6 +35216,17 @@ function castRichText(value,) {
35004
35216
  }
35005
35217
  return null;
35006
35218
  }
35219
+ function compareString(left, right, collation11,) {
35220
+ let leftValue = left.value;
35221
+ let rightValue = right.value;
35222
+ if (collation11.type === 0) {
35223
+ leftValue = left.value.toLowerCase();
35224
+ rightValue = right.value.toLowerCase();
35225
+ }
35226
+ if (leftValue < rightValue) return -1;
35227
+ if (leftValue > rightValue) return 1;
35228
+ return 0;
35229
+ }
35007
35230
  function castString(value,) {
35008
35231
  switch (value == null ? void 0 : value.type) {
35009
35232
  case 'string': {
@@ -35018,7 +35241,7 @@ function castString(value,) {
35018
35241
  }
35019
35242
  return null;
35020
35243
  }
35021
- function toString(value,) {
35244
+ function valueToString(value,) {
35022
35245
  const cast = castString(value,);
35023
35246
  return (cast == null ? void 0 : cast.value) ?? null;
35024
35247
  }
@@ -35166,8 +35389,8 @@ var DatabaseValue = {
35166
35389
  },);
35167
35390
  },
35168
35391
  contains(source, target, collation11,) {
35169
- let sourceValue = toString(source,);
35170
- let targetValue = toString(target,);
35392
+ let sourceValue = valueToString(source,);
35393
+ let targetValue = valueToString(target,);
35171
35394
  if (isNull(sourceValue,)) return false;
35172
35395
  if (isNull(targetValue,)) return false;
35173
35396
  if (collation11.type === 0) {
@@ -35177,8 +35400,8 @@ var DatabaseValue = {
35177
35400
  return sourceValue.includes(targetValue,);
35178
35401
  },
35179
35402
  startsWith(source, target, collation11,) {
35180
- let sourceValue = toString(source,);
35181
- let targetValue = toString(target,);
35403
+ let sourceValue = valueToString(source,);
35404
+ let targetValue = valueToString(target,);
35182
35405
  if (isNull(sourceValue,)) return false;
35183
35406
  if (isNull(targetValue,)) return false;
35184
35407
  if (collation11.type === 0) {
@@ -35188,8 +35411,8 @@ var DatabaseValue = {
35188
35411
  return sourceValue.startsWith(targetValue,);
35189
35412
  },
35190
35413
  endsWith(source, target, collation11,) {
35191
- let sourceValue = toString(source,);
35192
- let targetValue = toString(target,);
35414
+ let sourceValue = valueToString(source,);
35415
+ let targetValue = valueToString(target,);
35193
35416
  if (isNull(sourceValue,)) return false;
35194
35417
  if (isNull(targetValue,)) return false;
35195
35418
  if (collation11.type === 0) {
@@ -35246,115 +35469,51 @@ function compare(left, right, collation11,) {
35246
35469
  switch (left.type) {
35247
35470
  case 'array': {
35248
35471
  assert(left.type === right.type,);
35249
- const leftLength = left.value.length;
35250
- const rightLength = right.value.length;
35251
- if (leftLength < rightLength) return -1;
35252
- if (leftLength > rightLength) return 1;
35253
- for (let i = 0; i < leftLength; i++) {
35254
- const leftItem = left.value[i];
35255
- const rightItem = right.value[i];
35256
- assert(!isUndefined(leftItem,), 'Left item must exist',);
35257
- assert(!isUndefined(rightItem,), 'Right item must exist',);
35258
- const result = compare(leftItem, rightItem, collation11,);
35259
- if (result !== 0) return result;
35260
- }
35261
- return 0;
35472
+ return compareArray(left, right, collation11,);
35262
35473
  }
35263
35474
  case 'boolean': {
35264
35475
  assert(left.type === right.type,);
35265
- if (left.value < right.value) return -1;
35266
- if (left.value > right.value) return 1;
35267
- return 0;
35476
+ return compareBoolean(left, right,);
35268
35477
  }
35269
35478
  case 'color': {
35270
35479
  assert(left.type === right.type,);
35271
- if (left.value < right.value) return -1;
35272
- if (left.value > right.value) return 1;
35273
- return 0;
35480
+ return compareColor(left, right,);
35274
35481
  }
35275
35482
  case 'date': {
35276
35483
  assert(left.type === right.type,);
35277
- const leftDate = new Date(left.value,);
35278
- const rightDate = new Date(right.value,);
35279
- if (leftDate < rightDate) return -1;
35280
- if (leftDate > rightDate) return 1;
35281
- return 0;
35484
+ return compareDate(left, right,);
35282
35485
  }
35283
35486
  case 'enum': {
35284
35487
  assert(left.type === right.type,);
35285
- if (left.value < right.value) return -1;
35286
- if (left.value > right.value) return 1;
35287
- return 0;
35488
+ return compareEnum(left, right,);
35288
35489
  }
35289
35490
  case 'file': {
35290
35491
  assert(left.type === right.type,);
35291
- if (left.value < right.value) return -1;
35292
- if (left.value > right.value) return 1;
35293
- return 0;
35492
+ return compareFile(left, right,);
35294
35493
  }
35295
35494
  case 'link': {
35296
35495
  assert(left.type === right.type,);
35297
- const leftEncoded = JSON.stringify(left.value,);
35298
- const rightEncoded = JSON.stringify(right.value,);
35299
- if (leftEncoded < rightEncoded) return -1;
35300
- if (leftEncoded > rightEncoded) return 1;
35301
- return 0;
35496
+ return compareLink(left, right,);
35302
35497
  }
35303
35498
  case 'number': {
35304
35499
  assert(left.type === right.type,);
35305
- if (left.value < right.value) return -1;
35306
- if (left.value > right.value) return 1;
35307
- return 0;
35500
+ return compareNumber(left, right,);
35308
35501
  }
35309
35502
  case 'object': {
35310
35503
  assert(left.type === right.type,);
35311
- const leftKeys = Object.keys(left.value,).sort();
35312
- const rightKeys = Object.keys(right.value,).sort();
35313
- if (leftKeys.length < rightKeys.length) return -1;
35314
- if (leftKeys.length > rightKeys.length) return 1;
35315
- for (let i = 0; i < leftKeys.length; i++) {
35316
- const leftKey = leftKeys[i];
35317
- const rightKey = rightKeys[i];
35318
- assert(!isUndefined(leftKey,), 'Left key must exist',);
35319
- assert(!isUndefined(rightKey,), 'Left key must exist',);
35320
- if (leftKey < rightKey) return -1;
35321
- if (leftKey > rightKey) return 1;
35322
- const leftValue = left.value[leftKey];
35323
- const rightValue = right.value[rightKey];
35324
- assert(!isUndefined(leftValue,), 'Left value must exist',);
35325
- assert(!isUndefined(rightValue,), 'Right value must exist',);
35326
- const result = compare(leftValue, rightValue, collation11,);
35327
- if (result !== 0) return result;
35328
- }
35329
- return 0;
35504
+ return compareObject(left, right, collation11,);
35330
35505
  }
35331
35506
  case 'responsiveimage': {
35332
35507
  assert(left.type === right.type,);
35333
- const leftEncoded = JSON.stringify(left.value,);
35334
- const rightEncoded = JSON.stringify(right.value,);
35335
- if (leftEncoded < rightEncoded) return -1;
35336
- if (leftEncoded > rightEncoded) return 1;
35337
- return 0;
35508
+ return compareResponsiveImage(left, right,);
35338
35509
  }
35339
35510
  case 'richtext': {
35340
35511
  assert(left.type === right.type,);
35341
- const leftValue = left.value;
35342
- const rightValue = right.value;
35343
- if (leftValue < rightValue) return -1;
35344
- if (leftValue > rightValue) return 1;
35345
- return 0;
35512
+ return compareRichText(left, right,);
35346
35513
  }
35347
35514
  case 'string': {
35348
35515
  assert(left.type === right.type,);
35349
- let leftValue = left.value;
35350
- let rightValue = right.value;
35351
- if (collation11.type === 0) {
35352
- leftValue = left.value.toLowerCase();
35353
- rightValue = right.value.toLowerCase();
35354
- }
35355
- if (leftValue < rightValue) return -1;
35356
- if (leftValue > rightValue) return 1;
35357
- return 0;
35516
+ return compareString(left, right, collation11,);
35358
35517
  }
35359
35518
  default: {
35360
35519
  assertNever(left,);
@@ -36059,7 +36218,8 @@ var RelationalProject = class extends RelationalNode {
36059
36218
  this.input = input;
36060
36219
  this.projections = projections;
36061
36220
  this.passthrough = passthrough;
36062
- __publicField(this, 'inputGroup', this.input.getGroup(),);
36221
+ __publicField(this, 'inputGroup',);
36222
+ this.inputGroup = input.getGroup();
36063
36223
  }
36064
36224
  getHash() {
36065
36225
  return calculateHash('RelationalProject', this.inputGroup.id, ...this.projections, this.passthrough,);
@@ -36232,24 +36392,6 @@ var ScalarCase = class extends ScalarNode {
36232
36392
  getHash() {
36233
36393
  return calculateHash('ScalarCase', this.input, ...this.conditions, this.otherwise,);
36234
36394
  }
36235
- toString() {
36236
- let result = 'CASE';
36237
- if (this.input) {
36238
- result = `${result} ${this.input}`;
36239
- }
36240
- for (
36241
- const {
36242
- when,
36243
- then,
36244
- } of this.conditions
36245
- ) {
36246
- result = `${result} WHEN ${when} THEN ${then}`;
36247
- }
36248
- if (this.otherwise) {
36249
- result = `${result} ELSE ${this.otherwise}`;
36250
- }
36251
- return `${result} END`;
36252
- }
36253
36395
  optimize(optimizer,) {
36254
36396
  var _a, _b;
36255
36397
  (_a = this.input) == null ? void 0 : _a.optimize(optimizer,);
@@ -36282,6 +36424,7 @@ var ScalarCase = class extends ScalarNode {
36282
36424
  conditions: evaluateArray(this.conditions.map((condition) =>
36283
36425
  evaluateObject({
36284
36426
  when: condition.when.evaluate(context, tuple,),
36427
+ // biome-ignore lint/suspicious/noThenProperty: Existing name.
36285
36428
  then: condition.then.evaluate(context, tuple,),
36286
36429
  },)
36287
36430
  ),),
@@ -36305,7 +36448,7 @@ var ScalarCase = class extends ScalarNode {
36305
36448
  then,
36306
36449
  } of conditions
36307
36450
  ) {
36308
- if (toBoolean(when,)) {
36451
+ if (valueToBoolean(when,)) {
36309
36452
  return then;
36310
36453
  }
36311
36454
  }
@@ -36742,7 +36885,8 @@ var RelationalFilter = class extends RelationalNode {
36742
36885
  super(input.isSynchronous && predicate.isSynchronous,);
36743
36886
  this.input = input;
36744
36887
  this.predicate = predicate;
36745
- __publicField(this, 'inputGroup', this.input.getGroup(),);
36888
+ __publicField(this, 'inputGroup',);
36889
+ this.inputGroup = input.getGroup();
36746
36890
  }
36747
36891
  getHash() {
36748
36892
  return calculateHash('RelationalFilter', this.inputGroup.id, this.predicate,);
@@ -36780,7 +36924,7 @@ var RelationalFilter = class extends RelationalNode {
36780
36924
  },),);
36781
36925
  return input.filter((_, index,) => {
36782
36926
  const predicate = predicates[index] ?? null;
36783
- return toBoolean(predicate,);
36927
+ return valueToBoolean(predicate,);
36784
36928
  },);
36785
36929
  }
36786
36930
  };
@@ -36832,8 +36976,10 @@ var RelationalIntersection = class extends RelationalNode {
36832
36976
  super(left.isSynchronous && right.isSynchronous,);
36833
36977
  this.left = left;
36834
36978
  this.right = right;
36835
- __publicField(this, 'leftGroup', this.left.getGroup(),);
36836
- __publicField(this, 'rightGroup', this.right.getGroup(),);
36979
+ __publicField(this, 'leftGroup',);
36980
+ __publicField(this, 'rightGroup',);
36981
+ this.leftGroup = left.getGroup();
36982
+ this.rightGroup = right.getGroup();
36837
36983
  }
36838
36984
  getHash() {
36839
36985
  return calculateHash('RelationalIntersection', this.leftGroup.id, this.rightGroup.id,);
@@ -36904,9 +37050,6 @@ var ScalarEquals = class extends ScalarNode {
36904
37050
  getHash() {
36905
37051
  return calculateHash('ScalarEquals', this.left, this.right,);
36906
37052
  }
36907
- toString() {
36908
- return `${this.left} == ${this.right}`;
36909
- }
36910
37053
  optimize(optimizer,) {
36911
37054
  const leftCost = this.left.optimize(optimizer,);
36912
37055
  const rightCost = this.right.optimize(optimizer,);
@@ -36937,8 +37080,10 @@ var RelationalLeftJoin = class extends RelationalNode {
36937
37080
  this.left = left;
36938
37081
  this.right = right;
36939
37082
  this.constraint = constraint;
36940
- __publicField(this, 'leftGroup', this.left.getGroup(),);
36941
- __publicField(this, 'rightGroup', this.right.getGroup(),);
37083
+ __publicField(this, 'leftGroup',);
37084
+ __publicField(this, 'rightGroup',);
37085
+ this.leftGroup = left.getGroup();
37086
+ this.rightGroup = right.getGroup();
36942
37087
  }
36943
37088
  getHash() {
36944
37089
  return calculateHash('RelationalLeftJoin', this.leftGroup.id, this.rightGroup.id, this.constraint,);
@@ -37047,7 +37192,7 @@ var RelationalLeftJoin = class extends RelationalNode {
37047
37192
  tuple.merge(leftTuple,);
37048
37193
  tuple.merge(rightTuple,);
37049
37194
  const value = yield* this.constraint.evaluate(context, tuple,);
37050
- if (toBoolean(value,)) {
37195
+ if (valueToBoolean(value,)) {
37051
37196
  result.push(tuple,);
37052
37197
  hasMatch = true;
37053
37198
  }
@@ -37065,8 +37210,10 @@ var RelationalRightJoin = class extends RelationalNode {
37065
37210
  this.left = left;
37066
37211
  this.right = right;
37067
37212
  this.constraint = constraint;
37068
- __publicField(this, 'leftGroup', this.left.getGroup(),);
37069
- __publicField(this, 'rightGroup', this.right.getGroup(),);
37213
+ __publicField(this, 'leftGroup',);
37214
+ __publicField(this, 'rightGroup',);
37215
+ this.leftGroup = left.getGroup();
37216
+ this.rightGroup = right.getGroup();
37070
37217
  }
37071
37218
  getHash() {
37072
37219
  return calculateHash('RelationalRightJoin', this.leftGroup.id, this.rightGroup.id, this.constraint,);
@@ -37175,7 +37322,7 @@ var RelationalRightJoin = class extends RelationalNode {
37175
37322
  tuple.merge(rightTuple,);
37176
37323
  tuple.merge(leftTuple,);
37177
37324
  const value = yield* this.constraint.evaluate(context, tuple,);
37178
- if (toBoolean(value,)) {
37325
+ if (valueToBoolean(value,)) {
37179
37326
  result.push(tuple,);
37180
37327
  hasMatch = true;
37181
37328
  }
@@ -37231,8 +37378,10 @@ var RelationalUnion = class extends RelationalNode {
37231
37378
  super(left.isSynchronous && right.isSynchronous,);
37232
37379
  this.left = left;
37233
37380
  this.right = right;
37234
- __publicField(this, 'leftGroup', this.left.getGroup(),);
37235
- __publicField(this, 'rightGroup', this.right.getGroup(),);
37381
+ __publicField(this, 'leftGroup',);
37382
+ __publicField(this, 'rightGroup',);
37383
+ this.leftGroup = left.getGroup();
37384
+ this.rightGroup = right.getGroup();
37236
37385
  }
37237
37386
  getHash() {
37238
37387
  return calculateHash('RelationalUnion', this.leftGroup.id, this.rightGroup.id,);
@@ -37303,9 +37452,6 @@ var ScalarAnd = class extends ScalarNode {
37303
37452
  getHash() {
37304
37453
  return calculateHash('ScalarAnd', this.left, this.right,);
37305
37454
  }
37306
- toString() {
37307
- return `${this.left} && ${this.right}`;
37308
- }
37309
37455
  optimize(optimizer,) {
37310
37456
  const leftCost = this.left.optimize(optimizer,);
37311
37457
  const rightCost = this.right.optimize(optimizer,);
@@ -37326,7 +37472,7 @@ var ScalarAnd = class extends ScalarNode {
37326
37472
  },);
37327
37473
  return {
37328
37474
  type: 'boolean',
37329
- value: toBoolean(left,) && toBoolean(right,),
37475
+ value: valueToBoolean(left,) && valueToBoolean(right,),
37330
37476
  };
37331
37477
  }
37332
37478
  };
@@ -37341,16 +37487,13 @@ var ScalarConstant = class extends ScalarNode {
37341
37487
  getHash() {
37342
37488
  return calculateHash('ScalarConstant', this.definition, this.value,);
37343
37489
  }
37344
- toString() {
37345
- return DatabaseValue.stringify(this.value,);
37346
- }
37347
37490
  optimize() {
37348
37491
  return new Cost(0,);
37349
37492
  }
37350
37493
  getOptimized() {
37351
37494
  return this;
37352
37495
  }
37353
- // eslint-disable-next-line require-yield
37496
+ // biome-ignore lint/correctness/useYield: Required by the super class.
37354
37497
  *evaluate() {
37355
37498
  return this.value;
37356
37499
  }
@@ -37379,9 +37522,6 @@ var ScalarContains = class extends ScalarNode {
37379
37522
  getHash() {
37380
37523
  return calculateHash('ScalarContains', this.source, this.target,);
37381
37524
  }
37382
- toString() {
37383
- return `CONTAINS(${this.source}, ${this.target})`;
37384
- }
37385
37525
  optimize(optimizer,) {
37386
37526
  const sourceCost = this.source.optimize(optimizer,);
37387
37527
  const targetCost = this.target.optimize(optimizer,);
@@ -37430,9 +37570,6 @@ var ScalarEndsWith = class extends ScalarNode {
37430
37570
  getHash() {
37431
37571
  return calculateHash('ScalarEndsWith', this.source, this.target,);
37432
37572
  }
37433
- toString() {
37434
- return `ENDS_WITH(${this.source}, ${this.target})`;
37435
- }
37436
37573
  optimize(optimizer,) {
37437
37574
  const sourceCost = this.source.optimize(optimizer,);
37438
37575
  const targetCost = this.target.optimize(optimizer,);
@@ -37477,9 +37614,6 @@ var ScalarGreaterThan = class extends ScalarNode {
37477
37614
  getHash() {
37478
37615
  return calculateHash('ScalarGreaterThan', this.left, this.right,);
37479
37616
  }
37480
- toString() {
37481
- return `${this.left} > ${this.right}`;
37482
- }
37483
37617
  optimize(optimizer,) {
37484
37618
  const leftCost = this.left.optimize(optimizer,);
37485
37619
  const rightCost = this.right.optimize(optimizer,);
@@ -37524,9 +37658,6 @@ var ScalarGreaterThanOrEqual = class extends ScalarNode {
37524
37658
  getHash() {
37525
37659
  return calculateHash('ScalarGreaterThanOrEqual', this.left, this.right,);
37526
37660
  }
37527
- toString() {
37528
- return `${this.left} >= ${this.right}`;
37529
- }
37530
37661
  optimize(optimizer,) {
37531
37662
  const leftCost = this.left.optimize(optimizer,);
37532
37663
  const rightCost = this.right.optimize(optimizer,);
@@ -37571,9 +37702,6 @@ var ScalarLessThan = class extends ScalarNode {
37571
37702
  getHash() {
37572
37703
  return calculateHash('ScalarLessThan', this.left, this.right,);
37573
37704
  }
37574
- toString() {
37575
- return `${this.left} < ${this.right}`;
37576
- }
37577
37705
  optimize(optimizer,) {
37578
37706
  const leftCost = this.left.optimize(optimizer,);
37579
37707
  const rightCost = this.right.optimize(optimizer,);
@@ -37618,9 +37746,6 @@ var ScalarLessThanOrEqual = class extends ScalarNode {
37618
37746
  getHash() {
37619
37747
  return calculateHash('ScalarLessThanOrEqual', this.left, this.right,);
37620
37748
  }
37621
- toString() {
37622
- return `${this.left} <= ${this.right}`;
37623
- }
37624
37749
  optimize(optimizer,) {
37625
37750
  const leftCost = this.left.optimize(optimizer,);
37626
37751
  const rightCost = this.right.optimize(optimizer,);
@@ -37665,9 +37790,6 @@ var ScalarNotEquals = class extends ScalarNode {
37665
37790
  getHash() {
37666
37791
  return calculateHash('ScalarNotEquals', this.left, this.right,);
37667
37792
  }
37668
- toString() {
37669
- return `${this.left} != ${this.right}`;
37670
- }
37671
37793
  optimize(optimizer,) {
37672
37794
  const leftCost = this.left.optimize(optimizer,);
37673
37795
  const rightCost = this.right.optimize(optimizer,);
@@ -37712,9 +37834,6 @@ var ScalarOr = class extends ScalarNode {
37712
37834
  getHash() {
37713
37835
  return calculateHash('ScalarOr', this.left, this.right,);
37714
37836
  }
37715
- toString() {
37716
- return `${this.left} || ${this.right}`;
37717
- }
37718
37837
  optimize(optimizer,) {
37719
37838
  const leftCost = this.left.optimize(optimizer,);
37720
37839
  const rightCost = this.right.optimize(optimizer,);
@@ -37735,7 +37854,7 @@ var ScalarOr = class extends ScalarNode {
37735
37854
  },);
37736
37855
  return {
37737
37856
  type: 'boolean',
37738
- value: toBoolean(left,) || toBoolean(right,),
37857
+ value: valueToBoolean(left,) || valueToBoolean(right,),
37739
37858
  };
37740
37859
  }
37741
37860
  };
@@ -37763,9 +37882,6 @@ var ScalarStartsWith = class extends ScalarNode {
37763
37882
  getHash() {
37764
37883
  return calculateHash('ScalarStartsWith', this.source, this.target,);
37765
37884
  }
37766
- toString() {
37767
- return `STARTS_WITH(${this.source}, ${this.target})`;
37768
- }
37769
37885
  optimize(optimizer,) {
37770
37886
  const sourceCost = this.source.optimize(optimizer,);
37771
37887
  const targetCost = this.target.optimize(optimizer,);
@@ -37793,7 +37909,8 @@ var ScalarStartsWith = class extends ScalarNode {
37793
37909
  var Explorer = class {
37794
37910
  constructor(normalizer,) {
37795
37911
  this.normalizer = normalizer;
37796
- __publicField(this, 'memo', this.normalizer.memo,);
37912
+ __publicField(this, 'memo',);
37913
+ this.memo = normalizer.memo;
37797
37914
  }
37798
37915
  explore(before,) {
37799
37916
  const group = before.getGroup();
@@ -38023,7 +38140,8 @@ var RelationalLimit = class extends RelationalNode {
38023
38140
  this.input = input;
38024
38141
  this.limit = limit;
38025
38142
  this.ordering = ordering;
38026
- __publicField(this, 'inputGroup', this.input.getGroup(),);
38143
+ __publicField(this, 'inputGroup',);
38144
+ this.inputGroup = input.getGroup();
38027
38145
  }
38028
38146
  getHash() {
38029
38147
  return calculateHash('RelationalLimit', this.inputGroup.id, this.limit,);
@@ -38062,7 +38180,7 @@ var RelationalLimit = class extends RelationalNode {
38062
38180
  input: this.input.evaluate(context,),
38063
38181
  limit: this.limit.evaluate(context, void 0,),
38064
38182
  },);
38065
- const value = toNumber2(limit,) ?? Infinity;
38183
+ const value = valueToNumber(limit,) ?? Infinity;
38066
38184
  if (value === Infinity) return input;
38067
38185
  return input.slice(0, value,);
38068
38186
  }
@@ -38073,7 +38191,8 @@ var RelationalOffset = class extends RelationalNode {
38073
38191
  this.input = input;
38074
38192
  this.offset = offset;
38075
38193
  this.ordering = ordering;
38076
- __publicField(this, 'inputGroup', this.input.getGroup(),);
38194
+ __publicField(this, 'inputGroup',);
38195
+ this.inputGroup = input.getGroup();
38077
38196
  }
38078
38197
  getHash() {
38079
38198
  return calculateHash('RelationalOffset', this.inputGroup.id, this.offset,);
@@ -38112,7 +38231,7 @@ var RelationalOffset = class extends RelationalNode {
38112
38231
  input: this.input.evaluate(context,),
38113
38232
  offset: this.offset.evaluate(context, void 0,),
38114
38233
  },);
38115
- const value = toNumber2(offset,) ?? 0;
38234
+ const value = valueToNumber(offset,) ?? 0;
38116
38235
  if (value === 0) return input;
38117
38236
  return input.slice(value,);
38118
38237
  }
@@ -38125,8 +38244,9 @@ var ScalarArray = class extends ScalarNode {
38125
38244
  this.ordering = ordering;
38126
38245
  this.referencedFields = referencedFields;
38127
38246
  this.referencedOuterFields = referencedOuterFields;
38128
- __publicField(this, 'inputGroup', this.input.getGroup(),);
38247
+ __publicField(this, 'inputGroup',);
38129
38248
  __publicField(this, 'definition',);
38249
+ this.inputGroup = input.getGroup();
38130
38250
  const itemDefinitions = {};
38131
38251
  const namedFieldEntries = Object.entries(namedFields,);
38132
38252
  for (const [name, field,] of namedFieldEntries) {
@@ -38157,9 +38277,6 @@ var ScalarArray = class extends ScalarNode {
38157
38277
  this.referencedOuterFields,
38158
38278
  );
38159
38279
  }
38160
- toString() {
38161
- return `ARRAY(${this.inputGroup.id})`;
38162
- }
38163
38280
  getInputRequiredProps() {
38164
38281
  const resolvedFields = new Fields();
38165
38282
  const fields = Object.values(this.namedFields,);
@@ -38210,9 +38327,6 @@ var ScalarCast = class extends ScalarNode {
38210
38327
  getHash() {
38211
38328
  return calculateHash('ScalarCast', this.input, this.definition,);
38212
38329
  }
38213
- toString() {
38214
- return `CAST(${this.input} AS ${this.definition.type.toUpperCase()})`;
38215
- }
38216
38330
  optimize(optimizer,) {
38217
38331
  return this.input.optimize(optimizer,);
38218
38332
  }
@@ -38233,12 +38347,13 @@ var ScalarFlatArray = class extends ScalarNode {
38233
38347
  this.ordering = ordering;
38234
38348
  this.referencedFields = referencedFields;
38235
38349
  this.referencedOuterFields = referencedOuterFields;
38236
- __publicField(this, 'inputGroup', this.input.getGroup(),);
38350
+ __publicField(this, 'inputGroup',);
38237
38351
  __publicField(this, 'definition',);
38352
+ this.inputGroup = input.getGroup();
38238
38353
  this.definition = {
38239
38354
  type: 'array',
38240
38355
  isNullable: false,
38241
- definition: this.field.definition,
38356
+ definition: field.definition,
38242
38357
  };
38243
38358
  }
38244
38359
  getHash() {
@@ -38251,9 +38366,6 @@ var ScalarFlatArray = class extends ScalarNode {
38251
38366
  this.referencedOuterFields,
38252
38367
  );
38253
38368
  }
38254
- toString() {
38255
- return `FLAT_ARRAY(${this.inputGroup.id})`;
38256
- }
38257
38369
  getInputRequiredProps() {
38258
38370
  const resolvedFields = new Fields();
38259
38371
  if (!isUndefined(this.field.collection,)) {
@@ -38308,9 +38420,6 @@ var ScalarIn = class extends ScalarNode {
38308
38420
  getHash() {
38309
38421
  return calculateHash('ScalarIn', this.left, this.right,);
38310
38422
  }
38311
- toString() {
38312
- return `${this.left} IN ${this.right}`;
38313
- }
38314
38423
  optimize(optimizer,) {
38315
38424
  const leftCost = this.left.optimize(optimizer,);
38316
38425
  const rightCost = this.right.optimize(optimizer,);
@@ -38359,9 +38468,6 @@ var ScalarIndexOf = class extends ScalarNode {
38359
38468
  getHash() {
38360
38469
  return calculateHash('ScalarIndexOf', this.source, this.target,);
38361
38470
  }
38362
- toString() {
38363
- return `INDEX_OF(${this.source}, ${this.target})`;
38364
- }
38365
38471
  optimize(optimizer,) {
38366
38472
  const sourceCost = this.source.optimize(optimizer,);
38367
38473
  const targetCost = this.target.optimize(optimizer,);
@@ -38398,9 +38504,6 @@ var ScalarLength = class extends ScalarNode {
38398
38504
  getHash() {
38399
38505
  return calculateHash('ScalarLength', this.input,);
38400
38506
  }
38401
- toString() {
38402
- return `LENGTH(${this.input})`;
38403
- }
38404
38507
  optimize(optimizer,) {
38405
38508
  return this.input.optimize(optimizer,);
38406
38509
  }
@@ -38428,9 +38531,6 @@ var ScalarNot = class extends ScalarNode {
38428
38531
  getHash() {
38429
38532
  return calculateHash('ScalarNot', this.input,);
38430
38533
  }
38431
- toString() {
38432
- return `NOT ${this.input}`;
38433
- }
38434
38534
  optimize(optimizer,) {
38435
38535
  return this.input.optimize(optimizer,);
38436
38536
  }
@@ -38442,7 +38542,7 @@ var ScalarNot = class extends ScalarNode {
38442
38542
  const input = yield* this.input.evaluate(context, tuple,);
38443
38543
  return {
38444
38544
  type: 'boolean',
38445
- value: !toBoolean(input,),
38545
+ value: !valueToBoolean(input,),
38446
38546
  };
38447
38547
  }
38448
38548
  };
@@ -38470,9 +38570,6 @@ var ScalarNotIn = class extends ScalarNode {
38470
38570
  getHash() {
38471
38571
  return calculateHash('ScalarNotIn', this.left, this.right,);
38472
38572
  }
38473
- toString() {
38474
- return `${this.left} NOT IN ${this.right}`;
38475
- }
38476
38573
  optimize(optimizer,) {
38477
38574
  const leftCost = this.left.optimize(optimizer,);
38478
38575
  const rightCost = this.right.optimize(optimizer,);
@@ -38510,21 +38607,19 @@ var ScalarVariable = class extends ScalarNode {
38510
38607
  super(referencedFields, referencedOuterFields, true,);
38511
38608
  this.field = field;
38512
38609
  this.isOuterField = isOuterField;
38513
- __publicField(this, 'definition', this.field.definition,);
38610
+ __publicField(this, 'definition',);
38611
+ this.definition = field.definition;
38514
38612
  }
38515
38613
  getHash() {
38516
38614
  return calculateHash('ScalarVariable', this.field.id, this.isOuterField,);
38517
38615
  }
38518
- toString() {
38519
- return `"${this.field.name}" /* ${this.field.id} */`;
38520
- }
38521
38616
  optimize() {
38522
38617
  return new Cost(0,);
38523
38618
  }
38524
38619
  getOptimized() {
38525
38620
  return this;
38526
38621
  }
38527
- // eslint-disable-next-line require-yield
38622
+ // biome-ignore lint/correctness/useYield: Required by the super class.
38528
38623
  *evaluate(context, tuple,) {
38529
38624
  if (this.isOuterField) {
38530
38625
  assert(context, 'Context must exist',);
@@ -38850,7 +38945,8 @@ var EnforcerResolve = class extends EnforcerNode {
38850
38945
  super(false,);
38851
38946
  this.input = input;
38852
38947
  this.fields = fields;
38853
- __publicField(this, 'inputGroup', this.input.getGroup(),);
38948
+ __publicField(this, 'inputGroup',);
38949
+ this.inputGroup = input.getGroup();
38854
38950
  }
38855
38951
  getHash() {
38856
38952
  return calculateHash('EnforcerResolve', this.inputGroup.id, this.fields,);
@@ -38933,7 +39029,8 @@ var EnforcerSort = class extends EnforcerNode {
38933
39029
  super(input.isSynchronous,);
38934
39030
  this.input = input;
38935
39031
  this.ordering = ordering;
38936
- __publicField(this, 'inputGroup', this.input.getGroup(),);
39032
+ __publicField(this, 'inputGroup',);
39033
+ this.inputGroup = input.getGroup();
38937
39034
  }
38938
39035
  getHash() {
38939
39036
  return calculateHash('EnforcerSort', this.inputGroup.id, this.ordering,);
@@ -39854,7 +39951,7 @@ function callbackForVariant(map2, variant,) {
39854
39951
  return map2.default;
39855
39952
  }
39856
39953
  function useOnVariantChange(variant, callbackMap,) {
39857
- const isRenderingStaticContent = useIsStaticRenderer();
39954
+ const isRenderingStaticContent = isStaticRenderer();
39858
39955
  if (isRenderingStaticContent) return;
39859
39956
  const isActiveScreenRef = React4.useRef(true,);
39860
39957
  const callbackMapRef = React4.useRef(callbackMap,);
@@ -44087,7 +44184,7 @@ function getInitialEffectStyle(canPlay, canAnimate2, effect,) {
44087
44184
  }
44088
44185
  function useTextEffect(config, ref, preview,) {
44089
44186
  const elements = useConstant2(() => /* @__PURE__ */ new Set());
44090
- const isRenderingStaticContent = useIsStaticRenderer();
44187
+ const isRenderingStaticContent = isStaticRenderer();
44091
44188
  const canPlay = preview || !isRenderingStaticContent;
44092
44189
  const state2 = React2.useRef({
44093
44190
  hasMounted: false,
@@ -45134,20 +45231,21 @@ function getSVGSize(svg,) {
45134
45231
  height,
45135
45232
  };
45136
45233
  }
45137
- function SVG(props,) {
45234
+ var SVG = /* @__PURE__ */ forwardRef(function SVG2(props, forwardedRef,) {
45138
45235
  const parentSize = useParentSize();
45139
45236
  const layoutId = useLayoutId2(props,);
45140
45237
  const layoutRef = React4.useRef(null,);
45238
+ const ref = forwardedRef ?? layoutRef;
45141
45239
  const providedWindow = useProvidedWindow();
45142
45240
  useMeasureLayout(props, layoutRef,);
45143
45241
  return /* @__PURE__ */ jsx(SVGComponent, {
45144
45242
  ...props,
45145
- innerRef: layoutRef,
45243
+ innerRef: ref,
45146
45244
  parentSize,
45147
45245
  layoutId,
45148
45246
  providedWindow,
45149
45247
  },);
45150
- }
45248
+ },);
45151
45249
  var MAX_BACKGROUND_SVG_TEXT_LENGTH = 5e4;
45152
45250
  function containsImageReference(svg,) {
45153
45251
  return svg.indexOf('image',) >= 0;
@@ -45385,6 +45483,7 @@ var SVGComponent = /* @__PURE__ */ (() => {
45385
45483
  style: {
45386
45484
  position: 'absolute',
45387
45485
  },
45486
+ role: 'presentation',
45388
45487
  children: /* @__PURE__ */ jsx('linearGradient', {
45389
45488
  id: gradientId,
45390
45489
  x1,
@@ -45412,6 +45511,7 @@ var SVGComponent = /* @__PURE__ */ (() => {
45412
45511
  style: {
45413
45512
  position: 'absolute',
45414
45513
  },
45514
+ role: 'presentation',
45415
45515
  children: /* @__PURE__ */ jsx('radialGradient', {
45416
45516
  id: gradientId,
45417
45517
  cy: gradient.centerAnchorY,
@@ -45437,6 +45537,7 @@ var SVGComponent = /* @__PURE__ */ (() => {
45437
45537
  style: {
45438
45538
  position: 'absolute',
45439
45539
  },
45540
+ role: 'presentation',
45440
45541
  children: /* @__PURE__ */ jsx('defs', {
45441
45542
  children: /* @__PURE__ */ jsx(ImagePatternElement, {
45442
45543
  ...imagePattern,
@@ -47245,6 +47346,7 @@ export {
47245
47346
  isReactDefinition,
47246
47347
  isRelativeNumber,
47247
47348
  isShallowEqualArray,
47349
+ isStaticRenderer,
47248
47350
  isStraightCurve,
47249
47351
  isValidMotionProp,
47250
47352
  keyframes,