@wix/himalaya-cli 0.1582.0 → 0.1584.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 (336) 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/_types/stdlib/wix-sdk/blog-v3/src/extensions.d.ts +2 -0
  5. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/comments-v1/src/extensions.d.ts +2 -0
  6. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/events/src/index.d.ts +3 -0
  7. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/groups/src/extensions.d.ts +15 -0
  8. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/loyalty/src/extensions.d.ts +13 -0
  9. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/members-v1/src/index.d.ts +19 -4
  10. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/core.mjs +5 -1
  11. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/sdui.mjs +5 -1
  12. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-comments.mjs +3 -0
  13. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-events.mjs +4 -2
  14. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-groups.mjs +5 -0
  15. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-loyalty.mjs +4 -0
  16. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-members.mjs +10 -3
  17. package/dist/cli.mjs +1098 -702
  18. package/dist/preview-assets.generated.bin +0 -0
  19. package/fixtures/wix-canned.json +25 -0
  20. package/guides/component-reference.json +4 -3
  21. package/guides/component-reference.md +24 -2
  22. package/guides/one-app-to-himi-app.md +52 -1
  23. package/guides/sdk-reference.json +37 -9
  24. package/guides/wix-api-usage.md +9 -0
  25. package/package.json +2 -2
  26. package/templates/beauty-salon/config.ts +27 -1
  27. package/templates/beauty-salon/dev/index.ts +2285 -757
  28. package/templates/beauty-salon/himalaya.content.json +3 -0
  29. package/templates/beauty-salon/tier5-src/_shared/booking-location.ts +147 -0
  30. package/templates/beauty-salon/tier5-src/_shared/booking-session.ts +222 -0
  31. package/templates/beauty-salon/tier5-src/_shared/branded-lite-hosted.ts +1 -1
  32. package/templates/beauty-salon/tier5-src/_shared/collection-contract.ts +19 -3
  33. package/templates/beauty-salon/tier5-src/_shared/himi-restaurants.ts +2 -1
  34. package/templates/beauty-salon/tier5-src/_shared/owner-editor-value.ts +164 -0
  35. package/templates/beauty-salon/tier5-src/_shared/store-product-info.ts +50 -0
  36. package/templates/beauty-salon/tier5-src/himi-blog-post/index.ts +21 -8
  37. package/templates/beauty-salon/tier5-src/himi-booking-service/index.ts +277 -14
  38. package/templates/beauty-salon/tier5-src/himi-booking-services/index.ts +351 -92
  39. package/templates/beauty-salon/tier5-src/himi-booking-time/index.ts +25 -5
  40. package/templates/beauty-salon/tier5-src/himi-branded-lite-agenda/index.ts +219 -220
  41. package/templates/beauty-salon/tier5-src/himi-branded-lite-category/index.ts +3 -2
  42. package/templates/beauty-salon/tier5-src/himi-branded-lite-notifsettings/index.ts +173 -0
  43. package/templates/beauty-salon/tier5-src/himi-branded-lite-plans/index.ts +2 -1
  44. package/templates/beauty-salon/tier5-src/himi-store-product/index.ts +14 -3
  45. package/templates/beauty-salon/tier5-src/wix-spaces-plan-detail/index.ts +2 -1
  46. package/templates/beauty-salon/tier5-src/wix-spaces-whats-new/index.ts +2 -1
  47. package/templates/beauty-salon-owner/dev/index.ts +129 -66
  48. package/templates/beauty-salon-owner/tier5-src/_shared/collection-contract.ts +19 -3
  49. package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-post/index.ts +7 -0
  50. package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-product/index.ts +39 -6
  51. package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-product-form/index.ts +14 -8
  52. package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-products/index.ts +7 -4
  53. package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-service/index.ts +38 -7
  54. package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-service-form/index.ts +53 -7
  55. package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-services/index.ts +4 -2
  56. package/templates/branded-lite/config.ts +29 -1
  57. package/templates/branded-lite/dev/index.ts +8371 -5565
  58. package/templates/branded-lite/himalaya.content.json +3 -0
  59. package/templates/branded-lite/l10n/en.json +2 -2
  60. package/templates/branded-lite/tier5-src/_shared/booking-location.ts +147 -0
  61. package/templates/branded-lite/tier5-src/_shared/booking-session.ts +222 -0
  62. package/templates/branded-lite/tier5-src/_shared/branded-lite-hosted.ts +1 -1
  63. package/templates/branded-lite/tier5-src/_shared/collection-contract.ts +19 -3
  64. package/templates/branded-lite/tier5-src/_shared/event-registration.ts +86 -0
  65. package/templates/branded-lite/tier5-src/_shared/himi-restaurants.ts +2 -1
  66. package/templates/branded-lite/tier5-src/_shared/owner-editor-value.ts +164 -0
  67. package/templates/branded-lite/tier5-src/_shared/store-product-info.ts +50 -0
  68. package/templates/branded-lite/tier5-src/himi-blog-post/index.ts +21 -8
  69. package/templates/branded-lite/tier5-src/himi-booking-service/index.ts +277 -14
  70. package/templates/branded-lite/tier5-src/himi-booking-services/index.ts +351 -92
  71. package/templates/branded-lite/tier5-src/himi-booking-time/index.ts +25 -5
  72. package/templates/branded-lite/tier5-src/himi-branded-lite-agenda/index.ts +219 -220
  73. package/templates/branded-lite/tier5-src/himi-branded-lite-badges/index.ts +2 -1
  74. package/templates/branded-lite/tier5-src/himi-branded-lite-category/index.ts +3 -2
  75. package/templates/branded-lite/tier5-src/himi-branded-lite-feed/index.ts +4 -3
  76. package/templates/branded-lite/tier5-src/himi-branded-lite-group-about/index.ts +243 -0
  77. package/templates/branded-lite/tier5-src/himi-branded-lite-loyalty/index.ts +115 -49
  78. package/templates/branded-lite/tier5-src/himi-branded-lite-plans/index.ts +2 -1
  79. package/templates/branded-lite/tier5-src/himi-branded-lite-podcasts/index.ts +2 -1
  80. package/templates/branded-lite/tier5-src/himi-branded-lite-portfolio/index.ts +2 -1
  81. package/templates/branded-lite/tier5-src/himi-branded-lite-portfolio-project/index.ts +3 -2
  82. package/templates/branded-lite/tier5-src/himi-branded-lite-program/facts.ts +52 -0
  83. package/templates/branded-lite/tier5-src/himi-branded-lite-program/index.ts +21 -11
  84. package/templates/branded-lite/tier5-src/himi-branded-lite-video/index.ts +2 -1
  85. package/templates/branded-lite/tier5-src/himi-events-detail/index.ts +12 -86
  86. package/templates/branded-lite/tier5-src/himi-events-list/index.ts +47 -6
  87. package/templates/branded-lite/tier5-src/himi-store-product/index.ts +13 -3
  88. package/templates/branded-lite/tier5-src/wix-spaces-forum-post/index.ts +3 -2
  89. package/templates/branded-lite/tier5-src/wix-spaces-member-detail/index.ts +53 -37
  90. package/templates/branded-lite/tier5-src/wix-spaces-members/index.ts +100 -34
  91. package/templates/branded-lite/tier5-src/wix-spaces-plan-detail/index.ts +2 -1
  92. package/templates/branded-lite/tier5-src/wix-spaces-whats-new/index.ts +2 -1
  93. package/templates/community-club/config.ts +36 -1
  94. package/templates/community-club/dev/index.ts +1930 -401
  95. package/templates/community-club/himalaya.content.json +6 -0
  96. package/templates/community-club/tier5-src/_shared/branded-lite-hosted.ts +1 -1
  97. package/templates/community-club/tier5-src/_shared/collection-contract.ts +19 -3
  98. package/templates/community-club/tier5-src/_shared/event-registration.ts +86 -0
  99. package/templates/community-club/tier5-src/_shared/himi-restaurants.ts +2 -1
  100. package/templates/community-club/tier5-src/himi-blog-post/index.ts +21 -8
  101. package/templates/community-club/tier5-src/himi-branded-lite-feed/index.ts +4 -3
  102. package/templates/community-club/tier5-src/himi-branded-lite-group-about/index.ts +243 -0
  103. package/templates/community-club/tier5-src/himi-branded-lite-notifsettings/index.ts +173 -0
  104. package/templates/community-club/tier5-src/himi-events-detail/index.ts +12 -86
  105. package/templates/community-club/tier5-src/himi-events-list/index.ts +47 -6
  106. package/templates/community-club/tier5-src/wix-spaces-whats-new/index.ts +2 -1
  107. package/templates/community-club-owner/dev/index.ts +53 -1
  108. package/templates/community-club-owner/tier5-src/_shared/collection-contract.ts +19 -3
  109. package/templates/community-club-owner/tier5-src/himi-owner-lite-event/index.ts +16 -8
  110. package/templates/community-club-owner/tier5-src/himi-owner-lite-event-form/index.ts +16 -7
  111. package/templates/community-club-owner/tier5-src/himi-owner-lite-events/index.ts +4 -2
  112. package/templates/community-club-owner/tier5-src/himi-owner-lite-post/index.ts +7 -0
  113. package/templates/community-club-owner/tier5-src/himi-owner-lite-product/index.ts +39 -6
  114. package/templates/community-club-owner/tier5-src/himi-owner-lite-product-form/index.ts +14 -8
  115. package/templates/community-club-owner/tier5-src/himi-owner-lite-products/index.ts +7 -4
  116. package/templates/events-meetups/config.ts +36 -1
  117. package/templates/events-meetups/dev/index.ts +1930 -401
  118. package/templates/events-meetups/himalaya.content.json +6 -0
  119. package/templates/events-meetups/tier5-src/_shared/branded-lite-hosted.ts +1 -1
  120. package/templates/events-meetups/tier5-src/_shared/collection-contract.ts +19 -3
  121. package/templates/events-meetups/tier5-src/_shared/event-registration.ts +86 -0
  122. package/templates/events-meetups/tier5-src/_shared/himi-restaurants.ts +2 -1
  123. package/templates/events-meetups/tier5-src/himi-blog-post/index.ts +21 -8
  124. package/templates/events-meetups/tier5-src/himi-branded-lite-feed/index.ts +4 -3
  125. package/templates/events-meetups/tier5-src/himi-branded-lite-group-about/index.ts +243 -0
  126. package/templates/events-meetups/tier5-src/himi-branded-lite-notifsettings/index.ts +173 -0
  127. package/templates/events-meetups/tier5-src/himi-events-detail/index.ts +12 -86
  128. package/templates/events-meetups/tier5-src/himi-events-list/index.ts +47 -6
  129. package/templates/events-meetups/tier5-src/wix-spaces-whats-new/index.ts +2 -1
  130. package/templates/events-meetups-owner/dev/index.ts +6 -0
  131. package/templates/events-meetups-owner/tier5-src/_shared/collection-contract.ts +19 -3
  132. package/templates/events-meetups-owner/tier5-src/himi-owner-lite-event/index.ts +16 -8
  133. package/templates/events-meetups-owner/tier5-src/himi-owner-lite-event-form/index.ts +16 -7
  134. package/templates/events-meetups-owner/tier5-src/himi-owner-lite-events/index.ts +4 -2
  135. package/templates/events-meetups-owner/tier5-src/himi-owner-lite-post/index.ts +7 -0
  136. package/templates/gym-fitness/config.ts +27 -1
  137. package/templates/gym-fitness/dev/index.ts +2803 -844
  138. package/templates/gym-fitness/himalaya.content.json +3 -0
  139. package/templates/gym-fitness/tier5-src/_shared/booking-location.ts +147 -0
  140. package/templates/gym-fitness/tier5-src/_shared/booking-session.ts +222 -0
  141. package/templates/gym-fitness/tier5-src/_shared/branded-lite-hosted.ts +1 -1
  142. package/templates/gym-fitness/tier5-src/_shared/collection-contract.ts +19 -3
  143. package/templates/gym-fitness/tier5-src/_shared/event-registration.ts +86 -0
  144. package/templates/gym-fitness/tier5-src/_shared/himi-restaurants.ts +2 -1
  145. package/templates/gym-fitness/tier5-src/_shared/owner-editor-value.ts +164 -0
  146. package/templates/gym-fitness/tier5-src/_shared/store-product-info.ts +50 -0
  147. package/templates/gym-fitness/tier5-src/himi-blog-post/index.ts +21 -8
  148. package/templates/gym-fitness/tier5-src/himi-booking-service/index.ts +277 -14
  149. package/templates/gym-fitness/tier5-src/himi-booking-services/index.ts +351 -92
  150. package/templates/gym-fitness/tier5-src/himi-booking-time/index.ts +25 -5
  151. package/templates/gym-fitness/tier5-src/himi-branded-lite-agenda/index.ts +219 -220
  152. package/templates/gym-fitness/tier5-src/himi-branded-lite-category/index.ts +3 -2
  153. package/templates/gym-fitness/tier5-src/himi-branded-lite-notifsettings/index.ts +173 -0
  154. package/templates/gym-fitness/tier5-src/himi-branded-lite-plans/index.ts +2 -1
  155. package/templates/gym-fitness/tier5-src/himi-events-detail/index.ts +12 -86
  156. package/templates/gym-fitness/tier5-src/himi-events-list/index.ts +47 -6
  157. package/templates/gym-fitness/tier5-src/himi-store-product/index.ts +14 -3
  158. package/templates/gym-fitness/tier5-src/wix-spaces-plan-detail/index.ts +2 -1
  159. package/templates/gym-fitness/tier5-src/wix-spaces-whats-new/index.ts +2 -1
  160. package/templates/gym-fitness-owner/dev/index.ts +132 -66
  161. package/templates/gym-fitness-owner/tier5-src/_shared/collection-contract.ts +19 -3
  162. package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-event/index.ts +16 -8
  163. package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-event-form/index.ts +16 -7
  164. package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-events/index.ts +4 -2
  165. package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-post/index.ts +7 -0
  166. package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-product/index.ts +39 -6
  167. package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-product-form/index.ts +14 -8
  168. package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-products/index.ts +7 -4
  169. package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-service/index.ts +38 -7
  170. package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-service-form/index.ts +53 -7
  171. package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-services/index.ts +4 -2
  172. package/templates/nonprofit-cause/config.ts +36 -1
  173. package/templates/nonprofit-cause/dev/index.ts +1925 -396
  174. package/templates/nonprofit-cause/himalaya.content.json +6 -0
  175. package/templates/nonprofit-cause/tier5-src/_shared/branded-lite-hosted.ts +1 -1
  176. package/templates/nonprofit-cause/tier5-src/_shared/collection-contract.ts +19 -3
  177. package/templates/nonprofit-cause/tier5-src/_shared/event-registration.ts +86 -0
  178. package/templates/nonprofit-cause/tier5-src/_shared/himi-restaurants.ts +2 -1
  179. package/templates/nonprofit-cause/tier5-src/himi-blog-post/index.ts +21 -8
  180. package/templates/nonprofit-cause/tier5-src/himi-branded-lite-feed/index.ts +4 -3
  181. package/templates/nonprofit-cause/tier5-src/himi-branded-lite-group-about/index.ts +243 -0
  182. package/templates/nonprofit-cause/tier5-src/himi-branded-lite-notifsettings/index.ts +173 -0
  183. package/templates/nonprofit-cause/tier5-src/himi-branded-lite-plans/index.ts +2 -1
  184. package/templates/nonprofit-cause/tier5-src/himi-events-detail/index.ts +12 -86
  185. package/templates/nonprofit-cause/tier5-src/himi-events-list/index.ts +47 -6
  186. package/templates/nonprofit-cause/tier5-src/wix-spaces-plan-detail/index.ts +2 -1
  187. package/templates/nonprofit-cause/tier5-src/wix-spaces-whats-new/index.ts +2 -1
  188. package/templates/nonprofit-cause-owner/dev/index.ts +85 -65
  189. package/templates/nonprofit-cause-owner/tier5-src/_shared/collection-contract.ts +19 -3
  190. package/templates/nonprofit-cause-owner/tier5-src/_shared/owner-rich-guard.ts +27 -0
  191. package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-event/index.ts +16 -8
  192. package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-event-form/index.ts +16 -7
  193. package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-events/index.ts +4 -2
  194. package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-post/index.ts +7 -0
  195. package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-service/index.ts +38 -7
  196. package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-service-form/index.ts +53 -7
  197. package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-services/index.ts +4 -2
  198. package/templates/owner-lite/dev/index.ts +132 -66
  199. package/templates/owner-lite/tier5-src/_shared/collection-contract.ts +19 -3
  200. package/templates/owner-lite/tier5-src/himi-owner-lite-event/index.ts +16 -8
  201. package/templates/owner-lite/tier5-src/himi-owner-lite-event-form/index.ts +16 -7
  202. package/templates/owner-lite/tier5-src/himi-owner-lite-events/index.ts +4 -2
  203. package/templates/owner-lite/tier5-src/himi-owner-lite-post/index.ts +7 -0
  204. package/templates/owner-lite/tier5-src/himi-owner-lite-product/index.ts +39 -6
  205. package/templates/owner-lite/tier5-src/himi-owner-lite-product-form/index.ts +14 -8
  206. package/templates/owner-lite/tier5-src/himi-owner-lite-products/index.ts +7 -4
  207. package/templates/owner-lite/tier5-src/himi-owner-lite-service/index.ts +38 -7
  208. package/templates/owner-lite/tier5-src/himi-owner-lite-service-form/index.ts +53 -7
  209. package/templates/owner-lite/tier5-src/himi-owner-lite-services/index.ts +4 -2
  210. package/templates/podcast-creator/config.ts +27 -1
  211. package/templates/podcast-creator/dev/index.ts +1051 -158
  212. package/templates/podcast-creator/himalaya.content.json +3 -0
  213. package/templates/podcast-creator/tier5-src/_shared/branded-lite-hosted.ts +1 -1
  214. package/templates/podcast-creator/tier5-src/_shared/collection-contract.ts +19 -3
  215. package/templates/podcast-creator/tier5-src/_shared/event-registration.ts +86 -0
  216. package/templates/podcast-creator/tier5-src/_shared/himi-restaurants.ts +2 -1
  217. package/templates/podcast-creator/tier5-src/himi-blog-post/index.ts +21 -8
  218. package/templates/podcast-creator/tier5-src/himi-branded-lite-feed/index.ts +4 -3
  219. package/templates/podcast-creator/tier5-src/himi-branded-lite-notifsettings/index.ts +173 -0
  220. package/templates/podcast-creator/tier5-src/himi-branded-lite-plans/index.ts +2 -1
  221. package/templates/podcast-creator/tier5-src/himi-branded-lite-podcasts/index.ts +2 -1
  222. package/templates/podcast-creator/tier5-src/himi-events-detail/index.ts +12 -86
  223. package/templates/podcast-creator/tier5-src/himi-events-list/index.ts +47 -6
  224. package/templates/podcast-creator/tier5-src/wix-spaces-plan-detail/index.ts +2 -1
  225. package/templates/podcast-creator/tier5-src/wix-spaces-whats-new/index.ts +2 -1
  226. package/templates/podcast-creator-owner/dev/index.ts +53 -1
  227. package/templates/podcast-creator-owner/tier5-src/_shared/collection-contract.ts +19 -3
  228. package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-event/index.ts +16 -8
  229. package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-event-form/index.ts +16 -7
  230. package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-events/index.ts +4 -2
  231. package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-post/index.ts +7 -0
  232. package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-product/index.ts +39 -6
  233. package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-product-form/index.ts +14 -8
  234. package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-products/index.ts +7 -4
  235. package/templates/portfolio-creative/config.ts +27 -1
  236. package/templates/portfolio-creative/dev/index.ts +1305 -468
  237. package/templates/portfolio-creative/himalaya.content.json +3 -0
  238. package/templates/portfolio-creative/tier5-src/_shared/branded-lite-hosted.ts +1 -1
  239. package/templates/portfolio-creative/tier5-src/_shared/collection-contract.ts +19 -3
  240. package/templates/portfolio-creative/tier5-src/_shared/event-registration.ts +86 -0
  241. package/templates/portfolio-creative/tier5-src/_shared/himi-restaurants.ts +2 -1
  242. package/templates/portfolio-creative/tier5-src/_shared/owner-editor-value.ts +164 -0
  243. package/templates/portfolio-creative/tier5-src/_shared/store-product-info.ts +50 -0
  244. package/templates/portfolio-creative/tier5-src/himi-blog-post/index.ts +21 -8
  245. package/templates/portfolio-creative/tier5-src/himi-branded-lite-category/index.ts +3 -2
  246. package/templates/portfolio-creative/tier5-src/himi-branded-lite-notifsettings/index.ts +173 -0
  247. package/templates/portfolio-creative/tier5-src/himi-branded-lite-portfolio/index.ts +2 -1
  248. package/templates/portfolio-creative/tier5-src/himi-branded-lite-portfolio-project/index.ts +3 -2
  249. package/templates/portfolio-creative/tier5-src/himi-events-detail/index.ts +12 -86
  250. package/templates/portfolio-creative/tier5-src/himi-events-list/index.ts +47 -6
  251. package/templates/portfolio-creative/tier5-src/himi-store-product/index.ts +14 -3
  252. package/templates/portfolio-creative/tier5-src/wix-spaces-whats-new/index.ts +2 -1
  253. package/templates/portfolio-creative-owner/dev/index.ts +129 -66
  254. package/templates/portfolio-creative-owner/tier5-src/_shared/collection-contract.ts +19 -3
  255. package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-post/index.ts +7 -0
  256. package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-product/index.ts +39 -6
  257. package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-product-form/index.ts +14 -8
  258. package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-products/index.ts +7 -4
  259. package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-service/index.ts +38 -7
  260. package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-service-form/index.ts +53 -7
  261. package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-services/index.ts +4 -2
  262. package/templates/restaurant/config.ts +27 -1
  263. package/templates/restaurant/dev/index.ts +1051 -158
  264. package/templates/restaurant/himalaya.content.json +3 -0
  265. package/templates/restaurant/tier5-src/_shared/branded-lite-hosted.ts +1 -1
  266. package/templates/restaurant/tier5-src/_shared/collection-contract.ts +19 -3
  267. package/templates/restaurant/tier5-src/_shared/event-registration.ts +86 -0
  268. package/templates/restaurant/tier5-src/_shared/himi-restaurants.ts +2 -1
  269. package/templates/restaurant/tier5-src/himi-blog-post/index.ts +21 -8
  270. package/templates/restaurant/tier5-src/himi-branded-lite-notifsettings/index.ts +173 -0
  271. package/templates/restaurant/tier5-src/himi-events-detail/index.ts +12 -86
  272. package/templates/restaurant/tier5-src/himi-events-list/index.ts +47 -6
  273. package/templates/restaurant/tier5-src/wix-spaces-whats-new/index.ts +2 -1
  274. package/templates/restaurant-owner/dev/index.ts +132 -66
  275. package/templates/restaurant-owner/tier5-src/_shared/collection-contract.ts +19 -3
  276. package/templates/restaurant-owner/tier5-src/himi-owner-lite-event/index.ts +16 -8
  277. package/templates/restaurant-owner/tier5-src/himi-owner-lite-event-form/index.ts +16 -7
  278. package/templates/restaurant-owner/tier5-src/himi-owner-lite-events/index.ts +4 -2
  279. package/templates/restaurant-owner/tier5-src/himi-owner-lite-post/index.ts +7 -0
  280. package/templates/restaurant-owner/tier5-src/himi-owner-lite-product/index.ts +39 -6
  281. package/templates/restaurant-owner/tier5-src/himi-owner-lite-product-form/index.ts +14 -8
  282. package/templates/restaurant-owner/tier5-src/himi-owner-lite-products/index.ts +7 -4
  283. package/templates/restaurant-owner/tier5-src/himi-owner-lite-service/index.ts +38 -7
  284. package/templates/restaurant-owner/tier5-src/himi-owner-lite-service-form/index.ts +53 -7
  285. package/templates/restaurant-owner/tier5-src/himi-owner-lite-services/index.ts +4 -2
  286. package/templates/retail-store/config.ts +27 -1
  287. package/templates/retail-store/dev/index.ts +597 -191
  288. package/templates/retail-store/himalaya.content.json +3 -0
  289. package/templates/retail-store/tier5-src/_shared/branded-lite-hosted.ts +1 -1
  290. package/templates/retail-store/tier5-src/_shared/collection-contract.ts +19 -3
  291. package/templates/retail-store/tier5-src/_shared/himi-restaurants.ts +2 -1
  292. package/templates/retail-store/tier5-src/_shared/owner-editor-value.ts +164 -0
  293. package/templates/retail-store/tier5-src/_shared/store-product-info.ts +50 -0
  294. package/templates/retail-store/tier5-src/himi-blog-post/index.ts +21 -8
  295. package/templates/retail-store/tier5-src/himi-branded-lite-category/index.ts +3 -2
  296. package/templates/retail-store/tier5-src/himi-branded-lite-notifsettings/index.ts +173 -0
  297. package/templates/retail-store/tier5-src/himi-store-product/index.ts +13 -3
  298. package/templates/retail-store/tier5-src/wix-spaces-whats-new/index.ts +2 -1
  299. package/templates/retail-store-owner/dev/index.ts +50 -1
  300. package/templates/retail-store-owner/tier5-src/_shared/collection-contract.ts +19 -3
  301. package/templates/retail-store-owner/tier5-src/himi-owner-lite-post/index.ts +7 -0
  302. package/templates/retail-store-owner/tier5-src/himi-owner-lite-product/index.ts +39 -6
  303. package/templates/retail-store-owner/tier5-src/himi-owner-lite-product-form/index.ts +14 -8
  304. package/templates/retail-store-owner/tier5-src/himi-owner-lite-products/index.ts +7 -4
  305. package/templates/yoga-studio/config.ts +27 -1
  306. package/templates/yoga-studio/dev/index.ts +2996 -877
  307. package/templates/yoga-studio/himalaya.content.json +3 -0
  308. package/templates/yoga-studio/tier5-src/_shared/booking-location.ts +147 -0
  309. package/templates/yoga-studio/tier5-src/_shared/booking-session.ts +222 -0
  310. package/templates/yoga-studio/tier5-src/_shared/branded-lite-hosted.ts +1 -1
  311. package/templates/yoga-studio/tier5-src/_shared/collection-contract.ts +19 -3
  312. package/templates/yoga-studio/tier5-src/_shared/event-registration.ts +86 -0
  313. package/templates/yoga-studio/tier5-src/_shared/himi-restaurants.ts +2 -1
  314. package/templates/yoga-studio/tier5-src/himi-blog-post/index.ts +21 -8
  315. package/templates/yoga-studio/tier5-src/himi-booking-service/index.ts +277 -14
  316. package/templates/yoga-studio/tier5-src/himi-booking-services/index.ts +351 -92
  317. package/templates/yoga-studio/tier5-src/himi-booking-time/index.ts +25 -5
  318. package/templates/yoga-studio/tier5-src/himi-branded-lite-agenda/index.ts +219 -220
  319. package/templates/yoga-studio/tier5-src/himi-branded-lite-notifsettings/index.ts +173 -0
  320. package/templates/yoga-studio/tier5-src/himi-branded-lite-plans/index.ts +2 -1
  321. package/templates/yoga-studio/tier5-src/himi-branded-lite-program/facts.ts +52 -0
  322. package/templates/yoga-studio/tier5-src/himi-branded-lite-program/index.ts +21 -11
  323. package/templates/yoga-studio/tier5-src/himi-events-detail/index.ts +12 -86
  324. package/templates/yoga-studio/tier5-src/himi-events-list/index.ts +47 -6
  325. package/templates/yoga-studio/tier5-src/wix-spaces-plan-detail/index.ts +2 -1
  326. package/templates/yoga-studio/tier5-src/wix-spaces-whats-new/index.ts +2 -1
  327. package/templates/yoga-studio-owner/dev/index.ts +85 -65
  328. package/templates/yoga-studio-owner/tier5-src/_shared/collection-contract.ts +19 -3
  329. package/templates/yoga-studio-owner/tier5-src/_shared/owner-rich-guard.ts +27 -0
  330. package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-event/index.ts +16 -8
  331. package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-event-form/index.ts +16 -7
  332. package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-events/index.ts +4 -2
  333. package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-post/index.ts +7 -0
  334. package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-service/index.ts +38 -7
  335. package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-service-form/index.ts +53 -7
  336. package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-services/index.ts +4 -2
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: "27a12a793989cc3aa6da6fef766f435ae02ea2faac473e4443b61f708131bcdc",
42
+ data: "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"
43
43
  };
44
44
  }
45
45
  });
@@ -5863,15 +5863,15 @@ function analyzeController(source, file2, profile, diagnostics) {
5863
5863
  error(declaration ?? sf2, "Default-export defineController({ initialState, handlers }).");
5864
5864
  return;
5865
5865
  }
