ghost 6.64.0 → 6.65.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/bin/create-migration.js +15 -0
- package/components/tryghost-adapter-base-scheduling-0.2.4.tgz +0 -0
- package/components/tryghost-api-framework-0.0.0.tgz +0 -0
- package/components/tryghost-i18n-0.0.0.tgz +0 -0
- package/components/tryghost-kg-default-cards-10.3.6.tgz +0 -0
- package/components/tryghost-kg-lexical-html-renderer-1.5.1.tgz +0 -0
- package/components/tryghost-metafield-types-0.0.0.tgz +0 -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 +15 -2
- package/content/themes/casper/assets/js/init.js +37 -9
- package/content/themes/casper/package.json +8 -8
- 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 +14 -1
- package/content/themes/source/assets/js/main.js +24 -4
- package/content/themes/source/package.json +7 -7
- package/core/boot.js +22 -16
- package/core/bridge.js +1 -1
- package/core/built/admin/assets/Combination-DQ6f9A5P.js +41 -0
- package/core/built/admin/assets/{PolarAngleAxis-a81ieQUO.js → PolarAngleAxis-BBaU7PRV.js} +1 -1
- package/core/built/admin/assets/RadialBarChart-Bp20JPnA.js +1 -0
- package/core/built/admin/assets/{about-39CAfroa.js → about-Dp43j18M.js} +1 -1
- package/core/built/admin/assets/accordion-h62UzFhj.js +1 -0
- package/core/built/admin/assets/account-migration-CBTbtX6Q.js +1 -0
- package/core/built/admin/assets/action-list-DC9QpX-l.js +1 -0
- package/core/built/admin/assets/activitypub/{account-migration-KA6Jjf9L.js → account-migration-B1DUZS4Q.js} +8 -8
- package/core/built/admin/assets/activitypub/activitypub.js +24 -11
- package/core/built/admin/assets/activitypub/avatar-CRGud8yf.js +153 -0
- package/core/built/admin/assets/activitypub/{avatar-flipboard-csQaNeYK.js → avatar-flipboard-BZNFAXfm.js} +3 -3
- package/core/built/admin/assets/activitypub/{bluesky-sharing-C7nTDMvw.js → bluesky-sharing-Cg_v-LwS.js} +30 -31
- package/core/built/admin/assets/activitypub/{chunk-KS7C4IRE-Ck3O4oo2.js → chunk-KS7C4IRE-CTUL98Lc.js} +2498 -1885
- package/core/built/admin/assets/activitypub/{content-formatters-CLcjaBwV.js → content-formatters-D7GWP7nH.js} +23 -24
- package/core/built/admin/assets/activitypub/{copy-DcOh8kXw.js → copy-CgzTvoeR.js} +2 -2
- package/core/built/admin/assets/activitypub/{domain-fZ-X8i4-.js → domain-C3G_nkHU.js} +46 -46
- package/core/built/admin/assets/activitypub/{edit-profile-BqMLQV88.js → edit-profile-C8cCY-AK.js} +927 -928
- package/core/built/admin/assets/activitypub/{explore-B4yPoP8E.js → explore-NlDT4inq.js} +11 -11
- package/core/built/admin/assets/activitypub/{feed-BRC_mvAe.js → feed-DF22jCTV.js} +10 -10
- package/core/built/admin/assets/activitypub/{field-COacNgOt.js → field-95-iuTte.js} +4 -4
- package/core/built/admin/assets/activitypub/{hash-C7u-irQQ.js → hash-R7LMLnhY.js} +2 -2
- package/core/built/admin/assets/activitypub/{inbox-CbTTdDQ3.js → inbox-DUJUiV6x.js} +2 -2
- package/core/built/admin/assets/activitypub/{inbox-BW-yvUoN.js → inbox-DerExBzA.js} +416 -414
- package/core/built/admin/assets/activitypub/{label-kPMmYI7l.js → label-EwCn1QYc.js} +4 -4
- package/core/built/admin/assets/activitypub/layout-Dy6NnW1G.js +1 -0
- package/core/built/admin/assets/activitypub/{moderation-CuidJzc0.js → moderation-BSkfiVYo.js} +73 -75
- package/core/built/admin/assets/activitypub/{note-CAMRRSqD.js → note-DOnAJTXK.js} +9 -9
- package/core/built/admin/assets/activitypub/{notifications-BmNlXGgp.js → notifications-DZc6XTjG.js} +27 -27
- package/core/built/admin/assets/activitypub/{onboarding-Dmun9jr_.js → onboarding-8vEIwYTH.js} +3 -3
- package/core/built/admin/assets/activitypub/{onboarding-Bqg7fh_L.js → onboarding-DYVqbNmp.js} +2 -2
- package/core/built/admin/assets/activitypub/{preferences--oH19wf9.js → preferences-DDok6F2N.js} +1418 -1390
- package/core/built/admin/assets/activitypub/{profile-DH_tQx2D.js → profile-DjVa2hUk.js} +254 -255
- package/core/built/admin/assets/activitypub/{reply-Cap9PxSH.js → reply-DtXBpHxu.js} +2 -2
- package/core/built/admin/assets/activitypub/routes-Cw302e1c.js +4946 -0
- package/core/built/admin/assets/activitypub/{separator-CAxxu8VV.js → separator-FpRpVDd3.js} +8 -9
- package/core/built/admin/assets/activitypub/settings-yK-puALn.js +314 -0
- package/core/built/admin/assets/activitypub/{site-BYps63oh.js → site-CHw0R2PA.js} +2 -2
- package/core/built/admin/assets/activitypub/{step-1-CKjR2KAm.js → step-1-737bnvxk.js} +7 -7
- package/core/built/admin/assets/activitypub/{step-2-B6PKfOUQ.js → step-2-DBaIsAsM.js} +7 -7
- package/core/built/admin/assets/activitypub/{step-3-C-qBbcUo.js → step-3-BBmy9m9V.js} +23 -23
- package/core/built/admin/assets/activitypub/tabs-LQ2xirdm.js +1101 -0
- package/core/built/admin/assets/activitypub/{topic-filter-DsUOuu0k.js → topic-filter-75Nu0CKj.js} +4 -4
- package/core/built/admin/assets/activitypub/{use-activity-pub-queries-CX9snsLs.js → use-activity-pub-queries-CYI2QJMs.js} +58 -58
- package/core/built/admin/assets/activitypub/{use-navigate-with-base-path-DsJTGDSS.js → use-navigate-with-base-path-B4jZ8hyg.js} +3924 -1403
- package/core/built/admin/assets/activitypub/{use-reply-chain-data-AJi9zkzm.js → use-reply-chain-data-BHmFxc3U.js} +6 -6
- package/core/built/admin/assets/activitypub/users-CSjOwpT9.js +886 -0
- package/core/built/admin/assets/activitypub/{x-DR8AT3-4.js → x-B9ptWCds.js} +2 -2
- package/core/built/admin/assets/{add-integration-modal-B12oRifD.js → add-integration-modal-BwePhq95.js} +1 -1
- package/core/built/admin/assets/add-newsletter-modal-Zv0I7Msm.js +1 -0
- package/core/built/admin/assets/{add-recommendation-modal-CJf92edY.js → add-recommendation-modal-cdLv0wHy.js} +1 -1
- package/core/built/admin/assets/analytics-DY8_SaP7.js +1 -0
- package/core/built/admin/assets/announcement-bar-modal-C-2yWwag.js +1 -0
- package/core/built/admin/assets/api-keys-BHKATUqQ.js +1 -0
- package/core/built/admin/assets/{audience-6GXevic-.js → audience-wRcSN0jV.js} +1 -1
- package/core/built/admin/assets/{automated-emails-DJQ4uNZo.js → automated-emails-CzUa3v4d.js} +1 -1
- package/core/built/admin/assets/automations-DupSsSOr.js +1 -0
- package/core/built/admin/assets/badge-CI1Z0xyG.js +1 -0
- package/core/built/admin/assets/bluesky-sharing-B8PC1SBj.js +1 -0
- package/core/built/admin/assets/box-LUuYRT-1.js +1 -0
- package/core/built/admin/assets/brand-icon-CrmbX86T.js +1 -0
- package/core/built/admin/assets/breadcrumb-DDDpzLyo.js +1 -0
- package/core/built/admin/assets/button-D414TI3B.js +1 -0
- package/core/built/admin/assets/calendar-Cp_opo3i.js +1 -0
- package/core/built/admin/assets/card-C2dfd5u0.js +1 -0
- package/core/built/admin/assets/chart-B_UNLXse.js +63 -0
- package/core/built/admin/assets/chart-helpers-Czu_9QpJ.js +1 -0
- package/core/built/admin/assets/checkbox-CFFqf0Nh.js +1 -0
- package/core/built/admin/assets/{chunk.368.22ce1b732c0b40abd3f1.js → chunk.201.6961b57ed7a281ac193e.js} +23 -19
- package/core/built/admin/assets/chunk.524.0b850e72ec49a0fa3882.js +25 -0
- package/core/built/admin/assets/chunk.582.db2ae9e968256e8d58ac.js +27 -0
- package/core/built/admin/assets/code-editor-view-Bd_nnHKk.js +1 -0
- package/core/built/admin/assets/code-editor-view-BeU3Yf9M.js +1 -0
- package/core/built/admin/assets/color-picker-Bzm1V7qg.js +3 -0
- package/core/built/admin/assets/color-picker-field-DP0moHz9.js +1 -0
- package/core/built/admin/assets/combobox-6_ruuTuj.js +1 -0
- package/core/built/admin/assets/command-B5wfm6pd.js +1 -0
- package/core/built/admin/assets/comments-BB26dUSl.js +1 -0
- package/core/built/admin/assets/confirmation-context-znVJD4pX.js +1 -0
- package/core/built/admin/assets/container-CHHif8km.js +1 -0
- package/core/built/admin/assets/{content-api-modal-0ZjuLcQ8.js → content-api-modal-DOHwl0yZ.js} +1 -1
- package/core/built/admin/assets/context-menu-BpY46Dlb.js +1 -0
- package/core/built/admin/assets/copy-field-DRBx6Ady.js +1 -0
- package/core/built/admin/assets/create-ghost-browse-value-source-eIXo5Qws.js +1 -0
- package/core/built/admin/assets/custom-field-type-option-DrSlETOI.js +1 -0
- package/core/built/admin/assets/custom-integration-modal-Dgo425Ec.js +1 -0
- package/core/built/admin/assets/data-list-DM8yqpXi.js +1 -0
- package/core/built/admin/assets/date-range-select-DdC23c13.js +1 -0
- package/core/built/admin/assets/design-and-theme-modal-CbSu9IT4.js +2 -0
- package/core/built/admin/assets/detail-page-CN4NdhpV.js +1 -0
- package/core/built/admin/assets/dirty-confirm-dialog-BT_Vq9TD.js +1 -0
- package/core/built/admin/assets/{disabled-sources-indicator-CLZhMv8J.js → disabled-sources-indicator-C5xtW0Q2.js} +1 -1
- package/core/built/admin/assets/dist-B40T-RCQ.js +1 -0
- package/core/built/admin/assets/dist-CrlaEoaK.js +1 -0
- package/core/built/admin/assets/domain-BPReCZa8.js +1 -0
- package/core/built/admin/assets/dropzone-B2auMkf2.js +5 -0
- package/core/built/admin/assets/edit-profile-B7XTBzKe.js +1 -0
- package/core/built/admin/assets/editor-BcaC9dqm.js +8 -0
- package/core/built/admin/assets/editor-screen-FuMpItC8.js +27 -0
- package/core/built/admin/assets/email-sending-status-provider-9d81o1C2.js +1 -0
- package/core/built/admin/assets/embed-signup-form-modal-CbVbMsxl.js +8 -0
- package/core/built/admin/assets/empty-indicator-CSQts7GV.js +1 -0
- package/core/built/admin/assets/explore-DbSXFTJN.js +1 -0
- package/core/built/admin/assets/feature-image-placeholder-DFXA4vfJ.js +1 -0
- package/core/built/admin/assets/feed-W7RlF-Gp.js +1 -0
- package/core/built/admin/assets/field-BXEh3ptU.js +1 -0
- package/core/built/admin/assets/filter-sources-DHK2IoCk.js +1 -0
- package/core/built/admin/assets/filters-0SYNTqyQ.js +1 -0
- package/core/built/admin/assets/filters-DTtZKQyq.js +1 -0
- package/core/built/admin/assets/{first-promoter-modal-wr73Dldc.js → first-promoter-modal-DcoN_OXu.js} +1 -1
- package/core/built/admin/assets/{ghost-a1e6e172c6917e8ef8fa6b0007756d9b.js → ghost-25495154132af7305cb7b646fd83f48f.js} +562 -514
- package/core/built/admin/assets/gift-link-modal-BX-Q1TOk.js +1 -0
- package/core/built/admin/assets/grid-BEUIDQX7.js +1 -0
- package/core/built/admin/assets/growth-G6PLO4aF.js +1 -0
- package/core/built/admin/assets/growth-tkD-fBOY.js +3 -0
- package/core/built/admin/assets/heading-ih-fOVqF.js +1 -0
- package/core/built/admin/assets/history-modal-Ca-gStoq.js +1 -0
- package/core/built/admin/assets/html-field-B3CrKV9Y.js +1 -0
- package/core/built/admin/assets/images-H-BIm8OQ.js +1 -0
- package/core/built/admin/assets/{inbox-DgSZ6w2p.js → inbox-DBbDVMPz.js} +14 -14
- package/core/built/admin/assets/index-DOF2jDq0.js +4 -0
- package/core/built/admin/assets/index-JrrNchW1.css +2 -0
- package/core/built/admin/assets/input-group-CvH-3d3F.js +1 -0
- package/core/built/admin/assets/input-surface-CL23Mlh8.js +1 -0
- package/core/built/admin/assets/integration-header-C7GXGis_.js +1 -0
- package/core/built/admin/assets/invite-user-modal-EJ2_6RpV.js +1 -0
- package/core/built/admin/assets/isPlainObject-BzzgUf1E.js +1 -0
- package/core/built/admin/assets/{koenig-lexical-CXVgQFUk.js → koenig-lexical-Dkwee5FG.js} +1 -1
- package/core/built/admin/assets/koenig-loader-BzXCXHoA.js +2 -0
- package/core/built/admin/assets/kpi-card-iCDUTgOR.js +1 -0
- package/core/built/admin/assets/kpi-card-jTnpLKGr.js +1 -0
- package/core/built/admin/assets/kpi-helpers-Criu0YAf.js +1 -0
- package/core/built/admin/assets/kpi-tabs-DbOmmyOo.js +1 -0
- package/core/built/admin/assets/label-Du0yqMqL.js +1 -0
- package/core/built/admin/assets/label-picker-Bq1XXr1D.js +1 -0
- package/core/built/admin/assets/{labels-KMkFoRG6.js → labels-0x2NfLtC.js} +1 -1
- package/core/built/admin/assets/layout-Ckwzsnsu.js +1 -0
- package/core/built/admin/assets/lib-CCz2mjm8.js +2 -0
- package/core/built/admin/assets/link-helpers-o9GgBTni.js +1 -0
- package/core/built/admin/assets/{links-FwNCVyVe.js → links-Ctujreuh.js} +1 -1
- package/core/built/admin/assets/list-page-CH_wnDC3.js +1 -0
- package/core/built/admin/assets/member-activity-CsAh6MxK.js +1 -0
- package/core/built/admin/assets/member-activity-feed-0ytsQbtY.js +1 -0
- package/core/built/admin/assets/member-custom-fields-CTFGnnYv.js +1 -0
- package/core/built/admin/assets/member-detail-QU3vB1ML.js +1 -0
- package/core/built/admin/assets/members-CtMVO_AB.js +4 -0
- package/core/built/admin/assets/modal-page-8Ipfl51B.js +1 -0
- package/core/built/admin/assets/moderation-B8VtA-W0.js +1 -0
- package/core/built/admin/assets/multi-select-combobox-_9wEYmGv.js +1 -0
- package/core/built/admin/assets/navigation-modal-CGcjJvkc.js +1 -0
- package/core/built/admin/assets/newsletter-BpHjjqmq.js +1 -0
- package/core/built/admin/assets/newsletter-detail-modal-DzTbGOyo.js +1 -0
- package/core/built/admin/assets/newsletter-emails-BMKH4Osp.js +1 -0
- package/core/built/admin/assets/newsletters-BxC84_cL.js +1 -0
- package/core/built/admin/assets/note-BPtEzzZS.js +1 -0
- package/core/built/admin/assets/notifications-ng3ulEdp.js +1 -0
- package/core/built/admin/assets/offers-container-modal-CwqnRa3T.js +1 -0
- package/core/built/admin/assets/onboarding-route-CplZzd7F.js +1 -0
- package/core/built/admin/assets/overview-B0yD9OoX.js +1 -0
- package/core/built/admin/assets/overview-C4eJzQqi.js +1 -0
- package/core/built/admin/assets/page-header-CdCpekG9.js +1 -0
- package/core/built/admin/assets/pagemenu-CKQD9hoP.js +1 -0
- package/core/built/admin/assets/pages-route-CKsnxIvw.js +1 -0
- package/core/built/admin/assets/{pintura-modal-BljM7hf8.js → pintura-modal-C5jzeyGk.js} +1 -1
- package/core/built/admin/assets/portal-frame-DYo0bh0E.js +1 -0
- package/core/built/admin/assets/portal-modal-C0d8xjKa.js +1 -0
- package/core/built/admin/assets/post-analytics-C5C7IyAm.js +1 -0
- package/core/built/admin/assets/post-analytics-header-DKWHwoK2.js +1 -0
- package/core/built/admin/assets/{post-analytics-provider-CgreZDjS.js → post-analytics-provider-BqCPPxmW.js} +1 -1
- package/core/built/admin/assets/post-share-modal-wxmqbAv_.js +1 -0
- package/core/built/admin/assets/posts-list-screen-B978ZO0R.js +2 -0
- package/core/built/admin/assets/posts-route-CDqxKazl.js +1 -0
- package/core/built/admin/assets/preferences-CnejTRc4.js +5 -0
- package/core/built/admin/assets/preview-chrome-C7yZWVLZ.js +1 -0
- package/core/built/admin/assets/preview-modal-CFUxUGHp.js +1 -0
- package/core/built/admin/assets/profile-ClRGiOqA.js +1 -0
- package/core/built/admin/assets/radio-group-CTmLo0h9.js +1 -0
- package/core/built/admin/assets/router-provider-DDZvgS3V.js +1 -0
- package/core/built/admin/assets/select-D_4xWFYv.js +1 -0
- package/core/built/admin/assets/settings-BRl7-7a9.js +1 -0
- package/core/built/admin/assets/settings-BoQcPa-y.js +4 -0
- package/core/built/admin/assets/settings-breadcrumbs-C9Yxl81q.js +1 -0
- package/core/built/admin/assets/{dist-BXHrDV19.js → shade-scope-Cccj-c7I-D0XwkdKQ.js} +5 -3
- package/core/built/admin/assets/share-modal-DBqZobuR.js +1 -0
- package/core/built/admin/assets/simple-pagination-D5t_ox6x.js +1 -0
- package/core/built/admin/assets/skeleton-CPcTiTSX.js +1 -0
- package/core/built/admin/assets/{slack-modal-D7W_fNON.js → slack-modal-BF9ex8cd.js} +1 -1
- package/core/built/admin/assets/sort-button-C0EXGjnS.js +1 -0
- package/core/built/admin/assets/{source-icon-CQboPZQ3.js → source-icon-BzzftCQ2.js} +1 -1
- package/core/built/admin/assets/stats-view-CzpGoHzF.js +1 -0
- package/core/built/admin/assets/{step-1-BKhjy0PV.js → step-1-CBUYUPPF.js} +1 -1
- package/core/built/admin/assets/{step-2-PxA1OM7R.js → step-2-CEIXUwQa.js} +1 -1
- package/core/built/admin/assets/{step-3-BJbAiq16.js → step-3-C1HA5i1N.js} +2 -2
- package/core/built/admin/assets/stripe-button-DMFsLs80.js +1 -0
- package/core/built/admin/assets/stripe-connect-modal-CEvxCUTv.js +1 -0
- package/core/built/admin/assets/switch-DoOJF2yg.js +1 -0
- package/core/built/admin/assets/table-BDYbUHJz.js +1 -0
- package/core/built/admin/assets/tabs-BZyz4ZCH.js +1 -0
- package/core/built/admin/assets/tag-detail-CFzaz_9E.js +2 -0
- package/core/built/admin/assets/tag-picker-BKUCZuRc.js +1 -0
- package/core/built/admin/assets/tags-Bs1FiD7m.js +1 -0
- package/core/built/admin/assets/{testimonials-modal-Dkt6ODLW.js → testimonials-modal-CVm0_7E-.js} +1 -1
- package/core/built/admin/assets/text-BLI0C8Mc.js +1 -0
- package/core/built/admin/assets/textarea-C5qolByg.js +1 -0
- package/core/built/admin/assets/tier-detail-modal-Cmwzi-e7.js +1 -0
- package/core/built/admin/assets/toggle-group-BTL1QsWY.js +1 -0
- package/core/built/admin/assets/{topic-filter-DVOe3D-b.js → topic-filter-BMjhquv7.js} +1 -1
- package/core/built/admin/assets/transistor-modal-hMv53jF8.js +1 -0
- package/core/built/admin/assets/trend-badge-1w_HEzkG.js +1 -0
- package/core/built/admin/assets/{unsplash-modal-DXt7Brum.js → unsplash-modal-jzC8lEB2.js} +1 -1
- package/core/built/admin/assets/use-analytics-data-B3lGOxsC.js +1 -0
- package/core/built/admin/assets/use-availability-DnKqOyqd.js +1 -0
- package/core/built/admin/assets/{use-check-theme-limit-error-JD-J5aaZ.js → use-check-theme-limit-error-C1tc2P4N.js} +2 -2
- package/core/built/admin/assets/use-filter-params-DU-aiaTb.js +1 -0
- package/core/built/admin/assets/{use-filterable-api-CEMSAYPg.js → use-filterable-api-CxCrnPxG.js} +1 -1
- package/core/built/admin/assets/use-growth-stats-E13rMQUE.js +1 -0
- package/core/built/admin/assets/use-limiter-DlL7au90.js +19 -0
- package/core/built/admin/assets/{use-navigate-with-base-path-88EQpw2k.js → use-navigate-with-base-path-BzgNwMAx.js} +1 -1
- package/core/built/admin/assets/{use-pintura-config-BmU45Ruy.js → use-pintura-config-CtEV1JQY.js} +1 -1
- package/core/built/admin/assets/{use-pintura-editor-Bz2bZ4iT.js → use-pintura-editor-CaxE64kD.js} +1 -1
- package/core/built/admin/assets/use-reply-chain-data-BST2OgCM.js +1 -0
- package/core/built/admin/assets/use-sending-eta-DR9ueMH8.js +1 -0
- package/core/built/admin/assets/use-setting-group-ldtX1Vsk.js +1 -0
- package/core/built/admin/assets/use-settings-navigation-CzGU4sus.js +1 -0
- package/core/built/admin/assets/use-staff-users-DoeXaPsb.js +1 -0
- package/core/built/admin/assets/use-tinybird-query-BaBNCaj0.js +1 -0
- package/core/built/admin/assets/{use-tinybird-token-Lk1RSn0t.js → use-tinybird-token-CnZ19NDf.js} +1 -1
- package/core/built/admin/assets/{use-url-input-DpmbDppC.js → use-url-input-C5KHJw79.js} +1 -1
- package/core/built/admin/assets/user-detail-modal-Dm0KfPeR.js +1 -0
- package/core/built/admin/assets/{vendor-2dd263291938d407802568d3357ec69e.js → vendor-97e91ff8dd1457c668f9ef103ee1a77b.js} +2748 -2977
- package/core/built/admin/assets/virtual-list-tAuPUICw.js +1 -0
- package/core/built/admin/assets/web-BQlKcW2x.js +2 -0
- package/core/built/admin/assets/web-NTT5DkEz.js +1 -0
- package/core/built/admin/assets/{zapier-modal-BafLUO4R.js → zapier-modal-DsHG9Oev.js} +1 -1
- package/core/built/admin/index.html +22 -24
- package/core/frontend/apps/private-blogging/index.js +2 -2
- package/core/frontend/apps/private-blogging/lib/middleware.js +1 -1
- package/core/frontend/apps/private-blogging/lib/router.js +1 -1
- package/core/frontend/helpers/cancel_link.js +3 -3
- package/core/frontend/helpers/content.js +2 -2
- package/core/frontend/helpers/content_api_url.js +1 -1
- package/core/frontend/helpers/date.js +1 -1
- package/core/frontend/helpers/foreach.js +5 -5
- package/core/frontend/helpers/get.js +7 -4
- package/core/frontend/helpers/ghost_head.js +2 -2
- package/core/frontend/helpers/has.js +1 -3
- package/core/frontend/helpers/link.js +7 -7
- package/core/frontend/helpers/link_class.js +2 -2
- package/core/frontend/helpers/navigation.js +1 -2
- package/core/frontend/helpers/recommendations.js +5 -6
- package/core/frontend/helpers/tiers.js +1 -1
- package/core/frontend/helpers/total_members.js +1 -1
- package/core/frontend/helpers/total_paid_members.js +1 -1
- package/core/frontend/meta/author-url.js +1 -1
- package/core/frontend/meta/modified-date.js +1 -1
- package/core/frontend/meta/published-date.js +1 -1
- package/core/frontend/meta/schema.js +3 -8
- package/core/frontend/meta/structured-data.js +1 -2
- package/core/frontend/services/assets-minification/minifier.js +1 -1
- package/core/frontend/services/data/entry-lookup.js +1 -1
- package/core/frontend/services/data/fetch-data.js +2 -2
- package/core/frontend/services/rendering/format-response.js +1 -1
- package/core/frontend/services/rendering/renderer.js +3 -0
- package/core/frontend/services/rendering/templates.js +1 -1
- package/core/frontend/services/routing/controllers/static.js +1 -1
- package/core/frontend/services/routing/parent-router.js +1 -1
- package/core/frontend/services/routing/registry.js +1 -1
- package/core/frontend/services/sitemap/base-site-map-generator.js +68 -97
- package/core/frontend/services/sitemap/site-map-index-generator.js +16 -21
- package/core/frontend/services/sitemap/site-map-manager.js +82 -43
- package/core/frontend/services/sitemap/sitemap-xml.js +72 -0
- package/core/frontend/services/theme-engine/handlebars/utils.js +8 -8
- package/core/frontend/services/theme-engine/i18n/i18n.js +4 -5
- package/core/frontend/services/theme-engine/middleware/update-global-template-options.js +1 -1
- package/core/frontend/services/theme-engine/preview.js +1 -1
- package/core/frontend/utils/member-count.js +2 -2
- package/core/frontend/web/routers/serve-public-file.js +1 -1
- package/core/server/adapters/scheduling/README.md +4 -0
- package/core/server/adapters/scheduling/get-scheduler-idempotency-key.js +21 -0
- package/core/server/adapters/storage/LocalStorageBase.js +2 -1
- package/core/server/api/endpoints/automated-emails.js +8 -2
- package/core/server/api/endpoints/db.js +1 -1
- package/core/server/api/endpoints/emails.js +3 -3
- package/core/server/api/endpoints/mail.js +1 -1
- package/core/server/api/endpoints/member-signin-urls.js +1 -1
- package/core/server/api/endpoints/members.js +3 -3
- package/core/server/api/endpoints/oembed.js +1 -1
- package/core/server/api/endpoints/posts.js +1 -1
- package/core/server/api/endpoints/settings.js +2 -2
- package/core/server/api/endpoints/themes.js +5 -5
- package/core/server/api/endpoints/utils/serializers/input/pages.js +2 -2
- package/core/server/api/endpoints/utils/serializers/input/posts.js +2 -2
- package/core/server/api/endpoints/utils/serializers/input/tags.js +1 -1
- package/core/server/api/endpoints/utils/serializers/input/utils/slug-filter-order.js +4 -4
- package/core/server/api/endpoints/utils/serializers/output/mappers/comments.js +8 -5
- package/core/server/api/endpoints/utils/serializers/output/mappers/posts.js +1 -1
- package/core/server/api/endpoints/utils/serializers/output/pages.js +4 -4
- package/core/server/api/endpoints/utils/serializers/output/posts.js +4 -4
- package/core/server/api/endpoints/utils/serializers/output/search-index.js +11 -11
- package/core/server/api/endpoints/utils/serializers/output/settings.js +1 -1
- package/core/server/api/endpoints/utils/serializers/output/utils/extra-attrs.js +3 -3
- package/core/server/api/endpoints/utils/validators/input/automated_emails.js +23 -33
- package/core/server/api/endpoints/utils/validators/input/settings.js +3 -3
- package/core/server/data/exporter/exporter.js +1 -2
- package/core/server/data/exporter/table-lists.js +1 -0
- package/core/server/data/importer/handlers/image.js +1 -2
- package/core/server/data/importer/handlers/json.js +1 -3
- package/core/server/data/importer/handlers/markdown.js +4 -8
- package/core/server/data/importer/import-manager.js +1 -1
- package/core/server/data/importer/importers/content-file-importer.js +4 -8
- package/core/server/data/importer/importers/data/base.js +10 -10
- package/core/server/data/importer/importers/data/custom-theme-settings-importer.js +1 -1
- package/core/server/data/importer/importers/data/data-importer.js +3 -4
- package/core/server/data/importer/importers/data/posts-importer.js +10 -10
- package/core/server/data/importer/importers/data/products-importer.js +3 -3
- package/core/server/data/importer/importers/data/settings-importer.js +2 -2
- package/core/server/data/importer/importers/data/stripe-prices-importer.js +1 -1
- package/core/server/data/importer/importers/data/stripe-products-importer.js +1 -1
- package/core/server/data/importer/importers/data/tags-importer.js +1 -1
- package/core/server/data/importer/importers/data/users-importer.js +2 -2
- package/core/server/data/importer/importers/json-to-html.js +12 -9
- package/core/server/data/migrations/versions/5.0/2022-05-11-13-12-rename-settings.js +1 -1
- package/core/server/data/migrations/versions/6.65/2026-09-16-15-35-26-add-members-metafield-change-events.js +17 -0
- package/core/server/data/schema/fixtures/fixture-manager.js +3 -3
- package/core/server/data/schema/index.js +1 -1
- package/core/server/data/schema/schema.js +26 -0
- package/core/server/data/schema/validator.js +96 -123
- package/core/server/data/seeders/importers/email-recipients-importer.js +2 -2
- package/core/server/data/seeders/importers/members-login-events-importer.js +1 -1
- package/core/server/data/seeders/importers/members-newsletters-importer.js +1 -1
- package/core/server/data/seeders/importers/members-paid-subscription-events-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 +2 -2
- package/core/server/data/seeders/importers/members-subscription-created-events-importer.js +1 -1
- package/core/server/data/tinybird/pipes/mv_hits.pipe +25 -20
- package/core/server/data/tinybird/scripts/docker-analytics-manager.js +2 -2
- package/core/server/ghost-server.js +1 -19
- package/core/server/lib/image/image-size.js +1 -3
- package/core/server/lib/request-external.js +53 -117
- package/core/server/models/base/plugins/actions.js +2 -3
- package/core/server/models/base/plugins/crud.js +1 -2
- package/core/server/models/base/plugins/events.js +4 -4
- package/core/server/models/base/plugins/raw-knex.js +3 -3
- package/core/server/models/base/plugins/sanitize.js +1 -1
- package/core/server/models/benefit.js +1 -1
- package/core/server/models/collection.js +1 -1
- package/core/server/models/comment.js +3 -3
- package/core/server/models/invite.js +2 -5
- package/core/server/models/label.js +3 -6
- package/core/server/models/member.js +7 -10
- package/core/server/models/newsletter.js +1 -1
- package/core/server/models/permission.js +3 -6
- package/core/server/models/post.js +20 -23
- package/core/server/models/product.js +4 -1
- package/core/server/models/relations/authors.js +9 -12
- package/core/server/models/role.js +2 -5
- package/core/server/models/settings.js +3 -3
- package/core/server/models/tag.js +2 -5
- package/core/server/models/user.js +8 -10
- package/core/server/models/webhook.js +2 -4
- package/core/server/notify.js +2 -2
- package/core/server/services/adapter-manager/utils.js +6 -1
- package/core/server/services/api-version-compatibility/legacy-api-path-match.js +2 -2
- package/core/server/services/auth/api-key/admin.js +2 -2
- package/core/server/services/auth/api-key/content.js +1 -1
- package/core/server/services/auth/passwordreset.js +1 -1
- package/core/server/services/auth/setup.js +1 -3
- package/core/server/services/automations/README.md +19 -0
- package/core/server/services/automations/poll.js +3 -1
- package/core/server/services/automations/service.js +2 -2
- package/core/server/services/automations/welcome-email-automation-poll.js +199 -293
- package/core/server/services/comments/comments-controller.js +9 -30
- package/core/server/services/comments/comments-service-email-renderer.js +1 -1
- package/core/server/services/comments/comments-service-emails.js +1 -1
- package/core/server/services/comments/comments-service.js +27 -58
- package/core/server/services/comments/comments-stats-service.js +1 -1
- package/core/server/services/content-import/import/staged-file.js +9 -9
- package/core/server/services/content-import/index.js +1 -1
- package/core/server/services/custom-redirects/validation.js +1 -1
- package/core/server/services/email-analytics/email-analytics-service-wrapper.js +23 -55
- package/core/server/services/email-analytics/index.js +35 -19
- package/core/server/services/email-analytics/jobs/email-analytics-job-scheduler.js +31 -60
- package/core/server/services/email-service/README.md +35 -0
- package/core/server/services/email-service/batch-sending-service.js +13 -14
- package/core/server/services/email-service/email-renderer.js +50 -14
- package/core/server/services/email-service/email-service-wrapper.js +3 -2
- package/core/server/services/email-service/email-service.js +33 -8
- package/core/server/services/email-service/email-templates/partials/feedback-button.hbs +2 -1
- package/core/server/services/email-service/email-templates/partials/styles.hbs +0 -6
- package/core/server/services/email-service/email-templates/template.hbs +1 -1
- package/core/server/services/email-service/jobs/send-email-job.js +12 -0
- package/core/server/services/email-service/mailgun-email-provider.js +7 -2
- package/core/server/services/email-service/sending-service.js +1 -1
- package/core/server/services/gifts/gift-service.js +12 -3
- package/core/server/services/gifts/index.js +0 -2
- package/core/server/services/gifts/jobs/index.js +12 -24
- package/core/server/services/gifts/jobs/send-gift-reminders-job.js +6 -46
- package/core/server/services/invitations/accept.js +2 -2
- package/core/server/services/jobs/job-service.js +0 -28
- package/core/server/services/jobs-service/jobs-service.js +5 -0
- package/core/server/services/jobs-service/register-job-handlers.js +17 -1
- package/core/server/services/lib/mailgun-client.js +16 -1
- package/core/server/services/lib/mailgun-recipient-message-id.js +49 -0
- package/core/server/services/limits.js +1 -1
- package/core/server/services/mail/ghost-mailer.js +1 -1
- package/core/server/services/member-attribution/member-attribution-service.js +1 -1
- package/core/server/services/member-attribution/referrer-translator.js +1 -1
- package/core/server/services/members/account-service.js +3 -3
- package/core/server/services/members/api.js +1 -1
- package/core/server/services/members/import-export/import/importer.js +25 -16
- package/core/server/services/members/import-export/import/spool.js +11 -15
- package/core/server/services/members/import-export/index.js +6 -4
- package/core/server/services/members/jobs/index.js +1 -1
- package/core/server/services/members/jobs/members-import-job.js +18 -0
- package/core/server/services/members/member-avatar.js +18 -0
- package/core/server/services/members/members-api/controllers/member-controller.js +2 -2
- package/core/server/services/members/members-api/members-api.js +4 -4
- package/core/server/services/members/members-api/repositories/event-repository.js +36 -1
- package/core/server/services/members/members-api/repositories/member-repository.js +55 -17
- package/core/server/services/members/members-api/repositories/product-repository.js +1 -1
- package/core/server/services/members/members-api/services/member-bread-service.js +4 -7
- package/core/server/services/members/service.js +7 -2
- package/core/server/services/members/stats/members-stats.js +2 -2
- package/core/server/services/members-events/event-storage.js +2 -2
- package/core/server/services/members-metafields/actions.js +23 -2
- package/core/server/services/members-metafields/bindings-service.js +5 -5
- package/core/server/services/members-metafields/definitions-service.js +2 -7
- package/core/server/services/members-metafields/index.js +2 -1
- package/core/server/services/members-metafields/queries.js +7 -1
- package/core/server/services/members-metafields/schema.js +49 -1
- package/core/server/services/members-metafields/values-service.js +112 -10
- package/core/server/services/mentions/mention-sending-service.js +2 -2
- package/core/server/services/mentions/mention.js +3 -4
- package/core/server/services/mentions/mentions-api.js +4 -1
- package/core/server/services/mentions-jobs/job-service.js +0 -28
- package/core/server/services/milestones/milestones-service.js +1 -1
- package/core/server/services/newsletters/newsletters-service.js +1 -1
- package/core/server/services/notifications/notifications.js +3 -3
- package/core/server/services/oembed/oembed-service.js +79 -3
- package/core/server/services/permissions/can-this.js +1 -2
- package/core/server/services/post-scheduling/post-scheduling.js +8 -1
- package/core/server/services/posts/post-scheduling.js +7 -0
- package/core/server/services/settings/settings-bread-service.js +3 -3
- package/core/server/services/settings/settings-utils.js +1 -1
- package/core/server/services/settings-helpers/settings-helpers.js +1 -1
- package/core/server/services/staff/staff-service-emails.js +9 -9
- package/core/server/services/stats/posts-stats-service.js +10 -10
- package/core/server/services/stats/referrers-stats-service.js +1 -1
- package/core/server/services/stats/subscription-stats-service.js +3 -3
- package/core/server/services/stats/utils/tinybird.js +8 -1
- package/core/server/services/stripe/stripe-api.js +3 -3
- package/core/server/services/stripe/stripe-migrations.js +6 -6
- package/core/server/services/themes/storage.js +21 -26
- package/core/server/services/themes/theme-storage.js +2 -2
- package/core/server/services/tiers/tier.js +15 -15
- package/core/server/services/tinybird-sync/index.js +3 -0
- package/core/server/services/tinybird-sync/tinybird-sync-service.js +7 -2
- package/core/server/services/update-check/update-check-service.js +3 -3
- package/core/server/services/webhooks/serialize.js +1 -1
- package/core/server/web/api/app.js +0 -5
- package/core/server/web/api/middleware/upload.js +29 -2
- package/core/server/web/parent/middleware/index.js +1 -1
- package/core/server/web/parent/middleware/log-request.js +5 -0
- package/core/server/web/parent/middleware/queue-request.js +104 -59
- package/core/server/web/shared/middleware/api/spam-prevention.js +2 -2
- package/core/shared/config/defaults.json +6 -1
- package/core/shared/custom-theme-settings-cache/custom-theme-settings-service.js +1 -1
- package/core/shared/labs.js +3 -2
- package/core/shared/settings-cache/cache-manager.js +1 -1
- package/nodemon.json +1 -1
- package/package.json +6 -7
- package/pnpm-lock.yaml +126 -728
- package/pnpm-workspace.yaml +4 -7
- package/tsconfig.json +1 -1
- package/components/tryghost-adapter-base-scheduling-0.2.3.tgz +0 -0
- package/core/built/admin/assets/Combination-DWfJPcz9.js +0 -41
- package/core/built/admin/assets/RadialBarChart-CHRBhiBN.js +0 -1
- package/core/built/admin/assets/_baseAssignValue-DcPokYW8.js +0 -1
- package/core/built/admin/assets/accordion-CJmRaqK7.js +0 -1
- package/core/built/admin/assets/account-migration-DYf7skbb.js +0 -1
- package/core/built/admin/assets/action-list-Crnh-_UI.js +0 -1
- package/core/built/admin/assets/activitypub/avatar-DVJF5bxP.js +0 -261
- package/core/built/admin/assets/activitypub/layout-BL4_jtuV.js +0 -1
- package/core/built/admin/assets/activitypub/routes-DdyY9uFF.js +0 -7181
- package/core/built/admin/assets/activitypub/settings-B6EEcVkW.js +0 -315
- package/core/built/admin/assets/activitypub/tabs-DLhZtVde.js +0 -1083
- package/core/built/admin/assets/activitypub/users-inweyKL5.js +0 -1499
- package/core/built/admin/assets/add-newsletter-modal-CTvXiIqY.js +0 -1
- package/core/built/admin/assets/analytics-PHR1Fggi.js +0 -1
- package/core/built/admin/assets/announcement-bar-modal-Bql0CXdp.js +0 -1
- package/core/built/admin/assets/api-keys-CubH-7_H.js +0 -1
- package/core/built/admin/assets/automations-DcZSLFDU.js +0 -1
- package/core/built/admin/assets/badge-qP06OT7C.js +0 -1
- package/core/built/admin/assets/bluesky-sharing-CJw4d4Mf.js +0 -1
- package/core/built/admin/assets/box-CZ_LSVSy.js +0 -1
- package/core/built/admin/assets/brand-icon-D3ffDYaC.js +0 -1
- package/core/built/admin/assets/breadcrumb-Chn1Ip_q.js +0 -1
- package/core/built/admin/assets/button-DvIh2Bq-.js +0 -1
- package/core/built/admin/assets/calendar-1QGoStFM.js +0 -1
- package/core/built/admin/assets/card-FHQ4D10L.js +0 -1
- package/core/built/admin/assets/chart-helpers-CNpA7re_.js +0 -1
- package/core/built/admin/assets/chart-jVz9Nf9t.js +0 -63
- package/core/built/admin/assets/checkbox-DKht9xMl.js +0 -1
- package/core/built/admin/assets/chunk.524.cc9be98e44890cedc8c8.js +0 -25
- package/core/built/admin/assets/chunk.582.e6fe742b3217207b11a6.js +0 -27
- package/core/built/admin/assets/code-editor-view-BLQIV85-.js +0 -1
- package/core/built/admin/assets/code-editor-view-Cg5eJxcr.js +0 -1
- package/core/built/admin/assets/color-picker-DQoghc0t.js +0 -3
- package/core/built/admin/assets/color-picker-field-BbeK5RRs.js +0 -1
- package/core/built/admin/assets/combobox-weO4FBbv.js +0 -1
- package/core/built/admin/assets/command-DlLrCm9V.js +0 -1
- package/core/built/admin/assets/comments-BjTitLmP.js +0 -1
- package/core/built/admin/assets/confirmation-context-IyqoXVk-.js +0 -1
- package/core/built/admin/assets/container-DAimjOF_.js +0 -1
- package/core/built/admin/assets/context-menu-BtioYFrg.js +0 -1
- package/core/built/admin/assets/copy-field-C6ujqJlP.js +0 -1
- package/core/built/admin/assets/create-ghost-browse-value-source-DAZMWZNq.js +0 -1
- package/core/built/admin/assets/custom-integration-modal-Dm8QI_J4.js +0 -1
- package/core/built/admin/assets/data-list-C0CKkeWW.js +0 -1
- package/core/built/admin/assets/date-range-select-DrjHQdgz.js +0 -1
- package/core/built/admin/assets/design-and-theme-modal-CXVOzBWu.js +0 -2
- package/core/built/admin/assets/detail-page-QpLIL-EO.js +0 -1
- package/core/built/admin/assets/dirty-confirm-dialog-DWwxREGh.js +0 -1
- package/core/built/admin/assets/dist-Bf-HQtVL.js +0 -1
- package/core/built/admin/assets/dist-CUwte9v_.js +0 -1
- package/core/built/admin/assets/dist-FEQQAwTe.js +0 -1
- package/core/built/admin/assets/domain-DBrBic6q.js +0 -1
- package/core/built/admin/assets/dropzone-D61QVcEY.js +0 -5
- package/core/built/admin/assets/edit-profile-jCqJBxqw.js +0 -1
- package/core/built/admin/assets/editor-8Fm4UBEd.js +0 -8
- package/core/built/admin/assets/editor-screen-BSX_uC2B.js +0 -27
- package/core/built/admin/assets/email-sending-status-provider-DnNhlIvt.js +0 -1
- package/core/built/admin/assets/embed-signup-form-modal-DqtBs1WE.js +0 -8
- package/core/built/admin/assets/empty-indicator-L4Ql5Db7.js +0 -1
- package/core/built/admin/assets/en-Cx75dJv5.js +0 -1
- package/core/built/admin/assets/explore-DXhDCtKw.js +0 -1
- package/core/built/admin/assets/feature-image-placeholder-e2q6TcH6.js +0 -1
- package/core/built/admin/assets/feed-mmt4noNL.js +0 -1
- package/core/built/admin/assets/field-p7KnP98B.js +0 -1
- package/core/built/admin/assets/filter-bar-CiIKBg3D.js +0 -1
- package/core/built/admin/assets/filter-sources-I-dRaQxl.js +0 -1
- package/core/built/admin/assets/filters-1injvyxJ.js +0 -1
- package/core/built/admin/assets/filters-DnpO6GWX.js +0 -1
- package/core/built/admin/assets/gift-link-modal-C3H7YFXO.js +0 -1
- package/core/built/admin/assets/grid-5vplBYri.js +0 -1
- package/core/built/admin/assets/growth-B1og1kQp.js +0 -1
- package/core/built/admin/assets/growth-Bf6OHZlK.js +0 -3
- package/core/built/admin/assets/heading-BB21QAbb.js +0 -1
- package/core/built/admin/assets/history-modal-t_qEnxPx.js +0 -1
- package/core/built/admin/assets/html-field-COLQbV4r.js +0 -1
- package/core/built/admin/assets/images-4mvoc3lB.js +0 -1
- package/core/built/admin/assets/index-B3HZU2i8.css +0 -2
- package/core/built/admin/assets/index-DDd-zhNL.js +0 -4
- package/core/built/admin/assets/inline-B8H6NzIw.js +0 -1
- package/core/built/admin/assets/input-group-CLIN2ykI.js +0 -1
- package/core/built/admin/assets/input-surface-wSO5CRy5.js +0 -1
- package/core/built/admin/assets/integration-header-CKGrXNVP.js +0 -1
- package/core/built/admin/assets/invite-user-modal-BaN2mdhI.js +0 -1
- package/core/built/admin/assets/koenig-loader-B1XPPY5C.js +0 -2
- package/core/built/admin/assets/kpi-card-CRLPVlFW.js +0 -1
- package/core/built/admin/assets/kpi-card-CRPbW8NZ.js +0 -1
- package/core/built/admin/assets/kpi-helpers-D7zT96bp.js +0 -1
- package/core/built/admin/assets/kpi-tabs-DE_yh9Go.js +0 -1
- package/core/built/admin/assets/label-CgeBxy4o.js +0 -1
- package/core/built/admin/assets/label-picker-DGDp4Vwr.js +0 -1
- package/core/built/admin/assets/layout-DWnOMly4.js +0 -1
- package/core/built/admin/assets/lib-_QYaUU89.js +0 -2
- package/core/built/admin/assets/link-helpers-8J7ixADV.js +0 -1
- package/core/built/admin/assets/list-page-DLMP0PxC.js +0 -1
- package/core/built/admin/assets/member-activity-ClMWFyvN.js +0 -1
- package/core/built/admin/assets/member-activity-feed-BQY5Rwaj.js +0 -1
- package/core/built/admin/assets/member-custom-fields-Dd_ie1zG.js +0 -1
- package/core/built/admin/assets/member-detail-DjwkGVne.js +0 -1
- package/core/built/admin/assets/members--N9lhk1N.js +0 -4
- package/core/built/admin/assets/modal-page-Dz-9TP4E.js +0 -1
- package/core/built/admin/assets/moderation-DfYBKq9s.js +0 -1
- package/core/built/admin/assets/multi-select-combobox-BcBEzUW_.js +0 -1
- package/core/built/admin/assets/navigation-modal-Cd-scywg.js +0 -1
- package/core/built/admin/assets/newsletter-detail-modal-CFRY6vg_.js +0 -1
- package/core/built/admin/assets/newsletter-emails-4ntck1AC.js +0 -1
- package/core/built/admin/assets/newsletter-o6eCJtab.js +0 -1
- package/core/built/admin/assets/newsletters-Bmlv0edG.js +0 -1
- package/core/built/admin/assets/note-CWs3LF-0.js +0 -1
- package/core/built/admin/assets/notifications-BjSvTJqh.js +0 -1
- package/core/built/admin/assets/offers-container-modal-Bc9A196w.js +0 -1
- package/core/built/admin/assets/onboarding-route-Di1LJYEE.js +0 -1
- package/core/built/admin/assets/overview-DE7NHZQN.js +0 -1
- package/core/built/admin/assets/overview-DEF-ZY6x.js +0 -1
- package/core/built/admin/assets/page-header-B-G_g42C.js +0 -1
- package/core/built/admin/assets/pagemenu-CnkTDO71.js +0 -1
- package/core/built/admin/assets/pages-route-VT7r7YhG.js +0 -1
- package/core/built/admin/assets/portal-frame-D9V8iq5x.js +0 -1
- package/core/built/admin/assets/portal-modal-B5OOR9ZD.js +0 -1
- package/core/built/admin/assets/post-analytics-header-J0WciLx6.js +0 -1
- package/core/built/admin/assets/post-analytics-rGb-PgD-.js +0 -1
- package/core/built/admin/assets/post-share-modal-D0BbTo4W.js +0 -1
- package/core/built/admin/assets/posts-list-screen-CO5jAWoU.js +0 -2
- package/core/built/admin/assets/posts-route-DV-CXWK9.js +0 -1
- package/core/built/admin/assets/preferences-Tac29oG6.js +0 -5
- package/core/built/admin/assets/preview-chrome-C2lQgZBZ.js +0 -1
- package/core/built/admin/assets/preview-modal-CjRbBr8U.js +0 -1
- package/core/built/admin/assets/profile-yiM1f_Og.js +0 -1
- package/core/built/admin/assets/radio-group-CKROWsw4.js +0 -1
- package/core/built/admin/assets/router-provider-CU87qxXw.js +0 -1
- package/core/built/admin/assets/select-CKaC4ggu.js +0 -1
- package/core/built/admin/assets/settings-81kxUa28.js +0 -1
- package/core/built/admin/assets/settings-BVXFqBVK.js +0 -4
- package/core/built/admin/assets/settings-breadcrumbs-czGRx-iu.js +0 -1
- package/core/built/admin/assets/shade-app-CcS3f8MZ-D5BnfHck.js +0 -3
- package/core/built/admin/assets/share-modal-BL-16PiB.js +0 -1
- package/core/built/admin/assets/skeleton-DwCva0-b.js +0 -1
- package/core/built/admin/assets/sort-button-Dquc83jY.js +0 -1
- package/core/built/admin/assets/stack-BURz77VS.js +0 -1
- package/core/built/admin/assets/stats-view-NDja_g96.js +0 -1
- package/core/built/admin/assets/stripe-button-C3cfCAou.js +0 -1
- package/core/built/admin/assets/stripe-connect-modal-FyE3Ey2c.js +0 -1
- package/core/built/admin/assets/switch-zfUUy9Jh.js +0 -1
- package/core/built/admin/assets/table-dE4GTIRT.js +0 -1
- package/core/built/admin/assets/tabs-B3XK93sR.js +0 -1
- package/core/built/admin/assets/tag-detail-D4P-tZdM.js +0 -2
- package/core/built/admin/assets/tag-picker-BNSZ6Qxw.js +0 -1
- package/core/built/admin/assets/tags-BsZcaJ6h.js +0 -1
- package/core/built/admin/assets/text-DC-ot6u2.js +0 -1
- package/core/built/admin/assets/textarea-B4FffFmE.js +0 -1
- package/core/built/admin/assets/tier-detail-modal-a77Z2VMH.js +0 -1
- package/core/built/admin/assets/toggle-group-D2p4okmJ.js +0 -1
- package/core/built/admin/assets/transistor-modal-C8RMkhOD.js +0 -1
- package/core/built/admin/assets/trend-badge-B9v7kMF8.js +0 -1
- package/core/built/admin/assets/types-uYQ1HgqL.js +0 -1
- package/core/built/admin/assets/use-analytics-data-ChHqiZXv.js +0 -1
- package/core/built/admin/assets/use-availability-hPdeG76y.js +0 -1
- package/core/built/admin/assets/use-filter-params-BSFigDIn.js +0 -1
- package/core/built/admin/assets/use-growth-stats-CqqdnESN.js +0 -1
- package/core/built/admin/assets/use-limiter-DBGjYqu7.js +0 -19
- package/core/built/admin/assets/use-reply-chain-data-DmD2yX5D.js +0 -1
- package/core/built/admin/assets/use-sending-eta-CQeG6OP_.js +0 -1
- package/core/built/admin/assets/use-setting-group-Dza6bQ7W.js +0 -1
- package/core/built/admin/assets/use-settings-navigation-BIjI5mL3.js +0 -1
- package/core/built/admin/assets/use-simple-pagination-DwVxe-Lo.js +0 -1
- package/core/built/admin/assets/use-staff-users-i_Mq9OGR.js +0 -1
- package/core/built/admin/assets/use-tinybird-query-DXoF74NM.js +0 -1
- package/core/built/admin/assets/user-detail-modal-BU4QCHE7.js +0 -1
- package/core/built/admin/assets/virtual-list-DScLNuU8.js +0 -1
- package/core/built/admin/assets/web-BZS-t4H0.js +0 -1
- package/core/built/admin/assets/web-DxAUxnK3.js +0 -2
- package/core/frontend/services/sitemap/utils.js +0 -17
- package/core/server/services/automations/get-scheduler-idempotency-key.js +0 -13
- package/core/server/web/api/testmode/index.js +0 -1
- package/core/server/web/api/testmode/jobs/cpu-hog.js +0 -15
- package/core/server/web/api/testmode/jobs/graceful-job.js +0 -50
- package/core/server/web/api/testmode/jobs/say-hello.js +0 -17
- package/core/server/web/api/testmode/routes.js +0 -120
package/core/built/admin/assets/{use-filterable-api-CEMSAYPg.js → use-filterable-api-CxCrnPxG.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e,t}from"./react-BXwhMTuc.js";import{c as n,l as r}from"./hooks-DYfTEQLk.js";import{
|
|
1
|
+
import{s as e,t}from"./react-BXwhMTuc.js";import{c as n,l as r}from"./hooks-DYfTEQLk.js";import{gi as i}from"./index-DOF2jDq0.js";var a=e(t(),1),o=(e=[],t,n)=>!e||!n?e:e.filter(e=>e[t]?.toLowerCase().includes(n.toLowerCase())),s=({path:e,filterKey:t,responseKey:s,limit:c=20})=>{let l=r(),u=(0,a.useRef)({}),d=async r=>{if((u.current.allLoaded||u.current.lastInput===r)&&u.current.data)return o(u.current.data,t,r);let a=await l(n(e,{filter:r?`${t}:~${i(r)}`:``,limit:c.toString()}));return u.current.data=a[s],u.current.allLoaded=!r&&!a.meta?.pagination.next,u.current.lastInput=r,o(a[s],t,r)};return{loadData:d,loadInitialValues:async(t,r)=>{await d(``);let i=[...u.current.data||[]],a=t.filter(e=>!u.current.data?.find(t=>t[r]===e));if(a.length){let t=await l(n(e,{filter:`${r}:[${a.join(`,`)}]`,limit:`100`}));i.push(...t[s])}return t.map(e=>i.find(t=>t[r]===e))}}};export{s as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{s as e,t}from"./react-BXwhMTuc.js";import{i as n}from"./currency-Dy4Tc2R2.js";import{H as r,U as i,X as a,Y as o}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{i as s,p as c,r as l}from"./stats-Cvp8Ep5m.js";import{a as u,n as d}from"./chart-helpers-Czu_9QpJ.js";a();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 a=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=a.free+a.paid+a.comped+(a.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=i(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=i(e/100),f.free=e>0?`up`:e<0?`down`:`same`}let r=t.paid+t.comped+(t.gift??0),a=s.paid+s.comped+(s.gift??0);if(r>0){let e=(a-r)/r*100;d.paid=i(e/100),f.paid=e>0?`up`:e<0?`down`:`same`}}if(t.length>1){let e=o(n).format(`YYYY-MM-DD`),r=t.find(t=>o(t.date).isSameOrAfter(e)),a=o(n).isSame(o().startOf(`year`),`day`)||o(n).year()<o().year(),s=0;if(s=r&&o(r.date).isSame(e,`day`)?r.mrr:a?0:u,s>=0){let e=s===0?u>0?100:0:(u-s)/s*100;d.mrr=i(e/100),f.mrr=e>0?`up`:e<0?`down`:`same`}}return{totalMembers:l,freeMembers:a.free,paidMembers:a.paid+a.comped+(a.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()),i=[...t].sort((e,t)=>new Date(e.date).getTime()-new Date(t.date).getTime()),a=n.map(e=>e.date),o=i.map(e=>e.date),s=[...new Set([...a,...o])].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(i.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 i=c?.free??0,a=c?.paid??0,o=c?.comped??0,s=c?.gift??0,f=a+o+s,p=i+f;return{date:e,value:p,free:i,paid:f,comped:o,gift:s,mrr:l?.mrr??0,paid_subscribed:c?.paid_subscribed??0,paid_canceled:c?.paid_canceled??0,formattedValue:r(p),label:`Total members`}})},h=e=>{let{startDate:t,endDate:r}=(0,f.useMemo)(()=>u(e),[e]),i=d(t),a=e===1?o(i).subtract(1,`day`).format(`YYYY-MM-DD`):i,{data:h,isLoading:g}=l({searchParams:{date_from:a}}),{data:_,isLoading:v}=s({searchParams:{date_from:a}}),{data:y,isLoading:b}=c(),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=o(i).format(`YYYY-MM-DD`),a=o(i).add(1,`day`).format(`YYYY-MM-DD`);return[{...e,date:r},{...n,date:a}]}return t},[h,e,i]),{mrrData:S,selectedCurrency:C}=(0,f.useMemo)(()=>{let t=o(i),n=e===1?o().endOf(`day`):o().startOf(`day`);if(_?.stats&&_?.meta?.totals){let r=_.meta.totals,i=r[0];if(!i)return{mrrData:[],selectedCurrency:`usd`};for(let e of r)e.mrr>i.mrr&&(i=e);let a=i.currency,s=_.stats.filter(e=>e.currency===a),c=s.filter(e=>o(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=>o(e.date).isSame(t,`day`))){let e=l.find(e=>o(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?o().startOf(`day`):n;if(!u.some(e=>o(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:a}}return{mrrData:[],selectedCurrency:`usd`}},[_,i,e]),w=(0,f.useMemo)(()=>p(x,S,i,h?.meta?.totals),[x,S,i,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:i,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=o(i),a=o(r);return t.filter(e=>{let t=o(e.date);return t.isSameOrAfter(n)&&t.isSameOrBefore(a)})},[y,i,r]),selectedCurrency:C,currencySymbol:E}};export{h as t};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import{i as e,n as t,s as n,t as r}from"./react-BXwhMTuc.js";import{g as i,n as a,r as o,t as s}from"./hooks-DYfTEQLk.js";import{n as c,t as l}from"./update-queries-C4CnvJaW.js";import{s as u}from"./config-BPljH6wF.js";import{f as d}from"./users-C60_hpn6.js";import{r as f}from"./newsletters-Dz77m__5.js";import{A as p,D as m,E as h,M as g,b as _,c as v,d as y,f as b,k as x,l as S,n as C,o as w,t as T}from"./isPlainObject-BzzgUf1E.js";import{n as E,t as D}from"./luxon-BXCsmep3.js";import{Mr as O}from"./index-DOF2jDq0.js";var k=`InvitesResponseType`,A=s({dataType:k,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}}}),j=a({method:`POST`,path:()=>`/invites/`,body:({email:e,roleId:t})=>({invites:[{email:e,role_id:t,expires:null,status:null,token:null}]}),updateQueries:{dataType:k,emberUpdateType:`createOrUpdate`,update:c(`invites`)}}),M=a({path:e=>`/invites/${e}/`,method:`DELETE`,updateQueries:{dataType:k,emberUpdateType:`delete`,update:l(`invites`)}}),N=o({dataType:`RolesResponseType`,path:`/roles/`,defaultSearchParams:{limit:`100`}}),P=n(r(),1),F=globalThis.crypto,I=[];for(let e=0;e<256;e+=1)I.push((e+256).toString(16).slice(1));function L(){let e=new Uint8Array(16);return F.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128,I[e[0]]+I[e[1]]+I[e[2]]+I[e[3]]+`-`+I[e[4]]+I[e[5]]+`-`+I[e[6]]+I[e[7]]+`-`+I[e[8]]+I[e[9]]+`-`+I[e[10]]+I[e[11]]+I[e[12]]+I[e[13]]+I[e[14]]+I[e[15]]}function R(){if(F?.randomUUID)return F.randomUUID();if(F?.getRandomValues)return L();throw Error(`No secure random number generator available to generate a UUID`)}function ee(e,t){let n=(e.stack?.split(/\n/g)||[])[1],[r,...i]=t.stack?.split(/\n/g)||[];return[r,n,...i].join(`
|
|
2
|
+
`)}var te=Object.defineProperty,ne=(e,t,n)=>t in e?te(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,z=(e,t,n)=>ne(e,typeof t==`symbol`?t:t+``,n),B=class extends Error{constructor(e={}){super(),z(this,`statusCode`),z(this,`errorType`),z(this,`level`),z(this,`id`),z(this,`context`),z(this,`help`),z(this,`errorDetails`),z(this,`code`),z(this,`property`),z(this,`redirect`),z(this,`hideStack`),this.statusCode=500,this.errorType=`InternalServerError`,this.level=`normal`,this.message=`The server has encountered an error.`,this.id=R(),this.id=e.id||this.id,this.statusCode=e.statusCode||this.statusCode,this.level=e.level||this.level,this.context=e.context,this.help=e.help,this.errorType=this.name=e.errorType||this.errorType,this.errorDetails=e.errorDetails,this.code=e.code||null,this.property=e.property||null,this.redirect=e.redirect||null,this.message=e.message||this.message,this.hideStack=e.hideStack||!1,e.err&&(typeof e.err==`string`&&(e.err=Error(e.err)),Object.getOwnPropertyNames(e.err).forEach(t=>{if([`errorType`,`name`,`statusCode`,`message`,`level`].indexOf(t)===-1){if(t===`code`){this[t]=this[t]||e.err[t];return}if(t===`stack`&&!this.hideStack){this[t]=ee(this,e.err);return}this[t]=e.err[t]||this[t]}}))}},re=e({BadRequestError:()=>se,ConflictError:()=>je,DataExportError:()=>be,DataImportError:()=>xe,DisabledFeatureError:()=>we,EmailError:()=>Se,HelperWarning:()=>De,HostLimitError:()=>Ee,IncorrectUsageError:()=>ae,InternalServerError:()=>ie,MaintenanceError:()=>pe,MethodNotAllowedError:()=>me,MigrationError:()=>Me,NoContentError:()=>Ae,NoPermissionError:()=>le,NotFoundError:()=>oe,PasswordResetRequiredError:()=>Oe,RangeNotSatisfiableError:()=>ge,RequestEntityTooLargeError:()=>_e,RequestNotAcceptableError:()=>he,ThemeValidationError:()=>Ce,TokenRevocationError:()=>ve,TooManyRequestsError:()=>fe,UnauthorizedError:()=>ce,UnhandledJobError:()=>ke,UnsupportedMediaTypeError:()=>de,UpdateCollisionError:()=>Te,ValidationError:()=>ue,VersionMismatchError:()=>ye}),V=(e,t)=>{let n={...t};return Object.keys(e).forEach(t=>{e[t]!==void 0&&(n[t]=e[t])}),n},ie=class extends B{constructor(e={}){super(V(e,{statusCode:500,level:`critical`,errorType:`InternalServerError`,message:`The server has encountered an error.`}))}},ae=class extends B{constructor(e={}){super(V(e,{statusCode:400,level:`critical`,errorType:`IncorrectUsageError`,message:`We detected a misuse. Please read the stack trace.`}))}},oe=class extends B{constructor(e={}){super(V(e,{statusCode:404,errorType:`NotFoundError`,message:`Resource could not be found.`,hideStack:!0}))}},se=class extends B{constructor(e={}){super(V(e,{statusCode:400,errorType:`BadRequestError`,message:`The request could not be understood.`}))}},ce=class extends B{constructor(e={}){super(V(e,{statusCode:401,errorType:`UnauthorizedError`,message:`You are not authorised to make this request.`}))}},le=class extends B{constructor(e={}){super(V(e,{statusCode:403,errorType:`NoPermissionError`,message:`You do not have permission to perform this request.`}))}},ue=class extends B{constructor(e={}){super(V(e,{statusCode:422,errorType:`ValidationError`,message:`The request failed validation.`}))}},de=class extends B{constructor(e={}){super(V(e,{statusCode:415,errorType:`UnsupportedMediaTypeError`,message:`The media in the request is not supported by the server.`}))}},fe=class extends B{constructor(e={}){super(V(e,{statusCode:429,errorType:`TooManyRequestsError`,message:`Server has received too many similar requests in a short space of time.`}))}},pe=class extends B{constructor(e={}){super(V(e,{statusCode:503,errorType:`MaintenanceError`,message:`The server is temporarily down for maintenance.`}))}},me=class extends B{constructor(e={}){super(V(e,{statusCode:405,errorType:`MethodNotAllowedError`,message:`Method not allowed for resource.`}))}},he=class extends B{constructor(e={}){super(V(e,{statusCode:406,errorType:`RequestNotAcceptableError`,message:`Request not acceptable for provided Accept-Version header.`,hideStack:!0}))}},ge=class extends B{constructor(e={}){super(V(e,{statusCode:416,errorType:`RangeNotSatisfiableError`,message:`Range not satisfiable for provided Range header.`,hideStack:!0}))}},_e=class extends B{constructor(e={}){super(V(e,{statusCode:413,errorType:`RequestEntityTooLargeError`,message:`Request was too big for the server to handle.`}))}},ve=class extends B{constructor(e={}){super(V(e,{statusCode:503,errorType:`TokenRevocationError`,message:`Token is no longer available.`}))}},ye=class extends B{constructor(e={}){super(V(e,{statusCode:400,errorType:`VersionMismatchError`,message:`Requested version does not match server version.`}))}},be=class extends B{constructor(e={}){super(V(e,{statusCode:500,errorType:`DataExportError`,message:`The server encountered an error whilst exporting data.`}))}},xe=class extends B{constructor(e={}){super(V(e,{statusCode:500,errorType:`DataImportError`,message:`The server encountered an error whilst importing data.`}))}},Se=class extends B{constructor(e={}){super(V(e,{statusCode:500,errorType:`EmailError`,message:`The server encountered an error whilst sending email.`}))}},Ce=class extends B{constructor(e={}){super(V(e,{statusCode:422,errorType:`ThemeValidationError`,message:`The theme has a validation error.`,errorDetails:{}}))}},we=class extends B{constructor(e={}){super(V(e,{statusCode:409,errorType:`DisabledFeatureError`,message:`Unable to complete the request, this feature is disabled.`}))}},Te=class extends B{constructor(e={}){super(V(e,{statusCode:409,errorType:`UpdateCollisionError`,message:`Unable to complete the request, there was a conflict.`}))}},Ee=class extends B{constructor(e={}){super(V(e,{errorType:`HostLimitError`,hideStack:!0,statusCode:403,message:`Unable to complete the request, this resource is limited.`}))}},De=class extends B{constructor(e={}){super(V(e,{errorType:`HelperWarning`,hideStack:!0,statusCode:400,message:`A theme helper has done something unexpected.`}))}},Oe=class extends B{constructor(e={}){super(V(e,{errorType:`PasswordResetRequiredError`,statusCode:401,message:`For security, you need to create a new password. An email has been sent to you with instructions!`}))}},ke=class extends B{constructor(e={}){super(V(e,{errorType:`UnhandledJobError`,message:`Processed job threw an unhandled error`,level:`critical`}))}},Ae=class extends B{constructor(e={}){super(V(e,{errorType:`NoContentError`,statusCode:204,hideStack:!0}))}},je=class extends B{constructor(e={}){super(V(e,{errorType:`ConflictError`,statusCode:409,message:`The server has encountered an conflict.`}))}},Me=class extends B{constructor(e={}){super(V(e,{errorType:`MigrationError`,message:`An error has occurred applying a database migration.`,level:`critical`}))}},H=re,Ne=t(((e,t)=>{var n=m(),r=h();function i(e){return r(n(e).toLowerCase())}t.exports=i})),Pe=t(((e,t)=>{function n(e,t,n,r){var i=-1,a=e==null?0:e.length;for(r&&a&&(n=e[++i]);++i<a;)n=t(n,e[i],i,e);return n}t.exports=n})),U=t(((e,t)=>{function n(e){return function(t){return e?.[t]}}t.exports=n})),Fe=t(((e,t)=>{t.exports=U()({À:`A`,Á:`A`,Â:`A`,Ã:`A`,Ä:`A`,Å:`A`,à:`a`,á:`a`,â:`a`,ã:`a`,ä:`a`,å:`a`,Ç:`C`,ç:`c`,Ð:`D`,ð:`d`,È:`E`,É:`E`,Ê:`E`,Ë:`E`,è:`e`,é:`e`,ê:`e`,ë:`e`,Ì:`I`,Í:`I`,Î:`I`,Ï:`I`,ì:`i`,í:`i`,î:`i`,ï:`i`,Ñ:`N`,ñ:`n`,Ò:`O`,Ó:`O`,Ô:`O`,Õ:`O`,Ö:`O`,Ø:`O`,ò:`o`,ó:`o`,ô:`o`,õ:`o`,ö:`o`,ø:`o`,Ù:`U`,Ú:`U`,Û:`U`,Ü:`U`,ù:`u`,ú:`u`,û:`u`,ü:`u`,Ý:`Y`,ý:`y`,ÿ:`y`,Æ:`Ae`,æ:`ae`,Þ:`Th`,þ:`th`,ß:`ss`,Ā:`A`,Ă:`A`,Ą:`A`,ā:`a`,ă:`a`,ą:`a`,Ć:`C`,Ĉ:`C`,Ċ:`C`,Č:`C`,ć:`c`,ĉ:`c`,ċ:`c`,č:`c`,Ď:`D`,Đ:`D`,ď:`d`,đ:`d`,Ē:`E`,Ĕ:`E`,Ė:`E`,Ę:`E`,Ě:`E`,ē:`e`,ĕ:`e`,ė:`e`,ę:`e`,ě:`e`,Ĝ:`G`,Ğ:`G`,Ġ:`G`,Ģ:`G`,ĝ:`g`,ğ:`g`,ġ:`g`,ģ:`g`,Ĥ:`H`,Ħ:`H`,ĥ:`h`,ħ:`h`,Ĩ:`I`,Ī:`I`,Ĭ:`I`,Į:`I`,İ:`I`,ĩ:`i`,ī:`i`,ĭ:`i`,į:`i`,ı:`i`,Ĵ:`J`,ĵ:`j`,Ķ:`K`,ķ:`k`,ĸ:`k`,Ĺ:`L`,Ļ:`L`,Ľ:`L`,Ŀ:`L`,Ł:`L`,ĺ:`l`,ļ:`l`,ľ:`l`,ŀ:`l`,ł:`l`,Ń:`N`,Ņ:`N`,Ň:`N`,Ŋ:`N`,ń:`n`,ņ:`n`,ň:`n`,ŋ:`n`,Ō:`O`,Ŏ:`O`,Ő:`O`,ō:`o`,ŏ:`o`,ő:`o`,Ŕ:`R`,Ŗ:`R`,Ř:`R`,ŕ:`r`,ŗ:`r`,ř:`r`,Ś:`S`,Ŝ:`S`,Ş:`S`,Š:`S`,ś:`s`,ŝ:`s`,ş:`s`,š:`s`,Ţ:`T`,Ť:`T`,Ŧ:`T`,ţ:`t`,ť:`t`,ŧ:`t`,Ũ:`U`,Ū:`U`,Ŭ:`U`,Ů:`U`,Ű:`U`,Ų:`U`,ũ:`u`,ū:`u`,ŭ:`u`,ů:`u`,ű:`u`,ų:`u`,Ŵ:`W`,ŵ:`w`,Ŷ:`Y`,ŷ:`y`,Ÿ:`Y`,Ź:`Z`,Ż:`Z`,Ž:`Z`,ź:`z`,ż:`z`,ž:`z`,IJ:`IJ`,ij:`ij`,Œ:`Oe`,œ:`oe`,ʼn:`'n`,ſ:`s`})})),Ie=t(((e,t)=>{var n=Fe(),r=m(),i=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,a=RegExp(`[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]`,`g`);function o(e){return e=r(e),e&&e.replace(i,n).replace(a,``)}t.exports=o})),Le=t(((e,t)=>{var n=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;function r(e){return e.match(n)||[]}t.exports=r})),Re=t(((e,t)=>{var n=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;function r(e){return n.test(e)}t.exports=r})),ze=t(((e,t)=>{var n=`\\ud800-\\udfff`,r=`\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff`,i=`\\u2700-\\u27bf`,a=`a-z\\xdf-\\xf6\\xf8-\\xff`,o=`\\xac\\xb1\\xd7\\xf7`,s=`\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf`,c=`\\u2000-\\u206f`,l=` \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000`,u=`A-Z\\xc0-\\xd6\\xd8-\\xde`,d=`\\ufe0e\\ufe0f`,f=o+s+c+l,p=`['’]`,m=`[`+f+`]`,h=`[`+r+`]`,g=`\\d+`,_=`[`+i+`]`,v=`[`+a+`]`,y=`[^`+n+f+g+i+a+u+`]`,b=`(?:`+h+`|\\ud83c[\\udffb-\\udfff])`,x=`[^`+n+`]`,S=`(?:\\ud83c[\\udde6-\\uddff]){2}`,C=`[\\ud800-\\udbff][\\udc00-\\udfff]`,w=`[`+u+`]`,T=`\\u200d`,E=`(?:`+v+`|`+y+`)`,D=`(?:`+w+`|`+y+`)`,O=`(?:`+p+`(?:d|ll|m|re|s|t|ve))?`,k=`(?:`+p+`(?:D|LL|M|RE|S|T|VE))?`,A=b+`?`,j=`[`+d+`]?`,M=`(?:`+T+`(?:`+[x,S,C].join(`|`)+`)`+j+A+`)*`,N=`\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])`,P=`\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])`,F=j+A+M,I=`(?:`+[_,S,C].join(`|`)+`)`+F,L=RegExp([w+`?`+v+`+`+O+`(?=`+[m,w,`$`].join(`|`)+`)`,D+`+`+k+`(?=`+[m,w+E,`$`].join(`|`)+`)`,w+`?`+E+`+`+O,w+`+`+k,P,N,g,I].join(`|`),`g`);function R(e){return e.match(L)||[]}t.exports=R})),Be=t(((e,t)=>{var n=Le(),r=Re(),i=m(),a=ze();function o(e,t,o){return e=i(e),t=o?void 0:t,t===void 0?r(e)?a(e):n(e):e.match(t)||[]}t.exports=o})),W=t(((e,t)=>{var n=Pe(),r=Ie(),i=Be(),a=RegExp(`['’]`,`g`);function o(e){return function(t){return n(i(r(t).replace(a,``)),e,``)}}t.exports=o})),Ve=t(((e,t)=>{var n=Ne();t.exports=W()(function(e,t,r){return t=t.toLowerCase(),e+(r?n(t):t)})})),He=t(((e,t)=>{var n=Object.prototype.hasOwnProperty;function r(e,t){return e!=null&&n.call(e,t)}t.exports=r})),Ue=t(((e,t)=>{var n=He(),r=b();function i(e,t){return e!=null&&r(e,t,n)}t.exports=i})),G=n(Ve(),1),K=n(Ue(),1),q={members:{currentCountQuery:async e=>(await e(`members`).count(`id`,{as:`count`}).first()).count},newsletters:{currentCountQuery:async e=>(await e(`newsletters`).count(`id`,{as:`count`}).where(`status`,`=`,`active`).first()).count},emails:{currentCountQuery:async(e,t)=>(await e(`emails`).sum(`email_count`,{as:`count`}).where(`created_at`,`>=`,t).first()).count},staff:{currentCountQuery:async e=>(await e(`users`).select(`users.id`).leftJoin(`roles_users`,`users.id`,`roles_users.user_id`).leftJoin(`roles`,`roles_users.role_id`,`roles.id`).whereNot(`roles.name`,`Contributor`).andWhereNot(`users.status`,`inactive`).union([e(`invites`).select(`invites.id`).leftJoin(`roles`,`invites.role_id`,`roles.id`).whereNot(`roles.name`,`Contributor`)])).length},customIntegrations:{},customThemes:{},uploads:{currentCountQuery:()=>void 0,formatter:e=>`${Number(e)/1e6}MB`},limitStripeConnect:{},limitAnalytics:{},limitSocialWeb:{},limitCustomFields:{},publicSiteAccess:{}},We=t(((e,t)=>{t.exports=W()(function(e,t,n){return e+(n?` `:``)+t.toLowerCase()})})),Ge=t(((e,t)=>{function n(e,t){for(var n=-1,r=e==null?0:e.length;++n<r&&t(e[n],n,e)!==!1;);return e}t.exports=n})),Ke=t(((e,t)=>{var n=y(),r=_(),i=Object.prototype.hasOwnProperty;function a(e,t,a){var o=e[t];(!(i.call(e,t)&&r(o,a))||a===void 0&&!(t in e))&&n(e,t,a)}t.exports=a})),qe=t(((e,t)=>{var n=Ke(),r=y();function i(e,t,i,a){var o=!i;i||={};for(var s=-1,c=t.length;++s<c;){var l=t[s],u=a?a(i[l],e[l],l,i,e):void 0;u===void 0&&(u=e[l]),o?r(i,l,u):n(i,l,u)}return i}t.exports=i})),Je=t(((e,t)=>{var n=v(),r=w();function i(e){return n(function(t,n){var i=-1,a=n.length,o=a>1?n[a-1]:void 0,s=a>2?n[2]:void 0;for(o=e.length>3&&typeof o==`function`?(a--,o):void 0,s&&r(n[0],n[1],s)&&(o=a<3?void 0:o,a=1),t=Object(t);++i<a;){var c=n[i];c&&e(t,c,i,o)}return t})}t.exports=i})),Ye=t(((e,t)=>{var n=qe(),r=Je(),i=C();t.exports=r(function(e,t,r,a){n(t,i(t),e,a)})})),J=t(((e,t)=>{var n=p(),r=x(),i=T(),a=`[object DOMException]`,o=`[object Error]`;function s(e){if(!r(e))return!1;var t=n(e);return t==o||t==a||typeof e.message==`string`&&typeof e.name==`string`&&!i(e)}t.exports=s})),Xe=t(((e,t)=>{var n=S(),r=v(),i=J();t.exports=r(function(e,t){try{return n(e,void 0,t)}catch(e){return i(e)?e:Error(e)}})})),Ze=t(((e,t)=>{var n=g();function r(e,t){return n(t,function(t){return e[t]})}t.exports=r})),Qe=t(((e,t)=>{var n=_(),r=Object.prototype,i=r.hasOwnProperty;function a(e,t,a,o){return e===void 0||n(e,r[a])&&!i.call(o,a)?t:e}t.exports=a})),$e=t(((e,t)=>{var n={"\\":`\\`,"'":`'`,"\n":`n`,"\r":`r`,"\u2028":`u2028`,"\u2029":`u2029`};function r(e){return`\\`+n[e]}t.exports=r})),Y=t(((e,t)=>{t.exports=/<%=([\s\S]+?)%>/g})),et=t(((e,t)=>{t.exports=U()({"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`})})),tt=t(((e,t)=>{var n=et(),r=m(),i=/[&<>"']/g,a=RegExp(i.source);function o(e){return e=r(e),e&&a.test(e)?e.replace(i,n):e}t.exports=o})),nt=t(((e,t)=>{t.exports=/<%-([\s\S]+?)%>/g})),rt=t(((e,t)=>{t.exports=/<%([\s\S]+?)%>/g})),it=t(((e,t)=>{var n=tt();t.exports={escape:nt(),evaluate:rt(),interpolate:Y(),variable:``,imports:{_:{escape:n}}}})),at=t(((e,t)=>{var n=Ge(),r=Ye(),i=Xe(),a=Ze(),o=Qe(),s=$e(),c=J(),l=w(),u=C(),d=Y(),f=it(),p=m(),h="Invalid `variable` option passed into `_.template`",g="Invalid `imports` option passed into `_.template`",_=/\b__p \+= '';/g,v=/\b(__p \+=) '' \+/g,y=/(__e\(.*?\)|\b__t\)) \+\n'';/g,b=/[()=,{}\[\]\/\s]/,x=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,S=/($^)/,T=/['\n\r\u2028\u2029\\]/g,E=Object.prototype.hasOwnProperty;function D(e,t,m){var C=f.imports._.templateSettings||f;m&&l(e,t,m)&&(t=void 0),e=p(e),t=r({},t,C,o);var w=r({},t.imports,C.imports,o),D=u(w),O=a(w,D);n(D,function(e){if(b.test(e))throw Error(g)});var k,A,j=0,M=t.interpolate||S,N=`__p += '`,P=RegExp((t.escape||S).source+`|`+M.source+`|`+(M===d?x:S).source+`|`+(t.evaluate||S).source+`|$`,`g`),F=E.call(t,`sourceURL`)?`//# sourceURL=`+(t.sourceURL+``).replace(/\s/g,` `)+`
|
|
3
|
+
`:``;e.replace(P,function(t,n,r,i,a,o){return r||=i,N+=e.slice(j,o).replace(T,s),n&&(k=!0,N+=`' +
|
|
4
|
+
__e(`+n+`) +
|
|
5
|
+
'`),a&&(A=!0,N+=`';
|
|
6
|
+
`+a+`;
|
|
7
|
+
__p += '`),r&&(N+=`' +
|
|
8
|
+
((__t = (`+r+`)) == null ? '' : __t) +
|
|
9
|
+
'`),j=o+t.length,t}),N+=`';
|
|
10
|
+
`;var I=E.call(t,`variable`)&&t.variable;if(!I)N=`with (obj) {
|
|
11
|
+
`+N+`
|
|
12
|
+
}
|
|
13
|
+
`;else if(b.test(I))throw Error(h);N=(A?N.replace(_,``):N).replace(v,`$1`).replace(y,`$1;`),N=`function(`+(I||`obj`)+`) {
|
|
14
|
+
`+(I?``:`obj || (obj = {});
|
|
15
|
+
`)+`var __t, __p = ''`+(k?`, __e = _.escape`:``)+(A?`, __j = Array.prototype.join;
|
|
16
|
+
function print() { __p += __j.call(arguments, '') }
|
|
17
|
+
`:`;
|
|
18
|
+
`)+N+`return __p
|
|
19
|
+
}`;var L=i(function(){return Function(D,F+`return `+N).apply(void 0,O)});if(L.source=N,c(L))throw L;return L}t.exports=D})),X=n(We(),1),Z=n(at(),1);E();var ot={invalidInterval:`Invalid interval specified. Only "month" value is accepted.`},st=[`month`],ct=(e,t)=>{if(t===`month`){let t=D.fromISO(e,{zone:`UTC`}),n=D.now().setZone(`UTC`),r=Math.floor(n.diff(t,`months`).months);return t.plus({months:r}).toISO()}throw new H.IncorrectUsageError({message:ot.invalidInterval})},lt=/{{([\s\S]+?)}}/g,ut=(e,t)=>Number(typeof e==`string`?e+t:Number(e)+t),Q=e=>{let t=Intl.NumberFormat().format;return t(e)},$=class{name;error;helpLink;db;errors;constructor({name:e,error:t,helpLink:n,db:r,errors:i}){this.name=e,this.error=t,this.helpLink=n,this.db=r,this.errors=i}generateError(e){let t={errorDetails:{name:this.name}};return this.helpLink&&(t.help=this.helpLink),t}},dt=class extends ${currentCountQueryFn;max;formatter;fallbackMessage;constructor({name:e,config:t,helpLink:n,db:r,errors:i}){if(super({name:e,error:t.error||``,helpLink:n,db:r,errors:i}),t.max===void 0)throw new i.IncorrectUsageError({message:`Attempted to setup a max limit without a limit`});if(!t.currentCountQuery)throw new i.IncorrectUsageError({message:`Attempted to setup a max limit without a current count query`});this.currentCountQueryFn=t.currentCountQuery,this.max=t.max,this.formatter=t.formatter,this.fallbackMessage=`This action would exceed the ${(0,X.default)(this.name)} limit on your current plan.`}generateError(e){let t=super.generateError();if(t.message=this.fallbackMessage,this.error){let n=this.formatter||Q;try{t.message=(0,Z.default)(this.error,{interpolate:lt})({max:n(this.max),count:n(e),name:this.name})}catch{t.message=this.fallbackMessage}}return t.errorDetails.limit=this.max,t.errorDetails.total=e,new this.errors.HostLimitError(t)}async currentCountQuery(e={}){return await this.currentCountQueryFn(e.transacting??this.db?.knex)}async errorIfWouldGoOverLimit(e={}){let{max:t,addedCount:n=1}=e,r=await this.currentCountQuery(e);if(ut(r,n)>(t||this.max))throw this.generateError(r)}async errorIfIsOverLimit(e={}){let t=e.currentCount||await this.currentCountQuery(e);if(Number(t)>(e.max||this.max))throw this.generateError(t)}},ft=class extends ${currentCountQueryFn;maxPeriodic;interval;startDate;fallbackMessage;constructor({name:e,config:t,helpLink:n,db:r,errors:i}){if(super({name:e,error:t.error||``,helpLink:n,db:r,errors:i}),t.maxPeriodic===void 0)throw new i.IncorrectUsageError({message:`Attempted to setup a periodic max limit without a limit`});if(!t.currentCountQuery)throw new i.IncorrectUsageError({message:`Attempted to setup a periodic max limit without a current count query`});if(!t.interval)throw new i.IncorrectUsageError({message:`Attempted to setup a periodic max limit without an interval`});if(!st.includes(t.interval))throw new i.IncorrectUsageError({message:`Attempted to setup a periodic max limit without unsupported interval. Please specify one of: ${st}`});if(!t.startDate)throw new i.IncorrectUsageError({message:`Attempted to setup a periodic max limit without a start date`});this.currentCountQueryFn=t.currentCountQuery,this.maxPeriodic=t.maxPeriodic,this.interval=t.interval,this.startDate=t.startDate,this.fallbackMessage=`This action would exceed the ${(0,X.default)(this.name)} limit on your current plan.`}generateError(e){let t=super.generateError();if(t.message=this.fallbackMessage,this.error)try{t.message=(0,Z.default)(this.error,{interpolate:lt})({max:Q(this.maxPeriodic),count:Q(e),name:this.name})}catch{t.message=this.fallbackMessage}return t.errorDetails.limit=this.maxPeriodic,t.errorDetails.total=e,new this.errors.HostLimitError(t)}async currentCountQuery(e={}){let t=ct(this.startDate,this.interval);return await this.currentCountQueryFn(e.transacting?e.transacting:this.db?this.db.knex:void 0,t)}async errorIfWouldGoOverLimit(e={}){let{max:t,addedCount:n=1}=e,r=await this.currentCountQuery(e);if(ut(r,n)>(t||this.maxPeriodic))throw this.generateError(r)}async errorIfIsOverLimit(e={}){let{max:t}=e,n=await this.currentCountQuery(e);if(Number(n)>(t||this.maxPeriodic))throw this.generateError(n)}},pt=class extends ${disabled;fallbackMessage;constructor({name:e,config:t,helpLink:n,db:r,errors:i}){super({name:e,error:t.error||``,helpLink:n,db:r,errors:i});let a=(0,X.default)(e.replace(/^limit/,``));this.disabled=t.disabled,this.fallbackMessage=`Your plan does not support ${a}. Please upgrade to enable ${a}.`}generateError(){let e=super.generateError();return this.error?e.message=this.error:e.message=this.fallbackMessage,new this.errors.HostLimitError(e)}async errorIfWouldGoOverLimit(e){if(this.disabled)throw this.generateError()}async errorIfIsOverLimit(e){}isDisabled(){return!!this.disabled}},mt=class extends ${allowlist;fallbackMessage;constructor({name:e,config:t,helpLink:n,errors:r}){if(super({name:e,error:t.error||``,helpLink:n,errors:r}),!t.allowlist||!t.allowlist.length)throw new this.errors.IncorrectUsageError({message:`Attempted to setup an allowlist limit without an allowlist`});this.allowlist=t.allowlist,this.fallbackMessage=`This action would exceed the ${(0,X.default)(this.name)} limit on your current plan.`}generateError(){let e=super.generateError();return this.error?e.message=this.error:e.message=this.fallbackMessage,new this.errors.HostLimitError(e)}async errorIfWouldGoOverLimit(e){if(!e||!e.value)throw new this.errors.IncorrectUsageError({message:`Attempted to check an allowlist limit without a value`});if(!this.allowlist.includes(e.value))throw this.generateError()}async errorIfIsOverLimit(e){if(!e||!e.value)throw new this.errors.IncorrectUsageError({message:`Attempted to check an allowlist limit without a value`});if(!this.allowlist.includes(e.value))throw this.generateError()}},ht={missingErrorsConfig:`Config Missing: 'errors' is required.`,noSubscriptionParameter:`Attempted to setup a periodic max limit without a subscription`},gt=class{limits;errors;constructor(){this.limits={}}loadLimits({limits:e={},subscription:t,helpLink:n,db:r,errors:i}){if(!i)throw new H.IncorrectUsageError({message:ht.missingErrorsConfig});this.errors=i,this.limits={},Object.keys(e).forEach(a=>{let o=(0,G.default)(a);if(q[o]){let a=Object.assign({},q[o],e[o]);if((0,K.default)(a,`allowlist`))this.limits[o]=new mt({name:o,config:a,helpLink:n,errors:i});else if((0,K.default)(a,`max`))this.limits[o]=new dt({name:o,config:a,helpLink:n,db:r,errors:i});else if((0,K.default)(a,`maxPeriodic`)){if(t===void 0)throw new H.IncorrectUsageError({message:ht.noSubscriptionParameter});let e=Object.assign({},a,t);this.limits[o]=new ft({name:o,config:e,helpLink:n,db:r,errors:i})}else this.limits[o]=new pt({name:o,config:a,helpLink:n,errors:i})}})}isLimited(e){return!!this.limits[(0,G.default)(e)]}isDisabled(e){let t=this.limits[(0,G.default)(e)];if(t){if(typeof t.isDisabled!=`function`)throw new H.IncorrectUsageError({message:`Limit ${e} does not support .isDisabled()`});return t.isDisabled()}}async checkIsOverLimit(e,t={}){if(this.isLimited(e))try{return await this.limits[e].errorIfIsOverLimit(t),!1}catch(e){if(e instanceof this.errors.HostLimitError)return!0;throw e}}async checkWouldGoOverLimit(e,t={}){if(this.isLimited(e))try{return await this.limits[e].errorIfWouldGoOverLimit(t),!1}catch(e){if(e instanceof this.errors.HostLimitError)return!0;throw e}}async errorIfIsOverLimit(e,t={}){this.isLimited(e)&&await this.limits[e].errorIfIsOverLimit(t)}async errorIfWouldGoOverLimit(e,t={}){this.isLimited(e)&&await this.limits[e].errorIfWouldGoOverLimit(t)}async checkIfAnyOverLimit(e={}){for(let t in this.limits)if(await this.checkIsOverLimit(t,e))return!0;return!1}},_t=class extends Error{constructor({message:e}){super(e)}},vt=()=>{let{data:e}=u({refetchOnMount:!1}),t=e?.config,{data:{users:n}={users:[]},isLoading:r}=d(),{data:{invites:a}={invites:[]},isLoading:o}=A(),{data:{roles:s}={},isLoading:c}=N(),l=r||o||c,{refetch:p}=O({searchParams:{limit:`1`},enabled:!1}),{refetch:m}=f({searchParams:{filter:`status:active`,limit:`1`},enabled:!1}),h=(0,P.useMemo)(()=>t?.hostSettings?.billing?.enabled===!0&&t.hostSettings.billing.url?t.hostSettings.billing.url:`https://ghost.org/help/`,[t?.hostSettings?.billing]);return(0,P.useMemo)(()=>{let e={isLimited:()=>!1,isDisabled:()=>!1,checkWouldGoOverLimit:()=>Promise.resolve(!1),errorIfWouldGoOverLimit:()=>Promise.resolve(),errorIfIsOverLimit:()=>Promise.resolve()};if(!t?.hostSettings?.limits||l)return e;let r={...t.hostSettings.limits},o=new gt;return r.staff&&(r.staff.currentCountQuery=()=>{let e=n.filter(e=>e.status!==`inactive`&&!e.roles.some(e=>e.name===`Contributor`)),t=a.filter(e=>s?.find(({id:t})=>t===e.role_id)?.name!==`Contributor`);return Promise.resolve(e.length+t.length)}),r.members&&(r.members.currentCountQuery=async()=>{let{data:e}=await p();return e?.meta?.pagination?.total||0}),r.newsletters&&(r.newsletters.currentCountQuery=async()=>{let{data:{pages:e}={pages:[]}}=await m();return e[0].meta?.pagination.total||0}),o.loadLimits({limits:r,helpLink:h,errors:{HostLimitError:i,IncorrectUsageError:_t}}),{isLimited:e=>o.isLimited(e),isDisabled:e=>o.isDisabled(e)??!1,checkWouldGoOverLimit:async e=>await o.checkWouldGoOverLimit(e)??!1,errorIfWouldGoOverLimit:(e,t={})=>o.errorIfWouldGoOverLimit(e,t),errorIfIsOverLimit:e=>o.errorIfIsOverLimit(e)}},[t,p,m,h,a,l,s,n])};export{M as a,A as i,N as n,j as r,vt as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e,t}from"./react-BXwhMTuc.js";import{f as n}from"./chunk-KS7C4IRE-DhOcHQOU.js";import{a as r}from"./router-provider-
|
|
1
|
+
import{s as e,t}from"./react-BXwhMTuc.js";import{f as n}from"./chunk-KS7C4IRE-DhOcHQOU.js";import{a as r}from"./router-provider-DDZvgS3V.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-BmU45Ruy.js → use-pintura-config-CtEV1JQY.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e,t}from"./react-BXwhMTuc.js";import{f as n}from"./hooks-DYfTEQLk.js";import{s as r}from"./config-BPljH6wF.js";import{
|
|
1
|
+
import{s as e,t}from"./react-BXwhMTuc.js";import{f as n}from"./hooks-DYfTEQLk.js";import{s as r}from"./config-BPljH6wF.js";import{Si as i,yi as a}from"./index-DOF2jDq0.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({requestOptions:e}={}){let{data:t}=r({requestOptions:e}),{data:n}=i({requestOptions:e}),l=t?.config?.pintura,[u,d,f]=a(n?.settings??null,[`pintura`,`pintura_js_url`,`pintura_css_url`]),p,m;return u&&(p=l?.js||s(d),m=l?.css||s(f)),(0,o.useMemo)(()=>!p||!m?null:{jsUrl:c(p),cssUrl:c(m)},[p,m])}export{l as t};
|
package/core/built/admin/assets/{use-pintura-editor-Bz2bZ4iT.js → use-pintura-editor-CaxE64kD.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e,t}from"./react-BXwhMTuc.js";import{a as n,i as r}from"./framework-provider-DB-svAju.js";import{f as i,p as a}from"./hooks-DYfTEQLk.js";import{t as o}from"./preload-helper-DYl5dUZ5.js";import{
|
|
1
|
+
import{s as e,t}from"./react-BXwhMTuc.js";import{a as n,i as r}from"./framework-provider-DB-svAju.js";import{f as i,p as a}from"./hooks-DYfTEQLk.js";import{t as o}from"./preload-helper-DYl5dUZ5.js";import{yi as s}from"./index-DOF2jDq0.js";import{n as c}from"./global-data-context-3MItMry2.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{s as e,t}from"./react-BXwhMTuc.js";import{t as n}from"./jsx-runtime-BlNNh7jY.js";import{E as r,t as i}from"./button-D414TI3B.js";import{$t as a,En as o,Gt as s,St as c,Y as l,in as u,tn as d}from"./index-DOF2jDq0.js";var f=e(t(),1),p=n(),m=({object:e,onReply:t,onReplyError:n,className:r,...i})=>{let{data:o}=a(`index`),[s,d]=(0,f.useState)(!1);if(!o)return null;let m=e.attributedTo,h=`Reply...`;return m?.preferredUsername&&m?.id&&(h=`Reply to ${u(m)}...`),(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(`div`,{className:`flex w-full cursor-pointer gap-x-3 py-6 ${r||``}`,onClick:()=>d(!0),...i,children:[(0,p.jsx)(c,{author:o}),(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})})]}),s&&(0,p.jsx)(l,{open:s,replyTo:{object:e,actor:e.attributedTo},onOpenChange:e=>{d(e)},onReply:()=>{t?.(),d(!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 s=(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:s,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)(o,{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:c,hasMoreChildReplies:l}=s(`index`,e);return{threadParents:n&&r?.ancestors?.chain?.map(d)||[],post:r?.post?d(r.post):void 0,processedReplies:(r?.children??[]).map(e=>({mainReply:d(e.post),chain:e.chain?e.chain.map(d):[]})),isLoading:i,loadMoreChildren:a,loadMoreChildReplies:o,hasMoreChildren:c,hasMoreChildReplies:l}}export{m as i,g as n,h as r,_ as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{s as e,t}from"./react-BXwhMTuc.js";import{H as n}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";function r(e,t){let{completed:r,total:i}=e.progress,a=i===0?null:`${n(r)} of ${n(i)}`;return{title:e.status===`preparing`?`Preparing emails`:`Sending emails`,detail:[a,t].filter(Boolean).join(` · `)||null}}var i=e(t(),1),a=10,o=e=>e<=40?0:Math.round(e/60);function s(e,t){return t!==null&&o(e-a)<=t&&t<=o(e+a)?t:o(e)}function c(e){let t=e?.sending,r=e?`${e.id}:${e.sending.status}`:null,a=t?.status===`submitting`?t.progress.estimated_seconds_remaining:null,[o,c]=(0,i.useState)({key:null,minutes:null}),l=a===null?null:s(a,o.key===r?o.minutes:null);return(o.key!==r||o.minutes!==l)&&c({key:r,minutes:l}),l===null?null:l===0?`Less than 1 minute left`:`About ${n(l)} ${l===1?`minute`:`minutes`} left`}export{r as n,c as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{s as e,t}from"./react-BXwhMTuc.js";import{p as n}from"./hooks-DYfTEQLk.js";import{t as r}from"./use-form-DJKZJhQh.js";import{M as i}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{wi as a}from"./index-DOF2jDq0.js";import{n as o}from"./global-data-context-3MItMry2.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{s as e,t}from"./react-BXwhMTuc.js";import{r as n}from"./framework-provider-DB-svAju.js";import{t as r}from"./jsx-runtime-BlNNh7jY.js";import{u as i}from"./chunk-KS7C4IRE-DhOcHQOU.js";import{a}from"./router-provider-DDZvgS3V.js";import{L as o,M as s,P as c}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{t as l}from"./box-LUuYRT-1.js";import{t as u}from"./text-BLI0C8Mc.js";import{a as d,t as f}from"./button-D414TI3B.js";import{$r as p,En as ee}from"./index-DOF2jDq0.js";import{n as te,t as m}from"./dirty-confirm-dialog-BT_Vq9TD.js";var h=r(),g=({shiftY:e,height:t=96,children:n,className:r,contentClassName:i,style:a,...s})=>(0,h.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,h.jsx)(`div`,{className:`sticky bottom-0 z-[298] block h-6 bg-background`}),(0,h.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,h.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`}})]}),_=e(t(),1),v=`bg-modal-backdrop backdrop-blur-[3px]`,y=c(`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}}),b={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,_.forwardRef)(({"aria-label":e,className:t,size:n=`md`,align:r=`center`,width:i,height:a,testId:c,title:x,okLabel:S=`OK`,okLoading:C=!1,cancelLabel:w=`Cancel`,footer:T,footerClassName:E,header:D,leftButton:O,buttonsDisabled:k,okDisabled:ie,padding:ae=!0,onOk:A,okVariant:oe=`default`,onCancel:j,topRightContent:M,hideXOnMobile:se=!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}=s(),{confirm:le,dialogProps:ue}=te(),[q,de]=(0,_.useState)(!1);(0,_.useEffect)(()=>{K(V)},[V,K]);let J=()=>{le(V,()=>{N(),P?.()})};(0,_.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(),j?j():J())})};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)}),(0,_.useEffect)(()=>{let e=setTimeout(()=>de(!0),250);return()=>clearTimeout(e)},[]),(0,_.useEffect)(()=>{if(!A||!W)return;let e=e=>{(e.metaKey||e.ctrlKey)&&e.key===`s`&&(e.preventDefault(),A())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[W,A]);let Y=ae?ne[n]:`p-0`,fe=o(y({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`,b[n],G&&`pointer-events-none`),X=o(Y,`pb-0`,re[n],M&&M!==`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,h.jsxs)(p,{className:he,gap:`none`,justify:`between`,children:[(0,h.jsx)(l,{children:O}),(0,h.jsxs)(p,{gap:`md`,children:[w&&(0,h.jsx)(f,{"data-testid":`cancel-modal`,disabled:k,type:`button`,variant:`outline`,onClick:j||J,children:w}),S&&(0,h.jsxs)(f,{"data-testid":`ok-modal`,disabled:k||ie||C,type:`button`,variant:oe,onClick:()=>void A?.(),children:[C&&(0,h.jsx)(ee,{size:`sm`}),S]})]})]})),R&&(Q=(0,h.jsx)(g,{height:84,children:Q}));let $=x&&(0,h.jsx)(u,{as:`h3`,className:`md:text-2xl`,leading:`heading`,size:`xl`,weight:`bold`,children:x}),_e=M&&M!==`close`?(0,h.jsxs)(p,{as:`header`,className:X,gap:`lg`,justify:`between`,children:[$,M]}):(0,h.jsxs)(`header`,{className:X,children:[$,(0,h.jsx)(l,{className:o(`absolute top-6 right-6`,M!==`close`&&`md:hidden`,se&&`hidden`),children:(0,h.jsx)(f,{"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,h.jsx)(d,{})})})]});return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(l,{className:pe,id:`modal-backdrop`,onMouseDown:ge,children:[(0,h.jsx)(l,{className:o(`pointer-events-none fixed inset-0 z-0`,I&&!U&&v,U&&`bg-form-sheet-backdrop`)}),(0,h.jsxs)(`section`,{ref:ce,"aria-label":e,className:fe,"data-testid":c,style:Z,children:[D!==!1&&_e,(0,h.jsx)(l,{className:me,children:F}),Q]})]}),(0,h.jsx)(m,{...ue})]})});x.displayName=`SettingsModal`;var S=(0,_.createContext)({updateSection:()=>{},updateNav:()=>{},currentSection:null,updateNavigatedSection:()=>{},scrollToSection:()=>{}}),C=()=>(0,_.useContext)(S),w=e=>{let{updateSection:t}=C(),n=(0,_.useRef)(null);return(0,_.useEffect)(()=>{e&&n.current&&t(e,n.current)},[e,t]),{ref:n}},T=e=>{let{updateNav:t}=C(),n=(0,_.useRef)(null);return(0,_.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:r}=n(),{scrollToSection:o}=C();return{route:(0,_.useMemo)(()=>t.pathname.replace(/^\/settings\/?/,``),[t.pathname]),updateRoute:(0,_.useCallback)(n=>{if(typeof n==`object`&&n.isExternal){r(n);return}let i=typeof n==`string`?{route:n}:n,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})},[r,e,t.pathname,t.search,o])}}export{T as a,C as i,S as n,x as o,w as r,g as s,E as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{s as e,t}from"./react-BXwhMTuc.js";import{t as n}from"./jsx-runtime-BlNNh7jY.js";import{L as r,P as i}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{t as a}from"./grid-BEUIDQX7.js";import{t as o}from"./text-BLI0C8Mc.js";import{i as s,n as c}from"./use-limiter-DlL7au90.js";import{f as l}from"./users-C60_hpn6.js";import{$r as u,Qr as d}from"./index-DOF2jDq0.js";import{t as f}from"./validator-DlFQP70j.js";import{n as p}from"./global-data-context-3MItMry2.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)(u,{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)(d,{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)(o,{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)(o,{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)(d,{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)(d,{ref:n,className:e,gap:`none`,...t}));w.displayName=`SettingGroupValue`;var T=m.forwardRef(({className:e,...t},n)=>(0,h.jsx)(o,{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)(u,{ref:n,as:`div`,className:e,gap:`none`,...t}));E.displayName=`SettingGroupValueContent`;var D=e(f(),1),ee=e=>e.replace(/[\\\]^-]/g,`\\$&`),te=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),O=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}`:``}${ee(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))}},ne=e=>{try{return decodeURIComponent(e)}catch{return e}},k=e=>{let{domains:t,www:n,regionalSubdomain:r,pathTypes:i,fullPath:a,transformUsername:o,errors:s}=e,c=i.map(e=>({...e,check:O(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=>te(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=ne(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}}}},A=`The URL must be in a format like https://www.facebook.com/yourPage`,j=k({domains:[`facebook.com`],www:!0,fullPath:!0,pathTypes:[{urlPrefix:``,storagePrefix:``,rule:{patterns:[/^\S+$/]}}],errors:{invalidUrl:A,invalidUsername:A}}),M=j.validate,re=j.handleToUrl,ie=j.urlToHandle,N=k({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,se=N.urlToHandle,P={extra:`._`,min:1,max:30,notAtBoundary:`.`,notConsecutive:`.`},F=k({domains:[`instagram.com`],www:!0,pathTypes:[{urlPrefix:``,storagePrefix:``,rule:P}],errors:{invalidUrl:`The URL must be in a format like https://www.instagram.com/yourUsername`,invalidUsername:`Your Username is not a valid Instagram Username`}}),ce=F.validate,le=F.handleToUrl,ue=F.urlToHandle,I=k({domains:[`threads.net`,`threads.com`],www:!0,pathTypes:[{urlPrefix:`@`,storagePrefix:`@`,rule:P},{urlPrefix:``,storagePrefix:`@`,rule:P}],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`}}),L=I.validate,R=I.handleToUrl,z=I.urlToHandle,B=k({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`}}),V=B.validate,H=B.handleToUrl,U=B.urlToHandle,W={unicode:!0,extra:`-`,min:3,max:100},G={...W,extra:`-_`},K=k({domains:[`linkedin.com`],www:!0,regionalSubdomain:`[a-z]{2}`,pathTypes:[{urlPrefix:`in/`,storagePrefix:``,handleAliases:[`in/`],rule:W},{urlPrefix:`pub/`,storagePrefix:`pub/`,rule:{...W,nestedSegments:!0}},{urlPrefix:`company/`,storagePrefix:`company/`,rule:G},{urlPrefix:`school/`,storagePrefix:`school/`,rule:G}],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`}}),de=K.validate,fe=K.handleToUrl,pe=K.urlToHandle,q=k({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`}}),me=q.validate,he=q.handleToUrl,ge=q.urlToHandle,J=k({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`}}),_e=J.validate,ve=J.handleToUrl,ye=J.urlToHandle;function be(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 xe=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)},Se=e=>e.replace(/^https?:\/\//,``),Ce=[`twitter`,`facebook`,`linkedin`,`bluesky`,`threads`,`mastodon`,`tiktok`,`youtube`,`instagram`],Y=(e,t)=>{if(!e)return``;try{return t(e)}catch{return e}},X=[{key:`twitter`,staffTitle:`X`,publicationTitle:`X`,placeholder:`https://x.com/username`,testId:`x-input`,validate:ae,toDisplayValue:e=>Y(e,oe),toStoredValue:e=>se(e)},{key:`facebook`,staffTitle:`Facebook`,publicationTitle:`Facebook`,placeholder:`https://www.facebook.com/username`,testId:`facebook-input`,validate:M,toDisplayValue:e=>Y(e,re),toStoredValue:e=>ie(e)},{key:`linkedin`,staffTitle:`LinkedIn`,publicationTitle:`LinkedIn`,placeholder:`https://www.linkedin.com/in/username`,testId:`linkedin-input`,validate:de,toDisplayValue:e=>Y(e,fe),toStoredValue:e=>pe(e)},{key:`bluesky`,staffTitle:`Bluesky`,publicationTitle:`Bluesky`,placeholder:`https://bsky.app/profile/username`,testId:`bluesky-input`,validate:V,toDisplayValue:e=>Y(e,H),toStoredValue:e=>U(e)},{key:`threads`,staffTitle:`Threads`,publicationTitle:`Threads`,placeholder:`https://threads.net/@username`,testId:`threads-input`,validate:L,toDisplayValue:e=>Y(e,R),toStoredValue:e=>z(e)},{key:`mastodon`,staffTitle:`Mastodon`,publicationTitle:`Mastodon`,placeholder:`https://mastodon.social/@username`,testId:`mastodon-input`,validate:be,toDisplayValue:e=>Y(e,xe),toStoredValue:e=>e?Se(e):null},{key:`tiktok`,staffTitle:`TikTok`,publicationTitle:`TikTok`,placeholder:`https://www.tiktok.com/@username`,testId:`tiktok-input`,validate:_e,toDisplayValue:e=>Y(e,ve),toStoredValue:e=>ye(e)},{key:`youtube`,staffTitle:`YouTube`,publicationTitle:`YouTube`,placeholder:`https://www.youtube.com/@channel`,testId:`youtube-input`,validate:me,toDisplayValue:e=>Y(e,he),toStoredValue:e=>ge(e)},{key:`instagram`,staffTitle:`Instagram`,publicationTitle:`Instagram`,placeholder:`https://www.instagram.com/username`,testId:`instagram-input`,validate:ce,toDisplayValue:e=>Y(e,le),toStoredValue:e=>ue(e)}],Z=Object.fromEntries(X.map(e=>[e.key,e])),we=(e,t)=>{let n=Z[e],r=n.validate(t),i=r?n.toStoredValue(r):null;return{displayValue:n.toDisplayValue(i),storedValue:i}},Q=(e,t)=>{try{return Z[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 Te(e,t){return e.filter(e=>e.roles.find(e=>t.includes(e.name)))}function Ee(e){return $(e,`Owner`)[0]}var De=()=>{let{currentUser:e}=p(),{data:{users:t,meta:n,isEnd:r}={users:[]},isLoading:i,fetchNextPage:a}=l(),{data:{invites:o,meta:u,isEnd:d}={invites:[]},isLoading:f,fetchNextPage:h}=s(),{data:{roles:g}={},isLoading:_}=c(),v=(0,m.useMemo)(()=>Ee(t),[t]),y=(0,m.useMemo)(()=>$(t,`Administrator`),[t]),b=(0,m.useMemo)(()=>Te(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:u?.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:d===!1,fetchNextPage:a,fetchNextInvitePage:h}};export{we as a,C as c,v as d,b as f,T as h,Q as i,x as l,E as m,X as n,_ as o,w as p,Ce as r,S as s,De as t,y as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{k as e}from"./hooks-DYfTEQLk.js";import{t}from"./use-tinybird-token-CnZ19NDf.js";import{Mi as n}from"./index-DOF2jDq0.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.searchParams.set(`ghost_client`,`admin`),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};
|
package/core/built/admin/assets/{use-tinybird-token-Lk1RSn0t.js → use-tinybird-token-CnZ19NDf.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e,t}from"./react-BXwhMTuc.js";import{r as n}from"./hooks-DYfTEQLk.js";import{
|
|
1
|
+
import{s as e,t}from"./react-BXwhMTuc.js";import{r as n}from"./hooks-DYfTEQLk.js";import{Mi as r}from"./index-DOF2jDq0.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,4 +1,4 @@
|
|
|
1
|
-
import{s as e,t}from"./react-BXwhMTuc.js";import{t as n}from"./react-dom-CMOtJ5MH.js";import{t as r}from"./jsx-runtime-BlNNh7jY.js";import{
|
|
1
|
+
import{s as e,t}from"./react-BXwhMTuc.js";import{t as n}from"./react-dom-CMOtJ5MH.js";import{t as r}from"./jsx-runtime-BlNNh7jY.js";import{L as i}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{Vt as a}from"./button-D414TI3B.js";import{yn as o}from"./index-DOF2jDq0.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{s as e,t}from"./react-BXwhMTuc.js";import{T as n,g as r,m as i,n as a,p as o,r as s}from"./hooks-DYfTEQLk.js";import{t as c}from"./jsx-runtime-BlNNh7jY.js";import{n as l}from"./dist-DziNzWI2.js";import{t as u}from"./use-form-DJKZJhQh.js";import{h as d,u as f}from"./chunk-KS7C4IRE-DhOcHQOU.js";import{a as p}from"./router-provider-DDZvgS3V.js";import{H as m,Z as h,c as g}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{t as _}from"./text-BLI0C8Mc.js";import{n as v,t as y}from"./use-limiter-DlL7au90.js";import{_ as b,c as x,d as S,g as ee,h as C,m as w,o as T,p as te,s as ne,t as E,u as re}from"./users-C60_hpn6.js";import{D as ie,Pn as ae,bt as oe,g as se,t as D}from"./button-D414TI3B.js";import{i as O,n as k,o as A,s as j,t as M}from"./select-D_4xWFYv.js";import{i as N,n as ce,r as le,t as ue}from"./tabs-BZyz4ZCH.js";import{t as P}from"./switch-DoOJF2yg.js";import{t as de}from"./dropzone-B2auMkf2.js";import{o as fe,t as pe}from"./use-settings-navigation-CzGU4sus.js";import{i as F,n as I,o as L,r as R,t as z}from"./field-BXEh3ptU.js";import{t as B}from"./textarea-C5qolByg.js";import{B as me,Dn as V,Qn as he,Zr as ge,_i as _e,cr as ve,er as ye,nr as H}from"./index-DOF2jDq0.js";import{a as be,c as xe,i as Se,n as Ce,o as we,r as Te,s as Ee,t as De}from"./images-H-BIm8OQ.js";import{a as Oe,c as U,i as W,n as G,o as K,r as ke,t as Ae}from"./use-staff-users-DoeXaPsb.js";import{t as je}from"./validator-DlFQP70j.js";import{n as Me}from"./confirmation-context-znVJD4pX.js";import{n as q}from"./global-data-context-3MItMry2.js";import{t as Ne}from"./use-upgrade-route-CVjDlNSs.js";import{t as J}from"./api-keys-BHKATUqQ.js";import{t as Pe}from"./use-pintura-editor-CaxE64kD.js";var Y=c(),Fe=({user:e,setUserData:t})=>{let{config:n,settings:r}=q(),i=_e(r||[],n||{});return(0,Y.jsxs)(U,{children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-sm font-medium tracking-wide text-gray-700 uppercase`,children:`Engagement`}),(0,Y.jsxs)(`div`,{className:`mt-3 flex flex-col gap-4`,children:[(0,Y.jsxs)(z,{orientation:`horizontal`,children:[(0,Y.jsxs)(I,{children:[(0,Y.jsx)(L,{htmlFor:`comment-notifications`,children:`Comments`}),(0,Y.jsx)(R,{children:`Every time a member comments on one of your posts`})]}),(0,Y.jsx)(P,{checked:!!e.comment_notifications,id:`comment-notifications`,onCheckedChange:n=>t({...e,comment_notifications:n})})]}),T(e)&&(0,Y.jsxs)(z,{orientation:`horizontal`,children:[(0,Y.jsxs)(I,{children:[(0,Y.jsx)(L,{htmlFor:`recommendation-notifications`,children:`Recommendations`}),(0,Y.jsx)(R,{children:`Every time another publisher recommends you to their audience`})]}),(0,Y.jsx)(P,{checked:!!e.recommendation_notifications,id:`recommendation-notifications`,onCheckedChange:n=>t({...e,recommendation_notifications:n})})]})]})]}),T(e)&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-sm font-medium tracking-wide text-gray-700 uppercase`,children:`Members`}),(0,Y.jsxs)(`div`,{className:`mt-3 flex flex-col gap-4`,children:[(0,Y.jsxs)(z,{orientation:`horizontal`,children:[(0,Y.jsxs)(I,{children:[(0,Y.jsx)(L,{htmlFor:`free-member-signup-notifications`,children:`New signups`}),(0,Y.jsx)(R,{children:`Every time a new free member signs up`})]}),(0,Y.jsx)(P,{checked:!!e.free_member_signup_notification,id:`free-member-signup-notifications`,onCheckedChange:n=>t({...e,free_member_signup_notification:n})})]}),i&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(z,{orientation:`horizontal`,children:[(0,Y.jsxs)(I,{children:[(0,Y.jsx)(L,{htmlFor:`paid-subscription-started-notifications`,children:`New paid members`}),(0,Y.jsx)(R,{children:`Every time a member starts a new paid subscription`})]}),(0,Y.jsx)(P,{checked:!!e.paid_subscription_started_notification,id:`paid-subscription-started-notifications`,onCheckedChange:n=>t({...e,paid_subscription_started_notification:n})})]}),(0,Y.jsxs)(z,{orientation:`horizontal`,children:[(0,Y.jsxs)(I,{children:[(0,Y.jsx)(L,{htmlFor:`paid-subscription-canceled-notifications`,children:`Paid member cancellations`}),(0,Y.jsx)(R,{children:`Every time a member cancels their paid subscription`})]}),(0,Y.jsx)(P,{checked:!!e.paid_subscription_canceled_notification,id:`paid-subscription-canceled-notifications`,onCheckedChange:n=>t({...e,paid_subscription_canceled_notification:n})})]})]})]})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-sm font-medium tracking-wide text-gray-700 uppercase`,children:`Revenue`}),(0,Y.jsxs)(`div`,{className:`mt-3 flex flex-col gap-4`,children:[(0,Y.jsxs)(z,{orientation:`horizontal`,children:[(0,Y.jsxs)(I,{children:[(0,Y.jsx)(L,{htmlFor:`milestone-notifications`,children:`Milestones`}),(0,Y.jsx)(R,{children:i?`Occasional summaries of your audience & revenue growth`:`Occasional summaries of your audience growth`})]}),(0,Y.jsx)(P,{checked:!!e.milestone_notifications,id:`milestone-notifications`,onCheckedChange:n=>t({...e,milestone_notifications:n})})]}),i&&(0,Y.jsxs)(z,{orientation:`horizontal`,children:[(0,Y.jsxs)(I,{children:[(0,Y.jsx)(L,{htmlFor:`donation-notifications`,children:`Tips & donations`}),(0,Y.jsx)(R,{children:`Every time you receive a one-time payment`})]}),(0,Y.jsx)(P,{checked:!!e.donation_notifications,id:`donation-notifications`,onCheckedChange:n=>t({...e,donation_notifications:n})})]}),i&&(0,Y.jsxs)(z,{orientation:`horizontal`,children:[(0,Y.jsxs)(I,{children:[(0,Y.jsx)(L,{htmlFor:`gift-subscription-notifications`,children:`Gift subscriptions`}),(0,Y.jsx)(R,{children:`Every time someone purchases or redeems a gift subscription`})]}),(0,Y.jsx)(P,{checked:!!e.gift_subscription_notifications,id:`gift-subscription-notifications`,onCheckedChange:n=>t({...e,gift_subscription_notifications:n})})]})]})]})]})]})},Ie=({user:e,setUserData:t})=>(0,Y.jsx)(K,{variant:`plain`,children:(0,Y.jsx)(Fe,{setUserData:t,user:e})}),X=e(t(),1),Le=[`1234567890`,`qwertyuiop`,`qwertzuiop`,`asdfghjkl;`,`abcdefghij`,`0987654321`,`1q2w3e4r5t`,`12345asdfg`],Re=[`ghost`,`password`,`passw0rd`],ze=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},Be=({user:e})=>{let{currentUser:t,config:r,siteData:i}=q(),[a,s]=(0,X.useState)(!1),[c,u]=(0,X.useState)(``),[d,f]=(0,X.useState)(``),[p,m]=(0,X.useState)(``),[h,g]=(0,X.useState)(``),[_,v]=(0,X.useState)({}),y=(0,X.useRef)(null),x=(0,X.useRef)(null),S=(0,X.useRef)(null),{mutateAsync:ee}=b(),C=o(),w=e.id===t.id,T=({password:t,confirmPassword:n})=>{if(w&&!c)return{oldPassword:`Your current password is required to set a new one`};if(t!==n)return{newPassword:`Your new passwords do not match`,confirmNewPassword:`Your new passwords do not match`};let a=r.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 Le)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 Re)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||!ze(t)?{newPassword:`Sorry, you cannot use an insecure password.`}:{}};(0,X.useEffect)(()=>{h===`saved`&&setTimeout(()=>{g(``),s(!1)},2500)},[h]),(0,X.useEffect)(()=>{a&&setTimeout(()=>{w?S.current?.focus():y.current?.focus()},100)},[a,w]);let te=()=>{s(!0)},ne=async()=>{g(`saving`);let t=T({password:d,confirmPassword:p});if(v(t),Object.keys(t).length>0){g(``);return}try{await ee({newPassword:d,confirmNewPassword:p,oldPassword:c,userId:e?.id}),g(`saved`)}catch(e){g(``),l.error(e instanceof n?e.message:`Couldn't update password. Please try again.`),C(e,{withToast:!1})}},E=`Save password`;h===`saving`?E=`Saving...`:h===`saved`&&(E=`Saved`);let re=(0,Y.jsxs)(Y.Fragment,{children:[w&&(0,Y.jsxs)(z,{"data-invalid":!!_.oldPassword||void 0,children:[(0,Y.jsx)(L,{htmlFor:`old-password`,children:`Old password`}),(0,Y.jsx)(V,{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,Y.jsx)(F,{children:_.oldPassword})]}),(0,Y.jsxs)(z,{"data-invalid":!!_.newPassword||void 0,children:[(0,Y.jsx)(L,{htmlFor:`new-password`,children:`New password`}),(0,Y.jsx)(V,{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,Y.jsx)(F,{children:_.newPassword})]}),(0,Y.jsxs)(z,{"data-invalid":!!_.confirmNewPassword||void 0,children:[(0,Y.jsx)(L,{htmlFor:`confirm-password`,children:`Confirm new password`}),(0,Y.jsx)(V,{ref:x,"aria-invalid":!!_.confirmNewPassword||void 0,"data-testid":`confirm-password`,id:`confirm-password`,type:`password`,value:p,onChange:e=>m(e.target.value)}),_.confirmNewPassword&&(0,Y.jsx)(F,{children:_.confirmNewPassword})]}),(0,Y.jsxs)(`div`,{className:`mt-1 flex items-center justify-end gap-3`,children:[(0,Y.jsx)(D,{type:`button`,variant:`outline`,onClick:()=>{s(!1),u(``),f(``),m(``),v({})},children:`Cancel`}),(0,Y.jsx)(D,{"data-testid":`save-password-button`,type:`button`,onClick:()=>void ne(),children:E})]})]});return(0,Y.jsx)(Y.Fragment,{children:a?re:(0,Y.jsxs)(`div`,{className:`relative flex flex-col`,children:[(0,Y.jsxs)(z,{className:`grow`,"data-disabled":!0,children:[(0,Y.jsx)(L,{htmlFor:`current-password`,children:`Password`}),(0,Y.jsx)(V,{id:`current-password`,type:`password`,value:`••••••••••••`,disabled:!0})]}),(0,Y.jsx)(D,{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`})]})})},Z=({user:e,setUserData:t})=>{let{data:{roles:n}={}}=v(),r=ge(`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)),S(e)){let e={label:`Owner`,value:`owner`};return(0,Y.jsxs)(z,{children:[(0,Y.jsx)(L,{children:`Role`}),(0,Y.jsxs)(M,{value:e.value,disabled:!0,children:[(0,Y.jsx)(A,{"aria-label":`Role`,children:(0,Y.jsx)(j,{})}),(0,Y.jsx)(k,{children:(0,Y.jsx)(O,{value:e.value,children:e.label})})]}),(0,Y.jsxs)(R,{children:[`This user is the owner of the site.`,` `,(0,Y.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,Y.jsxs)(z,{children:[(0,Y.jsx)(L,{children:`Role`}),(0,Y.jsxs)(M,{value:a,onValueChange:r=>{let i=n?.find(e=>e.name.toLowerCase()===r.toLowerCase());i&&t?.({...e,roles:[i]})},children:[(0,Y.jsx)(A,{"aria-label":`Role`,"data-testid":`role-select`,children:(0,Y.jsx)(j,{children:o})}),(0,Y.jsx)(k,{children:i.map(e=>(0,Y.jsx)(O,{value:e.value,children:(0,Y.jsxs)(`span`,{className:`flex flex-col`,children:[(0,Y.jsx)(`span`,{children:e.label}),(0,Y.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:e.hint})]})},e.value))})]})]})},Ve=s({dataType:`StaffTokenResponseType`,path:`/users/me/token/`}),Q=a({path:()=>`/users/me/token/`,method:`PUT`}),$=()=>{let{refetch:e}=Ve({enabled:!1}),t=o(),{confirm:n}=Me(),[r,i]=(0,X.useState)(``),{mutateAsync:a}=Q();return(0,X.useEffect)(()=>{(async()=>{let t=await e();t?.data?.apiKey&&i(`${t.data.apiKey.id}:${t.data.apiKey.secret}`)})()},[e]),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(_,{as:`h6`,className:`mb-2 text-base`,weight:`semibold`,children:`Staff access token`}),(0,Y.jsx)(J,{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)}}})}}]})]})},He=({errors:e,clearError:t,user:n,setUserData:r})=>{let{currentUser:i,siteData:a}=q(),o=me(a);return(0,Y.jsxs)(U,{children:[(0,Y.jsxs)(z,{"data-invalid":!!e?.email||void 0,children:[(0,Y.jsx)(L,{htmlFor:`staff-email`,children:`Email`}),(0,Y.jsx)(V,{"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,Y.jsx)(F,{children:e.email}):(0,Y.jsx)(R,{children:`Used for notifications`})]}),(0,Y.jsx)(Be,{user:n}),T(i)&&(0,Y.jsx)(Z,{setUserData:r,user:n}),(0,Y.jsxs)(z,{"data-invalid":!!e?.name||void 0,children:[(0,Y.jsx)(L,{htmlFor:`staff-name`,children:`Full name`}),(0,Y.jsx)(V,{"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,Y.jsx)(F,{children:e.name}):(0,Y.jsx)(R,{children:`Use your real name so people can recognize you`})]}),(0,Y.jsxs)(z,{children:[(0,Y.jsx)(L,{htmlFor:`staff-slug`,children:`Slug`}),(0,Y.jsx)(V,{id:`staff-slug`,maxLength:191,value:n.slug,onChange:e=>r({...n,slug:e.target.value})}),(0,Y.jsxs)(R,{children:[o,`author/`,n.slug]})]}),(0,Y.jsxs)(z,{"data-invalid":!!e?.location||void 0,children:[(0,Y.jsx)(L,{htmlFor:`staff-location`,children:`Location`}),(0,Y.jsx)(V,{"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,Y.jsx)(F,{children:e.location}):(0,Y.jsx)(R,{children:`Where in the world do you live?`})]}),(0,Y.jsxs)(z,{"data-invalid":!!e?.bio||void 0,children:[(0,Y.jsx)(L,{htmlFor:`staff-bio`,children:`Bio`}),(0,Y.jsx)(B,{"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,Y.jsx)(F,{children:e.bio}):(0,Y.jsxs)(R,{children:[`Recommended: `,m(250),` characters. You‘ve used`,` `,(0,Y.jsx)(`span`,{className:`font-bold`,children:m(n.bio?.length||0)})]})]}),n.id===i.id&&(0,Y.jsx)($,{})]})},Ue=e=>(0,Y.jsx)(K,{variant:`plain`,children:(0,Y.jsx)(He,{...e})}),We=({errors:e,clearError:t,validateField:n,user:r,setUserData:i})=>{let[a,o]=(0,X.useState)(()=>Object.fromEntries(G.map(e=>{let t=r[e.key];return[e.key,e.toDisplayValue(t)]})));return(0,Y.jsxs)(U,{children:[(0,Y.jsxs)(z,{"data-invalid":!!e?.website||void 0,children:[(0,Y.jsx)(L,{htmlFor:`staff-website`,children:`Website`}),(0,Y.jsx)(V,{"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,Y.jsx)(F,{children:e.website})]}),G.map(s=>(0,Y.jsxs)(z,{"data-invalid":!!e?.[s.key]||void 0,children:[(0,Y.jsx)(L,{htmlFor:`staff-${s.key}`,children:s.staffTitle}),(0,Y.jsx)(V,{"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}=Oe(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,Y.jsx)(F,{children:e[s.key]})]},s.key))]})},Ge=e=>(0,Y.jsx)(K,{variant:`plain`,children:(0,Y.jsx)(We,{...e})}),Ke=e(je(),1),qe={name:({name:e})=>{let t=``;return e||(t=`Name is required`),e&&e.length>191&&(t=`Name is too long`),t},email:({email:e})=>Ke.default.isEmail(e||``)?``:`Enter a valid email address`,url:({url:e})=>!e||Ke.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||Ke.default.isURL(e)&&e.length<=2e3?``:`Enter a valid URL`,...Object.fromEntries(G.map(e=>[e.key,t=>W(e.key,t[e.key])]))},Je=({user:e,onDeletingUserChange:t})=>{let{isAdmin7:n}=g(),{updateRoute:i}=pe(),a=p(),s=Ne(),c=f(),d=e=>{let t=e.split(`/`).pop()||``;return t===`social-links`||t===`email-notifications`?t:`profile`},{ownerUser:m}=Ae(),{currentUser:v}=q(),b=o(),{confirm:C,showLimit:O}=Me(),{formState:k,setFormState:A,saveState:j,handleSave:M,updateForm:P,errors:F,setErrors:I,clearError:L,okProps:R}=u({initialState:e,savingDelay:500,savedDelay:500,onValidate:t=>Object.entries(qe).reduce((n,[r,i])=>{if(ke.includes(r)&&t[r]===e[r])return n;let a=i(t);return a&&(n[r]=a),n},{}),onSave:async t=>{let n=(await V?.(t))?.users?.[0];if(n&&(A(()=>n),n.slug!==e.slug)){let e=d(c.pathname),t=e===`profile`?``:`/${e}`;i({route:`staff/${n.slug}${t}`,replace:!0})}},onSaveError:b}),z=e=>P(()=>e),B=(e,t)=>{let n=qe[e]?.({[e]:t});return n?(I({...F,[e]:n}),!1):(L(e),!0)},{mutateAsync:me}=Ce(),{mutateAsync:V}=w(),{mutateAsync:ge}=te(),{mutateAsync:_e}=ee(),Oe=y(),U=Pe(),W=(0,X.useCallback)(()=>{E(v)?i(`staff`):a(`/`)},[v,a,i]),G=async e=>{if(e.status===`inactive`&&e.roles[0].name!==`Contributor`)try{await Oe?.errorIfWouldGoOverLimit(`staff`)}catch(e){if(e instanceof r){O({formSheet:!0,prompt:e.message||`Your current plan doesn't support more users.`,onOk:()=>i({route:s,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.`),C({title:`Are you sure you want to suspend this user?`,prompt:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.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 V(n),A(()=>n),t?.remove(),l.success(e.status===`inactive`?`User un-suspended`:`User suspended`)}catch(e){b(e)}}})},K=(n,{owner:r})=>{C({title:`Are you sure you want to delete this user?`,prompt:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`p`,{className:`mb-3`,children:[(0,Y.jsx)(`span`,{className:`font-bold`,children:n.name||n.email}),` will be permanently deleted and all their posts will be automatically assigned to`,` `,(0,Y.jsx)(`span`,{className:`font-bold`,children:r.name}),`.`]}),(0,Y.jsxs)(`p`,{children:[`To make these easy to find in the future, each post will be given an internal tag of`,` `,(0,Y.jsxs)(`span`,{className:`font-bold`,children:[`#`,e.slug]})]})]}),okLabel:`Delete user`,okVariant:`destructive`,onOk:async e=>{t(!0);try{await ge(n?.id),e?.remove(),W(),setTimeout(()=>l.success(`User deleted`),100)}catch(e){t(!1),b(e)}}})},je=()=>{C({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 _e(e.id),t?.remove(),l.success(`Ownership transferred`)}catch(e){b(e)}}})},J=async(e,t)=>{try{let n=De(await me({file:t}));switch(e){case`cover_image`:P(e=>({...e,cover_image:n}));break;case`profile_image`:P(e=>({...e,profile_image:n}));break}}catch(e){let t=e;t.response.status===415&&(t.message=`Unsupported file type`),b(t)}},Fe=e=>{switch(e){case`cover_image`:P(e=>({...e,cover_image:``}));break;case`profile_image`:P(e=>({...e,profile_image:``}));break}},Le=T(v)||re(v)&&x(e),Re=S(v)&&ne(k)&&k.status!==`inactive`,ze=k.id!==v.id&&(T(v)&&!S(e)||re(v)&&x(e)),Be=k.status===`inactive`?`Un-suspend user`:`Suspend user`,Z=`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`,Ve=k.status===`inactive`?` (Suspended)`:``,Q=!E(v),$=`mx-auto w-full max-w-[536px]`,[He,We]=(0,X.useState)(d(c.pathname));return(0,Y.jsx)(fe,{animate:!Q,backDrop:!Q,buttonsDisabled:R.disabled,cancelLabel:`Close`,dirty:j===`unsaved`,footerClassName:Q?`mx-auto w-full max-w-[calc(536px+5rem)]`:void 0,hideXOnMobile:!0,okLabel:R.label||`Save`,okVariant:R.variant,size:Q?`bleed`:`md`,stickyFooter:!0,testId:`user-detail-modal`,width:Q?`full`:600,onClose:W,onOk:async()=>{await M({fakeWhenUnchanged:!0})},children:(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`div`,{className:`relative ${Q?`-mx-10 -mt-10`:`-mx-8 -mt-8 rounded-t`}`,children:(0,Y.jsx)(`div`,{className:h(`flex flex-wrap items-end justify-between gap-8 p-8`,k.cover_image&&`bg-cover bg-center`,Q&&k.cover_image&&`min-h-[30vmin]`),style:{backgroundImage:k.cover_image?`url(${k.cover_image})`:`none`},children:(0,Y.jsxs)(`div`,{className:h(`flex w-full flex-col gap-2`,Q&&$),children:[(0,Y.jsxs)(`div`,{className:`flex flex-nowrap items-start justify-between gap-3`,children:[(0,Y.jsx)(`div`,{children:(0,Y.jsx)(Te,{className:`-ml-1 size-20 overflow-visible rounded-full`,children:k.profile_image?(0,Y.jsxs)(xe,{className:`rounded-full`,children:[(0,Y.jsx)(Ee,{"data-testid":`profile-image-preview`,id:`avatar`,src:k.profile_image}),(0,Y.jsxs)(be,{className:`top-1 right-1`,children:[U.isEnabled&&(0,Y.jsx)(Se,{"aria-label":`Edit profile image`,className:`rounded-full`,onClick:()=>U.openEditor({image:k.profile_image||``,handleSave:async e=>J(`profile_image`,e)}),children:(0,Y.jsx)(oe,{})}),(0,Y.jsx)(Se,{"aria-label":`Remove profile image`,className:`rounded-full`,onClick:()=>Fe(`profile_image`),children:(0,Y.jsx)(ie,{})})]})]}):(0,Y.jsx)(we,{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,Y.jsx)(se,{className:`size-8 text-surface-inverse-foreground`})})})}),(0,Y.jsxs)(`div`,{className:`flex flex-nowrap items-start gap-3`,children:[k.cover_image?(0,Y.jsxs)(`div`,{className:`flex flex-nowrap items-end justify-end gap-4`,children:[(0,Y.jsx)(`img`,{alt:``,className:`hidden`,"data-testid":`cover-image-preview`,src:k.cover_image}),U.isEnabled&&(0,Y.jsx)(D,{className:Z,type:`button`,onClick:()=>U.openEditor({image:k.cover_image||``,handleSave:async e=>J(`cover_image`,e)}),children:`Edit cover image`}),(0,Y.jsx)(D,{className:Z,type:`button`,onClick:()=>Fe(`cover_image`),children:`Delete cover image`})]}):(0,Y.jsx)(de,{className:`h-8`,inputId:`cover-image`,inputTestId:`cover-image-upload`,variant:`button`,onDropAccepted:e=>void J(`cover_image`,e[0]),children:`Upload cover image`}),Le&&(0,Y.jsx)(`div`,{className:`z-10`,children:(0,Y.jsxs)(he,{children:[(0,Y.jsx)(ve,{asChild:!0,children:n?(0,Y.jsx)(D,{"aria-label":`Actions`,className:k.cover_image?h(Z,`p-0`):void 0,size:`icon`,type:`button`,variant:`outline`,children:(0,Y.jsx)(ae,{})}):(0,Y.jsxs)(`button`,{className:h(`flex h-8 cursor-pointer items-center justify-center rounded px-3`,k.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,Y.jsx)(`span`,{className:`sr-only`,children:`Actions`}),(0,Y.jsx)(ae,{className:h(`size-5`,k.cover_image&&`text-white`)})]})}),(0,Y.jsxs)(ye,{align:`end`,className:`z-[9999]`,children:[Re&&(0,Y.jsx)(H,{onSelect:je,children:`Make owner`}),(0,Y.jsx)(H,{onSelect:()=>{i(`history/view/${k.id}`)},children:`View user activity`}),ze&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(H,{onSelect:()=>{G(k)},children:Be}),(0,Y.jsx)(H,{className:`text-destructive focus:text-destructive`,onSelect:()=>{K(e,{owner:m})},children:`Delete user`})]})]})]})})]})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(_,{as:`h3`,className:h(`break-words md:text-2xl md:break-normal`,k.cover_image?`text-white`:`text-foreground`),leading:`heading`,size:`xl`,weight:`bold`,children:[e.name,Ve]}),(0,Y.jsx)(`span`,{className:h(`text-md font-medium capitalize`,k.cover_image?`text-white`:`text-black dark:text-white`),children:e.roles[0].name.toLowerCase()})]})]})})}),(0,Y.jsx)(`div`,{className:h(`mt-6 flex flex-col`,Q&&$),children:(0,Y.jsxs)(ue,{value:He,variant:`underline`,onValueChange:t=>{let n=t===`profile`?``:`/${t}`;i(`staff/${e.slug}${n}`),We(t)},children:[(0,Y.jsxs)(le,{children:[(0,Y.jsx)(N,{title:`Profile`,value:`profile`,children:`Profile`}),(0,Y.jsx)(N,{title:`Social Links`,value:`social-links`,children:`Social Links`}),(0,Y.jsx)(N,{title:`Email Notifications`,value:`email-notifications`,children:`Email Notifications`})]}),(0,Y.jsx)(ce,{className:`pt-4`,value:`profile`,children:(0,Y.jsx)(Ue,{clearError:L,errors:F,setUserData:z,user:k,validateField:B})}),(0,Y.jsx)(ce,{className:`pt-4`,value:`social-links`,children:(0,Y.jsx)(Ge,{clearError:L,errors:F,setUserData:z,user:k,validateField:B})}),(0,Y.jsx)(ce,{className:`pt-4`,value:`email-notifications`,children:(0,Y.jsx)(Ie,{setUserData:z,user:k})})]})})]})})},Ye=()=>{let{slug:e}=d(),{currentUser:t}=q(),{updateRoute:n}=pe(),r=p(),a=o(),[s,c]=(0,X.useState)(!1),u=t.slug===e,{data:f,error:m}=C(e||``,{enabled:!u&&!!e,defaultErrorHandler:!1}),h=u?t:f?.users?.[0],g=m instanceof i&&m.response?.status===404;(0,X.useEffect)(()=>{m&&!g&&a(m)},[m,g,a]);let _=!u&&!!e&&!h&&(g||f!==void 0),v=(0,X.useRef)(void 0);h&&(v.current=h);let y=h||(_?void 0:v.current),b=_?e??null:null,x=(0,X.useRef)(null);return(0,X.useEffect)(()=>{!b||s||x.current===b||(x.current=b,l.error(`User not found`),E(t)?n({route:`staff`,replace:!0}):r(`/`))},[b,s,t,r,n]),y?(0,Y.jsx)(Je,{user:y,onDeletingUserChange:c}):null};export{Ye as default};
|