ghost 6.11.0 → 6.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (435) hide show
  1. package/components/tryghost-i18n-6.12.0.tgz +0 -0
  2. package/core/boot.js +4 -2
  3. package/core/built/admin/assets/{_baseAssignValue-BX8EallQ.js → _baseAssignValue-hsL6ItjC.js} +1 -1
  4. package/core/built/admin/assets/{a-large-small-CKZJgscl.js → a-large-small-BPPu_Iy7.js} +1 -1
  5. package/core/built/admin/assets/admin-x-settings/admin-x-settings.js +1 -1
  6. package/core/built/admin/assets/admin-x-settings/{code-editor-view-n8DFeXbv.mjs → code-editor-view-Bq6l5arq.mjs} +2 -2
  7. package/core/built/admin/assets/admin-x-settings/{index-v6qQgUXt.mjs → index-CKaxer_o.mjs} +2 -2
  8. package/core/built/admin/assets/admin-x-settings/{index-CXL12uvO.mjs → index-CtYEAgeN.mjs} +2 -2
  9. package/core/built/admin/assets/admin-x-settings/{index-D4ye6uvI.mjs → index-D4NstoNQ.mjs} +11 -6
  10. package/core/built/admin/assets/admin-x-settings/{modals-CdsPaTfy.mjs → modals-BzljHVa7.mjs} +2 -2
  11. package/core/built/admin/assets/{at-sign-CqQzllfI.js → at-sign-CYnGzOFc.js} +1 -1
  12. package/core/built/admin/assets/{audience-select-DQD7iDOb.js → audience-select-DYoxiiwy.js} +1 -1
  13. package/core/built/admin/assets/{avatar-flipboard-uq7ptTxT.js → avatar-flipboard-C9-npfmZ.js} +1 -1
  14. package/core/built/admin/assets/{bluesky-sharing-qyIGv6Ny.js → bluesky-sharing-BGcmGcee.js} +1 -1
  15. package/core/built/admin/assets/{chart-DGA1MaFs.js → chart-CqJxisVP.js} +1 -1
  16. package/core/built/admin/assets/{chunk.524.1289543297329587cf8a.js → chunk.524.74a9629dd2ba0d21bbef.js} +7 -7
  17. package/core/built/admin/assets/{chunk.582.344ea0d0a16d671345cd.js → chunk.582.3846471396b3a7c46e66.js} +8 -8
  18. package/core/built/admin/assets/{code-editor-view-Bz6kXDiv.js → code-editor-view-C8l3gNnO.js} +1 -1
  19. package/core/built/admin/assets/{comments-C-lkEDkz.js → comments-CpHDoxov.js} +1 -1
  20. package/core/built/admin/assets/{copy-BFuV16bY.js → copy-DWiB-781.js} +1 -1
  21. package/core/built/admin/assets/{data-list-Bw1CQEZ9.js → data-list-yngXNZDF.js} +1 -1
  22. package/core/built/admin/assets/{deleted-feed-item-CmNbSYiO.js → deleted-feed-item-C0FcyLMN.js} +1 -1
  23. package/core/built/admin/assets/{edit-profile-DlIPB2km.js → edit-profile-BjtDkDAq.js} +1 -1
  24. package/core/built/admin/assets/{empty-indicator-DBrIZcFq.js → empty-indicator-BXWniwsl.js} +1 -1
  25. package/core/built/admin/assets/{en-BBc7b85q.js → en-B8qaJx-T.js} +1 -1
  26. package/core/built/admin/assets/{feed-B3XQzKZl.js → feed-DsCVb1SA.js} +1 -1
  27. package/core/built/admin/assets/{filters-DUFXZZnu.js → filters-jAXQSPq6.js} +1 -1
  28. package/core/built/admin/assets/{gh-chart-BV97-O7c.js → gh-chart-DwTCK8z_.js} +1 -1
  29. package/core/built/admin/assets/{ghost-9aa1e7c5992f122dba6932af78bf8e56.js → ghost-6367d022df9db9dacbcb9bfa30232ec7.js} +2 -2
  30. package/core/built/admin/assets/{growth-njR0GqK2.js → growth-DshcRqda.js} +1 -1
  31. package/core/built/admin/assets/{hash-CdH0ikFp.js → hash-p9dv0yuc.js} +1 -1
  32. package/core/built/admin/assets/{inbox-Bd0uf1Ez.js → inbox-CRoP9sy5.js} +1 -1
  33. package/core/built/admin/assets/{index-Kji6JKl7.js → index-6syrC9X1.js} +1 -1
  34. package/core/built/admin/assets/{index-C7M19LpB.js → index-BKtz3UH0.js} +1 -1
  35. package/core/built/admin/assets/{index-DWk7hKRR.js → index-BwY94Fb4.js} +1 -1
  36. package/core/built/admin/assets/{index-BFhECYgc.js → index-C3DF6aFe.js} +1 -1
  37. package/core/built/admin/assets/index-C6NCNp1B.js +1 -0
  38. package/core/built/admin/assets/{index-BYawr8p9.js → index-CJU9a2PB.js} +3 -3
  39. package/core/built/admin/assets/{index-CIE2_z5J.js → index-CUWE7aD1.js} +1 -1
  40. package/core/built/admin/assets/{index-DgRIbSpg.js → index-CuQ_II0e.js} +1 -1
  41. package/core/built/admin/assets/{index-Birw80cQ.js → index-DG8f-HuU.js} +1 -1
  42. package/core/built/admin/assets/{index-DziHC2du.js → index-DItZTRQ4.js} +1 -1
  43. package/core/built/admin/assets/{index-DG53N3Xt.js → index-eLx96SEn.js} +1 -1
  44. package/core/built/admin/assets/{index-DCw6JaEl.js → index-j2_Q-_8H.js} +1 -1
  45. package/core/built/admin/assets/{index-BZ21H0xH.js → index-qWpHJAMP.js} +1 -1
  46. package/core/built/admin/assets/{index-DXCu9e7c.js → index-sy6xRtoO.js} +1 -1
  47. package/core/built/admin/assets/{koenig-lexical-BDJVCHtm.js → koenig-lexical-DgAlBHHS.js} +1 -1
  48. package/core/built/admin/assets/{kpi-card-cv8roErt.js → kpi-card-CHZSLw4p.js} +1 -1
  49. package/core/built/admin/assets/{kpis-Dt4OFY3L.js → kpis-DzbAHfKK.js} +1 -1
  50. package/core/built/admin/assets/{links-08beB3Ij.js → links-BQHRbn46.js} +1 -1
  51. package/core/built/admin/assets/{lucide-react-DKlmxVQI.js → lucide-react-B7UnD_Dp.js} +1 -1
  52. package/core/built/admin/assets/{main-layout-Cl09wG7F.js → main-layout-9nmU5WlG.js} +1 -1
  53. package/core/built/admin/assets/{message-square-text-CaMVBVPr.js → message-square-text-CS3iRuPc.js} +1 -1
  54. package/core/built/admin/assets/{minus-2XwCoFJV.js → minus-emzwh6hq.js} +1 -1
  55. package/core/built/admin/assets/{modals-CIgzYQgv.js → modals-CumFuZ2d.js} +1 -1
  56. package/core/built/admin/assets/{moderation-FjlsSym6.js → moderation-DyfFc9m4.js} +1 -1
  57. package/core/built/admin/assets/{newsletter-BNOwZNlE.js → newsletter-BWul5IFc.js} +1 -1
  58. package/core/built/admin/assets/{newsletters-DUusEYSg.js → newsletters-N6bwI1OF.js} +1 -1
  59. package/core/built/admin/assets/{note-BpYwIDK6.js → note-CiBzkHzz.js} +1 -1
  60. package/core/built/admin/assets/{overview-Y5QYPClr.js → overview-D9gRvn7X.js} +1 -1
  61. package/core/built/admin/assets/{pagemenu-BMXHDXYy.js → pagemenu-aHubMPwB.js} +1 -1
  62. package/core/built/admin/assets/{post-analytics-UerFnJse.js → post-analytics-Bm9xH8nA.js} +1 -1
  63. package/core/built/admin/assets/{post-analytics-context-geHk7rOj.js → post-analytics-context-C7oW3aBz.js} +1 -1
  64. package/core/built/admin/assets/{post-analytics-header-DXfc4KeX.js → post-analytics-header-BjGFgN6A.js} +1 -1
  65. package/core/built/admin/assets/{post-share-modal-Dql4fYjR.js → post-share-modal-Su923uIc.js} +1 -1
  66. package/core/built/admin/assets/{posts-Bsvw11Zo.js → posts-BwP7BNcB.js} +1 -1
  67. package/core/built/admin/assets/{referrers-B8xJpCcR.js → referrers-n_ln9DqI.js} +1 -1
  68. package/core/built/admin/assets/{repeat-COP-3g8d.js → repeat-ms5ocvE0.js} +1 -1
  69. package/core/built/admin/assets/{reply-JE8tmvOn.js → reply-BvO85IDn.js} +1 -1
  70. package/core/built/admin/assets/{select-BhvNY3I-.js → select-B4QhMW5f.js} +1 -1
  71. package/core/built/admin/assets/{settings-BJwVfuWG.js → settings-D5rGcWJ7.js} +4 -4
  72. package/core/built/admin/assets/{settings-C6ZUZQe4.js → settings-QtZ6a2TL.js} +1 -1
  73. package/core/built/admin/assets/{sort-button-iOtR-vQ1.js → sort-button-84sYUZMN.js} +1 -1
  74. package/core/built/admin/assets/{source-icon-C2iFWMlV.js → source-icon-Bzw-AU8p.js} +1 -1
  75. package/core/built/admin/assets/{sprout-BW9HFVU8.js → sprout-C2R5CbXV.js} +1 -1
  76. package/core/built/admin/assets/{square-BCNGSZhW.js → square-DT1uWkxs.js} +1 -1
  77. package/core/built/admin/assets/stats/{audience-select-DNAWmT7R.mjs → audience-select-fTCiZ9MT.mjs} +3 -3
  78. package/core/built/admin/assets/stats/{index-DbGvSTMe.mjs → index-BKgioyC7.mjs} +5 -5
  79. package/core/built/admin/assets/stats/{index-s19ZmxbX.mjs → index-CR2t5Xd-.mjs} +5 -5
  80. package/core/built/admin/assets/stats/index-DEkYwR7C.mjs +739 -0
  81. package/core/built/admin/assets/stats/{index-BS3KMSy9.mjs → index-Djwey97a.mjs} +5 -5
  82. package/core/built/admin/assets/stats/{index-MOQSSYwT.mjs → index-FiU_XgEe.mjs} +6 -6
  83. package/core/built/admin/assets/stats/{sort-button-D76rcldr.mjs → sort-button-Bvi1wfa7.mjs} +3 -3
  84. package/core/built/admin/assets/stats/{stats-CJ7fhUyT.mjs → stats-Bbm6yWZq.mjs} +2 -2
  85. package/core/built/admin/assets/stats/stats.js +1 -1
  86. package/core/built/admin/assets/stats/{tabs-CkbxYgOE.mjs → tabs-BKwH5k-q.mjs} +3 -3
  87. package/core/built/admin/assets/stats/{url-helpers-DICtqCrE.mjs → url-helpers-DmHnUIGc.mjs} +9 -9
  88. package/core/built/admin/assets/stats/{use-growth-stats-DzO7zEy4.mjs → use-growth-stats-BVj3j1hb.mjs} +3 -3
  89. package/core/built/admin/assets/{stats-r0Bphuvi.js → stats-B1mhlQSp.js} +1 -1
  90. package/core/built/admin/assets/{stats-view-DzZxrBDz.js → stats-view-C6MTCwRW.js} +1 -1
  91. package/core/built/admin/assets/{step-1-CUoUOyMm.js → step-1-CzQmZJ93.js} +1 -1
  92. package/core/built/admin/assets/{step-2-CpAkPD8D.js → step-2-DXGDWSQo.js} +1 -1
  93. package/core/built/admin/assets/{step-3-Ci6oJDmK.js → step-3-CYuxXKac.js} +1 -1
  94. package/core/built/admin/assets/{table-DeBuf80X.js → table-mjAkKNdb.js} +1 -1
  95. package/core/built/admin/assets/{tabs-C2sFfNcp.js → tabs-BwQ-i6MY.js} +1 -1
  96. package/core/built/admin/assets/{tags-Bl6G5rvf.js → tags-BkUqCuvX.js} +1 -1
  97. package/core/built/admin/assets/{tags-BL_N4nn2.js → tags-DXDZbfxp.js} +1 -1
  98. package/core/built/admin/assets/{toggle-group-B2X-8giI.js → toggle-group-CqDO3Kkx.js} +1 -1
  99. package/core/built/admin/assets/{topic-filter-DeqMID_s.js → topic-filter-DnuJJBAE.js} +1 -1
  100. package/core/built/admin/assets/{trash-BglGemAb.js → trash-CZ3EXwTL.js} +1 -1
  101. package/core/built/admin/assets/{url-helpers-84icqAuE.js → url-helpers-BE3VXr__.js} +1 -1
  102. package/core/built/admin/assets/{use-growth-stats-DF-7tL8g.js → use-growth-stats-CiuWWM6O.js} +1 -1
  103. package/core/built/admin/assets/{use-infinite-virtual-scroll-BHH7oscK.js → use-infinite-virtual-scroll-BjATkxBj.js} +1 -1
  104. package/core/built/admin/assets/{use-simple-pagination-BsvYfixw.js → use-simple-pagination-C9cb7dDz.js} +1 -1
  105. package/core/built/admin/assets/{user-round-check-BjHbfXKY.js → user-round-check-D3ihrrKL.js} +1 -1
  106. package/core/built/admin/assets/{wallet-cards-KaTkgqvi.js → wallet-cards-Do7nPf3f.js} +1 -1
  107. package/core/built/admin/assets/{web-CUWbpFil.js → web-BEwI2Gfy.js} +1 -1
  108. package/core/built/admin/index-forward.html +4 -4
  109. package/core/built/admin/index.html +3 -3
  110. package/core/frontend/web/middleware/index.js +1 -0
  111. package/core/frontend/web/middleware/serve-indexnow-key.js +66 -0
  112. package/core/frontend/web/site.js +3 -0
  113. package/core/server/api/endpoints/authentication.js +1 -1
  114. package/core/server/api/endpoints/pages.js +1 -1
  115. package/core/server/api/endpoints/posts-public.js +1 -1
  116. package/core/server/api/endpoints/posts.js +1 -1
  117. package/core/server/api/endpoints/search-index-public.js +1 -1
  118. package/core/server/api/endpoints/search-index.js +1 -1
  119. package/core/server/api/endpoints/users.js +1 -1
  120. package/core/server/api/endpoints/utils/serializers/input/settings.js +2 -1
  121. package/core/server/api/endpoints/utils/serializers/output/mappers/posts.js +1 -1
  122. package/core/server/api/endpoints/utils/validators/input/settings.js +1 -1
  123. package/core/server/data/exporter/table-lists.js +2 -1
  124. package/core/server/data/migrations/versions/6.12/2026-01-08-11-48-16-add-indexnow-api-key-setting.js +9 -0
  125. package/core/server/data/schema/default-settings/default-settings.json +6 -0
  126. package/core/server/lib/lexical.js +1 -1
  127. package/core/server/models/settings.js +2 -1
  128. package/core/server/services/activitypub/{ActivityPubServiceWrapper.js → activity-pub-service-wrapper.js} +1 -1
  129. package/core/server/services/activitypub/{ActivityPubService.ts → activity-pub-service.ts} +1 -1
  130. package/core/server/services/activitypub/index.js +1 -1
  131. package/core/server/services/adapter-manager/index.js +1 -1
  132. package/core/server/services/announcement-bar-service/{AnnouncementBarSettings.js → announcement-bar-settings.js} +1 -1
  133. package/core/server/services/announcement-bar-service/index.js +1 -1
  134. package/core/server/services/audience-feedback/{AudienceFeedbackController.js → audience-feedback-controller.js} +3 -3
  135. package/core/server/services/audience-feedback/index.js +4 -4
  136. package/core/server/services/auth/session/express-session.js +1 -1
  137. package/core/server/services/comments/{CommentsController.js → comments-controller.js} +2 -2
  138. package/core/server/services/comments/{CommentsServiceEmails.js → comments-service-emails.js} +1 -1
  139. package/core/server/services/comments/{CommentsService.js → comments-service.js} +1 -1
  140. package/core/server/services/comments/index.js +3 -3
  141. package/core/server/services/custom-redirects/index.js +2 -2
  142. package/core/server/services/donations/{DonationBookshelfRepository.ts → donation-bookshelf-repository.ts} +1 -1
  143. package/core/server/services/donations/{DonationServiceWrapper.js → donation-service-wrapper.js} +1 -1
  144. package/core/server/services/donations/index.js +1 -1
  145. package/core/server/services/email-address/{EmailAddressServiceWrapper.js → email-address-service-wrapper.js} +2 -2
  146. package/core/server/services/email-address/{EmailAddressService.js → email-address-service.js} +4 -4
  147. package/core/server/services/email-address/{EmailAddressService.ts → email-address-service.ts} +1 -1
  148. package/core/server/services/email-address/index.js +1 -1
  149. package/core/server/services/email-analytics/{EmailAnalyticsProviderMailgun.js → email-analytics-provider-mailgun.js} +1 -1
  150. package/core/server/services/email-analytics/{EmailAnalyticsServiceWrapper.js → email-analytics-service-wrapper.js} +5 -5
  151. package/core/server/services/email-analytics/{EmailAnalyticsService.js → email-analytics-service.js} +2 -2
  152. package/core/server/services/email-analytics/index.js +1 -1
  153. package/core/server/services/email-analytics/jobs/fetch-latest/index.js +1 -1
  154. package/core/server/services/email-service/{BatchSendingService.js → batch-sending-service.js} +8 -8
  155. package/core/server/services/email-service/{EmailEventProcessor.js → email-event-processor.js} +6 -6
  156. package/core/server/services/email-service/{EmailEventStorage.js → email-event-storage.js} +1 -1
  157. package/core/server/services/email-service/{EmailRenderer.js → email-renderer.js} +1 -1
  158. package/core/server/services/email-service/{EmailServiceWrapper.js → email-service-wrapper.js} +9 -9
  159. package/core/server/services/email-service/{EmailService.js → email-service.js} +13 -13
  160. package/core/server/services/email-service/index.js +1 -1
  161. package/core/server/services/email-service/{MailgunEmailProvider.js → mailgun-email-provider.js} +1 -1
  162. package/core/server/services/email-service/{SendingService.js → sending-service.js} +6 -6
  163. package/core/server/services/email-suppression-list/{InMemoryEmailSuppressionList.js → in-memory-email-suppression-list.js} +1 -1
  164. package/core/server/services/email-suppression-list/{MailgunEmailSuppressionList.js → mailgun-email-suppression-list.js} +3 -3
  165. package/core/server/services/email-suppression-list/service.js +2 -2
  166. package/core/server/services/explore/index.js +2 -2
  167. package/core/server/services/explore-ping/index.js +2 -2
  168. package/core/server/services/frontend-data-service/index.js +1 -1
  169. package/core/server/services/identity-tokens/{IdentityTokenServiceWrapper.js → identity-token-service-wrapper.js} +1 -1
  170. package/core/server/services/identity-tokens/index.js +1 -1
  171. package/core/server/services/indexnow.js +212 -0
  172. package/core/server/services/invites/index.js +1 -1
  173. package/core/server/services/link-redirection/index.js +2 -2
  174. package/core/server/services/link-redirection/{LinkRedirectRepository.js → link-redirect-repository.js} +1 -1
  175. package/core/server/services/link-redirection/{LinkRedirectsService.js → link-redirects-service.js} +2 -2
  176. package/core/server/services/link-redirection/{RedirectEvent.js → redirect-event.js} +1 -1
  177. package/core/server/services/link-tracking/index.js +3 -3
  178. package/core/server/services/link-tracking/{LinkClickRepository.js → link-click-repository.js} +1 -1
  179. package/core/server/services/link-tracking/{LinkClickTrackingService.js → link-click-tracking-service.js} +4 -4
  180. package/core/server/services/link-tracking/{PostLinkRepository.js → post-link-repository.js} +7 -7
  181. package/core/server/services/mail/{GhostMailer.js → ghost-mailer.js} +1 -1
  182. package/core/server/services/mail/index.js +2 -2
  183. package/core/server/services/media-inliner/service.js +1 -1
  184. package/core/server/services/member-attribution/README.md +6 -6
  185. package/core/server/services/member-attribution/{AttributionBuilder.js → attribution-builder.js} +4 -4
  186. package/core/server/services/member-attribution/index.js +5 -5
  187. package/core/server/services/member-attribution/{MemberAttributionService.js → member-attribution-service.js} +9 -9
  188. package/core/server/services/member-attribution/{ReferrerTranslator.js → referrer-translator.js} +1 -1
  189. package/core/server/services/member-attribution/{UrlTranslator.js → url-translator.js} +1 -1
  190. package/core/server/services/member-welcome-emails/constants.js +22 -1
  191. package/core/server/services/member-welcome-emails/service.js +23 -5
  192. package/core/server/services/members/api.js +1 -1
  193. package/core/server/services/members/importer/index.js +3 -3
  194. package/core/server/services/members/importer/{MembersCSVImporter.js → members-csv-importer.js} +2 -2
  195. package/core/server/services/members/members-api/members-api.js +14 -14
  196. package/core/server/services/members/members-api/repositories/{MemberRepository.js → member-repository.js} +17 -8
  197. package/core/server/services/members/members-api/services/{MemberBREADService.js → member-bread-service.js} +1 -1
  198. package/core/server/services/members/members-api/services/{PaymentsService.js → payments-service.js} +12 -12
  199. package/core/server/services/members/service.js +4 -4
  200. package/core/server/services/members-events/index.js +3 -3
  201. package/core/server/services/members-events/{LastSeenAtUpdater.js → last-seen-at-updater.js} +2 -2
  202. package/core/server/services/mentions/{BookshelfMentionRepository.js → bookshelf-mention-repository.js} +9 -9
  203. package/core/server/services/mentions/{InMemoryMentionRepository.js → in-memory-mention-repository.js} +4 -4
  204. package/core/server/services/mentions/{MentionController.js → mention-controller.js} +5 -5
  205. package/core/server/services/mentions/{MentionCreatedEvent.js → mention-created-event.js} +1 -1
  206. package/core/server/services/mentions/{Mention.js → mention.js} +1 -1
  207. package/core/server/services/mentions/{MentionsAPI.js → mentions-api.js} +1 -1
  208. package/core/server/services/mentions/{ResourceService.js → resource-service.js} +2 -2
  209. package/core/server/services/mentions/{RoutingService.js → routing-service.js} +2 -2
  210. package/core/server/services/mentions/service.js +11 -11
  211. package/core/server/services/mentions/{WebmentionMetadata.js → webmention-metadata.js} +1 -1
  212. package/core/server/services/mentions-email-report/job.js +1 -1
  213. package/core/server/services/mentions-email-report/{MentionEmailReportJob.js → mention-email-report-job.js} +1 -1
  214. package/core/server/services/mentions-email-report/service.js +2 -2
  215. package/core/server/services/milestones/{BookshelfMilestoneRepository.js → bookshelf-milestone-repository.js} +2 -2
  216. package/core/server/services/milestones/{InMemoryMilestoneRepository.js → in-memory-milestone-repository.js} +2 -2
  217. package/core/server/services/milestones/{Milestone.js → milestone.js} +1 -1
  218. package/core/server/services/milestones/{MilestonesService.js → milestones-service.js} +1 -1
  219. package/core/server/services/milestones/service.js +4 -4
  220. package/core/server/services/newsletters/index.js +2 -2
  221. package/core/server/services/newsletters/{NewslettersService.js → newsletters-service.js} +1 -1
  222. package/core/server/services/notifications/index.js +1 -1
  223. package/core/server/services/oembed/service.js +3 -3
  224. package/core/server/services/offers/application/{OfferMapper.js → offer-mapper.js} +1 -1
  225. package/core/server/services/offers/application/{OffersAPI.js → offers-api.js} +9 -9
  226. package/core/server/services/offers/application/{UniqueChecker.js → unique-checker.js} +2 -2
  227. package/core/server/services/offers/domain/events/{OfferCodeChangeEvent.js → offer-code-change-event.js} +1 -1
  228. package/core/server/services/offers/domain/events/{OfferCreatedEvent.js → offer-created-event.js} +1 -1
  229. package/core/server/services/offers/domain/models/{OfferAmount.js → offer-amount.js} +1 -1
  230. package/core/server/services/offers/domain/models/{OfferCadence.js → offer-cadence.js} +1 -1
  231. package/core/server/services/offers/domain/models/{OfferCode.js → offer-code.js} +1 -1
  232. package/core/server/services/offers/domain/models/{OfferCreatedAt.js → offer-created-at.js} +1 -1
  233. package/core/server/services/offers/domain/models/{OfferCurrency.js → offer-currency.js} +1 -1
  234. package/core/server/services/offers/domain/models/{OfferDescription.js → offer-description.js} +1 -1
  235. package/core/server/services/offers/domain/models/{OfferDuration.js → offer-duration.js} +1 -1
  236. package/core/server/services/offers/domain/models/{OfferName.js → offer-name.js} +1 -1
  237. package/core/server/services/offers/domain/models/{OfferStatus.js → offer-status.js} +1 -1
  238. package/core/server/services/offers/domain/models/{OfferTitle.js → offer-title.js} +1 -1
  239. package/core/server/services/offers/domain/models/{OfferType.js → offer-type.js} +1 -1
  240. package/core/server/services/offers/domain/models/{Offer.js → offer.js} +14 -14
  241. package/core/server/services/offers/domain/models/{StripeCoupon.js → stripe-coupon.js} +1 -1
  242. package/core/server/services/offers/{OfferBookshelfRepository.js → offer-bookshelf-repository.js} +6 -6
  243. package/core/server/services/offers/{OffersModule.js → offers-module.js} +4 -4
  244. package/core/server/services/offers/service.js +3 -3
  245. package/core/server/services/outbox/index.js +2 -2
  246. package/core/server/services/outbox/jobs/outbox-job.js +2 -2
  247. package/core/server/services/posts/posts-service-instance.js +47 -0
  248. package/core/server/services/posts/posts-service.js +572 -45
  249. package/core/server/services/recommendations/index.js +1 -1
  250. package/core/server/services/recommendations/{RecommendationEnablerService.js → recommendation-enabler-service.js} +2 -2
  251. package/core/server/services/recommendations/{RecommendationServiceWrapper.js → recommendation-service-wrapper.js} +2 -2
  252. package/core/server/services/recommendations/service/{BookshelfClickEventRepository.js → bookshelf-click-event-repository.js} +4 -4
  253. package/core/server/services/recommendations/service/{BookshelfClickEventRepository.ts → bookshelf-click-event-repository.ts} +2 -2
  254. package/core/server/services/recommendations/service/{BookshelfRecommendationRepository.js → bookshelf-recommendation-repository.js} +4 -4
  255. package/core/server/services/recommendations/service/{BookshelfRecommendationRepository.ts → bookshelf-recommendation-repository.ts} +3 -3
  256. package/core/server/services/recommendations/service/{BookshelfSubscribeEventRepository.js → bookshelf-subscribe-event-repository.js} +4 -4
  257. package/core/server/services/recommendations/service/{BookshelfSubscribeEventRepository.ts → bookshelf-subscribe-event-repository.ts} +2 -2
  258. package/core/server/services/recommendations/service/{InMemoryRecommendationRepository.js → in-memory-recommendation-repository.js} +2 -2
  259. package/core/server/services/recommendations/service/{InMemoryRecommendationRepository.ts → in-memory-recommendation-repository.ts} +3 -3
  260. package/core/server/services/recommendations/service/{IncomingRecommendationController.js → incoming-recommendation-controller.js} +2 -2
  261. package/core/server/services/recommendations/service/{IncomingRecommendationController.ts → incoming-recommendation-controller.ts} +3 -3
  262. package/core/server/services/recommendations/service/{IncomingRecommendationEmailRenderer.ts → incoming-recommendation-email-renderer.ts} +2 -2
  263. package/core/server/services/recommendations/service/{IncomingRecommendationService.ts → incoming-recommendation-service.ts} +2 -2
  264. package/core/server/services/recommendations/service/index.js +15 -15
  265. package/core/server/services/recommendations/service/index.ts +15 -15
  266. package/core/server/services/recommendations/service/{RecommendationController.js → recommendation-controller.js} +13 -13
  267. package/core/server/services/recommendations/service/{RecommendationController.ts → recommendation-controller.ts} +4 -4
  268. package/core/server/services/recommendations/service/{RecommendationRepository.ts → recommendation-repository.ts} +3 -3
  269. package/core/server/services/recommendations/service/{RecommendationService.js → recommendation-service.js} +6 -6
  270. package/core/server/services/recommendations/service/{RecommendationService.ts → recommendation-service.ts} +8 -8
  271. package/core/server/services/recommendations/service/{Recommendation.js → recommendation.js} +4 -4
  272. package/core/server/services/recommendations/service/{Recommendation.ts → recommendation.ts} +1 -1
  273. package/core/server/services/recommendations/service/{WellknownService.ts → well-known-service.ts} +1 -1
  274. package/core/server/services/route-settings/index.js +4 -4
  275. package/core/server/services/settings/{SettingsBREADService.js → settings-bread-service.js} +1 -1
  276. package/core/server/services/settings/settings-service.js +2 -2
  277. package/core/server/services/settings-helpers/index.js +1 -1
  278. package/core/server/services/settings-helpers/{SettingsHelpers.js → settings-helpers.js} +5 -5
  279. package/core/server/services/slack-notifications/service.js +4 -4
  280. package/core/server/services/slack-notifications/{SlackNotificationsService.js → slack-notifications-service.js} +2 -2
  281. package/core/server/services/slack-notifications/{SlackNotifications.js → slack-notifications.js} +2 -2
  282. package/core/server/services/staff/index.js +1 -1
  283. package/core/server/services/staff/{StaffServiceEmails.js → staff-service-emails.js} +2 -2
  284. package/core/server/services/staff/{StaffService.js → staff-service.js} +2 -2
  285. package/core/server/services/stats/{PostsStatsService.js → posts-stats-service.js} +25 -25
  286. package/core/server/services/stats/{ReferrersStatsService.js → referrers-stats-service.js} +3 -3
  287. package/core/server/services/stats/service.js +1 -1
  288. package/core/server/services/stats/{StatsService.js → stats-service.js} +23 -23
  289. package/core/server/services/stripe/events/index.js +2 -2
  290. package/core/server/services/stripe/service.js +1 -1
  291. package/core/server/services/stripe/services/webhook/{CheckoutSessionEventService.js → checkout-session-event-service.js} +2 -2
  292. package/core/server/services/stripe/{StripeMigrations.js → stripe-migrations.js} +1 -1
  293. package/core/server/services/stripe/{StripeService.js → stripe-service.js} +8 -8
  294. package/core/server/services/stripe/{WebhookController.js → webhook-controller.js} +4 -4
  295. package/core/server/services/stripe/{WebhookManager.js → webhook-manager.js} +5 -5
  296. package/core/server/services/themes/storage.js +1 -1
  297. package/core/server/services/tiers/{InMemoryTierRepository.js → in-memory-tier-repository.js} +1 -1
  298. package/core/server/services/tiers/service.js +2 -2
  299. package/core/server/services/tiers/{TierActivatedEvent.js → tier-activated-event.js} +1 -1
  300. package/core/server/services/tiers/{TierArchivedEvent.js → tier-archived-event.js} +1 -1
  301. package/core/server/services/tiers/{TierCreatedEvent.js → tier-created-event.js} +1 -1
  302. package/core/server/services/tiers/{TierNameChangeEvent.js → tier-name-change-event.js} +1 -1
  303. package/core/server/services/tiers/{TierPriceChangeEvent.js → tier-price-change-event.js} +1 -1
  304. package/core/server/services/tiers/{TierRepository.js → tier-repository.js} +7 -7
  305. package/core/server/services/tiers/{Tier.js → tier.js} +5 -5
  306. package/core/server/services/tiers/{TiersAPI.js → tiers-api.js} +1 -1
  307. package/core/server/services/tinybird/index.js +1 -1
  308. package/core/server/services/tinybird/{TinybirdServiceWrapper.js → tinybird-service-wrapper.js} +2 -2
  309. package/core/server/services/update-check/index.js +1 -1
  310. package/core/server/services/url/index.js +2 -2
  311. package/core/server/services/url/{Resources.js → resources.js} +1 -1
  312. package/core/server/services/url/{UrlGenerator.js → url-generator.js} +1 -1
  313. package/core/server/services/url/{UrlService.js → url-service.js} +4 -4
  314. package/core/server/services/url/{Urls.js → urls.js} +1 -1
  315. package/core/server/services/webhooks/listen.js +1 -1
  316. package/core/shared/labs.js +2 -1
  317. package/package.json +3 -3
  318. package/tsconfig.tsbuildinfo +1 -1
  319. package/components/tryghost-i18n-6.11.0.tgz +0 -0
  320. package/core/built/admin/assets/index-Cr_YX9yU.js +0 -1
  321. package/core/built/admin/assets/stats/index-BBCJ2EZo.mjs +0 -733
  322. package/core/server/services/posts/PostsService.js +0 -574
  323. /package/core/server/{GhostServer.js → ghost-server.js} +0 -0
  324. /package/core/server/services/activitypub/{ActivityPubService.js → activity-pub-service.js} +0 -0
  325. /package/core/server/services/adapter-manager/{AdapterManager.js → adapter-manager.js} +0 -0
  326. /package/core/server/services/announcement-bar-service/{AnnouncementVisibilityValues.js → announcement-visibility-values.js} +0 -0
  327. /package/core/server/services/audience-feedback/{AudienceFeedbackService.js → audience-feedback-service.js} +0 -0
  328. /package/core/server/services/audience-feedback/{FeedbackRepository.js → feedback-repository.js} +0 -0
  329. /package/core/server/services/audience-feedback/{Feedback.js → feedback.js} +0 -0
  330. /package/core/server/services/auth/session/{SessionStore.js → session-store.js} +0 -0
  331. /package/core/server/services/comments/{CommentsServiceEmailRenderer.js → comments-service-email-renderer.js} +0 -0
  332. /package/core/server/services/comments/{CommentsStatsService.js → comments-stats-service.js} +0 -0
  333. /package/core/server/services/custom-redirects/{CustomRedirectsAPI.js → custom-redirects-api.js} +0 -0
  334. /package/core/server/services/donations/{DonationBookshelfRepository.js → donation-bookshelf-repository.js} +0 -0
  335. /package/core/server/services/donations/{DonationPaymentEvent.js → donation-payment-event.js} +0 -0
  336. /package/core/server/services/donations/{DonationPaymentEvent.ts → donation-payment-event.ts} +0 -0
  337. /package/core/server/services/email-address/{EmailAddressParser.js → email-address-parser.js} +0 -0
  338. /package/core/server/services/email-address/{EmailAddressParser.js.d.ts → email-address-parser.js.d.ts} +0 -0
  339. /package/core/server/services/email-analytics/{EventProcessingResult.js → event-processing-result.js} +0 -0
  340. /package/core/server/services/email-analytics/events/{StartEmailAnalyticsJobEvent.js → start-email-analytics-job-event.js} +0 -0
  341. /package/core/server/services/email-service/{DomainWarmingService.js → domain-warming-service.js} +0 -0
  342. /package/core/server/services/email-service/{DomainWarmingService.ts → domain-warming-service.ts} +0 -0
  343. /package/core/server/services/email-service/{EmailBodyCache.js → email-body-cache.js} +0 -0
  344. /package/core/server/services/email-service/{EmailController.js → email-controller.js} +0 -0
  345. /package/core/server/services/email-service/{EmailSegmenter.js → email-segmenter.js} +0 -0
  346. /package/core/server/services/email-service/events/{EmailBouncedEvent.js → email-bounced-event.js} +0 -0
  347. /package/core/server/services/email-service/events/{EmailDeliveredEvent.js → email-delivered-event.js} +0 -0
  348. /package/core/server/services/email-service/events/{EmailOpenedEvent.js → email-opened-event.js} +0 -0
  349. /package/core/server/services/email-service/events/{EmailTemporaryBouncedEvent.js → email-temporary-bounced-event.js} +0 -0
  350. /package/core/server/services/email-service/events/{EmailUnsubscribedEvent.js → email-unsubscribed-event.js} +0 -0
  351. /package/core/server/services/email-service/events/{SpamComplaintEvent.js → spam-complaint-event.js} +0 -0
  352. /package/core/server/services/email-suppression-list/{EmailSuppressionList.js → email-suppression-list.js} +0 -0
  353. /package/core/server/services/explore/{ExploreService.js → explore-service.js} +0 -0
  354. /package/core/server/services/explore-ping/{ExplorePingService.js → explore-ping-service.js} +0 -0
  355. /package/core/server/services/frontend-data-service/{FrontendDataService.js → front-end-data-service.js} +0 -0
  356. /package/core/server/services/identity-tokens/{IdentityTokenService.js → identity-token-service.js} +0 -0
  357. /package/core/server/services/identity-tokens/{IdentityTokenService.ts → identity-token-service.ts} +0 -0
  358. /package/core/server/services/invites/{Invites.js → invites.js} +0 -0
  359. /package/core/server/services/lib/{DynamicRedirectManager.js → dynamic-redirect-manager.js} +0 -0
  360. /package/core/server/services/lib/{EmailContentGenerator.js → email-content-generator.js} +0 -0
  361. /package/core/server/services/lib/{InMemoryRepository.js → in-memory-repository.js} +0 -0
  362. /package/core/server/services/lib/{InMemoryRepository.ts → in-memory-repository.ts} +0 -0
  363. /package/core/server/services/lib/magic-link/{MagicLink.js → magic-link.js} +0 -0
  364. /package/core/server/services/lib/{MailgunClient.js → mailgun-client.js} +0 -0
  365. /package/core/server/services/link-redirection/{LinkRedirect.js → link-redirect.js} +0 -0
  366. /package/core/server/services/link-tracking/{ClickEvent.js → click-event.js} +0 -0
  367. /package/core/server/services/link-tracking/{FullPostLink.js → full-post-link.js} +0 -0
  368. /package/core/server/services/link-tracking/{PostLink.js → post-link.js} +0 -0
  369. /package/core/server/services/media-inliner/{ExternalMediaInliner.js → external-media-inliner.js} +0 -0
  370. /package/core/server/services/member-attribution/{OutboundLinkTagger.js → outbound-link-tagger.js} +0 -0
  371. /package/core/server/services/member-attribution/{UrlHistory.js → url-history.js} +0 -0
  372. /package/core/server/services/member-welcome-emails/{MemberWelcomeEmailRenderer.js → member-welcome-email-renderer.js} +0 -0
  373. /package/core/server/services/members/importer/{MembersCSVImporterStripeUtils.js → members-csv-importer-stripe-utils.js} +0 -0
  374. /package/core/server/services/members/members-api/controllers/{MemberController.js → member-controller.js} +0 -0
  375. /package/core/server/services/members/members-api/controllers/{RouterController.js → router-controller.js} +0 -0
  376. /package/core/server/services/members/members-api/controllers/{WellKnownController.js → well-known-controller.js} +0 -0
  377. /package/core/server/services/members/members-api/repositories/{EventRepository.js → event-repository.js} +0 -0
  378. /package/core/server/services/members/members-api/repositories/{ProductRepository.js → product-repository.js} +0 -0
  379. /package/core/server/services/members/members-api/services/{GeolocationService.js → geolocation-service.js} +0 -0
  380. /package/core/server/services/members/members-api/services/{TokenService.js → token-service.js} +0 -0
  381. /package/core/server/services/members/{MembersConfigProvider.js → members-config-provider.js} +0 -0
  382. /package/core/server/services/members/{RequestIntegrityTokenProvider.js → request-integrity-token-provider.js} +0 -0
  383. /package/core/server/services/members/{SingleUseTokenProvider.js → single-use-token-provider.js} +0 -0
  384. /package/core/server/services/members/stats/{MembersStats.js → members-stats.js} +0 -0
  385. /package/core/server/services/members-events/{EventStorage.js → event-storage.js} +0 -0
  386. /package/core/server/services/members-events/{LastSeenAtCache.js → last-seen-at-cache.js} +0 -0
  387. /package/core/server/services/mentions/{MentionDiscoveryService.js → mention-discovery-service.js} +0 -0
  388. /package/core/server/services/mentions/{MentionSendingService.js → mention-sending-service.js} +0 -0
  389. /package/core/server/services/mentions-email-report/{StartMentionEmailReportJob.js → start-mention-email-report-job.js} +0 -0
  390. /package/core/server/services/milestones/{MilestoneCreatedEvent.js → milestone-created-event.js} +0 -0
  391. /package/core/server/services/milestones/{MilestoneQueries.js → milestone-queries.js} +0 -0
  392. /package/core/server/services/notifications/{Notifications.js → notifications.js} +0 -0
  393. /package/core/server/services/oembed/{NFTOEmbedProvider.js → nft-oembed-provider.js} +0 -0
  394. /package/core/server/services/oembed/{OEmbedService.js → oembed-service.js} +0 -0
  395. /package/core/server/services/oembed/{TwitterOEmbedProvider.js → twitter-oembed-provider.js} +0 -0
  396. /package/core/server/services/offers/domain/models/shared/{ValueObject.js → value-object.js} +0 -0
  397. /package/core/server/services/outbox/events/{StartOutboxProcessingEvent.js → start-outbox-processing-event.js} +0 -0
  398. /package/core/server/services/posts/{PostsExporter.js → posts-exporter.js} +0 -0
  399. /package/core/server/services/posts/stats/{PostStats.js → post-stats.js} +0 -0
  400. /package/core/server/services/recommendations/service/{BookshelfRepository.js → bookshelf-repository.js} +0 -0
  401. /package/core/server/services/recommendations/service/{BookshelfRepository.ts → bookshelf-repository.ts} +0 -0
  402. /package/core/server/services/recommendations/service/{ClickEvent.js → click-event.js} +0 -0
  403. /package/core/server/services/recommendations/service/{ClickEvent.ts → click-event.ts} +0 -0
  404. /package/core/server/services/recommendations/service/{IncomingRecommendationEmailRenderer.js → incoming-recommendation-email-renderer.js} +0 -0
  405. /package/core/server/services/recommendations/service/{IncomingRecommendationService.js → incoming-recommendation-service.js} +0 -0
  406. /package/core/server/services/recommendations/service/{RecommendationMetadataService.js → recommendation-metadata-service.js} +0 -0
  407. /package/core/server/services/recommendations/service/{RecommendationMetadataService.ts → recommendation-metadata-service.ts} +0 -0
  408. /package/core/server/services/recommendations/service/{RecommendationRepository.js → recommendation-repository.js} +0 -0
  409. /package/core/server/services/recommendations/service/{SubscribeEvent.js → subscribe-event.js} +0 -0
  410. /package/core/server/services/recommendations/service/{SubscribeEvent.ts → subscribe-event.ts} +0 -0
  411. /package/core/server/services/recommendations/service/{UnsafeData.js → unsafe-data.js} +0 -0
  412. /package/core/server/services/recommendations/service/{UnsafeData.ts → unsafe-data.ts} +0 -0
  413. /package/core/server/services/recommendations/service/{WellknownService.js → well-known-service.js} +0 -0
  414. /package/core/server/services/route-settings/{DefaultSettingsManager.js → default-settings-manager.js} +0 -0
  415. /package/core/server/services/route-settings/{RouteSettings.js → route-settings.js} +0 -0
  416. /package/core/server/services/route-settings/{SettingsLoader.js → settings-loader.js} +0 -0
  417. /package/core/server/services/route-settings/{SettingsPathManager.js → settings-path-manager.js} +0 -0
  418. /package/core/server/services/stats/{ContentStatsService.js → content-stats-service.js} +0 -0
  419. /package/core/server/services/stats/{MembersStatsService.js → members-stats-service.js} +0 -0
  420. /package/core/server/services/stats/{MrrStatsService.js → mrr-stats-service.js} +0 -0
  421. /package/core/server/services/stats/{SubscriptionStatsService.js → subscription-stats-service.js} +0 -0
  422. /package/core/server/services/stripe/events/{StripeLiveDisabledEvent.js → stripe-live-disabled-event.js} +0 -0
  423. /package/core/server/services/stripe/events/{StripeLiveEnabledEvent.js → stripe-live-enabled-event.js} +0 -0
  424. /package/core/server/services/stripe/services/webhook/{InvoiceEventService.js → invoice-event-service.js} +0 -0
  425. /package/core/server/services/stripe/services/webhook/{SubscriptionEventService.js → subscription-event-service.js} +0 -0
  426. /package/core/server/services/stripe/{StripeAPI.js → stripe-api.js} +0 -0
  427. /package/core/server/services/themes/{ThemeStorage.js → theme-storage.js} +0 -0
  428. /package/core/server/services/tinybird/{TinybirdService.js → tinybird-service.js} +0 -0
  429. /package/core/server/services/update-check/{UpdateCheckService.js → update-check-service.js} +0 -0
  430. /package/core/server/services/url/{LocalFileCache.js → local-file-cache.js} +0 -0
  431. /package/core/server/services/url/{Queue.js → queue.js} +0 -0
  432. /package/core/server/services/url/{Resource.js → resource.js} +0 -0
  433. /package/core/server/services/{Users.js → users.js} +0 -0
  434. /package/core/server/services/{VerificationTrigger.js → verification-trigger.js} +0 -0
  435. /package/core/server/services/webhooks/{WebhookTrigger.js → webhook-trigger.js} +0 -0
