ghost 6.24.0 → 6.25.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 (207) hide show
  1. package/components/{tryghost-i18n-6.24.0.tgz → tryghost-i18n-6.25.0.tgz} +0 -0
  2. package/components/tryghost-parse-email-address-6.25.0.tgz +0 -0
  3. package/core/boot.js +3 -1
  4. package/core/built/admin/assets/{PolarAngleAxis-7TlIQL3R.js → PolarAngleAxis-BNo3yZOE.js} +1 -1
  5. package/core/built/admin/assets/{_baseAssignValue-DJsCJz6y.js → _baseAssignValue-DwWJd_kU.js} +1 -1
  6. package/core/built/admin/assets/{a-large-small-BnBpzYwl.js → a-large-small-DzN0AB7t.js} +1 -1
  7. package/core/built/admin/assets/{at-sign-DC4NtDDM.js → at-sign-vqoOA4VZ.js} +1 -1
  8. package/core/built/admin/assets/{audience-CC5U4UxI.js → audience-CFjVlFTu.js} +1 -1
  9. package/core/built/admin/assets/{avatar-flipboard-_GQfQXQc.js → avatar-flipboard-DuTJ0ty5.js} +1 -1
  10. package/core/built/admin/assets/{bluesky-sharing-BKyzPl9y.js → bluesky-sharing-C1WkXrRJ.js} +1 -1
  11. package/core/built/admin/assets/{chart-BCQFlmhJ.js → chart-Bs2L1q8g.js} +1 -1
  12. package/core/built/admin/assets/{chunk.423.dae9a3bbe7845c3a3cfc.js → chunk.434.de8a15730373eccfeefe.js} +13 -101
  13. package/core/built/admin/assets/{chunk.524.b5e454aa74df4428420c.js → chunk.524.ed5714f505e821e549f3.js} +5 -5
  14. package/core/built/admin/assets/{chunk.582.20635869be68725e6d5c.js → chunk.582.639cecaca9e77bd7dd4f.js} +7 -7
  15. package/core/built/admin/assets/{chunk.123.1255d9e815f933dfdc57.js → chunk.603.5cb992da88800a9388f3.js} +8 -6
  16. package/core/built/admin/assets/{code-editor-view-BXnjo7qe.js → code-editor-view-DIH4grxv.js} +1 -1
  17. package/core/built/admin/assets/comments-gAnA10dK.js +1 -0
  18. package/core/built/admin/assets/{content-helpers-CQXipRWa.js → content-helpers-Cr_DHEOl.js} +1 -1
  19. package/core/built/admin/assets/{copy-B-MxRWPu.js → copy-w3c9zkaZ.js} +1 -1
  20. package/core/built/admin/assets/{data-list-B2sqn7IE.js → data-list-D-K_XfF3.js} +1 -1
  21. package/core/built/admin/assets/{deleted-feed-item-DQi676Dy.js → deleted-feed-item-DK47iaMV.js} +1 -1
  22. package/core/built/admin/assets/{dropzone-GgOCfK2j.js → dropzone-BHWXAN0m.js} +3 -3
  23. package/core/built/admin/assets/{edit-profile-COx5FmF9.js → edit-profile-DCyHhZgx.js} +1 -1
  24. package/core/built/admin/assets/{empty-indicator-Bf4Dqk72.js → empty-indicator-DjmACVr2.js} +1 -1
  25. package/core/built/admin/assets/{en-BkI47Ou-.js → en-Cl0b7CNW.js} +1 -1
  26. package/core/built/admin/assets/{feed-Dzc-8jwd.js → feed-C5AauoXf.js} +1 -1
  27. package/core/built/admin/assets/filters-DzSJ1ez3.js +1 -0
  28. package/core/built/admin/assets/{gh-chart-Ch6dYUac.js → gh-chart-xjwu2HZo.js} +1 -1
  29. package/core/built/admin/assets/{ghost-69e448feab2cb78aba64f7177fa4d6f0.js → ghost-78b4a517ac907213ab47708eef33bc6f.js} +423 -542
  30. package/core/built/admin/assets/{growth-BIBJdcm6.js → growth-DDyypj0q.js} +1 -1
  31. package/core/built/admin/assets/{hash-BGd7HEsT.js → hash-Bowe71Lt.js} +1 -1
  32. package/core/built/admin/assets/{inbox-CFzKvW3h.js → inbox-DS4qMjUb.js} +1 -1
  33. package/core/built/admin/assets/{index-DDJAHYHQ.js → index-4xuWCs9h.js} +1 -1
  34. package/core/built/admin/assets/{index-DIO8ceib.js → index-6Ag8SK_E.js} +1 -1
  35. package/core/built/admin/assets/{index-Dy8dCc8t.js → index-A6WmqYr6.js} +4 -4
  36. package/core/built/admin/assets/index-B8XuCPIT.js +1 -0
  37. package/core/built/admin/assets/{index-S2DGJkmz.js → index-BCvRITTU.js} +2 -2
  38. package/core/built/admin/assets/{index-BZyG96u1.js → index-B_XhekWb.js} +1 -1
  39. package/core/built/admin/assets/{index-D0gRP4Gp.js → index-C8ssgmjI.js} +1 -1
  40. package/core/built/admin/assets/{index-DM98UB_U.js → index-CFY2MOp4.js} +1 -1
  41. package/core/built/admin/assets/{index-CvX5YYEz.js → index-CVvW6Q-y.js} +1 -1
  42. package/core/built/admin/assets/{index-DpZazR71.js → index-CZK1A375.js} +1 -1
  43. package/core/built/admin/assets/{index-BYXKsmpv.js → index-CfpTfwls.js} +1 -1
  44. package/core/built/admin/assets/index-Chp0ODAU.css +1 -0
  45. package/core/built/admin/assets/{index-7NTHsKgE.js → index-DX6vaEVx.js} +1 -1
  46. package/core/built/admin/assets/{index-CsHjDdYB.js → index-DqlHFtZD.js} +1 -1
  47. package/core/built/admin/assets/{index-ZuWSQ3L6.js → index-JMWMnGGt.js} +93 -93
  48. package/core/built/admin/assets/{index-_WMp37yL.js → index-N61Xkr32.js} +1 -1
  49. package/core/built/admin/assets/{index-n5opb8tL.js → index-SDMWxO5r.js} +1 -1
  50. package/core/built/admin/assets/{koenig-lexical-8qAZ5o1x.js → koenig-lexical-DL3I-AcK.js} +1 -1
  51. package/core/built/admin/assets/{kpis-Cv75oSPY.js → kpis-Bm-hIEkf.js} +1 -1
  52. package/core/built/admin/assets/{label-CofMdj8x.js → label-DBwnwMrX.js} +1 -1
  53. package/core/built/admin/assets/{links-MSlYSad1.js → links-CnjcW0lg.js} +1 -1
  54. package/core/built/admin/assets/{loader-circle-CF5G2g_Z.js → loader-circle-CGDGFypO.js} +1 -1
  55. package/core/built/admin/assets/{lucide-react-DZiAu6PQ.js → lucide-react-BfVLf4Hw.js} +1 -1
  56. package/core/built/admin/assets/{main-layout-DEVUkqt_.js → main-layout-C_UH037j.js} +1 -1
  57. package/core/built/admin/assets/{member-route-mLKS-PsA.js → member-route-CKuE9uDU.js} +1 -1
  58. package/core/built/admin/assets/members-CzztojNk.js +15 -0
  59. package/core/built/admin/assets/{message-square-text-DESy3kSk.js → message-square-text-BDJyLbG2.js} +1 -1
  60. package/core/built/admin/assets/{minus-DVNwSjD6.js → minus-BM0xhFIQ.js} +1 -1
  61. package/core/built/admin/assets/{modals-FYjLOMaQ.js → modals-B6ZySU0x.js} +13 -13
  62. package/core/built/admin/assets/{moderation-u4WS46a-.js → moderation-CQMIGpv1.js} +1 -1
  63. package/core/built/admin/assets/{newsletter-Cj0UCg4J.js → newsletter-Dexg7vU8.js} +1 -1
  64. package/core/built/admin/assets/{newsletters-_UvhdBE3.js → newsletters-CT4k07rm.js} +1 -1
  65. package/core/built/admin/assets/{note-CRnFryTp.js → note-CiemurXq.js} +1 -1
  66. package/core/built/admin/assets/{overview-Cr0dGxEU.js → overview-9TwqfzGq.js} +1 -1
  67. package/core/built/admin/assets/{pagemenu-BqoDENpI.js → pagemenu-Dq744OgH.js} +1 -1
  68. package/core/built/admin/assets/{post-analytics-DIr_rDtL.js → post-analytics-CcRhLDKA.js} +1 -1
  69. package/core/built/admin/assets/{post-analytics-context-WA--pwK5.js → post-analytics-context-COgn3d86.js} +1 -1
  70. package/core/built/admin/assets/{post-analytics-header-D97SoEaV.js → post-analytics-header-DtBp2QSX.js} +1 -1
  71. package/core/built/admin/assets/{post-share-modal-DBxR7WCX.js → post-share-modal-BlOEKX3-.js} +1 -1
  72. package/core/built/admin/assets/posts/comments-C4rwkXWy.mjs +1473 -0
  73. package/core/built/admin/assets/posts/{dialog-67vvNv8e.mjs → dialog-Chkt119L.mjs} +3 -3
  74. package/core/built/admin/assets/posts/{dropdown-menu-BKZfsAPJ.mjs → dropdown-menu-CvSs_ay2.mjs} +5 -5
  75. package/core/built/admin/assets/posts/{empty-indicator-DTmBQa_3.mjs → empty-indicator-GyeO28CG.mjs} +2 -2
  76. package/core/built/admin/assets/posts/filters-BD3A2GlB.mjs +2831 -0
  77. package/core/built/admin/assets/posts/{get-site-timezone-D75cHSJ1.mjs → get-site-timezone-Baeue4hE.mjs} +2 -2
  78. package/core/built/admin/assets/posts/{growth-BqJWjpAp.mjs → growth-kmVbKjBt.mjs} +14 -14
  79. package/core/built/admin/assets/posts/{heading-DXxLDQ96.mjs → heading-DV_WQJh4.mjs} +2 -2
  80. package/core/built/admin/assets/posts/{hooks-pVotzebr.mjs → hooks-DQhsid0U.mjs} +2 -2
  81. package/core/built/admin/assets/posts/{index-By5yPnMZ.mjs → index-Bl1ReYmV.mjs} +10 -10
  82. package/core/built/admin/assets/posts/{index-DZ1HzbGS.mjs → index-CVum5OE6.mjs} +3 -3
  83. package/core/built/admin/assets/posts/{input-DdXe2Fjm.mjs → input-C7qFEkmt.mjs} +2 -2
  84. package/core/built/admin/assets/posts/{kpis-1MXZeSC9.mjs → kpis-DteuJY-D.mjs} +10 -10
  85. package/core/built/admin/assets/posts/{links-DGzzdzsH.mjs → links-eoZr0T0x.mjs} +4 -4
  86. package/core/built/admin/assets/posts/{loading-indicator-CSj2spwS.mjs → loading-indicator-Dj1SCL40.mjs} +3 -3
  87. package/core/built/admin/assets/posts/{main-layout-CGs25JVH.mjs → main-layout-Ct-TA0TH.mjs} +2 -2
  88. package/core/built/admin/assets/posts/{members-BRcED5fL.mjs → members-BY9oPKo4.mjs} +3814 -3378
  89. package/core/built/admin/assets/posts/{newsletter-D706LlgM.mjs → newsletter-BR1tln6E.mjs} +15 -15
  90. package/core/built/admin/assets/posts/{overview-5dG5ypjx.mjs → overview-j1ANMAQ2.mjs} +16 -16
  91. package/core/built/admin/assets/posts/{post-analytics-wvNuOa4c.mjs → post-analytics-DnG-Rolr.mjs} +6 -6
  92. package/core/built/admin/assets/posts/{post-analytics-context-BqnFe05q.mjs → post-analytics-context-hiKFF4yE.mjs} +5 -5
  93. package/core/built/admin/assets/posts/{post-analytics-header-Dsi5l6hb.mjs → post-analytics-header-OqAJ8SUL.mjs} +11 -11
  94. package/core/built/admin/assets/posts/{post-share-modal-DWe35McY.mjs → post-share-modal-BWfujDu2.mjs} +4 -4
  95. package/core/built/admin/assets/posts/posts-CS9tqSJC.mjs +37 -0
  96. package/core/built/admin/assets/posts/posts.js +1 -1
  97. package/core/built/admin/assets/posts/{reply-B4vwBMwj.mjs → reply-CX_EQh9X.mjs} +2 -2
  98. package/core/built/admin/assets/posts/{search-DQuB1WMm.mjs → search-BqzdnPQb.mjs} +2 -2
  99. package/core/built/admin/assets/posts/{select-BMPHyOdQ.mjs → select-CD5WLIrZ.mjs} +8 -8
  100. package/core/built/admin/assets/posts/{separator-DgZ2VF9r.mjs → separator-DFPLsWCc.mjs} +3 -3
  101. package/core/built/admin/assets/posts/{settings-D-wnf7Qg.mjs → settings-lnEt3Kb-.mjs} +2 -2
  102. package/core/built/admin/assets/posts/{sheet-SOdCzxUt.mjs → sheet-CkLfUqdH.mjs} +3 -3
  103. package/core/built/admin/assets/posts/{skeleton-Du7JXZ_1.mjs → skeleton-BZCi-IYy.mjs} +3 -3
  104. package/core/built/admin/assets/posts/{source-icon-DcBtKbCl.mjs → source-icon-C0k2hDC_.mjs} +3 -3
  105. package/core/built/admin/assets/posts/{stats-CeLav-Hu.mjs → stats-AHbSTqzG.mjs} +4 -4
  106. package/core/built/admin/assets/posts/{table-DlaJMBps.mjs → table-DMrf6wp5.mjs} +2 -2
  107. package/core/built/admin/assets/posts/{tabs-BQQbtw2g.mjs → tabs-BH8GNJCe.mjs} +14 -14
  108. package/core/built/admin/assets/posts/tags-C5VV8Gd0.mjs +398 -0
  109. package/core/built/admin/assets/posts/{tags-CLyaNf39.mjs → tags-DucujdYI.mjs} +2 -2
  110. package/core/built/admin/assets/posts/use-scroll-restoration-C7A3TpAz.mjs +517 -0
  111. package/core/built/admin/assets/posts/{use-infinite-virtual-scroll-B_NwiBXK.mjs → virtual-list-window-BIGoc0th.mjs} +322 -244
  112. package/core/built/admin/assets/posts/{web-TEVKbXSI.mjs → web-DczNailO.mjs} +18 -18
  113. package/core/built/admin/assets/posts-Dr3u9yOp.js +1 -0
  114. package/core/built/admin/assets/{referrers-J4vexZCf.js → referrers-6As_USul.js} +1 -1
  115. package/core/built/admin/assets/{repeat-BxOK9zhN.js → repeat-D-Ki-Cg5.js} +1 -1
  116. package/core/built/admin/assets/{reply-BoTN-eE0.js → reply-C4V0xZ2U.js} +1 -1
  117. package/core/built/admin/assets/{select-Bd1zcqox.js → select-Dt579MbD.js} +1 -1
  118. package/core/built/admin/assets/{settings-D72z6T_a.js → settings-BMsoTszq.js} +1 -1
  119. package/core/built/admin/assets/{settings-BGbGoa4s.js → settings-Ck1Hqs1x.js} +19 -19
  120. package/core/built/admin/assets/{sort-button-BOLTpImz.js → sort-button-Bn325H3y.js} +1 -1
  121. package/core/built/admin/assets/{source-icon-BqEM5MvU.js → source-icon-CNqsYZeA.js} +1 -1
  122. package/core/built/admin/assets/{sprout-Bf-wc2Vo.js → sprout-C9DbfYGe.js} +1 -1
  123. package/core/built/admin/assets/{square-Cj_bJ0HZ.js → square-CWrI0H4v.js} +1 -1
  124. package/core/built/admin/assets/stats/{audience-BiHYBUzT.mjs → audience-DBW5Xu1c.mjs} +3 -3
  125. package/core/built/admin/assets/stats/{content-helpers-CIXZiyCm.mjs → content-helpers-BR6DcWwH.mjs} +4 -4
  126. package/core/built/admin/assets/stats/{index-DBB8Oih1.mjs → index-BuS4r1cs.mjs} +5 -5
  127. package/core/built/admin/assets/stats/{index-CkKk-p14.mjs → index-CFvGHbAV.mjs} +8 -8
  128. package/core/built/admin/assets/stats/{index-9zQR4gr0.mjs → index-DKS4mzS-.mjs} +3621 -3512
  129. package/core/built/admin/assets/stats/{index-DMSmQLxG.mjs → index-TeAxlGlY.mjs} +5 -5
  130. package/core/built/admin/assets/stats/{index-DErXBfDM.mjs → index-ZjicrvMA.mjs} +5 -5
  131. package/core/built/admin/assets/stats/{sort-button-BqY7GFaO.mjs → sort-button-DbwzvVKL.mjs} +3 -3
  132. package/core/built/admin/assets/stats/{stats-BeJgKX2G.mjs → stats-BatzfgdA.mjs} +4 -4
  133. package/core/built/admin/assets/stats/stats.js +1 -1
  134. package/core/built/admin/assets/stats/{tabs-CPz357mW.mjs → tabs-B32ptD5t.mjs} +3 -3
  135. package/core/built/admin/assets/stats/{use-growth-stats-WMYXBQE3.mjs → use-growth-stats-DmTT2gKd.mjs} +3 -3
  136. package/core/built/admin/assets/{stats-DWpHtRym.js → stats-G4Ge9ETb.js} +1 -1
  137. package/core/built/admin/assets/stats-view-Bx3oDAIW.js +1 -0
  138. package/core/built/admin/assets/{step-1-Bjya9Gt0.js → step-1-y3anLU0g.js} +1 -1
  139. package/core/built/admin/assets/{step-2-CJ6I8JNc.js → step-2-Dr1lGnHU.js} +1 -1
  140. package/core/built/admin/assets/{step-3-3fs6Y2Kj.js → step-3-C_d2hvMs.js} +2 -2
  141. package/core/built/admin/assets/{table-B4zlzEDP.js → table-CbN_vbUx.js} +1 -1
  142. package/core/built/admin/assets/{tabs-mR5oJGm5.js → tabs-DFJzY5np.js} +1 -1
  143. package/core/built/admin/assets/tags-D5g9tXZU.js +1 -0
  144. package/core/built/admin/assets/{tags-CsgMtkFL.js → tags-Ddg8oG2Y.js} +1 -1
  145. package/core/built/admin/assets/{textarea-CQjEvapR.js → textarea-DikWsYMt.js} +1 -1
  146. package/core/built/admin/assets/{tiers-CQE0v797.js → tiers-B7qV_8mO.js} +1 -1
  147. package/core/built/admin/assets/{toggle-group-CR-Z-bJL.js → toggle-group-tXaaTD7P.js} +1 -1
  148. package/core/built/admin/assets/{topic-filter-_NyD55eH.js → topic-filter-bQtscKE6.js} +1 -1
  149. package/core/built/admin/assets/{trash-BFSLkv0z.js → trash--VS50LgS.js} +1 -1
  150. package/core/built/admin/assets/{upload-BTxT4v2z.js → upload-Dz-DI9rQ.js} +1 -1
  151. package/core/built/admin/assets/{use-growth-stats-BGymNu5O.js → use-growth-stats-DNVioFUq.js} +1 -1
  152. package/core/built/admin/assets/use-scroll-restoration-CxWEiCuS.js +1 -0
  153. package/core/built/admin/assets/{use-simple-pagination-Cq7Afp_c.js → use-simple-pagination-BA6xsVQO.js} +1 -1
  154. package/core/built/admin/assets/{user-plus-DMl69yKl.js → user-plus-B0tpOnLM.js} +1 -1
  155. package/core/built/admin/assets/{user-round-check-CVuZXUPz.js → user-round-check-caJYm0bB.js} +1 -1
  156. package/core/built/admin/assets/virtual-list-window-JdKgHS9L.js +4 -0
  157. package/core/built/admin/assets/{wallet-cards-zHR_y6Sp.js → wallet-cards-DBM65lA_.js} +1 -1
  158. package/core/built/admin/assets/{web-CmFHgeQw.js → web-CSXixG1S.js} +1 -1
  159. package/core/built/admin/index.html +7 -7
  160. package/core/frontend/helpers/ghost_head.js +1 -4
  161. package/core/server/data/migrations/versions/6.25/2026-03-26-15-47-00-insert-default-email-design-settings-row.js +42 -0
  162. package/core/server/data/migrations/versions/6.25/2026-03-30-20-22-25-add-email-design-setting-permissions.js +44 -0
  163. package/core/server/data/migrations/versions/6.25/2026-03-30-22-16-43-add-email-design-setting-id-to-automated-emails.js +8 -0
  164. package/core/server/data/migrations/versions/6.25/2026-03-31-13-12-10-backfill-automated-emails-email-design-setting-id.js +45 -0
  165. package/core/server/data/migrations/versions/6.25/2026-03-31-20-31-19-drop-nullable-on-automated-emails-email-design-setting-id.js +3 -0
  166. package/core/server/data/schema/fixtures/fixtures.json +35 -0
  167. package/core/server/data/schema/schema.js +1 -0
  168. package/core/server/data/seeders/importers/comment-reports-importer.js +1 -3
  169. package/core/server/data/seeders/importers/comments-importer.js +3 -2
  170. package/core/server/data/seeders/importers/email-batches-importer.js +3 -3
  171. package/core/server/data/seeders/importers/email-recipients-importer.js +6 -6
  172. package/core/server/data/seeders/importers/emails-importer.js +4 -3
  173. package/core/server/data/seeders/importers/members-click-events-importer.js +1 -1
  174. package/core/server/data/seeders/importers/members-created-events-importer.js +2 -1
  175. package/core/server/data/seeders/importers/members-feedback-importer.js +3 -4
  176. package/core/server/data/seeders/importers/members-login-events-importer.js +3 -2
  177. package/core/server/data/seeders/importers/members-status-events-importer.js +1 -2
  178. package/core/server/data/seeders/importers/members-stripe-customers-importer.js +2 -1
  179. package/core/server/data/seeders/importers/members-stripe-customers-subscriptions-importer.js +4 -2
  180. package/core/server/data/seeders/importers/members-subscribe-events-importer.js +1 -2
  181. package/core/server/data/seeders/importers/members-subscription-created-events-importer.js +3 -1
  182. package/core/server/data/seeders/importers/offer-redemptions-importer.js +3 -3
  183. package/core/server/data/seeders/utils/database-date.js +26 -1
  184. package/core/server/models/automated-email.js +27 -0
  185. package/core/server/models/email-design-setting.js +27 -0
  186. package/core/server/services/stripe/service.js +1 -2
  187. package/core/server/services/webhooks/webhook-trigger.js +1 -1
  188. package/package.json +10 -28
  189. package/tsconfig.tsbuildinfo +1 -1
  190. package/yarn.lock +423 -107
  191. package/components/tryghost-parse-email-address-6.24.0.tgz +0 -0
  192. package/core/built/admin/assets/comments-CteqV7ZN.js +0 -1
  193. package/core/built/admin/assets/filters-DXXaCya7.js +0 -1
  194. package/core/built/admin/assets/index-QB-va_sk.css +0 -1
  195. package/core/built/admin/assets/index-nBUk6L1X.js +0 -1
  196. package/core/built/admin/assets/members-DcElgZ2t.js +0 -15
  197. package/core/built/admin/assets/posts/comments-Bswx2dzs.mjs +0 -1551
  198. package/core/built/admin/assets/posts/filters-Ds_ZaYIU.mjs +0 -2722
  199. package/core/built/admin/assets/posts/posts-DI5YQFp4.mjs +0 -17
  200. package/core/built/admin/assets/posts/tags-CjwolIiT.mjs +0 -395
  201. package/core/built/admin/assets/posts/use-scroll-restoration-YSR5jwQl.mjs +0 -232
  202. package/core/built/admin/assets/posts-CJHEP4C-.js +0 -1
  203. package/core/built/admin/assets/stats-view-CcyaLPwj.js +0 -1
  204. package/core/built/admin/assets/tags-DEFC6GpD.js +0 -1
  205. package/core/built/admin/assets/use-infinite-virtual-scroll-CNqGwgHd.js +0 -4
  206. package/core/built/admin/assets/use-scroll-restoration-BWtb0NrS.js +0 -1
  207. /package/core/built/admin/assets/{chunk.423.dae9a3bbe7845c3a3cfc.js.LICENSE.txt → chunk.434.de8a15730373eccfeefe.js.LICENSE.txt} +0 -0
