ghost 6.60.0 → 6.62.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/ghost-storage-base-3.0.0.tgz +0 -0
- package/components/tryghost-adapter-base-cache-0.2.0.tgz +0 -0
- package/components/tryghost-adapter-base-jobs-0.0.0.tgz +0 -0
- package/components/tryghost-adapter-base-redirects-0.0.0.tgz +0 -0
- package/components/tryghost-adapter-base-route-settings-0.0.0.tgz +0 -0
- package/components/tryghost-adapter-base-scheduling-0.2.3.tgz +0 -0
- package/components/tryghost-adapter-base-sso-0.1.3.tgz +0 -0
- package/components/tryghost-admin-api-schema-0.0.0.tgz +0 -0
- package/components/tryghost-checkout-0.0.0.tgz +0 -0
- package/components/tryghost-custom-field-types-0.0.0.tgz +0 -0
- package/components/tryghost-i18n-0.0.0.tgz +0 -0
- package/components/tryghost-kg-card-factory-5.2.4.tgz +0 -0
- package/components/tryghost-kg-clean-basic-html-4.3.4.tgz +0 -0
- package/components/tryghost-kg-converters-1.2.5.tgz +0 -0
- package/components/tryghost-kg-default-cards-10.3.5.tgz +0 -0
- package/components/tryghost-kg-default-nodes-2.2.1.tgz +0 -0
- package/components/tryghost-kg-default-transforms-1.3.4.tgz +0 -0
- package/components/tryghost-kg-html-to-lexical-1.4.0.tgz +0 -0
- package/components/tryghost-kg-lexical-html-renderer-1.5.0.tgz +0 -0
- package/components/tryghost-kg-markdown-html-renderer-7.2.4.tgz +0 -0
- package/components/tryghost-kg-utils-1.1.4.tgz +0 -0
- package/components/tryghost-nql-string-0.0.0.tgz +0 -0
- package/components/tryghost-parse-email-address-0.0.0.tgz +0 -0
- package/content/settings/README.md +1 -1
- package/content/themes/casper/.gitignore +28 -0
- package/content/themes/casper/assets/built/casper.js +1 -1
- package/content/themes/casper/assets/built/screen.css +1 -1
- package/content/themes/casper/assets/css/screen.css +2 -1
- package/content/themes/casper/assets/js/lightbox.js +63 -46
- package/content/themes/casper/package.json +6 -6
- package/content/themes/casper/page.hbs +1 -0
- package/content/themes/casper/post.hbs +1 -0
- package/content/themes/source/.gitignore +28 -0
- package/content/themes/source/assets/built/screen.css +1 -1
- package/content/themes/source/assets/built/source.js +1 -1
- package/content/themes/source/assets/css/screen.css +2 -1
- package/content/themes/source/assets/js/lightbox.js +62 -45
- package/content/themes/source/assets/js/main.js +2 -2
- package/content/themes/source/package.json +4 -4
- package/content/themes/source/partials/feature-image.hbs +1 -0
- package/core/boot.js +62 -21
- package/core/built/admin/assets/Combination-B0l4MKVh.js +41 -0
- package/core/built/admin/assets/InterVariable-DiVDrmQJ.woff2 +0 -0
- package/core/built/admin/assets/InterVariable-Italic-FCBEiFp6.woff2 +0 -0
- package/core/built/admin/assets/{PolarAngleAxis-C4qtHy1B.js → PolarAngleAxis-pkMyqz8g.js} +1 -1
- package/core/built/admin/assets/{RadialBarChart-Bh09Stsj.js → RadialBarChart-JAKoS4KT.js} +1 -1
- package/core/built/admin/assets/{about-BgpmhCuM.js → about-Dyae_UT6.js} +1 -1
- package/core/built/admin/assets/account-migration-CESa0mnX.js +1 -0
- package/core/built/admin/assets/{action-list-lGzZLHc8.js → action-list-C4v0-du8.js} +1 -1
- package/core/built/admin/assets/activitypub/{account-migration-DMHuPnJn.js → account-migration-By69CgCp.js} +16 -16
- package/core/built/admin/assets/activitypub/activitypub.js +9 -10
- package/core/built/admin/assets/activitypub/{avatar-DhTo5D1B.js → avatar-DLPL3Abs.js} +59 -68
- package/core/built/admin/assets/activitypub/{avatar-flipboard-DnVgbEfa.js → avatar-flipboard-C9iDY-QV.js} +2 -2
- package/core/built/admin/assets/activitypub/{bluesky-sharing-BT4zAlW7.js → bluesky-sharing-BJcPMrDd.js} +37 -37
- package/core/built/admin/assets/activitypub/{content-formatters-BeDZ-DIa.js → content-formatters-3rTHg3mp.js} +18 -18
- package/core/built/admin/assets/activitypub/{copy-8sqxUuNd.js → copy-DIAOQoCZ.js} +2 -2
- package/core/built/admin/assets/activitypub/{domain-xQDDu1CS.js → domain-DUR4xSkV.js} +121 -121
- package/core/built/admin/assets/activitypub/{edit-profile-BXdF_r2G.js → edit-profile-BqtfzxCp.js} +40 -40
- package/core/built/admin/assets/activitypub/{explore-CMt7gKlL.js → explore-BxuJd-J4.js} +27 -27
- package/core/built/admin/assets/activitypub/{feed-Bwqdddp_.js → feed-BM1TcksA.js} +51 -51
- package/core/built/admin/assets/activitypub/{field-4co_8FVg.js → field-Dn7HHx2-.js} +3 -3
- package/core/built/admin/assets/activitypub/{hash-DwakMs4X.js → hash-Bm3WxYN4.js} +2 -2
- package/core/built/admin/assets/activitypub/inbox-CCjkuow2.js +1284 -0
- package/core/built/admin/assets/activitypub/{inbox-ckD4wo_r.js → inbox-d8oJRTf4.js} +2 -2
- package/core/built/admin/assets/activitypub/label-1AA_s9Fa.js +16 -0
- package/core/built/admin/assets/activitypub/layout-2-0bw6HN.js +1 -0
- package/core/built/admin/assets/activitypub/{moderation-KCCO7L2J.js → moderation-CnmxEB8w.js} +91 -91
- package/core/built/admin/assets/activitypub/{note-BX_Bz5A0.js → note-ZKc_Bnba.js} +24 -24
- package/core/built/admin/assets/activitypub/{notifications-BQOYGvRv.js → notifications-CB2tJZau.js} +51 -51
- package/core/built/admin/assets/activitypub/{onboarding-CNelD_uF.js → onboarding-BsJ9E5qf.js} +2 -2
- package/core/built/admin/assets/activitypub/{onboarding-mat5Hrl0.js → onboarding-CSUJJIlh.js} +2 -2
- package/core/built/admin/assets/activitypub/{preferences-6h43G9_q.js → preferences-0-JZnUkI.js} +1519 -1519
- package/core/built/admin/assets/activitypub/{profile-BMN9VVZ2.js → profile-C35cFIhM.js} +256 -256
- package/core/built/admin/assets/activitypub/{reply-ZNo04xsO.js → reply-DYK5vVqb.js} +2 -2
- package/core/built/admin/assets/activitypub/{routes-3B9mUQ7i.js → routes-BD4vscyc.js} +796 -790
- package/core/built/admin/assets/activitypub/{separator-D9taVCCa.js → separator-BbQqTm-p.js} +3 -3
- package/core/built/admin/assets/activitypub/settings-BsMROdqh.js +315 -0
- package/core/built/admin/assets/activitypub/{site-DHoMupSB.js → site-O0RL9YCN.js} +2 -2
- package/core/built/admin/assets/activitypub/{step-1-BsGGnBuT.js → step-1-BMSx7c_X.js} +6 -6
- package/core/built/admin/assets/activitypub/{step-2-teosIS0k.js → step-2-DtPQzlTH.js} +6 -6
- package/core/built/admin/assets/activitypub/{step-3-BjD5TokC.js → step-3-CLlOZTyt.js} +11 -11
- package/core/built/admin/assets/activitypub/{tabs-Cvwl1wXU.js → tabs-Dxk-b9M-.js} +306 -306
- package/core/built/admin/assets/activitypub/{topic-filter-C3LZJc2X.js → topic-filter-5yZH6tId.js} +3 -3
- package/core/built/admin/assets/activitypub/{use-activity-pub-queries-Dp9f0gov.js → use-activity-pub-queries-CV50qe03.js} +3 -3
- package/core/built/admin/assets/activitypub/{use-navigate-with-base-path-C4RI0sa9.js → use-navigate-with-base-path-Bmk5h4lW.js} +220 -220
- package/core/built/admin/assets/activitypub/{use-reply-chain-data-C2oNDMUH.js → use-reply-chain-data-Cbvzgjzd.js} +30 -30
- package/core/built/admin/assets/activitypub/{users-CoX6FT_K.js → users-BjcoP_HC.js} +7 -5
- package/core/built/admin/assets/activitypub/{x-Dxm6pV9X.js → x-DbQZOLiI.js} +2 -2
- package/core/built/admin/assets/add-integration-modal-BlF6rs_f.js +1 -0
- package/core/built/admin/assets/add-newsletter-modal-CglVQqah.js +1 -0
- package/core/built/admin/assets/add-recommendation-modal-wz7BsuaG.js +1 -0
- package/core/built/admin/assets/analytics-C4HE1gBg.js +1 -0
- package/core/built/admin/assets/{announcement-bar-modal-BTHiy1ZO.js → announcement-bar-modal-Ci4zz8jO.js} +1 -1
- package/core/built/admin/assets/{api-keys-Boy5pLbD.js → api-keys-Ck-Yteiv.js} +1 -1
- package/core/built/admin/assets/audience-CtbA54Sn.js +1 -0
- package/core/built/admin/assets/{automated-emails-te1D5kq-.js → automated-emails-D5VVMND9.js} +1 -1
- package/core/built/admin/assets/automations-CzKt5fb8.js +1 -0
- package/core/built/admin/assets/bluesky-sharing-BEtJ_gL_.js +1 -0
- package/core/built/admin/assets/{box-By_EgGtm.js → box-CdfQAP_F.js} +1 -1
- package/core/built/admin/assets/{brand-icon-09YqFZjV.js → brand-icon-CrIGOA3Z.js} +1 -1
- package/core/built/admin/assets/{breadcrumb-CcFr_ltt.js → breadcrumb-zUrZrBtW.js} +1 -1
- package/core/built/admin/assets/{button-BshWPHvn.js → button-eNMKQWXr.js} +1 -1
- package/core/built/admin/assets/{card-CiiE7QfM.js → card--VNbfgo3.js} +1 -1
- package/core/built/admin/assets/{chart-BnXyfH11.js → chart-BrhA41Zi.js} +1 -1
- package/core/built/admin/assets/chart-helpers-CfBKt0vT.js +1 -0
- package/core/built/admin/assets/{checkbox-Dwwr_3Py.js → checkbox-CgOn_tKW.js} +1 -1
- package/core/built/admin/assets/{chunk.524.91ecb33e6afc3bd8949b.js → chunk.524.a697dee88db67fdf6021.js} +4 -4
- package/core/built/admin/assets/{chunk.582.512549909741883f960c.js → chunk.582.5ed5d124cfca9c259b9c.js} +6 -6
- package/core/built/admin/assets/{chunk.16.f76a6314082d813d67e0.js → chunk.598.7e056fabb47ce7dbd73f.js} +14 -14
- package/core/built/admin/assets/{code-editor-view-BwIdPy_k.js → code-editor-view-BYNoAoNV.js} +1 -1
- package/core/built/admin/assets/{code-editor-view-CtkF82Fv.js → code-editor-view-K2wI-I5f.js} +1 -1
- package/core/built/admin/assets/color-picker-Ddw80xX6.js +3 -0
- package/core/built/admin/assets/color-picker-field-D9nUhvA7.js +1 -0
- package/core/built/admin/assets/combobox-w9j8PPQT.js +1 -0
- package/core/built/admin/assets/command-BfpHORBv.js +1 -0
- package/core/built/admin/assets/comments-BLmCmyCs.js +1 -0
- package/core/built/admin/assets/confirmation-context-CBM8G0Vj.js +1 -0
- package/core/built/admin/assets/{container-LiZf3XdY.js → container-BuQG1wuP.js} +1 -1
- package/core/built/admin/assets/{content-api-modal-BtpNI92-.js → content-api-modal-TXRz3U7S.js} +1 -1
- package/core/built/admin/assets/context-menu-_QMdd3kp.js +1 -0
- package/core/built/admin/assets/{copy-field-CglgRZyG.js → copy-field-6N01S07E.js} +1 -1
- package/core/built/admin/assets/create-ghost-browse-value-source-qIBymvvf.js +1 -0
- package/core/built/admin/assets/custom-field-type-option-BddFlJFa.js +1 -0
- package/core/built/admin/assets/custom-integration-modal-DmNquxUV.js +1 -0
- package/core/built/admin/assets/{data-list-CupF7bjM.js → data-list-CA2jYGPq.js} +1 -1
- package/core/built/admin/assets/{date-range-select-JPwM0yUj.js → date-range-select-uvz_DtPh.js} +1 -1
- package/core/built/admin/assets/design-and-theme-modal-BSmo12Op.js +2 -0
- package/core/built/admin/assets/{detail-page-D8lx2SdP.js → detail-page-Dnv-CdR1.js} +1 -1
- package/core/built/admin/assets/dirty-confirm-dialog-BZ1iytEd.js +1 -0
- package/core/built/admin/assets/{disabled-sources-indicator-BTJ2ClQu.js → disabled-sources-indicator-DMRrxsiJ.js} +1 -1
- package/core/built/admin/assets/{dist-DzcfoDJ3.js → dist-8YJUlf3B.js} +1 -1
- package/core/built/admin/assets/{dist-Cb5RSHSg.js → dist-B3keLvjj.js} +1 -1
- package/core/built/admin/assets/dist-Dcsslyo72.js +1 -0
- package/core/built/admin/assets/{dist-BT_Z-eCn.js → dist-Dgt2cr6a.js} +1 -1
- package/core/built/admin/assets/domain-BNYrt0aD.js +1 -0
- package/core/built/admin/assets/dropzone-D7nFdAe5.js +5 -0
- package/core/built/admin/assets/edit-profile-C5Asm4LA.js +1 -0
- package/core/built/admin/assets/editor-REokrzci.js +8 -0
- package/core/built/admin/assets/{embed-signup-form-modal-BFTPf04i.js → embed-signup-form-modal-Ds6mPEi5.js} +1 -1
- package/core/built/admin/assets/{empty-indicator-WB1WgT9h.js → empty-indicator-D9QdpuNX.js} +1 -1
- package/core/built/admin/assets/en-B1jX3WMs.js +1 -0
- package/core/built/admin/assets/explore-UY10Egsp.js +1 -0
- package/core/built/admin/assets/feature-image-placeholder-D1iF_8bc.js +1 -0
- package/core/built/admin/assets/feed-81C8mJWR.js +1 -0
- package/core/built/admin/assets/{field-LmNk7wZh.js → field-Dihp5p18.js} +1 -1
- package/core/built/admin/assets/filter-bar-Da1qxybu.js +1 -0
- package/core/built/admin/assets/filter-sources-BO9xUPj7.js +1 -0
- package/core/built/admin/assets/filters-CRUWecfY.js +1 -0
- package/core/built/admin/assets/filters-DirqNXjH.js +1 -0
- package/core/built/admin/assets/first-promoter-modal-CT6MxYZb.js +1 -0
- package/core/built/admin/assets/{ghost-c8807202a07c20030acb719ee0114815.css → ghost-8eabfc1ece81b03cf7b90780d31487e8.css} +1 -1
- package/core/built/admin/assets/{ghost-403cb39badad3df411fc0ba27d220047.js → ghost-c2848508292937415f20f5a830eea59e.js} +31 -28
- package/core/built/admin/assets/{ghost-dark-fbf1e384aaef3ae315e540f0eb7373a7.css → ghost-dark-a7bebe2c561f55369dcf29f4c820f7ff.css} +1 -1
- package/core/built/admin/assets/gift-link-modal-CQVAye17.js +1 -0
- package/core/built/admin/assets/{grid-CUciBfjf.js → grid-Dj29PY05.js} +1 -1
- package/core/built/admin/assets/growth-BWIu-6xj.js +3 -0
- package/core/built/admin/assets/growth-DU29oxeA.js +1 -0
- package/core/built/admin/assets/{heading-CRZZ2FUe.js → heading-Dh5SFVjL.js} +1 -1
- package/core/built/admin/assets/history-modal-CFd1Hvx6.js +1 -0
- package/core/built/admin/assets/html-field-CJBCLTvv.js +1 -0
- package/core/built/admin/assets/{images-C0XvUYMb.js → images-scfkWZiK.js} +1 -1
- package/core/built/admin/assets/{inbox-DZXDUt4s.js → inbox-Mcp4DXZN.js} +14 -14
- package/core/built/admin/assets/index-6MkPdCtr.js +4 -0
- package/core/built/admin/assets/index-Bn7QhcZu.css +2 -0
- package/core/built/admin/assets/index.es-CNnuNH0d.js +1 -0
- package/core/built/admin/assets/{inline-Cw-gigDW.js → inline-BWSs_VzR.js} +1 -1
- package/core/built/admin/assets/{input-group-BPAxETpQ.js → input-group-CMhe2DvY.js} +1 -1
- package/core/built/admin/assets/{input-surface-BdOe4KzO.js → input-surface-BsrIZeSF.js} +1 -1
- package/core/built/admin/assets/{integration-header-B4DyXV06.js → integration-header-Bm6IDb1A.js} +1 -1
- package/core/built/admin/assets/invite-user-modal-DfheMXs0.js +1 -0
- package/core/built/admin/assets/koenig-lexical/koenig-lexical.js +14 -14
- package/core/built/admin/assets/koenig-lexical/koenig-lexical.umd.js +3 -3
- package/core/built/admin/assets/koenig-lexical/style.css +1 -1
- package/core/built/admin/assets/{koenig-lexical-60O_8aiO.js → koenig-lexical-DBSqAuiI.js} +3 -3
- package/core/built/admin/assets/koenig-loader-aFQNlJlD.js +2 -0
- package/core/built/admin/assets/kpi-card-DBRMfGOW.js +1 -0
- package/core/built/admin/assets/{kpi-card-fUHZlzBX.js → kpi-card-DFafD1qq.js} +1 -1
- package/core/built/admin/assets/kpi-helpers-Cv8i8hns.js +1 -0
- package/core/built/admin/assets/kpi-tabs-BJItvLYm.js +1 -0
- package/core/built/admin/assets/{label-VIG969IC.js → label-BnSCvffu.js} +1 -1
- package/core/built/admin/assets/label-picker-KVoo91sh.js +1 -0
- package/core/built/admin/assets/layout-Bjv2Ll-5.js +1 -0
- package/core/built/admin/assets/{link-helpers-Dtq9fxQg.js → link-helpers-MVDdnFCY.js} +1 -1
- package/core/built/admin/assets/{list-page-CdsnQR9N.js → list-page-BucXJ0hi.js} +1 -1
- package/core/built/admin/assets/member-custom-fields-DDQV6QeG.js +1 -0
- package/core/built/admin/assets/member-detail-CdJF6Agw.js +1 -0
- package/core/built/admin/assets/members-DjQbq9Z2.js +4 -0
- package/core/built/admin/assets/{modal-page-BMTzFHVO.js → modal-page-xCivTMvI.js} +1 -1
- package/core/built/admin/assets/moderation-AgCIEso4.js +1 -0
- package/core/built/admin/assets/{multi-select-combobox-CGohnsxJ.js → multi-select-combobox-BcITkUVr.js} +1 -1
- package/core/built/admin/assets/navigation-modal-BkT7b1M2.js +1 -0
- package/core/built/admin/assets/newsletter-BMMAuvgq.js +1 -0
- package/core/built/admin/assets/newsletter-detail-modal-0SCJ7Zpm.js +1 -0
- package/core/built/admin/assets/{newsletter-emails-D5ql1rud.js → newsletter-emails-DKzwafuh.js} +1 -1
- package/core/built/admin/assets/newsletters-BRBb_uQC.js +1 -0
- package/core/built/admin/assets/note-DyGHtS9a.js +1 -0
- package/core/built/admin/assets/notifications-ZgWniKna.js +1 -0
- package/core/built/admin/assets/nql-BLpCn7qX.js +21 -0
- package/core/built/admin/assets/offers-container-modal-B-E8TIWr.js +1 -0
- package/core/built/admin/assets/{onboarding-B4YhlZ0i.js → onboarding-CzIsre-d.js} +1 -1
- package/core/built/admin/assets/onboarding-qg8Akovm.js +1 -0
- package/core/built/admin/assets/{onboarding-route-Cu_ROWPn.js → onboarding-route-CaavZulg.js} +1 -1
- package/core/built/admin/assets/overview-BW8GLeYi.js +1 -0
- package/core/built/admin/assets/overview-BkXZNzaZ.js +1 -0
- package/core/built/admin/assets/{page-header-Cfds8pCg.js → page-header-De0VzKBi.js} +1 -1
- package/core/built/admin/assets/pagemenu-B5KKCpbA.js +1 -0
- package/core/built/admin/assets/pages-jgaFm69d.js +1 -0
- package/core/built/admin/assets/pages-route-CIUAQxtY.js +1 -0
- package/core/built/admin/assets/papaparse.min-cQwnxGCG.js +10 -0
- package/core/built/admin/assets/{pintura-modal-TDTrJ89x.js → pintura-modal-BZ2J9w3n.js} +1 -1
- package/core/built/admin/assets/portal-frame-B6Hr9wHc.js +1 -0
- package/core/built/admin/assets/portal-modal-D4ceei3t.js +1 -0
- package/core/built/admin/assets/post-analytics-header-BYCsT0GP.js +1 -0
- package/core/built/admin/assets/post-analytics-ot7f6pih.js +1 -0
- package/core/built/admin/assets/{post-analytics-provider-Cu3jNeFh.js → post-analytics-provider-Bo1gmYaP.js} +1 -1
- package/core/built/admin/assets/{post-share-modal-P1_M6o-H.js → post-share-modal-C-PaYZ_e.js} +1 -1
- package/core/built/admin/assets/posts-DuGazgTb.js +1 -0
- package/core/built/admin/assets/posts-list-screen-CBGGgjjj.js +2 -0
- package/core/built/admin/assets/posts-route-D6xmS7Vf.js +1 -0
- package/core/built/admin/assets/preferences-C5YJLp74.js +5 -0
- package/core/built/admin/assets/{preview-chrome-BOVO6_PE.js → preview-chrome-BljUBlOk.js} +1 -1
- package/core/built/admin/assets/{preview-modal-MlTjP8UU.js → preview-modal-BfeFqi5y.js} +1 -1
- package/core/built/admin/assets/profile-B8mx2yAu.js +1 -0
- package/core/built/admin/assets/{radio-group-CjtmsCPl.js → radio-group-DczlLKOn.js} +1 -1
- package/core/built/admin/assets/{router-provider-CJC58zTy.js → router-provider-B0gZyiGJ.js} +1 -1
- package/core/built/admin/assets/{schemas-CRsC53ls.js → schemas-DppqmpeJ.js} +2 -2
- package/core/built/admin/assets/select-cb0t_TAJ.js +1 -0
- package/core/built/admin/assets/settings-DZqxR0Da.js +1 -0
- package/core/built/admin/assets/settings-DvfTNdHQ.js +4 -0
- package/core/built/admin/assets/{settings-breadcrumbs-sLDNedBW.js → settings-breadcrumbs-DLzbRRSt.js} +1 -1
- package/core/built/admin/assets/{shade-app-F7WxOyfk-nufqw1hd.js → shade-app-CcS3f8MZ-vwURazk8.js} +2 -2
- package/core/built/admin/assets/share-modal-D2-Bz1_I.js +1 -0
- package/core/built/admin/assets/{skeleton-D7hwjdry.js → skeleton-Ce9GgUpf.js} +1 -1
- package/core/built/admin/assets/slack-modal-DYDTUria.js +1 -0
- package/core/built/admin/assets/sort-button-VVeQjjbu.js +1 -0
- package/core/built/admin/assets/{source-icon-BPsD5ees.js → source-icon-Ck5_5Kgq.js} +1 -1
- package/core/built/admin/assets/{stack-CIfOAAVf.js → stack-B2eszIiq.js} +1 -1
- package/core/built/admin/assets/stats-Rjmk5owg.js +1 -0
- package/core/built/admin/assets/stats-view-BGGmkmgv.js +1 -0
- package/core/built/admin/assets/{step-1-CMta6YFO.js → step-1-CsaBjeN4.js} +1 -1
- package/core/built/admin/assets/{step-2-BG04nh5q.js → step-2-D2vnxOOM.js} +1 -1
- package/core/built/admin/assets/{step-3-ZnMaVIPj.js → step-3-wBoLdGEb.js} +2 -2
- package/core/built/admin/assets/{stripe-button-DDoUKN5a.js → stripe-button-CDgLz0S0.js} +1 -1
- package/core/built/admin/assets/stripe-connect-modal-CSjMJetP.js +1 -0
- package/core/built/admin/assets/{switch-C9djUIMO.js → switch-CI4gLWqb.js} +1 -1
- package/core/built/admin/assets/{table-CrqQtkR2.js → table-Do6iQ83Q.js} +1 -1
- package/core/built/admin/assets/{tabs-CGisSbWq.js → tabs-D2yWLMp_.js} +1 -1
- package/core/built/admin/assets/tag-detail-BhXlOsCa.js +2 -0
- package/core/built/admin/assets/tags-ldukRApe.js +1 -0
- package/core/built/admin/assets/testimonials-modal-CtnZBJKl.js +1 -0
- package/core/built/admin/assets/{text-DU9Hv33_.js → text-BQDSDsKs.js} +1 -1
- package/core/built/admin/assets/{textarea-d9qEkMOP.js → textarea-DJ1Q5V39.js} +1 -1
- package/core/built/admin/assets/tier-detail-modal-BOs8e_G8.js +1 -0
- package/core/built/admin/assets/{toggle-group-CtKZURJd.js → toggle-group-ByUJsxwD.js} +1 -1
- package/core/built/admin/assets/{topic-filter-D8JT8Tq1.js → topic-filter-BgC3g5_v.js} +1 -1
- package/core/built/admin/assets/{transistor-modal-6PUf0idx.js → transistor-modal-Drr0SNfo.js} +1 -1
- package/core/built/admin/assets/trend-badge-6ye93YAW.js +1 -0
- package/core/built/admin/assets/{unsplash-modal-BPuDBPja.js → unsplash-modal-p6AoQoWp.js} +1 -1
- package/core/built/admin/assets/{use-analytics-data--opuzwcz.js → use-analytics-data-CWCMAESo.js} +1 -1
- package/core/built/admin/assets/use-check-theme-limit-error-B8bjF-gO.css +1 -0
- package/core/built/admin/assets/use-check-theme-limit-error-Cw3WQHy8.js +2 -0
- package/core/built/admin/assets/use-filter-params-BIni9taJ.js +1 -0
- package/core/built/admin/assets/use-growth-stats-DCVG3s9w.js +1 -0
- package/core/built/admin/assets/{use-limiter-TDSNiHPB.js → use-limiter-D2WRRx0H.js} +1 -1
- package/core/built/admin/assets/{use-navigate-with-base-path-CK989MlC.js → use-navigate-with-base-path-BHPA228f.js} +1 -1
- package/core/built/admin/assets/{use-pintura-config-CnCGrDFk.js → use-pintura-config-h-J0Lvta.js} +1 -1
- package/core/built/admin/assets/{use-pintura-editor-ntphvtUd.js → use-pintura-editor-BfN1UwzH.js} +1 -1
- package/core/built/admin/assets/use-post-referrers-Czg47m8s.js +1 -0
- package/core/built/admin/assets/use-reply-chain-data-ns0caK8k.js +1 -0
- package/core/built/admin/assets/{use-router-history-entry-BwfQS2mq.js → use-router-history-entry-uldn7zJO.js} +1 -1
- package/core/built/admin/assets/{use-setting-group-DQxV42-O.js → use-setting-group-DpcuCUDg.js} +1 -1
- package/core/built/admin/assets/use-settings-navigation-CZjGrhsp.js +1 -0
- package/core/built/admin/assets/{use-simple-pagination-B2TdNX67.js → use-simple-pagination-DzJWobPR.js} +1 -1
- package/core/built/admin/assets/{use-staff-users-QrR9voeC.js → use-staff-users-Csipb-O0.js} +1 -1
- package/core/built/admin/assets/use-tinybird-query-CSnGXzZh.js +1 -0
- package/core/built/admin/assets/use-tinybird-token-DTOKRR7e.js +1 -0
- package/core/built/admin/assets/{use-unsaved-changes-guard-DpYJcj1d.js → use-unsaved-changes-guard-CBzs-KPi.js} +1 -1
- package/core/built/admin/assets/{use-url-input-WnIqckzS.js → use-url-input-DFr8lCbS.js} +1 -1
- package/core/built/admin/assets/user-detail-modal-B_iUClI6.js +1 -0
- package/core/built/admin/assets/users-Cg-OeGzC.js +1 -0
- package/core/built/admin/assets/{virtual-list-D3MfPNOh.js → virtual-list-BW-padMe.js} +1 -1
- package/core/built/admin/assets/web-C1v33ehA.js +2 -0
- package/core/built/admin/assets/web-C4BKzn2T.js +1 -0
- package/core/built/admin/assets/{zapier-modal-BO6PS_Vd.js → zapier-modal-BBFfI6Ml.js} +1 -1
- package/core/built/admin/index.html +24 -30
- package/core/frontend/apps/private-blogging/lib/views/private.hbs +44 -43
- package/core/frontend/helpers/cancel_link.js +2 -2
- package/core/frontend/helpers/pagination.js +2 -2
- package/core/frontend/helpers/social_accounts.js +2 -2
- package/core/frontend/public/ghost.css +1 -1
- package/core/frontend/public/ghost.min.css +1 -1
- package/core/frontend/services/rendering/renderer.js +15 -0
- package/core/frontend/services/sitemap/user-map-generator.js +9 -2
- package/core/server/adapters/storage/LocalStorageBase.js +8 -5
- package/core/server/api/endpoints/db.js +19 -5
- package/core/server/api/endpoints/index.js +6 -2
- package/core/server/api/endpoints/mail.js +1 -1
- package/core/server/api/endpoints/member-metafields.js +89 -0
- package/core/server/api/endpoints/members.js +4 -4
- package/core/server/api/endpoints/posts.js +4 -3
- package/core/server/api/endpoints/tiers-checkout-config.js +59 -0
- package/core/server/api/endpoints/utils/serializers/input/members.js +4 -7
- package/core/server/api/endpoints/utils/serializers/output/config.js +1 -0
- package/core/server/api/endpoints/utils/serializers/output/index.js +6 -2
- package/core/server/api/endpoints/utils/serializers/output/{member-custom-fields.js → member-metafields.js} +2 -4
- package/core/server/api/endpoints/utils/serializers/output/members.js +2 -4
- package/core/server/api/endpoints/utils/serializers/output/tiers-checkout-config.js +12 -0
- package/core/server/api/endpoints/utils/validators/input/invitations.js +0 -5
- package/core/server/api/endpoints/utils/validators/input/pages.js +1 -1
- package/core/server/api/endpoints/utils/validators/input/posts.js +1 -1
- package/core/server/data/exporter/table-lists.js +3 -0
- package/core/server/data/importer/content-files.js +57 -0
- package/core/server/data/importer/handlers/image.js +2 -2
- package/core/server/data/importer/import-archive.js +131 -0
- package/core/server/data/importer/import-manager.js +18 -180
- package/core/server/data/importer/importers/content-file-importer.js +66 -4
- package/core/server/data/importer/importers/data/data-importer.js +3 -3
- package/core/server/data/migrations/utils/migrations.js +1 -1
- package/core/server/data/migrations/versions/6.61/2026-08-19-14-30-20-add-written-by-to-members-custom-field-values.js +42 -0
- package/core/server/data/migrations/versions/6.61/2026-08-19-14-38-53-add-members-custom-field-bindings-table.js +26 -0
- package/core/server/data/migrations/versions/6.61/2026-08-19-14-48-06-add-tier-checkout-field-tables.js +35 -0
- package/core/server/data/schema/schema.js +90 -0
- package/core/server/data/seeders/importers/automation-action-revisions-importer.js +3 -3
- package/core/server/data/seeders/importers/automation-actions-importer.js +3 -3
- package/core/server/data/seeders/importers/automation-run-steps-importer.js +3 -3
- package/core/server/data/seeders/importers/automation-runs-importer.js +5 -5
- package/core/server/data/seeders/importers/automations-importer.js +3 -3
- package/core/server/data/seeders/importers/comment-reports-importer.js +1 -1
- package/core/server/data/seeders/importers/comments-importer.js +1 -1
- package/core/server/data/seeders/importers/email-batches-importer.js +1 -1
- package/core/server/data/seeders/importers/email-recipients-importer.js +1 -1
- package/core/server/data/seeders/importers/emails-importer.js +1 -1
- package/core/server/data/seeders/importers/labels-importer.js +1 -1
- package/core/server/data/seeders/importers/members-click-events-importer.js +1 -1
- package/core/server/data/seeders/importers/members-created-events-importer.js +1 -1
- package/core/server/data/seeders/importers/members-feedback-importer.js +1 -1
- package/core/server/data/seeders/importers/members-importer.js +1 -1
- package/core/server/data/seeders/importers/members-login-events-importer.js +1 -1
- package/core/server/data/seeders/importers/members-products-importer.js +1 -1
- package/core/server/data/seeders/importers/members-status-events-importer.js +1 -1
- package/core/server/data/seeders/importers/members-stripe-customers-importer.js +1 -1
- package/core/server/data/seeders/importers/members-stripe-customers-subscriptions-importer.js +1 -1
- package/core/server/data/seeders/importers/members-subscribe-events-importer.js +1 -1
- package/core/server/data/seeders/importers/members-subscription-created-events-importer.js +1 -1
- package/core/server/data/seeders/importers/offer-redemptions-importer.js +1 -1
- package/core/server/data/seeders/importers/offers-importer.js +1 -1
- package/core/server/data/seeders/importers/posts-importer.js +1 -1
- package/core/server/data/seeders/importers/table-importer.js +2 -2
- package/core/server/data/seeders/importers/tags-importer.js +1 -1
- package/core/server/data/seeders/importers/users-importer.js +1 -1
- package/core/server/data/seeders/importers/web-mentions-importer.js +1 -1
- package/core/server/data/seeders/utils/random.js +3 -3
- package/core/server/ghost-server.js +3 -2
- package/core/server/lib/db-types/boolean.js +18 -0
- package/core/server/lib/image/image-size.js +24 -0
- package/core/server/lib/package-json/parse.js +2 -2
- package/core/server/lib/promise-pool.js +31 -0
- package/core/server/models/member.js +6 -17
- package/core/server/models/post.js +2 -2
- package/core/server/models/relations/authors.js +2 -16
- package/core/server/models/user.js +9 -2
- package/core/server/services/auth/passwordreset.js +13 -0
- package/core/server/services/automations/database-automations-repository.js +26 -26
- package/core/server/services/automations/poll.js +1 -0
- package/core/server/services/comments/comments-controller.js +30 -9
- package/core/server/services/comments/comments-service.js +55 -5
- package/core/server/services/content-import/csv/formula.js +12 -0
- package/core/server/services/content-import/csv/index.js +6 -1
- package/core/server/services/content-import/csv/parse.js +27 -6
- package/core/server/services/content-import/csv/serialize.js +13 -0
- package/core/server/services/content-import/import/assets.js +74 -0
- package/core/server/services/content-import/import/completion-email.js +164 -0
- package/core/server/services/content-import/import/errors-file.js +36 -0
- package/core/server/services/content-import/import/importer.js +204 -54
- package/core/server/services/content-import/import/local-media-url.js +63 -0
- package/core/server/services/content-import/import/media.js +254 -0
- package/core/server/services/content-import/import/post-data.js +1 -1
- package/core/server/services/content-import/import/post-link.js +11 -0
- package/core/server/services/content-import/import/post-repository.js +100 -0
- package/core/server/services/content-import/import/reader.js +9 -2
- package/core/server/services/content-import/import/relations.js +149 -0
- package/core/server/services/content-import/import/report.js +34 -0
- package/core/server/services/content-import/import/row.js +11 -2
- package/core/server/services/content-import/import/schema.js +30 -0
- package/core/server/services/content-import/import/source.js +125 -0
- package/core/server/services/content-import/import/staged-file.js +29 -0
- package/core/server/services/content-import/import/store.js +25 -2
- package/core/server/services/content-import/index.js +58 -34
- package/core/server/services/content-import/jobs/content-csv-import-job.js +20 -0
- package/core/server/services/custom-redirects/redirect-config-parser.js +2 -2
- package/core/server/services/custom-redirects/redirects-service.js +1 -1
- package/core/server/services/custom-redirects/validation.js +1 -1
- package/core/server/services/email-address/email-address-parser.js +30 -38
- package/core/server/services/email-address/email-address-service.js +37 -4
- package/core/server/services/email-analytics/email-analytics-service.js +8 -1
- package/core/server/services/email-analytics/index.js +2 -7
- package/core/server/services/email-analytics/lib/queries.js +7 -1
- package/core/server/services/email-service/batch-sending-service.js +0 -4
- package/core/server/services/email-service/email-renderer.js +14 -4
- package/core/server/services/email-service/email-service-wrapper.js +0 -9
- package/core/server/services/email-service/mailgun-email-provider.js +20 -9
- package/core/server/services/gift-links/schema.js +3 -3
- package/core/server/services/gifts/CONTEXT.md +1 -1
- package/core/server/services/gifts/constants.js +1 -1
- package/core/server/services/gifts/email-templates/gift-delivery.hbs +3 -3
- package/core/server/services/gifts/gift-bookshelf-repository.js +2 -2
- package/core/server/services/gifts/gift-delivery-bookshelf-repository.js +18 -9
- package/core/server/services/gifts/gift-delivery-schema.js +5 -5
- package/core/server/services/gifts/gift-delivery-service.js +4 -0
- package/core/server/services/gifts/gift-email-service.js +0 -1
- package/core/server/services/gifts/gift-schema.js +10 -10
- package/core/server/services/gifts/gift-service.js +4 -2
- package/core/server/services/gifts/index.js +3 -3
- package/core/server/services/gifts/jobs/index.js +4 -4
- package/core/server/services/indexnow-ping/indexnow-ping-service.js +2 -2
- package/core/server/services/invitations/accept.js +4 -2
- package/core/server/services/jobs/job-service.js +0 -9
- package/core/server/services/jobs-service/register-job-handlers.js +25 -15
- package/core/server/services/lib/mailgun-client.js +44 -8
- package/core/server/services/mail/ghost-mailer.js +4 -4
- package/core/server/services/media-inliner/external-media-inliner-job.js +12 -0
- package/core/server/services/media-inliner/external-media-inliner.js +103 -29
- package/core/server/services/media-inliner/service.js +13 -41
- package/core/server/services/media-inliner/types.js +2 -0
- package/core/server/services/member-welcome-emails/service.js +7 -7
- package/core/server/services/members/api.js +1 -0
- package/core/server/services/members/import-export/csv/parse.js +0 -7
- package/core/server/services/members/import-export/export/exporter.js +4 -6
- package/core/server/services/members/import-export/import/completion-email.js +2 -5
- package/core/server/services/members/import-export/import/importer.js +21 -5
- package/core/server/services/members/import-export/import/row.js +0 -3
- package/core/server/services/members/import-export/import/stripe-utils.js +6 -1
- package/core/server/services/members/import-export/index.js +10 -12
- package/core/server/services/members/jobs/clean-expired-comped-job.js +7 -0
- package/core/server/services/members/jobs/clean-expired-comped-task.js +145 -0
- package/core/server/services/members/jobs/index.js +48 -24
- package/core/server/services/members/members-api/controllers/member-controller.js +11 -0
- package/core/server/services/members/members-api/controllers/router-controller.js +3 -6
- package/core/server/services/members/members-api/members-api.js +9 -6
- package/core/server/services/members/members-api/repositories/event-repository.js +0 -4
- package/core/server/services/members/members-api/services/member-bread-service.js +53 -63
- package/core/server/services/members/members-api/services/payments-service.js +47 -1
- package/core/server/services/members/service.js +1 -5
- package/core/server/services/members-custom-fields/actions.js +27 -1
- package/core/server/services/members-custom-fields/bindings-service.js +120 -0
- package/core/server/services/members-custom-fields/codec.js +3 -4
- package/core/server/services/members-custom-fields/definitions-service.js +165 -22
- package/core/server/services/members-custom-fields/filter.js +75 -93
- package/core/server/services/members-custom-fields/index.js +11 -4
- package/core/server/services/members-custom-fields/key.js +2 -1
- package/core/server/services/members-custom-fields/models.js +1 -1
- package/core/server/services/members-custom-fields/queries.js +5 -0
- package/core/server/services/members-custom-fields/schema.js +37 -6
- package/core/server/services/members-custom-fields/serializers.js +3 -5
- package/core/server/services/members-custom-fields/values-service.js +65 -31
- package/core/server/services/mentions/mention-controller.js +23 -21
- package/core/server/services/mentions/process-webmention-job.js +16 -0
- package/core/server/services/mentions/service.js +8 -4
- package/core/server/services/public-config/config.js +7 -0
- package/core/server/services/route-settings/validation-errors.js +1 -1
- package/core/server/services/route-settings/yaml-parser.js +1 -1
- package/core/server/services/settings/settings-service.js +1 -8
- package/core/server/services/settings-helpers/settings-helpers.js +4 -6
- package/core/server/services/slack-ping/slack-ping-service.js +1 -1
- package/core/server/services/staff/staff-service-emails.js +2 -2
- package/core/server/services/stripe/config.js +14 -8
- package/core/server/services/stripe/service.js +10 -1
- package/core/server/services/stripe/services/checkout/completed-session.js +68 -0
- package/core/server/services/stripe/services/checkout/session-options.js +100 -0
- package/core/server/services/stripe/services/webhook/checkout-session-event-service.js +71 -1
- package/core/server/services/stripe/stripe-api.js +31 -0
- package/core/server/services/stripe/stripe-service.js +26 -9
- package/core/server/services/stripe/webhook-controller.js +10 -0
- package/core/server/services/tier-checkout-config/codec.js +99 -0
- package/core/server/services/tier-checkout-config/index.js +26 -0
- package/core/server/services/tier-checkout-config/models.js +63 -0
- package/core/server/services/tier-checkout-config/queries.js +80 -0
- package/core/server/services/tier-checkout-config/schema.js +33 -0
- package/core/server/services/tier-checkout-config/serializers.js +128 -0
- package/core/server/services/tier-checkout-config/service.js +304 -0
- package/core/server/services/tiers/service.js +21 -0
- package/core/server/services/update-check/index.js +13 -13
- package/core/server/services/update-check/jobs/update-check-job.js +7 -0
- package/core/server/services/update-check/update-check-service.js +2 -2
- package/core/server/web/admin/controller.js +1 -1
- package/core/server/web/api/endpoints/admin/routes.js +34 -20
- package/core/server/web/api/middleware/upload.js +2 -2
- package/core/server/web/parent/app.js +5 -0
- package/core/server/web/parent/middleware/filter-query-parameters.js +94 -0
- package/core/server/web/parent/middleware/index.js +1 -0
- package/core/server/web/query-parameter-policy/index.js +9 -0
- package/core/server/web/query-parameter-policy/policy.json +58 -0
- package/core/server/web/query-parameter-policy/schema.js +38 -0
- package/core/shared/config/defaults.json +3 -0
- package/core/shared/config/env/config.testing-mysql.json +4 -1
- package/core/shared/config/env/config.testing.json +3 -0
- package/core/shared/config/overrides.json +4 -2
- package/core/shared/labs.js +9 -15
- package/package.json +25 -25
- package/pnpm-lock.yaml +741 -108
- package/pnpm-workspace.yaml +12 -9
- package/tsconfig.json +2 -3
- package/components/tryghost-kg-default-nodes-2.2.0.tgz +0 -0
- package/core/built/admin/assets/Combination-gnJO3vIw.js +0 -41
- package/core/built/admin/assets/account-migration-8qTEI1i1.js +0 -1
- package/core/built/admin/assets/activitypub/inbox-DQ5CwLma.js +0 -1284
- package/core/built/admin/assets/activitypub/label-B72sfvEU.js +0 -16
- package/core/built/admin/assets/activitypub/layout-CXajhRsL.js +0 -1
- package/core/built/admin/assets/activitypub/settings-71gCm3SO.js +0 -315
- package/core/built/admin/assets/add-integration-modal--YpTq3c0.js +0 -1
- package/core/built/admin/assets/add-newsletter-modal-C8Ix2hol.js +0 -1
- package/core/built/admin/assets/add-recommendation-modal-CScuNFz4.js +0 -1
- package/core/built/admin/assets/alert-dialog-wEbVxANM.js +0 -1
- package/core/built/admin/assets/analytics-Cnji45H5.js +0 -1
- package/core/built/admin/assets/app-utils-D2Wp7ZSS.js +0 -1
- package/core/built/admin/assets/audience-DTLMXAFH.js +0 -1
- package/core/built/admin/assets/automations-BWpRCZ_f.js +0 -1
- package/core/built/admin/assets/bluesky-sharing-DHOpQxff.js +0 -1
- package/core/built/admin/assets/chart-helpers-B3OqQ6Ez.js +0 -1
- package/core/built/admin/assets/color-picker-Bmo1r9Fc.js +0 -3
- package/core/built/admin/assets/color-picker-field-DywowPhF.js +0 -1
- package/core/built/admin/assets/combobox-C4QCh6Yw.js +0 -1
- package/core/built/admin/assets/command-DcLbSifC.js +0 -1
- package/core/built/admin/assets/comments-Bxy_3WyE.js +0 -1
- package/core/built/admin/assets/confirmation-context-CLFHhyyH.js +0 -1
- package/core/built/admin/assets/custom-field-type-option-D0PXoSnP.js +0 -10
- package/core/built/admin/assets/custom-integration-modal-DCIHKN33.js +0 -1
- package/core/built/admin/assets/design-and-theme-modal-CZ-PkW7o.js +0 -23
- package/core/built/admin/assets/dialog-Db7c164G.js +0 -1
- package/core/built/admin/assets/dirty-confirm-dialog-CmARpZQS.js +0 -1
- package/core/built/admin/assets/dist-QLZuGq7o2.js +0 -1
- package/core/built/admin/assets/domain-D0SAtc-T.js +0 -1
- package/core/built/admin/assets/dropzone-CaPOeDRZ.js +0 -5
- package/core/built/admin/assets/edit-profile-By7v5XW5.js +0 -1
- package/core/built/admin/assets/editor-COXn4Atu.js +0 -8
- package/core/built/admin/assets/explore-BsNYrubV.js +0 -1
- package/core/built/admin/assets/feed-8RR1O1bK.js +0 -1
- package/core/built/admin/assets/filter-sources-4C0kF1NU.js +0 -1
- package/core/built/admin/assets/filters-CV5jCb9n.js +0 -1
- package/core/built/admin/assets/filters-Dmr0PoqU.js +0 -1
- package/core/built/admin/assets/first-promoter-modal-OCzSaL3B.js +0 -1
- package/core/built/admin/assets/gift-link-modal-0mzjn5oF.js +0 -1
- package/core/built/admin/assets/growth-55vWlGT_.js +0 -1
- package/core/built/admin/assets/growth-DA5AluYw.js +0 -3
- package/core/built/admin/assets/history-modal-G1s5hHz7.js +0 -1
- package/core/built/admin/assets/html-field-BegxsWpw.js +0 -1
- package/core/built/admin/assets/index-CDP9tIOk.js +0 -4
- package/core/built/admin/assets/index-Dqf2x-ry.css +0 -1
- package/core/built/admin/assets/index.es-BMUCj9TR.js +0 -1
- package/core/built/admin/assets/input-UHrKuvBT.js +0 -1
- package/core/built/admin/assets/invite-user-modal-BrAkxEO3.js +0 -1
- package/core/built/admin/assets/koenig-loader-DwVY_V-H.js +0 -1
- package/core/built/admin/assets/kpi-card-LERqWBoY.js +0 -1
- package/core/built/admin/assets/kpi-helpers-DB3ouhYF.js +0 -1
- package/core/built/admin/assets/kpi-tabs-BGvtMD8S.js +0 -1
- package/core/built/admin/assets/label-picker-BBWykUeA.js +0 -1
- package/core/built/admin/assets/layout-Di5K7doM.js +0 -1
- package/core/built/admin/assets/loading-indicator-SFTqyYVE.js +0 -1
- package/core/built/admin/assets/member-custom-fields-gOv6Hoh3.js +0 -1
- package/core/built/admin/assets/member-detail-D7mZDDp3.js +0 -1
- package/core/built/admin/assets/member-route-0Aa52Ntz.js +0 -1
- package/core/built/admin/assets/members-DvZG9t69.js +0 -2
- package/core/built/admin/assets/moderation-DzzPLDyl.js +0 -1
- package/core/built/admin/assets/navigation-modal-CI8Bx5vn.js +0 -1
- package/core/built/admin/assets/newsletter-Bg3cq5U-.js +0 -1
- package/core/built/admin/assets/newsletter-detail-modal-DQU3r4g2.js +0 -1
- package/core/built/admin/assets/newsletters-DMDfZbMS.js +0 -1
- package/core/built/admin/assets/note-i8k6pjaw.js +0 -1
- package/core/built/admin/assets/notifications-psA_2Ph4.js +0 -1
- package/core/built/admin/assets/offers-container-modal-BWfjSdyg.js +0 -1
- package/core/built/admin/assets/onboarding-DGQuV7Ew.js +0 -1
- package/core/built/admin/assets/overview-C-6xOLaf.js +0 -1
- package/core/built/admin/assets/overview-DaLhpRrC.js +0 -1
- package/core/built/admin/assets/pages-B6vr9F_D.js +0 -1
- package/core/built/admin/assets/popover-CFgqFDvC.js +0 -1
- package/core/built/admin/assets/portal-frame-DjBF-uy2.js +0 -1
- package/core/built/admin/assets/portal-modal-Cf0pBAk8.js +0 -1
- package/core/built/admin/assets/post-analytics-Buz1COoY.js +0 -1
- package/core/built/admin/assets/post-analytics-header-B-P0eFnT.js +0 -1
- package/core/built/admin/assets/posts-KY3aUhVV.js +0 -1
- package/core/built/admin/assets/preferences-Cq1aOiLy.js +0 -5
- package/core/built/admin/assets/profile-D6dHYf2o.js +0 -1
- package/core/built/admin/assets/select-D_RQaXgt.js +0 -1
- package/core/built/admin/assets/settings-B5hJKZ5C.js +0 -1
- package/core/built/admin/assets/settings-DIo_F-MF.js +0 -4
- package/core/built/admin/assets/share-modal-CLBfj377.js +0 -1
- package/core/built/admin/assets/shim-ClF_m5ux.js +0 -1
- package/core/built/admin/assets/slack-modal-Bt9I_tEo.js +0 -1
- package/core/built/admin/assets/sort-button-DMBXF7tP.js +0 -1
- package/core/built/admin/assets/stats-B_YkF7bp.js +0 -1
- package/core/built/admin/assets/stats-view-BOCp9RG8.js +0 -1
- package/core/built/admin/assets/stripe-connect-modal-BeSukI8q.js +0 -1
- package/core/built/admin/assets/tag-detail-2a3BfzTW.js +0 -2
- package/core/built/admin/assets/tags-Dp2_8UzL.js +0 -1
- package/core/built/admin/assets/testimonials-modal-C9nrypNo.js +0 -1
- package/core/built/admin/assets/tier-detail-modal-CxRwgTPR.js +0 -1
- package/core/built/admin/assets/use-check-theme-limit-error-C9-QhGdV.js +0 -1
- package/core/built/admin/assets/use-filter-params-CSpAvgD2.js +0 -1
- package/core/built/admin/assets/use-growth-stats-BOmoPDHJ.js +0 -1
- package/core/built/admin/assets/use-post-referrers-CbXLFIex.js +0 -1
- package/core/built/admin/assets/use-reply-chain-data-JYFKSO83.js +0 -1
- package/core/built/admin/assets/use-settings-navigation-BBzro2-V.js +0 -1
- package/core/built/admin/assets/use-tinybird-query-D2Aeoty5.js +0 -39
- package/core/built/admin/assets/use-tinybird-token-DBuwMmln.js +0 -1
- package/core/built/admin/assets/user-detail-modal-59mBJqxN.js +0 -1
- package/core/built/admin/assets/users-5msE1WMs.js +0 -1
- package/core/built/admin/assets/web-DUuX7nE2.js +0 -2
- package/core/built/admin/assets/web-N8ucs2aG.js +0 -1
- package/core/server/api/endpoints/member-custom-fields.js +0 -100
- package/core/server/services/jobs/worker-model-event-bridge.js +0 -149
- package/core/server/services/members/jobs/clean-expired-comped.js +0 -132
- package/core/server/services/update-check/run-update-check.js +0 -63
- /package/core/server/lib/{db-date.js → db-types/date.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{i as n}from"./currency-Dy4Tc2R2.js";import{C as r,S as i,h as a,m as o}from"./dist-B3keLvjj.js";import{d as s,n as c,t as l}from"./stats-Rjmk5owg.js";import{a as u,n as d}from"./chart-helpers-CfBKt0vT.js";r();var f=e(t(),1),p=(e,t,n,r)=>{if(!e.length)return{totalMembers:0,freeMembers:0,paidMembers:0,mrr:0,percentChanges:{total:`0%`,free:`0%`,paid:`0%`,mrr:`0%`},directions:{total:`same`,free:`same`,paid:`same`,mrr:`same`}};let o=r||e[e.length-1],s=e.length>0?e[e.length-1]:{free:0,paid:0,comped:0,gift:0},c=t.length>0?t[t.length-1]:{mrr:0},l=o.free+o.paid+o.comped+(o.gift??0),u=c.mrr,d={total:`0%`,free:`0%`,paid:`0%`,mrr:`0%`},f={total:`same`,free:`same`,paid:`same`,mrr:`same`};if(e.length>1){let t=e[0],n=t.free+t.paid+t.comped+(t.gift??0);if(n>0){let e=(l-n)/n*100;d.total=a(e/100),f.total=e>0?`up`:e<0?`down`:`same`}if(t.free>0){let e=(s.free-t.free)/t.free*100;d.free=a(e/100),f.free=e>0?`up`:e<0?`down`:`same`}let r=t.paid+t.comped+(t.gift??0),i=s.paid+s.comped+(s.gift??0);if(r>0){let e=(i-r)/r*100;d.paid=a(e/100),f.paid=e>0?`up`:e<0?`down`:`same`}}if(t.length>1){let e=i(n).format(`YYYY-MM-DD`),r=t.find(t=>i(t.date).isSameOrAfter(e)),o=i(n).isSame(i().startOf(`year`),`day`)||i(n).year()<i().year(),s=0;if(s=r&&i(r.date).isSame(e,`day`)?r.mrr:o?0:u,s>=0){let e=s===0?u>0?100:0:(u-s)/s*100;d.mrr=a(e/100),f.mrr=e>0?`up`:e<0?`down`:`same`}}return{totalMembers:l,freeMembers:o.free,paidMembers:o.paid+o.comped+(o.gift??0),mrr:u,percentChanges:d,directions:f}},m=(e,t)=>{let n=[...e].sort((e,t)=>new Date(e.date).getTime()-new Date(t.date).getTime()),r=[...t].sort((e,t)=>new Date(e.date).getTime()-new Date(t.date).getTime()),i=n.map(e=>e.date),a=r.map(e=>e.date),s=[...new Set([...i,...a])].sort((e,t)=>new Date(e).getTime()-new Date(t).getTime()),c=null,l=null,u=new Map(n.map(e=>[e.date,e])),d=new Map(r.map(e=>[e.date,e]));return s.map(e=>{let t=u.get(e);t&&(c=t);let n=d.get(e);n&&(l=n);let r=c?.free??0,i=c?.paid??0,a=c?.comped??0,s=c?.gift??0,f=i+a+s,p=r+f;return{date:e,value:p,free:r,paid:f,comped:a,gift:s,mrr:l?.mrr??0,paid_subscribed:c?.paid_subscribed??0,paid_canceled:c?.paid_canceled??0,formattedValue:o(p),label:`Total members`}})},h=e=>{let{startDate:t,endDate:r}=(0,f.useMemo)(()=>u(e),[e]),a=d(t),o=e===1?i(a).subtract(1,`day`).format(`YYYY-MM-DD`):a,{data:h,isLoading:g}=l({searchParams:{date_from:o}}),{data:_,isLoading:v}=c({searchParams:{date_from:o}}),{data:y,isLoading:b}=s(),x=(0,f.useMemo)(()=>{let t=[];if(h?.stats?t=h.stats:Array.isArray(h)&&(t=h),e===1&&t.length>=2){let e=t[t.length-2],n=t[t.length-1],r=i(a).format(`YYYY-MM-DD`),o=i(a).add(1,`day`).format(`YYYY-MM-DD`);return[{...e,date:r},{...n,date:o}]}return t},[h,e,a]),{mrrData:S,selectedCurrency:C}=(0,f.useMemo)(()=>{let t=i(a),n=e===1?i().endOf(`day`):i().startOf(`day`);if(_?.stats&&_?.meta?.totals){let r=_.meta.totals,a=r[0];if(!a)return{mrrData:[],selectedCurrency:`usd`};for(let e of r)e.mrr>a.mrr&&(a=e);let o=a.currency,s=_.stats.filter(e=>e.currency===o),c=s.filter(e=>i(e.date).isSameOrAfter(t)),l=[...s].sort((e,t)=>new Date(t.date).getTime()-new Date(e.date).getTime()),u=[...c];if(!u.some(e=>i(e.date).isSame(t,`day`))){let e=l.find(e=>i(e.date).isBefore(t));if(e)u.unshift({...e,date:t.format(`YYYY-MM-DD`)});else if(u.length>0){let e=[...u].sort((e,t)=>new Date(e.date).getTime()-new Date(t.date).getTime())[0];u.unshift({...e,date:t.format(`YYYY-MM-DD`)})}}let d=e===1?i().startOf(`day`):n;if(!u.some(e=>i(e.date).isSame(d,`day`))&&u.length>0){let e=[...u].sort((e,t)=>new Date(t.date).getTime()-new Date(e.date).getTime())[0];u.push({...e,date:d.format(`YYYY-MM-DD`)})}return{mrrData:u.sort((e,t)=>new Date(e.date).getTime()-new Date(t.date).getTime()),selectedCurrency:o}}return{mrrData:[],selectedCurrency:`usd`}},[_,a,e]),w=(0,f.useMemo)(()=>p(x,S,a,h?.meta?.totals),[x,S,a,h?.meta?.totals]),T=(0,f.useMemo)(()=>m(x,S),[x,S]),E=(0,f.useMemo)(()=>n(C),[C]);return{isLoading:(0,f.useMemo)(()=>g||v||b,[g,v,b]),memberData:x,mrrData:S,dateFrom:a,endDate:r,totals:w,chartData:T,subscriptionData:(0,f.useMemo)(()=>{if(!y?.stats)return[];let e=y.stats.reduce((e,t)=>{let n=t.date;return e[n]||(e[n]={date:n,signups:0,cancellations:0}),e[n].signups+=t.signups,e[n].cancellations+=t.cancellations,e},{}),t=Object.values(e).sort((e,t)=>new Date(e.date).getTime()-new Date(t.date).getTime()),n=i(a),o=i(r);return t.filter(e=>{let t=i(e.date);return t.isSameOrAfter(n)&&t.isSameOrBefore(o)})},[y,a,r]),selectedCurrency:C,currencySymbol:E}};export{h as t};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./limit-service-BhiEvqcP.js","./rolldown-runtime-DAXXjFlN.js","./_baseAssignValue-C_vooEQc.js","./luxon-D1RVjjpq.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{g as n,n as r,r as i,t as a}from"./hooks-CuEZV2-q.js";import{n as o,t as s}from"./update-queries-C4CnvJaW.js";import{s as c}from"./config-DOMQDZGZ.js";import{t as l}from"./preload-helper-DYl5dUZ5.js";import{f as u}from"./users-
|
|
2
|
+
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{g as n,n as r,r as i,t as a}from"./hooks-CuEZV2-q.js";import{n as o,t as s}from"./update-queries-C4CnvJaW.js";import{s as c}from"./config-DOMQDZGZ.js";import{t as l}from"./preload-helper-DYl5dUZ5.js";import{f as u}from"./users-Cg-OeGzC.js";import{r as d}from"./newsletters-DhNigJUh.js";import{o as f}from"./index-6MkPdCtr.js";var p=`InvitesResponseType`,m=a({dataType:p,path:`/invites/`,permissions:[`Owner`,`Administrator`],defaultSearchParams:{limit:`100`,include:`roles`},defaultNextPageParams:(e,t)=>({...t,page:(e.meta?.pagination.next||1).toString()}),returnData:e=>{let{pages:t}=e,n=t.flatMap(e=>e.invites),r=t[t.length-1].meta;return{invites:n,meta:r,isEnd:r?r.pagination.pages===r.pagination.page:!0}}}),h=r({method:`POST`,path:()=>`/invites/`,body:({email:e,roleId:t})=>({invites:[{email:e,role_id:t,expires:null,status:null,token:null}]}),updateQueries:{dataType:p,emberUpdateType:`createOrUpdate`,update:o(`invites`)}}),g=r({path:e=>`/invites/${e}/`,method:`DELETE`,updateQueries:{dataType:p,emberUpdateType:`delete`,update:s(`invites`)}}),_=i({dataType:`RolesResponseType`,path:`/roles/`,defaultSearchParams:{limit:`100`}}),v=e(t(),1),y=l(()=>import(`./limit-service-BhiEvqcP.js`).then(t=>e(t.default,1)),__vite__mapDeps([0,1,2,3]),import.meta.url),b=class extends Error{constructor({message:e}){super(e)}},x=()=>{let{data:e}=c({refetchOnMount:!1}),t=e?.config,[r,i]=(0,v.useState)(null);(0,v.useEffect)(()=>{y.then(e=>i(()=>e.default))},[]);let{data:{users:a}={users:[]},isLoading:o}=u(),{data:{invites:s}={invites:[]},isLoading:l}=m(),{data:{roles:p}={},isLoading:h}=_(),g=o||l||h,{refetch:x}=f({searchParams:{limit:`1`},enabled:!1}),{refetch:S}=d({searchParams:{filter:`status:active`,limit:`1`},enabled:!1}),C=(0,v.useMemo)(()=>t?.hostSettings?.billing?.enabled===!0&&t.hostSettings.billing.url?t.hostSettings.billing.url:`https://ghost.org/help/`,[t?.hostSettings?.billing]);return(0,v.useMemo)(()=>{let e={isLimited:()=>!1,isDisabled:()=>!1,checkWouldGoOverLimit:()=>Promise.resolve(!1),errorIfWouldGoOverLimit:()=>Promise.resolve(),errorIfIsOverLimit:()=>Promise.resolve()};if(!r||!t?.hostSettings?.limits||g)return e;let i={...t.hostSettings.limits},o=new r;return i.staff&&(i.staff.currentCountQuery=()=>{let e=a.filter(e=>e.status!==`inactive`&&!e.roles.some(e=>e.name===`Contributor`)),t=s.filter(e=>p?.find(({id:t})=>t===e.role_id)?.name!==`Contributor`);return Promise.resolve(e.length+t.length)}),i.members&&(i.members.currentCountQuery=async()=>{let{data:e}=await x();return e?.meta?.pagination?.total||0}),i.newsletters&&(i.newsletters.currentCountQuery=async()=>{let{data:{pages:e}={pages:[]}}=await S();return e[0].meta?.pagination.total||0}),o.loadLimits({limits:i,helpLink:C,errors:{HostLimitError:n,IncorrectUsageError:b}}),{isLimited:e=>o.isLimited(e),isDisabled:e=>o.isDisabled(e),checkWouldGoOverLimit:e=>o.checkWouldGoOverLimit(e),errorIfWouldGoOverLimit:(e,t={})=>o.errorIfWouldGoOverLimit(e,t),errorIfIsOverLimit:e=>o.errorIfIsOverLimit(e)}},[r,t,x,S,C,s,g,p,a])};export{g as a,m as i,_ as n,h as r,x as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{f as n}from"./chunk-KS7C4IRE-DCsL4i4D.js";import{a as r}from"./router-provider-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{f as n}from"./chunk-KS7C4IRE-DCsL4i4D.js";import{a as r}from"./router-provider-B0gZyiGJ.js";function i(){let e=n().find(e=>e.handle===`activitypub-basepath`)?.pathname??``;return e.endsWith(`/`)?e.slice(0,-1):e}var a=e(t(),1);function o(){let e=r(),t=i();return(0,a.useCallback)((n,r)=>{if(typeof n==`number`){e(n,r);return}n.startsWith(`/`)?e(`${t}${n}`,r):e(n,r)},[e,t])}export{i as n,o as t};
|
package/core/built/admin/assets/{use-pintura-config-CnCGrDFk.js → use-pintura-config-h-J0Lvta.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{f as n}from"./hooks-CuEZV2-q.js";import{s as r}from"./config-DOMQDZGZ.js";import{
|
|
1
|
+
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{f as n}from"./hooks-CuEZV2-q.js";import{s as r}from"./config-DOMQDZGZ.js";import{ii as i,ti as a}from"./index-6MkPdCtr.js";var o=e(t(),1),s=e=>{if(e!=null){if(typeof e==`string`)return e;throw TypeError(`Expected value to be null, undefined, or a string`)}},c=e=>{if(e.startsWith(`/`)){let{adminRoot:t}=n();return window.location.origin+t.replace(/\/$/,``)+e}return e};function l(){let{data:e}=r(),{data:t}=i(),n=e?.config?.pintura,[l,u,d]=a(t?.settings??null,[`pintura`,`pintura_js_url`,`pintura_css_url`]),f,p;return l&&(f=n?.js||s(u),p=n?.css||s(d)),(0,o.useMemo)(()=>!f||!p?null:{jsUrl:c(f),cssUrl:c(p)},[f,p])}export{l as t};
|
package/core/built/admin/assets/{use-pintura-editor-ntphvtUd.js → use-pintura-editor-BfN1UwzH.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{a as n,i as r}from"./framework-provider-DqI25epG.js";import{f as i,p as a}from"./hooks-CuEZV2-q.js";import{t as o}from"./preload-helper-DYl5dUZ5.js";import{
|
|
1
|
+
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{a as n,i as r}from"./framework-provider-DqI25epG.js";import{f as i,p as a}from"./hooks-CuEZV2-q.js";import{t as o}from"./preload-helper-DYl5dUZ5.js";import{ti as s}from"./index-6MkPdCtr.js";import{n as c}from"./global-data-context-gAMDH9u1.js";var l=e(t(),1);function u(){let{config:e,settings:t}=c(),u=a(),[d]=s(t,[`pintura`]),[f,p]=(0,l.useState)(!1),[m,h]=(0,l.useState)(!1),[g,_]=(0,l.useState)(!1),v=(0,l.useRef)(!1),[y]=s(t,[`pintura_js_url`]),[b]=s(t,[`pintura_css_url`]),x=d&&f&&m||!1,S=e?.pintura;(0,l.useEffect)(()=>{let e=S?.js?S?.js:y||null;if(e){if(e.startsWith(`/`)){let{adminRoot:t}=i();e=window.location.origin+t.replace(/\/$/,``)+e}if(window.pintura){p(!0);return}try{let t=new URL(e),n=`${t.protocol}//${t.host}${t.pathname}`;o(()=>import(n),[],import.meta.url).then(()=>{p(!0)}).catch(e=>{r(e)})}catch(e){r(e)}}},[y,S?.js]),(0,l.useEffect)(()=>{let e=S?.css?S?.css:b||null;if(e){if(e.startsWith(`/`)){let{adminRoot:t}=i();e=window.location.origin+t.replace(/\/$/,``)+e}try{if(document.querySelector(`link[href="${e}"]`))h(!0);else{let t=document.createElement(`link`);t.rel=`stylesheet`,t.type=`text/css`,t.href=e,t.onload=()=>{h(!0)},document.head.appendChild(t)}}catch(e){r(e)}}},[b,S?.css]);let C=(0,l.useCallback)(({image:e,handleSave:t})=>{if(e&&x){let r=new URL(e);r.searchParams.has(`v`)||r.searchParams.set(`v`,Date.now().toString());let i=r.href,a=window.pintura.openDefaultEditor({src:i,enableTransparencyGrid:!0,util:`crop`,utils:[`crop`,`filter`,`finetune`,`redact`,`annotate`,`trim`,`frame`,`resize`],frameOptions:[[void 0,e=>e.labelNone],[`solidSharp`,e=>e.frameLabelMatSharp],[`solidRound`,e=>e.frameLabelMatRound],[`lineSingle`,e=>e.frameLabelLineSingle],[`hook`,e=>e.frameLabelCornerHooks],[`polaroid`,e=>e.frameLabelPolaroid]],cropSelectPresetFilter:`landscape`,cropSelectPresetOptions:[[void 0,`Custom`],[1,`Square`],[2/1,`2:1`],[3/2,`3:2`],[4/3,`4:3`],[16/10,`16:10`],[16/9,`16:9`],[1/2,`1:2`],[2/3,`2:3`],[3/4,`3:4`],[10/16,`10:16`],[9/16,`9:16`]],locale:{labelButtonExport:`Save and close`},previewPad:!0,willClose:()=>v.current?(_(!1),!0):!1});a.on(`loaderror`,()=>{n(`Pintura editor failed to load`)}),a.on(`process`,e=>{Promise.resolve(t(e.dest)).catch(u)}),_(!0)}},[u,x]);return(0,l.useEffect)(()=>{let e=e=>{e.key===`Escape`&&e.stopPropagation()};if(!g)return;let t=e=>{e.target instanceof Element&&e.target.closest(`.PinturaModal button[title="Close"]`)&&(v.current=!0)};return window.addEventListener(`click`,t,{capture:!0}),window.addEventListener(`keydown`,e,{capture:!0}),()=>{window.removeEventListener(`click`,t,{capture:!0}),window.removeEventListener(`keydown`,e,{capture:!0})}},[g]),{isEnabled:x,openEditor:C}}export{u as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{i as n}from"./currency-Dy4Tc2R2.js";import{a as r,n as i,s as a}from"./stats-Rjmk5owg.js";var o=e(t(),1),s=e=>{let{data:t,isLoading:s}=a(e),{data:c,isLoading:l}=r(e),{data:u,isLoading:d}=i(),f=(0,o.useMemo)(()=>t?.stats||[],[t]),p=(0,o.useMemo)(()=>c?.stats.length===0?{free_members:0,paid_members:0,mrr:0}:c?.stats[0],[c]),{selectedCurrency:m,currencySymbol:h}=(0,o.useMemo)(()=>{if(u?.stats&&u?.meta?.totals){let e=u.meta.totals,t=e[0];if(!t)return{selectedCurrency:`usd`,currencySymbol:n(`usd`)};for(let n of e)n.mrr>t.mrr&&(t=n);let r=t.currency;return{selectedCurrency:r,currencySymbol:n(r)}}return{selectedCurrency:`usd`,currencySymbol:n(`usd`)}},[u]);return{isLoading:(0,o.useMemo)(()=>s||l||d,[s,l,d]),stats:f,totals:p,selectedCurrency:m,currencySymbol:h}};export{s as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{E as r,t as i}from"./button-eNMKQWXr.js";import{Dn as a,Gt as o,Qn as s,Sn as c,mn as l,wn as u,yt as d}from"./index-6MkPdCtr.js";var f=e(t(),1),p=n(),m=({object:e,onReply:t,onReplyError:n,className:r,...i})=>{let{data:s}=c(`index`),[l,u]=(0,f.useState)(!1);if(!s)return null;let m=e.attributedTo,h=`Reply...`;return m?.preferredUsername&&m?.id&&(h=`Reply to ${a(m)}...`),(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(`div`,{className:`flex w-full cursor-pointer gap-x-3 py-6 ${r||``}`,onClick:()=>u(!0),...i,children:[(0,p.jsx)(o,{author:s}),(0,p.jsx)(`div`,{className:`flex w-full items-center`,children:(0,p.jsx)(`div`,{className:`w-full text-[1.5rem] text-gray-500 transition-colors dark:text-gray-700`,children:h})})]}),l&&(0,p.jsx)(d,{open:l,replyTo:{object:e,actor:e.attributedTo},onOpenChange:e=>{u(e)},onReply:()=>{t?.(),u(!1)},onReplyError:()=>{n?.()}})]})},h=({last:e})=>(0,p.jsxs)(`div`,{className:`relative mt-[-5px] py-5`,children:[(0,p.jsxs)(`div`,{className:`flex h-12 grow items-center gap-2 rounded-lg border border-gray-200 p-2 px-[10px] text-gray-600`,children:[(0,p.jsx)(r,{size:18,strokeWidth:1.25}),`This post has been deleted`]}),!e&&(0,p.jsx)(`div`,{className:`absolute top-[70px] bottom-0 left-[18px] z-0 mb-[-13px] w-[2px] rounded-sm bg-gray-200`})]}),g=({count:e,onClick:t,variant:n=`default`,preserveScroll:r=!0,loading:a=!1})=>{let o=(0,f.useRef)(null),c=()=>{if(e&&e>0)return`Show ${e} more ${e===1?`reply`:`replies`}`;switch(n){case`expand`:return`Show replies`;case`loadMore`:return`Show more replies`;default:return`Show replies`}},l=()=>{if(r){let e=document.querySelector(`[data-scrollable-container]`),n=e?e.scrollTop:window.scrollY;t(),setTimeout(()=>{e?e.scrollTop=n:window.scrollTo(0,n)},0)}else t()};return(0,p.jsxs)(`div`,{ref:o,className:`mt-[-7px] flex items-center pb-3`,children:[(0,p.jsxs)(`div`,{className:`flex w-10 flex-col items-center justify-center gap-1`,children:[(0,p.jsx)(`div`,{className:`size-0.5 rounded-sm bg-gray-300`}),(0,p.jsx)(`div`,{className:`size-0.5 rounded-sm bg-gray-300`}),(0,p.jsx)(`div`,{className:`size-0.5 rounded-sm bg-gray-300`})]}),(0,p.jsx)(i,{className:`text-sm font-medium text-blue-600 hover:text-blue-800`,variant:`ghost`,onClick:e=>{e.preventDefault(),e.stopPropagation(),e.target.blur(),l()},children:a?(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsx)(s,{size:`sm`}),(0,p.jsx)(`span`,{children:`Loading...`})]}):c()})]})};function _(e,t={}){let{includeAncestors:n=!1}=t,{data:r,isLoading:i,loadMoreChildren:a,loadMoreChildReplies:o,hasMoreChildren:s,hasMoreChildReplies:c}=l(`index`,e);return{threadParents:n&&r?.ancestors?.chain?.map(u)||[],post:r?.post?u(r.post):void 0,processedReplies:(r?.children??[]).map(e=>({mainReply:u(e.post),chain:e.chain?e.chain.map(u):[]})),isLoading:i,loadMoreChildren:a,loadMoreChildReplies:o,hasMoreChildren:s,hasMoreChildReplies:c}}export{m as i,g as n,h as r,_ as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{c as n,
|
|
1
|
+
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{c as n,s as r}from"./schemas-DppqmpeJ.js";var i=e(t(),1);function a(e){i.useEffect(()=>{if(!e)return;let t=e=>{e.preventDefault(),e.returnValue=``};return window.addEventListener(`beforeunload`,t),()=>{window.removeEventListener(`beforeunload`,t)}},[e])}var o=r({idx:n().int().nonnegative().optional()}).nullable();function s(){let e=o.safeParse(window.history.state);return e.success&&e.data?.idx!==void 0}export{a as n,s as t};
|
package/core/built/admin/assets/{use-setting-group-DQxV42-O.js → use-setting-group-DpcuCUDg.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{p as n}from"./hooks-CuEZV2-q.js";import{t as r}from"./use-form-vRjI0Kwk.js";import{S as i}from"./shade-app-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{p as n}from"./hooks-CuEZV2-q.js";import{t as r}from"./use-form-vRjI0Kwk.js";import{S as i}from"./shade-app-CcS3f8MZ-vwURazk8.js";import{oi as a}from"./index-6MkPdCtr.js";import{n as o}from"./global-data-context-gAMDH9u1.js";var s=e(t(),1),c=({savingDelay:e,onValidate:t}={})=>{let c=(0,s.useRef)(null),{siteData:l,settings:u}=o(),{mutateAsync:d}=a(),f=n(),[p,m]=(0,s.useState)(!1),{formState:h,saveState:g,handleSave:_,updateForm:v,setFormState:y,reset:b,validate:x,errors:S,clearError:C,okProps:w}=r({initialState:u||[],savingDelay:e,onSave:async()=>{await d?.(E())},onSaveError:f,onValidate:t}),{setGlobalDirtyState:T}=i();(0,s.useEffect)(()=>{T(h.some(e=>e.dirty))},[h,T]),(0,s.useEffect)(()=>{p&&c.current&&c.current.focus()},[p]),(0,s.useEffect)(()=>{(!p||g===`saving`)&&y(()=>u)},[u]);let E=()=>h?.filter(e=>e.dirty)?.map(e=>({key:e.key,value:e.value}));return{localSettings:h,isEditing:p,saveState:g,focusRef:c,siteData:l,handleSave:async()=>{let e=await _();return e&&m(!1),e},handleCancel:()=>{b(),m(!1)},updateSetting:(0,s.useCallback)((e,t)=>{v(n=>n.some(t=>t.key===e)?n.map(n=>n.key===e?{...n,value:t,dirty:!0}:n):[...n,{key:e,value:t,dirty:!0}])},[v]),handleEditingChange:e=>{m(e)},validate:x,errors:S,clearError:C,okProps:w}};export{c as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{r}from"./framework-provider-DqI25epG.js";import{u as i}from"./chunk-KS7C4IRE-DCsL4i4D.js";import{a}from"./router-provider-B0gZyiGJ.js";import{l as o,o as s}from"./dist-B3keLvjj.js";import{t as c}from"./box-CdfQAP_F.js";import{t as l}from"./inline-BWSs_VzR.js";import{t as u}from"./text-BQDSDsKs.js";import{S as d}from"./shade-app-CcS3f8MZ-vwURazk8.js";import{a as f,t as p}from"./button-eNMKQWXr.js";import{Qn as m}from"./index-6MkPdCtr.js";import{n as h,t as ee}from"./dirty-confirm-dialog-BZ1iytEd.js";var g=n(),_=({shiftY:e,height:t=96,children:n,className:r,contentClassName:i,style:a,...s})=>(0,g.jsxs)(`div`,{className:o(`sticky z-[297] m-0 box-border w-full p-0`,r),style:{bottom:e?`calc(${e} - 24px)`:`-24px`,height:`${t+24}px`,...a},...s,children:[(0,g.jsx)(`div`,{className:`sticky bottom-0 z-[298] block h-6 bg-background`}),(0,g.jsx)(`div`,{className:o(`sticky bottom-0 z-[299] -mb-6 flex items-center justify-between bg-background`,i),style:{height:t},children:n}),(0,g.jsx)(`div`,{className:`sticky mx-2 block h-6 rounded-full shadow-[0_0_0_1px_color-mix(in_oklab,var(--color-border)_25%,transparent),0_-8px_16px_-3px_color-mix(in_oklab,var(--color-foreground)_8%,transparent)]`,style:{bottom:e?`calc(${e} + ${t-24}px)`:`${t-24}px`}})]}),v=e(t(),1),y=`bg-modal-backdrop backdrop-blur-[3px]`,b=s(`relative z-50 flex max-h-full w-full flex-col justify-between overflow-x-hidden bg-background text-foreground`,{variants:{size:{sm:`max-w-[480px] rounded-lg`,md:`max-w-[720px] rounded-lg`,lg:`max-w-[1020px] rounded-lg`,xl:`max-w-[1240px] rounded-lg`,full:`h-full rounded-lg`,bleed:`h-full`},align:{center:`mx-auto`,left:`mr-auto`,right:`ml-auto`},scrolling:{true:`overflow-y-auto`,false:`overflow-y-hidden`},formSheet:{true:`shadow-md`,false:`shadow-xl`}},defaultVariants:{size:`md`,align:`center`,scrolling:!0,formSheet:!1}}),te={sm:`p-4 md:p-[8vmin]`,md:`p-4 md:p-[8vmin]`,lg:`p-4 md:p-[4vmin]`,xl:`p-4 md:p-[3vmin]`,full:`p-4 md:p-[3vmin]`,bleed:``},ne={sm:`p-8`,md:`p-8`,lg:`p-7`,xl:`p-10`,full:`p-10`,bleed:`p-10`},re={sm:`-inset-x-8`,md:`-inset-x-8`,lg:`-inset-x-8`,xl:`-inset-x-10 -top-10`,full:`-inset-x-10`,bleed:`-inset-x-10`},x=(0,v.forwardRef)(({"aria-label":e,className:t,size:n=`md`,align:r=`center`,width:i,height:a,testId:s,title:x,okLabel:S=`OK`,okLoading:C=!1,cancelLabel:w=`Cancel`,footer:T,footerClassName:E,header:D,leftButton:ie,buttonsDisabled:O,okDisabled:ae,padding:oe=!0,onOk:k,okVariant:se=`default`,onCancel:A,topRightContent:j,hideXOnMobile:M=!1,onClose:N,afterClose:P,children:F,backDrop:I=!0,backDropClick:L=!0,stickyFooter:R=!1,stickyHeader:z=!1,scrolling:B=!0,dirty:V=!1,animate:H=!0,formSheet:U=!1,enableCMDS:W=!0,allowBackgroundInteraction:G=!1},ce)=>{let{setGlobalDirtyState:K}=d(),{confirm:le,dialogProps:ue}=h(),[q,de]=(0,v.useState)(!1);(0,v.useEffect)(()=>{K(V)},[V,K]);let J=()=>{le(V,()=>{N(),P?.()})};(0,v.useEffect)(()=>{let e=e=>{if(e.key!==`Escape`)return;let t=document.activeElement;t?.hasAttribute(`data-kg-link-input`)||setTimeout(()=>{e.defaultPrevented||(t instanceof HTMLElement&&document.activeElement===t&&t.blur(),A?A():J())})};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)}),(0,v.useEffect)(()=>{let e=setTimeout(()=>de(!0),250);return()=>clearTimeout(e)},[]),(0,v.useEffect)(()=>{if(!k||!W)return;let e=e=>{(e.metaKey||e.ctrlKey)&&e.key===`s`&&(e.preventDefault(),k())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[W,k]);let Y=oe?ne[n]:`p-0`,fe=o(b({size:n,align:r,scrolling:B,formSheet:U}),t,H&&!U&&!q&&r===`center`&&`animate-modal-in`,H&&!U&&!q&&r===`right`&&`animate-modal-in-from-right`,U&&!q&&`animate-modal-in-reverse`,i===`full`&&`w-full`,i===`toSidebar`&&`w-full max-w-[calc(100dvw_-_280px)] lg:max-w-full min-[1280px]:max-w-[calc(100dvw_-_320px)]`,a===`full`&&`h-full`,G&&`pointer-events-auto`),pe=o(`fixed inset-0 z-[1000] h-[100dvh] w-[100dvw] max-[800px]:pb-20`,te[n],G&&`pointer-events-none`),X=o(Y,`pb-0`,re[n],j&&j!==`close`&&`flex items-center justify-between gap-5`,z&&`sticky -top-px z-[300] -mb-4 bg-background pb-4`),me=o(Y,`py-0`,(n===`full`||n===`bleed`||a===`full`||typeof a==`number`)&&`grow`,T===!1&&`pb-0`),he=o(Y,`flex w-full items-center justify-between`,R&&`py-6`,E),Z={...typeof i==`number`?{width:`100%`,maxWidth:`${i}px`}:{},...typeof a==`number`?{height:`100%`,maxHeight:`${a}px`}:{}},ge=e=>{e.target===e.currentTarget&&L&&J()},Q;T?Q=T:T!==!1&&(Q=(0,g.jsxs)(l,{className:he,gap:`none`,justify:`between`,children:[(0,g.jsx)(c,{children:ie}),(0,g.jsxs)(l,{gap:`md`,children:[w&&(0,g.jsx)(p,{"data-testid":`cancel-modal`,disabled:O,type:`button`,variant:`outline`,onClick:A||J,children:w}),S&&(0,g.jsxs)(p,{"data-testid":`ok-modal`,disabled:O||ae||C,type:`button`,variant:se,onClick:()=>void k?.(),children:[C&&(0,g.jsx)(m,{size:`sm`}),S]})]})]})),R&&(Q=(0,g.jsx)(_,{height:84,children:Q}));let $=x&&(0,g.jsx)(u,{as:`h3`,className:`md:text-2xl`,leading:`heading`,size:`xl`,weight:`bold`,children:x}),_e=j&&j!==`close`?(0,g.jsxs)(l,{as:`header`,className:X,gap:`lg`,justify:`between`,children:[$,j]}):(0,g.jsxs)(`header`,{className:X,children:[$,(0,g.jsx)(c,{className:o(`absolute top-6 right-6`,j!==`close`&&`md:hidden`,M&&`hidden`),children:(0,g.jsx)(p,{"aria-label":`Close modal`,className:`-m-2 opacity-50 hover:opacity-100`,"data-testid":`close-modal`,size:`icon`,type:`button`,variant:`ghost`,onClick:J,children:(0,g.jsx)(f,{})})})]});return(0,g.jsxs)(g.Fragment,{children:[(0,g.jsxs)(c,{className:pe,id:`modal-backdrop`,onMouseDown:ge,children:[(0,g.jsx)(c,{className:o(`pointer-events-none fixed inset-0 z-0`,I&&!U&&y,U&&`bg-form-sheet-backdrop`)}),(0,g.jsxs)(`section`,{ref:ce,"aria-label":e,className:fe,"data-testid":s,style:Z,children:[D!==!1&&_e,(0,g.jsx)(c,{className:me,children:F}),Q]})]}),(0,g.jsx)(ee,{...ue})]})});x.displayName=`SettingsModal`;var S=(0,v.createContext)({updateSection:()=>{},updateNav:()=>{},currentSection:null,updateNavigatedSection:()=>{},scrollToSection:()=>{}}),C=()=>(0,v.useContext)(S),w=e=>{let{updateSection:t}=C(),n=(0,v.useRef)(null);return(0,v.useEffect)(()=>{e&&n.current&&t(e,n.current)},[e,t]),{ref:n}},T=e=>{let{updateNav:t}=C(),n=(0,v.useRef)(null);return(0,v.useEffect)(()=>{e&&n.current&&(Array.isArray(e)?e:[e]).forEach(e=>{t(e,n.current)})},[e,t]),{ref:n,props:{"data-setting-nav-item":!0}}};function E(){let e=a(),t=i(),{externalNavigate:n}=r(),{scrollToSection:o}=C();return{route:(0,v.useMemo)(()=>t.pathname.replace(/^\/settings\/?/,``),[t.pathname]),updateRoute:(0,v.useCallback)(r=>{if(typeof r==`object`&&r.isExternal){n(r);return}let i=typeof r==`string`?{route:r}:r,a=i.route.replace(/^\//,``),s=a.indexOf(`?`),c=s===-1?a:a.slice(0,s),l=s===-1?``:a.slice(s+1),u=c?`/settings/${c}`:`/settings`,d=l?`?${l}`:``;if(!i.replace&&t.pathname===u){if(t.search===d){o(c.split(`/`)[0]);return}e(u+d,{replace:i.replace}),o(c.split(`/`)[0]);return}e(u+d,{replace:i.replace})},[n,e,t.pathname,t.search,o])}}export{T as a,C as i,S as n,x as o,w as r,_ as s,E as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{
|
|
1
|
+
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{l as r}from"./dist-B3keLvjj.js";import{Dr as i,Tr as a,t as o}from"./button-eNMKQWXr.js";var s=e(t(),1),c=n(),l=s.forwardRef(({className:e,children:t,...n},i)=>(0,c.jsx)(`div`,{ref:i,className:r(`flex items-center justify-between gap-4 pb-6 text-sm`,e),...n,children:t}));l.displayName=`SimplePagination`;var u=s.forwardRef(({className:e,currentPage:t,totalPages:n,...i},a)=>(0,c.jsxs)(`span`,{ref:a,className:r(`text-muted-foreground`,e),...i,children:[`Pages `,t,` of `,n]}));u.displayName=`SimplePaginationPages`;var d=s.forwardRef(({className:e,children:t,...n},i)=>(0,c.jsx)(`div`,{ref:i,className:r(`flex items-center gap-1.5`,e),...n,children:t}));d.displayName=`SimplePaginationNavigation`;var f=s.forwardRef(({variant:e=`outline`,...t},n)=>(0,c.jsx)(o,{ref:n,size:`sm`,variant:e,...t,children:(0,c.jsx)(i,{})}));f.displayName=`SimplePaginationPreviousButton`;var p=s.forwardRef(({variant:e=`outline`,...t},n)=>(0,c.jsx)(o,{ref:n,size:`sm`,variant:e,...t,children:(0,c.jsx)(a,{})}));p.displayName=`SimplePaginationNextButton`;function m({data:e,itemsPerPage:t,initialPage:n=1}){let[r,i]=(0,s.useState)(n);if(t<=0)throw Error(`itemsPerPage must be a positive number`);let a=e=>{i(Math.max(1,Math.min(o,e)))},o=(0,s.useMemo)(()=>e?Math.ceil(e.length/t):1,[e,t]);return(0,s.useEffect)(()=>{r>o&&i(1)},[r,o]),{currentPage:r,setCurrentPage:a,totalPages:o,paginatedData:(0,s.useMemo)(()=>{if(!e)return null;let n=(r-1)*t;return e.slice(n,n+t)},[e,r,t]),nextPage:()=>{i(e=>Math.min(o,e+1))},previousPage:()=>{i(e=>Math.max(1,e-1))},hasNextPage:r<o,hasPreviousPage:r>1}}export{u as a,p as i,l as n,f as o,d as r,m as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{c as r,o as i}from"./dist-Cb5RSHSg.js";import{t as a}from"./grid-CUciBfjf.js";import{t as o}from"./inline-Cw-gigDW.js";import{t as s}from"./stack-CIfOAAVf.js";import{t as c}from"./text-DU9Hv33_.js";import{f as l}from"./users-5msE1WMs.js";import{i as u,n as d}from"./use-limiter-TDSNiHPB.js";import{t as f}from"./validator-Cr0sMKuW.js";import{n as p}from"./global-data-context-gAMDH9u1.js";var m=e(t(),1),h=n(),g=i(`group/setting-group relative flex flex-col gap-6 rounded-xl text-card-foreground transition-all`,{variants:{variant:{outline:`border border-border-default bg-card p-5 hover:shadow-sm md:p-7`,plain:`bg-transparent`},highlighted:{true:`shadow-sm`,false:``}},defaultVariants:{variant:`outline`,highlighted:!1}}),_=m.forwardRef(({className:e,variant:t,highlighted:n,editing:i=!1,...a},o)=>(0,h.jsx)(`div`,{ref:o,className:r(g({variant:t,highlighted:n,className:e})),"data-editing":i,...a}));_.displayName=`SettingGroup`;var v=m.forwardRef(({className:e,...t},n)=>(0,h.jsx)(o,{ref:n,align:`start`,as:`div`,className:r(`relative z-10 w-full`,e),gap:`lg`,justify:`between`,...t}));v.displayName=`SettingGroupHeader`;var y=m.forwardRef(({className:e,...t},n)=>(0,h.jsx)(s,{ref:n,className:r(`min-w-0`,e),gap:`xs`,...t}));y.displayName=`SettingGroupDetails`;var b=m.forwardRef(({className:e,...t},n)=>(0,h.jsx)(c,{ref:n,as:`h5`,className:r(`md:text-lg`,e),leading:`supertight`,weight:`semibold`,...t}));b.displayName=`SettingGroupTitle`;var x=m.forwardRef(({className:e,...t},n)=>(0,h.jsx)(c,{ref:n,className:r(`mr-5 hidden text-pretty group-data-[editing=false]/setting-group:block md:block`,e),...t}));x.displayName=`SettingGroupDescription`;var S=m.forwardRef(({className:e,...t},n)=>(0,h.jsx)(`div`,{ref:n,className:r(`shrink-0 [&_button]:text-control!`,e),...t}));S.displayName=`SettingGroupActions`;var C=m.forwardRef(({children:e,className:t,columns:n=1,...i},o)=>n===2?(0,h.jsx)(a,{ref:o,className:r(`grid-cols-1 gap-x-8 gap-y-6 md:grid-cols-2`,t),columns:1,gap:`none`,...i,children:e}):(0,h.jsx)(s,{ref:o,className:r(`gap-y-7`,t),gap:`none`,...i,children:e}));C.displayName=`SettingGroupContent`;var w=m.forwardRef(({className:e,...t},n)=>(0,h.jsx)(s,{ref:n,className:e,gap:`none`,...t}));w.displayName=`SettingGroupValue`;var T=m.forwardRef(({className:e,...t},n)=>(0,h.jsx)(c,{ref:n,as:`h6`,className:r(`text-base`,e),weight:`semibold`,...t}));T.displayName=`SettingGroupValueTitle`;var E=m.forwardRef(({className:e,...t},n)=>(0,h.jsx)(o,{ref:n,as:`div`,className:e,gap:`none`,...t}));E.displayName=`SettingGroupValueContent`;var D=e(f(),1),O=e=>e.replace(/[\\\]^-]/g,`\\$&`),ee=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),k=e=>{if(e.patterns){let t=e.patterns;return e=>t.some(t=>t.test(e))}let t=`a-zA-Z0-9${e.unicode?`\\p{L}\\p{M}\\p{N}`:``}${O(e.extra??``)}`,n=RegExp(`^[${t}]+$`,`u`),r=e.min??1,i=e.max??100;return t=>{let[a,...o]=e.nestedSegments?t.split(`/`):[t];if(!n.test(a))return!1;let s=[...a].length;if(s<r||s>i)return!1;for(let t of e.notAtBoundary??``)if(a.startsWith(t)||a.endsWith(t))return!1;for(let t of e.notConsecutive??``)if(a.includes(t+t))return!1;return o.every(e=>e===``||n.test(e))}},te=e=>{try{return decodeURIComponent(e)}catch{return e}},A=e=>{let{domains:t,www:n,regionalSubdomain:r,pathTypes:i,fullPath:a,transformUsername:o,errors:s}=e,c=i.map(e=>({...e,check:k(e.rule)})),l=[...c].sort((e,t)=>t.urlPrefix.length-e.urlPrefix.length),u=c.flatMap(e=>[e.storagePrefix,...e.handleAliases??[]].filter(e=>e!==``).map(t=>({prefix:t,pathType:e}))).sort((e,t)=>t.prefix.length-e.prefix.length),d=t.map(e=>ee(e)).join(`|`),f=`${r?`(?:(?<region>${r})\\.)?`:``}(?:[a-zA-Z0-9-]+\\.)*`,p=RegExp(`^(?:(?:https?:)?\\/\\/)?${f}(?:${d})\\/(?<rest>[\\s\\S]*)$`,`i`),m=RegExp(`^${f}(?:${d})(?:\\/|$)`,`i`),h=e=>/^(?:https?:\/\/|\/\/|www\.)/i.test(e)||m.test(e),g=(e,t)=>{let n=t?e:e.replace(/^@/,``);return n=n.replace(/\/$/,``),a||(n=te(n)),n=n.normalize(`NFC`),o?o(n):n},_=e=>{let t=e.replace(/^\//,``),n=u.find(({prefix:e})=>t.startsWith(e));return n?{pathType:n.pathType,rawUsername:t.slice(n.prefix.length),atPrefixConsumed:!n.pathType.tolerateLeadingAt}:{pathType:c[0],rawUsername:t,atPrefixConsumed:!1}},v=e=>{if(!h(e))return _(e);let t=e.match(p);if(!t?.groups)throw Error(s.invalidUrl);let{region:n,rest:r}=t.groups,i=l.find(e=>r.startsWith(e.urlPrefix));if(!i||r.length<=i.urlPrefix.length)throw Error(s.invalidUrl);let o=r.slice(i.urlPrefix.length),c=!a&&!i.rule.nestedSegments?o.split(`/`)[0]:o;if(!a&&/[?#]/.test(c))throw Error(s.invalidUsername);return{region:n,pathType:i,rawUsername:c,atPrefixConsumed:i.urlPrefix!==``&&!i.tolerateLeadingAt}},y=(e,t)=>{if(!e.check(t))throw Error(s.invalidUsername)},b=(e,r,i)=>{let a=`https://${i?`${i.toLowerCase()}.`:n?`www.`:``}${t[0]}/${e.urlPrefix}${r}`;if(!D.default.isURL(a))throw Error(s.invalidUrl);return a};return{validate:e=>{if(!e)return``;let{region:t,pathType:n,rawUsername:r,atPrefixConsumed:i}=v(e.trim()),a=g(r,i);return y(n,a),b(n,a,t)},handleToUrl:e=>{if(!e)throw Error(s.invalidUsername);let{pathType:t,rawUsername:n,atPrefixConsumed:r}=_(e.trim()),i=g(n,r);return y(t,i),b(t,i)},urlToHandle:e=>{if(!e||!h(e.trim()))return null;try{let{pathType:t,rawUsername:n,atPrefixConsumed:r}=v(e.trim()),i=g(n,r);return y(t,i),`${t.storagePrefix}${i}`}catch{return null}}}},j=`The URL must be in a format like https://www.facebook.com/yourPage`,M=A({domains:[`facebook.com`],www:!0,fullPath:!0,pathTypes:[{urlPrefix:``,storagePrefix:``,rule:{patterns:[/^\S+$/]}}],errors:{invalidUrl:j,invalidUsername:j}}),ne=M.validate,re=M.handleToUrl,ie=M.urlToHandle,N=A({domains:[`x.com`,`twitter.com`],www:!1,pathTypes:[{urlPrefix:``,storagePrefix:`@`,rule:{extra:`_`,min:1,max:15}}],errors:{invalidUrl:`The URL must be in a format like https://x.com/yourUsername`,invalidUsername:`Your Username is not a valid Twitter Username`}}),ae=N.validate,oe=N.handleToUrl,P=N.urlToHandle,F={extra:`._`,min:1,max:30,notAtBoundary:`.`,notConsecutive:`.`},I=A({domains:[`instagram.com`],www:!0,pathTypes:[{urlPrefix:``,storagePrefix:``,rule:F}],errors:{invalidUrl:`The URL must be in a format like https://www.instagram.com/yourUsername`,invalidUsername:`Your Username is not a valid Instagram Username`}}),se=I.validate,ce=I.handleToUrl,L=I.urlToHandle,R=A({domains:[`threads.net`,`threads.com`],www:!0,pathTypes:[{urlPrefix:`@`,storagePrefix:`@`,rule:F},{urlPrefix:``,storagePrefix:`@`,rule:F}],errors:{invalidUrl:`The URL must be in a format like https://www.threads.net/@yourUsername`,invalidUsername:`The URL must be in a format like https://www.threads.net/@yourUsername`}}),z=R.validate,B=R.handleToUrl,V=R.urlToHandle,H=A({domains:[`bsky.app`],www:!1,pathTypes:[{urlPrefix:`profile/`,storagePrefix:``,tolerateLeadingAt:!0,rule:{patterns:[/^did:plc:[a-z2-7]{24}$/,/^[a-zA-Z0-9._]{1,15}$/,/^(?=.{1,191}$)[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+$/]}}],transformUsername:e=>/^did:plc:/i.test(e)?e.toLowerCase():e,errors:{invalidUrl:`The URL must be in a format like https://bsky.app/profile/yourUsername`,invalidUsername:`Your Username is not a valid Bluesky Username`}}),U=H.validate,W=H.handleToUrl,G=H.urlToHandle,K={unicode:!0,extra:`-`,min:3,max:100},q=A({domains:[`linkedin.com`],www:!0,regionalSubdomain:`[a-z]{2}`,pathTypes:[{urlPrefix:`in/`,storagePrefix:``,handleAliases:[`in/`],rule:K},{urlPrefix:`pub/`,storagePrefix:`pub/`,rule:{...K,nestedSegments:!0}},{urlPrefix:`company/`,storagePrefix:`company/`,rule:K},{urlPrefix:`school/`,storagePrefix:`school/`,rule:K}],errors:{invalidUrl:`The URL must be in a format like https://www.linkedin.com/in/yourUsername`,invalidUsername:`Your Username is not a valid LinkedIn Username`}}),le=q.validate,ue=q.handleToUrl,de=q.urlToHandle,J=A({domains:[`youtube.com`],www:!0,pathTypes:[{urlPrefix:`@`,storagePrefix:`@`,rule:{unicode:!0,extra:`._-`,min:3,max:30,notAtBoundary:`._-`,notConsecutive:`.`}},{urlPrefix:`user/`,storagePrefix:`user/`,rule:{extra:`._-`,min:1,max:50}},{urlPrefix:`channel/`,storagePrefix:`channel/`,rule:{patterns:[/^UC[a-zA-Z0-9_-]{22}$/]}}],errors:{invalidUrl:`The URL must be in a format like https://www.youtube.com/@yourUsername, https://www.youtube.com/user/yourUsername, or https://www.youtube.com/channel/yourChannelId`,invalidUsername:`Your Username is not a valid YouTube Username`}}),fe=J.validate,pe=J.handleToUrl,me=J.urlToHandle,Y=A({domains:[`tiktok.com`],www:!0,pathTypes:[{urlPrefix:`@`,storagePrefix:`@`,rule:{extra:`._`,min:2,max:24,notAtBoundary:`.`,notConsecutive:`.`}}],errors:{invalidUrl:`The URL must be in a format like https://www.tiktok.com/@yourUsername`,invalidUsername:`Your Username is not a valid TikTok Username`}}),he=Y.validate,ge=Y.handleToUrl,_e=Y.urlToHandle;function ve(e){let t=`The URL must be in a format like @username@instance.tld or https://instance.tld/@username or https://website.com/@username@instance.tld`;if(!e)return``;let n=e;if(n=n.replace(/^https?:\/\//,``),n.match(/^@[^@]+@[^/]+$/)){let[e,r]=n.split(`@`).slice(1);if(!D.default.isFQDN(r))throw Error(t);return`https://${r}/@${e}`}if(n.match(/^[^/]+\.[^/]+\/@[^/]+(@[^/]+)?$/)){let[e,r]=n.split(`/@`);if(!D.default.isFQDN(e))throw Error(t);if(r.includes(`@`)){let[,e]=r.split(`@`);if(!D.default.isFQDN(e))throw Error(t)}return`https://${n}`}throw Error(t)}var ye=e=>{let t=`Your Username is not a valid Mastodon Username`;if(!e)throw Error(t);if(e.match(/^@[^@]+@[^/]+$/)){let[n,r]=e.split(`@`).slice(1);if(!D.default.isFQDN(r))throw Error(t);return`https://${r}/@${n}`}if(e.match(/^[^/]+\.[^/]+\/@[^/]+(@[^/]+)?$/)){let[n,r]=e.split(`/@`);if(!D.default.isFQDN(n))throw Error(t);if(r.includes(`@`)){let[,e]=r.split(`@`);if(!D.default.isFQDN(e))throw Error(t)}return`https://${e}`}throw Error(t)},be=e=>e.replace(/^https?:\/\//,``),xe=[`twitter`,`facebook`,`linkedin`,`bluesky`,`threads`,`mastodon`,`tiktok`,`youtube`,`instagram`],X=(e,t)=>{if(!e)return``;try{return t(e)}catch{return e}},Z=[{key:`twitter`,staffTitle:`X`,publicationTitle:`X`,placeholder:`https://x.com/username`,testId:`x-input`,validate:ae,toDisplayValue:e=>X(e,oe),toStoredValue:e=>P(e)},{key:`facebook`,staffTitle:`Facebook`,publicationTitle:`Facebook`,placeholder:`https://www.facebook.com/username`,testId:`facebook-input`,validate:ne,toDisplayValue:e=>X(e,re),toStoredValue:e=>ie(e)},{key:`linkedin`,staffTitle:`LinkedIn`,publicationTitle:`LinkedIn`,placeholder:`https://www.linkedin.com/in/username`,testId:`linkedin-input`,validate:le,toDisplayValue:e=>X(e,ue),toStoredValue:e=>de(e)},{key:`bluesky`,staffTitle:`Bluesky`,publicationTitle:`Bluesky`,placeholder:`https://bsky.app/profile/username`,testId:`bluesky-input`,validate:U,toDisplayValue:e=>X(e,W),toStoredValue:e=>G(e)},{key:`threads`,staffTitle:`Threads`,publicationTitle:`Threads`,placeholder:`https://threads.net/@username`,testId:`threads-input`,validate:z,toDisplayValue:e=>X(e,B),toStoredValue:e=>V(e)},{key:`mastodon`,staffTitle:`Mastodon`,publicationTitle:`Mastodon`,placeholder:`https://mastodon.social/@username`,testId:`mastodon-input`,validate:ve,toDisplayValue:e=>X(e,ye),toStoredValue:e=>e?be(e):null},{key:`tiktok`,staffTitle:`TikTok`,publicationTitle:`TikTok`,placeholder:`https://www.tiktok.com/@username`,testId:`tiktok-input`,validate:he,toDisplayValue:e=>X(e,ge),toStoredValue:e=>_e(e)},{key:`youtube`,staffTitle:`YouTube`,publicationTitle:`YouTube`,placeholder:`https://www.youtube.com/@channel`,testId:`youtube-input`,validate:fe,toDisplayValue:e=>X(e,pe),toStoredValue:e=>me(e)},{key:`instagram`,staffTitle:`Instagram`,publicationTitle:`Instagram`,placeholder:`https://www.instagram.com/username`,testId:`instagram-input`,validate:se,toDisplayValue:e=>X(e,ce),toStoredValue:e=>L(e)}],Q=Object.fromEntries(Z.map(e=>[e.key,e])),Se=(e,t)=>{let n=Q[e],r=n.validate(t),i=r?n.toStoredValue(r):null;return{displayValue:n.toDisplayValue(i),storedValue:i}},Ce=(e,t)=>{try{return Q[e].validate(t||``),``}catch(e){return e instanceof Error?e.message:``}};function $(e,t){return e.filter(e=>e.roles.find(e=>e.name===t))}function we(e,t){return e.filter(e=>e.roles.find(e=>t.includes(e.name)))}function Te(e){return $(e,`Owner`)[0]}var Ee=()=>{let{currentUser:e}=p(),{data:{users:t,meta:n,isEnd:r}={users:[]},isLoading:i,fetchNextPage:a}=l(),{data:{invites:o,meta:s,isEnd:c}={invites:[]},isLoading:f,fetchNextPage:h}=u(),{data:{roles:g}={},isLoading:_}=d(),v=(0,m.useMemo)(()=>Te(t),[t]),y=(0,m.useMemo)(()=>$(t,`Administrator`),[t]),b=(0,m.useMemo)(()=>we(t,[`Editor`,`Super Editor`]),[t]),x=(0,m.useMemo)(()=>$(t,`Author`),[t]),S=(0,m.useMemo)(()=>$(t,`Contributor`),[t]),C=(0,m.useMemo)(()=>o.map(e=>{let t=g?.find(t=>e.role_id===t.id);return{...e,role:t?.name}}),[o,g]);return{totalUsers:n?.pagination.total||0,totalInvites:s?.pagination.total||0,users:t,ownerUser:v,adminUsers:y,editorUsers:b,authorUsers:x,contributorUsers:S,currentUser:e,invites:C,isLoading:i||f||_,hasNextPage:r===!1,invitesHasNextPage:c===!1,fetchNextPage:a,fetchNextInvitePage:h}};export{Se as a,C as c,v as d,b as f,T as h,Ce as i,x as l,E as m,Z as n,_ as o,w as p,xe as r,S as s,Ee as t,y as u};
|
|
1
|
+
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{l as r,o as i}from"./dist-B3keLvjj.js";import{t as a}from"./grid-Dj29PY05.js";import{t as o}from"./inline-BWSs_VzR.js";import{t as s}from"./stack-B2eszIiq.js";import{t as c}from"./text-BQDSDsKs.js";import{f as l}from"./users-Cg-OeGzC.js";import{i as u,n as d}from"./use-limiter-D2WRRx0H.js";import{t as f}from"./validator-Cr0sMKuW.js";import{n as p}from"./global-data-context-gAMDH9u1.js";var m=e(t(),1),h=n(),g=i(`group/setting-group relative flex flex-col gap-6 rounded-xl text-card-foreground transition-all`,{variants:{variant:{outline:`border border-border-default bg-card p-5 hover:shadow-sm md:p-7`,plain:`bg-transparent`},highlighted:{true:`shadow-sm`,false:``}},defaultVariants:{variant:`outline`,highlighted:!1}}),_=m.forwardRef(({className:e,variant:t,highlighted:n,editing:i=!1,...a},o)=>(0,h.jsx)(`div`,{ref:o,className:r(g({variant:t,highlighted:n,className:e})),"data-editing":i,...a}));_.displayName=`SettingGroup`;var v=m.forwardRef(({className:e,...t},n)=>(0,h.jsx)(o,{ref:n,align:`start`,as:`div`,className:r(`relative z-10 w-full`,e),gap:`lg`,justify:`between`,...t}));v.displayName=`SettingGroupHeader`;var y=m.forwardRef(({className:e,...t},n)=>(0,h.jsx)(s,{ref:n,className:r(`min-w-0`,e),gap:`xs`,...t}));y.displayName=`SettingGroupDetails`;var b=m.forwardRef(({className:e,...t},n)=>(0,h.jsx)(c,{ref:n,as:`h5`,className:r(`md:text-lg`,e),leading:`supertight`,weight:`semibold`,...t}));b.displayName=`SettingGroupTitle`;var x=m.forwardRef(({className:e,...t},n)=>(0,h.jsx)(c,{ref:n,className:r(`mr-5 hidden text-pretty group-data-[editing=false]/setting-group:block md:block`,e),...t}));x.displayName=`SettingGroupDescription`;var S=m.forwardRef(({className:e,...t},n)=>(0,h.jsx)(`div`,{ref:n,className:r(`shrink-0 [&_button]:text-control!`,e),...t}));S.displayName=`SettingGroupActions`;var C=m.forwardRef(({children:e,className:t,columns:n=1,...i},o)=>n===2?(0,h.jsx)(a,{ref:o,className:r(`grid-cols-1 gap-x-8 gap-y-6 md:grid-cols-2`,t),columns:1,gap:`none`,...i,children:e}):(0,h.jsx)(s,{ref:o,className:r(`gap-y-7`,t),gap:`none`,...i,children:e}));C.displayName=`SettingGroupContent`;var w=m.forwardRef(({className:e,...t},n)=>(0,h.jsx)(s,{ref:n,className:e,gap:`none`,...t}));w.displayName=`SettingGroupValue`;var T=m.forwardRef(({className:e,...t},n)=>(0,h.jsx)(c,{ref:n,as:`h6`,className:r(`text-base`,e),weight:`semibold`,...t}));T.displayName=`SettingGroupValueTitle`;var E=m.forwardRef(({className:e,...t},n)=>(0,h.jsx)(o,{ref:n,as:`div`,className:e,gap:`none`,...t}));E.displayName=`SettingGroupValueContent`;var D=e(f(),1),O=e=>e.replace(/[\\\]^-]/g,`\\$&`),ee=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),k=e=>{if(e.patterns){let t=e.patterns;return e=>t.some(t=>t.test(e))}let t=`a-zA-Z0-9${e.unicode?`\\p{L}\\p{M}\\p{N}`:``}${O(e.extra??``)}`,n=RegExp(`^[${t}]+$`,`u`),r=e.min??1,i=e.max??100;return t=>{let[a,...o]=e.nestedSegments?t.split(`/`):[t];if(!n.test(a))return!1;let s=[...a].length;if(s<r||s>i)return!1;for(let t of e.notAtBoundary??``)if(a.startsWith(t)||a.endsWith(t))return!1;for(let t of e.notConsecutive??``)if(a.includes(t+t))return!1;return o.every(e=>e===``||n.test(e))}},te=e=>{try{return decodeURIComponent(e)}catch{return e}},A=e=>{let{domains:t,www:n,regionalSubdomain:r,pathTypes:i,fullPath:a,transformUsername:o,errors:s}=e,c=i.map(e=>({...e,check:k(e.rule)})),l=[...c].sort((e,t)=>t.urlPrefix.length-e.urlPrefix.length),u=c.flatMap(e=>[e.storagePrefix,...e.handleAliases??[]].filter(e=>e!==``).map(t=>({prefix:t,pathType:e}))).sort((e,t)=>t.prefix.length-e.prefix.length),d=t.map(e=>ee(e)).join(`|`),f=`${r?`(?:(?<region>${r})\\.)?`:``}(?:[a-zA-Z0-9-]+\\.)*`,p=RegExp(`^(?:(?:https?:)?\\/\\/)?${f}(?:${d})\\/(?<rest>[\\s\\S]*)$`,`i`),m=RegExp(`^${f}(?:${d})(?:\\/|$)`,`i`),h=e=>/^(?:https?:\/\/|\/\/|www\.)/i.test(e)||m.test(e),g=(e,t)=>{let n=t?e:e.replace(/^@/,``);return n=n.replace(/\/$/,``),a||(n=te(n)),n=n.normalize(`NFC`),o?o(n):n},_=e=>{let t=e.replace(/^\//,``),n=u.find(({prefix:e})=>t.startsWith(e));return n?{pathType:n.pathType,rawUsername:t.slice(n.prefix.length),atPrefixConsumed:!n.pathType.tolerateLeadingAt}:{pathType:c[0],rawUsername:t,atPrefixConsumed:!1}},v=e=>{if(!h(e))return _(e);let t=e.match(p);if(!t?.groups)throw Error(s.invalidUrl);let{region:n,rest:r}=t.groups,i=l.find(e=>r.startsWith(e.urlPrefix));if(!i||r.length<=i.urlPrefix.length)throw Error(s.invalidUrl);let o=r.slice(i.urlPrefix.length),c=!a&&!i.rule.nestedSegments?o.split(`/`)[0]:o;if(!a&&/[?#]/.test(c))throw Error(s.invalidUsername);return{region:n,pathType:i,rawUsername:c,atPrefixConsumed:i.urlPrefix!==``&&!i.tolerateLeadingAt}},y=(e,t)=>{if(!e.check(t))throw Error(s.invalidUsername)},b=(e,r,i)=>{let a=`https://${i?`${i.toLowerCase()}.`:n?`www.`:``}${t[0]}/${e.urlPrefix}${r}`;if(!D.default.isURL(a))throw Error(s.invalidUrl);return a};return{validate:e=>{if(!e)return``;let{region:t,pathType:n,rawUsername:r,atPrefixConsumed:i}=v(e.trim()),a=g(r,i);return y(n,a),b(n,a,t)},handleToUrl:e=>{if(!e)throw Error(s.invalidUsername);let{pathType:t,rawUsername:n,atPrefixConsumed:r}=_(e.trim()),i=g(n,r);return y(t,i),b(t,i)},urlToHandle:e=>{if(!e||!h(e.trim()))return null;try{let{pathType:t,rawUsername:n,atPrefixConsumed:r}=v(e.trim()),i=g(n,r);return y(t,i),`${t.storagePrefix}${i}`}catch{return null}}}},j=`The URL must be in a format like https://www.facebook.com/yourPage`,M=A({domains:[`facebook.com`],www:!0,fullPath:!0,pathTypes:[{urlPrefix:``,storagePrefix:``,rule:{patterns:[/^\S+$/]}}],errors:{invalidUrl:j,invalidUsername:j}}),ne=M.validate,re=M.handleToUrl,ie=M.urlToHandle,N=A({domains:[`x.com`,`twitter.com`],www:!1,pathTypes:[{urlPrefix:``,storagePrefix:`@`,rule:{extra:`_`,min:1,max:15}}],errors:{invalidUrl:`The URL must be in a format like https://x.com/yourUsername`,invalidUsername:`Your Username is not a valid Twitter Username`}}),ae=N.validate,oe=N.handleToUrl,P=N.urlToHandle,F={extra:`._`,min:1,max:30,notAtBoundary:`.`,notConsecutive:`.`},I=A({domains:[`instagram.com`],www:!0,pathTypes:[{urlPrefix:``,storagePrefix:``,rule:F}],errors:{invalidUrl:`The URL must be in a format like https://www.instagram.com/yourUsername`,invalidUsername:`Your Username is not a valid Instagram Username`}}),se=I.validate,ce=I.handleToUrl,L=I.urlToHandle,R=A({domains:[`threads.net`,`threads.com`],www:!0,pathTypes:[{urlPrefix:`@`,storagePrefix:`@`,rule:F},{urlPrefix:``,storagePrefix:`@`,rule:F}],errors:{invalidUrl:`The URL must be in a format like https://www.threads.net/@yourUsername`,invalidUsername:`The URL must be in a format like https://www.threads.net/@yourUsername`}}),z=R.validate,B=R.handleToUrl,V=R.urlToHandle,H=A({domains:[`bsky.app`],www:!1,pathTypes:[{urlPrefix:`profile/`,storagePrefix:``,tolerateLeadingAt:!0,rule:{patterns:[/^did:plc:[a-z2-7]{24}$/,/^[a-zA-Z0-9._]{1,15}$/,/^(?=.{1,191}$)[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+$/]}}],transformUsername:e=>/^did:plc:/i.test(e)?e.toLowerCase():e,errors:{invalidUrl:`The URL must be in a format like https://bsky.app/profile/yourUsername`,invalidUsername:`Your Username is not a valid Bluesky Username`}}),U=H.validate,W=H.handleToUrl,G=H.urlToHandle,K={unicode:!0,extra:`-`,min:3,max:100},q=A({domains:[`linkedin.com`],www:!0,regionalSubdomain:`[a-z]{2}`,pathTypes:[{urlPrefix:`in/`,storagePrefix:``,handleAliases:[`in/`],rule:K},{urlPrefix:`pub/`,storagePrefix:`pub/`,rule:{...K,nestedSegments:!0}},{urlPrefix:`company/`,storagePrefix:`company/`,rule:K},{urlPrefix:`school/`,storagePrefix:`school/`,rule:K}],errors:{invalidUrl:`The URL must be in a format like https://www.linkedin.com/in/yourUsername`,invalidUsername:`Your Username is not a valid LinkedIn Username`}}),le=q.validate,ue=q.handleToUrl,de=q.urlToHandle,J=A({domains:[`youtube.com`],www:!0,pathTypes:[{urlPrefix:`@`,storagePrefix:`@`,rule:{unicode:!0,extra:`._-`,min:3,max:30,notAtBoundary:`._-`,notConsecutive:`.`}},{urlPrefix:`user/`,storagePrefix:`user/`,rule:{extra:`._-`,min:1,max:50}},{urlPrefix:`channel/`,storagePrefix:`channel/`,rule:{patterns:[/^UC[a-zA-Z0-9_-]{22}$/]}}],errors:{invalidUrl:`The URL must be in a format like https://www.youtube.com/@yourUsername, https://www.youtube.com/user/yourUsername, or https://www.youtube.com/channel/yourChannelId`,invalidUsername:`Your Username is not a valid YouTube Username`}}),fe=J.validate,pe=J.handleToUrl,me=J.urlToHandle,Y=A({domains:[`tiktok.com`],www:!0,pathTypes:[{urlPrefix:`@`,storagePrefix:`@`,rule:{extra:`._`,min:2,max:24,notAtBoundary:`.`,notConsecutive:`.`}}],errors:{invalidUrl:`The URL must be in a format like https://www.tiktok.com/@yourUsername`,invalidUsername:`Your Username is not a valid TikTok Username`}}),he=Y.validate,ge=Y.handleToUrl,_e=Y.urlToHandle;function ve(e){let t=`The URL must be in a format like @username@instance.tld or https://instance.tld/@username or https://website.com/@username@instance.tld`;if(!e)return``;let n=e;if(n=n.replace(/^https?:\/\//,``),n.match(/^@[^@]+@[^/]+$/)){let[e,r]=n.split(`@`).slice(1);if(!D.default.isFQDN(r))throw Error(t);return`https://${r}/@${e}`}if(n.match(/^[^/]+\.[^/]+\/@[^/]+(@[^/]+)?$/)){let[e,r]=n.split(`/@`);if(!D.default.isFQDN(e))throw Error(t);if(r.includes(`@`)){let[,e]=r.split(`@`);if(!D.default.isFQDN(e))throw Error(t)}return`https://${n}`}throw Error(t)}var ye=e=>{let t=`Your Username is not a valid Mastodon Username`;if(!e)throw Error(t);if(e.match(/^@[^@]+@[^/]+$/)){let[n,r]=e.split(`@`).slice(1);if(!D.default.isFQDN(r))throw Error(t);return`https://${r}/@${n}`}if(e.match(/^[^/]+\.[^/]+\/@[^/]+(@[^/]+)?$/)){let[n,r]=e.split(`/@`);if(!D.default.isFQDN(n))throw Error(t);if(r.includes(`@`)){let[,e]=r.split(`@`);if(!D.default.isFQDN(e))throw Error(t)}return`https://${e}`}throw Error(t)},be=e=>e.replace(/^https?:\/\//,``),xe=[`twitter`,`facebook`,`linkedin`,`bluesky`,`threads`,`mastodon`,`tiktok`,`youtube`,`instagram`],X=(e,t)=>{if(!e)return``;try{return t(e)}catch{return e}},Z=[{key:`twitter`,staffTitle:`X`,publicationTitle:`X`,placeholder:`https://x.com/username`,testId:`x-input`,validate:ae,toDisplayValue:e=>X(e,oe),toStoredValue:e=>P(e)},{key:`facebook`,staffTitle:`Facebook`,publicationTitle:`Facebook`,placeholder:`https://www.facebook.com/username`,testId:`facebook-input`,validate:ne,toDisplayValue:e=>X(e,re),toStoredValue:e=>ie(e)},{key:`linkedin`,staffTitle:`LinkedIn`,publicationTitle:`LinkedIn`,placeholder:`https://www.linkedin.com/in/username`,testId:`linkedin-input`,validate:le,toDisplayValue:e=>X(e,ue),toStoredValue:e=>de(e)},{key:`bluesky`,staffTitle:`Bluesky`,publicationTitle:`Bluesky`,placeholder:`https://bsky.app/profile/username`,testId:`bluesky-input`,validate:U,toDisplayValue:e=>X(e,W),toStoredValue:e=>G(e)},{key:`threads`,staffTitle:`Threads`,publicationTitle:`Threads`,placeholder:`https://threads.net/@username`,testId:`threads-input`,validate:z,toDisplayValue:e=>X(e,B),toStoredValue:e=>V(e)},{key:`mastodon`,staffTitle:`Mastodon`,publicationTitle:`Mastodon`,placeholder:`https://mastodon.social/@username`,testId:`mastodon-input`,validate:ve,toDisplayValue:e=>X(e,ye),toStoredValue:e=>e?be(e):null},{key:`tiktok`,staffTitle:`TikTok`,publicationTitle:`TikTok`,placeholder:`https://www.tiktok.com/@username`,testId:`tiktok-input`,validate:he,toDisplayValue:e=>X(e,ge),toStoredValue:e=>_e(e)},{key:`youtube`,staffTitle:`YouTube`,publicationTitle:`YouTube`,placeholder:`https://www.youtube.com/@channel`,testId:`youtube-input`,validate:fe,toDisplayValue:e=>X(e,pe),toStoredValue:e=>me(e)},{key:`instagram`,staffTitle:`Instagram`,publicationTitle:`Instagram`,placeholder:`https://www.instagram.com/username`,testId:`instagram-input`,validate:se,toDisplayValue:e=>X(e,ce),toStoredValue:e=>L(e)}],Q=Object.fromEntries(Z.map(e=>[e.key,e])),Se=(e,t)=>{let n=Q[e],r=n.validate(t),i=r?n.toStoredValue(r):null;return{displayValue:n.toDisplayValue(i),storedValue:i}},Ce=(e,t)=>{try{return Q[e].validate(t||``),``}catch(e){return e instanceof Error?e.message:``}};function $(e,t){return e.filter(e=>e.roles.find(e=>e.name===t))}function we(e,t){return e.filter(e=>e.roles.find(e=>t.includes(e.name)))}function Te(e){return $(e,`Owner`)[0]}var Ee=()=>{let{currentUser:e}=p(),{data:{users:t,meta:n,isEnd:r}={users:[]},isLoading:i,fetchNextPage:a}=l(),{data:{invites:o,meta:s,isEnd:c}={invites:[]},isLoading:f,fetchNextPage:h}=u(),{data:{roles:g}={},isLoading:_}=d(),v=(0,m.useMemo)(()=>Te(t),[t]),y=(0,m.useMemo)(()=>$(t,`Administrator`),[t]),b=(0,m.useMemo)(()=>we(t,[`Editor`,`Super Editor`]),[t]),x=(0,m.useMemo)(()=>$(t,`Author`),[t]),S=(0,m.useMemo)(()=>$(t,`Contributor`),[t]),C=(0,m.useMemo)(()=>o.map(e=>{let t=g?.find(t=>e.role_id===t.id);return{...e,role:t?.name}}),[o,g]);return{totalUsers:n?.pagination.total||0,totalInvites:s?.pagination.total||0,users:t,ownerUser:v,adminUsers:y,editorUsers:b,authorUsers:x,contributorUsers:S,currentUser:e,invites:C,isLoading:i||f||_,hasNextPage:r===!1,invitesHasNextPage:c===!1,fetchNextPage:a,fetchNextInvitePage:h}};export{Se as a,C as c,v as d,b as f,T as h,Ce as i,x as l,E as m,Z as n,_ as o,w as p,xe as r,S as s,Ee as t,y as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{w as e}from"./hooks-CuEZV2-q.js";import{t}from"./use-tinybird-token-DTOKRR7e.js";import{mi as n}from"./index-6MkPdCtr.js";var r=(e,t,n=``)=>{if(!e)return``;let r;r=e.local?.enabled?e.local.endpoint||``:e.endpointBrowser?e.endpointBrowser:e.endpoint||``;let i=e.version?`${t}_${e.version}`:t;return`${r}/v0/pipes/${i}.json?${n}`},i=60*1e3,a=(e,t)=>{if(!e)return;let n;try{n=new URL(e)}catch{return}for(let[e,r]of Object.entries(t))n.searchParams.set(e,r);return n.toString()},o=async({url:e,token:t,refreshToken:n,signal:r})=>{let i=t=>fetch(e,{credentials:`omit`,headers:{Authorization:`Bearer ${t}`},signal:r}),a=await i(t);if(a.status===401||a.status===403){let e=await n();e&&e!==t&&(a=await i(e))}if(!a.ok){let e=await a.text();throw Error(`Tinybird request failed (${a.status}): ${e||a.statusText}`)}return s(await a.json())},s=e=>{if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Tinybird returned an unexpected response shape`);let{data:t,meta:n}=e,r=e=>Array.isArray(e)&&e.every(e=>typeof e==`object`&&!!e);if(t!=null&&!r(t)||n!=null&&!r(n))throw Error(`Tinybird returned an unexpected response shape`);return e},c=s=>{let{statsConfig:c,endpoint:l,params:u,enabled:d=!0,refetchInterval:f,refetchIntervalInBackground:p}=s,m=n(),h=!!(d&&m&&c&&l),g=t({enabled:h}),_=a(h&&c?r(c,l):void 0,u),v=g.token,y=g.refetch,b=e({queryKey:[`tinybird`,_],enabled:!!(h&&_&&v),staleTime:i,retry:!1,refetchOnWindowFocus:!0,refetchInterval:f,refetchIntervalInBackground:p,queryFn:({signal:e})=>o({url:_,token:v,refreshToken:y,signal:e})});return{data:h?b.data?.data??null:null,meta:h?b.data?.meta??null:null,loading:h?g.isLoading||b.isLoading:!1,error:h?b.error??g.error:null}};export{c as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{r as n}from"./hooks-CuEZV2-q.js";import{mi as r}from"./index-6MkPdCtr.js";var i=`TinybirdTokenResponseType`,a={refetchInterval:7200*1e3,refetchIntervalInBackground:!0,staleTime:6600*1e3},o=n({dataType:i,path:`/tinybird/token/`}),s=(e={})=>o({...a,...e}),c=e(t(),1),l=!1,u=(e={})=>{let{enabled:t=!0}=e,n=r(),i=t&&n,a=s({enabled:i}),o=a.refetch,u=(0,c.useCallback)(async()=>{let e=(await o()).data?.tinybird?.token;return typeof e==`string`&&e?e:void 0},[o]);if(!i)return{token:void 0,isLoading:!1,error:null,refetch:u};let d=a.data?.tinybird?.token,f=a.error;return!a.isLoading&&a.data&&!d&&!l&&(console.warn(`Tinybird analytics: No valid token received. Check your Tinybird configuration (workspaceId and adminToken must be non-empty strings).`),l=!0),{token:d&&typeof d==`string`?d:void 0,isLoading:a.isLoading,error:f,refetch:u}};export{u as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{n,t as r}from"./use-router-history-entry-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{n,t as r}from"./use-router-history-entry-uldn7zJO.js";import{l as i,t as a,u as o}from"./chunk-KS7C4IRE-DCsL4i4D.js";var s=Object.prototype.hasOwnProperty;function c(e,t,n){for(n of e.keys())if(l(n,t))return n}function l(e,t){var n,r,i;if(e===t)return!0;if(e&&t&&(n=e.constructor)===t.constructor){if(n===Date)return e.getTime()===t.getTime();if(n===RegExp)return e.toString()===t.toString();if(n===Array){if((r=e.length)===t.length)for(;r--&&l(e[r],t[r]););return r===-1}if(n===Set){if(e.size!==t.size)return!1;for(r of e)if(i=r,i&&typeof i==`object`&&(i=c(t,i),!i)||!t.has(i))return!1;return!0}if(n===Map){if(e.size!==t.size)return!1;for(r of e)if(i=r[0],i&&typeof i==`object`&&(i=c(t,i),!i)||!l(r[1],t.get(i)))return!1;return!0}if(n===ArrayBuffer)e=new Uint8Array(e),t=new Uint8Array(t);else if(n===DataView){if((r=e.byteLength)===t.byteLength)for(;r--&&e.getInt8(r)===t.getInt8(r););return r===-1}if(ArrayBuffer.isView(e)){if((r=e.byteLength)===t.byteLength)for(;r--&&e[r]===t[r];);return r===-1}if(!n||typeof e==`object`){for(n in r=0,e)if(s.call(e,n)&&++r&&!s.call(t,n)||!(n in t)||!l(e[n],t[n]))return!1;return Object.keys(t).length===r}}return e!==e&&t!==t}var u=e(t(),1);function d(e,t){let[n,r]=u.useState(null),i=u.useRef(null),a=u.useRef(e);a.current=e;let o=u.useRef(t);return o.current=t,u.useEffect(()=>{let e=e=>{if(!a.current||e.defaultPrevented||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.button!==0)return;let t=e.target.closest?.(`a[href^="#/"]`);if(!t||t.hasAttribute(`data-discover`))return;e.preventDefault(),e.stopPropagation();let n=t.getAttribute(`href`);i.current=n,o.current?.(),r(n)};return document.addEventListener(`click`,e,!0),()=>document.removeEventListener(`click`,e,!0)},[]),{blockedHref:n,isBlocked:n!==null,proceed:()=>{let e=i.current;e&&(i.current=null,r(null),window.location.hash=e)},reset:()=>{i.current=null,r(null)}}}function f({when:e,confirmUnloadWhen:t,isSaving:s=!1,interceptNavigation:c}){let l=o(),f=u.useRef(!1),p=u.useRef(!1),m=u.useRef(!1),h=u.useRef(!1),g=u.useRef(!1),_=u.useRef(c);_.current=c,n(t??e);let v=i(t=>{if(t.historyAction===a.Pop&&!r())return!1;if(f.current)return f.current=!1,!1;if(_.current?.(t))return g.current=!0,!0;g.current=!1;let n=e&&t.currentLocation.pathname!==t.nextLocation.pathname;return n&&(p.current=!0),n}),y=d(e,()=>{p.current=!0}),b=v.state===`blocked`&&g.current,x=v.state===`blocked`&&!g.current||y.isBlocked;x&&(p.current=!0),u.useEffect(()=>{f.current=!1,p.current=!1,m.current=!1},[l.pathname]),u.useEffect(()=>{!m.current||s||!x||(m.current=!1,p.current=!1,y.isBlocked?y.proceed():v.proceed?.())},[s,x,y,v]);let S=u.useCallback(()=>{f.current=!0},[]),C=u.useCallback(()=>p.current?(m.current=!0,!0):!1,[]);return{isBlocked:x,dialogProps:{open:x&&!s,onConfirm:()=>{h.current=!0,p.current=!1,m.current=!1,y.isBlocked?y.proceed():v.proceed?.()},onOpenChange:e=>{if(!e){if(h.current){h.current=!1;return}x&&(p.current=!1,m.current=!1,v.reset?.(),y.reset())}}},bypassNextNavigation:S,resumeBlockedNavigationAfterSave:C,interceptedNavigation:{isBlocked:b,proceed:()=>v.proceed?.(),reset:()=>v.reset?.()}}}export{l as n,f as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{n,t as r}from"./jsx-runtime-DX3WBWVO.js";import{
|
|
1
|
+
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{n,t as r}from"./jsx-runtime-DX3WBWVO.js";import{l as i}from"./dist-B3keLvjj.js";import{Bt as a}from"./button-eNMKQWXr.js";import{Un as o}from"./index-6MkPdCtr.js";import{t as s}from"./format-url-Ju4k5CIm.js";var c=e(n()),l=r(),u=e(t());function d(){var e=[...arguments];return(0,u.useMemo)(()=>t=>{e.forEach(e=>e(t))},e)}var f=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function p(e){let t=Object.prototype.toString.call(e);return t===`[object Window]`||t===`[object global]`}function m(e){return`nodeType`in e}function h(e){return e?p(e)?e:m(e)?e.ownerDocument?.defaultView??window:window:window}function g(e){let{Document:t}=h(e);return e instanceof t}function _(e){return p(e)?!1:e instanceof h(e).HTMLElement}function v(e){return e instanceof h(e).SVGElement}function y(e){return e?p(e)?e.document:m(e)?g(e)?e:_(e)||v(e)?e.ownerDocument:document:document:document}var b=f?u.useLayoutEffect:u.useEffect;function x(e){let t=(0,u.useRef)(e);return b(()=>{t.current=e}),(0,u.useCallback)(function(){var e=[...arguments];return t.current==null?void 0:t.current(...e)},[])}function S(){let e=(0,u.useRef)(null);return[(0,u.useCallback)((t,n)=>{e.current=setInterval(t,n)},[]),(0,u.useCallback)(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[])]}function C(e,t){t===void 0&&(t=[e]);let n=(0,u.useRef)(e);return b(()=>{n.current!==e&&(n.current=e)},t),n}function w(e,t){let n=(0,u.useRef)();return(0,u.useMemo)(()=>{let t=e(n.current);return n.current=t,t},[...t])}function T(e){let t=x(e),n=(0,u.useRef)(null);return[n,(0,u.useCallback)(e=>{e!==n.current&&t?.(e,n.current),n.current=e},[])]}function E(e){let t=(0,u.useRef)();return(0,u.useEffect)(()=>{t.current=e},[e]),t.current}var D={};function O(e,t){return(0,u.useMemo)(()=>{if(t)return t;let n=D[e]==null?0:D[e]+1;return D[e]=n,e+`-`+n},[e,t])}function k(e){return function(t){return[...arguments].slice(1).reduce((t,n)=>{let r=Object.entries(n);for(let[n,i]of r){let r=t[n];r!=null&&(t[n]=r+e*i)}return t},{...t})}}var ee=k(1),A=k(-1);function te(e){return`clientX`in e&&`clientY`in e}function ne(e){if(!e)return!1;let{KeyboardEvent:t}=h(e.target);return t&&e instanceof t}function j(e){if(!e)return!1;let{TouchEvent:t}=h(e.target);return t&&e instanceof t}function re(e){if(j(e)){if(e.touches&&e.touches.length){let{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){let{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return te(e)?{x:e.clientX,y:e.clientY}:null}var M=Object.freeze({Translate:{toString(e){if(!e)return;let{x:t,y:n}=e;return`translate3d(`+(t?Math.round(t):0)+`px, `+(n?Math.round(n):0)+`px, 0)`}},Scale:{toString(e){if(!e)return;let{scaleX:t,scaleY:n}=e;return`scaleX(`+t+`) scaleY(`+n+`)`}},Transform:{toString(e){if(e)return[M.Translate.toString(e),M.Scale.toString(e)].join(` `)}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+` `+n+`ms `+r}}}),N=`a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]`;function ie(e){return e.matches(N)?e:e.querySelector(N)}var ae={display:`none`};function P(e){let{id:t,value:n}=e;return u.createElement(`div`,{id:t,style:ae},n)}function oe(e){let{id:t,announcement:n,ariaLiveType:r=`assertive`}=e;return u.createElement(`div`,{id:t,style:{position:`fixed`,top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:`hidden`,clip:`rect(0 0 0 0)`,clipPath:`inset(100%)`,whiteSpace:`nowrap`},role:`status`,"aria-live":r,"aria-atomic":!0},n)}function F(){let[e,t]=(0,u.useState)(``);return{announce:(0,u.useCallback)(e=>{e!=null&&t(e)},[]),announcement:e}}var se=(0,u.createContext)(null);function ce(e){let t=(0,u.useContext)(se);(0,u.useEffect)(()=>{if(!t)throw Error(`useDndMonitor must be used within a children of <DndContext>`);return t(e)},[e,t])}function le(){let[e]=(0,u.useState)(()=>new Set),t=(0,u.useCallback)(t=>(e.add(t),()=>e.delete(t)),[e]);return[(0,u.useCallback)(t=>{let{type:n,event:r}=t;e.forEach(e=>e[n]?.call(e,r))},[e]),t]}var I={draggable:`
|
|
2
2
|
To pick up a draggable item, press the space bar.
|
|
3
3
|
While dragging, use the arrow keys to move the item.
|
|
4
4
|
Press space again to drop the item in its new position, or press escape to cancel.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{t as n}from"./jsx-runtime-DX3WBWVO.js";import{b as r,g as i,m as a,n as o,p as s,r as c}from"./hooks-CuEZV2-q.js";import{n as l}from"./dist-Ndy-PuGN.js";import{t as u}from"./use-form-vRjI0Kwk.js";import{h as d,u as f}from"./chunk-KS7C4IRE-DCsL4i4D.js";import{a as p}from"./router-provider-B0gZyiGJ.js";import{m,w as h}from"./dist-B3keLvjj.js";import{t as g}from"./text-BQDSDsKs.js";import{D as _,Mn as v,bt as y,g as b,t as x}from"./button-eNMKQWXr.js";import{i as S,n as C,r as ee,t as w}from"./tabs-D2yWLMp_.js";import{t as T}from"./switch-CI4gLWqb.js";import{t as te}from"./dropzone-D7nFdAe5.js";import{i as E,n as D,o as O,s as k,t as A}from"./select-cb0t_TAJ.js";import{o as ne,t as re}from"./use-settings-navigation-CZjGrhsp.js";import{i as j,n as M,o as N,r as P,t as F}from"./field-Dihp5p18.js";import{t as I}from"./textarea-DJ1Q5V39.js";import{_ as L,c as ie,d as R,g as ae,h as z,m as oe,o as B,p as se,s as ce,t as V,u as le}from"./users-Cg-OeGzC.js";import{n as ue,t as de}from"./use-limiter-D2WRRx0H.js";import{$n as H,$r as fe,Cr as pe,Tr as U,jr as me,t as he,ut as ge,xr as _e}from"./index-6MkPdCtr.js";import{a as ve,c as ye,i as be,n as xe,o as Se,r as Ce,s as we,t as Te}from"./images-scfkWZiK.js";import{a as W,c as G,i as Ee,n as K,o as q,r as De,t as Oe}from"./use-staff-users-Csipb-O0.js";import{t as J}from"./validator-Cr0sMKuW.js";import{n as ke}from"./confirmation-context-CBM8G0Vj.js";import{n as Y}from"./global-data-context-gAMDH9u1.js";import{t as Ae}from"./use-upgrade-route-DhRSo7at.js";import{t as X}from"./api-keys-Ck-Yteiv.js";import{t as je}from"./use-pintura-editor-BfN1UwzH.js";var Z=n(),Me=({user:e,setUserData:t})=>{let{config:n,settings:r}=Y(),i=fe(r||[],n||{});return(0,Z.jsxs)(G,{children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`span`,{className:`text-sm font-medium tracking-wide text-gray-700 uppercase`,children:`Engagement`}),(0,Z.jsxs)(`div`,{className:`mt-3 flex flex-col gap-4`,children:[(0,Z.jsxs)(F,{orientation:`horizontal`,children:[(0,Z.jsxs)(M,{children:[(0,Z.jsx)(N,{htmlFor:`comment-notifications`,children:`Comments`}),(0,Z.jsx)(P,{children:`Every time a member comments on one of your posts`})]}),(0,Z.jsx)(T,{checked:!!e.comment_notifications,id:`comment-notifications`,onCheckedChange:n=>t({...e,comment_notifications:n})})]}),B(e)&&(0,Z.jsxs)(F,{orientation:`horizontal`,children:[(0,Z.jsxs)(M,{children:[(0,Z.jsx)(N,{htmlFor:`recommendation-notifications`,children:`Recommendations`}),(0,Z.jsx)(P,{children:`Every time another publisher recommends you to their audience`})]}),(0,Z.jsx)(T,{checked:!!e.recommendation_notifications,id:`recommendation-notifications`,onCheckedChange:n=>t({...e,recommendation_notifications:n})})]})]})]}),B(e)&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`span`,{className:`text-sm font-medium tracking-wide text-gray-700 uppercase`,children:`Members`}),(0,Z.jsxs)(`div`,{className:`mt-3 flex flex-col gap-4`,children:[(0,Z.jsxs)(F,{orientation:`horizontal`,children:[(0,Z.jsxs)(M,{children:[(0,Z.jsx)(N,{htmlFor:`free-member-signup-notifications`,children:`New signups`}),(0,Z.jsx)(P,{children:`Every time a new free member signs up`})]}),(0,Z.jsx)(T,{checked:!!e.free_member_signup_notification,id:`free-member-signup-notifications`,onCheckedChange:n=>t({...e,free_member_signup_notification:n})})]}),i&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(F,{orientation:`horizontal`,children:[(0,Z.jsxs)(M,{children:[(0,Z.jsx)(N,{htmlFor:`paid-subscription-started-notifications`,children:`New paid members`}),(0,Z.jsx)(P,{children:`Every time a member starts a new paid subscription`})]}),(0,Z.jsx)(T,{checked:!!e.paid_subscription_started_notification,id:`paid-subscription-started-notifications`,onCheckedChange:n=>t({...e,paid_subscription_started_notification:n})})]}),(0,Z.jsxs)(F,{orientation:`horizontal`,children:[(0,Z.jsxs)(M,{children:[(0,Z.jsx)(N,{htmlFor:`paid-subscription-canceled-notifications`,children:`Paid member cancellations`}),(0,Z.jsx)(P,{children:`Every time a member cancels their paid subscription`})]}),(0,Z.jsx)(T,{checked:!!e.paid_subscription_canceled_notification,id:`paid-subscription-canceled-notifications`,onCheckedChange:n=>t({...e,paid_subscription_canceled_notification:n})})]})]})]})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`span`,{className:`text-sm font-medium tracking-wide text-gray-700 uppercase`,children:`Revenue`}),(0,Z.jsxs)(`div`,{className:`mt-3 flex flex-col gap-4`,children:[(0,Z.jsxs)(F,{orientation:`horizontal`,children:[(0,Z.jsxs)(M,{children:[(0,Z.jsx)(N,{htmlFor:`milestone-notifications`,children:`Milestones`}),(0,Z.jsx)(P,{children:i?`Occasional summaries of your audience & revenue growth`:`Occasional summaries of your audience growth`})]}),(0,Z.jsx)(T,{checked:!!e.milestone_notifications,id:`milestone-notifications`,onCheckedChange:n=>t({...e,milestone_notifications:n})})]}),i&&(0,Z.jsxs)(F,{orientation:`horizontal`,children:[(0,Z.jsxs)(M,{children:[(0,Z.jsx)(N,{htmlFor:`donation-notifications`,children:`Tips & donations`}),(0,Z.jsx)(P,{children:`Every time you receive a one-time payment`})]}),(0,Z.jsx)(T,{checked:!!e.donation_notifications,id:`donation-notifications`,onCheckedChange:n=>t({...e,donation_notifications:n})})]}),i&&(0,Z.jsxs)(F,{orientation:`horizontal`,children:[(0,Z.jsxs)(M,{children:[(0,Z.jsx)(N,{htmlFor:`gift-subscription-notifications`,children:`Gift subscriptions`}),(0,Z.jsx)(P,{children:`Every time someone purchases or redeems a gift subscription`})]}),(0,Z.jsx)(T,{checked:!!e.gift_subscription_notifications,id:`gift-subscription-notifications`,onCheckedChange:n=>t({...e,gift_subscription_notifications:n})})]})]})]})]})]})},Ne=({user:e,setUserData:t})=>(0,Z.jsx)(q,{variant:`plain`,children:(0,Z.jsx)(Me,{setUserData:t,user:e})}),Q=e(t(),1),Pe=[`1234567890`,`qwertyuiop`,`qwertzuiop`,`asdfghjkl;`,`abcdefghij`,`0987654321`,`1q2w3e4r5t`,`12345asdfg`],Fe=[`ghost`,`password`,`passw0rd`],Ie=e=>{let t={},n=!0,r=e.length/2;for(let n=0;n<e.length;n+=1)t[e[n]]?t[e[n]]+=1:t[e[n]]=1;for(let e in t)if(t[e]>=r)return n=!1,n;return n},Le=({user:e})=>{let{currentUser:t,config:n,siteData:i}=Y(),[a,o]=(0,Q.useState)(!1),[c,u]=(0,Q.useState)(``),[d,f]=(0,Q.useState)(``),[p,m]=(0,Q.useState)(``),[h,g]=(0,Q.useState)(``),[_,v]=(0,Q.useState)({}),y=(0,Q.useRef)(null),b=(0,Q.useRef)(null),S=(0,Q.useRef)(null),{mutateAsync:C}=L(),ee=s(),w=e.id===t.id,T=({password:t,confirmPassword:r})=>{if(w&&!c)return{oldPassword:`Your current password is required to set a new one`};if(t!==r)return{newPassword:`Your new passwords do not match`,confirmNewPassword:`Your new passwords do not match`};let a=n.blogUrl||window.location.host,o=i.title;a=a.replace(/^http(s?):\/\//,``);let s=a.match(/\/$/)?a:`${a}/`;if(o&&=o.trim().toLowerCase(),t.length<10)return{newPassword:`Password must be at least 10 characters long.`};t=t.toString();for(let e of Pe)if(e===t)return{newPassword:`Sorry, you cannot use an insecure password.`};if(t.toLowerCase()===e.email.toLowerCase())return{newPassword:`Sorry, you cannot use an insecure password.`};for(let e of Fe)if(t.toLowerCase().indexOf(e)>=0)return{newPassword:`Sorry, you cannot use an insecure password.`};return t.toLowerCase()===o||t.toLowerCase()===a||t.toLowerCase()===s||!Ie(t)?{newPassword:`Sorry, you cannot use an insecure password.`}:{}};(0,Q.useEffect)(()=>{h===`saved`&&setTimeout(()=>{g(``),o(!1)},2500)},[h]),(0,Q.useEffect)(()=>{a&&setTimeout(()=>{w?S.current?.focus():y.current?.focus()},100)},[a,w]);let te=()=>{o(!0)},E=async()=>{g(`saving`);let t=T({password:d,confirmPassword:p});if(v(t),Object.keys(t).length>0){g(``);return}try{await C({newPassword:d,confirmNewPassword:p,oldPassword:c,userId:e?.id}),g(`saved`)}catch(e){g(``),l.error(e instanceof r?e.message:`Couldn't update password. Please try again.`),ee(e,{withToast:!1})}},D=`Save password`;h===`saving`?D=`Saving...`:h===`saved`&&(D=`Saved`);let O=(0,Z.jsxs)(Z.Fragment,{children:[w&&(0,Z.jsxs)(F,{"data-invalid":!!_.oldPassword||void 0,children:[(0,Z.jsx)(N,{htmlFor:`old-password`,children:`Old password`}),(0,Z.jsx)(H,{ref:S,"aria-invalid":!!_.oldPassword||void 0,"data-testid":`old-password`,id:`old-password`,type:`password`,value:c,onChange:e=>u(e.target.value)}),_.oldPassword&&(0,Z.jsx)(j,{children:_.oldPassword})]}),(0,Z.jsxs)(F,{"data-invalid":!!_.newPassword||void 0,children:[(0,Z.jsx)(N,{htmlFor:`new-password`,children:`New password`}),(0,Z.jsx)(H,{ref:y,"aria-invalid":!!_.newPassword||void 0,"data-testid":`new-password`,id:`new-password`,type:`password`,value:d,onChange:e=>f(e.target.value)}),_.newPassword&&(0,Z.jsx)(j,{children:_.newPassword})]}),(0,Z.jsxs)(F,{"data-invalid":!!_.confirmNewPassword||void 0,children:[(0,Z.jsx)(N,{htmlFor:`confirm-password`,children:`Confirm new password`}),(0,Z.jsx)(H,{ref:b,"aria-invalid":!!_.confirmNewPassword||void 0,"data-testid":`confirm-password`,id:`confirm-password`,type:`password`,value:p,onChange:e=>m(e.target.value)}),_.confirmNewPassword&&(0,Z.jsx)(j,{children:_.confirmNewPassword})]}),(0,Z.jsxs)(`div`,{className:`mt-1 flex items-center justify-end gap-3`,children:[(0,Z.jsx)(x,{type:`button`,variant:`outline`,onClick:()=>{o(!1),u(``),f(``),m(``),v({})},children:`Cancel`}),(0,Z.jsx)(x,{"data-testid":`save-password-button`,type:`button`,onClick:()=>void E(),children:D})]})]});return(0,Z.jsx)(Z.Fragment,{children:a?O:(0,Z.jsxs)(`div`,{className:`relative flex flex-col`,children:[(0,Z.jsxs)(F,{className:`grow`,"data-disabled":!0,children:[(0,Z.jsx)(N,{htmlFor:`current-password`,children:`Password`}),(0,Z.jsx)(H,{id:`current-password`,type:`password`,value:`••••••••••••`,disabled:!0})]}),(0,Z.jsx)(x,{className:`absolute top-0 right-0 h-auto p-0 hover:bg-transparent`,"data-testid":`change-password-button`,size:`sm`,type:`button`,variant:`ghost`,onClick:te,children:`Change`})]})})},Re=({user:e,setUserData:t})=>{let{data:{roles:n}={}}=ue(),r=he(`superEditors`),i=[{hint:`Can write and edit their own posts, but cannot publish them.`,label:`Contributor`,value:`contributor`},{hint:`Can create, edit and publish their own posts, but can’t modify others.`,label:`Author`,value:`author`},{hint:`Can edit and publish any posts, and manage Authors and Contributors.`,label:`Editor`,value:`editor`},{hint:`Trusted user who has full access to all content, settings, and user management.`,label:`Administrator`,value:`administrator`}];if(r&&(i=i.map(e=>e.value===`editor`?{...e,label:`Editor (beta mode)`,value:`super editor`,hint:`Can invite and manage other Authors and Contributors, as well as edit and publish any posts on the site. Can manage members and moderate comments.`}:e)),R(e)){let e={label:`Owner`,value:`owner`};return(0,Z.jsxs)(F,{children:[(0,Z.jsx)(N,{children:`Role`}),(0,Z.jsxs)(A,{value:e.value,disabled:!0,children:[(0,Z.jsx)(O,{"aria-label":`Role`,children:(0,Z.jsx)(k,{})}),(0,Z.jsx)(D,{children:(0,Z.jsx)(E,{value:e.value,children:e.label})})]}),(0,Z.jsxs)(P,{children:[`This user is the owner of the site.`,` `,(0,Z.jsx)(`a`,{href:`https://ghost.org/help/transfer-publication-ownership/`,rel:`noopener noreferrer`,target:`_blank`,children:`Transfer ownership`}),` `,`first to change their role.`]})]})}let a=e.roles[0].name.toLowerCase(),o=i.find(e=>e.value.toLowerCase()===a)?.label;return(0,Z.jsxs)(F,{children:[(0,Z.jsx)(N,{children:`Role`}),(0,Z.jsxs)(A,{value:a,onValueChange:r=>{let i=n?.find(e=>e.name.toLowerCase()===r.toLowerCase());i&&t?.({...e,roles:[i]})},children:[(0,Z.jsx)(O,{"aria-label":`Role`,"data-testid":`role-select`,children:(0,Z.jsx)(k,{children:o})}),(0,Z.jsx)(D,{children:i.map(e=>(0,Z.jsx)(E,{value:e.value,children:(0,Z.jsxs)(`span`,{className:`flex flex-col`,children:[(0,Z.jsx)(`span`,{children:e.label}),(0,Z.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:e.hint})]})},e.value))})]})]})},$=c({dataType:`StaffTokenResponseType`,path:`/users/me/token/`}),ze=o({path:()=>`/users/me/token/`,method:`PUT`}),Be=()=>{let{refetch:e}=$({enabled:!1}),t=s(),{confirm:n}=ke(),[r,i]=(0,Q.useState)(``),{mutateAsync:a}=ze();return(0,Q.useEffect)(()=>{(async()=>{let t=await e();t?.data?.apiKey&&i(`${t.data.apiKey.id}:${t.data.apiKey.secret}`)})()},[e]),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(g,{as:`h6`,className:`mb-2 text-base`,weight:`semibold`,children:`Staff access token`}),(0,Z.jsx)(X,{hasLabel:!1,keys:[{id:`staff-access-token`,text:r||``,onRegenerate:()=>{n({title:`Regenerate your Staff Access Token`,prompt:`You can regenerate your Staff Access Token any time, but any scripts or applications using it will need to be updated.`,okLabel:`Regenerate your Staff Access Token`,okVariant:`destructive`,onOk:async e=>{try{let t=await a([]);i(`${t.apiKey.id}:${t.apiKey.secret}`),e?.remove()}catch(e){t(e)}}})}}]})]})},Ve=({errors:e,clearError:t,user:n,setUserData:r})=>{let{currentUser:i,siteData:a}=Y(),o=ge(a);return(0,Z.jsxs)(G,{children:[(0,Z.jsxs)(F,{"data-invalid":!!e?.email||void 0,children:[(0,Z.jsx)(N,{htmlFor:`staff-email`,children:`Email`}),(0,Z.jsx)(H,{"aria-invalid":!!e?.email||void 0,id:`staff-email`,maxLength:191,value:n.email,onChange:e=>r({...n,email:e.target.value}),onKeyDown:()=>t(`email`)}),e?.email?(0,Z.jsx)(j,{children:e.email}):(0,Z.jsx)(P,{children:`Used for notifications`})]}),(0,Z.jsx)(Le,{user:n}),B(i)&&(0,Z.jsx)(Re,{setUserData:r,user:n}),(0,Z.jsxs)(F,{"data-invalid":!!e?.name||void 0,children:[(0,Z.jsx)(N,{htmlFor:`staff-name`,children:`Full name`}),(0,Z.jsx)(H,{"aria-invalid":!!e?.name||void 0,id:`staff-name`,maxLength:191,value:n.name,onChange:e=>r({...n,name:e.target.value}),onKeyDown:()=>t(`name`)}),e?.name?(0,Z.jsx)(j,{children:e.name}):(0,Z.jsx)(P,{children:`Use your real name so people can recognize you`})]}),(0,Z.jsxs)(F,{children:[(0,Z.jsx)(N,{htmlFor:`staff-slug`,children:`Slug`}),(0,Z.jsx)(H,{id:`staff-slug`,maxLength:191,value:n.slug,onChange:e=>r({...n,slug:e.target.value})}),(0,Z.jsxs)(P,{children:[o,`author/`,n.slug]})]}),(0,Z.jsxs)(F,{"data-invalid":!!e?.location||void 0,children:[(0,Z.jsx)(N,{htmlFor:`staff-location`,children:`Location`}),(0,Z.jsx)(H,{"aria-invalid":!!e?.location||void 0,id:`staff-location`,maxLength:65535,value:n.location||``,onChange:e=>r({...n,location:e.target.value}),onKeyDown:()=>t(`location`)}),e?.location?(0,Z.jsx)(j,{children:e.location}):(0,Z.jsx)(P,{children:`Where in the world do you live?`})]}),(0,Z.jsxs)(F,{"data-invalid":!!e?.bio||void 0,children:[(0,Z.jsx)(N,{htmlFor:`staff-bio`,children:`Bio`}),(0,Z.jsx)(I,{"aria-invalid":!!e?.bio||void 0,id:`staff-bio`,maxLength:65535,value:n.bio||``,onChange:e=>{r({...n,bio:e.target.value})},onKeyDown:()=>t(`bio`)}),e?.bio?(0,Z.jsx)(j,{children:e.bio}):(0,Z.jsxs)(P,{children:[`Recommended: `,m(250),` characters. You‘ve used`,` `,(0,Z.jsx)(`span`,{className:`font-bold`,children:m(n.bio?.length||0)})]})]}),n.id===i.id&&(0,Z.jsx)(Be,{})]})},He=e=>(0,Z.jsx)(q,{variant:`plain`,children:(0,Z.jsx)(Ve,{...e})}),Ue=({errors:e,clearError:t,validateField:n,user:r,setUserData:i})=>{let[a,o]=(0,Q.useState)(()=>Object.fromEntries(K.map(e=>{let t=r[e.key];return[e.key,e.toDisplayValue(t)]})));return(0,Z.jsxs)(G,{children:[(0,Z.jsxs)(F,{"data-invalid":!!e?.website||void 0,children:[(0,Z.jsx)(N,{htmlFor:`staff-website`,children:`Website`}),(0,Z.jsx)(H,{"aria-invalid":!!e?.website||void 0,"data-testid":`website-input`,id:`staff-website`,maxLength:2e3,placeholder:`https://example.com`,value:r.website||``,onChange:e=>{i({...r,website:e.target.value})},onKeyDown:()=>t(`website`)}),e?.website&&(0,Z.jsx)(j,{children:e.website})]}),K.map(s=>(0,Z.jsxs)(F,{"data-invalid":!!e?.[s.key]||void 0,children:[(0,Z.jsx)(N,{htmlFor:`staff-${s.key}`,children:s.staffTitle}),(0,Z.jsx)(H,{"aria-invalid":!!e?.[s.key]||void 0,"data-testid":s.testId,id:`staff-${s.key}`,maxLength:2e3,placeholder:s.placeholder,value:a[s.key],onBlur:e=>{if(n(s.key,e.target.value)){let{displayValue:t,storedValue:n}=W(s.key,e.target.value);o(e=>({...e,[s.key]:t})),i({...r,[s.key]:n})}},onChange:e=>{o(t=>({...t,[s.key]:e.target.value}))},onKeyDown:()=>t(s.key)}),e?.[s.key]&&(0,Z.jsx)(j,{children:e[s.key]})]},s.key))]})},We=e=>(0,Z.jsx)(q,{variant:`plain`,children:(0,Z.jsx)(Ue,{...e})}),Ge=e(J(),1),Ke={name:({name:e})=>{let t=``;return e||(t=`Name is required`),e&&e.length>191&&(t=`Name is too long`),t},email:({email:e})=>Ge.default.isEmail(e||``)?``:`Enter a valid email address`,url:({url:e})=>!e||Ge.default.isURL(e,{require_tld:!1})?``:`Enter a valid URL`,bio:({bio:e})=>!e||e.length<=250?``:`Bio is too long`,location:({location:e})=>!e||e.length<=150?``:`Location is too long`,website:({website:e})=>!e||Ge.default.isURL(e)&&e.length<=2e3?``:`Enter a valid URL`,...Object.fromEntries(K.map(e=>[e.key,t=>Ee(e.key,t[e.key])]))},qe=({user:e,onDeletingUserChange:t})=>{let{updateRoute:n}=re(),r=p(),a=Ae(),o=f(),c=e=>{let t=e.split(`/`).pop()||``;return t===`social-links`||t===`email-notifications`?t:`profile`},{ownerUser:d}=Oe(),{currentUser:m}=Y(),T=s(),{confirm:E,showLimit:D}=ke(),{formState:O,setFormState:k,saveState:A,handleSave:j,updateForm:M,errors:N,setErrors:P,clearError:F,okProps:I}=u({initialState:e,savingDelay:500,savedDelay:500,onValidate:t=>Object.entries(Ke).reduce((n,[r,i])=>{if(De.includes(r)&&t[r]===e[r])return n;let a=i(t);return a&&(n[r]=a),n},{}),onSave:async t=>{let r=(await H?.(t))?.users?.[0];if(r&&(k(()=>r),r.slug!==e.slug)){let e=c(o.pathname),t=e===`profile`?``:`/${e}`;n({route:`staff/${r.slug}${t}`,replace:!0})}},onSaveError:T}),L=e=>M(()=>e),z=(e,t)=>{let n=Ke[e]?.({[e]:t});return n?(P({...N,[e]:n}),!1):(F(e),!0)},{mutateAsync:ue}=xe(),{mutateAsync:H}=oe(),{mutateAsync:fe}=se(),{mutateAsync:he}=ae(),ge=de(),W=je(),G=(0,Q.useCallback)(()=>{V(m)?n(`staff`):r(`/`)},[m,r,n]),Ee=async e=>{if(e.status===`inactive`&&e.roles[0].name!==`Contributor`)try{await ge?.errorIfWouldGoOverLimit(`staff`)}catch(e){if(e instanceof i){D({formSheet:!0,prompt:e.message||`Your current plan doesn't support more users.`,onOk:()=>n({route:a,isExternal:!0})});return}else throw e}let t=`This user will no longer be able to log in but their posts will be kept.`;e.status===`inactive`&&(t=`This user will be able to log in again and will have the same permissions they had previously.`),E({title:`Are you sure you want to suspend this user?`,prompt:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`strong`,{children:`WARNING:`}),` `,t]}),okLabel:e.status===`inactive`?`Un-suspend`:`Suspend`,okRunningLabel:e.status===`inactive`?`Un-suspending...`:`Suspending...`,okVariant:`destructive`,onOk:async t=>{let n={...e,status:e.status===`inactive`?`active`:`inactive`};try{await H(n),k(()=>n),t?.remove(),l.success(e.status===`inactive`?`User un-suspended`:`User suspended`)}catch(e){T(e)}}})},K=(n,{owner:r})=>{E({title:`Are you sure you want to delete this user?`,prompt:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`p`,{className:`mb-3`,children:[(0,Z.jsx)(`span`,{className:`font-bold`,children:n.name||n.email}),` will be permanently deleted and all their posts will be automatically assigned to`,` `,(0,Z.jsx)(`span`,{className:`font-bold`,children:r.name}),`.`]}),(0,Z.jsxs)(`p`,{children:[`To make these easy to find in the future, each post will be given an internal tag of`,` `,(0,Z.jsxs)(`span`,{className:`font-bold`,children:[`#`,e.slug]})]})]}),okLabel:`Delete user`,okVariant:`destructive`,onOk:async e=>{t(!0);try{await fe(n?.id),e?.remove(),G(),setTimeout(()=>l.success(`User deleted`),100)}catch(e){t(!1),T(e)}}})},q=()=>{E({title:`Transfer Ownership`,prompt:`Are you sure you want to transfer the ownership of this blog? You will not be able to undo this action.`,okLabel:`Yep — I'm sure`,okVariant:`destructive`,onOk:async t=>{try{await he(e.id),t?.remove(),l.success(`Ownership transferred`)}catch(e){T(e)}}})},J=async(e,t)=>{try{let n=Te(await ue({file:t}));switch(e){case`cover_image`:M(e=>({...e,cover_image:n}));break;case`profile_image`:M(e=>({...e,profile_image:n}));break}}catch(e){let t=e;t.response.status===415&&(t.message=`Unsupported file type`),T(t)}},X=e=>{switch(e){case`cover_image`:M(e=>({...e,cover_image:``}));break;case`profile_image`:M(e=>({...e,profile_image:``}));break}},Me=B(m)||le(m)&&ie(e),Pe=R(m)&&ce(O)&&O.status!==`inactive`,Fe=O.id!==m.id&&(B(m)&&!R(e)||le(m)&&ie(e)),Ie=O.status===`inactive`?`Un-suspend user`:`Suspend user`,Le=`h-8 bg-surface-inverse px-3 text-surface-inverse-foreground opacity-80 hover:bg-surface-inverse/90 hover:text-surface-inverse-foreground hover:opacity-100`,Re=O.status===`inactive`?` (Suspended)`:``,$=!V(m),ze=`mx-auto w-full max-w-[536px]`,[Be,Ve]=(0,Q.useState)(c(o.pathname));return(0,Z.jsx)(ne,{animate:!$,backDrop:!$,buttonsDisabled:I.disabled,cancelLabel:`Close`,dirty:A===`unsaved`,footerClassName:$?`mx-auto w-full max-w-[calc(536px+5rem)]`:void 0,hideXOnMobile:!0,okLabel:I.label||`Save`,okVariant:I.variant,size:$?`bleed`:`md`,stickyFooter:!0,testId:`user-detail-modal`,width:$?`full`:600,onClose:G,onOk:async()=>{await j({fakeWhenUnchanged:!0})},children:(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`div`,{className:`relative ${$?`-mx-10 -mt-10`:`-mx-8 -mt-8 rounded-t`}`,children:(0,Z.jsx)(`div`,{className:h(`flex flex-wrap items-end justify-between gap-8 p-8`,O.cover_image&&`bg-cover bg-center`,$&&O.cover_image&&`min-h-[30vmin]`),style:{backgroundImage:O.cover_image?`url(${O.cover_image})`:`none`},children:(0,Z.jsxs)(`div`,{className:h(`flex w-full flex-col gap-2`,$&&ze),children:[(0,Z.jsxs)(`div`,{className:`flex flex-nowrap items-start justify-between gap-3`,children:[(0,Z.jsx)(`div`,{children:(0,Z.jsx)(Ce,{className:`-ml-1 size-20 overflow-visible rounded-full`,children:O.profile_image?(0,Z.jsxs)(ye,{className:`rounded-full`,children:[(0,Z.jsx)(we,{"data-testid":`profile-image-preview`,id:`avatar`,src:O.profile_image}),(0,Z.jsxs)(ve,{className:`top-1 right-1`,children:[W.isEnabled&&(0,Z.jsx)(be,{"aria-label":`Edit profile image`,className:`rounded-full`,onClick:()=>W.openEditor({image:O.profile_image||``,handleSave:async e=>J(`profile_image`,e)}),children:(0,Z.jsx)(y,{})}),(0,Z.jsx)(be,{"aria-label":`Remove profile image`,className:`rounded-full`,onClick:()=>X(`profile_image`),children:(0,Z.jsx)(_,{})})]})]}):(0,Z.jsx)(Se,{className:`rounded-full bg-surface-inverse text-surface-inverse-foreground opacity-80 hover:opacity-100`,inputId:`avatar`,inputTestId:`profile-image-upload`,onDropAccepted:e=>void J(`profile_image`,e[0]),children:(0,Z.jsx)(b,{className:`size-8 text-surface-inverse-foreground`})})})}),(0,Z.jsxs)(`div`,{className:`flex flex-nowrap items-start gap-3`,children:[O.cover_image?(0,Z.jsxs)(`div`,{className:`flex flex-nowrap items-end justify-end gap-4`,children:[(0,Z.jsx)(`img`,{alt:``,className:`hidden`,"data-testid":`cover-image-preview`,src:O.cover_image}),W.isEnabled&&(0,Z.jsx)(x,{className:Le,type:`button`,onClick:()=>W.openEditor({image:O.cover_image||``,handleSave:async e=>J(`cover_image`,e)}),children:`Edit cover image`}),(0,Z.jsx)(x,{className:Le,type:`button`,onClick:()=>X(`cover_image`),children:`Delete cover image`})]}):(0,Z.jsx)(te,{className:`h-8`,inputId:`cover-image`,inputTestId:`cover-image-upload`,variant:`button`,onDropAccepted:e=>void J(`cover_image`,e[0]),children:`Upload cover image`}),Me&&(0,Z.jsx)(`div`,{className:`z-10`,children:(0,Z.jsxs)(_e,{children:[(0,Z.jsx)(me,{asChild:!0,children:(0,Z.jsxs)(`button`,{className:h(`flex h-8 cursor-pointer items-center justify-center rounded px-3`,O.cover_image?`bg-[rgba(0,0,0,0.75)] opacity-80 hover:opacity-100`:`border border-gray-300 bg-transparent text-black dark:border-gray-800 dark:text-white`),type:`button`,children:[(0,Z.jsx)(`span`,{className:`sr-only`,children:`Actions`}),(0,Z.jsx)(v,{className:h(`size-5`,O.cover_image&&`text-white`)})]})}),(0,Z.jsxs)(pe,{align:`end`,className:`z-[9999]`,children:[Pe&&(0,Z.jsx)(U,{onSelect:q,children:`Make owner`}),(0,Z.jsx)(U,{onSelect:()=>{n(`history/view/${O.id}`)},children:`View user activity`}),Fe&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(U,{onSelect:()=>{Ee(O)},children:Ie}),(0,Z.jsx)(U,{className:`text-destructive focus:text-destructive`,onSelect:()=>{K(e,{owner:d})},children:`Delete user`})]})]})]})})]})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsxs)(g,{as:`h3`,className:h(`break-words md:text-2xl md:break-normal`,O.cover_image?`text-white`:`text-foreground`),leading:`heading`,size:`xl`,weight:`bold`,children:[e.name,Re]}),(0,Z.jsx)(`span`,{className:h(`text-md font-medium capitalize`,O.cover_image?`text-white`:`text-black dark:text-white`),children:e.roles[0].name.toLowerCase()})]})]})})}),(0,Z.jsx)(`div`,{className:h(`mt-6 flex flex-col`,$&&ze),children:(0,Z.jsxs)(w,{value:Be,variant:`underline`,onValueChange:t=>{let r=t===`profile`?``:`/${t}`;n(`staff/${e.slug}${r}`),Ve(t)},children:[(0,Z.jsxs)(ee,{children:[(0,Z.jsx)(S,{title:`Profile`,value:`profile`,children:`Profile`}),(0,Z.jsx)(S,{title:`Social Links`,value:`social-links`,children:`Social Links`}),(0,Z.jsx)(S,{title:`Email Notifications`,value:`email-notifications`,children:`Email Notifications`})]}),(0,Z.jsx)(C,{className:`pt-4`,value:`profile`,children:(0,Z.jsx)(He,{clearError:F,errors:N,setUserData:L,user:O,validateField:z})}),(0,Z.jsx)(C,{className:`pt-4`,value:`social-links`,children:(0,Z.jsx)(We,{clearError:F,errors:N,setUserData:L,user:O,validateField:z})}),(0,Z.jsx)(C,{className:`pt-4`,value:`email-notifications`,children:(0,Z.jsx)(Ne,{setUserData:L,user:O})})]})})]})})},Je=()=>{let{slug:e}=d(),{currentUser:t}=Y(),{updateRoute:n}=re(),r=p(),i=s(),[o,c]=(0,Q.useState)(!1),u=t.slug===e,{data:f,error:m}=z(e||``,{enabled:!u&&!!e,defaultErrorHandler:!1}),h=u?t:f?.users?.[0],g=m instanceof a&&m.response?.status===404;(0,Q.useEffect)(()=>{m&&!g&&i(m)},[m,g,i]);let _=!u&&!!e&&!h&&(g||f!==void 0),v=(0,Q.useRef)(void 0);h&&(v.current=h);let y=h||(_?void 0:v.current),b=_?e??null:null,x=(0,Q.useRef)(null);return(0,Q.useEffect)(()=>{!b||o||x.current===b||(x.current=b,l.error(`User not found`),V(t)?n({route:`staff`,replace:!0}):r(`/`))},[b,o,t,r,n]),y?(0,Z.jsx)(qe,{user:y,onDeletingUserChange:c}):null};export{Je as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as e,n as t,s as n,t as r}from"./hooks-CuEZV2-q.js";import{r as i,t as a}from"./update-queries-C4CnvJaW.js";var o=n,s=r({dataType:o,path:`/users/`,defaultSearchParams:{limit:`100`,include:`roles`},defaultNextPageParams:(e,t)=>{if(e.meta?.pagination.next)return{...t,page:e.meta.pagination.next.toString()}},returnData:e=>{let{pages:t}=e,n=t.flatMap(e=>e.users),r=t[t.length-1].meta;return{users:n,meta:r,isEnd:r?r.pagination.pages===r.pagination.page:!0}}}),c=e({dataType:o,path:e=>`/users/slug/${e}/`,defaultSearchParams:{include:`roles`}}),l=t({method:`PUT`,path:e=>`/users/${e.id}/`,body:e=>({users:[e]}),searchParams:()=>({include:`roles`}),updateQueries:{dataType:o,emberUpdateType:`createOrUpdate`,update:i(`users`)}}),u=t({method:`DELETE`,path:e=>`/users/${e}/`,updateQueries:{dataType:o,emberUpdateType:`delete`,update:a(`users`)}}),d=t({method:`PUT`,path:()=>`/users/password/`,body:({newPassword:e,confirmNewPassword:t,userId:n,oldPassword:r})=>({password:[{user_id:n,oldPassword:r||``,newPassword:e,ne2Password:t}]})}),f=t({method:`PUT`,path:()=>`/users/owner/`,body:e=>({owner:[{id:e}]}),updateQueries:{dataType:o,emberUpdateType:`createOrUpdate`,update:i(`users`)}});function p(e){return e.roles.some(e=>e.name===`Owner`)}function m(e){return e.roles.some(e=>e.name===`Administrator`)}function h(e){return e.roles.some(e=>e.name===`Editor`)||e.roles.some(e=>e.name===`Super Editor`)}function g(e){return e.roles.some(e=>e.name===`Super Editor`)}function _(e){return e.roles.some(e=>e.name===`Author`)}function v(e){return e.roles.some(e=>e.name===`Contributor`)}function y(e){return _(e)||v(e)}function b(e){return p(e)||m(e)||h(e)}function x(e){return p(e)||m(e)||g(e)}function S(e){return p(e)||m(e)||h(e)}function C(e){return p(e)||m(e)||h(e)}function w(e){return p(e)||m(e)}function T(e){return p(e)||m(e)}export{d as _,S as a,y as c,p as d,s as f,f as g,c as h,x as i,v as l,l as m,T as n,w as o,u as p,C as r,m as s,b as t,h as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{n,t as r}from"./jsx-runtime-DX3WBWVO.js";import{u as i}from"./chunk-KS7C4IRE-DCsL4i4D.js";import{h as a}from"./dist-Cb5RSHSg.js";import{t as o}from"./button-BshWPHvn.js";var s=e(t(),1),c=e(n(),1);function l(e,t,n){let r=Array(e);return new Proxy(r,{get(r,i,a){if(typeof i==`string`){let a=i.charCodeAt(0);if(a>=48&&a<=57){let a=+i;if(Number.isInteger(a)&&a>=0&&a<e){let e=r[a];if(!e){let i=t[a*2];e=r[a]={index:a,key:n(a),start:i,size:t[a*2+1],end:i+t[a*2+1],lane:0}}return e}}if(i===`length`)return e}return Reflect.get(r,i,a)}})}function u(e,t,n){let r=n.initialDeps??[],i,a=!0;function o(){let o=e();return o.length!==r.length||o.some((e,t)=>r[t]!==e)?(r=o,i=t(...o),n?.onChange&&!(a&&n.skipInitialOnChange)&&n.onChange(i),a=!1,i):i}return o.updateDeps=e=>{r=e},o}function d(e,t){if(e===void 0)throw Error(`Unexpected undefined${t?`: ${t}`:``}`);return e}var f=(e,t)=>Math.abs(e-t)<1.01,p=(e,t,n)=>{let r;return function(...i){e.clearTimeout(r),r=e.setTimeout(()=>t.apply(this,i),n)}},m,h=()=>{if(m!==void 0)return m;if(typeof navigator>`u`)return m=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return m=!0;let e=navigator.maxTouchPoints;return m=navigator.platform===`MacIntel`&&e!==void 0&&e>0},g=e=>{let{offsetWidth:t,offsetHeight:n}=e;return{width:t,height:n}},_=e=>e,v=e=>{let t=Math.max(e.startIndex-e.overscan,0),n=Math.min(e.endIndex+e.overscan,e.count-1)-t+1,r=Array(n);for(let e=0;e<n;e++)r[e]=t+e;return r},y=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=e=>{let{width:n,height:r}=e;t({width:Math.round(n),height:Math.round(r)})};if(i(g(n)),!r.ResizeObserver)return()=>{};let a=new r.ResizeObserver(t=>{let r=()=>{let e=t[0];if(e?.borderBoxSize){let t=e.borderBoxSize[0];if(t){i({width:t.inlineSize,height:t.blockSize});return}}i(g(n))};e.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()});return a.observe(n,{box:`border-box`}),()=>{a.unobserve(n)}},b={passive:!0},x=typeof window>`u`?!0:`onscrollend`in window,S=(e,t,n)=>{let r=e.scrollElement;if(!r)return;let i=e.targetWindow;if(!i)return;let a=e.options.useScrollendEvent&&x,o=0,s=a?null:p(i,()=>t(o,!1),e.options.isScrollingResetDelay),c=e=>()=>{o=n(r),s?.(),t(o,e)},l=c(!0),u=c(!1);return r.addEventListener(`scroll`,l,b),a&&r.addEventListener(`scrollend`,u,b),()=>{r.removeEventListener(`scroll`,l),a&&r.removeEventListener(`scrollend`,u)}},C=(e,t)=>S(e,t,t=>{let{horizontal:n,isRtl:r}=e.options;return n?t.scrollLeft*(r&&-1||1):t.scrollTop}),w=(e,t,n)=>{if(n.options.useCachedMeasurements){let t=n.indexFromElement(e),r=n.options.getItemKey(t);return n.itemSizeCache.get(r)??n.options.estimateSize(t)}if(t?.borderBoxSize){let e=t.borderBoxSize[0];if(e)return Math.round(e[n.options.horizontal?`inlineSize`:`blockSize`])}if(!t){let t=n.indexFromElement(e),r=n.options.getItemKey(t),i=n.itemSizeCache.get(r);if(i!==void 0)return i}return e[n.options.horizontal?`offsetWidth`:`offsetHeight`]},T=(e,{adjustments:t=0,behavior:n},r)=>{var i,a;(a=(i=r.scrollElement)?.scrollTo)==null||a.call(i,{[r.options.horizontal?`left`:`top`]:e+t,behavior:n})},E=class{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._flatMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.pendingScrollAnchor=null,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._intendedScrollOffset=null,this.elementsCache=new Map,this.now=()=>{var e;return((e=this.targetWindow?.performance)?.now)?.call(e)??Date.now()},this.observer=(()=>{let e=null,t=()=>e||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:e=new this.targetWindow.ResizeObserver(e=>{e.forEach(e=>{let t=()=>{let t=e.target,n=this.indexFromElement(t);if(!t.isConnected){this.observer.unobserve(t);for(let[e,n]of this.elementsCache)if(n===t){this.elementsCache.delete(e);break}return}this.shouldMeasureDuringScroll(n)&&this.resizeItem(n,this.options.measureElement(t,e,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(t):t()})}));return{disconnect:()=>{var n;(n=t())==null||n.disconnect(),e=null},observe:e=>t()?.observe(e,{box:`border-box`}),unobserve:e=>t()?.unobserve(e)}})(),this.range=null,this.setOptions=e=>{let t={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:_,rangeExtractor:v,onChange:()=>{},measureElement:w,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:`data-index`,initialMeasurementsCache:[],lanes:1,anchorTo:`start`,followOnAppend:!1,scrollEndThreshold:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:`estimate`,useCachedMeasurements:!1};for(let n in e){let r=e[n];r!==void 0&&(t[n]=r)}let n=this.options,r=null,i=null,a=!1;if(n!==void 0&&n.enabled&&t.enabled&&t.anchorTo===`end`&&this.scrollElement!==null){let e=n.count,o=t.count,s=this.getMeasurements(),c=e>0?s[0]?.key??n.getItemKey(0):null,l=e>0?s[e-1]?.key??n.getItemKey(e-1):null;if(o!==e||e>0&&o>0&&(t.getItemKey(0)!==c||t.getItemKey(o-1)!==l)){a=!0;let c=e>0?this.getVirtualItemForOffset(this.getScrollOffset())??s[0]:null;c&&(r=[c.key,this.getScrollOffset()-c.start]);let u=t.followOnAppend===!0?`auto`:t.followOnAppend||null;u&&o>e&&this.isAtEnd(n.scrollEndThreshold)&&(e===0||t.getItemKey(o-1)!==l)&&(i=u)}}this.options=t,a&&(this.pendingMin=0,this.itemSizeCacheVersion++);let o=!1,s=0;if(r&&this.scrollOffset!==null){let[e,t]=r,n=this.getMeasurements(),{count:i,getItemKey:a}=this.options,c=0;for(;c<i&&a(c)!==e;)c++;if(c<i){let e=n[c];if(e){let n=Math.max(0,e.start+t);n!==this.scrollOffset&&(s=n-this.scrollOffset,this.scrollOffset=n,o=!0)}}}(o||i)&&(this.pendingScrollAnchor=[o?r[0]:null,o?r[1]:0,i,s])},this.notify=e=>{var t,n;(n=(t=this.options).onChange)==null||n.call(t,this,e)},this.maybeNotify=u(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{let e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}if(this.scrollElement=e,this.scrollElement&&`ownerDocument`in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=this.scrollElement?.window??null,this.elementsCache.forEach(e=>{this.observer.observe(e)}),this.unsubs.push(this.options.observeElementRect(this,e=>{this.scrollRect=e,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(e,t)=>{if(t&&this._intendedScrollOffset===null&&e===this.scrollOffset)return;this._intendedScrollOffset!==null&&Math.abs(e-this._intendedScrollOffset)<1.5&&(e=this._intendedScrollOffset),this._intendedScrollOffset=null,this.scrollAdjustments=0;let n=this.getScrollOffset();this.scrollDirection=t?n===e?this.scrollDirection:n<e?`forward`:`backward`:null,this.scrollOffset=e,this.isScrolling=t,this._flushIosDeferredIfReady(),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),`addEventListener`in this.scrollElement){let e=this.scrollElement,t=()=>{this._iosTouching=!0,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)},n=()=>{this._iosTouching=!1,!(!h()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};e.addEventListener(`touchstart`,t,b),e.addEventListener(`touchend`,n,b),this.unsubs.push(()=>{e.removeEventListener(`touchstart`,t),e.removeEventListener(`touchend`,n),this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)})}this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}let t=this.pendingScrollAnchor;if(this.pendingScrollAnchor=null,t&&this.scrollElement&&this.options.enabled){let[e,n,r,i]=t;e!==null&&!r&&(h()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?i!==0&&(this._iosDeferredAdjustment+=i):this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})),r&&this.scrollToEnd({behavior:r})}},this._flushIosDeferredIfReady=()=>{if(this._iosDeferredAdjustment===0||this.isScrolling||this._iosTouching||this._iosJustTouchEnded)return;let e=this.getScrollOffset(),t=this.getMaxScrollOffset();if(e<0||e>t)return;if(this._iosDeferredAdjustment<0&&e>=t-1){this._iosDeferredAdjustment=0;return}let n=this._iosDeferredAdjustment;this._iosDeferredAdjustment=0,this._scrollToOffset(e,{adjustments:this.scrollAdjustments+=n,behavior:void 0})},this.rafId=null,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.getMeasurementOptions=u(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode,this.options.gap],(e,t,n,r,i,a,o,s)=>(this.prevLanes!==void 0&&this.prevLanes!==a&&(this.lanesChangedFlag=!0),this.prevLanes=a,this.pendingMin=null,{count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o,gap:s}),{key:!1}),this.getMeasurements=u(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o,gap:s},c)=>{let u=this.itemSizeCache;if(!i)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(let t of this.laneAssignments.keys())t>=e&&this.laneAssignments.delete(t);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(e=>{this.itemSizeCache.set(e.key,e.size)}));let d=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1),a===1){let i=e*2,a=this._flatMeasurements;if(!a||a.length<i){let e=new Float64Array(i);a&&d>0&&e.set(a.subarray(0,d*2)),a=e,this._flatMeasurements=a}let o;if(d===0)o=t+n;else{let e=d-1;o=a[e*2]+a[e*2+1]+s}for(let t=d;t<e;t++){let e=r(t),n=u.get(e),i=typeof n==`number`?n:this.options.estimateSize(t);a[t*2]=o,a[t*2+1]=i,o+=i+s}let c=l(e,a,r);return this.measurementsCache=c,c}let f=this.measurementsCache.slice(0,d),p=Array(a).fill(void 0),m=new Float64Array(a),h=0;for(let e=0;e<d;e++){let t=f[e];t&&(p[t.lane]===void 0&&h++,p[t.lane]=e,m[t.lane]=t.end)}for(let i=d;i<e;i++){let e=r(i),c=this.laneAssignments.get(i),l,d,g=o===`estimate`||u.has(e);if(c!==void 0&&this.options.lanes>1){l=c;let e=p[l],r=e===void 0?void 0:f[e];d=r?r.end+s:t+n}else if(h===a){let e=0,t=m[0],n=p[0];for(let r=1;r<a;r++){let i=m[r];(i<t||i===t&&p[r]<n)&&(e=r,t=i,n=p[r])}l=e,d=t+s,g&&this.laneAssignments.set(i,l)}else l=i%this.options.lanes,d=t+n,g&&this.laneAssignments.set(i,l);let _=u.get(e),v=typeof _==`number`?_:this.options.estimateSize(i),y=d+v;f[i]={index:i,start:d,size:v,end:y,key:e,lane:l},p[l]===void 0&&h++,p[l]=i,m[l]=y}return this.measurementsCache=f,f},{key:!1,debug:()=>this.options.debug}),this.calculateRange=u(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,n,r)=>e.length===0||t===0?(this.range=null,null):(this.range=k(e,t,n,r,r===1&&this._flatMeasurements!=null?this._flatMeasurements:null),this.range),{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=u(()=>{let e=null,t=null,n=this.calculateRange();return n&&(e=n.startIndex,t=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]},(e,t,n,r,i)=>r===null||i===null?[]:e({startIndex:r,endIndex:i,overscan:t,count:n}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{let t=this.options.indexAttribute,n=e.getAttribute(t);return n?parseInt(n,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=e=>{if(!this.scrollState||this.scrollState.behavior!==`smooth`)return!0;let t=this.scrollState.index??this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)?.index;if(t!==void 0&&this.range){let n=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),r=Math.max(0,t-n),i=Math.min(this.options.count-1,t+n);return e>=r&&e<=i}return!0},this.measureElement=e=>{if(!e){this.elementsCache.forEach((e,t)=>{e.isConnected||(this.observer.unobserve(e),this.elementsCache.delete(t))});return}let t=this.indexFromElement(e),n=this.options.getItemKey(t),r=this.elementsCache.get(n);r!==e&&(r&&this.observer.unobserve(r),this.observer.observe(e),this.elementsCache.set(n,e)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(t)&&this.resizeItem(t,this.options.measureElement(e,void 0,this))},this.resizeItem=(e,t)=>{if(e<0||e>=this.options.count)return;let n,r,i,a=this._flatMeasurements;if(this.options.lanes===1&&a!==null)i=this.options.getItemKey(e),r=a[e*2],n=a[e*2+1];else{let t=this.measurementsCache[e];if(!t)return;i=t.key,r=t.start,n=t.size}let o=this.itemSizeCache.get(i)??n,s=t-o;if(s!==0){let a=this.options.anchorTo===`end`&&this.scrollState?.behavior!==`smooth`&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,c=a?this.getTotalSize():0,l=this.getScrollOffset()+this.scrollAdjustments,u=this.itemSizeCache.has(i)?r+o<=l&&this.scrollDirection!==`backward`:r<l,d=this.scrollState?.behavior!==`smooth`&&(this.shouldAdjustScrollPositionOnItemSizeChange===void 0?u:this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[e]??{index:e,key:i,start:r,size:n,end:r+n,lane:0},s,this));(this.pendingMin===null||e<this.pendingMin)&&(this.pendingMin=e),this.itemSizeCache.set(i,t),this.itemSizeCacheVersion++;let f=!1;a?f=this.applyScrollAdjustment(this.getTotalSize()-c):d&&(f=this.applyScrollAdjustment(s)),this.notify(f)}},this.getVirtualItems=u(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,t)=>{let n=[];for(let r=0,i=e.length;r<i;r++){let i=t[e[r]];n.push(i)}return n},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{let t=this.getMeasurements();if(t.length===0)return;let n=this._flatMeasurements,r=this.options.lanes===1&&n!=null;return d(t[D(0,t.length-1,r?e=>n[e*2]:e=>d(t[e]).start,e)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if(`scrollHeight`in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{let e=this.scrollElement.document.documentElement;return this.options.horizontal?e.scrollWidth-this.scrollElement.innerWidth:e.scrollHeight-this.scrollElement.innerHeight}},this.getVirtualDistanceFromEnd=()=>Math.max(this.getTotalSize()-this.getSize()-this.getScrollOffset(),0),this.getDistanceFromEnd=()=>Math.max(this.getMaxScrollOffset()-this.getScrollOffset(),0),this.isAtEnd=(e=this.options.scrollEndThreshold)=>this.getDistanceFromEnd()<=e,this.getOffsetForAlignment=(e,t,n=0)=>{if(!this.scrollElement)return 0;let r=this.getSize(),i=this.getScrollOffset();t===`auto`&&(t=e>=i+r?`end`:`start`),t===`center`?e+=(n-r)/2:t===`end`&&(e-=r);let a=this.getMaxScrollOffset();return Math.max(Math.min(a,e),0)},this.getOffsetForIndex=(e,t=`auto`)=>{e=Math.max(0,Math.min(e,this.options.count-1));let n=this.getSize(),r=this.getScrollOffset(),i=this.measurementsCache[e];if(!i)return;if(t===`auto`)if(i.end>=r+n-this.options.scrollPaddingEnd)t=`end`;else if(i.start<=r+this.options.scrollPaddingStart)t=`start`;else return[r,t];if(t===`end`&&e===this.options.count-1)return[this.getMaxScrollOffset(),t];let a=t===`end`?i.end+this.options.scrollPaddingEnd:i.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(a,t,i.size),t]},this.scrollToOffset=(e,{align:t=`start`,behavior:n=`auto`}={})=>{this._iosDeferredAdjustment=0;let r=this.getOffsetForAlignment(e,t),i=this.now();this.scrollState={index:null,align:t,behavior:n,startedAt:i,lastTargetOffset:r,stableFrames:0},this._scrollToOffset(r,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToIndex=(e,{align:t=`auto`,behavior:n=`auto`}={})=>{this._iosDeferredAdjustment=0,e=Math.max(0,Math.min(e,this.options.count-1));let r=this.getOffsetForIndex(e,t);if(!r)return;let[i,a]=r,o=this.now();this.scrollState={index:e,align:a,behavior:n,startedAt:o,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollBy=(e,{behavior:t=`auto`}={})=>{let n=this.getScrollOffset()+e,r=this.now();this.scrollState={index:null,align:`start`,behavior:t,startedAt:r,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:t}),this.scheduleScrollReconcile()},this.scrollToEnd=({behavior:e=`auto`}={})=>{if(this.options.count>0){this.scrollToIndex(this.options.count-1,{align:`end`,behavior:e});return}this.scrollToOffset(Math.max(this.getTotalSize()-this.getSize(),0),{behavior:e})},this.getTotalSize=()=>{let e=this.getMeasurements(),t;if(e.length===0)t=this.options.paddingStart;else if(this.options.lanes===1){let n=e.length-1,r=this._flatMeasurements;t=r==null?e[n]?.end??0:r[n*2]+r[n*2+1]}else{let n=Array(this.options.lanes).fill(null),r=e.length-1;for(;r>=0&&n.some(e=>e===null);){let t=e[r];n[t.lane]===null&&(n[t.lane]=t.end),r--}t=Math.max(...n.filter(e=>e!==null))}return Math.max(t-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{let e=[];if(this.itemSizeCache.size===0)return e;let t=this.getMeasurements();for(let n of t)n&&this.itemSizeCache.has(n.key)&&e.push({index:n.index,key:n.key,start:n.start,size:n.size,end:n.end,lane:n.lane});return e},this._scrollToOffset=(e,{adjustments:t,behavior:n})=>{this._intendedScrollOffset=e+(t??0),this.options.scrollToFn(e,{behavior:n,adjustments:t},this)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(e)}applyScrollAdjustment(e,t){return e===0?!1:h()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?(this._iosDeferredAdjustment+=e,!1):(this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=e,behavior:t}),this.scrollOffset!==null&&(this.scrollOffset+=this.scrollAdjustments,this.scrollOffset<0&&(this.scrollOffset=0),this.scrollAdjustments=0),!0)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId??=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()})}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}let e=this.scrollState.index==null?void 0:this.getOffsetForIndex(this.scrollState.index,this.scrollState.align),t=e?e[0]:this.scrollState.lastTargetOffset,n=t!==this.scrollState.lastTargetOffset;if(!n&&f(t,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=1){this.getScrollOffset()!==t&&this._scrollToOffset(t,{adjustments:void 0,behavior:`auto`}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,n){let e=this.getSize()||600,n=Math.abs(t-this.getScrollOffset()),r=this.scrollState.behavior===`smooth`&&n>e;this.scrollState.lastTargetOffset=t,r||(this.scrollState.behavior=`auto`),this._scrollToOffset(t,{adjustments:void 0,behavior:r?`smooth`:`auto`})}this.scheduleScrollReconcile()}},D=(e,t,n,r)=>{for(;e<=t;){let i=(e+t)/2|0,a=n(i);if(a<r)e=i+1;else if(a>r)t=i-1;else return i}return e>0?e-1:0};function O(e,t,n){let r=0;for(;r<=t;){let i=(r+t)/2|0,a=e[i*2];if(a<n)r=i+1;else if(a>n)t=i-1;else return i}return r>0?r-1:0}function k(e,t,n,r,i){let a=e.length-1;if(e.length<=r)return{startIndex:0,endIndex:a};if(r===1&&i!==null){let e=O(i,a,n),r=e,o=n+t;for(;r<a&&i[r*2]+i[r*2+1]<o;)r++;return{startIndex:e,endIndex:r}}let o=D(0,a,t=>e[t].start,n),s=o;if(r===1)for(;s<a&&e[s].end<n+t;)s++;else if(r>1){let i=Array(r).fill(0);for(;s<a&&i.some(e=>e<n+t);){let t=e[s];i[t.lane]=t.end,s++}let c=Array(r).fill(n+t);for(;o>=0&&c.some(e=>e>=n);){let t=e[o];c[t.lane]=t.start,o--}o=Math.max(0,o-o%r),s=Math.min(a,s+(r-1-s%r))}return{startIndex:o,endIndex:s}}var A=typeof document<`u`?s.useLayoutEffect:s.useEffect;function j({useFlushSync:e=!0,directDomUpdates:t=!1,directDomUpdatesMode:n=`transform`,...r}){let i=s.useReducer(e=>e+1,0)[1],a=s.useRef({enabled:t,mode:n,container:null,lastSize:null,lastPositions:new WeakMap,prevRange:null});a.current.enabled=t,a.current.mode=n;let o=e=>{let t=a.current;if(!t.enabled||!t.container)return;let n=e.getTotalSize();if(n!==t.lastSize){t.lastSize=n;let r=e.options.horizontal?`width`:`height`;t.container.style[r]=`${n}px`}},l=e=>{let t=a.current;if(!t.enabled||!t.container)return;o(e);let n=!!e.options.horizontal,r=t.mode===`transform`,i=n?`left`:`top`,s=e.options.scrollMargin,c=e.getVirtualItems();for(let a of c){let o=a.start-s,c=e.elementsCache.get(a.key);c&&t.lastPositions.get(c)!==o&&(t.lastPositions.set(c,o),r?c.style.transform=n?`translate3d(${o}px, 0, 0)`:`translate3d(0, ${o}px, 0)`:c.style[i]=`${o}px`)}},u={...r,onChange:(t,n)=>{var o;let s=a.current,u=!0;if(s.enabled){l(t);let e=t.range,n=s.prevRange;u=!n||n.isScrolling!==t.isScrolling||n.startIndex!==e?.startIndex||n.endIndex!==e?.endIndex,u&&(s.prevRange=e?{startIndex:e.startIndex,endIndex:e.endIndex,isScrolling:t.isScrolling}:null)}u&&(e&&n?(0,c.flushSync)(i):i()),(o=r.onChange)==null||o.call(r,t,n)}},[d]=s.useState(()=>{let e=new E(u);return Object.assign(e,{containerRef:t=>{let n=a.current;if(n.container=t,n.lastSize=null,t&&n.enabled){let r=e.getTotalSize();n.lastSize=r;let i=e.options.horizontal?`width`:`height`;t.style[i]=`${r}px`}}})});return d.setOptions(u),A(()=>d._didMount(),[]),A(()=>(o(d),d._willUpdate())),A(()=>{l(d)}),d}function M(e){return j({observeElementRect:y,observeElementOffset:C,scrollToFn:T,...e})}function N({items:e,totalItems:t,parentRef:n,hasNextPage:r,isFetchingNextPage:i,fetchNextPage:o,estimateSize:c=()=>100,overscan:l=5,getScrollElement:u=a}){let d=M({count:t,getScrollElement:()=>u(n.current),estimateSize:c,overscan:l}),f=d.getVirtualItems(),p=f.length>0?(f.at(0)?.start??0)-d.options.scrollMargin:0,m=f.length>0?d.getTotalSize()-(f.at(-1)?.end??0):0,h=f.map(t=>({virtualItem:t,key:t.key,item:e[t.index],props:{ref:d.measureElement,"data-index":t.index}})),g=h.at(-1)&&!h.at(-1)?.item;return(0,s.useEffect)(()=>{r&&g&&!i&&o()},[r,g,i,o]),{visibleItems:h,virtualizer:d,spaceBefore:p,spaceAfter:m}}var P=1e3,F=`ghostVirtualListWindow`;function I({totalItems:e,unlockedItemCount:t}){let n=Math.min(e,t);return{visibleItemCount:n,canLoadMore:e>n}}function L(e,t){return e+t}function R(e,t){return`${e}::${t}`}function z(e,t,n){let r=e?.[F];if(!r||typeof r!=`object`)return n;let i=r[t];return typeof i!=`number`||!Number.isFinite(i)?n:Math.max(1,Math.floor(i))}function B(e,t,n){if(typeof window>`u`)return;let r=e?.[F],i={...e??{},[F]:{...r&&typeof r==`object`?r:{},[t]:n}};window.history.replaceState(i,``)}function V(){if(!(typeof window>`u`))return window.history.state}function H(e,{resetKey:t,windowSize:n=P}={}){let{key:r,pathname:a,search:o}=i(),c=R(a,t??o),[l,u]=(0,s.useState)(()=>z(V(),c,n)),d=(0,s.useRef)(c);(0,s.useEffect)(()=>{if(d.current!==c){d.current=c,u(z(V(),c,n));return}B(V(),c,l)},[c,r,l,n]);let{visibleItemCount:f,canLoadMore:p}=I({totalItems:e,unlockedItemCount:l});return{visibleItemCount:f,canLoadMore:p,loadMore:()=>u(e=>L(e,n))}}var U=new Map,W=`ghostVirtualListScrollPosition`,G=150,K=500;function q(){if(!(typeof window>`u`))return window.history.state}function J(e){let t=e?.key;if(typeof t==`string`||typeof t==`number`)return String(t);let n=e?.idx;if(typeof n==`number`)return String(n)}function Y(e,t){let n=J(e);if(n)return`${n}::${t}`}function X(e,t){let n=e?.[W];if(!n||typeof n!=`object`)return;let r=n[t];if(typeof r==`number`)return r}function Z(e,t,n){if(typeof window>`u`)return;let r=e?.[W],i={...e??{},[W]:{...r&&typeof r==`object`?r:{},[t]:n}};window.history.replaceState(i,``)}function Q({parentRef:e,enabled:t=!0,isLoading:n=!1,getScrollElement:r=a}){let o=i(),[c,l]=(0,s.useState)(null),u=(0,s.useRef)(null),d=(0,s.useRef)(0),f=(0,s.useRef)(0),p=(0,s.useRef)(0),m=(0,s.useRef)(null),h=(0,s.useRef)(new Set),g=o.pathname+o.search;(0,s.useEffect)(()=>{if(!t||!e.current)return;let n=r(e.current);l(n)},[t,e,r]),(0,s.useEffect)(()=>{if(!t||!c)return;let e=q(),n=J(e),r=Y(e,g),i=()=>{m.current!==null&&(window.clearTimeout(m.current),m.current=null)},a=e=>{r&&U.set(r,e);let t=q();J(t)===n&&Z(t,g,e),f.current=Date.now(),p.current=e},o=({persistToHistory:e=!0}={})=>{if(i(),!e){let e=d.current;r&&U.set(r,e),f.current=Date.now(),p.current=e;return}a(d.current)},s=()=>{let e=Date.now();if(Math.abs(d.current-p.current)>=K||e-f.current>=G){i(),a(d.current);return}m.current===null&&(m.current=window.setTimeout(()=>{m.current=null,a(d.current)},G))},l=()=>{d.current=c.scrollTop,s()},u=()=>{o()};return d.current=c.scrollTop,c.addEventListener(`scroll`,l),window.addEventListener(`pagehide`,u),()=>{o({persistToHistory:!1}),c.removeEventListener(`scroll`,l),window.removeEventListener(`pagehide`,u)}},[t,g,c]),(0,s.useEffect)(()=>{let e=q(),r=Y(e,g),i=(r?U.get(r):void 0)??X(e,g);if(!(!t||!c||n)){if(i!==void 0&&u.current!==g){u.current=g;let e=0,t=()=>{for(let e of h.current)window.clearTimeout(e);h.current.clear()},n=(e,t)=>{let n=window.setTimeout(()=>{h.current.delete(n),e()},t);h.current.add(n)},r=()=>{if(e+=1,!c)return;let t=c.scrollTop,a=c.scrollHeight-c.clientHeight;if(i>a&&e<20){n(r,100);return}Math.abs(i-t)>5&&(c.scrollTop=Math.min(i,a))};return n(r,150),()=>t()}u.current=g}},[t,g,c,n])}var $=r(),ee=({isLoading:e,onClick:t,label:n=`Load more`,loadingLabel:r=`Loading more...`,className:i=`flex justify-center px-4 py-6`})=>{let a=!!e;return(0,$.jsx)(`div`,{className:i,children:(0,$.jsx)(o,{disabled:a,variant:`outline`,onClick:t,children:a?r:n})})};export{N as i,Q as n,H as r,ee as t};
|
|
1
|
+
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{n,t as r}from"./jsx-runtime-DX3WBWVO.js";import{u as i}from"./chunk-KS7C4IRE-DCsL4i4D.js";import{_ as a}from"./dist-B3keLvjj.js";import{t as o}from"./button-eNMKQWXr.js";var s=e(t(),1),c=e(n(),1);function l(e,t,n){let r=Array(e);return new Proxy(r,{get(r,i,a){if(typeof i==`string`){let a=i.charCodeAt(0);if(a>=48&&a<=57){let a=+i;if(Number.isInteger(a)&&a>=0&&a<e){let e=r[a];if(!e){let i=t[a*2];e=r[a]={index:a,key:n(a),start:i,size:t[a*2+1],end:i+t[a*2+1],lane:0}}return e}}if(i===`length`)return e}return Reflect.get(r,i,a)}})}function u(e,t,n){let r=n.initialDeps??[],i,a=!0;function o(){let o=e();return o.length!==r.length||o.some((e,t)=>r[t]!==e)?(r=o,i=t(...o),n?.onChange&&!(a&&n.skipInitialOnChange)&&n.onChange(i),a=!1,i):i}return o.updateDeps=e=>{r=e},o}function d(e,t){if(e===void 0)throw Error(`Unexpected undefined${t?`: ${t}`:``}`);return e}var f=(e,t)=>Math.abs(e-t)<1.01,p=(e,t,n)=>{let r;return function(...i){e.clearTimeout(r),r=e.setTimeout(()=>t.apply(this,i),n)}},m,h=()=>{if(m!==void 0)return m;if(typeof navigator>`u`)return m=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return m=!0;let e=navigator.maxTouchPoints;return m=navigator.platform===`MacIntel`&&e!==void 0&&e>0},g=e=>{let{offsetWidth:t,offsetHeight:n}=e;return{width:t,height:n}},_=e=>e,v=e=>{let t=Math.max(e.startIndex-e.overscan,0),n=Math.min(e.endIndex+e.overscan,e.count-1)-t+1,r=Array(n);for(let e=0;e<n;e++)r[e]=t+e;return r},y=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=e=>{let{width:n,height:r}=e;t({width:Math.round(n),height:Math.round(r)})};if(i(g(n)),!r.ResizeObserver)return()=>{};let a=new r.ResizeObserver(t=>{let r=()=>{let e=t[0];if(e?.borderBoxSize){let t=e.borderBoxSize[0];if(t){i({width:t.inlineSize,height:t.blockSize});return}}i(g(n))};e.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()});return a.observe(n,{box:`border-box`}),()=>{a.unobserve(n)}},b={passive:!0},x=typeof window>`u`?!0:`onscrollend`in window,S=(e,t,n)=>{let r=e.scrollElement;if(!r)return;let i=e.targetWindow;if(!i)return;let a=e.options.useScrollendEvent&&x,o=0,s=a?null:p(i,()=>t(o,!1),e.options.isScrollingResetDelay),c=e=>()=>{o=n(r),s?.(),t(o,e)},l=c(!0),u=c(!1);return r.addEventListener(`scroll`,l,b),a&&r.addEventListener(`scrollend`,u,b),()=>{r.removeEventListener(`scroll`,l),a&&r.removeEventListener(`scrollend`,u)}},C=(e,t)=>S(e,t,t=>{let{horizontal:n,isRtl:r}=e.options;return n?t.scrollLeft*(r&&-1||1):t.scrollTop}),w=(e,t,n)=>{if(n.options.useCachedMeasurements){let t=n.indexFromElement(e),r=n.options.getItemKey(t);return n.itemSizeCache.get(r)??n.options.estimateSize(t)}if(t?.borderBoxSize){let e=t.borderBoxSize[0];if(e)return Math.round(e[n.options.horizontal?`inlineSize`:`blockSize`])}if(!t){let t=n.indexFromElement(e),r=n.options.getItemKey(t),i=n.itemSizeCache.get(r);if(i!==void 0)return i}return e[n.options.horizontal?`offsetWidth`:`offsetHeight`]},T=(e,{adjustments:t=0,behavior:n},r)=>{var i,a;(a=(i=r.scrollElement)?.scrollTo)==null||a.call(i,{[r.options.horizontal?`left`:`top`]:e+t,behavior:n})},E=class{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._flatMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.pendingScrollAnchor=null,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._intendedScrollOffset=null,this.elementsCache=new Map,this.now=()=>{var e;return((e=this.targetWindow?.performance)?.now)?.call(e)??Date.now()},this.observer=(()=>{let e=null,t=()=>e||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:e=new this.targetWindow.ResizeObserver(e=>{e.forEach(e=>{let t=()=>{let t=e.target,n=this.indexFromElement(t);if(!t.isConnected){this.observer.unobserve(t);for(let[e,n]of this.elementsCache)if(n===t){this.elementsCache.delete(e);break}return}this.shouldMeasureDuringScroll(n)&&this.resizeItem(n,this.options.measureElement(t,e,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(t):t()})}));return{disconnect:()=>{var n;(n=t())==null||n.disconnect(),e=null},observe:e=>t()?.observe(e,{box:`border-box`}),unobserve:e=>t()?.unobserve(e)}})(),this.range=null,this.setOptions=e=>{let t={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:_,rangeExtractor:v,onChange:()=>{},measureElement:w,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:`data-index`,initialMeasurementsCache:[],lanes:1,anchorTo:`start`,followOnAppend:!1,scrollEndThreshold:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:`estimate`,useCachedMeasurements:!1};for(let n in e){let r=e[n];r!==void 0&&(t[n]=r)}let n=this.options,r=null,i=null,a=!1;if(n!==void 0&&n.enabled&&t.enabled&&t.anchorTo===`end`&&this.scrollElement!==null){let e=n.count,o=t.count,s=this.getMeasurements(),c=e>0?s[0]?.key??n.getItemKey(0):null,l=e>0?s[e-1]?.key??n.getItemKey(e-1):null;if(o!==e||e>0&&o>0&&(t.getItemKey(0)!==c||t.getItemKey(o-1)!==l)){a=!0;let c=e>0?this.getVirtualItemForOffset(this.getScrollOffset())??s[0]:null;c&&(r=[c.key,this.getScrollOffset()-c.start]);let u=t.followOnAppend===!0?`auto`:t.followOnAppend||null;u&&o>e&&this.isAtEnd(n.scrollEndThreshold)&&(e===0||t.getItemKey(o-1)!==l)&&(i=u)}}this.options=t,a&&(this.pendingMin=0,this.itemSizeCacheVersion++);let o=!1,s=0;if(r&&this.scrollOffset!==null){let[e,t]=r,n=this.getMeasurements(),{count:i,getItemKey:a}=this.options,c=0;for(;c<i&&a(c)!==e;)c++;if(c<i){let e=n[c];if(e){let n=Math.max(0,e.start+t);n!==this.scrollOffset&&(s=n-this.scrollOffset,this.scrollOffset=n,o=!0)}}}(o||i)&&(this.pendingScrollAnchor=[o?r[0]:null,o?r[1]:0,i,s])},this.notify=e=>{var t,n;(n=(t=this.options).onChange)==null||n.call(t,this,e)},this.maybeNotify=u(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{let e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}if(this.scrollElement=e,this.scrollElement&&`ownerDocument`in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=this.scrollElement?.window??null,this.elementsCache.forEach(e=>{this.observer.observe(e)}),this.unsubs.push(this.options.observeElementRect(this,e=>{this.scrollRect=e,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(e,t)=>{if(t&&this._intendedScrollOffset===null&&e===this.scrollOffset)return;this._intendedScrollOffset!==null&&Math.abs(e-this._intendedScrollOffset)<1.5&&(e=this._intendedScrollOffset),this._intendedScrollOffset=null,this.scrollAdjustments=0;let n=this.getScrollOffset();this.scrollDirection=t?n===e?this.scrollDirection:n<e?`forward`:`backward`:null,this.scrollOffset=e,this.isScrolling=t,this._flushIosDeferredIfReady(),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),`addEventListener`in this.scrollElement){let e=this.scrollElement,t=()=>{this._iosTouching=!0,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)},n=()=>{this._iosTouching=!1,!(!h()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};e.addEventListener(`touchstart`,t,b),e.addEventListener(`touchend`,n,b),this.unsubs.push(()=>{e.removeEventListener(`touchstart`,t),e.removeEventListener(`touchend`,n),this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)})}this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}let t=this.pendingScrollAnchor;if(this.pendingScrollAnchor=null,t&&this.scrollElement&&this.options.enabled){let[e,n,r,i]=t;e!==null&&!r&&(h()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?i!==0&&(this._iosDeferredAdjustment+=i):this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})),r&&this.scrollToEnd({behavior:r})}},this._flushIosDeferredIfReady=()=>{if(this._iosDeferredAdjustment===0||this.isScrolling||this._iosTouching||this._iosJustTouchEnded)return;let e=this.getScrollOffset(),t=this.getMaxScrollOffset();if(e<0||e>t)return;if(this._iosDeferredAdjustment<0&&e>=t-1){this._iosDeferredAdjustment=0;return}let n=this._iosDeferredAdjustment;this._iosDeferredAdjustment=0,this._scrollToOffset(e,{adjustments:this.scrollAdjustments+=n,behavior:void 0})},this.rafId=null,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.getMeasurementOptions=u(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode,this.options.gap],(e,t,n,r,i,a,o,s)=>(this.prevLanes!==void 0&&this.prevLanes!==a&&(this.lanesChangedFlag=!0),this.prevLanes=a,this.pendingMin=null,{count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o,gap:s}),{key:!1}),this.getMeasurements=u(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o,gap:s},c)=>{let u=this.itemSizeCache;if(!i)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(let t of this.laneAssignments.keys())t>=e&&this.laneAssignments.delete(t);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(e=>{this.itemSizeCache.set(e.key,e.size)}));let d=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1),a===1){let i=e*2,a=this._flatMeasurements;if(!a||a.length<i){let e=new Float64Array(i);a&&d>0&&e.set(a.subarray(0,d*2)),a=e,this._flatMeasurements=a}let o;if(d===0)o=t+n;else{let e=d-1;o=a[e*2]+a[e*2+1]+s}for(let t=d;t<e;t++){let e=r(t),n=u.get(e),i=typeof n==`number`?n:this.options.estimateSize(t);a[t*2]=o,a[t*2+1]=i,o+=i+s}let c=l(e,a,r);return this.measurementsCache=c,c}let f=this.measurementsCache.slice(0,d),p=Array(a).fill(void 0),m=new Float64Array(a),h=0;for(let e=0;e<d;e++){let t=f[e];t&&(p[t.lane]===void 0&&h++,p[t.lane]=e,m[t.lane]=t.end)}for(let i=d;i<e;i++){let e=r(i),c=this.laneAssignments.get(i),l,d,g=o===`estimate`||u.has(e);if(c!==void 0&&this.options.lanes>1){l=c;let e=p[l],r=e===void 0?void 0:f[e];d=r?r.end+s:t+n}else if(h===a){let e=0,t=m[0],n=p[0];for(let r=1;r<a;r++){let i=m[r];(i<t||i===t&&p[r]<n)&&(e=r,t=i,n=p[r])}l=e,d=t+s,g&&this.laneAssignments.set(i,l)}else l=i%this.options.lanes,d=t+n,g&&this.laneAssignments.set(i,l);let _=u.get(e),v=typeof _==`number`?_:this.options.estimateSize(i),y=d+v;f[i]={index:i,start:d,size:v,end:y,key:e,lane:l},p[l]===void 0&&h++,p[l]=i,m[l]=y}return this.measurementsCache=f,f},{key:!1,debug:()=>this.options.debug}),this.calculateRange=u(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,n,r)=>e.length===0||t===0?(this.range=null,null):(this.range=k(e,t,n,r,r===1&&this._flatMeasurements!=null?this._flatMeasurements:null),this.range),{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=u(()=>{let e=null,t=null,n=this.calculateRange();return n&&(e=n.startIndex,t=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]},(e,t,n,r,i)=>r===null||i===null?[]:e({startIndex:r,endIndex:i,overscan:t,count:n}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{let t=this.options.indexAttribute,n=e.getAttribute(t);return n?parseInt(n,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=e=>{if(!this.scrollState||this.scrollState.behavior!==`smooth`)return!0;let t=this.scrollState.index??this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)?.index;if(t!==void 0&&this.range){let n=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),r=Math.max(0,t-n),i=Math.min(this.options.count-1,t+n);return e>=r&&e<=i}return!0},this.measureElement=e=>{if(!e){this.elementsCache.forEach((e,t)=>{e.isConnected||(this.observer.unobserve(e),this.elementsCache.delete(t))});return}let t=this.indexFromElement(e),n=this.options.getItemKey(t),r=this.elementsCache.get(n);r!==e&&(r&&this.observer.unobserve(r),this.observer.observe(e),this.elementsCache.set(n,e)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(t)&&this.resizeItem(t,this.options.measureElement(e,void 0,this))},this.resizeItem=(e,t)=>{if(e<0||e>=this.options.count)return;let n,r,i,a=this._flatMeasurements;if(this.options.lanes===1&&a!==null)i=this.options.getItemKey(e),r=a[e*2],n=a[e*2+1];else{let t=this.measurementsCache[e];if(!t)return;i=t.key,r=t.start,n=t.size}let o=this.itemSizeCache.get(i)??n,s=t-o;if(s!==0){let a=this.options.anchorTo===`end`&&this.scrollState?.behavior!==`smooth`&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,c=a?this.getTotalSize():0,l=this.getScrollOffset()+this.scrollAdjustments,u=this.itemSizeCache.has(i)?r+o<=l&&this.scrollDirection!==`backward`:r<l,d=this.scrollState?.behavior!==`smooth`&&(this.shouldAdjustScrollPositionOnItemSizeChange===void 0?u:this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[e]??{index:e,key:i,start:r,size:n,end:r+n,lane:0},s,this));(this.pendingMin===null||e<this.pendingMin)&&(this.pendingMin=e),this.itemSizeCache.set(i,t),this.itemSizeCacheVersion++;let f=!1;a?f=this.applyScrollAdjustment(this.getTotalSize()-c):d&&(f=this.applyScrollAdjustment(s)),this.notify(f)}},this.getVirtualItems=u(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,t)=>{let n=[];for(let r=0,i=e.length;r<i;r++){let i=t[e[r]];n.push(i)}return n},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{let t=this.getMeasurements();if(t.length===0)return;let n=this._flatMeasurements,r=this.options.lanes===1&&n!=null;return d(t[D(0,t.length-1,r?e=>n[e*2]:e=>d(t[e]).start,e)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if(`scrollHeight`in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{let e=this.scrollElement.document.documentElement;return this.options.horizontal?e.scrollWidth-this.scrollElement.innerWidth:e.scrollHeight-this.scrollElement.innerHeight}},this.getVirtualDistanceFromEnd=()=>Math.max(this.getTotalSize()-this.getSize()-this.getScrollOffset(),0),this.getDistanceFromEnd=()=>Math.max(this.getMaxScrollOffset()-this.getScrollOffset(),0),this.isAtEnd=(e=this.options.scrollEndThreshold)=>this.getDistanceFromEnd()<=e,this.getOffsetForAlignment=(e,t,n=0)=>{if(!this.scrollElement)return 0;let r=this.getSize(),i=this.getScrollOffset();t===`auto`&&(t=e>=i+r?`end`:`start`),t===`center`?e+=(n-r)/2:t===`end`&&(e-=r);let a=this.getMaxScrollOffset();return Math.max(Math.min(a,e),0)},this.getOffsetForIndex=(e,t=`auto`)=>{e=Math.max(0,Math.min(e,this.options.count-1));let n=this.getSize(),r=this.getScrollOffset(),i=this.measurementsCache[e];if(!i)return;if(t===`auto`)if(i.end>=r+n-this.options.scrollPaddingEnd)t=`end`;else if(i.start<=r+this.options.scrollPaddingStart)t=`start`;else return[r,t];if(t===`end`&&e===this.options.count-1)return[this.getMaxScrollOffset(),t];let a=t===`end`?i.end+this.options.scrollPaddingEnd:i.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(a,t,i.size),t]},this.scrollToOffset=(e,{align:t=`start`,behavior:n=`auto`}={})=>{this._iosDeferredAdjustment=0;let r=this.getOffsetForAlignment(e,t),i=this.now();this.scrollState={index:null,align:t,behavior:n,startedAt:i,lastTargetOffset:r,stableFrames:0},this._scrollToOffset(r,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToIndex=(e,{align:t=`auto`,behavior:n=`auto`}={})=>{this._iosDeferredAdjustment=0,e=Math.max(0,Math.min(e,this.options.count-1));let r=this.getOffsetForIndex(e,t);if(!r)return;let[i,a]=r,o=this.now();this.scrollState={index:e,align:a,behavior:n,startedAt:o,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollBy=(e,{behavior:t=`auto`}={})=>{let n=this.getScrollOffset()+e,r=this.now();this.scrollState={index:null,align:`start`,behavior:t,startedAt:r,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:t}),this.scheduleScrollReconcile()},this.scrollToEnd=({behavior:e=`auto`}={})=>{if(this.options.count>0){this.scrollToIndex(this.options.count-1,{align:`end`,behavior:e});return}this.scrollToOffset(Math.max(this.getTotalSize()-this.getSize(),0),{behavior:e})},this.getTotalSize=()=>{let e=this.getMeasurements(),t;if(e.length===0)t=this.options.paddingStart;else if(this.options.lanes===1){let n=e.length-1,r=this._flatMeasurements;t=r==null?e[n]?.end??0:r[n*2]+r[n*2+1]}else{let n=Array(this.options.lanes).fill(null),r=e.length-1;for(;r>=0&&n.some(e=>e===null);){let t=e[r];n[t.lane]===null&&(n[t.lane]=t.end),r--}t=Math.max(...n.filter(e=>e!==null))}return Math.max(t-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{let e=[];if(this.itemSizeCache.size===0)return e;let t=this.getMeasurements();for(let n of t)n&&this.itemSizeCache.has(n.key)&&e.push({index:n.index,key:n.key,start:n.start,size:n.size,end:n.end,lane:n.lane});return e},this._scrollToOffset=(e,{adjustments:t,behavior:n})=>{this._intendedScrollOffset=e+(t??0),this.options.scrollToFn(e,{behavior:n,adjustments:t},this)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(e)}applyScrollAdjustment(e,t){return e===0?!1:h()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?(this._iosDeferredAdjustment+=e,!1):(this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=e,behavior:t}),this.scrollOffset!==null&&(this.scrollOffset+=this.scrollAdjustments,this.scrollOffset<0&&(this.scrollOffset=0),this.scrollAdjustments=0),!0)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId??=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()})}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}let e=this.scrollState.index==null?void 0:this.getOffsetForIndex(this.scrollState.index,this.scrollState.align),t=e?e[0]:this.scrollState.lastTargetOffset,n=t!==this.scrollState.lastTargetOffset;if(!n&&f(t,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=1){this.getScrollOffset()!==t&&this._scrollToOffset(t,{adjustments:void 0,behavior:`auto`}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,n){let e=this.getSize()||600,n=Math.abs(t-this.getScrollOffset()),r=this.scrollState.behavior===`smooth`&&n>e;this.scrollState.lastTargetOffset=t,r||(this.scrollState.behavior=`auto`),this._scrollToOffset(t,{adjustments:void 0,behavior:r?`smooth`:`auto`})}this.scheduleScrollReconcile()}},D=(e,t,n,r)=>{for(;e<=t;){let i=(e+t)/2|0,a=n(i);if(a<r)e=i+1;else if(a>r)t=i-1;else return i}return e>0?e-1:0};function O(e,t,n){let r=0;for(;r<=t;){let i=(r+t)/2|0,a=e[i*2];if(a<n)r=i+1;else if(a>n)t=i-1;else return i}return r>0?r-1:0}function k(e,t,n,r,i){let a=e.length-1;if(e.length<=r)return{startIndex:0,endIndex:a};if(r===1&&i!==null){let e=O(i,a,n),r=e,o=n+t;for(;r<a&&i[r*2]+i[r*2+1]<o;)r++;return{startIndex:e,endIndex:r}}let o=D(0,a,t=>e[t].start,n),s=o;if(r===1)for(;s<a&&e[s].end<n+t;)s++;else if(r>1){let i=Array(r).fill(0);for(;s<a&&i.some(e=>e<n+t);){let t=e[s];i[t.lane]=t.end,s++}let c=Array(r).fill(n+t);for(;o>=0&&c.some(e=>e>=n);){let t=e[o];c[t.lane]=t.start,o--}o=Math.max(0,o-o%r),s=Math.min(a,s+(r-1-s%r))}return{startIndex:o,endIndex:s}}var A=typeof document<`u`?s.useLayoutEffect:s.useEffect;function j({useFlushSync:e=!0,directDomUpdates:t=!1,directDomUpdatesMode:n=`transform`,...r}){let i=s.useReducer(e=>e+1,0)[1],a=s.useRef({enabled:t,mode:n,container:null,lastSize:null,lastPositions:new WeakMap,prevRange:null});a.current.enabled=t,a.current.mode=n;let o=e=>{let t=a.current;if(!t.enabled||!t.container)return;let n=e.getTotalSize();if(n!==t.lastSize){t.lastSize=n;let r=e.options.horizontal?`width`:`height`;t.container.style[r]=`${n}px`}},l=e=>{let t=a.current;if(!t.enabled||!t.container)return;o(e);let n=!!e.options.horizontal,r=t.mode===`transform`,i=n?`left`:`top`,s=e.options.scrollMargin,c=e.getVirtualItems();for(let a of c){let o=a.start-s,c=e.elementsCache.get(a.key);c&&t.lastPositions.get(c)!==o&&(t.lastPositions.set(c,o),r?c.style.transform=n?`translate3d(${o}px, 0, 0)`:`translate3d(0, ${o}px, 0)`:c.style[i]=`${o}px`)}},u={...r,onChange:(t,n)=>{var o;let s=a.current,u=!0;if(s.enabled){l(t);let e=t.range,n=s.prevRange;u=!n||n.isScrolling!==t.isScrolling||n.startIndex!==e?.startIndex||n.endIndex!==e?.endIndex,u&&(s.prevRange=e?{startIndex:e.startIndex,endIndex:e.endIndex,isScrolling:t.isScrolling}:null)}u&&(e&&n?(0,c.flushSync)(i):i()),(o=r.onChange)==null||o.call(r,t,n)}},[d]=s.useState(()=>{let e=new E(u);return Object.assign(e,{containerRef:t=>{let n=a.current;if(n.container=t,n.lastSize=null,t&&n.enabled){let r=e.getTotalSize();n.lastSize=r;let i=e.options.horizontal?`width`:`height`;t.style[i]=`${r}px`}}})});return d.setOptions(u),A(()=>d._didMount(),[]),A(()=>(o(d),d._willUpdate())),A(()=>{l(d)}),d}function M(e){return j({observeElementRect:y,observeElementOffset:C,scrollToFn:T,...e})}function N({items:e,totalItems:t,parentRef:n,hasNextPage:r,isFetchingNextPage:i,fetchNextPage:o,estimateSize:c=()=>100,overscan:l=5,getScrollElement:u=a}){let d=M({count:t,getScrollElement:()=>u(n.current),estimateSize:c,overscan:l}),f=d.getVirtualItems(),p=f.length>0?(f.at(0)?.start??0)-d.options.scrollMargin:0,m=f.length>0?d.getTotalSize()-(f.at(-1)?.end??0):0,h=f.map(t=>({virtualItem:t,key:t.key,item:e[t.index],props:{ref:d.measureElement,"data-index":t.index}})),g=h.at(-1)&&!h.at(-1)?.item;return(0,s.useEffect)(()=>{r&&g&&!i&&o()},[r,g,i,o]),{visibleItems:h,virtualizer:d,spaceBefore:p,spaceAfter:m}}var P=1e3,F=`ghostVirtualListWindow`;function I({totalItems:e,unlockedItemCount:t}){let n=Math.min(e,t);return{visibleItemCount:n,canLoadMore:e>n}}function L(e,t){return e+t}function R(e,t){return`${e}::${t}`}function z(e,t,n){let r=e?.[F];if(!r||typeof r!=`object`)return n;let i=r[t];return typeof i!=`number`||!Number.isFinite(i)?n:Math.max(1,Math.floor(i))}function B(e,t,n){if(typeof window>`u`)return;let r=e?.[F],i={...e??{},[F]:{...r&&typeof r==`object`?r:{},[t]:n}};window.history.replaceState(i,``)}function V(){if(!(typeof window>`u`))return window.history.state}function H(e,{resetKey:t,windowSize:n=P}={}){let{key:r,pathname:a,search:o}=i(),c=R(a,t??o),[l,u]=(0,s.useState)(()=>z(V(),c,n)),d=(0,s.useRef)(c);(0,s.useEffect)(()=>{if(d.current!==c){d.current=c,u(z(V(),c,n));return}B(V(),c,l)},[c,r,l,n]);let{visibleItemCount:f,canLoadMore:p}=I({totalItems:e,unlockedItemCount:l});return{visibleItemCount:f,canLoadMore:p,loadMore:()=>u(e=>L(e,n))}}var U=new Map,W=`ghostVirtualListScrollPosition`,G=150,K=500;function q(){if(!(typeof window>`u`))return window.history.state}function J(e){let t=e?.key;if(typeof t==`string`||typeof t==`number`)return String(t);let n=e?.idx;if(typeof n==`number`)return String(n)}function Y(e,t){let n=J(e);if(n)return`${n}::${t}`}function X(e,t){let n=e?.[W];if(!n||typeof n!=`object`)return;let r=n[t];if(typeof r==`number`)return r}function Z(e,t,n){if(typeof window>`u`)return;let r=e?.[W],i={...e??{},[W]:{...r&&typeof r==`object`?r:{},[t]:n}};window.history.replaceState(i,``)}function Q({parentRef:e,enabled:t=!0,isLoading:n=!1,getScrollElement:r=a}){let o=i(),[c,l]=(0,s.useState)(null),u=(0,s.useRef)(null),d=(0,s.useRef)(0),f=(0,s.useRef)(0),p=(0,s.useRef)(0),m=(0,s.useRef)(null),h=(0,s.useRef)(new Set),g=o.pathname+o.search;(0,s.useEffect)(()=>{if(!t||!e.current)return;let n=r(e.current);l(n)},[t,e,r]),(0,s.useEffect)(()=>{if(!t||!c)return;let e=q(),n=J(e),r=Y(e,g),i=()=>{m.current!==null&&(window.clearTimeout(m.current),m.current=null)},a=e=>{r&&U.set(r,e);let t=q();J(t)===n&&Z(t,g,e),f.current=Date.now(),p.current=e},o=({persistToHistory:e=!0}={})=>{if(i(),!e){let e=d.current;r&&U.set(r,e),f.current=Date.now(),p.current=e;return}a(d.current)},s=()=>{let e=Date.now();if(Math.abs(d.current-p.current)>=K||e-f.current>=G){i(),a(d.current);return}m.current===null&&(m.current=window.setTimeout(()=>{m.current=null,a(d.current)},G))},l=()=>{d.current=c.scrollTop,s()},u=()=>{o()};return d.current=c.scrollTop,c.addEventListener(`scroll`,l),window.addEventListener(`pagehide`,u),()=>{o({persistToHistory:!1}),c.removeEventListener(`scroll`,l),window.removeEventListener(`pagehide`,u)}},[t,g,c]),(0,s.useEffect)(()=>{let e=q(),r=Y(e,g),i=(r?U.get(r):void 0)??X(e,g);if(!(!t||!c||n)){if(i!==void 0&&u.current!==g){u.current=g;let e=0,t=()=>{for(let e of h.current)window.clearTimeout(e);h.current.clear()},n=(e,t)=>{let n=window.setTimeout(()=>{h.current.delete(n),e()},t);h.current.add(n)},r=()=>{if(e+=1,!c)return;let t=c.scrollTop,a=c.scrollHeight-c.clientHeight;if(i>a&&e<20){n(r,100);return}Math.abs(i-t)>5&&(c.scrollTop=Math.min(i,a))};return n(r,150),()=>t()}u.current=g}},[t,g,c,n])}var $=r(),ee=({isLoading:e,onClick:t,label:n=`Load more`,loadingLabel:r=`Loading more...`,className:i=`flex justify-center px-4 py-6`})=>{let a=!!e;return(0,$.jsx)(`div`,{className:i,children:(0,$.jsx)(o,{disabled:a,variant:`outline`,onClick:t,children:a?r:n})})};export{N as i,Q as n,H as r,ee as t};
|