5866
- const object12 = declaration.expression.arguments[0];
5867
- if (!object12 || !ts2.isObjectLiteralExpression(object12)) {
5866
+ const object13 = declaration.expression.arguments[0];
5867
+ if (!object13 || !ts2.isObjectLiteralExpression(object13)) {
5868
5868
  error(declaration, "Controller definition must be an object literal.");
5869
5869
  return;
5870
5870
  }
5871
- const props = new Map(object12.properties.map((p2) => [p2.name?.getText(sf2).replace(/^["']|["']$/g, ""), p2]));
5871
+ const props = new Map(object13.properties.map((p2) => [p2.name?.getText(sf2).replace(/^["']|["']$/g, ""), p2]));
5872
5872
  const state = props.get("initialState"), handlers = props.get("handlers");
5873
5873
  if (!state || !ts2.isPropertyAssignment(state) || !handlers || !ts2.isPropertyAssignment(handlers) || !ts2.isObjectLiteralExpression(handlers.initializer)) {
5874
- error(object12, "initialState and handlers must be object literals.");
5874
+ error(object13, "initialState and handlers must be object literals.");
5875
5875
  return;
5876
5876
  }
5877
5877
  function literal(n2) {
@@ -12588,9 +12588,9 @@ function manualPaginationIssues(descriptor) {
12588
12588
  while (pending.length) {
12589
12589
  const { value: value2, path: path2 } = pending.pop();
12590
12590
  if (!value2 || typeof value2 !== "object") continue;
12591
- const object12 = value2;
12592
- if (object12.body?.props) nodes.push({ path: path2, type: object12.body.type, props: object12.body.props });
12593
- for (const [key3, child] of Object.entries(object12)) {
12591
+ const object13 = value2;
12592
+ if (object13.body?.props) nodes.push({ path: path2, type: object13.body.type, props: object13.body.props });
12593
+ for (const [key3, child] of Object.entries(object13)) {
12594
12594
  if (key3 === "args" || key3 === "input") continue;
12595
12595
  if (child && typeof child === "object") pending.push({ value: child, path: path2 ? `${path2}.${key3}` : key3 });
12596
12596
  }
@@ -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",
@@ -22113,7 +22120,7 @@ var init_pixels = __esm({
22113
22120
  // ../../core/dev-server/src/declared-navigation-ast.ts
22114
22121
  function literalTargets(bundleJs, ts15) {
22115
22122
  const name = (n2) => n2 && (ts15.isIdentifier(n2) || ts15.isStringLiteral(n2) || ts15.isNoSubstitutionTemplateLiteral(n2)) ? n2.text : void 0;
22116
- const object12 = (n2) => {
22123
+ const object13 = (n2) => {
22117
22124
  while (n2 && ts15.isParenthesizedExpression(n2)) n2 = n2.expression;
22118
22125
  return n2 && ts15.isObjectLiteralExpression(n2) ? n2 : void 0;
22119
22126
  };
@@ -22150,14 +22157,14 @@ function literalTargets(bundleJs, ts15) {
22150
22157
  const callee = ts15.isPropertyAccessExpression(node.expression) ? node.expression.name.text : name(node.expression);
22151
22158
  const service = node.arguments[0];
22152
22159
  if (callee && /^defineService[0-9]*$/.test(callee) && service && ts15.isStringLiteralLike(service)) {
22153
- const actions = object12(initializer(property2(object12(node.arguments[1]), "actions")));
22160
+ const actions = object13(initializer(property2(object13(node.arguments[1]), "actions")));
22154
22161
  for (const member of actions?.properties ?? []) {
22155
22162
  const action = name(member.name);
22156
22163
  const fn2 = ts15.isMethodDeclaration(member) ? member : resolve93(ts15.isShorthandPropertyAssignment(member) ? member.name : initializer(member));
22157
22164
  if (!action || !fn2?.body) continue;
22158
22165
  const targets = [];
22159
22166
  const target = (expr) => {
22160
- const sid = initializer(property2(object12(expr), "screenId"));
22167
+ const sid = initializer(property2(object13(expr), "screenId"));
22161
22168
  if (!sid || !ts15.isStringLiteralLike(sid)) return;
22162
22169
  const position = file2.getLineAndCharacterOfPosition(sid.getStart(file2));
22163
22170
  targets.push({ screenId: sid.text, line: position.line + 1, column: position.character });
@@ -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",
@@ -27136,6 +27143,7 @@ function resolveIdiom(tokens2, ctx = {}) {
27136
27143
  var IDIOM_CONTEXTS, UNSAFE_KEYS;
27137
27144
  var init_idiom = __esm({
27138
27145
  "../../core/ts/src/idiom.ts"() {
27146
+ "use strict";
27139
27147
  init_define_HHP_CATALOG();
27140
27148
  IDIOM_CONTEXTS = {
27141
27149
  ios: { native: ["ios"] },
@@ -36431,7 +36439,7 @@ function sameJson(a2, b2) {
36431
36439
  }
36432
36440
  return true;
36433
36441
  }
36434
- var resolveScalarStatic, Bound, BOUND_LIST_WINDOW_START, BOUND_LIST_WINDOW_STEP, BoundListWindowContext, WindowGrowth, PageCycle, PageCycleContext, cursorString, BoundList, readsService, BoundRow;
36442
+ var resolveScalarStatic, Bound, BOUND_LIST_WINDOW_START, BOUND_LIST_WINDOW_STEP, BoundListWindowContext, RevealRowContext, WindowGrowth, PageCycle, PageCycleContext, cursorString, BoundList, ROW_SHELL_STYLE, readsService, BoundRow;
36435
36443
  var init_bindings2 = __esm({
36436
36444
  "../../core/web-renderer/src/bindings.tsx"() {
36437
36445
  "use strict";
@@ -36456,6 +36464,7 @@ var init_bindings2 = __esm({
36456
36464
  BOUND_LIST_WINDOW_START = 30;
36457
36465
  BOUND_LIST_WINDOW_STEP = 30;
36458
36466
  BoundListWindowContext = React4.createContext(true);
36467
+ RevealRowContext = React4.createContext(void 0);
36459
36468
  WindowGrowth = ({ onNear, style }) => {
36460
36469
  const ref = React4.useRef(null);
36461
36470
  React4.useEffect(() => {
@@ -36530,7 +36539,7 @@ var init_bindings2 = __esm({
36530
36539
  };
36531
36540
  PageCycleContext = React4.createContext(null);
36532
36541
  cursorString = (v2) => typeof v2 === "string" ? v2 : "";
36533
- BoundList = ({ ctx, itemsPath, template, renderRow, windowed = false, wrapRows, footer, rowSize = 1, markerStyle, pageCursor }) => {
36542
+ BoundList = ({ ctx, itemsPath, template, renderRow, windowed = false, wrapRows, footer, rowSize = 1, markerStyle, pageCursor, tagRows = false }) => {
36534
36543
  const local = itemsPath.startsWith("$item.");
36535
36544
  const bound2 = useBoundValue(ctx, local ? "" : itemsPath);
36536
36545
  const arr2 = local ? ctx.itemScope?.[itemsPath.slice("$item.".length)] : bound2;
@@ -36541,16 +36550,26 @@ var init_bindings2 = __esm({
36541
36550
  useEveryRowForFindAndPrint(on4, () => setSize(Number.POSITIVE_INFINITY));
36542
36551
  const pages2 = usePageCycle(ctx, pageCursor);
36543
36552
  const per = Math.max(1, Math.floor(rowSize));
36544
- const count2 = on4 ? Math.min(Math.ceil(size / per) * per, items.length) : items.length;
36553
+ const revealId = React4.useContext(RevealRowContext);
36554
+ const revealAt = on4 && tagRows && revealId ? items.findIndex((item) => item?.id === revealId) : -1;
36555
+ React4.useEffect(() => {
36556
+ if (revealAt >= 0) setSize((n2) => Math.max(n2, revealAt + 1));
36557
+ }, [revealAt]);
36558
+ const count2 = on4 ? Math.min(Math.max(Math.ceil(size / per) * per, revealAt + 1), items.length) : items.length;
36545
36559
  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));
36560
+ const id = item?.id;
36561
+ const key3 = String(id ?? i2);
36562
+ if (tagRows && typeof id === "string" && id) {
36563
+ return /* @__PURE__ */ jsx3("div", { "data-himalaya-row-id": id, style: ROW_SHELL_STYLE, children: /* @__PURE__ */ jsx3(BoundRow, { ctx, template, item, index: i2, renderRow }) }, key3);
36564
+ }
36565
+ return /* @__PURE__ */ jsx3(BoundRow, { ctx, template, item, index: i2, renderRow }, key3);
36548
36566
  });
36549
36567
  return /* @__PURE__ */ jsxs2(Fragment, { children: [
36550
36568
  wrapRows ? wrapRows(rows) : rows,
36551
36569
  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
36570
  ] });
36553
36571
  };
36572
+ ROW_SHELL_STYLE = { display: "contents" };
36554
36573
  readsService = /* @__PURE__ */ new WeakMap();
36555
36574
  BoundRow = React4.memo(
36556
36575
  ({ ctx, template, item, index, renderRow }) => {
@@ -36562,6 +36581,238 @@ var init_bindings2 = __esm({
36562
36581
  }
36563
36582
  });
36564
36583
 
36584
+ // ../../core/web-renderer/src/scrollAnchors.ts
36585
+ import React5 from "react";
36586
+ function topAnchorId(anchors, tolerance = TOP_ANCHOR_TOLERANCE_PX) {
36587
+ let picked = anchors[0]?.id ?? null;
36588
+ for (const a2 of anchors) if (a2.top <= tolerance) picked = a2.id;
36589
+ return picked;
36590
+ }
36591
+ function anchorRowId(value2) {
36592
+ if (typeof value2 !== "string") return null;
36593
+ return value2.split("|", 1)[0] || null;
36594
+ }
36595
+ function boxOf(el2) {
36596
+ const view = el2.ownerDocument.defaultView;
36597
+ let node = el2;
36598
+ while (node && view?.getComputedStyle(node).display === "contents") node = node.firstElementChild;
36599
+ return node && view?.getComputedStyle(node).display === "none" ? null : node;
36600
+ }
36601
+ function screenScale(el2, axis) {
36602
+ const r3 = el2.getBoundingClientRect();
36603
+ const drawn = axis === "y" ? r3.height : r3.width;
36604
+ const laidOut = axis === "y" ? el2.offsetHeight : el2.offsetWidth;
36605
+ return drawn > 0 && laidOut > 0 ? drawn / laidOut : 1;
36606
+ }
36607
+ function scrollChain(el2) {
36608
+ const doc = el2.ownerDocument;
36609
+ const view = doc.defaultView;
36610
+ const page = doc.scrollingElement;
36611
+ const chain = [];
36612
+ for (let node = el2.parentElement; node && view; node = node.parentElement) {
36613
+ if (node === page) break;
36614
+ if (/(auto|scroll|overlay)/.test(view.getComputedStyle(node).overflowY) && node.scrollHeight > node.clientHeight) chain.push(node);
36615
+ }
36616
+ if (page && page.scrollHeight > page.clientHeight) chain.push(page);
36617
+ return chain;
36618
+ }
36619
+ function visibleArea(el2) {
36620
+ const doc = el2.ownerDocument;
36621
+ const view = doc.defaultView;
36622
+ const chain = scrollChain(el2);
36623
+ const scale = chain[0] ? screenScale(chain[0], "y") : 1;
36624
+ const boxes = chain.filter((s2) => s2 !== doc.scrollingElement);
36625
+ const outer = boxes[boxes.length - 1] ?? null;
36626
+ let top = 0;
36627
+ let edge = 0;
36628
+ for (const s2 of boxes) {
36629
+ top = s2.getBoundingClientRect().top + s2.clientTop * screenScale(s2, "y");
36630
+ edge = Math.max(edge, top);
36631
+ }
36632
+ for (let node = el2; node && node !== outer; node = node.parentElement) {
36633
+ for (let sib = node.previousElementSibling; sib; sib = sib.previousElementSibling) {
36634
+ const style = view?.getComputedStyle(sib);
36635
+ if (style?.position !== "sticky" || style.top === "auto") continue;
36636
+ const r3 = sib.getBoundingClientRect();
36637
+ if (r3.height > 0 && r3.top <= edge + TOP_ANCHOR_TOLERANCE_PX * scale) edge = Math.max(edge, r3.bottom);
36638
+ }
36639
+ }
36640
+ return { chain, top, edge, scale };
36641
+ }
36642
+ function coveredTopInset(el2) {
36643
+ const { top, edge, scale } = visibleArea(el2);
36644
+ return Math.max(0, (edge - top) / scale);
36645
+ }
36646
+ function reachesVisibleTop(el2) {
36647
+ const box = boxOf(el2);
36648
+ if (!box) return false;
36649
+ const { edge, scale } = visibleArea(box);
36650
+ return (box.getBoundingClientRect().top - edge) / scale <= TOP_ANCHOR_TOLERANCE_PX;
36651
+ }
36652
+ function readTopAnchor(anchors) {
36653
+ const boxed = [];
36654
+ for (const a2 of anchors) {
36655
+ const box = boxOf(a2.el);
36656
+ if (box) boxed.push({ id: a2.id, box });
36657
+ }
36658
+ if (!boxed.length) return null;
36659
+ const { edge, scale } = visibleArea(boxed[0].box);
36660
+ return topAnchorId(boxed.map((b2) => ({ id: b2.id, top: (b2.box.getBoundingClientRect().top - edge) / scale })));
36661
+ }
36662
+ function scrollAnchorToTop(el2, instant) {
36663
+ const box = boxOf(el2);
36664
+ if (!box) return 0;
36665
+ const { chain, edge } = visibleArea(box);
36666
+ let rest = box.getBoundingClientRect().top - edge;
36667
+ const moves = [];
36668
+ for (const target of chain) {
36669
+ const scale = screenScale(target, "y");
36670
+ const from = target.scrollTop;
36671
+ const max = target.scrollHeight - target.clientHeight;
36672
+ const to2 = max <= SCROLL_SLACK_PX ? 0 : Math.max(0, Math.min(from + rest / scale, max));
36673
+ moves.push({ target, axis: "top", from, to: to2 });
36674
+ rest -= (to2 - from) * scale;
36675
+ }
36676
+ return easeScroll(moves, instant);
36677
+ }
36678
+ function revealInRow(el2, row2, instant) {
36679
+ const scale = screenScale(row2, "x");
36680
+ const left = row2.getBoundingClientRect().left + row2.clientLeft * scale;
36681
+ const right = left + row2.clientWidth * scale;
36682
+ const r3 = el2.getBoundingClientRect();
36683
+ const delta = r3.left < left ? r3.left - left : r3.right > right ? r3.right - right : 0;
36684
+ return easeScroll([{ target: row2, axis: "left", from: row2.scrollLeft, to: row2.scrollLeft + delta / scale }], instant);
36685
+ }
36686
+ function easeScroll(all, instant) {
36687
+ for (const m2 of all) tweens.get(m2.target)?.();
36688
+ const moves = all.filter((m2) => Math.abs(m2.to - m2.from) >= 1);
36689
+ const view = moves[0]?.target.ownerDocument.defaultView;
36690
+ if (!view) return 0;
36691
+ const set = (m2, v2) => {
36692
+ if (typeof m2.target.scrollTo === "function") m2.target.scrollTo(m2.axis === "top" ? { top: v2, behavior: "instant" } : { left: v2, behavior: "instant" });
36693
+ else if (m2.axis === "top") m2.target.scrollTop = v2;
36694
+ else m2.target.scrollLeft = v2;
36695
+ };
36696
+ if (instant || typeof view.requestAnimationFrame !== "function") {
36697
+ for (const m2 of moves) set(m2, m2.to);
36698
+ return 0;
36699
+ }
36700
+ let start = -1;
36701
+ let frame = 0;
36702
+ const stop = () => {
36703
+ view.cancelAnimationFrame(frame);
36704
+ for (const m2 of moves) tweens.delete(m2.target);
36705
+ for (const type of INTERRUPTS) view.removeEventListener(type, stop, true);
36706
+ };
36707
+ const step = (now) => {
36708
+ if (start < 0) start = now;
36709
+ const t2 = Math.min(1, (now - start) / ANCHOR_JUMP_MS);
36710
+ const eased = t2 < 0.5 ? 4 * t2 * t2 * t2 : 1 - Math.pow(-2 * t2 + 2, 3) / 2;
36711
+ for (const m2 of moves) set(m2, m2.from + (m2.to - m2.from) * eased);
36712
+ if (t2 < 1) frame = view.requestAnimationFrame(step);
36713
+ else stop();
36714
+ };
36715
+ for (const type of INTERRUPTS) view.addEventListener(type, stop, { capture: true, passive: true });
36716
+ for (const m2 of moves) tweens.set(m2.target, stop);
36717
+ frame = view.requestAnimationFrame(step);
36718
+ return ANCHOR_JUMP_MS;
36719
+ }
36720
+ function useTopAnchorReport(root, anchors, report3, content) {
36721
+ const live3 = React5.useRef({ anchors, report: report3 });
36722
+ live3.current = { anchors, report: report3 };
36723
+ const tracker = React5.useRef(null);
36724
+ if (!tracker.current) {
36725
+ tracker.current = new TopAnchorTracker(
36726
+ () => readTopAnchor(live3.current.anchors?.() ?? []),
36727
+ (id) => live3.current.report(id)
36728
+ );
36729
+ }
36730
+ const t2 = tracker.current;
36731
+ const on4 = anchors != null;
36732
+ React5.useEffect(() => {
36733
+ if (on4) t2.baseline();
36734
+ }, [on4, content, t2]);
36735
+ React5.useEffect(() => {
36736
+ if (!on4 || typeof document === "undefined") return;
36737
+ const onScroll = (e2) => {
36738
+ const el2 = root.current;
36739
+ const scrolledNode = e2.target;
36740
+ if (el2 && scrolledNode && typeof scrolledNode.contains === "function" && scrolledNode.contains(el2)) t2.scrolled();
36741
+ };
36742
+ document.addEventListener("scroll", onScroll, { capture: true, passive: true });
36743
+ return () => {
36744
+ document.removeEventListener("scroll", onScroll, { capture: true });
36745
+ t2.dispose();
36746
+ };
36747
+ }, [on4, t2, root]);
36748
+ return React5.useCallback((ms2) => {
36749
+ if (live3.current.anchors) t2.jump(ms2);
36750
+ }, [t2]);
36751
+ }
36752
+ var TOP_ANCHOR_TOLERANCE_PX, TOP_ANCHOR_SETTLE_MS, TOP_ANCHOR_JUMP_GRACE_MS, ANCHOR_JUMP_MS, SCROLL_SLACK_PX, tweens, INTERRUPTS, TopAnchorTracker;
36753
+ var init_scrollAnchors = __esm({
36754
+ "../../core/web-renderer/src/scrollAnchors.ts"() {
36755
+ init_define_HHP_CATALOG();
36756
+ TOP_ANCHOR_TOLERANCE_PX = 8;
36757
+ TOP_ANCHOR_SETTLE_MS = 150;
36758
+ TOP_ANCHOR_JUMP_GRACE_MS = 150;
36759
+ ANCHOR_JUMP_MS = 250;
36760
+ SCROLL_SLACK_PX = 16;
36761
+ tweens = /* @__PURE__ */ new WeakMap();
36762
+ INTERRUPTS = ["wheel", "touchstart", "pointerdown", "keydown"];
36763
+ TopAnchorTracker = class {
36764
+ constructor(read, report3) {
36765
+ this.read = read;
36766
+ this.report = report3;
36767
+ }
36768
+ last = null;
36769
+ timer;
36770
+ quietUntil = 0;
36771
+ jumped = false;
36772
+ /** The content changed: take where the reader now is as known, unless a scroll is still settling. */
36773
+ baseline() {
36774
+ if (this.timer === void 0) this.last = this.read();
36775
+ }
36776
+ /** The reader's scroller moved. */
36777
+ scrolled() {
36778
+ this.arm(TOP_ANCHOR_SETTLE_MS);
36779
+ }
36780
+ /** A programmatic jump starts, running [ms]. */
36781
+ jump(ms2) {
36782
+ this.jumped = true;
36783
+ this.quietUntil = Date.now() + ms2 + TOP_ANCHOR_JUMP_GRACE_MS;
36784
+ this.arm(ms2 + TOP_ANCHOR_JUMP_GRACE_MS);
36785
+ }
36786
+ dispose() {
36787
+ clearTimeout(this.timer);
36788
+ this.timer = void 0;
36789
+ }
36790
+ arm(ms2) {
36791
+ clearTimeout(this.timer);
36792
+ this.timer = setTimeout(() => this.settle(), ms2);
36793
+ }
36794
+ settle() {
36795
+ this.timer = void 0;
36796
+ const wait = this.quietUntil - Date.now();
36797
+ if (wait > 0) {
36798
+ this.arm(wait);
36799
+ return;
36800
+ }
36801
+ const value2 = this.read();
36802
+ if (this.jumped) {
36803
+ this.jumped = false;
36804
+ this.last = value2;
36805
+ return;
36806
+ }
36807
+ if (value2 != null && value2 !== this.last) {
36808
+ this.last = value2;
36809
+ this.report(value2);
36810
+ }
36811
+ }
36812
+ };
36813
+ }
36814
+ });
36815
+
36565
36816
  // ../../core/web-renderer/src/snackbarTiming.ts
36566
36817
  function snackbarAutoHideMs(durationMs) {
36567
36818
  const ms2 = typeof durationMs === "number" && Number.isFinite(durationMs) ? durationMs : SNACKBAR_DEFAULT_DURATION_MS;
@@ -36583,7 +36834,7 @@ var init_snackbarTiming = __esm({
36583
36834
  });
36584
36835
 
36585
36836
  // ../../core/web-renderer/src/formBag.ts
36586
- import React5 from "react";
36837
+ import React6 from "react";
36587
36838
  function hasContributed(bag, fieldId) {
36588
36839
  return Object.prototype.hasOwnProperty.call(bag.values, fieldId);
36589
36840
  }
@@ -36700,7 +36951,7 @@ var init_formBag = __esm({
36700
36951
  init_validation();
36701
36952
  validity = /* @__PURE__ */ new WeakMap();
36702
36953
  formValidityProbe = { validations: 0 };
36703
- FormValuesContext = React5.createContext(null);
36954
+ FormValuesContext = React6.createContext(null);
36704
36955
  }
36705
36956
  });
36706
36957
 
@@ -36921,7 +37172,7 @@ var init_actionParams = __esm({
36921
37172
  });
36922
37173
 
36923
37174
  // ../../core/web-renderer/src/workerTapBusy.ts
36924
- import React6, { useEffect as useEffect3, useRef, useState as useState3 } from "react";
37175
+ import React7, { useEffect as useEffect3, useRef, useState as useState3 } from "react";
36925
37176
  function tracksWorkerTap(action) {
36926
37177
  if (!action || typeof action !== "object") return false;
36927
37178
  const a2 = action;
@@ -36954,7 +37205,7 @@ function WorkerTapGate({ gate, action, children, ...forwarded }) {
36954
37205
  const next = { ...forwarded };
36955
37206
  if (forwarded.style || busy) next.style = { ...own6 ?? {}, ...forwarded.style ?? {}, ...busy ? { opacity: 0.5 } : {} };
36956
37207
  if (busy) next["aria-disabled"] = "true";
36957
- return React6.cloneElement(children, next);
37208
+ return React7.cloneElement(children, next);
36958
37209
  }
36959
37210
  var WORKER_TAP_DELAY_MS, WORKER_TAP_CAP_MS, listeners, WorkerTap;
36960
37211
  var init_workerTapBusy = __esm({
@@ -37303,10 +37554,10 @@ var init_pickerField = __esm({
37303
37554
  });
37304
37555
 
37305
37556
  // ../../core/web-renderer/src/symbolEffects.ts
37306
- import React7 from "react";
37557
+ import React8 from "react";
37307
37558
  function useSymbolEffect(effect, reduceMotion) {
37308
- const [, changed] = React7.useReducer((value2) => value2 + 1, 0);
37309
- React7.useEffect(() => {
37559
+ const [, changed] = React8.useReducer((value2) => value2 + 1, 0);
37560
+ React8.useEffect(() => {
37310
37561
  if (typeof window === "undefined" || typeof window.matchMedia !== "function") return;
37311
37562
  const query = window.matchMedia("(prefers-reduced-motion: reduce)");
37312
37563
  const listener = () => changed();
@@ -37314,7 +37565,7 @@ function useSymbolEffect(effect, reduceMotion) {
37314
37565
  return () => query.removeEventListener("change", listener);
37315
37566
  }, []);
37316
37567
  const supported = !reduceMotion() && (effect === "bounce" || effect === "pulse") ? effect : void 0;
37317
- React7.useEffect(() => {
37568
+ React8.useEffect(() => {
37318
37569
  if (!supported || typeof document === "undefined" || document.getElementById("himalaya-symbol-effects")) return;
37319
37570
  const style = document.createElement("style");
37320
37571
  style.id = "himalaya-symbol-effects";
@@ -38000,7 +38251,7 @@ var init_host_toolbar = __esm({
38000
38251
  });
38001
38252
 
38002
38253
  // ../../core/web-renderer/src/richContentEditor.tsx
38003
- import React8 from "react";
38254
+ import React9 from "react";
38004
38255
  import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
38005
38256
  function effectiveTools(tools, uploadService) {
38006
38257
  return ricosEffectiveTools(tools, typeof uploadService === "string" && uploadService !== "");
@@ -38015,32 +38266,32 @@ function RichContentEditorView({ props, ctx, wrap, nodeId, renderChild, ...dom }
38015
38266
  const id = String(nodeId ?? dom["data-component-id"] ?? "rich_content_editor");
38016
38267
  const C2 = ctx.color;
38017
38268
  const name = typeof props.name === "string" && props.name ? props.name : void 0;
38018
- const bag = React8.useContext(FormValuesContext);
38269
+ const bag = React9.useContext(FormValuesContext);
38019
38270
  const live3 = !!ctx.onAction;
38020
38271
  const toolsKey = JSON.stringify(props.tools ?? null);
38021
- const tools = React8.useMemo(() => effectiveTools(props.tools, props.uploadService), [toolsKey, props.uploadService]);
38272
+ const tools = React9.useMemo(() => effectiveTools(props.tools, props.uploadService), [toolsKey, props.uploadService]);
38022
38273
  const seedMode = typeof props.documentJson === "string" ? "literal" : typeof props.documentPath === "string" && props.documentPath ? "binding" : "none";
38023
38274
  const boundSeed = useBoundValue(ctx, seedMode === "binding" ? props.documentPath : "");
38024
38275
  const fill = props.fillAvailable === true;
38025
38276
  const minHeight = typeof props.minHeight === "number" && props.minHeight >= 0 ? props.minHeight : 240;
38026
38277
  const placeholder3 = typeof props.placeholder === "string" ? props.placeholder : "";
38027
- const onChangeRef = React8.useRef(props.onChange);
38278
+ const onChangeRef = React9.useRef(props.onChange);
38028
38279
  onChangeRef.current = props.onChange;
38029
- const bagRef = React8.useRef(bag);
38280
+ const bagRef = React9.useRef(bag);
38030
38281
  bagRef.current = bag;
38031
- const nameRef = React8.useRef(name);
38282
+ const nameRef = React9.useRef(name);
38032
38283
  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(() => {
38284
+ const [status, setStatus] = React9.useState("loading");
38285
+ const [toolbar, setToolbar] = React9.useState(EMPTY_TOOLBAR);
38286
+ const [focused, setFocused] = React9.useState(false);
38287
+ const [src, setSrc] = React9.useState(null);
38288
+ const [link, setLink] = React9.useState(null);
38289
+ const [uploadError, setUploadError] = React9.useState(false);
38290
+ const [, repaint] = React9.useReducer((n2) => n2 + 1, 0);
38291
+ const iframeRef = React9.useRef(null);
38292
+ const fileRef = React9.useRef(null);
38293
+ const sessionRef = React9.useRef(null);
38294
+ React9.useEffect(() => {
38044
38295
  if (!bag || !name) return;
38045
38296
  bag.register(name, void 0);
38046
38297
  const current = sessionRef.current?.currentContent();
@@ -38056,12 +38307,12 @@ function RichContentEditorView({ props, ctx, wrap, nodeId, renderChild, ...dom }
38056
38307
  if (!act || !ctx.onAction) return;
38057
38308
  ctx.onAction({ ...act, args: { ...act.args ?? {}, dirty: "true" } });
38058
38309
  };
38059
- const fireOnChangeRef = React8.useRef(fireOnChange);
38310
+ const fireOnChangeRef = React9.useRef(fireOnChange);
38060
38311
  fireOnChangeRef.current = fireOnChange;
38061
- React8.useEffect(() => {
38312
+ React9.useEffect(() => {
38062
38313
  if (live3) setSrc(new URL(ENGINE_PAGE_PATH, document.baseURI).toString());
38063
38314
  }, [live3]);
38064
- React8.useEffect(() => {
38315
+ React9.useEffect(() => {
38065
38316
  const frame = iframeRef.current;
38066
38317
  if (!live3 || !src || !frame) return;
38067
38318
  const t2 = ricosEditorWebTimings;
@@ -38109,13 +38360,13 @@ function RichContentEditorView({ props, ctx, wrap, nodeId, renderChild, ...dom }
38109
38360
  sessionRef.current = null;
38110
38361
  };
38111
38362
  }, [live3, src]);
38112
- React8.useEffect(() => {
38363
+ React9.useEffect(() => {
38113
38364
  sessionRef.current?.updateLocale(ctx.localeTag ?? "en", ctx.isRTL ?? document.documentElement.dir === "rtl");
38114
38365
  }, [ctx.localeTag, ctx.isRTL]);
38115
- React8.useEffect(() => {
38366
+ React9.useEffect(() => {
38116
38367
  sessionRef.current?.setSeed(seedMode === "literal" ? props.documentJson : seedMode === "binding" ? boundSeed : "");
38117
38368
  }, [seedMode, props.documentJson, boundSeed, src]);
38118
- React8.useEffect(() => {
38369
+ React9.useEffect(() => {
38119
38370
  const vv = typeof window !== "undefined" ? window.visualViewport : null;
38120
38371
  if (!vv || !focused) return;
38121
38372
  vv.addEventListener("resize", repaint);
@@ -38625,21 +38876,21 @@ var init_radioGroups = __esm({
38625
38876
  });
38626
38877
 
38627
38878
  // ../../core/web-renderer/src/a11y/radioGroupScope.tsx
38628
- import React9 from "react";
38879
+ import React10 from "react";
38629
38880
  var scope, RadioGroupScope, useRadioGroups;
38630
38881
  var init_radioGroupScope = __esm({
38631
38882
  "../../core/web-renderer/src/a11y/radioGroupScope.tsx"() {
38632
38883
  "use strict";
38633
38884
  init_define_HHP_CATALOG();
38634
38885
  init_radioGroups();
38635
- scope = React9.createContext(radioGroups);
38886
+ scope = React10.createContext(radioGroups);
38636
38887
  RadioGroupScope = scope.Provider;
38637
- useRadioGroups = () => React9.useContext(scope);
38888
+ useRadioGroups = () => React10.useContext(scope);
38638
38889
  }
38639
38890
  });
38640
38891
 
38641
38892
  // ../../core/web-renderer/src/a11y/controls.tsx
38642
- import React10 from "react";
38893
+ import React11 from "react";
38643
38894
  import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
38644
38895
  function labelText(label3, ctx) {
38645
38896
  if (typeof label3 === "string" && isBinding(label3)) {
@@ -38684,32 +38935,32 @@ var init_controls = __esm({
38684
38935
  A11ySwitch = ({ props, ctx, wrap }) => {
38685
38936
  const C2 = ctx.color;
38686
38937
  const bound2 = useResolvedScalar(props.valuePath, ctx);
38687
- const bag = React10.useContext(FormValuesContext);
38938
+ const bag = React11.useContext(FormValuesContext);
38688
38939
  const fieldId = props.__formFieldId;
38689
38940
  const inForm = Boolean(bag && fieldId);
38690
38941
  const standaloneService = fieldId == null && ctx.provider != null && typeof props.valuePath === "string" && props.valuePath.startsWith("$service:");
38691
38942
  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(() => {
38943
+ const [formOn, setFormOn] = React11.useState(null);
38944
+ const touchedField = React11.useRef(void 0);
38945
+ React11.useEffect(() => {
38695
38946
  if (bag && fieldId && touchedField.current === fieldId) bag.set(fieldId, encodeToggleFieldValue(resolved2));
38696
38947
  setFormOn(null);
38697
38948
  }, [resolved2]);
38698
38949
  const toggleServiceBound = typeof props.valuePath === "string" && props.valuePath.startsWith("$service:");
38699
38950
  const toggleReady = !toggleServiceBound || bound2 !== void 0;
38700
- React10.useEffect(() => {
38951
+ React11.useEffect(() => {
38701
38952
  if (!bag || !fieldId) return;
38702
38953
  if (!toggleReady && !hasContributed(bag, fieldId)) return;
38703
38954
  bag.set(fieldId, encodeToggleFieldValue(resolved2));
38704
38955
  }, [toggleReady, resolved2, fieldId, bag]);
38705
- const [tapped, setTapped] = React10.useState(null);
38706
- React10.useEffect(() => {
38956
+ const [tapped, setTapped] = React11.useState(null);
38957
+ React11.useEffect(() => {
38707
38958
  setTapped(null);
38708
38959
  }, [bound2, props.valuePath, ctx.provider]);
38709
38960
  const live3 = standaloneService && tapped && tapped.path === props.valuePath && Object.is(tapped.over, bound2) && tapped.provider === ctx.provider ? tapped.on : null;
38710
38961
  const on4 = inForm && touchedField.current === fieldId && formOn !== null ? formOn : live3 ?? resolved2;
38711
38962
  const ruleKey = props.validation ? JSON.stringify(props.validation) : "";
38712
- React10.useEffect(() => {
38963
+ React11.useEffect(() => {
38713
38964
  if (!bag || !fieldId) return;
38714
38965
  bag.register(fieldId, props.validation);
38715
38966
  return () => bag.unregister(fieldId);
@@ -38770,15 +39021,15 @@ var init_controls = __esm({
38770
39021
  const tint = C2(props.tint ?? "accentPrimary", "#116DFF");
38771
39022
  const step = typeof props.step === "number" && props.step > 0 ? props.step : (max - min) / 100 || 0.01;
38772
39023
  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(() => {
39024
+ const [val, setVal] = React11.useState(bound2);
39025
+ const latestValue = React11.useRef(bound2);
39026
+ const dragging = React11.useRef(false);
39027
+ React11.useEffect(() => {
38777
39028
  if (dragging.current) return;
38778
39029
  latestValue.current = bound2;
38779
39030
  setVal(bound2);
38780
39031
  }, [bound2]);
38781
- const lastEmit = React10.useRef(void 0);
39032
+ const lastEmit = React11.useRef(void 0);
38782
39033
  const canFire = !!(ctx.onAction && props.onChange && !props.disabled);
38783
39034
  const commit = (nv) => {
38784
39035
  latestValue.current = nv;
@@ -38788,8 +39039,8 @@ var init_controls = __esm({
38788
39039
  ctx.onAction({ ...act, args: { ...act.args ?? {}, value: nv } });
38789
39040
  };
38790
39041
  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(() => {
39042
+ const [pair, setPair] = React11.useState(() => [Math.min(bound2, props.upperValue ?? bound2), Math.max(bound2, props.upperValue ?? bound2)]);
39043
+ React11.useEffect(() => {
38793
39044
  if (range) setPair([Math.min(bound2, props.upperValue), Math.max(bound2, props.upperValue)]);
38794
39045
  }, [range, bound2, props.upperValue]);
38795
39046
  if (range) {
@@ -38947,25 +39198,25 @@ var init_controls = __esm({
38947
39198
  const boundValue = useResolvedScalar(props.valuePath, ctx);
38948
39199
  const raw = props.valuePath != null ? boundValue : props.value;
38949
39200
  const groupId = isRadio && typeof props.groupId === "string" && props.groupId !== "" ? props.groupId : void 0;
38950
- const [local, setLocal] = React10.useState(void 0);
38951
- React10.useEffect(() => {
39201
+ const [local, setLocal] = React11.useState(void 0);
39202
+ React11.useEffect(() => {
38952
39203
  setLocal(void 0);
38953
39204
  }, [raw, radioGroups2, groupId]);
38954
39205
  const localValue2 = local?.registry === radioGroups2 && local.groupId === groupId ? local.value : void 0;
38955
39206
  const on4 = ctx.empty ? false : localValue2 ?? raw === true;
38956
- const member = React10.useMemo(() => radioGroups2.newMember(), [radioGroups2]);
38957
- const owner = React10.useSyncExternalStore(
39207
+ const member = React11.useMemo(() => radioGroups2.newMember(), [radioGroups2]);
39208
+ const owner = React11.useSyncExternalStore(
38958
39209
  radioGroups2.subscribe,
38959
39210
  () => groupId ? radioGroups2.owner(groupId) : void 0,
38960
39211
  () => void 0
38961
39212
  );
38962
- React10.useEffect(() => {
39213
+ React11.useEffect(() => {
38963
39214
  if (!groupId) return;
38964
39215
  radioGroups2.join(groupId);
38965
39216
  return () => radioGroups2.leave(groupId, member);
38966
39217
  }, [radioGroups2, groupId, member]);
38967
- const seenRaw = React10.useRef(null);
38968
- React10.useEffect(() => {
39218
+ const seenRaw = React11.useRef(null);
39219
+ React11.useEffect(() => {
38969
39220
  const prev = seenRaw.current;
38970
39221
  seenRaw.current = { raw, groupId, registry: radioGroups2 };
38971
39222
  if (!groupId) return;
@@ -38975,7 +39226,7 @@ var init_controls = __esm({
38975
39226
  radioGroups2.adopt(groupId, member, raw === true);
38976
39227
  }
38977
39228
  }, [radioGroups2, raw, groupId, member]);
38978
- React10.useEffect(() => {
39229
+ React11.useEffect(() => {
38979
39230
  if (groupId && radioGroups2.deselects(radioGroups2.owner(groupId), member)) setLocal({ value: false, registry: radioGroups2, groupId });
38980
39231
  }, [radioGroups2, owner, member, groupId]);
38981
39232
  const accent = C2("accentPrimary", "#116DFF");
@@ -39047,8 +39298,8 @@ var init_controls = __esm({
39047
39298
  const selectedId = useResolvedId(props.selectedId, ctx);
39048
39299
  const tabs = Array.isArray(boundTabs) && boundTabs.length ? boundTabs : Array.isArray(props.tabs) ? props.tabs : [];
39049
39300
  const pages2 = props.style === "swipe" ? props.swipePages : void 0;
39050
- const [local, setLocal] = React10.useState(void 0);
39051
- React10.useEffect(() => {
39301
+ const [local, setLocal] = React11.useState(void 0);
39302
+ React11.useEffect(() => {
39052
39303
  setLocal(void 0);
39053
39304
  }, [selectedId]);
39054
39305
  const current = local != null && tabs.some((t2) => t2.id === local) ? local : selectedId;
@@ -39068,15 +39319,15 @@ var init_controls = __esm({
39068
39319
  e2.preventDefault();
39069
39320
  if (ni2 !== selIdx) select2(ni2);
39070
39321
  };
39071
- const pagerRef = React10.useRef(null);
39072
- const settle2 = React10.useRef(void 0);
39073
- React10.useEffect(() => {
39322
+ const pagerRef = React11.useRef(null);
39323
+ const settle2 = React11.useRef(void 0);
39324
+ React11.useEffect(() => {
39074
39325
  const el2 = pagerRef.current;
39075
39326
  if (!el2 || !el2.clientWidth) return;
39076
39327
  const x2 = selIdx * el2.clientWidth;
39077
39328
  if (Math.abs(el2.scrollLeft - x2) > 1) el2.scrollTo?.({ left: x2, behavior: "smooth" });
39078
39329
  }, [selIdx, pages2]);
39079
- React10.useEffect(() => () => clearTimeout(settle2.current), []);
39330
+ React11.useEffect(() => () => clearTimeout(settle2.current), []);
39080
39331
  const onPagerScroll = () => {
39081
39332
  clearTimeout(settle2.current);
39082
39333
  settle2.current = setTimeout(() => {
@@ -39187,7 +39438,7 @@ var init_controls = __esm({
39187
39438
  const expanded = useResolvedScalar(props.expandedPath ?? props.expanded, ctx);
39188
39439
  const open = expanded === true;
39189
39440
  const fire = ctx.onAction && props.onToggle ? () => ctx.onAction(resolveRowAction(props.onToggle, ctx)) : void 0;
39190
- const regionId = React10.useMemo(() => `himi-disclosure-${++disclosureSeq}`, []);
39441
+ const regionId = React11.useMemo(() => `himi-disclosure-${++disclosureSeq}`, []);
39191
39442
  return /* @__PURE__ */ jsxs5("div", { style: { width: "100%", ...wrap }, children: [
39192
39443
  /* @__PURE__ */ jsxs5(
39193
39444
  "button",
@@ -39206,7 +39457,7 @@ var init_controls = __esm({
39206
39457
  ]
39207
39458
  }
39208
39459
  ),
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)) })
39460
+ /* @__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
39461
  ] });
39211
39462
  };
39212
39463
  }
@@ -39501,7 +39752,7 @@ var init_listGestures = __esm({
39501
39752
  init_tokens2();
39502
39753
  PULL_THRESHOLD = 56;
39503
39754
  SWIPE_OPEN = 76;
39504
- PullToRefreshList = ({ onRefresh, accent, fg, surface, label: label3 = "Pull to refresh", fontFamily = '"Wix Madefor Text", system-ui', style, children }) => {
39755
+ PullToRefreshList = ({ onRefresh, accent, fg, surface, label: label3 = "Pull to refresh", fontFamily = '"Wix Madefor Text", system-ui', style, children, ...extras }) => {
39505
39756
  const [pull, setPull] = useState4(0);
39506
39757
  const [busy, setBusy] = useState4(false);
39507
39758
  const startY = useRef2(null);
@@ -39529,6 +39780,7 @@ var init_listGestures = __esm({
39529
39780
  return /* @__PURE__ */ jsxs6(
39530
39781
  "div",
39531
39782
  {
39783
+ ...extras,
39532
39784
  "data-himalaya-pull-host": true,
39533
39785
  onTouchStart,
39534
39786
  onTouchMove,
@@ -40345,7 +40597,7 @@ var init_rich_text_field = __esm({
40345
40597
  });
40346
40598
 
40347
40599
  // ../../core/web-renderer/src/richContent.tsx
40348
- import React12 from "react";
40600
+ import React13 from "react";
40349
40601
  import { Fragment as Fragment3, jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
40350
40602
  function richContentFollow(ctx, onLink) {
40351
40603
  return (url) => {
@@ -40450,7 +40702,7 @@ function Block({ b: b2, env, depth }) {
40450
40702
  minHeight: b2.spans.length ? void 0 : "1.5em"
40451
40703
  }, children: /* @__PURE__ */ jsx9(Spans, { spans: b2.spans, env }) });
40452
40704
  case "heading":
40453
- return React12.createElement(
40705
+ return React13.createElement(
40454
40706
  `h${b2.level}`,
40455
40707
  { ...tid(env, b2.id, b2.kind), style: textStyle(ctx, RICH_CONTENT_HEADING_TOKENS[b2.level - 1], text13) },
40456
40708
  /* @__PURE__ */ jsx9(Spans, { spans: b2.spans, env })
@@ -41022,12 +41274,12 @@ var webviewBridgeHost_exports = {};
41022
41274
  __export(webviewBridgeHost_exports, {
41023
41275
  default: () => WebViewBridgeHost
41024
41276
  });
41025
- import React13 from "react";
41277
+ import React14 from "react";
41026
41278
  function WebViewBridgeHost(p2) {
41027
41279
  const { channel: channel3, props, ctx } = p2;
41028
41280
  const explicit2 = useResolvedScalar(props.instanceId, ctx);
41029
41281
  const explicitId = typeof explicit2 === "string" || typeof explicit2 === "number" ? String(explicit2) : "";
41030
- const pageActive = React13.useContext(PageActiveContext);
41282
+ const pageActive = React14.useContext(PageActiveContext);
41031
41283
  const active = useResolvedScalar(bound(props.activePath), ctx) !== false && pageActive;
41032
41284
  const muted = useResolvedScalar(bound(props.mutedPath), ctx) === true;
41033
41285
  const cfg = props.config && typeof props.config === "object" ? props.config : {};
@@ -41036,10 +41288,10 @@ function WebViewBridgeHost(p2) {
41036
41288
  const screenArgs = JSON.stringify(ctx.screenArgs ?? null);
41037
41289
  const source = p2.htmlStr != null ? "\0html" : p2.urlStr ?? "";
41038
41290
  const origins = p2.allowedOrigins.join("\n");
41039
- const sessionRef = React13.useRef(null);
41040
- const live3 = React13.useRef({ active, muted });
41291
+ const sessionRef = React14.useRef(null);
41292
+ const live3 = React14.useRef({ active, muted });
41041
41293
  live3.current = { active, muted };
41042
- React13.useEffect(() => {
41294
+ React14.useEffect(() => {
41043
41295
  if (typeof window === "undefined") return;
41044
41296
  if (p2.urlStr == null && p2.htmlStr == null) return;
41045
41297
  let instanceId;
@@ -41078,13 +41330,13 @@ function WebViewBridgeHost(p2) {
41078
41330
  p2.load.onLoad = void 0;
41079
41331
  };
41080
41332
  }, [channel3, ctx.screenId, screenArgs, p2.nodeId, explicitId, source, origins, security, consoleForwarding]);
41081
- React13.useEffect(() => {
41333
+ React14.useEffect(() => {
41082
41334
  sessionRef.current?.setActive(active);
41083
41335
  }, [active]);
41084
- React13.useEffect(() => {
41336
+ React14.useEffect(() => {
41085
41337
  sessionRef.current?.setMuted(muted);
41086
41338
  }, [muted]);
41087
- const first = React13.useRef(true);
41339
+ const first = React14.useRef(true);
41088
41340
  useLayoutEffectInBrowser(() => {
41089
41341
  if (first.current) {
41090
41342
  first.current = false;
@@ -41104,7 +41356,7 @@ var init_webviewBridgeHost = __esm({
41104
41356
  init_helpers();
41105
41357
  init_liveWindow();
41106
41358
  init_webviewBridge();
41107
- useLayoutEffectInBrowser = typeof globalThis.document === "undefined" ? React13.useEffect : React13.useLayoutEffect;
41359
+ useLayoutEffectInBrowser = typeof globalThis.document === "undefined" ? React14.useEffect : React14.useLayoutEffect;
41108
41360
  bound = (v2) => typeof v2 === "string" && isBinding(v2) ? v2 : void 0;
41109
41361
  }
41110
41362
  });
@@ -43357,11 +43609,11 @@ var init_pdf = __esm({
43357
43609
  var DESCRIPTORS = __webpack_require__3(3724);
43358
43610
  var definePropertyModule = __webpack_require__3(4913);
43359
43611
  var createPropertyDescriptor = __webpack_require__3(6980);
43360
- module.exports = DESCRIPTORS ? function(object12, key3, value2) {
43361
- return definePropertyModule.f(object12, key3, createPropertyDescriptor(1, value2));
43362
- } : function(object12, key3, value2) {
43363
- object12[key3] = value2;
43364
- return object12;
43612
+ module.exports = DESCRIPTORS ? function(object13, key3, value2) {
43613
+ return definePropertyModule.f(object13, key3, createPropertyDescriptor(1, value2));
43614
+ } : function(object13, key3, value2) {
43615
+ object13[key3] = value2;
43616
+ return object13;
43365
43617
  };
43366
43618
  },
43367
43619
  /***/
@@ -43380,9 +43632,9 @@ var init_pdf = __esm({
43380
43632
  var DESCRIPTORS = __webpack_require__3(3724);
43381
43633
  var definePropertyModule = __webpack_require__3(4913);
43382
43634
  var createPropertyDescriptor = __webpack_require__3(6980);
43383
- module.exports = function(object12, key3, value2) {
43384
- if (DESCRIPTORS) definePropertyModule.f(object12, key3, createPropertyDescriptor(0, value2));
43385
- else object12[key3] = value2;
43635
+ module.exports = function(object13, key3, value2) {
43636
+ if (DESCRIPTORS) definePropertyModule.f(object13, key3, createPropertyDescriptor(0, value2));
43637
+ else object13[key3] = value2;
43386
43638
  };
43387
43639
  },
43388
43640
  /***/
@@ -43672,9 +43924,9 @@ var init_pdf = __esm({
43672
43924
  6706(module, __unused_webpack_exports, __webpack_require__3) {
43673
43925
  var uncurryThis = __webpack_require__3(9504);
43674
43926
  var aCallable = __webpack_require__3(9306);
43675
- module.exports = function(object12, key3, method) {
43927
+ module.exports = function(object13, key3, method) {
43676
43928
  try {
43677
- return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object12, key3)[method]));
43929
+ return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object13, key3)[method]));
43678
43930
  } catch (error) {
43679
43931
  }
43680
43932
  };
@@ -44642,13 +44894,13 @@ var init_pdf = __esm({
44642
44894
  var $Object = Object;
44643
44895
  var ObjectPrototype = $Object.prototype;
44644
44896
  module.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function(O2) {
44645
- var object12 = toObject(O2);
44646
- if (hasOwn(object12, IE_PROTO)) return object12[IE_PROTO];
44647
- var constructor = object12.constructor;
44648
- if (isCallable(constructor) && object12 instanceof constructor) {
44897
+ var object13 = toObject(O2);
44898
+ if (hasOwn(object13, IE_PROTO)) return object13[IE_PROTO];
44899
+ var constructor = object13.constructor;
44900
+ if (isCallable(constructor) && object13 instanceof constructor) {
44649
44901
  return constructor.prototype;
44650
44902
  }
44651
- return object12 instanceof $Object ? ObjectPrototype : null;
44903
+ return object13 instanceof $Object ? ObjectPrototype : null;
44652
44904
  };
44653
44905
  },
44654
44906
  /***/
@@ -44664,8 +44916,8 @@ var init_pdf = __esm({
44664
44916
  var indexOf = __webpack_require__3(9617).indexOf;
44665
44917
  var hiddenKeys = __webpack_require__3(421);
44666
44918
  var push = uncurryThis([].push);
44667
- module.exports = function(object12, names2) {
44668
- var O2 = toIndexedObject(object12);
44919
+ module.exports = function(object13, names2) {
44920
+ var O2 = toIndexedObject(object13);
44669
44921
  var i2 = 0;
44670
44922
  var result = [];
44671
44923
  var key3;
@@ -46108,13 +46360,13 @@ var init_pdf = __esm({
46108
46360
  }
46109
46361
  return call(reviver, holder, name, val, context);
46110
46362
  };
46111
- var internalizeProperty = function(object12, key3, value2) {
46363
+ var internalizeProperty = function(object13, key3, value2) {
46112
46364
  if (DESCRIPTORS) {
46113
- var descriptor = getOwnPropertyDescriptor(object12, key3);
46365
+ var descriptor = getOwnPropertyDescriptor(object13, key3);
46114
46366
  if (descriptor && !descriptor.configurable) return;
46115
46367
  }
46116
- if (value2 === void 0) delete object12[key3];
46117
- else createProperty(object12, key3, value2);
46368
+ if (value2 === void 0) delete object13[key3];
46369
+ else createProperty(object13, key3, value2);
46118
46370
  };
46119
46371
  var Node2 = function(value2, end, source, nodes) {
46120
46372
  this.value = value2;
@@ -46159,7 +46411,7 @@ var init_pdf = __esm({
46159
46411
  var source = this.source;
46160
46412
  var i2 = this.index + 1;
46161
46413
  var expectKeypair = false;
46162
- var object12 = {};
46414
+ var object13 = {};
46163
46415
  var nodes = {};
46164
46416
  var closed = false;
46165
46417
  while (i2 < source.length) {
@@ -46176,7 +46428,7 @@ var init_pdf = __esm({
46176
46428
  i2 = this.skip(IS_WHITESPACE, i2);
46177
46429
  result = this.fork(i2).parse();
46178
46430
  createProperty(nodes, key3, result);
46179
- createProperty(object12, key3, result.value);
46431
+ createProperty(object13, key3, result.value);
46180
46432
  i2 = this.until([",", "}"], result.end);
46181
46433
  var chr = at2(source, i2);
46182
46434
  if (chr === ",") {
@@ -46189,7 +46441,7 @@ var init_pdf = __esm({
46189
46441
  }
46190
46442
  }
46191
46443
  if (!closed) throw new SyntaxError2("Unterminated object at: " + i2);
46192
- return this.node(OBJECT, object12, this.index, i2, nodes);
46444
+ return this.node(OBJECT, object13, this.index, i2, nodes);
46193
46445
  },
46194
46446
  array: function() {
46195
46447
  var source = this.source;
@@ -121720,7 +121972,7 @@ __export(pdfDocument_exports, {
121720
121972
  PdfDocument: () => PdfDocument,
121721
121973
  destroyPdfDocumentLoad: () => destroyPdfDocumentLoad
121722
121974
  });
121723
- import React14 from "react";
121975
+ import React15 from "react";
121724
121976
  import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
121725
121977
  async function loadPdfDocument(src, ownerDocument) {
121726
121978
  const [pdfjs, pdfWorkerAsset] = await Promise.all([
@@ -121739,18 +121991,18 @@ async function destroyPdfDocumentLoad(loading) {
121739
121991
  }
121740
121992
  }
121741
121993
  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);
121994
+ const [pages2, setPages] = React15.useState(0);
121995
+ const [failedRequest, setFailedRequest] = React15.useState(null);
121744
121996
  const request = JSON.stringify([src, zoomPercent]);
121745
121997
  const failed3 = failedRequest === request;
121746
- const containerRef = React14.useRef(null);
121747
- const frameRef = React14.useRef(null);
121748
- const startPageRef = React14.useRef(startPage);
121998
+ const containerRef = React15.useRef(null);
121999
+ const frameRef = React15.useRef(null);
122000
+ const startPageRef = React15.useRef(startPage);
121749
122001
  startPageRef.current = startPage;
121750
- React14.useEffect(() => {
122002
+ React15.useEffect(() => {
121751
122003
  if (failed3) onFallback?.();
121752
122004
  }, [failed3, onFallback]);
121753
- React14.useEffect(() => {
122005
+ React15.useEffect(() => {
121754
122006
  const frame2 = frameRef.current;
121755
122007
  const page = Math.min(pages2, Math.max(1, Math.floor(startPage ?? 1) || 1));
121756
122008
  const canvas = pages2 ? containerRef.current?.querySelector(`[data-pdf-page="${page}"]`) : null;
@@ -121759,7 +122011,7 @@ function PdfDocument({ src, nativeSrc, title, height, startPage, zoomPercent, st
121759
122011
  const scale = frame2.offsetHeight > 0 && box.height > 0 ? box.height / frame2.offsetHeight : 1;
121760
122012
  frame2.scrollTop += (canvas.getBoundingClientRect().top - box.top) / scale;
121761
122013
  }, [startPage, pages2]);
121762
- React14.useEffect(() => {
122014
+ React15.useEffect(() => {
121763
122015
  let live3 = true;
121764
122016
  let loading;
121765
122017
  const container = containerRef.current;
@@ -121822,7 +122074,7 @@ var init_pdfDocument = __esm({
121822
122074
  });
121823
122075
 
121824
122076
  // ../../core/web-renderer/src/renderNode.tsx
121825
- import React15 from "react";
122077
+ import React16 from "react";
121826
122078
  import { createPortal } from "react-dom";
121827
122079
  import { Fragment as Fragment4, jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
121828
122080
  function boundTokenName(path2, fallback, ctx) {
@@ -121934,8 +122186,8 @@ function isNumericLike(s2) {
121934
122186
  return NUMERIC_TEXT.test(s2.trim());
121935
122187
  }
121936
122188
  function useValueSwap(value2, enabled2) {
121937
- const prev = React15.useRef(value2);
121938
- const gen = React15.useRef(0);
122189
+ const prev = React16.useRef(value2);
122190
+ const gen = React16.useRef(0);
121939
122191
  if (prev.current !== value2) {
121940
122192
  if (enabled2 && prev.current !== void 0 && value2 !== void 0) gen.current += 1;
121941
122193
  prev.current = value2;
@@ -122003,9 +122255,9 @@ function revealOnFocusStyle(C2) {
122003
122255
  };
122004
122256
  }
122005
122257
  function FormFieldLabelIdScope({ render, fieldKey, ...extras }) {
122006
- const id = React15.useId().replace(/[^A-Za-z0-9_-]/g, "");
122258
+ const id = React16.useId().replace(/[^A-Za-z0-9_-]/g, "");
122007
122259
  const el2 = render(`${fieldKey ? `${fieldKey}-` : ""}auto-${id}`);
122008
- return Object.keys(extras).length ? React15.cloneElement(el2, extras) : el2;
122260
+ return Object.keys(extras).length ? React16.cloneElement(el2, extras) : el2;
122009
122261
  }
122010
122262
  function formFieldA11y(props) {
122011
122263
  const labelledBy = props.__labelledBy;
@@ -122034,9 +122286,10 @@ function ensureListAnimateRuntime() {
122034
122286
  listAnimateRuntimeInstalled = true;
122035
122287
  const prevRects = /* @__PURE__ */ new WeakMap();
122036
122288
  const rowKey = (c2) => c2.dataset?.componentId ?? c2.querySelector("[data-component-id]")?.dataset?.componentId;
122289
+ const rowBoxes = (host) => Array.from(host.children, (c2) => c2.hasAttribute("data-himalaya-row-id") ? c2.firstElementChild : c2).filter((c2) => c2 != null);
122037
122290
  const snapshot4 = (host) => {
122038
122291
  const m2 = /* @__PURE__ */ new Map();
122039
- Array.from(host.children).forEach((c2) => {
122292
+ rowBoxes(host).forEach((c2) => {
122040
122293
  const id = rowKey(c2);
122041
122294
  if (id) m2.set(id, c2.getBoundingClientRect());
122042
122295
  });
@@ -122050,11 +122303,12 @@ function ensureListAnimateRuntime() {
122050
122303
  return;
122051
122304
  }
122052
122305
  const next = /* @__PURE__ */ new Map();
122053
- Array.from(host.children).forEach((c2) => {
122306
+ const boxes = rowBoxes(host);
122307
+ boxes.forEach((c2) => {
122054
122308
  const id = rowKey(c2);
122055
122309
  if (id) next.set(id, c2.getBoundingClientRect());
122056
122310
  });
122057
- Array.from(host.children).forEach((c2) => {
122311
+ boxes.forEach((c2) => {
122058
122312
  const el2 = c2;
122059
122313
  const id = rowKey(c2);
122060
122314
  if (!id) return;
@@ -122740,9 +122994,9 @@ function sectionSlot(raw) {
122740
122994
  }
122741
122995
  }
122742
122996
  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(() => {
122997
+ const [shown2, setShown] = React16.useState(() => target === "loading" && graceMs > 0 ? "pending" : target);
122998
+ const loadingSince = React16.useRef(shown2 === "loading" ? Date.now() : null);
122999
+ React16.useEffect(() => {
122746
123000
  if (target === shown2) return void 0;
122747
123001
  if (target === "loading") {
122748
123002
  if (graceMs <= 0) {
@@ -122781,8 +123035,8 @@ function autoGrowBox(contentHeight, lineHeight, verticalPadding, maxLines) {
122781
123035
  function PreviewMenuOverlay({ label: label3, dialogRef, preview, ctx, onClose, anchorHost, children }) {
122782
123036
  const host = anchorHost?.closest(`[${MODAL_SCOPE_ATTR}]`) ?? (typeof document !== "undefined" ? document.body : null);
122783
123037
  const reduce = ctx.reduceMotion();
122784
- const [shown2, setShown] = React15.useState(reduce);
122785
- React15.useEffect(() => {
123038
+ const [shown2, setShown] = React16.useState(reduce);
123039
+ React16.useEffect(() => {
122786
123040
  if (reduce || typeof requestAnimationFrame !== "function") {
122787
123041
  setShown(true);
122788
123042
  return;
@@ -122791,7 +123045,7 @@ function PreviewMenuOverlay({ label: label3, dialogRef, preview, ctx, onClose, a
122791
123045
  return () => cancelAnimationFrame(raf);
122792
123046
  }, [reduce]);
122793
123047
  const inScope = host != null && host !== host.ownerDocument.body;
122794
- const previewCtx = React15.useMemo(() => ctx.onAction ? { ...ctx, onAction: (a2) => {
123048
+ const previewCtx = React16.useMemo(() => ctx.onAction ? { ...ctx, onAction: (a2) => {
122795
123049
  onClose();
122796
123050
  ctx.onAction(a2);
122797
123051
  } } : ctx, [ctx, onClose]);
@@ -122858,7 +123112,7 @@ function youtubeId(item) {
122858
123112
  }
122859
123113
  }
122860
123114
  function useResolvedMediaItems(items, ctx) {
122861
- const paths2 = React15.useMemo(() => {
123115
+ const paths2 = React16.useMemo(() => {
122862
123116
  const set = /* @__PURE__ */ new Set();
122863
123117
  for (const it2 of items) {
122864
123118
  if (!it2 || typeof it2 !== "object") continue;
@@ -122870,17 +123124,17 @@ function useResolvedMediaItems(items, ctx) {
122870
123124
  return [...set];
122871
123125
  }, [items]);
122872
123126
  const key3 = paths2.join("\0");
122873
- const [values, setValues] = React15.useState(() => {
123127
+ const [values, setValues] = React16.useState(() => {
122874
123128
  const seed2 = {};
122875
123129
  if (ctx.provider) for (const p2 of paths2) seed2[p2] = ctx.provider.value(p2);
122876
123130
  return seed2;
122877
123131
  });
122878
- React15.useEffect(() => {
123132
+ React16.useEffect(() => {
122879
123133
  if (!ctx.provider || paths2.length === 0) return;
122880
123134
  const unsubs = paths2.map((p2) => ctx.provider.subscribe(p2, (v2) => setValues((prev) => prev[p2] === v2 ? prev : { ...prev, [p2]: v2 })));
122881
123135
  return () => unsubs.forEach((u2) => u2());
122882
123136
  }, [ctx.provider, key3]);
122883
- return React15.useMemo(() => items.map((it2) => {
123137
+ return React16.useMemo(() => items.map((it2) => {
122884
123138
  if (!it2 || typeof it2 !== "object") return it2;
122885
123139
  let out2 = null;
122886
123140
  for (const f2 of MEDIA_ITEM_BINDABLE) {
@@ -122923,8 +123177,8 @@ function reloadKeyOf(v2) {
122923
123177
  return String(v2);
122924
123178
  }
122925
123179
  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]);
123180
+ if (kids3 === el2.props.children) return React16.cloneElement(el2, props);
123181
+ return React16.cloneElement(el2, props, ...Array.isArray(kids3) ? kids3 : [kids3]);
122928
123182
  }
122929
123183
  function editA11yParts(node, edit) {
122930
123184
  if (Array.isArray(node)) {
@@ -122936,7 +123190,7 @@ function editA11yParts(node, edit) {
122936
123190
  });
122937
123191
  return changed ? out2 : node;
122938
123192
  }
122939
- if (!React15.isValidElement(node) || typeof node.type !== "string") return node;
123193
+ if (!React16.isValidElement(node) || typeof node.type !== "string") return node;
122940
123194
  const own6 = node.props;
122941
123195
  if (own6["data-component-id"] != null) return node;
122942
123196
  const part4 = own6[A11Y_PART];
@@ -122980,8 +123234,8 @@ function isNativeInteractiveElement(el2) {
122980
123234
  return typeof el2.type === "string" && (["button", "input", "select", "textarea"].includes(el2.type) || el2.type === "a" && typeof props.href === "string");
122981
123235
  }
122982
123236
  function hasInteractiveReactDescendant(el2) {
122983
- return React15.Children.toArray(el2.props.children).some((child) => {
122984
- if (!React15.isValidElement(child)) return false;
123237
+ return React16.Children.toArray(el2.props.children).some((child) => {
123238
+ if (!React16.isValidElement(child)) return false;
122985
123239
  if (isNativeInteractiveElement(child)) return true;
122986
123240
  const props = child.props;
122987
123241
  if (typeof child.type === "string" && typeof props.role === "string" && INTERACTIVE_ROLES.has(props.role)) return true;
@@ -123058,8 +123312,8 @@ function trackActivatorName(activator) {
123058
123312
  activatorNameObservers.set(activator, observer);
123059
123313
  }
123060
123314
  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()}`;
123315
+ const ref = React16.useRef(null);
123316
+ const hintId = `hm-tap-hint${React16.useId()}`;
123063
123317
  useIsomorphicLayoutEffect(() => {
123064
123318
  const el2 = ref.current;
123065
123319
  if (!el2 || label3) return;
@@ -123098,9 +123352,9 @@ function TapActivator({ label: label3, state, tabIndex = 0, role = "button", hin
123098
123352
  function withExtras(name, render) {
123099
123353
  const Wrapped = ({ props, ctx, wrap, nodeId, gap, ...pass }) => {
123100
123354
  const el2 = render({ props, ctx, wrap, nodeId, gap, nodeExtras: pass });
123101
- if (!React15.isValidElement(el2)) return /* @__PURE__ */ jsx11(Fragment4, { children: el2 });
123355
+ if (!React16.isValidElement(el2)) return /* @__PURE__ */ jsx11(Fragment4, { children: el2 });
123102
123356
  if (el2.props[NODE_EXTRAS_TARGET] === "bottom-drawer-panel") {
123103
- return React15.cloneElement(el2, { [NODE_EXTRAS_TARGET]: void 0 });
123357
+ return React16.cloneElement(el2, { [NODE_EXTRAS_TARGET]: void 0 });
123104
123358
  }
123105
123359
  const additive = addIntrinsicPadding(el2.props.style, wrap ?? {});
123106
123360
  const inferredDecorative = el2.props[INFERRED_DECORATIVE] === true;
@@ -123120,7 +123374,7 @@ function withExtras(name, render) {
123120
123374
  }, hasA11yParts ? editA11yParts(kids3, a11yPartEdit({}, false, () => {
123121
123375
  })) : kids3));
123122
123376
  }
123123
- return withCircleClipBorder(additive ? React15.cloneElement(el2, { style: additive }) : el2);
123377
+ return withCircleClipBorder(additive ? React16.cloneElement(el2, { style: additive }) : el2);
123124
123378
  }
123125
123379
  const prev = el2.props;
123126
123380
  const next = { ...pass };
@@ -123221,7 +123475,7 @@ function withExtras(name, render) {
123221
123475
  }
123222
123476
  return withCircleClipBorder(cloneWithKids(el2, next, kids3));
123223
123477
  }
123224
- return withCircleClipBorder(React15.cloneElement(el2, next));
123478
+ return withCircleClipBorder(React16.cloneElement(el2, next));
123225
123479
  };
123226
123480
  Wrapped.displayName = name;
123227
123481
  return Wrapped;
@@ -123329,7 +123583,7 @@ function overlayEdgeStyle(edge, gap) {
123329
123583
  }
123330
123584
  function useFlippedEdge(edge, open, bubbleRef, anchorRef, gap = TOOLTIP_GAP) {
123331
123585
  const initial = { edge, x: 0, y: 0, maxWidth: Infinity };
123332
- const [placed, setPlaced] = React15.useState(initial);
123586
+ const [placed, setPlaced] = React16.useState(initial);
123333
123587
  useIsomorphicLayoutEffect(() => {
123334
123588
  if (!open) {
123335
123589
  setPlaced((previous) => previous.edge === edge && previous.x === 0 && previous.y === 0 && previous.maxWidth === Infinity ? previous : initial);
@@ -124153,7 +124407,7 @@ function renderNodeInner(node, ctx) {
124153
124407
  return /* @__PURE__ */ jsx11(ScrollIntoViewNode, { node: bare, ctx, path: node.modifiers.scrollIntoViewPath });
124154
124408
  }
124155
124409
  const el2 = renderInner(node, ctx);
124156
- if (!React15.isValidElement(el2)) return el2;
124410
+ if (!React16.isValidElement(el2)) return el2;
124157
124411
  const extra = {};
124158
124412
  const material = node?.modifiers?.material;
124159
124413
  const materialName = typeof material === "string" ? material : material?.token ?? material?.name;
@@ -124338,9 +124592,9 @@ function renderNodeInner(node, ctx) {
124338
124592
  const finalStyle = extra.style ?? el2.props.style;
124339
124593
  if (!finalStyle?.position) extra.style = { ...finalStyle ?? {}, position: "relative" };
124340
124594
  }
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 });
124595
+ let out2 = tapActivator ? React16.cloneElement(el2, extra, tapActivator, el2.props.children) : Object.keys(extra).length ? React16.cloneElement(el2, extra) : el2;
124596
+ if (React16.isValidElement(out2)) out2 = withCircleClipBorder(out2);
124597
+ if (busyGate && React16.isValidElement(out2)) out2 = /* @__PURE__ */ jsx11(WorkerTapGate, { gate: busyGate, action: tap, children: out2 });
124344
124598
  if (a11yHint && !tapActivator) {
124345
124599
  out2 = /* @__PURE__ */ jsx11(A11yHintDescription, { hint: a11yHint, idBase: componentId, children: out2 });
124346
124600
  }
@@ -124353,10 +124607,10 @@ function renderNodeInner(node, ctx) {
124353
124607
  return out2;
124354
124608
  }
124355
124609
  function NodeOnAppear({ action, ctx, children }) {
124356
- const fired = React15.useRef(false);
124357
- const appearanceAction = React15.useContext(AppearanceActionContext);
124610
+ const fired = React16.useRef(false);
124611
+ const appearanceAction = React16.useContext(AppearanceActionContext);
124358
124612
  const onAction = appearanceAction === void 0 ? ctx.onAction : appearanceAction;
124359
- React15.useEffect(() => {
124613
+ React16.useEffect(() => {
124360
124614
  if (fired.current || ctx.staticRender || !onAction) return;
124361
124615
  const resolved2 = resolveItemDeep2(action, ctx);
124362
124616
  if (!resolved2?.actionId) return;
@@ -124569,22 +124823,26 @@ function renderInner(node, ctx) {
124569
124823
  const boundStagger = ctx.reduceMotion() ? 0 : Number(props.staggerMs ?? props.stagger_ms ?? 0);
124570
124824
  const boundAnimateItems = listAnimateItemsEnabled(ctx) && (props.animateItems ?? props.animate_items) === true && !props.horizontal;
124571
124825
  if (boundAnimateItems) ensureListAnimateRuntime();
124826
+ const jumpPath = props.scrollToItemPath ?? props.scroll_to_item_path;
124827
+ const onTopItem = props.onTopItemChange ?? props.on_top_item_change;
124828
+ const anchored = !props.horizontal && !!(jumpPath || onTopItem);
124572
124829
  const boundBody = /* @__PURE__ */ jsx11(
124573
124830
  BoundList,
124574
124831
  {
124575
124832
  ctx,
124576
124833
  itemsPath,
124577
124834
  template: items[0],
124835
+ tagRows: anchored,
124578
124836
  windowed: !props.horizontal,
124579
124837
  wrapRows: boundAnimateItems ? (rows) => /* @__PURE__ */ jsx11("div", { "data-himalaya-animate-items": "1", style: { display: "contents" }, children: rows }) : void 0,
124580
124838
  footer: boundPagination ? /* @__PURE__ */ jsx11(LoadMoreSentinel, { ctx, pagination: boundPagination }) : null,
124581
124839
  pageCursor: boundPagination?.cursor,
124582
124840
  renderRow: keptRowRenderer(ctx, props, () => (t2, ic) => {
124583
124841
  let row2 = renderNode(t2, asItem(ic));
124584
- if (boundStagger > 0 && React15.isValidElement(row2) && (props.horizontal || Number(ic.itemScope?.__index ?? 0) < BOUND_LIST_WINDOW_START)) {
124842
+ if (boundStagger > 0 && React16.isValidElement(row2) && (props.horizontal || Number(ic.itemScope?.__index ?? 0) < BOUND_LIST_WINDOW_START)) {
124585
124843
  const i2 = Number(ic.itemScope?.__index ?? 0);
124586
124844
  const prev = row2.props.style ?? {};
124587
- row2 = React15.cloneElement(row2, { style: { ...prev, animationDelay: `${i2 * boundStagger}ms` } });
124845
+ row2 = React16.cloneElement(row2, { style: { ...prev, animationDelay: `${i2 * boundStagger}ms` } });
124588
124846
  }
124589
124847
  if (boundSwipe && ctx.onAction && !props.horizontal) {
124590
124848
  const leading = resolveSwipeActions(boundSwipe.leading, ic);
@@ -124609,7 +124867,7 @@ function renderInner(node, ctx) {
124609
124867
  })
124610
124868
  }
124611
124869
  );
124612
- const withSentinel = boundBody;
124870
+ const withSentinel = anchored ? /* @__PURE__ */ jsx11(RowAnchors, { ctx, itemsPath, jumpPath, onTopItem, children: boundBody }) : boundBody;
124613
124871
  if (boundRefresh && ctx.onAction && !props.horizontal) {
124614
124872
  return /* @__PURE__ */ jsx11(
124615
124873
  PullToRefreshList,
@@ -124639,7 +124897,7 @@ function renderInner(node, ctx) {
124639
124897
  if (swipe && ctx.onAction && !props.horizontal) {
124640
124898
  const leading = swipe.leading ?? [];
124641
124899
  const trailing = swipe.trailing ?? [];
124642
- const arr2 = React15.Children.toArray(rendered);
124900
+ const arr2 = React16.Children.toArray(rendered);
124643
124901
  body = arr2.map((child, i2) => /* @__PURE__ */ jsx11(
124644
124902
  SwipeRow,
124645
124903
  {
@@ -125152,7 +125410,7 @@ function reportUnknownComponent(ctx, pkg, type) {
125152
125410
  function unknownComponentShowsDeveloperLabel(ctx) {
125153
125411
  return ctx.debugUnknownComponents ?? ctx.previewSurface != null;
125154
125412
  }
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;
125413
+ 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
125414
  var init_renderNode = __esm({
125157
125415
  "../../core/web-renderer/src/renderNode.tsx"() {
125158
125416
  "use strict";
@@ -125168,6 +125426,7 @@ var init_renderNode = __esm({
125168
125426
  init_helpers();
125169
125427
  init_liveWindow();
125170
125428
  init_bindings2();
125429
+ init_scrollAnchors();
125171
125430
  init_snackbarTiming();
125172
125431
  init_bindings();
125173
125432
  init_tokens();
@@ -125204,21 +125463,21 @@ var init_renderNode = __esm({
125204
125463
  init_rich_content();
125205
125464
  init_rich_text_field();
125206
125465
  init_richContent();
125207
- AppearanceActionContext = React15.createContext(void 0);
125466
+ AppearanceActionContext = React16.createContext(void 0);
125208
125467
  rowValue = (v2, ctx) => typeof v2 === "string" && v2.startsWith("$item") ? resolveScalarStatic(v2, ctx) : v2;
125209
125468
  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);
125469
+ WebViewBridgeHost2 = React16.lazy(() => Promise.resolve().then(() => (init_webviewBridgeHost(), webviewBridgeHost_exports)));
125470
+ useIsomorphicLayoutEffect = typeof globalThis.document === "undefined" ? React16.useEffect : React16.useLayoutEffect;
125471
+ GridColumnsContext = React16.createContext(1);
125213
125472
  GridBoundList = (props) => {
125214
- const columns = React15.useContext(GridColumnsContext);
125473
+ const columns = React16.useContext(GridColumnsContext);
125215
125474
  return /* @__PURE__ */ jsx11(BoundList, { ...props, windowed: true, rowSize: columns, markerStyle: GRID_SPAN_ALL });
125216
125475
  };
125217
125476
  GRID_SPAN_ALL = { gridColumn: "1 / -1" };
125218
125477
  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(() => {
125478
+ const [el2, setEl] = React16.useState(null);
125479
+ const [cols, setCols] = React16.useState(initialCols);
125480
+ React16.useEffect(() => {
125222
125481
  if (!el2) return;
125223
125482
  const measure2 = () => {
125224
125483
  const w2 = seededWidth(el2.clientWidth, seedWidth);
@@ -125244,9 +125503,9 @@ var init_renderNode = __esm({
125244
125503
  SPLIT_EXPANDED_MIN_WIDTH = 840;
125245
125504
  SPLIT_COLUMN_GAP = 16;
125246
125505
  ResponsiveSplitView = ({ primary, detail, primaryMaxWidth, initialWide, seedWidth, extra }) => {
125247
- const ref = React15.useRef(null);
125248
- const [wide, setWide] = React15.useState(initialWide);
125249
- React15.useEffect(() => {
125506
+ const ref = React16.useRef(null);
125507
+ const [wide, setWide] = React16.useState(initialWide);
125508
+ React16.useEffect(() => {
125250
125509
  const el2 = ref.current;
125251
125510
  if (!el2) return;
125252
125511
  const measure2 = () => {
@@ -125292,9 +125551,9 @@ var init_renderNode = __esm({
125292
125551
  revealRuntimeInjected = false;
125293
125552
  AMBIENT_HOST_STYLE = { display: "contents" };
125294
125553
  AmbientMotionBox = ({ spec, kind, children }) => {
125295
- const ref = React15.useRef(null);
125554
+ const ref = React16.useRef(null);
125296
125555
  const { minGapMs, maxGapMs } = spec;
125297
- React15.useEffect(() => {
125556
+ React16.useEffect(() => {
125298
125557
  const el2 = ref.current?.firstElementChild;
125299
125558
  if (!el2 || typeof el2.animate !== "function") return;
125300
125559
  let timer;
@@ -125378,14 +125637,14 @@ var init_renderNode = __esm({
125378
125637
  }
125379
125638
  };
125380
125639
  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;
125640
+ kids2 = (arr2, ctx) => Array.isArray(arr2) ? arr2.map((n2, i2) => /* @__PURE__ */ jsx11(React16.Fragment, { children: renderNode(n2, ctx) }, n2?.id ?? i2)) : null;
125382
125641
  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;
125642
+ 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
125643
  staggeredKids = (arr2, ctx, staggerMs) => Array.isArray(arr2) ? arr2.map((n2, i2) => {
125385
125644
  const el2 = renderNode(n2, ctx);
125386
- if (!React15.isValidElement(el2)) return /* @__PURE__ */ jsx11(React15.Fragment, { children: el2 }, n2?.id ?? i2);
125645
+ if (!React16.isValidElement(el2)) return /* @__PURE__ */ jsx11(React16.Fragment, { children: el2 }, n2?.id ?? i2);
125387
125646
  const prev = el2.props.style ?? {};
125388
- return React15.cloneElement(el2, { key: n2?.id ?? i2, style: { ...prev, animationDelay: `${i2 * staggerMs}ms` } });
125647
+ return React16.cloneElement(el2, { key: n2?.id ?? i2, style: { ...prev, animationDelay: `${i2 * staggerMs}ms` } });
125389
125648
  }) : null;
125390
125649
  asTextL10n = (v2, ctx) => typeof v2 === "string" && v2.startsWith(TRANSLATION_PREFIX) ? asText2(resolveTranslation(v2, ctx.catalog)) : asText2(v2);
125391
125650
  asFinalTextL10n = (v2, ctx) => typeof v2 === "string" ? v2.startsWith(TRANSLATION_PREFIX) ? asText2(resolveTranslation(v2, ctx.catalog)) : v2 : asText2(v2);
@@ -125403,13 +125662,13 @@ var init_renderNode = __esm({
125403
125662
  const bound2 = Object.entries(params).filter(
125404
125663
  ([, v2]) => typeof v2 === "string" && v2.startsWith("$service:")
125405
125664
  );
125406
- const [live3, setLive] = React15.useState(() => {
125665
+ const [live3, setLive] = React16.useState(() => {
125407
125666
  const seed2 = {};
125408
125667
  if (ctx.provider) for (const [k2, p2] of bound2) seed2[k2] = ctx.provider.value(servicePath(p2));
125409
125668
  return seed2;
125410
125669
  });
125411
125670
  const subKey = bound2.map(([k2, p2]) => `${k2}=${p2}`).join("|");
125412
- React15.useEffect(() => {
125671
+ React16.useEffect(() => {
125413
125672
  const provider = ctx.provider;
125414
125673
  if (!provider) return;
125415
125674
  const unsubs = bound2.map(
@@ -125451,11 +125710,11 @@ var init_renderNode = __esm({
125451
125710
  fragmentSlotContent = ({ props, ctx, discriminator, slotId, extra }) => {
125452
125711
  const selected = selectFragmentCase(props, discriminator);
125453
125712
  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(() => {
125713
+ const previousId = React16.useRef(selectedId);
125714
+ const reportedUnknown = React16.useRef(/* @__PURE__ */ new Set());
125715
+ const reportedInvalid = React16.useRef(/* @__PURE__ */ new Set());
125716
+ const [announcement, setAnnouncement] = React16.useState("");
125717
+ React16.useEffect(() => {
125459
125718
  if (typeof discriminator === "string") {
125460
125719
  if (discriminator && !props.cases?.some((candidate) => candidate.id === discriminator) && !reportedUnknown.current.has(discriminator)) {
125461
125720
  reportedUnknown.current.add(discriminator);
@@ -125469,7 +125728,7 @@ var init_renderNode = __esm({
125469
125728
  }
125470
125729
  }
125471
125730
  }, [ctx, discriminator, props.cases, slotId]);
125472
- React15.useEffect(() => {
125731
+ React16.useEffect(() => {
125473
125732
  if (previousId.current !== selectedId) {
125474
125733
  const next = selected?.accessibilityAnnouncement ?? selected?.accessibility_announcement;
125475
125734
  setAnnouncement(typeof next === "string" ? next : "");
@@ -125483,7 +125742,7 @@ var init_renderNode = __esm({
125483
125742
  // and the right edge clips (branded-lite's home is a FragmentSlot → 32px cut in
125484
125743
  // the phone preview). Included before ...extra so a modifier can still override.
125485
125744
  /* @__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,
125745
+ selected?.content ? /* @__PURE__ */ jsx11(React16.Fragment, { children: renderNode(selected.content, ctx) }, selectedId) : null,
125487
125746
  /* @__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
125747
  ] })
125489
125748
  );
@@ -125504,11 +125763,11 @@ var init_renderNode = __esm({
125504
125763
  const fallbackPathStr = mediaFieldServicePath(props.fallbackTextPath);
125505
125764
  const fallbackBound = useBoundValue(ctx, fallbackPathStr ? String(props.fallbackTextPath) : "");
125506
125765
  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("");
125766
+ const [uploading, setUploading] = React16.useState(false);
125767
+ const [failed3, setFailed] = React16.useState(false);
125768
+ const fileRef = React16.useRef(null);
125769
+ const previewRef = React16.useRef(null);
125770
+ const [localPreview, setLocalPreview] = React16.useState("");
125512
125771
  const uploadService = typeof props.uploadService === "string" ? props.uploadService : "";
125513
125772
  const resolvedLabel = asText2(resolveScalarStatic(props.label, ctx));
125514
125773
  const name = mediaFieldName(resolvedLabel);
@@ -125553,7 +125812,7 @@ var init_renderNode = __esm({
125553
125812
  setUploading(false);
125554
125813
  }
125555
125814
  };
125556
- React15.useEffect(() => () => {
125815
+ React16.useEffect(() => () => {
125557
125816
  const previewUrl = previewRef.current;
125558
125817
  if (previewUrl && typeof URL.revokeObjectURL === "function") URL.revokeObjectURL(previewUrl);
125559
125818
  previewRef.current = null;
@@ -125625,7 +125884,7 @@ var init_renderNode = __esm({
125625
125884
  const value2 = useBoundValue(ctx, typeof path2 === "string" ? path2 : "");
125626
125885
  const policy = props.policy;
125627
125886
  const catalog4 = ctx.provider && typeof ctx.provider.listActions === "function" ? ctx.provider : null;
125628
- const validation = React15.useMemo(() => {
125887
+ const validation = React16.useMemo(() => {
125629
125888
  if (value2 === void 0 || value2 === null) return { ok: false, reason: "unresolved" };
125630
125889
  if (typeof value2 !== "string") return { ok: false, reason: "value_type" };
125631
125890
  if (!policy || typeof policy !== "object") return { ok: false, reason: "typed_decode" };
@@ -125635,8 +125894,8 @@ var init_renderNode = __esm({
125635
125894
  return { ok: false, reason: "typed_decode" };
125636
125895
  }
125637
125896
  }, [catalog4, policy, slotId, value2]);
125638
- const reported = React15.useRef(/* @__PURE__ */ new Set());
125639
- React15.useEffect(() => {
125897
+ const reported = React16.useRef(/* @__PURE__ */ new Set());
125898
+ React16.useEffect(() => {
125640
125899
  const key3 = validation.ok ? `ok:${validation.treeHash}` : `bad:${validation.treeHash ?? validation.reason}`;
125641
125900
  if (reported.current.has(key3)) return;
125642
125901
  reported.current.add(key3);
@@ -125665,10 +125924,10 @@ var init_renderNode = __esm({
125665
125924
  const hasPath = typeof path2 === "string" && path2 !== "";
125666
125925
  const bound2 = useResolvedScalar(hasPath ? path2 : void 0, ctx);
125667
125926
  const raw = hasPath ? bound2 : props.documentJson ?? props.document_json;
125668
- const result = React15.useMemo(() => layoutRichContentValue(raw), [raw]);
125927
+ const result = React16.useMemo(() => layoutRichContentValue(raw), [raw]);
125669
125928
  const reason = result && "rejected" in result ? result.rejected : void 0;
125670
- const reported = React15.useRef(/* @__PURE__ */ new Set());
125671
- React15.useEffect(() => {
125929
+ const reported = React16.useRef(/* @__PURE__ */ new Set());
125930
+ React16.useEffect(() => {
125672
125931
  if (!reason) return;
125673
125932
  const key3 = typeof raw === "string" ? `${reason}:${raw.length}:${richContentDocumentHash(raw)}` : `${reason}:non-string`;
125674
125933
  if (reported.current.has(key3)) return;
@@ -125762,17 +126021,17 @@ var init_renderNode = __esm({
125762
126021
  };
125763
126022
  withRootStyle = (content, style) => {
125764
126023
  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)));
126024
+ if (!React16.isValidElement(content)) return content;
126025
+ if (content.type === React16.Fragment) {
126026
+ return React16.cloneElement(content, {}, React16.Children.map(content.props.children, (child) => withRootStyle(child, style)));
125768
126027
  }
125769
126028
  const element = content;
125770
- return React15.cloneElement(element, { style: { ...element.props.style, ...style } });
126029
+ return React16.cloneElement(element, { style: { ...element.props.style, ...style } });
125771
126030
  };
125772
126031
  ReactiveDirectScalars = ({ node, ctx, bindings, style }) => {
125773
- const [, rerender] = React15.useState(0);
126032
+ const [, rerender] = React16.useState(0);
125774
126033
  const bindingKey = bindings.join("|");
125775
- React15.useEffect(() => {
126034
+ React16.useEffect(() => {
125776
126035
  if (!ctx.provider) return;
125777
126036
  const unsubs = bindings.map((binding2) => ctx.provider.subscribe(servicePath(binding2), () => rerender((n2) => n2 + 1)));
125778
126037
  return () => unsubs.forEach((unsubscribe) => unsubscribe());
@@ -125785,14 +126044,14 @@ var init_renderNode = __esm({
125785
126044
  return /* @__PURE__ */ jsx11(ExitPresence, { hidden: hiddenBool(v2), exit: exit ?? null, children });
125786
126045
  };
125787
126046
  ExitPresence = ({ hidden, exit, children }) => {
125788
- const [prevHidden, setPrevHidden] = React15.useState(hidden);
125789
- const [exiting, setExiting] = React15.useState(false);
126047
+ const [prevHidden, setPrevHidden] = React16.useState(hidden);
126048
+ const [exiting, setExiting] = React16.useState(false);
125790
126049
  if (hidden !== prevHidden) {
125791
126050
  setPrevHidden(hidden);
125792
126051
  setExiting(hidden && exit != null);
125793
126052
  }
125794
- const ref = React15.useRef(null);
125795
- const exitRef = React15.useRef(exit);
126053
+ const ref = React16.useRef(null);
126054
+ const exitRef = React16.useRef(exit);
125796
126055
  exitRef.current = exit;
125797
126056
  useIsomorphicLayoutEffect(() => {
125798
126057
  if (!exiting) return void 0;
@@ -125825,8 +126084,8 @@ var init_renderNode = __esm({
125825
126084
  const target = raw == null || raw === "" || isBound && !ctx.provider ? legacy : sectionSlot(isBound ? bound2 : raw);
125826
126085
  const { graceMs, floorMs } = loadingTiming(ctx.kit, props.loadingGraceMs ?? props.loading_grace_ms, props.loadingFloorMs ?? props.loading_floor_ms);
125827
126086
  const shown2 = useLoadingTiming(target, graceMs, floorMs);
125828
- const changed = React15.useRef(false);
125829
- const first = React15.useRef(shown2);
126087
+ const changed = React16.useRef(false);
126088
+ const first = React16.useRef(shown2);
125830
126089
  if (shown2 !== first.current) changed.current = true;
125831
126090
  const renderCfg = (cfg) => cfg && typeof cfg === "object" ? /* @__PURE__ */ jsxs9("div", { style: { textAlign: "center", padding: "24px 12px", color: C2("textSecondary", "#9aa2ad") }, children: [
125832
126091
  cfg.title && /* @__PURE__ */ jsx11("div", { style: { fontSize: pxToRem(15), fontWeight: 600, color: C2("textPrimary", "#111") }, children: asText2(cfg.title) }),
@@ -125858,8 +126117,8 @@ var init_renderNode = __esm({
125858
126117
  }
125859
126118
  const animate = motionDefaultsAnimate(ctx);
125860
126119
  const fadeMs = motionDefaultsDuration(ctx.kit, 220);
125861
- const lastShown = React15.useRef(null);
125862
- const [outgoing, setOutgoing] = React15.useState(null);
126120
+ const lastShown = React16.useRef(null);
126121
+ const [outgoing, setOutgoing] = React16.useState(null);
125863
126122
  useIsomorphicLayoutEffect(() => {
125864
126123
  const was = lastShown.current;
125865
126124
  if (!animate || !was || was.slot === shown2 || was.node == null) return void 0;
@@ -125867,7 +126126,7 @@ var init_renderNode = __esm({
125867
126126
  const t2 = setTimeout(() => setOutgoing(null), fadeMs);
125868
126127
  return () => clearTimeout(t2);
125869
126128
  }, [shown2]);
125870
- React15.useEffect(() => {
126129
+ React16.useEffect(() => {
125871
126130
  lastShown.current = { slot: shown2, node: content };
125872
126131
  });
125873
126132
  if (changed.current && animate) {
@@ -125903,7 +126162,7 @@ var init_renderNode = __esm({
125903
126162
  const onChangeAction = resolveRowAction2(props.onChange ?? cfg.onChange, ctx);
125904
126163
  const borderless = props.borderless === true || cfg.borderless === true;
125905
126164
  const secure = props.secure === true || cfg.secure === true;
125906
- const [valueVisible, setValueVisible] = React15.useState(false);
126165
+ const [valueVisible, setValueVisible] = React16.useState(false);
125907
126166
  const visibilityToggle = secure && (props.visibilityToggle === true || cfg.visibilityToggle === true);
125908
126167
  const visibilityLabel = ctx.catalog?.get(valueVisible ? "auth.gate.password.hide" : "auth.gate.password.show") ?? (valueVisible ? "Hide password" : "Show password");
125909
126168
  const erroredProp = props.error === true || cfg.error === true;
@@ -125917,20 +126176,20 @@ var init_renderNode = __esm({
125917
126176
  const boundRawText = typeof boundVal === "string" ? boundVal : typeof boundVal === "number" ? String(boundVal) : void 0;
125918
126177
  const boundText = serializeRichText && boundRawText !== void 0 ? richTextHtmlToPlainText(boundRawText) : boundRawText;
125919
126178
  const literalText = typeof valueBinding === "string" ? serializeRichText ? richTextHtmlToPlainText(valueBinding) : valueBinding : "";
125920
- const [local, setLocal] = React15.useState(
126179
+ const [local, setLocal] = React16.useState(
125921
126180
  isBound ? boundText ?? "" : literalText
125922
126181
  );
125923
- const [edited, setEdited] = React15.useState(false);
125924
- const [pristineRichValue, setPristineRichValue] = React15.useState(
126182
+ const [edited, setEdited] = React16.useState(false);
126183
+ const [pristineRichValue, setPristineRichValue] = React16.useState(
125925
126184
  serializeRichText ? isBound ? boundRawText : typeof valueBinding === "string" ? valueBinding : void 0 : void 0
125926
126185
  );
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(() => {
126186
+ const focused = React16.useRef(false);
126187
+ const [touched, setTouched] = React16.useState(false);
126188
+ const [isFocused, setIsFocused] = React16.useState(false);
126189
+ const pendingEdits = React16.useRef([]);
126190
+ const previousBoundText = React16.useRef(boundText);
126191
+ const previousBoundRawText = React16.useRef(boundRawText);
126192
+ React16.useEffect(() => {
125934
126193
  if (!isBound || boundText === void 0) return;
125935
126194
  const boundTextChanged = previousBoundText.current !== boundText;
125936
126195
  const boundRawTextChanged = previousBoundRawText.current !== boundRawText;
@@ -125962,23 +126221,23 @@ var init_renderNode = __esm({
125962
126221
  }
125963
126222
  if (!focused.current && boundText !== local && changes.current?.pending == null) setLocal(boundText);
125964
126223
  }, [boundText, serializeRichText ? boundRawText : void 0, isFocused, serializeRichText ? edited : false]);
125965
- const formBag = React15.useContext(FormValuesContext);
126224
+ const formBag = React16.useContext(FormValuesContext);
125966
126225
  const fieldId = props.__formFieldId;
125967
- const previousBinding = React15.useRef(binding2);
126226
+ const previousBinding = React16.useRef(binding2);
125968
126227
  const rule = props.validation ?? cfg.validation;
125969
126228
  const { "aria-labelledby": labelledBy } = formFieldA11y(props);
125970
126229
  const required3 = rule?.required === true || void 0;
125971
- const ruleKey = React15.useMemo(() => rule ? JSON.stringify(rule) : "", [rule]);
125972
- React15.useEffect(() => {
126230
+ const ruleKey = React16.useMemo(() => rule ? JSON.stringify(rule) : "", [rule]);
126231
+ React16.useEffect(() => {
125973
126232
  if (!formBag || !fieldId) return;
125974
126233
  formBag.register(fieldId, rule);
125975
126234
  return () => formBag.unregister(fieldId);
125976
126235
  }, [fieldId, formBag, ruleKey]);
125977
126236
  const formValue = serializeRichText && !edited && pristineRichValue !== void 0 ? pristineRichValue : serializeRichText ? richTextEditedHtml(pristineRichValue, pristineRichValue === void 0 ? "" : richTextHtmlToPlainText(pristineRichValue), local) : local;
125978
- React15.useEffect(() => {
126237
+ React16.useEffect(() => {
125979
126238
  if (formBag && fieldId) formBag.set(fieldId, formValue);
125980
126239
  }, [formValue, fieldId, formBag, binding2]);
125981
- React15.useEffect(() => {
126240
+ React16.useEffect(() => {
125982
126241
  if (previousBinding.current === binding2) return;
125983
126242
  previousBinding.current = binding2;
125984
126243
  pendingEdits.current = [];
@@ -125997,7 +126256,7 @@ var init_renderNode = __esm({
125997
126256
  const errorTextRaw = props.errorText ?? cfg.errorText;
125998
126257
  const errorTextResolved = useBoundString(errorTextRaw, ctx);
125999
126258
  const workerError = typeof boundError === "string" ? boundError : errorTextRaw == null ? void 0 : errorTextResolved;
126000
- const validationCatalog = React15.useMemo(
126259
+ const validationCatalog = React16.useMemo(
126001
126260
  () => ctx.catalog ? new Proxy({}, { get: (_t2, k2) => typeof k2 === "string" ? ctx.catalog.get(k2) : void 0 }) : void 0,
126002
126261
  [ctx.catalog]
126003
126262
  );
@@ -126012,7 +126271,7 @@ var init_renderNode = __esm({
126012
126271
  const hasWorkerError = Boolean(workerError && workerError.trim());
126013
126272
  const painted2 = rawMessage === null ? "" : translateOnly(rawMessage);
126014
126273
  const message2 = !painted2.trim() || ruleMessagePending && !hasWorkerError ? null : painted2;
126015
- const [feedbackShown, setFeedbackShown] = React15.useState(false);
126274
+ const [feedbackShown, setFeedbackShown] = React16.useState(false);
126016
126275
  const revealed = message2 !== null && shouldRevealError({
126017
126276
  rule,
126018
126277
  feedbackShown,
@@ -126021,11 +126280,11 @@ var init_renderNode = __esm({
126021
126280
  focused: isFocused,
126022
126281
  submitAttempted: formBag?.submitAttempted ?? false
126023
126282
  });
126024
- React15.useEffect(() => {
126283
+ React16.useEffect(() => {
126025
126284
  if (revealed) setFeedbackShown(true);
126026
126285
  }, [revealed]);
126027
126286
  const errored = erroredProp || revealed;
126028
- const generatedId = React15.useId();
126287
+ const generatedId = React16.useId();
126029
126288
  const errorId = revealed ? `${componentId ?? generatedId}__error` : void 0;
126030
126289
  const emit = (v2) => {
126031
126290
  if (onChangeAction && ctx.onAction) {
@@ -126038,23 +126297,23 @@ var init_renderNode = __esm({
126038
126297
  }
126039
126298
  };
126040
126299
  const changeDebounceMs = typeof props.debounceMs === "number" ? props.debounceMs : typeof cfg.debounceMs === "number" ? cfg.debounceMs : 0;
126041
- const changes = React15.useRef(null);
126300
+ const changes = React16.useRef(null);
126042
126301
  if (!changes.current) changes.current = new ChangeDebouncer();
126043
- React15.useEffect(() => () => changes.current?.drop(), []);
126302
+ React16.useEffect(() => () => changes.current?.drop(), []);
126044
126303
  const emitNow = (v2) => {
126045
126304
  changes.current?.drop();
126046
126305
  emit(v2);
126047
126306
  };
126048
- const ownsPrivateDraft = React15.useRef(false);
126049
- React15.useEffect(() => {
126307
+ const ownsPrivateDraft = React16.useRef(false);
126308
+ React16.useEffect(() => {
126050
126309
  if (visibilityToggle && !isBound) ownsPrivateDraft.current = true;
126051
126310
  }, [visibilityToggle, isBound]);
126052
- const clearSensitiveDraft = React15.useRef(() => {
126311
+ const clearSensitiveDraft = React16.useRef(() => {
126053
126312
  });
126054
126313
  clearSensitiveDraft.current = () => {
126055
126314
  if (ownsPrivateDraft.current && !isBound) emitNow("");
126056
126315
  };
126057
- React15.useEffect(() => () => clearSensitiveDraft.current(), []);
126316
+ React16.useEffect(() => () => clearSensitiveDraft.current(), []);
126058
126317
  const onInput = (e2) => {
126059
126318
  const v2 = e2.currentTarget.value;
126060
126319
  setLocal(v2);
@@ -126086,7 +126345,7 @@ var init_renderNode = __esm({
126086
126345
  const submitLabelRaw = props.submitLabel ?? cfg.submitLabel;
126087
126346
  const onSubmitAction = props.onSubmit ?? cfg.onSubmit;
126088
126347
  const enterKeyHint = !multilineBox && ENTER_KEY_HINTS.has(submitLabelRaw) ? submitLabelRaw : !multilineBox && onSubmitAction ? "done" : void 0;
126089
- const inputRef = React15.useRef(null);
126348
+ const inputRef = React16.useRef(null);
126090
126349
  useIsomorphicLayoutEffect(() => {
126091
126350
  const el2 = inputRef.current;
126092
126351
  const view = el2?.ownerDocument?.defaultView;
@@ -126101,8 +126360,8 @@ var init_renderNode = __esm({
126101
126360
  }, [local, multilineBox, maxLines]);
126102
126361
  const focusBinding = (typeof props.focusPath === "string" ? props.focusPath : typeof cfg.focusPath === "string" ? cfg.focusPath : void 0) ?? "";
126103
126362
  const focusTokenVal = useBoundValue(ctx, focusBinding);
126104
- const lastFocusToken = React15.useRef(void 0);
126105
- React15.useEffect(() => {
126363
+ const lastFocusToken = React16.useRef(void 0);
126364
+ React16.useEffect(() => {
126106
126365
  if (!focusBinding) return;
126107
126366
  const next = typeof focusTokenVal === "string" ? focusTokenVal : typeof focusTokenVal === "number" ? String(focusTokenVal) : "";
126108
126367
  if (!next || next === lastFocusToken.current) return;
@@ -126178,8 +126437,8 @@ var init_renderNode = __esm({
126178
126437
  };
126179
126438
  MENU_ANCHOR_CONTROL = 'a[href], button, input, select, textarea, [tabindex]:not([tabindex="-1"]), [role="button"], [role="link"]';
126180
126439
  MenuNode = withExtras("MenuNode", ({ props, ctx, wrap }) => {
126181
- const [open, setOpen] = React15.useState(false);
126182
- const hostRef = React15.useRef(null);
126440
+ const [open, setOpen] = React16.useState(false);
126441
+ const hostRef = React16.useRef(null);
126183
126442
  const context = menuOpensOnLongPress(props.style);
126184
126443
  const itemsPath = typeof props.itemsPath === "string" && props.itemsPath.startsWith("$service:") ? props.itemsPath : "";
126185
126444
  const boundItems = useBoundValue(ctx, itemsPath);
@@ -126187,7 +126446,7 @@ var init_renderNode = __esm({
126187
126446
  const previewMode = context && props.preview != null;
126188
126447
  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
126448
  const C2 = ctx.color;
126190
- React15.useEffect(() => {
126449
+ React16.useEffect(() => {
126191
126450
  if (!open) return;
126192
126451
  const onTop = () => menuRef.current != null && isWithinTopModal(menuRef.current);
126193
126452
  const onDown = (e2) => {
@@ -126213,11 +126472,11 @@ var init_renderNode = __esm({
126213
126472
  const flexGrow = typeof wrap?.flex === "string" ? parseFloat(wrap.flex) : typeof wrap?.flex === "number" ? wrap.flex : Number(wrap?.flexGrow ?? 0);
126214
126473
  const fill = wrap?.width === "100%" || Number.isFinite(flexGrow) && flexGrow > 0;
126215
126474
  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);
126475
+ const anchorRef = React16.useRef(null);
126476
+ const menuRef = React16.useRef(null);
126477
+ const dialogRef = React16.useRef(null);
126478
+ const [popupAlignLeft, setPopupAlignLeft] = React16.useState(false);
126479
+ const [popupAbove, setPopupAbove] = React16.useState(false);
126221
126480
  useIsomorphicLayoutEffect(() => {
126222
126481
  if (!open || !anchorRef.current || !menuRef.current) return;
126223
126482
  const anchor = anchorRef.current.getBoundingClientRect();
@@ -126239,8 +126498,8 @@ var init_renderNode = __esm({
126239
126498
  setPopupAlignLeft(anchor.right - popup.width < left);
126240
126499
  setPopupAbove(anchor.bottom + popup.height + 4 > bottom && anchor.top - popup.height - 4 >= top);
126241
126500
  });
126242
- const [innerControl, setInnerControl] = React15.useState(null);
126243
- const innerControlRef = React15.useRef(null);
126501
+ const [innerControl, setInnerControl] = React16.useState(null);
126502
+ const innerControlRef = React16.useRef(null);
126244
126503
  useIsomorphicLayoutEffect(() => {
126245
126504
  const anchor = anchorRef.current;
126246
126505
  const refresh = () => {
@@ -126256,7 +126515,7 @@ var init_renderNode = __esm({
126256
126515
  observer.observe(anchor, { childList: true, subtree: true, attributes: true, attributeFilter: ["disabled", "tabindex", "href", "role"] });
126257
126516
  return () => observer.disconnect();
126258
126517
  });
126259
- React15.useEffect(() => {
126518
+ React16.useEffect(() => {
126260
126519
  if (!innerControl) return;
126261
126520
  innerControl.setAttribute("aria-haspopup", "menu");
126262
126521
  innerControl.setAttribute("aria-expanded", String(open));
@@ -126268,13 +126527,13 @@ var init_renderNode = __esm({
126268
126527
  };
126269
126528
  }, [innerControl, open]);
126270
126529
  const itemsKey = items.map((it2, i2) => `${it2?.id ?? i2}:${it2?.disabled ? 0 : 1}`).join("|");
126271
- React15.useEffect(() => {
126530
+ React16.useEffect(() => {
126272
126531
  if (!open || !modal) return;
126273
126532
  const menu = menuRef.current;
126274
126533
  if (!menu || menu.contains(document.activeElement)) return;
126275
126534
  (menu.querySelector('[role="menuitem"][tabindex="0"]') ?? menu).focus();
126276
126535
  }, [open, modal, itemsKey]);
126277
- React15.useEffect(() => {
126536
+ React16.useEffect(() => {
126278
126537
  if (!open || !modal) return;
126279
126538
  const layer = pushModalLayer(() => dialogRef.current);
126280
126539
  return () => {
@@ -126296,11 +126555,11 @@ var init_renderNode = __esm({
126296
126555
  e2.preventDefault();
126297
126556
  items2[next].focus();
126298
126557
  };
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);
126558
+ const pressTimer = React16.useRef(null);
126559
+ const longPressed = React16.useRef(false);
126560
+ const touchOrigin = React16.useRef(null);
126561
+ const suppressNextClick = React16.useRef(false);
126562
+ const suppressTimer = React16.useRef(null);
126304
126563
  const clearSuppress = () => {
126305
126564
  suppressNextClick.current = false;
126306
126565
  if (suppressTimer.current != null) {
@@ -126314,7 +126573,7 @@ var init_renderNode = __esm({
126314
126573
  pressTimer.current = null;
126315
126574
  }
126316
126575
  };
126317
- React15.useEffect(() => () => {
126576
+ React16.useEffect(() => () => {
126318
126577
  cancelPress();
126319
126578
  clearSuppress();
126320
126579
  }, []);
@@ -126476,15 +126735,15 @@ var init_renderNode = __esm({
126476
126735
  MENU_LONG_PRESS_MS = 500;
126477
126736
  menuOpensOnLongPress = (style) => style === "context";
126478
126737
  LoadMoreSentinel = ({ ctx, pagination, style }) => {
126479
- const owned = React15.useContext(PageCycleContext);
126738
+ const owned = React16.useContext(PageCycleContext);
126480
126739
  const own6 = usePageCycle(ctx, owned ? void 0 : pagination?.cursor);
126481
126740
  const pages2 = owned ?? own6;
126482
126741
  const cycle = usePageCycleId(pages2);
126483
126742
  const cursor = pages2.cursor;
126484
126743
  const action = pagination.onLoadMore ?? pagination.on_load_more;
126485
126744
  const workerTap = useWorkerTap(action);
126486
- const ref = React15.useRef(null);
126487
- React15.useEffect(() => {
126745
+ const ref = React16.useRef(null);
126746
+ React16.useEffect(() => {
126488
126747
  const el2 = ref.current;
126489
126748
  if (!cursor || !ctx.onAction || !el2 || typeof IntersectionObserver === "undefined") return;
126490
126749
  let live3 = true;
@@ -126521,11 +126780,11 @@ var init_renderNode = __esm({
126521
126780
  ] });
126522
126781
  });
126523
126782
  FormView = withExtras("FormView", ({ props, ctx, wrap }) => {
126524
- const bagRef = React15.useRef(null);
126783
+ const bagRef = React16.useRef(null);
126525
126784
  if (!bagRef.current) bagRef.current = createFormBag();
126526
126785
  const bag = bagRef.current;
126527
- React15.useSyncExternalStore(
126528
- React15.useCallback((cb) => bag.subscribe(cb), [bag]),
126786
+ React16.useSyncExternalStore(
126787
+ React16.useCallback((cb) => bag.subscribe(cb), [bag]),
126529
126788
  () => bag.version,
126530
126789
  () => bag.version
126531
126790
  );
@@ -126542,7 +126801,7 @@ var init_renderNode = __esm({
126542
126801
  ctx.onAction?.({ ...action, args: merged });
126543
126802
  }
126544
126803
  };
126545
- const submitNode = React15.useMemo(() => {
126804
+ const submitNode = React16.useMemo(() => {
126546
126805
  const node = props.submitButton;
126547
126806
  if (!node || valid) return node;
126548
126807
  if (node.body) return { ...node, body: { ...node.body, props: { ...node.body.props ?? {}, disabled: true } } };
@@ -126592,11 +126851,11 @@ var init_renderNode = __esm({
126592
126851
  const startPositionPath = typeof props.startPositionSeconds === "string" && isBinding(props.startPositionSeconds) ? props.startPositionSeconds : "";
126593
126852
  const boundStartPosition = useResolvedScalar(startPositionPath || void 0, ctx);
126594
126853
  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);
126854
+ const [index, setIndex] = React16.useState(initialIndex);
126596
126855
  const queueReady = !itemsPath || Array.isArray(boundQueue);
126597
126856
  const seatKey = `${itemsPath ?? ""}|${startIndex}`;
126598
- const seated = React15.useRef(null);
126599
- React15.useEffect(() => {
126857
+ const seated = React16.useRef(null);
126858
+ React16.useEffect(() => {
126600
126859
  const last = Math.max(0, resolvedItems.length - 1);
126601
126860
  if (resolvedItems.length === 0) return;
126602
126861
  if (queueReady && seated.current !== seatKey) {
@@ -126611,19 +126870,19 @@ var init_renderNode = __esm({
126611
126870
  }
126612
126871
  setIndex((i2) => Math.min(Math.max(0, i2), last));
126613
126872
  }, [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);
126873
+ const [status, setStatus] = React16.useState("idle");
126874
+ const [position, setPosition] = React16.useState(initialStartPosition);
126875
+ const [duration2, setDuration] = React16.useState(0);
126876
+ const [buffered, setBuffered] = React16.useState(0);
126877
+ const [rate, setRateState] = React16.useState(1);
126878
+ const [fullscreen, setFullscreen] = React16.useState(false);
126879
+ const [error, setError] = React16.useState("");
126880
+ const mediaRef = React16.useRef(null);
126881
+ const hostRef = React16.useRef(null);
126882
+ const autoplayConsumed = React16.useRef(false);
126624
126883
  const item = resolvedItems[index];
126625
126884
  const mediaKey2 = `${index}:${item?.id ?? item?.url ?? ""}`;
126626
- React15.useEffect(() => {
126885
+ React16.useEffect(() => {
126627
126886
  const outgoing = mediaRef.current;
126628
126887
  return () => {
126629
126888
  try {
@@ -126637,7 +126896,7 @@ var init_renderNode = __esm({
126637
126896
  const isYouTube = provider === "youtube";
126638
126897
  const isUnsupportedProvider = provider !== "direct" && !isYouTube;
126639
126898
  const isAudio = ["audio", "podcast", "radio"].includes(String(item?.kind ?? ""));
126640
- const capabilities = React15.useMemo(() => ({
126899
+ const capabilities = React16.useMemo(() => ({
126641
126900
  seek: !isUnsupportedProvider && item?.live !== true,
126642
126901
  rate: !isUnsupportedProvider && item?.live !== true,
126643
126902
  queue: !isUnsupportedProvider && items.length > 1,
@@ -126665,9 +126924,9 @@ var init_renderNode = __esm({
126665
126924
  error,
126666
126925
  capabilities
126667
126926
  };
126668
- const slotProvider = React15.useMemo(() => new MediaSlotProvider(state), []);
126669
- React15.useEffect(() => slotProvider.set(state));
126670
- React15.useEffect(() => {
126927
+ const slotProvider = React16.useMemo(() => new MediaSlotProvider(state), []);
126928
+ React16.useEffect(() => slotProvider.set(state));
126929
+ React16.useEffect(() => {
126671
126930
  if (!startPositionPath || typeof boundStartPosition !== "number" || !Number.isFinite(boundStartPosition) || status !== "idle") return;
126672
126931
  const next = Math.max(0, boundStartPosition);
126673
126932
  setPosition(next);
@@ -126678,7 +126937,7 @@ var init_renderNode = __esm({
126678
126937
  }
126679
126938
  }
126680
126939
  }, [startPositionPath, boundStartPosition, status]);
126681
- const emit = React15.useCallback((action, extra = {}) => {
126940
+ const emit = React16.useCallback((action, extra = {}) => {
126682
126941
  if (!action || !ctx.onAction) return;
126683
126942
  const snapshot4 = {
126684
126943
  sessionId,
@@ -126697,13 +126956,13 @@ var init_renderNode = __esm({
126697
126956
  };
126698
126957
  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
126958
  }, [ctx.onAction, sessionId, status, index, position, duration2, item, buffered, rate, props.muted, fullscreen, error]);
126700
- React15.useEffect(() => {
126959
+ React16.useEffect(() => {
126701
126960
  if (!isUnsupportedProvider || status === "error") return;
126702
126961
  setStatus("error");
126703
126962
  setError("provider_unsupported");
126704
126963
  emit(props.onError, { state: "error", status: "error", error: "provider_unsupported", code: "provider_unsupported" });
126705
126964
  }, [isUnsupportedProvider, status, emit, props.onError]);
126706
- const play = React15.useCallback(async () => {
126965
+ const play = React16.useCallback(async () => {
126707
126966
  if (isYouTube) return;
126708
126967
  if (isUnsupportedProvider) {
126709
126968
  setStatus("error");
@@ -126725,17 +126984,17 @@ var init_renderNode = __esm({
126725
126984
  emit(props.onError, { state: "blocked", status: "blocked", error: message2, code: "playback_blocked" });
126726
126985
  }
126727
126986
  }, [isYouTube, isUnsupportedProvider, emit, props.onError]);
126728
- const pause = React15.useCallback(() => {
126987
+ const pause = React16.useCallback(() => {
126729
126988
  mediaRef.current?.pause();
126730
126989
  setStatus("paused");
126731
126990
  }, []);
126732
- const seek = React15.useCallback((seconds) => {
126991
+ const seek = React16.useCallback((seconds) => {
126733
126992
  const media = mediaRef.current;
126734
126993
  if (!media || !Number.isFinite(seconds)) return;
126735
126994
  media.currentTime = Math.max(0, Math.min(seconds, Number.isFinite(media.duration) ? media.duration : seconds));
126736
126995
  setPosition(media.currentTime);
126737
126996
  }, []);
126738
- const select2 = React15.useCallback((next) => {
126997
+ const select2 = React16.useCallback((next) => {
126739
126998
  if (resolvedItems.length === 0) return;
126740
126999
  const normalized = (next % resolvedItems.length + resolvedItems.length) % resolvedItems.length;
126741
127000
  const nextItem = resolvedItems[normalized];
@@ -126757,7 +127016,7 @@ var init_renderNode = __esm({
126757
127016
  error: ""
126758
127017
  });
126759
127018
  }, [resolvedItems, emit, props.onItemChange]);
126760
- const toggleFullscreen = React15.useCallback(async () => {
127019
+ const toggleFullscreen = React16.useCallback(async () => {
126761
127020
  if (props.fullscreen === "disabled") return;
126762
127021
  const host = hostRef.current;
126763
127022
  try {
@@ -126767,7 +127026,7 @@ var init_renderNode = __esm({
126767
127026
  setFullscreen((value2) => !value2);
126768
127027
  }
126769
127028
  }, [props.fullscreen]);
126770
- React15.useEffect(() => {
127029
+ React16.useEffect(() => {
126771
127030
  const listener = (event) => {
126772
127031
  const detail = event.detail;
126773
127032
  if (!detail || detail.sessionId !== sessionId) return;
@@ -126815,7 +127074,7 @@ var init_renderNode = __esm({
126815
127074
  window.addEventListener("himalaya-media-command", listener);
126816
127075
  return () => window.removeEventListener("himalaya-media-command", listener);
126817
127076
  }, [sessionId, index, play, pause, seek, select2, toggleFullscreen]);
126818
- React15.useEffect(() => {
127077
+ React16.useEffect(() => {
126819
127078
  const listener = () => {
126820
127079
  const value2 = document.fullscreenElement === hostRef.current;
126821
127080
  setFullscreen(value2);
@@ -126824,14 +127083,14 @@ var init_renderNode = __esm({
126824
127083
  document.addEventListener("fullscreenchange", listener);
126825
127084
  return () => document.removeEventListener("fullscreenchange", listener);
126826
127085
  }, [emit, props.onFullscreenChange]);
126827
- React15.useEffect(() => {
127086
+ React16.useEffect(() => {
126828
127087
  const media = mediaRef.current;
126829
127088
  if (!media || isYouTube || isUnsupportedProvider) return;
126830
127089
  media.muted = props.muted === true;
126831
127090
  media.playbackRate = rate;
126832
127091
  if (position > 0) media.currentTime = position;
126833
127092
  }, [item?.url, isUnsupportedProvider]);
126834
- React15.useEffect(() => {
127093
+ React16.useEffect(() => {
126835
127094
  if (isYouTube || isUnsupportedProvider || props.autoplay === "never" || autoplayConsumed.current) return;
126836
127095
  if (props.autoplay === "once") {
126837
127096
  autoplayConsumed.current = true;
@@ -127033,15 +127292,15 @@ var init_renderNode = __esm({
127033
127292
  }
127034
127293
  );
127035
127294
  });
127036
- PdfDocumentCanvas = React15.lazy(() => Promise.resolve().then(() => (init_pdfDocument(), pdfDocument_exports)).then((module) => ({ default: module.PdfDocument })));
127295
+ PdfDocumentCanvas = React16.lazy(() => Promise.resolve().then(() => (init_pdfDocument(), pdfDocument_exports)).then((module) => ({ default: module.PdfDocument })));
127037
127296
  PdfViewNode = withExtras("PdfViewNode", ({ props, ctx, wrap }) => {
127038
127297
  const boundUrl = useResolvedScalar(props.url != null && isBinding(props.url) ? props.url : void 0, ctx);
127039
127298
  const url = props.url != null && isBinding(props.url) ? boundUrl : props.url;
127040
127299
  const rawUrl = typeof url === "string" && !isBinding(url) ? url : "";
127041
127300
  const plan = rawUrl ? pdfEmbedPlan(rawUrl, void 0, typeof document !== "undefined" ? document.baseURI : void 0) : null;
127042
127301
  const retypeSrc = plan?.mode === "retype" ? plan.src : null;
127043
- const [retyped, setRetyped] = React15.useState(null);
127044
- React15.useEffect(() => {
127302
+ const [retyped, setRetyped] = React16.useState(null);
127303
+ React16.useEffect(() => {
127045
127304
  if (!retypeSrc) return;
127046
127305
  let live3 = true;
127047
127306
  let made = null;
@@ -127063,11 +127322,11 @@ var init_renderNode = __esm({
127063
127322
  }, [retypeSrc]);
127064
127323
  const settled = retyped && retyped.from === retypeSrc ? retyped : null;
127065
127324
  const wantsShare = props.allowShare === true;
127066
- const [fellBackFrom, setFellBackFrom] = React15.useState(null);
127325
+ const [fellBackFrom, setFellBackFrom] = React16.useState(null);
127067
127326
  const directFellBack = plan?.mode === "direct" && fellBackFrom === plan.src;
127068
127327
  const directSrc = plan?.mode === "direct" && (wantsShare || props.showPageControls !== false && directFellBack) ? plan.src : null;
127069
- const [direct, setDirect] = React15.useState(null);
127070
- React15.useEffect(() => {
127328
+ const [direct, setDirect] = React16.useState(null);
127329
+ React16.useEffect(() => {
127071
127330
  if (!directSrc) return;
127072
127331
  let live3 = true;
127073
127332
  let made = null;
@@ -127084,16 +127343,16 @@ var init_renderNode = __esm({
127084
127343
  }, [directSrc, wantsShare]);
127085
127344
  const directDoc = direct && direct.from === directSrc ? direct : null;
127086
127345
  const fallbackPageCount = plan?.mode === "retype" ? settled?.pageCount ?? null : directDoc?.count ?? null;
127087
- const [nav, setNav] = React15.useState({ from: rawUrl, page: null, zoom: null });
127346
+ const [nav, setNav] = React16.useState({ from: rawUrl, page: null, zoom: null });
127088
127347
  const view = nav.from === rawUrl ? nav : { from: rawUrl, page: null, zoom: null };
127089
127348
  const src = plan?.mode === "direct" ? plan.src : settled?.url ?? null;
127090
- const [canvasCount, setCanvasCount] = React15.useState(null);
127091
- const onPageCount = React15.useCallback((count2) => {
127349
+ const [canvasCount, setCanvasCount] = React16.useState(null);
127350
+ const onPageCount = React16.useCallback((count2) => {
127092
127351
  if (!Number.isInteger(count2) || count2 < 1) return;
127093
127352
  setCanvasCount((cur) => cur?.from === src && cur.count === count2 ? cur : { from: src, count: count2 });
127094
127353
  }, [src]);
127095
127354
  const pageCount = canvasCount?.from === src ? canvasCount.count : fallbackPageCount;
127096
- const onFallback = React15.useCallback(() => setFellBackFrom(src), [src]);
127355
+ const onFallback = React16.useCallback(() => setFellBackFrom(src), [src]);
127097
127356
  const loading = plan?.mode === "retype" && !settled || directSrc != null && wantsShare && !directDoc && typeof window !== "undefined";
127098
127357
  const loadSrc = plan?.mode === "direct" && wantsShare ? directDoc?.blobUrl ?? src : src;
127099
127358
  const ph = typeof props.height === "number" && props.height > 0 ? props.height : void 0;
@@ -127143,7 +127402,7 @@ var init_renderNode = __esm({
127143
127402
  const data = base + pdfOpenFragment(sourceHash, { page, zoom: zoomable ? view.zoom : null, fitWidth: !zoomable });
127144
127403
  const label3 = typeof props.title === "string" && props.title ? props.title : "PDF document";
127145
127404
  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(
127405
+ const object13 = 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
127406
  PdfDocumentCanvas,
127148
127407
  {
127149
127408
  src: loadSrc ?? src,
@@ -127157,7 +127416,7 @@ var init_renderNode = __esm({
127157
127416
  style: documentStyle
127158
127417
  }
127159
127418
  ) });
127160
- if (!showPageControls && !zoomable && !allowShare) return object12;
127419
+ if (!showPageControls && !zoomable && !allowShare) return object13;
127161
127420
  const C2 = ctx.color;
127162
127421
  const go2 = (p2) => setNav({ from: rawUrl, page: Math.max(1, pageCount != null ? Math.min(p2, pageCount) : p2), zoom: view.zoom });
127163
127422
  const zoomBy = (d2) => setNav({ from: rawUrl, page: view.page, zoom: pdfZoomStep(view.zoom ?? sourceZoomPercent(sourceHash) ?? null, d2) });
@@ -127175,7 +127434,7 @@ var init_renderNode = __esm({
127175
127434
  const downloadHref = plan?.mode === "retype" ? base : directDoc?.blobUrl ?? null;
127176
127435
  const openHref = base + pdfOpenFragment(sourceHash, { page: shownPage, zoom: zoomable ? view.zoom : null, viewerChrome: true });
127177
127436
  return /* @__PURE__ */ jsxs9("div", { "data-himalaya-pdf": "reader", style: { ...frame, display: "flex", flexDirection: "column", background: C2("surfaceTertiary", "#f4f4f4") }, children: [
127178
- object12,
127437
+ object13,
127179
127438
  /* @__PURE__ */ jsxs9(
127180
127439
  "div",
127181
127440
  {
@@ -127225,7 +127484,7 @@ var init_renderNode = __esm({
127225
127484
  const ar2 = typeof props.aspectRatio === "number" && props.aspectRatio > 0 ? props.aspectRatio : void 0;
127226
127485
  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
127486
  const reloadValue = reloadKeyOf(useResolvedScalar(props.reloadKeyPath != null && isBinding(props.reloadKeyPath) ? props.reloadKeyPath : void 0, ctx));
127228
- const reloadState = React15.useRef({ base: null, epoch: 0 });
127487
+ const reloadState = React16.useRef({ base: null, epoch: 0 });
127229
127488
  if (reloadValue !== null && reloadValue !== reloadState.current.base) {
127230
127489
  if (reloadState.current.base !== null) reloadState.current.epoch++;
127231
127490
  reloadState.current.base = reloadValue;
@@ -127233,11 +127492,11 @@ var init_renderNode = __esm({
127233
127492
  const reloadKey = reloadState.current.epoch > 0 ? String(reloadState.current.epoch) : "";
127234
127493
  const sourceKey = htmlStr ?? urlFrame?.src ?? null;
127235
127494
  const frameKey = sourceKey == null ? null : reloadKey ? `${sourceKey}\0${reloadKey}` : sourceKey;
127236
- const [loadedKey, setLoadedKey] = React15.useState(null);
127495
+ const [loadedKey, setLoadedKey] = React16.useState(null);
127237
127496
  const loaded2 = loadedKey === frameKey;
127238
127497
  const bridgeChannel = props.bridge === "worker" ? webViewChannelOf(ctx.provider) : null;
127239
- const frameRef = React15.useRef(null);
127240
- const bridgeLoad = React15.useRef({ loaded: false });
127498
+ const frameRef = React16.useRef(null);
127499
+ const bridgeLoad = React16.useRef({ loaded: false });
127241
127500
  if (bridgeLoad.current.key !== frameKey) {
127242
127501
  bridgeLoad.current.key = frameKey;
127243
127502
  bridgeLoad.current.loaded = false;
@@ -127261,7 +127520,7 @@ var init_renderNode = __esm({
127261
127520
  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
127521
  bandColor ? /* @__PURE__ */ jsx11("div", { "data-testid": "webview-cover-band", style: { height: 8, background: bandColor } }) : null,
127263
127522
  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(
127523
+ bridgeChannel ? /* @__PURE__ */ jsx11(React16.Suspense, { fallback: null, children: /* @__PURE__ */ jsx11(
127265
127524
  WebViewBridgeHost2,
127266
127525
  {
127267
127526
  channel: bridgeChannel,
@@ -127291,19 +127550,19 @@ var init_renderNode = __esm({
127291
127550
  const onChange = props.onChange;
127292
127551
  const boundSel = useResolvedScalar(isBinding(props.selectedId) ? props.selectedId : void 0, ctx);
127293
127552
  const selectedId = isBinding(props.selectedId) ? boundSel : props.selectedId;
127294
- const [sel, setSel] = React15.useState(ctx.empty ? "" : String(selectedId ?? ""));
127295
- React15.useEffect(() => {
127553
+ const [sel, setSel] = React16.useState(ctx.empty ? "" : String(selectedId ?? ""));
127554
+ React16.useEffect(() => {
127296
127555
  if (!ctx.empty && selectedId != null) setSel(String(selectedId));
127297
127556
  }, [selectedId, ctx.empty]);
127298
- const pickerBag = React15.useContext(FormValuesContext);
127557
+ const pickerBag = React16.useContext(FormValuesContext);
127299
127558
  const pickerFieldId = props.__formFieldId;
127300
127559
  const pickerRuleKey = props.validation ? JSON.stringify(props.validation) : "";
127301
- React15.useEffect(() => {
127560
+ React16.useEffect(() => {
127302
127561
  if (!pickerBag || !pickerFieldId) return;
127303
127562
  pickerBag.register(pickerFieldId, props.validation);
127304
127563
  return () => pickerBag.unregister(pickerFieldId);
127305
127564
  }, [pickerFieldId, pickerBag, pickerRuleKey]);
127306
- React15.useEffect(() => {
127565
+ React16.useEffect(() => {
127307
127566
  if (pickerBag && pickerFieldId) pickerBag.set(pickerFieldId, sel);
127308
127567
  }, [sel, pickerFieldId, pickerBag]);
127309
127568
  const emitPick = (id) => {
@@ -127419,24 +127678,24 @@ var init_renderNode = __esm({
127419
127678
  const s2 = seedUnix();
127420
127679
  return s2 == null ? null : clampUnix(s2);
127421
127680
  };
127422
- const [val, setVal] = React15.useState(ctx.empty ? "" : toInput(shownSeed()));
127681
+ const [val, setVal] = React16.useState(ctx.empty ? "" : toInput(shownSeed()));
127423
127682
  const dateServiceBound = typeof props.valuePath === "string" && props.valuePath.startsWith("$service:");
127424
127683
  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(() => {
127684
+ const [dateBagVal, setDateBagVal] = React16.useState(ctx.empty ? "" : clampDateFieldValue(encodeDateFieldValue(bagSource()), props.minUnix, props.maxUnix, props.mode));
127685
+ React16.useEffect(() => {
127427
127686
  if (ctx.empty) return;
127428
127687
  setVal(toInput(shownSeed()));
127429
127688
  setDateBagVal(clampDateFieldValue(encodeDateFieldValue(bagSource()), props.minUnix, props.maxUnix, props.mode));
127430
127689
  }, [boundRaw, props.valueUnix, props.valuePath, ctx.empty]);
127431
- const dateBag = React15.useContext(FormValuesContext);
127690
+ const dateBag = React16.useContext(FormValuesContext);
127432
127691
  const dateFieldId = props.__formFieldId;
127433
127692
  const dateRuleKey = props.validation ? JSON.stringify(props.validation) : "";
127434
- React15.useEffect(() => {
127693
+ React16.useEffect(() => {
127435
127694
  if (!dateBag || !dateFieldId) return;
127436
127695
  dateBag.register(dateFieldId, props.validation);
127437
127696
  return () => dateBag.unregister(dateFieldId);
127438
127697
  }, [dateFieldId, dateBag, dateRuleKey]);
127439
- React15.useEffect(() => {
127698
+ React16.useEffect(() => {
127440
127699
  if (dateBag && dateFieldId) dateBag.set(dateFieldId, dateBagVal);
127441
127700
  }, [dateBagVal, dateFieldId, dateBag]);
127442
127701
  if (!ctx.onAction) {
@@ -127505,11 +127764,11 @@ var init_renderNode = __esm({
127505
127764
  const valueBinding = isBinding(props.value) ? props.value : void 0;
127506
127765
  const boundValue = useResolvedScalar(valueBinding, ctx);
127507
127766
  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);
127767
+ const [local, setLocal] = React16.useState(initialValue2);
127768
+ const changes = React16.useRef(null);
127510
127769
  if (!changes.current) changes.current = new ChangeDebouncer();
127511
- React15.useEffect(() => () => changes.current?.drop(), []);
127512
- React15.useEffect(() => {
127770
+ React16.useEffect(() => () => changes.current?.drop(), []);
127771
+ React16.useEffect(() => {
127513
127772
  if (ctx.empty || !valueBinding) return;
127514
127773
  const next = boundValue == null ? "" : String(boundValue);
127515
127774
  if (next === "") changes.current?.drop();
@@ -127524,12 +127783,12 @@ var init_renderNode = __esm({
127524
127783
  if (!onChange) return;
127525
127784
  changes.current?.change(v2, debounceMs, (value2) => dispatch(onChange, value2));
127526
127785
  };
127527
- const inputRef = React15.useRef(null);
127786
+ const inputRef = React16.useRef(null);
127528
127787
  const focusBinding = typeof props.focusPath === "string" && props.focusPath.startsWith("$service:") && props.focusPath.length > "$service:".length ? props.focusPath : "";
127529
127788
  const focusTokenVal = useBoundValue(ctx, focusBinding);
127530
- const lastFocusToken = React15.useRef(void 0);
127531
- const lastFocusBinding = React15.useRef(focusBinding);
127532
- React15.useEffect(() => {
127789
+ const lastFocusToken = React16.useRef(void 0);
127790
+ const lastFocusBinding = React16.useRef(focusBinding);
127791
+ React16.useEffect(() => {
127533
127792
  if (lastFocusBinding.current !== focusBinding) {
127534
127793
  lastFocusBinding.current = focusBinding;
127535
127794
  lastFocusToken.current = void 0;
@@ -127582,12 +127841,12 @@ var init_renderNode = __esm({
127582
127841
  const boundValue = useResolvedScalar(props.valuePath, ctx);
127583
127842
  const effectiveValue = props.valuePath != null ? boundValue : props.value;
127584
127843
  const fallbackValue = effectiveValue ?? props.value ?? 0;
127585
- const [value2, setValue] = React15.useState(() => {
127844
+ const [value2, setValue] = React16.useState(() => {
127586
127845
  const seed2 = Number(fallbackValue);
127587
127846
  return Number.isFinite(seed2) ? Math.min(max, Math.max(min, seed2)) : 0;
127588
127847
  });
127589
- const previousFallbackValue = React15.useRef(fallbackValue);
127590
- React15.useEffect(() => {
127848
+ const previousFallbackValue = React16.useRef(fallbackValue);
127849
+ React16.useEffect(() => {
127591
127850
  const fallbackChanged = !Object.is(previousFallbackValue.current, fallbackValue);
127592
127851
  previousFallbackValue.current = fallbackValue;
127593
127852
  const next = Number(fallbackValue);
@@ -127596,25 +127855,25 @@ var init_renderNode = __esm({
127596
127855
  return Math.min(max, Math.max(min, candidate));
127597
127856
  });
127598
127857
  }, [fallbackValue, min, max]);
127599
- const stepperBag = React15.useContext(FormValuesContext);
127858
+ const stepperBag = React16.useContext(FormValuesContext);
127600
127859
  const stepperFieldId = props.__formFieldId;
127601
127860
  const stepperRuleKey = props.validation ? JSON.stringify(props.validation) : "";
127602
- React15.useEffect(() => {
127861
+ React16.useEffect(() => {
127603
127862
  if (!stepperBag || !stepperFieldId) return;
127604
127863
  stepperBag.register(stepperFieldId, props.validation);
127605
127864
  return () => stepperBag.unregister(stepperFieldId);
127606
127865
  }, [stepperFieldId, stepperBag, stepperRuleKey]);
127607
127866
  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(() => {
127867
+ const [bagValue, setBagValue] = React16.useState(() => serviceBound ? boundValue != null ? encodeStepperFieldValue(boundValue, { min, max }) : "" : encodeStepperFieldValue(value2, { min, max }));
127868
+ React16.useEffect(() => {
127610
127869
  if (!serviceBound || boundValue == null) return;
127611
127870
  setBagValue(encodeStepperFieldValue(boundValue, { min, max }));
127612
127871
  }, [boundValue, serviceBound, min, max]);
127613
- React15.useEffect(() => {
127872
+ React16.useEffect(() => {
127614
127873
  if (serviceBound) return;
127615
127874
  setBagValue(encodeStepperFieldValue(value2, { min, max }));
127616
127875
  }, [value2, serviceBound, min, max]);
127617
- React15.useEffect(() => {
127876
+ React16.useEffect(() => {
127618
127877
  if (stepperBag && stepperFieldId) stepperBag.set(stepperFieldId, bagValue);
127619
127878
  }, [bagValue, stepperFieldId, stepperBag]);
127620
127879
  const dispatch = (next) => {
@@ -127629,7 +127888,7 @@ var init_renderNode = __esm({
127629
127888
  dispatch(next);
127630
127889
  return next;
127631
127890
  };
127632
- const [pressed, setPressed] = React15.useState({ text: "", count: 0 });
127891
+ const [pressed, setPressed] = React16.useState({ text: "", count: 0 });
127633
127892
  const bump = (delta) => commit(value2 + delta);
127634
127893
  const press = (delta) => {
127635
127894
  const next = bump(delta);
@@ -127773,9 +128032,9 @@ var init_renderNode = __esm({
127773
128032
  const items = Array.isArray(props.items) ? props.items : [];
127774
128033
  const gridStagger = ctx.reduceMotion() ? 0 : Number(props.staggerMs ?? props.stagger_ms ?? 0);
127775
128034
  const stagger = (el2, i2) => {
127776
- if (!(gridStagger > 0) || !React15.isValidElement(el2)) return el2;
128035
+ if (!(gridStagger > 0) || !React16.isValidElement(el2)) return el2;
127777
128036
  const prev = el2.props.style ?? {};
127778
- return React15.cloneElement(el2, { style: { ...prev, animationDelay: `${i2 * gridStagger}ms` } });
128037
+ return React16.cloneElement(el2, { style: { ...prev, animationDelay: `${i2 * gridStagger}ms` } });
127779
128038
  };
127780
128039
  const pagination = props.pagination;
127781
128040
  const sentinel = pagination ? /* @__PURE__ */ jsx11(LoadMoreSentinel, { ctx, pagination, style: GRID_SPAN_ALL }) : null;
@@ -127857,13 +128116,13 @@ var init_renderNode = __esm({
127857
128116
  revealProgress = /* @__PURE__ */ new Map();
127858
128117
  countWords = (s2) => s2.split(/\s+/).filter((t2) => t2 !== "").length;
127859
128118
  RevealText = ({ text: text13, reduce, markdownHtml }) => {
127860
- const tokens2 = React15.useMemo(() => text13.split(/(\s+)/).filter((t2) => t2 !== ""), [text13]);
127861
- const total = React15.useMemo(
128119
+ const tokens2 = React16.useMemo(() => text13.split(/(\s+)/).filter((t2) => t2 !== ""), [text13]);
128120
+ const total = React16.useMemo(
127862
128121
  () => markdownHtml != null ? revealHtml(markdownHtml, 0, void 0).total : countWords(text13),
127863
128122
  [text13, markdownHtml]
127864
128123
  );
127865
- const [shown2, setShown] = React15.useState(total);
127866
- const prevRef = React15.useRef(null);
128124
+ const [shown2, setShown] = React16.useState(total);
128125
+ const prevRef = React16.useRef(null);
127867
128126
  useIsomorphicLayoutEffect(() => {
127868
128127
  const prev = prevRef.current;
127869
128128
  prevRef.current = text13;
@@ -127986,8 +128245,8 @@ var init_renderNode = __esm({
127986
128245
  const boundInitials = useResolvedScalar(props.initials != null && isBinding(props.initials) ? props.initials : void 0, ctx);
127987
128246
  const boundAlt = useResolvedScalar(contentDescription, ctx);
127988
128247
  const fadeIn = motionDefaultsAnimate(ctx);
127989
- const [shownSrc, setShownSrc] = React15.useState(null);
127990
- const imgRef = React15.useRef(null);
128248
+ const [shownSrc, setShownSrc] = React16.useState(null);
128249
+ const imgRef = React16.useRef(null);
127991
128250
  const hasSource = props.url != null || props.initials != null || props.asset != null || props.icon != null;
127992
128251
  const banner = fillWidth === true || props.width == null && props.height == null && !props.initials;
127993
128252
  const w2 = banner ? "100%" : props.width ?? 40;
@@ -128001,7 +128260,7 @@ var init_renderNode = __esm({
128001
128260
  const ph = props.placeholder ? C2(props.placeholder, "#e6e6e6") : void 0;
128002
128261
  const imgUrl = props.url != null && isBinding(props.url) ? boundUrl : props.url;
128003
128262
  const imgInitials = props.initials != null && isBinding(props.initials) ? boundInitials : props.initials;
128004
- const [failedSrc, setFailedSrc] = React15.useState(null);
128263
+ const [failedSrc, setFailedSrc] = React16.useState(null);
128005
128264
  const resolvedSrc = useImageSource(
128006
128265
  imgUrl && typeof imgUrl === "string" ? resolveAssetUrl(imgUrl, ctx.assetBaseUrl, ctx.assetPin) : null,
128007
128266
  { width: w2, height: boxHeight, mode: renditionMode(contentMode), ratio: effectiveAr || void 0 }
@@ -128039,7 +128298,7 @@ var init_renderNode = __esm({
128039
128298
  if (imgInitials && typeof imgInitials === "string") {
128040
128299
  const alt = asFinalTextL10n(boundAlt, ctx).trim();
128041
128300
  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 });
128301
+ return React16.cloneElement(circle, alt ? { role: "img", "aria-label": alt, [SELF_RENDERED_LEAF]: true } : { [ROLE_WHEN_NAMED]: "img", [SELF_RENDERED_LEAF]: true });
128043
128302
  }
128044
128303
  if (props.icon != null && props.url == null && props.asset == null && imgInitials == null) {
128045
128304
  const side2 = typeof w2 === "number" ? w2 : 40;
@@ -128054,13 +128313,13 @@ var init_renderNode = __esm({
128054
128313
  const reduce = ctx.reduceMotion();
128055
128314
  const servicePlayPath = typeof props.playPath === "string" && props.playPath.startsWith("$service:") ? props.playPath : void 0;
128056
128315
  const nonce = lottieNonce(useResolvedScalar(servicePlayPath, ctx));
128057
- const [replay, setReplay] = React15.useState({ plays: 0 });
128058
- const [gen, setGen] = React15.useState(0);
128059
- React15.useEffect(() => {
128316
+ const [replay, setReplay] = React16.useState({ plays: 0 });
128317
+ const [gen, setGen] = React16.useState(0);
128318
+ React16.useEffect(() => {
128060
128319
  setReplay((s2) => ({ plays: s2.plays }));
128061
128320
  setGen((g2) => g2 + 1);
128062
128321
  }, [servicePlayPath, ctx.provider, props.source]);
128063
- React15.useEffect(() => {
128322
+ React16.useEffect(() => {
128064
128323
  setReplay((s2) => lottieReplayStep(s2, nonce, reduce));
128065
128324
  }, [nonce, servicePlayPath, ctx.provider, props.source]);
128066
128325
  return /* @__PURE__ */ jsx11(
@@ -128102,12 +128361,14 @@ var init_renderNode = __esm({
128102
128361
  const initials = isBinding(props.initials) ? boundInitials : props.initials;
128103
128362
  const size = props.size ?? 48;
128104
128363
  const a11y = { [ROLE_WHEN_NAMED]: "img", [SELF_RENDERED_LEAF]: true };
128364
+ const [failedUrl, setFailedUrl] = React16.useState(null);
128365
+ const source = typeof imageUrl === "string" && imageUrl && failedUrl !== imageUrl ? imageUrl : null;
128105
128366
  const photo = useImageSource(
128106
- typeof imageUrl === "string" && imageUrl ? resolveAssetUrl(imageUrl, ctx.assetBaseUrl, ctx.assetPin) : null,
128367
+ source ? resolveAssetUrl(source, ctx.assetBaseUrl, ctx.assetPin) : null,
128107
128368
  { width: size, height: size, mode: "fill" }
128108
128369
  ).url;
128109
- if (photo) {
128110
- return /* @__PURE__ */ jsx11("img", { ...a11y, ...responsiveImage(photo, size, size, "fill"), alt: "", style: { width: size, height: size, borderRadius: "50%", objectFit: "cover", flex: "none", ...wrap } });
128370
+ if (photo && source) {
128371
+ return /* @__PURE__ */ jsx11("img", { ...a11y, ...responsiveImage(photo, size, size, "fill"), alt: "", "data-himi-avatar-photo": "", onError: () => setFailedUrl(source), style: { width: size, height: size, borderRadius: "50%", objectFit: "cover", flex: "none", background: C2("accentPrimary", "#116DFF"), ...wrap } });
128111
128372
  }
128112
128373
  return /* @__PURE__ */ jsx11("div", { ...a11y, style: { width: size, height: size, borderRadius: "50%", background: C2("accentPrimary", "#116DFF"), color: C2("textOnAccent", "#fff"), display: "grid", placeItems: "center", fontWeight: 600, fontSize: size * 0.4, fontFamily: bodyFont(ctx), flex: "none", ...wrap }, children: avatarInitials(asText2(initials) || "?") });
128113
128374
  });
@@ -128122,7 +128383,7 @@ var init_renderNode = __esm({
128122
128383
  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
128384
  const glyph = iconSvg(iconName, { size, color: C2(resolveScalarStatic(props.tint, ctx) ?? "textPrimary", "#636b78") });
128124
128385
  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;
128386
+ const animatedGlyph = Object.keys(effectStyle).length || swap.key > 0 ? React16.cloneElement(glyph, { style: { ...glyph.props.style, ...swap.style, ...effectStyle }, key: swap.key }) : glyph;
128126
128387
  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
128388
  });
128128
128389
  EMPTY_STATE_SPACING = {
@@ -128364,12 +128625,12 @@ var init_renderNode = __esm({
128364
128625
  const C2 = ctx.color;
128365
128626
  const bound2 = useResolvedScalar(props.valuePath, ctx);
128366
128627
  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(() => {
128628
+ const [typed, setTyped] = React16.useState(void 0);
128629
+ React16.useEffect(() => {
128369
128630
  setTyped(void 0);
128370
128631
  }, [boundText, props.value, props.valuePath, typeof props.valuePath === "string" && props.valuePath.startsWith("$service:") ? ctx.provider : null]);
128371
128632
  const otpPath = typeof props.valuePath === "string" && props.valuePath.startsWith("$service:") ? servicePath(props.valuePath) : "";
128372
- React15.useEffect(() => {
128633
+ React16.useEffect(() => {
128373
128634
  if (!ctx.provider || !otpPath) return;
128374
128635
  let subscribing = true;
128375
128636
  let active = true;
@@ -128460,10 +128721,10 @@ var init_renderNode = __esm({
128460
128721
  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
128722
  });
128462
128723
  SnackbarNode = withExtras("SnackbarNode", ({ props, ctx, wrap }) => {
128463
- const [phase, setPhase] = React15.useState("shown");
128724
+ const [phase, setPhase] = React16.useState("shown");
128464
128725
  const hideAfter = ctx.empty ? void 0 : snackbarAutoHideMs(props.durationMs);
128465
128726
  const identity = snackbarIdentity(props);
128466
- React15.useEffect(() => {
128727
+ React16.useEffect(() => {
128467
128728
  setPhase("shown");
128468
128729
  if (hideAfter === void 0) return;
128469
128730
  let fade;
@@ -128519,8 +128780,8 @@ var init_renderNode = __esm({
128519
128780
  const gated2 = props.presentedPath != null || props.presented != null;
128520
128781
  const presented = props.presentedPath != null ? bound2 : props.presented;
128521
128782
  const gateOpen = !gated2 || presented === true || presented === "true";
128522
- const [dismissed, setDismissed] = React15.useState(false);
128523
- React15.useEffect(() => {
128783
+ const [dismissed, setDismissed] = React16.useState(false);
128784
+ React16.useEffect(() => {
128524
128785
  if (!gateOpen) setDismissed(false);
128525
128786
  }, [gateOpen]);
128526
128787
  const shown2 = gateOpen && !dismissed;
@@ -128528,26 +128789,26 @@ var init_renderNode = __esm({
128528
128789
  const dismissible = props.dismissible !== false;
128529
128790
  const edge = sheetEdge(props.edge);
128530
128791
  const detents = edge === "bottom" ? sheetDetents(props.detents) : [];
128531
- const [detentIndex, setDetentIndex] = React15.useState(0);
128532
- React15.useEffect(() => {
128792
+ const [detentIndex, setDetentIndex] = React16.useState(0);
128793
+ React16.useEffect(() => {
128533
128794
  if (!shown2) setDetentIndex(0);
128534
128795
  }, [shown2]);
128535
- const dialogRef = React15.useRef(null);
128796
+ const dialogRef = React16.useRef(null);
128536
128797
  const trapTab = useModalOverlay(dialogRef, shown2 && modal);
128537
- const latest = React15.useRef({ ctx, onDismiss: props.onDismiss });
128798
+ const latest = React16.useRef({ ctx, onDismiss: props.onDismiss });
128538
128799
  latest.current = { ctx, onDismiss: props.onDismiss };
128539
- const closed = React15.useRef(false);
128540
- React15.useEffect(() => {
128800
+ const closed = React16.useRef(false);
128801
+ React16.useEffect(() => {
128541
128802
  if (shown2) closed.current = false;
128542
128803
  }, [shown2]);
128543
- const dismiss = React15.useCallback(() => {
128804
+ const dismiss = React16.useCallback(() => {
128544
128805
  if (closed.current) return;
128545
128806
  closed.current = true;
128546
128807
  setDismissed(true);
128547
128808
  const { ctx: now, onDismiss } = latest.current;
128548
128809
  if (onDismiss != null) now.onAction?.(resolveItemDeep2(onDismiss, now));
128549
128810
  }, []);
128550
- React15.useEffect(() => {
128811
+ React16.useEffect(() => {
128551
128812
  if (!shown2 || !dismissible) return;
128552
128813
  const doc = dialogRef.current?.ownerDocument;
128553
128814
  if (!doc) return;
@@ -128561,11 +128822,11 @@ var init_renderNode = __esm({
128561
128822
  doc.addEventListener("keydown", onKey, true);
128562
128823
  return () => doc.removeEventListener("keydown", onKey, true);
128563
128824
  }, [shown2, dismissible, dismiss]);
128564
- const drag = React15.useRef(null);
128825
+ const drag = React16.useRef(null);
128565
128826
  const reduceMotion = ctx.reduceMotion();
128566
- const [mounted, setMounted] = React15.useState(shown2);
128567
- const [entered, setEntered] = React15.useState(shown2 && ctx.staticRender === true);
128568
- React15.useEffect(() => {
128827
+ const [mounted, setMounted] = React16.useState(shown2);
128828
+ const [entered, setEntered] = React16.useState(shown2 && ctx.staticRender === true);
128829
+ React16.useEffect(() => {
128569
128830
  if (shown2) {
128570
128831
  setMounted(true);
128571
128832
  if (reduceMotion || typeof requestAnimationFrame !== "function") {
@@ -128589,8 +128850,8 @@ var init_renderNode = __esm({
128589
128850
  const t2 = setTimeout(() => setMounted(false), DRAWER_EXIT_MS);
128590
128851
  return () => clearTimeout(t2);
128591
128852
  }, [shown2, reduceMotion]);
128592
- const scrimRef = React15.useRef(null);
128593
- const [rtl, setRtl] = React15.useState(false);
128853
+ const scrimRef = React16.useRef(null);
128854
+ const [rtl, setRtl] = React16.useState(false);
128594
128855
  useIsomorphicLayoutEffect(() => {
128595
128856
  const el2 = scrimRef.current;
128596
128857
  if (el2 && el2.ownerDocument.defaultView) setRtl(el2.ownerDocument.defaultView.getComputedStyle(el2).direction === "rtl");
@@ -128698,8 +128959,8 @@ var init_renderNode = __esm({
128698
128959
  const gated2 = props.presentedPath != null || props.presented != null;
128699
128960
  const presented = props.presentedPath != null ? bound2 : props.presented;
128700
128961
  const gateOpen = !gated2 || presented === true || presented === "true";
128701
- const [dismissed, setDismissed] = React15.useState(false);
128702
- React15.useEffect(() => {
128962
+ const [dismissed, setDismissed] = React16.useState(false);
128963
+ React16.useEffect(() => {
128703
128964
  if (!gateOpen) setDismissed(false);
128704
128965
  }, [gateOpen]);
128705
128966
  const shown2 = gateOpen && !dismissed;
@@ -128707,18 +128968,18 @@ var init_renderNode = __esm({
128707
128968
  const autoMs = drawerAutoDismissMs(props.autoDismissMs);
128708
128969
  const placement = sheetPlacement(props.placement);
128709
128970
  const detents = sheetDetents(props.detents);
128710
- const [detentIndex, setDetentIndex] = React15.useState(0);
128711
- const [expanded, setExpanded] = React15.useState(false);
128712
- React15.useEffect(() => {
128971
+ const [detentIndex, setDetentIndex] = React16.useState(0);
128972
+ const [expanded, setExpanded] = React16.useState(false);
128973
+ React16.useEffect(() => {
128713
128974
  if (!shown2) {
128714
128975
  setDetentIndex(0);
128715
128976
  setExpanded(false);
128716
128977
  }
128717
128978
  }, [shown2]);
128718
128979
  const reduceMotion = ctx.reduceMotion();
128719
- const [mounted, setMounted] = React15.useState(shown2);
128720
- const [entered, setEntered] = React15.useState(shown2 && ctx.staticRender === true);
128721
- React15.useEffect(() => {
128980
+ const [mounted, setMounted] = React16.useState(shown2);
128981
+ const [entered, setEntered] = React16.useState(shown2 && ctx.staticRender === true);
128982
+ React16.useEffect(() => {
128722
128983
  if (shown2) {
128723
128984
  setMounted(true);
128724
128985
  if (reduceMotion || typeof requestAnimationFrame !== "function") {
@@ -128742,10 +129003,10 @@ var init_renderNode = __esm({
128742
129003
  const t2 = setTimeout(() => setMounted(false), DRAWER_EXIT_MS);
128743
129004
  return () => clearTimeout(t2);
128744
129005
  }, [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);
129006
+ const anchorRef = React16.useRef(null);
129007
+ const panelRef = React16.useRef(null);
129008
+ const [host, setHost] = React16.useState(null);
129009
+ const [hostTop, setHostTop] = React16.useState(true);
128749
129010
  useIsomorphicLayoutEffect(() => {
128750
129011
  if (!host) {
128751
129012
  setHostTop(true);
@@ -128773,7 +129034,7 @@ var init_renderNode = __esm({
128773
129034
  setHost(overlay ?? own6(DRAWER_HOST_ATTR));
128774
129035
  }, [mounted, placement]);
128775
129036
  const overHost = host?.hasAttribute(SHEET_OVERLAY_HOST_ATTR) ?? false;
128776
- const [regionPx, setRegionPx] = React15.useState(0);
129037
+ const [regionPx, setRegionPx] = React16.useState(0);
128777
129038
  useIsomorphicLayoutEffect(() => {
128778
129039
  if (!detents.length || !mounted) return;
128779
129040
  const region = host ? overHost ? host.parentElement : host.previousElementSibling : null;
@@ -128800,38 +129061,38 @@ var init_renderNode = __esm({
128800
129061
  resizeObserver?.disconnect();
128801
129062
  };
128802
129063
  }, [host, overHost, mounted, detents.length]);
128803
- const latest = React15.useRef({ ctx, onDismiss: props.onDismiss });
129064
+ const latest = React16.useRef({ ctx, onDismiss: props.onDismiss });
128804
129065
  latest.current = { ctx, onDismiss: props.onDismiss };
128805
- const closed = React15.useRef(false);
128806
- const remaining = React15.useRef(autoMs ?? 0);
128807
- React15.useEffect(() => {
129066
+ const closed = React16.useRef(false);
129067
+ const remaining = React16.useRef(autoMs ?? 0);
129068
+ React16.useEffect(() => {
128808
129069
  if (!shown2) return;
128809
129070
  closed.current = false;
128810
129071
  remaining.current = autoMs ?? 0;
128811
129072
  }, [shown2, autoMs]);
128812
- const close = React15.useCallback(() => {
129073
+ const close = React16.useCallback(() => {
128813
129074
  if (closed.current) return;
128814
129075
  closed.current = true;
128815
129076
  setDismissed(true);
128816
129077
  const { ctx: now, onDismiss } = latest.current;
128817
129078
  if (onDismiss != null) now.onAction?.(resolveItemDeep2(onDismiss, now));
128818
129079
  }, []);
128819
- const toDetent = React15.useCallback((next, from) => {
129080
+ const toDetent = React16.useCallback((next, from) => {
128820
129081
  if (next > from) setExpanded(true);
128821
129082
  setDetentIndex(next);
128822
129083
  }, []);
128823
- const [hover, setHover] = React15.useState(false);
128824
- const [pressed, setPressed] = React15.useState(false);
128825
- const [focusIn, setFocusIn] = React15.useState(false);
129084
+ const [hover, setHover] = React16.useState(false);
129085
+ const [pressed, setPressed] = React16.useState(false);
129086
+ const [focusIn, setFocusIn] = React16.useState(false);
128826
129087
  const paused = hover || pressed || focusIn;
128827
- React15.useEffect(() => {
129088
+ React16.useEffect(() => {
128828
129089
  if (!shown2) {
128829
129090
  setHover(false);
128830
129091
  setPressed(false);
128831
129092
  setFocusIn(false);
128832
129093
  }
128833
129094
  }, [shown2]);
128834
- React15.useEffect(() => {
129095
+ React16.useEffect(() => {
128835
129096
  if (!shown2 || !hostTop || autoMs == null || paused || expanded) return;
128836
129097
  const since = Date.now();
128837
129098
  const t2 = setTimeout(() => {
@@ -128842,7 +129103,7 @@ var init_renderNode = __esm({
128842
129103
  remaining.current = drawerRemainingMs(remaining.current, Date.now() - since);
128843
129104
  };
128844
129105
  }, [shown2, hostTop, autoMs, paused, expanded, close]);
128845
- React15.useEffect(() => {
129106
+ React16.useEffect(() => {
128846
129107
  if (!shown2 || !dismissible) return;
128847
129108
  const doc = panelRef.current?.ownerDocument;
128848
129109
  if (!doc) return;
@@ -128855,13 +129116,13 @@ var init_renderNode = __esm({
128855
129116
  doc.addEventListener("keydown", onKey, true);
128856
129117
  return () => doc.removeEventListener("keydown", onKey, true);
128857
129118
  }, [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(() => {
129119
+ const drag = React16.useRef(null);
129120
+ const dragged = React16.useRef(false);
129121
+ const [dragDy, setDragDy] = React16.useState(0);
129122
+ React16.useEffect(() => {
128862
129123
  if (!shown2) setDragDy(0);
128863
129124
  }, [shown2]);
128864
- const dragState = React15.useRef({ index: 0, count: 0, dismissible });
129125
+ const dragState = React16.useRef({ index: 0, count: 0, dismissible });
128865
129126
  if (!shown2 && !mounted) return /* @__PURE__ */ jsx11("span", { ref: anchorRef, "data-bottom-drawer-anchor": "", hidden: true, ...{ [NODE_EXTRAS_TARGET]: "bottom-drawer-panel" } });
128866
129127
  const sheet = idiomControls(ctx.idiom).sheet;
128867
129128
  const r3 = `${sheet.cornerRadius}px`;
@@ -129003,23 +129264,23 @@ var init_renderNode = __esm({
129003
129264
  const rich = title !== "";
129004
129265
  const trigger = resolveTooltipTrigger(props.trigger, "pointer");
129005
129266
  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);
129267
+ const [open, setOpen] = React16.useState(false);
129268
+ const anchorRef = React16.useRef(null);
129269
+ const bubbleRef = React16.useRef(null);
129270
+ const pressTimer = React16.useRef(null);
129010
129271
  const placement = useFlippedEdge(edge, open, bubbleRef, anchorRef);
129011
129272
  const placed = placement.edge;
129012
- const latest = React15.useRef({ ctx, onDismiss: props.onDismiss, open });
129273
+ const latest = React16.useRef({ ctx, onDismiss: props.onDismiss, open });
129013
129274
  latest.current = { ctx, onDismiss: props.onDismiss, open };
129014
- const holding = React15.useRef({ hover: false, focus: false });
129015
- const [needsTabStop, setNeedsTabStop] = React15.useState(false);
129275
+ const holding = React16.useRef({ hover: false, focus: false });
129276
+ const [needsTabStop, setNeedsTabStop] = React16.useState(false);
129016
129277
  useIsomorphicLayoutEffect(() => {
129017
129278
  const el2 = anchorRef.current;
129018
129279
  const want = trigger === "hover" && el2 != null && !hasTabStop(el2);
129019
129280
  if (want !== needsTabStop) setNeedsTabStop(want);
129020
129281
  });
129021
- const show = React15.useCallback(() => setOpen(true), []);
129022
- const dismiss = React15.useCallback(() => {
129282
+ const show = React16.useCallback(() => setOpen(true), []);
129283
+ const dismiss = React16.useCallback(() => {
129023
129284
  holding.current = { hover: false, focus: false };
129024
129285
  const { ctx: now, onDismiss, open: wasOpen } = latest.current;
129025
129286
  if (!wasOpen) return;
@@ -129027,7 +129288,7 @@ var init_renderNode = __esm({
129027
129288
  setOpen(false);
129028
129289
  if (onDismiss != null) now.onAction?.(resolveItemDeep2(onDismiss, now));
129029
129290
  }, []);
129030
- React15.useEffect(() => {
129291
+ React16.useEffect(() => {
129031
129292
  if (!open) return;
129032
129293
  const doc = bubbleRef.current?.ownerDocument;
129033
129294
  if (!doc) return;
@@ -129051,7 +129312,7 @@ var init_renderNode = __esm({
129051
129312
  if (timer) clearTimeout(timer);
129052
129313
  };
129053
129314
  }, [open, trigger, dismiss]);
129054
- React15.useEffect(() => () => {
129315
+ React16.useEffect(() => () => {
129055
129316
  if (pressTimer.current) clearTimeout(pressTimer.current);
129056
129317
  }, []);
129057
129318
  const cancelPress = () => {
@@ -129091,7 +129352,7 @@ var init_renderNode = __esm({
129091
129352
  };
129092
129353
  const hint = [title, text13].filter((s2) => s2 !== "").join(". ");
129093
129354
  const anchor = props.anchor ? renderNode(props.anchor, ctx) : null;
129094
- const wrapperHintId = `hm-tip-hint${React15.useId()}`;
129355
+ const wrapperHintId = `hm-tip-hint${React16.useId()}`;
129095
129356
  useIsomorphicLayoutEffect(() => {
129096
129357
  const wrapper = anchorRef.current;
129097
129358
  if (!wrapper || !hint || needsTabStop) return;
@@ -129113,7 +129374,7 @@ var init_renderNode = __esm({
129113
129374
  /* @__PURE__ */ jsx11(OverlayAnchorClip, { wrap, children: needsTabStop ? /* @__PURE__ */ jsxs9(Fragment4, { children: [
129114
129375
  anchor,
129115
129376
  hint && /* @__PURE__ */ jsx11("span", { id: wrapperHintId, hidden: true, "data-hm-a11y-hint": "", children: hint })
129116
- ] }) : hint && React15.isValidElement(anchor) ? /* @__PURE__ */ jsxs9(Fragment4, { children: [
129377
+ ] }) : hint && React16.isValidElement(anchor) ? /* @__PURE__ */ jsxs9(Fragment4, { children: [
129117
129378
  /* @__PURE__ */ jsx11(A11yHintDescription, { hint, children: anchor }),
129118
129379
  /* @__PURE__ */ jsx11("span", { id: wrapperHintId, hidden: true, "data-hm-a11y-hint": "", children: hint })
129119
129380
  ] }) : /* @__PURE__ */ jsxs9(Fragment4, { children: [
@@ -129134,24 +129395,24 @@ var init_renderNode = __esm({
129134
129395
  const gateOpen = gate === true || gate === "true";
129135
129396
  const literal = props.presentedPath == null && props.presented != null;
129136
129397
  const identity = { path: props.presentedPath, presented: props.presented, provider: ctx.provider };
129137
- const [local, setLocal] = React15.useState({ ...identity, opened: false, dismissed: false });
129398
+ const [local, setLocal] = React16.useState({ ...identity, opened: false, dismissed: false });
129138
129399
  const sameGate = local.path === identity.path && local.presented === identity.presented && local.provider === identity.provider;
129139
129400
  const current = sameGate ? local : { ...identity, opened: false, dismissed: false };
129140
129401
  if (!sameGate) setLocal(current);
129141
- React15.useEffect(() => {
129402
+ React16.useEffect(() => {
129142
129403
  if (!gateOpen) setLocal((previous) => previous.dismissed ? { ...previous, dismissed: false } : previous);
129143
129404
  }, [gateOpen]);
129144
129405
  const shown2 = !gated2 || (gateOpen || current.opened) && !current.dismissed;
129145
129406
  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);
129407
+ const dialogRef = React16.useRef(null);
129408
+ const anchorRef = React16.useRef(null);
129409
+ const boxRef = React16.useRef(null);
129149
129410
  const trapTab = useModalOverlay(dialogRef, shown2 && modal);
129150
129411
  const placement = useFlippedEdge(resolveOverlayEdge("Popover", props.edge), gated2 && shown2, dialogRef, boxRef, 6);
129151
129412
  const placed = placement.edge;
129152
- const latest = React15.useRef({ ctx, onDismiss: props.onDismiss });
129413
+ const latest = React16.useRef({ ctx, onDismiss: props.onDismiss });
129153
129414
  latest.current = { ctx, onDismiss: props.onDismiss };
129154
- React15.useEffect(() => {
129415
+ React16.useEffect(() => {
129155
129416
  if (!gated2 || !shown2) return;
129156
129417
  const doc = dialogRef.current?.ownerDocument;
129157
129418
  if (!doc) return;
@@ -129189,8 +129450,8 @@ var init_renderNode = __esm({
129189
129450
  if (shown2) return;
129190
129451
  setLocal({ ...identity, opened: true, dismissed: false });
129191
129452
  } : void 0;
129192
- const [anchorIsButton, setAnchorIsButton] = React15.useState(false);
129193
- const [needsSeparateOpener, setNeedsSeparateOpener] = React15.useState(false);
129453
+ const [anchorIsButton, setAnchorIsButton] = React16.useState(false);
129454
+ const [needsSeparateOpener, setNeedsSeparateOpener] = React16.useState(false);
129194
129455
  useIsomorphicLayoutEffect(() => {
129195
129456
  const el2 = anchorRef.current;
129196
129457
  const want = literal && el2 != null && !hasTabStop(el2);
@@ -129217,7 +129478,7 @@ var init_renderNode = __esm({
129217
129478
  });
129218
129479
  ChipsInputNode = withExtras("ChipsInputNode", ({ props, ctx, wrap }) => {
129219
129480
  const placeholderText = useBoundString(props.placeholder, ctx);
129220
- const [draft, setDraft] = React15.useState("");
129481
+ const [draft, setDraft] = React16.useState("");
129221
129482
  const C2 = ctx.color;
129222
129483
  const bound2 = useResolvedScalar(props.valuesPath, ctx);
129223
129484
  const raw = props.valuesPath != null ? bound2 : props.values;
@@ -129414,7 +129675,7 @@ var init_renderNode = __esm({
129414
129675
  const who = asText2(a2.initials).trim();
129415
129676
  const initials = avatarCircle(who || "?", size, C2, true, bodyFont(ctx));
129416
129677
  const photo = typeof a2.imageUrl === "string" && a2.imageUrl && !isBinding(a2.imageUrl) ? a2.imageUrl : "";
129417
- const circle = photo ? React15.cloneElement(
129678
+ const circle = photo ? React16.cloneElement(
129418
129679
  initials,
129419
129680
  { style: { ...initials.props.style, position: "relative", overflow: "hidden" } },
129420
129681
  initials.props.children,
@@ -129422,7 +129683,7 @@ var init_renderNode = __esm({
129422
129683
  e2.currentTarget.style.display = "none";
129423
129684
  }, style: { position: "absolute", inset: 0, width: "100%", height: "100%", objectFit: "cover" } })
129424
129685
  ) : 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);
129686
+ 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
129687
  }),
129427
129688
  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
129689
  "+",
@@ -129443,7 +129704,7 @@ var init_renderNode = __esm({
129443
129704
  const declared = Array.isArray(props.series) ? props.series : [];
129444
129705
  const multi = declared.length > 0;
129445
129706
  const singleBound = useBoundValue(ctx, typeof props.valuesPath === "string" && !multi ? props.valuesPath : "");
129446
- const seriesBindings = React15.useMemo(
129707
+ const seriesBindings = React16.useMemo(
129447
129708
  () => declared.map((d2) => typeof d2?.valuesPath === "string" ? d2.valuesPath : ""),
129448
129709
  // eslint-disable-next-line react-hooks/exhaustive-deps
129449
129710
  [declared.map((d2) => String(d2?.valuesPath ?? "")).join("\0")]
@@ -129589,9 +129850,9 @@ var init_renderNode = __esm({
129589
129850
  ] }) });
129590
129851
  });
129591
129852
  ShapeNode = withExtras("ShapeNode", ({ props, ctx, wrap }) => {
129592
- const ref = React15.useRef(null);
129593
- const [box, setBox] = React15.useState(null);
129594
- React15.useEffect(() => {
129853
+ const ref = React16.useRef(null);
129854
+ const [box, setBox] = React16.useState(null);
129855
+ React16.useEffect(() => {
129595
129856
  const el2 = ref.current;
129596
129857
  if (!el2) return;
129597
129858
  const measure2 = () => {
@@ -129749,10 +130010,10 @@ var init_renderNode = __esm({
129749
130010
  const isPlayable = !isFailed && !isUploading;
129750
130011
  const isPlaying = state === "playing";
129751
130012
  const isLoading = state === "loading";
129752
- const [scrub, setScrub] = React15.useState(null);
129753
- const [seeked, setSeeked] = React15.useState(null);
130013
+ const [scrub, setScrub] = React16.useState(null);
130014
+ const [seeked, setSeeked] = React16.useState(null);
129754
130015
  const positionMs = Math.max(0, num4(props.positionMsPath != null ? boundPosition : void 0, props.positionMs, 0));
129755
- React15.useEffect(() => {
130016
+ React16.useEffect(() => {
129756
130017
  setSeeked(null);
129757
130018
  }, [positionMs]);
129758
130019
  const effectivePositionMs = seeked ?? positionMs;
@@ -129794,8 +130055,8 @@ var init_renderNode = __esm({
129794
130055
  const barW = Math.max(0.6, slot * 0.58);
129795
130056
  const cut2 = progress * W2;
129796
130057
  const rates = Array.isArray(props.rates) ? props.rates.map(Number).filter((n2) => n2 > 0) : [];
129797
- const [pickedRate, setPickedRate] = React15.useState(null);
129798
- React15.useEffect(() => {
130058
+ const [pickedRate, setPickedRate] = React16.useState(null);
130059
+ React16.useEffect(() => {
129799
130060
  setPickedRate(null);
129800
130061
  }, [rate]);
129801
130062
  const effectiveRate = pickedRate ?? rate;
@@ -129969,8 +130230,8 @@ var init_renderNode = __esm({
129969
130230
  }) });
129970
130231
  });
129971
130232
  LiveWindowMeasured = ({ index, heights, children }) => {
129972
- const ref = React15.useRef(null);
129973
- React15.useLayoutEffect(() => {
130233
+ const ref = React16.useRef(null);
130234
+ React16.useLayoutEffect(() => {
129974
130235
  const el2 = ref.current;
129975
130236
  if (!el2) return;
129976
130237
  const record3 = () => {
@@ -129989,7 +130250,7 @@ var init_renderNode = __esm({
129989
130250
  return /* @__PURE__ */ jsx11("div", { ref, style: { width: "100%" }, children });
129990
130251
  };
129991
130252
  LiveWindowPage = ({ page, index, count: count2, current, liveWindow, ownerId, heights, ctx }) => {
129992
- const outerActive = React15.useContext(PageActiveContext);
130253
+ const outerActive = React16.useContext(PageActiveContext);
129993
130254
  if (liveWindowRange(current, count2, liveWindow) == null) return /* @__PURE__ */ jsx11(Fragment4, { children: renderNode(page, ctx) });
129994
130255
  if (liveWindowMounted(index, current, count2, liveWindow)) {
129995
130256
  return /* @__PURE__ */ jsx11(PageActiveContext.Provider, { value: outerActive && liveWindowActive(index, current, count2, liveWindow), children: /* @__PURE__ */ jsx11(LiveWindowMeasured, { index, heights, children: renderNode(page, ctx) }) });
@@ -130018,27 +130279,27 @@ var init_renderNode = __esm({
130018
130279
  const items = (props.__pager ? props.pages : props.items) ?? [];
130019
130280
  const pages2 = items.filter((page) => isNodeLike(page) || page?.type);
130020
130281
  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);
130282
+ const [current, setCurrent] = React16.useState(requested);
130283
+ const rail = React16.useRef(null);
130284
+ const currentRef = React16.useRef(current);
130024
130285
  const itemsPath = props.itemsPath ?? props.items_path;
130025
130286
  const boundRail = !!itemsPath && !!items[0] && !!ctx.provider;
130026
130287
  const { settled, scrolling } = useSettledPage(current);
130027
- const [, heightsChanged] = React15.useReducer((n2) => n2 + 1, 0);
130288
+ const [, heightsChanged] = React16.useReducer((n2) => n2 + 1, 0);
130028
130289
  const pageKey = pages2.map((p2, i2) => p2?.id ?? `#${i2}`).join("\0");
130029
- const pageHeights = React15.useMemo(() => ({ map: /* @__PURE__ */ new Map(), changed: heightsChanged }), [pageKey]);
130290
+ const pageHeights = React16.useMemo(() => ({ map: /* @__PURE__ */ new Map(), changed: heightsChanged }), [pageKey]);
130030
130291
  const select2 = (index) => {
130031
130292
  if (index === currentRef.current) return;
130032
130293
  currentRef.current = index;
130033
130294
  setCurrent(index);
130034
130295
  if (props.onChange && ctx.onAction) ctx.onAction({ ...props.onChange, args: { ...props.onChange.args ?? {}, index } });
130035
130296
  };
130036
- React15.useEffect(() => {
130297
+ React16.useEffect(() => {
130037
130298
  currentRef.current = requested;
130038
130299
  setCurrent(requested);
130039
130300
  if (rail.current && !boundRail) rail.current.scrollLeft = requested * rail.current.clientWidth;
130040
130301
  }, [requested, boundRail, pages2.length]);
130041
- React15.useEffect(() => {
130302
+ React16.useEffect(() => {
130042
130303
  const interval = props.autoplayIntervalMs;
130043
130304
  if (props.__pager || boundRail || !Number.isFinite(interval) || interval <= 0 || pages2.length < 2 || ctx.reduceMotion()) return;
130044
130305
  const timer = setInterval(() => {
@@ -130085,19 +130346,19 @@ var init_renderNode = __esm({
130085
130346
  const opts = Array.isArray(rawOpts) ? rawOpts : [];
130086
130347
  const selectedId = isBinding(props.selectedId) ? boundSel : props.selectedId;
130087
130348
  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();
130349
+ const viewport = React16.useRef(null);
130350
+ const settle2 = React16.useRef(void 0);
130351
+ const pickerId = React16.useId();
130091
130352
  const interactive = !!ctx.onAction && !!props.onChange;
130092
130353
  const emit = (index) => {
130093
130354
  const id = opts[index]?.id;
130094
130355
  if (!interactive || id == null || index === selIdx) return;
130095
130356
  ctx.onAction({ ...props.onChange, args: { ...props.onChange.args ?? {}, selectedId: String(id) } });
130096
130357
  };
130097
- React15.useEffect(() => {
130358
+ React16.useEffect(() => {
130098
130359
  if (viewport.current) viewport.current.scrollTop = selIdx * 32;
130099
130360
  }, [selIdx, opts.length]);
130100
- React15.useEffect(() => () => clearTimeout(settle2.current), []);
130361
+ React16.useEffect(() => () => clearTimeout(settle2.current), []);
130101
130362
  return /* @__PURE__ */ jsxs9("div", { style: { position: "relative", width: "100%", maxWidth: 220, height: 160, overflow: "hidden", background: C2("surfaceSecondary", "#f5f7fa"), borderRadius: 12, ...wrap }, children: [
130102
130363
  /* @__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
130364
  /* @__PURE__ */ jsx11(
@@ -130173,11 +130434,23 @@ var init_renderNode = __esm({
130173
130434
  const next = multiSelect ? isSel ? selected.filter((x2) => x2 !== id) : [...selected, id] : isSel ? [] : [id];
130174
130435
  ctx.onAction({ ...onChange, args: { ...onChange.args ?? {}, selectedIds: next } });
130175
130436
  };
130437
+ const rowRef = React16.useRef(null);
130438
+ const shownSelection = React16.useRef(void 0);
130439
+ const selectedId = multiSelect ? null : selected[0] ?? null;
130440
+ React16.useEffect(() => {
130441
+ const row2 = rowRef.current;
130442
+ if (multiSelect || !row2 || selectedId === shownSelection.current) return;
130443
+ const chip = selectedId == null ? null : Array.from(row2.children).find((el2) => el2.getAttribute("data-chip-id") === selectedId);
130444
+ if (selectedId != null && !chip) return;
130445
+ const first = shownSelection.current === void 0;
130446
+ shownSelection.current = selectedId;
130447
+ if (chip) revealInRow(chip, row2, first || ctx.reduceMotion());
130448
+ }, [selectedId, chips, multiSelect]);
130176
130449
  return (
130177
130450
  // ONE horizontally scrolling row, like the iOS ScrollView(.horizontal) and the
130178
130451
  // Android LazyRow. Wrapping here turned a long filter set into a ragged grid and
130179
130452
  // 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) => {
130453
+ /* @__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
130454
  const on4 = selected.includes(c2.id);
130182
130455
  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
130456
  const inner = /* @__PURE__ */ jsxs9(Fragment4, { children: [
@@ -130187,7 +130460,7 @@ var init_renderNode = __esm({
130187
130460
  /* @__PURE__ */ jsx11("span", { style: { ...on4 ? {} : { opacity: 0.7 }, fontSize: pxToRem(11) }, children: c2.count })
130188
130461
  ] })
130189
130462
  ] });
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);
130463
+ 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
130464
  }) })
130192
130465
  );
130193
130466
  });
@@ -130208,23 +130481,23 @@ var init_renderNode = __esm({
130208
130481
  const hasEvents = !!(props.onMapTap || props.onMarkerTap || props.onRegionChange || props.onShapeTap);
130209
130482
  const boundShapes = useResolvedScalar(props.shapesPath, ctx);
130210
130483
  const shapesRaw = Array.isArray(boundShapes) ? boundShapes : Array.isArray(props.shapes) ? props.shapes : [];
130211
- const shapes = React15.useMemo(() => shapesRaw.map((sh) => {
130484
+ const shapes = React16.useMemo(() => shapesRaw.map((sh) => {
130212
130485
  const kind = parseShapeKind(sh?.kind);
130213
130486
  const pts = Array.isArray(sh?.points) ? sh.points.filter((p2) => p2 && typeof p2.latitude === "number" && typeof p2.longitude === "number") : [];
130214
130487
  const ring = kind === "circle" && pts.length ? circleRing(pts[0].latitude, pts[0].longitude, typeof sh.radiusM === "number" ? sh.radiusM : 0) : pts;
130215
130488
  return { ...sh, kind, points: ring };
130216
130489
  }), [JSON.stringify(shapesRaw)]);
130217
130490
  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(() => {
130491
+ const commandedCamera = React16.useMemo(() => decodeCamera(boundCameraRaw), [boundCameraRaw]);
130492
+ const [box, setBox] = React16.useState({ w: 400, h: h2 });
130493
+ const [tileStatus, setTileStatus] = React16.useState({});
130494
+ const [userCam, setUserCam] = React16.useState(null);
130495
+ const dragRef = React16.useRef(null);
130496
+ const dragMovedRef = React16.useRef(false);
130497
+ const regionReportedRef = React16.useRef(false);
130498
+ const [boxEl, setBoxEl] = React16.useState(null);
130499
+ const attachBox = React16.useCallback((el2) => setBoxEl(el2), []);
130500
+ React16.useEffect(() => {
130228
130501
  const el2 = boxEl;
130229
130502
  if (!el2) return;
130230
130503
  const measure2 = () => {
@@ -130247,12 +130520,12 @@ var init_renderNode = __esm({
130247
130520
  const explicitSchematic = schematic && props.routeMode?.toLowerCase() === "schematic";
130248
130521
  const usesTileArm = !explicitSchematic && (otherTileReason || hasStaticMarkers) && (follow || !schematic);
130249
130522
  const pinsOnly = hasStaticMarkers && !otherTileReason;
130250
- const [userFix, setUserFix] = React15.useState(null);
130251
- const [followBroken, setFollowBroken] = React15.useState(false);
130252
- React15.useEffect(() => {
130523
+ const [userFix, setUserFix] = React16.useState(null);
130524
+ const [followBroken, setFollowBroken] = React16.useState(false);
130525
+ React16.useEffect(() => {
130253
130526
  if (follow) setFollowBroken(false);
130254
130527
  }, [follow]);
130255
- React15.useEffect(() => {
130528
+ React16.useEffect(() => {
130256
130529
  if (!observeUserLocation || !usesTileArm) return;
130257
130530
  const geo = typeof navigator !== "undefined" ? navigator.geolocation : void 0;
130258
130531
  if (!geo || typeof geo.watchPosition !== "function") return;
@@ -130279,7 +130552,7 @@ var init_renderNode = __esm({
130279
130552
  const z5 = userCam?.z ?? fitted;
130280
130553
  const cLat = followActive ? userFix.lat : userCam?.lat ?? baseLat;
130281
130554
  const cLng = followActive ? userFix.lng : userCam?.lng ?? baseLng;
130282
- React15.useEffect(() => {
130555
+ React16.useEffect(() => {
130283
130556
  const resolved2 = resolveCamera(commandedCamera, cLat, cLng, z5);
130284
130557
  if (!resolved2) return;
130285
130558
  setFollowBroken(true);
@@ -130361,7 +130634,7 @@ var init_renderNode = __esm({
130361
130634
  const endDrag = () => {
130362
130635
  dragRef.current = null;
130363
130636
  };
130364
- React15.useEffect(() => {
130637
+ React16.useEffect(() => {
130365
130638
  if (!boxEl || !usesTileArm || !interactive) return;
130366
130639
  const zoomOnWheel = (event) => {
130367
130640
  event.preventDefault();
@@ -130371,7 +130644,7 @@ var init_renderNode = __esm({
130371
130644
  boxEl.addEventListener("wheel", zoomOnWheel, { passive: false });
130372
130645
  return () => boxEl.removeEventListener("wheel", zoomOnWheel);
130373
130646
  }, [boxEl, usesTileArm, interactive, z5, cLat, cLng]);
130374
- React15.useEffect(() => {
130647
+ React16.useEffect(() => {
130375
130648
  const action = props.onRegionChange;
130376
130649
  const fire = ctx.onAction;
130377
130650
  if (!usesTileArm || !action || !fire) return;
@@ -130514,34 +130787,34 @@ var init_renderNode = __esm({
130514
130787
  const effectiveIndex = Number.isInteger(parsedIndex) ? parsedIndex : props.currentIndex;
130515
130788
  const pages2 = items.filter((p2) => isNodeLike(p2) || p2?.type);
130516
130789
  const count2 = pages2.length;
130517
- const [index, setIndex] = React15.useState(typeof effectiveIndex === "number" ? effectiveIndex : 0);
130518
- const indexRef = React15.useRef(index);
130790
+ const [index, setIndex] = React16.useState(typeof effectiveIndex === "number" ? effectiveIndex : 0);
130791
+ const indexRef = React16.useRef(index);
130519
130792
  const { settled, scrolling } = useSettledPage(index);
130520
- const [, heightsChanged] = React15.useReducer((n2) => n2 + 1, 0);
130793
+ const [, heightsChanged] = React16.useReducer((n2) => n2 + 1, 0);
130521
130794
  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);
130795
+ const pageHeights = React16.useMemo(() => ({ map: /* @__PURE__ */ new Map(), changed: heightsChanged }), [pageKey]);
130796
+ const trackRef = React16.useRef(null);
130797
+ const [hovered, setHovered] = React16.useState(false);
130798
+ const [focused, setFocused] = React16.useState(false);
130526
130799
  const paused = hovered || focused;
130527
130800
  const interval = typeof props.autoplayIntervalMs === "number" && props.autoplayIntervalMs > 0 ? props.autoplayIntervalMs : 0;
130528
130801
  const autoplay = interval > 0 && count2 > 1 && !ctx.reduceMotion();
130529
130802
  const onChange = props.onChange;
130530
- const onChangeRef = React15.useRef(onChange);
130803
+ const onChangeRef = React16.useRef(onChange);
130531
130804
  onChangeRef.current = onChange;
130532
- const autoScrollRef = React15.useRef(null);
130533
- const endAutoScroll = React15.useCallback(() => {
130805
+ const autoScrollRef = React16.useRef(null);
130806
+ const endAutoScroll = React16.useCallback(() => {
130534
130807
  if (autoScrollRef.current) clearTimeout(autoScrollRef.current.timer);
130535
130808
  autoScrollRef.current = null;
130536
130809
  }, []);
130537
130810
  const requestedIndex = Math.max(0, Math.min(count2 - 1, typeof effectiveIndex === "number" ? effectiveIndex : 0));
130538
- React15.useEffect(() => {
130811
+ React16.useEffect(() => {
130539
130812
  endAutoScroll();
130540
130813
  indexRef.current = requestedIndex;
130541
130814
  setIndex(requestedIndex);
130542
130815
  if (trackRef.current) trackRef.current.scrollLeft = requestedIndex * trackRef.current.clientWidth * (trackRef.current.ownerDocument.defaultView?.getComputedStyle(trackRef.current).direction === "rtl" ? -1 : 1);
130543
130816
  }, [requestedIndex, count2, endAutoScroll]);
130544
- React15.useEffect(() => {
130817
+ React16.useEffect(() => {
130545
130818
  const el2 = trackRef.current;
130546
130819
  el2?.addEventListener("scrollend", endAutoScroll);
130547
130820
  return () => {
@@ -130549,14 +130822,14 @@ var init_renderNode = __esm({
130549
130822
  endAutoScroll();
130550
130823
  };
130551
130824
  }, [endAutoScroll]);
130552
- const pageTo = React15.useCallback((page) => {
130825
+ const pageTo = React16.useCallback((page) => {
130553
130826
  if (page === indexRef.current) return;
130554
130827
  indexRef.current = page;
130555
130828
  setIndex(page);
130556
130829
  const action = onChangeRef.current;
130557
130830
  if (action && ctx.onAction) ctx.onAction({ ...action, args: { ...action.args ?? {}, index: page } });
130558
130831
  }, [ctx]);
130559
- React15.useEffect(() => {
130832
+ React16.useEffect(() => {
130560
130833
  if (!autoplay || paused) return;
130561
130834
  const id = setInterval(() => {
130562
130835
  const next = (indexRef.current + 1) % count2;
@@ -130622,7 +130895,7 @@ var init_renderNode = __esm({
130622
130895
  });
130623
130896
  BannerNode = withExtras("BannerNode", ({ props, ctx, wrap }) => {
130624
130897
  const C2 = ctx.color;
130625
- const [dismissed, setDismissed] = React15.useState(false);
130898
+ const [dismissed, setDismissed] = React16.useState(false);
130626
130899
  if (dismissed) return null;
130627
130900
  const accent = sevColor(ctx, props.severity ?? "info");
130628
130901
  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 +130928,16 @@ var init_renderNode = __esm({
130655
130928
  const rawImageUrl = props.imageUrl != null && isBinding(props.imageUrl) ? boundImageUrl : props.imageUrl;
130656
130929
  const heroSrc = typeof rawImageUrl === "string" && rawImageUrl !== "" ? rawImageUrl : typeof props.imageAsset === "string" && isWebAssetPath(props.imageAsset) ? props.imageAsset : void 0;
130657
130930
  const resolvedHero = heroSrc ? resolveAssetUrl(heroSrc, ctx.assetBaseUrl, ctx.assetPin) : void 0;
130658
- const [failedHero, setFailedHero] = React15.useState(null);
130931
+ const [failedHero, setFailedHero] = React16.useState(null);
130659
130932
  const heroUrl = resolvedHero && resolvedHero !== failedHero ? resolvedHero : void 0;
130660
130933
  const expanded = Math.max(0, typeof props.expandedHeight === "number" && Number.isFinite(props.expandedHeight) ? props.expandedHeight : 280);
130661
130934
  const imageUrl = useImageSource(heroUrl ?? null, { width: "100%", height: expanded, mode: "fill" }).url ?? void 0;
130662
130935
  const collapsed = Math.max(0, Math.min(expanded, typeof props.collapsedHeight === "number" && props.collapsedHeight > 0 ? props.collapsedHeight : 64));
130663
130936
  const parallax = typeof props.parallaxFactor === "number" && Number.isFinite(props.parallaxFactor) ? Math.max(0, Math.min(1, props.parallaxFactor)) : 0.5;
130664
130937
  const span = Math.max(1, expanded - collapsed);
130665
- const rootRef = React15.useRef(null);
130666
- const [offset, setOffset] = React15.useState(0);
130667
- React15.useEffect(() => {
130938
+ const rootRef = React16.useRef(null);
130939
+ const [offset, setOffset] = React16.useState(0);
130940
+ React16.useEffect(() => {
130668
130941
  const el2 = rootRef.current;
130669
130942
  const win = el2?.ownerDocument?.defaultView;
130670
130943
  if (!el2 || !win) return;
@@ -130766,46 +131039,55 @@ var init_renderNode = __esm({
130766
131039
  const boundEnd = useResolvedScalar(props.selectedEndDatePath, ctx);
130767
131040
  const seedStart = (props.selectedStartDatePath != null ? typeof boundStart === "string" ? boundStart : "" : typeof props.selectedStartDate === "string" ? props.selectedStartDate : "") || "";
130768
131041
  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(() => {
131042
+ const [range, setRange] = React16.useState({ start: seedStart, end: seedEnd });
131043
+ const lastRangeSeed = React16.useRef(`${seedStart}|${seedEnd}`);
131044
+ React16.useEffect(() => {
130772
131045
  const key3 = `${seedStart}|${seedEnd}`;
130773
131046
  if (lastRangeSeed.current === key3) return;
130774
131047
  lastRangeSeed.current = key3;
130775
131048
  setRange({ start: seedStart, end: seedEnd });
130776
131049
  }, [seedStart, seedEnd]);
130777
- const seed2 = React15.useMemo(
131050
+ const seed2 = React16.useMemo(
130778
131051
  () => monthSeed(drivenYear ?? props.year, drivenMonth ?? props.month, selectedDate),
130779
131052
  [drivenYear, drivenMonth, props.year, props.month, selectedDate]
130780
131053
  );
130781
- const [view, setView] = React15.useState(seed2);
131054
+ const [view, setView] = React16.useState(seed2);
130782
131055
  const seedKey = `${seed2.year}-${seed2.month}`;
130783
- const lastSeed = React15.useRef(seedKey);
130784
- React15.useEffect(() => {
131056
+ const lastSeed = React16.useRef(seedKey);
131057
+ const lastSeedSelection = React16.useRef(selectedDate);
131058
+ React16.useEffect(() => {
131059
+ const bySelection = lastSeedSelection.current !== selectedDate;
131060
+ lastSeedSelection.current = selectedDate;
130785
131061
  if (lastSeed.current === seedKey) return;
130786
131062
  lastSeed.current = seedKey;
130787
131063
  setView(seed2);
131064
+ if (bySelection && !isWeek && (view.year !== seed2.year || view.month !== seed2.month)) {
131065
+ dispatchCalendarAction(ctx, props.onVisibleRangeChange, visibleRange(monthMatrix(seed2.year, seed2.month, firstWeekday)));
131066
+ }
130788
131067
  }, [seedKey, seed2]);
130789
131068
  const year = view.year;
130790
131069
  const month = view.month;
130791
131070
  const boundMode = useResolvedScalar(props.displayModePath, ctx);
130792
131071
  const drivenMode = props.displayModePath != null && (boundMode === "week" || boundMode === "month") ? boundMode : void 0;
130793
131072
  const modeSeed = drivenMode ?? (props.displayMode === "week" ? "week" : "month");
130794
- const [mode, setMode] = React15.useState(modeSeed);
130795
- const lastModeSeed = React15.useRef(modeSeed);
130796
- React15.useEffect(() => {
131073
+ const [mode, setMode] = React16.useState(modeSeed);
131074
+ const lastModeSeed = React16.useRef(modeSeed);
131075
+ React16.useEffect(() => {
130797
131076
  if (lastModeSeed.current === modeSeed) return;
130798
131077
  lastModeSeed.current = modeSeed;
130799
131078
  setMode(modeSeed);
130800
131079
  }, [modeSeed]);
130801
131080
  const isWeek = mode === "week";
130802
131081
  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(() => {
131082
+ const [weekStart, setWeekStart] = React16.useState(weekSeed);
131083
+ const lastWeekSeed = React16.useRef(weekSeed);
131084
+ React16.useEffect(() => {
130806
131085
  if (lastWeekSeed.current === weekSeed) return;
130807
131086
  lastWeekSeed.current = weekSeed;
130808
131087
  setWeekStart(weekSeed);
131088
+ if (isWeek && selectedDate != null && weekStart !== weekSeed) {
131089
+ dispatchCalendarAction(ctx, props.onVisibleRangeChange, { startDate: weekSeed, endDate: calAddDays(weekSeed, 6) });
131090
+ }
130809
131091
  }, [weekSeed]);
130810
131092
  const decByDate = /* @__PURE__ */ new Map();
130811
131093
  for (const d2 of decorations) if (d2 && typeof d2.date === "string") decByDate.set(d2.date, d2);
@@ -130815,7 +131097,7 @@ var init_renderNode = __esm({
130815
131097
  return { date, day: parseLocalDate(date)?.getDate() ?? 0, inMonth: true, isToday: date === todayKey };
130816
131098
  })] : monthMatrix(year, month, firstWeekday);
130817
131099
  const heads = weekdayLabels(firstWeekday);
130818
- const gridRef = React15.useRef(null);
131100
+ const gridRef = React16.useRef(null);
130819
131101
  const titleMonth = isWeek ? calWeekTitleMonth(weekStart) : { year, month };
130820
131102
  const monthLabel = new Date(titleMonth.year, titleMonth.month - 1, 1).toLocaleDateString(void 0, { month: "long", year: "numeric" });
130821
131103
  const expandable = props.expandable === true;
@@ -130990,7 +131272,7 @@ var init_renderNode = __esm({
130990
131272
  const events = Array.isArray(rawEvents) ? rawEvents : [];
130991
131273
  const boundAnchor = useResolvedScalar(props.anchorDatePath, ctx);
130992
131274
  const anchorRaw = props.anchorDatePath != null ? boundAnchor : props.anchorDate;
130993
- const [pagedAnchor, setPagedAnchor] = React15.useState(null);
131275
+ const [pagedAnchor, setPagedAnchor] = React16.useState(null);
130994
131276
  const localAnchor = pagedAnchor && Object.is(pagedAnchor.raw, anchorRaw) && pagedAnchor.path === props.anchorDatePath && pagedAnchor.mode === props.mode && pagedAnchor.provider === ctx.provider ? pagedAnchor.date : null;
130995
131277
  if (pagedAnchor && !localAnchor) setPagedAnchor(null);
130996
131278
  const anchor = localAnchor ?? (typeof anchorRaw === "string" ? parseLocalDate(anchorRaw) : null) ?? /* @__PURE__ */ new Date();
@@ -131230,7 +131512,7 @@ var init_renderNode = __esm({
131230
131512
  const boundEvents = useResolvedScalar(props.eventsPath, ctx);
131231
131513
  const rawEvents = props.eventsPath != null ? boundEvents : props.events;
131232
131514
  const events = Array.isArray(rawEvents) ? rawEvents : [];
131233
- const groups = React15.useMemo(() => {
131515
+ const groups = React16.useMemo(() => {
131234
131516
  const buckets = /* @__PURE__ */ new Map();
131235
131517
  for (const ev of events) {
131236
131518
  if (!ev) continue;
@@ -131250,19 +131532,48 @@ var init_renderNode = __esm({
131250
131532
  const onSelect = (ev) => dispatchCalendarAction(ctx, ev?.onTap ?? props.onSelectEvent, { eventId: ev?.id });
131251
131533
  const boundScrollTo = useResolvedScalar(props.scrollToDatePath, ctx);
131252
131534
  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;
131535
+ const targetDay = anchorRowId(scrollTarget) ?? void 0;
131536
+ const containerRef = React16.useRef(null);
131537
+ const [visibleDays, setVisibleDays] = React16.useState(CAL_AGENDA_INITIAL_DAYS);
131538
+ const targetIndex = targetDay ? groups.findIndex((g2) => g2.key === targetDay) : -1;
131256
131539
  const windowEnd = Math.max(visibleDays, targetIndex >= 0 ? targetIndex + 1 : 0);
131257
131540
  const shown2 = groups.length > windowEnd ? groups.slice(0, windowEnd) : groups;
131258
131541
  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 });
131542
+ const onVisibleDate = props.onVisibleDateChange ?? props.on_visible_date_change;
131543
+ const reportedDate = React16.useRef(null);
131544
+ const jumped = useTopAnchorReport(
131545
+ containerRef,
131546
+ onVisibleDate ? () => Array.from(containerRef.current?.children ?? [], (el2) => ({ id: el2.getAttribute("data-daygroup") ?? "", el: el2 })).filter((a2) => a2.id) : null,
131547
+ (date) => {
131548
+ reportedDate.current = date;
131549
+ dispatchCalendarAction(ctx, onVisibleDate, { date });
131550
+ },
131551
+ groups
131552
+ );
131553
+ const landedOn = React16.useRef(null);
131554
+ React16.useEffect(() => {
131555
+ if (!scrollTarget || !targetDay) {
131556
+ landedOn.current = null;
131557
+ return;
131558
+ }
131559
+ if (scrollTarget === landedOn.current) return;
131560
+ if (!scrollTarget.includes("|") && targetDay === reportedDate.current) {
131561
+ landedOn.current = scrollTarget;
131562
+ return;
131563
+ }
131564
+ reportedDate.current = null;
131565
+ const day = containerRef.current?.querySelector(`[data-daygroup="${targetDay}"]`);
131566
+ if (!day) return;
131567
+ const block = groups[0]?.key === targetDay ? "nearest" : "start";
131568
+ const inset = coveredTopInset(day);
131569
+ if (inset > 0) day.style.scrollMarginTop = `${inset}px`;
131570
+ else day.style.removeProperty("scroll-margin-top");
131571
+ jumped(0);
131572
+ day.scrollIntoView({ block });
131573
+ if (block === "nearest" || reachesVisibleTop(day)) landedOn.current = scrollTarget;
131263
131574
  }, [scrollTarget, windowEnd]);
131264
- const sentinelRef = React15.useRef(null);
131265
- React15.useEffect(() => {
131575
+ const sentinelRef = React16.useRef(null);
131576
+ React16.useEffect(() => {
131266
131577
  if (!hasMore) return;
131267
131578
  const el2 = sentinelRef.current;
131268
131579
  if (!el2 || typeof IntersectionObserver === "undefined") return;
@@ -131278,6 +131589,7 @@ var init_renderNode = __esm({
131278
131589
  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
131590
  }
131280
131591
  const sticky = props.stickyHeaders === true;
131592
+ const dayHeaderFont = ctx.font("caption");
131281
131593
  const todayKey = localDayKey(/* @__PURE__ */ new Date());
131282
131594
  const tomorrowKey = localDayKey(new Date((/* @__PURE__ */ new Date()).getFullYear(), (/* @__PURE__ */ new Date()).getMonth(), (/* @__PURE__ */ new Date()).getDate() + 1));
131283
131595
  const dayHeaderLabel = (key3) => {
@@ -131288,7 +131600,7 @@ var init_renderNode = __esm({
131288
131600
  };
131289
131601
  return /* @__PURE__ */ jsxs9("div", { ref: containerRef, "data-agenda-days": shown2.length, style: { width: "100%", boxSizing: "border-box", ...wrap }, children: [
131290
131602
  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) }),
131603
+ /* @__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
131604
  g2.items.map((ev, i2) => {
131293
131605
  const start = parseLocalDate(ev.start);
131294
131606
  const timeStr = ev.allDay === true ? "All day" : start ? localTimeLabel(start) : "";
@@ -131379,14 +131691,14 @@ var init_renderNode = __esm({
131379
131691
  PRESENTED_SCOPE = '[aria-modal="true"], [role="dialog"], [role="alertdialog"], [role="menu"]';
131380
131692
  focusRoots = /* @__PURE__ */ new WeakMap();
131381
131693
  A11yHintDescription = ({ hint, idBase, children, ...forwarded }) => {
131382
- const descId = `${idBase ?? "hm"}__hint${React15.useId()}`;
131694
+ const descId = `${idBase ?? "hm"}__hint${React16.useId()}`;
131383
131695
  const own6 = children.props;
131384
131696
  const next = { ...forwarded };
131385
131697
  if (forwarded.style) next.style = { ...own6.style ?? {}, ...forwarded.style };
131386
131698
  const ids = [own6["aria-describedby"], forwarded["aria-describedby"], descId].flatMap((v2) => v2 ? String(v2).split(/\s+/) : []).filter(Boolean);
131387
131699
  next["aria-describedby"] = Array.from(new Set(ids)).join(" ");
131388
131700
  return /* @__PURE__ */ jsxs9(Fragment4, { children: [
131389
- React15.cloneElement(children, next),
131701
+ React16.cloneElement(children, next),
131390
131702
  /* @__PURE__ */ jsx11("span", { id: descId, hidden: true, "data-hm-a11y-hint": "", children: hint })
131391
131703
  ] });
131392
131704
  };
@@ -131406,15 +131718,41 @@ var init_renderNode = __esm({
131406
131718
  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
131719
  };
131408
131720
  renderRailRow = (template, itemCtx) => railRowFrame(template, renderNode(template, itemCtx), itemCtx);
131721
+ RowAnchors = ({ ctx, itemsPath, jumpPath, onTopItem, children }) => {
131722
+ const rootRef = React16.useRef(null);
131723
+ const jumpValue = useResolvedScalar(jumpPath, ctx);
131724
+ const jump = typeof jumpValue === "string" ? jumpValue : "";
131725
+ const target = anchorRowId(jump) ?? void 0;
131726
+ const rows = useBoundValue(ctx, itemsPath.startsWith("$item.") ? "" : itemsPath);
131727
+ const anchors = () => {
131728
+ const root = rootRef.current;
131729
+ if (!root) return [];
131730
+ 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 }));
131731
+ };
131732
+ const jumped = useTopAnchorReport(rootRef, onTopItem ? anchors : null, (id) => dispatchCalendarAction(ctx, onTopItem, { id }), rows);
131733
+ const landedOn = React16.useRef("");
131734
+ React16.useEffect(() => {
131735
+ if (!target) {
131736
+ landedOn.current = "";
131737
+ return;
131738
+ }
131739
+ if (jump === landedOn.current) return;
131740
+ const row2 = anchors().find((a2) => a2.id === target);
131741
+ if (!row2) return;
131742
+ landedOn.current = jump;
131743
+ jumped(scrollAnchorToTop(row2.el, ctx.reduceMotion()));
131744
+ }, [jump, rows]);
131745
+ return /* @__PURE__ */ jsx11("div", { ref: rootRef, "data-himalaya-row-anchors": "", style: { display: "contents" }, children: /* @__PURE__ */ jsx11(RevealRowContext.Provider, { value: target, children }) });
131746
+ };
131409
131747
  reportedUnknownComponents = /* @__PURE__ */ new Set();
131410
131748
  UnknownComponentNode = ({ pkg, type, props, ctx, wrap, ...extras }) => {
131411
131749
  const hasTelemetry = !!ctx.emitTelemetry;
131412
- React15.useEffect(() => {
131750
+ React16.useEffect(() => {
131413
131751
  reportUnknownComponent(ctx, pkg, type);
131414
131752
  }, [ctx.appId, ctx.screenId, hasTelemetry, pkg, type]);
131415
131753
  const { style: extraStyle, children: extraChildren, ...attrs } = extras;
131416
131754
  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));
131755
+ 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
131756
  const childKeys = nodeProps(Object.entries(props ?? {}));
131419
131757
  if (!unknownComponentShowsDeveloperLabel(ctx)) {
131420
131758
  const contentKeys = childKeys.filter(([k2]) => k2 === "child" || k2 === "children");
@@ -131437,11 +131775,11 @@ var init_renderNode = __esm({
131437
131775
  ScrollIntoViewNode = ({ node, ctx, path: path2 }) => {
131438
131776
  const token = useResolvedScalar(path2, ctx);
131439
131777
  const source = isBinding(path2) ? path2 : "";
131440
- const seen = React15.useRef({ source, provider: ctx.provider, token });
131778
+ const seen = React16.useRef({ source, provider: ctx.provider, token });
131441
131779
  if (seen.current.source !== source || seen.current.provider !== ctx.provider) seen.current = { source, provider: ctx.provider, token };
131442
- const root = React15.useRef(null);
131780
+ const root = React16.useRef(null);
131443
131781
  const reduced = ctx.reduceMotion();
131444
- React15.useEffect(() => {
131782
+ React16.useEffect(() => {
131445
131783
  if (token === seen.current.token) return;
131446
131784
  seen.current.token = token;
131447
131785
  if (token == null || token === "" || token === 0 || token === "0") return;
@@ -131462,7 +131800,7 @@ var init_renderNode = __esm({
131462
131800
  });
131463
131801
 
131464
131802
  // ../../core/web-renderer/src/renderToHtml.tsx
131465
- import React16 from "react";
131803
+ import React17 from "react";
131466
131804
  import { renderToStaticMarkup } from "react-dom/server";
131467
131805
  function renderDescriptorToHtml(payload, tokens2, scheme = "light", provider = null, width, chrome, opts) {
131468
131806
  const rtl = opts?.isRTL === true;
@@ -131482,7 +131820,7 @@ function renderDescriptorToHtml(payload, tokens2, scheme = "light", provider = n
131482
131820
  const withRenderStyles = (markup) => {
131483
131821
  if (!markup) return markup;
131484
131822
  if (!glassPreview) return FOCUS_STYLE_MARKUP + markup;
131485
- const scoped = renderToStaticMarkup(React16.createElement(
131823
+ const scoped = renderToStaticMarkup(React17.createElement(
131486
131824
  "div",
131487
131825
  {
131488
131826
  className: "himi-ios-glass-preview",
@@ -131499,18 +131837,18 @@ function renderDescriptorToHtml(payload, tokens2, scheme = "light", provider = n
131499
131837
  const dir = rtl ? { dir: "rtl" } : {};
131500
131838
  if (header || footer) {
131501
131839
  return withRenderStyles(renderToStaticMarkup(
131502
- React16.createElement(
131840
+ React17.createElement(
131503
131841
  "div",
131504
131842
  // F-22 — same footer pin as ScreenHost: a full-height flex column + margin-top:auto
131505
131843
  // keeps the footer at the bottom edge even when the payload is short.
131506
131844
  { "data-testid": "screen-host", ...dir, ...footer ? { style: { display: "flex", flexDirection: "column", minHeight: "100%", flexGrow: 1 } } : {} },
131507
- header ? React16.createElement(
131845
+ header ? React17.createElement(
131508
131846
  "div",
131509
131847
  { "data-testid": "sticky-header", style: { position: "sticky", top: 0, zIndex: 10 } },
131510
131848
  renderNode(header, ctx)
131511
131849
  ) : null,
131512
131850
  renderNode(payload, ctx),
131513
- footer ? React16.createElement(
131851
+ footer ? React17.createElement(
131514
131852
  "div",
131515
131853
  { "data-testid": "sticky-footer", style: { position: "sticky", bottom: 0, zIndex: 10, marginTop: "auto" } },
131516
131854
  renderNode(footer, ctx)
@@ -131520,11 +131858,11 @@ function renderDescriptorToHtml(payload, tokens2, scheme = "light", provider = n
131520
131858
  }
131521
131859
  if (rtl) {
131522
131860
  return withRenderStyles(renderToStaticMarkup(
131523
- React16.createElement("div", dir, renderNode(payload, ctx))
131861
+ React17.createElement("div", dir, renderNode(payload, ctx))
131524
131862
  ));
131525
131863
  }
131526
131864
  return withRenderStyles(renderToStaticMarkup(
131527
- React16.createElement(React16.Fragment, null, renderNode(payload, ctx))
131865
+ React17.createElement(React17.Fragment, null, renderNode(payload, ctx))
131528
131866
  ));
131529
131867
  }
131530
131868
  var init_renderToHtml = __esm({
@@ -131583,6 +131921,7 @@ var init_AppRegistry = __esm({
131583
131921
  // ../../core/web-renderer/src/index.ts
131584
131922
  var src_exports2 = {};
131585
131923
  __export(src_exports2, {
131924
+ AvatarNode: () => AvatarNode,
131586
131925
  Bound: () => Bound,
131587
131926
  BoundList: () => BoundList,
131588
131927
  BoundListWindowContext: () => BoundListWindowContext,
@@ -137326,8 +137665,8 @@ function sha256hex(b2) {
137326
137665
  function stableStringify(value2) {
137327
137666
  if (value2 === null || typeof value2 !== "object") return JSON.stringify(value2);
137328
137667
  if (Array.isArray(value2)) return "[" + value2.map(stableStringify).join(",") + "]";
137329
- const object12 = value2;
137330
- return "{" + Object.keys(object12).sort().map((key3) => JSON.stringify(key3) + ":" + stableStringify(object12[key3])).join(",") + "}";
137668
+ const object13 = value2;
137669
+ return "{" + Object.keys(object13).sort().map((key3) => JSON.stringify(key3) + ":" + stableStringify(object13[key3])).join(",") + "}";
137331
137670
  }
137332
137671
  function manifestContent(m2) {
137333
137672
  const {
@@ -151362,22 +151701,22 @@ function resolveTagName2(name, isAttribute2, options, matcher, xmlVersion) {
151362
151701
  if (qName(name, { xmlVersion })) return name;
151363
151702
  return options.sanitizeName(name, { isAttribute: isAttribute2, matcher: matcher.readOnly() });
151364
151703
  }
151365
- function processTextOrObjNode(object12, key3, level, matcher, xmlVersion) {
151366
- const attrValues = this.extractAttributes(object12);
151704
+ function processTextOrObjNode(object13, key3, level, matcher, xmlVersion) {
151705
+ const attrValues = this.extractAttributes(object13);
151367
151706
  matcher.push(key3, attrValues);
151368
151707
  const isStopNode = this.checkStopNode(matcher);
151369
151708
  if (isStopNode) {
151370
- const rawContent = this.buildRawContent(object12);
151371
- const attrStr = this.buildAttributesForStopNode(object12);
151709
+ const rawContent = this.buildRawContent(object13);
151710
+ const attrStr = this.buildAttributesForStopNode(object13);
151372
151711
  matcher.pop();
151373
151712
  return this.buildObjectNode(rawContent, key3, attrStr, level);
151374
151713
  }
151375
- const result = this.j2x(object12, level + 1, matcher, xmlVersion);
151714
+ const result = this.j2x(object13, level + 1, matcher, xmlVersion);
151376
151715
  matcher.pop();
151377
151716
  if (key3[0] === "?") {
151378
151717
  return this.buildTextValNode("", key3, result.attrStr, level, matcher);
151379
- } else if (object12[this.options.textNodeName] !== void 0 && Object.keys(object12).length === 1) {
151380
- return this.buildTextValNode(object12[this.options.textNodeName], key3, result.attrStr, level, matcher);
151718
+ } else if (object13[this.options.textNodeName] !== void 0 && Object.keys(object13).length === 1) {
151719
+ return this.buildTextValNode(object13[this.options.textNodeName], key3, result.attrStr, level, matcher);
151381
151720
  } else {
151382
151721
  return this.buildObjectNode(result.val, key3, result.attrStr, level);
151383
151722
  }
@@ -162771,6 +163110,7 @@ function navConfigPathErrors(config) {
162771
163110
  errors.push(`sidebar.header.${key3}: sidebar header bindings are not rendered yet (#4116) \u2014 bind drawer.header, which the sidebar shows`);
162772
163111
  }
162773
163112
  }
163113
+ check("topBarLogo.imageUrlPath", obj9(config.topBarLogo)?.imageUrlPath);
162774
163114
  const firstOf = (v2, skip = false) => list2(v2).find(([it2]) => !skip || it2.role !== "section" && it2.role !== "note");
162775
163115
  const tabs = firstOf(obj9(config.tabBar)?.items);
162776
163116
  const kind = typeof config.navKind === "string" ? config.navKind : "";
@@ -173332,7 +173672,25 @@ var init_design_rules = __esm({
173332
173672
  function nativeWidgetObligations(sectionDefinitionId) {
173333
173673
  return sectionDefinitionId && Object.hasOwn(NATIVE_WIDGET_DEFAULTS, sectionDefinitionId) && NATIVE_WIDGET_DEFAULTS[sectionDefinitionId] || ["Native defaults are unverified for this section type; inventory its effective source behavior on device"];
173334
173674
  }
173335
- var bookings, groupFeed, programs, contact, members, NATIVE_WIDGET_DEFAULTS;
173675
+ function nativeWidgetSettingObligations(sectionDefinitionId, settings) {
173676
+ if (!sectionDefinitionId || !BLOG_LIST_SECTIONS.has(sectionDefinitionId)) return [];
173677
+ const root = object7(settings);
173678
+ const out2 = [];
173679
+ const display = object7(root.displayOptions);
173680
+ const shown2 = BLOG_ROW_OPTIONS.filter(([key3]) => display[key3] === true).map(([, label3]) => label3);
173681
+ if (shown2.length) out2.push(`Post rows show exactly the authored display options (${shown2.join(", ")}); a generated row that drops one is a gap`);
173682
+ const content = object7(root.contentSettings);
173683
+ const category = typeof content.categoryId === "string" && content.categoryId.trim() ? `category ${content.categoryId.trim()}` : "all categories";
173684
+ const scope2 = `${category}, ${content.featuredOnly === true ? "featured posts only" : "all posts"}`;
173685
+ const limit = content.postsPerCategory;
173686
+ if (limit === "unlimited") out2.push(`Unlimited post list (${scope2}): follow the page cursor until the last post; no fixed cap such as 20`);
173687
+ else if (typeof limit === "string" ? /^\d+$/.test(limit) : Number.isSafeInteger(limit)) {
173688
+ out2.push(`Limited post list of ${limit} (${scope2}): show ${limit} posts, then See All Posts opening the full list in the same scope`);
173689
+ }
173690
+ if (typeof root.postsLayout === "string" && root.postsLayout) out2.push(`Post list layout "${root.postsLayout}": thumbnail side and row density match the source on device`);
173691
+ return out2;
173692
+ }
173693
+ var bookings, groupFeed, programs, contact, members, blogList, NATIVE_WIDGET_DEFAULTS, BLOG_LIST_SECTIONS, BLOG_ROW_OPTIONS, object7;
173336
173694
  var init_native_defaults = __esm({
173337
173695
  "src/one-app/native-defaults.ts"() {
173338
173696
  init_define_HHP_CATALOG();
@@ -173357,6 +173715,7 @@ var init_native_defaults = __esm({
173357
173715
  "Member total/search, alphabetical sections, Follow and last-active under the same privacy/access rules",
173358
173716
  "Badge chips distinguished from actual viewed-member program participation/progress; never infer progress from badge titles"
173359
173717
  ];
173718
+ blogList = ["See All Posts for a limited list, with source scope and display options"];
173360
173719
  NATIVE_WIDGET_DEFAULTS = {
173361
173720
  bookings_services_list_section: bookings,
173362
173721
  single_group_feed_section: groupFeed,
@@ -173365,11 +173724,23 @@ var init_native_defaults = __esm({
173365
173724
  platform_general_contact_section_bp: contact,
173366
173725
  achievements_list_section: [...programs, "Default list limit 2 and See All when more results exist; respect authored limit/infinite settings"],
173367
173726
  achievements_carousel_section: [...programs, "Default carousel limit 5 and page dots; respect authored selection/limit"],
173368
- newBlog_postlist_vertical_section: ["See All Posts for a limited list, with source scope and display options"],
173727
+ newBlog_postlist_vertical_section: blogList,
173728
+ newBlog_compact_post_list_vertical_section: blogList,
173369
173729
  events_list_section: ["Date badge", "Share event", "RSVP or ticket action appropriate to the event and visitor state"],
173370
173730
  platform_general_members_section: members,
173371
173731
  platform_general_members_section_bp: members
173372
173732
  };
173733
+ BLOG_LIST_SECTIONS = /* @__PURE__ */ new Set(["newBlog_postlist_vertical_section", "newBlog_compact_post_list_vertical_section"]);
173734
+ BLOG_ROW_OPTIONS = [
173735
+ ["author", "author avatar, name and admin badge"],
173736
+ ["comments", "comment count"],
173737
+ ["likes", "like count"],
173738
+ ["times_viewed", "view count"],
173739
+ ["post_date", "post date"],
173740
+ ["reading_time", "reading time"],
173741
+ ["cover_image", "cover image"]
173742
+ ];
173743
+ object7 = (value2) => value2 && typeof value2 === "object" && !Array.isArray(value2) ? value2 : {};
173373
173744
  }
173374
173745
  });
173375
173746
 
@@ -173424,7 +173795,8 @@ function deriveRequirements(evidenceDir) {
173424
173795
  };
173425
173796
  const placement = (entry) => {
173426
173797
  add("placement", entry.context, `Section ${entry.sectionDefinitionId ?? entry.sectionId}`, void 0, `${entry.sectionId}:${entry.sectionDefinitionId ?? "unknown"}`);
173427
- for (const behavior of nativeWidgetObligations(entry.sectionDefinitionId)) {
173798
+ const settings = obj4(obj4(obj4(graph.sections)[entry.sectionId]).settings);
173799
+ for (const behavior of [...nativeWidgetObligations(entry.sectionDefinitionId), ...nativeWidgetSettingObligations(entry.sectionDefinitionId, settings)]) {
173428
173800
  add(
173429
173801
  "native-widget",
173430
173802
  entry.context,
@@ -173966,7 +174338,7 @@ function enrichedControls(raw, views) {
173966
174338
  badges.set(screen.screenId, badgeButtons);
173967
174339
  const addButtons = (buttons, side2, platform) => {
173968
174340
  for (const [index, button] of buttons.entries()) {
173969
- const definition = object7(button.definition);
174341
+ const definition = object8(button.definition);
173970
174342
  const id = `${button.id ?? ""} ${definition?.iconId ?? ""} ${definition?.accessibilityLabel ?? ""}`.toLowerCase();
173971
174343
  let recognized = false;
173972
174344
  const matched = /* @__PURE__ */ new Set();
@@ -174006,11 +174378,11 @@ function enrichedControls(raw, views) {
174006
174378
  }
174007
174379
  return { controls: result, badges };
174008
174380
  }
174009
- function object7(value2) {
174381
+ function object8(value2) {
174010
174382
  return value2 !== null && typeof value2 === "object" && !Array.isArray(value2) ? value2 : void 0;
174011
174383
  }
174012
174384
  function readJson7(path2) {
174013
- return object7(JSON.parse(readFileSync97(path2, "utf8"))) ?? {};
174385
+ return object8(JSON.parse(readFileSync97(path2, "utf8"))) ?? {};
174014
174386
  }
174015
174387
  function parseArgs(args) {
174016
174388
  let evidenceDir;
@@ -174038,8 +174410,8 @@ function parseArgs(args) {
174038
174410
  return { evidenceDir: resolve69(evidenceDir), contentDir: resolve69(contentDir2), json: json8 };
174039
174411
  }
174040
174412
  function authoredControls(raw) {
174041
- const screens = object7(raw.screens);
174042
- const headers2 = object7(raw.headers) ?? {};
174413
+ const screens = object8(raw.screens);
174414
+ const headers2 = object8(raw.headers) ?? {};
174043
174415
  if (!screens || !Object.keys(screens).length) {
174044
174416
  return { controls: /* @__PURE__ */ new Set(), byScreen: /* @__PURE__ */ new Map(), inviteDisabled: /* @__PURE__ */ new Set(), screens: 0, error: "raw-structure.json is missing authored screens." };
174045
174417
  }
@@ -174048,16 +174420,16 @@ function authoredControls(raw) {
174048
174420
  const inviteDisabled = /* @__PURE__ */ new Set();
174049
174421
  let count2 = 0;
174050
174422
  for (const [screenId, rawScreen] of Object.entries(screens)) {
174051
- const screen = object7(rawScreen);
174423
+ const screen = object8(rawScreen);
174052
174424
  const headerId = typeof screen?.headerId === "string" ? screen.headerId : void 0;
174053
174425
  const screenControls = /* @__PURE__ */ new Set();
174054
174426
  byScreen.set(screenId, screenControls);
174055
174427
  if (!headerId) continue;
174056
174428
  count2++;
174057
- const header = object7(headers2[headerId]);
174429
+ const header = object8(headers2[headerId]);
174058
174430
  if (!header) return { controls, byScreen, inviteDisabled, screens: count2, error: `Authored header ${headerId} is missing for screen ${screenId}.` };
174059
- const settings = object7(header?.settings) ?? header;
174060
- const topBarSettings = object7(settings?.topBarSettings);
174431
+ const settings = object8(header?.settings) ?? header;
174432
+ const topBarSettings = object8(settings?.topBarSettings);
174061
174433
  const choice = (modern, legacy) => {
174062
174434
  const current = topBarSettings?.[modern];
174063
174435
  if (current !== void 0) return typeof current === "boolean" ? current : void 0;
@@ -174193,8 +174565,8 @@ function itemTokens(topBar, source) {
174193
174565
  const out2 = /* @__PURE__ */ new Set();
174194
174566
  if (!list2 || !ts11.isArrayLiteralExpression(list2)) return out2;
174195
174567
  for (const item of list2.elements) {
174196
- const object12 = ts11.isExpression(item) ? resolveObject(item, source) : void 0;
174197
- if (object12) for (const token of actionTokens(object12)) out2.add(token);
174568
+ const object13 = ts11.isExpression(item) ? resolveObject(item, source) : void 0;
174569
+ if (object13) for (const token of actionTokens(object13)) out2.add(token);
174198
174570
  }
174199
174571
  return out2;
174200
174572
  }
@@ -174331,13 +174703,13 @@ function validate3(evidenceDir, contentDir2) {
174331
174703
  const manifest2 = readJson7(join93(evidenceDir, "manifest.json"));
174332
174704
  if (manifest2.workflow !== "one-app-to-himi-app") throw new Error("manifest.json is not for the one-app-to-himi-app workflow.");
174333
174705
  if (manifest2.stage !== "collected") throw new Error('manifest.json must have stage "collected".');
174334
- const unavailable = (Array.isArray(manifest2.warnings) ? manifest2.warnings : []).map(object7).filter((warning) => warning?.code === "runtime_context_unavailable" && (warning.platform === "ios" || warning.platform === "android"));
174706
+ const unavailable = (Array.isArray(manifest2.warnings) ? manifest2.warnings : []).map(object8).filter((warning) => warning?.code === "runtime_context_unavailable" && (warning.platform === "ios" || warning.platform === "android"));
174335
174707
  if (unavailable.length) {
174336
174708
  throw new Error(`Platform top-bar behavior is unverified: ${unavailable.map((warning) => warning.platform).join(", ")} runtime context unavailable.`);
174337
174709
  }
174338
174710
  const rawPath = join93(evidenceDir, "raw-structure.json");
174339
174711
  const rawBytes = readFileSync97(rawPath);
174340
- const expectedHash = object7(manifest2.sha256)?.["raw-structure.json"];
174712
+ const expectedHash = object8(manifest2.sha256)?.["raw-structure.json"];
174341
174713
  if (typeof expectedHash !== "string" || !/^[a-f0-9]{64}$/i.test(expectedHash)) {
174342
174714
  throw new Error("manifest.json is missing a valid raw-structure.json hash.");
174343
174715
  }
@@ -174350,7 +174722,7 @@ function validate3(evidenceDir, contentDir2) {
174350
174722
  const views = {};
174351
174723
  for (const platform of ["ios", "android"]) {
174352
174724
  const name = `enriched-${platform}.json`;
174353
- const hash3 = object7(manifest2.sha256)?.[name];
174725
+ const hash3 = object8(manifest2.sha256)?.[name];
174354
174726
  if (hash3 === void 0) continue;
174355
174727
  if (typeof hash3 !== "string" || !/^[a-f0-9]{64}$/i.test(hash3)) throw new Error(`Invalid ${name} hash.`);
174356
174728
  const bytes2 = readFileSync97(join93(evidenceDir, name));
@@ -174405,15 +174777,15 @@ function validate3(evidenceDir, contentDir2) {
174405
174777
  try {
174406
174778
  const coverage = readJson7(coveragePath);
174407
174779
  for (const row2 of Array.isArray(coverage.requirements) ? coverage.requirements : []) {
174408
- const entry = object7(row2) ?? {};
174780
+ const entry = object8(row2) ?? {};
174409
174781
  const badge = typeof entry.id === "string" ? badgeDefinitions.get(entry.id) : void 0;
174410
- const destination = object7(entry.target);
174782
+ const destination = object8(entry.target);
174411
174783
  if (entry.kind === "top-bar" && badge && entry.source === badge.source && entry.platform === badge.platform && typeof destination?.screenId === "string" && destination.screenId.trim() && typeof destination.controlId === "string" && destination.controlId.trim()) {
174412
174784
  badgeTargets.set(badge.requirementId, { screenId: destination.screenId, controlId: destination.controlId });
174413
174785
  }
174414
174786
  if (entry.kind !== "route" || typeof entry.source !== "string" || !/^\/screens\/[^/]+$/.test(entry.source)) continue;
174415
174787
  const screenId = entry.source.slice(9).replaceAll("~1", "/").replaceAll("~0", "~");
174416
- const targetScreen = object7(entry.target)?.screenId;
174788
+ const targetScreen = object8(entry.target)?.screenId;
174417
174789
  if (typeof targetScreen === "string" && targetScreen) mappings.set(screenId, targetScreen);
174418
174790
  }
174419
174791
  } catch (error) {
@@ -178075,43 +178447,43 @@ var init_preview_assets_generated = __esm({
178075
178447
  init_define_HHP_CATALOG();
178076
178448
  init_preview_assets_format();
178077
178449
  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" },
178450
+ { key: "assets/DashboardHost-DDXBPEja.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 2971, sha256: "9920fca6ec69d5455abc8ffd1717da77dfebbae1170f720ef79ad7c396d83629" },
178451
+ { key: "assets/DevDrawer-Lpltq1C0.js", contentType: "application/javascript; charset=utf-8", offset: 2979, length: 16783, sha256: "753a16fe4f62280fcf59cd144cc24ee14e896c78214db18a8ab512e75e751cd4" },
178452
+ { key: "assets/IdiomCompare-C74IV66h.js", contentType: "application/javascript; charset=utf-8", offset: 19762, length: 1926, sha256: "ea2ad8295d50409a571979868c2c9b84f7c52011a74156b20bd41fcf0a81fee9" },
178453
+ { key: "assets/LightboxViewer-D4K2U_pm.js", contentType: "application/javascript; charset=utf-8", offset: 21688, length: 8171, sha256: "cff395131acaff392f5e30fe6b49a9c4adc619413812e665608bf534e3530d3e" },
178454
+ { key: "assets/OfflineReadingBar-CGUKk3FF.js", contentType: "application/javascript; charset=utf-8", offset: 29859, length: 1707, sha256: "d8679ca44a0f9086d76e5533ec62fef5ef044ca7e602606c519968f8e967d447" },
178455
+ { key: "assets/PhonePreviewControl-Z0VAMda9.js", contentType: "application/javascript; charset=utf-8", offset: 31566, length: 37768, sha256: "5639397dc543c926e64e619ae4548a776cda2b772e0730f239d33cd780a1cce5" },
178456
+ { key: "assets/SchemeCompare-B0Q-6Thb.js", contentType: "application/javascript; charset=utf-8", offset: 69334, length: 1858, sha256: "f9474ffcbb7e660abe3e1ff69b7b6dda5b004245036234c7dc565c2d9c278cdb" },
178457
+ { key: "assets/WixFrogTelemetrySink-ClyMPgmZ.js", contentType: "application/javascript; charset=utf-8", offset: 71192, length: 3165, sha256: "098df16e28be30309673b77bc8e65fb449720183db6bee0a6cfc076c23ca139f" },
178086
178458
  { key: "assets/calendar-ics-BvfIYWjG.js", contentType: "application/javascript; charset=utf-8", offset: 74357, length: 2192, sha256: "1636167041e9829ceccd3544297b86b8475c38bd2f759c4dbc17c813dc6e9254" },
178087
178459
  { key: "assets/glassPreviewBrowser-DONaOehd.js", contentType: "application/javascript; charset=utf-8", offset: 76549, length: 6578, sha256: "4402c4cddd2a564e7466cdf1e12a0e0277c0400b288e1e5eda1d23e797599d31" },
178088
178460
  { 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" }
178461
+ { key: "assets/index-v_viiDKZ.js", contentType: "application/javascript; charset=utf-8", offset: 85831, length: 1408611, sha256: "aec3e0087f021ddc8b3d81d2387f0eed2ee29cbadbd2177dcb483a50da881dd5" },
178462
+ { key: "assets/jsx-runtime-CY_jTiqj.js", contentType: "application/javascript; charset=utf-8", offset: 1494442, length: 7624, sha256: "29dfba5b56f79a0b84d6b04d84d87617454baeba03c225f682ab2ab7ae2d5016" },
178463
+ { key: "assets/pdf-C-90KZUB.js", contentType: "application/javascript; charset=utf-8", offset: 1502066, length: 488199, sha256: "3e704e73c325d63e7a4c68866730c8584bf96dddea4d1c3daee4e090dd82b400" },
178464
+ { key: "assets/pdf.worker.min-BQa_JDET.js", contentType: "application/javascript; charset=utf-8", offset: 1990265, length: 73, sha256: "41bcfda4f3c8c0a81c785ea87c69afc8e7d0ed8c333324aee94c273d881bb6aa" },
178465
+ { key: "assets/pdf.worker.min-BmVo14Nb.mjs", contentType: "application/javascript; charset=utf-8", offset: 1990338, length: 1317034, sha256: "a33cfe728c584fdba4fcc1fd54bcdc2f9f2f13889ddbb5b2bd1d0f8cbe49b84e" },
178466
+ { key: "assets/pdfDocument-DVbRjsrX.js", contentType: "application/javascript; charset=utf-8", offset: 3307372, length: 3453, sha256: "1cf5e857989a841b4343620c73501ca32f5d4f5a82e1ff48a11d07e094b082b9" },
178467
+ { key: "assets/pdfFetch-Cc8i1I1h.js", contentType: "application/javascript; charset=utf-8", offset: 3310825, length: 2266, sha256: "1d21ad008921942217c9eac0c35b1713773b9d89c71e3ab4412781f7bb88f463" },
178468
+ { key: "assets/webviewBridgeHost-Cv8q-9a5.js", contentType: "application/javascript; charset=utf-8", offset: 3313091, length: 9888, sha256: "68221913c3148fc4358460ae30d3d8075961a51931f6d472a493d2b2debe00f9" },
178469
+ { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 3322979, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
178470
+ { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 3327589, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
178471
+ { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 3816173, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
178472
+ { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 3907097, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
178473
+ { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 3998081, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
178474
+ { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 4089061, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
178475
+ { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 4179933, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
178476
+ { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 4270913, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
178477
+ { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 4379549, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
178478
+ { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 4488633, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
178479
+ { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 4597681, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
178480
+ { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 4705381, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
178481
+ { key: "himi-sw.js", contentType: "application/javascript; charset=utf-8", offset: 4793489, length: 6818, sha256: "835250c3d8004f27c2b67f9b471984351ba6df07b916d97e33b43c691200a18c" },
178482
+ { key: "index.html", contentType: "text/html; charset=utf-8", offset: 4800307, length: 5037, sha256: "be7e88298c08895f9e2f3f87d690edf37af127b420eadcbce186eb08963b6506" },
178483
+ { key: "ios-glass-preview.css", contentType: "text/css; charset=utf-8", offset: 4805344, length: 10699, sha256: "f187c5a783ec41f90c0e49471ddc3ad5d3bb9c9c40feddad92e0ed9ef9b480f1" },
178484
+ { key: "kit-tab-bar.css", contentType: "text/css; charset=utf-8", offset: 4816043, length: 1171, sha256: "9e2c3a0faaf05d5471badf167a4d3bdf1c4e6dd65c432eea6d254158bfd99585" },
178485
+ { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 4817214, length: 21696, sha256: "fb8575993c8072adda0e61f45f80aca6a1ebb965c24707bc1265150544a4af26" },
178486
+ { key: "t5-worker-frame.html", contentType: "text/html; charset=utf-8", offset: 4838910, length: 21713, sha256: "7d647969cbb8f94275bcaabb41e6a72e70bc1f1608b26bba1ba783b06d0beb4f" }
178115
178487
  ];
178116
178488
  }
178117
178489
  });
@@ -182262,21 +182634,21 @@ function fixedPriceRoute(item, currency) {
182262
182634
  return typeof amount === "string" && /^\d+(?:\.\d+)?$/.test(amount) && Number.isFinite(Number(amount)) && Number(amount) > 0 && /^[A-Z]{3}$/.test(currency) && item.currency === currency ? "appleIap" : "decide";
182263
182635
  }
182264
182636
  function bookingAttendanceOf(raw) {
182265
- const s2 = object8(raw);
182266
- const payment = object8(s2.payment);
182267
- const fixed = object8(payment.fixed);
182268
- const price = object8(fixed.price);
182269
- const options = object8(payment.options);
182270
- const policy = object8(object8(s2.bookingPolicy).participantsPolicy);
182637
+ const s2 = object9(raw);
182638
+ const payment = object9(s2.payment);
182639
+ const fixed = object9(payment.fixed);
182640
+ const price = object9(fixed.price);
182641
+ const options = object9(payment.options);
182642
+ const policy = object9(object9(s2.bookingPolicy).participantsPolicy);
182271
182643
  return {
182272
182644
  kind: "bookingsService",
182273
182645
  type: text10(s2.type),
182274
182646
  capacity: numeric(s2.defaultCapacity),
182275
182647
  maxParticipantsPerBooking: policy.enabled === true ? numeric(policy.maxParticipantsPerBooking) : void 0,
182276
182648
  hidden: boolean3(s2.hidden),
182277
- conferencing: boolean3(object8(s2.conferencing).enabled),
182649
+ conferencing: boolean3(object9(s2.conferencing).enabled),
182278
182650
  locations: Array.isArray(s2.locations) ? s2.locations.map(locationType) : void 0,
182279
- onlineBooking: boolean3(object8(s2.onlineBooking).enabled),
182651
+ onlineBooking: boolean3(object9(s2.onlineBooking).enabled),
182280
182652
  onlinePayment: boolean3(options.online),
182281
182653
  deposit: options.deposit === true || fixed.deposit !== void 0,
182282
182654
  priceType: text10(payment.rateType),
@@ -182285,9 +182657,9 @@ function bookingAttendanceOf(raw) {
182285
182657
  };
182286
182658
  }
182287
182659
  function locationType(raw) {
182288
- const location = object8(raw);
182660
+ const location = object9(raw);
182289
182661
  const type = text10(location.type) ?? "UNKNOWN";
182290
- const addresses = [object8(location.custom).address, location.calculatedAddress].map(object8);
182662
+ const addresses = [object9(location.custom).address, location.calculatedAddress].map(object9);
182291
182663
  return type === "CUSTOM" && addresses.every(describesNoPlace) ? ADDRESSLESS_CUSTOM : type;
182292
182664
  }
182293
182665
  function describesNoPlace(address) {
@@ -182300,16 +182672,16 @@ function describesNoPlace(address) {
182300
182672
  });
182301
182673
  }
182302
182674
  function ticketAttendanceOf(event, definition) {
182303
- const e2 = object8(event);
182304
- const t2 = object8(definition);
182305
- const pricing = object8(t2.pricingMethod);
182306
- const price = object8(pricing.fixedPrice);
182307
- const registration = object8(e2.registration);
182675
+ const e2 = object9(event);
182676
+ const t2 = object9(definition);
182677
+ const pricing = object9(t2.pricingMethod);
182678
+ const price = object9(pricing.fixedPrice);
182679
+ const registration = object9(e2.registration);
182308
182680
  const type = text10(registration.type) ?? text10(registration.initialType) ?? text10(e2.eventType);
182309
182681
  const status = text10(e2.status) ?? text10(e2.eventStatus);
182310
182682
  return {
182311
182683
  kind: "eventsTicket",
182312
- location: text10(object8(e2.location).type),
182684
+ location: text10(object9(e2.location).type),
182313
182685
  registration: type === "TICKETS" || type === "RSVP_AND_TICKETS" ? "TICKETING" : type,
182314
182686
  eventStatus: status === "SCHEDULED" ? "UPCOMING" : status,
182315
182687
  saleStatus: text10(t2.saleStatus),
@@ -182319,7 +182691,7 @@ function ticketAttendanceOf(event, definition) {
182319
182691
  currency: text10(price.currency)
182320
182692
  };
182321
182693
  }
182322
- function object8(value2) {
182694
+ function object9(value2) {
182323
182695
  return value2 !== null && typeof value2 === "object" && !Array.isArray(value2) ? value2 : {};
182324
182696
  }
182325
182697
  var ADDRESSLESS_CUSTOM, PHYSICAL_LOCATIONS, ONLINE_LABEL, text10, numeric, boolean3, zeroPrice;
@@ -193428,41 +193800,41 @@ function normalizeWebsiteLinks(nodes) {
193428
193800
  };
193429
193801
  for (const node of nodes) {
193430
193802
  for (const path2 of linkFields[node.type ?? ""] ?? []) {
193431
- const parent = object9(path2.slice(0, -1).reduce((value2, key4) => object9(value2)[key4], node));
193803
+ const parent = object10(path2.slice(0, -1).reduce((value2, key4) => object10(value2)[key4], node));
193432
193804
  const key3 = path2[path2.length - 1];
193433
193805
  const holder = { url: parent[key3] };
193434
193806
  normalize5(holder);
193435
193807
  if (typeof holder.url === "string") parent[key3] = holder.url;
193436
193808
  }
193437
193809
  if (Array.isArray(node.textData?.decorations)) for (const decoration of node.textData.decorations) {
193438
- if (object9(decoration).type === "LINK") normalize5(object9(object9(decoration).linkData).link);
193810
+ if (object10(decoration).type === "LINK") normalize5(object10(object10(decoration).linkData).link);
193439
193811
  }
193440
193812
  if (Array.isArray(node.nodes)) changed += normalizeWebsiteLinks(node.nodes);
193441
193813
  }
193442
193814
  return changed;
193443
193815
  }
193444
193816
  function draftDocument(value2) {
193445
- const draft = object9(value2);
193817
+ const draft = object10(value2);
193446
193818
  if (!Array.isArray(draft.blocks) || draft.blocks.length > 5e3) return invalid();
193447
193819
  if (draft.entityMap !== void 0 && (!draft.entityMap || typeof draft.entityMap !== "object" || Array.isArray(draft.entityMap))) return invalid();
193448
- const entities = object9(draft.entityMap);
193820
+ const entities = object10(draft.entityMap);
193449
193821
  const nodes = [];
193450
193822
  for (const raw of draft.blocks) {
193451
- const block = object9(raw);
193823
+ const block = object10(raw);
193452
193824
  if (typeof block.text !== "string") return invalid();
193453
193825
  if (block.depth !== void 0 && block.depth !== 0) return unsupported();
193454
193826
  const text13 = block.text;
193455
193827
  const styles = block.inlineStyleRanges ?? [];
193456
193828
  const ranges = block.entityRanges ?? [];
193457
193829
  if (!Array.isArray(styles) || !Array.isArray(ranges) || styles.length + ranges.length > 500) return invalid();
193458
- const spans = [...styles.map((v2) => ({ ...object9(v2), kind: "style" })), ...ranges.map((v2) => ({ ...object9(v2), kind: "entity" }))];
193830
+ const spans = [...styles.map((v2) => ({ ...object10(v2), kind: "style" })), ...ranges.map((v2) => ({ ...object10(v2), kind: "entity" }))];
193459
193831
  for (const span of spans) {
193460
193832
  if (!Number.isInteger(span.offset) || !Number.isInteger(span.length) || Number(span.offset) < 0 || Number(span.length) < 0 || Number(span.offset) + Number(span.length) > text13.length) return invalid();
193461
193833
  }
193462
193834
  if (block.type === "atomic") {
193463
193835
  if (ranges.length !== 1) return unsupported();
193464
- const entity = object9(entities[String(object9(ranges[0]).key)]);
193465
- const data = object9(entity.data);
193836
+ const entity = object10(entities[String(object10(ranges[0]).key)]);
193837
+ const data = object10(entity.data);
193466
193838
  if (entity.type !== "IMAGE" && entity.type !== "wix-draft-plugin-image") return unsupported();
193467
193839
  const url = data.src ?? data.url;
193468
193840
  if (typeof url !== "string" || !url) return invalid();
@@ -193479,9 +193851,9 @@ function draftDocument(value2) {
193479
193851
  if (!["BOLD", "ITALIC", "UNDERLINE", "STRIKETHROUGH"].includes(String(span.style))) return unsupported();
193480
193852
  decorations.push({ type: String(span.style) });
193481
193853
  } else {
193482
- const entity = object9(entities[String(span.key)]);
193483
- if (entity.type !== "LINK" || typeof object9(entity.data).url !== "string") return unsupported();
193484
- decorations.push({ type: "LINK", linkData: { link: { url: object9(entity.data).url } } });
193854
+ const entity = object10(entities[String(span.key)]);
193855
+ if (entity.type !== "LINK" || typeof object10(entity.data).url !== "string") return unsupported();
193856
+ decorations.push({ type: "LINK", linkData: { link: { url: object10(entity.data).url } } });
193485
193857
  }
193486
193858
  }
193487
193859
  runs.push({ type: "TEXT", textData: { text: text13.slice(start, end), decorations } });
@@ -193501,7 +193873,7 @@ function draftDocument(value2) {
193501
193873
  return { nodes };
193502
193874
  }
193503
193875
  function decodeOneAppPage(response, expectedPageId) {
193504
- const dto = object9(response), content = object9(dto.content), body = object9(content.body);
193876
+ const dto = object10(response), content = object10(dto.content), body = object10(content.body);
193505
193877
  if (!isOneAppPageId(expectedPageId) || dto.pageId !== expectedPageId || typeof body.content !== "string" || content.title !== void 0 && typeof content.title !== "string") return invalid();
193506
193878
  const raw = body.content;
193507
193879
  if (richContentOverLimits(raw, null)) return invalid();
@@ -193518,13 +193890,13 @@ function decodeOneAppPage(response, expectedPageId) {
193518
193890
  if (richContentOverLimits(raw, parsed)) return invalid();
193519
193891
  if (contentType === "DRAFTJS") document2 = draftDocument(parsed);
193520
193892
  else {
193521
- if (!Array.isArray(object9(parsed).nodes)) return invalid();
193893
+ if (!Array.isArray(object10(parsed).nodes)) return invalid();
193522
193894
  document2 = parsed;
193523
193895
  }
193524
193896
  } else return unsupported();
193525
193897
  const validNodes = (nodes) => nodes.every((value2) => {
193526
- const n2 = object9(value2);
193527
- return typeof n2.type === "string" && n2.type.length > 0 && (n2.type !== "TEXT" || typeof object9(n2.textData).text === "string") && (n2.nodes === void 0 || Array.isArray(n2.nodes) && validNodes(n2.nodes));
193898
+ const n2 = object10(value2);
193899
+ return typeof n2.type === "string" && n2.type.length > 0 && (n2.type !== "TEXT" || typeof object10(n2.textData).text === "string") && (n2.nodes === void 0 || Array.isArray(n2.nodes) && validNodes(n2.nodes));
193528
193900
  });
193529
193901
  if (!validNodes(document2.nodes)) return invalid();
193530
193902
  const normalizedWebsiteLinks = normalizeWebsiteLinks(document2.nodes);
@@ -193550,7 +193922,7 @@ function oneAppPageSection(page, options) {
193550
193922
  documentJson: page.documentJson
193551
193923
  } } };
193552
193924
  }
193553
- var failure, object9, invalid, unsupported, isOneAppPageId;
193925
+ var failure, object10, invalid, unsupported, isOneAppPageId;
193554
193926
  var init_one_app_page = __esm({
193555
193927
  "../../stdlib/flows/screens/src/one-app-page.ts"() {
193556
193928
  init_define_HHP_CATALOG();
@@ -193558,7 +193930,7 @@ var init_one_app_page = __esm({
193558
193930
  failure = (code, message2) => {
193559
193931
  throw Object.assign(new Error(message2), { name: "OneAppPageContentError", code });
193560
193932
  };
193561
- object9 = (v2) => v2 && typeof v2 === "object" && !Array.isArray(v2) ? v2 : {};
193933
+ object10 = (v2) => v2 && typeof v2 === "object" && !Array.isArray(v2) ? v2 : {};
193562
193934
  invalid = () => failure("invalid", "The referenced page returned malformed content.");
193563
193935
  unsupported = () => failure("unsupported", "The referenced page uses an unsupported content format.");
193564
193936
  isOneAppPageId = (value2) => typeof value2 === "string" && /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(value2);
@@ -193568,16 +193940,16 @@ var init_one_app_page = __esm({
193568
193940
  // src/one-app/pages.ts
193569
193941
  import { createHash as createHash53 } from "node:crypto";
193570
193942
  function oneAppPagePlacements(raw) {
193571
- const sections = object10(raw.sections);
193943
+ const sections = object11(raw.sections);
193572
193944
  const placements = [];
193573
193945
  const read = (elements, base, layoutItemId) => {
193574
193946
  if (!Array.isArray(elements)) return;
193575
193947
  elements.forEach((value2, arrayIndex) => {
193576
- const ref = object10(value2);
193948
+ const ref = object11(value2);
193577
193949
  if (ref.elementType !== "SECTION" || typeof ref.elementId !== "string") return;
193578
- const section3 = object10(sections[ref.elementId]);
193950
+ const section3 = object11(sections[ref.elementId]);
193579
193951
  if ((section3.sectionDefinitionId ?? section3.section_definition_id) !== "pages_section") return;
193580
- const selected = object10(object10(section3.settings).value).pageId;
193952
+ const selected = object11(object11(section3.settings).value).pageId;
193581
193953
  placements.push({
193582
193954
  sectionId: ref.elementId,
193583
193955
  ...layoutItemId ? { layoutItemId } : {},
@@ -193588,8 +193960,8 @@ function oneAppPagePlacements(raw) {
193588
193960
  });
193589
193961
  });
193590
193962
  };
193591
- for (const [id, layout] of Object.entries(object10(raw.layoutItems))) read(object10(layout).elements, `/layoutItems/${pointer(id)}/elements`, id);
193592
- read(object10(raw.businessProfile).elements, "/businessProfile/elements");
193963
+ for (const [id, layout] of Object.entries(object11(raw.layoutItems))) read(object11(layout).elements, `/layoutItems/${pointer(id)}/elements`, id);
193964
+ read(object11(raw.businessProfile).elements, "/businessProfile/elements");
193593
193965
  return placements;
193594
193966
  }
193595
193967
  async function collectOneAppPages(raw, source, read) {
@@ -193620,13 +193992,13 @@ async function collectOneAppPages(raw, source, read) {
193620
193992
  }
193621
193993
  return { version: 1, source, placements, documents: [...documents.values()] };
193622
193994
  }
193623
- var object10, pointer, hash2, ONE_APP_PAGES_BASE;
193995
+ var object11, pointer, hash2, ONE_APP_PAGES_BASE;
193624
193996
  var init_pages = __esm({
193625
193997
  "src/one-app/pages.ts"() {
193626
193998
  init_define_HHP_CATALOG();
193627
193999
  init_one_app_page();
193628
194000
  init_errors2();
193629
- object10 = (v2) => v2 && typeof v2 === "object" && !Array.isArray(v2) ? v2 : {};
194001
+ object11 = (v2) => v2 && typeof v2 === "object" && !Array.isArray(v2) ? v2 : {};
193630
194002
  pointer = (s2) => s2.replaceAll("~", "~0").replaceAll("/", "~1");
193631
194003
  hash2 = (s2) => createHash53("sha256").update(s2).digest("hex");
193632
194004
  ONE_APP_PAGES_BASE = "https://apps.wix.com/social-content/api/v1/pages/";
@@ -193926,20 +194298,28 @@ async function collectOneApp(input, deps = {}) {
193926
194298
  const projected = businessProjection(await readBusiness(businessUrl, resolved2), input.metaSiteId);
193927
194299
  let businessContext = redact(projected.context);
193928
194300
  const contextWarnings = [];
193929
- if (Object.values(rawStructure.sections).some((section3) => {
193930
- if (!isObject2(section3)) return false;
194301
+ const definitions2 = Object.values(rawStructure.sections).flatMap((section3) => {
194302
+ if (!isObject2(section3)) return [];
193931
194303
  const definition = section3.sectionDefinitionId ?? section3.section_definition_id;
193932
- return typeof definition === "string" && CONTACT_SECTIONS.has(definition);
193933
- })) {
194304
+ return typeof definition === "string" ? [definition] : [];
194305
+ });
194306
+ const wantsContact = definitions2.some((id) => CONTACT_SECTIONS.has(id));
194307
+ const wantsLoyalty = definitions2.some((id) => LOYALTY_SECTIONS.has(id));
194308
+ if (wantsContact || wantsLoyalty) {
193934
194309
  const requiredVisitor = internalBusinessRead ? await visitorAuthorization("enrichment_session") : void 0;
193935
194310
  try {
193936
- const contactAuthorization = requiredVisitor ?? await visitorAuthorization("business_contact_session");
193937
- businessContext.contact = redact(contactProjection(await request(
193938
- PUBLIC_CONTACT,
193939
- "business_contact",
193940
- void 0,
193941
- { authorization: contactAuthorization, siteScoped: false }
193942
- ), input.metaSiteId));
194311
+ const authorization2 = requiredVisitor ?? await visitorAuthorization("business_contact_session");
194312
+ const properties = await request(PUBLIC_CONTACT, "business_contact", void 0, { authorization: authorization2, siteScoped: false });
194313
+ if (!isObject2(properties) || typeof properties.metaSiteId !== "string" || !isObject2(properties.properties)) throw invalidResponse("business_contact");
194314
+ if (properties.metaSiteId.toLowerCase() !== input.metaSiteId.toLowerCase()) {
194315
+ throw new OneAppError("source_site_mismatch", "The returned properties do not match the requested site.", { stage: "business_contact" });
194316
+ }
194317
+ if (wantsContact) businessContext.contact = redact(contactProjection(properties, input.metaSiteId));
194318
+ if (wantsLoyalty) {
194319
+ const currency = properties.properties.paymentCurrency;
194320
+ if (typeof currency === "string" && /^[A-Z]{3}$/.test(currency)) businessContext.paymentCurrency = currency;
194321
+ else contextWarnings.push({ code: "loyalty_currency_unavailable", message: "Payment currency is unverified. Keep currency-based Loyalty earning details unresolved." });
194322
+ }
193943
194323
  } catch (error) {
193944
194324
  if (!(error instanceof OneAppError) || ![
193945
194325
  "source_not_found",
@@ -193947,11 +194327,16 @@ async function collectOneApp(input, deps = {}) {
193947
194327
  "source_timeout",
193948
194328
  "source_response_too_large"
193949
194329
  ].includes(error.code)) throw error;
193950
- contextWarnings.push({
194330
+ if (wantsContact) contextWarnings.push({
193951
194331
  code: "business_contact_unavailable",
193952
194332
  failureCode: error.code,
193953
194333
  message: "Public business contact is unavailable. Keep contact sections unresolved until their data can be verified."
193954
194334
  });
194335
+ if (wantsLoyalty) contextWarnings.push({
194336
+ code: "loyalty_currency_unavailable",
194337
+ failureCode: error.code,
194338
+ message: "Payment currency is unavailable. Keep currency-based Loyalty earning details unresolved."
194339
+ });
193955
194340
  }
193956
194341
  }
193957
194342
  if (Object.values(buildSourceGraph(rawStructure).sections).some((section3) => {
@@ -194071,7 +194456,7 @@ async function collectOneApp(input, deps = {}) {
194071
194456
  ]
194072
194457
  };
194073
194458
  }
194074
- var MIDDLEWARE, BUSINESS, TOKEN_INFO, IS_PERMITTED, INTERNAL_PERMISSION, VISITOR_SESSION, PUBLIC_CONTACT, PUBLIC_MEMBERS, MEMBER_WIDGETS, CONTACT_SECTIONS, MAX_RESPONSE_BYTES, TIMEOUT_MS3, UUID, LIFECYCLE_FIELDS;
194459
+ var MIDDLEWARE, BUSINESS, TOKEN_INFO, IS_PERMITTED, INTERNAL_PERMISSION, VISITOR_SESSION, PUBLIC_CONTACT, PUBLIC_MEMBERS, MEMBER_WIDGETS, LOYALTY_SECTIONS, CONTACT_SECTIONS, MAX_RESPONSE_BYTES, TIMEOUT_MS3, UUID, LIFECYCLE_FIELDS;
194075
194460
  var init_collect = __esm({
194076
194461
  "src/one-app/collect.ts"() {
194077
194462
  init_define_HHP_CATALOG();
@@ -194089,6 +194474,7 @@ var init_collect = __esm({
194089
194474
  PUBLIC_CONTACT = "https://apps.wix.com/api/v1/mobile-platform-facade/business/site-properties";
194090
194475
  PUBLIC_MEMBERS = "https://apps.wix.com/_api/members-one-app/api/members?filter=members";
194091
194476
  MEMBER_WIDGETS = /* @__PURE__ */ new Set(["platform_general_members_section", "platform_general_members_section_bp"]);
194477
+ LOYALTY_SECTIONS = /* @__PURE__ */ new Set(["loyalty_offering_section", "loyalty_status_section"]);
194092
194478
  CONTACT_SECTIONS = /* @__PURE__ */ new Set(["platform_general_contact_section", "platform_general_contact_section_bp"]);
194093
194479
  MAX_RESPONSE_BYTES = 8e6;
194094
194480
  TIMEOUT_MS3 = 3e4;
@@ -194223,27 +194609,27 @@ var init_payment_review = __esm({
194223
194609
 
194224
194610
  // src/one-app/navigation.ts
194225
194611
  function sourceNavigationKind(raw) {
194226
- const navigation = object11(raw.navigation);
194227
- if (object11(navigation.settings).drawerMode === true) return "side-menu";
194612
+ const navigation = object12(raw.navigation);
194613
+ if (object12(navigation.settings).drawerMode === true) return "side-menu";
194228
194614
  const entries = array4(navigation.bottomTabs);
194229
194615
  if (entries.length > 1) return "bottom-tabs";
194230
- const screens = object11(raw.screens);
194231
- const screenId = string6(object11(entries[0]).screenId);
194232
- const screen = screenId && Object.hasOwn(screens, screenId) ? object11(screens[screenId]) : {};
194233
- return object11(screen.layout).type === "TOP_TABS" ? "top-tabs" : "single";
194616
+ const screens = object12(raw.screens);
194617
+ const screenId = string6(object12(entries[0]).screenId);
194618
+ const screen = screenId && Object.hasOwn(screens, screenId) ? object12(screens[screenId]) : {};
194619
+ return object12(screen.layout).type === "TOP_TABS" ? "top-tabs" : "single";
194234
194620
  }
194235
194621
  function planNavigation(raw, policy = "bottom-tabs") {
194236
- const navigation = object11(raw.navigation);
194622
+ const navigation = object12(raw.navigation);
194237
194623
  const entries = array4(navigation.bottomTabs);
194238
- const screens = object11(raw.screens);
194239
- const layouts = object11(raw.layoutItems);
194624
+ const screens = object12(raw.screens);
194625
+ const layouts = object12(raw.layoutItems);
194240
194626
  const kind = sourceNavigationKind(raw);
194241
194627
  const warnings = [];
194242
- const firstEntry = object11(entries[0]);
194628
+ const firstEntry = object12(entries[0]);
194243
194629
  const rootScreenId = string6(firstEntry.screenId) ?? null;
194244
- const rootScreen = rootScreenId && Object.hasOwn(screens, rootScreenId) ? object11(screens[rootScreenId]) : {};
194245
- const rootLayout = object11(rootScreen.layout);
194246
- const settings = object11(navigation.settings);
194630
+ const rootScreen = rootScreenId && Object.hasOwn(screens, rootScreenId) ? object12(screens[rootScreenId]) : {};
194631
+ const rootLayout = object12(rootScreen.layout);
194632
+ const settings = object12(navigation.settings);
194247
194633
  const appInstance = string6(raw.appInstance) ?? null;
194248
194634
  const source = {
194249
194635
  kind,
@@ -194255,8 +194641,8 @@ function planNavigation(raw, policy = "bottom-tabs") {
194255
194641
  const next = "Build navigation from this plan with himi docs one-app-to-himi-app. Report every warning; the plan does not replace the source graph.";
194256
194642
  if (kind === "bottom-tabs") {
194257
194643
  entries.forEach((value2, index) => {
194258
- const id = string6(object11(value2).screenId);
194259
- if (id && Object.hasOwn(screens, id) && object11(object11(screens[id]).layout).type === "TOP_TABS") {
194644
+ const id = string6(object12(value2).screenId);
194645
+ if (id && Object.hasOwn(screens, id) && object12(object12(screens[id]).layout).type === "TOP_TABS") {
194260
194646
  warnings.push({ code: "nested_top_tabs", pointer: `/screens/${part3(id)}/layout/type`, reference: `/navigation/bottomTabs/${index}` });
194261
194647
  }
194262
194648
  });
@@ -194267,14 +194653,14 @@ function planNavigation(raw, policy = "bottom-tabs") {
194267
194653
  const tabs = [];
194268
194654
  const hiddenPages = [];
194269
194655
  array4(rootLayout.items).forEach((value2, index) => {
194270
- const layoutItemId = string6(object11(value2).layoutItemId);
194656
+ const layoutItemId = string6(object12(value2).layoutItemId);
194271
194657
  const itemPointer = `${pointer3}/${index}`;
194272
194658
  if (!layoutItemId || !Object.hasOwn(layouts, layoutItemId)) {
194273
194659
  warnings.push({ code: "missing_reference", pointer: itemPointer, ...layoutItemId ? { reference: layoutItemId } : {} });
194274
194660
  return;
194275
194661
  }
194276
- const layout = object11(layouts[layoutItemId]);
194277
- if (object11(layout.settings).hideFromNavigation === true) {
194662
+ const layout = object12(layouts[layoutItemId]);
194663
+ if (object12(layout.settings).hideFromNavigation === true) {
194278
194664
  hiddenPages.push({ layoutItemId, pointer: itemPointer });
194279
194665
  return;
194280
194666
  }
@@ -194319,11 +194705,11 @@ function planNavigation(raw, policy = "bottom-tabs") {
194319
194705
  next
194320
194706
  };
194321
194707
  }
194322
- var object11, array4, string6, part3, TOP_TABS_POLICIES, MAX_BAR_TABS;
194708
+ var object12, array4, string6, part3, TOP_TABS_POLICIES, MAX_BAR_TABS;
194323
194709
  var init_navigation = __esm({
194324
194710
  "src/one-app/navigation.ts"() {
194325
194711
  init_define_HHP_CATALOG();
194326
- object11 = (value2) => value2 !== null && typeof value2 === "object" && !Array.isArray(value2) ? value2 : {};
194712
+ object12 = (value2) => value2 !== null && typeof value2 === "object" && !Array.isArray(value2) ? value2 : {};
194327
194713
  array4 = (value2) => Array.isArray(value2) ? value2 : [];
194328
194714
  string6 = (value2) => typeof value2 === "string" && value2 ? value2 : void 0;
194329
194715
  part3 = (value2) => value2.replaceAll("~", "~0").replaceAll("/", "~1");
@@ -194941,7 +195327,7 @@ var init_spaces_host_manifest = __esm({
194941
195327
  "../../apps/himi-spaces-lite/spaces-host-manifest.ts"() {
194942
195328
  init_define_HHP_CATALOG();
194943
195329
  SPACES_HOST_MANIFEST = {
194944
- "version": "1.7.0",
195330
+ "version": "1.8.0",
194945
195331
  "capabilities": [
194946
195332
  "animation",
194947
195333
  "app_info",
@@ -197008,7 +197394,8 @@ function mergeCustomerOwned(committed, overlay) {
197008
197394
  "galleries",
197009
197395
  "site",
197010
197396
  "goals",
197011
- "businessContact"
197397
+ "businessContact",
197398
+ "loyalty"
197012
197399
  ];
197013
197400
  const customer = {};
197014
197401
  for (const key3 of CUSTOMER_OWNED) {
@@ -197031,10 +197418,13 @@ function mergeCustomerOwned(committed, overlay) {
197031
197418
  if (typeof value2 === "string" && value2.trim() === "") delete overlayIdentity[key3];
197032
197419
  }
197033
197420
  if (customer.identity !== void 0) customer.identity = overlayIdentity;
197034
- const { goals: _shellGoals, businessContact: previousContact, ...shell } = committed;
197421
+ const { goals: _shellGoals, businessContact: previousContact, loyalty: previousLoyalty, ...shell } = committed;
197035
197422
  if (customer.businessContact === void 0 && sameKnownSite(committed, overlay)) {
197036
197423
  customer.businessContact = previousContact;
197037
197424
  }
197425
+ if (customer.loyalty === void 0 && sameKnownSite(committed, overlay)) {
197426
+ customer.loyalty = previousLoyalty;
197427
+ }
197038
197428
  return deepMerge4(shell, customer);
197039
197429
  }
197040
197430
  function carryOverGoals(previousOverlayJson, overlay) {
@@ -197064,17 +197454,21 @@ function buildMergedContract(options) {
197064
197454
  }
197065
197455
  const committed = JSON.parse(readFileSync133(committedPath, "utf8"));
197066
197456
  const previousPath = join127(appDir3, LOCAL_CONTRACT_REL);
197067
- let contactOverlay = overlay;
197068
- if (overlay.businessContact === void 0 && existsSync114(previousPath)) {
197457
+ let evidenceOverlay = overlay;
197458
+ if ((overlay.businessContact === void 0 || overlay.loyalty === void 0) && existsSync114(previousPath)) {
197069
197459
  try {
197070
197460
  const previous = JSON.parse(readFileSync133(previousPath, "utf8"));
197071
197461
  if (previous && typeof previous === "object" && !Array.isArray(previous) && sameKnownSite(previous, overlay)) {
197072
- contactOverlay = { ...overlay, businessContact: previous.businessContact };
197462
+ evidenceOverlay = {
197463
+ ...overlay,
197464
+ ...overlay.businessContact === void 0 ? { businessContact: previous.businessContact } : {},
197465
+ ...overlay.loyalty === void 0 ? { loyalty: previous.loyalty } : {}
197466
+ };
197073
197467
  }
197074
197468
  } catch {
197075
197469
  }
197076
197470
  }
197077
- const merged = mergeCustomerOwned(committed, contactOverlay);
197471
+ const merged = mergeCustomerOwned(committed, evidenceOverlay);
197078
197472
  const overlayFontFamily = (overlay.branding ?? {}).fontFamily;
197079
197473
  const branding = merged.branding ?? {};
197080
197474
  const staged = [];
@@ -197269,6 +197663,8 @@ async function applyOverlays(input) {
197269
197663
  const merged = deepMerge4(cur, overlay);
197270
197664
  if (overlay.businessContact !== void 0) merged.businessContact = overlay.businessContact;
197271
197665
  else if (!sameKnownSite(cur, overlay)) delete merged.businessContact;
197666
+ if (overlay.loyalty !== void 0) merged.loyalty = overlay.loyalty;
197667
+ else if (!sameKnownSite(cur, overlay)) delete merged.loyalty;
197272
197668
  packageFaq = merged.faq;
197273
197669
  packageGalleries = merged.galleries;
197274
197670
  syncViewNames(cur.site, merged.site);