@@ -1,69 +1,69 @@
1
- import { j as v, n as b, T as R, $ as T, u as F, U as j, b as _, a5 as D } from "./index-By5yPnMZ.mjs";
2
- import { k as W } from "./heading-DXxLDQ96.mjs";
3
- function H({ className: n, children: l }) {
1
+ import { R as F, j as v, n as b, T as L, $ as D, u as k, U as H, b as E, a5 as N, _ as V, q as B } from "./index-Bl1ReYmV.mjs";
2
+ import { k as U, B as K } from "./heading-DV_WQJh4.mjs";
3
+ function P({ className: n, children: r }) {
4
4
  return /* @__PURE__ */ v.jsx(
5
5
  "div",
6
6
  {
7
7
  className: b("flex items-center gap-2 [grid-area:above]", n),
8
8
  "data-header": "header-above",
9
- children: l
9
+ children: r
10
10
  }
11
11
  );
12
12
  }
13
- function N({ className: n, children: l }) {
13
+ function $({ className: n, children: r }) {
14
14
  return /* @__PURE__ */ v.jsx(
15
- W,
15
+ U,
16
16
  {
17
17
  className: b(
18
18
  "text-2xl leading-[1.2em] lg:text-3xl [grid-area:title]",
19
19
  n
20
20
  ),
21
21
  "data-header": "header-title",
22
- children: l
22
+ children: r
23
23
  }
24
24
  );
25
25
  }
26
- function V({ className: n, children: l }) {
26
+ function q({ className: n, children: r }) {
27
27
  return /* @__PURE__ */ v.jsx(
28
28
  "div",
29
29
  {
30
30
  className: b("flex items-center justify-start text-muted-foreground [grid-area:meta] pb-4 pt-1", n),
31
31
  "data-header": "header-meta",
32
- children: l
32
+ children: r
33
33
  }
34
34
  );
35
35
  }
36
- function L({ className: n, children: l }) {
36
+ function Y({ className: n, children: r }) {
37
37
  return /* @__PURE__ */ v.jsx(
38
38
  "div",
39
39
  {
40
40
  className: b("flex items-center gap-2", n),
41
41
  "data-header": "header-action-group",
42
- children: l
42
+ children: r
43
43
  }
44
44
  );
45
45
  }
46
- function B({ className: n, children: l }) {
46
+ function G({ className: n, children: r }) {
47
47
  return /* @__PURE__ */ v.jsx(
48
48
  "div",
49
49
  {
50
50
  className: b("flex items-center gap-4 [grid-area:actions] sm:justify-self-end self-start", n),
51
51
  "data-header": "header-actions",
52
- children: l
52
+ children: r
53
53
  }
54
54
  );
55
55
  }
56
- function P({ className: n, children: l }) {
56
+ function Z({ className: n, children: r }) {
57
57
  return /* @__PURE__ */ v.jsx(
58
58
  "div",
59
59
  {
60
60
  className: b("flex items-center gap-2 [grid-area:nav] self-start mt-2 lg:mt-0.5", n),
61
61
  "data-header": "header-nav",
62
- children: l
62
+ children: r
63
63
  }
64
64
  );
65
65
  }
66
- const $ = R("sticky top-0 z-50 -mb-4 grid gap-x-4 bg-gradient-to-b from-background via-background/70 to-background/70 p-4 backdrop-blur-md [grid-template-areas:'above''title''meta''actions''nav'] sm:[grid-template-areas:'above_above''title_actions''meta_actions''nav_nav'] lg:-mb-8 lg:p-8 dark:bg-black", {
66
+ const J = L("sticky top-0 z-50 -mb-4 grid gap-x-4 bg-gradient-to-b from-background via-background/70 to-background/70 p-4 backdrop-blur-md [grid-template-areas:'above''title''meta''actions''nav'] sm:[grid-template-areas:'above_above''title_actions''meta_actions''nav_nav'] lg:-mb-8 lg:p-8 dark:bg-black", {
67
67
  variants: {
68
68
  variant: {
69
69
  default: "lg:[grid-template-areas:'above_above''title_actions''meta_actions''nav_nav']",
@@ -73,47 +73,62 @@ const $ = R("sticky top-0 z-50 -mb-4 grid gap-x-4 bg-gradient-to-b from-backgrou
73
73
  defaultVariants: {
74
74
  variant: "default"
75
75
  }
76
- });
77
- function w({ className: n, children: l, variant: e }) {
78
- return /* @__PURE__ */ v.jsx(
79
- "header",
76
+ }), pe = Object.assign(
77
+ F.forwardRef(function({ className: r, children: e, variant: t }, s) {
78
+ return /* @__PURE__ */ v.jsx(
79
+ "header",
80
+ {
81
+ ref: s,
82
+ className: b(J({ variant: t, className: r })),
83
+ "data-header": "header",
84
+ children: e
85
+ }
86
+ );
87
+ }),
88
+ {
89
+ Above: P,
90
+ Title: $,
91
+ Actions: G,
92
+ ActionGroup: Y,
93
+ Nav: Z,
94
+ Meta: q
95
+ }
96
+ ), ve = ({ isLoading: n, onClick: r }) => {
97
+ const e = !!n;
98
+ return /* @__PURE__ */ v.jsx("div", { className: "flex justify-center px-4 py-6", children: /* @__PURE__ */ v.jsx(
99
+ K,
80
100
  {
81
- className: b($({ variant: e, className: n })),
82
- "data-header": "header",
83
- children: l
101
+ disabled: e,
102
+ variant: "outline",
103
+ onClick: r,
104
+ children: e ? "Loading more..." : "Load more"
84
105
  }
85
- );
86
- }
87
- w.Above = H;
88
- w.Title = N;
89
- w.Actions = B;
90
- w.ActionGroup = L;
91
- w.Nav = P;
92
- w.Meta = V;
93
- function I(n) {
106
+ ) });
107
+ };
108
+ function T(n) {
94
109
  const e = n instanceof HTMLElement && window.getComputedStyle(n).overflowY, t = e !== "visible" && e !== "hidden";
95
110
  if (n) {
96
111
  if (t && n.scrollHeight >= n.clientHeight)
97
112
  return n;
98
113
  } else return null;
99
- return I(n.parentNode) || document.body;
114
+ return T(n.parentNode) || document.body;
100
115
  }
101
- function S(n, l, e) {
116
+ function y(n, r, e) {
102
117
  let t = e.initialDeps ?? [], s;
103
- function i() {
104
- var o, r, a, c;
105
- let h;
106
- e.key && ((o = e.debug) != null && o.call(e)) && (h = Date.now());
118
+ function o() {
119
+ var i, a, l, u;
120
+ let c;
121
+ e.key && ((i = e.debug) != null && i.call(e)) && (c = Date.now());
107
122
  const d = n();
108
123
  if (!(d.length !== t.length || d.some((f, g) => t[g] !== f)))
109
124
  return s;
110
125
  t = d;
111
126
  let m;
112
- if (e.key && ((r = e.debug) != null && r.call(e)) && (m = Date.now()), s = l(...d), e.key && ((a = e.debug) != null && a.call(e))) {
113
- const f = Math.round((Date.now() - h) * 100) / 100, g = Math.round((Date.now() - m) * 100) / 100, x = g / 16, p = (y, A) => {
114
- for (y = String(y); y.length < A; )
115
- y = " " + y;
116
- return y;
127
+ if (e.key && ((a = e.debug) != null && a.call(e)) && (m = Date.now()), s = r(...d), e.key && ((l = e.debug) != null && l.call(e))) {
128
+ const f = Math.round((Date.now() - c) * 100) / 100, g = Math.round((Date.now() - m) * 100) / 100, x = g / 16, p = (w, W) => {
129
+ for (w = String(w); w.length < W; )
130
+ w = " " + w;
131
+ return w;
117
132
  };
118
133
  console.info(
119
134
  `%c⏱ ${p(g, 5)} /${p(f, 5)} ms`,
@@ -127,64 +142,64 @@ function S(n, l, e) {
127
142
  e == null ? void 0 : e.key
128
143
  );
129
144
  }
130
- return (c = e == null ? void 0 : e.onChange) == null || c.call(e, s), s;
145
+ return (u = e == null ? void 0 : e.onChange) == null || u.call(e, s), s;
131
146
  }
132
- return i.updateDeps = (o) => {
133
- t = o;
134
- }, i;
147
+ return o.updateDeps = (i) => {
148
+ t = i;
149
+ }, o;
135
150
  }
136
- function M(n, l) {
151
+ function z(n, r) {
137
152
  if (n === void 0)
138
153
  throw new Error("Unexpected undefined");
139
154
  return n;
140
155
  }
141
- const q = (n, l) => Math.abs(n - l) < 1.01, U = (n, l, e) => {
156
+ const Q = (n, r) => Math.abs(n - r) < 1.01, X = (n, r, e) => {
142
157
  let t;
143
158
  return function(...s) {
144
- n.clearTimeout(t), t = n.setTimeout(() => l.apply(this, s), e);
159
+ n.clearTimeout(t), t = n.setTimeout(() => r.apply(this, s), e);
145
160
  };
146
- }, E = (n) => {
147
- const { offsetWidth: l, offsetHeight: e } = n;
148
- return { width: l, height: e };
149
- }, K = (n) => n, G = (n) => {
150
- const l = Math.max(n.startIndex - n.overscan, 0), e = Math.min(n.endIndex + n.overscan, n.count - 1), t = [];
151
- for (let s = l; s <= e; s++)
161
+ }, O = (n) => {
162
+ const { offsetWidth: r, offsetHeight: e } = n;
163
+ return { width: r, height: e };
164
+ }, ee = (n) => n, te = (n) => {
165
+ const r = Math.max(n.startIndex - n.overscan, 0), e = Math.min(n.endIndex + n.overscan, n.count - 1), t = [];
166
+ for (let s = r; s <= e; s++)
152
167
  t.push(s);
153
168
  return t;
154
- }, Y = (n, l) => {
169
+ }, se = (n, r) => {
155
170
  const e = n.scrollElement;
156
171
  if (!e)
157
172
  return;
158
173
  const t = n.targetWindow;
159
174
  if (!t)
160
175
  return;
161
- const s = (o) => {
162
- const { width: r, height: a } = o;
163
- l({ width: Math.round(r), height: Math.round(a) });
176
+ const s = (i) => {
177
+ const { width: a, height: l } = i;
178
+ r({ width: Math.round(a), height: Math.round(l) });
164
179
  };
165
- if (s(E(e)), !t.ResizeObserver)
180
+ if (s(O(e)), !t.ResizeObserver)
166
181
  return () => {
167
182
  };
168
- const i = new t.ResizeObserver((o) => {
169
- const r = () => {
170
- const a = o[0];
171
- if (a != null && a.borderBoxSize) {
172
- const c = a.borderBoxSize[0];
173
- if (c) {
174
- s({ width: c.inlineSize, height: c.blockSize });
183
+ const o = new t.ResizeObserver((i) => {
184
+ const a = () => {
185
+ const l = i[0];
186
+ if (l != null && l.borderBoxSize) {
187
+ const u = l.borderBoxSize[0];
188
+ if (u) {
189
+ s({ width: u.inlineSize, height: u.blockSize });
175
190
  return;
176
191
  }
177
192
  }
178
- s(E(e));
193
+ s(O(e));
179
194
  };
180
- n.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(r) : r();
195
+ n.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(a) : a();
181
196
  });
182
- return i.observe(e, { box: "border-box" }), () => {
183
- i.unobserve(e);
197
+ return o.observe(e, { box: "border-box" }), () => {
198
+ o.unobserve(e);
184
199
  };
185
- }, z = {
200
+ }, I = {
186
201
  passive: !0
187
- }, O = typeof window > "u" ? !0 : "onscrollend" in window, J = (n, l) => {
202
+ }, C = typeof window > "u" ? !0 : "onscrollend" in window, ne = (n, r) => {
188
203
  const e = n.scrollElement;
189
204
  if (!e)
190
205
  return;
@@ -192,52 +207,52 @@ const q = (n, l) => Math.abs(n - l) < 1.01, U = (n, l, e) => {
192
207
  if (!t)
193
208
  return;
194
209
  let s = 0;
195
- const i = n.options.useScrollendEvent && O ? () => {
196
- } : U(
210
+ const o = n.options.useScrollendEvent && C ? () => {
211
+ } : X(
197
212
  t,
198
213
  () => {
199
- l(s, !1);
214
+ r(s, !1);
200
215
  },
201
216
  n.options.isScrollingResetDelay
202
- ), o = (h) => () => {
203
- const { horizontal: d, isRtl: u } = n.options;
204
- s = d ? e.scrollLeft * (u && -1 || 1) : e.scrollTop, i(), l(s, h);
205
- }, r = o(!0), a = o(!1);
206
- a(), e.addEventListener("scroll", r, z);
207
- const c = n.options.useScrollendEvent && O;
208
- return c && e.addEventListener("scrollend", a, z), () => {
209
- e.removeEventListener("scroll", r), c && e.removeEventListener("scrollend", a);
217
+ ), i = (c) => () => {
218
+ const { horizontal: d, isRtl: h } = n.options;
219
+ s = d ? e.scrollLeft * (h && -1 || 1) : e.scrollTop, o(), r(s, c);
220
+ }, a = i(!0), l = i(!1);
221
+ l(), e.addEventListener("scroll", a, I);
222
+ const u = n.options.useScrollendEvent && C;
223
+ return u && e.addEventListener("scrollend", l, I), () => {
224
+ e.removeEventListener("scroll", a), u && e.removeEventListener("scrollend", l);
210
225
  };
211
- }, Q = (n, l, e) => {
212
- if (l != null && l.borderBoxSize) {
213
- const t = l.borderBoxSize[0];
226
+ }, ie = (n, r, e) => {
227
+ if (r != null && r.borderBoxSize) {
228
+ const t = r.borderBoxSize[0];
214
229
  if (t)
215
230
  return Math.round(
216
231
  t[e.options.horizontal ? "inlineSize" : "blockSize"]
217
232
  );
218
233
  }
219
234
  return n[e.options.horizontal ? "offsetWidth" : "offsetHeight"];
220
- }, X = (n, {
221
- adjustments: l = 0,
235
+ }, oe = (n, {
236
+ adjustments: r = 0,
222
237
  behavior: e
223
238
  }, t) => {
224
- var s, i;
225
- const o = n + l;
226
- (i = (s = t.scrollElement) == null ? void 0 : s.scrollTo) == null || i.call(s, {
227
- [t.options.horizontal ? "left" : "top"]: o,
239
+ var s, o;
240
+ const i = n + r;
241
+ (o = (s = t.scrollElement) == null ? void 0 : s.scrollTo) == null || o.call(s, {
242
+ [t.options.horizontal ? "left" : "top"]: i,
228
243
  behavior: e
229
244
  });
230
245
  };
231
- class Z {
232
- constructor(l) {
246
+ class re {
247
+ constructor(r) {
233
248
  this.unsubs = [], this.scrollElement = null, this.targetWindow = null, this.isScrolling = !1, this.measurementsCache = [], this.itemSizeCache = /* @__PURE__ */ new Map(), this.pendingMeasuredCacheIndexes = [], this.scrollRect = null, this.scrollOffset = null, this.scrollDirection = null, this.scrollAdjustments = 0, this.elementsCache = /* @__PURE__ */ new Map(), this.observer = /* @__PURE__ */ (() => {
234
249
  let e = null;
235
250
  const t = () => e || (!this.targetWindow || !this.targetWindow.ResizeObserver ? null : e = new this.targetWindow.ResizeObserver((s) => {
236
- s.forEach((i) => {
237
- const o = () => {
238
- this._measureElement(i.target, i);
251
+ s.forEach((o) => {
252
+ const i = () => {
253
+ this._measureElement(o.target, o);
239
254
  };
240
- this.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(o) : o();
255
+ this.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(i) : i();
241
256
  });
242
257
  }));
243
258
  return {
@@ -246,12 +261,12 @@ class Z {
246
261
  (s = t()) == null || s.disconnect(), e = null;
247
262
  },
248
263
  observe: (s) => {
249
- var i;
250
- return (i = t()) == null ? void 0 : i.observe(s, { box: "border-box" });
264
+ var o;
265
+ return (o = t()) == null ? void 0 : o.observe(s, { box: "border-box" });
251
266
  },
252
267
  unobserve: (s) => {
253
- var i;
254
- return (i = t()) == null ? void 0 : i.unobserve(s);
268
+ var o;
269
+ return (o = t()) == null ? void 0 : o.unobserve(s);
255
270
  }
256
271
  };
257
272
  })(), this.range = null, this.setOptions = (e) => {
@@ -266,11 +281,11 @@ class Z {
266
281
  scrollPaddingStart: 0,
267
282
  scrollPaddingEnd: 0,
268
283
  horizontal: !1,
269
- getItemKey: K,
270
- rangeExtractor: G,
284
+ getItemKey: ee,
285
+ rangeExtractor: te,
271
286
  onChange: () => {
272
287
  },
273
- measureElement: Q,
288
+ measureElement: ie,
274
289
  initialRect: { width: 0, height: 0 },
275
290
  scrollMargin: 0,
276
291
  gap: 0,
@@ -287,7 +302,7 @@ class Z {
287
302
  }, this.notify = (e) => {
288
303
  var t, s;
289
304
  (s = (t = this.options).onChange) == null || s.call(t, this, e);
290
- }, this.maybeNotify = S(
305
+ }, this.maybeNotify = y(
291
306
  () => (this.calculateRange(), [
292
307
  this.isScrolling,
293
308
  this.range ? this.range.startIndex : null,
@@ -327,25 +342,25 @@ class Z {
327
342
  this.scrollRect = s, this.maybeNotify();
328
343
  })
329
344
  ), this.unsubs.push(
330
- this.options.observeElementOffset(this, (s, i) => {
331
- this.scrollAdjustments = 0, this.scrollDirection = i ? this.getScrollOffset() < s ? "forward" : "backward" : null, this.scrollOffset = s, this.isScrolling = i, this.maybeNotify();
345
+ this.options.observeElementOffset(this, (s, o) => {
346
+ this.scrollAdjustments = 0, this.scrollDirection = o ? this.getScrollOffset() < s ? "forward" : "backward" : null, this.scrollOffset = s, this.isScrolling = o, this.maybeNotify();
332
347
  })
333
348
  );
334
349
  }
335
350
  }, this.getSize = () => this.options.enabled ? (this.scrollRect = this.scrollRect ?? this.options.initialRect, this.scrollRect[this.options.horizontal ? "width" : "height"]) : (this.scrollRect = null, 0), this.getScrollOffset = () => this.options.enabled ? (this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset == "function" ? this.options.initialOffset() : this.options.initialOffset), this.scrollOffset) : (this.scrollOffset = null, 0), this.getFurthestMeasurement = (e, t) => {
336
- const s = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map();
337
- for (let o = t - 1; o >= 0; o--) {
338
- const r = e[o];
339
- if (s.has(r.lane))
351
+ const s = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map();
352
+ for (let i = t - 1; i >= 0; i--) {
353
+ const a = e[i];
354
+ if (s.has(a.lane))
340
355
  continue;
341
- const a = i.get(
342
- r.lane
356
+ const l = o.get(
357
+ a.lane
343
358
  );
344
- if (a == null || r.end > a.end ? i.set(r.lane, r) : r.end < a.end && s.set(r.lane, !0), s.size === this.options.lanes)
359
+ if (l == null || a.end > l.end ? o.set(a.lane, a) : a.end < l.end && s.set(a.lane, !0), s.size === this.options.lanes)
345
360
  break;
346
361
  }
347
- return i.size === this.options.lanes ? Array.from(i.values()).sort((o, r) => o.end === r.end ? o.index - r.index : o.end - r.end)[0] : void 0;
348
- }, this.getMeasurementOptions = S(
362
+ return o.size === this.options.lanes ? Array.from(o.values()).sort((i, a) => i.end === a.end ? i.index - a.index : i.end - a.end)[0] : void 0;
363
+ }, this.getMeasurementOptions = y(
349
364
  () => [
350
365
  this.options.count,
351
366
  this.options.paddingStart,
@@ -353,31 +368,31 @@ class Z {
353
368
  this.options.getItemKey,
354
369
  this.options.enabled
355
370
  ],
356
- (e, t, s, i, o) => (this.pendingMeasuredCacheIndexes = [], {
371
+ (e, t, s, o, i) => (this.pendingMeasuredCacheIndexes = [], {
357
372
  count: e,
358
373
  paddingStart: t,
359
374
  scrollMargin: s,
360
- getItemKey: i,
361
- enabled: o
375
+ getItemKey: o,
376
+ enabled: i
362
377
  }),
363
378
  {
364
379
  key: !1
365
380
  }
366
- ), this.getMeasurements = S(
381
+ ), this.getMeasurements = y(
367
382
  () => [this.getMeasurementOptions(), this.itemSizeCache],
368
- ({ count: e, paddingStart: t, scrollMargin: s, getItemKey: i, enabled: o }, r) => {
369
- if (!o)
383
+ ({ count: e, paddingStart: t, scrollMargin: s, getItemKey: o, enabled: i }, a) => {
384
+ if (!i)
370
385
  return this.measurementsCache = [], this.itemSizeCache.clear(), [];
371
- this.measurementsCache.length === 0 && (this.measurementsCache = this.options.initialMeasurementsCache, this.measurementsCache.forEach((h) => {
372
- this.itemSizeCache.set(h.key, h.size);
386
+ this.measurementsCache.length === 0 && (this.measurementsCache = this.options.initialMeasurementsCache, this.measurementsCache.forEach((c) => {
387
+ this.itemSizeCache.set(c.key, c.size);
373
388
  }));
374
- const a = this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;
389
+ const l = this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;
375
390
  this.pendingMeasuredCacheIndexes = [];
376
- const c = this.measurementsCache.slice(0, a);
377
- for (let h = a; h < e; h++) {
378
- const d = i(h), u = this.options.lanes === 1 ? c[h - 1] : this.getFurthestMeasurement(c, h), m = u ? u.end + this.options.gap : t + s, f = r.get(d), g = typeof f == "number" ? f : this.options.estimateSize(h), x = m + g, p = u ? u.lane : h % this.options.lanes;
379
- c[h] = {
380
- index: h,
391
+ const u = this.measurementsCache.slice(0, l);
392
+ for (let c = l; c < e; c++) {
393
+ const d = o(c), h = this.options.lanes === 1 ? u[c - 1] : this.getFurthestMeasurement(u, c), m = h ? h.end + this.options.gap : t + s, f = a.get(d), g = typeof f == "number" ? f : this.options.estimateSize(c), x = m + g, p = h ? h.lane : c % this.options.lanes;
394
+ u[c] = {
395
+ index: c,
381
396
  start: m,
382
397
  size: g,
383
398
  end: x,
@@ -385,30 +400,30 @@ class Z {
385
400
  lane: p
386
401
  };
387
402
  }
388
- return this.measurementsCache = c, c;
403
+ return this.measurementsCache = u, u;
389
404
  },
390
405
  {
391
406
  key: !1,
392
407
  debug: () => this.options.debug
393
408
  }
394
- ), this.calculateRange = S(
409
+ ), this.calculateRange = y(
395
410
  () => [
396
411
  this.getMeasurements(),
397
412
  this.getSize(),
398
413
  this.getScrollOffset(),
399
414
  this.options.lanes
400
415
  ],
401
- (e, t, s, i) => this.range = e.length > 0 && t > 0 ? ee({
416
+ (e, t, s, o) => this.range = e.length > 0 && t > 0 ? ae({
402
417
  measurements: e,
403
418
  outerSize: t,
404
419
  scrollOffset: s,
405
- lanes: i
420
+ lanes: o
406
421
  }) : null,
407
422
  {
408
423
  key: !1,
409
424
  debug: () => this.options.debug
410
425
  }
411
- ), this.getVirtualIndexes = S(
426
+ ), this.getVirtualIndexes = y(
412
427
  () => {
413
428
  let e = null, t = null;
414
429
  const s = this.calculateRange();
@@ -420,9 +435,9 @@ class Z {
420
435
  t
421
436
  ];
422
437
  },
423
- (e, t, s, i, o) => i === null || o === null ? [] : e({
424
- startIndex: i,
425
- endIndex: o,
438
+ (e, t, s, o, i) => o === null || i === null ? [] : e({
439
+ startIndex: o,
440
+ endIndex: i,
426
441
  overscan: t,
427
442
  count: s
428
443
  }),
@@ -436,18 +451,18 @@ class Z {
436
451
  `Missing attribute name '${t}={index}' on measured element.`
437
452
  ), -1);
438
453
  }, this._measureElement = (e, t) => {
439
- const s = this.indexFromElement(e), i = this.measurementsCache[s];
440
- if (!i)
454
+ const s = this.indexFromElement(e), o = this.measurementsCache[s];
455
+ if (!o)
441
456
  return;
442
- const o = i.key, r = this.elementsCache.get(o);
443
- r !== e && (r && this.observer.unobserve(r), this.observer.observe(e), this.elementsCache.set(o, e)), e.isConnected && this.resizeItem(s, this.options.measureElement(e, t, this));
457
+ const i = o.key, a = this.elementsCache.get(i);
458
+ a !== e && (a && this.observer.unobserve(a), this.observer.observe(e), this.elementsCache.set(i, e)), e.isConnected && this.resizeItem(s, this.options.measureElement(e, t, this));
444
459
  }, this.resizeItem = (e, t) => {
445
460
  const s = this.measurementsCache[e];
446
461
  if (!s)
447
462
  return;
448
- const i = this.itemSizeCache.get(s.key) ?? s.size, o = t - i;
449
- o !== 0 && ((this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(s, o, this) : s.start < this.getScrollOffset() + this.scrollAdjustments) && this._scrollToOffset(this.getScrollOffset(), {
450
- adjustments: this.scrollAdjustments += o,
463
+ const o = this.itemSizeCache.get(s.key) ?? s.size, i = t - o;
464
+ i !== 0 && ((this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(s, i, this) : s.start < this.getScrollOffset() + this.scrollAdjustments) && this._scrollToOffset(this.getScrollOffset(), {
465
+ adjustments: this.scrollAdjustments += i,
451
466
  behavior: void 0
452
467
  }), this.pendingMeasuredCacheIndexes.push(s.index), this.itemSizeCache = new Map(this.itemSizeCache.set(s.key, t)), this.notify(!1));
453
468
  }, this.measureElement = (e) => {
@@ -458,13 +473,13 @@ class Z {
458
473
  return;
459
474
  }
460
475
  this._measureElement(e, void 0);
461
- }, this.getVirtualItems = S(
476
+ }, this.getVirtualItems = y(
462
477
  () => [this.getVirtualIndexes(), this.getMeasurements()],
463
478
  (e, t) => {
464
479
  const s = [];
465
- for (let i = 0, o = e.length; i < o; i++) {
466
- const r = e[i], a = t[r];
467
- s.push(a);
480
+ for (let o = 0, i = e.length; o < i; o++) {
481
+ const a = e[o], l = t[a];
482
+ s.push(l);
468
483
  }
469
484
  return s;
470
485
  },
@@ -475,35 +490,35 @@ class Z {
475
490
  ), this.getVirtualItemForOffset = (e) => {
476
491
  const t = this.getMeasurements();
477
492
  if (t.length !== 0)
478
- return M(
479
- t[k(
493
+ return z(
494
+ t[A(
480
495
  0,
481
496
  t.length - 1,
482
- (s) => M(t[s]).start,
497
+ (s) => z(t[s]).start,
483
498
  e
484
499
  )]
485
500
  );
486
501
  }, this.getOffsetForAlignment = (e, t, s = 0) => {
487
- const i = this.getSize(), o = this.getScrollOffset();
488
- t === "auto" && (t = e >= o + i ? "end" : "start"), t === "center" ? e += (s - i) / 2 : t === "end" && (e -= i);
489
- const r = this.getTotalSize() + this.options.scrollMargin - i;
490
- return Math.max(Math.min(r, e), 0);
502
+ const o = this.getSize(), i = this.getScrollOffset();
503
+ t === "auto" && (t = e >= i + o ? "end" : "start"), t === "center" ? e += (s - o) / 2 : t === "end" && (e -= o);
504
+ const a = this.getTotalSize() + this.options.scrollMargin - o;
505
+ return Math.max(Math.min(a, e), 0);
491
506
  }, this.getOffsetForIndex = (e, t = "auto") => {
492
507
  e = Math.max(0, Math.min(e, this.options.count - 1));
493
508
  const s = this.measurementsCache[e];
494
509
  if (!s)
495
510
  return;
496
- const i = this.getSize(), o = this.getScrollOffset();
511
+ const o = this.getSize(), i = this.getScrollOffset();
497
512
  if (t === "auto")
498
- if (s.end >= o + i - this.options.scrollPaddingEnd)
513
+ if (s.end >= i + o - this.options.scrollPaddingEnd)
499
514
  t = "end";
500
- else if (s.start <= o + this.options.scrollPaddingStart)
515
+ else if (s.start <= i + this.options.scrollPaddingStart)
501
516
  t = "start";
502
517
  else
503
- return [o, t];
504
- const r = t === "end" ? s.end + this.options.scrollPaddingEnd : s.start - this.options.scrollPaddingStart;
518
+ return [i, t];
519
+ const a = t === "end" ? s.end + this.options.scrollPaddingEnd : s.start - this.options.scrollPaddingStart;
505
520
  return [
506
- this.getOffsetForAlignment(r, t, s.size),
521
+ this.getOffsetForAlignment(a, t, s.size),
507
522
  t
508
523
  ];
509
524
  }, this.isDynamicMode = () => this.elementsCache.size > 0, this.scrollToOffset = (e, { align: t = "start", behavior: s } = {}) => {
@@ -517,29 +532,29 @@ class Z {
517
532
  s === "smooth" && this.isDynamicMode() && console.warn(
518
533
  "The `smooth` scroll behavior is not fully supported with dynamic size."
519
534
  ), e = Math.max(0, Math.min(e, this.options.count - 1));
520
- let i = 0;
521
- const o = 10, r = (c) => {
535
+ let o = 0;
536
+ const i = 10, a = (u) => {
522
537
  if (!this.targetWindow) return;
523
- const h = this.getOffsetForIndex(e, c);
524
- if (!h) {
538
+ const c = this.getOffsetForIndex(e, u);
539
+ if (!c) {
525
540
  console.warn("Failed to get offset for index:", e);
526
541
  return;
527
542
  }
528
- const [d, u] = h;
543
+ const [d, h] = c;
529
544
  this._scrollToOffset(d, { adjustments: void 0, behavior: s }), this.targetWindow.requestAnimationFrame(() => {
530
- const m = this.getScrollOffset(), f = this.getOffsetForIndex(e, u);
545
+ const m = this.getScrollOffset(), f = this.getOffsetForIndex(e, h);
531
546
  if (!f) {
532
547
  console.warn("Failed to get offset for index:", e);
533
548
  return;
534
549
  }
535
- q(f[0], m) || a(u);
550
+ Q(f[0], m) || l(h);
536
551
  });
537
- }, a = (c) => {
538
- this.targetWindow && (i++, i < o ? this.targetWindow.requestAnimationFrame(() => r(c)) : console.warn(
539
- `Failed to scroll to index ${e} after ${o} attempts.`
552
+ }, l = (u) => {
553
+ this.targetWindow && (o++, o < i ? this.targetWindow.requestAnimationFrame(() => a(u)) : console.warn(
554
+ `Failed to scroll to index ${e} after ${i} attempts.`
540
555
  ));
541
556
  };
542
- r(t);
557
+ a(t);
543
558
  }, this.scrollBy = (e, { behavior: t } = {}) => {
544
559
  t === "smooth" && this.isDynamicMode() && console.warn(
545
560
  "The `smooth` scroll behavior is not fully supported with dynamic size."
@@ -556,13 +571,13 @@ class Z {
556
571
  else if (this.options.lanes === 1)
557
572
  s = ((e = t[t.length - 1]) == null ? void 0 : e.end) ?? 0;
558
573
  else {
559
- const i = Array(this.options.lanes).fill(null);
560
- let o = t.length - 1;
561
- for (; o >= 0 && i.some((r) => r === null); ) {
562
- const r = t[o];
563
- i[r.lane] === null && (i[r.lane] = r.end), o--;
574
+ const o = Array(this.options.lanes).fill(null);
575
+ let i = t.length - 1;
576
+ for (; i >= 0 && o.some((a) => a === null); ) {
577
+ const a = t[i];
578
+ o[a.lane] === null && (o[a.lane] = a.end), i--;
564
579
  }
565
- s = Math.max(...i.filter((r) => r !== null));
580
+ s = Math.max(...o.filter((a) => a !== null));
566
581
  }
567
582
  return Math.max(
568
583
  s - this.options.scrollMargin + this.options.paddingEnd,
@@ -575,115 +590,178 @@ class Z {
575
590
  this.options.scrollToFn(e, { behavior: s, adjustments: t }, this);
576
591
  }, this.measure = () => {
577
592
  this.itemSizeCache = /* @__PURE__ */ new Map(), this.notify(!1);
578
- }, this.setOptions(l);
593
+ }, this.setOptions(r);
579
594
  }
580
595
  }
581
- const k = (n, l, e, t) => {
582
- for (; n <= l; ) {
583
- const s = (n + l) / 2 | 0, i = e(s);
584
- if (i < t)
596
+ const A = (n, r, e, t) => {
597
+ for (; n <= r; ) {
598
+ const s = (n + r) / 2 | 0, o = e(s);
599
+ if (o < t)
585
600
  n = s + 1;
586
- else if (i > t)
587
- l = s - 1;
601
+ else if (o > t)
602
+ r = s - 1;
588
603
  else
589
604
  return s;
590
605
  }
591
606
  return n > 0 ? n - 1 : 0;
592
607
  };
593
- function ee({
608
+ function ae({
594
609
  measurements: n,
595
- outerSize: l,
610
+ outerSize: r,
596
611
  scrollOffset: e,
597
612
  lanes: t
598
613
  }) {
599
- const s = n.length - 1, i = (a) => n[a].start;
614
+ const s = n.length - 1, o = (l) => n[l].start;
600
615
  if (n.length <= t)
601
616
  return {
602
617
  startIndex: 0,
603
618
  endIndex: s
604
619
  };
605
- let o = k(
620
+ let i = A(
606
621
  0,
607
622
  s,
608
- i,
623
+ o,
609
624
  e
610
- ), r = o;
625
+ ), a = i;
611
626
  if (t === 1)
612
- for (; r < s && n[r].end < e + l; )
613
- r++;
627
+ for (; a < s && n[a].end < e + r; )
628
+ a++;
614
629
  else if (t > 1) {
615
- const a = Array(t).fill(0);
616
- for (; r < s && a.some((h) => h < e + l); ) {
617
- const h = n[r];
618
- a[h.lane] = h.end, r++;
630
+ const l = Array(t).fill(0);
631
+ for (; a < s && l.some((c) => c < e + r); ) {
632
+ const c = n[a];
633
+ l[c.lane] = c.end, a++;
619
634
  }
620
- const c = Array(t).fill(e + l);
621
- for (; o >= 0 && c.some((h) => h >= e); ) {
622
- const h = n[o];
623
- c[h.lane] = h.start, o--;
635
+ const u = Array(t).fill(e + r);
636
+ for (; i >= 0 && u.some((c) => c >= e); ) {
637
+ const c = n[i];
638
+ u[c.lane] = c.start, i--;
624
639
  }
625
- o = Math.max(0, o - o % t), r = Math.min(s, r + (t - 1 - r % t));
640
+ i = Math.max(0, i - i % t), a = Math.min(s, a + (t - 1 - a % t));
626
641
  }
627
- return { startIndex: o, endIndex: r };
642
+ return { startIndex: i, endIndex: a };
628
643
  }
629
- const C = typeof document < "u" ? j : _;
630
- function te(n) {
631
- const l = T(() => ({}), {})[1], e = {
644
+ const _ = typeof document < "u" ? H : E;
645
+ function le(n) {
646
+ const r = D(() => ({}), {})[1], e = {
632
647
  ...n,
633
- onChange: (s, i) => {
634
- var o;
635
- i ? D(l) : l(), (o = n.onChange) == null || o.call(n, s, i);
648
+ onChange: (s, o) => {
649
+ var i;
650
+ o ? N(r) : r(), (i = n.onChange) == null || i.call(n, s, o);
636
651
  }
637
- }, [t] = F(
638
- () => new Z(e)
652
+ }, [t] = k(
653
+ () => new re(e)
639
654
  );
640
- return t.setOptions(e), C(() => t._didMount(), []), C(() => t._willUpdate()), t;
655
+ return t.setOptions(e), _(() => t._didMount(), []), _(() => t._willUpdate()), t;
641
656
  }
642
- function se(n) {
643
- return te({
644
- observeElementRect: Y,
645
- observeElementOffset: J,
646
- scrollToFn: X,
657
+ function ce(n) {
658
+ return le({
659
+ observeElementRect: se,
660
+ observeElementOffset: ne,
661
+ scrollToFn: oe,
647
662
  ...n
648
663
  });
649
664
  }
650
- function oe({
665
+ function be({
651
666
  items: n,
652
- totalItems: l,
667
+ totalItems: r,
653
668
  parentRef: e,
654
669
  hasNextPage: t,
655
670
  isFetchingNextPage: s,
656
- fetchNextPage: i,
657
- estimateSize: o = () => 100,
658
- overscan: r = 5
671
+ fetchNextPage: o,
672
+ estimateSize: i = () => 100,
673
+ overscan: a = 5
659
674
  }) {
660
675
  var f, g, x;
661
- const a = se({
662
- count: l,
663
- getScrollElement: () => I(e.current),
664
- estimateSize: o,
665
- overscan: r
666
- }), c = a.getVirtualItems(), h = c.length > 0 ? (((f = c.at(0)) == null ? void 0 : f.start) ?? 0) - a.options.scrollMargin : 0, d = c.length > 0 ? a.getTotalSize() - (((g = c.at(-1)) == null ? void 0 : g.end) ?? 0) : 0, u = c.map((p) => ({
676
+ const l = ce({
677
+ count: r,
678
+ getScrollElement: () => T(e.current),
679
+ estimateSize: i,
680
+ overscan: a
681
+ }), u = l.getVirtualItems(), c = u.length > 0 ? (((f = u.at(0)) == null ? void 0 : f.start) ?? 0) - l.options.scrollMargin : 0, d = u.length > 0 ? l.getTotalSize() - (((g = u.at(-1)) == null ? void 0 : g.end) ?? 0) : 0, h = u.map((p) => ({
667
682
  virtualItem: p,
668
683
  key: p.key,
669
684
  item: n[p.index],
670
685
  props: {
671
- ref: a.measureElement,
686
+ ref: l.measureElement,
672
687
  "data-index": p.index
673
688
  }
674
- })), m = u.at(-1) && !((x = u.at(-1)) != null && x.item);
675
- return _(() => {
676
- t && m && !s && i();
677
- }, [t, m, s, i]), {
678
- visibleItems: u,
679
- virtualizer: a,
680
- spaceBefore: h,
689
+ })), m = h.at(-1) && !((x = h.at(-1)) != null && x.item);
690
+ return E(() => {
691
+ t && m && !s && o();
692
+ }, [t, m, s, o]), {
693
+ visibleItems: h,
694
+ virtualizer: l,
695
+ spaceBefore: c,
681
696
  spaceAfter: d
682
697
  };
683
698
  }
699
+ const j = 1e3, S = "ghostVirtualListWindow";
700
+ function ue({
701
+ totalItems: n,
702
+ unlockedItemCount: r
703
+ }) {
704
+ const e = Math.min(n, r);
705
+ return {
706
+ visibleItemCount: e,
707
+ canLoadMore: n > e
708
+ };
709
+ }
710
+ function he(n) {
711
+ return n + j;
712
+ }
713
+ function de(n, r) {
714
+ return `${n}::${r}`;
715
+ }
716
+ function R(n, r, e = j) {
717
+ const t = n == null ? void 0 : n[S];
718
+ if (!t || typeof t != "object")
719
+ return e;
720
+ const s = t[r];
721
+ return typeof s != "number" || !Number.isFinite(s) ? e : Math.max(1, Math.floor(s));
722
+ }
723
+ function fe(n, r, e) {
724
+ if (typeof window > "u")
725
+ return;
726
+ const t = n == null ? void 0 : n[S], s = {
727
+ ...n ?? {},
728
+ [S]: {
729
+ ...t && typeof t == "object" ? t : {},
730
+ [r]: e
731
+ }
732
+ };
733
+ window.history.replaceState(s, "");
734
+ }
735
+ function M() {
736
+ if (!(typeof window > "u"))
737
+ return window.history.state;
738
+ }
739
+ function xe(n, {
740
+ resetKey: r
741
+ } = {}) {
742
+ const { key: e, pathname: t, search: s } = V(), i = de(t, r ?? s), [a, l] = k(() => R(M(), i)), u = B(i);
743
+ E(() => {
744
+ if (u.current !== i) {
745
+ u.current = i, l(R(M(), i));
746
+ return;
747
+ }
748
+ fe(M(), i, a);
749
+ }, [i, e, a]);
750
+ const { visibleItemCount: c, canLoadMore: d } = ue({
751
+ totalItems: n,
752
+ unlockedItemCount: a
753
+ });
754
+ return {
755
+ visibleItemCount: c,
756
+ canLoadMore: d,
757
+ loadMore: () => l((h) => he(h))
758
+ };
759
+ }
684
760
  export {
685
- w as H,
686
- I as g,
687
- oe as u
761
+ pe as H,
762
+ ve as L,
763
+ be as a,
764
+ T as g,
765
+ xe as u
688
766
  };
689
- //# sourceMappingURL=use-infinite-virtual-scroll-B_NwiBXK.mjs.map
767
+ //# sourceMappingURL=virtual-list-window-BIGoc0th.mjs.map