@@ -1 +1 @@
1
- import{r as c}from"./index-BYawr8p9.js";const z=(n,t)=>n==null?t:t==null?n:Math.max(n,t),C=new WeakMap,ut={onUpdate(n,t,e){if(C.set(e,void 0),!e.computedTrend)return;const i=t.integer.concat(t.fraction).filter(o=>o.type==="integer"||o.type==="fraction"),s=n.integer.concat(n.fraction).filter(o=>o.type==="integer"||o.type==="fraction"),r=i.find(o=>!s.find(l=>l.pos===o.pos&&l.value===o.value)),a=s.find(o=>!i.find(l=>o.pos===l.pos&&o.value===l.value));C.set(e,z(r?.pos,a?.pos))},getDelta(n,t,e){const i=n-t,s=C.get(e.flow);if(!i&&s!=null&&s>=e.pos)return e.length*e.flow.computedTrend}},y=(n,t,e)=>{const i=document.createElement(n),[s,r]=Array.isArray(t)?[void 0,t]:[t,e];return s&&Object.assign(i,s),r?.forEach(a=>i.appendChild(a)),i},J=(n,t)=>{var e;return t==="left"?n.offsetLeft:(((e=n.offsetParent instanceof HTMLElement?n.offsetParent:null)==null?void 0:e.offsetWidth)??0)-n.offsetWidth-n.offsetLeft},G=n=>n.offsetWidth>0&&n.offsetHeight>0,Y=(n,t)=>{!customElements.get(n)&&customElements.define(n,t)};function Z(n,t,{reverse:e=!1}={}){const i=n.length;for(let s=e?i-1:0;e?s>=0:s<i;e?s--:s++)t(n[s],s)}function q(n,t,e,i){const s=t.formatToParts(n);e&&s.unshift({type:"prefix",value:e}),i&&s.push({type:"suffix",value:i});const r=[],a=[],o=[],l=[],u={},p=d=>`${d}:${u[d]=(u[d]??-1)+1}`;let f="",m=!1,g=!1;for(const d of s){f+=d.value;const h=d.type==="minusSign"||d.type==="plusSign"?"sign":d.type;h==="integer"?(m=!0,a.push(...d.value.split("").map(A=>({type:h,value:parseInt(A)})))):h==="group"?a.push({type:h,value:d.value}):h==="decimal"?(g=!0,o.push({type:h,value:d.value,key:p(h)})):h==="fraction"?o.push(...d.value.split("").map(A=>({type:h,value:parseInt(A),key:p(h),pos:-1-u[h]}))):(m||g?l:r).push({type:h,value:d.value,key:p(h)})}const M=[];for(let d=a.length-1;d>=0;d--){const h=a[d];M.unshift(h.type==="integer"?{...h,key:p(h.type),pos:u[h.type]}:{...h,key:p(h.type)})}return{pre:r,integer:M,fraction:o,post:l,valueAsString:f,value:typeof n=="string"?parseFloat(n):n}}const Q=String.raw,K=(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0})(),tt=typeof CSS<"u"&&CSS.supports&&CSS.supports("line-height","mod(1,1)"),w=typeof matchMedia<"u"?matchMedia("(prefers-reduced-motion: reduce)"):null,E="--_number-flow-d-opacity",U="--_number-flow-d-width",R="--_number-flow-dx",k="--_number-flow-d",et=(()=>{try{return CSS.registerProperty({name:E,syntax:"<number>",inherits:!1,initialValue:"0"}),CSS.registerProperty({name:R,syntax:"<length>",inherits:!0,initialValue:"0px"}),CSS.registerProperty({name:U,syntax:"<number>",inherits:!1,initialValue:"0"}),CSS.registerProperty({name:k,syntax:"<number>",inherits:!0,initialValue:"0"}),!0}catch{return!1}})(),it="var(--number-flow-char-height, 1em)",v="var(--number-flow-mask-height, 0.25em)",N=`calc(${v} / 2)`,$="var(--number-flow-mask-width, 0.5em)",_=`calc(${$} / var(--scale-x))`,b="#000 0, transparent 71%",P=Q`:host{display:inline-block;direction:ltr;white-space:nowrap;isolation:isolate;line-height:${it} !important}.number,.number__inner{display:inline-block;transform-origin:left top}:host([data-will-change]) :is(.number,.number__inner,.section,.digit,.digit__num,.symbol){will-change:transform}.number{--scale-x:calc(1 + var(${U}) / var(--width));transform:translateX(var(${R})) scaleX(var(--scale-x));margin:0 calc(-1 * ${$});position:relative;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 ${_},#000 calc(100% - ${_}),transparent ),linear-gradient(to bottom,transparent 0,#000 ${v},#000 calc(100% - ${v}),transparent 100% ),radial-gradient(at bottom right,${b}),radial-gradient(at bottom left,${b}),radial-gradient(at top left,${b}),radial-gradient(at top right,${b});-webkit-mask-size:100% calc(100% - ${v} * 2),calc(100% - ${_} * 2) 100%,${_} ${v},${_} ${v},${_} ${v},${_} ${v};-webkit-mask-position:center,center,top left,top right,bottom right,bottom left;-webkit-mask-repeat:no-repeat}.number__inner{padding:${N} ${$};transform:scaleX(calc(1 / var(--scale-x))) translateX(calc(-1 * var(${R})))}:host > :not(.number){z-index:5}.section,.symbol{display:inline-block;position:relative;isolation:isolate}.section::after{content:'\200b';display:inline-block}.section--justify-left{transform-origin:center left}.section--justify-right{transform-origin:center right}.section > [inert],.symbol > [inert]{margin:0 !important;position:absolute !important;z-index:-1}.digit{display:inline-block;position:relative;--c:var(--current) + var(${k})}.digit__num,.number .section::after{padding:${N} 0}.digit__num{display:inline-block;--offset-raw:mod(var(--length) + var(--n) - mod(var(--c),var(--length)),var(--length));--offset:calc( var(--offset-raw) - var(--length) * round(down,var(--offset-raw) / (var(--length) / 2),1) );--y:clamp(-100%,var(--offset) * 100%,100%);transform:translateY(var(--y))}.digit__num[inert]{position:absolute;top:0;left:50%;transform:translateX(-50%) translateY(var(--y))}.digit:not(.is-spinning) .digit__num[inert]{display:none}.symbol__value{display:inline-block;mix-blend-mode:plus-lighter;white-space:pre}.section--justify-left .symbol > [inert]{left:0}.section--justify-right .symbol > [inert]{right:0}.animate-presence{opacity:calc(1 + var(${E}))}`,st=HTMLElement,B=tt&&K&&et;let S;class I extends st{constructor(){super(),this.created=!1,this.batched=!1;const{animated:t,...e}=this.constructor.defaultProps;this._animated=this.computedAnimated=t,Object.assign(this,e)}get animated(){return this._animated}set animated(t){var e;this.animated!==t&&(this._animated=t,(e=this.shadowRoot)==null||e.getAnimations().forEach(i=>i.finish()))}set data(t){var e;if(t==null)return;const{pre:i,integer:s,fraction:r,post:a,value:o}=t;if(this.created){const l=this._data;this._data=t,this.computedTrend=typeof this.trend=="function"?this.trend(l.value,o):this.trend,this.computedAnimated=B&&this._animated&&(!this.respectMotionPreference||!(w!=null&&w.matches))&&G(this),(e=this.plugins)==null||e.forEach(u=>{var p;return(p=u.onUpdate)==null?void 0:p.call(u,t,l,this)}),this.batched||this.willUpdate(),this._pre.update(i),this._num.update({integer:s,fraction:r}),this._post.update(a),this.batched||this.didUpdate()}else{this._data=t,this.attachShadow({mode:"open"});try{this._internals??(this._internals=this.attachInternals()),this._internals.role="img"}catch{}if(typeof CSSStyleSheet<"u"&&this.shadowRoot.adoptedStyleSheets)S||(S=new CSSStyleSheet,S.replaceSync(P)),this.shadowRoot.adoptedStyleSheets=[S];else{const l=document.createElement("style");l.textContent=P,this.shadowRoot.appendChild(l)}this._pre=new F(this,i,{justify:"right",part:"left"}),this.shadowRoot.appendChild(this._pre.el),this._num=new nt(this,s,r),this.shadowRoot.appendChild(this._num.el),this._post=new F(this,a,{justify:"left",part:"right"}),this.shadowRoot.appendChild(this._post.el),this.created=!0}try{this._internals.ariaLabel=t.valueAsString}catch{}}willUpdate(){this._pre.willUpdate(),this._num.willUpdate(),this._post.willUpdate()}didUpdate(){if(!this.computedAnimated)return;this._abortAnimationsFinish?this._abortAnimationsFinish.abort():this.dispatchEvent(new Event("animationsstart")),this._pre.didUpdate(),this._num.didUpdate(),this._post.didUpdate();const t=new AbortController;Promise.all(this.shadowRoot.getAnimations().map(e=>e.finished)).then(()=>{t.signal.aborted||(this.dispatchEvent(new Event("animationsfinish")),this._abortAnimationsFinish=void 0)}),this._abortAnimationsFinish=t}}I.defaultProps={transformTiming:{duration:900,easing:"linear(0,.005,.019,.039,.066,.096,.129,.165,.202,.24,.278,.316,.354,.39,.426,.461,.494,.526,.557,.586,.614,.64,.665,.689,.711,.731,.751,.769,.786,.802,.817,.831,.844,.856,.867,.877,.887,.896,.904,.912,.919,.925,.931,.937,.942,.947,.951,.955,.959,.962,.965,.968,.971,.973,.976,.978,.98,.981,.983,.984,.986,.987,.988,.989,.99,.991,.992,.992,.993,.994,.994,.995,.995,.996,.996,.9963,.9967,.9969,.9972,.9975,.9977,.9979,.9981,.9982,.9984,.9985,.9987,.9988,.9989,1)"},spinTiming:void 0,opacityTiming:{duration:450,easing:"ease-out"},animated:!0,trend:(n,t)=>Math.sign(t-n),respectMotionPreference:!0,plugins:void 0,digits:void 0};class nt{constructor(t,e,i,{className:s,...r}={}){this.flow=t,this._integer=new L(t,e,{justify:"right",part:"integer"}),this._fraction=new L(t,i,{justify:"left",part:"fraction"}),this._inner=y("span",{className:"number__inner"},[this._integer.el,this._fraction.el]),this.el=y("span",{...r,part:"number",className:`number ${s??""}`},[this._inner])}willUpdate(){this._prevWidth=this.el.offsetWidth,this._prevLeft=this.el.getBoundingClientRect().left,this._integer.willUpdate(),this._fraction.willUpdate()}update({integer:t,fraction:e}){this._integer.update(t),this._fraction.update(e)}didUpdate(){const t=this.el.getBoundingClientRect();this._integer.didUpdate(),this._fraction.didUpdate();const e=this._prevLeft-t.left,i=this.el.offsetWidth,s=this._prevWidth-i;this.el.style.setProperty("--width",String(i)),this.el.animate({[R]:[`${e}px`,"0px"],[U]:[s,0]},{...this.flow.transformTiming,composite:"accumulate"})}}class D{constructor(t,e,{justify:i,className:s,...r},a){this.flow=t,this.children=new Map,this.onCharRemove=l=>()=>{this.children.delete(l)},this.justify=i;const o=e.map(l=>this.addChar(l).el);this.el=y("span",{...r,className:`section section--justify-${i} ${s??""}`},a?a(o):o)}addChar(t,{startDigitsAtZero:e=!1,...i}={}){const s=t.type==="integer"||t.type==="fraction"?new X(this,t.type,e?0:t.value,t.pos,{...i,onRemove:this.onCharRemove(t.key)}):new at(this,t.type,t.value,{...i,onRemove:this.onCharRemove(t.key)});return this.children.set(t.key,s),s}unpop(t){t.el.removeAttribute("inert"),t.el.style.top="",t.el.style[this.justify]=""}pop(t){t.forEach(e=>{e.el.style.top=`${e.el.offsetTop}px`,e.el.style[this.justify]=`${J(e.el,this.justify)}px`}),t.forEach(e=>{e.el.setAttribute("inert",""),e.present=!1})}addNewAndUpdateExisting(t){const e=new Map,i=new Map,s=this.justify==="left",r=s?"prepend":"append";if(Z(t,a=>{let o;this.children.has(a.key)?(o=this.children.get(a.key),i.set(a,o),this.unpop(o),o.present=!0):(o=this.addChar(a,{startDigitsAtZero:!0,animateIn:!0}),e.set(a,o)),this.el[r](o.el)},{reverse:s}),this.flow.computedAnimated){const a=this.el.getBoundingClientRect();e.forEach(o=>{o.willUpdate(a)})}e.forEach((a,o)=>{a.update(o.value)}),i.forEach((a,o)=>{a.update(o.value)})}willUpdate(){const t=this.el.getBoundingClientRect();this._prevOffset=t[this.justify],this.children.forEach(e=>e.willUpdate(t))}didUpdate(){const t=this.el.getBoundingClientRect();this.children.forEach(s=>s.didUpdate(t));const e=t[this.justify],i=this._prevOffset-e;i&&this.children.size&&this.el.animate({transform:[`translateX(${i}px)`,"none"]},{...this.flow.transformTiming,composite:"accumulate"})}}class L extends D{update(t){const e=new Map;this.children.forEach((i,s)=>{t.find(r=>r.key===s)||e.set(s,i),this.unpop(i)}),this.addNewAndUpdateExisting(t),e.forEach(i=>{i instanceof X&&i.update(0)}),this.pop(e)}}class F extends D{update(t){const e=new Map;this.children.forEach((i,s)=>{t.find(r=>r.key===s)||e.set(s,i)}),this.pop(e),this.addNewAndUpdateExisting(t)}}class x{constructor(t,e,{onRemove:i,animateIn:s=!1}={}){this.flow=t,this.el=e,this._present=!0,this._remove=()=>{var r;this.el.remove(),(r=this._onRemove)==null||r.call(this)},this.el.classList.add("animate-presence"),this.flow.computedAnimated&&s&&this.el.animate({[E]:[-.9999,0]},{...this.flow.opacityTiming,composite:"accumulate"}),this._onRemove=i}get present(){return this._present}set present(t){if(this._present!==t){if(this._present=t,t?this.el.removeAttribute("inert"):this.el.setAttribute("inert",""),!this.flow.computedAnimated){t||this._remove();return}this.el.style.setProperty("--_number-flow-d-opacity",t?"0":"-.999"),this.el.animate({[E]:t?[-.9999,0]:[.999,0]},{...this.flow.opacityTiming,composite:"accumulate"}),t?this.flow.removeEventListener("animationsfinish",this._remove):this.flow.addEventListener("animationsfinish",this._remove,{once:!0})}}}class W extends x{constructor(t,e,i,s){super(t.flow,i,s),this.section=t,this.value=e,this.el=i}}class X extends W{constructor(t,e,i,s,r){var a,o;const l=(((o=(a=t.flow.digits)==null?void 0:a[s])==null?void 0:o.max)??9)+1,u=Array.from({length:l}).map((f,m)=>{const g=y("span",{className:"digit__num"},[document.createTextNode(String(m))]);return m!==i&&g.setAttribute("inert",""),g.style.setProperty("--n",String(m)),g}),p=y("span",{part:`digit ${e}-digit`,className:"digit"},u);p.style.setProperty("--current",String(i)),p.style.setProperty("--length",String(l)),super(t,i,p,r),this.pos=s,this._onAnimationsFinish=()=>{this.el.classList.remove("is-spinning")},this._numbers=u,this.length=l}willUpdate(t){const e=this.el.getBoundingClientRect();this._prevValue=this.value;const i=e[this.section.justify]-t[this.section.justify],s=e.width/2;this._prevCenter=this.section.justify==="left"?i+s:i-s}update(t){this.el.style.setProperty("--current",String(t)),this._numbers.forEach((e,i)=>i===t?e.removeAttribute("inert"):e.setAttribute("inert","")),this.value=t}didUpdate(t){const e=this.el.getBoundingClientRect(),i=e[this.section.justify]-t[this.section.justify],s=e.width/2,r=this.section.justify==="left"?i+s:i-s,a=this._prevCenter-r;a&&this.el.animate({transform:[`translateX(${a}px)`,"none"]},{...this.flow.transformTiming,composite:"accumulate"});const o=this.getDelta();o&&(this.el.classList.add("is-spinning"),this.el.animate({[k]:[-o,0]},{...this.flow.spinTiming??this.flow.transformTiming,composite:"accumulate"}),this.flow.addEventListener("animationsfinish",this._onAnimationsFinish,{once:!0}))}getDelta(){var t;if(this.flow.plugins)for(const s of this.flow.plugins){const r=(t=s.getDelta)==null?void 0:t.call(s,this.value,this._prevValue,this);if(r!=null)return r}const e=this.value-this._prevValue,i=this.flow.computedTrend||Math.sign(e);return i<0&&this.value>this._prevValue?this.value-this.length-this._prevValue:i>0&&this.value<this._prevValue?this.length-this._prevValue+this.value:e}}class at extends W{constructor(t,e,i,s){const r=y("span",{className:"symbol__value",textContent:i});super(t,i,y("span",{part:`symbol ${e}`,className:"symbol"},[r]),s),this.type=e,this._children=new Map,this._onChildRemove=a=>()=>{this._children.delete(a)},this._children.set(i,new x(this.flow,r,{onRemove:this._onChildRemove(i)}))}willUpdate(t){if(this.type==="decimal")return;const e=this.el.getBoundingClientRect();this._prevOffset=e[this.section.justify]-t[this.section.justify]}update(t){if(this.value!==t){const e=this._children.get(this.value);e&&(e.present=!1);const i=this._children.get(t);if(i)i.present=!0;else{const s=y("span",{className:"symbol__value",textContent:t});this.el.appendChild(s),this._children.set(t,new x(this.flow,s,{animateIn:!0,onRemove:this._onChildRemove(t)}))}}this.value=t}didUpdate(t){if(this.type==="decimal")return;const e=this.el.getBoundingClientRect()[this.section.justify]-t[this.section.justify],i=this._prevOffset-e;i&&this.el.animate({transform:[`translateX(${i}px)`,"none"]},{...this.flow.transformTiming,composite:"accumulate"})}}const rt=parseInt(c.version.match(/^(\d+)\./)?.[1]),j=rt>=19,ot=["data","digits"];class T extends I{attributeChangedCallback(t,e,i){this[t]=JSON.parse(i)}}T.observedAttributes=j?[]:ot;Y("number-flow-react",T);const lt={},O=j?n=>n:JSON.stringify;function V(n){const{transformTiming:t,spinTiming:e,opacityTiming:i,animated:s,respectMotionPreference:r,trend:a,plugins:o,...l}=n;return[{transformTiming:t,spinTiming:e,opacityTiming:i,animated:s,respectMotionPreference:r,trend:a,plugins:o},l]}class ht extends c.Component{updateProperties(t){if(!this.el)return;this.el.batched=!this.props.isolate;const[e]=V(this.props);Object.entries(e).forEach(([i,s])=>{this.el[i]=s??T.defaultProps[i]}),t?.onAnimationsStart&&this.el.removeEventListener("animationsstart",t.onAnimationsStart),this.props.onAnimationsStart&&this.el.addEventListener("animationsstart",this.props.onAnimationsStart),t?.onAnimationsFinish&&this.el.removeEventListener("animationsfinish",t.onAnimationsFinish),this.props.onAnimationsFinish&&this.el.addEventListener("animationsfinish",this.props.onAnimationsFinish)}componentDidMount(){this.updateProperties(),j&&this.el&&(this.el.digits=this.props.digits,this.el.data=this.props.data)}getSnapshotBeforeUpdate(t){if(this.updateProperties(t),t.data!==this.props.data){if(this.props.group)return this.props.group.willUpdate(),()=>this.props.group?.didUpdate();if(!this.props.isolate)return this.el?.willUpdate(),()=>this.el?.didUpdate()}return null}componentDidUpdate(t,e,i){i?.()}handleRef(t){this.props.innerRef&&(this.props.innerRef.current=t),this.el=t}render(){const[t,{innerRef:e,className:i,data:s,willChange:r,isolate:a,group:o,digits:l,onAnimationsStart:u,onAnimationsFinish:p,...f}]=V(this.props);return c.createElement("number-flow-react",{ref:this.handleRef,"data-will-change":r?"":void 0,class:i,...f,dangerouslySetInnerHTML:{__html:""},suppressHydrationWarning:!0,digits:O(l),data:O(s)})}constructor(t){super(t),this.handleRef=this.handleRef.bind(this)}}const ft=c.forwardRef(function({value:t,locales:e,format:i,prefix:s,suffix:r,...a},o){c.useImperativeHandle(o,()=>l.current,[]);const l=c.useRef(),u=c.useContext(H);u?.useRegister(l);const p=c.useMemo(()=>e?JSON.stringify(e):"",[e]),f=c.useMemo(()=>i?JSON.stringify(i):"",[i]),m=c.useMemo(()=>{const g=lt[`${p}:${f}`]??=new Intl.NumberFormat(e,i);return q(t,g,s,r)},[t,p,f,s,r]);return c.createElement(ht,{...a,group:u,data:m,innerRef:l})}),H=c.createContext(void 0);function mt({children:n}){const t=c.useRef(new Set),e=c.useRef(!1),i=c.useRef(new WeakMap),s=c.useMemo(()=>({useRegister(r){c.useEffect(()=>(t.current.add(r),()=>{t.current.delete(r)}),[])},willUpdate(){e.current||(e.current=!0,t.current.forEach(r=>{const a=r.current;!a||!a.created||(a.willUpdate(),i.current.set(a,!0))}))},didUpdate(){t.current.forEach(r=>{const a=r.current;!a||!i.current.get(a)||(a.didUpdate(),i.current.delete(a))}),e.current=!1}}),[]);return c.createElement(H.Provider,{value:s},n)}const ct=()=>c.useSyncExternalStore(()=>()=>{},()=>B,()=>!1),dt=()=>c.useSyncExternalStore(n=>(w?.addEventListener("change",n),()=>w?.removeEventListener("change",n)),()=>w.matches,()=>!1);function gt({respectMotionPreference:n=!0}={}){const t=ct(),e=dt();return t&&(!n||!e)}export{T as NumberFlowElement,mt as NumberFlowGroup,ut as continuous,ft as default,gt as useCanAnimate,ct as useIsSupported,dt as usePrefersReducedMotion};
1
+ import{r as c}from"./index-CJU9a2PB.js";const z=(n,t)=>n==null?t:t==null?n:Math.max(n,t),C=new WeakMap,ut={onUpdate(n,t,e){if(C.set(e,void 0),!e.computedTrend)return;const i=t.integer.concat(t.fraction).filter(o=>o.type==="integer"||o.type==="fraction"),s=n.integer.concat(n.fraction).filter(o=>o.type==="integer"||o.type==="fraction"),r=i.find(o=>!s.find(l=>l.pos===o.pos&&l.value===o.value)),a=s.find(o=>!i.find(l=>o.pos===l.pos&&o.value===l.value));C.set(e,z(r?.pos,a?.pos))},getDelta(n,t,e){const i=n-t,s=C.get(e.flow);if(!i&&s!=null&&s>=e.pos)return e.length*e.flow.computedTrend}},y=(n,t,e)=>{const i=document.createElement(n),[s,r]=Array.isArray(t)?[void 0,t]:[t,e];return s&&Object.assign(i,s),r?.forEach(a=>i.appendChild(a)),i},J=(n,t)=>{var e;return t==="left"?n.offsetLeft:(((e=n.offsetParent instanceof HTMLElement?n.offsetParent:null)==null?void 0:e.offsetWidth)??0)-n.offsetWidth-n.offsetLeft},G=n=>n.offsetWidth>0&&n.offsetHeight>0,Y=(n,t)=>{!customElements.get(n)&&customElements.define(n,t)};function Z(n,t,{reverse:e=!1}={}){const i=n.length;for(let s=e?i-1:0;e?s>=0:s<i;e?s--:s++)t(n[s],s)}function q(n,t,e,i){const s=t.formatToParts(n);e&&s.unshift({type:"prefix",value:e}),i&&s.push({type:"suffix",value:i});const r=[],a=[],o=[],l=[],u={},p=d=>`${d}:${u[d]=(u[d]??-1)+1}`;let f="",m=!1,g=!1;for(const d of s){f+=d.value;const h=d.type==="minusSign"||d.type==="plusSign"?"sign":d.type;h==="integer"?(m=!0,a.push(...d.value.split("").map(A=>({type:h,value:parseInt(A)})))):h==="group"?a.push({type:h,value:d.value}):h==="decimal"?(g=!0,o.push({type:h,value:d.value,key:p(h)})):h==="fraction"?o.push(...d.value.split("").map(A=>({type:h,value:parseInt(A),key:p(h),pos:-1-u[h]}))):(m||g?l:r).push({type:h,value:d.value,key:p(h)})}const M=[];for(let d=a.length-1;d>=0;d--){const h=a[d];M.unshift(h.type==="integer"?{...h,key:p(h.type),pos:u[h.type]}:{...h,key:p(h.type)})}return{pre:r,integer:M,fraction:o,post:l,valueAsString:f,value:typeof n=="string"?parseFloat(n):n}}const Q=String.raw,K=(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0})(),tt=typeof CSS<"u"&&CSS.supports&&CSS.supports("line-height","mod(1,1)"),w=typeof matchMedia<"u"?matchMedia("(prefers-reduced-motion: reduce)"):null,E="--_number-flow-d-opacity",U="--_number-flow-d-width",R="--_number-flow-dx",k="--_number-flow-d",et=(()=>{try{return CSS.registerProperty({name:E,syntax:"<number>",inherits:!1,initialValue:"0"}),CSS.registerProperty({name:R,syntax:"<length>",inherits:!0,initialValue:"0px"}),CSS.registerProperty({name:U,syntax:"<number>",inherits:!1,initialValue:"0"}),CSS.registerProperty({name:k,syntax:"<number>",inherits:!0,initialValue:"0"}),!0}catch{return!1}})(),it="var(--number-flow-char-height, 1em)",v="var(--number-flow-mask-height, 0.25em)",N=`calc(${v} / 2)`,$="var(--number-flow-mask-width, 0.5em)",_=`calc(${$} / var(--scale-x))`,b="#000 0, transparent 71%",P=Q`:host{display:inline-block;direction:ltr;white-space:nowrap;isolation:isolate;line-height:${it} !important}.number,.number__inner{display:inline-block;transform-origin:left top}:host([data-will-change]) :is(.number,.number__inner,.section,.digit,.digit__num,.symbol){will-change:transform}.number{--scale-x:calc(1 + var(${U}) / var(--width));transform:translateX(var(${R})) scaleX(var(--scale-x));margin:0 calc(-1 * ${$});position:relative;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 ${_},#000 calc(100% - ${_}),transparent ),linear-gradient(to bottom,transparent 0,#000 ${v},#000 calc(100% - ${v}),transparent 100% ),radial-gradient(at bottom right,${b}),radial-gradient(at bottom left,${b}),radial-gradient(at top left,${b}),radial-gradient(at top right,${b});-webkit-mask-size:100% calc(100% - ${v} * 2),calc(100% - ${_} * 2) 100%,${_} ${v},${_} ${v},${_} ${v},${_} ${v};-webkit-mask-position:center,center,top left,top right,bottom right,bottom left;-webkit-mask-repeat:no-repeat}.number__inner{padding:${N} ${$};transform:scaleX(calc(1 / var(--scale-x))) translateX(calc(-1 * var(${R})))}:host > :not(.number){z-index:5}.section,.symbol{display:inline-block;position:relative;isolation:isolate}.section::after{content:'\200b';display:inline-block}.section--justify-left{transform-origin:center left}.section--justify-right{transform-origin:center right}.section > [inert],.symbol > [inert]{margin:0 !important;position:absolute !important;z-index:-1}.digit{display:inline-block;position:relative;--c:var(--current) + var(${k})}.digit__num,.number .section::after{padding:${N} 0}.digit__num{display:inline-block;--offset-raw:mod(var(--length) + var(--n) - mod(var(--c),var(--length)),var(--length));--offset:calc( var(--offset-raw) - var(--length) * round(down,var(--offset-raw) / (var(--length) / 2),1) );--y:clamp(-100%,var(--offset) * 100%,100%);transform:translateY(var(--y))}.digit__num[inert]{position:absolute;top:0;left:50%;transform:translateX(-50%) translateY(var(--y))}.digit:not(.is-spinning) .digit__num[inert]{display:none}.symbol__value{display:inline-block;mix-blend-mode:plus-lighter;white-space:pre}.section--justify-left .symbol > [inert]{left:0}.section--justify-right .symbol > [inert]{right:0}.animate-presence{opacity:calc(1 + var(${E}))}`,st=HTMLElement,B=tt&&K&&et;let S;class I extends st{constructor(){super(),this.created=!1,this.batched=!1;const{animated:t,...e}=this.constructor.defaultProps;this._animated=this.computedAnimated=t,Object.assign(this,e)}get animated(){return this._animated}set animated(t){var e;this.animated!==t&&(this._animated=t,(e=this.shadowRoot)==null||e.getAnimations().forEach(i=>i.finish()))}set data(t){var e;if(t==null)return;const{pre:i,integer:s,fraction:r,post:a,value:o}=t;if(this.created){const l=this._data;this._data=t,this.computedTrend=typeof this.trend=="function"?this.trend(l.value,o):this.trend,this.computedAnimated=B&&this._animated&&(!this.respectMotionPreference||!(w!=null&&w.matches))&&G(this),(e=this.plugins)==null||e.forEach(u=>{var p;return(p=u.onUpdate)==null?void 0:p.call(u,t,l,this)}),this.batched||this.willUpdate(),this._pre.update(i),this._num.update({integer:s,fraction:r}),this._post.update(a),this.batched||this.didUpdate()}else{this._data=t,this.attachShadow({mode:"open"});try{this._internals??(this._internals=this.attachInternals()),this._internals.role="img"}catch{}if(typeof CSSStyleSheet<"u"&&this.shadowRoot.adoptedStyleSheets)S||(S=new CSSStyleSheet,S.replaceSync(P)),this.shadowRoot.adoptedStyleSheets=[S];else{const l=document.createElement("style");l.textContent=P,this.shadowRoot.appendChild(l)}this._pre=new F(this,i,{justify:"right",part:"left"}),this.shadowRoot.appendChild(this._pre.el),this._num=new nt(this,s,r),this.shadowRoot.appendChild(this._num.el),this._post=new F(this,a,{justify:"left",part:"right"}),this.shadowRoot.appendChild(this._post.el),this.created=!0}try{this._internals.ariaLabel=t.valueAsString}catch{}}willUpdate(){this._pre.willUpdate(),this._num.willUpdate(),this._post.willUpdate()}didUpdate(){if(!this.computedAnimated)return;this._abortAnimationsFinish?this._abortAnimationsFinish.abort():this.dispatchEvent(new Event("animationsstart")),this._pre.didUpdate(),this._num.didUpdate(),this._post.didUpdate();const t=new AbortController;Promise.all(this.shadowRoot.getAnimations().map(e=>e.finished)).then(()=>{t.signal.aborted||(this.dispatchEvent(new Event("animationsfinish")),this._abortAnimationsFinish=void 0)}),this._abortAnimationsFinish=t}}I.defaultProps={transformTiming:{duration:900,easing:"linear(0,.005,.019,.039,.066,.096,.129,.165,.202,.24,.278,.316,.354,.39,.426,.461,.494,.526,.557,.586,.614,.64,.665,.689,.711,.731,.751,.769,.786,.802,.817,.831,.844,.856,.867,.877,.887,.896,.904,.912,.919,.925,.931,.937,.942,.947,.951,.955,.959,.962,.965,.968,.971,.973,.976,.978,.98,.981,.983,.984,.986,.987,.988,.989,.99,.991,.992,.992,.993,.994,.994,.995,.995,.996,.996,.9963,.9967,.9969,.9972,.9975,.9977,.9979,.9981,.9982,.9984,.9985,.9987,.9988,.9989,1)"},spinTiming:void 0,opacityTiming:{duration:450,easing:"ease-out"},animated:!0,trend:(n,t)=>Math.sign(t-n),respectMotionPreference:!0,plugins:void 0,digits:void 0};class nt{constructor(t,e,i,{className:s,...r}={}){this.flow=t,this._integer=new L(t,e,{justify:"right",part:"integer"}),this._fraction=new L(t,i,{justify:"left",part:"fraction"}),this._inner=y("span",{className:"number__inner"},[this._integer.el,this._fraction.el]),this.el=y("span",{...r,part:"number",className:`number ${s??""}`},[this._inner])}willUpdate(){this._prevWidth=this.el.offsetWidth,this._prevLeft=this.el.getBoundingClientRect().left,this._integer.willUpdate(),this._fraction.willUpdate()}update({integer:t,fraction:e}){this._integer.update(t),this._fraction.update(e)}didUpdate(){const t=this.el.getBoundingClientRect();this._integer.didUpdate(),this._fraction.didUpdate();const e=this._prevLeft-t.left,i=this.el.offsetWidth,s=this._prevWidth-i;this.el.style.setProperty("--width",String(i)),this.el.animate({[R]:[`${e}px`,"0px"],[U]:[s,0]},{...this.flow.transformTiming,composite:"accumulate"})}}class D{constructor(t,e,{justify:i,className:s,...r},a){this.flow=t,this.children=new Map,this.onCharRemove=l=>()=>{this.children.delete(l)},this.justify=i;const o=e.map(l=>this.addChar(l).el);this.el=y("span",{...r,className:`section section--justify-${i} ${s??""}`},a?a(o):o)}addChar(t,{startDigitsAtZero:e=!1,...i}={}){const s=t.type==="integer"||t.type==="fraction"?new X(this,t.type,e?0:t.value,t.pos,{...i,onRemove:this.onCharRemove(t.key)}):new at(this,t.type,t.value,{...i,onRemove:this.onCharRemove(t.key)});return this.children.set(t.key,s),s}unpop(t){t.el.removeAttribute("inert"),t.el.style.top="",t.el.style[this.justify]=""}pop(t){t.forEach(e=>{e.el.style.top=`${e.el.offsetTop}px`,e.el.style[this.justify]=`${J(e.el,this.justify)}px`}),t.forEach(e=>{e.el.setAttribute("inert",""),e.present=!1})}addNewAndUpdateExisting(t){const e=new Map,i=new Map,s=this.justify==="left",r=s?"prepend":"append";if(Z(t,a=>{let o;this.children.has(a.key)?(o=this.children.get(a.key),i.set(a,o),this.unpop(o),o.present=!0):(o=this.addChar(a,{startDigitsAtZero:!0,animateIn:!0}),e.set(a,o)),this.el[r](o.el)},{reverse:s}),this.flow.computedAnimated){const a=this.el.getBoundingClientRect();e.forEach(o=>{o.willUpdate(a)})}e.forEach((a,o)=>{a.update(o.value)}),i.forEach((a,o)=>{a.update(o.value)})}willUpdate(){const t=this.el.getBoundingClientRect();this._prevOffset=t[this.justify],this.children.forEach(e=>e.willUpdate(t))}didUpdate(){const t=this.el.getBoundingClientRect();this.children.forEach(s=>s.didUpdate(t));const e=t[this.justify],i=this._prevOffset-e;i&&this.children.size&&this.el.animate({transform:[`translateX(${i}px)`,"none"]},{...this.flow.transformTiming,composite:"accumulate"})}}class L extends D{update(t){const e=new Map;this.children.forEach((i,s)=>{t.find(r=>r.key===s)||e.set(s,i),this.unpop(i)}),this.addNewAndUpdateExisting(t),e.forEach(i=>{i instanceof X&&i.update(0)}),this.pop(e)}}class F extends D{update(t){const e=new Map;this.children.forEach((i,s)=>{t.find(r=>r.key===s)||e.set(s,i)}),this.pop(e),this.addNewAndUpdateExisting(t)}}class x{constructor(t,e,{onRemove:i,animateIn:s=!1}={}){this.flow=t,this.el=e,this._present=!0,this._remove=()=>{var r;this.el.remove(),(r=this._onRemove)==null||r.call(this)},this.el.classList.add("animate-presence"),this.flow.computedAnimated&&s&&this.el.animate({[E]:[-.9999,0]},{...this.flow.opacityTiming,composite:"accumulate"}),this._onRemove=i}get present(){return this._present}set present(t){if(this._present!==t){if(this._present=t,t?this.el.removeAttribute("inert"):this.el.setAttribute("inert",""),!this.flow.computedAnimated){t||this._remove();return}this.el.style.setProperty("--_number-flow-d-opacity",t?"0":"-.999"),this.el.animate({[E]:t?[-.9999,0]:[.999,0]},{...this.flow.opacityTiming,composite:"accumulate"}),t?this.flow.removeEventListener("animationsfinish",this._remove):this.flow.addEventListener("animationsfinish",this._remove,{once:!0})}}}class W extends x{constructor(t,e,i,s){super(t.flow,i,s),this.section=t,this.value=e,this.el=i}}class X extends W{constructor(t,e,i,s,r){var a,o;const l=(((o=(a=t.flow.digits)==null?void 0:a[s])==null?void 0:o.max)??9)+1,u=Array.from({length:l}).map((f,m)=>{const g=y("span",{className:"digit__num"},[document.createTextNode(String(m))]);return m!==i&&g.setAttribute("inert",""),g.style.setProperty("--n",String(m)),g}),p=y("span",{part:`digit ${e}-digit`,className:"digit"},u);p.style.setProperty("--current",String(i)),p.style.setProperty("--length",String(l)),super(t,i,p,r),this.pos=s,this._onAnimationsFinish=()=>{this.el.classList.remove("is-spinning")},this._numbers=u,this.length=l}willUpdate(t){const e=this.el.getBoundingClientRect();this._prevValue=this.value;const i=e[this.section.justify]-t[this.section.justify],s=e.width/2;this._prevCenter=this.section.justify==="left"?i+s:i-s}update(t){this.el.style.setProperty("--current",String(t)),this._numbers.forEach((e,i)=>i===t?e.removeAttribute("inert"):e.setAttribute("inert","")),this.value=t}didUpdate(t){const e=this.el.getBoundingClientRect(),i=e[this.section.justify]-t[this.section.justify],s=e.width/2,r=this.section.justify==="left"?i+s:i-s,a=this._prevCenter-r;a&&this.el.animate({transform:[`translateX(${a}px)`,"none"]},{...this.flow.transformTiming,composite:"accumulate"});const o=this.getDelta();o&&(this.el.classList.add("is-spinning"),this.el.animate({[k]:[-o,0]},{...this.flow.spinTiming??this.flow.transformTiming,composite:"accumulate"}),this.flow.addEventListener("animationsfinish",this._onAnimationsFinish,{once:!0}))}getDelta(){var t;if(this.flow.plugins)for(const s of this.flow.plugins){const r=(t=s.getDelta)==null?void 0:t.call(s,this.value,this._prevValue,this);if(r!=null)return r}const e=this.value-this._prevValue,i=this.flow.computedTrend||Math.sign(e);return i<0&&this.value>this._prevValue?this.value-this.length-this._prevValue:i>0&&this.value<this._prevValue?this.length-this._prevValue+this.value:e}}class at extends W{constructor(t,e,i,s){const r=y("span",{className:"symbol__value",textContent:i});super(t,i,y("span",{part:`symbol ${e}`,className:"symbol"},[r]),s),this.type=e,this._children=new Map,this._onChildRemove=a=>()=>{this._children.delete(a)},this._children.set(i,new x(this.flow,r,{onRemove:this._onChildRemove(i)}))}willUpdate(t){if(this.type==="decimal")return;const e=this.el.getBoundingClientRect();this._prevOffset=e[this.section.justify]-t[this.section.justify]}update(t){if(this.value!==t){const e=this._children.get(this.value);e&&(e.present=!1);const i=this._children.get(t);if(i)i.present=!0;else{const s=y("span",{className:"symbol__value",textContent:t});this.el.appendChild(s),this._children.set(t,new x(this.flow,s,{animateIn:!0,onRemove:this._onChildRemove(t)}))}}this.value=t}didUpdate(t){if(this.type==="decimal")return;const e=this.el.getBoundingClientRect()[this.section.justify]-t[this.section.justify],i=this._prevOffset-e;i&&this.el.animate({transform:[`translateX(${i}px)`,"none"]},{...this.flow.transformTiming,composite:"accumulate"})}}const rt=parseInt(c.version.match(/^(\d+)\./)?.[1]),j=rt>=19,ot=["data","digits"];class T extends I{attributeChangedCallback(t,e,i){this[t]=JSON.parse(i)}}T.observedAttributes=j?[]:ot;Y("number-flow-react",T);const lt={},O=j?n=>n:JSON.stringify;function V(n){const{transformTiming:t,spinTiming:e,opacityTiming:i,animated:s,respectMotionPreference:r,trend:a,plugins:o,...l}=n;return[{transformTiming:t,spinTiming:e,opacityTiming:i,animated:s,respectMotionPreference:r,trend:a,plugins:o},l]}class ht extends c.Component{updateProperties(t){if(!this.el)return;this.el.batched=!this.props.isolate;const[e]=V(this.props);Object.entries(e).forEach(([i,s])=>{this.el[i]=s??T.defaultProps[i]}),t?.onAnimationsStart&&this.el.removeEventListener("animationsstart",t.onAnimationsStart),this.props.onAnimationsStart&&this.el.addEventListener("animationsstart",this.props.onAnimationsStart),t?.onAnimationsFinish&&this.el.removeEventListener("animationsfinish",t.onAnimationsFinish),this.props.onAnimationsFinish&&this.el.addEventListener("animationsfinish",this.props.onAnimationsFinish)}componentDidMount(){this.updateProperties(),j&&this.el&&(this.el.digits=this.props.digits,this.el.data=this.props.data)}getSnapshotBeforeUpdate(t){if(this.updateProperties(t),t.data!==this.props.data){if(this.props.group)return this.props.group.willUpdate(),()=>this.props.group?.didUpdate();if(!this.props.isolate)return this.el?.willUpdate(),()=>this.el?.didUpdate()}return null}componentDidUpdate(t,e,i){i?.()}handleRef(t){this.props.innerRef&&(this.props.innerRef.current=t),this.el=t}render(){const[t,{innerRef:e,className:i,data:s,willChange:r,isolate:a,group:o,digits:l,onAnimationsStart:u,onAnimationsFinish:p,...f}]=V(this.props);return c.createElement("number-flow-react",{ref:this.handleRef,"data-will-change":r?"":void 0,class:i,...f,dangerouslySetInnerHTML:{__html:""},suppressHydrationWarning:!0,digits:O(l),data:O(s)})}constructor(t){super(t),this.handleRef=this.handleRef.bind(this)}}const ft=c.forwardRef(function({value:t,locales:e,format:i,prefix:s,suffix:r,...a},o){c.useImperativeHandle(o,()=>l.current,[]);const l=c.useRef(),u=c.useContext(H);u?.useRegister(l);const p=c.useMemo(()=>e?JSON.stringify(e):"",[e]),f=c.useMemo(()=>i?JSON.stringify(i):"",[i]),m=c.useMemo(()=>{const g=lt[`${p}:${f}`]??=new Intl.NumberFormat(e,i);return q(t,g,s,r)},[t,p,f,s,r]);return c.createElement(ht,{...a,group:u,data:m,innerRef:l})}),H=c.createContext(void 0);function mt({children:n}){const t=c.useRef(new Set),e=c.useRef(!1),i=c.useRef(new WeakMap),s=c.useMemo(()=>({useRegister(r){c.useEffect(()=>(t.current.add(r),()=>{t.current.delete(r)}),[])},willUpdate(){e.current||(e.current=!0,t.current.forEach(r=>{const a=r.current;!a||!a.created||(a.willUpdate(),i.current.set(a,!0))}))},didUpdate(){t.current.forEach(r=>{const a=r.current;!a||!i.current.get(a)||(a.didUpdate(),i.current.delete(a))}),e.current=!1}}),[]);return c.createElement(H.Provider,{value:s},n)}const ct=()=>c.useSyncExternalStore(()=>()=>{},()=>B,()=>!1),dt=()=>c.useSyncExternalStore(n=>(w?.addEventListener("change",n),()=>w?.removeEventListener("change",n)),()=>w.matches,()=>!1);function gt({respectMotionPreference:n=!0}={}){const t=ct(),e=dt();return t&&(!n||!e)}export{T as NumberFlowElement,mt as NumberFlowGroup,ut as continuous,ft as default,gt as useCanAnimate,ct as useIsSupported,dt as usePrefersReducedMotion};
@@ -1 +1 @@
1
- import{aM as Y,r as k,b3 as C,b4 as z,j as e,S as f,bU as se,B as A,aQ as M,aj as d,y as W,ai as Q,ci as te,aN as le,cf as H,e as ce,ch as q,cD as de,bP as me,cE as J,bS as ue,cF as pe,af as xe,ag as T,aT as U,_ as he}from"./index-BYawr8p9.js";import{g as S,S as ge,a as fe,D as be,b as je}from"./stats-view-DzZxrBDz.js";import{C as $,a as D,b as F,h as R,c as V,E as ve,K as Ne,d as we,e as ye,u as ke,j as _e}from"./pagemenu-BMXHDXYy.js";import{E as P}from"./empty-indicator-DBrIZcFq.js";import{P as Ce}from"./post-share-modal-Dql4fYjR.js";import{g as Ae,c as Le}from"./post-helpers-gInwAwEv.js";import{S as Te,U as ae}from"./wallet-cards-KaTkgqvi.js";import{h as Me,i as K,d as ze,j as We,L as $e,k as X,l as Z,C as De}from"./lucide-react-DKlmxVQI.js";import{G}from"./gh-chart-BV97-O7c.js";import{g as Fe}from"./audience-select-DQD7iDOb.js";import{u as Re}from"./use-growth-stats-DF-7tL8g.js";import{u as Ve}from"./posts-Bsvw11Zo.js";import{i as Ee,j as Ie}from"./stats-r0Bphuvi.js";import"./select-BhvNY3I-.js";import"./message-square-text-CaMVBVPr.js";import"./sprout-BW9HFVU8.js";import"./a-large-small-CKZJgscl.js";import"./at-sign-CqQzllfI.js";import"./copy-BFuV16bY.js";import"./hash-CdH0ikFp.js";import"./inbox-Bd0uf1Ez.js";import"./minus-2XwCoFJV.js";import"./tags-BL_N4nn2.js";import"./square-BCNGSZhW.js";import"./user-round-check-BjHbfXKY.js";import"./repeat-COP-3g8d.js";import"./reply-JE8tmvOn.js";import"./trash-BglGemAb.js";import"./chart-DGA1MaFs.js";import"./_baseAssignValue-BX8EallQ.js";import"./currency-fEUUCkj0.js";const Ue=s=>s.email_only?"Sent":s.email?"Published and sent":"Published",Ge=({latestPostStats:s,isLoading:o})=>{const a=Y(),[r,i]=k.useState(!1),{site:l,settings:u}=C(),{appSettings:n}=z(),{emailTrackClicks:p,emailTrackOpens:t}=n?.analytics||{},c=l.title||String(u.find(g=>g.key==="title")?.value||"Ghost Site"),x=s?Ae(s,{membersTrackSources:n?.analytics.membersTrackSources}):null,b="group mr-2 flex flex-col gap-1.5 hover:cursor-pointer";return e.jsxs($,{className:"group/card bg-gradient-to-tr from-muted/40 to-muted/0 to-50%","data-testid":"latest-post",children:[e.jsxs(D,{children:[e.jsx(F,{className:"flex items-baseline justify-between font-medium leading-snug text-muted-foreground",children:"Latest post performance"}),e.jsx(R,{className:"hidden",children:"How your last post did"})]}),e.jsxs(V,{className:"flex flex-col gap-6 px-0 lg:flex-row xl:grid xl:grid-cols-3",children:[o&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex w-full items-center gap-6 px-6 xl:col-span-2",children:[e.jsx("div",{className:"w-full max-w-[232px] grow",children:e.jsx(f,{className:"aspect-[16/10] rounded-md"})}),e.jsxs("div",{className:"w-full grow",children:[e.jsx(f,{className:"w-full max-w-[420px]"}),e.jsx(f,{className:"w-1/2"})]})]}),e.jsx("div",{className:"flex flex-col items-stretch gap-2 px-6 text-sm",children:e.jsxs("div",{className:"grid grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsx(f,{className:"w-3/4"}),e.jsx(f,{className:"h-10 w-1/3"})]}),e.jsxs("div",{children:[e.jsx(f,{className:"w-3/4"}),e.jsx(f,{className:"h-10 w-1/3"})]}),e.jsxs("div",{children:[e.jsx(f,{className:"w-3/4"}),e.jsx(f,{className:"h-10 w-1/3"})]}),e.jsxs("div",{children:[e.jsx(f,{className:"w-3/4"}),e.jsx(f,{className:"h-10 w-1/3"})]})]})})]}),!o&&s&&x?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-col gap-6 px-6 transition-all md:flex-row md:items-start xl:col-span-2",children:[s.feature_image&&e.jsx("div",{className:"aspect-[16/10] w-full min-w-[100px] rounded-sm bg-cover bg-center sm:max-w-[170px] lg:max-w-[170px] xl:max-w-[232px]",style:{backgroundImage:`url(${s.feature_image})`}}),e.jsxs("div",{className:"flex grow flex-col items-start justify-center self-stretch",children:[e.jsx("div",{className:"text-lg font-semibold leading-tighter tracking-tight hover:cursor-pointer hover:opacity-75",onClick:()=>{!o&&s&&a(`/posts/analytics/${s.id}`,{crossApp:!0})},children:s.title}),e.jsxs("div",{className:"mt-0.5 text-sm text-muted-foreground",children:[s.authors&&s.authors.length>0&&e.jsxs("div",{children:["By ",s.authors.map(g=>g.name).join(", ")," – ",se(s.published_at)]}),e.jsx("div",{className:"mt-0.5",children:Ue(s)})]}),e.jsxs("div",{className:"mt-6 flex items-center gap-2",children:[!s.email_only&&e.jsx(Ce,{author:s.authors?.map(g=>g.name).join(", ")||"",description:"",faviconURL:l.icon||"",featureImageURL:s.feature_image||"",open:r,postExcerpt:s.excerpt||"",postTitle:s.title,postURL:s.url||"",siteTitle:c,onClose:()=>i(!1),onOpenChange:i,children:e.jsxs(A,{onClick:()=>i(!0),children:[e.jsx(Te,{})," Share post"]})}),e.jsxs(A,{className:s.email_only?"w-full":"",variant:"outline",onClick:()=>{a(`/posts/analytics/${s.id}`,{crossApp:!0})},children:[e.jsx(Me,{}),e.jsx("span",{className:"hidden md:!visible md:!block",children:s.email_only?"Post analytics":"Analytics"})]})]})]})]}),e.jsx("div",{className:"-ml-4 flex w-full flex-col items-stretch gap-2 pr-6 text-sm xl:h-full xl:max-w-none",children:e.jsxs("div",{className:"grid grid-cols-2 gap-6 pl-10 lg:border-l xl:h-full",children:[x.showWebMetrics&&n?.analytics.webAnalytics&&e.jsxs("div",{className:b,"data-testid":"latest-post-visitors",onClick:()=>{a(`/posts/analytics/${s.id}/web`,{crossApp:!0})},children:[e.jsxs("div",{className:"flex items-center gap-1.5 font-medium text-muted-foreground transition-all group-hover:text-foreground",children:[e.jsx(M,{size:16,strokeWidth:1.25}),e.jsx("span",{className:"hidden md:!visible md:!block",children:"Visitors"})]}),e.jsx("span",{className:"text-[2.2rem] font-semibold leading-none tracking-tighter",children:d(s.visitors)})]}),x.showMemberGrowth&&e.jsxs("div",{className:W(b,x.showEmailMetrics&&(!x.showWebMetrics||!n?.analytics.webAnalytics)&&"row-[2/3] col-[1/2]"),"data-testid":"latest-post-members",onClick:()=>{a(`/posts/analytics/${s.id}/growth`,{crossApp:!0})},children:[e.jsxs("div",{className:"flex items-center gap-1.5 font-medium text-muted-foreground transition-all group-hover:text-foreground",children:[e.jsx(ae,{size:16,strokeWidth:1.25}),e.jsx("span",{className:"hidden md:!visible md:!block",children:"Members"})]}),e.jsx("span",{className:"text-[2.2rem] font-semibold leading-none tracking-tighter",children:s.member_delta?e.jsxs(e.Fragment,{children:["+",d(s.member_delta)]}):0})]}),x.showEmailMetrics&&s.email&&e.jsxs(e.Fragment,{children:[t&&e.jsxs("div",{className:b,onClick:()=>{a(`/posts/analytics/${s.id}/newsletter`,{crossApp:!0})},children:[e.jsxs("div",{className:"flex items-center gap-1.5 font-medium text-muted-foreground transition-all group-hover:text-foreground",children:[e.jsx(K,{size:16,strokeWidth:1.25}),e.jsx("span",{className:"hidden whitespace-nowrap md:!visible md:!block",children:"Opens"})]}),e.jsx("span",{className:"text-[2.2rem] font-semibold leading-none tracking-tighter",children:s.email.email_count?Q((s.email.opened_count||0)/s.email.email_count):"0%"})]}),p&&e.jsxs("div",{className:b,onClick:()=>{a(`/posts/analytics/${s.id}/newsletter`,{crossApp:!0})},children:[e.jsxs("div",{className:"flex items-center gap-1.5 font-medium text-muted-foreground transition-all group-hover:text-foreground",children:[e.jsx(ze,{size:16,strokeWidth:1.25}),e.jsx("span",{className:"hidden whitespace-nowrap md:!visible md:!block",children:"Clicks"})]}),e.jsx("span",{className:"text-[2.2rem] font-semibold leading-none tracking-tighter",children:s.email.email_count&&s.count?.clicks?Q((s.count.clicks||0)/s.email.email_count):"0%"})]})]})]})})]}):!o&&e.jsx(P,{actions:e.jsx(A,{variant:"secondary",onClick:()=>{a("/editor/post",{crossApp:!0})},children:"New post"}),className:"w-full pb-10 xl:col-span-3",description:"Once it's live, you can track performance here",title:"Publish your first post",children:e.jsx(te,{strokeWidth:1.5})})]})]})},Be=()=>{const{data:s}=C();return{isLimited:a=>{const r=s?.config;return r?.hostSettings?.limits&&a==="limitAnalytics"?r.hostSettings.limits.limitAnalytics?.disabled===!0:!1}}},B=({title:s,iconName:o,description:a,color:r,diffDirection:i,diffValue:l,formattedValue:u,trendingFromValue:n,children:p,onClick:t})=>{const{range:c}=C(),x=o&&$e[o],b=ce.useMemo(()=>{if(!i||i==="empty"||c===q.allTime.value||!l)return"";const g=i==="up"?"up":i==="down"?"down":"at",N=S(c).replace("in the ","").replace(/^\(|\)$/g,"");return i==="same"?e.jsxs("span",{children:["You're trending at the same level as ",e.jsx("span",{className:"font-semibold",children:u})," compared to the ",e.jsx("span",{className:"font-semibold",children:N})]}):e.jsxs("span",{children:["You're trending ",e.jsxs("span",{className:"font-semibold",children:[g," ",l]})," from ",e.jsx("span",{className:"font-semibold",children:n})," compared to the ",N]})},[i,l,n,u,c]);return e.jsxs($,{className:"group","data-testid":s,children:[e.jsxs(D,{className:"hidden",children:[e.jsx(F,{children:s}),e.jsx(R,{children:a})]}),e.jsxs(Ne,{className:"relative flex grow flex-row items-start justify-between gap-5 border-none pb-2 xl:pb-4",children:[e.jsxs("div",{className:"flex grow flex-col gap-1.5 border-none pb-0",children:[e.jsxs(we,{className:t&&"transition-all group-hover:text-foreground",children:[r&&e.jsx("span",{className:"inline-block size-2 rounded-full opacity-50",style:{backgroundColor:r}}),x&&e.jsx(x,{size:16,strokeWidth:1.5}),s]}),e.jsx(ye,{diffDirection:c===q.allTime.value?"hidden":i,diffTooltip:b,diffValue:l,value:u})]}),t&&e.jsx(A,{className:"absolute right-6 translate-x-10 opacity-0 transition-all duration-200 group-hover:translate-x-0 group-hover:opacity-100",size:"sm",variant:"outline",onClick:t,children:"View more"})]}),e.jsx(V,{children:p})]})},Oe=({kpiValues:s,visitorsChartData:o,visitorsYRange:a,growthTotals:r,membersChartData:i,mrrChartData:l,currencySymbol:u,isLoading:n})=>{const p=Y(),{range:t}=C(),{appSettings:c}=z(),b=Be().isLimited("limitAnalytics"),g="-mb-3 h-[10vw] max-h-[200px] min-h-[100px] hover:!cursor-pointer";if(n)return e.jsx(ve,{className:"flex h-[calc(10vw+116px)] max-h-[416px] min-h-20 items-center justify-center hover:!cursor-pointer",children:e.jsx(le,{})});const _=c?.analytics.webAnalytics,N=b&&!_,E=!0,w=c?.paidMembersEnabled,L=[_,N,E,w].filter(Boolean).length;let j="lg:grid-cols-3";L===2?j="lg:grid-cols-2":L===1&&(j="lg:grid-cols-1");const I=`flex flex-col lg:grid ${j} gap-6`;return e.jsxs("div",{className:I,children:[_&&!N&&e.jsx(B,{description:"Number of individual people who visited your website",diffDirection:"empty",formattedValue:s.visits,iconName:"Globe",linkto:"/analytics/web/",title:"Unique visitors",onClick:()=>{p("/analytics/web/")},children:e.jsx(G,{className:g,color:"hsl(var(--chart-blue))",data:o,id:"visitors",range:t,showHorizontalLines:!0,showYAxisValues:!1,syncId:"overview-charts",yAxisRange:a})}),N&&e.jsxs($,{children:[e.jsxs(D,{className:"hidden",children:[e.jsx(F,{children:"Unlock web analytics"}),e.jsx(R,{children:"Get the full picture of what's working with detailed, cookie-free traffic analytics."})]}),e.jsx(V,{className:"flex h-full items-center justify-center p-6",children:e.jsx(P,{actions:e.jsx(A,{variant:"outline",onClick:()=>p("/pro",{crossApp:!0}),children:"Upgrade now"}),className:"py-10",description:"Get the full picture of what's working with detailed, cookie-free traffic analytics.",title:"Unlock web analytics",children:e.jsx(We,{})})})]}),e.jsx(B,{description:"How number of members of your publication changed over time",diffDirection:r.directions.total,diffValue:r.percentChanges.total,formattedValue:d(r.totalMembers),iconName:"User",linkto:"/analytics/growth/",title:"Members",trendingFromValue:`${d(i[0].value)}`,onClick:()=>{p("/analytics/growth/?tab=total-members")},children:e.jsx(G,{className:g,color:"hsl(var(--chart-darkblue))",data:i,id:"members",range:t,showHorizontalLines:!0,showYAxisValues:!1,syncId:"overview-charts"})}),w&&e.jsx(B,{description:"Monthly recurring revenue changes over time",diffDirection:r.directions.mrr,diffValue:r.percentChanges.mrr,formattedValue:`${u}${d(H(r.mrr))}`,iconName:"Coins",linkto:"/analytics/growth/",title:"MRR",trendingFromValue:`${u}${d(l[0].value)}`,onClick:()=>{p("/analytics/growth/?tab=mrr")},children:e.jsx(G,{className:g,color:"hsl(var(--chart-teal))",data:l,id:"mrr",range:t,showHorizontalLines:!0,showYAxisValues:!1,syncId:"overview-charts"})})]})},He=({className:s})=>e.jsx("div",{className:W("rounded-sm bg-muted dark:bg-[#36373a] flex flex-col items-center justify-center gap-1 p-6",s),children:e.jsx(de,{className:"text-muted-foreground/50",size:18,strokeWidth:1.5})}),O=({className:s,metrics:o,title:a})=>e.jsx(e.Fragment,{children:e.jsxs("div",{className:W("pointer-events-none absolute bottom-[calc(100%+2px)] left-1/2 z-50 min-w-[160px] -translate-x-1/2 rounded-md bg-background p-3 text-sm opacity-0 shadow-md transition-all group-hover/tooltip:bottom-[calc(100%+12px)] group-hover/tooltip:opacity-100",s),children:[e.jsx("div",{className:"mb-1.5 whitespace-nowrap border-b pb-1.5 pr-10 font-medium text-muted-foreground",children:a}),e.jsx("div",{className:"flex flex-col gap-1.5",children:o?.map(r=>e.jsxs("div",{className:"flex items-center justify-between gap-5",children:[e.jsxs("div",{className:"flex items-center gap-1.5 whitespace-nowrap",children:[r.icon,r.label]}),e.jsx("span",{className:"font-mono",children:r.metric})]},r.label))})]})}),Se=({topPostsData:s,isLoading:o})=>{const a=Y(),{range:r}=C(),{appSettings:i}=z(),l=i?.analytics.webAnalytics,u=i?.analytics.emailTrackClicks,n=i?.analytics.emailTrackOpens,p="flex items-center justify-end gap-1 rounded-md px-2 py-1 font-mono text-gray-800 hover:bg-muted-foreground/10 group-hover:text-foreground";return e.jsxs($,{className:"group/card w-full lg:col-span-2","data-testid":"top-posts-card",children:[e.jsxs(D,{children:[e.jsxs(F,{className:"flex items-baseline justify-between font-medium leading-snug text-muted-foreground",children:["Top posts ",S(r)]}),e.jsx(R,{className:"hidden",children:"Most viewed posts in this period"})]}),e.jsx(V,{children:o?e.jsx(me,{className:"mt-6"}):e.jsxs(e.Fragment,{children:[s?.stats?.map(t=>e.jsxs("div",{className:'group relative flex w-full items-start justify-between gap-5 border-t border-border/50 py-4 before:absolute before:-inset-x-4 before:inset-y-0 before:z-0 before:hidden before:rounded-md before:bg-accent before:opacity-80 before:content-[""] first:!border-border hover:cursor-pointer hover:border-transparent hover:before:block md:items-center dark:before:bg-accent/50 [&+div]:hover:border-transparent',children:[e.jsxs("div",{className:"z-10 flex min-w-[160px] grow items-start gap-4 md:items-center lg:min-w-[320px]",onClick:()=>{a(`/posts/analytics/${t.post_id}`,{crossApp:!0})},children:[t.feature_image?e.jsx("div",{className:"hidden aspect-[16/10] w-[80px] shrink-0 rounded-sm bg-cover bg-center sm:!visible sm:!block lg:w-[100px]",style:{backgroundImage:`url(${t.feature_image})`}}):e.jsx(He,{className:"hidden aspect-[16/10] w-[80px] shrink-0 group-hover:bg-muted-foreground/10 sm:!visible sm:!flex lg:w-[100px]"}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"line-clamp-2 text-lg font-semibold leading-[1.35em]",children:t.title}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["By ",t.authors," – ",se(t.published_at)]}),e.jsx("span",{className:"text-sm text-muted-foreground",children:Le(t)})]})]}),e.jsxs("div",{className:"z-10 flex flex-col items-end justify-center gap-0.5 text-sm md:flex-row md:items-center md:justify-end md:gap-3",children:[l&&e.jsxs("div",{className:"group/tooltip relative flex w-[66px] lg:w-[92px]","data-testid":"statistics-visitors",onClick:c=>{c.stopPropagation(),a(`/posts/analytics/${t.post_id}/web`,{crossApp:!0})},children:[e.jsx(O,{metrics:[{icon:e.jsx(M,{className:"shrink-0 text-muted-foreground",size:16,strokeWidth:1.5}),label:"Unique visitors",metric:d(t.views)}],title:"Web traffic"}),e.jsxs("div",{className:p,children:[e.jsx(M,{className:"text-muted-foreground group-hover:text-foreground",size:16,strokeWidth:1.5}),J(t.views)]})]}),t.sent_count!==null&&e.jsxs("div",{className:"group/tooltip relative flex w-[66px] lg:w-[92px]",onClick:c=>{c.stopPropagation(),a(`/posts/analytics/${t.post_id}/newsletter`,{crossApp:!0})},children:[e.jsx(O,{className:`${i?.analytics.membersTrackSources?"":"left-auto right-0 translate-x-0"}`,metrics:[{icon:e.jsx(X,{className:"shrink-0 text-muted-foreground",size:16,strokeWidth:1.5}),label:"Sent",metric:d(t.sent_count||0)},...n?[{icon:e.jsx(K,{className:"shrink-0 text-muted-foreground",size:16,strokeWidth:1.5}),label:"Opens",metric:d(t.opened_count||0)}]:[],...u?[{icon:e.jsx(Z,{className:"shrink-0 text-muted-foreground",size:16,strokeWidth:1.5}),label:"Clicks",metric:d(t.clicked_count||0)}]:[]],title:"Newsletter performance"}),e.jsx("div",{className:p,children:n?e.jsxs(e.Fragment,{children:[e.jsx(K,{className:"text-muted-foreground group-hover:text-foreground",size:16,strokeWidth:1.5}),t.open_rate?`${Math.round(t.open_rate)}%`:"0%"]}):u?e.jsxs(e.Fragment,{children:[e.jsx(Z,{className:"text-muted-foreground group-hover:text-foreground",size:16,strokeWidth:1.5}),t.click_rate?`${Math.round(t.click_rate)}%`:"0%"]}):e.jsxs(e.Fragment,{children:[e.jsx(X,{className:"text-muted-foreground group-hover:text-foreground",size:16,strokeWidth:1.5}),J(t.sent_count||0)]})})]}),i?.analytics.membersTrackSources&&e.jsxs("div",{className:"group/tooltip relative flex w-[66px] lg:w-[92px]","data-testid":"statistics-members",onClick:c=>{c.stopPropagation(),a(`/posts/analytics/${t.post_id}/growth`,{crossApp:!0})},children:[e.jsx(O,{className:"left-auto right-0 translate-x-0",metrics:[{icon:e.jsx(ue,{className:"shrink-0 text-muted-foreground",size:16,strokeWidth:1.5}),label:"Free",metric:t.free_members>0?`+${d(t.free_members)}`:"0"},...i?.paidMembersEnabled?[{icon:e.jsx(pe,{className:"shrink-0 text-muted-foreground",size:16,strokeWidth:1.5}),label:"Paid",metric:t.paid_members>0?`+${d(t.paid_members)}`:"0"}]:[]],title:"New members"}),e.jsxs("div",{className:p,children:[e.jsx(ae,{className:"text-muted-foreground group-hover:text-foreground",size:16,strokeWidth:1.5}),t.members>0?`+${d(t.members)}`:"0"]})]})]})]},t.post_id)),(!s?.stats||s.stats.length===0)&&e.jsx(P,{className:"w-full pb-10",title:`No posts ${S(r)}`,children:e.jsx(te,{strokeWidth:1.5})})]})})]})},Ke=()=>{const{data:{posts:[s]}={posts:[]},isLoading:o}=Ve({searchParams:{filter:"status:[published,sent]",order:"published_at DESC",limit:"1",include:"authors,email,count.clicks"}}),a=s,r=Ee(a?.id||"",{enabled:!!a?.id}),{data:i,isLoading:l}=r;return{data:k.useMemo(()=>{if(!a)return null;const n=i?.stats?.[0]||{id:a.id,recipient_count:null,opened_count:null,open_rate:null,member_delta:0,free_members:0,paid_members:0,visitors:0};return{id:a.id,uuid:a.uuid,title:a.title||"",slug:a.slug||"",feature_image:a.feature_image||null,published_at:a.published_at||"",url:a.url||"",excerpt:a.excerpt||"",email_only:a.email_only||!1,status:a.status,email:a.email,count:a.count,authors:a.authors||[],recipient_count:n.recipient_count,opened_count:n.opened_count,open_rate:n.open_rate,member_delta:n.member_delta,free_members:n.free_members,paid_members:n.paid_members,visitors:n.visitors,click_rate:null}},[a,i]),isLoading:o||!!a?.id&&l}},ee=({className:s,title:o,description:a,url:r,children:i})=>e.jsx("a",{className:W("block rounded-xl border bg-card p-6 transition-all hover:shadow-xs hover:bg-accent/50 group/card",s),href:r,rel:"noreferrer",target:"_blank",children:e.jsxs("div",{className:"flex items-center gap-6",children:[i,e.jsxs("div",{className:"flex flex-col gap-0.5 leading-tight",children:[e.jsx("span",{className:"text-base font-semibold",children:o}),e.jsx("span",{className:"text-sm font-normal text-gray-700",children:a})]})]})}),ks=()=>{const{appSettings:s}=z(),{statsConfig:o,isLoading:a,range:r,audience:i}=C(),{startDate:l,endDate:u,timezone:n}=xe(r),{isLoading:p,chartData:t,totals:c,currencySymbol:x}=Re(r),{data:b,isLoading:g}=Ke(),{data:_,isLoading:N}=Ie({searchParams:{date_from:T(l),date_to:T(u),limit:"5",timezone:n}}),E={site_uuid:o?.id||"",date_from:T(l),date_to:T(u),timezone:n,member_status:Fe(i)},{data:w,loading:L}=ke({endpoint:"api_kpis",statsConfig:o,params:E}),j=k.useMemo(()=>U(w||[],r,"visits","sum")?.map(h=>{const v=Number(h.visits),y=isNaN(v)?0:v;return{date:String(h.date),value:y,formattedValue:d(y),label:"Visitors"}}),[w,r]),I=k.useMemo(()=>{const h=[0,1];if(!j||j.length===0)return h;const v=j.map(m=>m.value).filter(m=>m>=0);return v.length===0?h:[0,Math.max(...v)||h[1]]},[j]),re=k.useMemo(()=>{if(!t||t.length===0)return[];let h=[];return h=U(t,r,"value","exact"),h.map(m=>({date:m.date,value:m.free+m.paid,formattedValue:d(m.free+m.paid),label:"Members"}))},[t,r]),ie=k.useMemo(()=>{if(!s?.paidMembersEnabled||!t||t.length===0)return[];let h=[];return h=U(t,r,"mrr","exact"),h.map(m=>({date:m.date,value:H(m.mrr),formattedValue:`${x}${d(H(m.mrr))}`,label:"MRR"}))},[t,r,x,s]),ne=k.useMemo(()=>{if(!w?.length)return{visits:"0"};const h=w.reduce((v,y)=>{const m=Number(y.visits);return v+(isNaN(m)?0:m)},0);return{visits:d(h)}},[w]),oe=a;return e.jsxs(ge,{children:[e.jsx(fe,{children:e.jsx(_e,{children:e.jsx(be,{excludeRanges:["today"]})})}),e.jsxs(je,{isLoading:oe,loadingComponent:e.jsx(e.Fragment,{}),children:[e.jsx(Oe,{currencySymbol:x,growthTotals:c,isLoading:L||p,kpiValues:ne,membersChartData:re,mrrChartData:ie,visitorsChartData:j,visitorsYRange:I}),e.jsx(Ge,{isLoading:g,latestPostStats:b}),e.jsx(Se,{isLoading:N,topPostsData:_}),e.jsxs("div",{className:"grid grid-cols-1 gap-6 lg:grid-cols-2",children:[e.jsx(he,{className:"-mb-4 mt-4 lg:col-span-2",children:"Grow your audience"}),e.jsx(ee,{description:"Find out how to review the performance of your content and get the most out of post analytics in Ghost.",title:"Understanding analytics in Ghost",url:"https://ghost.org/help/native-analytics",children:e.jsx("div",{className:"flex h-18 w-[100px] min-w-[100px] items-center justify-center rounded-md bg-gradient-to-tr from-[#14B8FF]/20 to-[#00BBA7]/20 p-4 opacity-80 transition-all group-hover/card:opacity-100",children:e.jsx(De,{className:"text-[#00BBA7]",size:20,strokeWidth:1.5})})}),e.jsx(ee,{description:"Use these content distribution tactics to get more people to discover your work and increase engagement.",title:"How to get your content seen online",url:"https://ghost.org/resources/content-distribution/",children:e.jsx("div",{className:"flex h-18 w-[100px] min-w-[100px] items-center justify-center rounded-md bg-gradient-to-tl from-[#FDC700]/20 to-[#FF2056]/20 p-4 opacity-80 transition-all group-hover/card:opacity-100",children:e.jsx(M,{className:"text-[#FE9A00]",size:20,strokeWidth:1.5})})})]})]})]})};export{ks as default};
1
+ import{aM as Y,r as k,b3 as C,b4 as z,j as e,S as f,bU as se,B as A,aQ as M,aj as d,y as W,ai as Q,ci as te,aN as le,cf as H,e as ce,ch as q,cD as de,bP as me,cE as J,bS as ue,cF as pe,af as xe,ag as T,aT as U,_ as he}from"./index-CJU9a2PB.js";import{g as S,S as ge,a as fe,D as be,b as je}from"./stats-view-C6MTCwRW.js";import{C as $,a as D,b as F,h as R,c as V,E as ve,K as Ne,d as we,e as ye,u as ke,j as _e}from"./pagemenu-aHubMPwB.js";import{E as P}from"./empty-indicator-BXWniwsl.js";import{P as Ce}from"./post-share-modal-Su923uIc.js";import{g as Ae,c as Le}from"./post-helpers-gInwAwEv.js";import{S as Te,U as ae}from"./wallet-cards-Do7nPf3f.js";import{h as Me,i as K,d as ze,j as We,L as $e,k as X,l as Z,C as De}from"./lucide-react-B7UnD_Dp.js";import{G}from"./gh-chart-DwTCK8z_.js";import{g as Fe}from"./audience-select-DYoxiiwy.js";import{u as Re}from"./use-growth-stats-CiuWWM6O.js";import{u as Ve}from"./posts-BwP7BNcB.js";import{i as Ee,j as Ie}from"./stats-B1mhlQSp.js";import"./select-B4QhMW5f.js";import"./message-square-text-CS3iRuPc.js";import"./sprout-C2R5CbXV.js";import"./a-large-small-BPPu_Iy7.js";import"./at-sign-CYnGzOFc.js";import"./copy-DWiB-781.js";import"./hash-p9dv0yuc.js";import"./inbox-CRoP9sy5.js";import"./minus-emzwh6hq.js";import"./tags-DXDZbfxp.js";import"./square-DT1uWkxs.js";import"./user-round-check-D3ihrrKL.js";import"./repeat-ms5ocvE0.js";import"./reply-BvO85IDn.js";import"./trash-CZ3EXwTL.js";import"./chart-CqJxisVP.js";import"./_baseAssignValue-hsL6ItjC.js";import"./currency-fEUUCkj0.js";const Ue=s=>s.email_only?"Sent":s.email?"Published and sent":"Published",Ge=({latestPostStats:s,isLoading:o})=>{const a=Y(),[r,i]=k.useState(!1),{site:l,settings:u}=C(),{appSettings:n}=z(),{emailTrackClicks:p,emailTrackOpens:t}=n?.analytics||{},c=l.title||String(u.find(g=>g.key==="title")?.value||"Ghost Site"),x=s?Ae(s,{membersTrackSources:n?.analytics.membersTrackSources}):null,b="group mr-2 flex flex-col gap-1.5 hover:cursor-pointer";return e.jsxs($,{className:"group/card bg-gradient-to-tr from-muted/40 to-muted/0 to-50%","data-testid":"latest-post",children:[e.jsxs(D,{children:[e.jsx(F,{className:"flex items-baseline justify-between font-medium leading-snug text-muted-foreground",children:"Latest post performance"}),e.jsx(R,{className:"hidden",children:"How your last post did"})]}),e.jsxs(V,{className:"flex flex-col gap-6 px-0 lg:flex-row xl:grid xl:grid-cols-3",children:[o&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex w-full items-center gap-6 px-6 xl:col-span-2",children:[e.jsx("div",{className:"w-full max-w-[232px] grow",children:e.jsx(f,{className:"aspect-[16/10] rounded-md"})}),e.jsxs("div",{className:"w-full grow",children:[e.jsx(f,{className:"w-full max-w-[420px]"}),e.jsx(f,{className:"w-1/2"})]})]}),e.jsx("div",{className:"flex flex-col items-stretch gap-2 px-6 text-sm",children:e.jsxs("div",{className:"grid grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsx(f,{className:"w-3/4"}),e.jsx(f,{className:"h-10 w-1/3"})]}),e.jsxs("div",{children:[e.jsx(f,{className:"w-3/4"}),e.jsx(f,{className:"h-10 w-1/3"})]}),e.jsxs("div",{children:[e.jsx(f,{className:"w-3/4"}),e.jsx(f,{className:"h-10 w-1/3"})]}),e.jsxs("div",{children:[e.jsx(f,{className:"w-3/4"}),e.jsx(f,{className:"h-10 w-1/3"})]})]})})]}),!o&&s&&x?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-col gap-6 px-6 transition-all md:flex-row md:items-start xl:col-span-2",children:[s.feature_image&&e.jsx("div",{className:"aspect-[16/10] w-full min-w-[100px] rounded-sm bg-cover bg-center sm:max-w-[170px] lg:max-w-[170px] xl:max-w-[232px]",style:{backgroundImage:`url(${s.feature_image})`}}),e.jsxs("div",{className:"flex grow flex-col items-start justify-center self-stretch",children:[e.jsx("div",{className:"text-lg font-semibold leading-tighter tracking-tight hover:cursor-pointer hover:opacity-75",onClick:()=>{!o&&s&&a(`/posts/analytics/${s.id}`,{crossApp:!0})},children:s.title}),e.jsxs("div",{className:"mt-0.5 text-sm text-muted-foreground",children:[s.authors&&s.authors.length>0&&e.jsxs("div",{children:["By ",s.authors.map(g=>g.name).join(", ")," – ",se(s.published_at)]}),e.jsx("div",{className:"mt-0.5",children:Ue(s)})]}),e.jsxs("div",{className:"mt-6 flex items-center gap-2",children:[!s.email_only&&e.jsx(Ce,{author:s.authors?.map(g=>g.name).join(", ")||"",description:"",faviconURL:l.icon||"",featureImageURL:s.feature_image||"",open:r,postExcerpt:s.excerpt||"",postTitle:s.title,postURL:s.url||"",siteTitle:c,onClose:()=>i(!1),onOpenChange:i,children:e.jsxs(A,{onClick:()=>i(!0),children:[e.jsx(Te,{})," Share post"]})}),e.jsxs(A,{className:s.email_only?"w-full":"",variant:"outline",onClick:()=>{a(`/posts/analytics/${s.id}`,{crossApp:!0})},children:[e.jsx(Me,{}),e.jsx("span",{className:"hidden md:!visible md:!block",children:s.email_only?"Post analytics":"Analytics"})]})]})]})]}),e.jsx("div",{className:"-ml-4 flex w-full flex-col items-stretch gap-2 pr-6 text-sm xl:h-full xl:max-w-none",children:e.jsxs("div",{className:"grid grid-cols-2 gap-6 pl-10 lg:border-l xl:h-full",children:[x.showWebMetrics&&n?.analytics.webAnalytics&&e.jsxs("div",{className:b,"data-testid":"latest-post-visitors",onClick:()=>{a(`/posts/analytics/${s.id}/web`,{crossApp:!0})},children:[e.jsxs("div",{className:"flex items-center gap-1.5 font-medium text-muted-foreground transition-all group-hover:text-foreground",children:[e.jsx(M,{size:16,strokeWidth:1.25}),e.jsx("span",{className:"hidden md:!visible md:!block",children:"Visitors"})]}),e.jsx("span",{className:"text-[2.2rem] font-semibold leading-none tracking-tighter",children:d(s.visitors)})]}),x.showMemberGrowth&&e.jsxs("div",{className:W(b,x.showEmailMetrics&&(!x.showWebMetrics||!n?.analytics.webAnalytics)&&"row-[2/3] col-[1/2]"),"data-testid":"latest-post-members",onClick:()=>{a(`/posts/analytics/${s.id}/growth`,{crossApp:!0})},children:[e.jsxs("div",{className:"flex items-center gap-1.5 font-medium text-muted-foreground transition-all group-hover:text-foreground",children:[e.jsx(ae,{size:16,strokeWidth:1.25}),e.jsx("span",{className:"hidden md:!visible md:!block",children:"Members"})]}),e.jsx("span",{className:"text-[2.2rem] font-semibold leading-none tracking-tighter",children:s.member_delta?e.jsxs(e.Fragment,{children:["+",d(s.member_delta)]}):0})]}),x.showEmailMetrics&&s.email&&e.jsxs(e.Fragment,{children:[t&&e.jsxs("div",{className:b,onClick:()=>{a(`/posts/analytics/${s.id}/newsletter`,{crossApp:!0})},children:[e.jsxs("div",{className:"flex items-center gap-1.5 font-medium text-muted-foreground transition-all group-hover:text-foreground",children:[e.jsx(K,{size:16,strokeWidth:1.25}),e.jsx("span",{className:"hidden whitespace-nowrap md:!visible md:!block",children:"Opens"})]}),e.jsx("span",{className:"text-[2.2rem] font-semibold leading-none tracking-tighter",children:s.email.email_count?Q((s.email.opened_count||0)/s.email.email_count):"0%"})]}),p&&e.jsxs("div",{className:b,onClick:()=>{a(`/posts/analytics/${s.id}/newsletter`,{crossApp:!0})},children:[e.jsxs("div",{className:"flex items-center gap-1.5 font-medium text-muted-foreground transition-all group-hover:text-foreground",children:[e.jsx(ze,{size:16,strokeWidth:1.25}),e.jsx("span",{className:"hidden whitespace-nowrap md:!visible md:!block",children:"Clicks"})]}),e.jsx("span",{className:"text-[2.2rem] font-semibold leading-none tracking-tighter",children:s.email.email_count&&s.count?.clicks?Q((s.count.clicks||0)/s.email.email_count):"0%"})]})]})]})})]}):!o&&e.jsx(P,{actions:e.jsx(A,{variant:"secondary",onClick:()=>{a("/editor/post",{crossApp:!0})},children:"New post"}),className:"w-full pb-10 xl:col-span-3",description:"Once it's live, you can track performance here",title:"Publish your first post",children:e.jsx(te,{strokeWidth:1.5})})]})]})},Be=()=>{const{data:s}=C();return{isLimited:a=>{const r=s?.config;return r?.hostSettings?.limits&&a==="limitAnalytics"?r.hostSettings.limits.limitAnalytics?.disabled===!0:!1}}},B=({title:s,iconName:o,description:a,color:r,diffDirection:i,diffValue:l,formattedValue:u,trendingFromValue:n,children:p,onClick:t})=>{const{range:c}=C(),x=o&&$e[o],b=ce.useMemo(()=>{if(!i||i==="empty"||c===q.allTime.value||!l)return"";const g=i==="up"?"up":i==="down"?"down":"at",N=S(c).replace("in the ","").replace(/^\(|\)$/g,"");return i==="same"?e.jsxs("span",{children:["You're trending at the same level as ",e.jsx("span",{className:"font-semibold",children:u})," compared to the ",e.jsx("span",{className:"font-semibold",children:N})]}):e.jsxs("span",{children:["You're trending ",e.jsxs("span",{className:"font-semibold",children:[g," ",l]})," from ",e.jsx("span",{className:"font-semibold",children:n})," compared to the ",N]})},[i,l,n,u,c]);return e.jsxs($,{className:"group","data-testid":s,children:[e.jsxs(D,{className:"hidden",children:[e.jsx(F,{children:s}),e.jsx(R,{children:a})]}),e.jsxs(Ne,{className:"relative flex grow flex-row items-start justify-between gap-5 border-none pb-2 xl:pb-4",children:[e.jsxs("div",{className:"flex grow flex-col gap-1.5 border-none pb-0",children:[e.jsxs(we,{className:t&&"transition-all group-hover:text-foreground",children:[r&&e.jsx("span",{className:"inline-block size-2 rounded-full opacity-50",style:{backgroundColor:r}}),x&&e.jsx(x,{size:16,strokeWidth:1.5}),s]}),e.jsx(ye,{diffDirection:c===q.allTime.value?"hidden":i,diffTooltip:b,diffValue:l,value:u})]}),t&&e.jsx(A,{className:"absolute right-6 translate-x-10 opacity-0 transition-all duration-200 group-hover:translate-x-0 group-hover:opacity-100",size:"sm",variant:"outline",onClick:t,children:"View more"})]}),e.jsx(V,{children:p})]})},Oe=({kpiValues:s,visitorsChartData:o,visitorsYRange:a,growthTotals:r,membersChartData:i,mrrChartData:l,currencySymbol:u,isLoading:n})=>{const p=Y(),{range:t}=C(),{appSettings:c}=z(),b=Be().isLimited("limitAnalytics"),g="-mb-3 h-[10vw] max-h-[200px] min-h-[100px] hover:!cursor-pointer";if(n)return e.jsx(ve,{className:"flex h-[calc(10vw+116px)] max-h-[416px] min-h-20 items-center justify-center hover:!cursor-pointer",children:e.jsx(le,{})});const _=c?.analytics.webAnalytics,N=b&&!_,E=!0,w=c?.paidMembersEnabled,L=[_,N,E,w].filter(Boolean).length;let j="lg:grid-cols-3";L===2?j="lg:grid-cols-2":L===1&&(j="lg:grid-cols-1");const I=`flex flex-col lg:grid ${j} gap-6`;return e.jsxs("div",{className:I,children:[_&&!N&&e.jsx(B,{description:"Number of individual people who visited your website",diffDirection:"empty",formattedValue:s.visits,iconName:"Globe",linkto:"/analytics/web/",title:"Unique visitors",onClick:()=>{p("/analytics/web/")},children:e.jsx(G,{className:g,color:"hsl(var(--chart-blue))",data:o,id:"visitors",range:t,showHorizontalLines:!0,showYAxisValues:!1,syncId:"overview-charts",yAxisRange:a})}),N&&e.jsxs($,{children:[e.jsxs(D,{className:"hidden",children:[e.jsx(F,{children:"Unlock web analytics"}),e.jsx(R,{children:"Get the full picture of what's working with detailed, cookie-free traffic analytics."})]}),e.jsx(V,{className:"flex h-full items-center justify-center p-6",children:e.jsx(P,{actions:e.jsx(A,{variant:"outline",onClick:()=>p("/pro",{crossApp:!0}),children:"Upgrade now"}),className:"py-10",description:"Get the full picture of what's working with detailed, cookie-free traffic analytics.",title:"Unlock web analytics",children:e.jsx(We,{})})})]}),e.jsx(B,{description:"How number of members of your publication changed over time",diffDirection:r.directions.total,diffValue:r.percentChanges.total,formattedValue:d(r.totalMembers),iconName:"User",linkto:"/analytics/growth/",title:"Members",trendingFromValue:`${d(i[0].value)}`,onClick:()=>{p("/analytics/growth/?tab=total-members")},children:e.jsx(G,{className:g,color:"hsl(var(--chart-darkblue))",data:i,id:"members",range:t,showHorizontalLines:!0,showYAxisValues:!1,syncId:"overview-charts"})}),w&&e.jsx(B,{description:"Monthly recurring revenue changes over time",diffDirection:r.directions.mrr,diffValue:r.percentChanges.mrr,formattedValue:`${u}${d(H(r.mrr))}`,iconName:"Coins",linkto:"/analytics/growth/",title:"MRR",trendingFromValue:`${u}${d(l[0].value)}`,onClick:()=>{p("/analytics/growth/?tab=mrr")},children:e.jsx(G,{className:g,color:"hsl(var(--chart-teal))",data:l,id:"mrr",range:t,showHorizontalLines:!0,showYAxisValues:!1,syncId:"overview-charts"})})]})},He=({className:s})=>e.jsx("div",{className:W("rounded-sm bg-muted dark:bg-[#36373a] flex flex-col items-center justify-center gap-1 p-6",s),children:e.jsx(de,{className:"text-muted-foreground/50",size:18,strokeWidth:1.5})}),O=({className:s,metrics:o,title:a})=>e.jsx(e.Fragment,{children:e.jsxs("div",{className:W("pointer-events-none absolute bottom-[calc(100%+2px)] left-1/2 z-50 min-w-[160px] -translate-x-1/2 rounded-md bg-background p-3 text-sm opacity-0 shadow-md transition-all group-hover/tooltip:bottom-[calc(100%+12px)] group-hover/tooltip:opacity-100",s),children:[e.jsx("div",{className:"mb-1.5 whitespace-nowrap border-b pb-1.5 pr-10 font-medium text-muted-foreground",children:a}),e.jsx("div",{className:"flex flex-col gap-1.5",children:o?.map(r=>e.jsxs("div",{className:"flex items-center justify-between gap-5",children:[e.jsxs("div",{className:"flex items-center gap-1.5 whitespace-nowrap",children:[r.icon,r.label]}),e.jsx("span",{className:"font-mono",children:r.metric})]},r.label))})]})}),Se=({topPostsData:s,isLoading:o})=>{const a=Y(),{range:r}=C(),{appSettings:i}=z(),l=i?.analytics.webAnalytics,u=i?.analytics.emailTrackClicks,n=i?.analytics.emailTrackOpens,p="flex items-center justify-end gap-1 rounded-md px-2 py-1 font-mono text-gray-800 hover:bg-muted-foreground/10 group-hover:text-foreground";return e.jsxs($,{className:"group/card w-full lg:col-span-2","data-testid":"top-posts-card",children:[e.jsxs(D,{children:[e.jsxs(F,{className:"flex items-baseline justify-between font-medium leading-snug text-muted-foreground",children:["Top posts ",S(r)]}),e.jsx(R,{className:"hidden",children:"Most viewed posts in this period"})]}),e.jsx(V,{children:o?e.jsx(me,{className:"mt-6"}):e.jsxs(e.Fragment,{children:[s?.stats?.map(t=>e.jsxs("div",{className:'group relative flex w-full items-start justify-between gap-5 border-t border-border/50 py-4 before:absolute before:-inset-x-4 before:inset-y-0 before:z-0 before:hidden before:rounded-md before:bg-accent before:opacity-80 before:content-[""] first:!border-border hover:cursor-pointer hover:border-transparent hover:before:block md:items-center dark:before:bg-accent/50 [&+div]:hover:border-transparent',children:[e.jsxs("div",{className:"z-10 flex min-w-[160px] grow items-start gap-4 md:items-center lg:min-w-[320px]",onClick:()=>{a(`/posts/analytics/${t.post_id}`,{crossApp:!0})},children:[t.feature_image?e.jsx("div",{className:"hidden aspect-[16/10] w-[80px] shrink-0 rounded-sm bg-cover bg-center sm:!visible sm:!block lg:w-[100px]",style:{backgroundImage:`url(${t.feature_image})`}}):e.jsx(He,{className:"hidden aspect-[16/10] w-[80px] shrink-0 group-hover:bg-muted-foreground/10 sm:!visible sm:!flex lg:w-[100px]"}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"line-clamp-2 text-lg font-semibold leading-[1.35em]",children:t.title}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["By ",t.authors," – ",se(t.published_at)]}),e.jsx("span",{className:"text-sm text-muted-foreground",children:Le(t)})]})]}),e.jsxs("div",{className:"z-10 flex flex-col items-end justify-center gap-0.5 text-sm md:flex-row md:items-center md:justify-end md:gap-3",children:[l&&e.jsxs("div",{className:"group/tooltip relative flex w-[66px] lg:w-[92px]","data-testid":"statistics-visitors",onClick:c=>{c.stopPropagation(),a(`/posts/analytics/${t.post_id}/web`,{crossApp:!0})},children:[e.jsx(O,{metrics:[{icon:e.jsx(M,{className:"shrink-0 text-muted-foreground",size:16,strokeWidth:1.5}),label:"Unique visitors",metric:d(t.views)}],title:"Web traffic"}),e.jsxs("div",{className:p,children:[e.jsx(M,{className:"text-muted-foreground group-hover:text-foreground",size:16,strokeWidth:1.5}),J(t.views)]})]}),t.sent_count!==null&&e.jsxs("div",{className:"group/tooltip relative flex w-[66px] lg:w-[92px]",onClick:c=>{c.stopPropagation(),a(`/posts/analytics/${t.post_id}/newsletter`,{crossApp:!0})},children:[e.jsx(O,{className:`${i?.analytics.membersTrackSources?"":"left-auto right-0 translate-x-0"}`,metrics:[{icon:e.jsx(X,{className:"shrink-0 text-muted-foreground",size:16,strokeWidth:1.5}),label:"Sent",metric:d(t.sent_count||0)},...n?[{icon:e.jsx(K,{className:"shrink-0 text-muted-foreground",size:16,strokeWidth:1.5}),label:"Opens",metric:d(t.opened_count||0)}]:[],...u?[{icon:e.jsx(Z,{className:"shrink-0 text-muted-foreground",size:16,strokeWidth:1.5}),label:"Clicks",metric:d(t.clicked_count||0)}]:[]],title:"Newsletter performance"}),e.jsx("div",{className:p,children:n?e.jsxs(e.Fragment,{children:[e.jsx(K,{className:"text-muted-foreground group-hover:text-foreground",size:16,strokeWidth:1.5}),t.open_rate?`${Math.round(t.open_rate)}%`:"0%"]}):u?e.jsxs(e.Fragment,{children:[e.jsx(Z,{className:"text-muted-foreground group-hover:text-foreground",size:16,strokeWidth:1.5}),t.click_rate?`${Math.round(t.click_rate)}%`:"0%"]}):e.jsxs(e.Fragment,{children:[e.jsx(X,{className:"text-muted-foreground group-hover:text-foreground",size:16,strokeWidth:1.5}),J(t.sent_count||0)]})})]}),i?.analytics.membersTrackSources&&e.jsxs("div",{className:"group/tooltip relative flex w-[66px] lg:w-[92px]","data-testid":"statistics-members",onClick:c=>{c.stopPropagation(),a(`/posts/analytics/${t.post_id}/growth`,{crossApp:!0})},children:[e.jsx(O,{className:"left-auto right-0 translate-x-0",metrics:[{icon:e.jsx(ue,{className:"shrink-0 text-muted-foreground",size:16,strokeWidth:1.5}),label:"Free",metric:t.free_members>0?`+${d(t.free_members)}`:"0"},...i?.paidMembersEnabled?[{icon:e.jsx(pe,{className:"shrink-0 text-muted-foreground",size:16,strokeWidth:1.5}),label:"Paid",metric:t.paid_members>0?`+${d(t.paid_members)}`:"0"}]:[]],title:"New members"}),e.jsxs("div",{className:p,children:[e.jsx(ae,{className:"text-muted-foreground group-hover:text-foreground",size:16,strokeWidth:1.5}),t.members>0?`+${d(t.members)}`:"0"]})]})]})]},t.post_id)),(!s?.stats||s.stats.length===0)&&e.jsx(P,{className:"w-full pb-10",title:`No posts ${S(r)}`,children:e.jsx(te,{strokeWidth:1.5})})]})})]})},Ke=()=>{const{data:{posts:[s]}={posts:[]},isLoading:o}=Ve({searchParams:{filter:"status:[published,sent]",order:"published_at DESC",limit:"1",include:"authors,email,count.clicks"}}),a=s,r=Ee(a?.id||"",{enabled:!!a?.id}),{data:i,isLoading:l}=r;return{data:k.useMemo(()=>{if(!a)return null;const n=i?.stats?.[0]||{id:a.id,recipient_count:null,opened_count:null,open_rate:null,member_delta:0,free_members:0,paid_members:0,visitors:0};return{id:a.id,uuid:a.uuid,title:a.title||"",slug:a.slug||"",feature_image:a.feature_image||null,published_at:a.published_at||"",url:a.url||"",excerpt:a.excerpt||"",email_only:a.email_only||!1,status:a.status,email:a.email,count:a.count,authors:a.authors||[],recipient_count:n.recipient_count,opened_count:n.opened_count,open_rate:n.open_rate,member_delta:n.member_delta,free_members:n.free_members,paid_members:n.paid_members,visitors:n.visitors,click_rate:null}},[a,i]),isLoading:o||!!a?.id&&l}},ee=({className:s,title:o,description:a,url:r,children:i})=>e.jsx("a",{className:W("block rounded-xl border bg-card p-6 transition-all hover:shadow-xs hover:bg-accent/50 group/card",s),href:r,rel:"noreferrer",target:"_blank",children:e.jsxs("div",{className:"flex items-center gap-6",children:[i,e.jsxs("div",{className:"flex flex-col gap-0.5 leading-tight",children:[e.jsx("span",{className:"text-base font-semibold",children:o}),e.jsx("span",{className:"text-sm font-normal text-gray-700",children:a})]})]})}),ks=()=>{const{appSettings:s}=z(),{statsConfig:o,isLoading:a,range:r,audience:i}=C(),{startDate:l,endDate:u,timezone:n}=xe(r),{isLoading:p,chartData:t,totals:c,currencySymbol:x}=Re(r),{data:b,isLoading:g}=Ke(),{data:_,isLoading:N}=Ie({searchParams:{date_from:T(l),date_to:T(u),limit:"5",timezone:n}}),E={site_uuid:o?.id||"",date_from:T(l),date_to:T(u),timezone:n,member_status:Fe(i)},{data:w,loading:L}=ke({endpoint:"api_kpis",statsConfig:o,params:E}),j=k.useMemo(()=>U(w||[],r,"visits","sum")?.map(h=>{const v=Number(h.visits),y=isNaN(v)?0:v;return{date:String(h.date),value:y,formattedValue:d(y),label:"Visitors"}}),[w,r]),I=k.useMemo(()=>{const h=[0,1];if(!j||j.length===0)return h;const v=j.map(m=>m.value).filter(m=>m>=0);return v.length===0?h:[0,Math.max(...v)||h[1]]},[j]),re=k.useMemo(()=>{if(!t||t.length===0)return[];let h=[];return h=U(t,r,"value","exact"),h.map(m=>({date:m.date,value:m.free+m.paid,formattedValue:d(m.free+m.paid),label:"Members"}))},[t,r]),ie=k.useMemo(()=>{if(!s?.paidMembersEnabled||!t||t.length===0)return[];let h=[];return h=U(t,r,"mrr","exact"),h.map(m=>({date:m.date,value:H(m.mrr),formattedValue:`${x}${d(H(m.mrr))}`,label:"MRR"}))},[t,r,x,s]),ne=k.useMemo(()=>{if(!w?.length)return{visits:"0"};const h=w.reduce((v,y)=>{const m=Number(y.visits);return v+(isNaN(m)?0:m)},0);return{visits:d(h)}},[w]),oe=a;return e.jsxs(ge,{children:[e.jsx(fe,{children:e.jsx(_e,{children:e.jsx(be,{excludeRanges:["today"]})})}),e.jsxs(je,{isLoading:oe,loadingComponent:e.jsx(e.Fragment,{}),children:[e.jsx(Oe,{currencySymbol:x,growthTotals:c,isLoading:L||p,kpiValues:ne,membersChartData:re,mrrChartData:ie,visitorsChartData:j,visitorsYRange:I}),e.jsx(Ge,{isLoading:g,latestPostStats:b}),e.jsx(Se,{isLoading:N,topPostsData:_}),e.jsxs("div",{className:"grid grid-cols-1 gap-6 lg:grid-cols-2",children:[e.jsx(he,{className:"-mb-4 mt-4 lg:col-span-2",children:"Grow your audience"}),e.jsx(ee,{description:"Find out how to review the performance of your content and get the most out of post analytics in Ghost.",title:"Understanding analytics in Ghost",url:"https://ghost.org/help/native-analytics",children:e.jsx("div",{className:"flex h-18 w-[100px] min-w-[100px] items-center justify-center rounded-md bg-gradient-to-tr from-[#14B8FF]/20 to-[#00BBA7]/20 p-4 opacity-80 transition-all group-hover/card:opacity-100",children:e.jsx(De,{className:"text-[#00BBA7]",size:20,strokeWidth:1.5})})}),e.jsx(ee,{description:"Use these content distribution tactics to get more people to discover your work and increase engagement.",title:"How to get your content seen online",url:"https://ghost.org/resources/content-distribution/",children:e.jsx("div",{className:"flex h-18 w-[100px] min-w-[100px] items-center justify-center rounded-md bg-gradient-to-tl from-[#FDC700]/20 to-[#FF2056]/20 p-4 opacity-80 transition-all group-hover/card:opacity-100",children:e.jsx(M,{className:"text-[#FE9A00]",size:20,strokeWidth:1.5})})})]})]})]})};export{ks as default};
@@ -1,4 +1,4 @@
1
- import{e as j,r as F,aB as ML,aC as cte,aD as NL}from"./index-BYawr8p9.js";var Yd={},dte=Object.defineProperty,ute=(t,e,n)=>e in t?dte(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,we=(t,e,n)=>(ute(t,typeof e!="symbol"?e+"":e,n),n);try{let t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="184d76b5-7885-4654-9dd4-f59801316435",t._sentryDebugIdIdentifier="sentry-dbid-184d76b5-7885-4654-9dd4-f59801316435")}catch{}var tn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function fs(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function mk(t){if(t.__esModule)return t;var e=t.default;if(typeof e=="function"){var n=function i(){return this instanceof i?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};n.prototype=e.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(t).forEach(function(i){var r=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(n,i,r.get?r:{enumerable:!0,get:function(){return t[i]}})}),n}var DL={exports:{}},gk={};/**
1
+ import{e as j,r as F,aB as ML,aC as cte,aD as NL}from"./index-CJU9a2PB.js";var Yd={},dte=Object.defineProperty,ute=(t,e,n)=>e in t?dte(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,we=(t,e,n)=>(ute(t,typeof e!="symbol"?e+"":e,n),n);try{let t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="184d76b5-7885-4654-9dd4-f59801316435",t._sentryDebugIdIdentifier="sentry-dbid-184d76b5-7885-4654-9dd4-f59801316435")}catch{}var tn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function fs(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function mk(t){if(t.__esModule)return t;var e=t.default;if(typeof e=="function"){var n=function i(){return this instanceof i?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};n.prototype=e.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(t).forEach(function(i){var r=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(n,i,r.get?r:{enumerable:!0,get:function(){return t[i]}})}),n}var DL={exports:{}},gk={};/**
2
2
  * @license React
3
3
  * react-jsx-runtime.production.min.js
4
4
  *
@@ -1 +1 @@
1
- import{j as a,y as o,B as s}from"./index-BYawr8p9.js";const i=({children:e,className:r,...t})=>a.jsx("div",{className:o("flex flex-col",r),...t,children:e}),l=({children:e,className:r,...t})=>a.jsx("div",{className:o("[&_svg]:size-4 flex items-center gap-1.5 text-base h-[22px] font-medium transition-all",r,t.onClick&&"hover:cursor-pointer hover:text-black dark:hover:text-white"),...t,children:e}),d=({children:e,className:r,...t})=>a.jsx("div",{className:o("text-[26px] mt-0.5 tracking-tighter leading-none text-foreground font-semibold",r),...t,children:e}),c=({children:e,className:r,...t})=>a.jsx(s,{className:o("absolute right-4 top-4 z-50 hidden translate-x-10 text-black dark:text-white/80 dark:hover:text-white opacity-0 transition-all duration-200 group-hover:translate-x-0 group-hover:opacity-100 md:!visible md:!block",r),size:"sm",variant:"outline",...t,children:e}),x=({children:e,className:r,...t})=>a.jsx("div",{className:o("group relative isolate flex flex-col border-r border-border last:border-none items-start gap-2 px-6 py-5 transition-all text-muted-foreground",t.onClick?"hover:bg-accent/50 hover:text-foreground cursor-pointer":"cursor-auto",r),...t,children:e});export{x as K,l as a,i as b,d as c,c as d};
1
+ import{j as a,y as o,B as s}from"./index-CJU9a2PB.js";const i=({children:e,className:r,...t})=>a.jsx("div",{className:o("flex flex-col",r),...t,children:e}),l=({children:e,className:r,...t})=>a.jsx("div",{className:o("[&_svg]:size-4 flex items-center gap-1.5 text-base h-[22px] font-medium transition-all",r,t.onClick&&"hover:cursor-pointer hover:text-black dark:hover:text-white"),...t,children:e}),d=({children:e,className:r,...t})=>a.jsx("div",{className:o("text-[26px] mt-0.5 tracking-tighter leading-none text-foreground font-semibold",r),...t,children:e}),c=({children:e,className:r,...t})=>a.jsx(s,{className:o("absolute right-4 top-4 z-50 hidden translate-x-10 text-black dark:text-white/80 dark:hover:text-white opacity-0 transition-all duration-200 group-hover:translate-x-0 group-hover:opacity-100 md:!visible md:!block",r),size:"sm",variant:"outline",...t,children:e}),x=({children:e,className:r,...t})=>a.jsx("div",{className:o("group relative isolate flex flex-col border-r border-border last:border-none items-start gap-2 px-6 py-5 transition-all text-muted-foreground",t.onClick?"hover:bg-accent/50 hover:text-foreground cursor-pointer":"cursor-auto",r),...t,children:e});export{x as K,l as a,i as b,d as c,c as d};
@@ -1 +1 @@
1
- import{e as N,j as s,bJ as w,bK as T,B as D,bL as y,bM as C,bN as L,bO as K,aP as E,bP as $,aj as u,ai as g,bQ as P,bR as I,r as O,aT as G,aW as q,ap as W,aY as F,a_ as k}from"./index-BYawr8p9.js";import{S}from"./source-icon-C2iFWMlV.js";import{p as J,e as Q}from"./source-utils-B1S3ZHA2.js";import{C as H,a as U,b as Y,h as X,c as M,i as Z}from"./pagemenu-BMXHDXYy.js";import{D as ss,h as es,i as V,a as as,b as ts,c as rs,d as is,e as ls,f as ns,g as cs}from"./data-list-Bw1CQEZ9.js";import{S as os,u as ds}from"./post-analytics-context-geHk7rOj.js";import{A as hs}from"./lucide-react-DKlmxVQI.js";import{a as ms}from"./wallet-cards-KaTkgqvi.js";import{G as us}from"./gh-chart-BV97-O7c.js";import{T as xs,a as ps,K as _,d as x,e as vs}from"./tabs-C2sFfNcp.js";const js=i=>{const a=Object.values(os).find(l=>l.value===i);return a?["Last 7 days","Last 30 days","Last 3 months","Last 12 months"].includes(a.name)?`in the ${a.name.toLowerCase()}`:a.name==="All time"?"(all time)":a.name.toLowerCase():""},R="https://www.google.com/s2/favicons?domain=ghost.org&sz=64",p=({dataTableHeader:i,data:a,defaultSourceIconUrl:l=R,onSourceClick:o})=>s.jsxs(ss,{children:[i&&s.jsxs(es,{children:[s.jsx(V,{children:"Source"}),s.jsx(V,{children:"Visitors"})]}),s.jsx(as,{children:a?.map(e=>{const r=!!o,c=e.source?e.source.toLowerCase().replace(/[^a-z0-9]/g,"-"):"direct";return s.jsxs(ts,{className:`group/row ${r?"cursor-pointer":""}`,"data-testid":`source-row-${c}`,onClick:r?()=>o(e.source):void 0,children:[s.jsx(rs,{style:{width:`${e.percentage?Math.round(e.percentage*100):0}%`}}),s.jsx(is,{className:"group-hover/datalist:max-w-[calc(100%-140px)]",children:s.jsx("div",{className:"flex items-center space-x-4 overflow-hidden",children:s.jsx("div",{className:"truncate font-medium",children:e.linkUrl&&!o?s.jsxs("a",{className:"group/link flex items-center gap-2",href:e.linkUrl,rel:"noreferrer",target:"_blank",children:[s.jsx(S,{defaultSourceIconUrl:l,displayName:e.displayName,iconSrc:e.iconSrc}),s.jsx("span",{className:"group-hover/link:underline",children:e.displayName})]}):s.jsxs("span",{className:"flex items-center gap-2",children:[s.jsx(S,{defaultSourceIconUrl:l,displayName:e.displayName,iconSrc:e.iconSrc}),s.jsx("span",{children:e.displayName})]})})})}),s.jsxs(ls,{children:[s.jsx(ns,{children:u(e.visits)}),s.jsx(cs,{children:g(e.percentage||0)})]})]},e.source)})})]}),ks=({data:i,range:a=30,totalVisitors:l=0,siteUrl:o,siteIcon:e,defaultSourceIconUrl:r=R,tableOnly:c=!1,topSourcesLimit:n=10,onSourceClick:t})=>{const{isPostLoading:h}=ds(),m=N.useMemo(()=>J({data:i,mode:"visits",siteUrl:o,siteIcon:e,defaultSourceIconUrl:r}),[i,o,e,r]),d=N.useMemo(()=>Q({processedData:m,totalVisitors:l,mode:"visits"}),[m,l]),f=d.slice(0,n),v="Top sources",j=`How readers found this post ${a&&` ${js(a)}`}`;if(c){const z=d.slice(0,n),B=d.length>n;return s.jsxs("div",{children:[s.jsx(p,{data:z,dataTableHeader:!1,defaultSourceIconUrl:r,range:a,onSourceClick:t}),B&&s.jsx("div",{className:"mt-4",children:s.jsxs(w,{children:[s.jsx(T,{asChild:!0,children:s.jsxs(D,{className:"w-full",size:"sm",variant:"outline",children:["View all (",d.length,") ",s.jsx(hs,{size:14})]})}),s.jsxs(y,{className:"overflow-y-auto pt-0 sm:max-w-[600px]",children:[s.jsxs(C,{className:"sticky top-0 z-40 -mx-6 bg-background/60 p-6 backdrop-blur",children:[s.jsx(L,{children:v}),s.jsx(K,{children:j})]}),s.jsx("div",{className:"group/datalist",children:s.jsx(p,{data:d,dataTableHeader:!0,defaultSourceIconUrl:r,range:a,onSourceClick:t})})]})]})})]})}const A=h;return s.jsxs(H,{className:"group/datalist","data-testid":"top-sources-card",children:[s.jsxs("div",{className:"flex items-center justify-between p-6",children:[s.jsxs(U,{className:"p-0",children:[s.jsx(Y,{children:v}),s.jsx(X,{children:j})]}),s.jsx(E,{className:"mr-2",children:"Visitors"})]}),s.jsxs(M,{className:"overflow-hidden",children:[s.jsx("div",{className:"h-[1px] w-full bg-border"}),A?s.jsx($,{lines:5}):f.length>0?s.jsx(p,{data:f,dataTableHeader:!1,defaultSourceIconUrl:r,range:a,onSourceClick:t}):s.jsx("div",{className:"py-20 text-center text-sm text-gray-700",children:"No sources data available."})]}),d.length>10&&s.jsx(Z,{children:s.jsxs(w,{children:[s.jsx(T,{asChild:!0,children:s.jsxs(D,{variant:"outline",children:["View all ",s.jsx(ms,{})]})}),s.jsxs(y,{className:"overflow-y-auto pt-0 sm:max-w-[600px]",children:[s.jsxs(C,{className:"sticky top-0 z-40 -mx-6 bg-background/60 p-6 backdrop-blur",children:[s.jsx(L,{children:v}),s.jsx(K,{children:j})]}),s.jsx("div",{className:"group/datalist",children:s.jsx(p,{data:d,dataTableHeader:!0,defaultSourceIconUrl:r,range:a,onSourceClick:t})})]})]})})]})},bs=i=>{if(!i?.length)return{visits:"0",views:"0",bounceRate:"0%",duration:"0s"};const a=n=>{const t=Number(n);return isNaN(t)?0:t},l=i.reduce((n,t)=>n+a(t.visits),0),o=i.reduce((n,t)=>n+a(t.pageviews),0),e=n=>l===0?0:i.reduce((t,h)=>{const m=a(h[n]),d=a(h.visits);return t+m*d/l},0),r=e("bounce_rate"),c=e("avg_session_sec");return{visits:u(l),views:u(o),bounceRate:g(r),duration:P(c)}},b={visits:{dataKey:"visits",label:"Visitors",color:"hsl(var(--chart-blue))",formatter:u},views:{dataKey:"pageviews",label:"Pageviews",color:"hsl(var(--chart-teal))",formatter:u},"bounce-rate":{dataKey:"bounce_rate",label:"Bounce rate",color:"hsl(var(--chart-purple))",formatter:g},duration:{dataKey:"avg_session_sec",label:"Time on page",color:"hsl(var(--chart-orange))",formatter:P}},Ss=({data:i,range:a})=>{const[l]=I(),o=l.get("tab")||"visits",[e,r]=O.useState(o),c=b[e],n=G(i||[],a,c.dataKey,"sum")?.map(h=>{const m=Number(h[c.dataKey]);return{date:String(h.date),value:m,formattedValue:c.formatter(m),label:c.label}}),t=bs(i);return s.jsx(H,{children:s.jsx(M,{children:s.jsxs(xs,{defaultValue:e,variant:"kpis",children:[s.jsxs(ps,{className:"-mx-6 hidden grid-cols-2 md:!visible md:!grid",children:[s.jsx(_,{value:"visits",onClick:()=>{r("visits")},children:s.jsx(x,{color:b.visits.color,label:"Unique visitors",value:t.visits})}),s.jsx(_,{value:"views",onClick:()=>{r("views")},children:s.jsx(x,{color:b.views.color,label:"Total views",value:t.views})})]}),s.jsxs(q,{children:[s.jsx(W,{className:"md:hidden",asChild:!0,children:s.jsxs(vs,{children:[e==="visits"&&s.jsx(x,{color:"hsl(var(--chart-blue))",label:"Unique visitors",value:t.visits}),e==="views"&&s.jsx(x,{color:"hsl(var(--chart-teal))",label:"Total views",value:t.views})]})}),s.jsxs(F,{align:"end",className:"w-56",children:[s.jsx(k,{onClick:()=>r("visits"),children:"Unique visitors"}),s.jsx(k,{onClick:()=>r("views"),children:"Total views"})]})]}),s.jsx("div",{className:"my-4 [&_.recharts-cartesian-axis-tick-value]:fill-gray-500",children:s.jsx(us,{className:"-mb-3 aspect-auto h-[16vw] max-h-[320px] min-h-[180px] w-full",color:c.color,data:n,id:c.dataKey,range:a,showHours:!0,syncId:"overview-charts"})})]})})})};export{b as K,ks as S,Ss as a,js as b,bs as g};
1
+ import{e as N,j as s,bJ as w,bK as T,B as D,bL as y,bM as C,bN as L,bO as K,aP as E,bP as $,aj as u,ai as g,bQ as P,bR as I,r as O,aT as G,aW as q,ap as W,aY as F,a_ as k}from"./index-CJU9a2PB.js";import{S}from"./source-icon-Bzw-AU8p.js";import{p as J,e as Q}from"./source-utils-B1S3ZHA2.js";import{C as H,a as U,b as Y,h as X,c as M,i as Z}from"./pagemenu-aHubMPwB.js";import{D as ss,h as es,i as V,a as as,b as ts,c as rs,d as is,e as ls,f as ns,g as cs}from"./data-list-yngXNZDF.js";import{S as os,u as ds}from"./post-analytics-context-C7oW3aBz.js";import{A as hs}from"./lucide-react-B7UnD_Dp.js";import{a as ms}from"./wallet-cards-Do7nPf3f.js";import{G as us}from"./gh-chart-DwTCK8z_.js";import{T as xs,a as ps,K as _,d as x,e as vs}from"./tabs-BwQ-i6MY.js";const js=i=>{const a=Object.values(os).find(l=>l.value===i);return a?["Last 7 days","Last 30 days","Last 3 months","Last 12 months"].includes(a.name)?`in the ${a.name.toLowerCase()}`:a.name==="All time"?"(all time)":a.name.toLowerCase():""},R="https://www.google.com/s2/favicons?domain=ghost.org&sz=64",p=({dataTableHeader:i,data:a,defaultSourceIconUrl:l=R,onSourceClick:o})=>s.jsxs(ss,{children:[i&&s.jsxs(es,{children:[s.jsx(V,{children:"Source"}),s.jsx(V,{children:"Visitors"})]}),s.jsx(as,{children:a?.map(e=>{const r=!!o,c=e.source?e.source.toLowerCase().replace(/[^a-z0-9]/g,"-"):"direct";return s.jsxs(ts,{className:`group/row ${r?"cursor-pointer":""}`,"data-testid":`source-row-${c}`,onClick:r?()=>o(e.source):void 0,children:[s.jsx(rs,{style:{width:`${e.percentage?Math.round(e.percentage*100):0}%`}}),s.jsx(is,{className:"group-hover/datalist:max-w-[calc(100%-140px)]",children:s.jsx("div",{className:"flex items-center space-x-4 overflow-hidden",children:s.jsx("div",{className:"truncate font-medium",children:e.linkUrl&&!o?s.jsxs("a",{className:"group/link flex items-center gap-2",href:e.linkUrl,rel:"noreferrer",target:"_blank",children:[s.jsx(S,{defaultSourceIconUrl:l,displayName:e.displayName,iconSrc:e.iconSrc}),s.jsx("span",{className:"group-hover/link:underline",children:e.displayName})]}):s.jsxs("span",{className:"flex items-center gap-2",children:[s.jsx(S,{defaultSourceIconUrl:l,displayName:e.displayName,iconSrc:e.iconSrc}),s.jsx("span",{children:e.displayName})]})})})}),s.jsxs(ls,{children:[s.jsx(ns,{children:u(e.visits)}),s.jsx(cs,{children:g(e.percentage||0)})]})]},e.source)})})]}),ks=({data:i,range:a=30,totalVisitors:l=0,siteUrl:o,siteIcon:e,defaultSourceIconUrl:r=R,tableOnly:c=!1,topSourcesLimit:n=10,onSourceClick:t})=>{const{isPostLoading:h}=ds(),m=N.useMemo(()=>J({data:i,mode:"visits",siteUrl:o,siteIcon:e,defaultSourceIconUrl:r}),[i,o,e,r]),d=N.useMemo(()=>Q({processedData:m,totalVisitors:l,mode:"visits"}),[m,l]),f=d.slice(0,n),v="Top sources",j=`How readers found this post ${a&&` ${js(a)}`}`;if(c){const z=d.slice(0,n),B=d.length>n;return s.jsxs("div",{children:[s.jsx(p,{data:z,dataTableHeader:!1,defaultSourceIconUrl:r,range:a,onSourceClick:t}),B&&s.jsx("div",{className:"mt-4",children:s.jsxs(w,{children:[s.jsx(T,{asChild:!0,children:s.jsxs(D,{className:"w-full",size:"sm",variant:"outline",children:["View all (",d.length,") ",s.jsx(hs,{size:14})]})}),s.jsxs(y,{className:"overflow-y-auto pt-0 sm:max-w-[600px]",children:[s.jsxs(C,{className:"sticky top-0 z-40 -mx-6 bg-background/60 p-6 backdrop-blur",children:[s.jsx(L,{children:v}),s.jsx(K,{children:j})]}),s.jsx("div",{className:"group/datalist",children:s.jsx(p,{data:d,dataTableHeader:!0,defaultSourceIconUrl:r,range:a,onSourceClick:t})})]})]})})]})}const A=h;return s.jsxs(H,{className:"group/datalist","data-testid":"top-sources-card",children:[s.jsxs("div",{className:"flex items-center justify-between p-6",children:[s.jsxs(U,{className:"p-0",children:[s.jsx(Y,{children:v}),s.jsx(X,{children:j})]}),s.jsx(E,{className:"mr-2",children:"Visitors"})]}),s.jsxs(M,{className:"overflow-hidden",children:[s.jsx("div",{className:"h-[1px] w-full bg-border"}),A?s.jsx($,{lines:5}):f.length>0?s.jsx(p,{data:f,dataTableHeader:!1,defaultSourceIconUrl:r,range:a,onSourceClick:t}):s.jsx("div",{className:"py-20 text-center text-sm text-gray-700",children:"No sources data available."})]}),d.length>10&&s.jsx(Z,{children:s.jsxs(w,{children:[s.jsx(T,{asChild:!0,children:s.jsxs(D,{variant:"outline",children:["View all ",s.jsx(ms,{})]})}),s.jsxs(y,{className:"overflow-y-auto pt-0 sm:max-w-[600px]",children:[s.jsxs(C,{className:"sticky top-0 z-40 -mx-6 bg-background/60 p-6 backdrop-blur",children:[s.jsx(L,{children:v}),s.jsx(K,{children:j})]}),s.jsx("div",{className:"group/datalist",children:s.jsx(p,{data:d,dataTableHeader:!0,defaultSourceIconUrl:r,range:a,onSourceClick:t})})]})]})})]})},bs=i=>{if(!i?.length)return{visits:"0",views:"0",bounceRate:"0%",duration:"0s"};const a=n=>{const t=Number(n);return isNaN(t)?0:t},l=i.reduce((n,t)=>n+a(t.visits),0),o=i.reduce((n,t)=>n+a(t.pageviews),0),e=n=>l===0?0:i.reduce((t,h)=>{const m=a(h[n]),d=a(h.visits);return t+m*d/l},0),r=e("bounce_rate"),c=e("avg_session_sec");return{visits:u(l),views:u(o),bounceRate:g(r),duration:P(c)}},b={visits:{dataKey:"visits",label:"Visitors",color:"hsl(var(--chart-blue))",formatter:u},views:{dataKey:"pageviews",label:"Pageviews",color:"hsl(var(--chart-teal))",formatter:u},"bounce-rate":{dataKey:"bounce_rate",label:"Bounce rate",color:"hsl(var(--chart-purple))",formatter:g},duration:{dataKey:"avg_session_sec",label:"Time on page",color:"hsl(var(--chart-orange))",formatter:P}},Ss=({data:i,range:a})=>{const[l]=I(),o=l.get("tab")||"visits",[e,r]=O.useState(o),c=b[e],n=G(i||[],a,c.dataKey,"sum")?.map(h=>{const m=Number(h[c.dataKey]);return{date:String(h.date),value:m,formattedValue:c.formatter(m),label:c.label}}),t=bs(i);return s.jsx(H,{children:s.jsx(M,{children:s.jsxs(xs,{defaultValue:e,variant:"kpis",children:[s.jsxs(ps,{className:"-mx-6 hidden grid-cols-2 md:!visible md:!grid",children:[s.jsx(_,{value:"visits",onClick:()=>{r("visits")},children:s.jsx(x,{color:b.visits.color,label:"Unique visitors",value:t.visits})}),s.jsx(_,{value:"views",onClick:()=>{r("views")},children:s.jsx(x,{color:b.views.color,label:"Total views",value:t.views})})]}),s.jsxs(q,{children:[s.jsx(W,{className:"md:hidden",asChild:!0,children:s.jsxs(vs,{children:[e==="visits"&&s.jsx(x,{color:"hsl(var(--chart-blue))",label:"Unique visitors",value:t.visits}),e==="views"&&s.jsx(x,{color:"hsl(var(--chart-teal))",label:"Total views",value:t.views})]})}),s.jsxs(F,{align:"end",className:"w-56",children:[s.jsx(k,{onClick:()=>r("visits"),children:"Unique visitors"}),s.jsx(k,{onClick:()=>r("views"),children:"Total views"})]})]}),s.jsx("div",{className:"my-4 [&_.recharts-cartesian-axis-tick-value]:fill-gray-500",children:s.jsx(us,{className:"-mb-3 aspect-auto h-[16vw] max-h-[320px] min-h-[180px] w-full",color:c.color,data:n,id:c.dataKey,range:a,showHours:!0,syncId:"overview-charts"})})]})})})};export{b as K,ks as S,Ss as a,js as b,bs as g};
@@ -1,2 +1,2 @@
1
- import{aE as N,e as p,cT as Be,r as ge,j as f,y as et,ai as tt,ac as rt,ad as nt}from"./index-BYawr8p9.js";import{h as v,Q as ze,S as at,U as Me,V as it,e as H,T as We,W as R,L as k,X as Ve,k as Q,l as Fe,M as ot,Y as st,A as ct,y as ce,E as lt,H as Ge,m as pe,G as ut,Z as ft,_ as pt,$ as dt,a0 as yt,a1 as mt,J as ht,a2 as xe,a3 as bt,g as gt,a4 as vt,C as xt,a as Ot,b as Pt}from"./chart-DGA1MaFs.js";var jt=["points","className","baseLinePoints","connectNulls"];function I(){return I=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},I.apply(this,arguments)}function kt(e,t){if(e==null)return{};var n=At(e,t),r,a;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function At(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function Oe(e){return Tt(e)||wt(e)||St(e)||_t()}function _t(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
1
+ import{aE as N,e as p,cT as Be,r as ge,j as f,y as et,ai as tt,ac as rt,ad as nt}from"./index-CJU9a2PB.js";import{h as v,Q as ze,S as at,U as Me,V as it,e as H,T as We,W as R,L as k,X as Ve,k as Q,l as Fe,M as ot,Y as st,A as ct,y as ce,E as lt,H as Ge,m as pe,G as ut,Z as ft,_ as pt,$ as dt,a0 as yt,a1 as mt,J as ht,a2 as xe,a3 as bt,g as gt,a4 as vt,C as xt,a as Ot,b as Pt}from"./chart-CqJxisVP.js";var jt=["points","className","baseLinePoints","connectNulls"];function I(){return I=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},I.apply(this,arguments)}function kt(e,t){if(e==null)return{};var n=At(e,t),r,a;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function At(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function Oe(e){return Tt(e)||wt(e)||St(e)||_t()}function _t(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
2
2
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function St(e,t){if(e){if(typeof e=="string")return de(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return de(e,t)}}function wt(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function Tt(e){if(Array.isArray(e))return de(e)}function de(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Pe=function(t){return t&&t.x===+t.x&&t.y===+t.y},Et=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],n=[[]];return t.forEach(function(r){Pe(r)?n[n.length-1].push(r):n[n.length-1].length>0&&n.push([])}),Pe(t[0])&&n[n.length-1].push(t[0]),n[n.length-1].length<=0&&(n=n.slice(0,-1)),n},V=function(t,n){var r=Et(t);n&&(r=[r.reduce(function(i,o){return[].concat(Oe(i),Oe(o))},[])]);var a=r.map(function(i){return i.reduce(function(o,c,l){return"".concat(o).concat(l===0?"M":"L").concat(c.x,",").concat(c.y)},"")}).join("");return r.length===1?"".concat(a,"Z"):a},Rt=function(t,n,r){var a=V(t,r);return"".concat(a.slice(-1)==="Z"?a.slice(0,-1):a,"L").concat(V(n.reverse(),r).slice(1))},$t=function(t){var n=t.points,r=t.className,a=t.baseLinePoints,i=t.connectNulls,o=kt(t,jt);if(!n||!n.length)return null;var c=N("recharts-polygon",r);if(a&&a.length){var l=o.stroke&&o.stroke!=="none",u=Rt(n,a,i);return p.createElement("g",{className:c},p.createElement("path",I({},v(o,!0),{fill:u.slice(-1)==="Z"?o.fill:"none",stroke:"none",d:u})),l?p.createElement("path",I({},v(o,!0),{fill:"none",d:V(n,i)})):null,l?p.createElement("path",I({},v(o,!0),{fill:"none",d:V(a,i)})):null)}var s=V(n,i);return p.createElement("path",I({},v(o,!0),{fill:s.slice(-1)==="Z"?o.fill:"none",className:c,d:s}))},le,je;function Nt(){if(je)return le;je=1;var e=ze(),t=at(),n=Me();function r(a,i){return a&&a.length?e(a,n(i,2),t):void 0}return le=r,le}var Lt=Nt();const Ct=Be(Lt);var ue,ke;function Dt(){if(ke)return ue;ke=1;var e=ze(),t=Me(),n=it();function r(a,i){return a&&a.length?e(a,t(i,2),n):void 0}return ue=r,ue}var It=Dt();const Bt=Be(It);var zt=["cx","cy","angle","ticks","axisLine"],Mt=["ticks","tick","angle","tickFormatter","stroke"];function B(e){"@babel/helpers - typeof";return B=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},B(e)}function F(){return F=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},F.apply(this,arguments)}function Ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),n.push.apply(n,r)}return n}function w(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?Ae(Object(n),!0).forEach(function(r){te(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ae(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function _e(e,t){if(e==null)return{};var n=Wt(e,t),r,a;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Wt(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function Vt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Se(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,qe(r.key),r)}}function Ft(e,t,n){return t&&Se(e.prototype,t),n&&Se(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function Gt(e,t,n){return t=J(t),Kt(e,Ke()?Reflect.construct(t,n||[],J(e).constructor):t.apply(e,n))}function Kt(e,t){if(t&&(B(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return qt(e)}function qt(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Ke(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(Ke=function(){return!!e})()}function J(e){return J=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},J(e)}function Ut(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&ye(e,t)}function ye(e,t){return ye=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,a){return r.__proto__=a,r},ye(e,t)}function te(e,t,n){return t=qe(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function qe(e){var t=Zt(e,"string");return B(t)=="symbol"?t:t+""}function Zt(e,t){if(B(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(B(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}var K=(function(e){function t(){return Vt(this,t),Gt(this,t,arguments)}return Ut(t,e),Ft(t,[{key:"getTickValueCoord",value:function(r){var a=r.coordinate,i=this.props,o=i.angle,c=i.cx,l=i.cy;return R(c,l,a,o)}},{key:"getTickTextAnchor",value:function(){var r=this.props.orientation,a;switch(r){case"left":a="end";break;case"right":a="start";break;default:a="middle";break}return a}},{key:"getViewBox",value:function(){var r=this.props,a=r.cx,i=r.cy,o=r.angle,c=r.ticks,l=Ct(c,function(s){return s.coordinate||0}),u=Bt(c,function(s){return s.coordinate||0});return{cx:a,cy:i,startAngle:o,endAngle:o,innerRadius:u.coordinate||0,outerRadius:l.coordinate||0}}},{key:"renderAxisLine",value:function(){var r=this.props,a=r.cx,i=r.cy,o=r.angle,c=r.ticks,l=r.axisLine,u=_e(r,zt),s=c.reduce(function(h,d){return[Math.min(h[0],d.coordinate),Math.max(h[1],d.coordinate)]},[1/0,-1/0]),y=R(a,i,s[0],o),m=R(a,i,s[1],o),b=w(w(w({},v(u,!1)),{},{fill:"none"},v(l,!1)),{},{x1:y.x,y1:y.y,x2:m.x,y2:m.y});return p.createElement("line",F({className:"recharts-polar-radius-axis-line"},b))}},{key:"renderTicks",value:function(){var r=this,a=this.props,i=a.ticks,o=a.tick,c=a.angle,l=a.tickFormatter,u=a.stroke,s=_e(a,Mt),y=this.getTickTextAnchor(),m=v(s,!1),b=v(o,!1),h=i.map(function(d,x){var O=r.getTickValueCoord(d),A=w(w(w(w({textAnchor:y,transform:"rotate(".concat(90-c,", ").concat(O.x,", ").concat(O.y,")")},m),{},{stroke:"none",fill:u},b),{},{index:x},O),{},{payload:d});return p.createElement(k,F({className:N("recharts-polar-radius-axis-tick",Ve(o)),key:"tick-".concat(d.coordinate)},Q(r.props,d,x)),t.renderTickItem(o,A,l?l(d.value,x):d.value))});return p.createElement(k,{className:"recharts-polar-radius-axis-ticks"},h)}},{key:"render",value:function(){var r=this.props,a=r.ticks,i=r.axisLine,o=r.tick;return!a||!a.length?null:p.createElement(k,{className:N("recharts-polar-radius-axis",this.props.className)},i&&this.renderAxisLine(),o&&this.renderTicks(),Fe.renderCallByParent(this.props,this.getViewBox()))}}],[{key:"renderTickItem",value:function(r,a,i){var o;return p.isValidElement(r)?o=p.cloneElement(r,a):H(r)?o=r(a):o=p.createElement(We,F({},a,{className:"recharts-polar-radius-axis-tick-value"}),i),o}}])})(ge.PureComponent);te(K,"displayName","PolarRadiusAxis");te(K,"axisType","radiusAxis");te(K,"defaultProps",{type:"number",radiusAxisId:0,cx:0,cy:0,angle:0,orientation:"right",stroke:"#ccc",axisLine:!0,tick:!0,tickCount:5,allowDataOverflow:!1,scale:"auto",allowDuplicatedCategory:!0});function z(e){"@babel/helpers - typeof";return z=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},z(e)}function E(){return E=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},E.apply(this,arguments)}function we(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),n.push.apply(n,r)}return n}function T(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?we(Object(n),!0).forEach(function(r){re(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):we(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function Ht(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Te(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,Ze(r.key),r)}}function Qt(e,t,n){return t&&Te(e.prototype,t),n&&Te(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function Jt(e,t,n){return t=X(t),Xt(e,Ue()?Reflect.construct(t,n||[],X(e).constructor):t.apply(e,n))}function Xt(e,t){if(t&&(z(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Yt(e)}function Yt(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Ue(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(Ue=function(){return!!e})()}function X(e){return X=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},X(e)}function er(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&me(e,t)}function me(e,t){return me=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,a){return r.__proto__=a,r},me(e,t)}function re(e,t,n){return t=Ze(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ze(e){var t=tr(e,"string");return z(t)=="symbol"?t:t+""}function tr(e,t){if(z(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(z(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}var rr=Math.PI/180,Ee=1e-5,q=(function(e){function t(){return Ht(this,t),Jt(this,t,arguments)}return er(t,e),Qt(t,[{key:"getTickLineCoord",value:function(r){var a=this.props,i=a.cx,o=a.cy,c=a.radius,l=a.orientation,u=a.tickSize,s=u||8,y=R(i,o,c,r.coordinate),m=R(i,o,c+(l==="inner"?-1:1)*s,r.coordinate);return{x1:y.x,y1:y.y,x2:m.x,y2:m.y}}},{key:"getTickTextAnchor",value:function(r){var a=this.props.orientation,i=Math.cos(-r.coordinate*rr),o;return i>Ee?o=a==="outer"?"start":"end":i<-Ee?o=a==="outer"?"end":"start":o="middle",o}},{key:"renderAxisLine",value:function(){var r=this.props,a=r.cx,i=r.cy,o=r.radius,c=r.axisLine,l=r.axisLineType,u=T(T({},v(this.props,!1)),{},{fill:"none"},v(c,!1));if(l==="circle")return p.createElement(ot,E({className:"recharts-polar-angle-axis-line"},u,{cx:a,cy:i,r:o}));var s=this.props.ticks,y=s.map(function(m){return R(a,i,o,m.coordinate)});return p.createElement($t,E({className:"recharts-polar-angle-axis-line"},u,{points:y}))}},{key:"renderTicks",value:function(){var r=this,a=this.props,i=a.ticks,o=a.tick,c=a.tickLine,l=a.tickFormatter,u=a.stroke,s=v(this.props,!1),y=v(o,!1),m=T(T({},s),{},{fill:"none"},v(c,!1)),b=i.map(function(h,d){var x=r.getTickLineCoord(h),O=r.getTickTextAnchor(h),A=T(T(T({textAnchor:O},s),{},{stroke:"none",fill:u},y),{},{index:d,payload:h,x:x.x2,y:x.y2});return p.createElement(k,E({className:N("recharts-polar-angle-axis-tick",Ve(o)),key:"tick-".concat(h.coordinate)},Q(r.props,h,d)),c&&p.createElement("line",E({className:"recharts-polar-angle-axis-tick-line"},m,x)),o&&t.renderTickItem(o,A,l?l(h.value,d):h.value))});return p.createElement(k,{className:"recharts-polar-angle-axis-ticks"},b)}},{key:"render",value:function(){var r=this.props,a=r.ticks,i=r.radius,o=r.axisLine;return i<=0||!a||!a.length?null:p.createElement(k,{className:N("recharts-polar-angle-axis",this.props.className)},o&&this.renderAxisLine(),this.renderTicks())}}],[{key:"renderTickItem",value:function(r,a,i){var o;return p.isValidElement(r)?o=p.cloneElement(r,a):H(r)?o=r(a):o=p.createElement(We,E({},a,{className:"recharts-polar-angle-axis-tick-value"}),i),o}}])})(ge.PureComponent);re(q,"displayName","PolarAngleAxis");re(q,"axisType","angleAxis");re(q,"defaultProps",{type:"category",angleAxisId:0,scale:"auto",cx:0,cy:0,orientation:"outer",axisLine:!0,tickLine:!0,tickSize:8,tick:!0,hide:!1,allowDuplicatedCategory:!0});function G(e){"@babel/helpers - typeof";return G=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},G(e)}function he(){return he=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},he.apply(this,arguments)}function Re(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),n.push.apply(n,r)}return n}function fe(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?Re(Object(n),!0).forEach(function(r){nr(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Re(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function nr(e,t,n){return t=ar(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ar(e){var t=ir(e,"string");return G(t)=="symbol"?t:t+""}function ir(e,t){if(G(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(G(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function $e(e){return typeof e=="string"?parseInt(e,10):e}function or(e,t){var n="".concat(t.cx||e.cx),r=Number(n),a="".concat(t.cy||e.cy),i=Number(a);return fe(fe(fe({},t),e),{},{cx:r,cy:i})}function Ne(e){return p.createElement(st,he({shapeType:"sector",propTransformer:or},e))}var sr=["shape","activeShape","activeIndex","cornerRadius"],cr=["value","background"];function M(e){"@babel/helpers - typeof";return M=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},M(e)}function Y(){return Y=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Y.apply(this,arguments)}function Le(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),n.push.apply(n,r)}return n}function g(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?Le(Object(n),!0).forEach(function(r){$(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Le(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function Ce(e,t){if(e==null)return{};var n=lr(e,t),r,a;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function lr(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function ur(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function De(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,Qe(r.key),r)}}function fr(e,t,n){return t&&De(e.prototype,t),n&&De(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function pr(e,t,n){return t=ee(t),dr(e,He()?Reflect.construct(t,n||[],ee(e).constructor):t.apply(e,n))}function dr(e,t){if(t&&(M(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return yr(e)}function yr(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function He(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(He=function(){return!!e})()}function ee(e){return ee=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},ee(e)}function mr(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&be(e,t)}function be(e,t){return be=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,a){return r.__proto__=a,r},be(e,t)}function $(e,t,n){return t=Qe(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Qe(e){var t=hr(e,"string");return M(t)=="symbol"?t:t+""}function hr(e,t){if(M(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(M(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}var U=(function(e){function t(){var n;ur(this,t);for(var r=arguments.length,a=new Array(r),i=0;i<r;i++)a[i]=arguments[i];return n=pr(this,t,[].concat(a)),$(n,"state",{isAnimationFinished:!1}),$(n,"handleAnimationEnd",function(){var o=n.props.onAnimationEnd;n.setState({isAnimationFinished:!0}),H(o)&&o()}),$(n,"handleAnimationStart",function(){var o=n.props.onAnimationStart;n.setState({isAnimationFinished:!1}),H(o)&&o()}),n}return mr(t,e),fr(t,[{key:"getDeltaAngle",value:function(){var r=this.props,a=r.startAngle,i=r.endAngle,o=pe(i-a),c=Math.min(Math.abs(i-a),360);return o*c}},{key:"renderSectorsStatically",value:function(r){var a=this,i=this.props,o=i.shape,c=i.activeShape,l=i.activeIndex,u=i.cornerRadius,s=Ce(i,sr),y=v(s,!1);return r.map(function(m,b){var h=b===l,d=g(g(g(g({},y),{},{cornerRadius:$e(u)},m),Q(a.props,m,b)),{},{className:"recharts-radial-bar-sector ".concat(m.className),forceCornerRadius:s.forceCornerRadius,cornerIsExternal:s.cornerIsExternal,isActive:h,option:h?c:o});return p.createElement(Ne,Y({},d,{key:"sector-".concat(b)}))})}},{key:"renderSectorsWithAnimation",value:function(){var r=this,a=this.props,i=a.data,o=a.isAnimationActive,c=a.animationBegin,l=a.animationDuration,u=a.animationEasing,s=a.animationId,y=this.state.prevData;return p.createElement(ct,{begin:c,duration:l,isActive:o,easing:u,from:{t:0},to:{t:1},key:"radialBar-".concat(s),onAnimationStart:this.handleAnimationStart,onAnimationEnd:this.handleAnimationEnd},function(m){var b=m.t,h=i.map(function(d,x){var O=y&&y[x];if(O){var A=ce(O.startAngle,d.startAngle),j=ce(O.endAngle,d.endAngle);return g(g({},d),{},{startAngle:A(b),endAngle:j(b)})}var Z=d.endAngle,ne=d.startAngle,ae=ce(ne,Z);return g(g({},d),{},{endAngle:ae(b)})});return p.createElement(k,null,r.renderSectorsStatically(h))})}},{key:"renderSectors",value:function(){var r=this.props,a=r.data,i=r.isAnimationActive,o=this.state.prevData;return i&&a&&a.length&&(!o||!lt(o,a))?this.renderSectorsWithAnimation():this.renderSectorsStatically(a)}},{key:"renderBackground",value:function(r){var a=this,i=this.props.cornerRadius,o=v(this.props.background,!1);return r.map(function(c,l){c.value;var u=c.background,s=Ce(c,cr);if(!u)return null;var y=g(g(g(g(g({cornerRadius:$e(i)},s),{},{fill:"#eee"},u),o),Q(a.props,c,l)),{},{index:l,className:N("recharts-radial-bar-background-sector",o?.className),option:u,isActive:!1});return p.createElement(Ne,Y({},y,{key:"sector-".concat(l)}))})}},{key:"render",value:function(){var r=this.props,a=r.hide,i=r.data,o=r.className,c=r.background,l=r.isAnimationActive;if(a||!i||!i.length)return null;var u=this.state.isAnimationFinished,s=N("recharts-area",o);return p.createElement(k,{className:s},c&&p.createElement(k,{className:"recharts-radial-bar-background"},this.renderBackground(i)),p.createElement(k,{className:"recharts-radial-bar-sectors"},this.renderSectors()),(!l||u)&&Ge.renderCallByParent(g({},this.props),i))}}],[{key:"getDerivedStateFromProps",value:function(r,a){return r.animationId!==a.prevAnimationId?{prevAnimationId:r.animationId,curData:r.data,prevData:a.curData}:r.data!==a.curData?{curData:r.data}:null}}])})(ge.PureComponent);$(U,"displayName","RadialBar");$(U,"defaultProps",{angleAxisId:0,radiusAxisId:0,minPointSize:0,hide:!1,legendType:"rect",data:[],isAnimationActive:!ut.isSsr,animationBegin:0,animationDuration:1500,animationEasing:"ease",forceCornerRadius:!1,cornerIsExternal:!1});$(U,"getComposedData",function(e){var t=e.item,n=e.props,r=e.radiusAxis,a=e.radiusAxisTicks,i=e.angleAxis,o=e.angleAxisTicks,c=e.displayedData,l=e.dataKey,u=e.stackedData,s=e.barPosition,y=e.bandSize,m=e.dataStartIndex,b=ft(s,t);if(!b)return null;var h=i.cx,d=i.cy,x=n.layout,O=t.props,A=O.children,j=O.minPointSize,Z=x==="radial"?i:r,ne=u?Z.scale.domain():null,ae=pt({numericAxis:Z}),ie=dt(A,yt),Je=c.map(function(L,W){var P,_,S,C,D,ve;if(u?P=mt(u[m+W],ne):(P=ht(L,l),Array.isArray(P)||(P=[ae,P])),x==="radial"){_=xe({axis:r,ticks:a,bandSize:y,offset:b.offset,entry:L,index:W}),D=i.scale(P[1]),C=i.scale(P[0]),S=_+b.size;var oe=D-C;if(Math.abs(j)>0&&Math.abs(oe)<Math.abs(j)){var Xe=pe(oe||j)*(Math.abs(j)-Math.abs(oe));D+=Xe}ve={background:{cx:h,cy:d,innerRadius:_,outerRadius:S,startAngle:n.startAngle,endAngle:n.endAngle}}}else{_=r.scale(P[0]),S=r.scale(P[1]),C=xe({axis:i,ticks:o,bandSize:y,offset:b.offset,entry:L,index:W}),D=C+b.size;var se=S-_;if(Math.abs(j)>0&&Math.abs(se)<Math.abs(j)){var Ye=pe(se||j)*(Math.abs(j)-Math.abs(se));S+=Ye}}return g(g(g(g({},L),ve),{},{payload:L,value:u?P:P[1],cx:h,cy:d,innerRadius:_,outerRadius:S,startAngle:C,endAngle:D},ie&&ie[W]&&ie[W].props),{},{tooltipPayload:[bt(t,L)],tooltipPosition:R(h,d,(_+S)/2,(C+D)/2)})});return{data:Je,layout:x}});var br=gt({chartName:"RadialBarChart",GraphicalChild:U,legendContent:"children",defaultTooltipEventType:"axis",validateTooltipEventTypes:["axis","item"],axisComponents:[{axisType:"angleAxis",AxisComp:q},{axisType:"radiusAxis",AxisComp:K}],formatAxisMap:vt,defaultProps:{layout:"radial",startAngle:0,endAngle:360,cx:"50%",cy:"50%",innerRadius:0,outerRadius:"80%"}});const xr=({config:e,data:t,percentageValue:n,percentageLabel:r,className:a,tooltip:i=!0,size:o="responsive"})=>{const l=(()=>{switch(o){case"sm":return{barWidth:28,innerRadiusStart:t.length>1?42:56,fontSize:{percentage:"1.2rem",label:"0.8rem"}};case"md":return{barWidth:36,innerRadiusStart:t.length>1?60:72,fontSize:{percentage:"1.4rem",label:"0.9rem"}};case"lg":return{barWidth:46,innerRadiusStart:t.length>1?72:94,fontSize:{percentage:"1.6rem",label:"1rem"}};case"responsive":default:return{barWidth:46,innerRadiusStart:t.length>1?72:94,fontSize:{percentage:"1.6rem",label:"1rem"}}}})(),u={innerRadius:l.innerRadiusStart,outerRadius:l.innerRadiusStart+l.barWidth,startAngle:90,endAngle:-270};return f.jsx(xt,{className:et("mx-auto",a),config:e,children:f.jsxs(br,{data:t,endAngle:u.endAngle,innerRadius:u.innerRadius,outerRadius:u.outerRadius,startAngle:u.startAngle,children:[f.jsxs("defs",{children:[f.jsxs("radialGradient",{cx:"30%",cy:"30%",id:"gradientPurple",r:"70%",children:[f.jsx("stop",{offset:"0%",stopColor:"hsl(var(--chart-purple))",stopOpacity:.5}),f.jsx("stop",{offset:"100%",stopColor:"hsl(var(--chart-purple))",stopOpacity:1})]}),f.jsxs("radialGradient",{cx:"30%",cy:"30%",id:"gradientBlue",r:"70%",children:[f.jsx("stop",{offset:"0%",stopColor:"hsl(var(--chart-blue))",stopOpacity:.5}),f.jsx("stop",{offset:"100%",stopColor:"hsl(var(--chart-blue))",stopOpacity:1})]}),f.jsxs("radialGradient",{cx:"30%",cy:"30%",id:"gradientTeal",r:"70%",children:[f.jsx("stop",{offset:"0%",stopColor:"hsl(var(--chart-teal))",stopOpacity:.5}),f.jsx("stop",{offset:"100%",stopColor:"hsl(var(--chart-teal))",stopOpacity:1})]}),f.jsxs("radialGradient",{cx:"30%",cy:"30%",id:"gradientGray",r:"70%",children:[f.jsx("stop",{offset:"0%",stopColor:"hsl(var(--chart-gray))",stopOpacity:.5}),f.jsx("stop",{offset:"100%",stopColor:"hsl(var(--chart-gray))",stopOpacity:1})]})]}),f.jsx(q,{angleAxisId:0,domain:[0,1],tick:!1,type:"number"}),f.jsx(U,{cornerRadius:10,dataKey:"value",minPointSize:-2,background:!0,children:t.length>1&&f.jsx(Ge,{className:"fill-black opacity-60",dataKey:"datatype",fontSize:11,position:"insideStart"})}),f.jsx(K,{axisLine:!1,tick:!1,tickLine:!1,children:f.jsx(Fe,{content:({viewBox:s})=>{if(s&&"cx"in s&&"cy"in s)return f.jsxs("text",{dominantBaseline:"middle",textAnchor:"middle",x:s.cx,y:s.cy,children:[n&&f.jsx("tspan",{className:"fill-foreground text-[1.6rem] font-semibold tracking-tight",x:s.cx,y:(s.cy||0)-6,children:n}),r&&f.jsx("tspan",{className:"fill-muted-foreground font-medium",x:s.cx,y:(s.cy||0)+14,children:r})]})}})}),i&&f.jsx(Ot,{content:f.jsx(Pt,{formatter:(s,y,m)=>f.jsxs("div",{className:"flex items-center gap-1",children:[f.jsx("div",{className:"size-2 rounded-full opacity-50",style:{backgroundColor:m.payload?.color}}),f.jsx("div",{className:"text-xs text-muted-foreground",children:m.payload?.datatype}),f.jsx("div",{className:"ml-3 font-mono text-xs",children:tt(s)})]}),nameKey:"datatype",hideLabel:!0}),cursor:!1,isAnimationActive:!1})]})})},Ie=(e,t=!1)=>{try{const n=["ref","attribution_id","attribution_type"],r=new URL(e);for(const i of n)r.searchParams.delete(i);return t?(r.host+(r.pathname==="/"&&!r.search?"":r.pathname)+(r.search?r.search:"")+(r.hash?r.hash:"")).replace(/^www\./,""):r.toString()}catch{return e}},Or=(e,t)=>e.find(n=>n.link.link_id===t),Pr=e=>{const r=(e?.links.map(a=>({link:a.link,count:a.count?.clicks||0}))||[]).map(a=>({...a,link:{...a.link,originalTo:a.link.to,to:Ie(a.link.to,!1),title:Ie(a.link.to,!0)}})).reduce((a,i)=>(a[i.link.title]?(a[i.link.title].count||(a[i.link.title].count=0),a[i.link.title].count+=i.count??0):a[i.link.title]=i,a),{});return Object.values(r).sort((a,i)=>{const o=a.count||0;return(i.count||0)-o})},jr=rt({dataType:"LinkResponseType",path:"/links/"}),kr=nt({method:"PUT",path:()=>"/links/bulk/",body:({editedUrl:e})=>({bulk:{action:"updateLink",meta:{link:{to:e}}}}),searchParams:({originalUrl:e,postId:t})=>({filter:`post_id:'${t}'+to:'${e}'`})});export{xr as N,kr as a,Ie as c,Or as g,Pr as p,jr as u};
@@ -1,4 +1,4 @@
1
- import{aA as e,e9 as M0,aJ as v0,T as m0,bD as _0,ea as g0,eb as L0,$ as x0,bp as w0,bt as f0,C as I0,ec as C0,cW as b0,ed as c,ee as r,cF as N0,aX as k,x as $0,ef as q0,bu as p,ci as z0,aQ as S0,bB as A0,cD as H0,eg as j0,ab as V0,eh as P0,ei as B0,ej as F0,cY as D0,ek as R0,el as T0,em as s,cQ as l,en as U0,cc as O0,eo as G0,c9 as Z0,ep as W0,eq as E0,er as X0,es as u,c1 as K0,co as Q0,ao as J0,cX as M,bS as Y0,b5 as v,et as m,cp as _,c0 as ea,X as aa,eu as q_}from"./index-BYawr8p9.js";import{A as ca}from"./a-large-small-CKZJgscl.js";import{A as ta,C as oa,G as da,M as na,P as g,S as ha,a as ia,T as ya,U as ra,W as ka}from"./wallet-cards-KaTkgqvi.js";import{A as pa}from"./at-sign-CqQzllfI.js";import{a as sa,C as la,d as L,D as ua,f as Ma,E as va,c as ma,e as x,F as _a,b as w,L as f,M as ga}from"./message-square-text-CaMVBVPr.js";import{C as La}from"./copy-BFuV16bY.js";import{H as xa}from"./hash-CdH0ikFp.js";import{I as wa}from"./inbox-Bd0uf1Ez.js";import{M as fa}from"./minus-2XwCoFJV.js";import{P as Ia,T as Ca}from"./tags-BL_N4nn2.js";import{R as ba,S as Na}from"./square-BCNGSZhW.js";import{R as $a,U as I}from"./user-round-check-BjHbfXKY.js";import{R as qa}from"./repeat-COP-3g8d.js";import{R as za}from"./reply-JE8tmvOn.js";import{S as Sa}from"./sprout-BW9HFVU8.js";import{T as Aa}from"./trash-BglGemAb.js";/**
1
+ import{aA as e,e9 as M0,aJ as v0,T as m0,bD as _0,ea as g0,eb as L0,$ as x0,bp as w0,bt as f0,C as I0,ec as C0,cW as b0,ed as c,ee as r,cF as N0,aX as k,x as $0,ef as q0,bu as p,ci as z0,aQ as S0,bB as A0,cD as H0,eg as j0,ab as V0,eh as P0,ei as B0,ej as F0,cY as D0,ek as R0,el as T0,em as s,cQ as l,en as U0,cc as O0,eo as G0,c9 as Z0,ep as W0,eq as E0,er as X0,es as u,c1 as K0,co as Q0,ao as J0,cX as M,bS as Y0,b5 as v,et as m,cp as _,c0 as ea,X as aa,eu as q_}from"./index-CJU9a2PB.js";import{A as ca}from"./a-large-small-BPPu_Iy7.js";import{A as ta,C as oa,G as da,M as na,P as g,S as ha,a as ia,T as ya,U as ra,W as ka}from"./wallet-cards-Do7nPf3f.js";import{A as pa}from"./at-sign-CYnGzOFc.js";import{a as sa,C as la,d as L,D as ua,f as Ma,E as va,c as ma,e as x,F as _a,b as w,L as f,M as ga}from"./message-square-text-CS3iRuPc.js";import{C as La}from"./copy-DWiB-781.js";import{H as xa}from"./hash-p9dv0yuc.js";import{I as wa}from"./inbox-CRoP9sy5.js";import{M as fa}from"./minus-emzwh6hq.js";import{P as Ia,T as Ca}from"./tags-DXDZbfxp.js";import{R as ba,S as Na}from"./square-DT1uWkxs.js";import{R as $a,U as I}from"./user-round-check-D3ihrrKL.js";import{R as qa}from"./repeat-ms5ocvE0.js";import{R as za}from"./reply-BvO85IDn.js";import{S as Sa}from"./sprout-C2R5CbXV.js";import{T as Aa}from"./trash-CZ3EXwTL.js";/**
2
2
  * @license lucide-react v0.553.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1 +1 @@
1
- import{j as a}from"./index-BYawr8p9.js";const t=({children:e,...s})=>a.jsx("div",{className:"size-full",children:a.jsx("div",{className:"relative mx-auto flex h-full max-w-page flex-col",...s,children:e})});export{t as M};
1
+ import{j as a}from"./index-CJU9a2PB.js";const t=({children:e,...s})=>a.jsx("div",{className:"size-full",children:a.jsx("div",{className:"relative mx-auto flex h-full max-w-page flex-col",...s,children:e})});export{t as M};
@@ -1,4 +1,4 @@
1
- import{aA as e}from"./index-BYawr8p9.js";/**
1
+ import{aA as e}from"./index-CJU9a2PB.js";/**
2
2
  * @license lucide-react v0.553.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{aA as o}from"./index-BYawr8p9.js";/**
1
+ import{aA as o}from"./index-CJU9a2PB.js";/**
2
2
  * @license lucide-react v0.553.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.