@wix/himalaya-cli 0.1535.0 → 0.1537.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.
Files changed (30) hide show
  1. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/bookings-v2/src/extensions.d.ts +16 -0
  2. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/data-collections-v1/src/extensions.d.ts +4 -0
  3. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/wix-data/src/index.d.ts +497 -4
  4. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-bookings.mjs +5 -0
  5. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-data-collections.mjs +1 -5
  6. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-data.mjs +315 -7
  7. package/dist/cli.mjs +805 -533
  8. package/dist/preview-assets.generated.bin +0 -0
  9. package/fixtures/wix-canned.json +1 -0
  10. package/guides/cms-collections.md +31 -0
  11. package/guides/himi-json-output.md +9 -0
  12. package/guides/release-notes.md +12 -0
  13. package/guides/wix-api-usage.md +53 -6
  14. package/package.json +2 -2
  15. package/templates/beauty-salon/dev/index.ts +1109 -2310
  16. package/templates/beauty-salon/tier5-src/_shared/himi-bookings.ts +121 -1
  17. package/templates/beauty-salon/tier5-src/himi-booking-service/index.ts +9 -55
  18. package/templates/beauty-salon/tier5-src/himi-booking-services/index.ts +264 -18
  19. package/templates/branded-lite/dev/index.ts +1075 -2276
  20. package/templates/branded-lite/tier5-src/_shared/himi-bookings.ts +121 -1
  21. package/templates/branded-lite/tier5-src/himi-booking-service/index.ts +9 -55
  22. package/templates/branded-lite/tier5-src/himi-booking-services/index.ts +264 -18
  23. package/templates/gym-fitness/dev/index.ts +1075 -2276
  24. package/templates/gym-fitness/tier5-src/_shared/himi-bookings.ts +121 -1
  25. package/templates/gym-fitness/tier5-src/himi-booking-service/index.ts +9 -55
  26. package/templates/gym-fitness/tier5-src/himi-booking-services/index.ts +264 -18
  27. package/templates/yoga-studio/dev/index.ts +1137 -2338
  28. package/templates/yoga-studio/tier5-src/_shared/himi-bookings.ts +121 -1
  29. package/templates/yoga-studio/tier5-src/himi-booking-service/index.ts +9 -55
  30. package/templates/yoga-studio/tier5-src/himi-booking-services/index.ts +264 -18
package/dist/cli.mjs CHANGED
@@ -4762,8 +4762,8 @@ var init_catalog_v2 = __esm({
4762
4762
  "../html-to-t5/catalog.v2.json"() {
4763
4763
  catalog_v2_default = {
4764
4764
  encoding: "gzip-base64",
4765
- sha256: "da9148b1f5ea7fb20a46b896858ffdca7453c53edc833686eff49d77122e192f",
4766
- data: "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"
4765
+ sha256: "cfb86c40dd3bb1c140104f0700e182ec0572b55d78ea4916dac2d751a520f85d",
4766
+ data: "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"
4767
4767
  };
4768
4768
  }
4769
4769
  });
@@ -12668,7 +12668,6 @@ function webViewOriginAllowed(url, origins) {
12668
12668
  }
12669
12669
  var init_webview_origin = __esm({
12670
12670
  "../../core/ts/src/webview-origin.ts"() {
12671
- "use strict";
12672
12671
  }
12673
12672
  });
12674
12673
 
