@wix/himalaya-cli 0.1582.0 → 0.1583.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 (50) hide show
  1. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/dev-server/src/builder.d.ts +8 -0
  2. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/schema.d.ts +26 -2
  3. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/validator.d.ts +18 -0
  4. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/core.mjs +5 -1
  5. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/sdui.mjs +5 -1
  6. package/dist/cli.mjs +888 -553
  7. package/dist/preview-assets.generated.bin +0 -0
  8. package/guides/component-reference.json +4 -3
  9. package/guides/component-reference.md +24 -2
  10. package/package.json +2 -2
  11. package/templates/beauty-salon/config.ts +20 -1
  12. package/templates/beauty-salon/dev/index.ts +1751 -629
  13. package/templates/beauty-salon/tier5-src/_shared/booking-location.ts +147 -0
  14. package/templates/beauty-salon/tier5-src/_shared/booking-session.ts +222 -0
  15. package/templates/beauty-salon/tier5-src/himi-booking-service/index.ts +277 -14
  16. package/templates/beauty-salon/tier5-src/himi-booking-services/index.ts +351 -92
  17. package/templates/beauty-salon/tier5-src/himi-booking-time/index.ts +25 -5
  18. package/templates/beauty-salon/tier5-src/himi-branded-lite-agenda/index.ts +219 -220
  19. package/templates/branded-lite/config.ts +20 -1
  20. package/templates/branded-lite/dev/index.ts +1688 -566
  21. package/templates/branded-lite/l10n/en.json +2 -2
  22. package/templates/branded-lite/tier5-src/_shared/booking-location.ts +147 -0
  23. package/templates/branded-lite/tier5-src/_shared/booking-session.ts +222 -0
  24. package/templates/branded-lite/tier5-src/himi-booking-service/index.ts +277 -14
  25. package/templates/branded-lite/tier5-src/himi-booking-services/index.ts +351 -92
  26. package/templates/branded-lite/tier5-src/himi-booking-time/index.ts +25 -5
  27. package/templates/branded-lite/tier5-src/himi-branded-lite-agenda/index.ts +219 -220
  28. package/templates/community-club/config.ts +20 -1
  29. package/templates/events-meetups/config.ts +20 -1
  30. package/templates/gym-fitness/config.ts +20 -1
  31. package/templates/gym-fitness/dev/index.ts +1751 -629
  32. package/templates/gym-fitness/tier5-src/_shared/booking-location.ts +147 -0
  33. package/templates/gym-fitness/tier5-src/_shared/booking-session.ts +222 -0
  34. package/templates/gym-fitness/tier5-src/himi-booking-service/index.ts +277 -14
  35. package/templates/gym-fitness/tier5-src/himi-booking-services/index.ts +351 -92
  36. package/templates/gym-fitness/tier5-src/himi-booking-time/index.ts +25 -5
  37. package/templates/gym-fitness/tier5-src/himi-branded-lite-agenda/index.ts +219 -220
  38. package/templates/nonprofit-cause/config.ts +20 -1
  39. package/templates/podcast-creator/config.ts +20 -1
  40. package/templates/portfolio-creative/config.ts +20 -1
  41. package/templates/restaurant/config.ts +20 -1
  42. package/templates/retail-store/config.ts +20 -1
  43. package/templates/yoga-studio/config.ts +20 -1
  44. package/templates/yoga-studio/dev/index.ts +1533 -411
  45. package/templates/yoga-studio/tier5-src/_shared/booking-location.ts +147 -0
  46. package/templates/yoga-studio/tier5-src/_shared/booking-session.ts +222 -0
  47. package/templates/yoga-studio/tier5-src/himi-booking-service/index.ts +277 -14
  48. package/templates/yoga-studio/tier5-src/himi-booking-services/index.ts +351 -92
  49. package/templates/yoga-studio/tier5-src/himi-booking-time/index.ts +25 -5
  50. package/templates/yoga-studio/tier5-src/himi-branded-lite-agenda/index.ts +219 -220
package/dist/cli.mjs CHANGED
@@ -38,8 +38,8 @@ var init_define_HHP_CATALOG = __esm({
38
38
  "<define:__HHP_CATALOG__>"() {
39
39
  define_HHP_CATALOG_default = {
40
40
  encoding: "gzip-base64",
41
- sha256: "efe44f077dc1dba3a6411b425bc3989d65cb62ba92b117484b6763a424ce6e03",
42
- data: "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"
41
+ sha256: "6fc19ad4171f77686de1a420ad97eb1e9bb8dcdc7a7217edf498a3cb8baf4ff0",
42
+ data: "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"
43
43
  };
44
44
  }
45
45
  });
@@ -13377,7 +13377,11 @@ var init_validator = __esm({
13377
13377
  label: { type: "string" },
13378
13378
  accessibilityLabel: { type: "string" },
13379
13379
  onTap: { $ref: "#/$defs/action" },
13380
- badge: { $ref: "#/$defs/navBadge" }
13380
+ badge: { $ref: "#/$defs/navBadge" },
13381
+ // RFC 0010 slot bindings (core.proto TopBarAction 7–9): they bind the app's nav worker.
13382
+ hiddenPath: { type: "string" },
13383
+ labelPath: { type: "string" },
13384
+ iconPath: { type: "string" }
13381
13385
  }
13382
13386
  },
