ghost 6.24.0 → 6.25.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/tryghost-i18n-6.25.1.tgz +0 -0
- package/components/tryghost-parse-email-address-6.25.1.tgz +0 -0
- package/core/boot.js +3 -1
- package/core/built/admin/assets/{PolarAngleAxis-7TlIQL3R.js → PolarAngleAxis-C6ZeSpZB.js} +1 -1
- package/core/built/admin/assets/{_baseAssignValue-DJsCJz6y.js → _baseAssignValue-BKAl5FrV.js} +1 -1
- package/core/built/admin/assets/{a-large-small-BnBpzYwl.js → a-large-small-B_ulQCIs.js} +1 -1
- package/core/built/admin/assets/admin-x-settings/admin-x-settings.js +1 -1
- package/core/built/admin/assets/admin-x-settings/{code-editor-view-De3K_osj.mjs → code-editor-view-CBYT1gA1.mjs} +2 -2
- package/core/built/admin/assets/admin-x-settings/{index-bGxDzD13.mjs → index-CN5CixaU.mjs} +2 -2
- package/core/built/admin/assets/admin-x-settings/{index-5D8KqsFU.mjs → index-CPQODntW.mjs} +2 -2
- package/core/built/admin/assets/admin-x-settings/{index-BIUDn7ot.mjs → index-CgTfOd7g.mjs} +9 -9
- package/core/built/admin/assets/admin-x-settings/{modals-DuokUyAH.mjs → modals-_y-6HROx.mjs} +2 -2
- package/core/built/admin/assets/{at-sign-DC4NtDDM.js → at-sign-B8xWKM0y.js} +1 -1
- package/core/built/admin/assets/{audience-CC5U4UxI.js → audience-CBOR--z9.js} +1 -1
- package/core/built/admin/assets/{avatar-flipboard-_GQfQXQc.js → avatar-flipboard-IipGb_wZ.js} +1 -1
- package/core/built/admin/assets/{bluesky-sharing-BKyzPl9y.js → bluesky-sharing-CkI1QuAm.js} +1 -1
- package/core/built/admin/assets/{chart-BCQFlmhJ.js → chart-_slUcr-K.js} +1 -1
- package/core/built/admin/assets/{chunk.423.dae9a3bbe7845c3a3cfc.js → chunk.434.de8a15730373eccfeefe.js} +13 -101
- package/core/built/admin/assets/{chunk.524.b5e454aa74df4428420c.js → chunk.524.5b9b463506a16221fc91.js} +6 -6
- package/core/built/admin/assets/{chunk.582.20635869be68725e6d5c.js → chunk.582.d8eae1661d753befaefd.js} +7 -7
- package/core/built/admin/assets/{chunk.123.1255d9e815f933dfdc57.js → chunk.630.3dbb0231a2d871126a80.js} +8 -6
- package/core/built/admin/assets/{code-editor-view-BXnjo7qe.js → code-editor-view-BWMqr2JV.js} +1 -1
- package/core/built/admin/assets/comments-BeoA0nfK.js +1 -0
- package/core/built/admin/assets/{content-helpers-CQXipRWa.js → content-helpers-CmTGdEmL.js} +1 -1
- package/core/built/admin/assets/{copy-B-MxRWPu.js → copy-CDHcAPJw.js} +1 -1
- package/core/built/admin/assets/{data-list-B2sqn7IE.js → data-list-Crb1ffbp.js} +1 -1
- package/core/built/admin/assets/{deleted-feed-item-DQi676Dy.js → deleted-feed-item-DBW0zJQg.js} +1 -1
- package/core/built/admin/assets/{dropzone-GgOCfK2j.js → dropzone-B9JUsQlW.js} +3 -3
- package/core/built/admin/assets/{edit-profile-COx5FmF9.js → edit-profile-Dz-IhetN.js} +1 -1
- package/core/built/admin/assets/{empty-indicator-Bf4Dqk72.js → empty-indicator-2QGnEbtY.js} +1 -1
- package/core/built/admin/assets/{en-BkI47Ou-.js → en-BRQS1Z8j.js} +1 -1
- package/core/built/admin/assets/{feed-Dzc-8jwd.js → feed-T3kW9UJA.js} +1 -1
- package/core/built/admin/assets/filters-ChOMQQZW.js +1 -0
- package/core/built/admin/assets/{gh-chart-Ch6dYUac.js → gh-chart-fuWw60Ka.js} +1 -1
- package/core/built/admin/assets/{ghost-69e448feab2cb78aba64f7177fa4d6f0.js → ghost-78b4a517ac907213ab47708eef33bc6f.js} +423 -542
- package/core/built/admin/assets/{growth-BIBJdcm6.js → growth-D9sCnmon.js} +1 -1
- package/core/built/admin/assets/{hash-BGd7HEsT.js → hash-CI1pQ1UC.js} +1 -1
- package/core/built/admin/assets/header-OevT95FI.js +1 -0
- package/core/built/admin/assets/{inbox-CFzKvW3h.js → inbox-DYY8-M1K.js} +1 -1
- package/core/built/admin/assets/{index-Dy8dCc8t.js → index-8CZdLQzu.js} +4 -4
- package/core/built/admin/assets/{index-DIO8ceib.js → index-BDAOs7pI.js} +1 -1
- package/core/built/admin/assets/{index-BZyG96u1.js → index-BEEgMX-_.js} +1 -1
- package/core/built/admin/assets/index-BbveDn8H.css +1 -0
- package/core/built/admin/assets/{index-BYXKsmpv.js → index-C-Cpbee5.js} +1 -1
- package/core/built/admin/assets/{index-DDJAHYHQ.js → index-CCF2RKxR.js} +12 -12
- package/core/built/admin/assets/{index-ZuWSQ3L6.js → index-CEnfjH5h.js} +93 -93
- package/core/built/admin/assets/{index-_WMp37yL.js → index-CcFVbffG.js} +1 -1
- package/core/built/admin/assets/{index-DpZazR71.js → index-CyMlhfZJ.js} +1 -1
- package/core/built/admin/assets/{index-DM98UB_U.js → index-DBZYUfjO.js} +1 -1
- package/core/built/admin/assets/{index-D0gRP4Gp.js → index-DJa3pLmx.js} +1 -1
- package/core/built/admin/assets/{index-n5opb8tL.js → index-DVqmhe-L.js} +1 -1
- package/core/built/admin/assets/{index-S2DGJkmz.js → index-DW5aEj6O.js} +2 -2
- package/core/built/admin/assets/{index-CvX5YYEz.js → index-DcFgRUSN.js} +1 -1
- package/core/built/admin/assets/{index-7NTHsKgE.js → index-DjgsxHeB.js} +1 -1
- package/core/built/admin/assets/index-mqQc8MVd.js +1 -0
- package/core/built/admin/assets/{index-CsHjDdYB.js → index-qQZsxgFE.js} +1 -1
- package/core/built/admin/assets/{koenig-lexical-8qAZ5o1x.js → koenig-lexical-CsbE6fpi.js} +1 -1
- package/core/built/admin/assets/kpis-Dw04ruBN.js +1 -0
- package/core/built/admin/assets/{label-CofMdj8x.js → label-tBvn89sm.js} +1 -1
- package/core/built/admin/assets/{links-MSlYSad1.js → links-Do4jcjIh.js} +1 -1
- package/core/built/admin/assets/{loader-circle-CF5G2g_Z.js → loader-circle-C8exRUku.js} +4 -4
- package/core/built/admin/assets/{lucide-react-DZiAu6PQ.js → lucide-react-4VO5Dwow.js} +1 -1
- package/core/built/admin/assets/{main-layout-DEVUkqt_.js → main-layout-BAqXRgAx.js} +1 -1
- package/core/built/admin/assets/{member-route-mLKS-PsA.js → member-route-D4n-RbQd.js} +1 -1
- package/core/built/admin/assets/members-DRLgwCgJ.js +15 -0
- package/core/built/admin/assets/{message-square-text-DESy3kSk.js → message-square-text-CC_1bY-Q.js} +5 -5
- package/core/built/admin/assets/{minus-DVNwSjD6.js → minus-DSyx9DCe.js} +1 -1
- package/core/built/admin/assets/{modals-FYjLOMaQ.js → modals-AryZr_DA.js} +13 -13
- package/core/built/admin/assets/{moderation-u4WS46a-.js → moderation-DwKm9LO-.js} +1 -1
- package/core/built/admin/assets/{newsletter-Cj0UCg4J.js → newsletter-C0rydPGS.js} +1 -1
- package/core/built/admin/assets/{newsletters-_UvhdBE3.js → newsletters-DKdmxfDG.js} +1 -1
- package/core/built/admin/assets/{note-CRnFryTp.js → note-996Zos9G.js} +1 -1
- package/core/built/admin/assets/{overview-Cr0dGxEU.js → overview-r17hlWAB.js} +1 -1
- package/core/built/admin/assets/{pagemenu-BqoDENpI.js → pagemenu-DzpB1AkZ.js} +17 -17
- package/core/built/admin/assets/{post-analytics-DIr_rDtL.js → post-analytics-AwufPVFE.js} +1 -1
- package/core/built/admin/assets/{post-analytics-context-WA--pwK5.js → post-analytics-context-GFe0lMc-.js} +1 -1
- package/core/built/admin/assets/{post-analytics-header-D97SoEaV.js → post-analytics-header-DmGyNvP9.js} +1 -1
- package/core/built/admin/assets/{post-share-modal-DBxR7WCX.js → post-share-modal-CTpdCS2X.js} +1 -1
- package/core/built/admin/assets/posts/{comments-Bswx2dzs.mjs → comments-Cvt31uBs.mjs} +597 -674
- package/core/built/admin/assets/posts/{dialog-67vvNv8e.mjs → dialog-DaViJlnd.mjs} +3 -3
- package/core/built/admin/assets/posts/{dropdown-menu-BKZfsAPJ.mjs → dropdown-menu-B4KGMiRI.mjs} +5 -5
- package/core/built/admin/assets/posts/{empty-indicator-DTmBQa_3.mjs → empty-indicator-BaD6pCXM.mjs} +2 -2
- package/core/built/admin/assets/posts/filters-BsCI4RJg.mjs +2835 -0
- package/core/built/admin/assets/posts/{get-site-timezone-D75cHSJ1.mjs → get-site-timezone-Bo-iI2bI.mjs} +2 -2
- package/core/built/admin/assets/posts/{growth-BqJWjpAp.mjs → growth-BJxIDp2o.mjs} +14 -14
- package/core/built/admin/assets/posts/header-7zhnErbb.mjs +100 -0
- package/core/built/admin/assets/posts/{heading-DXxLDQ96.mjs → heading-BCDx_eVF.mjs} +2 -2
- package/core/built/admin/assets/posts/{hooks-pVotzebr.mjs → hooks-DQL2O_El.mjs} +2 -2
- package/core/built/admin/assets/posts/{index-DZ1HzbGS.mjs → index-0mEgtljt.mjs} +3 -3
- package/core/built/admin/assets/posts/{index-By5yPnMZ.mjs → index-BTzJVQ6S.mjs} +10 -10
- package/core/built/admin/assets/posts/{input-DdXe2Fjm.mjs → input-DaHXv92f.mjs} +2 -2
- package/core/built/admin/assets/posts/{kpis-1MXZeSC9.mjs → kpis-GRsx6fPV.mjs} +10 -10
- package/core/built/admin/assets/posts/{links-DGzzdzsH.mjs → links-B1q_pqE9.mjs} +4 -4
- package/core/built/admin/assets/posts/{loading-indicator-CSj2spwS.mjs → loading-indicator-DiYqXomj.mjs} +3 -3
- package/core/built/admin/assets/posts/{main-layout-CGs25JVH.mjs → main-layout-DeqPTJTe.mjs} +2 -2
- package/core/built/admin/assets/posts/{members-BRcED5fL.mjs → members-LABk5yI5.mjs} +4102 -3442
- package/core/built/admin/assets/posts/{newsletter-D706LlgM.mjs → newsletter-C_nbHBaP.mjs} +15 -15
- package/core/built/admin/assets/posts/{overview-5dG5ypjx.mjs → overview-AJnKv4Ze.mjs} +16 -16
- package/core/built/admin/assets/posts/{post-analytics-wvNuOa4c.mjs → post-analytics-b_CKsePp.mjs} +6 -6
- package/core/built/admin/assets/posts/{post-analytics-context-BqnFe05q.mjs → post-analytics-context-D6jtpxxm.mjs} +5 -5
- package/core/built/admin/assets/posts/{post-analytics-header-Dsi5l6hb.mjs → post-analytics-header-R5UF_tF0.mjs} +11 -11
- package/core/built/admin/assets/posts/{post-share-modal-DWe35McY.mjs → post-share-modal-y4BEOajk.mjs} +4 -4
- package/core/built/admin/assets/posts/posts-C2hNrf1c.mjs +37 -0
- package/core/built/admin/assets/posts/posts.js +1 -1
- package/core/built/admin/assets/posts/{reply-B4vwBMwj.mjs → reply-2Uvi3Kxb.mjs} +2 -2
- package/core/built/admin/assets/posts/{search-DQuB1WMm.mjs → search-se7meOnL.mjs} +2 -2
- package/core/built/admin/assets/posts/{select-BMPHyOdQ.mjs → select-DpUpauFg.mjs} +8 -8
- package/core/built/admin/assets/posts/{separator-DgZ2VF9r.mjs → separator-CdBM46dw.mjs} +3 -3
- package/core/built/admin/assets/posts/{settings-D-wnf7Qg.mjs → settings-Chhj9xKP.mjs} +2 -2
- package/core/built/admin/assets/posts/{sheet-SOdCzxUt.mjs → sheet--k3SiDko.mjs} +3 -3
- package/core/built/admin/assets/posts/{skeleton-Du7JXZ_1.mjs → skeleton-CUSLSLoY.mjs} +3 -3
- package/core/built/admin/assets/posts/{source-icon-DcBtKbCl.mjs → source-icon-BjYUIoXN.mjs} +3 -3
- package/core/built/admin/assets/posts/{stats-CeLav-Hu.mjs → stats-BRdXKaxM.mjs} +4 -4
- package/core/built/admin/assets/posts/{table-DlaJMBps.mjs → table-Bgi_UcfL.mjs} +2 -2
- package/core/built/admin/assets/posts/{tabs-BQQbtw2g.mjs → tabs-DT8Bh72E.mjs} +14 -14
- package/core/built/admin/assets/posts/tags-BCFLnZYl.mjs +399 -0
- package/core/built/admin/assets/posts/{tags-CLyaNf39.mjs → tags-Kv2q0o3p.mjs} +2 -2
- package/core/built/admin/assets/posts/use-scroll-restoration-CLAUAal3.mjs +517 -0
- package/core/built/admin/assets/posts/{use-infinite-virtual-scroll-B_NwiBXK.mjs → virtual-list-window-CQDEqNBL.mjs} +246 -262
- package/core/built/admin/assets/posts/{web-TEVKbXSI.mjs → web-CqN0MQU6.mjs} +18 -18
- package/core/built/admin/assets/posts-GvXDuhVG.js +1 -0
- package/core/built/admin/assets/{referrers-J4vexZCf.js → referrers-Bd9pW-WX.js} +1 -1
- package/core/built/admin/assets/{repeat-BxOK9zhN.js → repeat-y6HlMgGO.js} +2 -2
- package/core/built/admin/assets/{reply-BoTN-eE0.js → reply-Cc8ryI5v.js} +2 -2
- package/core/built/admin/assets/{select-Bd1zcqox.js → select-CGr_5qad.js} +1 -1
- package/core/built/admin/assets/{settings-D72z6T_a.js → settings-BPsfSgg3.js} +1 -1
- package/core/built/admin/assets/{settings-BGbGoa4s.js → settings-BTd0Adha.js} +19 -19
- package/core/built/admin/assets/{sort-button-BOLTpImz.js → sort-button-k76_5HR2.js} +1 -1
- package/core/built/admin/assets/{source-icon-BqEM5MvU.js → source-icon-DMt0UskC.js} +1 -1
- package/core/built/admin/assets/{sprout-Bf-wc2Vo.js → sprout-Td9eaOoY.js} +2 -2
- package/core/built/admin/assets/{square-Cj_bJ0HZ.js → square-Df8vEYlG.js} +1 -1
- package/core/built/admin/assets/stats/{audience-BiHYBUzT.mjs → audience-DMTObpL8.mjs} +3 -3
- package/core/built/admin/assets/stats/{content-helpers-CIXZiyCm.mjs → content-helpers-ReMp9KJN.mjs} +4 -4
- package/core/built/admin/assets/stats/{index-CkKk-p14.mjs → index-6L-yLKFX.mjs} +8 -8
- package/core/built/admin/assets/stats/{index-DBB8Oih1.mjs → index-CIUyjeP-.mjs} +5 -5
- package/core/built/admin/assets/stats/{index-9zQR4gr0.mjs → index-CMSDpQm3.mjs} +3626 -3513
- package/core/built/admin/assets/stats/{index-DErXBfDM.mjs → index-Ca-_KJzy.mjs} +5 -5
- package/core/built/admin/assets/stats/{index-DMSmQLxG.mjs → index-CfO5yPSP.mjs} +5 -5
- package/core/built/admin/assets/stats/{sort-button-BqY7GFaO.mjs → sort-button-BB_M2CdZ.mjs} +3 -3
- package/core/built/admin/assets/stats/{stats-BeJgKX2G.mjs → stats-B2nnuLeU.mjs} +4 -4
- package/core/built/admin/assets/stats/stats.js +1 -1
- package/core/built/admin/assets/stats/{tabs-CPz357mW.mjs → tabs-DjJG-d3O.mjs} +3 -3
- package/core/built/admin/assets/stats/{use-growth-stats-WMYXBQE3.mjs → use-growth-stats-BMT5M7l6.mjs} +3 -3
- package/core/built/admin/assets/{stats-DWpHtRym.js → stats-Bs9ZbmXX.js} +1 -1
- package/core/built/admin/assets/stats-view-BWoPuaLz.js +1 -0
- package/core/built/admin/assets/{step-1-Bjya9Gt0.js → step-1-BUvsuCs0.js} +1 -1
- package/core/built/admin/assets/{step-2-CJ6I8JNc.js → step-2-DI9ekXls.js} +1 -1
- package/core/built/admin/assets/{step-3-3fs6Y2Kj.js → step-3-DzT_XhaS.js} +2 -2
- package/core/built/admin/assets/{table-B4zlzEDP.js → table-BKqaEGAm.js} +1 -1
- package/core/built/admin/assets/{tabs-mR5oJGm5.js → tabs-G6Ql8vbf.js} +1 -1
- package/core/built/admin/assets/tags-BHm-dlBs.js +1 -0
- package/core/built/admin/assets/{tags-CsgMtkFL.js → tags-_taMP0sJ.js} +1 -1
- package/core/built/admin/assets/{textarea-CQjEvapR.js → textarea-DcVuGYYq.js} +1 -1
- package/core/built/admin/assets/{tiers-CQE0v797.js → tiers-kv-xBoqQ.js} +1 -1
- package/core/built/admin/assets/{toggle-group-CR-Z-bJL.js → toggle-group-DsatLdt7.js} +1 -1
- package/core/built/admin/assets/{topic-filter-_NyD55eH.js → topic-filter-DkJyIuAf.js} +1 -1
- package/core/built/admin/assets/{trash-BFSLkv0z.js → trash-BeZZgbn-.js} +1 -1
- package/core/built/admin/assets/{upload-BTxT4v2z.js → upload-BG7KNIn7.js} +4 -4
- package/core/built/admin/assets/{use-growth-stats-BGymNu5O.js → use-growth-stats-CNGdl44N.js} +1 -1
- package/core/built/admin/assets/use-scroll-restoration-CQ3w0W98.js +1 -0
- package/core/built/admin/assets/{use-simple-pagination-Cq7Afp_c.js → use-simple-pagination-BeIJ_5Vv.js} +1 -1
- package/core/built/admin/assets/{user-plus-DMl69yKl.js → user-plus-CMxR50-Y.js} +1 -1
- package/core/built/admin/assets/{user-round-check-CVuZXUPz.js → user-round-check-2nhPmqP3.js} +1 -1
- package/core/built/admin/assets/virtual-list-window-Uq8oKYVG.js +4 -0
- package/core/built/admin/assets/{wallet-cards-zHR_y6Sp.js → wallet-cards-CJcVzH0D.js} +1 -1
- package/core/built/admin/assets/{web-CmFHgeQw.js → web-BPwTFKrc.js} +1 -1
- package/core/built/admin/index.html +7 -7
- package/core/frontend/helpers/ghost_head.js +1 -4
- package/core/server/data/migrations/versions/6.25/2026-03-26-15-47-00-insert-default-email-design-settings-row.js +42 -0
- package/core/server/data/migrations/versions/6.25/2026-03-30-20-22-25-add-email-design-setting-permissions.js +44 -0
- package/core/server/data/migrations/versions/6.25/2026-03-30-22-16-43-add-email-design-setting-id-to-automated-emails.js +8 -0
- package/core/server/data/migrations/versions/6.25/2026-03-31-13-12-10-backfill-automated-emails-email-design-setting-id.js +45 -0
- package/core/server/data/migrations/versions/6.25/2026-03-31-20-31-19-drop-nullable-on-automated-emails-email-design-setting-id.js +3 -0
- package/core/server/data/schema/fixtures/fixtures.json +35 -0
- package/core/server/data/schema/schema.js +1 -0
- package/core/server/data/seeders/importers/comment-reports-importer.js +1 -3
- package/core/server/data/seeders/importers/comments-importer.js +3 -2
- package/core/server/data/seeders/importers/email-batches-importer.js +3 -3
- package/core/server/data/seeders/importers/email-recipients-importer.js +6 -6
- package/core/server/data/seeders/importers/emails-importer.js +4 -3
- package/core/server/data/seeders/importers/members-click-events-importer.js +1 -1
- package/core/server/data/seeders/importers/members-created-events-importer.js +2 -1
- package/core/server/data/seeders/importers/members-feedback-importer.js +3 -4
- package/core/server/data/seeders/importers/members-login-events-importer.js +3 -2
- package/core/server/data/seeders/importers/members-status-events-importer.js +1 -2
- package/core/server/data/seeders/importers/members-stripe-customers-importer.js +2 -1
- package/core/server/data/seeders/importers/members-stripe-customers-subscriptions-importer.js +4 -2
- package/core/server/data/seeders/importers/members-subscribe-events-importer.js +1 -2
- package/core/server/data/seeders/importers/members-subscription-created-events-importer.js +3 -1
- package/core/server/data/seeders/importers/offer-redemptions-importer.js +3 -3
- package/core/server/data/seeders/utils/database-date.js +26 -1
- package/core/server/models/automated-email.js +27 -0
- package/core/server/models/email-design-setting.js +27 -0
- package/core/server/services/members/service.js +0 -22
- package/core/server/services/stripe/service.js +1 -2
- package/core/server/services/verification/verification-webhook-service.js +2 -2
- package/core/server/services/verification/verification-webhook-service.ts +2 -2
- package/core/server/services/verification-trigger.js +34 -69
- package/core/server/services/webhooks/webhook-trigger.js +1 -1
- package/core/shared/labs.js +2 -2
- package/package.json +10 -28
- package/tsconfig.tsbuildinfo +1 -1
- package/yarn.lock +423 -107
- package/components/tryghost-i18n-6.24.0.tgz +0 -0
- package/components/tryghost-parse-email-address-6.24.0.tgz +0 -0
- package/core/built/admin/assets/comments-CteqV7ZN.js +0 -1
- package/core/built/admin/assets/filters-DXXaCya7.js +0 -1
- package/core/built/admin/assets/index-QB-va_sk.css +0 -1
- package/core/built/admin/assets/index-nBUk6L1X.js +0 -1
- package/core/built/admin/assets/kpis-Cv75oSPY.js +0 -1
- package/core/built/admin/assets/members-DcElgZ2t.js +0 -15
- package/core/built/admin/assets/posts/filters-Ds_ZaYIU.mjs +0 -2722
- package/core/built/admin/assets/posts/posts-DI5YQFp4.mjs +0 -17
- package/core/built/admin/assets/posts/tags-CjwolIiT.mjs +0 -395
- package/core/built/admin/assets/posts/use-scroll-restoration-YSR5jwQl.mjs +0 -232
- package/core/built/admin/assets/posts-CJHEP4C-.js +0 -1
- package/core/built/admin/assets/stats-view-CcyaLPwj.js +0 -1
- package/core/built/admin/assets/tags-DEFC6GpD.js +0 -1
- package/core/built/admin/assets/use-infinite-virtual-scroll-CNqGwgHd.js +0 -4
- package/core/built/admin/assets/use-scroll-restoration-BWtb0NrS.js +0 -1
- package/core/shared/config/env/config.testing-browser.json +0 -98
- /package/core/built/admin/assets/{chunk.423.dae9a3bbe7845c3a3cfc.js.LICENSE.txt → chunk.434.de8a15730373eccfeefe.js.LICENSE.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as c,b$ as K,aX as te,bW as se,c0 as F,am as D,j as e,aY as ee,al as y,b5 as pe,aU as he,b7 as xe,b9 as Y,c1 as fe,bc as ae,ai as X,aj as H,c2 as ge,t as Q,bU as be,B as je}from"./index-ZuWSQ3L6.js";import{s as ve,g as q,S as ke,a as we,D as Ne,b as Se}from"./stats-view-CcyaLPwj.js";import{C as ye,a as _e,R as Ce,B as Te}from"./chart-BCQFlmhJ.js";import{E as re}from"./empty-indicator-Bf4Dqk72.js";import{G as De,C as Me,X as Le,Y as Re}from"./gh-chart-Ch6dYUac.js";import{T as Be,a as Ee,K as U,d as E,e as Oe}from"./tabs-mR5oJGm5.js";import{B as Pe,S as V}from"./sort-button-BOLTpImz.js";import{M as ne}from"./user-plus-DMl69yKl.js";import{S as Ae,a as $e,b as ze,c as Ve,d as We,e as He,f as Ke}from"./select-Bd1zcqox.js";import{M as Fe}from"./lucide-react-DZiAu6PQ.js";import{j as Ge,C as le,c as ie,a as Ie,b as Ye,h as Ue}from"./pagemenu-BqoDENpI.js";import{a as Xe,e as Qe,b as qe,c as W,d as P,f as L}from"./table-B4zlzEDP.js";import{u as Je}from"./newsletters-_UvhdBE3.js";import{e as Ze,f as et,g as tt}from"./stats-DWpHtRym.js";import"./loader-circle-CF5G2g_Z.js";import"./wallet-cards-zHR_y6Sp.js";import"./sprout-Bf-wc2Vo.js";import"./_baseAssignValue-DJsCJz6y.js";import"./index-DIO8ceib.js";import"./a-large-small-BnBpzYwl.js";import"./upload-BTxT4v2z.js";import"./at-sign-DC4NtDDM.js";import"./copy-B-MxRWPu.js";import"./message-square-text-DESy3kSk.js";import"./hash-BGd7HEsT.js";import"./inbox-CFzKvW3h.js";import"./minus-DVNwSjD6.js";import"./tags-CsgMtkFL.js";import"./square-Cj_bJ0HZ.js";import"./user-round-check-CVuZXUPz.js";import"./repeat-BxOK9zhN.js";import"./reply-BoTN-eE0.js";import"./trash-BFSLkv0z.js";const st=({active:a,payload:s})=>{if(!a||!s?.length)return null;const r=s[0].payload,l=r.send_date;return e.jsxs("div",{className:"max-w-[240px] min-w-[220px] rounded-lg border bg-background px-3 py-2 shadow-lg",children:[e.jsxs("div",{className:"mb-2 flex w-full flex-col border-b pb-2",children:[e.jsx("span",{className:"text-sm leading-tight font-semibold",children:r.post_title}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["Sent on ",ae(l)]})]}),e.jsxs("div",{className:"mb-1 flex w-full justify-between",children:[e.jsx("span",{className:"font-medium text-muted-foreground",children:"Sent"}),e.jsx("div",{className:"ml-2 w-full text-right font-mono",children:D(r.sent_to)})]}),e.jsxs("div",{className:"mb-1 flex w-full justify-between",children:[e.jsx("span",{className:"font-medium text-muted-foreground",children:"Opens"}),e.jsxs("div",{className:"ml-2 w-full text-right font-mono",children:[e.jsxs("span",{className:"text-muted-foreground",children:[D(r.total_opens)," / "]}),y(r.open_rate)]})]}),e.jsxs("div",{className:"mb-1 flex w-full justify-between",children:[e.jsx("span",{className:"font-medium text-muted-foreground",children:"Clicks"}),e.jsxs("div",{className:"ml-2 w-full text-right font-mono",children:[e.jsxs("span",{className:"text-muted-foreground",children:[D(r.total_clicks)," / "]}),y(r.click_rate)]})]})]})},at=({subscribersData:a,avgsData:s,totals:r,isLoading:l,isAvgsLoading:t,initialTab:i="total-subscribers"})=>{const[n,h]=c.useState(i),[p,v]=c.useState(!1),{range:u}=K(),w=te(),[g]=se(),{appSettings:N}=F(),{emailTrackClicks:j,emailTrackOpens:S}=N?.analytics||{},{totalSubscribers:R,avgOpenRate:m,avgClickRate:d}=r,f=c.useMemo(()=>{if(!a||a.length===0)return[];let o=[];return o=ve(a,u,"value","exact"),o.map(M=>({...M,formattedValue:D(M.value),label:"Total Subscribers"}))},[a,u]),_=c.useMemo(()=>{if(!f||f.length<=1)return{direction:"same",value:"0%"};const o=f[0]?.value??0,k=f[f.length-1]?.value??0;let M="same";k>o?M="up":k<o&&(M="down");let O;if(o===0)O=k===0?"0%":"+100%";else{const A=(k-o)/o*100,$=Math.round(A*10)/10;O=`${A>=0?"+":""}${$}%`}return{direction:M,value:O}},[f]);c.useEffect(()=>{h(i)},[i]);const x=o=>{h(o);const k=new URLSearchParams(g);k.set("tab",o),w(`?${k.toString()}`,{replace:!0})},C={open_rate:{label:"Open rate"}},b=c.useMemo(()=>({"total-subscribers":{color:"var(--chart-darkblue)",datakey:"value"},"avg-open-rate":{color:"var(--chart-blue)",datakey:"open_rate"},"avg-click-rate":{color:"var(--chart-teal)",datakey:"click_rate"}}),[]),{barDomain:T,barTicks:B}=c.useMemo(()=>{if(!s||s.length===0||n==="total-subscribers")return{barDomain:[0,1],barTicks:[0,1]};const o=b[n]?.datakey;if(!o)return{barDomain:[0,1],barTicks:[0,1]};const k=s.map(I=>I[o]).filter(I=>typeof I=="number");if(k.length===0)return{barDomain:[0,1],barTicks:[0,1]};const M=Math.min(...k),O=Math.max(...k),A=Math.floor(M*10)/10,$=Math.ceil(O*10)/10,z=Math.max(0,A),Z=$===z?z+.1:$;return{barDomain:[z,Z],barTicks:[z,Z]}},[s,n,b]);if(l)return e.jsx("div",{className:"-mb-6 flex h-[calc(16vw+132px)] w-full items-start justify-center",children:e.jsx(ee,{})});let G="grid-cols-3";(!j||!S)&&(G="grid-cols-2"),!j&&!S&&(G="grid-cols-1");const ue=n==="avg-open-rate"&&m>T[0]&&m<T[1]||n==="avg-click-rate"&&d>T[0]&&d<T[1],J=n==="avg-open-rate"?m:d;return e.jsxs(Be,{defaultValue:i,variant:"kpis",children:[e.jsxs(Ee,{className:`-mx-6 hidden grid-cols-3 md:visible! md:grid! ${G}`,children:[e.jsx(U,{className:`${!S&&!j&&"cursor-auto after:hidden"}`,value:"total-subscribers",onClick:()=>{x("total-subscribers")},children:e.jsx(E,{color:b["total-subscribers"].color,"data-testid":"total-subscribers-value",diffDirection:_.direction,diffValue:_.value,label:"Total subscribers",value:D(R)})}),S&&e.jsx(U,{value:"avg-open-rate",onClick:()=>{x("avg-open-rate")},children:e.jsx(E,{className:t?"opacity-50":"",color:b["avg-open-rate"].color,label:"Avg. open rate",value:y(m)})}),j&&e.jsx(U,{value:"avg-click-rate",onClick:()=>{x("avg-click-rate")},children:e.jsx(E,{className:t?"opacity-50":"",color:b["avg-click-rate"].color,label:"Avg. click rate",value:y(d)})})]}),e.jsxs(pe,{children:[e.jsx(he,{className:"md:hidden",asChild:!0,children:e.jsxs(Oe,{children:[n==="total-subscribers"&&e.jsx(E,{color:b["total-subscribers"].color,label:"Total subscribers",value:D(R)}),n==="avg-open-rate"&&S&&e.jsx(E,{className:t?"opacity-50":"",color:b["avg-open-rate"].color,label:"Avg. open rate",value:y(m)}),n==="avg-click-rate"&&j&&e.jsx(E,{className:t?"opacity-50":"",color:b["avg-click-rate"].color,label:"Avg. click rate",value:y(d)})]})}),e.jsxs(xe,{align:"end",className:"w-56",children:[e.jsx(Y,{onClick:()=>x("total-subscribers"),children:"Total subscribers"}),S&&e.jsx(Y,{onClick:()=>x("avg-open-rate"),children:"Avg. open rate"}),j&&e.jsx(Y,{onClick:()=>x("avg-click-rate"),children:"Avg. click rate"})]})]}),e.jsxs("div",{className:"my-4 [&_.recharts-cartesian-axis-tick-value]:fill-gray-500",children:[n==="total-subscribers"&&e.jsx(De,{className:"-mb-3 h-[16vw] max-h-[320px] min-h-[180px] w-full",color:b["total-subscribers"].color,data:f,id:"mrr",range:u}),(n==="avg-open-rate"&&S||n==="avg-click-rate"&&j)&&e.jsx(e.Fragment,{children:t?e.jsx("div",{className:"h-[320px] w-full items-center justify-center",children:e.jsx(ee,{})}):s&&s.length>0?e.jsxs(e.Fragment,{children:[e.jsx(ye,{className:"aspect-auto h-[200px] w-full md:h-[220px] xl:h-[320px]",config:C,children:e.jsxs(Pe,{className:p?"cursor-pointer!":"",data:s,margin:{top:20},onClick:o=>{o.activePayload&&o.activePayload[0].payload.post_id&&w(`/posts/analytics/${o.activePayload[0].payload.post_id}`,{crossApp:!0})},onMouseLeave:()=>v(!1),onMouseMove:o=>{v(!!(o.activePayload&&o.activePayload[0].payload.post_id))},children:[e.jsx("defs",{children:e.jsxs("linearGradient",{id:"barGradient",x1:"0",x2:"0",y1:"0",y2:"1",children:[e.jsx("stop",{offset:"0%",stopColor:b[n].color,stopOpacity:.8}),e.jsx("stop",{offset:"100%",stopColor:b[n].color,stopOpacity:.6})]})}),e.jsx(Me,{horizontal:!0,stroke:"var(--border)",vertical:!1}),e.jsx(Le,{axisLine:{stroke:"var(--border)",strokeWidth:1},dataKey:"post_id",interval:0,stroke:"var(--border)",tickFormatter:()=>"",tickLine:!1,tickMargin:10}),e.jsx(Re,{axisLine:!1,domain:T,tickFormatter:o=>y(o),tickLine:!1,ticks:B,width:fe(B,o=>y(o))}),e.jsx(_e,{content:e.jsx(st,{}),cursor:!1,isAnimationActive:!1,position:{y:10}}),ue&&e.jsx(Ce,{label:{value:`${y(J)}`,position:"left",offset:8,fill:"var(--muted-foreground)"},opacity:.5,stroke:"var(--muted-foreground)",strokeDasharray:"4 4",y:J}),e.jsx(Te,{activeBar:{fillOpacity:1},dataKey:b[n].datakey,fill:"url(#barGradient)",fillOpacity:.6,isAnimationActive:!1,maxBarSize:32,minPointSize:3,radius:4})]})}),e.jsxs("div",{className:"-mt-4 text-center text-sm text-muted-foreground",children:["Newsletters ",n==="avg-open-rate"?"opens":"clicks"," in this period"]})]}):e.jsx(re,{className:"size-full py-20",title:`No newsletters ${q(u)}`,children:e.jsx(ne,{strokeWidth:1.5})})})]})]})},rt=({newsletters:a})=>{const{selectedNewsletterId:s,setSelectedNewsletterId:r}=K(),l=c.useMemo(()=>a?.filter(t=>t.status==="active")||[],[a]);return c.useEffect(()=>{if(l.length>0&&!s){const t=l.find(i=>i.sort_order===0);r(t?t.id:l[0].id)}},[l,s,r]),l.length<=1?null:e.jsxs(Ae,{value:s||"",onValueChange:t=>{r(t)},children:[e.jsxs($e,{className:"w-auto",children:[e.jsx(Fe,{className:"mr-2",size:16,strokeWidth:1.5}),e.jsx(ze,{placeholder:"Select a newsletter"})]}),e.jsx(Ve,{align:"end",children:e.jsxs(We,{children:[e.jsx(He,{children:"Newsletters"}),l.map(t=>e.jsx(Ke,{value:t.id,children:t.name},t.id))]})})]})},nt=(a,s,r=!0)=>{const l=a??30,{startDate:t,endDate:i}=c.useMemo(()=>X(l),[l]),n=c.useMemo(()=>{const p={date_from:H(t),date_to:H(i)};return s&&(p.newsletter_id=s),p},[t,i,s]),h=Ze({searchParams:n,enabled:r});return r?h:{data:void 0,isLoading:!1,error:null,isError:!1,refetch:h.refetch}},lt=(a,s,r,l=!0)=>{const t=a??30,i=s??"date desc",{startDate:n,endDate:h}=c.useMemo(()=>X(t),[t]),p=c.useMemo(()=>{const u={date_from:H(n),date_to:H(h),order:i};return r&&(u.newsletter_id=r),u},[n,h,i,r]),v=et({searchParams:p,enabled:l});return l?v:{data:void 0,isLoading:!1,error:null,isError:!1,refetch:v.refetch}},it=(a,s=[],r=!0)=>{const l=c.useMemo(()=>{const i={};return a&&(i.newsletter_id=a),s.length>0&&(i.post_ids=s.join(",")),i},[a,s]),t=tt({searchParams:l,enabled:r});return r?t:{data:void 0,isLoading:!1,error:null,isError:!1,refetch:t.refetch}},oe=(a,s,r,l=!0)=>{const t=lt(a,s,r,l),i=c.useMemo(()=>t.data?.stats?t.data.stats.map(p=>p.post_id):[],[t.data]),n=it(r,i,l&&i.length>0);return{data:c.useMemo(()=>{if(!t.data?.stats)return;const p=t.data.stats,v=n.data?.stats||[],u=new Map;v.forEach(g=>{u.set(g.post_id,g)});const w=p.map(g=>{const N=u.get(g.post_id);return{...g,total_clicks:N?.total_clicks||0,click_rate:N?.click_rate||0}});return{...t.data,stats:w}},[t.data,n.data]),isLoading:t.isLoading,isClicksLoading:n.isLoading,error:t.error||n.error,isError:t.isError||n.isError,refetch:()=>{t.refetch(),n.refetch()}}},ce=Q.memo(({range:a,selectedNewsletterId:s,shouldFetchStats:r,sortBy:l})=>{const t=te(),{settings:i}=K(),n=String(i.find(m=>m.key==="timezone")?.value||"Etc/UTC"),{data:h,isLoading:p,isClicksLoading:v}=oe(a,l,s||void 0,!!r),{appSettings:u}=F(),{emailTrackClicks:w,emailTrackOpens:g}=u?.analytics||{},N=c.useMemo(()=>h?.stats||[],[h]),j=g&&w?5:g||w?4:3,S=c.useMemo(()=>e.jsx(e.Fragment,{children:e.jsx(W,{className:"last:border-none [&>td]:py-2.5",children:e.jsx(L,{className:"font-medium",colSpan:j,children:e.jsx(be,{className:"mt-5"})})})}),[j]),R=c.useMemo(()=>N.length>0?e.jsx(e.Fragment,{children:N.map(m=>e.jsxs(W,{className:"last:border-none [&>td]:py-2.5",children:[e.jsx(L,{className:"font-medium",children:e.jsx("div",{className:"group/link inline-flex items-center gap-2",children:m.post_id?e.jsx(je,{className:"h-auto p-0 text-left whitespace-normal hover:underline!",title:"View post analytics",variant:"link",onClick:()=>{t(`/posts/analytics/${m.post_id}/`,{crossApp:!0})},children:m.post_title}):e.jsx(e.Fragment,{children:m.post_title})})}),e.jsx(L,{className:"text-sm whitespace-nowrap",children:ae(m.send_date,n)}),e.jsx(L,{className:"text-right font-mono text-sm",children:D(m.sent_to)}),g&&e.jsxs(L,{className:"text-right font-mono text-sm",children:[e.jsx("span",{className:"group-hover:hidden",children:y(m.open_rate)}),e.jsx("span",{className:"hidden group-hover:visible! group-hover:block!",children:D(m.total_opens)})]}),w&&e.jsx(L,{className:"text-right font-mono text-sm",children:v?e.jsx("span",{className:"inline-block h-4 w-8 animate-pulse rounded bg-gray-200"}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"group-hover:hidden",children:y(m.click_rate)}),e.jsx("span",{className:"hidden group-hover:visible! group-hover:block!",children:D(m.total_clicks)})]})})]},m.post_id))}):e.jsx(W,{className:"border-none hover:bg-transparent",children:e.jsx(L,{className:"text-center group-hover:bg-transparent!",colSpan:j,children:e.jsx(re,{className:"size-full py-20",title:`No newsletters ${q(a)}`,children:e.jsx(ne,{strokeWidth:1.5})})})}),[N,v,t,w,g,a]);return p||!h?S:R});ce.displayName="NewsletterTableRows";const de=Q.memo(({sortBy:a,setSortBy:s,range:r})=>{const l=c.useMemo(()=>e.jsxs(Ie,{children:[e.jsx(Ye,{children:"Top newsletters"}),e.jsxs(Ue,{children:[" Your best performing newsletters ",q(r)]})]}),[r]),{appSettings:t}=F(),{emailTrackClicks:i,emailTrackOpens:n}=t?.analytics||{};return e.jsx(qe,{children:e.jsxs(W,{children:[e.jsx(P,{className:"min-w-[320px]",variant:"cardhead",children:l}),e.jsx(P,{className:"w-[65px]",children:e.jsx(V,{activeSortBy:a,setSortBy:s,sortBy:"date desc",children:"Date"})}),e.jsx(P,{className:"w-[90px] text-right",children:e.jsx(V,{activeSortBy:a,setSortBy:s,sortBy:"sent_to desc",children:"Sent"})}),n&&e.jsx(P,{className:"w-[90px] text-right",children:e.jsx(V,{activeSortBy:a,setSortBy:s,sortBy:"open_rate desc",children:"Opens"})}),i&&e.jsx(P,{className:"w-[90px] text-right",children:e.jsx(V,{activeSortBy:a,setSortBy:s,sortBy:"click_rate desc",children:"Clicks"})})]})})});de.displayName="NewsletterTableHeader";const me=Q.memo(({range:a,selectedNewsletterId:s,shouldFetchStats:r})=>{const[l,t]=c.useState("open_rate desc");return e.jsx(le,{className:"w-full max-w-[calc(100vw-64px)] overflow-x-auto sidebar:max-w-[calc(100vw-64px-280px)]","data-testid":"top-newsletters-card",children:e.jsx(ie,{children:e.jsxs(Xe,{children:[e.jsx(de,{range:a,setSortBy:t,sortBy:l}),e.jsx(Qe,{children:e.jsx(ce,{range:a,selectedNewsletterId:s,shouldFetchStats:r,sortBy:l})})]})})})});me.displayName="TopNewslettersTable";const Wt=()=>{const{range:a,selectedNewsletterId:s}=K(),[r]=se(),{appSettings:l}=F(),t=r.get("tab")||"total-subscribers",{data:i,isLoading:n}=Je({searchParams:{limit:"50"}}),h=!n&&i&&i.newsletters.length>0&&!!s,{data:p,isLoading:v}=nt(a,s||void 0,h||!1),{data:u,isLoading:w,isClicksLoading:g}=oe(a,"date asc",s||void 0,h||!1),N=c.useMemo(()=>!i?.newsletters||!s?null:i.newsletters.find(d=>d.id===s)||null,[i,s]),j=c.useMemo(()=>{const d=N?.count?.active_members||p?.stats?.[0]?.total||0;let f=0,_=0;if(u?.stats&&u.stats.length>0){const x=u.stats,C=x.reduce((T,B)=>T+(B.open_rate||0),0),b=x.reduce((T,B)=>T+(B.click_rate||0),0);f=C/x.length,_=b/x.length}return{totalSubscribers:d,avgOpenRate:f,avgClickRate:_}},[N,p,u]),S=c.useMemo(()=>{if(!p?.stats?.[0]?.values||p.stats[0].values.length===0){const{startDate:f,endDate:_}=X(a),x=[],C=new Date(f);for(;C<=_;)x.push({date:C.toISOString().split("T")[0],value:0}),C.setDate(C.getDate()+1);return x}const d=p.stats[0].values;if(d.length===1){const f=d[0],_=new Date,x=a,C=new Date(_.getTime()-x*24*60*60*1e3);return[{...f,date:C.toISOString().split("T")[0]},{...f,date:_.toISOString().split("T")[0]}]}return d},[p,a]),R=c.useMemo(()=>u?.stats?u.stats.map(d=>({post_id:d.post_id,post_title:d.post_title,send_date:d.send_date,sent_to:d.sent_to,total_opens:d.total_opens,open_rate:d.open_rate,total_clicks:d.total_clicks||0,click_rate:d.click_rate||0})):[],[u]),m=v||g||w;return l&&!l.newslettersEnabled?e.jsx(ge,{to:"/analytics"}):e.jsxs(ke,{children:[e.jsx(we,{children:e.jsxs(Ge,{children:[e.jsx(rt,{newsletters:i?.newsletters}),e.jsx(Ne,{})]})}),e.jsx(Se,{isLoading:!1,loadingComponent:e.jsx(e.Fragment,{}),children:e.jsxs(e.Fragment,{children:[e.jsx(le,{"data-testid":"newsletters-card",children:e.jsx(ie,{children:e.jsx(at,{avgsData:R,initialTab:t,isAvgsLoading:!1,isLoading:m,subscribersData:S,totals:j})})}),e.jsx(me,{range:a,selectedNewsletterId:s,shouldFetchStats:!!h})]})})]})};export{Wt as default};
|
|
1
|
+
import{r as c,bX as W,aT as te,bR as se,bY as F,ao as D,j as e,aU as ee,an as y,b1 as pe,aQ as he,b3 as xe,b5 as Y,bZ as fe,b7 as ae,ak as X,al as K,b_ as ge,t as Q,bP as be,B as je}from"./index-CEnfjH5h.js";import{s as ve,g as Z,S as ke,a as we,D as Ne,b as Se}from"./stats-view-BWoPuaLz.js";import{C as ye,a as _e,R as Ce,B as Te}from"./chart-_slUcr-K.js";import{E as re}from"./empty-indicator-2QGnEbtY.js";import{G as De,C as Me,X as Le,Y as Re}from"./gh-chart-fuWw60Ka.js";import{T as Be,a as Ee,K as U,d as E,e as Pe}from"./tabs-G6Ql8vbf.js";import{B as Oe,S as $}from"./sort-button-k76_5HR2.js";import{M as ne}from"./user-plus-CMxR50-Y.js";import{S as Ae,a as ze,b as Ve,c as $e,d as He,e as Ke,f as We}from"./select-CGr_5qad.js";import{M as Fe}from"./lucide-react-4VO5Dwow.js";import{j as Ge,C as le,c as oe,a as Ie,b as Ye,h as Ue}from"./pagemenu-DzpB1AkZ.js";import{a as Xe,e as Qe,b as Ze,c as H,d as O,f as L}from"./table-BKqaEGAm.js";import{u as qe}from"./newsletters-DKdmxfDG.js";import{e as Je,f as et,g as tt}from"./stats-Bs9ZbmXX.js";import"./loader-circle-C8exRUku.js";import"./wallet-cards-CJcVzH0D.js";import"./sprout-Td9eaOoY.js";import"./_baseAssignValue-BKAl5FrV.js";import"./index-BDAOs7pI.js";import"./a-large-small-B_ulQCIs.js";import"./upload-BG7KNIn7.js";import"./at-sign-B8xWKM0y.js";import"./copy-CDHcAPJw.js";import"./message-square-text-CC_1bY-Q.js";import"./hash-CI1pQ1UC.js";import"./inbox-DYY8-M1K.js";import"./minus-DSyx9DCe.js";import"./tags-_taMP0sJ.js";import"./square-Df8vEYlG.js";import"./user-round-check-2nhPmqP3.js";import"./repeat-y6HlMgGO.js";import"./reply-Cc8ryI5v.js";import"./trash-BeZZgbn-.js";const st=({active:a,payload:s})=>{if(!a||!s?.length)return null;const r=s[0].payload,l=r.send_date;return e.jsxs("div",{className:"max-w-[240px] min-w-[220px] rounded-lg border bg-background px-3 py-2 shadow-lg",children:[e.jsxs("div",{className:"mb-2 flex w-full flex-col border-b pb-2",children:[e.jsx("span",{className:"text-sm leading-tight font-semibold",children:r.post_title}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["Sent on ",ae(l)]})]}),e.jsxs("div",{className:"mb-1 flex w-full justify-between",children:[e.jsx("span",{className:"font-medium text-muted-foreground",children:"Sent"}),e.jsx("div",{className:"ml-2 w-full text-right font-mono",children:D(r.sent_to)})]}),e.jsxs("div",{className:"mb-1 flex w-full justify-between",children:[e.jsx("span",{className:"font-medium text-muted-foreground",children:"Opens"}),e.jsxs("div",{className:"ml-2 w-full text-right font-mono",children:[e.jsxs("span",{className:"text-muted-foreground",children:[D(r.total_opens)," / "]}),y(r.open_rate)]})]}),e.jsxs("div",{className:"mb-1 flex w-full justify-between",children:[e.jsx("span",{className:"font-medium text-muted-foreground",children:"Clicks"}),e.jsxs("div",{className:"ml-2 w-full text-right font-mono",children:[e.jsxs("span",{className:"text-muted-foreground",children:[D(r.total_clicks)," / "]}),y(r.click_rate)]})]})]})},at=({subscribersData:a,avgsData:s,totals:r,isLoading:l,isAvgsLoading:t,initialTab:o="total-subscribers"})=>{const[n,h]=c.useState(o),[p,v]=c.useState(!1),{range:u}=W(),w=te(),[g]=se(),{appSettings:N}=F(),{emailTrackClicks:j,emailTrackOpens:S}=N?.analytics||{},{totalSubscribers:R,avgOpenRate:m,avgClickRate:d}=r,f=c.useMemo(()=>{if(!a||a.length===0)return[];let i=[];return i=ve(a,u,"value","exact"),i.map(M=>({...M,formattedValue:D(M.value),label:"Total Subscribers"}))},[a,u]),_=c.useMemo(()=>{if(!f||f.length<=1)return{direction:"same",value:"0%"};const i=f[0]?.value??0,k=f[f.length-1]?.value??0;let M="same";k>i?M="up":k<i&&(M="down");let P;if(i===0)P=k===0?"0%":"+100%";else{const A=(k-i)/i*100,z=Math.round(A*10)/10;P=`${A>=0?"+":""}${z}%`}return{direction:M,value:P}},[f]);c.useEffect(()=>{h(o)},[o]);const x=i=>{h(i);const k=new URLSearchParams(g);k.set("tab",i),w(`?${k.toString()}`,{replace:!0})},C={open_rate:{label:"Open rate"}},b=c.useMemo(()=>({"total-subscribers":{color:"var(--chart-darkblue)",datakey:"value"},"avg-open-rate":{color:"var(--chart-blue)",datakey:"open_rate"},"avg-click-rate":{color:"var(--chart-teal)",datakey:"click_rate"}}),[]),{barDomain:T,barTicks:B}=c.useMemo(()=>{if(!s||s.length===0||n==="total-subscribers")return{barDomain:[0,1],barTicks:[0,1]};const i=b[n]?.datakey;if(!i)return{barDomain:[0,1],barTicks:[0,1]};const k=s.map(I=>I[i]).filter(I=>typeof I=="number");if(k.length===0)return{barDomain:[0,1],barTicks:[0,1]};const M=Math.min(...k),P=Math.max(...k),A=Math.floor(M*10)/10,z=Math.ceil(P*10)/10,V=Math.max(0,A),J=z===V?V+.1:z;return{barDomain:[V,J],barTicks:[V,J]}},[s,n,b]);if(l)return e.jsx("div",{className:"-mb-6 flex h-[calc(16vw+132px)] w-full items-start justify-center",children:e.jsx(ee,{})});let G="grid-cols-3";(!j||!S)&&(G="grid-cols-2"),!j&&!S&&(G="grid-cols-1");const ue=n==="avg-open-rate"&&m>T[0]&&m<T[1]||n==="avg-click-rate"&&d>T[0]&&d<T[1],q=n==="avg-open-rate"?m:d;return e.jsxs(Be,{defaultValue:o,variant:"kpis",children:[e.jsxs(Ee,{className:`-mx-6 hidden grid-cols-3 md:visible! md:grid! ${G}`,children:[e.jsx(U,{className:`${!S&&!j&&"cursor-auto after:hidden"}`,value:"total-subscribers",onClick:()=>{x("total-subscribers")},children:e.jsx(E,{color:b["total-subscribers"].color,"data-testid":"total-subscribers-value",diffDirection:_.direction,diffValue:_.value,label:"Total subscribers",value:D(R)})}),S&&e.jsx(U,{value:"avg-open-rate",onClick:()=>{x("avg-open-rate")},children:e.jsx(E,{className:t?"opacity-50":"",color:b["avg-open-rate"].color,label:"Avg. open rate",value:y(m)})}),j&&e.jsx(U,{value:"avg-click-rate",onClick:()=>{x("avg-click-rate")},children:e.jsx(E,{className:t?"opacity-50":"",color:b["avg-click-rate"].color,label:"Avg. click rate",value:y(d)})})]}),e.jsxs(pe,{children:[e.jsx(he,{className:"md:hidden",asChild:!0,children:e.jsxs(Pe,{children:[n==="total-subscribers"&&e.jsx(E,{color:b["total-subscribers"].color,label:"Total subscribers",value:D(R)}),n==="avg-open-rate"&&S&&e.jsx(E,{className:t?"opacity-50":"",color:b["avg-open-rate"].color,label:"Avg. open rate",value:y(m)}),n==="avg-click-rate"&&j&&e.jsx(E,{className:t?"opacity-50":"",color:b["avg-click-rate"].color,label:"Avg. click rate",value:y(d)})]})}),e.jsxs(xe,{align:"end",className:"w-56",children:[e.jsx(Y,{onClick:()=>x("total-subscribers"),children:"Total subscribers"}),S&&e.jsx(Y,{onClick:()=>x("avg-open-rate"),children:"Avg. open rate"}),j&&e.jsx(Y,{onClick:()=>x("avg-click-rate"),children:"Avg. click rate"})]})]}),e.jsxs("div",{className:"my-4 [&_.recharts-cartesian-axis-tick-value]:fill-gray-500",children:[n==="total-subscribers"&&e.jsx(De,{className:"-mb-3 h-[16vw] max-h-[320px] min-h-[180px] w-full",color:b["total-subscribers"].color,data:f,id:"mrr",range:u}),(n==="avg-open-rate"&&S||n==="avg-click-rate"&&j)&&e.jsx(e.Fragment,{children:t?e.jsx("div",{className:"h-[320px] w-full items-center justify-center",children:e.jsx(ee,{})}):s&&s.length>0?e.jsxs(e.Fragment,{children:[e.jsx(ye,{className:"aspect-auto h-[200px] w-full md:h-[220px] xl:h-[320px]",config:C,children:e.jsxs(Oe,{className:p?"cursor-pointer!":"",data:s,margin:{top:20},onClick:i=>{i.activePayload&&i.activePayload[0].payload.post_id&&w(`/posts/analytics/${i.activePayload[0].payload.post_id}`,{crossApp:!0})},onMouseLeave:()=>v(!1),onMouseMove:i=>{v(!!(i.activePayload&&i.activePayload[0].payload.post_id))},children:[e.jsx("defs",{children:e.jsxs("linearGradient",{id:"barGradient",x1:"0",x2:"0",y1:"0",y2:"1",children:[e.jsx("stop",{offset:"0%",stopColor:b[n].color,stopOpacity:.8}),e.jsx("stop",{offset:"100%",stopColor:b[n].color,stopOpacity:.6})]})}),e.jsx(Me,{horizontal:!0,stroke:"var(--border)",vertical:!1}),e.jsx(Le,{axisLine:{stroke:"var(--border)",strokeWidth:1},dataKey:"post_id",interval:0,stroke:"var(--border)",tickFormatter:()=>"",tickLine:!1,tickMargin:10}),e.jsx(Re,{axisLine:!1,domain:T,tickFormatter:i=>y(i),tickLine:!1,ticks:B,width:fe(B,i=>y(i))}),e.jsx(_e,{content:e.jsx(st,{}),cursor:!1,isAnimationActive:!1,position:{y:10}}),ue&&e.jsx(Ce,{label:{value:`${y(q)}`,position:"left",offset:8,fill:"var(--muted-foreground)"},opacity:.5,stroke:"var(--muted-foreground)",strokeDasharray:"4 4",y:q}),e.jsx(Te,{activeBar:{fillOpacity:1},dataKey:b[n].datakey,fill:"url(#barGradient)",fillOpacity:.6,isAnimationActive:!1,maxBarSize:32,minPointSize:3,radius:4})]})}),e.jsxs("div",{className:"-mt-4 text-center text-sm text-muted-foreground",children:["Newsletters ",n==="avg-open-rate"?"opens":"clicks"," in this period"]})]}):e.jsx(re,{className:"size-full py-20",title:`No newsletters ${Z(u)}`,children:e.jsx(ne,{strokeWidth:1.5})})})]})]})},rt=({newsletters:a})=>{const{selectedNewsletterId:s,setSelectedNewsletterId:r}=W(),l=c.useMemo(()=>a?.filter(t=>t.status==="active")||[],[a]);return c.useEffect(()=>{if(l.length>0&&!s){const t=l.find(o=>o.sort_order===0);r(t?t.id:l[0].id)}},[l,s,r]),l.length<=1?null:e.jsxs(Ae,{value:s||"",onValueChange:t=>{r(t)},children:[e.jsxs(ze,{className:"w-auto",children:[e.jsx(Fe,{className:"mr-2",size:16,strokeWidth:1.5}),e.jsx(Ve,{placeholder:"Select a newsletter"})]}),e.jsx($e,{align:"end",children:e.jsxs(He,{children:[e.jsx(Ke,{children:"Newsletters"}),l.map(t=>e.jsx(We,{value:t.id,children:t.name},t.id))]})})]})},nt=(a,s,r=!0)=>{const l=a??30,{startDate:t,endDate:o}=c.useMemo(()=>X(l),[l]),n=c.useMemo(()=>{const p={date_from:K(t),date_to:K(o)};return s&&(p.newsletter_id=s),p},[t,o,s]),h=Je({searchParams:n,enabled:r});return r?h:{data:void 0,isLoading:!1,error:null,isError:!1,refetch:h.refetch}},lt=(a,s,r,l=!0)=>{const t=a??30,o=s??"date desc",{startDate:n,endDate:h}=c.useMemo(()=>X(t),[t]),p=c.useMemo(()=>{const u={date_from:K(n),date_to:K(h),order:o};return r&&(u.newsletter_id=r),u},[n,h,o,r]),v=et({searchParams:p,enabled:l});return l?v:{data:void 0,isLoading:!1,error:null,isError:!1,refetch:v.refetch}},ot=(a,s=[],r=!0)=>{const l=c.useMemo(()=>{const o={};return a&&(o.newsletter_id=a),s.length>0&&(o.post_ids=s.join(",")),o},[a,s]),t=tt({searchParams:l,enabled:r});return r?t:{data:void 0,isLoading:!1,error:null,isError:!1,refetch:t.refetch}},ie=(a,s,r,l=!0)=>{const t=lt(a,s,r,l),o=c.useMemo(()=>t.data?.stats?t.data.stats.map(p=>p.post_id):[],[t.data]),n=ot(r,o,l&&o.length>0);return{data:c.useMemo(()=>{if(!t.data?.stats)return;const p=t.data.stats,v=n.data?.stats||[],u=new Map;v.forEach(g=>{u.set(g.post_id,g)});const w=p.map(g=>{const N=u.get(g.post_id);return{...g,total_clicks:N?.total_clicks||0,click_rate:N?.click_rate||0}});return{...t.data,stats:w}},[t.data,n.data]),isLoading:t.isLoading,isClicksLoading:n.isLoading,error:t.error||n.error,isError:t.isError||n.isError,refetch:()=>{t.refetch(),n.refetch()}}},ce=Q.memo(({range:a,selectedNewsletterId:s,shouldFetchStats:r,sortBy:l})=>{const t=te(),{settings:o}=W(),n=String(o.find(m=>m.key==="timezone")?.value||"Etc/UTC"),{data:h,isLoading:p,isClicksLoading:v}=ie(a,l,s||void 0,!!r),{appSettings:u}=F(),{emailTrackClicks:w,emailTrackOpens:g}=u?.analytics||{},N=c.useMemo(()=>h?.stats||[],[h]),j=g&&w?5:g||w?4:3,S=c.useMemo(()=>e.jsx(e.Fragment,{children:e.jsx(H,{className:"last:border-none [&>td]:py-2.5",children:e.jsx(L,{className:"font-medium",colSpan:j,children:e.jsx(be,{className:"mt-5"})})})}),[j]),R=c.useMemo(()=>N.length>0?e.jsx(e.Fragment,{children:N.map(m=>e.jsxs(H,{className:"last:border-none [&>td]:py-2.5",children:[e.jsx(L,{className:"font-medium",children:e.jsx("div",{className:"group/link inline-flex items-center gap-2",children:m.post_id?e.jsx(je,{className:"h-auto p-0 text-left whitespace-normal hover:underline!",title:"View post analytics",variant:"link",onClick:()=>{t(`/posts/analytics/${m.post_id}/`,{crossApp:!0})},children:m.post_title}):e.jsx(e.Fragment,{children:m.post_title})})}),e.jsx(L,{className:"text-sm whitespace-nowrap",children:ae(m.send_date,n)}),e.jsx(L,{className:"text-right font-mono text-sm",children:D(m.sent_to)}),g&&e.jsxs(L,{className:"text-right font-mono text-sm",children:[e.jsx("span",{className:"group-hover:hidden",children:y(m.open_rate)}),e.jsx("span",{className:"hidden group-hover:visible! group-hover:block!",children:D(m.total_opens)})]}),w&&e.jsx(L,{className:"text-right font-mono text-sm",children:v?e.jsx("span",{className:"inline-block h-4 w-8 animate-pulse rounded bg-gray-200"}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"group-hover:hidden",children:y(m.click_rate)}),e.jsx("span",{className:"hidden group-hover:visible! group-hover:block!",children:D(m.total_clicks)})]})})]},m.post_id))}):e.jsx(H,{className:"border-none hover:bg-transparent",children:e.jsx(L,{className:"text-center group-hover:bg-transparent!",colSpan:j,children:e.jsx(re,{className:"size-full py-20",title:`No newsletters ${Z(a)}`,children:e.jsx(ne,{strokeWidth:1.5})})})}),[N,v,t,w,g,a]);return p||!h?S:R});ce.displayName="NewsletterTableRows";const de=Q.memo(({sortBy:a,setSortBy:s,range:r})=>{const l=c.useMemo(()=>e.jsxs(Ie,{children:[e.jsx(Ye,{children:"Top newsletters"}),e.jsxs(Ue,{children:[" Your best performing newsletters ",Z(r)]})]}),[r]),{appSettings:t}=F(),{emailTrackClicks:o,emailTrackOpens:n}=t?.analytics||{};return e.jsx(Ze,{children:e.jsxs(H,{children:[e.jsx(O,{className:"min-w-[320px]",variant:"cardhead",children:l}),e.jsx(O,{className:"w-[65px]",children:e.jsx($,{activeSortBy:a,setSortBy:s,sortBy:"date desc",children:"Date"})}),e.jsx(O,{className:"w-[90px] text-right",children:e.jsx($,{activeSortBy:a,setSortBy:s,sortBy:"sent_to desc",children:"Sent"})}),n&&e.jsx(O,{className:"w-[90px] text-right",children:e.jsx($,{activeSortBy:a,setSortBy:s,sortBy:"open_rate desc",children:"Opens"})}),o&&e.jsx(O,{className:"w-[90px] text-right",children:e.jsx($,{activeSortBy:a,setSortBy:s,sortBy:"click_rate desc",children:"Clicks"})})]})})});de.displayName="NewsletterTableHeader";const me=Q.memo(({range:a,selectedNewsletterId:s,shouldFetchStats:r})=>{const[l,t]=c.useState("open_rate desc");return e.jsx(le,{className:"w-full max-w-[calc(100vw-64px)] overflow-x-auto sidebar:max-w-[calc(100vw-64px-280px)]","data-testid":"top-newsletters-card",children:e.jsx(oe,{children:e.jsxs(Xe,{children:[e.jsx(de,{range:a,setSortBy:t,sortBy:l}),e.jsx(Qe,{children:e.jsx(ce,{range:a,selectedNewsletterId:s,shouldFetchStats:r,sortBy:l})})]})})})});me.displayName="TopNewslettersTable";const Ht=()=>{const{range:a,selectedNewsletterId:s}=W(),[r]=se(),{appSettings:l}=F(),t=r.get("tab")||"total-subscribers",{data:o,isLoading:n}=qe({searchParams:{limit:"50"}}),h=!n&&o&&o.newsletters.length>0&&!!s,{data:p,isLoading:v}=nt(a,s||void 0,h||!1),{data:u,isLoading:w,isClicksLoading:g}=ie(a,"date asc",s||void 0,h||!1),N=c.useMemo(()=>!o?.newsletters||!s?null:o.newsletters.find(d=>d.id===s)||null,[o,s]),j=c.useMemo(()=>{const d=N?.count?.active_members||p?.stats?.[0]?.total||0;let f=0,_=0;if(u?.stats&&u.stats.length>0){const x=u.stats,C=x.reduce((T,B)=>T+(B.open_rate||0),0),b=x.reduce((T,B)=>T+(B.click_rate||0),0);f=C/x.length,_=b/x.length}return{totalSubscribers:d,avgOpenRate:f,avgClickRate:_}},[N,p,u]),S=c.useMemo(()=>{if(!p?.stats?.[0]?.values||p.stats[0].values.length===0){const{startDate:f,endDate:_}=X(a),x=[],C=new Date(f);for(;C<=_;)x.push({date:C.toISOString().split("T")[0],value:0}),C.setDate(C.getDate()+1);return x}const d=p.stats[0].values;if(d.length===1){const f=d[0],_=new Date,x=a,C=new Date(_.getTime()-x*24*60*60*1e3);return[{...f,date:C.toISOString().split("T")[0]},{...f,date:_.toISOString().split("T")[0]}]}return d},[p,a]),R=c.useMemo(()=>u?.stats?u.stats.map(d=>({post_id:d.post_id,post_title:d.post_title,send_date:d.send_date,sent_to:d.sent_to,total_opens:d.total_opens,open_rate:d.open_rate,total_clicks:d.total_clicks||0,click_rate:d.click_rate||0})):[],[u]),m=v||g||w;return l&&!l.newslettersEnabled?e.jsx(ge,{to:"/analytics"}):e.jsxs(ke,{children:[e.jsx(we,{children:e.jsxs(Ge,{children:[e.jsx(rt,{newsletters:o?.newsletters}),e.jsx(Ne,{})]})}),e.jsx(Se,{isLoading:!1,loadingComponent:e.jsx(e.Fragment,{}),children:e.jsxs(e.Fragment,{children:[e.jsx(le,{"data-testid":"newsletters-card",children:e.jsx(oe,{children:e.jsx(at,{avgsData:R,initialTab:t,isAvgsLoading:!1,isLoading:m,subscribersData:S,totals:j})})}),e.jsx(me,{range:a,selectedNewsletterId:s,shouldFetchStats:!!h})]})})]})};export{Ht as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as o,j as n,
|
|
1
|
+
import{r as o,j as n,ct as Sn,cu as En,B as A,ck as Vn,cw as _n,cv as Yn,t as dn,cQ as Qn,b as Nn,d7 as pn,S as E,P as Zn,A as Jn,h as Xn,g as bn,d as Gn,m as ne,bF as ee,e as un,F as on,i as rn,d8 as te,d9 as D,o as ae,da as xn,a as oe,u as re,p as ie,L as de,aV as ce,D as se,v as le,w as ge,x as pe,ac as ue,db as he,dc as me,bx as vn,by as ke}from"./index-CEnfjH5h.js";import{M as fe}from"./minus-DSyx9DCe.js";import{u as be,D as xe,A as ve,S as yn}from"./deleted-feed-item-DBW0zJQg.js";import{T as ye}from"./topic-filter-DkJyIuAf.js";import{E as wn}from"./empty-indicator-2QGnEbtY.js";import{I as jn}from"./inbox-DYY8-M1K.js";import"./trash-BeZZgbn-.js";const hn=["1.5rem","1.6rem","1.7rem","1.8rem","2rem"],W={BACKGROUND_COLOR:"ghost-ap-background-color",FONT_SIZE:"ghost-ap-font-size",FONT_STYLE:"ghost-ap-font-style"},P={SYSTEM:{id:"system",color:"#fff",background:"bg-white dark:bg-black",button:"bg-white dark:bg-black",border:"border-black/[8%] dark:border-gray-950"},SEPIA:{id:"sepia",color:"#FCF8F1",background:"bg-[#FCF8F1]",button:"bg-[#FCF8F1] hover:bg-black/[3%] text-black hover:text-black",border:"border-black/[8%]"},LIGHT:{id:"light",color:"#fff",background:"bg-white",button:"hover:bg-black/[3%] text-black hover:text-black",border:"border-black/[8%] dark:border-gray-950"},DARK:{id:"dark",color:"#15171a",background:"bg-black",button:"text-white dark:bg-black dark:hover:bg-gray-900",border:"border-black/[8%] dark:border-gray-950"}},we=()=>{const[t,s]=o.useState(()=>localStorage.getItem(W.BACKGROUND_COLOR)?.toUpperCase()||"SYSTEM"),[a,p]=o.useState(()=>{const r=localStorage.getItem(W.FONT_SIZE);return r?parseInt(r):2}),[c,k]=o.useState(()=>localStorage.getItem(W.FONT_STYLE)||"sans"),i=r=>{s(r),localStorage.setItem(W.BACKGROUND_COLOR,P[r].id)};return o.useEffect(()=>{localStorage.setItem(W.FONT_SIZE,a.toString())},[a]),o.useEffect(()=>{localStorage.setItem(W.FONT_STYLE,c)},[c]),{backgroundColor:t,currentFontSizeIndex:a,fontStyle:c,handleColorChange:i,setFontStyle:k,increaseFontSize:()=>{p(r=>Math.min(r+1,hn.length-1))},decreaseFontSize:()=>{p(r=>Math.max(r-1,0))},resetFontSize:()=>p(2),fontSize:hn[a]}},Cn=({backgroundColor:t,currentFontSizeIndex:s,fontStyle:a,onColorChange:p,onFontStyleChange:c,onDecreaseFontSize:k,onIncreaseFontSize:i,onResetFontSize:u,onOpenChange:v})=>{const h=l=>t===l,r=l=>a===l;return n.jsx(je,{backgroundColor:t,currentFontSizeIndex:s,fontStyle:a,isActiveColor:h,isActiveFont:r,onColorChange:p,onDecreaseFontSize:k,onFontStyleChange:c,onIncreaseFontSize:i,onOpenChange:v,onResetFontSize:u})},je=({backgroundColor:t,isActiveColor:s,isActiveFont:a,onColorChange:p,onFontStyleChange:c,currentFontSizeIndex:k,onDecreaseFontSize:i,onIncreaseFontSize:u,onResetFontSize:v,onOpenChange:h})=>n.jsxs(Sn,{modal:!1,onOpenChange:h,children:[n.jsx(En,{asChild:!0,children:n.jsx(A,{className:`size-9 rounded-full ${P[t].button}`,variant:"ghost",children:n.jsx(Vn.Typography,{className:"size-[18px]!"})})}),n.jsx(_n,{align:"end",className:"w-[224px]",onCloseAutoFocus:r=>r.preventDefault(),onOpenAutoFocus:r=>r.preventDefault(),children:n.jsxs("div",{className:"flex flex-col gap-4",children:[n.jsxs("div",{className:"flex items-center justify-between gap-[6px]",children:[n.jsx(A,{className:`h-7 flex-1 rounded-[6px] bg-gray-200 p-0 text-[1.1rem] text-black hover:bg-gray-250 dark:bg-gray-925 dark:text-white dark:hover:bg-gray-900 [&_svg]:size-[14px] ${s("SYSTEM")?"outline outline-2 outline-green":""}`,variant:"secondary",onClick:()=>p("SYSTEM"),children:"Auto"}),n.jsx(A,{className:`h-7 flex-1 rounded-[6px] bg-[#ece6d9] p-0 hover:bg-[#ece6d9] ${s("SEPIA")?"outline outline-2 outline-green":"border border-[#ece6d9]"}`,onClick:()=>p("SEPIA")}),n.jsx(A,{className:`h-7 flex-1 rounded-[6px] bg-white p-0 hover:bg-white ${s("LIGHT")?"outline outline-2 outline-green":"border border-gray-200"}`,onClick:()=>p("LIGHT")}),n.jsx(A,{className:`h-7 flex-1 rounded-[6px] bg-black p-0 hover:bg-black dark:border dark:border-gray-925 ${s("DARK")?"outline outline-2 outline-green":""}`,onClick:()=>p("DARK")})]}),n.jsxs("div",{className:"flex gap-2",children:[n.jsxs(A,{className:`flex h-auto w-full flex-col gap-1 rounded-[6px] bg-gray-200 text-black hover:bg-gray-250 dark:bg-gray-925 dark:text-white dark:hover:bg-gray-900 ${a("sans")&&"outline outline-2 outline-green"}`,variant:"secondary",onClick:()=>c("sans"),children:[n.jsx("span",{className:"text-[2rem] leading-none font-bold",children:"Aa"}),n.jsx("span",{className:"text-[1.1rem]",children:"System"})]}),n.jsxs(A,{className:`flex h-auto w-full flex-col gap-1 rounded-[6px] bg-gray-200 text-black hover:bg-gray-250 dark:bg-gray-925 dark:text-white dark:hover:bg-gray-900 ${a("serif")&&"outline outline-2 outline-green"}`,variant:"secondary",onClick:()=>c("serif"),children:[n.jsx("span",{className:"pt-1 font-serif text-[2rem] leading-none font-bold",children:"Aa"}),n.jsx("span",{className:"font-serif text-[1.2rem]",children:"Serif"})]})]}),n.jsxs("div",{className:"flex gap-2",children:[n.jsx(A,{className:"h-8 w-full rounded-[6px] bg-gray-200 text-black hover:bg-gray-250 dark:bg-gray-925 dark:text-white dark:hover:bg-gray-900 [&_svg]:size-[14px]",disabled:k===0,variant:"secondary",onClick:i,children:n.jsx(fe,{})}),n.jsx(A,{className:"h-8 w-full rounded-[6px] bg-gray-200 text-black hover:bg-gray-250 dark:bg-gray-925 dark:text-white dark:hover:bg-gray-900",variant:"secondary",onClick:v,children:n.jsx("span",{className:"text-[1.6rem] font-bold",children:"Aa"})}),n.jsx(A,{className:"h-8 w-full rounded-[6px] bg-gray-200 text-black hover:bg-gray-250 dark:bg-gray-925 dark:text-white dark:hover:bg-gray-900 [&_svg]:size-[14px]",disabled:k===hn.length-1,variant:"secondary",onClick:u,children:n.jsx(Yn,{})})]})]})})]}),Ce=({tocItems:t,iframeElement:s,modalRef:a,className:p="visible! absolute inset-y-0 right-7 z-40 hidden lg:block!",onOpenChange:c})=>{const[k,i]=o.useState(null),u=dn.useRef(!1),v=h=>{if(!s?.contentDocument)return;const r=s.contentDocument.getElementById(h);r&&a.current&&(u.current=!0,i(h),a.current.scrollTo({top:r.offsetTop-20,behavior:"smooth"}),setTimeout(()=>{u.current=!1},1e3))};return o.useEffect(()=>{if(!s?.contentDocument||t.length<=1)return;const h=a.current;if(!h)return;const r=()=>{if(u.current)return;const d=s.contentDocument;if(!d)return;const _=h.scrollTop,F=100,B=t.map(z=>d.getElementById(z.id)).filter(z=>z!==null).map(z=>({id:z.id,top:z.offsetTop}));if(!B.length)return;const L=B.reduce((z,M)=>M.top-F<=_?M:z);i(L?.id||null)},l=()=>{requestAnimationFrame(r)};return h.addEventListener("scroll",l),r(),()=>{h.removeEventListener("scroll",l)}},[s,t,a]),t.length<=1?null:n.jsx("div",{className:p,children:n.jsx("div",{className:"sticky top-1/2 -translate-y-1/2",children:n.jsx(Ee,{activeHeading:k||"",items:t,onItemClick:v,onOpenChange:c})})})},ze={1:"w-3",2:"w-2",3:"w-1"},Se={1:"pl-2",2:"pl-6",3:"pl-10"},Ee=({items:t,activeHeading:s,onItemClick:a,onOpenChange:p})=>{const[c,k]=o.useState(!1),i=dn.useRef();if(dn.useEffect(()=>()=>{i.current&&clearTimeout(i.current)},[]),t.length===0)return null;const u=d=>Math.min(d,3),v=d=>ze[u(d)],h=d=>Se[u(d)],r=()=>{i.current&&clearTimeout(i.current),k(!0),p?.(!0)},l=()=>{i.current=setTimeout(()=>{k(!1),p?.(!1)},100)};return n.jsxs(Sn,{modal:!1,open:c,onOpenChange:k,children:[n.jsx(En,{asChild:!0,children:n.jsx("div",{className:"absolute top-1/2 right-2 flex -translate-y-1/2 flex-col items-end gap-2 rounded-md p-2 text-base dark:bg-black",onMouseEnter:r,onMouseLeave:l,children:t.map(d=>n.jsx("div",{className:`h-[2px] rounded-sm ${s===d.id?"bg-black dark:bg-white":"bg-gray-400 dark:bg-gray-700"} pr-1 transition-all ${v(d.level)}`},d.id))})}),n.jsx(_n,{align:"center",className:"w-[240px] p-2",side:"left",sideOffset:-28,onCloseAutoFocus:d=>d.preventDefault(),onMouseEnter:r,onMouseLeave:l,onOpenAutoFocus:d=>d.preventDefault(),children:n.jsx("nav",{"aria-label":"Table of contents navigation",className:"max-h-[60vh] overflow-y-auto",role:"navigation",children:t.map(d=>n.jsx("button",{className:`line-clamp-2 block w-full cursor-pointer rounded py-1 text-left text-sm leading-tight ${s===d.id?"text-black dark:text-white":"text-gray-700 dark:text-gray-600"} hover:bg-gray-75 hover:text-gray-900 dark:hover:bg-grey-925 dark:hover:text-white ${h(d.level)}`,type:"button",onClick:()=>a(d.id),children:n.jsx("span",{className:"line-clamp-2",children:d.text})},d.id))})})]})},_e=()=>`<style>
|
|
2
2
|
|
|
3
3
|
/* Variables */
|
|
4
4
|
|
|
@@ -2956,7 +2956,7 @@ a.kg-cta-button {
|
|
|
2956
2956
|
background-color: var(--ghost-accent-color);
|
|
2957
2957
|
color: #fff;
|
|
2958
2958
|
}
|
|
2959
|
-
`,
|
|
2959
|
+
`,ct=Object.freeze(Object.defineProperty({__proto__:null,default:dt},Symbol.toStringTag,{value:"Module"})),st=`.kg-signup-card {
|
|
2960
2960
|
position: relative;
|
|
2961
2961
|
}
|
|
2962
2962
|
|
|
@@ -3338,7 +3338,7 @@ a.kg-cta-button {
|
|
|
3338
3338
|
font-size: 1em;
|
|
3339
3339
|
}
|
|
3340
3340
|
}
|
|
3341
|
-
`,lt=Object.freeze(Object.defineProperty({__proto__:null,default:
|
|
3341
|
+
`,lt=Object.freeze(Object.defineProperty({__proto__:null,default:st},Symbol.toStringTag,{value:"Module"})),gt=`.kg-toggle-card,
|
|
3342
3342
|
.kg-toggle-card * {
|
|
3343
3343
|
box-sizing: border-box;
|
|
3344
3344
|
}
|
|
@@ -3878,11 +3878,11 @@ a.kg-cta-button {
|
|
|
3878
3878
|
transform: scale(1.2);
|
|
3879
3879
|
}
|
|
3880
3880
|
|
|
3881
|
-
`,kt=Object.freeze(Object.defineProperty({__proto__:null,default:mt},Symbol.toStringTag,{value:"Module"})),ft=Object.assign({"../../ghost/core/core/frontend/src/cards/js/audio.js":Ie,"../../ghost/core/core/frontend/src/cards/js/gallery.js":Fe,"../../ghost/core/core/frontend/src/cards/js/toggle.js":Re,"../../ghost/core/core/frontend/src/cards/js/video.js":Te}),bt=Object.assign({"../../ghost/core/core/frontend/src/cards/css/audio.css":Ae,"../../ghost/core/core/frontend/src/cards/css/blockquote.css":De,"../../ghost/core/core/frontend/src/cards/css/bookmark.css":qe,"../../ghost/core/core/frontend/src/cards/css/button.css":Ue,"../../ghost/core/core/frontend/src/cards/css/callout.css":Ke,"../../ghost/core/core/frontend/src/cards/css/collection.css":Ye,"../../ghost/core/core/frontend/src/cards/css/cta.css":Ze,"../../ghost/core/core/frontend/src/cards/css/file.css":Xe,"../../ghost/core/core/frontend/src/cards/css/gallery.css":nt,"../../ghost/core/core/frontend/src/cards/css/header.css":tt,"../../ghost/core/core/frontend/src/cards/css/header_v2.css":ot,"../../ghost/core/core/frontend/src/cards/css/nft.css":it,"../../ghost/core/core/frontend/src/cards/css/product.css":
|
|
3881
|
+
`,kt=Object.freeze(Object.defineProperty({__proto__:null,default:mt},Symbol.toStringTag,{value:"Module"})),ft=Object.assign({"../../ghost/core/core/frontend/src/cards/js/audio.js":Ie,"../../ghost/core/core/frontend/src/cards/js/gallery.js":Fe,"../../ghost/core/core/frontend/src/cards/js/toggle.js":Re,"../../ghost/core/core/frontend/src/cards/js/video.js":Te}),bt=Object.assign({"../../ghost/core/core/frontend/src/cards/css/audio.css":Ae,"../../ghost/core/core/frontend/src/cards/css/blockquote.css":De,"../../ghost/core/core/frontend/src/cards/css/bookmark.css":qe,"../../ghost/core/core/frontend/src/cards/css/button.css":Ue,"../../ghost/core/core/frontend/src/cards/css/callout.css":Ke,"../../ghost/core/core/frontend/src/cards/css/collection.css":Ye,"../../ghost/core/core/frontend/src/cards/css/cta.css":Ze,"../../ghost/core/core/frontend/src/cards/css/file.css":Xe,"../../ghost/core/core/frontend/src/cards/css/gallery.css":nt,"../../ghost/core/core/frontend/src/cards/css/header.css":tt,"../../ghost/core/core/frontend/src/cards/css/header_v2.css":ot,"../../ghost/core/core/frontend/src/cards/css/nft.css":it,"../../ghost/core/core/frontend/src/cards/css/product.css":ct,"../../ghost/core/core/frontend/src/cards/css/signup.css":lt,"../../ghost/core/core/frontend/src/cards/css/toggle.css":pt,"../../ghost/core/core/frontend/src/cards/css/transistor.css":ht,"../../ghost/core/core/frontend/src/cards/css/video.css":kt}),xt=Object.values(ft).map(t=>t.default).join(`
|
|
3882
3882
|
|
|
3883
3883
|
`),vt=Object.values(bt).map(t=>t.default).join(`
|
|
3884
3884
|
|
|
3885
|
-
`),yt=({postUrl:t,heading:
|
|
3885
|
+
`),yt=({postUrl:t,heading:s,image:a,excerpt:p,authors:c,html:k,backgroundColor:i,fontSize:u,fontStyle:v,onHeadingsExtracted:h,onIframeLoad:r,onLoadingChange:l,isPopoverOpen:d})=>{const _=o.useRef(null),[F,B]=o.useState(!0),[L,z]=o.useState("0px"),M=document.documentElement.classList.contains("dark")&&i==="SYSTEM"||i==="DARK",K=_e(),f=`
|
|
3886
3886
|
<html class="has-${M?"light":"dark"}-text has-${v}-body ${i==="SEPIA"&&"has-sepia-bg"}">
|
|
3887
3887
|
<head>
|
|
3888
3888
|
${K}
|
|
@@ -3976,12 +3976,12 @@ a.kg-cta-button {
|
|
|
3976
3976
|
</head>
|
|
3977
3977
|
<body>
|
|
3978
3978
|
<header class='gh-article-header gh-canvas'>
|
|
3979
|
-
<h1 class='gh-article-title is-title' data-test-article-heading>${D(
|
|
3979
|
+
<h1 class='gh-article-title is-title' data-test-article-heading>${D(s)}</h1>
|
|
3980
3980
|
${p?`<p class='gh-article-excerpt'>${D(p)}</p>`:""}
|
|
3981
3981
|
<a href="${t&&xn(t)?D(t):"#"}" target="_blank" rel="noopener noreferrer" class="gh-article-meta">
|
|
3982
|
-
${
|
|
3982
|
+
${c&&c.length>0?`
|
|
3983
3983
|
<div class="gh-article-author-image">
|
|
3984
|
-
${
|
|
3984
|
+
${c.map(g=>`
|
|
3985
3985
|
<span>
|
|
3986
3986
|
${g.profile_image?`<img src="${D(g.profile_image)}" alt="${D(g.name)}">`:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="24" width="24"><path d="M6.75 6a5.25 5.25 0 1 0 10.5 0 5.25 5.25 0 1 0 -10.5 0" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"></path><path d="M2.25 23.25a9.75 9.75 0 0 1 19.5 0" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"></path></svg>'}
|
|
3987
3987
|
</span>
|
|
@@ -3989,9 +3989,9 @@ a.kg-cta-button {
|
|
|
3989
3989
|
</div>
|
|
3990
3990
|
`:""}
|
|
3991
3991
|
<div class="gh-article-meta-wrapper">
|
|
3992
|
-
${
|
|
3992
|
+
${c&&c.length>0?`
|
|
3993
3993
|
<span class="gh-article-author-name">
|
|
3994
|
-
${
|
|
3994
|
+
${c.length>1?`${D(c[0].name)} and ${c.length-1} ${c.length-1===1?"other":"others"}`:D(c[0].name)}
|
|
3995
3995
|
</span>
|
|
3996
3996
|
`:""}
|
|
3997
3997
|
<span class="gh-article-source">${t&&xn(t)?D(new URL(t).hostname):""} <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link-icon lucide-external-link"><path d="M15 3h6v6"/><path d="M10 14 21 3"/><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/></svg></span>
|
|
@@ -3999,7 +3999,7 @@ a.kg-cta-button {
|
|
|
3999
3999
|
</a>
|
|
4000
4000
|
${a?`
|
|
4001
4001
|
<figure class='gh-article-image'>
|
|
4002
|
-
<img src='${D(a)}' alt='${D(
|
|
4002
|
+
<img src='${D(a)}' alt='${D(s)}' />
|
|
4003
4003
|
</figure>
|
|
4004
4004
|
`:""}
|
|
4005
4005
|
</header>
|
|
@@ -4024,4 +4024,4 @@ a.kg-cta-button {
|
|
|
4024
4024
|
<\/script>
|
|
4025
4025
|
</body>
|
|
4026
4026
|
</html>
|
|
4027
|
-
`;return o.useEffect(()=>{const g=_.current;if(!g)return;g.srcdoc||(g.srcdoc=f);const R=b=>{if(b.data.type==="resize"){const N=`${b.data.bodyHeight+24}px`;z(N),g.style.height=N,b.data.isLoaded&&B(!1)}},j=b=>{if(b.key==="Escape"){b.preventDefault(),b.stopPropagation();const N=new KeyboardEvent("keydown",{key:"Escape",code:"Escape",keyCode:27,which:27,bubbles:!0,cancelable:!0});document.dispatchEvent(N)}},S=()=>{const b=g.contentWindow;b&&b.addEventListener("keydown",j)};return g.addEventListener("load",S),window.addEventListener("message",R),()=>{window.removeEventListener("message",R),g.removeEventListener("load",S);const b=g.contentWindow;b&&b.removeEventListener("keydown",j)}},[f]),o.useEffect(()=>{const g=_.current;if(!g)return;const R=g.contentDocument||g.contentWindow?.document;if(!R)return;const j=R.documentElement;j.style.setProperty("--font-size",u),j.classList.remove("has-sans-body","has-serif-body"),j.classList.add(`has-${v}-body`),j.classList.remove("has-dark-text","has-light-text"),j.classList.add(`has-${M?"light":"dark"}-text`),i==="SEPIA"?j.classList.add("has-sepia-bg"):j.classList.remove("has-sepia-bg");const S=g.contentWindow;if(S&&typeof S.resizeIframe=="function")S.resizeIframe();else{const b=new Event("resize");R.dispatchEvent(b)}},[u,v,i,M]),o.useEffect(()=>{const g=_.current;if(!g)return;const R=()=>{if(!g.contentDocument)return;const j=Array.from(g.contentDocument.querySelectorAll(".gh-content > :is(h2, h3, h4, h5, h6)[id]"));if(j.length===0)return;const S=Math.min(...j.map(N=>parseInt(N.tagName[1]))),b=j.map((N,Z)=>{const O=`heading-${Z}`;N.id=O;const J=parseInt(N.tagName[1])-S+1;return{id:O,text:N.textContent||"",level:J,element:N}});h?.(b),r?.(g)};return g.addEventListener("load",R),()=>g.removeEventListener("load",R)},[h,r]),o.useEffect(()=>{l?.(F)},[F,l]),n.jsx("div",{className:"w-full pb-6",children:n.jsxs("div",{className:"relative -mx-6",children:[F&&n.jsxs("div",{className:"mx-auto mt-6 w-full max-w-[640px] max-lg:px-4",children:[n.jsxs("div",{className:"mb-6 flex flex-col gap-2",children:[n.jsx(E,{className:"h-8"}),n.jsx(E,{className:"h-8 w-full max-w-md"})]}),n.jsx(E,{className:"mt-2 h-4",count:4,randomize:!0}),n.jsx(E,{className:"mt-8 h-[400px]"}),n.jsx(E,{className:"mt-2 h-4",containerClassName:"block mt-7 mb-4",count:8,randomize:!0})]}),n.jsx("iframe",{ref:_,id:"gh-ap-article-iframe",style:{width:"100%",border:"none",height:L,overflow:"hidden",opacity:F?0:1,transition:"opacity 0.2s ease-in-out",pointerEvents:d?"none":"auto"},title:"Embedded Content"})]})})},zn=()=>n.jsx("div",{className:"h-px bg-black/[8%] dark:bg-gray-950"}),Q=new Map,wt=({postId:t=null,onClose:c})=>{const{backgroundColor:a,currentFontSizeIndex:p,fontStyle:s,fontSize:k,handleColorChange:i,setFontStyle:u,increaseFontSize:v,decreaseFontSize:h,resetFontSize:r}=we(),l=o.useRef(null),[d,_]=o.useState(!1),[F,B]=o.useState(!1),[L,z]=o.useState(new Set),[M,K]=o.useState(new Set),[f,g]=o.useState(new Set),[R,j]=o.useState(!1),S=o.useRef(null),b=o.useRef(null),{post:N,processedReplies:Z,isLoading:O,loadMoreChildren:sn,loadMoreChildReplies:J,hasMoreChildren:X,hasMoreChildReplies:G}=be(t??"",{includeAncestors:!1}),cn=N,x=cn?.object,q=cn?.actor,In=cn?.object?.metadata?.ghostAuthors,Pn=x?.replyCount??0;o.useEffect(()=>{if(!X)return;S.current&&S.current.disconnect();const e=l.current;if(e)return S.current=new IntersectionObserver(async w=>{if(w[0].isIntersecting&&X&&!R){j(!0);try{await sn()}catch(m){console.error("Failed to load more top-level replies:",m)}finally{j(!1)}}},{root:e,rootMargin:"200px"}),b.current&&S.current.observe(b.current),()=>{S.current&&S.current.disconnect()}},[X,R,sn]);function ln(){}function Fn(e){z(w=>{const m=new Set(w);return m.has(e)?m.delete(e):(m.add(e),K(C=>{const T=new Set(C);return T.add(e),T})),m})}async function Ln(e,w){if(!f.has(e)){g(m=>new Set(m).add(e));try{J&&await J(w)}catch(m){console.error("Failed to load more replies for chain:",m)}finally{g(m=>{const C=new Set(m);return C.delete(e),C})}}}const Rn=()=>{},On=o.useRef(null),Tn="904px",H="640px",[mn,Mn]=o.useState(0),[V,An]=o.useState(!0),[gn]=Qn(Mn,100),kn=1;o.useEffect(()=>{const e=l.current,w=document.getElementById("object-content"),m=()=>{if(V||!e||!w)return;const T=w.getBoundingClientRect(),U=e.getBoundingClientRect();if(T.height<=U.height){gn(100);return}const $=Math.max(0,U.top-T.top),y=w.offsetHeight-e.offsetHeight,I=Math.min(Math.max($/y*100,0),100),an=Math.round(I/kn)*kn;gn(an)};if(V)return;const C=new MutationObserver(m);return w&&C.observe(w,{childList:!0,subtree:!0,characterData:!0}),e?.addEventListener("scroll",m),m(),()=>{e?.removeEventListener("scroll",m),C.disconnect()}},[V,gn]);const[nn,$n]=o.useState([]),[Dn,Bn]=o.useState(null),[en,qn]=o.useState(null),Hn=o.useCallback(e=>{$n(e)},[]),Un=o.useCallback(e=>{qn(e)},[]);o.useEffect(()=>{if(!en?.contentDocument||!nn.length)return;const w=setTimeout(()=>{const m=l.current;if(!m)return;const C=()=>{const T=en.contentDocument;if(!T||!T.documentElement)return;const U=m.scrollTop,Y=nn.map(I=>T.getElementById(I.id)).filter(I=>I!==null).map(I=>({element:I,id:I.id,top:I.offsetTop}));if(!Y.length)return;const $=100;let y=null;for(const I of Y)if(I.top-$<=U)y=I;else break;Bn(y?.id||null)};return m.addEventListener("scroll",C),C(),()=>{m.removeEventListener("scroll",C)}},100);return()=>clearTimeout(w)},[en,nn,Dn]);const tn=Nn();return o.useEffect(()=>{const e=l.current;return()=>{e&&t&&Q.set(t,e.scrollTop)}},[t]),o.useEffect(()=>{if(!V&&!O&&t&&l.current){const e=Q.get(t);e!==void 0&&e>0&&setTimeout(()=>{l.current&&(l.current.scrollTop=e)},100)}},[V,O,t]),O?n.jsx("div",{className:`max-h-full overflow-auto rounded-md ${a==="DARK"&&"dark"} ${(a==="LIGHT"||a==="SEPIA")&&"light"} ${P[a].background}`,children:n.jsx("div",{className:"flex h-full flex-col",children:n.jsxs("div",{className:"relative flex-1",children:[n.jsx("div",{className:`sticky top-0 z-50 flex h-[102px] items-center justify-center rounded-t-md border-b max-md:h-[68px] ${P[a].background} ${P[a].border}`,children:n.jsxs("div",{className:"grid w-full px-8 max-lg:px-4",style:{gridTemplateColumns:`1fr minmax(0,${H}) 1fr`},children:[n.jsx("div",{className:"flex items-center",children:n.jsx(pn,{className:P[a].button,onClick:c})}),n.jsxs("div",{className:"col-[2/3] mx-auto flex w-full items-center gap-3 max-md:hidden",children:[n.jsx(E,{className:"size-10 rounded-full"}),n.jsxs("div",{className:"grow pt-1",children:[n.jsx(E,{className:"w-full"}),n.jsx(E,{className:"w-2/3"})]})]}),n.jsx("div",{className:"col-[3/4] flex items-center justify-end gap-2",children:n.jsx(Cn,{backgroundColor:a,currentFontSizeIndex:p,fontStyle:s,onColorChange:i,onDecreaseFontSize:h,onFontStyleChange:u,onIncreaseFontSize:v,onOpenChange:_,onResetFontSize:r})})]})}),n.jsx("div",{className:"relative flex-1 max-lg:px-4",children:n.jsxs("div",{className:"mx-auto mt-11 w-full max-w-[640px]",children:[n.jsxs("div",{className:"mb-6 flex flex-col gap-2",children:[n.jsx(E,{className:"h-8"}),n.jsx(E,{className:"h-8 w-full max-w-md"})]}),n.jsx(E,{className:"mt-2 h-4",count:4,randomize:!0}),n.jsx(E,{className:"mt-8 h-[400px]"}),n.jsx(E,{className:"mt-2 h-4",containerClassName:"block mt-7 mb-4",count:8,randomize:!0})]})})]})})}):N?n.jsx("div",{ref:l,className:`max-h-full overflow-auto rounded-md ${a==="DARK"&&"dark"} ${(a==="LIGHT"||a==="SEPIA")&&"light"} ${P[a].background}`,"data-scrollable-container":!0,children:n.jsx(n.Fragment,{children:n.jsxs("div",{className:"flex h-full flex-col",children:[n.jsxs("div",{className:"relative flex-1",children:[n.jsx("div",{className:`sticky top-0 z-50 flex h-[102px] items-center justify-center rounded-t-md border-b max-md:h-[68px] ${P[a].background} ${P[a].border}`,children:n.jsxs("div",{className:"grid w-full px-8 max-lg:px-4",style:{gridTemplateColumns:`1fr minmax(0,${H}) 1fr`},children:[n.jsx("div",{className:"flex items-center",children:n.jsx(pn,{className:P[a].button,onClick:c})}),n.jsxs("div",{className:"col-[2/3] mx-auto flex w-full items-center justify-between gap-3 max-md:hidden",children:[n.jsx(Zn,{actor:q,isCurrentUser:x.authored,children:n.jsxs("div",{className:"flex cursor-pointer items-center gap-3",children:[n.jsx("div",{className:"relative z-10 pt-0.5",children:n.jsx(Jn,{author:q})}),n.jsxs("div",{className:"relative z-10 mt-0.5 flex min-w-0 cursor-pointer flex-col overflow-visible text-[1.5rem]",onClick:e=>Xn(q,tn,e),children:[n.jsx("div",{className:"flex w-full",children:n.jsx("span",{className:"min-w-0 truncate font-semibold whitespace-nowrap text-black hover:underline dark:text-white",children:O?n.jsx(E,{className:"w-20"}):q.name})}),n.jsxs("div",{className:"flex w-full",children:[!O&&n.jsx("span",{className:'truncate text-gray-700 after:mx-1 after:font-normal after:text-gray-700 after:content-["·"]',children:bn(q)}),n.jsx("span",{className:"text-gray-700",children:O?n.jsx(E,{className:"w-[120px]"}):Gn(x,!x.authored)})]})]})]})}),!x.authored&&!O&&n.jsx(ne,{following:q.followedByMe??!1,handle:bn(q)})]}),n.jsx("div",{className:"col-[3/4] flex items-center justify-end gap-2",children:n.jsx(Cn,{backgroundColor:a,currentFontSizeIndex:p,fontStyle:s,onColorChange:i,onDecreaseFontSize:h,onFontStyleChange:u,onIncreaseFontSize:v,onOpenChange:_,onResetFontSize:r})})]})}),n.jsxs("div",{className:"relative flex-1",children:[n.jsx(Ce,{iframeElement:en,modalRef:l,tocItems:nn,onOpenChange:B}),!O&&n.jsx("div",{className:"grow overflow-y-auto",children:n.jsxs("div",{className:"mx-auto px-6 pt-5 pb-10",style:{maxWidth:Tn},children:[n.jsxs("div",{className:"flex flex-col items-center pb-8",id:"object-content",children:[n.jsx(yt,{authors:In,backgroundColor:a,excerpt:x.summary??"",fontSize:k,fontStyle:s,heading:x.name,html:x.content??"",image:typeof x.image=="string"?x.image:x.image?.url,isPopoverOpen:d||F,postUrl:x?.url||"",onHeadingsExtracted:Hn,onIframeLoad:Un,onLoadingChange:An}),n.jsx("div",{className:"-ml-3 w-full",style:{maxWidth:H},children:n.jsx(ee,{actor:q,commentCount:Pn,layout:"modal",likeCount:x.likeCount??0,object:x,repostCount:x.repostCount??0,onLikeClick:Rn})})]}),x.type==="Tombstone"&&n.jsx(xe,{last:!0}),n.jsxs("div",{className:"mx-auto w-full border-t border-black/[8%] dark:border-gray-950",style:{maxWidth:H},children:[n.jsx(ve,{object:x}),n.jsx(zn,{})]}),O&&n.jsx(un,{size:"lg"}),n.jsxs("div",{ref:On,className:"mx-auto w-full",style:{maxWidth:H},children:[Z.map((e,w)=>{const m=w===Z.length-1,C=e.mainReply.id,T=L.has(C),U=M.has(C),Y=f.has(C),$=e.chain.length>0;return n.jsxs(dn.Fragment,{children:[n.jsx(on,{actor:e.mainReply.actor,allowDelete:e.mainReply.object.authored,commentCount:e.mainReply.object.replyCount??0,isChainParent:$,isPending:rn(e.mainReply.id),last:!$,layout:"reply",likeCount:e.mainReply.object.likeCount??0,object:e.mainReply.object,parentId:x.id,repostCount:e.mainReply.object.repostCount??0,type:"Note",onClick:()=>{const y=l.current;y&&t&&Q.set(t,y.scrollTop),tn(`/notes/${encodeURIComponent(e.mainReply.id)}`)},onDelete:ln}),$&&e.chain[0]&&n.jsx(on,{actor:e.chain[0].actor,allowDelete:e.chain[0].object.authored,commentCount:e.chain[0].object.replyCount??0,isChainContinuation:!0,isPending:rn(e.chain[0].id),last:e.chain.length===1,layout:"reply",likeCount:e.chain[0].object.likeCount??0,object:e.chain[0].object,parentId:x.id,repostCount:e.chain[0].object.repostCount??0,type:"Note",onClick:()=>{const y=l.current;y&&t&&Q.set(t,y.scrollTop),tn(`/notes/${encodeURIComponent(e.chain[0].id)}`)},onDelete:ln},e.chain[0].id),$&&T&&e.chain.slice(1).map((y,I)=>{const an=I===e.chain.slice(1).length-1,Wn=G&&G(w),Kn=an&&Wn;return n.jsx(on,{actor:y.actor,allowDelete:y.object.authored,commentCount:y.object.replyCount??0,isChainContinuation:!0,isPending:rn(y.id),last:an&&!Kn,layout:"reply",likeCount:y.object.likeCount??0,object:y.object,parentId:x.id,repostCount:y.object.repostCount??0,type:"Note",onClick:()=>{const fn=l.current;fn&&t&&Q.set(t,fn.scrollTop),tn(`/notes/${encodeURIComponent(y.id)}`)},onDelete:ln},y.id)}),$&&e.chain.length>1&&!T&&n.jsx(yn,{variant:"expand",onClick:()=>Fn(C)}),$&&T&&U&&G&&G(w)&&n.jsx(yn,{loading:Y,variant:"loadMore",onClick:()=>Ln(C,w)}),!m&&n.jsx(zn,{})]},e.mainReply.id)}),R&&n.jsx("div",{className:"flex flex-col items-center justify-center text-center",children:n.jsx(un,{size:"md"})})]}),X&&n.jsx("div",{ref:b,className:"h-1"})]})})]})]}),!O&&n.jsxs("div",{className:"pointer-events-none visible! sticky bottom-0 hidden items-end justify-between px-10 pb-[42px] lg:flex!",children:[n.jsx("div",{className:"pointer-events-auto text-gray-600",children:te(x.content??"")}),n.jsxs("div",{className:"pointer-events-auto min-w-10 text-right text-gray-600 transition-all duration-200 ease-out",children:[mn,"%"]},mn)]})]})})}):n.jsx("div",{className:`max-h-full overflow-auto rounded-md ${a==="DARK"&&"dark"} ${(a==="LIGHT"||a==="SEPIA")&&"light"} ${P[a].background}`,children:n.jsx("div",{className:"flex h-full flex-col",children:n.jsx("div",{className:"relative flex-1",children:n.jsx("div",{className:`sticky top-0 z-50 flex h-[102px] items-center justify-center rounded-t-md border-b max-md:h-[68px] ${P[a].background} ${P[a].border}`,children:n.jsxs("div",{className:"grid w-full px-8 max-lg:px-4",style:{gridTemplateColumns:`1fr minmax(0,${H}) 1fr`},children:[n.jsx("div",{className:"flex items-center",children:n.jsx(pn,{className:P[a].button,onClick:c})}),n.jsx("div",{className:"col-[2/3] mx-auto flex w-full items-center gap-3 max-md:hidden",children:n.jsx("div",{className:"grow text-center",children:n.jsx("span",{children:"Error loading article."})})})]})})})})})},jt=({isLoading:t,activities:c,currentTopic:a,fetchNextPage:p,hasNextPage:s,isFetchingNextPage:k,onTopicChange:i})=>{const u=Nn(),{canGoBack:v,goBack:h}=oe(),[r,l]=o.useState(!1),d=re(),{topicsQuery:_}=ie(),{data:F}=_,B=F&&F.topics.length>0;o.useEffect(()=>{l(!!d.postId)},[d.postId]);const L=o.useRef(null),z=o.useRef(null),M=o.useRef(null);o.useEffect(()=>(L.current&&L.current.disconnect(),L.current=new IntersectionObserver(f=>{f[0].isIntersecting&&s&&!k&&p()}),z.current&&L.current.observe(z.current),M.current&&L.current.observe(M.current),()=>{L.current&&L.current.disconnect()}),[s,k,p]);const K=Math.max(0,Math.floor(c.length*.75)-1);return n.jsxs(de,{children:[B&&n.jsx(ye,{currentTopic:a,excludeTopics:["top"],onTopicChange:i}),n.jsx("div",{className:"flex w-full flex-col",children:n.jsx("div",{className:"w-full",children:c.length>0?n.jsx("div",{className:"my-4",children:n.jsx("div",{className:"mx-auto flex min-h-[calc(100dvh_-_117px)] items-start gap-11",children:n.jsx("div",{className:"flex w-full min-w-0 flex-col items-center",children:n.jsxs("div",{className:"flex w-full min-w-0 flex-col items-start",children:[n.jsxs("ul",{className:"mx-auto flex w-full flex-col","data-testid":"inbox-list",children:[c.map((f,g)=>n.jsxs("li",{"data-testid":"inbox-item","data-test-view-article":!0,children:[n.jsx(on,{actor:f.actor,allowDelete:f.object.authored,commentCount:f.object.replyCount??0,isLoading:t,isPending:rn(f.id),layout:"inbox",likeCount:f.object.likeCount??0,object:f.object,repostCount:f.object.repostCount??0,type:f.type,onClick:()=>{u(`/reader/${encodeURIComponent(f.id)}`)}}),g<c.length-1&&n.jsx(se,{}),g===K&&n.jsx("div",{ref:z,className:"h-1"})]},`${f.id}-${f.type}-${g}`)),k&&n.jsx("li",{className:"flex flex-col items-center justify-center gap-4 text-center",children:n.jsx(un,{size:"md"})})]}),n.jsx("div",{ref:M,className:"h-1"})]})})})}):a!=="following"?n.jsx("div",{className:"mt-[24vh]",children:n.jsx(wn,{description:"Explore other topics for more content.",title:"Nothing here yet",children:n.jsx(jn,{})})}):n.jsx("div",{className:"mt-[24vh]",children:n.jsx(wn,{actions:B?n.jsx(A,{onClick:()=>u("/explore"),children:"Find accounts to follow →"}):n.jsx(A,{asChild:!0,children:n.jsx("a",{href:"https://explore.ghost.org/social-web",rel:"noopener noreferrer",target:"_blank",children:"Find accounts to follow →"})}),description:"Start following publishers to see their long-form posts here.",title:"Your Reader is empty",children:n.jsx(jn,{})})})})}),n.jsx(ce,{open:r,onOpenChange:f=>{f||(v?h():u("/reader")),l(f)},children:n.jsxs(le,{className:"inset-y-3 h-[calc(100vh-24px)] w-screen max-w-[calc(100vw-24px)] animate-none! p-0 focus:outline-hidden dark:bg-gray-950",children:[n.jsxs(ge,{className:"hidden",children:[n.jsx(pe,{children:"Reader"}),n.jsx(ue,{children:"Ghost reader for long form articles"})]}),d.postId&&n.jsx(wt,{postId:d.postId,onClose:()=>{v?h():u("/reader")}})]})})]})},Pt=()=>{const[t,c]=o.useState("following"),{inboxQuery:a}=he({enabled:t==="following"}),{discoveryFeedQuery:p}=me({enabled:t!=="following",topic:t}),s=t==="following"?a:p,{data:k,error:i,fetchNextPage:u,hasNextPage:v,isFetchingNextPage:h,isLoading:r}=s,l=i&&vn(i)&&i.statusCode===404&&t!=="following";if(i&&vn(i)&&!l)return n.jsx(ke,{errorCode:i.code,statusCode:i.statusCode});const d=l?[]:k?.pages.flatMap(_=>_.posts)??Array.from({length:5},(_,F)=>({id:`placeholder-${F}`,object:{}}));return n.jsx(jt,{activities:d,currentTopic:t,fetchNextPage:u,hasNextPage:v,isFetchingNextPage:h,isLoading:r,onTopicChange:c})};export{Pt as default};
|
|
4027
|
+
`;return o.useEffect(()=>{const g=_.current;if(!g)return;g.srcdoc||(g.srcdoc=f);const R=b=>{if(b.data.type==="resize"){const N=`${b.data.bodyHeight+24}px`;z(N),g.style.height=N,b.data.isLoaded&&B(!1)}},j=b=>{if(b.key==="Escape"){b.preventDefault(),b.stopPropagation();const N=new KeyboardEvent("keydown",{key:"Escape",code:"Escape",keyCode:27,which:27,bubbles:!0,cancelable:!0});document.dispatchEvent(N)}},S=()=>{const b=g.contentWindow;b&&b.addEventListener("keydown",j)};return g.addEventListener("load",S),window.addEventListener("message",R),()=>{window.removeEventListener("message",R),g.removeEventListener("load",S);const b=g.contentWindow;b&&b.removeEventListener("keydown",j)}},[f]),o.useEffect(()=>{const g=_.current;if(!g)return;const R=g.contentDocument||g.contentWindow?.document;if(!R)return;const j=R.documentElement;j.style.setProperty("--font-size",u),j.classList.remove("has-sans-body","has-serif-body"),j.classList.add(`has-${v}-body`),j.classList.remove("has-dark-text","has-light-text"),j.classList.add(`has-${M?"light":"dark"}-text`),i==="SEPIA"?j.classList.add("has-sepia-bg"):j.classList.remove("has-sepia-bg");const S=g.contentWindow;if(S&&typeof S.resizeIframe=="function")S.resizeIframe();else{const b=new Event("resize");R.dispatchEvent(b)}},[u,v,i,M]),o.useEffect(()=>{const g=_.current;if(!g)return;const R=()=>{if(!g.contentDocument)return;const j=Array.from(g.contentDocument.querySelectorAll(".gh-content > :is(h2, h3, h4, h5, h6)[id]"));if(j.length===0)return;const S=Math.min(...j.map(N=>parseInt(N.tagName[1]))),b=j.map((N,Z)=>{const O=`heading-${Z}`;N.id=O;const J=parseInt(N.tagName[1])-S+1;return{id:O,text:N.textContent||"",level:J,element:N}});h?.(b),r?.(g)};return g.addEventListener("load",R),()=>g.removeEventListener("load",R)},[h,r]),o.useEffect(()=>{l?.(F)},[F,l]),n.jsx("div",{className:"w-full pb-6",children:n.jsxs("div",{className:"relative -mx-6",children:[F&&n.jsxs("div",{className:"mx-auto mt-6 w-full max-w-[640px] max-lg:px-4",children:[n.jsxs("div",{className:"mb-6 flex flex-col gap-2",children:[n.jsx(E,{className:"h-8"}),n.jsx(E,{className:"h-8 w-full max-w-md"})]}),n.jsx(E,{className:"mt-2 h-4",count:4,randomize:!0}),n.jsx(E,{className:"mt-8 h-[400px]"}),n.jsx(E,{className:"mt-2 h-4",containerClassName:"block mt-7 mb-4",count:8,randomize:!0})]}),n.jsx("iframe",{ref:_,id:"gh-ap-article-iframe",style:{width:"100%",border:"none",height:L,overflow:"hidden",opacity:F?0:1,transition:"opacity 0.2s ease-in-out",pointerEvents:d?"none":"auto"},title:"Embedded Content"})]})})},zn=()=>n.jsx("div",{className:"h-px bg-black/[8%] dark:bg-gray-950"}),Q=new Map,wt=({postId:t=null,onClose:s})=>{const{backgroundColor:a,currentFontSizeIndex:p,fontStyle:c,fontSize:k,handleColorChange:i,setFontStyle:u,increaseFontSize:v,decreaseFontSize:h,resetFontSize:r}=we(),l=o.useRef(null),[d,_]=o.useState(!1),[F,B]=o.useState(!1),[L,z]=o.useState(new Set),[M,K]=o.useState(new Set),[f,g]=o.useState(new Set),[R,j]=o.useState(!1),S=o.useRef(null),b=o.useRef(null),{post:N,processedReplies:Z,isLoading:O,loadMoreChildren:cn,loadMoreChildReplies:J,hasMoreChildren:X,hasMoreChildReplies:G}=be(t??"",{includeAncestors:!1}),sn=N,x=sn?.object,q=sn?.actor,In=sn?.object?.metadata?.ghostAuthors,Pn=x?.replyCount??0;o.useEffect(()=>{if(!X)return;S.current&&S.current.disconnect();const e=l.current;if(e)return S.current=new IntersectionObserver(async w=>{if(w[0].isIntersecting&&X&&!R){j(!0);try{await cn()}catch(m){console.error("Failed to load more top-level replies:",m)}finally{j(!1)}}},{root:e,rootMargin:"200px"}),b.current&&S.current.observe(b.current),()=>{S.current&&S.current.disconnect()}},[X,R,cn]);function ln(){}function Fn(e){z(w=>{const m=new Set(w);return m.has(e)?m.delete(e):(m.add(e),K(C=>{const T=new Set(C);return T.add(e),T})),m})}async function Ln(e,w){if(!f.has(e)){g(m=>new Set(m).add(e));try{J&&await J(w)}catch(m){console.error("Failed to load more replies for chain:",m)}finally{g(m=>{const C=new Set(m);return C.delete(e),C})}}}const Rn=()=>{},On=o.useRef(null),Tn="904px",H="640px",[mn,Mn]=o.useState(0),[V,An]=o.useState(!0),[gn]=Qn(Mn,100),kn=1;o.useEffect(()=>{const e=l.current,w=document.getElementById("object-content"),m=()=>{if(V||!e||!w)return;const T=w.getBoundingClientRect(),U=e.getBoundingClientRect();if(T.height<=U.height){gn(100);return}const $=Math.max(0,U.top-T.top),y=w.offsetHeight-e.offsetHeight,I=Math.min(Math.max($/y*100,0),100),an=Math.round(I/kn)*kn;gn(an)};if(V)return;const C=new MutationObserver(m);return w&&C.observe(w,{childList:!0,subtree:!0,characterData:!0}),e?.addEventListener("scroll",m),m(),()=>{e?.removeEventListener("scroll",m),C.disconnect()}},[V,gn]);const[nn,$n]=o.useState([]),[Dn,Bn]=o.useState(null),[en,qn]=o.useState(null),Hn=o.useCallback(e=>{$n(e)},[]),Un=o.useCallback(e=>{qn(e)},[]);o.useEffect(()=>{if(!en?.contentDocument||!nn.length)return;const w=setTimeout(()=>{const m=l.current;if(!m)return;const C=()=>{const T=en.contentDocument;if(!T||!T.documentElement)return;const U=m.scrollTop,Y=nn.map(I=>T.getElementById(I.id)).filter(I=>I!==null).map(I=>({element:I,id:I.id,top:I.offsetTop}));if(!Y.length)return;const $=100;let y=null;for(const I of Y)if(I.top-$<=U)y=I;else break;Bn(y?.id||null)};return m.addEventListener("scroll",C),C(),()=>{m.removeEventListener("scroll",C)}},100);return()=>clearTimeout(w)},[en,nn,Dn]);const tn=Nn();return o.useEffect(()=>{const e=l.current;return()=>{e&&t&&Q.set(t,e.scrollTop)}},[t]),o.useEffect(()=>{if(!V&&!O&&t&&l.current){const e=Q.get(t);e!==void 0&&e>0&&setTimeout(()=>{l.current&&(l.current.scrollTop=e)},100)}},[V,O,t]),O?n.jsx("div",{className:`max-h-full overflow-auto rounded-md ${a==="DARK"&&"dark"} ${(a==="LIGHT"||a==="SEPIA")&&"light"} ${P[a].background}`,children:n.jsx("div",{className:"flex h-full flex-col",children:n.jsxs("div",{className:"relative flex-1",children:[n.jsx("div",{className:`sticky top-0 z-50 flex h-[102px] items-center justify-center rounded-t-md border-b max-md:h-[68px] ${P[a].background} ${P[a].border}`,children:n.jsxs("div",{className:"grid w-full px-8 max-lg:px-4",style:{gridTemplateColumns:`1fr minmax(0,${H}) 1fr`},children:[n.jsx("div",{className:"flex items-center",children:n.jsx(pn,{className:P[a].button,onClick:s})}),n.jsxs("div",{className:"col-[2/3] mx-auto flex w-full items-center gap-3 max-md:hidden",children:[n.jsx(E,{className:"size-10 rounded-full"}),n.jsxs("div",{className:"grow pt-1",children:[n.jsx(E,{className:"w-full"}),n.jsx(E,{className:"w-2/3"})]})]}),n.jsx("div",{className:"col-[3/4] flex items-center justify-end gap-2",children:n.jsx(Cn,{backgroundColor:a,currentFontSizeIndex:p,fontStyle:c,onColorChange:i,onDecreaseFontSize:h,onFontStyleChange:u,onIncreaseFontSize:v,onOpenChange:_,onResetFontSize:r})})]})}),n.jsx("div",{className:"relative flex-1 max-lg:px-4",children:n.jsxs("div",{className:"mx-auto mt-11 w-full max-w-[640px]",children:[n.jsxs("div",{className:"mb-6 flex flex-col gap-2",children:[n.jsx(E,{className:"h-8"}),n.jsx(E,{className:"h-8 w-full max-w-md"})]}),n.jsx(E,{className:"mt-2 h-4",count:4,randomize:!0}),n.jsx(E,{className:"mt-8 h-[400px]"}),n.jsx(E,{className:"mt-2 h-4",containerClassName:"block mt-7 mb-4",count:8,randomize:!0})]})})]})})}):N?n.jsx("div",{ref:l,className:`max-h-full overflow-auto rounded-md ${a==="DARK"&&"dark"} ${(a==="LIGHT"||a==="SEPIA")&&"light"} ${P[a].background}`,"data-scrollable-container":!0,children:n.jsx(n.Fragment,{children:n.jsxs("div",{className:"flex h-full flex-col",children:[n.jsxs("div",{className:"relative flex-1",children:[n.jsx("div",{className:`sticky top-0 z-50 flex h-[102px] items-center justify-center rounded-t-md border-b max-md:h-[68px] ${P[a].background} ${P[a].border}`,children:n.jsxs("div",{className:"grid w-full px-8 max-lg:px-4",style:{gridTemplateColumns:`1fr minmax(0,${H}) 1fr`},children:[n.jsx("div",{className:"flex items-center",children:n.jsx(pn,{className:P[a].button,onClick:s})}),n.jsxs("div",{className:"col-[2/3] mx-auto flex w-full items-center justify-between gap-3 max-md:hidden",children:[n.jsx(Zn,{actor:q,isCurrentUser:x.authored,children:n.jsxs("div",{className:"flex cursor-pointer items-center gap-3",children:[n.jsx("div",{className:"relative z-10 pt-0.5",children:n.jsx(Jn,{author:q})}),n.jsxs("div",{className:"relative z-10 mt-0.5 flex min-w-0 cursor-pointer flex-col overflow-visible text-[1.5rem]",onClick:e=>Xn(q,tn,e),children:[n.jsx("div",{className:"flex w-full",children:n.jsx("span",{className:"min-w-0 truncate font-semibold whitespace-nowrap text-black hover:underline dark:text-white",children:O?n.jsx(E,{className:"w-20"}):q.name})}),n.jsxs("div",{className:"flex w-full",children:[!O&&n.jsx("span",{className:'truncate text-gray-700 after:mx-1 after:font-normal after:text-gray-700 after:content-["·"]',children:bn(q)}),n.jsx("span",{className:"text-gray-700",children:O?n.jsx(E,{className:"w-[120px]"}):Gn(x,!x.authored)})]})]})]})}),!x.authored&&!O&&n.jsx(ne,{following:q.followedByMe??!1,handle:bn(q)})]}),n.jsx("div",{className:"col-[3/4] flex items-center justify-end gap-2",children:n.jsx(Cn,{backgroundColor:a,currentFontSizeIndex:p,fontStyle:c,onColorChange:i,onDecreaseFontSize:h,onFontStyleChange:u,onIncreaseFontSize:v,onOpenChange:_,onResetFontSize:r})})]})}),n.jsxs("div",{className:"relative flex-1",children:[n.jsx(Ce,{iframeElement:en,modalRef:l,tocItems:nn,onOpenChange:B}),!O&&n.jsx("div",{className:"grow overflow-y-auto",children:n.jsxs("div",{className:"mx-auto px-6 pt-5 pb-10",style:{maxWidth:Tn},children:[n.jsxs("div",{className:"flex flex-col items-center pb-8",id:"object-content",children:[n.jsx(yt,{authors:In,backgroundColor:a,excerpt:x.summary??"",fontSize:k,fontStyle:c,heading:x.name,html:x.content??"",image:typeof x.image=="string"?x.image:x.image?.url,isPopoverOpen:d||F,postUrl:x?.url||"",onHeadingsExtracted:Hn,onIframeLoad:Un,onLoadingChange:An}),n.jsx("div",{className:"-ml-3 w-full",style:{maxWidth:H},children:n.jsx(ee,{actor:q,commentCount:Pn,layout:"modal",likeCount:x.likeCount??0,object:x,repostCount:x.repostCount??0,onLikeClick:Rn})})]}),x.type==="Tombstone"&&n.jsx(xe,{last:!0}),n.jsxs("div",{className:"mx-auto w-full border-t border-black/[8%] dark:border-gray-950",style:{maxWidth:H},children:[n.jsx(ve,{object:x}),n.jsx(zn,{})]}),O&&n.jsx(un,{size:"lg"}),n.jsxs("div",{ref:On,className:"mx-auto w-full",style:{maxWidth:H},children:[Z.map((e,w)=>{const m=w===Z.length-1,C=e.mainReply.id,T=L.has(C),U=M.has(C),Y=f.has(C),$=e.chain.length>0;return n.jsxs(dn.Fragment,{children:[n.jsx(on,{actor:e.mainReply.actor,allowDelete:e.mainReply.object.authored,commentCount:e.mainReply.object.replyCount??0,isChainParent:$,isPending:rn(e.mainReply.id),last:!$,layout:"reply",likeCount:e.mainReply.object.likeCount??0,object:e.mainReply.object,parentId:x.id,repostCount:e.mainReply.object.repostCount??0,type:"Note",onClick:()=>{const y=l.current;y&&t&&Q.set(t,y.scrollTop),tn(`/notes/${encodeURIComponent(e.mainReply.id)}`)},onDelete:ln}),$&&e.chain[0]&&n.jsx(on,{actor:e.chain[0].actor,allowDelete:e.chain[0].object.authored,commentCount:e.chain[0].object.replyCount??0,isChainContinuation:!0,isPending:rn(e.chain[0].id),last:e.chain.length===1,layout:"reply",likeCount:e.chain[0].object.likeCount??0,object:e.chain[0].object,parentId:x.id,repostCount:e.chain[0].object.repostCount??0,type:"Note",onClick:()=>{const y=l.current;y&&t&&Q.set(t,y.scrollTop),tn(`/notes/${encodeURIComponent(e.chain[0].id)}`)},onDelete:ln},e.chain[0].id),$&&T&&e.chain.slice(1).map((y,I)=>{const an=I===e.chain.slice(1).length-1,Wn=G&&G(w),Kn=an&&Wn;return n.jsx(on,{actor:y.actor,allowDelete:y.object.authored,commentCount:y.object.replyCount??0,isChainContinuation:!0,isPending:rn(y.id),last:an&&!Kn,layout:"reply",likeCount:y.object.likeCount??0,object:y.object,parentId:x.id,repostCount:y.object.repostCount??0,type:"Note",onClick:()=>{const fn=l.current;fn&&t&&Q.set(t,fn.scrollTop),tn(`/notes/${encodeURIComponent(y.id)}`)},onDelete:ln},y.id)}),$&&e.chain.length>1&&!T&&n.jsx(yn,{variant:"expand",onClick:()=>Fn(C)}),$&&T&&U&&G&&G(w)&&n.jsx(yn,{loading:Y,variant:"loadMore",onClick:()=>Ln(C,w)}),!m&&n.jsx(zn,{})]},e.mainReply.id)}),R&&n.jsx("div",{className:"flex flex-col items-center justify-center text-center",children:n.jsx(un,{size:"md"})})]}),X&&n.jsx("div",{ref:b,className:"h-1"})]})})]})]}),!O&&n.jsxs("div",{className:"pointer-events-none visible! sticky bottom-0 hidden items-end justify-between px-10 pb-[42px] lg:flex!",children:[n.jsx("div",{className:"pointer-events-auto text-gray-600",children:te(x.content??"")}),n.jsxs("div",{className:"pointer-events-auto min-w-10 text-right text-gray-600 transition-all duration-200 ease-out",children:[mn,"%"]},mn)]})]})})}):n.jsx("div",{className:`max-h-full overflow-auto rounded-md ${a==="DARK"&&"dark"} ${(a==="LIGHT"||a==="SEPIA")&&"light"} ${P[a].background}`,children:n.jsx("div",{className:"flex h-full flex-col",children:n.jsx("div",{className:"relative flex-1",children:n.jsx("div",{className:`sticky top-0 z-50 flex h-[102px] items-center justify-center rounded-t-md border-b max-md:h-[68px] ${P[a].background} ${P[a].border}`,children:n.jsxs("div",{className:"grid w-full px-8 max-lg:px-4",style:{gridTemplateColumns:`1fr minmax(0,${H}) 1fr`},children:[n.jsx("div",{className:"flex items-center",children:n.jsx(pn,{className:P[a].button,onClick:s})}),n.jsx("div",{className:"col-[2/3] mx-auto flex w-full items-center gap-3 max-md:hidden",children:n.jsx("div",{className:"grow text-center",children:n.jsx("span",{children:"Error loading article."})})})]})})})})})},jt=({isLoading:t,activities:s,currentTopic:a,fetchNextPage:p,hasNextPage:c,isFetchingNextPage:k,onTopicChange:i})=>{const u=Nn(),{canGoBack:v,goBack:h}=oe(),[r,l]=o.useState(!1),d=re(),{topicsQuery:_}=ie(),{data:F}=_,B=F&&F.topics.length>0;o.useEffect(()=>{l(!!d.postId)},[d.postId]);const L=o.useRef(null),z=o.useRef(null),M=o.useRef(null);o.useEffect(()=>(L.current&&L.current.disconnect(),L.current=new IntersectionObserver(f=>{f[0].isIntersecting&&c&&!k&&p()}),z.current&&L.current.observe(z.current),M.current&&L.current.observe(M.current),()=>{L.current&&L.current.disconnect()}),[c,k,p]);const K=Math.max(0,Math.floor(s.length*.75)-1);return n.jsxs(de,{children:[B&&n.jsx(ye,{currentTopic:a,excludeTopics:["top"],onTopicChange:i}),n.jsx("div",{className:"flex w-full flex-col",children:n.jsx("div",{className:"w-full",children:s.length>0?n.jsx("div",{className:"my-4",children:n.jsx("div",{className:"mx-auto flex min-h-[calc(100dvh_-_117px)] items-start gap-11",children:n.jsx("div",{className:"flex w-full min-w-0 flex-col items-center",children:n.jsxs("div",{className:"flex w-full min-w-0 flex-col items-start",children:[n.jsxs("ul",{className:"mx-auto flex w-full flex-col","data-testid":"inbox-list",children:[s.map((f,g)=>n.jsxs("li",{"data-testid":"inbox-item","data-test-view-article":!0,children:[n.jsx(on,{actor:f.actor,allowDelete:f.object.authored,commentCount:f.object.replyCount??0,isLoading:t,isPending:rn(f.id),layout:"inbox",likeCount:f.object.likeCount??0,object:f.object,repostCount:f.object.repostCount??0,type:f.type,onClick:()=>{u(`/reader/${encodeURIComponent(f.id)}`)}}),g<s.length-1&&n.jsx(ce,{}),g===K&&n.jsx("div",{ref:z,className:"h-1"})]},`${f.id}-${f.type}-${g}`)),k&&n.jsx("li",{className:"flex flex-col items-center justify-center gap-4 text-center",children:n.jsx(un,{size:"md"})})]}),n.jsx("div",{ref:M,className:"h-1"})]})})})}):a!=="following"?n.jsx("div",{className:"mt-[24vh]",children:n.jsx(wn,{description:"Explore other topics for more content.",title:"Nothing here yet",children:n.jsx(jn,{})})}):n.jsx("div",{className:"mt-[24vh]",children:n.jsx(wn,{actions:B?n.jsx(A,{onClick:()=>u("/explore"),children:"Find accounts to follow →"}):n.jsx(A,{asChild:!0,children:n.jsx("a",{href:"https://explore.ghost.org/social-web",rel:"noopener noreferrer",target:"_blank",children:"Find accounts to follow →"})}),description:"Start following publishers to see their long-form posts here.",title:"Your Reader is empty",children:n.jsx(jn,{})})})})}),n.jsx(se,{open:r,onOpenChange:f=>{f||(v?h():u("/reader")),l(f)},children:n.jsxs(le,{className:"inset-y-3 h-[calc(100vh-24px)] w-screen max-w-[calc(100vw-24px)] animate-none! p-0 focus:outline-hidden dark:bg-gray-950",children:[n.jsxs(ge,{className:"hidden",children:[n.jsx(pe,{children:"Reader"}),n.jsx(ue,{children:"Ghost reader for long form articles"})]}),d.postId&&n.jsx(wt,{postId:d.postId,onClose:()=>{v?h():u("/reader")}})]})})]})},Pt=()=>{const[t,s]=o.useState("following"),{inboxQuery:a}=he({enabled:t==="following"}),{discoveryFeedQuery:p}=me({enabled:t!=="following",topic:t}),c=t==="following"?a:p,{data:k,error:i,fetchNextPage:u,hasNextPage:v,isFetchingNextPage:h,isLoading:r}=c,l=i&&vn(i)&&i.statusCode===404&&t!=="following";if(i&&vn(i)&&!l)return n.jsx(ke,{errorCode:i.code,statusCode:i.statusCode});const d=l?[]:k?.pages.flatMap(_=>_.posts)??Array.from({length:5},(_,F)=>({id:`placeholder-${F}`,object:{}}));return n.jsx(jt,{activities:d,currentTopic:t,fetchNextPage:u,hasNextPage:v,isFetchingNextPage:h,isLoading:r,onTopicChange:s})};export{Pt as default};
|