@@ -21710,6 +21709,7 @@ var init_wix_cache_defaults_generated = __esm({
21710
21709
  { method: "GET", pathPrefix: "/blog/v3/posts/", cacheable: true, ttl: 60, swr: 86400, tag: "blog" },
21711
21710
  { method: "POST", pathPrefix: "/blog/v3/posts/query", cacheable: true, ttl: 60, swr: 86400, tag: "blog" },
21712
21711
  { method: "GET", pathPrefix: "/bookings/v2/services/", cacheable: true, ttl: 60, swr: 86400, tag: "bookings/services" },
21712
+ { method: "POST", pathPrefix: "/bookings/v2/services/categories/query", cacheable: true, ttl: 60, swr: 86400, tag: "bookings/services" },
21713
21713
  { method: "POST", pathPrefix: "/bookings/v2/services/query", cacheable: true, ttl: 60, swr: 86400, tag: "bookings/services" },
21714
21714
  { method: "GET", pathPrefix: "/donation-campaigns/v2/donation-campaigns/", cacheable: true, ttl: 60, swr: 86400, tag: "donations" },
21715
21715
  { method: "POST", pathPrefix: "/donation-campaigns/v2/donation-campaigns/query", cacheable: true, ttl: 60, swr: 86400, tag: "donations" },
@@ -23049,7 +23049,6 @@ function resolveIdiom(tokens2, ctx = {}) {
23049
23049
  var IDIOM_CONTEXTS, UNSAFE_KEYS;
23050
23050
  var init_idiom = __esm({
23051
23051
  "../../core/ts/src/idiom.ts"() {
23052
- "use strict";
23053
23052
  IDIOM_CONTEXTS = {
23054
23053
  ios: { native: ["ios"] },
23055
23054
  android: { native: ["material"] },
@@ -31838,8 +31837,77 @@ var init_helpers = __esm({
31838
31837
  }
31839
31838
  });
31840
31839
 
31840
+ // ../../core/web-renderer/src/liveWindow.ts
31841
+ import React2 from "react";
31842
+ function liveWindowCurrent(current, count2) {
31843
+ if (count2 <= 0 || !Number.isFinite(current)) return 0;
31844
+ return Math.min(Math.max(Math.trunc(current), 0), count2 - 1);
31845
+ }
31846
+ function liveWindowRange(current, count2, n2) {
31847
+ if (typeof n2 !== "number" || !Number.isFinite(n2) && n2 !== Infinity) return null;
31848
+ const w2 = Math.floor(n2);
31849
+ if (!(w2 > 0) || count2 <= 0) return null;
31850
+ const c2 = liveWindowCurrent(current, count2);
31851
+ return { lo: Math.max(0, c2 - w2), hi: Math.min(count2 - 1, c2 + w2) };
31852
+ }
31853
+ function liveWindowMounted(i2, current, count2, n2) {
31854
+ const r3 = liveWindowRange(current, count2, n2);
31855
+ return r3 == null || i2 >= r3.lo && i2 <= r3.hi;
31856
+ }
31857
+ function liveWindowActive(i2, current, count2, n2) {
31858
+ return liveWindowRange(current, count2, n2) == null || i2 === liveWindowCurrent(current, count2);
31859
+ }
31860
+ function liveWindowFirstImage(page) {
31861
+ const stack = page && typeof page === "object" ? [page] : [];
31862
+ while (stack.length) {
31863
+ const node = stack.pop();
31864
+ const { type, props } = normalize(node);
31865
+ if (type === "Image") return node;
31866
+ if (!CONTAINERS.has(type) || !Array.isArray(props.children)) continue;
31867
+ for (let i2 = props.children.length - 1; i2 >= 0; i2--) {
31868
+ const child = props.children[i2];
31869
+ if (child && typeof child === "object") stack.push(child);
31870
+ }
31871
+ }
31872
+ return null;
31873
+ }
31874
+ function useSettledPage(index, settleMs = LIVE_WINDOW_SETTLE_MS) {
31875
+ const [settled, setSettled] = React2.useState(index);
31876
+ const latest = React2.useRef(index);
31877
+ latest.current = index;
31878
+ const pending = React2.useRef(false);
31879
+ const timer = React2.useRef(null);
31880
+ React2.useEffect(() => {
31881
+ if (!pending.current) setSettled(index);
31882
+ }, [index]);
31883
+ React2.useEffect(() => () => {
31884
+ if (timer.current) clearTimeout(timer.current);
31885
+ }, []);
31886
+ const scrolling = React2.useCallback((page) => {
31887
+ if (page === latest.current && !pending.current) return;
31888
+ pending.current = true;
31889
+ if (timer.current) clearTimeout(timer.current);
31890
+ timer.current = setTimeout(() => {
31891
+ pending.current = false;
31892
+ timer.current = null;
31893
+ setSettled(latest.current);
31894
+ }, settleMs);
31895
+ }, [settleMs]);
31896
+ return { settled, scrolling };
31897
+ }
31898
+ var liveWindowPlaceholderId, CONTAINERS, PageActiveContext, LIVE_WINDOW_SETTLE_MS;
31899
+ var init_liveWindow = __esm({
31900
+ "../../core/web-renderer/src/liveWindow.ts"() {
31901
+ init_helpers();
31902
+ liveWindowPlaceholderId = (owner, index) => `${owner}.page.${index}.placeholder`;
31903
+ CONTAINERS = /* @__PURE__ */ new Set(["VStack", "HStack", "ZStack", "Card"]);
31904
+ PageActiveContext = React2.createContext(true);
31905
+ LIVE_WINDOW_SETTLE_MS = 150;
31906
+ }
31907
+ });
31908
+
31841
31909
  // ../../core/web-renderer/src/bindings.tsx
31842
- import React2, { useEffect, useState } from "react";
31910
+ import React3, { useEffect, useState } from "react";
31843
31911
  import { Fragment, jsx as jsx3 } from "react/jsx-runtime";
31844
31912
  function servicePath(binding2) {
31845
31913
  return binding2.startsWith("$service:") ? binding2.slice("$service:".length) : binding2;
@@ -31874,7 +31942,7 @@ function useBoundValue(ctx, binding2) {
31874
31942
  }
31875
31943
  function useBoundValues(ctx, bindings) {
31876
31944
  const key3 = bindings.join("\0");
31877
- const paths2 = React2.useMemo(
31945
+ const paths2 = React3.useMemo(
31878
31946
  () => bindings.map((b2) => b2 && isBinding(b2) && b2.startsWith("$service:") ? servicePath(b2) : ""),
31879
31947
  // eslint-disable-next-line react-hooks/exhaustive-deps
31880
31948
  [key3]
@@ -31957,7 +32025,7 @@ var init_bindings2 = __esm({
31957
32025
  }) });
31958
32026
  };
31959
32027
  readsService = /* @__PURE__ */ new WeakMap();
31960
- BoundRow = React2.memo(
32028
+ BoundRow = React3.memo(
31961
32029
  ({ ctx, template, item, index, renderRow }) => {
31962
32030
  const scope2 = item && typeof item === "object" ? { ...item, __index: index } : { value: item, __index: index };
31963
32031
  return /* @__PURE__ */ jsx3(Fragment, { children: renderRow(template, { ...ctx, itemScope: scope2 }) });
@@ -31987,7 +32055,7 @@ var init_snackbarTiming = __esm({
31987
32055
  });
31988
32056
 
31989
32057
  // ../../core/web-renderer/src/formBag.ts
31990
- import React3 from "react";
32058
+ import React4 from "react";
31991
32059
  function hasContributed(bag, fieldId) {
31992
32060
  return Object.prototype.hasOwnProperty.call(bag.values, fieldId);
31993
32061
  }
@@ -32072,7 +32140,7 @@ var FormValuesContext;
32072
32140
  var init_formBag = __esm({
32073
32141
  "../../core/web-renderer/src/formBag.ts"() {
32074
32142
  init_validation();
32075
- FormValuesContext = React3.createContext(null);
32143
+ FormValuesContext = React4.createContext(null);
32076
32144
  }
32077
32145
  });
32078
32146
 
@@ -32477,10 +32545,10 @@ var init_pickerField = __esm({
32477
32545
  });
32478
32546
 
32479
32547
  // ../../core/web-renderer/src/symbolEffects.ts
32480
- import React4 from "react";
32548
+ import React5 from "react";
32481
32549
  function useSymbolEffect(effect, reduceMotion) {
32482
- const [, changed] = React4.useReducer((value2) => value2 + 1, 0);
32483
- React4.useEffect(() => {
32550
+ const [, changed] = React5.useReducer((value2) => value2 + 1, 0);
32551
+ React5.useEffect(() => {
32484
32552
  if (typeof window === "undefined" || typeof window.matchMedia !== "function") return;
32485
32553
  const query = window.matchMedia("(prefers-reduced-motion: reduce)");
32486
32554
  const listener = () => changed();
@@ -32488,7 +32556,7 @@ function useSymbolEffect(effect, reduceMotion) {
32488
32556
  return () => query.removeEventListener("change", listener);
32489
32557
  }, []);
32490
32558
  const supported = !reduceMotion() && (effect === "bounce" || effect === "pulse") ? effect : void 0;
32491
- React4.useEffect(() => {
32559
+ React5.useEffect(() => {
32492
32560
  if (!supported || typeof document === "undefined" || document.getElementById("himalaya-symbol-effects")) return;
32493
32561
  const style = document.createElement("style");
32494
32562
  style.id = "himalaya-symbol-effects";
@@ -33165,7 +33233,7 @@ var init_host_toolbar = __esm({
33165
33233
  });
33166
33234
 
33167
33235
  // ../../core/web-renderer/src/richContentEditor.tsx
33168
- import React5 from "react";
33236
+ import React6 from "react";
33169
33237
  import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
33170
33238
  function effectiveTools(tools, uploadService) {
33171
33239
  return ricosEffectiveTools(tools, typeof uploadService === "string" && uploadService !== "");
@@ -33180,32 +33248,32 @@ function RichContentEditorView({ props, ctx, wrap, nodeId, renderChild, ...dom }
33180
33248
  const id = String(nodeId ?? dom["data-component-id"] ?? "rich_content_editor");
33181
33249
  const C2 = ctx.color;
33182
33250
  const name = typeof props.name === "string" && props.name ? props.name : void 0;
33183
- const bag = React5.useContext(FormValuesContext);
33251
+ const bag = React6.useContext(FormValuesContext);
33184
33252
  const live3 = !!ctx.onAction;
33185
33253
  const toolsKey = JSON.stringify(props.tools ?? null);
33186
- const tools = React5.useMemo(() => effectiveTools(props.tools, props.uploadService), [toolsKey, props.uploadService]);
33254
+ const tools = React6.useMemo(() => effectiveTools(props.tools, props.uploadService), [toolsKey, props.uploadService]);
33187
33255
  const seedMode = typeof props.documentJson === "string" ? "literal" : typeof props.documentPath === "string" && props.documentPath ? "binding" : "none";
33188
33256
  const boundSeed = useBoundValue(ctx, seedMode === "binding" ? props.documentPath : "");
33189
33257
  const fill = props.fillAvailable === true;
33190
33258
  const minHeight = typeof props.minHeight === "number" && props.minHeight >= 0 ? props.minHeight : 240;
33191
33259
  const placeholder3 = typeof props.placeholder === "string" ? props.placeholder : "";
33192
- const onChangeRef = React5.useRef(props.onChange);
33260
+ const onChangeRef = React6.useRef(props.onChange);
33193
33261
  onChangeRef.current = props.onChange;
33194
- const bagRef = React5.useRef(bag);
33262
+ const bagRef = React6.useRef(bag);
33195
33263
  bagRef.current = bag;
33196
- const nameRef = React5.useRef(name);
33264
+ const nameRef = React6.useRef(name);
33197
33265
  nameRef.current = name;
33198
- const [status, setStatus] = React5.useState("loading");
33199
- const [toolbar, setToolbar] = React5.useState(EMPTY_TOOLBAR);
33200
- const [focused, setFocused] = React5.useState(false);
33201
- const [src, setSrc] = React5.useState(null);
33202
- const [link, setLink] = React5.useState(null);
33203
- const [uploadError, setUploadError] = React5.useState(false);
33204
- const [, repaint] = React5.useReducer((n2) => n2 + 1, 0);
33205
- const iframeRef = React5.useRef(null);
33206
- const fileRef = React5.useRef(null);
33207
- const sessionRef = React5.useRef(null);
33208
- React5.useEffect(() => {
33266
+ const [status, setStatus] = React6.useState("loading");
33267
+ const [toolbar, setToolbar] = React6.useState(EMPTY_TOOLBAR);
33268
+ const [focused, setFocused] = React6.useState(false);
33269
+ const [src, setSrc] = React6.useState(null);
33270
+ const [link, setLink] = React6.useState(null);
33271
+ const [uploadError, setUploadError] = React6.useState(false);
33272
+ const [, repaint] = React6.useReducer((n2) => n2 + 1, 0);
33273
+ const iframeRef = React6.useRef(null);
33274
+ const fileRef = React6.useRef(null);
33275
+ const sessionRef = React6.useRef(null);
33276
+ React6.useEffect(() => {
33209
33277
  if (!bag || !name) return;
33210
33278
  bag.register(name, void 0);
33211
33279
  const current = sessionRef.current?.currentContent();
@@ -33221,12 +33289,12 @@ function RichContentEditorView({ props, ctx, wrap, nodeId, renderChild, ...dom }
33221
33289
  if (!act || !ctx.onAction) return;
33222
33290
  ctx.onAction({ ...act, args: { ...act.args ?? {}, dirty: "true" } });
33223
33291
  };
33224
- const fireOnChangeRef = React5.useRef(fireOnChange);
33292
+ const fireOnChangeRef = React6.useRef(fireOnChange);
33225
33293
  fireOnChangeRef.current = fireOnChange;
33226
- React5.useEffect(() => {
33294
+ React6.useEffect(() => {
33227
33295
  if (live3) setSrc(new URL(ENGINE_PAGE_PATH, document.baseURI).toString());
33228
33296
  }, [live3]);
33229
- React5.useEffect(() => {
33297
+ React6.useEffect(() => {
33230
33298
  const frame = iframeRef.current;
33231
33299
  if (!live3 || !src || !frame) return;
33232
33300
  const t2 = ricosEditorWebTimings;
@@ -33274,13 +33342,13 @@ function RichContentEditorView({ props, ctx, wrap, nodeId, renderChild, ...dom }
33274
33342
  sessionRef.current = null;
33275
33343
  };
33276
33344
  }, [live3, src]);
33277
- React5.useEffect(() => {
33345
+ React6.useEffect(() => {
33278
33346
  sessionRef.current?.updateLocale(ctx.localeTag ?? "en", ctx.isRTL ?? document.documentElement.dir === "rtl");
33279
33347
  }, [ctx.localeTag, ctx.isRTL]);
33280
- React5.useEffect(() => {
33348
+ React6.useEffect(() => {
33281
33349
  sessionRef.current?.setSeed(seedMode === "literal" ? props.documentJson : seedMode === "binding" ? boundSeed : "");
33282
33350
  }, [seedMode, props.documentJson, boundSeed, src]);
33283
- React5.useEffect(() => {
33351
+ React6.useEffect(() => {
33284
33352
  const vv = typeof window !== "undefined" ? window.visualViewport : null;
33285
33353
  if (!vv || !focused) return;
33286
33354
  vv.addEventListener("resize", repaint);
@@ -33785,20 +33853,20 @@ var init_radioGroups = __esm({
33785
33853
  });
33786
33854
 
33787
33855
  // ../../core/web-renderer/src/a11y/radioGroupScope.tsx
33788
- import React6 from "react";
33856
+ import React7 from "react";
33789
33857
  var scope, RadioGroupScope, useRadioGroups;
33790
33858
  var init_radioGroupScope = __esm({
33791
33859
  "../../core/web-renderer/src/a11y/radioGroupScope.tsx"() {
33792
33860
  "use strict";
33793
33861
  init_radioGroups();
33794
- scope = React6.createContext(radioGroups);
33862
+ scope = React7.createContext(radioGroups);
33795
33863
  RadioGroupScope = scope.Provider;
33796
- useRadioGroups = () => React6.useContext(scope);
33864
+ useRadioGroups = () => React7.useContext(scope);
33797
33865
  }
33798
33866
  });
33799
33867
 
33800
33868
  // ../../core/web-renderer/src/a11y/controls.tsx
33801
- import React7 from "react";
33869
+ import React8 from "react";
33802
33870
  import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
33803
33871
  function labelText(label3, ctx) {
33804
33872
  if (typeof label3 === "string" && isBinding(label3)) {
@@ -33843,25 +33911,25 @@ var init_controls = __esm({
33843
33911
  const C2 = ctx.color;
33844
33912
  const bound2 = useResolvedScalar(props.valuePath, ctx);
33845
33913
  const resolved2 = ctx.empty ? false : props.valuePath != null ? encodeToggleFieldValue(bound2) === "true" : encodeToggleFieldValue(props.value, props.on === true) === "true";
33846
- const bag = React7.useContext(FormValuesContext);
33914
+ const bag = React8.useContext(FormValuesContext);
33847
33915
  const fieldId = props.__formFieldId;
33848
33916
  const inForm = Boolean(bag && fieldId);
33849
- const [formOn, setFormOn] = React7.useState(null);
33850
- const touchedField = React7.useRef(void 0);
33851
- React7.useEffect(() => {
33917
+ const [formOn, setFormOn] = React8.useState(null);
33918
+ const touchedField = React8.useRef(void 0);
33919
+ React8.useEffect(() => {
33852
33920
  if (bag && fieldId && touchedField.current === fieldId) bag.set(fieldId, encodeToggleFieldValue(resolved2));
33853
33921
  setFormOn(null);
33854
33922
  }, [resolved2]);
33855
33923
  const toggleServiceBound = typeof props.valuePath === "string" && props.valuePath.startsWith("$service:");
33856
33924
  const toggleReady = !toggleServiceBound || bound2 !== void 0;
33857
- React7.useEffect(() => {
33925
+ React8.useEffect(() => {
33858
33926
  if (!bag || !fieldId) return;
33859
33927
  if (!toggleReady && !hasContributed(bag, fieldId)) return;
33860
33928
  bag.set(fieldId, encodeToggleFieldValue(resolved2));
33861
33929
  }, [toggleReady, resolved2, fieldId, bag]);
33862
33930
  const on4 = inForm && touchedField.current === fieldId && formOn !== null ? formOn : resolved2;
33863
33931
  const ruleKey = props.validation ? JSON.stringify(props.validation) : "";
33864
- React7.useEffect(() => {
33932
+ React8.useEffect(() => {
33865
33933
  if (!bag || !fieldId) return;
33866
33934
  bag.register(fieldId, props.validation);
33867
33935
  return () => bag.unregister(fieldId);
@@ -33921,15 +33989,15 @@ var init_controls = __esm({
33921
33989
  const tint = C2(props.tint ?? "accentPrimary", "#116DFF");
33922
33990
  const step = typeof props.step === "number" && props.step > 0 ? props.step : (max - min) / 100 || 0.01;
33923
33991
  const range = props.range === true && typeof props.upperValue === "number";
33924
- const [val, setVal] = React7.useState(bound2);
33925
- const latestValue = React7.useRef(bound2);
33926
- const dragging = React7.useRef(false);
33927
- React7.useEffect(() => {
33992
+ const [val, setVal] = React8.useState(bound2);
33993
+ const latestValue = React8.useRef(bound2);
33994
+ const dragging = React8.useRef(false);
33995
+ React8.useEffect(() => {
33928
33996
  if (dragging.current) return;
33929
33997
  latestValue.current = bound2;
33930
33998
  setVal(bound2);
33931
33999
  }, [bound2]);
33932
- const lastEmit = React7.useRef(void 0);
34000
+ const lastEmit = React8.useRef(void 0);
33933
34001
  const canFire = !!(ctx.onAction && props.onChange && !props.disabled);
33934
34002
  const commit = (nv) => {
33935
34003
  latestValue.current = nv;
@@ -33939,8 +34007,8 @@ var init_controls = __esm({
33939
34007
  ctx.onAction({ ...act, args: { ...act.args ?? {}, value: nv } });
33940
34008
  };
33941
34009
  const clampPct = (n2) => max > min ? Math.max(0, Math.min(1, (n2 - min) / (max - min))) : 0;
33942
- const [pair, setPair] = React7.useState(() => [Math.min(bound2, props.upperValue ?? bound2), Math.max(bound2, props.upperValue ?? bound2)]);
33943
- React7.useEffect(() => {
34010
+ const [pair, setPair] = React8.useState(() => [Math.min(bound2, props.upperValue ?? bound2), Math.max(bound2, props.upperValue ?? bound2)]);
34011
+ React8.useEffect(() => {
33944
34012
  if (range) setPair([Math.min(bound2, props.upperValue), Math.max(bound2, props.upperValue)]);
33945
34013
  }, [range, bound2, props.upperValue]);
33946
34014
  if (range) {
@@ -34098,25 +34166,25 @@ var init_controls = __esm({
34098
34166
  const boundValue = useResolvedScalar(props.valuePath, ctx);
34099
34167
  const raw = props.valuePath != null ? boundValue : props.value;
34100
34168
  const groupId = isRadio && typeof props.groupId === "string" && props.groupId !== "" ? props.groupId : void 0;
34101
- const [local, setLocal] = React7.useState(void 0);
34102
- React7.useEffect(() => {
34169
+ const [local, setLocal] = React8.useState(void 0);
34170
+ React8.useEffect(() => {
34103
34171
  setLocal(void 0);
34104
34172
  }, [raw, radioGroups2, groupId]);
34105
34173
  const localValue2 = local?.registry === radioGroups2 && local.groupId === groupId ? local.value : void 0;
34106
34174
  const on4 = ctx.empty ? false : localValue2 ?? raw === true;
34107
- const member = React7.useMemo(() => radioGroups2.newMember(), [radioGroups2]);
34108
- const owner = React7.useSyncExternalStore(
34175
+ const member = React8.useMemo(() => radioGroups2.newMember(), [radioGroups2]);
34176
+ const owner = React8.useSyncExternalStore(
34109
34177
  radioGroups2.subscribe,
34110
34178
  () => groupId ? radioGroups2.owner(groupId) : void 0,
34111
34179
  () => void 0
34112
34180
  );
34113
- React7.useEffect(() => {
34181
+ React8.useEffect(() => {
34114
34182
  if (!groupId) return;
34115
34183
  radioGroups2.join(groupId);
34116
34184
  return () => radioGroups2.leave(groupId, member);
34117
34185
  }, [radioGroups2, groupId, member]);
34118
- const seenRaw = React7.useRef(null);
34119
- React7.useEffect(() => {
34186
+ const seenRaw = React8.useRef(null);
34187
+ React8.useEffect(() => {
34120
34188
  const prev = seenRaw.current;
34121
34189
  seenRaw.current = { raw, groupId, registry: radioGroups2 };
34122
34190
  if (!groupId) return;
@@ -34126,7 +34194,7 @@ var init_controls = __esm({
34126
34194
  radioGroups2.adopt(groupId, member, raw === true);
34127
34195
  }
34128
34196
  }, [radioGroups2, raw, groupId, member]);
34129
- React7.useEffect(() => {
34197
+ React8.useEffect(() => {
34130
34198
  if (groupId && radioGroups2.deselects(radioGroups2.owner(groupId), member)) setLocal({ value: false, registry: radioGroups2, groupId });
34131
34199
  }, [radioGroups2, owner, member, groupId]);
34132
34200
  const accent = C2("accentPrimary", "#116DFF");
@@ -34198,8 +34266,8 @@ var init_controls = __esm({
34198
34266
  const selectedId = useResolvedId(props.selectedId, ctx);
34199
34267
  const tabs = Array.isArray(boundTabs) && boundTabs.length ? boundTabs : Array.isArray(props.tabs) ? props.tabs : [];
34200
34268
  const pages2 = props.style === "swipe" ? props.swipePages : void 0;
34201
- const [local, setLocal] = React7.useState(void 0);
34202
- React7.useEffect(() => {
34269
+ const [local, setLocal] = React8.useState(void 0);
34270
+ React8.useEffect(() => {
34203
34271
  setLocal(void 0);
34204
34272
  }, [selectedId]);
34205
34273
  const current = local != null && tabs.some((t2) => t2.id === local) ? local : selectedId;
@@ -34219,15 +34287,15 @@ var init_controls = __esm({
34219
34287
  e2.preventDefault();
34220
34288
  if (ni2 !== selIdx) select2(ni2);
34221
34289
  };
34222
- const pagerRef = React7.useRef(null);
34223
- const settle2 = React7.useRef(void 0);
34224
- React7.useEffect(() => {
34290
+ const pagerRef = React8.useRef(null);
34291
+ const settle2 = React8.useRef(void 0);
34292
+ React8.useEffect(() => {
34225
34293
  const el2 = pagerRef.current;
34226
34294
  if (!el2 || !el2.clientWidth) return;
34227
34295
  const x2 = selIdx * el2.clientWidth;
34228
34296
  if (Math.abs(el2.scrollLeft - x2) > 1) el2.scrollTo?.({ left: x2, behavior: "smooth" });
34229
34297
  }, [selIdx, pages2]);
34230
- React7.useEffect(() => () => clearTimeout(settle2.current), []);
34298
+ React8.useEffect(() => () => clearTimeout(settle2.current), []);
34231
34299
  const onPagerScroll = () => {
34232
34300
  clearTimeout(settle2.current);
34233
34301
  settle2.current = setTimeout(() => {
@@ -34338,7 +34406,7 @@ var init_controls = __esm({
34338
34406
  const expanded = useResolvedScalar(props.expandedPath ?? props.expanded, ctx);
34339
34407
  const open = expanded === true;
34340
34408
  const fire = ctx.onAction && props.onToggle ? () => ctx.onAction(resolveRowAction(props.onToggle, ctx)) : void 0;
34341
- const regionId = React7.useMemo(() => `himi-disclosure-${++disclosureSeq}`, []);
34409
+ const regionId = React8.useMemo(() => `himi-disclosure-${++disclosureSeq}`, []);
34342
34410
  return /* @__PURE__ */ jsxs4("div", { style: { width: "100%", ...wrap }, children: [
34343
34411
  /* @__PURE__ */ jsxs4(
34344
34412
  "button",
@@ -34357,7 +34425,7 @@ var init_controls = __esm({
34357
34425
  ]
34358
34426
  }
34359
34427
  ),
34360
- /* @__PURE__ */ jsx7("div", { id: regionId, role: "region", hidden: !open, style: open ? { padding: "2px 2px 8px 24px" } : void 0, children: open && (Array.isArray(props.content) ? props.content.map((c2, i2) => /* @__PURE__ */ jsx7(React7.Fragment, { children: renderChild(c2) }, c2?.id ?? i2)) : renderChild(props.content)) })
34428
+ /* @__PURE__ */ jsx7("div", { id: regionId, role: "region", hidden: !open, style: open ? { padding: "2px 2px 8px 24px" } : void 0, children: open && (Array.isArray(props.content) ? props.content.map((c2, i2) => /* @__PURE__ */ jsx7(React8.Fragment, { children: renderChild(c2) }, c2?.id ?? i2)) : renderChild(props.content)) })
34361
34429
  ] });
34362
34430
  };
34363
34431
  }
@@ -35481,7 +35549,7 @@ var init_rich_text_field = __esm({
35481
35549
  });
35482
35550
 
35483
35551
  // ../../core/web-renderer/src/richContent.tsx
35484
- import React9 from "react";
35552
+ import React10 from "react";
35485
35553
  import { Fragment as Fragment3, jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
35486
35554
  function richContentFollow(ctx, onLink) {
35487
35555
  return (url) => {
@@ -35586,7 +35654,7 @@ function Block({ b: b2, env, depth }) {
35586
35654
  minHeight: b2.spans.length ? void 0 : "1.5em"
35587
35655
  }, children: /* @__PURE__ */ jsx9(Spans, { spans: b2.spans, env }) });
35588
35656
  case "heading":
35589
- return React9.createElement(
35657
+ return React10.createElement(
35590
35658
  `h${b2.level}`,
35591
35659
  { ...tid(env, b2.id, b2.kind), style: textStyle(ctx, RICH_CONTENT_HEADING_TOKENS[b2.level - 1], text11) },
35592
35660
  /* @__PURE__ */ jsx9(Spans, { spans: b2.spans, env })
@@ -35969,7 +36037,9 @@ var init_webviewBridge = __esm({
35969
36037
  const registration = channel3.register(instanceId, (json8) => this.toPage(json8));
35970
36038
  this.registration = registration;
35971
36039
  channel3.deliverLifecycle(instanceId, registration.replacedLive ? lifecycleEnvelope(instanceId, "reloaded") : lifecycleEnvelope(instanceId, "mounted", plan.bridged ? { bridged: true } : { bridged: false, reason: plan.reason }));
35972
- if (!this.active) channel3.deliverLifecycle(instanceId, lifecycleEnvelope(instanceId, "inactive"));
36040
+ if (!this.active || registration.replacedLive) {
36041
+ channel3.deliverLifecycle(instanceId, lifecycleEnvelope(instanceId, this.active ? "active" : "inactive"));
36042
+ }
35973
36043
  if (plan.bridged) this.opts.win.addEventListener("message", this.onWindowMessage);
35974
36044
  }
35975
36045
  /** The iframe's `load`. Only the first one of a document epoch is `loaded`: an in-frame navigation
@@ -36152,12 +36222,13 @@ var webviewBridgeHost_exports = {};
36152
36222
  __export(webviewBridgeHost_exports, {
36153
36223
  default: () => WebViewBridgeHost
36154
36224
  });
36155
- import React10 from "react";
36225
+ import React11 from "react";
36156
36226
  function WebViewBridgeHost(p2) {
36157
36227
  const { channel: channel3, props, ctx } = p2;
36158
36228
  const explicit2 = useResolvedScalar(props.instanceId, ctx);
36159
36229
  const explicitId = typeof explicit2 === "string" || typeof explicit2 === "number" ? String(explicit2) : "";
36160
- const active = useResolvedScalar(bound(props.activePath), ctx) !== false;
36230
+ const pageActive = React11.useContext(PageActiveContext);
36231
+ const active = useResolvedScalar(bound(props.activePath), ctx) !== false && pageActive;
36161
36232
  const muted = useResolvedScalar(bound(props.mutedPath), ctx) === true;
36162
36233
  const cfg = props.config && typeof props.config === "object" ? props.config : {};
36163
36234
  const consoleForwarding = cfg.consoleForwarding === true;
@@ -36165,10 +36236,10 @@ function WebViewBridgeHost(p2) {
36165
36236
  const screenArgs = JSON.stringify(ctx.screenArgs ?? null);
36166
36237
  const source = p2.htmlStr != null ? "\0html" : p2.urlStr ?? "";
36167
36238
  const origins = p2.allowedOrigins.join("\n");
36168
- const sessionRef = React10.useRef(null);
36169
- const live3 = React10.useRef({ active, muted });
36239
+ const sessionRef = React11.useRef(null);
36240
+ const live3 = React11.useRef({ active, muted });
36170
36241
  live3.current = { active, muted };
36171
- React10.useEffect(() => {
36242
+ React11.useEffect(() => {
36172
36243
  if (typeof window === "undefined") return;
36173
36244
  if (p2.urlStr == null && p2.htmlStr == null) return;
36174
36245
  let instanceId;
@@ -36207,13 +36278,13 @@ function WebViewBridgeHost(p2) {
36207
36278
  p2.load.onLoad = void 0;
36208
36279
  };
36209
36280
  }, [channel3, ctx.screenId, screenArgs, p2.nodeId, explicitId, source, origins, security, consoleForwarding]);
36210
- React10.useEffect(() => {
36281
+ React11.useEffect(() => {
36211
36282
  sessionRef.current?.setActive(active);
36212
36283
  }, [active]);
36213
- React10.useEffect(() => {
36284
+ React11.useEffect(() => {
36214
36285
  sessionRef.current?.setMuted(muted);
36215
36286
  }, [muted]);
36216
- const first = React10.useRef(true);
36287
+ const first = React11.useRef(true);
36217
36288
  useLayoutEffectInBrowser(() => {
36218
36289
  if (first.current) {
36219
36290
  first.current = false;
@@ -36230,8 +36301,9 @@ var init_webviewBridgeHost = __esm({
36230
36301
  "use strict";
36231
36302
  init_bindings2();
36232
36303
  init_helpers();
36304
+ init_liveWindow();
36233
36305
  init_webviewBridge();
36234
- useLayoutEffectInBrowser = typeof globalThis.document === "undefined" ? React10.useEffect : React10.useLayoutEffect;
36306
+ useLayoutEffectInBrowser = typeof globalThis.document === "undefined" ? React11.useEffect : React11.useLayoutEffect;
36235
36307
  bound = (v2) => typeof v2 === "string" && isBinding(v2) ? v2 : void 0;
36236
36308
  }
36237
36309
  });
@@ -116844,7 +116916,7 @@ __export(pdfDocument_exports, {
116844
116916
  PdfDocument: () => PdfDocument,
116845
116917
  destroyPdfDocumentLoad: () => destroyPdfDocumentLoad
116846
116918
  });
116847
- import React11 from "react";
116919
+ import React12 from "react";
116848
116920
  import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
116849
116921
  async function loadPdfDocument(src, ownerDocument) {
116850
116922
  const [pdfjs, pdfWorkerAsset] = await Promise.all([
@@ -116863,18 +116935,18 @@ async function destroyPdfDocumentLoad(loading) {
116863
116935
  }
116864
116936
  }
116865
116937
  function PdfDocument({ src, nativeSrc, title, height, startPage, zoomPercent, style, onPageCount, onFallback, loadDocument = loadPdfDocument }) {
116866
- const [pages2, setPages] = React11.useState(0);
116867
- const [failedRequest, setFailedRequest] = React11.useState(null);
116938
+ const [pages2, setPages] = React12.useState(0);
116939
+ const [failedRequest, setFailedRequest] = React12.useState(null);
116868
116940
  const request = JSON.stringify([src, zoomPercent]);
116869
116941
  const failed3 = failedRequest === request;
116870
- const containerRef = React11.useRef(null);
116871
- const frameRef = React11.useRef(null);
116872
- const startPageRef = React11.useRef(startPage);
116942
+ const containerRef = React12.useRef(null);
116943
+ const frameRef = React12.useRef(null);
116944
+ const startPageRef = React12.useRef(startPage);
116873
116945
  startPageRef.current = startPage;
116874
- React11.useEffect(() => {
116946
+ React12.useEffect(() => {
116875
116947
  if (failed3) onFallback?.();
116876
116948
  }, [failed3, onFallback]);
116877
- React11.useEffect(() => {
116949
+ React12.useEffect(() => {
116878
116950
  const frame2 = frameRef.current;
116879
116951
  const page = Math.min(pages2, Math.max(1, Math.floor(startPage ?? 1) || 1));
116880
116952
  const canvas = pages2 ? containerRef.current?.querySelector(`[data-pdf-page="${page}"]`) : null;
@@ -116883,7 +116955,7 @@ function PdfDocument({ src, nativeSrc, title, height, startPage, zoomPercent, st
116883
116955
  const scale = frame2.offsetHeight > 0 && box.height > 0 ? box.height / frame2.offsetHeight : 1;
116884
116956
  frame2.scrollTop += (canvas.getBoundingClientRect().top - box.top) / scale;
116885
116957
  }, [startPage, pages2]);
116886
- React11.useEffect(() => {
116958
+ React12.useEffect(() => {
116887
116959
  let live3 = true;
116888
116960
  let loading;
116889
116961
  const container = containerRef.current;
@@ -116945,7 +117017,7 @@ var init_pdfDocument = __esm({
116945
117017
  });
116946
117018
 
116947
117019
  // ../../core/web-renderer/src/renderNode.tsx
116948
- import React12 from "react";
117020
+ import React13 from "react";
116949
117021
  import { createPortal } from "react-dom";
116950
117022
  import { Fragment as Fragment4, jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
116951
117023
  function boundTokenName(path2, fallback, ctx) {
@@ -117038,8 +117110,8 @@ function isNumericLike(s2) {
117038
117110
  return NUMERIC_TEXT.test(s2.trim());
117039
117111
  }
117040
117112
  function useValueSwap(value2, enabled2) {
117041
- const prev = React12.useRef(value2);
117042
- const gen = React12.useRef(0);
117113
+ const prev = React13.useRef(value2);
117114
+ const gen = React13.useRef(0);
117043
117115
  if (prev.current !== value2) {
117044
117116
  if (enabled2 && prev.current !== void 0 && value2 !== void 0) gen.current += 1;
117045
117117
  prev.current = value2;
@@ -117107,9 +117179,9 @@ function revealOnFocusStyle(C2) {
117107
117179
  };
117108
117180
  }
117109
117181
  function FormFieldLabelIdScope({ render, fieldKey, ...extras }) {
117110
- const id = React12.useId().replace(/[^A-Za-z0-9_-]/g, "");
117182
+ const id = React13.useId().replace(/[^A-Za-z0-9_-]/g, "");
117111
117183
  const el2 = render(`${fieldKey ? `${fieldKey}-` : ""}auto-${id}`);
117112
- return Object.keys(extras).length ? React12.cloneElement(el2, extras) : el2;
117184
+ return Object.keys(extras).length ? React13.cloneElement(el2, extras) : el2;
117113
117185
  }
117114
117186
  function formFieldA11y(props) {
117115
117187
  const labelledBy = props.__labelledBy;
@@ -117844,9 +117916,9 @@ function sectionSlot(raw) {
117844
117916
  }
117845
117917
  }
117846
117918
  function useLoadingTiming(target, graceMs, floorMs) {
117847
- const [shown2, setShown] = React12.useState(() => target === "loading" && graceMs > 0 ? "pending" : target);
117848
- const loadingSince = React12.useRef(shown2 === "loading" ? Date.now() : null);
117849
- React12.useEffect(() => {
117919
+ const [shown2, setShown] = React13.useState(() => target === "loading" && graceMs > 0 ? "pending" : target);
117920
+ const loadingSince = React13.useRef(shown2 === "loading" ? Date.now() : null);
117921
+ React13.useEffect(() => {
117850
117922
  if (target === shown2) return void 0;
117851
117923
  if (target === "loading") {
117852
117924
  if (graceMs <= 0) {
@@ -117885,8 +117957,8 @@ function autoGrowBox(contentHeight, lineHeight, verticalPadding, maxLines) {
117885
117957
  function PreviewMenuOverlay({ label: label3, dialogRef, preview, ctx, onClose, anchorHost, children }) {
117886
117958
  const host = anchorHost?.closest(`[${MODAL_SCOPE_ATTR}]`) ?? (typeof document !== "undefined" ? document.body : null);
117887
117959
  const reduce = ctx.reduceMotion();
117888
- const [shown2, setShown] = React12.useState(reduce);
117889
- React12.useEffect(() => {
117960
+ const [shown2, setShown] = React13.useState(reduce);
117961
+ React13.useEffect(() => {
117890
117962
  if (reduce || typeof requestAnimationFrame !== "function") {
117891
117963
  setShown(true);
117892
117964
  return;
@@ -117895,7 +117967,7 @@ function PreviewMenuOverlay({ label: label3, dialogRef, preview, ctx, onClose, a
117895
117967
  return () => cancelAnimationFrame(raf);
117896
117968
  }, [reduce]);
117897
117969
  const inScope = host != null && host !== host.ownerDocument.body;
117898
- const previewCtx = React12.useMemo(() => ctx.onAction ? { ...ctx, onAction: (a2) => {
117970
+ const previewCtx = React13.useMemo(() => ctx.onAction ? { ...ctx, onAction: (a2) => {
117899
117971
  onClose();
117900
117972
  ctx.onAction(a2);
117901
117973
  } } : ctx, [ctx, onClose]);
@@ -117962,7 +118034,7 @@ function youtubeId(item) {
117962
118034
  }
117963
118035
  }
117964
118036
  function useResolvedMediaItems(items, ctx) {
117965
- const paths2 = React12.useMemo(() => {
118037
+ const paths2 = React13.useMemo(() => {
117966
118038
  const set = /* @__PURE__ */ new Set();
117967
118039
  for (const it2 of items) {
117968
118040
  if (!it2 || typeof it2 !== "object") continue;
@@ -117974,17 +118046,17 @@ function useResolvedMediaItems(items, ctx) {
117974
118046
  return [...set];
117975
118047
  }, [items]);
117976
118048
  const key3 = paths2.join("\0");
117977
- const [values, setValues] = React12.useState(() => {
118049
+ const [values, setValues] = React13.useState(() => {
117978
118050
  const seed2 = {};
117979
118051
  if (ctx.provider) for (const p2 of paths2) seed2[p2] = ctx.provider.value(p2);
117980
118052
  return seed2;
117981
118053
  });
117982
- React12.useEffect(() => {
118054
+ React13.useEffect(() => {
117983
118055
  if (!ctx.provider || paths2.length === 0) return;
117984
118056
  const unsubs = paths2.map((p2) => ctx.provider.subscribe(p2, (v2) => setValues((prev) => prev[p2] === v2 ? prev : { ...prev, [p2]: v2 })));
117985
118057
  return () => unsubs.forEach((u2) => u2());
117986
118058
  }, [ctx.provider, key3]);
117987
- return React12.useMemo(() => items.map((it2) => {
118059
+ return React13.useMemo(() => items.map((it2) => {
117988
118060
  if (!it2 || typeof it2 !== "object") return it2;
117989
118061
  let out2 = null;
117990
118062
  for (const f2 of MEDIA_ITEM_BINDABLE) {
@@ -118027,8 +118099,8 @@ function reloadKeyOf(v2) {
118027
118099
  return String(v2);
118028
118100
  }
118029
118101
  function cloneWithKids(el2, props, kids3) {
118030
- if (kids3 === el2.props.children) return React12.cloneElement(el2, props);
118031
- return React12.cloneElement(el2, props, ...Array.isArray(kids3) ? kids3 : [kids3]);
118102
+ if (kids3 === el2.props.children) return React13.cloneElement(el2, props);
118103
+ return React13.cloneElement(el2, props, ...Array.isArray(kids3) ? kids3 : [kids3]);
118032
118104
  }
118033
118105
  function editA11yParts(node, edit) {
118034
118106
  if (Array.isArray(node)) {
@@ -118040,7 +118112,7 @@ function editA11yParts(node, edit) {
118040
118112
  });
118041
118113
  return changed ? out2 : node;
118042
118114
  }
118043
- if (!React12.isValidElement(node) || typeof node.type !== "string") return node;
118115
+ if (!React13.isValidElement(node) || typeof node.type !== "string") return node;
118044
118116
  const own6 = node.props;
118045
118117
  if (own6["data-component-id"] != null) return node;
118046
118118
  const part3 = own6[A11Y_PART];
@@ -118084,8 +118156,8 @@ function isNativeInteractiveElement(el2) {
118084
118156
  return typeof el2.type === "string" && (["button", "input", "select", "textarea"].includes(el2.type) || el2.type === "a" && typeof props.href === "string");
118085
118157
  }
118086
118158
  function hasInteractiveReactDescendant(el2) {
118087
- return React12.Children.toArray(el2.props.children).some((child) => {
118088
- if (!React12.isValidElement(child)) return false;
118159
+ return React13.Children.toArray(el2.props.children).some((child) => {
118160
+ if (!React13.isValidElement(child)) return false;
118089
118161
  if (isNativeInteractiveElement(child)) return true;
118090
118162
  const props = child.props;
118091
118163
  if (typeof child.type === "string" && typeof props.role === "string" && INTERACTIVE_ROLES.has(props.role)) return true;
@@ -118162,8 +118234,8 @@ function trackActivatorName(activator) {
118162
118234
  activatorNameObservers.set(activator, observer);
118163
118235
  }
118164
118236
  function TapActivator({ label: label3, state, tabIndex = 0, role = "button", hint, initialFocus }) {
118165
- const ref = React12.useRef(null);
118166
- const hintId = `hm-tap-hint${React12.useId()}`;
118237
+ const ref = React13.useRef(null);
118238
+ const hintId = `hm-tap-hint${React13.useId()}`;
118167
118239
  useIsomorphicLayoutEffect(() => {
118168
118240
  const el2 = ref.current;
118169
118241
  if (!el2 || label3) return;
@@ -118202,9 +118274,9 @@ function TapActivator({ label: label3, state, tabIndex = 0, role = "button", hin
118202
118274
  function withExtras(name, render) {
118203
118275
  const Wrapped = ({ props, ctx, wrap, nodeId, gap, ...pass }) => {
118204
118276
  const el2 = render({ props, ctx, wrap, nodeId, gap, nodeExtras: pass });
118205
- if (!React12.isValidElement(el2)) return /* @__PURE__ */ jsx11(Fragment4, { children: el2 });
118277
+ if (!React13.isValidElement(el2)) return /* @__PURE__ */ jsx11(Fragment4, { children: el2 });
118206
118278
  if (el2.props[NODE_EXTRAS_TARGET] === "bottom-drawer-panel") {
118207
- return React12.cloneElement(el2, { [NODE_EXTRAS_TARGET]: void 0 });
118279
+ return React13.cloneElement(el2, { [NODE_EXTRAS_TARGET]: void 0 });
118208
118280
  }
118209
118281
  const additive = addIntrinsicPadding(el2.props.style, wrap ?? {});
118210
118282
  const inferredDecorative = el2.props[INFERRED_DECORATIVE] === true;
@@ -118224,7 +118296,7 @@ function withExtras(name, render) {
118224
118296
  }, hasA11yParts ? editA11yParts(kids3, a11yPartEdit({}, false, () => {
118225
118297
  })) : kids3));
118226
118298
  }
118227
- return withCircleClipBorder(additive ? React12.cloneElement(el2, { style: additive }) : el2);
118299
+ return withCircleClipBorder(additive ? React13.cloneElement(el2, { style: additive }) : el2);
118228
118300
  }
118229
118301
  const prev = el2.props;
118230
118302
  const next = { ...pass };
@@ -118325,7 +118397,7 @@ function withExtras(name, render) {
118325
118397
  }
118326
118398
  return withCircleClipBorder(cloneWithKids(el2, next, kids3));
118327
118399
  }
118328
- return withCircleClipBorder(React12.cloneElement(el2, next));
118400
+ return withCircleClipBorder(React13.cloneElement(el2, next));
118329
118401
  };
118330
118402
  Wrapped.displayName = name;
118331
118403
  return Wrapped;
@@ -118433,7 +118505,7 @@ function overlayEdgeStyle(edge, gap) {
118433
118505
  }
118434
118506
  function useFlippedEdge(edge, open, bubbleRef, anchorRef, gap = TOOLTIP_GAP) {
118435
118507
  const initial = { edge, x: 0, y: 0, maxWidth: Infinity };
118436
- const [placed, setPlaced] = React12.useState(initial);
118508
+ const [placed, setPlaced] = React13.useState(initial);
118437
118509
  useIsomorphicLayoutEffect(() => {
118438
118510
  if (!open) {
118439
118511
  setPlaced((previous) => previous.edge === edge && previous.x === 0 && previous.y === 0 && previous.maxWidth === Infinity ? previous : initial);
@@ -119227,7 +119299,7 @@ function renderNodeInner(node, ctx) {
119227
119299
  }
119228
119300
  }
119229
119301
  const el2 = renderInner(node, ctx);
119230
- if (!React12.isValidElement(el2)) return el2;
119302
+ if (!React13.isValidElement(el2)) return el2;
119231
119303
  const extra = {};
119232
119304
  const material = node?.modifiers?.material;
119233
119305
  const materialName = typeof material === "string" ? material : material?.token ?? material?.name;
@@ -119406,8 +119478,8 @@ function renderNodeInner(node, ctx) {
119406
119478
  const finalStyle = extra.style ?? el2.props.style;
119407
119479
  if (!finalStyle?.position) extra.style = { ...finalStyle ?? {}, position: "relative" };
119408
119480
  }
119409
- let out2 = tapActivator ? React12.cloneElement(el2, extra, tapActivator, el2.props.children) : Object.keys(extra).length ? React12.cloneElement(el2, extra) : el2;
119410
- if (React12.isValidElement(out2)) out2 = withCircleClipBorder(out2);
119481
+ let out2 = tapActivator ? React13.cloneElement(el2, extra, tapActivator, el2.props.children) : Object.keys(extra).length ? React13.cloneElement(el2, extra) : el2;
119482
+ if (React13.isValidElement(out2)) out2 = withCircleClipBorder(out2);
119411
119483
  if (a11yHint && !tapActivator) {
119412
119484
  out2 = /* @__PURE__ */ jsx11(A11yHintDescription, { hint: a11yHint, idBase: componentId, children: out2 });
119413
119485
  }
@@ -119624,10 +119696,10 @@ function renderInner(node, ctx) {
119624
119696
  template: items[0],
119625
119697
  renderRow: (t2, ic) => {
119626
119698
  let row2 = renderNode(t2, asItem(ic));
119627
- if (boundStagger > 0 && React12.isValidElement(row2)) {
119699
+ if (boundStagger > 0 && React13.isValidElement(row2)) {
119628
119700
  const i2 = Number(ic.itemScope?.__index ?? 0);
119629
119701
  const prev = row2.props.style ?? {};
119630
- row2 = React12.cloneElement(row2, { style: { ...prev, animationDelay: `${i2 * boundStagger}ms` } });
119702
+ row2 = React13.cloneElement(row2, { style: { ...prev, animationDelay: `${i2 * boundStagger}ms` } });
119631
119703
  }
119632
119704
  if (boundSwipe && ctx.onAction && !props.horizontal) {
119633
119705
  const leading = resolveSwipeActions(boundSwipe.leading, ic);
@@ -119687,7 +119759,7 @@ function renderInner(node, ctx) {
119687
119759
  if (swipe && ctx.onAction && !props.horizontal) {
119688
119760
  const leading = swipe.leading ?? [];
119689
119761
  const trailing = swipe.trailing ?? [];
119690
- const arr2 = React12.Children.toArray(rendered);
119762
+ const arr2 = React13.Children.toArray(rendered);
119691
119763
  body = arr2.map((child, i2) => /* @__PURE__ */ jsx11(
119692
119764
  SwipeRow,
119693
119765
  {
@@ -120142,8 +120214,8 @@ function renderInner(node, ctx) {
120142
120214
  if (carItemsPath && items[0] && ctx.provider) {
120143
120215
  return /* @__PURE__ */ jsx11("div", { style: { width: "100%", ...wrap }, children: /* @__PURE__ */ jsx11("div", { style: { display: "flex", overflowX: "auto", gap: 12, width: "100%" }, children: /* @__PURE__ */ jsx11(BoundList, { ctx, itemsPath: carItemsPath, template: items[0], renderRow: (t2, ic) => /* @__PURE__ */ jsx11("div", { style: { flex: "0 0 auto" }, children: renderNode(t2, ic) }) }) }) });
120144
120216
  }
120145
- if (type === "Carousel") return /* @__PURE__ */ jsx11(CarouselNode, { props, ctx, wrap });
120146
- return /* @__PURE__ */ jsx11(PagingNode, { props: { ...props, __pager: true }, ctx, wrap });
120217
+ if (type === "Carousel") return /* @__PURE__ */ jsx11(CarouselNode, { props, ctx, wrap, nodeId: resolvedComponentId(node.id, ctx) ?? "" });
120218
+ return /* @__PURE__ */ jsx11(PagingNode, { props: { ...props, __pager: true }, ctx, wrap, nodeId: resolvedComponentId(node.id, ctx) ?? "" });
120147
120219
  }
120148
120220
  case "StepIndicator": {
120149
120221
  const steps = Array.isArray(props.steps) ? props.steps : [];
@@ -120200,7 +120272,7 @@ function reportUnknownComponent(ctx, pkg, type) {
120200
120272
  function unknownComponentShowsDeveloperLabel(ctx) {
120201
120273
  return ctx.debugUnknownComponents ?? ctx.previewSurface != null;
120202
120274
  }
120203
- var rowValue, loadPdfFetch, WebViewBridgeHost2, useIsomorphicLayoutEffect, ResponsiveGrid, SPLIT_EXPANDED_MIN_WIDTH, SPLIT_COLUMN_GAP, ResponsiveSplitView, ABSOLUTE_URL_RE, appearKeyframesInjected, valueSwapKeyframesInjected, NUMERIC_TEXT, shimmerKeyframesInjected, pressStylesInjected, REVEAL_ON_FOCUS_ATTR, FOCUS_RING_CSS, focusStylesInjected, HLIST_CHILD_CSS, hListStylesInjected, listAnimateRuntimeInstalled, transitionKeyframesInjected, countUpRuntimeInjected, MEASURE_PREFIX, measureRuntimeInjected, revealRuntimeInjected, AMBIENT_HOST_STYLE, AmbientMotionBox, vectorAnimStylesInjected, scrollProgressRuntimeInjected, confettiRuntimeInjected, lottieRuntimeInjected, LOTTIE_RUNTIME_ATTRIBUTES, lottieAnims, riveRuntimeInjected, gradientKeyframesInjected, parallaxRuntimeInjected, spinKeyframesInjected, marqueeKeyframesInjected, alignItems, zJustifyItems, hAlignItems, bodyFont, kids2, rowKidCtx, rowKids, staggeredKids, asTextL10n, asFinalTextL10n, asBoundText, useBoundString, InterpolatedTextView, txt, selectFragmentCase, fragmentValueHash, fragmentSlotContent, FragmentSlotNode, RichContentEditorNode, MediaFieldNode, WorkerSubtreeNode, RichContentNode, resolveItemDeep2, resolveRowAction2, resolveSwipeActions, resolveModBindings, resolvedComponentId, directServiceBindings, withRootStyle, ReactiveDirectScalars, HiddenGate, ExitPresence, StatefulSectionNode, KEYBOARD_INPUT_MODES, AUTOCAPITALIZE_VALUES, ENTER_KEY_HINTS, AUTOGROW_CEILING, EditableField, MENU_ANCHOR_CONTROL, MenuNode, MENU_LONG_PRESS_MS, menuOpensOnLongPress, LoadMoreSentinel, FieldErrorNode, FormView, MediaSlotProvider, MEDIA_ITEM_BINDABLE, MediaPlayerView, VideoNode, PdfDocumentCanvas, PdfViewNode, WebViewNode, InteractivePicker, InteractiveDatePicker, InteractiveSearchField, InteractiveStepper, NODE_EXTRAS_TARGET, SYNTHETIC_TAP_ROLE, SYNTHETIC_TABINDEX, INFERRED_DECORATIVE, SELF_RENDERED_LEAF, ROLE_WHEN_NAMED, AUTHORED_ROLE, PENDING_RANGE, RANGE_ROLES, NODE_A11Y_ATTRS, INTERACTIVE_ROLES, ALWAYS_INTERACTIVE_COMPONENT_TYPES, TAP_ACTIVATOR_ATTR, TAP_GROUP_ATTR, NESTED_CONTROL_SELECTOR, VISUALLY_HIDDEN, NAME_SKIP_SELECTOR, activatorNameObservers, ACTIVATOR_STATE_ATTRS, controlNode, ToggleNode, SliderNode, SelectionControlNode, TabsNode, SegmentedControlNode, DisclosureGroupNode, GridNode, SplitViewNode, REVEAL_RELEASE_MS, REVEAL_FADE_MS, REVEAL_BUFFER, revealProgress, countWords, RevealText, TextNode, ImageNode, ANIMATION_LEAF, LottieNode, RiveNode, AvatarNode, IconNode, EMPTY_STATE_SPACING, EmptyStateNode, ERROR_STATE_VARIANTS, ERROR_STATE_SPACING, ErrorStateNode, ButtonNode, OtpInputNode, ProgressBarNode, SnackbarNode, ACTIVITY_DEFAULT_NAME, ACTIVITY_RING_ARC, ActivityIndicatorNode, NATIVELY_TABBABLE, BottomSheetNode, BOTTOM_DRAWER_HOST_STACK_EVENT, ModalBottomSheetNode, BottomDrawerNode, PRESENTED_OVERLAY_ATTR, TooltipNode, PopoverNode, ChipsInputNode, ChipNode, TableNode, GaugeRing, GaugeNode, RATING_METRICS, ratingMetrics, RatingNode, AvatarStripNode, CHART_STROKE_CYCLE, chartStrokeAt, chartBarCenter, ChartNode, donutSliceOpacity, DonutChartNode, ShapeNode, LegendMarker, LegendNode, cellAlign, DataTableNode, voiceNoteState, voiceNoteDelivery, VOICE_NOTE_DEFAULT_BARS, clampBarCount, VoiceNoteNode, TimelineNode, PagingNode, WheelPickerNode, ColorPickerNode, FilterChipsNode, TILE_PX, MAX_MERCATOR_LAT, DEFAULT_TILE_MAX_ZOOM, CIRCLE_SEGMENTS, METRES_PER_DEG_LAT, MARKER_HIT_RADIUS, SHAPE_HIT_RADIUS, MapNode, CAROUSEL_SETTLE_MS, scrollCarouselTo, CarouselNode, BannerNode, CollapsingHeaderNode, UnsupportedOnSurface, CALENDAR_DATE_ONLY_RE, CAL_DEFAULT_MAX_DOTS, CAL_AGENDA_INITIAL_DAYS, CAL_AGENDA_PAGE_DAYS, CAL_DEFAULT_SNAP_MINUTES, CAL_UNASSIGNED_LANE_ID, MonthCalendarNode, TimeGridNode, AgendaNode, ARIA_ROLE, initialFocusScheduled, PRESENTED_SCOPE, focusRoots, A11yHintDescription, reportedUnknownComponents, UnknownComponentNode, WebRenderer;
120275
+ var rowValue, loadPdfFetch, WebViewBridgeHost2, useIsomorphicLayoutEffect, ResponsiveGrid, SPLIT_EXPANDED_MIN_WIDTH, SPLIT_COLUMN_GAP, ResponsiveSplitView, ABSOLUTE_URL_RE, appearKeyframesInjected, valueSwapKeyframesInjected, NUMERIC_TEXT, shimmerKeyframesInjected, pressStylesInjected, REVEAL_ON_FOCUS_ATTR, FOCUS_RING_CSS, focusStylesInjected, HLIST_CHILD_CSS, hListStylesInjected, listAnimateRuntimeInstalled, transitionKeyframesInjected, countUpRuntimeInjected, MEASURE_PREFIX, measureRuntimeInjected, revealRuntimeInjected, AMBIENT_HOST_STYLE, AmbientMotionBox, vectorAnimStylesInjected, scrollProgressRuntimeInjected, confettiRuntimeInjected, lottieRuntimeInjected, LOTTIE_RUNTIME_ATTRIBUTES, lottieAnims, riveRuntimeInjected, gradientKeyframesInjected, parallaxRuntimeInjected, spinKeyframesInjected, marqueeKeyframesInjected, alignItems, zJustifyItems, hAlignItems, bodyFont, kids2, rowKidCtx, rowKids, staggeredKids, asTextL10n, asFinalTextL10n, asBoundText, useBoundString, InterpolatedTextView, txt, selectFragmentCase, fragmentValueHash, fragmentSlotContent, FragmentSlotNode, RichContentEditorNode, MediaFieldNode, WorkerSubtreeNode, RichContentNode, resolveItemDeep2, resolveRowAction2, resolveSwipeActions, resolveModBindings, resolvedComponentId, directServiceBindings, withRootStyle, ReactiveDirectScalars, HiddenGate, ExitPresence, StatefulSectionNode, KEYBOARD_INPUT_MODES, AUTOCAPITALIZE_VALUES, ENTER_KEY_HINTS, AUTOGROW_CEILING, EditableField, MENU_ANCHOR_CONTROL, MenuNode, MENU_LONG_PRESS_MS, menuOpensOnLongPress, LoadMoreSentinel, FieldErrorNode, FormView, MediaSlotProvider, MEDIA_ITEM_BINDABLE, MediaPlayerView, VideoNode, PdfDocumentCanvas, PdfViewNode, WebViewNode, InteractivePicker, InteractiveDatePicker, InteractiveSearchField, InteractiveStepper, NODE_EXTRAS_TARGET, SYNTHETIC_TAP_ROLE, SYNTHETIC_TABINDEX, INFERRED_DECORATIVE, SELF_RENDERED_LEAF, ROLE_WHEN_NAMED, AUTHORED_ROLE, PENDING_RANGE, RANGE_ROLES, NODE_A11Y_ATTRS, INTERACTIVE_ROLES, ALWAYS_INTERACTIVE_COMPONENT_TYPES, TAP_ACTIVATOR_ATTR, TAP_GROUP_ATTR, NESTED_CONTROL_SELECTOR, VISUALLY_HIDDEN, NAME_SKIP_SELECTOR, activatorNameObservers, ACTIVATOR_STATE_ATTRS, controlNode, ToggleNode, SliderNode, SelectionControlNode, TabsNode, SegmentedControlNode, DisclosureGroupNode, GridNode, SplitViewNode, REVEAL_RELEASE_MS, REVEAL_FADE_MS, REVEAL_BUFFER, revealProgress, countWords, RevealText, TextNode, ImageNode, ANIMATION_LEAF, LottieNode, RiveNode, AvatarNode, IconNode, EMPTY_STATE_SPACING, EmptyStateNode, ERROR_STATE_VARIANTS, ERROR_STATE_SPACING, ErrorStateNode, ButtonNode, OtpInputNode, ProgressBarNode, SnackbarNode, ACTIVITY_DEFAULT_NAME, ACTIVITY_RING_ARC, ActivityIndicatorNode, NATIVELY_TABBABLE, BottomSheetNode, BOTTOM_DRAWER_HOST_STACK_EVENT, ModalBottomSheetNode, BottomDrawerNode, PRESENTED_OVERLAY_ATTR, TooltipNode, PopoverNode, ChipsInputNode, ChipNode, TableNode, GaugeRing, GaugeNode, RATING_METRICS, ratingMetrics, RatingNode, AvatarStripNode, CHART_STROKE_CYCLE, chartStrokeAt, chartBarCenter, ChartNode, donutSliceOpacity, DonutChartNode, ShapeNode, LegendMarker, LegendNode, cellAlign, DataTableNode, voiceNoteState, voiceNoteDelivery, VOICE_NOTE_DEFAULT_BARS, clampBarCount, VoiceNoteNode, TimelineNode, LiveWindowMeasured, LiveWindowPage, PagingNode, WheelPickerNode, ColorPickerNode, FilterChipsNode, TILE_PX, MAX_MERCATOR_LAT, DEFAULT_TILE_MAX_ZOOM, CIRCLE_SEGMENTS, METRES_PER_DEG_LAT, MARKER_HIT_RADIUS, SHAPE_HIT_RADIUS, MapNode, CAROUSEL_SETTLE_MS, scrollCarouselTo, CarouselNode, BannerNode, CollapsingHeaderNode, UnsupportedOnSurface, CALENDAR_DATE_ONLY_RE, CAL_DEFAULT_MAX_DOTS, CAL_AGENDA_INITIAL_DAYS, CAL_AGENDA_PAGE_DAYS, CAL_DEFAULT_SNAP_MINUTES, CAL_UNASSIGNED_LANE_ID, MonthCalendarNode, TimeGridNode, AgendaNode, ARIA_ROLE, initialFocusScheduled, PRESENTED_SCOPE, focusRoots, A11yHintDescription, reportedUnknownComponents, UnknownComponentNode, WebRenderer;
120204
120276
  var init_renderNode = __esm({
120205
120277
  "../../core/web-renderer/src/renderNode.tsx"() {
120206
120278
  "use strict";
@@ -120212,6 +120284,7 @@ var init_renderNode = __esm({
120212
120284
  init_modifiers();
120213
120285
  init_shape();
120214
120286
  init_helpers();
120287
+ init_liveWindow();
120215
120288
  init_bindings2();
120216
120289
  init_snackbarTiming();
120217
120290
  init_bindings();
@@ -120249,12 +120322,12 @@ var init_renderNode = __esm({
120249
120322
  init_richContent();
120250
120323
  rowValue = (v2, ctx) => typeof v2 === "string" && v2.startsWith("$item") ? resolveScalarStatic(v2, ctx) : v2;
120251
120324
  loadPdfFetch = () => Promise.resolve().then(() => (init_pdfFetch(), pdfFetch_exports));
120252
- WebViewBridgeHost2 = React12.lazy(() => Promise.resolve().then(() => (init_webviewBridgeHost(), webviewBridgeHost_exports)));
120253
- useIsomorphicLayoutEffect = typeof globalThis.document === "undefined" ? React12.useEffect : React12.useLayoutEffect;
120325
+ WebViewBridgeHost2 = React13.lazy(() => Promise.resolve().then(() => (init_webviewBridgeHost(), webviewBridgeHost_exports)));
120326
+ useIsomorphicLayoutEffect = typeof globalThis.document === "undefined" ? React13.useEffect : React13.useLayoutEffect;
120254
120327
  ResponsiveGrid = ({ base, medium, expanded, initialCols, seedWidth, spacing, extra, children }) => {
120255
- const [el2, setEl] = React12.useState(null);
120256
- const [cols, setCols] = React12.useState(initialCols);
120257
- React12.useEffect(() => {
120328
+ const [el2, setEl] = React13.useState(null);
120329
+ const [cols, setCols] = React13.useState(initialCols);
120330
+ React13.useEffect(() => {
120258
120331
  if (!el2) return;
120259
120332
  const measure2 = () => {
120260
120333
  const w2 = seededWidth(el2.clientWidth, seedWidth);
@@ -120280,9 +120353,9 @@ var init_renderNode = __esm({
120280
120353
  SPLIT_EXPANDED_MIN_WIDTH = 840;
120281
120354
  SPLIT_COLUMN_GAP = 16;
120282
120355
  ResponsiveSplitView = ({ primary, detail, primaryMaxWidth, initialWide, seedWidth, extra }) => {
120283
- const ref = React12.useRef(null);
120284
- const [wide, setWide] = React12.useState(initialWide);
120285
- React12.useEffect(() => {
120356
+ const ref = React13.useRef(null);
120357
+ const [wide, setWide] = React13.useState(initialWide);
120358
+ React13.useEffect(() => {
120286
120359
  const el2 = ref.current;
120287
120360
  if (!el2) return;
120288
120361
  const measure2 = () => {
@@ -120328,9 +120401,9 @@ var init_renderNode = __esm({
120328
120401
  revealRuntimeInjected = false;
120329
120402
  AMBIENT_HOST_STYLE = { display: "contents" };
120330
120403
  AmbientMotionBox = ({ spec, kind, children }) => {
120331
- const ref = React12.useRef(null);
120404
+ const ref = React13.useRef(null);
120332
120405
  const { minGapMs, maxGapMs } = spec;
120333
- React12.useEffect(() => {
120406
+ React13.useEffect(() => {
120334
120407
  const el2 = ref.current?.firstElementChild;
120335
120408
  if (!el2 || typeof el2.animate !== "function") return;
120336
120409
  let timer;
@@ -120414,14 +120487,14 @@ var init_renderNode = __esm({
120414
120487
  }
120415
120488
  };
120416
120489
  bodyFont = (ctx) => fontStack(ctx.font("body").family, ctx.idiom);
120417
- kids2 = (arr2, ctx) => Array.isArray(arr2) ? arr2.map((n2, i2) => /* @__PURE__ */ jsx11(React12.Fragment, { children: renderNode(n2, ctx) }, n2?.id ?? i2)) : null;
120490
+ kids2 = (arr2, ctx) => Array.isArray(arr2) ? arr2.map((n2, i2) => /* @__PURE__ */ jsx11(React13.Fragment, { children: renderNode(n2, ctx) }, n2?.id ?? i2)) : null;
120418
120491
  rowKidCtx = (n2, ctx) => wantsRowStretch(n2) ? { ...ctx, rowStretch: true } : normalize(n2).type === "Divider" ? { ...ctx, rowDivider: true } : ctx;
120419
- rowKids = (arr2, ctx) => Array.isArray(arr2) ? arr2.map((n2, i2) => /* @__PURE__ */ jsx11(React12.Fragment, { children: renderNode(n2, rowKidCtx(n2, ctx)) }, n2?.id ?? i2)) : null;
120492
+ rowKids = (arr2, ctx) => Array.isArray(arr2) ? arr2.map((n2, i2) => /* @__PURE__ */ jsx11(React13.Fragment, { children: renderNode(n2, rowKidCtx(n2, ctx)) }, n2?.id ?? i2)) : null;
120420
120493
  staggeredKids = (arr2, ctx, staggerMs) => Array.isArray(arr2) ? arr2.map((n2, i2) => {
120421
120494
  const el2 = renderNode(n2, ctx);
120422
- if (!React12.isValidElement(el2)) return /* @__PURE__ */ jsx11(React12.Fragment, { children: el2 }, n2?.id ?? i2);
120495
+ if (!React13.isValidElement(el2)) return /* @__PURE__ */ jsx11(React13.Fragment, { children: el2 }, n2?.id ?? i2);
120423
120496
  const prev = el2.props.style ?? {};
120424
- return React12.cloneElement(el2, { key: n2?.id ?? i2, style: { ...prev, animationDelay: `${i2 * staggerMs}ms` } });
120497
+ return React13.cloneElement(el2, { key: n2?.id ?? i2, style: { ...prev, animationDelay: `${i2 * staggerMs}ms` } });
120425
120498
  }) : null;
120426
120499
  asTextL10n = (v2, ctx) => typeof v2 === "string" && v2.startsWith(TRANSLATION_PREFIX) ? asText2(resolveTranslation(v2, ctx.catalog)) : asText2(v2);
120427
120500
  asFinalTextL10n = (v2, ctx) => typeof v2 === "string" ? v2.startsWith(TRANSLATION_PREFIX) ? asText2(resolveTranslation(v2, ctx.catalog)) : v2 : asText2(v2);
@@ -120434,13 +120507,13 @@ var init_renderNode = __esm({
120434
120507
  const bound2 = Object.entries(params).filter(
120435
120508
  ([, v2]) => typeof v2 === "string" && v2.startsWith("$service:")
120436
120509
  );
120437
- const [live3, setLive] = React12.useState(() => {
120510
+ const [live3, setLive] = React13.useState(() => {
120438
120511
  const seed2 = {};
120439
120512
  if (ctx.provider) for (const [k2, p2] of bound2) seed2[k2] = ctx.provider.value(servicePath(p2));
120440
120513
  return seed2;
120441
120514
  });
120442
120515
  const subKey = bound2.map(([k2, p2]) => `${k2}=${p2}`).join("|");
120443
- React12.useEffect(() => {
120516
+ React13.useEffect(() => {
120444
120517
  const provider = ctx.provider;
120445
120518
  if (!provider) return;
120446
120519
  const unsubs = bound2.map(
@@ -120482,11 +120555,11 @@ var init_renderNode = __esm({
120482
120555
  fragmentSlotContent = ({ props, ctx, discriminator, slotId, extra }) => {
120483
120556
  const selected = selectFragmentCase(props, discriminator);
120484
120557
  const selectedId = typeof selected?.id === "string" ? selected.id : "";
120485
- const previousId = React12.useRef(selectedId);
120486
- const reportedUnknown = React12.useRef(/* @__PURE__ */ new Set());
120487
- const reportedInvalid = React12.useRef(/* @__PURE__ */ new Set());
120488
- const [announcement, setAnnouncement] = React12.useState("");
120489
- React12.useEffect(() => {
120558
+ const previousId = React13.useRef(selectedId);
120559
+ const reportedUnknown = React13.useRef(/* @__PURE__ */ new Set());
120560
+ const reportedInvalid = React13.useRef(/* @__PURE__ */ new Set());
120561
+ const [announcement, setAnnouncement] = React13.useState("");
120562
+ React13.useEffect(() => {
120490
120563
  if (typeof discriminator === "string") {
120491
120564
  if (discriminator && !props.cases?.some((candidate) => candidate.id === discriminator) && !reportedUnknown.current.has(discriminator)) {
120492
120565
  reportedUnknown.current.add(discriminator);
@@ -120500,7 +120573,7 @@ var init_renderNode = __esm({
120500
120573
  }
120501
120574
  }
120502
120575
  }, [ctx, discriminator, props.cases, slotId]);
120503
- React12.useEffect(() => {
120576
+ React13.useEffect(() => {
120504
120577
  if (previousId.current !== selectedId) {
120505
120578
  const next = selected?.accessibilityAnnouncement ?? selected?.accessibility_announcement;
120506
120579
  setAnnouncement(typeof next === "string" ? next : "");
@@ -120514,7 +120587,7 @@ var init_renderNode = __esm({
120514
120587
  // and the right edge clips (branded-lite's home is a FragmentSlot → 32px cut in
120515
120588
  // the phone preview). Included before ...extra so a modifier can still override.
120516
120589
  /* @__PURE__ */ jsxs8("div", { "data-fragment-slot": slotId ?? "", "data-fragment-case": selectedId, style: { width: "100%", boxSizing: "border-box", ...extra }, children: [
120517
- selected?.content ? /* @__PURE__ */ jsx11(React12.Fragment, { children: renderNode(selected.content, ctx) }, selectedId) : null,
120590
+ selected?.content ? /* @__PURE__ */ jsx11(React13.Fragment, { children: renderNode(selected.content, ctx) }, selectedId) : null,
120518
120591
  /* @__PURE__ */ jsx11("span", { "aria-live": "polite", style: { position: "absolute", width: 1, height: 1, padding: 0, margin: -1, overflow: "hidden", clip: "rect(0, 0, 0, 0)", whiteSpace: "nowrap", border: 0 }, children: announcement })
120519
120592
  ] })
120520
120593
  );
@@ -120535,11 +120608,11 @@ var init_renderNode = __esm({
120535
120608
  const fallbackPathStr = mediaFieldServicePath(props.fallbackTextPath);
120536
120609
  const fallbackBound = useBoundValue(ctx, fallbackPathStr ? String(props.fallbackTextPath) : "");
120537
120610
  const fallbackText = typeof fallbackBound === "string" ? fallbackBound : "";
120538
- const [uploading, setUploading] = React12.useState(false);
120539
- const [failed3, setFailed] = React12.useState(false);
120540
- const fileRef = React12.useRef(null);
120541
- const previewRef = React12.useRef(null);
120542
- const [localPreview, setLocalPreview] = React12.useState("");
120611
+ const [uploading, setUploading] = React13.useState(false);
120612
+ const [failed3, setFailed] = React13.useState(false);
120613
+ const fileRef = React13.useRef(null);
120614
+ const previewRef = React13.useRef(null);
120615
+ const [localPreview, setLocalPreview] = React13.useState("");
120543
120616
  const uploadService = typeof props.uploadService === "string" ? props.uploadService : "";
120544
120617
  const resolvedLabel = asText2(resolveScalarStatic(props.label, ctx));
120545
120618
  const name = mediaFieldName(resolvedLabel);
@@ -120584,7 +120657,7 @@ var init_renderNode = __esm({
120584
120657
  setUploading(false);
120585
120658
  }
120586
120659
  };
120587
- React12.useEffect(() => () => {
120660
+ React13.useEffect(() => () => {
120588
120661
  const previewUrl = previewRef.current;
120589
120662
  if (previewUrl && typeof URL.revokeObjectURL === "function") URL.revokeObjectURL(previewUrl);
120590
120663
  previewRef.current = null;
@@ -120656,7 +120729,7 @@ var init_renderNode = __esm({
120656
120729
  const value2 = useBoundValue(ctx, typeof path2 === "string" ? path2 : "");
120657
120730
  const policy = props.policy;
120658
120731
  const catalog4 = ctx.provider && typeof ctx.provider.listActions === "function" ? ctx.provider : null;
120659
- const validation = React12.useMemo(() => {
120732
+ const validation = React13.useMemo(() => {
120660
120733
  if (value2 === void 0 || value2 === null) return { ok: false, reason: "unresolved" };
120661
120734
  if (typeof value2 !== "string") return { ok: false, reason: "value_type" };
120662
120735
  if (!policy || typeof policy !== "object") return { ok: false, reason: "typed_decode" };
@@ -120666,8 +120739,8 @@ var init_renderNode = __esm({
120666
120739
  return { ok: false, reason: "typed_decode" };
120667
120740
  }
120668
120741
  }, [catalog4, policy, slotId, value2]);
120669
- const reported = React12.useRef(/* @__PURE__ */ new Set());
120670
- React12.useEffect(() => {
120742
+ const reported = React13.useRef(/* @__PURE__ */ new Set());
120743
+ React13.useEffect(() => {
120671
120744
  const key3 = validation.ok ? `ok:${validation.treeHash}` : `bad:${validation.treeHash ?? validation.reason}`;
120672
120745
  if (reported.current.has(key3)) return;
120673
120746
  reported.current.add(key3);
@@ -120696,10 +120769,10 @@ var init_renderNode = __esm({
120696
120769
  const hasPath = typeof path2 === "string" && path2 !== "";
120697
120770
  const bound2 = useResolvedScalar(hasPath ? path2 : void 0, ctx);
120698
120771
  const raw = hasPath ? bound2 : props.documentJson ?? props.document_json;
120699
- const result = React12.useMemo(() => layoutRichContentValue(raw), [raw]);
120772
+ const result = React13.useMemo(() => layoutRichContentValue(raw), [raw]);
120700
120773
  const reason = result && "rejected" in result ? result.rejected : void 0;
120701
- const reported = React12.useRef(/* @__PURE__ */ new Set());
120702
- React12.useEffect(() => {
120774
+ const reported = React13.useRef(/* @__PURE__ */ new Set());
120775
+ React13.useEffect(() => {
120703
120776
  if (!reason) return;
120704
120777
  const key3 = typeof raw === "string" ? `${reason}:${raw.length}:${richContentDocumentHash(raw)}` : `${reason}:non-string`;
120705
120778
  if (reported.current.has(key3)) return;
@@ -120793,17 +120866,17 @@ var init_renderNode = __esm({
120793
120866
  };
120794
120867
  withRootStyle = (content, style) => {
120795
120868
  if (Array.isArray(content)) return content.map((child) => withRootStyle(child, style));
120796
- if (!React12.isValidElement(content)) return content;
120797
- if (content.type === React12.Fragment) {
120798
- return React12.cloneElement(content, {}, React12.Children.map(content.props.children, (child) => withRootStyle(child, style)));
120869
+ if (!React13.isValidElement(content)) return content;
120870
+ if (content.type === React13.Fragment) {
120871
+ return React13.cloneElement(content, {}, React13.Children.map(content.props.children, (child) => withRootStyle(child, style)));
120799
120872
  }
120800
120873
  const element = content;
120801
- return React12.cloneElement(element, { style: { ...element.props.style, ...style } });
120874
+ return React13.cloneElement(element, { style: { ...element.props.style, ...style } });
120802
120875
  };
120803
120876
  ReactiveDirectScalars = ({ node, ctx, bindings, style }) => {
120804
- const [, rerender] = React12.useState(0);
120877
+ const [, rerender] = React13.useState(0);
120805
120878
  const bindingKey = bindings.join("|");
120806
- React12.useEffect(() => {
120879
+ React13.useEffect(() => {
120807
120880
  if (!ctx.provider) return;
120808
120881
  const unsubs = bindings.map((binding2) => ctx.provider.subscribe(servicePath(binding2), () => rerender((n2) => n2 + 1)));
120809
120882
  return () => unsubs.forEach((unsubscribe) => unsubscribe());
@@ -120816,14 +120889,14 @@ var init_renderNode = __esm({
120816
120889
  return /* @__PURE__ */ jsx11(ExitPresence, { hidden: hiddenBool(v2), exit: exit ?? null, children });
120817
120890
  };
120818
120891
  ExitPresence = ({ hidden, exit, children }) => {
120819
- const [prevHidden, setPrevHidden] = React12.useState(hidden);
120820
- const [exiting, setExiting] = React12.useState(false);
120892
+ const [prevHidden, setPrevHidden] = React13.useState(hidden);
120893
+ const [exiting, setExiting] = React13.useState(false);
120821
120894
  if (hidden !== prevHidden) {
120822
120895
  setPrevHidden(hidden);
120823
120896
  setExiting(hidden && exit != null);
120824
120897
  }
120825
- const ref = React12.useRef(null);
120826
- const exitRef = React12.useRef(exit);
120898
+ const ref = React13.useRef(null);
120899
+ const exitRef = React13.useRef(exit);
120827
120900
  exitRef.current = exit;
120828
120901
  useIsomorphicLayoutEffect(() => {
120829
120902
  if (!exiting) return void 0;
@@ -120856,8 +120929,8 @@ var init_renderNode = __esm({
120856
120929
  const target = raw == null || raw === "" || isBound && !ctx.provider ? legacy : sectionSlot(isBound ? bound2 : raw);
120857
120930
  const { graceMs, floorMs } = loadingTiming(ctx.kit, props.loadingGraceMs ?? props.loading_grace_ms, props.loadingFloorMs ?? props.loading_floor_ms);
120858
120931
  const shown2 = useLoadingTiming(target, graceMs, floorMs);
120859
- const changed = React12.useRef(false);
120860
- const first = React12.useRef(shown2);
120932
+ const changed = React13.useRef(false);
120933
+ const first = React13.useRef(shown2);
120861
120934
  if (shown2 !== first.current) changed.current = true;
120862
120935
  const renderCfg = (cfg) => cfg && typeof cfg === "object" ? /* @__PURE__ */ jsxs8("div", { style: { textAlign: "center", padding: "24px 12px", color: C2("textSecondary", "#9aa2ad") }, children: [
120863
120936
  cfg.title && /* @__PURE__ */ jsx11("div", { style: { fontSize: pxToRem(15), fontWeight: 600, color: C2("textPrimary", "#111") }, children: asText2(cfg.title) }),
@@ -120889,8 +120962,8 @@ var init_renderNode = __esm({
120889
120962
  }
120890
120963
  const animate = motionDefaultsAnimate(ctx);
120891
120964
  const fadeMs = motionDefaultsDuration(ctx.kit, 220);
120892
- const lastShown = React12.useRef(null);
120893
- const [outgoing, setOutgoing] = React12.useState(null);
120965
+ const lastShown = React13.useRef(null);
120966
+ const [outgoing, setOutgoing] = React13.useState(null);
120894
120967
  useIsomorphicLayoutEffect(() => {
120895
120968
  const was = lastShown.current;
120896
120969
  if (!animate || !was || was.slot === shown2 || was.node == null) return void 0;
@@ -120898,7 +120971,7 @@ var init_renderNode = __esm({
120898
120971
  const t2 = setTimeout(() => setOutgoing(null), fadeMs);
120899
120972
  return () => clearTimeout(t2);
120900
120973
  }, [shown2]);
120901
- React12.useEffect(() => {
120974
+ React13.useEffect(() => {
120902
120975
  lastShown.current = { slot: shown2, node: content };
120903
120976
  });
120904
120977
  if (changed.current && animate) {
@@ -120934,7 +121007,7 @@ var init_renderNode = __esm({
120934
121007
  const onChangeAction = resolveRowAction2(props.onChange ?? cfg.onChange, ctx);
120935
121008
  const borderless = props.borderless === true || cfg.borderless === true;
120936
121009
  const secure = props.secure === true || cfg.secure === true;
120937
- const [valueVisible, setValueVisible] = React12.useState(false);
121010
+ const [valueVisible, setValueVisible] = React13.useState(false);
120938
121011
  const visibilityToggle = secure && (props.visibilityToggle === true || cfg.visibilityToggle === true);
120939
121012
  const visibilityLabel = ctx.catalog?.get(valueVisible ? "auth.gate.password.hide" : "auth.gate.password.show") ?? (valueVisible ? "Hide password" : "Show password");
120940
121013
  const erroredProp = props.error === true || cfg.error === true;
@@ -120948,20 +121021,20 @@ var init_renderNode = __esm({
120948
121021
  const boundRawText = typeof boundVal === "string" ? boundVal : typeof boundVal === "number" ? String(boundVal) : void 0;
120949
121022
  const boundText = serializeRichText && boundRawText !== void 0 ? richTextHtmlToPlainText(boundRawText) : boundRawText;
120950
121023
  const literalText = typeof valueBinding === "string" ? serializeRichText ? richTextHtmlToPlainText(valueBinding) : valueBinding : "";
120951
- const [local, setLocal] = React12.useState(
121024
+ const [local, setLocal] = React13.useState(
120952
121025
  isBound ? boundText ?? "" : literalText
120953
121026
  );
120954
- const [edited, setEdited] = React12.useState(false);
120955
- const [pristineRichValue, setPristineRichValue] = React12.useState(
121027
+ const [edited, setEdited] = React13.useState(false);
121028
+ const [pristineRichValue, setPristineRichValue] = React13.useState(
120956
121029
  serializeRichText ? isBound ? boundRawText : typeof valueBinding === "string" ? valueBinding : void 0 : void 0
120957
121030
  );
120958
- const focused = React12.useRef(false);
120959
- const [touched, setTouched] = React12.useState(false);
120960
- const [isFocused, setIsFocused] = React12.useState(false);
120961
- const pendingEdits = React12.useRef([]);
120962
- const previousBoundText = React12.useRef(boundText);
120963
- const previousBoundRawText = React12.useRef(boundRawText);
120964
- React12.useEffect(() => {
121031
+ const focused = React13.useRef(false);
121032
+ const [touched, setTouched] = React13.useState(false);
121033
+ const [isFocused, setIsFocused] = React13.useState(false);
121034
+ const pendingEdits = React13.useRef([]);
121035
+ const previousBoundText = React13.useRef(boundText);
121036
+ const previousBoundRawText = React13.useRef(boundRawText);
121037
+ React13.useEffect(() => {
120965
121038
  if (!isBound || boundText === void 0) return;
120966
121039
  const boundTextChanged = previousBoundText.current !== boundText;
120967
121040
  const boundRawTextChanged = previousBoundRawText.current !== boundRawText;
@@ -120992,23 +121065,23 @@ var init_renderNode = __esm({
120992
121065
  }
120993
121066
  if (!focused.current && boundText !== local) setLocal(boundText);
120994
121067
  }, [boundText, serializeRichText ? boundRawText : void 0, isFocused, serializeRichText ? edited : false]);
120995
- const formBag = React12.useContext(FormValuesContext);
121068
+ const formBag = React13.useContext(FormValuesContext);
120996
121069
  const fieldId = props.__formFieldId;
120997
- const previousBinding = React12.useRef(binding2);
121070
+ const previousBinding = React13.useRef(binding2);
120998
121071
  const rule = props.validation ?? cfg.validation;
120999
121072
  const { "aria-labelledby": labelledBy } = formFieldA11y(props);
121000
121073
  const required3 = rule?.required === true || void 0;
121001
- const ruleKey = React12.useMemo(() => rule ? JSON.stringify(rule) : "", [rule]);
121002
- React12.useEffect(() => {
121074
+ const ruleKey = React13.useMemo(() => rule ? JSON.stringify(rule) : "", [rule]);
121075
+ React13.useEffect(() => {
121003
121076
  if (!formBag || !fieldId) return;
121004
121077
  formBag.register(fieldId, rule);
121005
121078
  return () => formBag.unregister(fieldId);
121006
121079
  }, [fieldId, formBag, ruleKey]);
121007
121080
  const formValue = serializeRichText && !edited && pristineRichValue !== void 0 ? pristineRichValue : serializeRichText ? richTextEditedHtml(pristineRichValue, pristineRichValue === void 0 ? "" : richTextHtmlToPlainText(pristineRichValue), local) : local;
121008
- React12.useEffect(() => {
121081
+ React13.useEffect(() => {
121009
121082
  if (formBag && fieldId) formBag.set(fieldId, formValue);
121010
121083
  }, [formValue, fieldId, formBag, binding2]);
121011
- React12.useEffect(() => {
121084
+ React13.useEffect(() => {
121012
121085
  if (previousBinding.current === binding2) return;
121013
121086
  previousBinding.current = binding2;
121014
121087
  pendingEdits.current = [];
@@ -121027,7 +121100,7 @@ var init_renderNode = __esm({
121027
121100
  const errorTextRaw = props.errorText ?? cfg.errorText;
121028
121101
  const errorTextResolved = useBoundString(errorTextRaw, ctx);
121029
121102
  const workerError = typeof boundError === "string" ? boundError : errorTextRaw == null ? void 0 : errorTextResolved;
121030
- const validationCatalog = React12.useMemo(
121103
+ const validationCatalog = React13.useMemo(
121031
121104
  () => ctx.catalog ? new Proxy({}, { get: (_t2, k2) => typeof k2 === "string" ? ctx.catalog.get(k2) : void 0 }) : void 0,
121032
121105
  [ctx.catalog]
121033
121106
  );
@@ -121042,7 +121115,7 @@ var init_renderNode = __esm({
121042
121115
  const hasWorkerError = Boolean(workerError && workerError.trim());
121043
121116
  const painted2 = rawMessage === null ? "" : translateOnly(rawMessage);
121044
121117
  const message2 = !painted2.trim() || ruleMessagePending && !hasWorkerError ? null : painted2;
121045
- const [feedbackShown, setFeedbackShown] = React12.useState(false);
121118
+ const [feedbackShown, setFeedbackShown] = React13.useState(false);
121046
121119
  const revealed = message2 !== null && shouldRevealError({
121047
121120
  rule,
121048
121121
  feedbackShown,
@@ -121051,11 +121124,11 @@ var init_renderNode = __esm({
121051
121124
  focused: isFocused,
121052
121125
  submitAttempted: formBag?.submitAttempted ?? false
121053
121126
  });
121054
- React12.useEffect(() => {
121127
+ React13.useEffect(() => {
121055
121128
  if (revealed) setFeedbackShown(true);
121056
121129
  }, [revealed]);
121057
121130
  const errored = erroredProp || revealed;
121058
- const generatedId = React12.useId();
121131
+ const generatedId = React13.useId();
121059
121132
  const errorId = revealed ? `${componentId ?? generatedId}__error` : void 0;
121060
121133
  const emit = (v2) => {
121061
121134
  if (onChangeAction && ctx.onAction) {
@@ -121067,16 +121140,16 @@ var init_renderNode = __esm({
121067
121140
  });
121068
121141
  }
121069
121142
  };
121070
- const ownsPrivateDraft = React12.useRef(false);
121071
- React12.useEffect(() => {
121143
+ const ownsPrivateDraft = React13.useRef(false);
121144
+ React13.useEffect(() => {
121072
121145
  if (visibilityToggle && !isBound) ownsPrivateDraft.current = true;
121073
121146
  }, [visibilityToggle, isBound]);
121074
- const clearSensitiveDraft = React12.useRef(() => {
121147
+ const clearSensitiveDraft = React13.useRef(() => {
121075
121148
  });
121076
121149
  clearSensitiveDraft.current = () => {
121077
121150
  if (ownsPrivateDraft.current && !isBound) emit("");
121078
121151
  };
121079
- React12.useEffect(() => () => clearSensitiveDraft.current(), []);
121152
+ React13.useEffect(() => () => clearSensitiveDraft.current(), []);
121080
121153
  const onInput = (e2) => {
121081
121154
  const v2 = e2.currentTarget.value;
121082
121155
  setLocal(v2);
@@ -121108,7 +121181,7 @@ var init_renderNode = __esm({
121108
121181
  const submitLabelRaw = props.submitLabel ?? cfg.submitLabel;
121109
121182
  const onSubmitAction = props.onSubmit ?? cfg.onSubmit;
121110
121183
  const enterKeyHint = !multilineBox && ENTER_KEY_HINTS.has(submitLabelRaw) ? submitLabelRaw : !multilineBox && onSubmitAction ? "done" : void 0;
121111
- const inputRef = React12.useRef(null);
121184
+ const inputRef = React13.useRef(null);
121112
121185
  useIsomorphicLayoutEffect(() => {
121113
121186
  const el2 = inputRef.current;
121114
121187
  const view = el2?.ownerDocument?.defaultView;
@@ -121123,8 +121196,8 @@ var init_renderNode = __esm({
121123
121196
  }, [local, multilineBox, maxLines]);
121124
121197
  const focusBinding = (typeof props.focusPath === "string" ? props.focusPath : typeof cfg.focusPath === "string" ? cfg.focusPath : void 0) ?? "";
121125
121198
  const focusTokenVal = useBoundValue(ctx, focusBinding);
121126
- const lastFocusToken = React12.useRef(void 0);
121127
- React12.useEffect(() => {
121199
+ const lastFocusToken = React13.useRef(void 0);
121200
+ React13.useEffect(() => {
121128
121201
  if (!focusBinding) return;
121129
121202
  const next = typeof focusTokenVal === "string" ? focusTokenVal : typeof focusTokenVal === "number" ? String(focusTokenVal) : "";
121130
121203
  if (!next || next === lastFocusToken.current) return;
@@ -121199,8 +121272,8 @@ var init_renderNode = __esm({
121199
121272
  };
121200
121273
  MENU_ANCHOR_CONTROL = 'a[href], button, input, select, textarea, [tabindex]:not([tabindex="-1"]), [role="button"], [role="link"]';
121201
121274
  MenuNode = withExtras("MenuNode", ({ props, ctx, wrap }) => {
121202
- const [open, setOpen] = React12.useState(false);
121203
- const hostRef = React12.useRef(null);
121275
+ const [open, setOpen] = React13.useState(false);
121276
+ const hostRef = React13.useRef(null);
121204
121277
  const context = menuOpensOnLongPress(props.style);
121205
121278
  const itemsPath = typeof props.itemsPath === "string" && props.itemsPath.startsWith("$service:") ? props.itemsPath : "";
121206
121279
  const boundItems = useBoundValue(ctx, itemsPath);
@@ -121208,7 +121281,7 @@ var init_renderNode = __esm({
121208
121281
  const previewMode = context && props.preview != null;
121209
121282
  const items = sourceItems.map((it2) => ({ ...it2, label: typeof it2?.label === "string" && it2.label.startsWith("$item") ? resolveItemDeep2(it2.label, ctx) : it2?.label, disabled: it2?.disabled === true || !it2?.action }));
121210
121283
  const C2 = ctx.color;
121211
- React12.useEffect(() => {
121284
+ React13.useEffect(() => {
121212
121285
  if (!open) return;
121213
121286
  const onTop = () => menuRef.current != null && isWithinTopModal(menuRef.current);
121214
121287
  const onDown = (e2) => {
@@ -121234,11 +121307,11 @@ var init_renderNode = __esm({
121234
121307
  const flexGrow = typeof wrap?.flex === "string" ? parseFloat(wrap.flex) : typeof wrap?.flex === "number" ? wrap.flex : Number(wrap?.flexGrow ?? 0);
121235
121308
  const fill = wrap?.width === "100%" || Number.isFinite(flexGrow) && flexGrow > 0;
121236
121309
  const popupPlacement = fill ? { position: "absolute", top: "100%", left: 0, right: 0, zIndex: 20, marginTop: 4 } : { position: "absolute", top: "100%", right: 0, zIndex: 20, marginTop: 4 };
121237
- const anchorRef = React12.useRef(null);
121238
- const menuRef = React12.useRef(null);
121239
- const dialogRef = React12.useRef(null);
121240
- const [popupAlignLeft, setPopupAlignLeft] = React12.useState(false);
121241
- const [popupAbove, setPopupAbove] = React12.useState(false);
121310
+ const anchorRef = React13.useRef(null);
121311
+ const menuRef = React13.useRef(null);
121312
+ const dialogRef = React13.useRef(null);
121313
+ const [popupAlignLeft, setPopupAlignLeft] = React13.useState(false);
121314
+ const [popupAbove, setPopupAbove] = React13.useState(false);
121242
121315
  useIsomorphicLayoutEffect(() => {
121243
121316
  if (!open || !anchorRef.current || !menuRef.current) return;
121244
121317
  const anchor = anchorRef.current.getBoundingClientRect();
@@ -121260,8 +121333,8 @@ var init_renderNode = __esm({
121260
121333
  setPopupAlignLeft(anchor.right - popup.width < left);
121261
121334
  setPopupAbove(anchor.bottom + popup.height + 4 > bottom && anchor.top - popup.height - 4 >= top);
121262
121335
  });
121263
- const [innerControl, setInnerControl] = React12.useState(null);
121264
- const innerControlRef = React12.useRef(null);
121336
+ const [innerControl, setInnerControl] = React13.useState(null);
121337
+ const innerControlRef = React13.useRef(null);
121265
121338
  useIsomorphicLayoutEffect(() => {
121266
121339
  const anchor = anchorRef.current;
121267
121340
  const refresh = () => {
@@ -121277,7 +121350,7 @@ var init_renderNode = __esm({
121277
121350
  observer.observe(anchor, { childList: true, subtree: true, attributes: true, attributeFilter: ["disabled", "tabindex", "href", "role"] });
121278
121351
  return () => observer.disconnect();
121279
121352
  });
121280
- React12.useEffect(() => {
121353
+ React13.useEffect(() => {
121281
121354
  if (!innerControl) return;
121282
121355
  innerControl.setAttribute("aria-haspopup", "menu");
121283
121356
  innerControl.setAttribute("aria-expanded", String(open));
@@ -121289,13 +121362,13 @@ var init_renderNode = __esm({
121289
121362
  };
121290
121363
  }, [innerControl, open]);
121291
121364
  const itemsKey = items.map((it2, i2) => `${it2?.id ?? i2}:${it2?.disabled ? 0 : 1}`).join("|");
121292
- React12.useEffect(() => {
121365
+ React13.useEffect(() => {
121293
121366
  if (!open || !modal) return;
121294
121367
  const menu = menuRef.current;
121295
121368
  if (!menu || menu.contains(document.activeElement)) return;
121296
121369
  (menu.querySelector('[role="menuitem"][tabindex="0"]') ?? menu).focus();
121297
121370
  }, [open, modal, itemsKey]);
121298
- React12.useEffect(() => {
121371
+ React13.useEffect(() => {
121299
121372
  if (!open || !modal) return;
121300
121373
  const layer = pushModalLayer(() => dialogRef.current);
121301
121374
  return () => {
@@ -121317,11 +121390,11 @@ var init_renderNode = __esm({
121317
121390
  e2.preventDefault();
121318
121391
  items2[next].focus();
121319
121392
  };
121320
- const pressTimer = React12.useRef(null);
121321
- const longPressed = React12.useRef(false);
121322
- const touchOrigin = React12.useRef(null);
121323
- const suppressNextClick = React12.useRef(false);
121324
- const suppressTimer = React12.useRef(null);
121393
+ const pressTimer = React13.useRef(null);
121394
+ const longPressed = React13.useRef(false);
121395
+ const touchOrigin = React13.useRef(null);
121396
+ const suppressNextClick = React13.useRef(false);
121397
+ const suppressTimer = React13.useRef(null);
121325
121398
  const clearSuppress = () => {
121326
121399
  suppressNextClick.current = false;
121327
121400
  if (suppressTimer.current != null) {
@@ -121335,7 +121408,7 @@ var init_renderNode = __esm({
121335
121408
  pressTimer.current = null;
121336
121409
  }
121337
121410
  };
121338
- React12.useEffect(() => () => {
121411
+ React13.useEffect(() => () => {
121339
121412
  cancelPress();
121340
121413
  clearSuppress();
121341
121414
  }, []);
@@ -121501,9 +121574,9 @@ var init_renderNode = __esm({
121501
121574
  const isBound = typeof raw === "string" && isBinding(raw);
121502
121575
  const bound2 = useBoundValue(ctx, isBound ? raw : "");
121503
121576
  const cursor = isBound ? typeof bound2 === "string" ? bound2 : "" : String(raw ?? "");
121504
- const ref = React12.useRef(null);
121505
- const fired = React12.useRef("");
121506
- React12.useEffect(() => {
121577
+ const ref = React13.useRef(null);
121578
+ const fired = React13.useRef("");
121579
+ React13.useEffect(() => {
121507
121580
  fired.current = "";
121508
121581
  const el2 = ref.current;
121509
121582
  if (!cursor || !ctx.onAction || !el2 || typeof IntersectionObserver === "undefined") return;
@@ -121534,11 +121607,11 @@ var init_renderNode = __esm({
121534
121607
  ] });
121535
121608
  });
121536
121609
  FormView = withExtras("FormView", ({ props, ctx, wrap }) => {
121537
- const bagRef = React12.useRef(null);
121610
+ const bagRef = React13.useRef(null);
121538
121611
  if (!bagRef.current) bagRef.current = createFormBag();
121539
121612
  const bag = bagRef.current;
121540
- React12.useSyncExternalStore(
121541
- React12.useCallback((cb) => bag.subscribe(cb), [bag]),
121613
+ React13.useSyncExternalStore(
121614
+ React13.useCallback((cb) => bag.subscribe(cb), [bag]),
121542
121615
  () => bag.version,
121543
121616
  () => bag.version
121544
121617
  );
@@ -121555,7 +121628,7 @@ var init_renderNode = __esm({
121555
121628
  ctx.onAction?.({ ...action, args: merged });
121556
121629
  }
121557
121630
  };
121558
- const submitNode = React12.useMemo(() => {
121631
+ const submitNode = React13.useMemo(() => {
121559
121632
  const node = props.submitButton;
121560
121633
  if (!node || valid) return node;
121561
121634
  if (node.body) return { ...node, body: { ...node.body, props: { ...node.body.props ?? {}, disabled: true } } };
@@ -121605,11 +121678,11 @@ var init_renderNode = __esm({
121605
121678
  const startPositionPath = typeof props.startPositionSeconds === "string" && isBinding(props.startPositionSeconds) ? props.startPositionSeconds : "";
121606
121679
  const boundStartPosition = useResolvedScalar(startPositionPath || void 0, ctx);
121607
121680
  const initialStartPosition = startPositionPath && typeof boundStartPosition === "number" && Number.isFinite(boundStartPosition) ? Math.max(0, boundStartPosition) : Math.max(0, Number.isFinite(Number(props.startPositionSeconds)) ? Number(props.startPositionSeconds) : 0);
121608
- const [index, setIndex] = React12.useState(initialIndex);
121681
+ const [index, setIndex] = React13.useState(initialIndex);
121609
121682
  const queueReady = !itemsPath || Array.isArray(boundQueue);
121610
121683
  const seatKey = `${itemsPath ?? ""}|${startIndex}`;
121611
- const seated = React12.useRef(null);
121612
- React12.useEffect(() => {
121684
+ const seated = React13.useRef(null);
121685
+ React13.useEffect(() => {
121613
121686
  const last = Math.max(0, resolvedItems.length - 1);
121614
121687
  if (resolvedItems.length === 0) return;
121615
121688
  if (queueReady && seated.current !== seatKey) {
@@ -121624,19 +121697,19 @@ var init_renderNode = __esm({
121624
121697
  }
121625
121698
  setIndex((i2) => Math.min(Math.max(0, i2), last));
121626
121699
  }, [resolvedItems.length, startIndex, queueReady, seatKey]);
121627
- const [status, setStatus] = React12.useState("idle");
121628
- const [position, setPosition] = React12.useState(initialStartPosition);
121629
- const [duration2, setDuration] = React12.useState(0);
121630
- const [buffered, setBuffered] = React12.useState(0);
121631
- const [rate, setRateState] = React12.useState(1);
121632
- const [fullscreen, setFullscreen] = React12.useState(false);
121633
- const [error, setError] = React12.useState("");
121634
- const mediaRef = React12.useRef(null);
121635
- const hostRef = React12.useRef(null);
121636
- const autoplayConsumed = React12.useRef(false);
121700
+ const [status, setStatus] = React13.useState("idle");
121701
+ const [position, setPosition] = React13.useState(initialStartPosition);
121702
+ const [duration2, setDuration] = React13.useState(0);
121703
+ const [buffered, setBuffered] = React13.useState(0);
121704
+ const [rate, setRateState] = React13.useState(1);
121705
+ const [fullscreen, setFullscreen] = React13.useState(false);
121706
+ const [error, setError] = React13.useState("");
121707
+ const mediaRef = React13.useRef(null);
121708
+ const hostRef = React13.useRef(null);
121709
+ const autoplayConsumed = React13.useRef(false);
121637
121710
  const item = resolvedItems[index];
121638
121711
  const mediaKey2 = `${index}:${item?.id ?? item?.url ?? ""}`;
121639
- React12.useEffect(() => {
121712
+ React13.useEffect(() => {
121640
121713
  const outgoing = mediaRef.current;
121641
121714
  return () => {
121642
121715
  try {
@@ -121650,7 +121723,7 @@ var init_renderNode = __esm({
121650
121723
  const isYouTube = provider === "youtube";
121651
121724
  const isUnsupportedProvider = provider !== "direct" && !isYouTube;
121652
121725
  const isAudio = ["audio", "podcast", "radio"].includes(String(item?.kind ?? ""));
121653
- const capabilities = React12.useMemo(() => ({
121726
+ const capabilities = React13.useMemo(() => ({
121654
121727
  seek: !isUnsupportedProvider && item?.live !== true,
121655
121728
  rate: !isUnsupportedProvider && item?.live !== true,
121656
121729
  queue: !isUnsupportedProvider && items.length > 1,
@@ -121678,9 +121751,9 @@ var init_renderNode = __esm({
121678
121751
  error,
121679
121752
  capabilities
121680
121753
  };
121681
- const slotProvider = React12.useMemo(() => new MediaSlotProvider(state), []);
121682
- React12.useEffect(() => slotProvider.set(state));
121683
- React12.useEffect(() => {
121754
+ const slotProvider = React13.useMemo(() => new MediaSlotProvider(state), []);
121755
+ React13.useEffect(() => slotProvider.set(state));
121756
+ React13.useEffect(() => {
121684
121757
  if (!startPositionPath || typeof boundStartPosition !== "number" || !Number.isFinite(boundStartPosition) || status !== "idle") return;
121685
121758
  const next = Math.max(0, boundStartPosition);
121686
121759
  setPosition(next);
@@ -121691,7 +121764,7 @@ var init_renderNode = __esm({
121691
121764
  }
121692
121765
  }
121693
121766
  }, [startPositionPath, boundStartPosition, status]);
121694
- const emit = React12.useCallback((action, extra = {}) => {
121767
+ const emit = React13.useCallback((action, extra = {}) => {
121695
121768
  if (!action || !ctx.onAction) return;
121696
121769
  const snapshot3 = {
121697
121770
  sessionId,
@@ -121710,13 +121783,13 @@ var init_renderNode = __esm({
121710
121783
  };
121711
121784
  ctx.onAction({ ...action, args: { ...action.args ?? {}, ...snapshot3, ...extra }, params: { ...action.params ?? {}, sessionId, index: String(index), ...Object.fromEntries(Object.entries(extra).map(([k2, v2]) => [k2, String(v2)])) } });
121712
121785
  }, [ctx.onAction, sessionId, status, index, position, duration2, item, buffered, rate, props.muted, fullscreen, error]);
121713
- React12.useEffect(() => {
121786
+ React13.useEffect(() => {
121714
121787
  if (!isUnsupportedProvider || status === "error") return;
121715
121788
  setStatus("error");
121716
121789
  setError("provider_unsupported");
121717
121790
  emit(props.onError, { state: "error", status: "error", error: "provider_unsupported", code: "provider_unsupported" });
121718
121791
  }, [isUnsupportedProvider, status, emit, props.onError]);
121719
- const play = React12.useCallback(async () => {
121792
+ const play = React13.useCallback(async () => {
121720
121793
  if (isYouTube) return;
121721
121794
  if (isUnsupportedProvider) {
121722
121795
  setStatus("error");
@@ -121738,17 +121811,17 @@ var init_renderNode = __esm({
121738
121811
  emit(props.onError, { state: "blocked", status: "blocked", error: message2, code: "playback_blocked" });
121739
121812
  }
121740
121813
  }, [isYouTube, isUnsupportedProvider, emit, props.onError]);
121741
- const pause = React12.useCallback(() => {
121814
+ const pause = React13.useCallback(() => {
121742
121815
  mediaRef.current?.pause();
121743
121816
  setStatus("paused");
121744
121817
  }, []);
121745
- const seek = React12.useCallback((seconds) => {
121818
+ const seek = React13.useCallback((seconds) => {
121746
121819
  const media = mediaRef.current;
121747
121820
  if (!media || !Number.isFinite(seconds)) return;
121748
121821
  media.currentTime = Math.max(0, Math.min(seconds, Number.isFinite(media.duration) ? media.duration : seconds));
121749
121822
  setPosition(media.currentTime);
121750
121823
  }, []);
121751
- const select2 = React12.useCallback((next) => {
121824
+ const select2 = React13.useCallback((next) => {
121752
121825
  if (resolvedItems.length === 0) return;
121753
121826
  const normalized = (next % resolvedItems.length + resolvedItems.length) % resolvedItems.length;
121754
121827
  const nextItem = resolvedItems[normalized];
@@ -121770,7 +121843,7 @@ var init_renderNode = __esm({
121770
121843
  error: ""
121771
121844
  });
121772
121845
  }, [resolvedItems, emit, props.onItemChange]);
121773
- const toggleFullscreen = React12.useCallback(async () => {
121846
+ const toggleFullscreen = React13.useCallback(async () => {
121774
121847
  if (props.fullscreen === "disabled") return;
121775
121848
  const host = hostRef.current;
121776
121849
  try {
@@ -121780,7 +121853,7 @@ var init_renderNode = __esm({
121780
121853
  setFullscreen((value2) => !value2);
121781
121854
  }
121782
121855
  }, [props.fullscreen]);
121783
- React12.useEffect(() => {
121856
+ React13.useEffect(() => {
121784
121857
  const listener = (event) => {
121785
121858
  const detail = event.detail;
121786
121859
  if (!detail || detail.sessionId !== sessionId) return;
@@ -121828,7 +121901,7 @@ var init_renderNode = __esm({
121828
121901
  window.addEventListener("himalaya-media-command", listener);
121829
121902
  return () => window.removeEventListener("himalaya-media-command", listener);
121830
121903
  }, [sessionId, index, play, pause, seek, select2, toggleFullscreen]);
121831
- React12.useEffect(() => {
121904
+ React13.useEffect(() => {
121832
121905
  const listener = () => {
121833
121906
  const value2 = document.fullscreenElement === hostRef.current;
121834
121907
  setFullscreen(value2);
@@ -121837,14 +121910,14 @@ var init_renderNode = __esm({
121837
121910
  document.addEventListener("fullscreenchange", listener);
121838
121911
  return () => document.removeEventListener("fullscreenchange", listener);
121839
121912
  }, [emit, props.onFullscreenChange]);
121840
- React12.useEffect(() => {
121913
+ React13.useEffect(() => {
121841
121914
  const media = mediaRef.current;
121842
121915
  if (!media || isYouTube || isUnsupportedProvider) return;
121843
121916
  media.muted = props.muted === true;
121844
121917
  media.playbackRate = rate;
121845
121918
  if (position > 0) media.currentTime = position;
121846
121919
  }, [item?.url, isUnsupportedProvider]);
121847
- React12.useEffect(() => {
121920
+ React13.useEffect(() => {
121848
121921
  if (isYouTube || isUnsupportedProvider || props.autoplay === "never" || autoplayConsumed.current) return;
121849
121922
  if (props.autoplay === "once") {
121850
121923
  autoplayConsumed.current = true;
@@ -122046,15 +122119,15 @@ var init_renderNode = __esm({
122046
122119
  }
122047
122120
  );
122048
122121
  });
122049
- PdfDocumentCanvas = React12.lazy(() => Promise.resolve().then(() => (init_pdfDocument(), pdfDocument_exports)).then((module) => ({ default: module.PdfDocument })));
122122
+ PdfDocumentCanvas = React13.lazy(() => Promise.resolve().then(() => (init_pdfDocument(), pdfDocument_exports)).then((module) => ({ default: module.PdfDocument })));
122050
122123
  PdfViewNode = withExtras("PdfViewNode", ({ props, ctx, wrap }) => {
122051
122124
  const boundUrl = useResolvedScalar(props.url != null && isBinding(props.url) ? props.url : void 0, ctx);
122052
122125
  const url = props.url != null && isBinding(props.url) ? boundUrl : props.url;
122053
122126
  const rawUrl = typeof url === "string" && !isBinding(url) ? url : "";
122054
122127
  const plan = rawUrl ? pdfEmbedPlan(rawUrl, void 0, typeof document !== "undefined" ? document.baseURI : void 0) : null;
122055
122128
  const retypeSrc = plan?.mode === "retype" ? plan.src : null;
122056
- const [retyped, setRetyped] = React12.useState(null);
122057
- React12.useEffect(() => {
122129
+ const [retyped, setRetyped] = React13.useState(null);
122130
+ React13.useEffect(() => {
122058
122131
  if (!retypeSrc) return;
122059
122132
  let live3 = true;
122060
122133
  let made = null;
@@ -122076,11 +122149,11 @@ var init_renderNode = __esm({
122076
122149
  }, [retypeSrc]);
122077
122150
  const settled = retyped && retyped.from === retypeSrc ? retyped : null;
122078
122151
  const wantsShare = props.allowShare === true;
122079
- const [fellBackFrom, setFellBackFrom] = React12.useState(null);
122152
+ const [fellBackFrom, setFellBackFrom] = React13.useState(null);
122080
122153
  const directFellBack = plan?.mode === "direct" && fellBackFrom === plan.src;
122081
122154
  const directSrc = plan?.mode === "direct" && (wantsShare || props.showPageControls !== false && directFellBack) ? plan.src : null;
122082
- const [direct, setDirect] = React12.useState(null);
122083
- React12.useEffect(() => {
122155
+ const [direct, setDirect] = React13.useState(null);
122156
+ React13.useEffect(() => {
122084
122157
  if (!directSrc) return;
122085
122158
  let live3 = true;
122086
122159
  let made = null;
@@ -122097,16 +122170,16 @@ var init_renderNode = __esm({
122097
122170
  }, [directSrc, wantsShare]);
122098
122171
  const directDoc = direct && direct.from === directSrc ? direct : null;
122099
122172
  const fallbackPageCount = plan?.mode === "retype" ? settled?.pageCount ?? null : directDoc?.count ?? null;
122100
- const [nav, setNav] = React12.useState({ from: rawUrl, page: null, zoom: null });
122173
+ const [nav, setNav] = React13.useState({ from: rawUrl, page: null, zoom: null });
122101
122174
  const view = nav.from === rawUrl ? nav : { from: rawUrl, page: null, zoom: null };
122102
122175
  const src = plan?.mode === "direct" ? plan.src : settled?.url ?? null;
122103
- const [canvasCount, setCanvasCount] = React12.useState(null);
122104
- const onPageCount = React12.useCallback((count2) => {
122176
+ const [canvasCount, setCanvasCount] = React13.useState(null);
122177
+ const onPageCount = React13.useCallback((count2) => {
122105
122178
  if (!Number.isInteger(count2) || count2 < 1) return;
122106
122179
  setCanvasCount((cur) => cur?.from === src && cur.count === count2 ? cur : { from: src, count: count2 });
122107
122180
  }, [src]);
122108
122181
  const pageCount = canvasCount?.from === src ? canvasCount.count : fallbackPageCount;
122109
- const onFallback = React12.useCallback(() => setFellBackFrom(src), [src]);
122182
+ const onFallback = React13.useCallback(() => setFellBackFrom(src), [src]);
122110
122183
  const loading = plan?.mode === "retype" && !settled || directSrc != null && wantsShare && !directDoc && typeof window !== "undefined";
122111
122184
  const loadSrc = plan?.mode === "direct" && wantsShare ? directDoc?.blobUrl ?? src : src;
122112
122185
  const ph = typeof props.height === "number" && props.height > 0 ? props.height : void 0;
@@ -122156,7 +122229,7 @@ var init_renderNode = __esm({
122156
122229
  const data = base + pdfOpenFragment(sourceHash, { page, zoom: zoomable ? view.zoom : null, fitWidth: !zoomable });
122157
122230
  const label3 = typeof props.title === "string" && props.title ? props.title : "PDF document";
122158
122231
  const documentStyle = showPageControls || zoomable || allowShare ? { display: "block", width: "100%", flex: "1 1 auto", minHeight: ph ? 0 : 280, border: "none" } : frame;
122159
- const object10 = typeof window === "undefined" ? /* @__PURE__ */ jsx11("object", { "data-himalaya-pdf": "static-fallback", data, type: "application/pdf", "aria-label": label3, style: documentStyle }) : /* @__PURE__ */ jsx11(React12.Suspense, { fallback: /* @__PURE__ */ jsx11("div", { "data-himalaya-pdf": "loading", role: "img", "aria-label": "loading document", "aria-busy": "true", style: documentStyle }), children: /* @__PURE__ */ jsx11(
122232
+ const object10 = typeof window === "undefined" ? /* @__PURE__ */ jsx11("object", { "data-himalaya-pdf": "static-fallback", data, type: "application/pdf", "aria-label": label3, style: documentStyle }) : /* @__PURE__ */ jsx11(React13.Suspense, { fallback: /* @__PURE__ */ jsx11("div", { "data-himalaya-pdf": "loading", role: "img", "aria-label": "loading document", "aria-busy": "true", style: documentStyle }), children: /* @__PURE__ */ jsx11(
122160
122233
  PdfDocumentCanvas,
122161
122234
  {
122162
122235
  src: loadSrc ?? src,
@@ -122238,7 +122311,7 @@ var init_renderNode = __esm({
122238
122311
  const ar2 = typeof props.aspectRatio === "number" && props.aspectRatio > 0 ? props.aspectRatio : void 0;
122239
122312
  const frameStyle = { width: "100%", boxSizing: "border-box", border: "none", borderRadius: ctx.radius("md", 8), background: "#fff", ...scrollEnabled ? {} : { overflow: "hidden" }, ...fill ? { flex: "1 1 0", minHeight: 0 } : h2 ? { height: h2 } : ar2 ? { aspectRatio: String(ar2) } : { height: 200 } };
122240
122313
  const reloadValue = reloadKeyOf(useResolvedScalar(props.reloadKeyPath != null && isBinding(props.reloadKeyPath) ? props.reloadKeyPath : void 0, ctx));
122241
- const reloadState = React12.useRef({ base: null, epoch: 0 });
122314
+ const reloadState = React13.useRef({ base: null, epoch: 0 });
122242
122315
  if (reloadValue !== null && reloadValue !== reloadState.current.base) {
122243
122316
  if (reloadState.current.base !== null) reloadState.current.epoch++;
122244
122317
  reloadState.current.base = reloadValue;
@@ -122246,11 +122319,11 @@ var init_renderNode = __esm({
122246
122319
  const reloadKey = reloadState.current.epoch > 0 ? String(reloadState.current.epoch) : "";
122247
122320
  const sourceKey = htmlStr ?? urlFrame?.src ?? null;
122248
122321
  const frameKey = sourceKey == null ? null : reloadKey ? `${sourceKey}\0${reloadKey}` : sourceKey;
122249
- const [loadedKey, setLoadedKey] = React12.useState(null);
122322
+ const [loadedKey, setLoadedKey] = React13.useState(null);
122250
122323
  const loaded = loadedKey === frameKey;
122251
122324
  const bridgeChannel = props.bridge === "worker" ? webViewChannelOf(ctx.provider) : null;
122252
- const frameRef = React12.useRef(null);
122253
- const bridgeLoad = React12.useRef({ loaded: false });
122325
+ const frameRef = React13.useRef(null);
122326
+ const bridgeLoad = React13.useRef({ loaded: false });
122254
122327
  if (bridgeLoad.current.key !== frameKey) {
122255
122328
  bridgeLoad.current.key = frameKey;
122256
122329
  bridgeLoad.current.loaded = false;
@@ -122274,7 +122347,7 @@ var init_renderNode = __esm({
122274
122347
  return /* @__PURE__ */ jsxs8("div", { style: { width: "100%", position: "relative", ...fill ? { height: "100%", flex: "1 1 0", minHeight: 0, display: "flex", flexDirection: "column" } : {}, ...bandColor ? { background: bandColor, borderRadius: ctx.radius("md", 8), overflow: "hidden" } : {}, ...wrap }, children: [
122275
122348
  bandColor ? /* @__PURE__ */ jsx11("div", { "data-testid": "webview-cover-band", style: { height: 8, background: bandColor } }) : null,
122276
122349
  htmlStr ? /* @__PURE__ */ jsx11("iframe", { ...frameProps, srcDoc: htmlStr, sandbox: "allow-scripts" }, frameKey ?? void 0) : urlFrame ? /* @__PURE__ */ jsx11("iframe", { ...frameProps, src: urlFrame.src, sandbox: urlFrame.sandbox }, frameKey ?? void 0) : /* @__PURE__ */ jsx11("div", { style: { ...frameStyle, display: "grid", placeItems: "center", color: "#999", fontFamily: "ui-monospace, monospace", fontSize: pxToRem(11), border: "1px dashed #ccc" }, children: urlStr ? "WebView (url not allowed)" : "WebView (no url)" }),
122277
- bridgeChannel ? /* @__PURE__ */ jsx11(React12.Suspense, { fallback: null, children: /* @__PURE__ */ jsx11(
122350
+ bridgeChannel ? /* @__PURE__ */ jsx11(React13.Suspense, { fallback: null, children: /* @__PURE__ */ jsx11(
122278
122351
  WebViewBridgeHost2,
122279
122352
  {
122280
122353
  channel: bridgeChannel,
@@ -122304,19 +122377,19 @@ var init_renderNode = __esm({
122304
122377
  const onChange = props.onChange;
122305
122378
  const boundSel = useResolvedScalar(isBinding(props.selectedId) ? props.selectedId : void 0, ctx);
122306
122379
  const selectedId = isBinding(props.selectedId) ? boundSel : props.selectedId;
122307
- const [sel, setSel] = React12.useState(ctx.empty ? "" : String(selectedId ?? ""));
122308
- React12.useEffect(() => {
122380
+ const [sel, setSel] = React13.useState(ctx.empty ? "" : String(selectedId ?? ""));
122381
+ React13.useEffect(() => {
122309
122382
  if (!ctx.empty && selectedId != null) setSel(String(selectedId));
122310
122383
  }, [selectedId, ctx.empty]);
122311
- const pickerBag = React12.useContext(FormValuesContext);
122384
+ const pickerBag = React13.useContext(FormValuesContext);
122312
122385
  const pickerFieldId = props.__formFieldId;
122313
122386
  const pickerRuleKey = props.validation ? JSON.stringify(props.validation) : "";
122314
- React12.useEffect(() => {
122387
+ React13.useEffect(() => {
122315
122388
  if (!pickerBag || !pickerFieldId) return;
122316
122389
  pickerBag.register(pickerFieldId, props.validation);
122317
122390
  return () => pickerBag.unregister(pickerFieldId);
122318
122391
  }, [pickerFieldId, pickerBag, pickerRuleKey]);
122319
- React12.useEffect(() => {
122392
+ React13.useEffect(() => {
122320
122393
  if (pickerBag && pickerFieldId) pickerBag.set(pickerFieldId, sel);
122321
122394
  }, [sel, pickerFieldId, pickerBag]);
122322
122395
  const emitPick = (id) => {
@@ -122432,24 +122505,24 @@ var init_renderNode = __esm({
122432
122505
  const s2 = seedUnix();
122433
122506
  return s2 == null ? null : clampUnix(s2);
122434
122507
  };
122435
- const [val, setVal] = React12.useState(ctx.empty ? "" : toInput(shownSeed()));
122508
+ const [val, setVal] = React13.useState(ctx.empty ? "" : toInput(shownSeed()));
122436
122509
  const dateServiceBound = typeof props.valuePath === "string" && props.valuePath.startsWith("$service:");
122437
122510
  const bagSource = () => dateServiceBound ? boundRaw : boundRaw !== void 0 && boundRaw !== null && boundRaw !== "" ? boundRaw : props.valueUnix;
122438
- const [dateBagVal, setDateBagVal] = React12.useState(ctx.empty ? "" : clampDateFieldValue(encodeDateFieldValue(bagSource()), props.minUnix, props.maxUnix, props.mode));
122439
- React12.useEffect(() => {
122511
+ const [dateBagVal, setDateBagVal] = React13.useState(ctx.empty ? "" : clampDateFieldValue(encodeDateFieldValue(bagSource()), props.minUnix, props.maxUnix, props.mode));
122512
+ React13.useEffect(() => {
122440
122513
  if (ctx.empty) return;
122441
122514
  setVal(toInput(shownSeed()));
122442
122515
  setDateBagVal(clampDateFieldValue(encodeDateFieldValue(bagSource()), props.minUnix, props.maxUnix, props.mode));
122443
122516
  }, [boundRaw, props.valueUnix, props.valuePath, ctx.empty]);
122444
- const dateBag = React12.useContext(FormValuesContext);
122517
+ const dateBag = React13.useContext(FormValuesContext);
122445
122518
  const dateFieldId = props.__formFieldId;
122446
122519
  const dateRuleKey = props.validation ? JSON.stringify(props.validation) : "";
122447
- React12.useEffect(() => {
122520
+ React13.useEffect(() => {
122448
122521
  if (!dateBag || !dateFieldId) return;
122449
122522
  dateBag.register(dateFieldId, props.validation);
122450
122523
  return () => dateBag.unregister(dateFieldId);
122451
122524
  }, [dateFieldId, dateBag, dateRuleKey]);
122452
- React12.useEffect(() => {
122525
+ React13.useEffect(() => {
122453
122526
  if (dateBag && dateFieldId) dateBag.set(dateFieldId, dateBagVal);
122454
122527
  }, [dateBagVal, dateFieldId, dateBag]);
122455
122528
  if (!ctx.onAction) {
@@ -122518,11 +122591,11 @@ var init_renderNode = __esm({
122518
122591
  const valueBinding = isBinding(props.value) ? props.value : void 0;
122519
122592
  const boundValue = useResolvedScalar(valueBinding, ctx);
122520
122593
  const initialValue2 = ctx.empty ? "" : valueBinding ? boundValue == null ? "" : String(boundValue) : String(props.value ?? "");
122521
- const [local, setLocal] = React12.useState(initialValue2);
122522
- React12.useEffect(() => {
122594
+ const [local, setLocal] = React13.useState(initialValue2);
122595
+ React13.useEffect(() => {
122523
122596
  if (!ctx.empty && valueBinding) setLocal(boundValue == null ? "" : String(boundValue));
122524
122597
  }, [boundValue, ctx.empty, valueBinding]);
122525
- const timer = React12.useRef(null);
122598
+ const timer = React13.useRef(null);
122526
122599
  const dispatch = (action, v2) => {
122527
122600
  if (!action || !ctx.onAction) return;
122528
122601
  ctx.onAction({ ...action, params: { ...action.params ?? {}, value: v2 }, args: { ...action.args ?? {}, value: v2 } });
@@ -122564,33 +122637,33 @@ var init_renderNode = __esm({
122564
122637
  const boundValue = useResolvedScalar(props.valuePath, ctx);
122565
122638
  const effectiveValue = props.valuePath != null ? boundValue : props.value;
122566
122639
  const fallbackValue = effectiveValue ?? props.value ?? 0;
122567
- const [value2, setValue] = React12.useState(() => {
122640
+ const [value2, setValue] = React13.useState(() => {
122568
122641
  const seed2 = Number(fallbackValue);
122569
122642
  return Number.isFinite(seed2) ? Math.min(max, Math.max(min, seed2)) : 0;
122570
122643
  });
122571
- React12.useEffect(() => {
122644
+ React13.useEffect(() => {
122572
122645
  const next = Number(fallbackValue);
122573
122646
  if (Number.isFinite(next)) setValue(Math.min(max, Math.max(min, next)));
122574
122647
  }, [fallbackValue, min, max]);
122575
- const stepperBag = React12.useContext(FormValuesContext);
122648
+ const stepperBag = React13.useContext(FormValuesContext);
122576
122649
  const stepperFieldId = props.__formFieldId;
122577
122650
  const stepperRuleKey = props.validation ? JSON.stringify(props.validation) : "";
122578
- React12.useEffect(() => {
122651
+ React13.useEffect(() => {
122579
122652
  if (!stepperBag || !stepperFieldId) return;
122580
122653
  stepperBag.register(stepperFieldId, props.validation);
122581
122654
  return () => stepperBag.unregister(stepperFieldId);
122582
122655
  }, [stepperFieldId, stepperBag, stepperRuleKey]);
122583
122656
  const serviceBound = typeof props.valuePath === "string" && isBinding(props.valuePath) && props.valuePath.startsWith("$service:");
122584
- const [bagValue, setBagValue] = React12.useState(() => serviceBound ? boundValue != null ? encodeStepperFieldValue(boundValue, { min, max }) : "" : encodeStepperFieldValue(value2, { min, max }));
122585
- React12.useEffect(() => {
122657
+ const [bagValue, setBagValue] = React13.useState(() => serviceBound ? boundValue != null ? encodeStepperFieldValue(boundValue, { min, max }) : "" : encodeStepperFieldValue(value2, { min, max }));
122658
+ React13.useEffect(() => {
122586
122659
  if (!serviceBound || boundValue == null) return;
122587
122660
  setBagValue(encodeStepperFieldValue(boundValue, { min, max }));
122588
122661
  }, [boundValue, serviceBound, min, max]);
122589
- React12.useEffect(() => {
122662
+ React13.useEffect(() => {
122590
122663
  if (serviceBound) return;
122591
122664
  setBagValue(encodeStepperFieldValue(value2, { min, max }));
122592
122665
  }, [value2, serviceBound, min, max]);
122593
- React12.useEffect(() => {
122666
+ React13.useEffect(() => {
122594
122667
  if (stepperBag && stepperFieldId) stepperBag.set(stepperFieldId, bagValue);
122595
122668
  }, [bagValue, stepperFieldId, stepperBag]);
122596
122669
  const dispatch = (next) => {
@@ -122605,7 +122678,7 @@ var init_renderNode = __esm({
122605
122678
  dispatch(next);
122606
122679
  return next;
122607
122680
  };
122608
- const [pressed, setPressed] = React12.useState({ text: "", count: 0 });
122681
+ const [pressed, setPressed] = React13.useState({ text: "", count: 0 });
122609
122682
  const bump = (delta) => commit(value2 + delta);
122610
122683
  const press = (delta) => {
122611
122684
  const next = bump(delta);
@@ -122749,9 +122822,9 @@ var init_renderNode = __esm({
122749
122822
  const items = Array.isArray(props.items) ? props.items : [];
122750
122823
  const gridStagger = ctx.reduceMotion() ? 0 : Number(props.staggerMs ?? props.stagger_ms ?? 0);
122751
122824
  const stagger = (el2, i2) => {
122752
- if (!(gridStagger > 0) || !React12.isValidElement(el2)) return el2;
122825
+ if (!(gridStagger > 0) || !React13.isValidElement(el2)) return el2;
122753
122826
  const prev = el2.props.style ?? {};
122754
- return React12.cloneElement(el2, { style: { ...prev, animationDelay: `${i2 * gridStagger}ms` } });
122827
+ return React13.cloneElement(el2, { style: { ...prev, animationDelay: `${i2 * gridStagger}ms` } });
122755
122828
  };
122756
122829
  const inner = itemsPath && items[0] && ctx.provider ? /* @__PURE__ */ jsx11(
122757
122830
  BoundList,
@@ -122826,13 +122899,13 @@ var init_renderNode = __esm({
122826
122899
  revealProgress = /* @__PURE__ */ new Map();
122827
122900
  countWords = (s2) => s2.split(/\s+/).filter((t2) => t2 !== "").length;
122828
122901
  RevealText = ({ text: text11, reduce, markdownHtml }) => {
122829
- const tokens2 = React12.useMemo(() => text11.split(/(\s+)/).filter((t2) => t2 !== ""), [text11]);
122830
- const total = React12.useMemo(
122902
+ const tokens2 = React13.useMemo(() => text11.split(/(\s+)/).filter((t2) => t2 !== ""), [text11]);
122903
+ const total = React13.useMemo(
122831
122904
  () => markdownHtml != null ? revealHtml(markdownHtml, 0, void 0).total : countWords(text11),
122832
122905
  [text11, markdownHtml]
122833
122906
  );
122834
- const [shown2, setShown] = React12.useState(total);
122835
- const prevRef = React12.useRef(null);
122907
+ const [shown2, setShown] = React13.useState(total);
122908
+ const prevRef = React13.useRef(null);
122836
122909
  useIsomorphicLayoutEffect(() => {
122837
122910
  const prev = prevRef.current;
122838
122911
  prevRef.current = text11;
@@ -122955,8 +123028,8 @@ var init_renderNode = __esm({
122955
123028
  const boundInitials = useResolvedScalar(props.initials != null && isBinding(props.initials) ? props.initials : void 0, ctx);
122956
123029
  const boundAlt = useResolvedScalar(contentDescription, ctx);
122957
123030
  const fadeIn = motionDefaultsAnimate(ctx);
122958
- const [shownSrc, setShownSrc] = React12.useState(null);
122959
- const imgRef = React12.useRef(null);
123031
+ const [shownSrc, setShownSrc] = React13.useState(null);
123032
+ const imgRef = React13.useRef(null);
122960
123033
  const hasSource = props.url != null || props.initials != null || props.asset != null || props.icon != null;
122961
123034
  const banner = fillWidth === true || props.width == null && props.height == null && !props.initials;
122962
123035
  const w2 = banner ? "100%" : props.width ?? 40;
@@ -122970,7 +123043,7 @@ var init_renderNode = __esm({
122970
123043
  const ph = props.placeholder ? C2(props.placeholder, "#e6e6e6") : void 0;
122971
123044
  const imgUrl = props.url != null && isBinding(props.url) ? boundUrl : props.url;
122972
123045
  const imgInitials = props.initials != null && isBinding(props.initials) ? boundInitials : props.initials;
122973
- const [failedSrc, setFailedSrc] = React12.useState(null);
123046
+ const [failedSrc, setFailedSrc] = React13.useState(null);
122974
123047
  const resolvedSrc = imgUrl && typeof imgUrl === "string" ? resolveAssetUrl(imgUrl, ctx.assetBaseUrl) : null;
122975
123048
  const imgShown = !fadeIn || resolvedSrc != null && shownSrc === resolvedSrc;
122976
123049
  useIsomorphicLayoutEffect(() => {
@@ -123003,7 +123076,7 @@ var init_renderNode = __esm({
123003
123076
  if (imgInitials && typeof imgInitials === "string") {
123004
123077
  const alt = asText2(boundAlt).trim();
123005
123078
  const circle = avatarCircle(String(imgInitials), typeof w2 === "number" ? w2 : 40, C2, false, bodyFont(ctx));
123006
- return React12.cloneElement(circle, alt ? { role: "img", "aria-label": alt, [SELF_RENDERED_LEAF]: true } : { [ROLE_WHEN_NAMED]: "img", [SELF_RENDERED_LEAF]: true });
123079
+ return React13.cloneElement(circle, alt ? { role: "img", "aria-label": alt, [SELF_RENDERED_LEAF]: true } : { [ROLE_WHEN_NAMED]: "img", [SELF_RENDERED_LEAF]: true });
123007
123080
  }
123008
123081
  if (props.icon != null && props.url == null && props.asset == null && imgInitials == null) {
123009
123082
  const side2 = typeof w2 === "number" ? w2 : 40;
@@ -123018,13 +123091,13 @@ var init_renderNode = __esm({
123018
123091
  const reduce = ctx.reduceMotion();
123019
123092
  const servicePlayPath = typeof props.playPath === "string" && props.playPath.startsWith("$service:") ? props.playPath : void 0;
123020
123093
  const nonce = lottieNonce(useResolvedScalar(servicePlayPath, ctx));
123021
- const [replay, setReplay] = React12.useState({ plays: 0 });
123022
- const [gen, setGen] = React12.useState(0);
123023
- React12.useEffect(() => {
123094
+ const [replay, setReplay] = React13.useState({ plays: 0 });
123095
+ const [gen, setGen] = React13.useState(0);
123096
+ React13.useEffect(() => {
123024
123097
  setReplay((s2) => ({ plays: s2.plays }));
123025
123098
  setGen((g2) => g2 + 1);
123026
123099
  }, [servicePlayPath, ctx.provider, props.source]);
123027
- React12.useEffect(() => {
123100
+ React13.useEffect(() => {
123028
123101
  setReplay((s2) => lottieReplayStep(s2, nonce, reduce));
123029
123102
  }, [nonce, servicePlayPath, ctx.provider, props.source]);
123030
123103
  return /* @__PURE__ */ jsx11(
@@ -123082,7 +123155,7 @@ var init_renderNode = __esm({
123082
123155
  const a11y = described ? { role: "img", "aria-label": String(contentDescription), [SELF_RENDERED_LEAF]: true } : { "aria-hidden": "true", [INFERRED_DECORATIVE]: true, [SELF_RENDERED_LEAF]: true, [ROLE_WHEN_NAMED]: "img" };
123083
123156
  const glyph = iconSvg(iconName, { size, color: C2(resolveScalarStatic(props.tint, ctx) ?? "textPrimary", "#636b78") });
123084
123157
  const swap = useIconSwap(iconName, ctx);
123085
- const animatedGlyph = Object.keys(effectStyle).length || swap.key > 0 ? React12.cloneElement(glyph, { style: { ...glyph.props.style, ...swap.style, ...effectStyle }, key: swap.key }) : glyph;
123158
+ const animatedGlyph = Object.keys(effectStyle).length || swap.key > 0 ? React13.cloneElement(glyph, { style: { ...glyph.props.style, ...swap.style, ...effectStyle }, key: swap.key }) : glyph;
123086
123159
  return /* @__PURE__ */ jsx11("span", { ...a11y, style: { display: "inline-grid", placeItems: "center", width: size + 6, height: size + 6, lineHeight: 1, flex: "none", ...wrap }, children: animatedGlyph });
123087
123160
  });
123088
123161
  EMPTY_STATE_SPACING = {
@@ -123318,12 +123391,12 @@ var init_renderNode = __esm({
123318
123391
  const C2 = ctx.color;
123319
123392
  const bound2 = useResolvedScalar(props.valuePath, ctx);
123320
123393
  const boundText = props.valuePath != null ? typeof bound2 === "string" ? bound2 : typeof bound2 === "number" ? String(bound2) : "" : void 0;
123321
- const [typed, setTyped] = React12.useState(void 0);
123322
- React12.useEffect(() => {
123394
+ const [typed, setTyped] = React13.useState(void 0);
123395
+ React13.useEffect(() => {
123323
123396
  setTyped(void 0);
123324
123397
  }, [boundText, props.value, props.valuePath, typeof props.valuePath === "string" && props.valuePath.startsWith("$service:") ? ctx.provider : null]);
123325
123398
  const otpPath = typeof props.valuePath === "string" && props.valuePath.startsWith("$service:") ? servicePath(props.valuePath) : "";
123326
- React12.useEffect(() => {
123399
+ React13.useEffect(() => {
123327
123400
  if (!ctx.provider || !otpPath) return;
123328
123401
  let subscribing = true;
123329
123402
  let active = true;
@@ -123414,10 +123487,10 @@ var init_renderNode = __esm({
123414
123487
  return /* @__PURE__ */ jsx11("div", { ...a11y, style: { width: "100%", height: 6, borderRadius: 999, background: C2(boundTokenName(props.trackColorPath, props.trackColor, ctx) ?? "surfaceTertiary", "#eee"), overflow: "hidden", ...wrap }, children: /* @__PURE__ */ jsx11("div", { style: { width: `${Math.round((p2 ?? 0.4) * 100)}%`, height: "100%", borderRadius: 999, background: C2(boundTokenName(props.tintPath, props.tint, ctx) ?? "accentPrimary", "#116DFF"), opacity: p2 == null ? 0.45 : 1, ...animatedFill ? { transition: ctx.motionTransition(ctx.kit?.motion) } : {} } }) });
123415
123488
  });
123416
123489
  SnackbarNode = withExtras("SnackbarNode", ({ props, ctx, wrap }) => {
123417
- const [phase, setPhase] = React12.useState("shown");
123490
+ const [phase, setPhase] = React13.useState("shown");
123418
123491
  const hideAfter = ctx.empty ? void 0 : snackbarAutoHideMs(props.durationMs);
123419
123492
  const identity = snackbarIdentity(props);
123420
- React12.useEffect(() => {
123493
+ React13.useEffect(() => {
123421
123494
  setPhase("shown");
123422
123495
  if (hideAfter === void 0) return;
123423
123496
  let fade;
@@ -123473,8 +123546,8 @@ var init_renderNode = __esm({
123473
123546
  const gated2 = props.presentedPath != null || props.presented != null;
123474
123547
  const presented = props.presentedPath != null ? bound2 : props.presented;
123475
123548
  const gateOpen = !gated2 || presented === true || presented === "true";
123476
- const [dismissed, setDismissed] = React12.useState(false);
123477
- React12.useEffect(() => {
123549
+ const [dismissed, setDismissed] = React13.useState(false);
123550
+ React13.useEffect(() => {
123478
123551
  if (!gateOpen) setDismissed(false);
123479
123552
  }, [gateOpen]);
123480
123553
  const shown2 = gateOpen && !dismissed;
@@ -123482,26 +123555,26 @@ var init_renderNode = __esm({
123482
123555
  const dismissible = props.dismissible !== false;
123483
123556
  const edge = sheetEdge(props.edge);
123484
123557
  const detents = edge === "bottom" ? sheetDetents(props.detents) : [];
123485
- const [detentIndex, setDetentIndex] = React12.useState(0);
123486
- React12.useEffect(() => {
123558
+ const [detentIndex, setDetentIndex] = React13.useState(0);
123559
+ React13.useEffect(() => {
123487
123560
  if (!shown2) setDetentIndex(0);
123488
123561
  }, [shown2]);
123489
- const dialogRef = React12.useRef(null);
123562
+ const dialogRef = React13.useRef(null);
123490
123563
  const trapTab = useModalOverlay(dialogRef, shown2 && modal);
123491
- const latest = React12.useRef({ ctx, onDismiss: props.onDismiss });
123564
+ const latest = React13.useRef({ ctx, onDismiss: props.onDismiss });
123492
123565
  latest.current = { ctx, onDismiss: props.onDismiss };
123493
- const closed = React12.useRef(false);
123494
- React12.useEffect(() => {
123566
+ const closed = React13.useRef(false);
123567
+ React13.useEffect(() => {
123495
123568
  if (shown2) closed.current = false;
123496
123569
  }, [shown2]);
123497
- const dismiss = React12.useCallback(() => {
123570
+ const dismiss = React13.useCallback(() => {
123498
123571
  if (closed.current) return;
123499
123572
  closed.current = true;
123500
123573
  setDismissed(true);
123501
123574
  const { ctx: now, onDismiss } = latest.current;
123502
123575
  if (onDismiss != null) now.onAction?.(resolveItemDeep2(onDismiss, now));
123503
123576
  }, []);
123504
- React12.useEffect(() => {
123577
+ React13.useEffect(() => {
123505
123578
  if (!shown2 || !dismissible) return;
123506
123579
  const doc = dialogRef.current?.ownerDocument;
123507
123580
  if (!doc) return;
@@ -123515,11 +123588,11 @@ var init_renderNode = __esm({
123515
123588
  doc.addEventListener("keydown", onKey, true);
123516
123589
  return () => doc.removeEventListener("keydown", onKey, true);
123517
123590
  }, [shown2, dismissible, dismiss]);
123518
- const drag = React12.useRef(null);
123591
+ const drag = React13.useRef(null);
123519
123592
  const reduceMotion = ctx.reduceMotion();
123520
- const [mounted, setMounted] = React12.useState(shown2);
123521
- const [entered, setEntered] = React12.useState(shown2 && ctx.staticRender === true);
123522
- React12.useEffect(() => {
123593
+ const [mounted, setMounted] = React13.useState(shown2);
123594
+ const [entered, setEntered] = React13.useState(shown2 && ctx.staticRender === true);
123595
+ React13.useEffect(() => {
123523
123596
  if (shown2) {
123524
123597
  setMounted(true);
123525
123598
  if (reduceMotion || typeof requestAnimationFrame !== "function") {
@@ -123543,8 +123616,8 @@ var init_renderNode = __esm({
123543
123616
  const t2 = setTimeout(() => setMounted(false), DRAWER_EXIT_MS);
123544
123617
  return () => clearTimeout(t2);
123545
123618
  }, [shown2, reduceMotion]);
123546
- const scrimRef = React12.useRef(null);
123547
- const [rtl, setRtl] = React12.useState(false);
123619
+ const scrimRef = React13.useRef(null);
123620
+ const [rtl, setRtl] = React13.useState(false);
123548
123621
  useIsomorphicLayoutEffect(() => {
123549
123622
  const el2 = scrimRef.current;
123550
123623
  if (el2 && el2.ownerDocument.defaultView) setRtl(el2.ownerDocument.defaultView.getComputedStyle(el2).direction === "rtl");
@@ -123652,8 +123725,8 @@ var init_renderNode = __esm({
123652
123725
  const gated2 = props.presentedPath != null || props.presented != null;
123653
123726
  const presented = props.presentedPath != null ? bound2 : props.presented;
123654
123727
  const gateOpen = !gated2 || presented === true || presented === "true";
123655
- const [dismissed, setDismissed] = React12.useState(false);
123656
- React12.useEffect(() => {
123728
+ const [dismissed, setDismissed] = React13.useState(false);
123729
+ React13.useEffect(() => {
123657
123730
  if (!gateOpen) setDismissed(false);
123658
123731
  }, [gateOpen]);
123659
123732
  const shown2 = gateOpen && !dismissed;
@@ -123661,18 +123734,18 @@ var init_renderNode = __esm({
123661
123734
  const autoMs = drawerAutoDismissMs(props.autoDismissMs);
123662
123735
  const placement = sheetPlacement(props.placement);
123663
123736
  const detents = sheetDetents(props.detents);
123664
- const [detentIndex, setDetentIndex] = React12.useState(0);
123665
- const [expanded, setExpanded] = React12.useState(false);
123666
- React12.useEffect(() => {
123737
+ const [detentIndex, setDetentIndex] = React13.useState(0);
123738
+ const [expanded, setExpanded] = React13.useState(false);
123739
+ React13.useEffect(() => {
123667
123740
  if (!shown2) {
123668
123741
  setDetentIndex(0);
123669
123742
  setExpanded(false);
123670
123743
  }
123671
123744
  }, [shown2]);
123672
123745
  const reduceMotion = ctx.reduceMotion();
123673
- const [mounted, setMounted] = React12.useState(shown2);
123674
- const [entered, setEntered] = React12.useState(shown2 && ctx.staticRender === true);
123675
- React12.useEffect(() => {
123746
+ const [mounted, setMounted] = React13.useState(shown2);
123747
+ const [entered, setEntered] = React13.useState(shown2 && ctx.staticRender === true);
123748
+ React13.useEffect(() => {
123676
123749
  if (shown2) {
123677
123750
  setMounted(true);
123678
123751
  if (reduceMotion || typeof requestAnimationFrame !== "function") {
@@ -123696,10 +123769,10 @@ var init_renderNode = __esm({
123696
123769
  const t2 = setTimeout(() => setMounted(false), DRAWER_EXIT_MS);
123697
123770
  return () => clearTimeout(t2);
123698
123771
  }, [shown2, reduceMotion]);
123699
- const anchorRef = React12.useRef(null);
123700
- const panelRef = React12.useRef(null);
123701
- const [host, setHost] = React12.useState(null);
123702
- const [hostTop, setHostTop] = React12.useState(true);
123772
+ const anchorRef = React13.useRef(null);
123773
+ const panelRef = React13.useRef(null);
123774
+ const [host, setHost] = React13.useState(null);
123775
+ const [hostTop, setHostTop] = React13.useState(true);
123703
123776
  useIsomorphicLayoutEffect(() => {
123704
123777
  if (!host) {
123705
123778
  setHostTop(true);
@@ -123727,7 +123800,7 @@ var init_renderNode = __esm({
123727
123800
  setHost(overlay ?? own6(DRAWER_HOST_ATTR));
123728
123801
  }, [mounted, placement]);
123729
123802
  const overHost = host?.hasAttribute(SHEET_OVERLAY_HOST_ATTR) ?? false;
123730
- const [regionPx, setRegionPx] = React12.useState(0);
123803
+ const [regionPx, setRegionPx] = React13.useState(0);
123731
123804
  useIsomorphicLayoutEffect(() => {
123732
123805
  if (!detents.length || !mounted) return;
123733
123806
  const region = host ? overHost ? host.parentElement : host.previousElementSibling : null;
@@ -123754,38 +123827,38 @@ var init_renderNode = __esm({
123754
123827
  resizeObserver?.disconnect();
123755
123828
  };
123756
123829
  }, [host, overHost, mounted, detents.length]);
123757
- const latest = React12.useRef({ ctx, onDismiss: props.onDismiss });
123830
+ const latest = React13.useRef({ ctx, onDismiss: props.onDismiss });
123758
123831
  latest.current = { ctx, onDismiss: props.onDismiss };
123759
- const closed = React12.useRef(false);
123760
- const remaining = React12.useRef(autoMs ?? 0);
123761
- React12.useEffect(() => {
123832
+ const closed = React13.useRef(false);
123833
+ const remaining = React13.useRef(autoMs ?? 0);
123834
+ React13.useEffect(() => {
123762
123835
  if (!shown2) return;
123763
123836
  closed.current = false;
123764
123837
  remaining.current = autoMs ?? 0;
123765
123838
  }, [shown2, autoMs]);
123766
- const close = React12.useCallback(() => {
123839
+ const close = React13.useCallback(() => {
123767
123840
  if (closed.current) return;
123768
123841
  closed.current = true;
123769
123842
  setDismissed(true);
123770
123843
  const { ctx: now, onDismiss } = latest.current;
123771
123844
  if (onDismiss != null) now.onAction?.(resolveItemDeep2(onDismiss, now));
123772
123845
  }, []);
123773
- const toDetent = React12.useCallback((next, from) => {
123846
+ const toDetent = React13.useCallback((next, from) => {
123774
123847
  if (next > from) setExpanded(true);
123775
123848
  setDetentIndex(next);
123776
123849
  }, []);
123777
- const [hover, setHover] = React12.useState(false);
123778
- const [pressed, setPressed] = React12.useState(false);
123779
- const [focusIn, setFocusIn] = React12.useState(false);
123850
+ const [hover, setHover] = React13.useState(false);
123851
+ const [pressed, setPressed] = React13.useState(false);
123852
+ const [focusIn, setFocusIn] = React13.useState(false);
123780
123853
  const paused = hover || pressed || focusIn;
123781
- React12.useEffect(() => {
123854
+ React13.useEffect(() => {
123782
123855
  if (!shown2) {
123783
123856
  setHover(false);
123784
123857
  setPressed(false);
123785
123858
  setFocusIn(false);
123786
123859
  }
123787
123860
  }, [shown2]);
123788
- React12.useEffect(() => {
123861
+ React13.useEffect(() => {
123789
123862
  if (!shown2 || !hostTop || autoMs == null || paused || expanded) return;
123790
123863
  const since = Date.now();
123791
123864
  const t2 = setTimeout(() => {
@@ -123796,7 +123869,7 @@ var init_renderNode = __esm({
123796
123869
  remaining.current = drawerRemainingMs(remaining.current, Date.now() - since);
123797
123870
  };
123798
123871
  }, [shown2, hostTop, autoMs, paused, expanded, close]);
123799
- React12.useEffect(() => {
123872
+ React13.useEffect(() => {
123800
123873
  if (!shown2 || !dismissible) return;
123801
123874
  const doc = panelRef.current?.ownerDocument;
123802
123875
  if (!doc) return;
@@ -123809,13 +123882,13 @@ var init_renderNode = __esm({
123809
123882
  doc.addEventListener("keydown", onKey, true);
123810
123883
  return () => doc.removeEventListener("keydown", onKey, true);
123811
123884
  }, [shown2, dismissible, close, host]);
123812
- const drag = React12.useRef(null);
123813
- const dragged = React12.useRef(false);
123814
- const [dragDy, setDragDy] = React12.useState(0);
123815
- React12.useEffect(() => {
123885
+ const drag = React13.useRef(null);
123886
+ const dragged = React13.useRef(false);
123887
+ const [dragDy, setDragDy] = React13.useState(0);
123888
+ React13.useEffect(() => {
123816
123889
  if (!shown2) setDragDy(0);
123817
123890
  }, [shown2]);
123818
- const dragState = React12.useRef({ index: 0, count: 0, dismissible });
123891
+ const dragState = React13.useRef({ index: 0, count: 0, dismissible });
123819
123892
  if (!shown2 && !mounted) return /* @__PURE__ */ jsx11("span", { ref: anchorRef, "data-bottom-drawer-anchor": "", hidden: true, ...{ [NODE_EXTRAS_TARGET]: "bottom-drawer-panel" } });
123820
123893
  const sheet = idiomControls(ctx.idiom).sheet;
123821
123894
  const r3 = `${sheet.cornerRadius}px`;
@@ -123957,23 +124030,23 @@ var init_renderNode = __esm({
123957
124030
  const rich = title !== "";
123958
124031
  const trigger = resolveTooltipTrigger(props.trigger, "pointer");
123959
124032
  const edge = resolveOverlayEdge("Tooltip", props.edge);
123960
- const [open, setOpen] = React12.useState(false);
123961
- const anchorRef = React12.useRef(null);
123962
- const bubbleRef = React12.useRef(null);
123963
- const pressTimer = React12.useRef(null);
124033
+ const [open, setOpen] = React13.useState(false);
124034
+ const anchorRef = React13.useRef(null);
124035
+ const bubbleRef = React13.useRef(null);
124036
+ const pressTimer = React13.useRef(null);
123964
124037
  const placement = useFlippedEdge(edge, open, bubbleRef, anchorRef);
123965
124038
  const placed = placement.edge;
123966
- const latest = React12.useRef({ ctx, onDismiss: props.onDismiss, open });
124039
+ const latest = React13.useRef({ ctx, onDismiss: props.onDismiss, open });
123967
124040
  latest.current = { ctx, onDismiss: props.onDismiss, open };
123968
- const holding = React12.useRef({ hover: false, focus: false });
123969
- const [needsTabStop, setNeedsTabStop] = React12.useState(false);
124041
+ const holding = React13.useRef({ hover: false, focus: false });
124042
+ const [needsTabStop, setNeedsTabStop] = React13.useState(false);
123970
124043
  useIsomorphicLayoutEffect(() => {
123971
124044
  const el2 = anchorRef.current;
123972
124045
  const want = trigger === "hover" && el2 != null && !hasTabStop(el2);
123973
124046
  if (want !== needsTabStop) setNeedsTabStop(want);
123974
124047
  });
123975
- const show = React12.useCallback(() => setOpen(true), []);
123976
- const dismiss = React12.useCallback(() => {
124048
+ const show = React13.useCallback(() => setOpen(true), []);
124049
+ const dismiss = React13.useCallback(() => {
123977
124050
  holding.current = { hover: false, focus: false };
123978
124051
  const { ctx: now, onDismiss, open: wasOpen } = latest.current;
123979
124052
  if (!wasOpen) return;
@@ -123981,7 +124054,7 @@ var init_renderNode = __esm({
123981
124054
  setOpen(false);
123982
124055
  if (onDismiss != null) now.onAction?.(resolveItemDeep2(onDismiss, now));
123983
124056
  }, []);
123984
- React12.useEffect(() => {
124057
+ React13.useEffect(() => {
123985
124058
  if (!open) return;
123986
124059
  const doc = bubbleRef.current?.ownerDocument;
123987
124060
  if (!doc) return;
@@ -124005,7 +124078,7 @@ var init_renderNode = __esm({
124005
124078
  if (timer) clearTimeout(timer);
124006
124079
  };
124007
124080
  }, [open, trigger, dismiss]);
124008
- React12.useEffect(() => () => {
124081
+ React13.useEffect(() => () => {
124009
124082
  if (pressTimer.current) clearTimeout(pressTimer.current);
124010
124083
  }, []);
124011
124084
  const cancelPress = () => {
@@ -124045,7 +124118,7 @@ var init_renderNode = __esm({
124045
124118
  };
124046
124119
  const hint = [title, text11].filter((s2) => s2 !== "").join(". ");
124047
124120
  const anchor = props.anchor ? renderNode(props.anchor, ctx) : null;
124048
- const wrapperHintId = `hm-tip-hint${React12.useId()}`;
124121
+ const wrapperHintId = `hm-tip-hint${React13.useId()}`;
124049
124122
  useIsomorphicLayoutEffect(() => {
124050
124123
  const wrapper = anchorRef.current;
124051
124124
  if (!wrapper || !hint || needsTabStop) return;
@@ -124067,7 +124140,7 @@ var init_renderNode = __esm({
124067
124140
  /* @__PURE__ */ jsx11(OverlayAnchorClip, { wrap, children: needsTabStop ? /* @__PURE__ */ jsxs8(Fragment4, { children: [
124068
124141
  anchor,
124069
124142
  hint && /* @__PURE__ */ jsx11("span", { id: wrapperHintId, hidden: true, "data-hm-a11y-hint": "", children: hint })
124070
- ] }) : hint && React12.isValidElement(anchor) ? /* @__PURE__ */ jsxs8(Fragment4, { children: [
124143
+ ] }) : hint && React13.isValidElement(anchor) ? /* @__PURE__ */ jsxs8(Fragment4, { children: [
124071
124144
  /* @__PURE__ */ jsx11(A11yHintDescription, { hint, children: anchor }),
124072
124145
  /* @__PURE__ */ jsx11("span", { id: wrapperHintId, hidden: true, "data-hm-a11y-hint": "", children: hint })
124073
124146
  ] }) : /* @__PURE__ */ jsxs8(Fragment4, { children: [
@@ -124088,24 +124161,24 @@ var init_renderNode = __esm({
124088
124161
  const gateOpen = gate === true || gate === "true";
124089
124162
  const literal = props.presentedPath == null && props.presented != null;
124090
124163
  const identity = { path: props.presentedPath, presented: props.presented, provider: ctx.provider };
124091
- const [local, setLocal] = React12.useState({ ...identity, opened: false, dismissed: false });
124164
+ const [local, setLocal] = React13.useState({ ...identity, opened: false, dismissed: false });
124092
124165
  const sameGate = local.path === identity.path && local.presented === identity.presented && local.provider === identity.provider;
124093
124166
  const current = sameGate ? local : { ...identity, opened: false, dismissed: false };
124094
124167
  if (!sameGate) setLocal(current);
124095
- React12.useEffect(() => {
124168
+ React13.useEffect(() => {
124096
124169
  if (!gateOpen) setLocal((previous) => previous.dismissed ? { ...previous, dismissed: false } : previous);
124097
124170
  }, [gateOpen]);
124098
124171
  const shown2 = !gated2 || (gateOpen || current.opened) && !current.dismissed;
124099
124172
  const modal = gated2 && isOverlayModal("Popover", props.modal);
124100
- const dialogRef = React12.useRef(null);
124101
- const anchorRef = React12.useRef(null);
124102
- const boxRef = React12.useRef(null);
124173
+ const dialogRef = React13.useRef(null);
124174
+ const anchorRef = React13.useRef(null);
124175
+ const boxRef = React13.useRef(null);
124103
124176
  const trapTab = useModalOverlay(dialogRef, shown2 && modal);
124104
124177
  const placement = useFlippedEdge(resolveOverlayEdge("Popover", props.edge), gated2 && shown2, dialogRef, boxRef, 6);
124105
124178
  const placed = placement.edge;
124106
- const latest = React12.useRef({ ctx, onDismiss: props.onDismiss });
124179
+ const latest = React13.useRef({ ctx, onDismiss: props.onDismiss });
124107
124180
  latest.current = { ctx, onDismiss: props.onDismiss };
124108
- React12.useEffect(() => {
124181
+ React13.useEffect(() => {
124109
124182
  if (!gated2 || !shown2) return;
124110
124183
  const doc = dialogRef.current?.ownerDocument;
124111
124184
  if (!doc) return;
@@ -124143,8 +124216,8 @@ var init_renderNode = __esm({
124143
124216
  if (shown2) return;
124144
124217
  setLocal({ ...identity, opened: true, dismissed: false });
124145
124218
  } : void 0;
124146
- const [anchorIsButton, setAnchorIsButton] = React12.useState(false);
124147
- const [needsSeparateOpener, setNeedsSeparateOpener] = React12.useState(false);
124219
+ const [anchorIsButton, setAnchorIsButton] = React13.useState(false);
124220
+ const [needsSeparateOpener, setNeedsSeparateOpener] = React13.useState(false);
124148
124221
  useIsomorphicLayoutEffect(() => {
124149
124222
  const el2 = anchorRef.current;
124150
124223
  const want = literal && el2 != null && !hasTabStop(el2);
@@ -124171,7 +124244,7 @@ var init_renderNode = __esm({
124171
124244
  });
124172
124245
  ChipsInputNode = withExtras("ChipsInputNode", ({ props, ctx, wrap }) => {
124173
124246
  const placeholderText = useBoundString(props.placeholder, ctx);
124174
- const [draft, setDraft] = React12.useState("");
124247
+ const [draft, setDraft] = React13.useState("");
124175
124248
  const C2 = ctx.color;
124176
124249
  const bound2 = useResolvedScalar(props.valuesPath, ctx);
124177
124250
  const raw = props.valuesPath != null ? bound2 : props.values;
@@ -124364,7 +124437,7 @@ var init_renderNode = __esm({
124364
124437
  const who = asText2(a2.initials).trim();
124365
124438
  const initials = avatarCircle(who || "?", size, C2, true, bodyFont(ctx));
124366
124439
  const photo = typeof a2.imageUrl === "string" && a2.imageUrl && !isBinding(a2.imageUrl) ? a2.imageUrl : "";
124367
- const circle = photo ? React12.cloneElement(
124440
+ const circle = photo ? React13.cloneElement(
124368
124441
  initials,
124369
124442
  { style: { ...initials.props.style, position: "relative", overflow: "hidden" } },
124370
124443
  initials.props.children,
@@ -124372,7 +124445,7 @@ var init_renderNode = __esm({
124372
124445
  e2.currentTarget.style.display = "none";
124373
124446
  }, style: { position: "absolute", inset: 0, width: "100%", height: "100%", objectFit: "cover" } })
124374
124447
  ) : initials;
124375
- return who ? /* @__PURE__ */ jsx11("div", { role: "listitem", style: wrapStyle, children: React12.cloneElement(circle, { role: "img", "aria-label": who }) }, i2) : /* @__PURE__ */ jsx11("div", { "aria-hidden": "true", style: wrapStyle, children: circle }, i2);
124448
+ return who ? /* @__PURE__ */ jsx11("div", { role: "listitem", style: wrapStyle, children: React13.cloneElement(circle, { role: "img", "aria-label": who }) }, i2) : /* @__PURE__ */ jsx11("div", { "aria-hidden": "true", style: wrapStyle, children: circle }, i2);
124376
124449
  }),
124377
124450
  overflow > 0 && /* @__PURE__ */ jsx11("div", { role: "listitem", style: { marginLeft: -(size - shift), width: size, height: size, borderRadius: "50%", border: `2px solid ${C2("surfacePrimary", "#fff")}`, background: C2("surfaceTertiary", "#e6e6e6"), color: C2("textPrimary", "#111"), display: "grid", placeItems: "center", fontSize: size * 0.32, fontWeight: 700, fontFamily: bodyFont(ctx) }, children: /* @__PURE__ */ jsxs8("span", { role: "img", "aria-label": `${overflow} more`, children: [
124378
124451
  "+",
@@ -124393,7 +124466,7 @@ var init_renderNode = __esm({
124393
124466
  const declared = Array.isArray(props.series) ? props.series : [];
124394
124467
  const multi = declared.length > 0;
124395
124468
  const singleBound = useBoundValue(ctx, typeof props.valuesPath === "string" && !multi ? props.valuesPath : "");
124396
- const seriesBindings = React12.useMemo(
124469
+ const seriesBindings = React13.useMemo(
124397
124470
  () => declared.map((d2) => typeof d2?.valuesPath === "string" ? d2.valuesPath : ""),
124398
124471
  // eslint-disable-next-line react-hooks/exhaustive-deps
124399
124472
  [declared.map((d2) => String(d2?.valuesPath ?? "")).join("\0")]
@@ -124539,9 +124612,9 @@ var init_renderNode = __esm({
124539
124612
  ] }) });
124540
124613
  });
124541
124614
  ShapeNode = withExtras("ShapeNode", ({ props, ctx, wrap }) => {
124542
- const ref = React12.useRef(null);
124543
- const [box, setBox] = React12.useState(null);
124544
- React12.useEffect(() => {
124615
+ const ref = React13.useRef(null);
124616
+ const [box, setBox] = React13.useState(null);
124617
+ React13.useEffect(() => {
124545
124618
  const el2 = ref.current;
124546
124619
  if (!el2) return;
124547
124620
  const measure2 = () => {
@@ -124699,10 +124772,10 @@ var init_renderNode = __esm({
124699
124772
  const isPlayable = !isFailed && !isUploading;
124700
124773
  const isPlaying = state === "playing";
124701
124774
  const isLoading = state === "loading";
124702
- const [scrub, setScrub] = React12.useState(null);
124703
- const [seeked, setSeeked] = React12.useState(null);
124775
+ const [scrub, setScrub] = React13.useState(null);
124776
+ const [seeked, setSeeked] = React13.useState(null);
124704
124777
  const positionMs = Math.max(0, num4(props.positionMsPath != null ? boundPosition : void 0, props.positionMs, 0));
124705
- React12.useEffect(() => {
124778
+ React13.useEffect(() => {
124706
124779
  setSeeked(null);
124707
124780
  }, [positionMs]);
124708
124781
  const effectivePositionMs = seeked ?? positionMs;
@@ -124744,8 +124817,8 @@ var init_renderNode = __esm({
124744
124817
  const barW = Math.max(0.6, slot * 0.58);
124745
124818
  const cut2 = progress * W2;
124746
124819
  const rates = Array.isArray(props.rates) ? props.rates.map(Number).filter((n2) => n2 > 0) : [];
124747
- const [pickedRate, setPickedRate] = React12.useState(null);
124748
- React12.useEffect(() => {
124820
+ const [pickedRate, setPickedRate] = React13.useState(null);
124821
+ React13.useEffect(() => {
124749
124822
  setPickedRate(null);
124750
124823
  }, [rate]);
124751
124824
  const effectiveRate = pickedRate ?? rate;
@@ -124918,27 +124991,77 @@ var init_renderNode = __esm({
124918
124991
  ] }, i2);
124919
124992
  }) });
124920
124993
  });
124921
- PagingNode = withExtras("PagingNode", ({ props, ctx, wrap }) => {
124994
+ LiveWindowMeasured = ({ index, heights, children }) => {
124995
+ const ref = React13.useRef(null);
124996
+ React13.useLayoutEffect(() => {
124997
+ const el2 = ref.current;
124998
+ if (!el2) return;
124999
+ const record2 = () => {
125000
+ const h2 = el2.offsetHeight;
125001
+ if (h2 > 0 && heights.map.get(index) !== h2) {
125002
+ heights.map.set(index, h2);
125003
+ heights.changed();
125004
+ }
125005
+ };
125006
+ record2();
125007
+ if (typeof ResizeObserver === "undefined") return;
125008
+ const observer = new ResizeObserver(record2);
125009
+ observer.observe(el2);
125010
+ return () => observer.disconnect();
125011
+ }, [index, heights]);
125012
+ return /* @__PURE__ */ jsx11("div", { ref, style: { width: "100%" }, children });
125013
+ };
125014
+ LiveWindowPage = ({ page, index, count: count2, current, liveWindow, ownerId, heights, ctx }) => {
125015
+ const outerActive = React13.useContext(PageActiveContext);
125016
+ if (liveWindowRange(current, count2, liveWindow) == null) return /* @__PURE__ */ jsx11(Fragment4, { children: renderNode(page, ctx) });
125017
+ if (liveWindowMounted(index, current, count2, liveWindow)) {
125018
+ return /* @__PURE__ */ jsx11(PageActiveContext.Provider, { value: outerActive && liveWindowActive(index, current, count2, liveWindow), children: /* @__PURE__ */ jsx11(LiveWindowMeasured, { index, heights, children: renderNode(page, ctx) }) });
125019
+ }
125020
+ const bg = normalize(page ?? {}).modifiers?.background;
125021
+ const token = typeof bg === "string" ? bg : typeof bg?.token === "string" ? bg.token : void 0;
125022
+ const image = liveWindowFirstImage(page);
125023
+ const picture = image ? normalize(image) : null;
125024
+ const remembered = heights.map.get(index) ?? heights.map.get(liveWindowCurrent(current, count2));
125025
+ return (
125026
+ // Hidden from assistive tech except as the page's position; the picture is inert (no id, no actions).
125027
+ /* @__PURE__ */ jsx11(
125028
+ "div",
125029
+ {
125030
+ "data-component-id": liveWindowPlaceholderId(ownerId, index),
125031
+ "data-live-window-placeholder": "",
125032
+ role: "group",
125033
+ "aria-label": `page ${index + 1} of ${count2}`,
125034
+ style: { width: "100%", height: remembered ? remembered : "100%", minHeight: remembered ? remembered : "100%", position: "relative", overflow: "hidden", background: token && !isBinding(token) ? ctx.color(token, "transparent") : void 0 },
125035
+ children: picture ? /* @__PURE__ */ jsx11("div", { "aria-hidden": "true", style: { position: "absolute", inset: 0, pointerEvents: "none" }, children: renderNode({ type: picture.type, props: picture.props }, { ...ctx, onAction: null }) }) : null
125036
+ }
125037
+ )
125038
+ );
125039
+ };
125040
+ PagingNode = withExtras("PagingNode", ({ props, ctx, wrap, nodeId }) => {
124922
125041
  const items = (props.__pager ? props.pages : props.items) ?? [];
124923
125042
  const pages2 = items.filter((page) => isNodeLike(page) || page?.type);
124924
125043
  const requested = Math.max(0, Math.min(pages2.length - 1, props.currentIndex ?? 0));
124925
- const [current, setCurrent] = React12.useState(requested);
124926
- const rail = React12.useRef(null);
124927
- const currentRef = React12.useRef(current);
125044
+ const [current, setCurrent] = React13.useState(requested);
125045
+ const rail = React13.useRef(null);
125046
+ const currentRef = React13.useRef(current);
124928
125047
  const itemsPath = props.itemsPath ?? props.items_path;
124929
125048
  const boundRail = !!itemsPath && !!items[0] && !!ctx.provider;
125049
+ const { settled, scrolling } = useSettledPage(current);
125050
+ const [, heightsChanged] = React13.useReducer((n2) => n2 + 1, 0);
125051
+ const pageKey = pages2.map((p2, i2) => p2?.id ?? `#${i2}`).join("\0");
125052
+ const pageHeights = React13.useMemo(() => ({ map: /* @__PURE__ */ new Map(), changed: heightsChanged }), [pageKey]);
124930
125053
  const select2 = (index) => {
124931
125054
  if (index === currentRef.current) return;
124932
125055
  currentRef.current = index;
124933
125056
  setCurrent(index);
124934
125057
  if (props.onChange && ctx.onAction) ctx.onAction({ ...props.onChange, args: { ...props.onChange.args ?? {}, index } });
124935
125058
  };
124936
- React12.useEffect(() => {
125059
+ React13.useEffect(() => {
124937
125060
  currentRef.current = requested;
124938
125061
  setCurrent(requested);
124939
125062
  if (rail.current && !boundRail) rail.current.scrollLeft = requested * rail.current.clientWidth;
124940
125063
  }, [requested, boundRail, pages2.length]);
124941
- React12.useEffect(() => {
125064
+ React13.useEffect(() => {
124942
125065
  const interval = props.autoplayIntervalMs;
124943
125066
  if (props.__pager || boundRail || !Number.isFinite(interval) || interval <= 0 || pages2.length < 2 || ctx.reduceMotion()) return;
124944
125067
  const timer = setInterval(() => {
@@ -124964,10 +125087,14 @@ var init_renderNode = __esm({
124964
125087
  select2(index);
124965
125088
  },
124966
125089
  onScroll: (event) => {
124967
- if (!boundRail && event.currentTarget.clientWidth > 0) select2(Math.max(0, Math.min(pages2.length - 1, Math.round(event.currentTarget.scrollLeft / event.currentTarget.clientWidth))));
125090
+ if (!boundRail && event.currentTarget.clientWidth > 0) {
125091
+ const page = Math.max(0, Math.min(pages2.length - 1, Math.round(event.currentTarget.scrollLeft / event.currentTarget.clientWidth)));
125092
+ scrolling(page);
125093
+ select2(page);
125094
+ }
124968
125095
  },
124969
125096
  style: { display: "flex", overflowX: "auto", scrollSnapType: boundRail ? void 0 : "x mandatory", gap: boundRail ? 12 : void 0, width: "100%" },
124970
- children: boundRail ? /* @__PURE__ */ jsx11(BoundList, { ctx, itemsPath, template: items[0], renderRow: (template, itemCtx) => /* @__PURE__ */ jsx11("div", { style: { flex: "0 0 auto" }, children: renderNode(template, itemCtx) }) }) : pages2.map((page, index) => /* @__PURE__ */ jsx11("div", { style: { minWidth: "100%", scrollSnapAlign: "start" }, children: renderNode(page, ctx) }, page?.id ?? index))
125097
+ children: boundRail ? /* @__PURE__ */ jsx11(BoundList, { ctx, itemsPath, template: items[0], renderRow: (template, itemCtx) => /* @__PURE__ */ jsx11("div", { style: { flex: "0 0 auto" }, children: renderNode(template, itemCtx) }) }) : pages2.map((page, index) => /* @__PURE__ */ jsx11("div", { style: { minWidth: "100%", scrollSnapAlign: "start" }, children: /* @__PURE__ */ jsx11(LiveWindowPage, { page, index, count: pages2.length, current: settled, liveWindow: props.liveWindow, ownerId: nodeId || (props.__pager ? "pager" : "carousel"), heights: pageHeights, ctx }) }, page?.id ?? index))
124971
125098
  }
124972
125099
  ),
124973
125100
  !boundRail && pages2.length > 1 && (!props.__pager || props.showIndicator !== false) && /* @__PURE__ */ jsx11("div", { "aria-label": `Page ${current + 1} of ${pages2.length}`, style: { display: "flex", gap: 6, justifyContent: "center", marginTop: 10 }, children: pages2.map((_2, index) => /* @__PURE__ */ jsx11("span", { "aria-current": index === current ? "true" : void 0, style: { width: index === current ? 18 : 7, height: 7, borderRadius: 999, background: index === current ? ctx.color("accentPrimary", "#116DFF") : ctx.color("border", "#ccc") } }, index)) })
@@ -124981,19 +125108,19 @@ var init_renderNode = __esm({
124981
125108
  const opts = Array.isArray(rawOpts) ? rawOpts : [];
124982
125109
  const selectedId = isBinding(props.selectedId) ? boundSel : props.selectedId;
124983
125110
  const selIdx = Math.max(0, opts.findIndex((o2) => o2?.id === selectedId));
124984
- const viewport = React12.useRef(null);
124985
- const settle2 = React12.useRef(void 0);
124986
- const pickerId = React12.useId();
125111
+ const viewport = React13.useRef(null);
125112
+ const settle2 = React13.useRef(void 0);
125113
+ const pickerId = React13.useId();
124987
125114
  const interactive = !!ctx.onAction && !!props.onChange;
124988
125115
  const emit = (index) => {
124989
125116
  const id = opts[index]?.id;
124990
125117
  if (!interactive || id == null || index === selIdx) return;
124991
125118
  ctx.onAction({ ...props.onChange, args: { ...props.onChange.args ?? {}, selectedId: String(id) } });
124992
125119
  };
124993
- React12.useEffect(() => {
125120
+ React13.useEffect(() => {
124994
125121
  if (viewport.current) viewport.current.scrollTop = selIdx * 32;
124995
125122
  }, [selIdx, opts.length]);
124996
- React12.useEffect(() => () => clearTimeout(settle2.current), []);
125123
+ React13.useEffect(() => () => clearTimeout(settle2.current), []);
124997
125124
  return /* @__PURE__ */ jsxs8("div", { style: { position: "relative", width: "100%", maxWidth: 220, height: 160, overflow: "hidden", background: C2("surfaceSecondary", "#f5f7fa"), borderRadius: 12, ...wrap }, children: [
124998
125125
  /* @__PURE__ */ jsx11("div", { "aria-hidden": "true", style: { position: "absolute", top: 64, left: 8, right: 8, height: 32, background: C2("surfacePrimary", "#fff"), borderRadius: 8, boxShadow: "inset 0 0 0 1px rgba(0,0,0,.06)" } }),
124999
125126
  /* @__PURE__ */ jsx11(
@@ -125104,23 +125231,23 @@ var init_renderNode = __esm({
125104
125231
  const hasEvents = !!(props.onMapTap || props.onMarkerTap || props.onRegionChange || props.onShapeTap);
125105
125232
  const boundShapes = useResolvedScalar(props.shapesPath, ctx);
125106
125233
  const shapesRaw = Array.isArray(boundShapes) ? boundShapes : Array.isArray(props.shapes) ? props.shapes : [];
125107
- const shapes = React12.useMemo(() => shapesRaw.map((sh) => {
125234
+ const shapes = React13.useMemo(() => shapesRaw.map((sh) => {
125108
125235
  const kind = parseShapeKind(sh?.kind);
125109
125236
  const pts = Array.isArray(sh?.points) ? sh.points.filter((p2) => p2 && typeof p2.latitude === "number" && typeof p2.longitude === "number") : [];
125110
125237
  const ring = kind === "circle" && pts.length ? circleRing(pts[0].latitude, pts[0].longitude, typeof sh.radiusM === "number" ? sh.radiusM : 0) : pts;
125111
125238
  return { ...sh, kind, points: ring };
125112
125239
  }), [JSON.stringify(shapesRaw)]);
125113
125240
  const boundCameraRaw = useResolvedScalar(props.cameraPath, ctx);
125114
- const commandedCamera = React12.useMemo(() => decodeCamera(boundCameraRaw), [boundCameraRaw]);
125115
- const [box, setBox] = React12.useState({ w: 400, h: h2 });
125116
- const [tileStatus, setTileStatus] = React12.useState({});
125117
- const [userCam, setUserCam] = React12.useState(null);
125118
- const dragRef = React12.useRef(null);
125119
- const dragMovedRef = React12.useRef(false);
125120
- const regionReportedRef = React12.useRef(false);
125121
- const [boxEl, setBoxEl] = React12.useState(null);
125122
- const attachBox = React12.useCallback((el2) => setBoxEl(el2), []);
125123
- React12.useEffect(() => {
125241
+ const commandedCamera = React13.useMemo(() => decodeCamera(boundCameraRaw), [boundCameraRaw]);
125242
+ const [box, setBox] = React13.useState({ w: 400, h: h2 });
125243
+ const [tileStatus, setTileStatus] = React13.useState({});
125244
+ const [userCam, setUserCam] = React13.useState(null);
125245
+ const dragRef = React13.useRef(null);
125246
+ const dragMovedRef = React13.useRef(false);
125247
+ const regionReportedRef = React13.useRef(false);
125248
+ const [boxEl, setBoxEl] = React13.useState(null);
125249
+ const attachBox = React13.useCallback((el2) => setBoxEl(el2), []);
125250
+ React13.useEffect(() => {
125124
125251
  const el2 = boxEl;
125125
125252
  if (!el2) return;
125126
125253
  const measure2 = () => {
@@ -125143,12 +125270,12 @@ var init_renderNode = __esm({
125143
125270
  const explicitSchematic = schematic && props.routeMode?.toLowerCase() === "schematic";
125144
125271
  const usesTileArm = !explicitSchematic && (otherTileReason || hasStaticMarkers) && (follow || !schematic);
125145
125272
  const pinsOnly = hasStaticMarkers && !otherTileReason;
125146
- const [userFix, setUserFix] = React12.useState(null);
125147
- const [followBroken, setFollowBroken] = React12.useState(false);
125148
- React12.useEffect(() => {
125273
+ const [userFix, setUserFix] = React13.useState(null);
125274
+ const [followBroken, setFollowBroken] = React13.useState(false);
125275
+ React13.useEffect(() => {
125149
125276
  if (follow) setFollowBroken(false);
125150
125277
  }, [follow]);
125151
- React12.useEffect(() => {
125278
+ React13.useEffect(() => {
125152
125279
  if (!observeUserLocation || !usesTileArm) return;
125153
125280
  const geo = typeof navigator !== "undefined" ? navigator.geolocation : void 0;
125154
125281
  if (!geo || typeof geo.watchPosition !== "function") return;
@@ -125175,7 +125302,7 @@ var init_renderNode = __esm({
125175
125302
  const z5 = userCam?.z ?? fitted;
125176
125303
  const cLat = followActive ? userFix.lat : userCam?.lat ?? baseLat;
125177
125304
  const cLng = followActive ? userFix.lng : userCam?.lng ?? baseLng;
125178
- React12.useEffect(() => {
125305
+ React13.useEffect(() => {
125179
125306
  const resolved2 = resolveCamera(commandedCamera, cLat, cLng, z5);
125180
125307
  if (!resolved2) return;
125181
125308
  setFollowBroken(true);
@@ -125257,7 +125384,7 @@ var init_renderNode = __esm({
125257
125384
  const endDrag = () => {
125258
125385
  dragRef.current = null;
125259
125386
  };
125260
- React12.useEffect(() => {
125387
+ React13.useEffect(() => {
125261
125388
  if (!boxEl || !usesTileArm || !interactive) return;
125262
125389
  const zoomOnWheel = (event) => {
125263
125390
  event.preventDefault();
@@ -125267,7 +125394,7 @@ var init_renderNode = __esm({
125267
125394
  boxEl.addEventListener("wheel", zoomOnWheel, { passive: false });
125268
125395
  return () => boxEl.removeEventListener("wheel", zoomOnWheel);
125269
125396
  }, [boxEl, usesTileArm, interactive, z5, cLat, cLng]);
125270
- React12.useEffect(() => {
125397
+ React13.useEffect(() => {
125271
125398
  const action = props.onRegionChange;
125272
125399
  const fire = ctx.onAction;
125273
125400
  if (!usesTileArm || !action || !fire) return;
@@ -125399,35 +125526,39 @@ var init_renderNode = __esm({
125399
125526
  if (typeof el2.scrollTo === "function") el2.scrollTo({ left, behavior: "smooth" });
125400
125527
  else el2.scrollLeft = left;
125401
125528
  };
125402
- CarouselNode = withExtras("CarouselNode", ({ props, ctx, wrap }) => {
125529
+ CarouselNode = withExtras("CarouselNode", ({ props, ctx, wrap, nodeId }) => {
125403
125530
  const C2 = ctx.color;
125404
125531
  const items = Array.isArray(props.items) ? props.items : [];
125405
125532
  const pages2 = items.filter((p2) => isNodeLike(p2) || p2?.type);
125406
125533
  const count2 = pages2.length;
125407
- const [index, setIndex] = React12.useState(typeof props.currentIndex === "number" ? props.currentIndex : 0);
125408
- const indexRef = React12.useRef(index);
125409
- const trackRef = React12.useRef(null);
125410
- const [hovered, setHovered] = React12.useState(false);
125411
- const [focused, setFocused] = React12.useState(false);
125534
+ const [index, setIndex] = React13.useState(typeof props.currentIndex === "number" ? props.currentIndex : 0);
125535
+ const indexRef = React13.useRef(index);
125536
+ const { settled, scrolling } = useSettledPage(index);
125537
+ const [, heightsChanged] = React13.useReducer((n2) => n2 + 1, 0);
125538
+ const pageKey = pages2.map((p2, i2) => p2?.id ?? `#${i2}`).join("\0");
125539
+ const pageHeights = React13.useMemo(() => ({ map: /* @__PURE__ */ new Map(), changed: heightsChanged }), [pageKey]);
125540
+ const trackRef = React13.useRef(null);
125541
+ const [hovered, setHovered] = React13.useState(false);
125542
+ const [focused, setFocused] = React13.useState(false);
125412
125543
  const paused = hovered || focused;
125413
125544
  const interval = typeof props.autoplayIntervalMs === "number" && props.autoplayIntervalMs > 0 ? props.autoplayIntervalMs : 0;
125414
125545
  const autoplay = interval > 0 && count2 > 1 && !ctx.reduceMotion();
125415
125546
  const onChange = props.onChange;
125416
- const onChangeRef = React12.useRef(onChange);
125547
+ const onChangeRef = React13.useRef(onChange);
125417
125548
  onChangeRef.current = onChange;
125418
- const autoScrollRef = React12.useRef(null);
125419
- const endAutoScroll = React12.useCallback(() => {
125549
+ const autoScrollRef = React13.useRef(null);
125550
+ const endAutoScroll = React13.useCallback(() => {
125420
125551
  if (autoScrollRef.current) clearTimeout(autoScrollRef.current.timer);
125421
125552
  autoScrollRef.current = null;
125422
125553
  }, []);
125423
125554
  const requestedIndex = Math.max(0, Math.min(count2 - 1, typeof props.currentIndex === "number" ? props.currentIndex : 0));
125424
- React12.useEffect(() => {
125555
+ React13.useEffect(() => {
125425
125556
  endAutoScroll();
125426
125557
  indexRef.current = requestedIndex;
125427
125558
  setIndex(requestedIndex);
125428
125559
  if (trackRef.current) trackRef.current.scrollLeft = requestedIndex * trackRef.current.clientWidth;
125429
125560
  }, [requestedIndex, count2, endAutoScroll]);
125430
- React12.useEffect(() => {
125561
+ React13.useEffect(() => {
125431
125562
  const el2 = trackRef.current;
125432
125563
  el2?.addEventListener("scrollend", endAutoScroll);
125433
125564
  return () => {
@@ -125435,14 +125566,14 @@ var init_renderNode = __esm({
125435
125566
  endAutoScroll();
125436
125567
  };
125437
125568
  }, [endAutoScroll]);
125438
- const pageTo = React12.useCallback((page) => {
125569
+ const pageTo = React13.useCallback((page) => {
125439
125570
  if (page === indexRef.current) return;
125440
125571
  indexRef.current = page;
125441
125572
  setIndex(page);
125442
125573
  const action = onChangeRef.current;
125443
125574
  if (action && ctx.onAction) ctx.onAction({ ...action, args: { ...action.args ?? {}, index: page } });
125444
125575
  }, [ctx]);
125445
- React12.useEffect(() => {
125576
+ React13.useEffect(() => {
125446
125577
  if (!autoplay || paused) return;
125447
125578
  const id = setInterval(() => {
125448
125579
  const next = (indexRef.current + 1) % count2;
@@ -125461,6 +125592,7 @@ var init_renderNode = __esm({
125461
125592
  if (page === autoScrollRef.current.target) endAutoScroll();
125462
125593
  return;
125463
125594
  }
125595
+ scrolling(page);
125464
125596
  pageTo(page);
125465
125597
  };
125466
125598
  const onPointerOver = () => setHovered(true);
@@ -125499,7 +125631,7 @@ var init_renderNode = __esm({
125499
125631
  const next = event.key === "Home" ? 0 : event.key === "End" ? count2 - 1 : Math.max(0, Math.min(count2 - 1, indexRef.current + (event.key === "ArrowRight" ? 1 : -1)));
125500
125632
  if (trackRef.current) trackRef.current.scrollLeft = next * trackRef.current.clientWidth;
125501
125633
  pageTo(next);
125502
- }, style: { display: "flex", overflowX: "auto", scrollSnapType: "x mandatory", width: "100%" }, children: pages2.map((pg, i2) => /* @__PURE__ */ jsx11("div", { style: { minWidth: "100%", scrollSnapAlign: "start" }, children: renderNode(pg, ctx) }, pg?.id ?? i2)) }),
125634
+ }, style: { display: "flex", overflowX: "auto", scrollSnapType: "x mandatory", width: "100%" }, children: pages2.map((pg, i2) => /* @__PURE__ */ jsx11("div", { style: { minWidth: "100%", scrollSnapAlign: "start" }, children: /* @__PURE__ */ jsx11(LiveWindowPage, { page: pg, index: i2, count: count2, current: settled, liveWindow: props.liveWindow, ownerId: nodeId || "carousel", heights: pageHeights, ctx }) }, pg?.id ?? i2)) }),
125503
125635
  count2 > 1 && /* @__PURE__ */ jsx11("div", { "aria-label": `Page ${index + 1} of ${count2}`, style: { display: "flex", gap: 6, justifyContent: "center", marginTop: 10 }, children: pages2.map((_2, i2) => /* @__PURE__ */ jsx11("span", { "aria-current": i2 === index ? "true" : void 0, style: { width: i2 === index ? 18 : 7, height: 7, borderRadius: 999, background: i2 === index ? C2("accentPrimary", "#116DFF") : C2("border", "#ccc") } }, i2)) })
125504
125636
  ]
125505
125637
  }
@@ -125507,7 +125639,7 @@ var init_renderNode = __esm({
125507
125639
  });
125508
125640
  BannerNode = withExtras("BannerNode", ({ props, ctx, wrap }) => {
125509
125641
  const C2 = ctx.color;
125510
- const [dismissed, setDismissed] = React12.useState(false);
125642
+ const [dismissed, setDismissed] = React13.useState(false);
125511
125643
  if (dismissed) return null;
125512
125644
  const accent = sevColor(ctx, props.severity ?? "info");
125513
125645
  return /* @__PURE__ */ jsxs8("div", { style: { display: "flex", gap: 11, width: "100%", boxSizing: "border-box", borderRadius: ctx.radius("md", 10), padding: 13, background: `color-mix(in srgb, ${accent} 12%, ${C2("surfacePrimary", "#fff")})`, border: `1px solid color-mix(in srgb, ${accent} 32%, transparent)`, ...wrap }, children: [
@@ -125540,15 +125672,15 @@ var init_renderNode = __esm({
125540
125672
  const rawImageUrl = props.imageUrl != null && isBinding(props.imageUrl) ? boundImageUrl : props.imageUrl;
125541
125673
  const heroSrc = typeof rawImageUrl === "string" && rawImageUrl !== "" ? rawImageUrl : typeof props.imageAsset === "string" && isWebAssetPath(props.imageAsset) ? props.imageAsset : void 0;
125542
125674
  const resolvedHero = heroSrc ? resolveAssetUrl(heroSrc, ctx.assetBaseUrl) : void 0;
125543
- const [failedHero, setFailedHero] = React12.useState(null);
125675
+ const [failedHero, setFailedHero] = React13.useState(null);
125544
125676
  const imageUrl = resolvedHero && resolvedHero !== failedHero ? resolvedHero : void 0;
125545
125677
  const expanded = Math.max(0, typeof props.expandedHeight === "number" && Number.isFinite(props.expandedHeight) ? props.expandedHeight : 280);
125546
125678
  const collapsed = Math.max(0, Math.min(expanded, typeof props.collapsedHeight === "number" && props.collapsedHeight > 0 ? props.collapsedHeight : 64));
125547
125679
  const parallax = typeof props.parallaxFactor === "number" && Number.isFinite(props.parallaxFactor) ? Math.max(0, Math.min(1, props.parallaxFactor)) : 0.5;
125548
125680
  const span = Math.max(1, expanded - collapsed);
125549
- const rootRef = React12.useRef(null);
125550
- const [offset, setOffset] = React12.useState(0);
125551
- React12.useEffect(() => {
125681
+ const rootRef = React13.useRef(null);
125682
+ const [offset, setOffset] = React13.useState(0);
125683
+ React13.useEffect(() => {
125552
125684
  const el2 = rootRef.current;
125553
125685
  const win = el2?.ownerDocument?.defaultView;
125554
125686
  if (!el2 || !win) return;
@@ -125650,22 +125782,22 @@ var init_renderNode = __esm({
125650
125782
  const boundEnd = useResolvedScalar(props.selectedEndDatePath, ctx);
125651
125783
  const seedStart = (props.selectedStartDatePath != null ? typeof boundStart === "string" ? boundStart : "" : typeof props.selectedStartDate === "string" ? props.selectedStartDate : "") || "";
125652
125784
  const seedEnd = (props.selectedEndDatePath != null ? typeof boundEnd === "string" ? boundEnd : "" : typeof props.selectedEndDate === "string" ? props.selectedEndDate : "") || "";
125653
- const [range, setRange] = React12.useState({ start: seedStart, end: seedEnd });
125654
- const lastRangeSeed = React12.useRef(`${seedStart}|${seedEnd}`);
125655
- React12.useEffect(() => {
125785
+ const [range, setRange] = React13.useState({ start: seedStart, end: seedEnd });
125786
+ const lastRangeSeed = React13.useRef(`${seedStart}|${seedEnd}`);
125787
+ React13.useEffect(() => {
125656
125788
  const key3 = `${seedStart}|${seedEnd}`;
125657
125789
  if (lastRangeSeed.current === key3) return;
125658
125790
  lastRangeSeed.current = key3;
125659
125791
  setRange({ start: seedStart, end: seedEnd });
125660
125792
  }, [seedStart, seedEnd]);
125661
- const seed2 = React12.useMemo(
125793
+ const seed2 = React13.useMemo(
125662
125794
  () => monthSeed(drivenYear ?? props.year, drivenMonth ?? props.month, selectedDate),
125663
125795
  [drivenYear, drivenMonth, props.year, props.month, selectedDate]
125664
125796
  );
125665
- const [view, setView] = React12.useState(seed2);
125797
+ const [view, setView] = React13.useState(seed2);
125666
125798
  const seedKey = `${seed2.year}-${seed2.month}`;
125667
- const lastSeed = React12.useRef(seedKey);
125668
- React12.useEffect(() => {
125799
+ const lastSeed = React13.useRef(seedKey);
125800
+ React13.useEffect(() => {
125669
125801
  if (lastSeed.current === seedKey) return;
125670
125802
  lastSeed.current = seedKey;
125671
125803
  setView(seed2);
@@ -125675,18 +125807,18 @@ var init_renderNode = __esm({
125675
125807
  const boundMode = useResolvedScalar(props.displayModePath, ctx);
125676
125808
  const drivenMode = props.displayModePath != null && (boundMode === "week" || boundMode === "month") ? boundMode : void 0;
125677
125809
  const modeSeed = drivenMode ?? (props.displayMode === "week" ? "week" : "month");
125678
- const [mode, setMode] = React12.useState(modeSeed);
125679
- const lastModeSeed = React12.useRef(modeSeed);
125680
- React12.useEffect(() => {
125810
+ const [mode, setMode] = React13.useState(modeSeed);
125811
+ const lastModeSeed = React13.useRef(modeSeed);
125812
+ React13.useEffect(() => {
125681
125813
  if (lastModeSeed.current === modeSeed) return;
125682
125814
  lastModeSeed.current = modeSeed;
125683
125815
  setMode(modeSeed);
125684
125816
  }, [modeSeed]);
125685
125817
  const isWeek = mode === "week";
125686
125818
  const weekSeed = calWeekStart(selectedDate ?? localDayKey(/* @__PURE__ */ new Date()), firstWeekday);
125687
- const [weekStart, setWeekStart] = React12.useState(weekSeed);
125688
- const lastWeekSeed = React12.useRef(weekSeed);
125689
- React12.useEffect(() => {
125819
+ const [weekStart, setWeekStart] = React13.useState(weekSeed);
125820
+ const lastWeekSeed = React13.useRef(weekSeed);
125821
+ React13.useEffect(() => {
125690
125822
  if (lastWeekSeed.current === weekSeed) return;
125691
125823
  lastWeekSeed.current = weekSeed;
125692
125824
  setWeekStart(weekSeed);
@@ -125699,7 +125831,7 @@ var init_renderNode = __esm({
125699
125831
  return { date, day: parseLocalDate(date)?.getDate() ?? 0, inMonth: true, isToday: date === todayKey };
125700
125832
  })] : monthMatrix(year, month, firstWeekday);
125701
125833
  const heads = weekdayLabels(firstWeekday);
125702
- const gridRef = React12.useRef(null);
125834
+ const gridRef = React13.useRef(null);
125703
125835
  const titleMonth = isWeek ? calWeekTitleMonth(weekStart) : { year, month };
125704
125836
  const monthLabel = new Date(titleMonth.year, titleMonth.month - 1, 1).toLocaleDateString(void 0, { month: "long", year: "numeric" });
125705
125837
  const expandable = props.expandable === true;
@@ -125874,7 +126006,7 @@ var init_renderNode = __esm({
125874
126006
  const events = Array.isArray(rawEvents) ? rawEvents : [];
125875
126007
  const boundAnchor = useResolvedScalar(props.anchorDatePath, ctx);
125876
126008
  const anchorRaw = props.anchorDatePath != null ? boundAnchor : props.anchorDate;
125877
- const [pagedAnchor, setPagedAnchor] = React12.useState(null);
126009
+ const [pagedAnchor, setPagedAnchor] = React13.useState(null);
125878
126010
  const localAnchor = pagedAnchor && Object.is(pagedAnchor.raw, anchorRaw) && pagedAnchor.path === props.anchorDatePath && pagedAnchor.mode === props.mode && pagedAnchor.provider === ctx.provider ? pagedAnchor.date : null;
125879
126011
  if (pagedAnchor && !localAnchor) setPagedAnchor(null);
125880
126012
  const anchor = localAnchor ?? (typeof anchorRaw === "string" ? parseLocalDate(anchorRaw) : null) ?? /* @__PURE__ */ new Date();
@@ -126114,7 +126246,7 @@ var init_renderNode = __esm({
126114
126246
  const boundEvents = useResolvedScalar(props.eventsPath, ctx);
126115
126247
  const rawEvents = props.eventsPath != null ? boundEvents : props.events;
126116
126248
  const events = Array.isArray(rawEvents) ? rawEvents : [];
126117
- const groups = React12.useMemo(() => {
126249
+ const groups = React13.useMemo(() => {
126118
126250
  const buckets = /* @__PURE__ */ new Map();
126119
126251
  for (const ev of events) {
126120
126252
  if (!ev) continue;
@@ -126134,19 +126266,19 @@ var init_renderNode = __esm({
126134
126266
  const onSelect = (ev) => dispatchCalendarAction(ctx, ev?.onTap ?? props.onSelectEvent, { eventId: ev?.id });
126135
126267
  const boundScrollTo = useResolvedScalar(props.scrollToDatePath, ctx);
126136
126268
  const scrollTarget = props.scrollToDatePath != null ? typeof boundScrollTo === "string" ? boundScrollTo : void 0 : typeof props.scrollToDate === "string" ? props.scrollToDate : void 0;
126137
- const containerRef = React12.useRef(null);
126138
- const [visibleDays, setVisibleDays] = React12.useState(CAL_AGENDA_INITIAL_DAYS);
126269
+ const containerRef = React13.useRef(null);
126270
+ const [visibleDays, setVisibleDays] = React13.useState(CAL_AGENDA_INITIAL_DAYS);
126139
126271
  const targetIndex = scrollTarget ? groups.findIndex((g2) => g2.key === scrollTarget) : -1;
126140
126272
  const windowEnd = Math.max(visibleDays, targetIndex >= 0 ? targetIndex + 1 : 0);
126141
126273
  const shown2 = groups.length > windowEnd ? groups.slice(0, windowEnd) : groups;
126142
126274
  const hasMore = groups.length > shown2.length;
126143
- React12.useEffect(() => {
126275
+ React13.useEffect(() => {
126144
126276
  if (!scrollTarget) return;
126145
126277
  const block = groups[0]?.key === scrollTarget ? "nearest" : "start";
126146
126278
  containerRef.current?.querySelector(`[data-daygroup="${scrollTarget}"]`)?.scrollIntoView({ block });
126147
126279
  }, [scrollTarget, windowEnd]);
126148
- const sentinelRef = React12.useRef(null);
126149
- React12.useEffect(() => {
126280
+ const sentinelRef = React13.useRef(null);
126281
+ React13.useEffect(() => {
126150
126282
  if (!hasMore) return;
126151
126283
  const el2 = sentinelRef.current;
126152
126284
  if (!el2 || typeof IntersectionObserver === "undefined") return;
@@ -126263,26 +126395,26 @@ var init_renderNode = __esm({
126263
126395
  PRESENTED_SCOPE = '[aria-modal="true"], [role="dialog"], [role="alertdialog"], [role="menu"]';
126264
126396
  focusRoots = /* @__PURE__ */ new WeakMap();
126265
126397
  A11yHintDescription = ({ hint, idBase, children, ...forwarded }) => {
126266
- const descId = `${idBase ?? "hm"}__hint${React12.useId()}`;
126398
+ const descId = `${idBase ?? "hm"}__hint${React13.useId()}`;
126267
126399
  const own6 = children.props;
126268
126400
  const next = { ...forwarded };
126269
126401
  if (forwarded.style) next.style = { ...own6.style ?? {}, ...forwarded.style };
126270
126402
  const ids = [own6["aria-describedby"], forwarded["aria-describedby"], descId].flatMap((v2) => v2 ? String(v2).split(/\s+/) : []).filter(Boolean);
126271
126403
  next["aria-describedby"] = Array.from(new Set(ids)).join(" ");
126272
126404
  return /* @__PURE__ */ jsxs8(Fragment4, { children: [
126273
- React12.cloneElement(children, next),
126405
+ React13.cloneElement(children, next),
126274
126406
  /* @__PURE__ */ jsx11("span", { id: descId, hidden: true, "data-hm-a11y-hint": "", children: hint })
126275
126407
  ] });
126276
126408
  };
126277
126409
  reportedUnknownComponents = /* @__PURE__ */ new Set();
126278
126410
  UnknownComponentNode = ({ pkg, type, props, ctx, wrap, ...extras }) => {
126279
126411
  const hasTelemetry = !!ctx.emitTelemetry;
126280
- React12.useEffect(() => {
126412
+ React13.useEffect(() => {
126281
126413
  reportUnknownComponent(ctx, pkg, type);
126282
126414
  }, [ctx.appId, ctx.screenId, hasTelemetry, pkg, type]);
126283
126415
  const { style: extraStyle, children: extraChildren, ...attrs } = extras;
126284
126416
  const nodeProps = (entries) => entries.filter(([, v2]) => isNodeLike(v2) || Array.isArray(v2) && v2.some(isNodeLike));
126285
- const renderProps = (entries) => entries.map(([k2, v2]) => /* @__PURE__ */ jsx11(React12.Fragment, { children: Array.isArray(v2) ? kids2(v2.filter(isNodeLike), ctx) : renderNode(v2, ctx) }, k2));
126417
+ const renderProps = (entries) => entries.map(([k2, v2]) => /* @__PURE__ */ jsx11(React13.Fragment, { children: Array.isArray(v2) ? kids2(v2.filter(isNodeLike), ctx) : renderNode(v2, ctx) }, k2));
126286
126418
  const childKeys = nodeProps(Object.entries(props ?? {}));
126287
126419
  if (!unknownComponentShowsDeveloperLabel(ctx)) {
126288
126420
  const contentKeys = childKeys.filter(([k2]) => k2 === "child" || k2 === "children");
@@ -126306,7 +126438,7 @@ var init_renderNode = __esm({
126306
126438
  });
126307
126439
 
126308
126440
  // ../../core/web-renderer/src/renderToHtml.tsx
126309
- import React13 from "react";
126441
+ import React14 from "react";
126310
126442
  import { renderToStaticMarkup } from "react-dom/server";
126311
126443
  function renderDescriptorToHtml(payload, tokens2, scheme = "light", provider = null, width, chrome, opts) {
126312
126444
  const rtl = opts?.isRTL === true;
@@ -126326,7 +126458,7 @@ function renderDescriptorToHtml(payload, tokens2, scheme = "light", provider = n
126326
126458
  const withRenderStyles = (markup) => {
126327
126459
  if (!markup) return markup;
126328
126460
  if (!glassPreview) return FOCUS_STYLE_MARKUP + markup;
126329
- const scoped = renderToStaticMarkup(React13.createElement(
126461
+ const scoped = renderToStaticMarkup(React14.createElement(
126330
126462
  "div",
126331
126463
  {
126332
126464
  className: "himi-ios-glass-preview",
@@ -126343,18 +126475,18 @@ function renderDescriptorToHtml(payload, tokens2, scheme = "light", provider = n
126343
126475
  const dir = rtl ? { dir: "rtl" } : {};
126344
126476
  if (header || footer) {
126345
126477
  return withRenderStyles(renderToStaticMarkup(
126346
- React13.createElement(
126478
+ React14.createElement(
126347
126479
  "div",
126348
126480
  // F-22 — same footer pin as ScreenHost: a full-height flex column + margin-top:auto
126349
126481
  // keeps the footer at the bottom edge even when the payload is short.
126350
126482
  { "data-testid": "screen-host", ...dir, ...footer ? { style: { display: "flex", flexDirection: "column", minHeight: "100%", flexGrow: 1 } } : {} },
126351
- header ? React13.createElement(
126483
+ header ? React14.createElement(
126352
126484
  "div",
126353
126485
  { "data-testid": "sticky-header", style: { position: "sticky", top: 0, zIndex: 10 } },
126354
126486
  renderNode(header, ctx)
126355
126487
  ) : null,
126356
126488
  renderNode(payload, ctx),
126357
- footer ? React13.createElement(
126489
+ footer ? React14.createElement(
126358
126490
  "div",
126359
126491
  { "data-testid": "sticky-footer", style: { position: "sticky", bottom: 0, zIndex: 10, marginTop: "auto" } },
126360
126492
  renderNode(footer, ctx)
@@ -126364,11 +126496,11 @@ function renderDescriptorToHtml(payload, tokens2, scheme = "light", provider = n
126364
126496
  }
126365
126497
  if (rtl) {
126366
126498
  return withRenderStyles(renderToStaticMarkup(
126367
- React13.createElement("div", dir, renderNode(payload, ctx))
126499
+ React14.createElement("div", dir, renderNode(payload, ctx))
126368
126500
  ));
126369
126501
  }
126370
126502
  return withRenderStyles(renderToStaticMarkup(
126371
- React13.createElement(React13.Fragment, null, renderNode(payload, ctx))
126503
+ React14.createElement(React14.Fragment, null, renderNode(payload, ctx))
126372
126504
  ));
126373
126505
  }
126374
126506
  var init_renderToHtml = __esm({
@@ -150275,7 +150407,7 @@ function keepFromSpec(dir, specPath) {
150275
150407
  function droppedPrimaryTaps(dropped, primaryIds = /* @__PURE__ */ new Set()) {
150276
150408
  const out2 = /* @__PURE__ */ new Map();
150277
150409
  for (const d2 of dropped) {
150278
- if (!primaryIds.has(d2.node) && !/\/primary$|[._](?:primary|cta)(?:[._]|$)/i.test(d2.node)) continue;
150410
+ if (!primaryIds.has(d2.node) && !/\/(?:primary|book)$|[._](?:primary|cta)(?:[._]|$)/i.test(d2.node)) continue;
150279
150411
  const k2 = `${d2.screen}\u2192${d2.to}`;
150280
150412
  const cur = out2.get(k2) ?? { screen: d2.screen, to: d2.to, taps: 0 };
150281
150413
  cur.taps++;
@@ -153886,7 +154018,7 @@ function tokenColorIssues(dir, tokensPathOverride) {
153886
154018
  );
153887
154019
  }
153888
154020
  const base = contrastFindings(colors);
153889
- for (const f2 of base) warn3(`${tokensPath}: ${f2.render(f2.schemes)}`);
154021
+ for (const f2 of base) (f2.invisible ? error : warn3)(`${tokensPath}: ${f2.render(f2.schemes)}`);
153890
154022
  if (idiom !== null && typeof idiom === "object" && !Array.isArray(idiom)) {
153891
154023
  const seen = new Set(base.flatMap((f2) => f2.schemes.map((s2) => `${f2.key}|${s2}`)));
153892
154024
  for (const [overlay, layer] of Object.entries(idiom)) {
@@ -153895,7 +154027,7 @@ function tokenColorIssues(dir, tokensPathOverride) {
153895
154027
  const merged = mergeIdiomOverlay({ colors }, { colors: layerColors }).colors;
153896
154028
  for (const f2 of contrastFindings(merged)) {
153897
154029
  const added = f2.schemes.filter((s2) => !seen.has(`${f2.key}|${s2}`));
153898
- if (added.length) warn3(`${tokensPath}: under the idiom.${overlay} overlay, ${f2.render(added)}`);
154030
+ if (added.length) (f2.invisible ? error : warn3)(`${tokensPath}: under the idiom.${overlay} overlay, ${f2.render(added)}`);
153899
154031
  }
153900
154032
  }
153901
154033
  }
@@ -153957,11 +154089,15 @@ function contrastFindings(colors) {
153957
154089
  findings.set(key3, {
153958
154090
  key: key3,
153959
154091
  schemes: [scheme],
154092
+ // Body text the page makes invisible is an error too (#4999): the same no-degraded-mode case
154093
+ // as invisible card text, and the card pass defers to this row when page and card match.
154094
+ invisible: fgName === "textPrimary" && ratio < INVISIBLE_TEXT,
153960
154095
  render: (schemes) => `colors.${fgName} (${fg}) on colors.${pair.bg} (${bg}) is ${ratio.toFixed(2)}:1 in ${schemes.join(" / ")} \u2014 below the WCAG AA ${AA_TEXT}:1 for text. ${fgName} is ${pair.use}, so that text is hard to read.${fix}`
153961
154096
  });
153962
154097
  }
153963
154098
  }
153964
154099
  accentOnSurfaces(colors, declared, findings);
154100
+ textOnCardSurfaces(colors, declared, findings);
153965
154101
  return [...findings.values()];
153966
154102
  }
153967
154103
  function sameHueClearingAll(fg, bgs, target = AA_TEXT) {
@@ -153975,6 +154111,45 @@ function sameHueClearingAll(fg, bgs, target = AA_TEXT) {
153975
154111
  }
153976
154112
  return void 0;
153977
154113
  }
154114
+ function textOnCardSurfaces(colors, declared, findings) {
154115
+ const fgName = "textPrimary";
154116
+ if (colors[fgName] === void 0) return;
154117
+ for (const surface of CARD_TEXT_SURFACES) {
154118
+ if (colors[surface] === void 0) continue;
154119
+ for (const scheme of SCHEMES) {
154120
+ if (!declared.has(scheme)) continue;
154121
+ const fg = schemeValue(colors[fgName], scheme);
154122
+ const bg = schemeValue(colors[surface], scheme);
154123
+ if (!fg || !bg) continue;
154124
+ const painted2 = paintedOver(fg, bg);
154125
+ if (!painted2) continue;
154126
+ const pageRaw = schemeValue(colors.surfacePrimary, scheme);
154127
+ const page = pageRaw && paintedOver(fg, pageRaw) ? pageRaw.slice(0, 7) : void 0;
154128
+ const opaqueBg = bg.slice(0, 7);
154129
+ if (page === opaqueBg) continue;
154130
+ const ratio = contrastRatio3(painted2, opaqueBg);
154131
+ if (ratio >= AA_TEXT) continue;
154132
+ if (ratio >= INVISIBLE_TEXT && page && contrastRatio3(paintedOver(fg, pageRaw), page) < AA_TEXT) continue;
154133
+ const key3 = `${fgName}|${surface}|${fg}|${bg}|${page ?? ""}`;
154134
+ const same3 = findings.get(key3);
154135
+ if (same3) {
154136
+ same3.schemes.push(scheme);
154137
+ continue;
154138
+ }
154139
+ const opposite = page !== void 0 && onLightSide(page) !== onLightSide(opaqueBg);
154140
+ const noSingle = page !== void 0 && opposite && contrastRatio3(page, opaqueBg) < AA_TEXT * AA_TEXT;
154141
+ const suggestion = noSingle ? void 0 : sameHueClearingAll(painted2, page ? [page, opaqueBg] : [opaqueBg]);
154142
+ const restructure = ` Move ${surface} to the page's side of mid-grey (a ${page && onLightSide(page) ? "light" : "dark"} ${surface} on this page), or scope the card's text colour with \`modifiers.theme\` (e.g. { "colors": { "textPrimary": "#RRGGBB" } } on the card).`;
154143
+ const fix = noSingle ? ` surfacePrimary (${page}) and ${surface} (${opaqueBg}) sit on opposite sides of mid-grey, so no single textPrimary can clear ${AA_TEXT}:1 on both.${restructure}` : suggestion ? ` A ${fgName} that clears it${page ? " and the page" : ""} is ${suggestion} (${contrastRatio3(suggestion, opaqueBg).toFixed(2)}:1 on ${surface}).` + (opposite ? restructure : "") : ` No ${fgName} of this hue clears ${AA_TEXT}:1 on ${surface}${page ? " and the page" : ""}.` + (opposite ? restructure : "");
154144
+ findings.set(key3, {
154145
+ key: key3,
154146
+ schemes: [scheme],
154147
+ invisible: ratio < INVISIBLE_TEXT,
154148
+ render: (schemes) => `colors.${fgName} (${fg}) on colors.${surface} (${bg}) is ${ratio.toFixed(2)}:1 in ${schemes.join(" / ")} \u2014 below the WCAG AA ${AA_TEXT}:1 for text. ${fgName} is body and title text, and cards, sheets and list rows paint their titles and labels on ${surface}, not the page, so that text is hard to read or invisible.${fix}`
154149
+ });
154150
+ }
154151
+ }
154152
+ }
153978
154153
  function accentOnSurfaces(colors, declared, findings) {
153979
154154
  const hasAccentText = colors.accentText !== void 0;
153980
154155
  for (const fgName of hasAccentText ? ["accentText", "accentPrimary"] : ["accentPrimary"]) {
@@ -154020,7 +154195,7 @@ function accentOnSurfacesFor(fgName, role, colors, declared, findings) {
154020
154195
  }
154021
154196
  }
154022
154197
  }
154023
- var INTEGER_TOKEN_FIELDS, INTEGER_TOKEN_MAPS, AA_TEXT, CONTRAST_PAIRS, SCHEMES, channels, toHex2, mixHex, onLightSide;
154198
+ var INTEGER_TOKEN_FIELDS, INTEGER_TOKEN_MAPS, AA_TEXT, INVISIBLE_TEXT, CONTRAST_PAIRS, SCHEMES, channels, toHex2, mixHex, onLightSide, CARD_TEXT_SURFACES;
154024
154199
  var init_token_lint = __esm({
154025
154200
  "src/token-lint.ts"() {
154026
154201
  init_token_colors();
@@ -154033,6 +154208,7 @@ var init_token_lint = __esm({
154033
154208
  ];
154034
154209
  INTEGER_TOKEN_MAPS = ["spacing", "radius"];
154035
154210
  AA_TEXT = 4.5;
154211
+ INVISIBLE_TEXT = 1.5;
154036
154212
  CONTRAST_PAIRS = [
154037
154213
  {
154038
154214
  fg: "accentPrimary",
@@ -154053,6 +154229,7 @@ var init_token_lint = __esm({
154053
154229
  return toHex2(ca2.map((c2, i2) => c2 * w2 + cb[i2] * (1 - w2)));
154054
154230
  };
154055
154231
  onLightSide = (hex2) => contrastRatio3("#000000", hex2) >= contrastRatio3("#FFFFFF", hex2);
154232
+ CARD_TEXT_SURFACES = ["surfaceSecondary", "surfaceElevated"];
154056
154233
  }
154057
154234
  });
154058
154235
 
@@ -168801,37 +168978,38 @@ var init_preview_assets_generated = __esm({
168801
168978
  "../../packages/serve/src/preview-assets.generated.ts"() {
168802
168979
  init_preview_assets_format();
168803
168980
  PREVIEW_ASSET_MANIFEST = [
168804
- { key: "assets/DashboardHost-D0AIh2Fi.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 2916, sha256: "eca2f8260addf4ead475e304f4bdb9aa3a5655aa9b9042a0107c73d3c5d8147f" },
168805
- { key: "assets/DevDrawer-Sm3GT4me.js", contentType: "application/javascript; charset=utf-8", offset: 2924, length: 16744, sha256: "1764380f2536a2da8715514073c657a2e7c1bcb8f299e5e8e273acae3bdc3164" },
168806
- { key: "assets/IdiomCompare-d9cqrgVi.js", contentType: "application/javascript; charset=utf-8", offset: 19668, length: 1892, sha256: "ea482691eaa9cda3d3239568d177e9332b94a0a59e9e9e5d269d059fe07ddd58" },
168807
- { key: "assets/LightboxViewer-NWgAZkvo.js", contentType: "application/javascript; charset=utf-8", offset: 21560, length: 8132, sha256: "21f6c5678752b22d095626e89c039bf1ab1cf566e9b0a880ddc7c64de2635f6a" },
168808
- { key: "assets/PhonePreviewControl-DmWDJR7y.js", contentType: "application/javascript; charset=utf-8", offset: 29692, length: 37729, sha256: "c528ff6a6503b5cecddcb95d98e7b10e71b38718513a992c95c3e61aac178c9a" },
168809
- { key: "assets/SchemeCompare-DAe05rjM.js", contentType: "application/javascript; charset=utf-8", offset: 67421, length: 1824, sha256: "ed47f5a463367279abfa343aaabb348b2cf419a48072a265442f84ba585976da" },
168981
+ { key: "assets/DashboardHost-Bj846Us1.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 2916, sha256: "61f8fe74e7af4453425d4411e2b921b21ab50b65996da2324914f89ab331a00c" },
168982
+ { key: "assets/DevDrawer-BBFrX7mE.js", contentType: "application/javascript; charset=utf-8", offset: 2924, length: 16744, sha256: "739e732189369e9aecb1e2a42ba1a0c9aaf9be2fd9e52c92824962b4fb353176" },
168983
+ { key: "assets/IdiomCompare-SWzYZw-S.js", contentType: "application/javascript; charset=utf-8", offset: 19668, length: 1892, sha256: "1a666b1ef64e3abe2cf09e623d6d2b0154dda215cb9a8c4ae86e1953d2c001d6" },
168984
+ { key: "assets/LightboxViewer-DdAzf3s1.js", contentType: "application/javascript; charset=utf-8", offset: 21560, length: 8132, sha256: "44a1d49fcb99f920a21093cb8257ee221270e03c957b53da9422a16026c227f0" },
168985
+ { key: "assets/PhonePreviewControl-CkfYkUzf.js", contentType: "application/javascript; charset=utf-8", offset: 29692, length: 37729, sha256: "371c24a92955a2d083bfd0e63781635bf86a44df2a8107c2f2cc98f39ffbd4ac" },
168986
+ { key: "assets/SchemeCompare-DxFs6E3A.js", contentType: "application/javascript; charset=utf-8", offset: 67421, length: 1824, sha256: "9a15cc50a91a5263de0a1fc21bd8192404714e18fe92c7e67b37399db93fc841" },
168810
168987
  { key: "assets/glassPreviewBrowser-Bt5ZFmG4.js", contentType: "application/javascript; charset=utf-8", offset: 69245, length: 342, sha256: "20d73f97d38f6d9a0b79e68e24954cd6bbfe66833a6e6aecae00a9102e64cab3" },
168811
- { key: "assets/index-DZLNpgeb.js", contentType: "application/javascript; charset=utf-8", offset: 69587, length: 1337208, sha256: "89aa5fffddb672994a2a13f4a209b5694ff41f2055b01d9d5837829682b7be6f" },
168812
- { key: "assets/pdf-DkBJdVwB.js", contentType: "application/javascript; charset=utf-8", offset: 1406795, length: 488199, sha256: "8d77ca7222c2580c60a06abe6c78163894a40593fae3a071e664a3a05110dbec" },
168813
- { key: "assets/pdf.worker.min-BQa_JDET.js", contentType: "application/javascript; charset=utf-8", offset: 1894994, length: 73, sha256: "41bcfda4f3c8c0a81c785ea87c69afc8e7d0ed8c333324aee94c273d881bb6aa" },
168814
- { key: "assets/pdf.worker.min-BmVo14Nb.mjs", contentType: "application/javascript; charset=utf-8", offset: 1895067, length: 1317034, sha256: "a33cfe728c584fdba4fcc1fd54bcdc2f9f2f13889ddbb5b2bd1d0f8cbe49b84e" },
168815
- { key: "assets/pdfDocument-DKE-Ra33.js", contentType: "application/javascript; charset=utf-8", offset: 3212101, length: 3379, sha256: "675e5f6d7a6d04607c86b32573e1d28aa126a049f6df26e39d407a9cb3059fc9" },
168816
- { key: "assets/pdfFetch-Cc8i1I1h.js", contentType: "application/javascript; charset=utf-8", offset: 3215480, length: 2266, sha256: "1d21ad008921942217c9eac0c35b1713773b9d89c71e3ab4412781f7bb88f463" },
168817
- { key: "assets/webviewBridgeHost-Tij-rBHM.js", contentType: "application/javascript; charset=utf-8", offset: 3217746, length: 9781, sha256: "9ac08d6b6839d3927c9cd364e53a5b01992e534bf77247568e24b18b3e4d2bb7" },
168818
- { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 3227527, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
168819
- { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 3232137, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
168820
- { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 3720721, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
168821
- { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 3811645, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
168822
- { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 3902629, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
168823
- { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 3993609, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
168824
- { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 4084481, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
168825
- { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 4175461, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
168826
- { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 4284097, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
168827
- { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 4393181, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
168828
- { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 4502229, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
168829
- { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 4609929, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
168830
- { key: "himi-sw.js", contentType: "application/javascript; charset=utf-8", offset: 4698037, length: 6748, sha256: "4a92459977d7cefa1a6a7e020c3a63509737f083b3f2773557c1a5771665811a" },
168831
- { key: "index.html", contentType: "text/html; charset=utf-8", offset: 4704785, length: 4947, sha256: "ce6250b8f09a5c349489f0db1b7410dbac5627087c11b4dddc7958fbde5641db" },
168832
- { key: "ios-glass-preview.css", contentType: "text/css; charset=utf-8", offset: 4709732, length: 7193, sha256: "a482f4796147c2a3893942e10ab225bd3b6f749f7125fe0330680d4c20ea0212" },
168833
- { key: "ios-glass-preview.svg", contentType: "image/svg+xml", offset: 4716925, length: 423, sha256: "b9cd5989d31464a0422f260a332af6be5add0b04de2148944de35158f3b75efc" },
168834
- { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 4717348, length: 18778, sha256: "ba734d58c88281c71c01d9a2842a991d06f3ed91bf03449427ef11c7f6d1605d" }
168988
+ { key: "assets/index-D_QfkdYs.js", contentType: "application/javascript; charset=utf-8", offset: 69587, length: 1342829, sha256: "618f576acd30abe2aa40ceefdf01c25b8d88440739faa1dd07c8dccdc018768b" },
168989
+ { key: "assets/pdf-DmANontw.js", contentType: "application/javascript; charset=utf-8", offset: 1412416, length: 488199, sha256: "314d2fd0775446940489d7703961fdbf86ec60e44cbfec2ee01b43f6e7efac8c" },
168990
+ { key: "assets/pdf.worker.min-BQa_JDET.js", contentType: "application/javascript; charset=utf-8", offset: 1900615, length: 73, sha256: "41bcfda4f3c8c0a81c785ea87c69afc8e7d0ed8c333324aee94c273d881bb6aa" },
168991
+ { key: "assets/pdf.worker.min-BmVo14Nb.mjs", contentType: "application/javascript; charset=utf-8", offset: 1900688, length: 1317034, sha256: "a33cfe728c584fdba4fcc1fd54bcdc2f9f2f13889ddbb5b2bd1d0f8cbe49b84e" },
168992
+ { key: "assets/pdfDocument-CYAYFEwo.js", contentType: "application/javascript; charset=utf-8", offset: 3217722, length: 3379, sha256: "7bd09b21cb023744a610fa54d3fc4bed725809a44d99d61424ca58bc42afd571" },
168993
+ { key: "assets/pdfFetch-Cc8i1I1h.js", contentType: "application/javascript; charset=utf-8", offset: 3221101, length: 2266, sha256: "1d21ad008921942217c9eac0c35b1713773b9d89c71e3ab4412781f7bb88f463" },
168994
+ { key: "assets/webviewBridgeHost-IKhmRiMP.js", contentType: "application/javascript; charset=utf-8", offset: 3223367, length: 9849, sha256: "b747782404d1e8888300cae837498e755a09b8acda41a257731ea094784989dd" },
168995
+ { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 3233216, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
168996
+ { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 3237826, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
168997
+ { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 3726410, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
168998
+ { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 3817334, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
168999
+ { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 3908318, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
169000
+ { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 3999298, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
169001
+ { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 4090170, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
169002
+ { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 4181150, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
169003
+ { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 4289786, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
169004
+ { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 4398870, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
169005
+ { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 4507918, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
169006
+ { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 4615618, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
169007
+ { key: "himi-sw.js", contentType: "application/javascript; charset=utf-8", offset: 4703726, length: 6748, sha256: "4a92459977d7cefa1a6a7e020c3a63509737f083b3f2773557c1a5771665811a" },
169008
+ { key: "index.html", contentType: "text/html; charset=utf-8", offset: 4710474, length: 4947, sha256: "f330d81ec1135e52fe917c6766b457e187e536147b59359f35e1dae94a77f026" },
169009
+ { key: "ios-glass-preview.css", contentType: "text/css; charset=utf-8", offset: 4715421, length: 7193, sha256: "a482f4796147c2a3893942e10ab225bd3b6f749f7125fe0330680d4c20ea0212" },
169010
+ { key: "ios-glass-preview.svg", contentType: "image/svg+xml", offset: 4722614, length: 423, sha256: "b9cd5989d31464a0422f260a332af6be5add0b04de2148944de35158f3b75efc" },
169011
+ { key: "kit-tab-bar.css", contentType: "text/css; charset=utf-8", offset: 4723037, length: 1171, sha256: "9e2c3a0faaf05d5471badf167a4d3bdf1c4e6dd65c432eea6d254158bfd99585" },
169012
+ { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 4724208, length: 18778, sha256: "ba734d58c88281c71c01d9a2842a991d06f3ed91bf03449427ef11c7f6d1605d" }
168835
169013
  ];
168836
169014
  }
168837
169015
  });
@@ -200650,6 +200828,53 @@ async function createCms(opts) {
200650
200828
  }
200651
200829
  return report3;
200652
200830
  }
200831
+ var SEED_BATCH_SIZE = 100;
200832
+ var SEED_BATCH_BYTES = 2e6;
200833
+ function seedBatches(rows) {
200834
+ const batches = [];
200835
+ let current = { start: 0, rows: [] };
200836
+ let bytes2 = 0;
200837
+ rows.forEach((row2, i2) => {
200838
+ const size = Buffer.byteLength(JSON.stringify({ data: row2 }), "utf8");
200839
+ if (current.rows.length && (current.rows.length >= SEED_BATCH_SIZE || bytes2 + size > SEED_BATCH_BYTES)) {
200840
+ batches.push(current);
200841
+ current = { start: i2, rows: [] };
200842
+ bytes2 = 0;
200843
+ }
200844
+ current.rows.push(row2);
200845
+ bytes2 += size;
200846
+ });
200847
+ if (current.rows.length) batches.push(current);
200848
+ return batches;
200849
+ }
200850
+ function readBulkInsert(answer, size) {
200851
+ const res = answer ?? {};
200852
+ const state = Array.from({ length: size }, () => "unknown");
200853
+ const rejected = [];
200854
+ (Array.isArray(res.results) ? res.results : []).forEach((result, position) => {
200855
+ const meta = result?.itemMetadata;
200856
+ const index = meta?.originalIndex ?? position;
200857
+ if (!Number.isInteger(index) || index < 0 || index >= size || state[index] !== "unknown") return;
200858
+ if (meta?.success === false || meta?.success !== true && meta?.error != null) {
200859
+ state[index] = "rejected";
200860
+ rejected.push({ index, code: meta.error?.code, reason: meta.error?.description ?? meta.error?.code ?? "Wix rejected this row without saying why" });
200861
+ } else if (meta?.success === true) {
200862
+ state[index] = "landed";
200863
+ }
200864
+ });
200865
+ const totals = res.bulkActionMetadata;
200866
+ if (!state.includes("landed") && !state.includes("rejected") && totals?.totalSuccesses === size && !totals.totalFailures) {
200867
+ state.fill("landed");
200868
+ }
200869
+ return {
200870
+ landed: state.filter((s2) => s2 === "landed").length,
200871
+ rejected,
200872
+ unconfirmed: state.flatMap((s2, i2) => s2 === "unknown" ? [i2] : [])
200873
+ };
200874
+ }
200875
+ function requestWasRefused(err) {
200876
+ return err instanceof WixApiError && err.status >= 400 && err.status < 500 && err.status !== 408;
200877
+ }
200653
200878
  async function seedCms(opts) {
200654
200879
  const { app, cms, call, dryRun = false, force = false, only, dir } = opts;
200655
200880
  const prefix = namespacePrefix(app);
@@ -200696,6 +200921,7 @@ async function seedCms(opts) {
200696
200921
  report3.skipped.push({ collection: id, reason: `already has ${count2} items \u2014 seeding an already-populated collection needs --force so real content is never buried under sample rows` });
200697
200922
  continue;
200698
200923
  }
200924
+ let inserted = rows.length;
200699
200925
  if (!dryRun) {
200700
200926
  const declaredKeys = new Set(spec.fields.map((f2) => f2.key));
200701
200927
  const clean2 = rows.map((row2) => {
@@ -200710,18 +200936,59 @@ async function seedCms(opts) {
200710
200936
  reason: `ignored undeclared key(s) in seed rows: ${droppedKeys.join(", ")} \u2014 only declared fields are written (a row cannot set system keys such as _id or _owner)`
200711
200937
  });
200712
200938
  }
200713
- await mapLimit(
200714
- clean2,
200715
- 4,
200716
- (row2, i2) => (
200717
- // Sent EXACTLY ONCE. An insert carries no idempotency key, so retrying a request
200718
- // that landed but whose response was lost silently duplicates the row — and a
200719
- // duplicate is worse than a reported failure the author can re-run deliberately.
200720
- call("POST", "/wix-data/v2/items", { dataCollectionId: id, dataItem: { data: row2 } })
200721
- )
200722
- );
200939
+ let landed = 0;
200940
+ const addFailure = (failure2) => {
200941
+ (report3.failed ??= []).push(failure2);
200942
+ report3.code = "seed_rows_failed";
200943
+ report3.ok = false;
200944
+ };
200945
+ for (const { start, rows: batch } of seedBatches(clean2)) {
200946
+ let answer;
200947
+ try {
200948
+ answer = await call("POST", "/wix-data/v2/bulk/items/insert", {
200949
+ dataCollectionId: id,
200950
+ dataItems: batch.map((data) => ({ data }))
200951
+ });
200952
+ } catch (e2) {
200953
+ addFailure({
200954
+ collection: id,
200955
+ rows: batch.map((_2, i2) => start + i2),
200956
+ outcome: requestWasRefused(e2) ? "rejected" : "unconfirmed",
200957
+ reason: e2 instanceof Error ? e2.message : String(e2)
200958
+ });
200959
+ const rest = clean2.slice(start + batch.length).map((_2, i2) => start + batch.length + i2);
200960
+ if (rest.length) {
200961
+ addFailure({ collection: id, rows: rest, outcome: "not-sent", reason: "not attempted: the request before them failed" });
200962
+ }
200963
+ report3.inserted[id] = landed;
200964
+ report3.sources[id] = source;
200965
+ report3.code = "seed_request_failed";
200966
+ throw Object.assign(e2 instanceof Error ? e2 : new Error(String(e2)), { partial: report3 });
200967
+ }
200968
+ const read = readBulkInsert(answer, batch.length);
200969
+ landed += read.landed;
200970
+ const byReason = /* @__PURE__ */ new Map();
200971
+ for (const r3 of read.rejected) {
200972
+ const key3 = `${r3.code ?? ""}\0${r3.reason}`;
200973
+ const group = byReason.get(key3) ?? { code: r3.code, reason: r3.reason, rows: [] };
200974
+ group.rows.push(start + r3.index);
200975
+ byReason.set(key3, group);
200976
+ }
200977
+ for (const group of byReason.values()) {
200978
+ addFailure({ collection: id, rows: group.rows, outcome: "rejected", ...group.code ? { code: group.code } : {}, reason: group.reason });
200979
+ }
200980
+ if (read.unconfirmed.length) {
200981
+ addFailure({
200982
+ collection: id,
200983
+ rows: read.unconfirmed.map((i2) => start + i2),
200984
+ outcome: "unconfirmed",
200985
+ reason: "Wix answered without a result for these rows, so they are not assumed written"
200986
+ });
200987
+ }
200988
+ }
200989
+ inserted = landed;
200723
200990
  }
200724
- report3.inserted[id] = rows.length;
200991
+ report3.inserted[id] = inserted;
200725
200992
  report3.sources[id] = source;
200726
200993
  }
200727
200994
  if (considered === 0) {
@@ -201036,6 +201303,18 @@ async function notifyCommand(ctx) {
201036
201303
  // src/commands/cms.ts
201037
201304
  init_wix_owner();
201038
201305
  init_cli_shared();
201306
+ function runFailureEnvelope(sub, e2, app, site) {
201307
+ const partial = e2.partial;
201308
+ const seedRequestFailed = sub === "seed" && partial?.code === "seed_request_failed";
201309
+ return {
201310
+ ...seedRequestFailed ? { ok: false, code: "seed_request_failed" } : {},
201311
+ error: e2.message,
201312
+ app,
201313
+ site,
201314
+ ...partial ? { partial } : {},
201315
+ hint: "the run stopped part-way; `himi cms query --site <msid>` shows the site's actual state before you re-run"
201316
+ };
201317
+ }
201039
201318
  async function cmsCommand(ctx) {
201040
201319
  const { io: io2, pos, flags, print } = ctx;
201041
201320
  const sub = pos[1];
@@ -201097,14 +201376,7 @@ async function cmsCommand(ctx) {
201097
201376
  try {
201098
201377
  report3 = sub === "query" ? await queryCms({ ...common, all: flags.all === true }) : sub === "create" ? await createCms({ ...common, dryRun: flags["dry-run"] === true, allowDestructive: flags["allow-destructive"] === true, applyPermissions: flags["apply-permissions"] === true }) : await seedCms({ ...common, dir, dryRun: flags["dry-run"] === true, force: flags.force === true, only: str3(flags.only) });
201099
201378
  } catch (e2) {
201100
- const partial = e2.partial;
201101
- io2.error(JSON.stringify({
201102
- error: e2.message,
201103
- app,
201104
- site,
201105
- ...partial ? { partial } : {},
201106
- hint: "the run stopped part-way; `himi cms query --site <msid>` shows the site's actual state before you re-run"
201107
- }));
201379
+ io2.error(JSON.stringify(runFailureEnvelope(sub, e2, app, site)));
201108
201380
  return 1;
201109
201381
  }
201110
201382
  print({ ...report3, site });