13383
13387
  navBadge: {
@@ -14832,7 +14836,6 @@ function webViewOriginAllowed(url, origins) {
14832
14836
  }
14833
14837
  var init_webview_origin = __esm({
14834
14838
  "../../core/ts/src/webview-origin.ts"() {
14835
- "use strict";
14836
14839
  init_define_HHP_CATALOG();
14837
14840
  }
14838
14841
  });
@@ -16646,6 +16649,7 @@ function collectServiceBindings(descriptor) {
16646
16649
  const ownCollapse = node.collapseWhenEmpty === true;
16647
16650
  for (const [k2, v2] of Object.entries(node)) {
16648
16651
  if (at2 === "" && k2 === "input" && v2 !== null && typeof v2 === "object") continue;
16652
+ if (/^topBar\.actions\[\d+\]$/.test(at2) && (k2 === "hiddenPath" || k2 === "labelPath" || k2 === "iconPath")) continue;
16649
16653
  visit(v2, at2 ? `${at2}.${k2}` : k2, ownCollapse && typeof v2 === "string");
16650
16654
  }
16651
16655
  }
@@ -18687,6 +18691,7 @@ var init_validate_descriptor_core = __esm({
18687
18691
  events: "array",
18688
18692
  eventsPath: "string",
18689
18693
  onSelectEvent: "any",
18694
+ onVisibleDateChange: "any",
18690
18695
  scrollToDate: "string",
18691
18696
  scrollToDatePath: "string",
18692
18697
  stickyHeaders: "boolean"
@@ -18964,9 +18969,11 @@ var init_validate_descriptor_core = __esm({
18964
18969
  items: "array",
18965
18970
  itemsPath: "string",
18966
18971
  onPullToRefresh: "any",
18972
+ onTopItemChange: "any",
18967
18973
  pagination: "any",
18968
18974
  reverseLayout: "boolean",
18969
18975
  rowSwipeActions: "any",
18976
+ scrollToItemPath: "string",
18970
18977
  spacing: "number",
18971
18978
  staggerMs: "number",
18972
18979
  stickyHeader: "any"
@@ -19517,7 +19524,7 @@ var init_validate_descriptor_core = __esm({
19517
19524
  transcriptScroll: "TranscriptScroll"
19518
19525
  };
19519
19526
  NATIVE_NESTED_PROPS = {
19520
- Agenda: { events: "list:CalendarEvent", onSelectEvent: "Action" },
19527
+ Agenda: { events: "list:CalendarEvent", onSelectEvent: "Action", onVisibleDateChange: "Action" },
19521
19528
  AlertDialog: { confirmAction: "Action", cancelAction: "Action" },
19522
19529
  AvatarStrip: { onTap: "Action" },
19523
19530
  Banner: { action: "Action" },
@@ -19536,7 +19543,7 @@ var init_validate_descriptor_core = __esm({
19536
19543
  Form: { onSubmit: "Action" },
19537
19544
  FragmentSlot: { cases: "list:FragmentSlotCase" },
19538
19545
  Grid: { onPullToRefresh: "Action", pagination: "Pagination" },
19539
- LazyList: { onPullToRefresh: "Action", pagination: "Pagination", rowSwipeActions: "SwipeActionSet" },
19546
+ LazyList: { onPullToRefresh: "Action", onTopItemChange: "Action", pagination: "Pagination", rowSwipeActions: "SwipeActionSet" },
19540
19547
  ListItem: { onTap: "Action" },
19541
19548
  Map: {
19542
19549
  markers: "list:MapMarker",
@@ -22215,7 +22222,7 @@ var init_player_host_manifest = __esm({
22215
22222
  "../../apps/himi-player/player-host-manifest.ts"() {
22216
22223
  init_define_HHP_CATALOG();
22217
22224
  PLAYER_HOST_MANIFEST = {
22218
- "version": "1.7.0",
22225
+ "version": "1.8.0",
22219
22226
  "capabilities": [
22220
22227
  "animation",
22221
22228
  "app_info",
@@ -36431,7 +36438,7 @@ function sameJson(a2, b2) {
36431
36438
  }
36432
36439
  return true;
36433
36440
  }
36434
- var resolveScalarStatic, Bound, BOUND_LIST_WINDOW_START, BOUND_LIST_WINDOW_STEP, BoundListWindowContext, WindowGrowth, PageCycle, PageCycleContext, cursorString, BoundList, readsService, BoundRow;
36441
+ var resolveScalarStatic, Bound, BOUND_LIST_WINDOW_START, BOUND_LIST_WINDOW_STEP, BoundListWindowContext, RevealRowContext, WindowGrowth, PageCycle, PageCycleContext, cursorString, BoundList, ROW_SHELL_STYLE, readsService, BoundRow;
36435
36442
  var init_bindings2 = __esm({
36436
36443
  "../../core/web-renderer/src/bindings.tsx"() {
36437
36444
  "use strict";
@@ -36456,6 +36463,7 @@ var init_bindings2 = __esm({
36456
36463
  BOUND_LIST_WINDOW_START = 30;
36457
36464
  BOUND_LIST_WINDOW_STEP = 30;
36458
36465
  BoundListWindowContext = React4.createContext(true);
36466
+ RevealRowContext = React4.createContext(void 0);
36459
36467
  WindowGrowth = ({ onNear, style }) => {
36460
36468
  const ref = React4.useRef(null);
36461
36469
  React4.useEffect(() => {
@@ -36530,7 +36538,7 @@ var init_bindings2 = __esm({
36530
36538
  };
36531
36539
  PageCycleContext = React4.createContext(null);
36532
36540
  cursorString = (v2) => typeof v2 === "string" ? v2 : "";
36533
- BoundList = ({ ctx, itemsPath, template, renderRow, windowed = false, wrapRows, footer, rowSize = 1, markerStyle, pageCursor }) => {
36541
+ BoundList = ({ ctx, itemsPath, template, renderRow, windowed = false, wrapRows, footer, rowSize = 1, markerStyle, pageCursor, tagRows = false }) => {
36534
36542
  const local = itemsPath.startsWith("$item.");
36535
36543
  const bound2 = useBoundValue(ctx, local ? "" : itemsPath);
36536
36544
  const arr2 = local ? ctx.itemScope?.[itemsPath.slice("$item.".length)] : bound2;
@@ -36541,16 +36549,26 @@ var init_bindings2 = __esm({
36541
36549
  useEveryRowForFindAndPrint(on4, () => setSize(Number.POSITIVE_INFINITY));
36542
36550
  const pages2 = usePageCycle(ctx, pageCursor);
36543
36551
  const per = Math.max(1, Math.floor(rowSize));
36544
- const count2 = on4 ? Math.min(Math.ceil(size / per) * per, items.length) : items.length;
36552
+ const revealId = React4.useContext(RevealRowContext);
36553
+ const revealAt = on4 && tagRows && revealId ? items.findIndex((item) => item?.id === revealId) : -1;
36554
+ React4.useEffect(() => {
36555
+ if (revealAt >= 0) setSize((n2) => Math.max(n2, revealAt + 1));
36556
+ }, [revealAt]);
36557
+ const count2 = on4 ? Math.min(Math.max(Math.ceil(size / per) * per, revealAt + 1), items.length) : items.length;
36545
36558
  const rows = items.slice(0, count2).map((item, i2) => {
36546
- const key3 = item?.id ?? i2;
36547
- return /* @__PURE__ */ jsx3(BoundRow, { ctx, template, item, index: i2, renderRow }, String(key3));
36559
+ const id = item?.id;
36560
+ const key3 = String(id ?? i2);
36561
+ if (tagRows && typeof id === "string" && id) {
36562
+ return /* @__PURE__ */ jsx3("div", { "data-himalaya-row-id": id, style: ROW_SHELL_STYLE, children: /* @__PURE__ */ jsx3(BoundRow, { ctx, template, item, index: i2, renderRow }) }, key3);
36563
+ }
36564
+ return /* @__PURE__ */ jsx3(BoundRow, { ctx, template, item, index: i2, renderRow }, key3);
36548
36565
  });
36549
36566
  return /* @__PURE__ */ jsxs2(Fragment, { children: [
36550
36567
  wrapRows ? wrapRows(rows) : rows,
36551
36568
  count2 < items.length ? /* @__PURE__ */ jsx3(WindowGrowth, { style: markerStyle, onNear: () => setSize((n2) => Math.max(n2, count2) + BOUND_LIST_WINDOW_STEP) }, count2) : footer && pageCursor !== void 0 ? /* @__PURE__ */ jsx3(PageCycleContext.Provider, { value: pages2, children: footer }) : footer ?? null
36552
36569
  ] });
36553
36570
  };
36571
+ ROW_SHELL_STYLE = { display: "contents" };
36554
36572
  readsService = /* @__PURE__ */ new WeakMap();
36555
36573
  BoundRow = React4.memo(
36556
36574
  ({ ctx, template, item, index, renderRow }) => {
@@ -36562,6 +36580,238 @@ var init_bindings2 = __esm({
36562
36580
  }
36563
36581
  });
36564
36582
 
36583
+ // ../../core/web-renderer/src/scrollAnchors.ts
36584
+ import React5 from "react";
36585
+ function topAnchorId(anchors, tolerance = TOP_ANCHOR_TOLERANCE_PX) {
36586
+ let picked = anchors[0]?.id ?? null;
36587
+ for (const a2 of anchors) if (a2.top <= tolerance) picked = a2.id;
36588
+ return picked;
36589
+ }
36590
+ function anchorRowId(value2) {
36591
+ if (typeof value2 !== "string") return null;
36592
+ return value2.split("|", 1)[0] || null;
36593
+ }
36594
+ function boxOf(el2) {
36595
+ const view = el2.ownerDocument.defaultView;
36596
+ let node = el2;
36597
+ while (node && view?.getComputedStyle(node).display === "contents") node = node.firstElementChild;
36598
+ return node && view?.getComputedStyle(node).display === "none" ? null : node;
36599
+ }
36600
+ function screenScale(el2, axis) {
36601
+ const r3 = el2.getBoundingClientRect();
36602
+ const drawn = axis === "y" ? r3.height : r3.width;
36603
+ const laidOut = axis === "y" ? el2.offsetHeight : el2.offsetWidth;
36604
+ return drawn > 0 && laidOut > 0 ? drawn / laidOut : 1;
36605
+ }
36606
+ function scrollChain(el2) {
36607
+ const doc = el2.ownerDocument;
36608
+ const view = doc.defaultView;
36609
+ const page = doc.scrollingElement;
36610
+ const chain = [];
36611
+ for (let node = el2.parentElement; node && view; node = node.parentElement) {
36612
+ if (node === page) break;
36613
+ if (/(auto|scroll|overlay)/.test(view.getComputedStyle(node).overflowY) && node.scrollHeight > node.clientHeight) chain.push(node);
36614
+ }
36615
+ if (page && page.scrollHeight > page.clientHeight) chain.push(page);
36616
+ return chain;
36617
+ }
36618
+ function visibleArea(el2) {
36619
+ const doc = el2.ownerDocument;
36620
+ const view = doc.defaultView;
36621
+ const chain = scrollChain(el2);
36622
+ const scale = chain[0] ? screenScale(chain[0], "y") : 1;
36623
+ const boxes = chain.filter((s2) => s2 !== doc.scrollingElement);
36624
+ const outer = boxes[boxes.length - 1] ?? null;
36625
+ let top = 0;
36626
+ let edge = 0;
36627
+ for (const s2 of boxes) {
36628
+ top = s2.getBoundingClientRect().top + s2.clientTop * screenScale(s2, "y");
36629
+ edge = Math.max(edge, top);
36630
+ }
36631
+ for (let node = el2; node && node !== outer; node = node.parentElement) {
36632
+ for (let sib = node.previousElementSibling; sib; sib = sib.previousElementSibling) {
36633
+ const style = view?.getComputedStyle(sib);
36634
+ if (style?.position !== "sticky" || style.top === "auto") continue;
36635
+ const r3 = sib.getBoundingClientRect();
36636
+ if (r3.height > 0 && r3.top <= edge + TOP_ANCHOR_TOLERANCE_PX * scale) edge = Math.max(edge, r3.bottom);
36637
+ }
36638
+ }
36639
+ return { chain, top, edge, scale };
36640
+ }
36641
+ function coveredTopInset(el2) {
36642
+ const { top, edge, scale } = visibleArea(el2);
36643
+ return Math.max(0, (edge - top) / scale);
36644
+ }
36645
+ function reachesVisibleTop(el2) {
36646
+ const box = boxOf(el2);
36647
+ if (!box) return false;
36648
+ const { edge, scale } = visibleArea(box);
36649
+ return (box.getBoundingClientRect().top - edge) / scale <= TOP_ANCHOR_TOLERANCE_PX;
36650
+ }
36651
+ function readTopAnchor(anchors) {
36652
+ const boxed = [];
36653
+ for (const a2 of anchors) {
36654
+ const box = boxOf(a2.el);
36655
+ if (box) boxed.push({ id: a2.id, box });
36656
+ }
36657
+ if (!boxed.length) return null;
36658
+ const { edge, scale } = visibleArea(boxed[0].box);
36659
+ return topAnchorId(boxed.map((b2) => ({ id: b2.id, top: (b2.box.getBoundingClientRect().top - edge) / scale })));
36660
+ }
36661
+ function scrollAnchorToTop(el2, instant) {
36662
+ const box = boxOf(el2);
36663
+ if (!box) return 0;
36664
+ const { chain, edge } = visibleArea(box);
36665
+ let rest = box.getBoundingClientRect().top - edge;
36666
+ const moves = [];
36667
+ for (const target of chain) {
36668
+ const scale = screenScale(target, "y");
36669
+ const from = target.scrollTop;
36670
+ const max = target.scrollHeight - target.clientHeight;
36671
+ const to2 = max <= SCROLL_SLACK_PX ? 0 : Math.max(0, Math.min(from + rest / scale, max));
36672
+ moves.push({ target, axis: "top", from, to: to2 });
36673
+ rest -= (to2 - from) * scale;
36674
+ }
36675
+ return easeScroll(moves, instant);
36676
+ }
36677
+ function revealInRow(el2, row2, instant) {
36678
+ const scale = screenScale(row2, "x");
36679
+ const left = row2.getBoundingClientRect().left + row2.clientLeft * scale;
36680
+ const right = left + row2.clientWidth * scale;
36681
+ const r3 = el2.getBoundingClientRect();
36682
+ const delta = r3.left < left ? r3.left - left : r3.right > right ? r3.right - right : 0;
36683
+ return easeScroll([{ target: row2, axis: "left", from: row2.scrollLeft, to: row2.scrollLeft + delta / scale }], instant);
36684
+ }
36685
+ function easeScroll(all, instant) {
36686
+ for (const m2 of all) tweens.get(m2.target)?.();
36687
+ const moves = all.filter((m2) => Math.abs(m2.to - m2.from) >= 1);
36688
+ const view = moves[0]?.target.ownerDocument.defaultView;
36689
+ if (!view) return 0;
36690
+ const set = (m2, v2) => {
36691
+ if (typeof m2.target.scrollTo === "function") m2.target.scrollTo(m2.axis === "top" ? { top: v2, behavior: "instant" } : { left: v2, behavior: "instant" });
36692
+ else if (m2.axis === "top") m2.target.scrollTop = v2;
36693
+ else m2.target.scrollLeft = v2;
36694
+ };
36695
+ if (instant || typeof view.requestAnimationFrame !== "function") {
36696
+ for (const m2 of moves) set(m2, m2.to);
36697
+ return 0;
36698
+ }
36699
+ let start = -1;
36700
+ let frame = 0;
36701
+ const stop = () => {
36702
+ view.cancelAnimationFrame(frame);
36703
+ for (const m2 of moves) tweens.delete(m2.target);
36704
+ for (const type of INTERRUPTS) view.removeEventListener(type, stop, true);
36705
+ };
36706
+ const step = (now) => {
36707
+ if (start < 0) start = now;
36708
+ const t2 = Math.min(1, (now - start) / ANCHOR_JUMP_MS);
36709
+ const eased = t2 < 0.5 ? 4 * t2 * t2 * t2 : 1 - Math.pow(-2 * t2 + 2, 3) / 2;
36710
+ for (const m2 of moves) set(m2, m2.from + (m2.to - m2.from) * eased);
36711
+ if (t2 < 1) frame = view.requestAnimationFrame(step);
36712
+ else stop();
36713
+ };
36714
+ for (const type of INTERRUPTS) view.addEventListener(type, stop, { capture: true, passive: true });
36715
+ for (const m2 of moves) tweens.set(m2.target, stop);
36716
+ frame = view.requestAnimationFrame(step);
36717
+ return ANCHOR_JUMP_MS;
36718
+ }
36719
+ function useTopAnchorReport(root, anchors, report3, content) {
36720
+ const live3 = React5.useRef({ anchors, report: report3 });
36721
+ live3.current = { anchors, report: report3 };
36722
+ const tracker = React5.useRef(null);
36723
+ if (!tracker.current) {
36724
+ tracker.current = new TopAnchorTracker(
36725
+ () => readTopAnchor(live3.current.anchors?.() ?? []),
36726
+ (id) => live3.current.report(id)
36727
+ );
36728
+ }
36729
+ const t2 = tracker.current;
36730
+ const on4 = anchors != null;
36731
+ React5.useEffect(() => {
36732
+ if (on4) t2.baseline();
36733
+ }, [on4, content, t2]);
36734
+ React5.useEffect(() => {
36735
+ if (!on4 || typeof document === "undefined") return;
36736
+ const onScroll = (e2) => {
36737
+ const el2 = root.current;
36738
+ const scrolledNode = e2.target;
36739
+ if (el2 && scrolledNode && typeof scrolledNode.contains === "function" && scrolledNode.contains(el2)) t2.scrolled();
36740
+ };
36741
+ document.addEventListener("scroll", onScroll, { capture: true, passive: true });
36742
+ return () => {
36743
+ document.removeEventListener("scroll", onScroll, { capture: true });
36744
+ t2.dispose();
36745
+ };
36746
+ }, [on4, t2, root]);
36747
+ return React5.useCallback((ms2) => {
36748
+ if (live3.current.anchors) t2.jump(ms2);
36749
+ }, [t2]);
36750
+ }
36751
+ var TOP_ANCHOR_TOLERANCE_PX, TOP_ANCHOR_SETTLE_MS, TOP_ANCHOR_JUMP_GRACE_MS, ANCHOR_JUMP_MS, SCROLL_SLACK_PX, tweens, INTERRUPTS, TopAnchorTracker;
36752
+ var init_scrollAnchors = __esm({
36753
+ "../../core/web-renderer/src/scrollAnchors.ts"() {
36754
+ init_define_HHP_CATALOG();
36755
+ TOP_ANCHOR_TOLERANCE_PX = 8;
36756
+ TOP_ANCHOR_SETTLE_MS = 150;
36757
+ TOP_ANCHOR_JUMP_GRACE_MS = 150;
36758
+ ANCHOR_JUMP_MS = 250;
36759
+ SCROLL_SLACK_PX = 16;
36760
+ tweens = /* @__PURE__ */ new WeakMap();
36761
+ INTERRUPTS = ["wheel", "touchstart", "pointerdown", "keydown"];
36762
+ TopAnchorTracker = class {
36763
+ constructor(read, report3) {
36764
+ this.read = read;
36765
+ this.report = report3;
36766
+ }
36767
+ last = null;
36768
+ timer;
36769
+ quietUntil = 0;
36770
+ jumped = false;
36771
+ /** The content changed: take where the reader now is as known, unless a scroll is still settling. */
36772
+ baseline() {
36773
+ if (this.timer === void 0) this.last = this.read();
36774
+ }
36775
+ /** The reader's scroller moved. */
36776
+ scrolled() {
36777
+ this.arm(TOP_ANCHOR_SETTLE_MS);
36778
+ }
36779
+ /** A programmatic jump starts, running [ms]. */
36780
+ jump(ms2) {
36781
+ this.jumped = true;
36782
+ this.quietUntil = Date.now() + ms2 + TOP_ANCHOR_JUMP_GRACE_MS;
36783
+ this.arm(ms2 + TOP_ANCHOR_JUMP_GRACE_MS);
36784
+ }
36785
+ dispose() {
36786
+ clearTimeout(this.timer);
36787
+ this.timer = void 0;
36788
+ }
36789
+ arm(ms2) {
36790
+ clearTimeout(this.timer);
36791
+ this.timer = setTimeout(() => this.settle(), ms2);
36792
+ }
36793
+ settle() {
36794
+ this.timer = void 0;
36795
+ const wait = this.quietUntil - Date.now();
36796
+ if (wait > 0) {
36797
+ this.arm(wait);
36798
+ return;
36799
+ }
36800
+ const value2 = this.read();
36801
+ if (this.jumped) {
36802
+ this.jumped = false;
36803
+ this.last = value2;
36804
+ return;
36805
+ }
36806
+ if (value2 != null && value2 !== this.last) {
36807
+ this.last = value2;
36808
+ this.report(value2);
36809
+ }
36810
+ }
36811
+ };
36812
+ }
36813
+ });
36814
+
36565
36815
  // ../../core/web-renderer/src/snackbarTiming.ts
36566
36816
  function snackbarAutoHideMs(durationMs) {
36567
36817
  const ms2 = typeof durationMs === "number" && Number.isFinite(durationMs) ? durationMs : SNACKBAR_DEFAULT_DURATION_MS;
@@ -36583,7 +36833,7 @@ var init_snackbarTiming = __esm({
36583
36833
  });
36584
36834
 
36585
36835
  // ../../core/web-renderer/src/formBag.ts
36586
- import React5 from "react";
36836
+ import React6 from "react";
36587
36837
  function hasContributed(bag, fieldId) {
36588
36838
  return Object.prototype.hasOwnProperty.call(bag.values, fieldId);
36589
36839
  }
@@ -36700,7 +36950,7 @@ var init_formBag = __esm({
36700
36950
  init_validation();
36701
36951
  validity = /* @__PURE__ */ new WeakMap();
36702
36952
  formValidityProbe = { validations: 0 };
36703
- FormValuesContext = React5.createContext(null);
36953
+ FormValuesContext = React6.createContext(null);
36704
36954
  }
36705
36955
  });
36706
36956
 
@@ -36921,7 +37171,7 @@ var init_actionParams = __esm({
36921
37171
  });
36922
37172
 
36923
37173
  // ../../core/web-renderer/src/workerTapBusy.ts
36924
- import React6, { useEffect as useEffect3, useRef, useState as useState3 } from "react";
37174
+ import React7, { useEffect as useEffect3, useRef, useState as useState3 } from "react";
36925
37175
  function tracksWorkerTap(action) {
36926
37176
  if (!action || typeof action !== "object") return false;
36927
37177
  const a2 = action;
@@ -36954,7 +37204,7 @@ function WorkerTapGate({ gate, action, children, ...forwarded }) {
36954
37204
  const next = { ...forwarded };
36955
37205
  if (forwarded.style || busy) next.style = { ...own6 ?? {}, ...forwarded.style ?? {}, ...busy ? { opacity: 0.5 } : {} };
36956
37206
  if (busy) next["aria-disabled"] = "true";
36957
- return React6.cloneElement(children, next);
37207
+ return React7.cloneElement(children, next);
36958
37208
  }
36959
37209
  var WORKER_TAP_DELAY_MS, WORKER_TAP_CAP_MS, listeners, WorkerTap;
36960
37210
  var init_workerTapBusy = __esm({
@@ -37303,10 +37553,10 @@ var init_pickerField = __esm({
37303
37553
  });
37304
37554
 
37305
37555
  // ../../core/web-renderer/src/symbolEffects.ts
37306
- import React7 from "react";
37556
+ import React8 from "react";
37307
37557
  function useSymbolEffect(effect, reduceMotion) {
37308
- const [, changed] = React7.useReducer((value2) => value2 + 1, 0);
37309
- React7.useEffect(() => {
37558
+ const [, changed] = React8.useReducer((value2) => value2 + 1, 0);
37559
+ React8.useEffect(() => {
37310
37560
  if (typeof window === "undefined" || typeof window.matchMedia !== "function") return;
37311
37561
  const query = window.matchMedia("(prefers-reduced-motion: reduce)");
37312
37562
  const listener = () => changed();
@@ -37314,7 +37564,7 @@ function useSymbolEffect(effect, reduceMotion) {
37314
37564
  return () => query.removeEventListener("change", listener);
37315
37565
  }, []);
37316
37566
  const supported = !reduceMotion() && (effect === "bounce" || effect === "pulse") ? effect : void 0;
37317
- React7.useEffect(() => {
37567
+ React8.useEffect(() => {
37318
37568
  if (!supported || typeof document === "undefined" || document.getElementById("himalaya-symbol-effects")) return;
37319
37569
  const style = document.createElement("style");
37320
37570
  style.id = "himalaya-symbol-effects";
@@ -38000,7 +38250,7 @@ var init_host_toolbar = __esm({
38000
38250
  });
38001
38251
 
38002
38252
  // ../../core/web-renderer/src/richContentEditor.tsx
38003
- import React8 from "react";
38253
+ import React9 from "react";
38004
38254
  import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
38005
38255
  function effectiveTools(tools, uploadService) {
38006
38256
  return ricosEffectiveTools(tools, typeof uploadService === "string" && uploadService !== "");
@@ -38015,32 +38265,32 @@ function RichContentEditorView({ props, ctx, wrap, nodeId, renderChild, ...dom }
38015
38265
  const id = String(nodeId ?? dom["data-component-id"] ?? "rich_content_editor");
38016
38266
  const C2 = ctx.color;
38017
38267
  const name = typeof props.name === "string" && props.name ? props.name : void 0;
38018
- const bag = React8.useContext(FormValuesContext);
38268
+ const bag = React9.useContext(FormValuesContext);
38019
38269
  const live3 = !!ctx.onAction;
38020
38270
  const toolsKey = JSON.stringify(props.tools ?? null);
38021
- const tools = React8.useMemo(() => effectiveTools(props.tools, props.uploadService), [toolsKey, props.uploadService]);
38271
+ const tools = React9.useMemo(() => effectiveTools(props.tools, props.uploadService), [toolsKey, props.uploadService]);
38022
38272
  const seedMode = typeof props.documentJson === "string" ? "literal" : typeof props.documentPath === "string" && props.documentPath ? "binding" : "none";
38023
38273
  const boundSeed = useBoundValue(ctx, seedMode === "binding" ? props.documentPath : "");
38024
38274
  const fill = props.fillAvailable === true;
38025
38275
  const minHeight = typeof props.minHeight === "number" && props.minHeight >= 0 ? props.minHeight : 240;
38026
38276
  const placeholder3 = typeof props.placeholder === "string" ? props.placeholder : "";
38027
- const onChangeRef = React8.useRef(props.onChange);
38277
+ const onChangeRef = React9.useRef(props.onChange);
38028
38278
  onChangeRef.current = props.onChange;
38029
- const bagRef = React8.useRef(bag);
38279
+ const bagRef = React9.useRef(bag);
38030
38280
  bagRef.current = bag;
38031
- const nameRef = React8.useRef(name);
38281
+ const nameRef = React9.useRef(name);
38032
38282
  nameRef.current = name;
38033
- const [status, setStatus] = React8.useState("loading");
38034
- const [toolbar, setToolbar] = React8.useState(EMPTY_TOOLBAR);
38035
- const [focused, setFocused] = React8.useState(false);
38036
- const [src, setSrc] = React8.useState(null);
38037
- const [link, setLink] = React8.useState(null);
38038
- const [uploadError, setUploadError] = React8.useState(false);
38039
- const [, repaint] = React8.useReducer((n2) => n2 + 1, 0);
38040
- const iframeRef = React8.useRef(null);
38041
- const fileRef = React8.useRef(null);
38042
- const sessionRef = React8.useRef(null);
38043
- React8.useEffect(() => {
38283
+ const [status, setStatus] = React9.useState("loading");
38284
+ const [toolbar, setToolbar] = React9.useState(EMPTY_TOOLBAR);
38285
+ const [focused, setFocused] = React9.useState(false);
38286
+ const [src, setSrc] = React9.useState(null);
38287
+ const [link, setLink] = React9.useState(null);
38288
+ const [uploadError, setUploadError] = React9.useState(false);
38289
+ const [, repaint] = React9.useReducer((n2) => n2 + 1, 0);
38290
+ const iframeRef = React9.useRef(null);
38291
+ const fileRef = React9.useRef(null);
38292
+ const sessionRef = React9.useRef(null);
38293
+ React9.useEffect(() => {
38044
38294
  if (!bag || !name) return;
38045
38295
  bag.register(name, void 0);
38046
38296
  const current = sessionRef.current?.currentContent();
@@ -38056,12 +38306,12 @@ function RichContentEditorView({ props, ctx, wrap, nodeId, renderChild, ...dom }
38056
38306
  if (!act || !ctx.onAction) return;
38057
38307
  ctx.onAction({ ...act, args: { ...act.args ?? {}, dirty: "true" } });
38058
38308
  };
38059
- const fireOnChangeRef = React8.useRef(fireOnChange);
38309
+ const fireOnChangeRef = React9.useRef(fireOnChange);
38060
38310
  fireOnChangeRef.current = fireOnChange;
38061
- React8.useEffect(() => {
38311
+ React9.useEffect(() => {
38062
38312
  if (live3) setSrc(new URL(ENGINE_PAGE_PATH, document.baseURI).toString());
38063
38313
  }, [live3]);
38064
- React8.useEffect(() => {
38314
+ React9.useEffect(() => {
38065
38315
  const frame = iframeRef.current;
38066
38316
  if (!live3 || !src || !frame) return;
38067
38317
  const t2 = ricosEditorWebTimings;
@@ -38109,13 +38359,13 @@ function RichContentEditorView({ props, ctx, wrap, nodeId, renderChild, ...dom }
38109
38359
  sessionRef.current = null;
38110
38360
  };
38111
38361
  }, [live3, src]);
38112
- React8.useEffect(() => {
38362
+ React9.useEffect(() => {
38113
38363
  sessionRef.current?.updateLocale(ctx.localeTag ?? "en", ctx.isRTL ?? document.documentElement.dir === "rtl");
38114
38364
  }, [ctx.localeTag, ctx.isRTL]);
38115
- React8.useEffect(() => {
38365
+ React9.useEffect(() => {
38116
38366
  sessionRef.current?.setSeed(seedMode === "literal" ? props.documentJson : seedMode === "binding" ? boundSeed : "");
38117
38367
  }, [seedMode, props.documentJson, boundSeed, src]);
38118
- React8.useEffect(() => {
38368
+ React9.useEffect(() => {
38119
38369
  const vv = typeof window !== "undefined" ? window.visualViewport : null;
38120
38370
  if (!vv || !focused) return;
38121
38371
  vv.addEventListener("resize", repaint);
@@ -38625,21 +38875,21 @@ var init_radioGroups = __esm({
38625
38875
  });
38626
38876
 
38627
38877
  // ../../core/web-renderer/src/a11y/radioGroupScope.tsx
38628
- import React9 from "react";
38878
+ import React10 from "react";
38629
38879
  var scope, RadioGroupScope, useRadioGroups;
38630
38880
  var init_radioGroupScope = __esm({
38631
38881
  "../../core/web-renderer/src/a11y/radioGroupScope.tsx"() {
38632
38882
  "use strict";
38633
38883
  init_define_HHP_CATALOG();
38634
38884
  init_radioGroups();
38635
- scope = React9.createContext(radioGroups);
38885
+ scope = React10.createContext(radioGroups);
38636
38886
  RadioGroupScope = scope.Provider;
38637
- useRadioGroups = () => React9.useContext(scope);
38887
+ useRadioGroups = () => React10.useContext(scope);
38638
38888
  }
38639
38889
  });
38640
38890
 
38641
38891
  // ../../core/web-renderer/src/a11y/controls.tsx
38642
- import React10 from "react";
38892
+ import React11 from "react";
38643
38893
  import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
38644
38894
  function labelText(label3, ctx) {
38645
38895
  if (typeof label3 === "string" && isBinding(label3)) {
@@ -38684,32 +38934,32 @@ var init_controls = __esm({
38684
38934
  A11ySwitch = ({ props, ctx, wrap }) => {
38685
38935
  const C2 = ctx.color;
38686
38936
  const bound2 = useResolvedScalar(props.valuePath, ctx);
38687
- const bag = React10.useContext(FormValuesContext);
38937
+ const bag = React11.useContext(FormValuesContext);
38688
38938
  const fieldId = props.__formFieldId;
38689
38939
  const inForm = Boolean(bag && fieldId);
38690
38940
  const standaloneService = fieldId == null && ctx.provider != null && typeof props.valuePath === "string" && props.valuePath.startsWith("$service:");
38691
38941
  const resolved2 = ctx.empty ? false : standaloneService ? serviceToggleBool(bound2) ?? encodeToggleFieldValue(props.value) === "true" : props.valuePath != null ? encodeToggleFieldValue(bound2) === "true" : encodeToggleFieldValue(props.value, props.on === true) === "true";
38692
- const [formOn, setFormOn] = React10.useState(null);
38693
- const touchedField = React10.useRef(void 0);
38694
- React10.useEffect(() => {
38942
+ const [formOn, setFormOn] = React11.useState(null);
38943
+ const touchedField = React11.useRef(void 0);
38944
+ React11.useEffect(() => {
38695
38945
  if (bag && fieldId && touchedField.current === fieldId) bag.set(fieldId, encodeToggleFieldValue(resolved2));
38696
38946
  setFormOn(null);
38697
38947
  }, [resolved2]);
38698
38948
  const toggleServiceBound = typeof props.valuePath === "string" && props.valuePath.startsWith("$service:");
38699
38949
  const toggleReady = !toggleServiceBound || bound2 !== void 0;
38700
- React10.useEffect(() => {
38950
+ React11.useEffect(() => {
38701
38951
  if (!bag || !fieldId) return;
38702
38952
  if (!toggleReady && !hasContributed(bag, fieldId)) return;
38703
38953
  bag.set(fieldId, encodeToggleFieldValue(resolved2));
38704
38954
  }, [toggleReady, resolved2, fieldId, bag]);
38705
- const [tapped, setTapped] = React10.useState(null);
38706
- React10.useEffect(() => {
38955
+ const [tapped, setTapped] = React11.useState(null);
38956
+ React11.useEffect(() => {
38707
38957
  setTapped(null);
38708
38958
  }, [bound2, props.valuePath, ctx.provider]);
38709
38959
  const live3 = standaloneService && tapped && tapped.path === props.valuePath && Object.is(tapped.over, bound2) && tapped.provider === ctx.provider ? tapped.on : null;
38710
38960
  const on4 = inForm && touchedField.current === fieldId && formOn !== null ? formOn : live3 ?? resolved2;
38711
38961
  const ruleKey = props.validation ? JSON.stringify(props.validation) : "";
38712
- React10.useEffect(() => {
38962
+ React11.useEffect(() => {
38713
38963
  if (!bag || !fieldId) return;
38714
38964
  bag.register(fieldId, props.validation);
38715
38965
  return () => bag.unregister(fieldId);
@@ -38770,15 +39020,15 @@ var init_controls = __esm({
38770
39020
  const tint = C2(props.tint ?? "accentPrimary", "#116DFF");
38771
39021
  const step = typeof props.step === "number" && props.step > 0 ? props.step : (max - min) / 100 || 0.01;
38772
39022
  const range = props.range === true && typeof props.upperValue === "number";
38773
- const [val, setVal] = React10.useState(bound2);
38774
- const latestValue = React10.useRef(bound2);
38775
- const dragging = React10.useRef(false);
38776
- React10.useEffect(() => {
39023
+ const [val, setVal] = React11.useState(bound2);
39024
+ const latestValue = React11.useRef(bound2);
39025
+ const dragging = React11.useRef(false);
39026
+ React11.useEffect(() => {
38777
39027
  if (dragging.current) return;
38778
39028
  latestValue.current = bound2;
38779
39029
  setVal(bound2);
38780
39030
  }, [bound2]);
38781
- const lastEmit = React10.useRef(void 0);
39031
+ const lastEmit = React11.useRef(void 0);
38782
39032
  const canFire = !!(ctx.onAction && props.onChange && !props.disabled);
38783
39033
  const commit = (nv) => {
38784
39034
  latestValue.current = nv;
@@ -38788,8 +39038,8 @@ var init_controls = __esm({
38788
39038
  ctx.onAction({ ...act, args: { ...act.args ?? {}, value: nv } });
38789
39039
  };
38790
39040
  const clampPct = (n2) => max > min ? Math.max(0, Math.min(1, (n2 - min) / (max - min))) : 0;
38791
- const [pair, setPair] = React10.useState(() => [Math.min(bound2, props.upperValue ?? bound2), Math.max(bound2, props.upperValue ?? bound2)]);
38792
- React10.useEffect(() => {
39041
+ const [pair, setPair] = React11.useState(() => [Math.min(bound2, props.upperValue ?? bound2), Math.max(bound2, props.upperValue ?? bound2)]);
39042
+ React11.useEffect(() => {
38793
39043
  if (range) setPair([Math.min(bound2, props.upperValue), Math.max(bound2, props.upperValue)]);
38794
39044
  }, [range, bound2, props.upperValue]);
38795
39045
  if (range) {
@@ -38947,25 +39197,25 @@ var init_controls = __esm({
38947
39197
  const boundValue = useResolvedScalar(props.valuePath, ctx);
38948
39198
  const raw = props.valuePath != null ? boundValue : props.value;
38949
39199
  const groupId = isRadio && typeof props.groupId === "string" && props.groupId !== "" ? props.groupId : void 0;
38950
- const [local, setLocal] = React10.useState(void 0);
38951
- React10.useEffect(() => {
39200
+ const [local, setLocal] = React11.useState(void 0);
39201
+ React11.useEffect(() => {
38952
39202
  setLocal(void 0);
38953
39203
  }, [raw, radioGroups2, groupId]);
38954
39204
  const localValue2 = local?.registry === radioGroups2 && local.groupId === groupId ? local.value : void 0;
38955
39205
  const on4 = ctx.empty ? false : localValue2 ?? raw === true;
38956
- const member = React10.useMemo(() => radioGroups2.newMember(), [radioGroups2]);
38957
- const owner = React10.useSyncExternalStore(
39206
+ const member = React11.useMemo(() => radioGroups2.newMember(), [radioGroups2]);
39207
+ const owner = React11.useSyncExternalStore(
38958
39208
  radioGroups2.subscribe,
38959
39209
  () => groupId ? radioGroups2.owner(groupId) : void 0,
38960
39210
  () => void 0
38961
39211
  );
38962
- React10.useEffect(() => {
39212
+ React11.useEffect(() => {
38963
39213
  if (!groupId) return;
38964
39214
  radioGroups2.join(groupId);
38965
39215
  return () => radioGroups2.leave(groupId, member);
38966
39216
  }, [radioGroups2, groupId, member]);
38967
- const seenRaw = React10.useRef(null);
38968
- React10.useEffect(() => {
39217
+ const seenRaw = React11.useRef(null);
39218
+ React11.useEffect(() => {
38969
39219
  const prev = seenRaw.current;
38970
39220
  seenRaw.current = { raw, groupId, registry: radioGroups2 };
38971
39221
  if (!groupId) return;
@@ -38975,7 +39225,7 @@ var init_controls = __esm({
38975
39225
  radioGroups2.adopt(groupId, member, raw === true);
38976
39226
  }
38977
39227
  }, [radioGroups2, raw, groupId, member]);
38978
- React10.useEffect(() => {
39228
+ React11.useEffect(() => {
38979
39229
  if (groupId && radioGroups2.deselects(radioGroups2.owner(groupId), member)) setLocal({ value: false, registry: radioGroups2, groupId });
38980
39230
  }, [radioGroups2, owner, member, groupId]);
38981
39231
  const accent = C2("accentPrimary", "#116DFF");
@@ -39047,8 +39297,8 @@ var init_controls = __esm({
39047
39297
  const selectedId = useResolvedId(props.selectedId, ctx);
39048
39298
  const tabs = Array.isArray(boundTabs) && boundTabs.length ? boundTabs : Array.isArray(props.tabs) ? props.tabs : [];
39049
39299
  const pages2 = props.style === "swipe" ? props.swipePages : void 0;
39050
- const [local, setLocal] = React10.useState(void 0);
39051
- React10.useEffect(() => {
39300
+ const [local, setLocal] = React11.useState(void 0);
39301
+ React11.useEffect(() => {
39052
39302
  setLocal(void 0);
39053
39303
  }, [selectedId]);
39054
39304
  const current = local != null && tabs.some((t2) => t2.id === local) ? local : selectedId;
@@ -39068,15 +39318,15 @@ var init_controls = __esm({
39068
39318
  e2.preventDefault();
39069
39319
  if (ni2 !== selIdx) select2(ni2);
39070
39320
  };
39071
- const pagerRef = React10.useRef(null);
39072
- const settle2 = React10.useRef(void 0);
39073
- React10.useEffect(() => {
39321
+ const pagerRef = React11.useRef(null);
39322
+ const settle2 = React11.useRef(void 0);
39323
+ React11.useEffect(() => {
39074
39324
  const el2 = pagerRef.current;
39075
39325
  if (!el2 || !el2.clientWidth) return;
39076
39326
  const x2 = selIdx * el2.clientWidth;
39077
39327
  if (Math.abs(el2.scrollLeft - x2) > 1) el2.scrollTo?.({ left: x2, behavior: "smooth" });
39078
39328
  }, [selIdx, pages2]);
39079
- React10.useEffect(() => () => clearTimeout(settle2.current), []);
39329
+ React11.useEffect(() => () => clearTimeout(settle2.current), []);
39080
39330
  const onPagerScroll = () => {
39081
39331
  clearTimeout(settle2.current);
39082
39332
  settle2.current = setTimeout(() => {
@@ -39187,7 +39437,7 @@ var init_controls = __esm({
39187
39437
  const expanded = useResolvedScalar(props.expandedPath ?? props.expanded, ctx);
39188
39438
  const open = expanded === true;
39189
39439
  const fire = ctx.onAction && props.onToggle ? () => ctx.onAction(resolveRowAction(props.onToggle, ctx)) : void 0;
39190
- const regionId = React10.useMemo(() => `himi-disclosure-${++disclosureSeq}`, []);
39440
+ const regionId = React11.useMemo(() => `himi-disclosure-${++disclosureSeq}`, []);
39191
39441
  return /* @__PURE__ */ jsxs5("div", { style: { width: "100%", ...wrap }, children: [
39192
39442
  /* @__PURE__ */ jsxs5(
39193
39443
  "button",
@@ -39206,7 +39456,7 @@ var init_controls = __esm({
39206
39456
  ]
39207
39457
  }
39208
39458
  ),
39209
- /* @__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(React10.Fragment, { children: renderChild(c2) }, c2?.id ?? i2)) : renderChild(props.content)) })
39459
+ /* @__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(React11.Fragment, { children: renderChild(c2) }, c2?.id ?? i2)) : renderChild(props.content)) })
39210
39460
  ] });
39211
39461
  };
39212
39462
  }
@@ -39501,7 +39751,7 @@ var init_listGestures = __esm({
39501
39751
  init_tokens2();
39502
39752
  PULL_THRESHOLD = 56;
39503
39753
  SWIPE_OPEN = 76;
39504
- PullToRefreshList = ({ onRefresh, accent, fg, surface, label: label3 = "Pull to refresh", fontFamily = '"Wix Madefor Text", system-ui', style, children }) => {
39754
+ PullToRefreshList = ({ onRefresh, accent, fg, surface, label: label3 = "Pull to refresh", fontFamily = '"Wix Madefor Text", system-ui', style, children, ...extras }) => {
39505
39755
  const [pull, setPull] = useState4(0);
39506
39756
  const [busy, setBusy] = useState4(false);
39507
39757
  const startY = useRef2(null);
@@ -39529,6 +39779,7 @@ var init_listGestures = __esm({
39529
39779
  return /* @__PURE__ */ jsxs6(
39530
39780
  "div",
39531
39781
  {
39782
+ ...extras,
39532
39783
  "data-himalaya-pull-host": true,
39533
39784
  onTouchStart,
39534
39785
  onTouchMove,
@@ -40345,7 +40596,7 @@ var init_rich_text_field = __esm({
40345
40596
  });
40346
40597
 
40347
40598
  // ../../core/web-renderer/src/richContent.tsx
40348
- import React12 from "react";
40599
+ import React13 from "react";
40349
40600
  import { Fragment as Fragment3, jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
40350
40601
  function richContentFollow(ctx, onLink) {
40351
40602
  return (url) => {
@@ -40450,7 +40701,7 @@ function Block({ b: b2, env, depth }) {
40450
40701
  minHeight: b2.spans.length ? void 0 : "1.5em"
40451
40702
  }, children: /* @__PURE__ */ jsx9(Spans, { spans: b2.spans, env }) });
40452
40703
  case "heading":
40453
- return React12.createElement(
40704
+ return React13.createElement(
40454
40705
  `h${b2.level}`,
40455
40706
  { ...tid(env, b2.id, b2.kind), style: textStyle(ctx, RICH_CONTENT_HEADING_TOKENS[b2.level - 1], text13) },
40456
40707
  /* @__PURE__ */ jsx9(Spans, { spans: b2.spans, env })
@@ -41022,12 +41273,12 @@ var webviewBridgeHost_exports = {};
41022
41273
  __export(webviewBridgeHost_exports, {
41023
41274
  default: () => WebViewBridgeHost
41024
41275
  });
41025
- import React13 from "react";
41276
+ import React14 from "react";
41026
41277
  function WebViewBridgeHost(p2) {
41027
41278
  const { channel: channel3, props, ctx } = p2;
41028
41279
  const explicit2 = useResolvedScalar(props.instanceId, ctx);
41029
41280
  const explicitId = typeof explicit2 === "string" || typeof explicit2 === "number" ? String(explicit2) : "";
41030
- const pageActive = React13.useContext(PageActiveContext);
41281
+ const pageActive = React14.useContext(PageActiveContext);
41031
41282
  const active = useResolvedScalar(bound(props.activePath), ctx) !== false && pageActive;
41032
41283
  const muted = useResolvedScalar(bound(props.mutedPath), ctx) === true;
41033
41284
  const cfg = props.config && typeof props.config === "object" ? props.config : {};
@@ -41036,10 +41287,10 @@ function WebViewBridgeHost(p2) {
41036
41287
  const screenArgs = JSON.stringify(ctx.screenArgs ?? null);
41037
41288
  const source = p2.htmlStr != null ? "\0html" : p2.urlStr ?? "";
41038
41289
  const origins = p2.allowedOrigins.join("\n");
41039
- const sessionRef = React13.useRef(null);
41040
- const live3 = React13.useRef({ active, muted });
41290
+ const sessionRef = React14.useRef(null);
41291
+ const live3 = React14.useRef({ active, muted });
41041
41292
  live3.current = { active, muted };
41042
- React13.useEffect(() => {
41293
+ React14.useEffect(() => {
41043
41294
  if (typeof window === "undefined") return;
41044
41295
  if (p2.urlStr == null && p2.htmlStr == null) return;
41045
41296
  let instanceId;
@@ -41078,13 +41329,13 @@ function WebViewBridgeHost(p2) {
41078
41329
  p2.load.onLoad = void 0;
41079
41330
  };
41080
41331
  }, [channel3, ctx.screenId, screenArgs, p2.nodeId, explicitId, source, origins, security, consoleForwarding]);
41081
- React13.useEffect(() => {
41332
+ React14.useEffect(() => {
41082
41333
  sessionRef.current?.setActive(active);
41083
41334
  }, [active]);
41084
- React13.useEffect(() => {
41335
+ React14.useEffect(() => {
41085
41336
  sessionRef.current?.setMuted(muted);
41086
41337
  }, [muted]);
41087
- const first = React13.useRef(true);
41338
+ const first = React14.useRef(true);
41088
41339
  useLayoutEffectInBrowser(() => {
41089
41340
  if (first.current) {
41090
41341
  first.current = false;
@@ -41104,7 +41355,7 @@ var init_webviewBridgeHost = __esm({
41104
41355
  init_helpers();
41105
41356
  init_liveWindow();
41106
41357
  init_webviewBridge();
41107
- useLayoutEffectInBrowser = typeof globalThis.document === "undefined" ? React13.useEffect : React13.useLayoutEffect;
41358
+ useLayoutEffectInBrowser = typeof globalThis.document === "undefined" ? React14.useEffect : React14.useLayoutEffect;
41108
41359
  bound = (v2) => typeof v2 === "string" && isBinding(v2) ? v2 : void 0;
41109
41360
  }
41110
41361
  });
@@ -121720,7 +121971,7 @@ __export(pdfDocument_exports, {
121720
121971
  PdfDocument: () => PdfDocument,
121721
121972
  destroyPdfDocumentLoad: () => destroyPdfDocumentLoad
121722
121973
  });
121723
- import React14 from "react";
121974
+ import React15 from "react";
121724
121975
  import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
121725
121976
  async function loadPdfDocument(src, ownerDocument) {
121726
121977
  const [pdfjs, pdfWorkerAsset] = await Promise.all([
@@ -121739,18 +121990,18 @@ async function destroyPdfDocumentLoad(loading) {
121739
121990
  }
121740
121991
  }
121741
121992
  function PdfDocument({ src, nativeSrc, title, height, startPage, zoomPercent, style, onPageCount, onFallback, loadDocument = loadPdfDocument }) {
121742
- const [pages2, setPages] = React14.useState(0);
121743
- const [failedRequest, setFailedRequest] = React14.useState(null);
121993
+ const [pages2, setPages] = React15.useState(0);
121994
+ const [failedRequest, setFailedRequest] = React15.useState(null);
121744
121995
  const request = JSON.stringify([src, zoomPercent]);
121745
121996
  const failed3 = failedRequest === request;
121746
- const containerRef = React14.useRef(null);
121747
- const frameRef = React14.useRef(null);
121748
- const startPageRef = React14.useRef(startPage);
121997
+ const containerRef = React15.useRef(null);
121998
+ const frameRef = React15.useRef(null);
121999
+ const startPageRef = React15.useRef(startPage);
121749
122000
  startPageRef.current = startPage;
121750
- React14.useEffect(() => {
122001
+ React15.useEffect(() => {
121751
122002
  if (failed3) onFallback?.();
121752
122003
  }, [failed3, onFallback]);
121753
- React14.useEffect(() => {
122004
+ React15.useEffect(() => {
121754
122005
  const frame2 = frameRef.current;
121755
122006
  const page = Math.min(pages2, Math.max(1, Math.floor(startPage ?? 1) || 1));
121756
122007
  const canvas = pages2 ? containerRef.current?.querySelector(`[data-pdf-page="${page}"]`) : null;
@@ -121759,7 +122010,7 @@ function PdfDocument({ src, nativeSrc, title, height, startPage, zoomPercent, st
121759
122010
  const scale = frame2.offsetHeight > 0 && box.height > 0 ? box.height / frame2.offsetHeight : 1;
121760
122011
  frame2.scrollTop += (canvas.getBoundingClientRect().top - box.top) / scale;
121761
122012
  }, [startPage, pages2]);
121762
- React14.useEffect(() => {
122013
+ React15.useEffect(() => {
121763
122014
  let live3 = true;
121764
122015
  let loading;
121765
122016
  const container = containerRef.current;
@@ -121822,7 +122073,7 @@ var init_pdfDocument = __esm({
121822
122073
  });
121823
122074
 
121824
122075
  // ../../core/web-renderer/src/renderNode.tsx
121825
- import React15 from "react";
122076
+ import React16 from "react";
121826
122077
  import { createPortal } from "react-dom";
121827
122078
  import { Fragment as Fragment4, jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
121828
122079
  function boundTokenName(path2, fallback, ctx) {
@@ -121934,8 +122185,8 @@ function isNumericLike(s2) {
121934
122185
  return NUMERIC_TEXT.test(s2.trim());
121935
122186
  }
121936
122187
  function useValueSwap(value2, enabled2) {
121937
- const prev = React15.useRef(value2);
121938
- const gen = React15.useRef(0);
122188
+ const prev = React16.useRef(value2);
122189
+ const gen = React16.useRef(0);
121939
122190
  if (prev.current !== value2) {
121940
122191
  if (enabled2 && prev.current !== void 0 && value2 !== void 0) gen.current += 1;
121941
122192
  prev.current = value2;
@@ -122003,9 +122254,9 @@ function revealOnFocusStyle(C2) {
122003
122254
  };
122004
122255
  }
122005
122256
  function FormFieldLabelIdScope({ render, fieldKey, ...extras }) {
122006
- const id = React15.useId().replace(/[^A-Za-z0-9_-]/g, "");
122257
+ const id = React16.useId().replace(/[^A-Za-z0-9_-]/g, "");
122007
122258
  const el2 = render(`${fieldKey ? `${fieldKey}-` : ""}auto-${id}`);
122008
- return Object.keys(extras).length ? React15.cloneElement(el2, extras) : el2;
122259
+ return Object.keys(extras).length ? React16.cloneElement(el2, extras) : el2;
122009
122260
  }
122010
122261
  function formFieldA11y(props) {
122011
122262
  const labelledBy = props.__labelledBy;
@@ -122034,9 +122285,10 @@ function ensureListAnimateRuntime() {
122034
122285
  listAnimateRuntimeInstalled = true;
122035
122286
  const prevRects = /* @__PURE__ */ new WeakMap();
122036
122287
  const rowKey = (c2) => c2.dataset?.componentId ?? c2.querySelector("[data-component-id]")?.dataset?.componentId;
122288
+ const rowBoxes = (host) => Array.from(host.children, (c2) => c2.hasAttribute("data-himalaya-row-id") ? c2.firstElementChild : c2).filter((c2) => c2 != null);
122037
122289
  const snapshot4 = (host) => {
122038
122290
  const m2 = /* @__PURE__ */ new Map();
122039
- Array.from(host.children).forEach((c2) => {
122291
+ rowBoxes(host).forEach((c2) => {
122040
122292
  const id = rowKey(c2);
122041
122293
  if (id) m2.set(id, c2.getBoundingClientRect());
122042
122294
  });
@@ -122050,11 +122302,12 @@ function ensureListAnimateRuntime() {
122050
122302
  return;
122051
122303
  }
122052
122304
  const next = /* @__PURE__ */ new Map();
122053
- Array.from(host.children).forEach((c2) => {
122305
+ const boxes = rowBoxes(host);
122306
+ boxes.forEach((c2) => {
122054
122307
  const id = rowKey(c2);
122055
122308
  if (id) next.set(id, c2.getBoundingClientRect());
122056
122309
  });
122057
- Array.from(host.children).forEach((c2) => {
122310
+ boxes.forEach((c2) => {
122058
122311
  const el2 = c2;
122059
122312
  const id = rowKey(c2);
122060
122313
  if (!id) return;
@@ -122740,9 +122993,9 @@ function sectionSlot(raw) {
122740
122993
  }
122741
122994
  }
122742
122995
  function useLoadingTiming(target, graceMs, floorMs) {
122743
- const [shown2, setShown] = React15.useState(() => target === "loading" && graceMs > 0 ? "pending" : target);
122744
- const loadingSince = React15.useRef(shown2 === "loading" ? Date.now() : null);
122745
- React15.useEffect(() => {
122996
+ const [shown2, setShown] = React16.useState(() => target === "loading" && graceMs > 0 ? "pending" : target);
122997
+ const loadingSince = React16.useRef(shown2 === "loading" ? Date.now() : null);
122998
+ React16.useEffect(() => {
122746
122999
  if (target === shown2) return void 0;
122747
123000
  if (target === "loading") {
122748
123001
  if (graceMs <= 0) {
@@ -122781,8 +123034,8 @@ function autoGrowBox(contentHeight, lineHeight, verticalPadding, maxLines) {
122781
123034
  function PreviewMenuOverlay({ label: label3, dialogRef, preview, ctx, onClose, anchorHost, children }) {
122782
123035
  const host = anchorHost?.closest(`[${MODAL_SCOPE_ATTR}]`) ?? (typeof document !== "undefined" ? document.body : null);
122783
123036
  const reduce = ctx.reduceMotion();
122784
- const [shown2, setShown] = React15.useState(reduce);
122785
- React15.useEffect(() => {
123037
+ const [shown2, setShown] = React16.useState(reduce);
123038
+ React16.useEffect(() => {
122786
123039
  if (reduce || typeof requestAnimationFrame !== "function") {
122787
123040
  setShown(true);
122788
123041
  return;
@@ -122791,7 +123044,7 @@ function PreviewMenuOverlay({ label: label3, dialogRef, preview, ctx, onClose, a
122791
123044
  return () => cancelAnimationFrame(raf);
122792
123045
  }, [reduce]);
122793
123046
  const inScope = host != null && host !== host.ownerDocument.body;
122794
- const previewCtx = React15.useMemo(() => ctx.onAction ? { ...ctx, onAction: (a2) => {
123047
+ const previewCtx = React16.useMemo(() => ctx.onAction ? { ...ctx, onAction: (a2) => {
122795
123048
  onClose();
122796
123049
  ctx.onAction(a2);
122797
123050
  } } : ctx, [ctx, onClose]);
@@ -122858,7 +123111,7 @@ function youtubeId(item) {
122858
123111
  }
122859
123112
  }
122860
123113
  function useResolvedMediaItems(items, ctx) {
122861
- const paths2 = React15.useMemo(() => {
123114
+ const paths2 = React16.useMemo(() => {
122862
123115
  const set = /* @__PURE__ */ new Set();
122863
123116
  for (const it2 of items) {
122864
123117
  if (!it2 || typeof it2 !== "object") continue;
@@ -122870,17 +123123,17 @@ function useResolvedMediaItems(items, ctx) {
122870
123123
  return [...set];
122871
123124
  }, [items]);
122872
123125
  const key3 = paths2.join("\0");
122873
- const [values, setValues] = React15.useState(() => {
123126
+ const [values, setValues] = React16.useState(() => {
122874
123127
  const seed2 = {};
122875
123128
  if (ctx.provider) for (const p2 of paths2) seed2[p2] = ctx.provider.value(p2);
122876
123129
  return seed2;
122877
123130
  });
122878
- React15.useEffect(() => {
123131
+ React16.useEffect(() => {
122879
123132
  if (!ctx.provider || paths2.length === 0) return;
122880
123133
  const unsubs = paths2.map((p2) => ctx.provider.subscribe(p2, (v2) => setValues((prev) => prev[p2] === v2 ? prev : { ...prev, [p2]: v2 })));
122881
123134
  return () => unsubs.forEach((u2) => u2());
122882
123135
  }, [ctx.provider, key3]);
122883
- return React15.useMemo(() => items.map((it2) => {
123136
+ return React16.useMemo(() => items.map((it2) => {
122884
123137
  if (!it2 || typeof it2 !== "object") return it2;
122885
123138
  let out2 = null;
122886
123139
  for (const f2 of MEDIA_ITEM_BINDABLE) {
@@ -122923,8 +123176,8 @@ function reloadKeyOf(v2) {
122923
123176
  return String(v2);
122924
123177
  }
122925
123178
  function cloneWithKids(el2, props, kids3) {
122926
- if (kids3 === el2.props.children) return React15.cloneElement(el2, props);
122927
- return React15.cloneElement(el2, props, ...Array.isArray(kids3) ? kids3 : [kids3]);
123179
+ if (kids3 === el2.props.children) return React16.cloneElement(el2, props);
123180
+ return React16.cloneElement(el2, props, ...Array.isArray(kids3) ? kids3 : [kids3]);
122928
123181
  }
122929
123182
  function editA11yParts(node, edit) {
122930
123183
  if (Array.isArray(node)) {
@@ -122936,7 +123189,7 @@ function editA11yParts(node, edit) {
122936
123189
  });
122937
123190
  return changed ? out2 : node;
122938
123191
  }
122939
- if (!React15.isValidElement(node) || typeof node.type !== "string") return node;
123192
+ if (!React16.isValidElement(node) || typeof node.type !== "string") return node;
122940
123193
  const own6 = node.props;
122941
123194
  if (own6["data-component-id"] != null) return node;
122942
123195
  const part4 = own6[A11Y_PART];
@@ -122980,8 +123233,8 @@ function isNativeInteractiveElement(el2) {
122980
123233
  return typeof el2.type === "string" && (["button", "input", "select", "textarea"].includes(el2.type) || el2.type === "a" && typeof props.href === "string");
122981
123234
  }
122982
123235
  function hasInteractiveReactDescendant(el2) {
122983
- return React15.Children.toArray(el2.props.children).some((child) => {
122984
- if (!React15.isValidElement(child)) return false;
123236
+ return React16.Children.toArray(el2.props.children).some((child) => {
123237
+ if (!React16.isValidElement(child)) return false;
122985
123238
  if (isNativeInteractiveElement(child)) return true;
122986
123239
  const props = child.props;
122987
123240
  if (typeof child.type === "string" && typeof props.role === "string" && INTERACTIVE_ROLES.has(props.role)) return true;
@@ -123058,8 +123311,8 @@ function trackActivatorName(activator) {
123058
123311
  activatorNameObservers.set(activator, observer);
123059
123312
  }
123060
123313
  function TapActivator({ label: label3, state, tabIndex = 0, role = "button", hint, initialFocus }) {
123061
- const ref = React15.useRef(null);
123062
- const hintId = `hm-tap-hint${React15.useId()}`;
123314
+ const ref = React16.useRef(null);
123315
+ const hintId = `hm-tap-hint${React16.useId()}`;
123063
123316
  useIsomorphicLayoutEffect(() => {
123064
123317
  const el2 = ref.current;
123065
123318
  if (!el2 || label3) return;
@@ -123098,9 +123351,9 @@ function TapActivator({ label: label3, state, tabIndex = 0, role = "button", hin
123098
123351
  function withExtras(name, render) {
123099
123352
  const Wrapped = ({ props, ctx, wrap, nodeId, gap, ...pass }) => {
123100
123353
  const el2 = render({ props, ctx, wrap, nodeId, gap, nodeExtras: pass });
123101
- if (!React15.isValidElement(el2)) return /* @__PURE__ */ jsx11(Fragment4, { children: el2 });
123354
+ if (!React16.isValidElement(el2)) return /* @__PURE__ */ jsx11(Fragment4, { children: el2 });
123102
123355
  if (el2.props[NODE_EXTRAS_TARGET] === "bottom-drawer-panel") {
123103
- return React15.cloneElement(el2, { [NODE_EXTRAS_TARGET]: void 0 });
123356
+ return React16.cloneElement(el2, { [NODE_EXTRAS_TARGET]: void 0 });
123104
123357
  }
123105
123358
  const additive = addIntrinsicPadding(el2.props.style, wrap ?? {});
123106
123359
  const inferredDecorative = el2.props[INFERRED_DECORATIVE] === true;
@@ -123120,7 +123373,7 @@ function withExtras(name, render) {
123120
123373
  }, hasA11yParts ? editA11yParts(kids3, a11yPartEdit({}, false, () => {
123121
123374
  })) : kids3));
123122
123375
  }
123123
- return withCircleClipBorder(additive ? React15.cloneElement(el2, { style: additive }) : el2);
123376
+ return withCircleClipBorder(additive ? React16.cloneElement(el2, { style: additive }) : el2);
123124
123377
  }
123125
123378
  const prev = el2.props;
123126
123379
  const next = { ...pass };
@@ -123221,7 +123474,7 @@ function withExtras(name, render) {
123221
123474
  }
123222
123475
  return withCircleClipBorder(cloneWithKids(el2, next, kids3));
123223
123476
  }
123224
- return withCircleClipBorder(React15.cloneElement(el2, next));
123477
+ return withCircleClipBorder(React16.cloneElement(el2, next));
123225
123478
  };
123226
123479
  Wrapped.displayName = name;
123227
123480
  return Wrapped;
@@ -123329,7 +123582,7 @@ function overlayEdgeStyle(edge, gap) {
123329
123582
  }
123330
123583
  function useFlippedEdge(edge, open, bubbleRef, anchorRef, gap = TOOLTIP_GAP) {
123331
123584
  const initial = { edge, x: 0, y: 0, maxWidth: Infinity };
123332
- const [placed, setPlaced] = React15.useState(initial);
123585
+ const [placed, setPlaced] = React16.useState(initial);
123333
123586
  useIsomorphicLayoutEffect(() => {
123334
123587
  if (!open) {
123335
123588
  setPlaced((previous) => previous.edge === edge && previous.x === 0 && previous.y === 0 && previous.maxWidth === Infinity ? previous : initial);
@@ -124153,7 +124406,7 @@ function renderNodeInner(node, ctx) {
124153
124406
  return /* @__PURE__ */ jsx11(ScrollIntoViewNode, { node: bare, ctx, path: node.modifiers.scrollIntoViewPath });
124154
124407
  }
124155
124408
  const el2 = renderInner(node, ctx);
124156
- if (!React15.isValidElement(el2)) return el2;
124409
+ if (!React16.isValidElement(el2)) return el2;
124157
124410
  const extra = {};
124158
124411
  const material = node?.modifiers?.material;
124159
124412
  const materialName = typeof material === "string" ? material : material?.token ?? material?.name;
@@ -124338,9 +124591,9 @@ function renderNodeInner(node, ctx) {
124338
124591
  const finalStyle = extra.style ?? el2.props.style;
124339
124592
  if (!finalStyle?.position) extra.style = { ...finalStyle ?? {}, position: "relative" };
124340
124593
  }
124341
- let out2 = tapActivator ? React15.cloneElement(el2, extra, tapActivator, el2.props.children) : Object.keys(extra).length ? React15.cloneElement(el2, extra) : el2;
124342
- if (React15.isValidElement(out2)) out2 = withCircleClipBorder(out2);
124343
- if (busyGate && React15.isValidElement(out2)) out2 = /* @__PURE__ */ jsx11(WorkerTapGate, { gate: busyGate, action: tap, children: out2 });
124594
+ let out2 = tapActivator ? React16.cloneElement(el2, extra, tapActivator, el2.props.children) : Object.keys(extra).length ? React16.cloneElement(el2, extra) : el2;
124595
+ if (React16.isValidElement(out2)) out2 = withCircleClipBorder(out2);
124596
+ if (busyGate && React16.isValidElement(out2)) out2 = /* @__PURE__ */ jsx11(WorkerTapGate, { gate: busyGate, action: tap, children: out2 });
124344
124597
  if (a11yHint && !tapActivator) {
124345
124598
  out2 = /* @__PURE__ */ jsx11(A11yHintDescription, { hint: a11yHint, idBase: componentId, children: out2 });
124346
124599
  }
@@ -124353,10 +124606,10 @@ function renderNodeInner(node, ctx) {
124353
124606
  return out2;
124354
124607
  }
124355
124608
  function NodeOnAppear({ action, ctx, children }) {
124356
- const fired = React15.useRef(false);
124357
- const appearanceAction = React15.useContext(AppearanceActionContext);
124609
+ const fired = React16.useRef(false);
124610
+ const appearanceAction = React16.useContext(AppearanceActionContext);
124358
124611
  const onAction = appearanceAction === void 0 ? ctx.onAction : appearanceAction;
124359
- React15.useEffect(() => {
124612
+ React16.useEffect(() => {
124360
124613
  if (fired.current || ctx.staticRender || !onAction) return;
124361
124614
  const resolved2 = resolveItemDeep2(action, ctx);
124362
124615
  if (!resolved2?.actionId) return;
@@ -124569,22 +124822,26 @@ function renderInner(node, ctx) {
124569
124822
  const boundStagger = ctx.reduceMotion() ? 0 : Number(props.staggerMs ?? props.stagger_ms ?? 0);
124570
124823
  const boundAnimateItems = listAnimateItemsEnabled(ctx) && (props.animateItems ?? props.animate_items) === true && !props.horizontal;
124571
124824
  if (boundAnimateItems) ensureListAnimateRuntime();
124825
+ const jumpPath = props.scrollToItemPath ?? props.scroll_to_item_path;
124826
+ const onTopItem = props.onTopItemChange ?? props.on_top_item_change;
124827
+ const anchored = !props.horizontal && !!(jumpPath || onTopItem);
124572
124828
  const boundBody = /* @__PURE__ */ jsx11(
124573
124829
  BoundList,
124574
124830
  {
124575
124831
  ctx,
124576
124832
  itemsPath,
124577
124833
  template: items[0],
124834
+ tagRows: anchored,
124578
124835
  windowed: !props.horizontal,
124579
124836
  wrapRows: boundAnimateItems ? (rows) => /* @__PURE__ */ jsx11("div", { "data-himalaya-animate-items": "1", style: { display: "contents" }, children: rows }) : void 0,
124580
124837
  footer: boundPagination ? /* @__PURE__ */ jsx11(LoadMoreSentinel, { ctx, pagination: boundPagination }) : null,
124581
124838
  pageCursor: boundPagination?.cursor,
124582
124839
  renderRow: keptRowRenderer(ctx, props, () => (t2, ic) => {
124583
124840
  let row2 = renderNode(t2, asItem(ic));
124584
- if (boundStagger > 0 && React15.isValidElement(row2) && (props.horizontal || Number(ic.itemScope?.__index ?? 0) < BOUND_LIST_WINDOW_START)) {
124841
+ if (boundStagger > 0 && React16.isValidElement(row2) && (props.horizontal || Number(ic.itemScope?.__index ?? 0) < BOUND_LIST_WINDOW_START)) {
124585
124842
  const i2 = Number(ic.itemScope?.__index ?? 0);
124586
124843
  const prev = row2.props.style ?? {};
124587
- row2 = React15.cloneElement(row2, { style: { ...prev, animationDelay: `${i2 * boundStagger}ms` } });
124844
+ row2 = React16.cloneElement(row2, { style: { ...prev, animationDelay: `${i2 * boundStagger}ms` } });
124588
124845
  }
124589
124846
  if (boundSwipe && ctx.onAction && !props.horizontal) {
124590
124847
  const leading = resolveSwipeActions(boundSwipe.leading, ic);
@@ -124609,7 +124866,7 @@ function renderInner(node, ctx) {
124609
124866
  })
124610
124867
  }
124611
124868
  );
124612
- const withSentinel = boundBody;
124869
+ const withSentinel = anchored ? /* @__PURE__ */ jsx11(RowAnchors, { ctx, itemsPath, jumpPath, onTopItem, children: boundBody }) : boundBody;
124613
124870
  if (boundRefresh && ctx.onAction && !props.horizontal) {
124614
124871
  return /* @__PURE__ */ jsx11(
124615
124872
  PullToRefreshList,
@@ -124639,7 +124896,7 @@ function renderInner(node, ctx) {
124639
124896
  if (swipe && ctx.onAction && !props.horizontal) {
124640
124897
  const leading = swipe.leading ?? [];
124641
124898
  const trailing = swipe.trailing ?? [];
124642
- const arr2 = React15.Children.toArray(rendered);
124899
+ const arr2 = React16.Children.toArray(rendered);
124643
124900
  body = arr2.map((child, i2) => /* @__PURE__ */ jsx11(
124644
124901
  SwipeRow,
124645
124902
  {
@@ -125152,7 +125409,7 @@ function reportUnknownComponent(ctx, pkg, type) {
125152
125409
  function unknownComponentShowsDeveloperLabel(ctx) {
125153
125410
  return ctx.debugUnknownComponents ?? ctx.previewSurface != null;
125154
125411
  }
125155
- var AppearanceActionContext, rowValue, loadPdfFetch, WebViewBridgeHost2, useIsomorphicLayoutEffect, GridColumnsContext, GridBoundList, GRID_SPAN_ALL, 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, asBoundCopy, useBoundCopy, 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, dataTableProbe, 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, rowRenderers, railRowFrame, renderRailRow, reportedUnknownComponents, UnknownComponentNode, WebRenderer, ScrollIntoViewNode;
125412
+ var AppearanceActionContext, rowValue, loadPdfFetch, WebViewBridgeHost2, useIsomorphicLayoutEffect, GridColumnsContext, GridBoundList, GRID_SPAN_ALL, 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, asBoundCopy, useBoundCopy, 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, dataTableProbe, 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, rowRenderers, railRowFrame, renderRailRow, RowAnchors, reportedUnknownComponents, UnknownComponentNode, WebRenderer, ScrollIntoViewNode;
125156
125413
  var init_renderNode = __esm({
125157
125414
  "../../core/web-renderer/src/renderNode.tsx"() {
125158
125415
  "use strict";
@@ -125168,6 +125425,7 @@ var init_renderNode = __esm({
125168
125425
  init_helpers();
125169
125426
  init_liveWindow();
125170
125427
  init_bindings2();
125428
+ init_scrollAnchors();
125171
125429
  init_snackbarTiming();
125172
125430
  init_bindings();
125173
125431
  init_tokens();
@@ -125204,21 +125462,21 @@ var init_renderNode = __esm({
125204
125462
  init_rich_content();
125205
125463
  init_rich_text_field();
125206
125464
  init_richContent();
125207
- AppearanceActionContext = React15.createContext(void 0);
125465
+ AppearanceActionContext = React16.createContext(void 0);
125208
125466
  rowValue = (v2, ctx) => typeof v2 === "string" && v2.startsWith("$item") ? resolveScalarStatic(v2, ctx) : v2;
125209
125467
  loadPdfFetch = () => Promise.resolve().then(() => (init_pdfFetch(), pdfFetch_exports));
125210
- WebViewBridgeHost2 = React15.lazy(() => Promise.resolve().then(() => (init_webviewBridgeHost(), webviewBridgeHost_exports)));
125211
- useIsomorphicLayoutEffect = typeof globalThis.document === "undefined" ? React15.useEffect : React15.useLayoutEffect;
125212
- GridColumnsContext = React15.createContext(1);
125468
+ WebViewBridgeHost2 = React16.lazy(() => Promise.resolve().then(() => (init_webviewBridgeHost(), webviewBridgeHost_exports)));
125469
+ useIsomorphicLayoutEffect = typeof globalThis.document === "undefined" ? React16.useEffect : React16.useLayoutEffect;
125470
+ GridColumnsContext = React16.createContext(1);
125213
125471
  GridBoundList = (props) => {
125214
- const columns = React15.useContext(GridColumnsContext);
125472
+ const columns = React16.useContext(GridColumnsContext);
125215
125473
  return /* @__PURE__ */ jsx11(BoundList, { ...props, windowed: true, rowSize: columns, markerStyle: GRID_SPAN_ALL });
125216
125474
  };
125217
125475
  GRID_SPAN_ALL = { gridColumn: "1 / -1" };
125218
125476
  ResponsiveGrid = ({ base, medium, expanded, initialCols, seedWidth, spacing, extra, children }) => {
125219
- const [el2, setEl] = React15.useState(null);
125220
- const [cols, setCols] = React15.useState(initialCols);
125221
- React15.useEffect(() => {
125477
+ const [el2, setEl] = React16.useState(null);
125478
+ const [cols, setCols] = React16.useState(initialCols);
125479
+ React16.useEffect(() => {
125222
125480
  if (!el2) return;
125223
125481
  const measure2 = () => {
125224
125482
  const w2 = seededWidth(el2.clientWidth, seedWidth);
@@ -125244,9 +125502,9 @@ var init_renderNode = __esm({
125244
125502
  SPLIT_EXPANDED_MIN_WIDTH = 840;
125245
125503
  SPLIT_COLUMN_GAP = 16;
125246
125504
  ResponsiveSplitView = ({ primary, detail, primaryMaxWidth, initialWide, seedWidth, extra }) => {
125247
- const ref = React15.useRef(null);
125248
- const [wide, setWide] = React15.useState(initialWide);
125249
- React15.useEffect(() => {
125505
+ const ref = React16.useRef(null);
125506
+ const [wide, setWide] = React16.useState(initialWide);
125507
+ React16.useEffect(() => {
125250
125508
  const el2 = ref.current;
125251
125509
  if (!el2) return;
125252
125510
  const measure2 = () => {
@@ -125292,9 +125550,9 @@ var init_renderNode = __esm({
125292
125550
  revealRuntimeInjected = false;
125293
125551
  AMBIENT_HOST_STYLE = { display: "contents" };
125294
125552
  AmbientMotionBox = ({ spec, kind, children }) => {
125295
- const ref = React15.useRef(null);
125553
+ const ref = React16.useRef(null);
125296
125554
  const { minGapMs, maxGapMs } = spec;
125297
- React15.useEffect(() => {
125555
+ React16.useEffect(() => {
125298
125556
  const el2 = ref.current?.firstElementChild;
125299
125557
  if (!el2 || typeof el2.animate !== "function") return;
125300
125558
  let timer;
@@ -125378,14 +125636,14 @@ var init_renderNode = __esm({
125378
125636
  }
125379
125637
  };
125380
125638
  bodyFont = (ctx) => fontStack(ctx.font("body").family, ctx.idiom);
125381
- kids2 = (arr2, ctx) => Array.isArray(arr2) ? arr2.map((n2, i2) => /* @__PURE__ */ jsx11(React15.Fragment, { children: renderNode(n2, ctx) }, n2?.id ?? i2)) : null;
125639
+ kids2 = (arr2, ctx) => Array.isArray(arr2) ? arr2.map((n2, i2) => /* @__PURE__ */ jsx11(React16.Fragment, { children: renderNode(n2, ctx) }, n2?.id ?? i2)) : null;
125382
125640
  rowKidCtx = (n2, ctx) => wantsRowStretch(n2) ? { ...ctx, rowStretch: true } : normalize2(n2).type === "Divider" ? { ...ctx, rowDivider: true } : ctx;
125383
- rowKids = (arr2, ctx) => Array.isArray(arr2) ? arr2.map((n2, i2) => /* @__PURE__ */ jsx11(React15.Fragment, { children: renderNode(n2, rowKidCtx(n2, ctx)) }, n2?.id ?? i2)) : null;
125641
+ rowKids = (arr2, ctx) => Array.isArray(arr2) ? arr2.map((n2, i2) => /* @__PURE__ */ jsx11(React16.Fragment, { children: renderNode(n2, rowKidCtx(n2, ctx)) }, n2?.id ?? i2)) : null;
125384
125642
  staggeredKids = (arr2, ctx, staggerMs) => Array.isArray(arr2) ? arr2.map((n2, i2) => {
125385
125643
  const el2 = renderNode(n2, ctx);
125386
- if (!React15.isValidElement(el2)) return /* @__PURE__ */ jsx11(React15.Fragment, { children: el2 }, n2?.id ?? i2);
125644
+ if (!React16.isValidElement(el2)) return /* @__PURE__ */ jsx11(React16.Fragment, { children: el2 }, n2?.id ?? i2);
125387
125645
  const prev = el2.props.style ?? {};
125388
- return React15.cloneElement(el2, { key: n2?.id ?? i2, style: { ...prev, animationDelay: `${i2 * staggerMs}ms` } });
125646
+ return React16.cloneElement(el2, { key: n2?.id ?? i2, style: { ...prev, animationDelay: `${i2 * staggerMs}ms` } });
125389
125647
  }) : null;
125390
125648
  asTextL10n = (v2, ctx) => typeof v2 === "string" && v2.startsWith(TRANSLATION_PREFIX) ? asText2(resolveTranslation(v2, ctx.catalog)) : asText2(v2);
125391
125649
  asFinalTextL10n = (v2, ctx) => typeof v2 === "string" ? v2.startsWith(TRANSLATION_PREFIX) ? asText2(resolveTranslation(v2, ctx.catalog)) : v2 : asText2(v2);
@@ -125403,13 +125661,13 @@ var init_renderNode = __esm({
125403
125661
  const bound2 = Object.entries(params).filter(
125404
125662
  ([, v2]) => typeof v2 === "string" && v2.startsWith("$service:")
125405
125663
  );
125406
- const [live3, setLive] = React15.useState(() => {
125664
+ const [live3, setLive] = React16.useState(() => {
125407
125665
  const seed2 = {};
125408
125666
  if (ctx.provider) for (const [k2, p2] of bound2) seed2[k2] = ctx.provider.value(servicePath(p2));
125409
125667
  return seed2;
125410
125668
  });
125411
125669
  const subKey = bound2.map(([k2, p2]) => `${k2}=${p2}`).join("|");
125412
- React15.useEffect(() => {
125670
+ React16.useEffect(() => {
125413
125671
  const provider = ctx.provider;
125414
125672
  if (!provider) return;
125415
125673
  const unsubs = bound2.map(
@@ -125451,11 +125709,11 @@ var init_renderNode = __esm({
125451
125709
  fragmentSlotContent = ({ props, ctx, discriminator, slotId, extra }) => {
125452
125710
  const selected = selectFragmentCase(props, discriminator);
125453
125711
  const selectedId = typeof selected?.id === "string" ? selected.id : "";
125454
- const previousId = React15.useRef(selectedId);
125455
- const reportedUnknown = React15.useRef(/* @__PURE__ */ new Set());
125456
- const reportedInvalid = React15.useRef(/* @__PURE__ */ new Set());
125457
- const [announcement, setAnnouncement] = React15.useState("");
125458
- React15.useEffect(() => {
125712
+ const previousId = React16.useRef(selectedId);
125713
+ const reportedUnknown = React16.useRef(/* @__PURE__ */ new Set());
125714
+ const reportedInvalid = React16.useRef(/* @__PURE__ */ new Set());
125715
+ const [announcement, setAnnouncement] = React16.useState("");
125716
+ React16.useEffect(() => {
125459
125717
  if (typeof discriminator === "string") {
125460
125718
  if (discriminator && !props.cases?.some((candidate) => candidate.id === discriminator) && !reportedUnknown.current.has(discriminator)) {
125461
125719
  reportedUnknown.current.add(discriminator);
@@ -125469,7 +125727,7 @@ var init_renderNode = __esm({
125469
125727
  }
125470
125728
  }
125471
125729
  }, [ctx, discriminator, props.cases, slotId]);
125472
- React15.useEffect(() => {
125730
+ React16.useEffect(() => {
125473
125731
  if (previousId.current !== selectedId) {
125474
125732
  const next = selected?.accessibilityAnnouncement ?? selected?.accessibility_announcement;
125475
125733
  setAnnouncement(typeof next === "string" ? next : "");
@@ -125483,7 +125741,7 @@ var init_renderNode = __esm({
125483
125741
  // and the right edge clips (branded-lite's home is a FragmentSlot → 32px cut in
125484
125742
  // the phone preview). Included before ...extra so a modifier can still override.
125485
125743
  /* @__PURE__ */ jsxs9("div", { "data-fragment-slot": slotId ?? "", "data-fragment-case": selectedId, style: { width: "100%", boxSizing: "border-box", ...extra }, children: [
125486
- selected?.content ? /* @__PURE__ */ jsx11(React15.Fragment, { children: renderNode(selected.content, ctx) }, selectedId) : null,
125744
+ selected?.content ? /* @__PURE__ */ jsx11(React16.Fragment, { children: renderNode(selected.content, ctx) }, selectedId) : null,
125487
125745
  /* @__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 })
125488
125746
  ] })
125489
125747
  );
@@ -125504,11 +125762,11 @@ var init_renderNode = __esm({
125504
125762
  const fallbackPathStr = mediaFieldServicePath(props.fallbackTextPath);
125505
125763
  const fallbackBound = useBoundValue(ctx, fallbackPathStr ? String(props.fallbackTextPath) : "");
125506
125764
  const fallbackText = typeof fallbackBound === "string" ? fallbackBound : "";
125507
- const [uploading, setUploading] = React15.useState(false);
125508
- const [failed3, setFailed] = React15.useState(false);
125509
- const fileRef = React15.useRef(null);
125510
- const previewRef = React15.useRef(null);
125511
- const [localPreview, setLocalPreview] = React15.useState("");
125765
+ const [uploading, setUploading] = React16.useState(false);
125766
+ const [failed3, setFailed] = React16.useState(false);
125767
+ const fileRef = React16.useRef(null);
125768
+ const previewRef = React16.useRef(null);
125769
+ const [localPreview, setLocalPreview] = React16.useState("");
125512
125770
  const uploadService = typeof props.uploadService === "string" ? props.uploadService : "";
125513
125771
  const resolvedLabel = asText2(resolveScalarStatic(props.label, ctx));
125514
125772
  const name = mediaFieldName(resolvedLabel);
@@ -125553,7 +125811,7 @@ var init_renderNode = __esm({
125553
125811
  setUploading(false);
125554
125812
  }
125555
125813
  };
125556
- React15.useEffect(() => () => {
125814
+ React16.useEffect(() => () => {
125557
125815
  const previewUrl = previewRef.current;
125558
125816
  if (previewUrl && typeof URL.revokeObjectURL === "function") URL.revokeObjectURL(previewUrl);
125559
125817
  previewRef.current = null;
@@ -125625,7 +125883,7 @@ var init_renderNode = __esm({
125625
125883
  const value2 = useBoundValue(ctx, typeof path2 === "string" ? path2 : "");
125626
125884
  const policy = props.policy;
125627
125885
  const catalog4 = ctx.provider && typeof ctx.provider.listActions === "function" ? ctx.provider : null;
125628
- const validation = React15.useMemo(() => {
125886
+ const validation = React16.useMemo(() => {
125629
125887
  if (value2 === void 0 || value2 === null) return { ok: false, reason: "unresolved" };
125630
125888
  if (typeof value2 !== "string") return { ok: false, reason: "value_type" };
125631
125889
  if (!policy || typeof policy !== "object") return { ok: false, reason: "typed_decode" };
@@ -125635,8 +125893,8 @@ var init_renderNode = __esm({
125635
125893
  return { ok: false, reason: "typed_decode" };
125636
125894
  }
125637
125895
  }, [catalog4, policy, slotId, value2]);
125638
- const reported = React15.useRef(/* @__PURE__ */ new Set());
125639
- React15.useEffect(() => {
125896
+ const reported = React16.useRef(/* @__PURE__ */ new Set());
125897
+ React16.useEffect(() => {
125640
125898
  const key3 = validation.ok ? `ok:${validation.treeHash}` : `bad:${validation.treeHash ?? validation.reason}`;
125641
125899
  if (reported.current.has(key3)) return;
125642
125900
  reported.current.add(key3);
@@ -125665,10 +125923,10 @@ var init_renderNode = __esm({
125665
125923
  const hasPath = typeof path2 === "string" && path2 !== "";
125666
125924
  const bound2 = useResolvedScalar(hasPath ? path2 : void 0, ctx);
125667
125925
  const raw = hasPath ? bound2 : props.documentJson ?? props.document_json;
125668
- const result = React15.useMemo(() => layoutRichContentValue(raw), [raw]);
125926
+ const result = React16.useMemo(() => layoutRichContentValue(raw), [raw]);
125669
125927
  const reason = result && "rejected" in result ? result.rejected : void 0;
125670
- const reported = React15.useRef(/* @__PURE__ */ new Set());
125671
- React15.useEffect(() => {
125928
+ const reported = React16.useRef(/* @__PURE__ */ new Set());
125929
+ React16.useEffect(() => {
125672
125930
  if (!reason) return;
125673
125931
  const key3 = typeof raw === "string" ? `${reason}:${raw.length}:${richContentDocumentHash(raw)}` : `${reason}:non-string`;
125674
125932
  if (reported.current.has(key3)) return;
@@ -125762,17 +126020,17 @@ var init_renderNode = __esm({
125762
126020
  };
125763
126021
  withRootStyle = (content, style) => {
125764
126022
  if (Array.isArray(content)) return content.map((child) => withRootStyle(child, style));
125765
- if (!React15.isValidElement(content)) return content;
125766
- if (content.type === React15.Fragment) {
125767
- return React15.cloneElement(content, {}, React15.Children.map(content.props.children, (child) => withRootStyle(child, style)));
126023
+ if (!React16.isValidElement(content)) return content;
126024
+ if (content.type === React16.Fragment) {
126025
+ return React16.cloneElement(content, {}, React16.Children.map(content.props.children, (child) => withRootStyle(child, style)));
125768
126026
  }
125769
126027
  const element = content;
125770
- return React15.cloneElement(element, { style: { ...element.props.style, ...style } });
126028
+ return React16.cloneElement(element, { style: { ...element.props.style, ...style } });
125771
126029
  };
125772
126030
  ReactiveDirectScalars = ({ node, ctx, bindings, style }) => {
125773
- const [, rerender] = React15.useState(0);
126031
+ const [, rerender] = React16.useState(0);
125774
126032
  const bindingKey = bindings.join("|");
125775
- React15.useEffect(() => {
126033
+ React16.useEffect(() => {
125776
126034
  if (!ctx.provider) return;
125777
126035
  const unsubs = bindings.map((binding2) => ctx.provider.subscribe(servicePath(binding2), () => rerender((n2) => n2 + 1)));
125778
126036
  return () => unsubs.forEach((unsubscribe) => unsubscribe());
@@ -125785,14 +126043,14 @@ var init_renderNode = __esm({
125785
126043
  return /* @__PURE__ */ jsx11(ExitPresence, { hidden: hiddenBool(v2), exit: exit ?? null, children });
125786
126044
  };
125787
126045
  ExitPresence = ({ hidden, exit, children }) => {
125788
- const [prevHidden, setPrevHidden] = React15.useState(hidden);
125789
- const [exiting, setExiting] = React15.useState(false);
126046
+ const [prevHidden, setPrevHidden] = React16.useState(hidden);
126047
+ const [exiting, setExiting] = React16.useState(false);
125790
126048
  if (hidden !== prevHidden) {
125791
126049
  setPrevHidden(hidden);
125792
126050
  setExiting(hidden && exit != null);
125793
126051
  }
125794
- const ref = React15.useRef(null);
125795
- const exitRef = React15.useRef(exit);
126052
+ const ref = React16.useRef(null);
126053
+ const exitRef = React16.useRef(exit);
125796
126054
  exitRef.current = exit;
125797
126055
  useIsomorphicLayoutEffect(() => {
125798
126056
  if (!exiting) return void 0;
@@ -125825,8 +126083,8 @@ var init_renderNode = __esm({
125825
126083
  const target = raw == null || raw === "" || isBound && !ctx.provider ? legacy : sectionSlot(isBound ? bound2 : raw);
125826
126084
  const { graceMs, floorMs } = loadingTiming(ctx.kit, props.loadingGraceMs ?? props.loading_grace_ms, props.loadingFloorMs ?? props.loading_floor_ms);
125827
126085
  const shown2 = useLoadingTiming(target, graceMs, floorMs);
125828
- const changed = React15.useRef(false);
125829
- const first = React15.useRef(shown2);
126086
+ const changed = React16.useRef(false);
126087
+ const first = React16.useRef(shown2);
125830
126088
  if (shown2 !== first.current) changed.current = true;
125831
126089
  const renderCfg = (cfg) => cfg && typeof cfg === "object" ? /* @__PURE__ */ jsxs9("div", { style: { textAlign: "center", padding: "24px 12px", color: C2("textSecondary", "#9aa2ad") }, children: [
125832
126090
  cfg.title && /* @__PURE__ */ jsx11("div", { style: { fontSize: pxToRem(15), fontWeight: 600, color: C2("textPrimary", "#111") }, children: asText2(cfg.title) }),
@@ -125858,8 +126116,8 @@ var init_renderNode = __esm({
125858
126116
  }
125859
126117
  const animate = motionDefaultsAnimate(ctx);
125860
126118
  const fadeMs = motionDefaultsDuration(ctx.kit, 220);
125861
- const lastShown = React15.useRef(null);
125862
- const [outgoing, setOutgoing] = React15.useState(null);
126119
+ const lastShown = React16.useRef(null);
126120
+ const [outgoing, setOutgoing] = React16.useState(null);
125863
126121
  useIsomorphicLayoutEffect(() => {
125864
126122
  const was = lastShown.current;
125865
126123
  if (!animate || !was || was.slot === shown2 || was.node == null) return void 0;
@@ -125867,7 +126125,7 @@ var init_renderNode = __esm({
125867
126125
  const t2 = setTimeout(() => setOutgoing(null), fadeMs);
125868
126126
  return () => clearTimeout(t2);
125869
126127
  }, [shown2]);
125870
- React15.useEffect(() => {
126128
+ React16.useEffect(() => {
125871
126129
  lastShown.current = { slot: shown2, node: content };
125872
126130
  });
125873
126131
  if (changed.current && animate) {
@@ -125903,7 +126161,7 @@ var init_renderNode = __esm({
125903
126161
  const onChangeAction = resolveRowAction2(props.onChange ?? cfg.onChange, ctx);
125904
126162
  const borderless = props.borderless === true || cfg.borderless === true;
125905
126163
  const secure = props.secure === true || cfg.secure === true;
125906
- const [valueVisible, setValueVisible] = React15.useState(false);
126164
+ const [valueVisible, setValueVisible] = React16.useState(false);
125907
126165
  const visibilityToggle = secure && (props.visibilityToggle === true || cfg.visibilityToggle === true);
125908
126166
  const visibilityLabel = ctx.catalog?.get(valueVisible ? "auth.gate.password.hide" : "auth.gate.password.show") ?? (valueVisible ? "Hide password" : "Show password");
125909
126167
  const erroredProp = props.error === true || cfg.error === true;
@@ -125917,20 +126175,20 @@ var init_renderNode = __esm({
125917
126175
  const boundRawText = typeof boundVal === "string" ? boundVal : typeof boundVal === "number" ? String(boundVal) : void 0;
125918
126176
  const boundText = serializeRichText && boundRawText !== void 0 ? richTextHtmlToPlainText(boundRawText) : boundRawText;
125919
126177
  const literalText = typeof valueBinding === "string" ? serializeRichText ? richTextHtmlToPlainText(valueBinding) : valueBinding : "";
125920
- const [local, setLocal] = React15.useState(
126178
+ const [local, setLocal] = React16.useState(
125921
126179
  isBound ? boundText ?? "" : literalText
125922
126180
  );
125923
- const [edited, setEdited] = React15.useState(false);
125924
- const [pristineRichValue, setPristineRichValue] = React15.useState(
126181
+ const [edited, setEdited] = React16.useState(false);
126182
+ const [pristineRichValue, setPristineRichValue] = React16.useState(
125925
126183
  serializeRichText ? isBound ? boundRawText : typeof valueBinding === "string" ? valueBinding : void 0 : void 0
125926
126184
  );
125927
- const focused = React15.useRef(false);
125928
- const [touched, setTouched] = React15.useState(false);
125929
- const [isFocused, setIsFocused] = React15.useState(false);
125930
- const pendingEdits = React15.useRef([]);
125931
- const previousBoundText = React15.useRef(boundText);
125932
- const previousBoundRawText = React15.useRef(boundRawText);
125933
- React15.useEffect(() => {
126185
+ const focused = React16.useRef(false);
126186
+ const [touched, setTouched] = React16.useState(false);
126187
+ const [isFocused, setIsFocused] = React16.useState(false);
126188
+ const pendingEdits = React16.useRef([]);
126189
+ const previousBoundText = React16.useRef(boundText);
126190
+ const previousBoundRawText = React16.useRef(boundRawText);
126191
+ React16.useEffect(() => {
125934
126192
  if (!isBound || boundText === void 0) return;
125935
126193
  const boundTextChanged = previousBoundText.current !== boundText;
125936
126194
  const boundRawTextChanged = previousBoundRawText.current !== boundRawText;
@@ -125962,23 +126220,23 @@ var init_renderNode = __esm({
125962
126220
  }
125963
126221
  if (!focused.current && boundText !== local && changes.current?.pending == null) setLocal(boundText);
125964
126222
  }, [boundText, serializeRichText ? boundRawText : void 0, isFocused, serializeRichText ? edited : false]);
125965
- const formBag = React15.useContext(FormValuesContext);
126223
+ const formBag = React16.useContext(FormValuesContext);
125966
126224
  const fieldId = props.__formFieldId;
125967
- const previousBinding = React15.useRef(binding2);
126225
+ const previousBinding = React16.useRef(binding2);
125968
126226
  const rule = props.validation ?? cfg.validation;
125969
126227
  const { "aria-labelledby": labelledBy } = formFieldA11y(props);
125970
126228
  const required3 = rule?.required === true || void 0;
125971
- const ruleKey = React15.useMemo(() => rule ? JSON.stringify(rule) : "", [rule]);
125972
- React15.useEffect(() => {
126229
+ const ruleKey = React16.useMemo(() => rule ? JSON.stringify(rule) : "", [rule]);
126230
+ React16.useEffect(() => {
125973
126231
  if (!formBag || !fieldId) return;
125974
126232
  formBag.register(fieldId, rule);
125975
126233
  return () => formBag.unregister(fieldId);
125976
126234
  }, [fieldId, formBag, ruleKey]);
125977
126235
  const formValue = serializeRichText && !edited && pristineRichValue !== void 0 ? pristineRichValue : serializeRichText ? richTextEditedHtml(pristineRichValue, pristineRichValue === void 0 ? "" : richTextHtmlToPlainText(pristineRichValue), local) : local;
125978
- React15.useEffect(() => {
126236
+ React16.useEffect(() => {
125979
126237
  if (formBag && fieldId) formBag.set(fieldId, formValue);
125980
126238
  }, [formValue, fieldId, formBag, binding2]);
125981
- React15.useEffect(() => {
126239
+ React16.useEffect(() => {
125982
126240
  if (previousBinding.current === binding2) return;
125983
126241
  previousBinding.current = binding2;
125984
126242
  pendingEdits.current = [];
@@ -125997,7 +126255,7 @@ var init_renderNode = __esm({
125997
126255
  const errorTextRaw = props.errorText ?? cfg.errorText;
125998
126256
  const errorTextResolved = useBoundString(errorTextRaw, ctx);
125999
126257
  const workerError = typeof boundError === "string" ? boundError : errorTextRaw == null ? void 0 : errorTextResolved;
126000
- const validationCatalog = React15.useMemo(
126258
+ const validationCatalog = React16.useMemo(
126001
126259
  () => ctx.catalog ? new Proxy({}, { get: (_t2, k2) => typeof k2 === "string" ? ctx.catalog.get(k2) : void 0 }) : void 0,
126002
126260
  [ctx.catalog]
126003
126261
  );
@@ -126012,7 +126270,7 @@ var init_renderNode = __esm({
126012
126270
  const hasWorkerError = Boolean(workerError && workerError.trim());
126013
126271
  const painted2 = rawMessage === null ? "" : translateOnly(rawMessage);
126014
126272
  const message2 = !painted2.trim() || ruleMessagePending && !hasWorkerError ? null : painted2;
126015
- const [feedbackShown, setFeedbackShown] = React15.useState(false);
126273
+ const [feedbackShown, setFeedbackShown] = React16.useState(false);
126016
126274
  const revealed = message2 !== null && shouldRevealError({
126017
126275
  rule,
126018
126276
  feedbackShown,
@@ -126021,11 +126279,11 @@ var init_renderNode = __esm({
126021
126279
  focused: isFocused,
126022
126280
  submitAttempted: formBag?.submitAttempted ?? false
126023
126281
  });
126024
- React15.useEffect(() => {
126282
+ React16.useEffect(() => {
126025
126283
  if (revealed) setFeedbackShown(true);
126026
126284
  }, [revealed]);
126027
126285
  const errored = erroredProp || revealed;
126028
- const generatedId = React15.useId();
126286
+ const generatedId = React16.useId();
126029
126287
  const errorId = revealed ? `${componentId ?? generatedId}__error` : void 0;
126030
126288
  const emit = (v2) => {
126031
126289
  if (onChangeAction && ctx.onAction) {
@@ -126038,23 +126296,23 @@ var init_renderNode = __esm({
126038
126296
  }
126039
126297
  };
126040
126298
  const changeDebounceMs = typeof props.debounceMs === "number" ? props.debounceMs : typeof cfg.debounceMs === "number" ? cfg.debounceMs : 0;
126041
- const changes = React15.useRef(null);
126299
+ const changes = React16.useRef(null);
126042
126300
  if (!changes.current) changes.current = new ChangeDebouncer();
126043
- React15.useEffect(() => () => changes.current?.drop(), []);
126301
+ React16.useEffect(() => () => changes.current?.drop(), []);
126044
126302
  const emitNow = (v2) => {
126045
126303
  changes.current?.drop();
126046
126304
  emit(v2);
126047
126305
  };
126048
- const ownsPrivateDraft = React15.useRef(false);
126049
- React15.useEffect(() => {
126306
+ const ownsPrivateDraft = React16.useRef(false);
126307
+ React16.useEffect(() => {
126050
126308
  if (visibilityToggle && !isBound) ownsPrivateDraft.current = true;
126051
126309
  }, [visibilityToggle, isBound]);
126052
- const clearSensitiveDraft = React15.useRef(() => {
126310
+ const clearSensitiveDraft = React16.useRef(() => {
126053
126311
  });
126054
126312
  clearSensitiveDraft.current = () => {
126055
126313
  if (ownsPrivateDraft.current && !isBound) emitNow("");
126056
126314
  };
126057
- React15.useEffect(() => () => clearSensitiveDraft.current(), []);
126315
+ React16.useEffect(() => () => clearSensitiveDraft.current(), []);
126058
126316
  const onInput = (e2) => {
126059
126317
  const v2 = e2.currentTarget.value;
126060
126318
  setLocal(v2);
@@ -126086,7 +126344,7 @@ var init_renderNode = __esm({
126086
126344
  const submitLabelRaw = props.submitLabel ?? cfg.submitLabel;
126087
126345
  const onSubmitAction = props.onSubmit ?? cfg.onSubmit;
126088
126346
  const enterKeyHint = !multilineBox && ENTER_KEY_HINTS.has(submitLabelRaw) ? submitLabelRaw : !multilineBox && onSubmitAction ? "done" : void 0;
126089
- const inputRef = React15.useRef(null);
126347
+ const inputRef = React16.useRef(null);
126090
126348
  useIsomorphicLayoutEffect(() => {
126091
126349
  const el2 = inputRef.current;
126092
126350
  const view = el2?.ownerDocument?.defaultView;
@@ -126101,8 +126359,8 @@ var init_renderNode = __esm({
126101
126359
  }, [local, multilineBox, maxLines]);
126102
126360
  const focusBinding = (typeof props.focusPath === "string" ? props.focusPath : typeof cfg.focusPath === "string" ? cfg.focusPath : void 0) ?? "";
126103
126361
  const focusTokenVal = useBoundValue(ctx, focusBinding);
126104
- const lastFocusToken = React15.useRef(void 0);
126105
- React15.useEffect(() => {
126362
+ const lastFocusToken = React16.useRef(void 0);
126363
+ React16.useEffect(() => {
126106
126364
  if (!focusBinding) return;
126107
126365
  const next = typeof focusTokenVal === "string" ? focusTokenVal : typeof focusTokenVal === "number" ? String(focusTokenVal) : "";
126108
126366
  if (!next || next === lastFocusToken.current) return;
@@ -126178,8 +126436,8 @@ var init_renderNode = __esm({
126178
126436
  };
126179
126437
  MENU_ANCHOR_CONTROL = 'a[href], button, input, select, textarea, [tabindex]:not([tabindex="-1"]), [role="button"], [role="link"]';
126180
126438
  MenuNode = withExtras("MenuNode", ({ props, ctx, wrap }) => {
126181
- const [open, setOpen] = React15.useState(false);
126182
- const hostRef = React15.useRef(null);
126439
+ const [open, setOpen] = React16.useState(false);
126440
+ const hostRef = React16.useRef(null);
126183
126441
  const context = menuOpensOnLongPress(props.style);
126184
126442
  const itemsPath = typeof props.itemsPath === "string" && props.itemsPath.startsWith("$service:") ? props.itemsPath : "";
126185
126443
  const boundItems = useBoundValue(ctx, itemsPath);
@@ -126187,7 +126445,7 @@ var init_renderNode = __esm({
126187
126445
  const previewMode = context && props.preview != null;
126188
126446
  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 }));
126189
126447
  const C2 = ctx.color;
126190
- React15.useEffect(() => {
126448
+ React16.useEffect(() => {
126191
126449
  if (!open) return;
126192
126450
  const onTop = () => menuRef.current != null && isWithinTopModal(menuRef.current);
126193
126451
  const onDown = (e2) => {
@@ -126213,11 +126471,11 @@ var init_renderNode = __esm({
126213
126471
  const flexGrow = typeof wrap?.flex === "string" ? parseFloat(wrap.flex) : typeof wrap?.flex === "number" ? wrap.flex : Number(wrap?.flexGrow ?? 0);
126214
126472
  const fill = wrap?.width === "100%" || Number.isFinite(flexGrow) && flexGrow > 0;
126215
126473
  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 };
126216
- const anchorRef = React15.useRef(null);
126217
- const menuRef = React15.useRef(null);
126218
- const dialogRef = React15.useRef(null);
126219
- const [popupAlignLeft, setPopupAlignLeft] = React15.useState(false);
126220
- const [popupAbove, setPopupAbove] = React15.useState(false);
126474
+ const anchorRef = React16.useRef(null);
126475
+ const menuRef = React16.useRef(null);
126476
+ const dialogRef = React16.useRef(null);
126477
+ const [popupAlignLeft, setPopupAlignLeft] = React16.useState(false);
126478
+ const [popupAbove, setPopupAbove] = React16.useState(false);
126221
126479
  useIsomorphicLayoutEffect(() => {
126222
126480
  if (!open || !anchorRef.current || !menuRef.current) return;
126223
126481
  const anchor = anchorRef.current.getBoundingClientRect();
@@ -126239,8 +126497,8 @@ var init_renderNode = __esm({
126239
126497
  setPopupAlignLeft(anchor.right - popup.width < left);
126240
126498
  setPopupAbove(anchor.bottom + popup.height + 4 > bottom && anchor.top - popup.height - 4 >= top);
126241
126499
  });
126242
- const [innerControl, setInnerControl] = React15.useState(null);
126243
- const innerControlRef = React15.useRef(null);
126500
+ const [innerControl, setInnerControl] = React16.useState(null);
126501
+ const innerControlRef = React16.useRef(null);
126244
126502
  useIsomorphicLayoutEffect(() => {
126245
126503
  const anchor = anchorRef.current;
126246
126504
  const refresh = () => {
@@ -126256,7 +126514,7 @@ var init_renderNode = __esm({
126256
126514
  observer.observe(anchor, { childList: true, subtree: true, attributes: true, attributeFilter: ["disabled", "tabindex", "href", "role"] });
126257
126515
  return () => observer.disconnect();
126258
126516
  });
126259
- React15.useEffect(() => {
126517
+ React16.useEffect(() => {
126260
126518
  if (!innerControl) return;
126261
126519
  innerControl.setAttribute("aria-haspopup", "menu");
126262
126520
  innerControl.setAttribute("aria-expanded", String(open));
@@ -126268,13 +126526,13 @@ var init_renderNode = __esm({
126268
126526
  };
126269
126527
  }, [innerControl, open]);
126270
126528
  const itemsKey = items.map((it2, i2) => `${it2?.id ?? i2}:${it2?.disabled ? 0 : 1}`).join("|");
126271
- React15.useEffect(() => {
126529
+ React16.useEffect(() => {
126272
126530
  if (!open || !modal) return;
126273
126531
  const menu = menuRef.current;
126274
126532
  if (!menu || menu.contains(document.activeElement)) return;
126275
126533
  (menu.querySelector('[role="menuitem"][tabindex="0"]') ?? menu).focus();
126276
126534
  }, [open, modal, itemsKey]);
126277
- React15.useEffect(() => {
126535
+ React16.useEffect(() => {
126278
126536
  if (!open || !modal) return;
126279
126537
  const layer = pushModalLayer(() => dialogRef.current);
126280
126538
  return () => {
@@ -126296,11 +126554,11 @@ var init_renderNode = __esm({
126296
126554
  e2.preventDefault();
126297
126555
  items2[next].focus();
126298
126556
  };
126299
- const pressTimer = React15.useRef(null);
126300
- const longPressed = React15.useRef(false);
126301
- const touchOrigin = React15.useRef(null);
126302
- const suppressNextClick = React15.useRef(false);
126303
- const suppressTimer = React15.useRef(null);
126557
+ const pressTimer = React16.useRef(null);
126558
+ const longPressed = React16.useRef(false);
126559
+ const touchOrigin = React16.useRef(null);
126560
+ const suppressNextClick = React16.useRef(false);
126561
+ const suppressTimer = React16.useRef(null);
126304
126562
  const clearSuppress = () => {
126305
126563
  suppressNextClick.current = false;
126306
126564
  if (suppressTimer.current != null) {
@@ -126314,7 +126572,7 @@ var init_renderNode = __esm({
126314
126572
  pressTimer.current = null;
126315
126573
  }
126316
126574
  };
126317
- React15.useEffect(() => () => {
126575
+ React16.useEffect(() => () => {
126318
126576
  cancelPress();
126319
126577
  clearSuppress();
126320
126578
  }, []);
@@ -126476,15 +126734,15 @@ var init_renderNode = __esm({
126476
126734
  MENU_LONG_PRESS_MS = 500;
126477
126735
  menuOpensOnLongPress = (style) => style === "context";
126478
126736
  LoadMoreSentinel = ({ ctx, pagination, style }) => {
126479
- const owned = React15.useContext(PageCycleContext);
126737
+ const owned = React16.useContext(PageCycleContext);
126480
126738
  const own6 = usePageCycle(ctx, owned ? void 0 : pagination?.cursor);
126481
126739
  const pages2 = owned ?? own6;
126482
126740
  const cycle = usePageCycleId(pages2);
126483
126741
  const cursor = pages2.cursor;
126484
126742
  const action = pagination.onLoadMore ?? pagination.on_load_more;
126485
126743
  const workerTap = useWorkerTap(action);
126486
- const ref = React15.useRef(null);
126487
- React15.useEffect(() => {
126744
+ const ref = React16.useRef(null);
126745
+ React16.useEffect(() => {
126488
126746
  const el2 = ref.current;
126489
126747
  if (!cursor || !ctx.onAction || !el2 || typeof IntersectionObserver === "undefined") return;
126490
126748
  let live3 = true;
@@ -126521,11 +126779,11 @@ var init_renderNode = __esm({
126521
126779
  ] });
126522
126780
  });
126523
126781
  FormView = withExtras("FormView", ({ props, ctx, wrap }) => {
126524
- const bagRef = React15.useRef(null);
126782
+ const bagRef = React16.useRef(null);
126525
126783
  if (!bagRef.current) bagRef.current = createFormBag();
126526
126784
  const bag = bagRef.current;
126527
- React15.useSyncExternalStore(
126528
- React15.useCallback((cb) => bag.subscribe(cb), [bag]),
126785
+ React16.useSyncExternalStore(
126786
+ React16.useCallback((cb) => bag.subscribe(cb), [bag]),
126529
126787
  () => bag.version,
126530
126788
  () => bag.version
126531
126789
  );
@@ -126542,7 +126800,7 @@ var init_renderNode = __esm({
126542
126800
  ctx.onAction?.({ ...action, args: merged });
126543
126801
  }
126544
126802
  };
126545
- const submitNode = React15.useMemo(() => {
126803
+ const submitNode = React16.useMemo(() => {
126546
126804
  const node = props.submitButton;
126547
126805
  if (!node || valid) return node;
126548
126806
  if (node.body) return { ...node, body: { ...node.body, props: { ...node.body.props ?? {}, disabled: true } } };
@@ -126592,11 +126850,11 @@ var init_renderNode = __esm({
126592
126850
  const startPositionPath = typeof props.startPositionSeconds === "string" && isBinding(props.startPositionSeconds) ? props.startPositionSeconds : "";
126593
126851
  const boundStartPosition = useResolvedScalar(startPositionPath || void 0, ctx);
126594
126852
  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);
126595
- const [index, setIndex] = React15.useState(initialIndex);
126853
+ const [index, setIndex] = React16.useState(initialIndex);
126596
126854
  const queueReady = !itemsPath || Array.isArray(boundQueue);
126597
126855
  const seatKey = `${itemsPath ?? ""}|${startIndex}`;
126598
- const seated = React15.useRef(null);
126599
- React15.useEffect(() => {
126856
+ const seated = React16.useRef(null);
126857
+ React16.useEffect(() => {
126600
126858
  const last = Math.max(0, resolvedItems.length - 1);
126601
126859
  if (resolvedItems.length === 0) return;
126602
126860
  if (queueReady && seated.current !== seatKey) {
@@ -126611,19 +126869,19 @@ var init_renderNode = __esm({
126611
126869
  }
126612
126870
  setIndex((i2) => Math.min(Math.max(0, i2), last));
126613
126871
  }, [resolvedItems.length, startIndex, queueReady, seatKey]);
126614
- const [status, setStatus] = React15.useState("idle");
126615
- const [position, setPosition] = React15.useState(initialStartPosition);
126616
- const [duration2, setDuration] = React15.useState(0);
126617
- const [buffered, setBuffered] = React15.useState(0);
126618
- const [rate, setRateState] = React15.useState(1);
126619
- const [fullscreen, setFullscreen] = React15.useState(false);
126620
- const [error, setError] = React15.useState("");
126621
- const mediaRef = React15.useRef(null);
126622
- const hostRef = React15.useRef(null);
126623
- const autoplayConsumed = React15.useRef(false);
126872
+ const [status, setStatus] = React16.useState("idle");
126873
+ const [position, setPosition] = React16.useState(initialStartPosition);
126874
+ const [duration2, setDuration] = React16.useState(0);
126875
+ const [buffered, setBuffered] = React16.useState(0);
126876
+ const [rate, setRateState] = React16.useState(1);
126877
+ const [fullscreen, setFullscreen] = React16.useState(false);
126878
+ const [error, setError] = React16.useState("");
126879
+ const mediaRef = React16.useRef(null);
126880
+ const hostRef = React16.useRef(null);
126881
+ const autoplayConsumed = React16.useRef(false);
126624
126882
  const item = resolvedItems[index];
126625
126883
  const mediaKey2 = `${index}:${item?.id ?? item?.url ?? ""}`;
126626
- React15.useEffect(() => {
126884
+ React16.useEffect(() => {
126627
126885
  const outgoing = mediaRef.current;
126628
126886
  return () => {
126629
126887
  try {
@@ -126637,7 +126895,7 @@ var init_renderNode = __esm({
126637
126895
  const isYouTube = provider === "youtube";
126638
126896
  const isUnsupportedProvider = provider !== "direct" && !isYouTube;
126639
126897
  const isAudio = ["audio", "podcast", "radio"].includes(String(item?.kind ?? ""));
126640
- const capabilities = React15.useMemo(() => ({
126898
+ const capabilities = React16.useMemo(() => ({
126641
126899
  seek: !isUnsupportedProvider && item?.live !== true,
126642
126900
  rate: !isUnsupportedProvider && item?.live !== true,
126643
126901
  queue: !isUnsupportedProvider && items.length > 1,
@@ -126665,9 +126923,9 @@ var init_renderNode = __esm({
126665
126923
  error,
126666
126924
  capabilities
126667
126925
  };
126668
- const slotProvider = React15.useMemo(() => new MediaSlotProvider(state), []);
126669
- React15.useEffect(() => slotProvider.set(state));
126670
- React15.useEffect(() => {
126926
+ const slotProvider = React16.useMemo(() => new MediaSlotProvider(state), []);
126927
+ React16.useEffect(() => slotProvider.set(state));
126928
+ React16.useEffect(() => {
126671
126929
  if (!startPositionPath || typeof boundStartPosition !== "number" || !Number.isFinite(boundStartPosition) || status !== "idle") return;
126672
126930
  const next = Math.max(0, boundStartPosition);
126673
126931
  setPosition(next);
@@ -126678,7 +126936,7 @@ var init_renderNode = __esm({
126678
126936
  }
126679
126937
  }
126680
126938
  }, [startPositionPath, boundStartPosition, status]);
126681
- const emit = React15.useCallback((action, extra = {}) => {
126939
+ const emit = React16.useCallback((action, extra = {}) => {
126682
126940
  if (!action || !ctx.onAction) return;
126683
126941
  const snapshot4 = {
126684
126942
  sessionId,
@@ -126697,13 +126955,13 @@ var init_renderNode = __esm({
126697
126955
  };
126698
126956
  ctx.onAction({ ...action, args: { ...action.args ?? {}, ...snapshot4, ...extra }, params: { ...action.params ?? {}, sessionId, index: String(index), ...Object.fromEntries(Object.entries(extra).map(([k2, v2]) => [k2, String(v2)])) } });
126699
126957
  }, [ctx.onAction, sessionId, status, index, position, duration2, item, buffered, rate, props.muted, fullscreen, error]);
126700
- React15.useEffect(() => {
126958
+ React16.useEffect(() => {
126701
126959
  if (!isUnsupportedProvider || status === "error") return;
126702
126960
  setStatus("error");
126703
126961
  setError("provider_unsupported");
126704
126962
  emit(props.onError, { state: "error", status: "error", error: "provider_unsupported", code: "provider_unsupported" });
126705
126963
  }, [isUnsupportedProvider, status, emit, props.onError]);
126706
- const play = React15.useCallback(async () => {
126964
+ const play = React16.useCallback(async () => {
126707
126965
  if (isYouTube) return;
126708
126966
  if (isUnsupportedProvider) {
126709
126967
  setStatus("error");
@@ -126725,17 +126983,17 @@ var init_renderNode = __esm({
126725
126983
  emit(props.onError, { state: "blocked", status: "blocked", error: message2, code: "playback_blocked" });
126726
126984
  }
126727
126985
  }, [isYouTube, isUnsupportedProvider, emit, props.onError]);
126728
- const pause = React15.useCallback(() => {
126986
+ const pause = React16.useCallback(() => {
126729
126987
  mediaRef.current?.pause();
126730
126988
  setStatus("paused");
126731
126989
  }, []);
126732
- const seek = React15.useCallback((seconds) => {
126990
+ const seek = React16.useCallback((seconds) => {
126733
126991
  const media = mediaRef.current;
126734
126992
  if (!media || !Number.isFinite(seconds)) return;
126735
126993
  media.currentTime = Math.max(0, Math.min(seconds, Number.isFinite(media.duration) ? media.duration : seconds));
126736
126994
  setPosition(media.currentTime);
126737
126995
  }, []);
126738
- const select2 = React15.useCallback((next) => {
126996
+ const select2 = React16.useCallback((next) => {
126739
126997
  if (resolvedItems.length === 0) return;
126740
126998
  const normalized = (next % resolvedItems.length + resolvedItems.length) % resolvedItems.length;
126741
126999
  const nextItem = resolvedItems[normalized];
@@ -126757,7 +127015,7 @@ var init_renderNode = __esm({
126757
127015
  error: ""
126758
127016
  });
126759
127017
  }, [resolvedItems, emit, props.onItemChange]);
126760
- const toggleFullscreen = React15.useCallback(async () => {
127018
+ const toggleFullscreen = React16.useCallback(async () => {
126761
127019
  if (props.fullscreen === "disabled") return;
126762
127020
  const host = hostRef.current;
126763
127021
  try {
@@ -126767,7 +127025,7 @@ var init_renderNode = __esm({
126767
127025
  setFullscreen((value2) => !value2);
126768
127026
  }
126769
127027
  }, [props.fullscreen]);
126770
- React15.useEffect(() => {
127028
+ React16.useEffect(() => {
126771
127029
  const listener = (event) => {
126772
127030
  const detail = event.detail;
126773
127031
  if (!detail || detail.sessionId !== sessionId) return;
@@ -126815,7 +127073,7 @@ var init_renderNode = __esm({
126815
127073
  window.addEventListener("himalaya-media-command", listener);
126816
127074
  return () => window.removeEventListener("himalaya-media-command", listener);
126817
127075
  }, [sessionId, index, play, pause, seek, select2, toggleFullscreen]);
126818
- React15.useEffect(() => {
127076
+ React16.useEffect(() => {
126819
127077
  const listener = () => {
126820
127078
  const value2 = document.fullscreenElement === hostRef.current;
126821
127079
  setFullscreen(value2);
@@ -126824,14 +127082,14 @@ var init_renderNode = __esm({
126824
127082
  document.addEventListener("fullscreenchange", listener);
126825
127083
  return () => document.removeEventListener("fullscreenchange", listener);
126826
127084
  }, [emit, props.onFullscreenChange]);
126827
- React15.useEffect(() => {
127085
+ React16.useEffect(() => {
126828
127086
  const media = mediaRef.current;
126829
127087
  if (!media || isYouTube || isUnsupportedProvider) return;
126830
127088
  media.muted = props.muted === true;
126831
127089
  media.playbackRate = rate;
126832
127090
  if (position > 0) media.currentTime = position;
126833
127091
  }, [item?.url, isUnsupportedProvider]);
126834
- React15.useEffect(() => {
127092
+ React16.useEffect(() => {
126835
127093
  if (isYouTube || isUnsupportedProvider || props.autoplay === "never" || autoplayConsumed.current) return;
126836
127094
  if (props.autoplay === "once") {
126837
127095
  autoplayConsumed.current = true;
@@ -127033,15 +127291,15 @@ var init_renderNode = __esm({
127033
127291
  }
127034
127292
  );
127035
127293
  });
127036
- PdfDocumentCanvas = React15.lazy(() => Promise.resolve().then(() => (init_pdfDocument(), pdfDocument_exports)).then((module) => ({ default: module.PdfDocument })));
127294
+ PdfDocumentCanvas = React16.lazy(() => Promise.resolve().then(() => (init_pdfDocument(), pdfDocument_exports)).then((module) => ({ default: module.PdfDocument })));
127037
127295
  PdfViewNode = withExtras("PdfViewNode", ({ props, ctx, wrap }) => {
127038
127296
  const boundUrl = useResolvedScalar(props.url != null && isBinding(props.url) ? props.url : void 0, ctx);
127039
127297
  const url = props.url != null && isBinding(props.url) ? boundUrl : props.url;
127040
127298
  const rawUrl = typeof url === "string" && !isBinding(url) ? url : "";
127041
127299
  const plan = rawUrl ? pdfEmbedPlan(rawUrl, void 0, typeof document !== "undefined" ? document.baseURI : void 0) : null;
127042
127300
  const retypeSrc = plan?.mode === "retype" ? plan.src : null;
127043
- const [retyped, setRetyped] = React15.useState(null);
127044
- React15.useEffect(() => {
127301
+ const [retyped, setRetyped] = React16.useState(null);
127302
+ React16.useEffect(() => {
127045
127303
  if (!retypeSrc) return;
127046
127304
  let live3 = true;
127047
127305
  let made = null;
@@ -127063,11 +127321,11 @@ var init_renderNode = __esm({
127063
127321
  }, [retypeSrc]);
127064
127322
  const settled = retyped && retyped.from === retypeSrc ? retyped : null;
127065
127323
  const wantsShare = props.allowShare === true;
127066
- const [fellBackFrom, setFellBackFrom] = React15.useState(null);
127324
+ const [fellBackFrom, setFellBackFrom] = React16.useState(null);
127067
127325
  const directFellBack = plan?.mode === "direct" && fellBackFrom === plan.src;
127068
127326
  const directSrc = plan?.mode === "direct" && (wantsShare || props.showPageControls !== false && directFellBack) ? plan.src : null;
127069
- const [direct, setDirect] = React15.useState(null);
127070
- React15.useEffect(() => {
127327
+ const [direct, setDirect] = React16.useState(null);
127328
+ React16.useEffect(() => {
127071
127329
  if (!directSrc) return;
127072
127330
  let live3 = true;
127073
127331
  let made = null;
@@ -127084,16 +127342,16 @@ var init_renderNode = __esm({
127084
127342
  }, [directSrc, wantsShare]);
127085
127343
  const directDoc = direct && direct.from === directSrc ? direct : null;
127086
127344
  const fallbackPageCount = plan?.mode === "retype" ? settled?.pageCount ?? null : directDoc?.count ?? null;
127087
- const [nav, setNav] = React15.useState({ from: rawUrl, page: null, zoom: null });
127345
+ const [nav, setNav] = React16.useState({ from: rawUrl, page: null, zoom: null });
127088
127346
  const view = nav.from === rawUrl ? nav : { from: rawUrl, page: null, zoom: null };
127089
127347
  const src = plan?.mode === "direct" ? plan.src : settled?.url ?? null;
127090
- const [canvasCount, setCanvasCount] = React15.useState(null);
127091
- const onPageCount = React15.useCallback((count2) => {
127348
+ const [canvasCount, setCanvasCount] = React16.useState(null);
127349
+ const onPageCount = React16.useCallback((count2) => {
127092
127350
  if (!Number.isInteger(count2) || count2 < 1) return;
127093
127351
  setCanvasCount((cur) => cur?.from === src && cur.count === count2 ? cur : { from: src, count: count2 });
127094
127352
  }, [src]);
127095
127353
  const pageCount = canvasCount?.from === src ? canvasCount.count : fallbackPageCount;
127096
- const onFallback = React15.useCallback(() => setFellBackFrom(src), [src]);
127354
+ const onFallback = React16.useCallback(() => setFellBackFrom(src), [src]);
127097
127355
  const loading = plan?.mode === "retype" && !settled || directSrc != null && wantsShare && !directDoc && typeof window !== "undefined";
127098
127356
  const loadSrc = plan?.mode === "direct" && wantsShare ? directDoc?.blobUrl ?? src : src;
127099
127357
  const ph = typeof props.height === "number" && props.height > 0 ? props.height : void 0;
@@ -127143,7 +127401,7 @@ var init_renderNode = __esm({
127143
127401
  const data = base + pdfOpenFragment(sourceHash, { page, zoom: zoomable ? view.zoom : null, fitWidth: !zoomable });
127144
127402
  const label3 = typeof props.title === "string" && props.title ? props.title : "PDF document";
127145
127403
  const documentStyle = showPageControls || zoomable || allowShare ? { display: "block", width: "100%", flex: "1 1 auto", minHeight: ph ? 0 : 280, border: "none" } : frame;
127146
- const object12 = typeof window === "undefined" ? /* @__PURE__ */ jsx11("object", { "data-himalaya-pdf": "static-fallback", data, type: "application/pdf", "aria-label": label3, style: documentStyle }) : /* @__PURE__ */ jsx11(React15.Suspense, { fallback: /* @__PURE__ */ jsx11("div", { "data-himalaya-pdf": "loading", role: "img", "aria-label": "loading document", "aria-busy": "true", style: documentStyle }), children: /* @__PURE__ */ jsx11(
127404
+ const object12 = typeof window === "undefined" ? /* @__PURE__ */ jsx11("object", { "data-himalaya-pdf": "static-fallback", data, type: "application/pdf", "aria-label": label3, style: documentStyle }) : /* @__PURE__ */ jsx11(React16.Suspense, { fallback: /* @__PURE__ */ jsx11("div", { "data-himalaya-pdf": "loading", role: "img", "aria-label": "loading document", "aria-busy": "true", style: documentStyle }), children: /* @__PURE__ */ jsx11(
127147
127405
  PdfDocumentCanvas,
127148
127406
  {
127149
127407
  src: loadSrc ?? src,
@@ -127225,7 +127483,7 @@ var init_renderNode = __esm({
127225
127483
  const ar2 = typeof props.aspectRatio === "number" && props.aspectRatio > 0 ? props.aspectRatio : void 0;
127226
127484
  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 } };
127227
127485
  const reloadValue = reloadKeyOf(useResolvedScalar(props.reloadKeyPath != null && isBinding(props.reloadKeyPath) ? props.reloadKeyPath : void 0, ctx));
127228
- const reloadState = React15.useRef({ base: null, epoch: 0 });
127486
+ const reloadState = React16.useRef({ base: null, epoch: 0 });
127229
127487
  if (reloadValue !== null && reloadValue !== reloadState.current.base) {
127230
127488
  if (reloadState.current.base !== null) reloadState.current.epoch++;
127231
127489
  reloadState.current.base = reloadValue;
@@ -127233,11 +127491,11 @@ var init_renderNode = __esm({
127233
127491
  const reloadKey = reloadState.current.epoch > 0 ? String(reloadState.current.epoch) : "";
127234
127492
  const sourceKey = htmlStr ?? urlFrame?.src ?? null;
127235
127493
  const frameKey = sourceKey == null ? null : reloadKey ? `${sourceKey}\0${reloadKey}` : sourceKey;
127236
- const [loadedKey, setLoadedKey] = React15.useState(null);
127494
+ const [loadedKey, setLoadedKey] = React16.useState(null);
127237
127495
  const loaded2 = loadedKey === frameKey;
127238
127496
  const bridgeChannel = props.bridge === "worker" ? webViewChannelOf(ctx.provider) : null;
127239
- const frameRef = React15.useRef(null);
127240
- const bridgeLoad = React15.useRef({ loaded: false });
127497
+ const frameRef = React16.useRef(null);
127498
+ const bridgeLoad = React16.useRef({ loaded: false });
127241
127499
  if (bridgeLoad.current.key !== frameKey) {
127242
127500
  bridgeLoad.current.key = frameKey;
127243
127501
  bridgeLoad.current.loaded = false;
@@ -127261,7 +127519,7 @@ var init_renderNode = __esm({
127261
127519
  return /* @__PURE__ */ jsxs9("div", { ...{ [ROLE_WHEN_NAMED]: "group" }, 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: [
127262
127520
  bandColor ? /* @__PURE__ */ jsx11("div", { "data-testid": "webview-cover-band", style: { height: 8, background: bandColor } }) : null,
127263
127521
  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)" }),
127264
- bridgeChannel ? /* @__PURE__ */ jsx11(React15.Suspense, { fallback: null, children: /* @__PURE__ */ jsx11(
127522
+ bridgeChannel ? /* @__PURE__ */ jsx11(React16.Suspense, { fallback: null, children: /* @__PURE__ */ jsx11(
127265
127523
  WebViewBridgeHost2,
127266
127524
  {
127267
127525
  channel: bridgeChannel,
@@ -127291,19 +127549,19 @@ var init_renderNode = __esm({
127291
127549
  const onChange = props.onChange;
127292
127550
  const boundSel = useResolvedScalar(isBinding(props.selectedId) ? props.selectedId : void 0, ctx);
127293
127551
  const selectedId = isBinding(props.selectedId) ? boundSel : props.selectedId;
127294
- const [sel, setSel] = React15.useState(ctx.empty ? "" : String(selectedId ?? ""));
127295
- React15.useEffect(() => {
127552
+ const [sel, setSel] = React16.useState(ctx.empty ? "" : String(selectedId ?? ""));
127553
+ React16.useEffect(() => {
127296
127554
  if (!ctx.empty && selectedId != null) setSel(String(selectedId));
127297
127555
  }, [selectedId, ctx.empty]);
127298
- const pickerBag = React15.useContext(FormValuesContext);
127556
+ const pickerBag = React16.useContext(FormValuesContext);
127299
127557
  const pickerFieldId = props.__formFieldId;
127300
127558
  const pickerRuleKey = props.validation ? JSON.stringify(props.validation) : "";
127301
- React15.useEffect(() => {
127559
+ React16.useEffect(() => {
127302
127560
  if (!pickerBag || !pickerFieldId) return;
127303
127561
  pickerBag.register(pickerFieldId, props.validation);
127304
127562
  return () => pickerBag.unregister(pickerFieldId);
127305
127563
  }, [pickerFieldId, pickerBag, pickerRuleKey]);
127306
- React15.useEffect(() => {
127564
+ React16.useEffect(() => {
127307
127565
  if (pickerBag && pickerFieldId) pickerBag.set(pickerFieldId, sel);
127308
127566
  }, [sel, pickerFieldId, pickerBag]);
127309
127567
  const emitPick = (id) => {
@@ -127419,24 +127677,24 @@ var init_renderNode = __esm({
127419
127677
  const s2 = seedUnix();
127420
127678
  return s2 == null ? null : clampUnix(s2);
127421
127679
  };
127422
- const [val, setVal] = React15.useState(ctx.empty ? "" : toInput(shownSeed()));
127680
+ const [val, setVal] = React16.useState(ctx.empty ? "" : toInput(shownSeed()));
127423
127681
  const dateServiceBound = typeof props.valuePath === "string" && props.valuePath.startsWith("$service:");
127424
127682
  const bagSource = () => dateServiceBound ? boundRaw : boundRaw !== void 0 && boundRaw !== null && boundRaw !== "" ? boundRaw : props.valueUnix;
127425
- const [dateBagVal, setDateBagVal] = React15.useState(ctx.empty ? "" : clampDateFieldValue(encodeDateFieldValue(bagSource()), props.minUnix, props.maxUnix, props.mode));
127426
- React15.useEffect(() => {
127683
+ const [dateBagVal, setDateBagVal] = React16.useState(ctx.empty ? "" : clampDateFieldValue(encodeDateFieldValue(bagSource()), props.minUnix, props.maxUnix, props.mode));
127684
+ React16.useEffect(() => {
127427
127685
  if (ctx.empty) return;
127428
127686
  setVal(toInput(shownSeed()));
127429
127687
  setDateBagVal(clampDateFieldValue(encodeDateFieldValue(bagSource()), props.minUnix, props.maxUnix, props.mode));
127430
127688
  }, [boundRaw, props.valueUnix, props.valuePath, ctx.empty]);
127431
- const dateBag = React15.useContext(FormValuesContext);
127689
+ const dateBag = React16.useContext(FormValuesContext);
127432
127690
  const dateFieldId = props.__formFieldId;
127433
127691
  const dateRuleKey = props.validation ? JSON.stringify(props.validation) : "";
127434
- React15.useEffect(() => {
127692
+ React16.useEffect(() => {
127435
127693
  if (!dateBag || !dateFieldId) return;
127436
127694
  dateBag.register(dateFieldId, props.validation);
127437
127695
  return () => dateBag.unregister(dateFieldId);
127438
127696
  }, [dateFieldId, dateBag, dateRuleKey]);
127439
- React15.useEffect(() => {
127697
+ React16.useEffect(() => {
127440
127698
  if (dateBag && dateFieldId) dateBag.set(dateFieldId, dateBagVal);
127441
127699
  }, [dateBagVal, dateFieldId, dateBag]);
127442
127700
  if (!ctx.onAction) {
@@ -127505,11 +127763,11 @@ var init_renderNode = __esm({
127505
127763
  const valueBinding = isBinding(props.value) ? props.value : void 0;
127506
127764
  const boundValue = useResolvedScalar(valueBinding, ctx);
127507
127765
  const initialValue2 = ctx.empty ? "" : valueBinding ? boundValue == null ? "" : String(boundValue) : String(props.value ?? "");
127508
- const [local, setLocal] = React15.useState(initialValue2);
127509
- const changes = React15.useRef(null);
127766
+ const [local, setLocal] = React16.useState(initialValue2);
127767
+ const changes = React16.useRef(null);
127510
127768
  if (!changes.current) changes.current = new ChangeDebouncer();
127511
- React15.useEffect(() => () => changes.current?.drop(), []);
127512
- React15.useEffect(() => {
127769
+ React16.useEffect(() => () => changes.current?.drop(), []);
127770
+ React16.useEffect(() => {
127513
127771
  if (ctx.empty || !valueBinding) return;
127514
127772
  const next = boundValue == null ? "" : String(boundValue);
127515
127773
  if (next === "") changes.current?.drop();
@@ -127524,12 +127782,12 @@ var init_renderNode = __esm({
127524
127782
  if (!onChange) return;
127525
127783
  changes.current?.change(v2, debounceMs, (value2) => dispatch(onChange, value2));
127526
127784
  };
127527
- const inputRef = React15.useRef(null);
127785
+ const inputRef = React16.useRef(null);
127528
127786
  const focusBinding = typeof props.focusPath === "string" && props.focusPath.startsWith("$service:") && props.focusPath.length > "$service:".length ? props.focusPath : "";
127529
127787
  const focusTokenVal = useBoundValue(ctx, focusBinding);
127530
- const lastFocusToken = React15.useRef(void 0);
127531
- const lastFocusBinding = React15.useRef(focusBinding);
127532
- React15.useEffect(() => {
127788
+ const lastFocusToken = React16.useRef(void 0);
127789
+ const lastFocusBinding = React16.useRef(focusBinding);
127790
+ React16.useEffect(() => {
127533
127791
  if (lastFocusBinding.current !== focusBinding) {
127534
127792
  lastFocusBinding.current = focusBinding;
127535
127793
  lastFocusToken.current = void 0;
@@ -127582,12 +127840,12 @@ var init_renderNode = __esm({
127582
127840
  const boundValue = useResolvedScalar(props.valuePath, ctx);
127583
127841
  const effectiveValue = props.valuePath != null ? boundValue : props.value;
127584
127842
  const fallbackValue = effectiveValue ?? props.value ?? 0;
127585
- const [value2, setValue] = React15.useState(() => {
127843
+ const [value2, setValue] = React16.useState(() => {
127586
127844
  const seed2 = Number(fallbackValue);
127587
127845
  return Number.isFinite(seed2) ? Math.min(max, Math.max(min, seed2)) : 0;
127588
127846
  });
127589
- const previousFallbackValue = React15.useRef(fallbackValue);
127590
- React15.useEffect(() => {
127847
+ const previousFallbackValue = React16.useRef(fallbackValue);
127848
+ React16.useEffect(() => {
127591
127849
  const fallbackChanged = !Object.is(previousFallbackValue.current, fallbackValue);
127592
127850
  previousFallbackValue.current = fallbackValue;
127593
127851
  const next = Number(fallbackValue);
@@ -127596,25 +127854,25 @@ var init_renderNode = __esm({
127596
127854
  return Math.min(max, Math.max(min, candidate));
127597
127855
  });
127598
127856
  }, [fallbackValue, min, max]);
127599
- const stepperBag = React15.useContext(FormValuesContext);
127857
+ const stepperBag = React16.useContext(FormValuesContext);
127600
127858
  const stepperFieldId = props.__formFieldId;
127601
127859
  const stepperRuleKey = props.validation ? JSON.stringify(props.validation) : "";
127602
- React15.useEffect(() => {
127860
+ React16.useEffect(() => {
127603
127861
  if (!stepperBag || !stepperFieldId) return;
127604
127862
  stepperBag.register(stepperFieldId, props.validation);
127605
127863
  return () => stepperBag.unregister(stepperFieldId);
127606
127864
  }, [stepperFieldId, stepperBag, stepperRuleKey]);
127607
127865
  const serviceBound = typeof props.valuePath === "string" && isBinding(props.valuePath) && props.valuePath.startsWith("$service:");
127608
- const [bagValue, setBagValue] = React15.useState(() => serviceBound ? boundValue != null ? encodeStepperFieldValue(boundValue, { min, max }) : "" : encodeStepperFieldValue(value2, { min, max }));
127609
- React15.useEffect(() => {
127866
+ const [bagValue, setBagValue] = React16.useState(() => serviceBound ? boundValue != null ? encodeStepperFieldValue(boundValue, { min, max }) : "" : encodeStepperFieldValue(value2, { min, max }));
127867
+ React16.useEffect(() => {
127610
127868
  if (!serviceBound || boundValue == null) return;
127611
127869
  setBagValue(encodeStepperFieldValue(boundValue, { min, max }));
127612
127870
  }, [boundValue, serviceBound, min, max]);
127613
- React15.useEffect(() => {
127871
+ React16.useEffect(() => {
127614
127872
  if (serviceBound) return;
127615
127873
  setBagValue(encodeStepperFieldValue(value2, { min, max }));
127616
127874
  }, [value2, serviceBound, min, max]);
127617
- React15.useEffect(() => {
127875
+ React16.useEffect(() => {
127618
127876
  if (stepperBag && stepperFieldId) stepperBag.set(stepperFieldId, bagValue);
127619
127877
  }, [bagValue, stepperFieldId, stepperBag]);
127620
127878
  const dispatch = (next) => {
@@ -127629,7 +127887,7 @@ var init_renderNode = __esm({
127629
127887
  dispatch(next);
127630
127888
  return next;
127631
127889
  };
127632
- const [pressed, setPressed] = React15.useState({ text: "", count: 0 });
127890
+ const [pressed, setPressed] = React16.useState({ text: "", count: 0 });
127633
127891
  const bump = (delta) => commit(value2 + delta);
127634
127892
  const press = (delta) => {
127635
127893
  const next = bump(delta);
@@ -127773,9 +128031,9 @@ var init_renderNode = __esm({
127773
128031
  const items = Array.isArray(props.items) ? props.items : [];
127774
128032
  const gridStagger = ctx.reduceMotion() ? 0 : Number(props.staggerMs ?? props.stagger_ms ?? 0);
127775
128033
  const stagger = (el2, i2) => {
127776
- if (!(gridStagger > 0) || !React15.isValidElement(el2)) return el2;
128034
+ if (!(gridStagger > 0) || !React16.isValidElement(el2)) return el2;
127777
128035
  const prev = el2.props.style ?? {};
127778
- return React15.cloneElement(el2, { style: { ...prev, animationDelay: `${i2 * gridStagger}ms` } });
128036
+ return React16.cloneElement(el2, { style: { ...prev, animationDelay: `${i2 * gridStagger}ms` } });
127779
128037
  };
127780
128038
  const pagination = props.pagination;
127781
128039
  const sentinel = pagination ? /* @__PURE__ */ jsx11(LoadMoreSentinel, { ctx, pagination, style: GRID_SPAN_ALL }) : null;
@@ -127857,13 +128115,13 @@ var init_renderNode = __esm({
127857
128115
  revealProgress = /* @__PURE__ */ new Map();
127858
128116
  countWords = (s2) => s2.split(/\s+/).filter((t2) => t2 !== "").length;
127859
128117
  RevealText = ({ text: text13, reduce, markdownHtml }) => {
127860
- const tokens2 = React15.useMemo(() => text13.split(/(\s+)/).filter((t2) => t2 !== ""), [text13]);
127861
- const total = React15.useMemo(
128118
+ const tokens2 = React16.useMemo(() => text13.split(/(\s+)/).filter((t2) => t2 !== ""), [text13]);
128119
+ const total = React16.useMemo(
127862
128120
  () => markdownHtml != null ? revealHtml(markdownHtml, 0, void 0).total : countWords(text13),
127863
128121
  [text13, markdownHtml]
127864
128122
  );
127865
- const [shown2, setShown] = React15.useState(total);
127866
- const prevRef = React15.useRef(null);
128123
+ const [shown2, setShown] = React16.useState(total);
128124
+ const prevRef = React16.useRef(null);
127867
128125
  useIsomorphicLayoutEffect(() => {
127868
128126
  const prev = prevRef.current;
127869
128127
  prevRef.current = text13;
@@ -127986,8 +128244,8 @@ var init_renderNode = __esm({
127986
128244
  const boundInitials = useResolvedScalar(props.initials != null && isBinding(props.initials) ? props.initials : void 0, ctx);
127987
128245
  const boundAlt = useResolvedScalar(contentDescription, ctx);
127988
128246
  const fadeIn = motionDefaultsAnimate(ctx);
127989
- const [shownSrc, setShownSrc] = React15.useState(null);
127990
- const imgRef = React15.useRef(null);
128247
+ const [shownSrc, setShownSrc] = React16.useState(null);
128248
+ const imgRef = React16.useRef(null);
127991
128249
  const hasSource = props.url != null || props.initials != null || props.asset != null || props.icon != null;
127992
128250
  const banner = fillWidth === true || props.width == null && props.height == null && !props.initials;
127993
128251
  const w2 = banner ? "100%" : props.width ?? 40;
@@ -128001,7 +128259,7 @@ var init_renderNode = __esm({
128001
128259
  const ph = props.placeholder ? C2(props.placeholder, "#e6e6e6") : void 0;
128002
128260
  const imgUrl = props.url != null && isBinding(props.url) ? boundUrl : props.url;
128003
128261
  const imgInitials = props.initials != null && isBinding(props.initials) ? boundInitials : props.initials;
128004
- const [failedSrc, setFailedSrc] = React15.useState(null);
128262
+ const [failedSrc, setFailedSrc] = React16.useState(null);
128005
128263
  const resolvedSrc = useImageSource(
128006
128264
  imgUrl && typeof imgUrl === "string" ? resolveAssetUrl(imgUrl, ctx.assetBaseUrl, ctx.assetPin) : null,
128007
128265
  { width: w2, height: boxHeight, mode: renditionMode(contentMode), ratio: effectiveAr || void 0 }
@@ -128039,7 +128297,7 @@ var init_renderNode = __esm({
128039
128297
  if (imgInitials && typeof imgInitials === "string") {
128040
128298
  const alt = asFinalTextL10n(boundAlt, ctx).trim();
128041
128299
  const circle = avatarCircle(String(imgInitials), typeof w2 === "number" ? w2 : 40, C2, false, bodyFont(ctx));
128042
- return React15.cloneElement(circle, alt ? { role: "img", "aria-label": alt, [SELF_RENDERED_LEAF]: true } : { [ROLE_WHEN_NAMED]: "img", [SELF_RENDERED_LEAF]: true });
128300
+ return React16.cloneElement(circle, alt ? { role: "img", "aria-label": alt, [SELF_RENDERED_LEAF]: true } : { [ROLE_WHEN_NAMED]: "img", [SELF_RENDERED_LEAF]: true });
128043
128301
  }
128044
128302
  if (props.icon != null && props.url == null && props.asset == null && imgInitials == null) {
128045
128303
  const side2 = typeof w2 === "number" ? w2 : 40;
@@ -128054,13 +128312,13 @@ var init_renderNode = __esm({
128054
128312
  const reduce = ctx.reduceMotion();
128055
128313
  const servicePlayPath = typeof props.playPath === "string" && props.playPath.startsWith("$service:") ? props.playPath : void 0;
128056
128314
  const nonce = lottieNonce(useResolvedScalar(servicePlayPath, ctx));
128057
- const [replay, setReplay] = React15.useState({ plays: 0 });
128058
- const [gen, setGen] = React15.useState(0);
128059
- React15.useEffect(() => {
128315
+ const [replay, setReplay] = React16.useState({ plays: 0 });
128316
+ const [gen, setGen] = React16.useState(0);
128317
+ React16.useEffect(() => {
128060
128318
  setReplay((s2) => ({ plays: s2.plays }));
128061
128319
  setGen((g2) => g2 + 1);
128062
128320
  }, [servicePlayPath, ctx.provider, props.source]);
128063
- React15.useEffect(() => {
128321
+ React16.useEffect(() => {
128064
128322
  setReplay((s2) => lottieReplayStep(s2, nonce, reduce));
128065
128323
  }, [nonce, servicePlayPath, ctx.provider, props.source]);
128066
128324
  return /* @__PURE__ */ jsx11(
@@ -128122,7 +128380,7 @@ var init_renderNode = __esm({
128122
128380
  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" };
128123
128381
  const glyph = iconSvg(iconName, { size, color: C2(resolveScalarStatic(props.tint, ctx) ?? "textPrimary", "#636b78") });
128124
128382
  const swap = useIconSwap(iconName, ctx);
128125
- const animatedGlyph = Object.keys(effectStyle).length || swap.key > 0 ? React15.cloneElement(glyph, { style: { ...glyph.props.style, ...swap.style, ...effectStyle }, key: swap.key }) : glyph;
128383
+ const animatedGlyph = Object.keys(effectStyle).length || swap.key > 0 ? React16.cloneElement(glyph, { style: { ...glyph.props.style, ...swap.style, ...effectStyle }, key: swap.key }) : glyph;
128126
128384
  return /* @__PURE__ */ jsx11("span", { ...a11y, style: { display: "inline-grid", placeItems: "center", width: size + 6, height: size + 6, lineHeight: 1, flex: "none", ...wrap }, children: animatedGlyph });
128127
128385
  });
128128
128386
  EMPTY_STATE_SPACING = {
@@ -128364,12 +128622,12 @@ var init_renderNode = __esm({
128364
128622
  const C2 = ctx.color;
128365
128623
  const bound2 = useResolvedScalar(props.valuePath, ctx);
128366
128624
  const boundText = props.valuePath != null ? typeof bound2 === "string" ? bound2 : typeof bound2 === "number" ? String(bound2) : "" : void 0;
128367
- const [typed, setTyped] = React15.useState(void 0);
128368
- React15.useEffect(() => {
128625
+ const [typed, setTyped] = React16.useState(void 0);
128626
+ React16.useEffect(() => {
128369
128627
  setTyped(void 0);
128370
128628
  }, [boundText, props.value, props.valuePath, typeof props.valuePath === "string" && props.valuePath.startsWith("$service:") ? ctx.provider : null]);
128371
128629
  const otpPath = typeof props.valuePath === "string" && props.valuePath.startsWith("$service:") ? servicePath(props.valuePath) : "";
128372
- React15.useEffect(() => {
128630
+ React16.useEffect(() => {
128373
128631
  if (!ctx.provider || !otpPath) return;
128374
128632
  let subscribing = true;
128375
128633
  let active = true;
@@ -128460,10 +128718,10 @@ var init_renderNode = __esm({
128460
128718
  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) } : {} } }) });
128461
128719
  });
128462
128720
  SnackbarNode = withExtras("SnackbarNode", ({ props, ctx, wrap }) => {
128463
- const [phase, setPhase] = React15.useState("shown");
128721
+ const [phase, setPhase] = React16.useState("shown");
128464
128722
  const hideAfter = ctx.empty ? void 0 : snackbarAutoHideMs(props.durationMs);
128465
128723
  const identity = snackbarIdentity(props);
128466
- React15.useEffect(() => {
128724
+ React16.useEffect(() => {
128467
128725
  setPhase("shown");
128468
128726
  if (hideAfter === void 0) return;
128469
128727
  let fade;
@@ -128519,8 +128777,8 @@ var init_renderNode = __esm({
128519
128777
  const gated2 = props.presentedPath != null || props.presented != null;
128520
128778
  const presented = props.presentedPath != null ? bound2 : props.presented;
128521
128779
  const gateOpen = !gated2 || presented === true || presented === "true";
128522
- const [dismissed, setDismissed] = React15.useState(false);
128523
- React15.useEffect(() => {
128780
+ const [dismissed, setDismissed] = React16.useState(false);
128781
+ React16.useEffect(() => {
128524
128782
  if (!gateOpen) setDismissed(false);
128525
128783
  }, [gateOpen]);
128526
128784
  const shown2 = gateOpen && !dismissed;
@@ -128528,26 +128786,26 @@ var init_renderNode = __esm({
128528
128786
  const dismissible = props.dismissible !== false;
128529
128787
  const edge = sheetEdge(props.edge);
128530
128788
  const detents = edge === "bottom" ? sheetDetents(props.detents) : [];
128531
- const [detentIndex, setDetentIndex] = React15.useState(0);
128532
- React15.useEffect(() => {
128789
+ const [detentIndex, setDetentIndex] = React16.useState(0);
128790
+ React16.useEffect(() => {
128533
128791
  if (!shown2) setDetentIndex(0);
128534
128792
  }, [shown2]);
128535
- const dialogRef = React15.useRef(null);
128793
+ const dialogRef = React16.useRef(null);
128536
128794
  const trapTab = useModalOverlay(dialogRef, shown2 && modal);
128537
- const latest = React15.useRef({ ctx, onDismiss: props.onDismiss });
128795
+ const latest = React16.useRef({ ctx, onDismiss: props.onDismiss });
128538
128796
  latest.current = { ctx, onDismiss: props.onDismiss };
128539
- const closed = React15.useRef(false);
128540
- React15.useEffect(() => {
128797
+ const closed = React16.useRef(false);
128798
+ React16.useEffect(() => {
128541
128799
  if (shown2) closed.current = false;
128542
128800
  }, [shown2]);
128543
- const dismiss = React15.useCallback(() => {
128801
+ const dismiss = React16.useCallback(() => {
128544
128802
  if (closed.current) return;
128545
128803
  closed.current = true;
128546
128804
  setDismissed(true);
128547
128805
  const { ctx: now, onDismiss } = latest.current;
128548
128806
  if (onDismiss != null) now.onAction?.(resolveItemDeep2(onDismiss, now));
128549
128807
  }, []);
128550
- React15.useEffect(() => {
128808
+ React16.useEffect(() => {
128551
128809
  if (!shown2 || !dismissible) return;
128552
128810
  const doc = dialogRef.current?.ownerDocument;
128553
128811
  if (!doc) return;
@@ -128561,11 +128819,11 @@ var init_renderNode = __esm({
128561
128819
  doc.addEventListener("keydown", onKey, true);
128562
128820
  return () => doc.removeEventListener("keydown", onKey, true);
128563
128821
  }, [shown2, dismissible, dismiss]);
128564
- const drag = React15.useRef(null);
128822
+ const drag = React16.useRef(null);
128565
128823
  const reduceMotion = ctx.reduceMotion();
128566
- const [mounted, setMounted] = React15.useState(shown2);
128567
- const [entered, setEntered] = React15.useState(shown2 && ctx.staticRender === true);
128568
- React15.useEffect(() => {
128824
+ const [mounted, setMounted] = React16.useState(shown2);
128825
+ const [entered, setEntered] = React16.useState(shown2 && ctx.staticRender === true);
128826
+ React16.useEffect(() => {
128569
128827
  if (shown2) {
128570
128828
  setMounted(true);
128571
128829
  if (reduceMotion || typeof requestAnimationFrame !== "function") {
@@ -128589,8 +128847,8 @@ var init_renderNode = __esm({
128589
128847
  const t2 = setTimeout(() => setMounted(false), DRAWER_EXIT_MS);
128590
128848
  return () => clearTimeout(t2);
128591
128849
  }, [shown2, reduceMotion]);
128592
- const scrimRef = React15.useRef(null);
128593
- const [rtl, setRtl] = React15.useState(false);
128850
+ const scrimRef = React16.useRef(null);
128851
+ const [rtl, setRtl] = React16.useState(false);
128594
128852
  useIsomorphicLayoutEffect(() => {
128595
128853
  const el2 = scrimRef.current;
128596
128854
  if (el2 && el2.ownerDocument.defaultView) setRtl(el2.ownerDocument.defaultView.getComputedStyle(el2).direction === "rtl");
@@ -128698,8 +128956,8 @@ var init_renderNode = __esm({
128698
128956
  const gated2 = props.presentedPath != null || props.presented != null;
128699
128957
  const presented = props.presentedPath != null ? bound2 : props.presented;
128700
128958
  const gateOpen = !gated2 || presented === true || presented === "true";
128701
- const [dismissed, setDismissed] = React15.useState(false);
128702
- React15.useEffect(() => {
128959
+ const [dismissed, setDismissed] = React16.useState(false);
128960
+ React16.useEffect(() => {
128703
128961
  if (!gateOpen) setDismissed(false);
128704
128962
  }, [gateOpen]);
128705
128963
  const shown2 = gateOpen && !dismissed;
@@ -128707,18 +128965,18 @@ var init_renderNode = __esm({
128707
128965
  const autoMs = drawerAutoDismissMs(props.autoDismissMs);
128708
128966
  const placement = sheetPlacement(props.placement);
128709
128967
  const detents = sheetDetents(props.detents);
128710
- const [detentIndex, setDetentIndex] = React15.useState(0);
128711
- const [expanded, setExpanded] = React15.useState(false);
128712
- React15.useEffect(() => {
128968
+ const [detentIndex, setDetentIndex] = React16.useState(0);
128969
+ const [expanded, setExpanded] = React16.useState(false);
128970
+ React16.useEffect(() => {
128713
128971
  if (!shown2) {
128714
128972
  setDetentIndex(0);
128715
128973
  setExpanded(false);
128716
128974
  }
128717
128975
  }, [shown2]);
128718
128976
  const reduceMotion = ctx.reduceMotion();
128719
- const [mounted, setMounted] = React15.useState(shown2);
128720
- const [entered, setEntered] = React15.useState(shown2 && ctx.staticRender === true);
128721
- React15.useEffect(() => {
128977
+ const [mounted, setMounted] = React16.useState(shown2);
128978
+ const [entered, setEntered] = React16.useState(shown2 && ctx.staticRender === true);
128979
+ React16.useEffect(() => {
128722
128980
  if (shown2) {
128723
128981
  setMounted(true);
128724
128982
  if (reduceMotion || typeof requestAnimationFrame !== "function") {
@@ -128742,10 +129000,10 @@ var init_renderNode = __esm({
128742
129000
  const t2 = setTimeout(() => setMounted(false), DRAWER_EXIT_MS);
128743
129001
  return () => clearTimeout(t2);
128744
129002
  }, [shown2, reduceMotion]);
128745
- const anchorRef = React15.useRef(null);
128746
- const panelRef = React15.useRef(null);
128747
- const [host, setHost] = React15.useState(null);
128748
- const [hostTop, setHostTop] = React15.useState(true);
129003
+ const anchorRef = React16.useRef(null);
129004
+ const panelRef = React16.useRef(null);
129005
+ const [host, setHost] = React16.useState(null);
129006
+ const [hostTop, setHostTop] = React16.useState(true);
128749
129007
  useIsomorphicLayoutEffect(() => {
128750
129008
  if (!host) {
128751
129009
  setHostTop(true);
@@ -128773,7 +129031,7 @@ var init_renderNode = __esm({
128773
129031
  setHost(overlay ?? own6(DRAWER_HOST_ATTR));
128774
129032
  }, [mounted, placement]);
128775
129033
  const overHost = host?.hasAttribute(SHEET_OVERLAY_HOST_ATTR) ?? false;
128776
- const [regionPx, setRegionPx] = React15.useState(0);
129034
+ const [regionPx, setRegionPx] = React16.useState(0);
128777
129035
  useIsomorphicLayoutEffect(() => {
128778
129036
  if (!detents.length || !mounted) return;
128779
129037
  const region = host ? overHost ? host.parentElement : host.previousElementSibling : null;
@@ -128800,38 +129058,38 @@ var init_renderNode = __esm({
128800
129058
  resizeObserver?.disconnect();
128801
129059
  };
128802
129060
  }, [host, overHost, mounted, detents.length]);
128803
- const latest = React15.useRef({ ctx, onDismiss: props.onDismiss });
129061
+ const latest = React16.useRef({ ctx, onDismiss: props.onDismiss });
128804
129062
  latest.current = { ctx, onDismiss: props.onDismiss };
128805
- const closed = React15.useRef(false);
128806
- const remaining = React15.useRef(autoMs ?? 0);
128807
- React15.useEffect(() => {
129063
+ const closed = React16.useRef(false);
129064
+ const remaining = React16.useRef(autoMs ?? 0);
129065
+ React16.useEffect(() => {
128808
129066
  if (!shown2) return;
128809
129067
  closed.current = false;
128810
129068
  remaining.current = autoMs ?? 0;
128811
129069
  }, [shown2, autoMs]);
128812
- const close = React15.useCallback(() => {
129070
+ const close = React16.useCallback(() => {
128813
129071
  if (closed.current) return;
128814
129072
  closed.current = true;
128815
129073
  setDismissed(true);
128816
129074
  const { ctx: now, onDismiss } = latest.current;
128817
129075
  if (onDismiss != null) now.onAction?.(resolveItemDeep2(onDismiss, now));
128818
129076
  }, []);
128819
- const toDetent = React15.useCallback((next, from) => {
129077
+ const toDetent = React16.useCallback((next, from) => {
128820
129078
  if (next > from) setExpanded(true);
128821
129079
  setDetentIndex(next);
128822
129080
  }, []);
128823
- const [hover, setHover] = React15.useState(false);
128824
- const [pressed, setPressed] = React15.useState(false);
128825
- const [focusIn, setFocusIn] = React15.useState(false);
129081
+ const [hover, setHover] = React16.useState(false);
129082
+ const [pressed, setPressed] = React16.useState(false);
129083
+ const [focusIn, setFocusIn] = React16.useState(false);
128826
129084
  const paused = hover || pressed || focusIn;
128827
- React15.useEffect(() => {
129085
+ React16.useEffect(() => {
128828
129086
  if (!shown2) {
128829
129087
  setHover(false);
128830
129088
  setPressed(false);
128831
129089
  setFocusIn(false);
128832
129090
  }
128833
129091
  }, [shown2]);
128834
- React15.useEffect(() => {
129092
+ React16.useEffect(() => {
128835
129093
  if (!shown2 || !hostTop || autoMs == null || paused || expanded) return;
128836
129094
  const since = Date.now();
128837
129095
  const t2 = setTimeout(() => {
@@ -128842,7 +129100,7 @@ var init_renderNode = __esm({
128842
129100
  remaining.current = drawerRemainingMs(remaining.current, Date.now() - since);
128843
129101
  };
128844
129102
  }, [shown2, hostTop, autoMs, paused, expanded, close]);
128845
- React15.useEffect(() => {
129103
+ React16.useEffect(() => {
128846
129104
  if (!shown2 || !dismissible) return;
128847
129105
  const doc = panelRef.current?.ownerDocument;
128848
129106
  if (!doc) return;
@@ -128855,13 +129113,13 @@ var init_renderNode = __esm({
128855
129113
  doc.addEventListener("keydown", onKey, true);
128856
129114
  return () => doc.removeEventListener("keydown", onKey, true);
128857
129115
  }, [shown2, dismissible, close, host]);
128858
- const drag = React15.useRef(null);
128859
- const dragged = React15.useRef(false);
128860
- const [dragDy, setDragDy] = React15.useState(0);
128861
- React15.useEffect(() => {
129116
+ const drag = React16.useRef(null);
129117
+ const dragged = React16.useRef(false);
129118
+ const [dragDy, setDragDy] = React16.useState(0);
129119
+ React16.useEffect(() => {
128862
129120
  if (!shown2) setDragDy(0);
128863
129121
  }, [shown2]);
128864
- const dragState = React15.useRef({ index: 0, count: 0, dismissible });
129122
+ const dragState = React16.useRef({ index: 0, count: 0, dismissible });
128865
129123
  if (!shown2 && !mounted) return /* @__PURE__ */ jsx11("span", { ref: anchorRef, "data-bottom-drawer-anchor": "", hidden: true, ...{ [NODE_EXTRAS_TARGET]: "bottom-drawer-panel" } });
128866
129124
  const sheet = idiomControls(ctx.idiom).sheet;
128867
129125
  const r3 = `${sheet.cornerRadius}px`;
@@ -129003,23 +129261,23 @@ var init_renderNode = __esm({
129003
129261
  const rich = title !== "";
129004
129262
  const trigger = resolveTooltipTrigger(props.trigger, "pointer");
129005
129263
  const edge = resolveOverlayEdge("Tooltip", props.edge);
129006
- const [open, setOpen] = React15.useState(false);
129007
- const anchorRef = React15.useRef(null);
129008
- const bubbleRef = React15.useRef(null);
129009
- const pressTimer = React15.useRef(null);
129264
+ const [open, setOpen] = React16.useState(false);
129265
+ const anchorRef = React16.useRef(null);
129266
+ const bubbleRef = React16.useRef(null);
129267
+ const pressTimer = React16.useRef(null);
129010
129268
  const placement = useFlippedEdge(edge, open, bubbleRef, anchorRef);
129011
129269
  const placed = placement.edge;
129012
- const latest = React15.useRef({ ctx, onDismiss: props.onDismiss, open });
129270
+ const latest = React16.useRef({ ctx, onDismiss: props.onDismiss, open });
129013
129271
  latest.current = { ctx, onDismiss: props.onDismiss, open };
129014
- const holding = React15.useRef({ hover: false, focus: false });
129015
- const [needsTabStop, setNeedsTabStop] = React15.useState(false);
129272
+ const holding = React16.useRef({ hover: false, focus: false });
129273
+ const [needsTabStop, setNeedsTabStop] = React16.useState(false);
129016
129274
  useIsomorphicLayoutEffect(() => {
129017
129275
  const el2 = anchorRef.current;
129018
129276
  const want = trigger === "hover" && el2 != null && !hasTabStop(el2);
129019
129277
  if (want !== needsTabStop) setNeedsTabStop(want);
129020
129278
  });
129021
- const show = React15.useCallback(() => setOpen(true), []);
129022
- const dismiss = React15.useCallback(() => {
129279
+ const show = React16.useCallback(() => setOpen(true), []);
129280
+ const dismiss = React16.useCallback(() => {
129023
129281
  holding.current = { hover: false, focus: false };
129024
129282
  const { ctx: now, onDismiss, open: wasOpen } = latest.current;
129025
129283
  if (!wasOpen) return;
@@ -129027,7 +129285,7 @@ var init_renderNode = __esm({
129027
129285
  setOpen(false);
129028
129286
  if (onDismiss != null) now.onAction?.(resolveItemDeep2(onDismiss, now));
129029
129287
  }, []);
129030
- React15.useEffect(() => {
129288
+ React16.useEffect(() => {
129031
129289
  if (!open) return;
129032
129290
  const doc = bubbleRef.current?.ownerDocument;
129033
129291
  if (!doc) return;
@@ -129051,7 +129309,7 @@ var init_renderNode = __esm({
129051
129309
  if (timer) clearTimeout(timer);
129052
129310
  };
129053
129311
  }, [open, trigger, dismiss]);
129054
- React15.useEffect(() => () => {
129312
+ React16.useEffect(() => () => {
129055
129313
  if (pressTimer.current) clearTimeout(pressTimer.current);
129056
129314
  }, []);
129057
129315
  const cancelPress = () => {
@@ -129091,7 +129349,7 @@ var init_renderNode = __esm({
129091
129349
  };
129092
129350
  const hint = [title, text13].filter((s2) => s2 !== "").join(". ");
129093
129351
  const anchor = props.anchor ? renderNode(props.anchor, ctx) : null;
129094
- const wrapperHintId = `hm-tip-hint${React15.useId()}`;
129352
+ const wrapperHintId = `hm-tip-hint${React16.useId()}`;
129095
129353
  useIsomorphicLayoutEffect(() => {
129096
129354
  const wrapper = anchorRef.current;
129097
129355
  if (!wrapper || !hint || needsTabStop) return;
@@ -129113,7 +129371,7 @@ var init_renderNode = __esm({
129113
129371
  /* @__PURE__ */ jsx11(OverlayAnchorClip, { wrap, children: needsTabStop ? /* @__PURE__ */ jsxs9(Fragment4, { children: [
129114
129372
  anchor,
129115
129373
  hint && /* @__PURE__ */ jsx11("span", { id: wrapperHintId, hidden: true, "data-hm-a11y-hint": "", children: hint })
129116
- ] }) : hint && React15.isValidElement(anchor) ? /* @__PURE__ */ jsxs9(Fragment4, { children: [
129374
+ ] }) : hint && React16.isValidElement(anchor) ? /* @__PURE__ */ jsxs9(Fragment4, { children: [
129117
129375
  /* @__PURE__ */ jsx11(A11yHintDescription, { hint, children: anchor }),
129118
129376
  /* @__PURE__ */ jsx11("span", { id: wrapperHintId, hidden: true, "data-hm-a11y-hint": "", children: hint })
129119
129377
  ] }) : /* @__PURE__ */ jsxs9(Fragment4, { children: [
@@ -129134,24 +129392,24 @@ var init_renderNode = __esm({
129134
129392
  const gateOpen = gate === true || gate === "true";
129135
129393
  const literal = props.presentedPath == null && props.presented != null;
129136
129394
  const identity = { path: props.presentedPath, presented: props.presented, provider: ctx.provider };
129137
- const [local, setLocal] = React15.useState({ ...identity, opened: false, dismissed: false });
129395
+ const [local, setLocal] = React16.useState({ ...identity, opened: false, dismissed: false });
129138
129396
  const sameGate = local.path === identity.path && local.presented === identity.presented && local.provider === identity.provider;
129139
129397
  const current = sameGate ? local : { ...identity, opened: false, dismissed: false };
129140
129398
  if (!sameGate) setLocal(current);
129141
- React15.useEffect(() => {
129399
+ React16.useEffect(() => {
129142
129400
  if (!gateOpen) setLocal((previous) => previous.dismissed ? { ...previous, dismissed: false } : previous);
129143
129401
  }, [gateOpen]);
129144
129402
  const shown2 = !gated2 || (gateOpen || current.opened) && !current.dismissed;
129145
129403
  const modal = gated2 && isOverlayModal("Popover", props.modal);
129146
- const dialogRef = React15.useRef(null);
129147
- const anchorRef = React15.useRef(null);
129148
- const boxRef = React15.useRef(null);
129404
+ const dialogRef = React16.useRef(null);
129405
+ const anchorRef = React16.useRef(null);
129406
+ const boxRef = React16.useRef(null);
129149
129407
  const trapTab = useModalOverlay(dialogRef, shown2 && modal);
129150
129408
  const placement = useFlippedEdge(resolveOverlayEdge("Popover", props.edge), gated2 && shown2, dialogRef, boxRef, 6);
129151
129409
  const placed = placement.edge;
129152
- const latest = React15.useRef({ ctx, onDismiss: props.onDismiss });
129410
+ const latest = React16.useRef({ ctx, onDismiss: props.onDismiss });
129153
129411
  latest.current = { ctx, onDismiss: props.onDismiss };
129154
- React15.useEffect(() => {
129412
+ React16.useEffect(() => {
129155
129413
  if (!gated2 || !shown2) return;
129156
129414
  const doc = dialogRef.current?.ownerDocument;
129157
129415
  if (!doc) return;
@@ -129189,8 +129447,8 @@ var init_renderNode = __esm({
129189
129447
  if (shown2) return;
129190
129448
  setLocal({ ...identity, opened: true, dismissed: false });
129191
129449
  } : void 0;
129192
- const [anchorIsButton, setAnchorIsButton] = React15.useState(false);
129193
- const [needsSeparateOpener, setNeedsSeparateOpener] = React15.useState(false);
129450
+ const [anchorIsButton, setAnchorIsButton] = React16.useState(false);
129451
+ const [needsSeparateOpener, setNeedsSeparateOpener] = React16.useState(false);
129194
129452
  useIsomorphicLayoutEffect(() => {
129195
129453
  const el2 = anchorRef.current;
129196
129454
  const want = literal && el2 != null && !hasTabStop(el2);
@@ -129217,7 +129475,7 @@ var init_renderNode = __esm({
129217
129475
  });
129218
129476
  ChipsInputNode = withExtras("ChipsInputNode", ({ props, ctx, wrap }) => {
129219
129477
  const placeholderText = useBoundString(props.placeholder, ctx);
129220
- const [draft, setDraft] = React15.useState("");
129478
+ const [draft, setDraft] = React16.useState("");
129221
129479
  const C2 = ctx.color;
129222
129480
  const bound2 = useResolvedScalar(props.valuesPath, ctx);
129223
129481
  const raw = props.valuesPath != null ? bound2 : props.values;
@@ -129414,7 +129672,7 @@ var init_renderNode = __esm({
129414
129672
  const who = asText2(a2.initials).trim();
129415
129673
  const initials = avatarCircle(who || "?", size, C2, true, bodyFont(ctx));
129416
129674
  const photo = typeof a2.imageUrl === "string" && a2.imageUrl && !isBinding(a2.imageUrl) ? a2.imageUrl : "";
129417
- const circle = photo ? React15.cloneElement(
129675
+ const circle = photo ? React16.cloneElement(
129418
129676
  initials,
129419
129677
  { style: { ...initials.props.style, position: "relative", overflow: "hidden" } },
129420
129678
  initials.props.children,
@@ -129422,7 +129680,7 @@ var init_renderNode = __esm({
129422
129680
  e2.currentTarget.style.display = "none";
129423
129681
  }, style: { position: "absolute", inset: 0, width: "100%", height: "100%", objectFit: "cover" } })
129424
129682
  ) : initials;
129425
- return who ? /* @__PURE__ */ jsx11("div", { role: "listitem", style: wrapStyle, children: React15.cloneElement(circle, { role: "img", "aria-label": who }) }, i2) : /* @__PURE__ */ jsx11("div", { "aria-hidden": "true", style: wrapStyle, children: circle }, i2);
129683
+ return who ? /* @__PURE__ */ jsx11("div", { role: "listitem", style: wrapStyle, children: React16.cloneElement(circle, { role: "img", "aria-label": who }) }, i2) : /* @__PURE__ */ jsx11("div", { "aria-hidden": "true", style: wrapStyle, children: circle }, i2);
129426
129684
  }),
129427
129685
  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__ */ jsxs9("span", { role: "img", "aria-label": `${overflow} more`, children: [
129428
129686
  "+",
@@ -129443,7 +129701,7 @@ var init_renderNode = __esm({
129443
129701
  const declared = Array.isArray(props.series) ? props.series : [];
129444
129702
  const multi = declared.length > 0;
129445
129703
  const singleBound = useBoundValue(ctx, typeof props.valuesPath === "string" && !multi ? props.valuesPath : "");
129446
- const seriesBindings = React15.useMemo(
129704
+ const seriesBindings = React16.useMemo(
129447
129705
  () => declared.map((d2) => typeof d2?.valuesPath === "string" ? d2.valuesPath : ""),
129448
129706
  // eslint-disable-next-line react-hooks/exhaustive-deps
129449
129707
  [declared.map((d2) => String(d2?.valuesPath ?? "")).join("\0")]
@@ -129589,9 +129847,9 @@ var init_renderNode = __esm({
129589
129847
  ] }) });
129590
129848
  });
129591
129849
  ShapeNode = withExtras("ShapeNode", ({ props, ctx, wrap }) => {
129592
- const ref = React15.useRef(null);
129593
- const [box, setBox] = React15.useState(null);
129594
- React15.useEffect(() => {
129850
+ const ref = React16.useRef(null);
129851
+ const [box, setBox] = React16.useState(null);
129852
+ React16.useEffect(() => {
129595
129853
  const el2 = ref.current;
129596
129854
  if (!el2) return;
129597
129855
  const measure2 = () => {
@@ -129749,10 +130007,10 @@ var init_renderNode = __esm({
129749
130007
  const isPlayable = !isFailed && !isUploading;
129750
130008
  const isPlaying = state === "playing";
129751
130009
  const isLoading = state === "loading";
129752
- const [scrub, setScrub] = React15.useState(null);
129753
- const [seeked, setSeeked] = React15.useState(null);
130010
+ const [scrub, setScrub] = React16.useState(null);
130011
+ const [seeked, setSeeked] = React16.useState(null);
129754
130012
  const positionMs = Math.max(0, num4(props.positionMsPath != null ? boundPosition : void 0, props.positionMs, 0));
129755
- React15.useEffect(() => {
130013
+ React16.useEffect(() => {
129756
130014
  setSeeked(null);
129757
130015
  }, [positionMs]);
129758
130016
  const effectivePositionMs = seeked ?? positionMs;
@@ -129794,8 +130052,8 @@ var init_renderNode = __esm({
129794
130052
  const barW = Math.max(0.6, slot * 0.58);
129795
130053
  const cut2 = progress * W2;
129796
130054
  const rates = Array.isArray(props.rates) ? props.rates.map(Number).filter((n2) => n2 > 0) : [];
129797
- const [pickedRate, setPickedRate] = React15.useState(null);
129798
- React15.useEffect(() => {
130055
+ const [pickedRate, setPickedRate] = React16.useState(null);
130056
+ React16.useEffect(() => {
129799
130057
  setPickedRate(null);
129800
130058
  }, [rate]);
129801
130059
  const effectiveRate = pickedRate ?? rate;
@@ -129969,8 +130227,8 @@ var init_renderNode = __esm({
129969
130227
  }) });
129970
130228
  });
129971
130229
  LiveWindowMeasured = ({ index, heights, children }) => {
129972
- const ref = React15.useRef(null);
129973
- React15.useLayoutEffect(() => {
130230
+ const ref = React16.useRef(null);
130231
+ React16.useLayoutEffect(() => {
129974
130232
  const el2 = ref.current;
129975
130233
  if (!el2) return;
129976
130234
  const record3 = () => {
@@ -129989,7 +130247,7 @@ var init_renderNode = __esm({
129989
130247
  return /* @__PURE__ */ jsx11("div", { ref, style: { width: "100%" }, children });
129990
130248
  };
129991
130249
  LiveWindowPage = ({ page, index, count: count2, current, liveWindow, ownerId, heights, ctx }) => {
129992
- const outerActive = React15.useContext(PageActiveContext);
130250
+ const outerActive = React16.useContext(PageActiveContext);
129993
130251
  if (liveWindowRange(current, count2, liveWindow) == null) return /* @__PURE__ */ jsx11(Fragment4, { children: renderNode(page, ctx) });
129994
130252
  if (liveWindowMounted(index, current, count2, liveWindow)) {
129995
130253
  return /* @__PURE__ */ jsx11(PageActiveContext.Provider, { value: outerActive && liveWindowActive(index, current, count2, liveWindow), children: /* @__PURE__ */ jsx11(LiveWindowMeasured, { index, heights, children: renderNode(page, ctx) }) });
@@ -130018,27 +130276,27 @@ var init_renderNode = __esm({
130018
130276
  const items = (props.__pager ? props.pages : props.items) ?? [];
130019
130277
  const pages2 = items.filter((page) => isNodeLike(page) || page?.type);
130020
130278
  const requested = Math.max(0, Math.min(pages2.length - 1, props.currentIndex ?? 0));
130021
- const [current, setCurrent] = React15.useState(requested);
130022
- const rail = React15.useRef(null);
130023
- const currentRef = React15.useRef(current);
130279
+ const [current, setCurrent] = React16.useState(requested);
130280
+ const rail = React16.useRef(null);
130281
+ const currentRef = React16.useRef(current);
130024
130282
  const itemsPath = props.itemsPath ?? props.items_path;
130025
130283
  const boundRail = !!itemsPath && !!items[0] && !!ctx.provider;
130026
130284
  const { settled, scrolling } = useSettledPage(current);
130027
- const [, heightsChanged] = React15.useReducer((n2) => n2 + 1, 0);
130285
+ const [, heightsChanged] = React16.useReducer((n2) => n2 + 1, 0);
130028
130286
  const pageKey = pages2.map((p2, i2) => p2?.id ?? `#${i2}`).join("\0");
130029
- const pageHeights = React15.useMemo(() => ({ map: /* @__PURE__ */ new Map(), changed: heightsChanged }), [pageKey]);
130287
+ const pageHeights = React16.useMemo(() => ({ map: /* @__PURE__ */ new Map(), changed: heightsChanged }), [pageKey]);
130030
130288
  const select2 = (index) => {
130031
130289
  if (index === currentRef.current) return;
130032
130290
  currentRef.current = index;
130033
130291
  setCurrent(index);
130034
130292
  if (props.onChange && ctx.onAction) ctx.onAction({ ...props.onChange, args: { ...props.onChange.args ?? {}, index } });
130035
130293
  };
130036
- React15.useEffect(() => {
130294
+ React16.useEffect(() => {
130037
130295
  currentRef.current = requested;
130038
130296
  setCurrent(requested);
130039
130297
  if (rail.current && !boundRail) rail.current.scrollLeft = requested * rail.current.clientWidth;
130040
130298
  }, [requested, boundRail, pages2.length]);
130041
- React15.useEffect(() => {
130299
+ React16.useEffect(() => {
130042
130300
  const interval = props.autoplayIntervalMs;
130043
130301
  if (props.__pager || boundRail || !Number.isFinite(interval) || interval <= 0 || pages2.length < 2 || ctx.reduceMotion()) return;
130044
130302
  const timer = setInterval(() => {
@@ -130085,19 +130343,19 @@ var init_renderNode = __esm({
130085
130343
  const opts = Array.isArray(rawOpts) ? rawOpts : [];
130086
130344
  const selectedId = isBinding(props.selectedId) ? boundSel : props.selectedId;
130087
130345
  const selIdx = Math.max(0, opts.findIndex((o2) => o2?.id === selectedId));
130088
- const viewport = React15.useRef(null);
130089
- const settle2 = React15.useRef(void 0);
130090
- const pickerId = React15.useId();
130346
+ const viewport = React16.useRef(null);
130347
+ const settle2 = React16.useRef(void 0);
130348
+ const pickerId = React16.useId();
130091
130349
  const interactive = !!ctx.onAction && !!props.onChange;
130092
130350
  const emit = (index) => {
130093
130351
  const id = opts[index]?.id;
130094
130352
  if (!interactive || id == null || index === selIdx) return;
130095
130353
  ctx.onAction({ ...props.onChange, args: { ...props.onChange.args ?? {}, selectedId: String(id) } });
130096
130354
  };
130097
- React15.useEffect(() => {
130355
+ React16.useEffect(() => {
130098
130356
  if (viewport.current) viewport.current.scrollTop = selIdx * 32;
130099
130357
  }, [selIdx, opts.length]);
130100
- React15.useEffect(() => () => clearTimeout(settle2.current), []);
130358
+ React16.useEffect(() => () => clearTimeout(settle2.current), []);
130101
130359
  return /* @__PURE__ */ jsxs9("div", { style: { position: "relative", width: "100%", maxWidth: 220, height: 160, overflow: "hidden", background: C2("surfaceSecondary", "#f5f7fa"), borderRadius: 12, ...wrap }, children: [
130102
130360
  /* @__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)" } }),
130103
130361
  /* @__PURE__ */ jsx11(
@@ -130173,11 +130431,23 @@ var init_renderNode = __esm({
130173
130431
  const next = multiSelect ? isSel ? selected.filter((x2) => x2 !== id) : [...selected, id] : isSel ? [] : [id];
130174
130432
  ctx.onAction({ ...onChange, args: { ...onChange.args ?? {}, selectedIds: next } });
130175
130433
  };
130434
+ const rowRef = React16.useRef(null);
130435
+ const shownSelection = React16.useRef(void 0);
130436
+ const selectedId = multiSelect ? null : selected[0] ?? null;
130437
+ React16.useEffect(() => {
130438
+ const row2 = rowRef.current;
130439
+ if (multiSelect || !row2 || selectedId === shownSelection.current) return;
130440
+ const chip = selectedId == null ? null : Array.from(row2.children).find((el2) => el2.getAttribute("data-chip-id") === selectedId);
130441
+ if (selectedId != null && !chip) return;
130442
+ const first = shownSelection.current === void 0;
130443
+ shownSelection.current = selectedId;
130444
+ if (chip) revealInRow(chip, row2, first || ctx.reduceMotion());
130445
+ }, [selectedId, chips, multiSelect]);
130176
130446
  return (
130177
130447
  // ONE horizontally scrolling row, like the iOS ScrollView(.horizontal) and the
130178
130448
  // Android LazyRow. Wrapping here turned a long filter set into a ragged grid and
130179
130449
  // pushed a sibling count onto two lines (#3080, #3004).
130180
- /* @__PURE__ */ jsx11("div", { role: "group", style: { display: "flex", gap: 8, flexWrap: "nowrap", overflowX: "auto", scrollbarWidth: "none", width: "100%", minWidth: 0, ...wrap }, children: chips.map((c2, i2) => {
130450
+ /* @__PURE__ */ jsx11("div", { ref: rowRef, role: "group", style: { display: "flex", gap: 8, flexWrap: "nowrap", overflowX: "auto", scrollbarWidth: "none", width: "100%", minWidth: 0, ...wrap }, children: chips.map((c2, i2) => {
130181
130451
  const on4 = selected.includes(c2.id);
130182
130452
  const chipStyle = { display: "flex", flex: "none", whiteSpace: "nowrap", gap: 6, alignItems: "center", fontFamily: bodyFont(ctx), fontWeight: 500, fontSize: pxToRem(13), border: `1px solid ${on4 ? "transparent" : C2("border", "#ddd")}`, background: on4 ? C2("accentPrimary", "#116DFF") : "transparent", color: on4 ? C2("textOnAccent", "#fff") : C2("textSecondary", "#666"), padding: "6px 12px", borderRadius: 999 };
130183
130453
  const inner = /* @__PURE__ */ jsxs9(Fragment4, { children: [
@@ -130187,7 +130457,7 @@ var init_renderNode = __esm({
130187
130457
  /* @__PURE__ */ jsx11("span", { style: { ...on4 ? {} : { opacity: 0.7 }, fontSize: pxToRem(11) }, children: c2.count })
130188
130458
  ] })
130189
130459
  ] });
130190
- return interactive ? /* @__PURE__ */ jsx11("button", { type: "button", "aria-pressed": on4, onClick: () => toggle(c2.id), style: { all: "unset", cursor: "pointer", boxSizing: "border-box", ...chipStyle }, children: inner }, c2.id ?? i2) : /* @__PURE__ */ jsx11("span", { style: chipStyle, children: inner }, c2.id ?? i2);
130460
+ return interactive ? /* @__PURE__ */ jsx11("button", { "data-chip-id": c2.id, type: "button", "aria-pressed": on4, onClick: () => toggle(c2.id), style: { all: "unset", cursor: "pointer", boxSizing: "border-box", ...chipStyle }, children: inner }, c2.id ?? i2) : /* @__PURE__ */ jsx11("span", { "data-chip-id": c2.id, style: chipStyle, children: inner }, c2.id ?? i2);
130191
130461
  }) })
130192
130462
  );
130193
130463
  });
@@ -130208,23 +130478,23 @@ var init_renderNode = __esm({
130208
130478
  const hasEvents = !!(props.onMapTap || props.onMarkerTap || props.onRegionChange || props.onShapeTap);
130209
130479
  const boundShapes = useResolvedScalar(props.shapesPath, ctx);
130210
130480
  const shapesRaw = Array.isArray(boundShapes) ? boundShapes : Array.isArray(props.shapes) ? props.shapes : [];
130211
- const shapes = React15.useMemo(() => shapesRaw.map((sh) => {
130481
+ const shapes = React16.useMemo(() => shapesRaw.map((sh) => {
130212
130482
  const kind = parseShapeKind(sh?.kind);
130213
130483
  const pts = Array.isArray(sh?.points) ? sh.points.filter((p2) => p2 && typeof p2.latitude === "number" && typeof p2.longitude === "number") : [];
130214
130484
  const ring = kind === "circle" && pts.length ? circleRing(pts[0].latitude, pts[0].longitude, typeof sh.radiusM === "number" ? sh.radiusM : 0) : pts;
130215
130485
  return { ...sh, kind, points: ring };
130216
130486
  }), [JSON.stringify(shapesRaw)]);
130217
130487
  const boundCameraRaw = useResolvedScalar(props.cameraPath, ctx);
130218
- const commandedCamera = React15.useMemo(() => decodeCamera(boundCameraRaw), [boundCameraRaw]);
130219
- const [box, setBox] = React15.useState({ w: 400, h: h2 });
130220
- const [tileStatus, setTileStatus] = React15.useState({});
130221
- const [userCam, setUserCam] = React15.useState(null);
130222
- const dragRef = React15.useRef(null);
130223
- const dragMovedRef = React15.useRef(false);
130224
- const regionReportedRef = React15.useRef(false);
130225
- const [boxEl, setBoxEl] = React15.useState(null);
130226
- const attachBox = React15.useCallback((el2) => setBoxEl(el2), []);
130227
- React15.useEffect(() => {
130488
+ const commandedCamera = React16.useMemo(() => decodeCamera(boundCameraRaw), [boundCameraRaw]);
130489
+ const [box, setBox] = React16.useState({ w: 400, h: h2 });
130490
+ const [tileStatus, setTileStatus] = React16.useState({});
130491
+ const [userCam, setUserCam] = React16.useState(null);
130492
+ const dragRef = React16.useRef(null);
130493
+ const dragMovedRef = React16.useRef(false);
130494
+ const regionReportedRef = React16.useRef(false);
130495
+ const [boxEl, setBoxEl] = React16.useState(null);
130496
+ const attachBox = React16.useCallback((el2) => setBoxEl(el2), []);
130497
+ React16.useEffect(() => {
130228
130498
  const el2 = boxEl;
130229
130499
  if (!el2) return;
130230
130500
  const measure2 = () => {
@@ -130247,12 +130517,12 @@ var init_renderNode = __esm({
130247
130517
  const explicitSchematic = schematic && props.routeMode?.toLowerCase() === "schematic";
130248
130518
  const usesTileArm = !explicitSchematic && (otherTileReason || hasStaticMarkers) && (follow || !schematic);
130249
130519
  const pinsOnly = hasStaticMarkers && !otherTileReason;
130250
- const [userFix, setUserFix] = React15.useState(null);
130251
- const [followBroken, setFollowBroken] = React15.useState(false);
130252
- React15.useEffect(() => {
130520
+ const [userFix, setUserFix] = React16.useState(null);
130521
+ const [followBroken, setFollowBroken] = React16.useState(false);
130522
+ React16.useEffect(() => {
130253
130523
  if (follow) setFollowBroken(false);
130254
130524
  }, [follow]);
130255
- React15.useEffect(() => {
130525
+ React16.useEffect(() => {
130256
130526
  if (!observeUserLocation || !usesTileArm) return;
130257
130527
  const geo = typeof navigator !== "undefined" ? navigator.geolocation : void 0;
130258
130528
  if (!geo || typeof geo.watchPosition !== "function") return;
@@ -130279,7 +130549,7 @@ var init_renderNode = __esm({
130279
130549
  const z5 = userCam?.z ?? fitted;
130280
130550
  const cLat = followActive ? userFix.lat : userCam?.lat ?? baseLat;
130281
130551
  const cLng = followActive ? userFix.lng : userCam?.lng ?? baseLng;
130282
- React15.useEffect(() => {
130552
+ React16.useEffect(() => {
130283
130553
  const resolved2 = resolveCamera(commandedCamera, cLat, cLng, z5);
130284
130554
  if (!resolved2) return;
130285
130555
  setFollowBroken(true);
@@ -130361,7 +130631,7 @@ var init_renderNode = __esm({
130361
130631
  const endDrag = () => {
130362
130632
  dragRef.current = null;
130363
130633
  };
130364
- React15.useEffect(() => {
130634
+ React16.useEffect(() => {
130365
130635
  if (!boxEl || !usesTileArm || !interactive) return;
130366
130636
  const zoomOnWheel = (event) => {
130367
130637
  event.preventDefault();
@@ -130371,7 +130641,7 @@ var init_renderNode = __esm({
130371
130641
  boxEl.addEventListener("wheel", zoomOnWheel, { passive: false });
130372
130642
  return () => boxEl.removeEventListener("wheel", zoomOnWheel);
130373
130643
  }, [boxEl, usesTileArm, interactive, z5, cLat, cLng]);
130374
- React15.useEffect(() => {
130644
+ React16.useEffect(() => {
130375
130645
  const action = props.onRegionChange;
130376
130646
  const fire = ctx.onAction;
130377
130647
  if (!usesTileArm || !action || !fire) return;
@@ -130514,34 +130784,34 @@ var init_renderNode = __esm({
130514
130784
  const effectiveIndex = Number.isInteger(parsedIndex) ? parsedIndex : props.currentIndex;
130515
130785
  const pages2 = items.filter((p2) => isNodeLike(p2) || p2?.type);
130516
130786
  const count2 = pages2.length;
130517
- const [index, setIndex] = React15.useState(typeof effectiveIndex === "number" ? effectiveIndex : 0);
130518
- const indexRef = React15.useRef(index);
130787
+ const [index, setIndex] = React16.useState(typeof effectiveIndex === "number" ? effectiveIndex : 0);
130788
+ const indexRef = React16.useRef(index);
130519
130789
  const { settled, scrolling } = useSettledPage(index);
130520
- const [, heightsChanged] = React15.useReducer((n2) => n2 + 1, 0);
130790
+ const [, heightsChanged] = React16.useReducer((n2) => n2 + 1, 0);
130521
130791
  const pageKey = pages2.map((p2, i2) => p2?.id ?? `#${i2}`).join("\0");
130522
- const pageHeights = React15.useMemo(() => ({ map: /* @__PURE__ */ new Map(), changed: heightsChanged }), [pageKey]);
130523
- const trackRef = React15.useRef(null);
130524
- const [hovered, setHovered] = React15.useState(false);
130525
- const [focused, setFocused] = React15.useState(false);
130792
+ const pageHeights = React16.useMemo(() => ({ map: /* @__PURE__ */ new Map(), changed: heightsChanged }), [pageKey]);
130793
+ const trackRef = React16.useRef(null);
130794
+ const [hovered, setHovered] = React16.useState(false);
130795
+ const [focused, setFocused] = React16.useState(false);
130526
130796
  const paused = hovered || focused;
130527
130797
  const interval = typeof props.autoplayIntervalMs === "number" && props.autoplayIntervalMs > 0 ? props.autoplayIntervalMs : 0;
130528
130798
  const autoplay = interval > 0 && count2 > 1 && !ctx.reduceMotion();
130529
130799
  const onChange = props.onChange;
130530
- const onChangeRef = React15.useRef(onChange);
130800
+ const onChangeRef = React16.useRef(onChange);
130531
130801
  onChangeRef.current = onChange;
130532
- const autoScrollRef = React15.useRef(null);
130533
- const endAutoScroll = React15.useCallback(() => {
130802
+ const autoScrollRef = React16.useRef(null);
130803
+ const endAutoScroll = React16.useCallback(() => {
130534
130804
  if (autoScrollRef.current) clearTimeout(autoScrollRef.current.timer);
130535
130805
  autoScrollRef.current = null;
130536
130806
  }, []);
130537
130807
  const requestedIndex = Math.max(0, Math.min(count2 - 1, typeof effectiveIndex === "number" ? effectiveIndex : 0));
130538
- React15.useEffect(() => {
130808
+ React16.useEffect(() => {
130539
130809
  endAutoScroll();
130540
130810
  indexRef.current = requestedIndex;
130541
130811
  setIndex(requestedIndex);
130542
130812
  if (trackRef.current) trackRef.current.scrollLeft = requestedIndex * trackRef.current.clientWidth * (trackRef.current.ownerDocument.defaultView?.getComputedStyle(trackRef.current).direction === "rtl" ? -1 : 1);
130543
130813
  }, [requestedIndex, count2, endAutoScroll]);
130544
- React15.useEffect(() => {
130814
+ React16.useEffect(() => {
130545
130815
  const el2 = trackRef.current;
130546
130816
  el2?.addEventListener("scrollend", endAutoScroll);
130547
130817
  return () => {
@@ -130549,14 +130819,14 @@ var init_renderNode = __esm({
130549
130819
  endAutoScroll();
130550
130820
  };
130551
130821
  }, [endAutoScroll]);
130552
- const pageTo = React15.useCallback((page) => {
130822
+ const pageTo = React16.useCallback((page) => {
130553
130823
  if (page === indexRef.current) return;
130554
130824
  indexRef.current = page;
130555
130825
  setIndex(page);
130556
130826
  const action = onChangeRef.current;
130557
130827
  if (action && ctx.onAction) ctx.onAction({ ...action, args: { ...action.args ?? {}, index: page } });
130558
130828
  }, [ctx]);
130559
- React15.useEffect(() => {
130829
+ React16.useEffect(() => {
130560
130830
  if (!autoplay || paused) return;
130561
130831
  const id = setInterval(() => {
130562
130832
  const next = (indexRef.current + 1) % count2;
@@ -130622,7 +130892,7 @@ var init_renderNode = __esm({
130622
130892
  });
130623
130893
  BannerNode = withExtras("BannerNode", ({ props, ctx, wrap }) => {
130624
130894
  const C2 = ctx.color;
130625
- const [dismissed, setDismissed] = React15.useState(false);
130895
+ const [dismissed, setDismissed] = React16.useState(false);
130626
130896
  if (dismissed) return null;
130627
130897
  const accent = sevColor(ctx, props.severity ?? "info");
130628
130898
  return /* @__PURE__ */ jsxs9("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: [
@@ -130655,16 +130925,16 @@ var init_renderNode = __esm({
130655
130925
  const rawImageUrl = props.imageUrl != null && isBinding(props.imageUrl) ? boundImageUrl : props.imageUrl;
130656
130926
  const heroSrc = typeof rawImageUrl === "string" && rawImageUrl !== "" ? rawImageUrl : typeof props.imageAsset === "string" && isWebAssetPath(props.imageAsset) ? props.imageAsset : void 0;
130657
130927
  const resolvedHero = heroSrc ? resolveAssetUrl(heroSrc, ctx.assetBaseUrl, ctx.assetPin) : void 0;
130658
- const [failedHero, setFailedHero] = React15.useState(null);
130928
+ const [failedHero, setFailedHero] = React16.useState(null);
130659
130929
  const heroUrl = resolvedHero && resolvedHero !== failedHero ? resolvedHero : void 0;
130660
130930
  const expanded = Math.max(0, typeof props.expandedHeight === "number" && Number.isFinite(props.expandedHeight) ? props.expandedHeight : 280);
130661
130931
  const imageUrl = useImageSource(heroUrl ?? null, { width: "100%", height: expanded, mode: "fill" }).url ?? void 0;
130662
130932
  const collapsed = Math.max(0, Math.min(expanded, typeof props.collapsedHeight === "number" && props.collapsedHeight > 0 ? props.collapsedHeight : 64));
130663
130933
  const parallax = typeof props.parallaxFactor === "number" && Number.isFinite(props.parallaxFactor) ? Math.max(0, Math.min(1, props.parallaxFactor)) : 0.5;
130664
130934
  const span = Math.max(1, expanded - collapsed);
130665
- const rootRef = React15.useRef(null);
130666
- const [offset, setOffset] = React15.useState(0);
130667
- React15.useEffect(() => {
130935
+ const rootRef = React16.useRef(null);
130936
+ const [offset, setOffset] = React16.useState(0);
130937
+ React16.useEffect(() => {
130668
130938
  const el2 = rootRef.current;
130669
130939
  const win = el2?.ownerDocument?.defaultView;
130670
130940
  if (!el2 || !win) return;
@@ -130766,46 +131036,55 @@ var init_renderNode = __esm({
130766
131036
  const boundEnd = useResolvedScalar(props.selectedEndDatePath, ctx);
130767
131037
  const seedStart = (props.selectedStartDatePath != null ? typeof boundStart === "string" ? boundStart : "" : typeof props.selectedStartDate === "string" ? props.selectedStartDate : "") || "";
130768
131038
  const seedEnd = (props.selectedEndDatePath != null ? typeof boundEnd === "string" ? boundEnd : "" : typeof props.selectedEndDate === "string" ? props.selectedEndDate : "") || "";
130769
- const [range, setRange] = React15.useState({ start: seedStart, end: seedEnd });
130770
- const lastRangeSeed = React15.useRef(`${seedStart}|${seedEnd}`);
130771
- React15.useEffect(() => {
131039
+ const [range, setRange] = React16.useState({ start: seedStart, end: seedEnd });
131040
+ const lastRangeSeed = React16.useRef(`${seedStart}|${seedEnd}`);
131041
+ React16.useEffect(() => {
130772
131042
  const key3 = `${seedStart}|${seedEnd}`;
130773
131043
  if (lastRangeSeed.current === key3) return;
130774
131044
  lastRangeSeed.current = key3;
130775
131045
  setRange({ start: seedStart, end: seedEnd });
130776
131046
  }, [seedStart, seedEnd]);
130777
- const seed2 = React15.useMemo(
131047
+ const seed2 = React16.useMemo(
130778
131048
  () => monthSeed(drivenYear ?? props.year, drivenMonth ?? props.month, selectedDate),
130779
131049
  [drivenYear, drivenMonth, props.year, props.month, selectedDate]
130780
131050
  );
130781
- const [view, setView] = React15.useState(seed2);
131051
+ const [view, setView] = React16.useState(seed2);
130782
131052
  const seedKey = `${seed2.year}-${seed2.month}`;
130783
- const lastSeed = React15.useRef(seedKey);
130784
- React15.useEffect(() => {
131053
+ const lastSeed = React16.useRef(seedKey);
131054
+ const lastSeedSelection = React16.useRef(selectedDate);
131055
+ React16.useEffect(() => {
131056
+ const bySelection = lastSeedSelection.current !== selectedDate;
131057
+ lastSeedSelection.current = selectedDate;
130785
131058
  if (lastSeed.current === seedKey) return;
130786
131059
  lastSeed.current = seedKey;
130787
131060
  setView(seed2);
131061
+ if (bySelection && !isWeek && (view.year !== seed2.year || view.month !== seed2.month)) {
131062
+ dispatchCalendarAction(ctx, props.onVisibleRangeChange, visibleRange(monthMatrix(seed2.year, seed2.month, firstWeekday)));
131063
+ }
130788
131064
  }, [seedKey, seed2]);
130789
131065
  const year = view.year;
130790
131066
  const month = view.month;
130791
131067
  const boundMode = useResolvedScalar(props.displayModePath, ctx);
130792
131068
  const drivenMode = props.displayModePath != null && (boundMode === "week" || boundMode === "month") ? boundMode : void 0;
130793
131069
  const modeSeed = drivenMode ?? (props.displayMode === "week" ? "week" : "month");
130794
- const [mode, setMode] = React15.useState(modeSeed);
130795
- const lastModeSeed = React15.useRef(modeSeed);
130796
- React15.useEffect(() => {
131070
+ const [mode, setMode] = React16.useState(modeSeed);
131071
+ const lastModeSeed = React16.useRef(modeSeed);
131072
+ React16.useEffect(() => {
130797
131073
  if (lastModeSeed.current === modeSeed) return;
130798
131074
  lastModeSeed.current = modeSeed;
130799
131075
  setMode(modeSeed);
130800
131076
  }, [modeSeed]);
130801
131077
  const isWeek = mode === "week";
130802
131078
  const weekSeed = calWeekStart(selectedDate ?? localDayKey(/* @__PURE__ */ new Date()), firstWeekday);
130803
- const [weekStart, setWeekStart] = React15.useState(weekSeed);
130804
- const lastWeekSeed = React15.useRef(weekSeed);
130805
- React15.useEffect(() => {
131079
+ const [weekStart, setWeekStart] = React16.useState(weekSeed);
131080
+ const lastWeekSeed = React16.useRef(weekSeed);
131081
+ React16.useEffect(() => {
130806
131082
  if (lastWeekSeed.current === weekSeed) return;
130807
131083
  lastWeekSeed.current = weekSeed;
130808
131084
  setWeekStart(weekSeed);
131085
+ if (isWeek && selectedDate != null && weekStart !== weekSeed) {
131086
+ dispatchCalendarAction(ctx, props.onVisibleRangeChange, { startDate: weekSeed, endDate: calAddDays(weekSeed, 6) });
131087
+ }
130809
131088
  }, [weekSeed]);
130810
131089
  const decByDate = /* @__PURE__ */ new Map();
130811
131090
  for (const d2 of decorations) if (d2 && typeof d2.date === "string") decByDate.set(d2.date, d2);
@@ -130815,7 +131094,7 @@ var init_renderNode = __esm({
130815
131094
  return { date, day: parseLocalDate(date)?.getDate() ?? 0, inMonth: true, isToday: date === todayKey };
130816
131095
  })] : monthMatrix(year, month, firstWeekday);
130817
131096
  const heads = weekdayLabels(firstWeekday);
130818
- const gridRef = React15.useRef(null);
131097
+ const gridRef = React16.useRef(null);
130819
131098
  const titleMonth = isWeek ? calWeekTitleMonth(weekStart) : { year, month };
130820
131099
  const monthLabel = new Date(titleMonth.year, titleMonth.month - 1, 1).toLocaleDateString(void 0, { month: "long", year: "numeric" });
130821
131100
  const expandable = props.expandable === true;
@@ -130990,7 +131269,7 @@ var init_renderNode = __esm({
130990
131269
  const events = Array.isArray(rawEvents) ? rawEvents : [];
130991
131270
  const boundAnchor = useResolvedScalar(props.anchorDatePath, ctx);
130992
131271
  const anchorRaw = props.anchorDatePath != null ? boundAnchor : props.anchorDate;
130993
- const [pagedAnchor, setPagedAnchor] = React15.useState(null);
131272
+ const [pagedAnchor, setPagedAnchor] = React16.useState(null);
130994
131273
  const localAnchor = pagedAnchor && Object.is(pagedAnchor.raw, anchorRaw) && pagedAnchor.path === props.anchorDatePath && pagedAnchor.mode === props.mode && pagedAnchor.provider === ctx.provider ? pagedAnchor.date : null;
130995
131274
  if (pagedAnchor && !localAnchor) setPagedAnchor(null);
130996
131275
  const anchor = localAnchor ?? (typeof anchorRaw === "string" ? parseLocalDate(anchorRaw) : null) ?? /* @__PURE__ */ new Date();
@@ -131230,7 +131509,7 @@ var init_renderNode = __esm({
131230
131509
  const boundEvents = useResolvedScalar(props.eventsPath, ctx);
131231
131510
  const rawEvents = props.eventsPath != null ? boundEvents : props.events;
131232
131511
  const events = Array.isArray(rawEvents) ? rawEvents : [];
131233
- const groups = React15.useMemo(() => {
131512
+ const groups = React16.useMemo(() => {
131234
131513
  const buckets = /* @__PURE__ */ new Map();
131235
131514
  for (const ev of events) {
131236
131515
  if (!ev) continue;
@@ -131250,19 +131529,48 @@ var init_renderNode = __esm({
131250
131529
  const onSelect = (ev) => dispatchCalendarAction(ctx, ev?.onTap ?? props.onSelectEvent, { eventId: ev?.id });
131251
131530
  const boundScrollTo = useResolvedScalar(props.scrollToDatePath, ctx);
131252
131531
  const scrollTarget = props.scrollToDatePath != null ? typeof boundScrollTo === "string" ? boundScrollTo : void 0 : typeof props.scrollToDate === "string" ? props.scrollToDate : void 0;
131253
- const containerRef = React15.useRef(null);
131254
- const [visibleDays, setVisibleDays] = React15.useState(CAL_AGENDA_INITIAL_DAYS);
131255
- const targetIndex = scrollTarget ? groups.findIndex((g2) => g2.key === scrollTarget) : -1;
131532
+ const targetDay = anchorRowId(scrollTarget) ?? void 0;
131533
+ const containerRef = React16.useRef(null);
131534
+ const [visibleDays, setVisibleDays] = React16.useState(CAL_AGENDA_INITIAL_DAYS);
131535
+ const targetIndex = targetDay ? groups.findIndex((g2) => g2.key === targetDay) : -1;
131256
131536
  const windowEnd = Math.max(visibleDays, targetIndex >= 0 ? targetIndex + 1 : 0);
131257
131537
  const shown2 = groups.length > windowEnd ? groups.slice(0, windowEnd) : groups;
131258
131538
  const hasMore = groups.length > shown2.length;
131259
- React15.useEffect(() => {
131260
- if (!scrollTarget) return;
131261
- const block = groups[0]?.key === scrollTarget ? "nearest" : "start";
131262
- containerRef.current?.querySelector(`[data-daygroup="${scrollTarget}"]`)?.scrollIntoView({ block });
131539
+ const onVisibleDate = props.onVisibleDateChange ?? props.on_visible_date_change;
131540
+ const reportedDate = React16.useRef(null);
131541
+ const jumped = useTopAnchorReport(
131542
+ containerRef,
131543
+ onVisibleDate ? () => Array.from(containerRef.current?.children ?? [], (el2) => ({ id: el2.getAttribute("data-daygroup") ?? "", el: el2 })).filter((a2) => a2.id) : null,
131544
+ (date) => {
131545
+ reportedDate.current = date;
131546
+ dispatchCalendarAction(ctx, onVisibleDate, { date });
131547
+ },
131548
+ groups
131549
+ );
131550
+ const landedOn = React16.useRef(null);
131551
+ React16.useEffect(() => {
131552
+ if (!scrollTarget || !targetDay) {
131553
+ landedOn.current = null;
131554
+ return;
131555
+ }
131556
+ if (scrollTarget === landedOn.current) return;
131557
+ if (!scrollTarget.includes("|") && targetDay === reportedDate.current) {
131558
+ landedOn.current = scrollTarget;
131559
+ return;
131560
+ }
131561
+ reportedDate.current = null;
131562
+ const day = containerRef.current?.querySelector(`[data-daygroup="${targetDay}"]`);
131563
+ if (!day) return;
131564
+ const block = groups[0]?.key === targetDay ? "nearest" : "start";
131565
+ const inset = coveredTopInset(day);
131566
+ if (inset > 0) day.style.scrollMarginTop = `${inset}px`;
131567
+ else day.style.removeProperty("scroll-margin-top");
131568
+ jumped(0);
131569
+ day.scrollIntoView({ block });
131570
+ if (block === "nearest" || reachesVisibleTop(day)) landedOn.current = scrollTarget;
131263
131571
  }, [scrollTarget, windowEnd]);
131264
- const sentinelRef = React15.useRef(null);
131265
- React15.useEffect(() => {
131572
+ const sentinelRef = React16.useRef(null);
131573
+ React16.useEffect(() => {
131266
131574
  if (!hasMore) return;
131267
131575
  const el2 = sentinelRef.current;
131268
131576
  if (!el2 || typeof IntersectionObserver === "undefined") return;
@@ -131278,6 +131586,7 @@ var init_renderNode = __esm({
131278
131586
  return /* @__PURE__ */ jsx11("div", { style: { width: "100%", padding: "28px 16px", boxSizing: "border-box", textAlign: "center", fontFamily: bodyFont(ctx), fontSize: pxToRem(14), color: C2("textSecondary", "#888"), ...wrap }, children: emptyLabel || "No events" });
131279
131587
  }
131280
131588
  const sticky = props.stickyHeaders === true;
131589
+ const dayHeaderFont = ctx.font("caption");
131281
131590
  const todayKey = localDayKey(/* @__PURE__ */ new Date());
131282
131591
  const tomorrowKey = localDayKey(new Date((/* @__PURE__ */ new Date()).getFullYear(), (/* @__PURE__ */ new Date()).getMonth(), (/* @__PURE__ */ new Date()).getDate() + 1));
131283
131592
  const dayHeaderLabel = (key3) => {
@@ -131288,7 +131597,7 @@ var init_renderNode = __esm({
131288
131597
  };
131289
131598
  return /* @__PURE__ */ jsxs9("div", { ref: containerRef, "data-agenda-days": shown2.length, style: { width: "100%", boxSizing: "border-box", ...wrap }, children: [
131290
131599
  shown2.map((g2) => /* @__PURE__ */ jsxs9("div", { "data-daygroup": g2.key, children: [
131291
- /* @__PURE__ */ jsx11("div", { style: { position: sticky ? "sticky" : "static", top: 0, zIndex: 1, background: C2("surfacePrimary", "#fff"), fontFamily: bodyFont(ctx), fontSize: pxToRem(12), fontWeight: 700, textTransform: "uppercase", letterSpacing: 0.4, color: C2("textSecondary", "#888"), padding: "8px 4px" }, children: dayHeaderLabel(g2.key) }),
131600
+ /* @__PURE__ */ jsx11("div", { "data-dayheader": "", style: { position: sticky ? "sticky" : "static", top: 0, zIndex: 1, background: C2("surfaceSecondary", "#f5f7fa"), fontFamily: fontStack(dayHeaderFont.family, ctx.idiom), fontSize: dayHeaderFont.remSize, fontWeight: dayHeaderFont.weight, lineHeight: dayHeaderFont.line, letterSpacing: dayHeaderFont.letterSpacing, color: C2("textSecondary", "#888"), padding: "6px 16px", textAlign: "start" }, children: dayHeaderLabel(g2.key) }),
131292
131601
  g2.items.map((ev, i2) => {
131293
131602
  const start = parseLocalDate(ev.start);
131294
131603
  const timeStr = ev.allDay === true ? "All day" : start ? localTimeLabel(start) : "";
@@ -131379,14 +131688,14 @@ var init_renderNode = __esm({
131379
131688
  PRESENTED_SCOPE = '[aria-modal="true"], [role="dialog"], [role="alertdialog"], [role="menu"]';
131380
131689
  focusRoots = /* @__PURE__ */ new WeakMap();
131381
131690
  A11yHintDescription = ({ hint, idBase, children, ...forwarded }) => {
131382
- const descId = `${idBase ?? "hm"}__hint${React15.useId()}`;
131691
+ const descId = `${idBase ?? "hm"}__hint${React16.useId()}`;
131383
131692
  const own6 = children.props;
131384
131693
  const next = { ...forwarded };
131385
131694
  if (forwarded.style) next.style = { ...own6.style ?? {}, ...forwarded.style };
131386
131695
  const ids = [own6["aria-describedby"], forwarded["aria-describedby"], descId].flatMap((v2) => v2 ? String(v2).split(/\s+/) : []).filter(Boolean);
131387
131696
  next["aria-describedby"] = Array.from(new Set(ids)).join(" ");
131388
131697
  return /* @__PURE__ */ jsxs9(Fragment4, { children: [
131389
- React15.cloneElement(children, next),
131698
+ React16.cloneElement(children, next),
131390
131699
  /* @__PURE__ */ jsx11("span", { id: descId, hidden: true, "data-hm-a11y-hint": "", children: hint })
131391
131700
  ] });
131392
131701
  };
@@ -131406,15 +131715,41 @@ var init_renderNode = __esm({
131406
131715
  return /* @__PURE__ */ jsx11("div", { className: "hm-bound-rail-cell", style: { flex: fill ? "0 0 100%" : "0 0 auto", ...fill ? { minWidth: 0, maxWidth: frame.maxWidth } : horizontalList ? { display: "contents" } : {} }, children: content });
131407
131716
  };
131408
131717
  renderRailRow = (template, itemCtx) => railRowFrame(template, renderNode(template, itemCtx), itemCtx);
131718
+ RowAnchors = ({ ctx, itemsPath, jumpPath, onTopItem, children }) => {
131719
+ const rootRef = React16.useRef(null);
131720
+ const jumpValue = useResolvedScalar(jumpPath, ctx);
131721
+ const jump = typeof jumpValue === "string" ? jumpValue : "";
131722
+ const target = anchorRowId(jump) ?? void 0;
131723
+ const rows = useBoundValue(ctx, itemsPath.startsWith("$item.") ? "" : itemsPath);
131724
+ const anchors = () => {
131725
+ const root = rootRef.current;
131726
+ if (!root) return [];
131727
+ return Array.from(root.querySelectorAll("[data-himalaya-row-id]")).filter((el2) => el2.closest("[data-himalaya-row-anchors]") === root).map((el2) => ({ id: el2.getAttribute("data-himalaya-row-id") ?? "", el: el2 }));
131728
+ };
131729
+ const jumped = useTopAnchorReport(rootRef, onTopItem ? anchors : null, (id) => dispatchCalendarAction(ctx, onTopItem, { id }), rows);
131730
+ const landedOn = React16.useRef("");
131731
+ React16.useEffect(() => {
131732
+ if (!target) {
131733
+ landedOn.current = "";
131734
+ return;
131735
+ }
131736
+ if (jump === landedOn.current) return;
131737
+ const row2 = anchors().find((a2) => a2.id === target);
131738
+ if (!row2) return;
131739
+ landedOn.current = jump;
131740
+ jumped(scrollAnchorToTop(row2.el, ctx.reduceMotion()));
131741
+ }, [jump, rows]);
131742
+ return /* @__PURE__ */ jsx11("div", { ref: rootRef, "data-himalaya-row-anchors": "", style: { display: "contents" }, children: /* @__PURE__ */ jsx11(RevealRowContext.Provider, { value: target, children }) });
131743
+ };
131409
131744
  reportedUnknownComponents = /* @__PURE__ */ new Set();
131410
131745
  UnknownComponentNode = ({ pkg, type, props, ctx, wrap, ...extras }) => {
131411
131746
  const hasTelemetry = !!ctx.emitTelemetry;
131412
- React15.useEffect(() => {
131747
+ React16.useEffect(() => {
131413
131748
  reportUnknownComponent(ctx, pkg, type);
131414
131749
  }, [ctx.appId, ctx.screenId, hasTelemetry, pkg, type]);
131415
131750
  const { style: extraStyle, children: extraChildren, ...attrs } = extras;
131416
131751
  const nodeProps = (entries) => entries.filter(([, v2]) => isNodeLike(v2) || Array.isArray(v2) && v2.some(isNodeLike));
131417
- const renderProps = (entries) => entries.map(([k2, v2]) => /* @__PURE__ */ jsx11(React15.Fragment, { children: Array.isArray(v2) ? kids2(v2.filter(isNodeLike), ctx) : renderNode(v2, ctx) }, k2));
131752
+ const renderProps = (entries) => entries.map(([k2, v2]) => /* @__PURE__ */ jsx11(React16.Fragment, { children: Array.isArray(v2) ? kids2(v2.filter(isNodeLike), ctx) : renderNode(v2, ctx) }, k2));
131418
131753
  const childKeys = nodeProps(Object.entries(props ?? {}));
131419
131754
  if (!unknownComponentShowsDeveloperLabel(ctx)) {
131420
131755
  const contentKeys = childKeys.filter(([k2]) => k2 === "child" || k2 === "children");
@@ -131437,11 +131772,11 @@ var init_renderNode = __esm({
131437
131772
  ScrollIntoViewNode = ({ node, ctx, path: path2 }) => {
131438
131773
  const token = useResolvedScalar(path2, ctx);
131439
131774
  const source = isBinding(path2) ? path2 : "";
131440
- const seen = React15.useRef({ source, provider: ctx.provider, token });
131775
+ const seen = React16.useRef({ source, provider: ctx.provider, token });
131441
131776
  if (seen.current.source !== source || seen.current.provider !== ctx.provider) seen.current = { source, provider: ctx.provider, token };
131442
- const root = React15.useRef(null);
131777
+ const root = React16.useRef(null);
131443
131778
  const reduced = ctx.reduceMotion();
131444
- React15.useEffect(() => {
131779
+ React16.useEffect(() => {
131445
131780
  if (token === seen.current.token) return;
131446
131781
  seen.current.token = token;
131447
131782
  if (token == null || token === "" || token === 0 || token === "0") return;
@@ -131462,7 +131797,7 @@ var init_renderNode = __esm({
131462
131797
  });
131463
131798
 
131464
131799
  // ../../core/web-renderer/src/renderToHtml.tsx
131465
- import React16 from "react";
131800
+ import React17 from "react";
131466
131801
  import { renderToStaticMarkup } from "react-dom/server";
131467
131802
  function renderDescriptorToHtml(payload, tokens2, scheme = "light", provider = null, width, chrome, opts) {
131468
131803
  const rtl = opts?.isRTL === true;
@@ -131482,7 +131817,7 @@ function renderDescriptorToHtml(payload, tokens2, scheme = "light", provider = n
131482
131817
  const withRenderStyles = (markup) => {
131483
131818
  if (!markup) return markup;
131484
131819
  if (!glassPreview) return FOCUS_STYLE_MARKUP + markup;
131485
- const scoped = renderToStaticMarkup(React16.createElement(
131820
+ const scoped = renderToStaticMarkup(React17.createElement(
131486
131821
  "div",
131487
131822
  {
131488
131823
  className: "himi-ios-glass-preview",
@@ -131499,18 +131834,18 @@ function renderDescriptorToHtml(payload, tokens2, scheme = "light", provider = n
131499
131834
  const dir = rtl ? { dir: "rtl" } : {};
131500
131835
  if (header || footer) {
131501
131836
  return withRenderStyles(renderToStaticMarkup(
131502
- React16.createElement(
131837
+ React17.createElement(
131503
131838
  "div",
131504
131839
  // F-22 — same footer pin as ScreenHost: a full-height flex column + margin-top:auto
131505
131840
  // keeps the footer at the bottom edge even when the payload is short.
131506
131841
  { "data-testid": "screen-host", ...dir, ...footer ? { style: { display: "flex", flexDirection: "column", minHeight: "100%", flexGrow: 1 } } : {} },
131507
- header ? React16.createElement(
131842
+ header ? React17.createElement(
131508
131843
  "div",
131509
131844
  { "data-testid": "sticky-header", style: { position: "sticky", top: 0, zIndex: 10 } },
131510
131845
  renderNode(header, ctx)
131511
131846
  ) : null,
131512
131847
  renderNode(payload, ctx),
131513
- footer ? React16.createElement(
131848
+ footer ? React17.createElement(
131514
131849
  "div",
131515
131850
  { "data-testid": "sticky-footer", style: { position: "sticky", bottom: 0, zIndex: 10, marginTop: "auto" } },
131516
131851
  renderNode(footer, ctx)
@@ -131520,11 +131855,11 @@ function renderDescriptorToHtml(payload, tokens2, scheme = "light", provider = n
131520
131855
  }
131521
131856
  if (rtl) {
131522
131857
  return withRenderStyles(renderToStaticMarkup(
131523
- React16.createElement("div", dir, renderNode(payload, ctx))
131858
+ React17.createElement("div", dir, renderNode(payload, ctx))
131524
131859
  ));
131525
131860
  }
131526
131861
  return withRenderStyles(renderToStaticMarkup(
131527
- React16.createElement(React16.Fragment, null, renderNode(payload, ctx))
131862
+ React17.createElement(React17.Fragment, null, renderNode(payload, ctx))
131528
131863
  ));
131529
131864
  }
131530
131865
  var init_renderToHtml = __esm({
@@ -178075,43 +178410,43 @@ var init_preview_assets_generated = __esm({
178075
178410
  init_define_HHP_CATALOG();
178076
178411
  init_preview_assets_format();
178077
178412
  PREVIEW_ASSET_MANIFEST = [
178078
- { key: "assets/DashboardHost-C7P_1jck.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 2971, sha256: "0cafc1fc5eb5dc98938dc3b66afcc5842cb2a895e70bfba065cc1b23174baea7" },
178079
- { key: "assets/DevDrawer-B-B3GRUC.js", contentType: "application/javascript; charset=utf-8", offset: 2979, length: 16783, sha256: "acd38a0791e1e3c8a4311c427807478b7f9464f347efd55f97659d377ba40d4e" },
178080
- { key: "assets/IdiomCompare-u1cx0Nr4.js", contentType: "application/javascript; charset=utf-8", offset: 19762, length: 1926, sha256: "f4d5108f6adf5722774a126906236048b41f78e4f0a57e396ba08740f684c4a5" },
178081
- { key: "assets/LightboxViewer-D-g6XGNR.js", contentType: "application/javascript; charset=utf-8", offset: 21688, length: 8171, sha256: "59db0e60fcfa0675be79c7ea38a4ba08fb505230fdf1d7382b45524735aa15a7" },
178082
- { key: "assets/OfflineReadingBar-CNZR3aeJ.js", contentType: "application/javascript; charset=utf-8", offset: 29859, length: 1707, sha256: "e4d4cc29b0a9ab50f11946b7f407fbe01fd8e541128d6aa2b5af7957bb8fd768" },
178083
- { key: "assets/PhonePreviewControl-BA1Jt5cv.js", contentType: "application/javascript; charset=utf-8", offset: 31566, length: 37768, sha256: "79507ab790deb72d7348073ca5b7df95afe1b39901827f6d1cef075bbefec376" },
178084
- { key: "assets/SchemeCompare-B1mzC6qf.js", contentType: "application/javascript; charset=utf-8", offset: 69334, length: 1858, sha256: "8e043cdcc77381617f4af4432cfdc2a0febadf1df8ef3d43d3b00e4cad737312" },
178085
- { key: "assets/WixFrogTelemetrySink-CAKOlT4M.js", contentType: "application/javascript; charset=utf-8", offset: 71192, length: 3165, sha256: "0718108663c9d7f83a517d71d5cf3121119ced391a9bf93edb345a956437d046" },
178413
+ { key: "assets/DashboardHost-DklK-Zpw.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 2971, sha256: "8ac27115db1347bf878d926e5a8b23776307637b342503c7f4070e53c534e48d" },
178414
+ { key: "assets/DevDrawer-DwjZbUMa.js", contentType: "application/javascript; charset=utf-8", offset: 2979, length: 16783, sha256: "ab7d4ad5317244e0d50b368598b3f69e76c571021b05de9d681dc4c6b04624ee" },
178415
+ { key: "assets/IdiomCompare-RHazP0EX.js", contentType: "application/javascript; charset=utf-8", offset: 19762, length: 1926, sha256: "f9afaf8b9f701fe89b47addbf788597e482cba65ea491080d582a02f1c19b6e9" },
178416
+ { key: "assets/LightboxViewer-CJ3Msrdl.js", contentType: "application/javascript; charset=utf-8", offset: 21688, length: 8171, sha256: "06ce24bac351dfd743cb2bce3afcf5336283a9cc40356ab7743e7986cd56c1e5" },
178417
+ { key: "assets/OfflineReadingBar-BRyTZD1b.js", contentType: "application/javascript; charset=utf-8", offset: 29859, length: 1707, sha256: "7392912ed29ca4ac39c72a997abd5c1c0541d5a527a6c4c893640e7aa8a36aca" },
178418
+ { key: "assets/PhonePreviewControl-4F9kIc5D.js", contentType: "application/javascript; charset=utf-8", offset: 31566, length: 37768, sha256: "2a7cf4c3afb7451d7455a6899a2f0694b4a4b0d00bb0edbd4ac18475e4731a00" },
178419
+ { key: "assets/SchemeCompare-sK0fGfs9.js", contentType: "application/javascript; charset=utf-8", offset: 69334, length: 1858, sha256: "c3a8a60a66c0d1630fac003fbd012c445c58c63ff60adbf48d6e97e931089ea4" },
178420
+ { key: "assets/WixFrogTelemetrySink-CEUEnj87.js", contentType: "application/javascript; charset=utf-8", offset: 71192, length: 3165, sha256: "c176cdb71b46dac380c1d3f5fd793489f6005725e09e4aa87c5baf736f1ed00c" },
178086
178421
  { key: "assets/calendar-ics-BvfIYWjG.js", contentType: "application/javascript; charset=utf-8", offset: 74357, length: 2192, sha256: "1636167041e9829ceccd3544297b86b8475c38bd2f759c4dbc17c813dc6e9254" },
178087
178422
  { key: "assets/glassPreviewBrowser-DONaOehd.js", contentType: "application/javascript; charset=utf-8", offset: 76549, length: 6578, sha256: "4402c4cddd2a564e7466cdf1e12a0e0277c0400b288e1e5eda1d23e797599d31" },
178088
178423
  { key: "assets/image-preparation-Cj4gldm6.js", contentType: "application/javascript; charset=utf-8", offset: 83127, length: 2704, sha256: "32944ea587c2f3b84389b66b50a850437560238f1c8d33b6275973ee04eee865" },
178089
- { key: "assets/index-Bw8GZ9Yz.js", contentType: "application/javascript; charset=utf-8", offset: 85831, length: 1392699, sha256: "160170c65e9ce53d8d2cd7e92bd14fe533615a621ed46f1b2e716f27e002dbda" },
178090
- { key: "assets/jsx-runtime-CY_jTiqj.js", contentType: "application/javascript; charset=utf-8", offset: 1478530, length: 7624, sha256: "29dfba5b56f79a0b84d6b04d84d87617454baeba03c225f682ab2ab7ae2d5016" },
178091
- { key: "assets/pdf-BuyAvPDb.js", contentType: "application/javascript; charset=utf-8", offset: 1486154, length: 488199, sha256: "113fa825ce228b5925066c1ceea04882a52518a5810394db587c8a0af3f9f78e" },
178092
- { key: "assets/pdf.worker.min-BQa_JDET.js", contentType: "application/javascript; charset=utf-8", offset: 1974353, length: 73, sha256: "41bcfda4f3c8c0a81c785ea87c69afc8e7d0ed8c333324aee94c273d881bb6aa" },
178093
- { key: "assets/pdf.worker.min-BmVo14Nb.mjs", contentType: "application/javascript; charset=utf-8", offset: 1974426, length: 1317034, sha256: "a33cfe728c584fdba4fcc1fd54bcdc2f9f2f13889ddbb5b2bd1d0f8cbe49b84e" },
178094
- { key: "assets/pdfDocument-BIKANU-3.js", contentType: "application/javascript; charset=utf-8", offset: 3291460, length: 3453, sha256: "17eddc09364d683d2c0552f33f85d06a460d1e0bad5752206a0a10d3724c563b" },
178095
- { key: "assets/pdfFetch-Cc8i1I1h.js", contentType: "application/javascript; charset=utf-8", offset: 3294913, length: 2266, sha256: "1d21ad008921942217c9eac0c35b1713773b9d89c71e3ab4412781f7bb88f463" },
178096
- { key: "assets/webviewBridgeHost-DoXBO0bK.js", contentType: "application/javascript; charset=utf-8", offset: 3297179, length: 9888, sha256: "0be4db01ab011e7a76cf2451925ddb4ed90a4edd06e12e70f0e0c98690c39734" },
178097
- { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 3307067, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
178098
- { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 3311677, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
178099
- { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 3800261, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
178100
- { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 3891185, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
178101
- { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 3982169, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
178102
- { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 4073149, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
178103
- { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 4164021, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
178104
- { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 4255001, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
178105
- { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 4363637, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
178106
- { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 4472721, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
178107
- { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 4581769, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
178108
- { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 4689469, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
178109
- { key: "himi-sw.js", contentType: "application/javascript; charset=utf-8", offset: 4777577, length: 6818, sha256: "835250c3d8004f27c2b67f9b471984351ba6df07b916d97e33b43c691200a18c" },
178110
- { key: "index.html", contentType: "text/html; charset=utf-8", offset: 4784395, length: 5037, sha256: "313495ddda6618b7f297c8a640768bf881f5436da5267b5a097db96fb1fc8f03" },
178111
- { key: "ios-glass-preview.css", contentType: "text/css; charset=utf-8", offset: 4789432, length: 10699, sha256: "f187c5a783ec41f90c0e49471ddc3ad5d3bb9c9c40feddad92e0ed9ef9b480f1" },
178112
- { key: "kit-tab-bar.css", contentType: "text/css; charset=utf-8", offset: 4800131, length: 1171, sha256: "9e2c3a0faaf05d5471badf167a4d3bdf1c4e6dd65c432eea6d254158bfd99585" },
178113
- { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 4801302, length: 21696, sha256: "fb8575993c8072adda0e61f45f80aca6a1ebb965c24707bc1265150544a4af26" },
178114
- { key: "t5-worker-frame.html", contentType: "text/html; charset=utf-8", offset: 4822998, length: 21713, sha256: "7d647969cbb8f94275bcaabb41e6a72e70bc1f1608b26bba1ba783b06d0beb4f" }
178424
+ { key: "assets/index-BT6yBCvd.js", contentType: "application/javascript; charset=utf-8", offset: 85831, length: 1400972, sha256: "df8e1e77483e46057d0774471ff5e6c86ba59ab1379d623d7992a427f1c74097" },
178425
+ { key: "assets/jsx-runtime-CY_jTiqj.js", contentType: "application/javascript; charset=utf-8", offset: 1486803, length: 7624, sha256: "29dfba5b56f79a0b84d6b04d84d87617454baeba03c225f682ab2ab7ae2d5016" },
178426
+ { key: "assets/pdf-CtGGuHgR.js", contentType: "application/javascript; charset=utf-8", offset: 1494427, length: 488199, sha256: "612e7b0165b78c01c17547afeb67f1af2ea454485a70c78a08fc8ae9a6be6db4" },
178427
+ { key: "assets/pdf.worker.min-BQa_JDET.js", contentType: "application/javascript; charset=utf-8", offset: 1982626, length: 73, sha256: "41bcfda4f3c8c0a81c785ea87c69afc8e7d0ed8c333324aee94c273d881bb6aa" },
178428
+ { key: "assets/pdf.worker.min-BmVo14Nb.mjs", contentType: "application/javascript; charset=utf-8", offset: 1982699, length: 1317034, sha256: "a33cfe728c584fdba4fcc1fd54bcdc2f9f2f13889ddbb5b2bd1d0f8cbe49b84e" },
178429
+ { key: "assets/pdfDocument-CcHxPK2L.js", contentType: "application/javascript; charset=utf-8", offset: 3299733, length: 3453, sha256: "35bb98873fac02db0d665348b003b3d4cc1409f96c5c7af54c2ddf4a09422ae6" },
178430
+ { key: "assets/pdfFetch-Cc8i1I1h.js", contentType: "application/javascript; charset=utf-8", offset: 3303186, length: 2266, sha256: "1d21ad008921942217c9eac0c35b1713773b9d89c71e3ab4412781f7bb88f463" },
178431
+ { key: "assets/webviewBridgeHost-DBV0MQlP.js", contentType: "application/javascript; charset=utf-8", offset: 3305452, length: 9888, sha256: "66b491db1051c0603d41e598f94755a06e33ccc52006af59f3a971b5ed2a19e1" },
178432
+ { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 3315340, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
178433
+ { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 3319950, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
178434
+ { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 3808534, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
178435
+ { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 3899458, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
178436
+ { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 3990442, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
178437
+ { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 4081422, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
178438
+ { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 4172294, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
178439
+ { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 4263274, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
178440
+ { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 4371910, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
178441
+ { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 4480994, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
178442
+ { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 4590042, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
178443
+ { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 4697742, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
178444
+ { key: "himi-sw.js", contentType: "application/javascript; charset=utf-8", offset: 4785850, length: 6818, sha256: "835250c3d8004f27c2b67f9b471984351ba6df07b916d97e33b43c691200a18c" },
178445
+ { key: "index.html", contentType: "text/html; charset=utf-8", offset: 4792668, length: 5037, sha256: "049f62e19584f12d09168a7c8df345d852e57c608ac95a9e34140d15d620d4a3" },
178446
+ { key: "ios-glass-preview.css", contentType: "text/css; charset=utf-8", offset: 4797705, length: 10699, sha256: "f187c5a783ec41f90c0e49471ddc3ad5d3bb9c9c40feddad92e0ed9ef9b480f1" },
178447
+ { key: "kit-tab-bar.css", contentType: "text/css; charset=utf-8", offset: 4808404, length: 1171, sha256: "9e2c3a0faaf05d5471badf167a4d3bdf1c4e6dd65c432eea6d254158bfd99585" },
178448
+ { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 4809575, length: 21696, sha256: "fb8575993c8072adda0e61f45f80aca6a1ebb965c24707bc1265150544a4af26" },
178449
+ { key: "t5-worker-frame.html", contentType: "text/html; charset=utf-8", offset: 4831271, length: 21713, sha256: "7d647969cbb8f94275bcaabb41e6a72e70bc1f1608b26bba1ba783b06d0beb4f" }
178115
178450
  ];
178116
178451
  }
178117
178452
  });
@@ -194941,7 +195276,7 @@ var init_spaces_host_manifest = __esm({
194941
195276
  "../../apps/himi-spaces-lite/spaces-host-manifest.ts"() {
194942
195277
  init_define_HHP_CATALOG();
194943
195278
  SPACES_HOST_MANIFEST = {
194944
- "version": "1.7.0",
195279
+ "version": "1.8.0",
194945
195280
  "capabilities": [
194946
195281
  "animation",
194947
195282
  "app_info",