ghost 6.54.0 → 6.54.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/components/ghost-storage-base-3.0.0.tgz +0 -0
  2. package/components/tryghost-adapter-base-cache-0.2.0.tgz +0 -0
  3. package/components/tryghost-adapter-base-scheduling-0.2.0.tgz +0 -0
  4. package/components/tryghost-adapter-base-sso-0.1.1.tgz +0 -0
  5. package/components/tryghost-kg-default-nodes-2.1.3.tgz +0 -0
  6. package/core/built/admin/assets/Growth-BTP1LthE.js +3 -0
  7. package/core/built/admin/assets/Newsletters-CSEX0myc.js +1 -0
  8. package/core/built/admin/assets/Overview-BjACEsJF.js +1 -0
  9. package/core/built/admin/assets/Web-CxxxjCcv.js +2 -0
  10. package/core/built/admin/assets/{account-migration-DLvVA5yq.js → account-migration-BklF2I_I.js} +1 -1
  11. package/core/built/admin/assets/activitypub/{account-migration-DHbZcxGM.js → account-migration-CNovr6W-.js} +4 -4
  12. package/core/built/admin/assets/activitypub/activitypub.js +2 -2
  13. package/core/built/admin/assets/activitypub/{bluesky-sharing-zfxUey_L.js → bluesky-sharing-Ceslb1_M.js} +4 -4
  14. package/core/built/admin/assets/activitypub/{dist-BqkDUQxJ2.js → dist-ByFmDSNP2.js} +64 -63
  15. package/core/built/admin/assets/activitypub/{dist-Ba_QxHHl.js → dist-DHAjBcV3.js} +2 -2
  16. package/core/built/admin/assets/activitypub/{domain-CmwSZLHK.js → domain-C1qQvJ8C.js} +5 -5
  17. package/core/built/admin/assets/activitypub/{edit-profile-CXdwNmVG.js → edit-profile-BcH-jEfM.js} +3 -3
  18. package/core/built/admin/assets/activitypub/{explore-DfbjzGM1.js → explore-AxwBh9dI.js} +3 -3
  19. package/core/built/admin/assets/activitypub/{feed-DSEBJOqf.js → feed-BaOlbh7a.js} +3 -3
  20. package/core/built/admin/assets/activitypub/{field-CY7XVcx6.js → field-B7mYYQpN.js} +2 -2
  21. package/core/built/admin/assets/activitypub/{inbox-DtQ0kytT.js → inbox-vXez-5uJ.js} +4 -4
  22. package/core/built/admin/assets/activitypub/{label-Dw96GQ7u.js → label-Chv5T8bw.js} +2 -2
  23. package/core/built/admin/assets/activitypub/layout-CziktJXo.js +1 -0
  24. package/core/built/admin/assets/activitypub/{moderation-Dg_-I-8C.js → moderation-DtSM2i1I.js} +4 -4
  25. package/core/built/admin/assets/activitypub/{note-Cy1-uKMY.js → note-Dckp4S-2.js} +3 -3
  26. package/core/built/admin/assets/activitypub/{notifications-B_fvoLIM.js → notifications-CG5T22vg.js} +3 -3
  27. package/core/built/admin/assets/activitypub/{preferences-ByJseZp6.js → preferences-D_799jdl.js} +6 -6
  28. package/core/built/admin/assets/activitypub/{profile-BFtbnIjz.js → profile-D2JfXBQl.js} +6 -6
  29. package/core/built/admin/assets/activitypub/{routes-Dh3xXfce.js → routes-CCHe2dQp.js} +28 -25
  30. package/core/built/admin/assets/activitypub/{settings-DTgqJPxM.js → settings-kx-9Enkz.js} +3 -3
  31. package/core/built/admin/assets/activitypub/{site-CdL9ZLqm.js → site-x4_IjVJ0.js} +2 -2
  32. package/core/built/admin/assets/activitypub/{tabs-ogqwoBlb.js → tabs-CyPRQQ1N.js} +3 -3
  33. package/core/built/admin/assets/activitypub/{use-reply-chain-data-CxonteFD.js → use-reply-chain-data-BAB6fNGt.js} +2 -2
  34. package/core/built/admin/assets/{audience-BKRdsFmy.js → audience-X_XsZivI.js} +1 -1
  35. package/core/built/admin/assets/{automated-emails-Cn87L5Md.js → automated-emails-of1MvVsv.js} +1 -1
  36. package/core/built/admin/assets/{automations-BP_aHamJ.js → automations-DRFjW5fw.js} +1 -1
  37. package/core/built/admin/assets/{bluesky-sharing-Bh36XPh4.js → bluesky-sharing-BbbjWdzs.js} +1 -1
  38. package/core/built/admin/assets/{breadcrumb-D34YWnaw.js → breadcrumb-B-M9Ip_2.js} +1 -1
  39. package/core/built/admin/assets/{chart-helpers-DbklaJw9.js → chart-helpers-xiSsW8r0.js} +1 -1
  40. package/core/built/admin/assets/checkbox-EhJKHFdZ.js +1 -0
  41. package/core/built/admin/assets/{chunk.962.b73442b07be930bb5d85.js → chunk.211.6f7328d63c41536451b3.js} +737 -559
  42. package/core/built/admin/assets/{chunk.962.b73442b07be930bb5d85.js.LICENSE.txt → chunk.211.6f7328d63c41536451b3.js.LICENSE.txt} +2 -0
  43. package/core/built/admin/assets/{chunk.589.096f4d0bb775e5229aa9.js → chunk.361.3cdb584b973959e52ccc.js} +3 -3
  44. package/core/built/admin/assets/chunk.524.8365cd9280405c0f6216.js +25 -0
  45. package/core/built/admin/assets/chunk.582.61d078937e6102769f2c.js +27 -0
  46. package/core/built/admin/assets/code-editor-view-CZtJFGhR.js +1 -0
  47. package/core/built/admin/assets/comments-CvyXxOyN.js +1 -0
  48. package/core/built/admin/assets/{date-range-select-B5vSsrpx.js → date-range-select-CTlyo8zW.js} +1 -1
  49. package/core/built/admin/assets/{disabled-sources-indicator-NkOIoMue.js → disabled-sources-indicator-qs2GfLvl.js} +1 -1
  50. package/core/built/admin/assets/dist-2Tnz2Yfq.js +1 -0
  51. package/core/built/admin/assets/dist-CjY-f5Z1.js +1 -0
  52. package/core/built/admin/assets/dist-DIC8yz5C.js +1 -0
  53. package/core/built/admin/assets/{domain-B7_n5nfx.js → domain-CPNXKVOV.js} +1 -1
  54. package/core/built/admin/assets/dropzone-BmCXnw6J.js +5 -0
  55. package/core/built/admin/assets/{edit-profile-rvDGrS8J.js → edit-profile-SGrJve5M.js} +1 -1
  56. package/core/built/admin/assets/editor-BOG2YPUm.js +8 -0
  57. package/core/built/admin/assets/{explore-BZAZOg5X.js → explore-CUYLv9G9.js} +1 -1
  58. package/core/built/admin/assets/{feed-CFV8xDw9.js → feed-CPdJMttL.js} +1 -1
  59. package/core/built/admin/assets/{field-BW-M2Zwp.js → field-D0XISCK2.js} +1 -1
  60. package/core/built/admin/assets/{filter-sources-Fx8wiYYw.js → filter-sources-Bieps75g.js} +1 -1
  61. package/core/built/admin/assets/{filters-CGX_pf2N.js → filters-CuB-A7ma.js} +1 -1
  62. package/core/built/admin/assets/filters-bXkkWro8.js +1 -0
  63. package/core/built/admin/assets/{ghost-b1dce91ad3232cc259ee5fbbf9526243.js → ghost-05f9a7182ed56903dba05878a5b8422b.js} +290 -289
  64. package/core/built/admin/assets/{gift-link-modal-Bk8qpnMw.js → gift-link-modal-su8MsRdg.js} +1 -1
  65. package/core/built/admin/assets/{growth-Ck2s3JjR.js → growth-Ba6S5FQX.js} +1 -1
  66. package/core/built/admin/assets/{inbox-BRp1_aaC.js → inbox-Xx1CdnfO.js} +8 -8
  67. package/core/built/admin/assets/index-D8PbzuT9.css +1 -0
  68. package/core/built/admin/assets/index-ukW_0Uie.js +67 -0
  69. package/core/built/admin/assets/input-group-CGOXcy4l.js +1 -0
  70. package/core/built/admin/assets/input-surface-BpAjZXY5.js +1 -0
  71. package/core/built/admin/assets/{koenig-lexical-CM7UFNdL.js → koenig-lexical-B61IALf5.js} +1 -1
  72. package/core/built/admin/assets/{kpi-card-CIGyijjx.js → kpi-card-BlZaG1Lo.js} +1 -1
  73. package/core/built/admin/assets/{kpi-card-BrGH6FsT.js → kpi-card-DCdlyaSS.js} +1 -1
  74. package/core/built/admin/assets/{kpi-helpers-_HRRsklE.js → kpi-helpers-DpAuS1Nb.js} +1 -1
  75. package/core/built/admin/assets/{kpi-tabs-BSvh9eoq.js → kpi-tabs-Dme44bQS.js} +1 -1
  76. package/core/built/admin/assets/{label-BOR9XdKl.js → label-dSs5aepE.js} +1 -1
  77. package/core/built/admin/assets/{label-picker-BdNAWuUX.js → label-picker-Uq91atex.js} +1 -1
  78. package/core/built/admin/assets/layout-WUcz6tu1.js +1 -0
  79. package/core/built/admin/assets/{member-custom-fields-DvFyamLu.js → member-custom-fields-NCzrMuba.js} +1 -1
  80. package/core/built/admin/assets/member-detail-DPWDtYnN.js +1 -0
  81. package/core/built/admin/assets/{members-DsPxYAVm.js → members-B9rO7qr4.js} +2 -2
  82. package/core/built/admin/assets/modals-CxRaan1J.js +31 -0
  83. package/core/built/admin/assets/{moderation-Dlp7M5sa.js → moderation-D8zon60E.js} +1 -1
  84. package/core/built/admin/assets/{multi-select-combobox-CH1o8XXQ.js → multi-select-combobox-1wYm3nle.js} +1 -1
  85. package/core/built/admin/assets/newsletter-DbYMRxRS.js +1 -0
  86. package/core/built/admin/assets/{note-BrAZ7Z0o.js → note-PiWPnnrh.js} +1 -1
  87. package/core/built/admin/assets/{notifications-BnbHLOPC.js → notifications-DEgqqB9G.js} +1 -1
  88. package/core/built/admin/assets/{onboarding-route-eU146kuA.js → onboarding-route-BzF6HeVn.js} +1 -1
  89. package/core/built/admin/assets/{overview-BpbaK-xu.js → overview-DixLeIqY.js} +1 -1
  90. package/core/built/admin/assets/{page-header-C0jVxtS8.js → page-header-op0eN36I.js} +1 -1
  91. package/core/built/admin/assets/{post-analytics-Iw7dk1mT.js → post-analytics-WwRDEnrV.js} +1 -1
  92. package/core/built/admin/assets/post-analytics-header-DsMoLx0R.js +1 -0
  93. package/core/built/admin/assets/{post-analytics-provider-BDqcfBor.js → post-analytics-provider-BJCPLMIb.js} +1 -1
  94. package/core/built/admin/assets/{post-share-modal-DBfKl2GZ.js → post-share-modal-Dx-MEjhI.js} +1 -1
  95. package/core/built/admin/assets/preferences-D7-j6A4C.js +5 -0
  96. package/core/built/admin/assets/profile-Dl69QPp0.js +1 -0
  97. package/core/built/admin/assets/select-C1qDZnW4.js +1 -0
  98. package/core/built/admin/assets/settings-BbmC_Iqq.js +4 -0
  99. package/core/built/admin/assets/{settings-Bz3RZRmE.js → settings-H6HxFgfI.js} +1 -1
  100. package/core/built/admin/assets/shade-app-B3heOAfz-CGXQwWeO.js +3 -0
  101. package/core/built/admin/assets/{share-modal-CkdTTMJd.js → share-modal-BJCadJyp.js} +1 -1
  102. package/core/built/admin/assets/social-urls-BPL1nADp.js +8 -0
  103. package/core/built/admin/assets/{sort-button-DZp9Y2r1.js → sort-button-DyYlfYp7.js} +1 -1
  104. package/core/built/admin/assets/{source-icon-CHr9qJ2Y.js → source-icon-_ubRDbg_.js} +1 -1
  105. package/core/built/admin/assets/{stats-DGoXZxWE.js → stats-BQZMGMvn.js} +1 -1
  106. package/core/built/admin/assets/{stats-view-D2-1L0ms.js → stats-view-Doei-qCX.js} +1 -1
  107. package/core/built/admin/assets/{step-1-RdahbwyG.js → step-1-IKiLBPoC.js} +1 -1
  108. package/core/built/admin/assets/{step-2-D83PeRwd.js → step-2-jJ41PsDN.js} +1 -1
  109. package/core/built/admin/assets/{step-3-p_Op4wv4.js → step-3-CaqFAEqf.js} +2 -2
  110. package/core/built/admin/assets/switch-t-WyENU2.js +1 -0
  111. package/core/built/admin/assets/{table-B8LgTQJZ.js → table-DxUL78jU.js} +1 -1
  112. package/core/built/admin/assets/{tabs-D3ZOYkM7.js → tabs-BQcJQ1ke.js} +1 -1
  113. package/core/built/admin/assets/{tags-B4l891z2.js → tags-CNujGwkT.js} +1 -1
  114. package/core/built/admin/assets/textarea-Bjccvh_E.js +1 -0
  115. package/core/built/admin/assets/{toggle-group-DNXDkAwf.js → toggle-group-BeEpQ69p.js} +1 -1
  116. package/core/built/admin/assets/{topic-filter-DZGjEcz3.js → topic-filter-Bb5MOD-1.js} +1 -1
  117. package/core/built/admin/assets/{use-analytics-data-CaT8RirX.js → use-analytics-data-Cds6XDjg.js} +1 -1
  118. package/core/built/admin/assets/use-filter-params-DjXkhO54.js +1 -0
  119. package/core/built/admin/assets/{use-growth-stats-9Db2CuJe.js → use-growth-stats-D8uf98-G.js} +1 -1
  120. package/core/built/admin/assets/{use-post-referrers-BV54YcQS.js → use-post-referrers-CRtgyuXB.js} +1 -1
  121. package/core/built/admin/assets/{use-reply-chain-data-DuYZGDan.js → use-reply-chain-data-DbKYX50v.js} +1 -1
  122. package/core/built/admin/assets/{use-simple-pagination-8fTua9Nt.js → use-simple-pagination-DC01kpo0.js} +1 -1
  123. package/core/built/admin/assets/{use-tinybird-query-Dz156HvZ.js → use-tinybird-query-C7bQRJWw.js} +1 -1
  124. package/core/built/admin/assets/{use-tinybird-token-C9RUdL_n.js → use-tinybird-token-Az4tam7_.js} +1 -1
  125. package/core/built/admin/assets/{virtual-list-BCvP0YF-.js → virtual-list-Dhuh9fGx.js} +1 -1
  126. package/core/built/admin/assets/web-LtHNiNBV.js +1 -0
  127. package/core/built/admin/index.html +11 -7
  128. package/core/frontend/services/proxy.js +11 -1
  129. package/core/server/adapters/storage/LocalFilesStorage.js +13 -11
  130. package/core/server/adapters/storage/LocalFilesStorage.ts +24 -0
  131. package/core/server/adapters/storage/LocalImagesStorage.js +14 -12
  132. package/core/server/adapters/storage/LocalImagesStorage.ts +24 -0
  133. package/core/server/adapters/storage/LocalMediaStorage.js +13 -11
  134. package/core/server/adapters/storage/LocalMediaStorage.ts +24 -0
  135. package/core/server/adapters/storage/LocalStorageBase.js +107 -167
  136. package/core/server/adapters/storage/LocalStorageBase.ts +342 -0
  137. package/core/server/adapters/storage/utils.js +36 -50
  138. package/core/server/adapters/storage/utils.ts +60 -0
  139. package/core/server/api/endpoints/db.js +6 -0
  140. package/core/server/api/endpoints/members.js +25 -28
  141. package/core/server/api/endpoints/pages.js +6 -1
  142. package/core/server/api/endpoints/posts.js +11 -2
  143. package/core/server/api/endpoints/utils/serializers/output/mappers/comments.js +4 -1
  144. package/core/server/api/endpoints/utils/serializers/output/members.js +18 -87
  145. package/core/server/data/exporter/export-filename.js +2 -1
  146. package/core/server/data/importer/importers/data/revue-subscriber-importer.js +6 -10
  147. package/core/server/data/importer/importers/json-to-html.js +24 -4
  148. package/core/server/lib/image/image-size.js +3 -17
  149. package/core/server/lib/image/image-utils.js +15 -1
  150. package/core/server/lib/request-external.js +1 -1
  151. package/core/server/models/user.js +46 -70
  152. package/core/server/services/auth/session/session-service.js +28 -1
  153. package/core/server/services/automations/automations-api.js +6 -6
  154. package/core/server/services/automations/automations-api.ts +6 -6
  155. package/core/server/services/automations/automations-repository.ts +1 -0
  156. package/core/server/services/automations/database-automations-repository.js +7 -2
  157. package/core/server/services/automations/database-automations-repository.ts +8 -2
  158. package/core/server/services/comments/comments-service-emails.js +4 -1
  159. package/core/server/services/members/{importer → import-export}/config.js +4 -9
  160. package/core/server/services/members/{importer → import-export}/config.ts +4 -9
  161. package/core/server/services/members/{csv → import-export/csv}/index.js +3 -3
  162. package/core/server/services/members/import-export/csv/index.ts +2 -0
  163. package/core/server/services/members/import-export/csv/parse.js +64 -0
  164. package/core/server/services/members/import-export/csv/parse.ts +69 -0
  165. package/core/server/services/members/import-export/csv/serialize.js +13 -0
  166. package/core/server/services/members/import-export/csv/serialize.ts +18 -0
  167. package/core/server/services/members/import-export/export/exporter.js +202 -0
  168. package/core/server/services/members/import-export/export/exporter.ts +325 -0
  169. package/core/server/services/members/import-export/import/completion-email.js +65 -0
  170. package/core/server/services/members/import-export/import/completion-email.ts +119 -0
  171. package/core/server/services/members/import-export/import/importer.js +276 -0
  172. package/core/server/services/members/import-export/import/importer.ts +430 -0
  173. package/core/server/services/members/import-export/import/reader.js +32 -0
  174. package/core/server/services/members/import-export/import/reader.ts +33 -0
  175. package/core/server/services/members/import-export/import/row.js +33 -0
  176. package/core/server/services/members/import-export/import/row.ts +52 -0
  177. package/core/server/services/members/import-export/import/spool.js +30 -0
  178. package/core/server/services/members/import-export/import/spool.ts +38 -0
  179. package/core/server/services/members/import-export/index.js +90 -0
  180. package/core/server/services/members/import-export/index.ts +118 -0
  181. package/core/server/services/members/members-api/controllers/router-controller.js +7 -0
  182. package/core/server/services/members/service.js +17 -19
  183. package/core/server/services/posts/posts-exporter.js +6 -4
  184. package/core/server/services/posts/posts-service.js +2 -2
  185. package/core/server/services/themes/storage.js +9 -0
  186. package/core/server/services/themes/theme-storage.js +1 -1
  187. package/core/shared/config/defaults.json +2 -1
  188. package/core/shared/express.js +6 -1
  189. package/core/shared/labs.js +2 -1
  190. package/package.json +9 -9
  191. package/pnpm-lock.yaml +17 -17
  192. package/pnpm-workspace.yaml +7 -7
  193. package/components/tryghost-adapter-base-scheduling-0.1.1.tgz +0 -0
  194. package/core/built/admin/assets/Growth-CSaHoSVD.js +0 -3
  195. package/core/built/admin/assets/Newsletters-C5cs6FGo.js +0 -1
  196. package/core/built/admin/assets/Overview-j4NaeUNm.js +0 -1
  197. package/core/built/admin/assets/Web-_fD935OX.js +0 -2
  198. package/core/built/admin/assets/activitypub/layout-IdVq3lRy.js +0 -1
  199. package/core/built/admin/assets/checkbox-DA4-1UiI.js +0 -1
  200. package/core/built/admin/assets/chunk.524.45e0875f41b71e46e849.js +0 -25
  201. package/core/built/admin/assets/chunk.582.51defd4b009f0de8d4d5.js +0 -27
  202. package/core/built/admin/assets/code-editor-view-BKBrkffZ.js +0 -1
  203. package/core/built/admin/assets/comments-CzVNIT8b.js +0 -1
  204. package/core/built/admin/assets/dist-CT46_f_J.js +0 -1
  205. package/core/built/admin/assets/dropzone-DcuJEEUf.js +0 -5
  206. package/core/built/admin/assets/editor-BCiIyFjm.js +0 -8
  207. package/core/built/admin/assets/filters-DtcXMZDU.js +0 -1
  208. package/core/built/admin/assets/index-BBf502Wg.js +0 -69
  209. package/core/built/admin/assets/index-BCCZKxP2.css +0 -1
  210. package/core/built/admin/assets/input-group-DjuYnNCd.js +0 -1
  211. package/core/built/admin/assets/layout-Bw4GnxXp.js +0 -1
  212. package/core/built/admin/assets/member-detail-Cg2vTqvJ.js +0 -1
  213. package/core/built/admin/assets/modals-Bf_fyvHZ.js +0 -31
  214. package/core/built/admin/assets/newsletter-CQ5CAYUI.js +0 -1
  215. package/core/built/admin/assets/post-analytics-header-D9pJ4iNm.js +0 -1
  216. package/core/built/admin/assets/preferences-D4EANGoc.js +0 -5
  217. package/core/built/admin/assets/profile-dJ44Bn_W.js +0 -1
  218. package/core/built/admin/assets/select--2uVN9_-.js +0 -1
  219. package/core/built/admin/assets/settings-SD9bxIpt.js +0 -4
  220. package/core/built/admin/assets/social-urls-BvFZwYcE.js +0 -8
  221. package/core/built/admin/assets/switch-qp518gFQ.js +0 -1
  222. package/core/built/admin/assets/textarea-CTlb3Uu6.js +0 -1
  223. package/core/built/admin/assets/use-filter-params-DeQ8sX4N.js +0 -1
  224. package/core/built/admin/assets/web-DTZnnUGr.js +0 -1
  225. package/core/server/services/mail/templates/newsletter.html +0 -876
  226. package/core/server/services/members/csv/index.ts +0 -3
  227. package/core/server/services/members/csv/parse.js +0 -94
  228. package/core/server/services/members/csv/parse.ts +0 -111
  229. package/core/server/services/members/csv/types.js +0 -2
  230. package/core/server/services/members/csv/types.ts +0 -39
  231. package/core/server/services/members/csv/unparse.js +0 -69
  232. package/core/server/services/members/csv/unparse.ts +0 -79
  233. package/core/server/services/members/exporter/query.js +0 -233
  234. package/core/server/services/members/importer/index.js +0 -30
  235. package/core/server/services/members/importer/labels.js +0 -125
  236. package/core/server/services/members/importer/members-csv-importer.js +0 -520
  237. /package/core/server/services/members/{importer → import-export/import}/email-template.js +0 -0
  238. /package/core/server/services/members/{importer/members-csv-importer-stripe-utils.js → import-export/import/stripe-utils.js} +0 -0
@@ -1,4 +1,4 @@
1
- import{o as e,t}from"./rolldown-runtime-DAXXjFlN.js";import{t as n}from"./react-Bb3IsNbi.js";import{t as r}from"./jsx-runtime-DX3WBWVO.js";import{g as i}from"./framework-provider-CmtnPXIT.js";import{_ as a,a as o,g as s,l as c,p as l,v as u,y as d}from"./hooks-BApwwBE0.js";import{n as f}from"./dist-Ndy-PuGN.js";import{t as p}from"./nql-BsgFMd93.js";import{n as m}from"./offers-CrY6nSRR.js";import{f as h,g,l as _}from"./chunk-KS7C4IRE-DG9HTHQ3.js";import{a as v}from"./router-provider-C1R4AZ2o.js";import{c as y,f as b,p as x,v as S}from"./dist-DGzPJ_bO.js";import{t as C}from"./box-BWbhXh21.js";import{t as w}from"./container-BYz2Ed39.js";import{n as T}from"./filters-DtcXMZDU.js";import{c as E,i as D,n as O,r as k,s as A}from"./switch-qp518gFQ.js";import{t as j}from"./dropzone-DcuJEEUf.js";import{i as M,n as N,o as P,s as F,t as I}from"./select--2uVN9_-.js";import{t as L}from"./empty-indicator-oX1u1Pkn.js";import{i as ee,n as R,t as z}from"./input-group-DjuYnNCd.js";import{a as B,c as V,n as te,r as H,s as U,t as W}from"./table-B8LgTQJZ.js";import{m as ne}from"./users-CcSCQFcQ.js";import{A as re,Ao as ie,Ar as ae,Bo as oe,C as se,Ca as ce,Dr as le,En as ue,Er as de,Fi as fe,Ir as G,Jn as pe,Jr as me,Ka as he,Ki as ge,Ko as _e,Mo as ve,Na as ye,On as be,Or as K,Qr as xe,Ri as Se,S as Ce,Sa as we,Sn as q,Uo as Te,Wa as Ee,Wi as De,Wo as Oe,Xa as ke,Xn as Ae,Xr as je,Xs as Me,Zi as Ne,_r as Pe,_s as Fe,ao as Ie,b as Le,cn as Re,er as ze,es as Be,fn as Ve,g as He,go as Ue,gs as We,h as Ge,hr as Ke,ii as qe,js as Je,kr as Ye,la as Xe,ln as Ze,lo as Qe,m as $e,na as et,ni as tt,oo as nt,os as rt,p as it,pn as at,qn as ot,rr as st,ss as ct,ta as lt,ua as ut,un as dt,vr as ft,vs as pt,w as mt,wr as ht,x as gt,xn as _t,y as vt,ys as yt,z as bt,za as xt,zi as St}from"./index-BBf502Wg.js";import{t as J}from"./page-header-C0jVxtS8.js";import{C as Ct,S as wt,_ as Tt,a as Et,b as Dt,c as Ot,d as kt,f as Y,g as At,h as jt,i as Mt,l as Nt,m as Pt,n as Ft,o as It,p as Lt,r as Rt,s as zt,t as Bt,u as Vt,v as Ht,w as Ut,x as Wt,y as Gt}from"./filters-CGX_pf2N.js";import{r as Kt}from"./newsletters-D1jbtV-h.js";import{t as qt}from"./list-page-B6ANtzkd.js";import{a as Jt,c as Yt,i as Xt,n as Zt,t as Qt}from"./filter-sources-Fx8wiYYw.js";import{i as $t,n as en,r as tn,t as nn}from"./virtual-list-BCvP0YF-.js";import{t as rn}from"./get-site-timezone-HgL0jI_F.js";import{n as an,r as on,t as sn}from"./label-picker-BdNAWuUX.js";import{t as cn}from"./member-route-0Aa52Ntz.js";var X=e(n(),1),Z=r();function ln({open:e,memberCount:t,onOpenChange:n,onConfirm:r,isLoading:i=!1}){let[a,o]=(0,X.useState)([]),s=an({selectedSlugs:a,onSelectionChange:o}),c=(0,X.useCallback)(e=>{e||o([]),n(e)},[n]);return(0,Z.jsx)(ht,{open:e,onOpenChange:c,children:(0,Z.jsxs)(de,{className:`gap-5`,onOpenAutoFocus:e=>e.preventDefault(),children:[(0,Z.jsx)(Ye,{children:(0,Z.jsxs)(ae,{children:[`Add label to `,b(t),` `,t===1?`member`:`members`]})}),(0,Z.jsx)(on,{isCreating:s.isCreating,labels:s.labels,optionSource:s.optionSource,resolvedSelectedLabels:s.resolvedSelectedLabels,selectedSlugs:a,onCreate:s.createLabel,onDelete:s.deleteLabel,onEdit:s.editLabel,onToggle:s.toggleLabel}),(0,Z.jsxs)(K,{children:[(0,Z.jsx)(G,{variant:`outline`,onClick:()=>c(!1),children:`Cancel`}),(0,Z.jsx)(G,{disabled:a.length===0||i,onClick:()=>{let e=s.labels.filter(e=>a.includes(e.slug)).map(e=>e.id);e.length>0&&r(e)},children:i?`Adding...`:a.length>1?`Add ${b(a.length)} labels`:`Add label`})]})]})})}function un({open:e,memberCount:t,nql:n,search:r,onOpenChange:i,onConfirm:a,isLoading:o=!1}){let[s,c]=(0,X.useState)([]),{data:l,isLoading:u}=gt({searchParams:{...n?{filter:n}:{},...r?{search:r}:{},include:`labels`,limit:`all`,fields:`id`},enabled:e}),d=(0,X.useMemo)(()=>{let e=new Set;for(let t of l?.members||[])for(let n of t.labels||[])e.add(n.slug);return e},[l]),f=an({selectedSlugs:s,onSelectionChange:c}),p={...f.optionSource,options:f.optionSource.options.filter(e=>d.has(String(e.value)))},m=(0,X.useCallback)(e=>{e||c([]),i(e)},[i]),h=()=>{let e=f.labels.filter(e=>s.includes(e.slug)).map(e=>e.id);e.length>0&&a(e)};return(0,Z.jsx)(ht,{open:e,onOpenChange:m,children:(0,Z.jsxs)(de,{className:`gap-5`,onOpenAutoFocus:e=>e.preventDefault(),children:[(0,Z.jsx)(Ye,{children:(0,Z.jsxs)(ae,{children:[`Remove label from `,b(t),` `,t===1?`member`:`members`]})}),(0,Z.jsx)(on,{labels:f.labels.filter(e=>d.has(e.slug)),optionSource:{...p,isInitialLoad:p.isInitialLoad||u},resolvedSelectedLabels:f.resolvedSelectedLabels.filter(e=>d.has(e.slug)),selectedSlugs:s,onDelete:f.deleteLabel,onEdit:f.editLabel,onToggle:f.toggleLabel}),(0,Z.jsxs)(K,{children:[(0,Z.jsx)(G,{variant:`outline`,onClick:()=>m(!1),children:`Cancel`}),(0,Z.jsx)(G,{disabled:s.length===0||o,onClick:h,children:o?`Removing...`:s.length>1?`Remove ${b(s.length)} labels`:`Remove label`})]})]})})}function dn({open:e,newsletters:t,memberCount:n,onOpenChange:r,onConfirm:i,isLoading:a=!1}){let[o,s]=(0,X.useState)(`all`),[c,l]=(0,X.useState)([]),[u,d]=(0,X.useState)(``),[f,p]=(0,X.useState)(!1),m=(0,X.useRef)(null),h=(0,X.useRef)(null);(0,X.useEffect)(()=>{e||(s(`all`),l([]),d(``),p(!1))},[e]),(0,X.useEffect)(()=>{if(!f)return;let e=e=>{m.current&&!m.current.contains(e.target)&&p(!1)};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[f]);let g=e=>{e||(s(`all`),l([]),d(``),p(!1)),r(e)},_=(0,X.useCallback)(e=>{l(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),v=t.length>=2,y=()=>{i(!v||o===`all`?null:c)},b=a||v&&o===`selected`&&c.length===0,x=n===1?`member`:`members`;return(0,Z.jsx)(ht,{open:e,onOpenChange:g,children:(0,Z.jsxs)(de,{className:`gap-5`,children:[(0,Z.jsx)(Ye,{children:(0,Z.jsx)(ae,{children:`Unsubscribe members`})}),v?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{"aria-label":`Unsubscribe scope`,className:`flex flex-col gap-3`,role:`radiogroup`,children:[(0,Z.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-3`,children:[(0,Z.jsx)(`input`,{checked:o===`all`,className:`mt-0.5 size-4 cursor-pointer accent-black`,name:`unsubscribe-mode`,type:`radio`,value:`all`,onChange:()=>s(`all`)}),(0,Z.jsxs)(`div`,{className:`flex flex-col`,children:[(0,Z.jsx)(`span`,{className:`text-sm font-semibold`,children:`Unsubscribe from all newsletters`}),(0,Z.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[n.toLocaleString(),` `,x,` will be unsubscribed from`,` `,t.length,` `,t.length===1?`newsletter`:`newsletters`,`.`]})]})]}),(0,Z.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-3`,children:[(0,Z.jsx)(`input`,{checked:o===`selected`,className:`mt-0.5 size-4 cursor-pointer accent-black`,name:`unsubscribe-mode`,type:`radio`,value:`selected`,onChange:()=>s(`selected`)}),(0,Z.jsxs)(`div`,{className:`flex flex-col`,children:[(0,Z.jsx)(`span`,{className:`text-sm font-semibold`,children:`Unsubscribe from selected newsletters`}),(0,Z.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`Select which newsletters to unsubscribe`,` `,n.toLocaleString(),` `,x,` from.`]})]})]})]}),o===`selected`&&(0,Z.jsxs)(`div`,{ref:m,className:`relative space-y-2`,children:[(0,Z.jsx)(`label`,{className:`text-sm font-semibold`,htmlFor:`newsletter-search`,children:`Newsletters`}),(0,Z.jsxs)(`div`,{className:`flex min-h-9 w-full cursor-text flex-wrap items-center gap-1.5 rounded-md border bg-background px-3 py-1 text-sm`,onClick:()=>{h.current?.focus(),p(!0)},children:[c.map(e=>{let n=t.find(t=>t.id===e);return n?(0,Z.jsxs)(pe,{className:`cursor-pointer gap-1 pr-1`,variant:`outline`,onClick:t=>{t.stopPropagation(),_(e)},children:[n.name,(0,Z.jsx)(fe,{className:`size-3`})]},e):null}),(0,Z.jsx)(`input`,{ref:h,className:`min-w-[80px] flex-1 bg-transparent py-1 text-sm outline-hidden placeholder:text-muted-foreground`,id:`newsletter-search`,placeholder:c.length===0?`Search newsletters...`:``,value:u,onChange:e=>{d(e.target.value),f||p(!0)},onFocus:()=>p(!0),onKeyDown:e=>{e.key===`Escape`&&(p(!1),h.current?.blur()),e.key===`Backspace`&&!u&&c.length>0&&_(c[c.length-1])}})]}),f&&(0,Z.jsx)(`div`,{className:`absolute top-full left-0 z-50 mt-1 w-full rounded-md border bg-white shadow-md dark:bg-gray-950`,children:(0,Z.jsx)(O,{shouldFilter:!1,children:(0,Z.jsxs)(E,{className:`max-h-64 overflow-y-auto`,children:[(0,Z.jsx)(D,{children:`No newsletters found.`}),t.filter(e=>e.name.toLowerCase().includes(u.toLowerCase())).map(e=>(0,Z.jsxs)(A,{value:e.name,onSelect:()=>_(e.id),children:[e.name,c.includes(e.id)&&(0,Z.jsx)(k,{})]},e.id))]})})})]})]}):(0,Z.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Are you sure you want to unsubscribe`,` `,n.toLocaleString(),` `,x,` from all newsletters? They will no longer receive any email newsletters from you.`]}),(0,Z.jsxs)(K,{children:[(0,Z.jsx)(G,{variant:`outline`,onClick:()=>g(!1),children:`Cancel`}),(0,Z.jsx)(G,{disabled:b,variant:`destructive`,onClick:y,children:a?`Unsubscribing...`:`Unsubscribe`})]})]})})}function fn({open:e,memberCount:t,onOpenChange:n,onConfirm:r,onExportBackup:i,isLoading:a=!1}){let[o,s]=(0,X.useState)(!1),c=e=>{e||s(!1),n(e)},l=async()=>{if(!(t<1||a||o))try{s(!0),await i(),r()}catch{}finally{s(!1)}};return(0,Z.jsx)(ht,{open:e,onOpenChange:c,children:(0,Z.jsxs)(de,{className:`gap-5`,children:[(0,Z.jsx)(Ye,{children:(0,Z.jsx)(ae,{children:`Delete selected members?`})}),t>0?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`p`,{children:[`You're about to delete `,(0,Z.jsxs)(`strong`,{children:[t.toLocaleString(),` `,t===1?`member`:`members`]}),`. This is permanent! All Ghost data will be deleted, this will have no effect on subscriptions in Stripe.`]}),(0,Z.jsx)(`p`,{children:`A backup of your selection will be automatically downloaded to your device before deletion.`})]}):(0,Z.jsx)(`p`,{children:`No members are selected.`}),(0,Z.jsxs)(K,{children:[(0,Z.jsx)(G,{variant:`outline`,onClick:()=>c(!1),children:`Cancel`}),(0,Z.jsx)(G,{disabled:a||o||t<1,variant:`destructive`,onClick:()=>void l(),children:a||o?`Deleting...`:`Download backup & delete members`})]})]})})}function pn({fileError:e,onClose:t,onDropAccepted:n,onDropRejected:r}){return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`mt-5 space-y-5`,children:[(0,Z.jsxs)(ot,{variant:`info`,children:[`Need some help? `,(0,Z.jsx)(`a`,{className:`font-semibold underline`,href:`https://ghost.org/help/import-members/`,rel:`noopener noreferrer`,target:`_blank`,children:`Learn more`}),` about importing members or `,(0,Z.jsx)(`a`,{className:`font-semibold underline`,href:`https://static.ghost.org/v4.0.0/files/member-import-template.csv`,rel:`noopener noreferrer`,target:`_blank`,children:`download a sample CSV file`}),`.`]}),e&&(0,Z.jsxs)(`div`,{className:`flex items-start gap-2 text-sm text-red-600`,children:[(0,Z.jsx)(Ne,{className:`mt-0.5 size-4 shrink-0`}),(0,Z.jsx)(`p`,{children:e})]}),(0,Z.jsx)(j,{accept:{"text/csv":[`.csv`],"application/vnd.ms-excel":[`.csv`]},"aria-label":`Select or drop a CSV file`,onDropAccepted:e=>{let t=e[0];t&&n(t)},onDropRejected:r,children:({isDragActive:e,isDragReject:t})=>(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(ge,{className:`mb-2 size-6 text-grey-600`}),(0,Z.jsx)(`span`,{className:`text-sm text-grey-700`,children:t?`The file type you uploaded is not supported`:e?`Drop CSV file to upload`:`Select or drop a CSV file`})]})})]}),(0,Z.jsx)(K,{className:`mt-5`,children:(0,Z.jsx)(G,{variant:`outline`,onClick:t,children:`Close`})})]})}var mn=[{label:`Email`,value:`email`},{label:`Name`,value:`name`},{label:`Note`,value:`note`},{label:`Subscribed to emails`,value:`subscribed_to_emails`},{label:`Stripe Customer ID`,value:`stripe_customer_id`},{label:`Complimentary plan`,value:`complimentary_plan`},{label:`Labels`,value:`labels`},{label:`Created at`,value:`created_at`},{label:`Gift ID`,value:`gift_id`}],hn={label:`Tier`,value:`import_tier`},gn=[`email`,`name`,`note`,`subscribed_to_emails`,`complimentary_plan`,`stripe_customer_id`,`labels`,`created_at`,`gift_id`];function _n({importMemberTier:e=!1}={}){return[...gn,...e?[hn.value]:[]]}function vn({importMemberTier:e=!1}={}){return[...mn,...e?[hn]:[]]}var yn=[`email`],bn=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,xn=class e{_mapping;constructor(e){if(this._mapping={},e)for(let[t,n]of Object.entries(e))this._mapping[n]=t}get(e){return this._mapping[e]??null}toJSON(){return{...this._mapping}}getKeyByValue(e){for(let[t,n]of Object.entries(this._mapping))if(n===e)return t;return null}updateMapping(t,n){let r=new e({});if(r._mapping={...this._mapping},n)for(let e in r._mapping)r._mapping[e]===n&&(r._mapping[e]=null);return r._mapping[t]=n,r}};function Sn(e,t=30){if(!e||e.length<=t)return e;let n=[];return Object.keys(e[0]).forEach(r=>{let i=e.filter(e=>e[r]&&e[r].trim()!==``),a=[];if(i.length<=t)a=i;else{let e=Math.floor(t/3),n=e,r=t-e-n,o=i.slice(0,e),s=n>0?i.slice(-n):[],c=Math.max(0,Math.floor(i.length/2)-Math.floor(r/2)),l=i.slice(c,c+r);a=[...o,...l,...s].slice(0,t)}a.forEach((e,t)=>{n[t]||(n[t]={}),n[t][r]=e[r]})}),n}function Cn(e,t={}){let n=Sn(e),r={},i=_n(t);if(e.length>0)for(let t of Object.keys(e[0])){if(!r.name&&/name/i.test(t)){r.name=t;continue}!r[t]&&i.includes(t)&&!yn.includes(t)&&(r[t]=t)}let a=0;for(;a<=n.length-1&&!r.email;){let e=n[a];for(let[t,n]of Object.entries(e))!r.email&&n&&bn.test(n)&&(r.email=t);a+=1}return r}function wn(e){return e.replace(`Value in [members.email] cannot be blank.`,`Missing email address`).replace(`Value in [members.note] exceeds maximum length of 2000 characters.`,`Note is too long`).replace(`Value in [members.subscribed] must be one of true, false, 0 or 1.`,`Value of "Subscribed to emails" must be "true" or "false"`).replace(`Validation (isEmail) failed for email`,`Invalid email address`).replace(/No such customer:[^,]*/,`Could not find Stripe customer`)}function Tn({status:e,fileData:t,mapping:n,mappingError:r,showMappingErrors:i,membersCount:a,dataPreviewIndex:o,hasPrevRecord:s,hasNextRecord:c,fieldMappings:l,labelPicker:u,onUpdateMapping:d,onDataPreviewIndexChange:f,onStartOver:p,onUpload:m}){let h=t&&t.length>0&&n?Object.entries(t[o]||{}).map(([e,t])=>({key:e,value:t,mapTo:n.get(e)})):[];return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`mt-5 space-y-5`,children:t===null?(0,Z.jsx)(`div`,{className:`flex items-center justify-center rounded-md border bg-muted p-10`,children:(0,Z.jsx)(ze,{size:`md`})}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:y(`overflow-hidden rounded-md border`,i&&r&&`border-red-500`),children:(0,Z.jsx)(`div`,{className:`max-h-[400px] overflow-auto`,children:(0,Z.jsxs)(W,{className:`table-fixed`,children:[(0,Z.jsx)(U,{children:(0,Z.jsxs)(V,{children:[(0,Z.jsx)(B,{className:`w-1/3`,children:`Field`}),(0,Z.jsx)(B,{className:`w-1/3`,children:(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsxs)(`span`,{children:[`Sample data `,(0,Z.jsxs)(`span`,{className:`text-muted-foreground`,children:[`(#`,b(o+1),`)`]})]}),(0,Z.jsxs)(`div`,{className:`flex items-center`,children:[(0,Z.jsx)(`button`,{"aria-label":`Show previous sample row`,className:y(`rounded p-0.5 hover:bg-muted`,!s&&`cursor-default opacity-30`),disabled:!s||e===`UPLOADING`,type:`button`,onClick:()=>f(o-1),children:(0,Z.jsx)(ct,{className:`size-4`})}),(0,Z.jsx)(`button`,{"aria-label":`Show next sample row`,className:y(`rounded p-0.5 hover:bg-muted`,!c&&`cursor-default opacity-30`),disabled:!c||e===`UPLOADING`,type:`button`,onClick:()=>f(o+1),children:(0,Z.jsx)(rt,{className:`size-4`})})]})]})}),(0,Z.jsx)(B,{className:`w-1/3`,children:`Import as`})]})}),(0,Z.jsx)(te,{children:h.length>0?h.map(t=>(0,Z.jsxs)(V,{className:y(!t.mapTo&&`bg-muted`),children:[(0,Z.jsx)(H,{className:`text-sm font-medium break-all`,children:t.key}),(0,Z.jsx)(H,{className:y(`text-sm break-all`,!t.value&&`text-muted-foreground`),children:t.value||`\xA0`}),(0,Z.jsx)(H,{children:(0,Z.jsxs)(I,{disabled:e===`UPLOADING`,value:t.mapTo||`__not_imported__`,onValueChange:e=>{d(t.key,e===`__not_imported__`?null:e)},children:[(0,Z.jsx)(P,{className:y(`h-8 text-sm`,!t.mapTo&&`text-muted-foreground`),children:(0,Z.jsx)(F,{})}),(0,Z.jsxs)(N,{children:[(0,Z.jsx)(M,{value:`__not_imported__`,children:`Not imported`}),l.map(e=>(0,Z.jsx)(M,{value:e.value,children:e.label},e.value))]})]})})]},t.key)):(0,Z.jsx)(V,{children:(0,Z.jsx)(H,{className:`text-muted-foreground`,colSpan:3,children:`No data found in the uploaded CSV.`})})})]})})}),i&&r&&(0,Z.jsx)(`p`,{className:`text-sm text-red-600`,children:r}),a>0&&(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`If an email address in your CSV matches an existing member, they will be updated with the mapped values.`}),(0,Z.jsxs)(`div`,{className:`mt-5`,children:[(0,Z.jsx)(`label`,{className:`mb-1 block text-sm font-semibold`,children:`Label these members`}),(0,Z.jsx)(on,{isCreating:u.isCreating,labels:u.labels,optionSource:u.optionSource,resolvedSelectedLabels:u.resolvedSelectedLabels,selectedSlugs:u.selectedSlugs,onCreate:u.createLabel,onDelete:u.deleteLabel,onEdit:u.editLabel,onToggle:u.toggleLabel})]})]})}),(0,Z.jsxs)(K,{className:`mt-5`,children:[(0,Z.jsx)(G,{disabled:e===`UPLOADING`,variant:`outline`,onClick:p,children:`Start over`}),(0,Z.jsx)(G,{disabled:e===`UPLOADING`||a===0,onClick:m,children:e===`UPLOADING`?(0,Z.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(ze,{color:`light`,size:`sm`}),`Uploading`]}):a>0?`Import ${b(a)} ${a===1?`member`:`members`}`:`Import members`})]})]})}function En({onUploadAnotherFile:e,onClose:t}){return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`mt-5`,children:(0,Z.jsx)(`p`,{className:`text-sm`,children:`Your import is being processed, and you'll receive a confirmation email as soon as it's complete. Usually this only takes a few minutes, but larger imports may take longer.`})}),(0,Z.jsxs)(K,{className:`mt-5`,children:[(0,Z.jsx)(G,{variant:`outline`,onClick:e,children:`Upload another file`}),(0,Z.jsx)(G,{onClick:t,children:`Got it`})]})]})}var Dn=()=>({status:`INIT`,file:null,fileData:null,mapping:null,selectedLabelSlugs:[],dataPreviewIndex:0,mappingError:null,showMappingErrors:!1,importResponse:null,errorMessage:null,errorHeader:`Import error`,showTryAgainButton:!0,dragOver:!1,fileError:null});function On({importResponse:e,onReset:t,onClose:n}){return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`mt-5 space-y-4`,children:[e.importedCount===0?(0,Z.jsxs)(`p`,{className:`text-sm`,children:[`No members were added`,e.errorCount>0?` due to the following errors:`:`.`]}):(0,Z.jsxs)(`p`,{className:`text-sm`,children:[`A total of `,(0,Z.jsx)(`strong`,{children:e.importedCount.toLocaleString()}),` `,e.importedCount===1?`person was`:`people were`,` successfully added or updated in your list of members, and now have access to your site.`]}),e.errorCount>0&&(0,Z.jsxs)(Z.Fragment,{children:[e.importedCount>0&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`hr`,{className:`border-grey-200`}),(0,Z.jsxs)(`p`,{className:`text-sm`,children:[(0,Z.jsx)(`strong`,{children:e.errorCount.toLocaleString()}),` `,e.errorCount===1?`member was`:`members were`,` skipped due to the following errors:`]})]}),(0,Z.jsx)(`ul`,{className:`list-inside list-disc space-y-1 text-sm text-muted-foreground`,children:e.errorList.map(e=>(0,Z.jsxs)(`li`,{children:[e.message,` (`,e.count,`)`]},e.message))})]})]}),(0,Z.jsx)(K,{className:`mt-5`,children:e.errorCount>0?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(G,{variant:`outline`,asChild:!0,children:(0,Z.jsx)(`a`,{download:e.errorCsvName,href:e.errorCsvUrl,children:`Download error file`})}),e.importedCount===0?(0,Z.jsx)(G,{onClick:t,children:`Try again`}):(0,Z.jsx)(G,{onClick:n,children:`View members`})]}):(0,Z.jsx)(Z.Fragment,{children:e.importedCount===0?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(G,{variant:`outline`,onClick:n,children:`Close`}),(0,Z.jsx)(G,{onClick:t,children:`Try again`})]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(G,{variant:`outline`,onClick:t,children:`Upload another file`}),(0,Z.jsx)(G,{onClick:n,children:`View members`})]})})})]})}function kn({errorMessage:e,showTryAgainButton:t,onTryAgain:n,onClose:r}){return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`mt-5`,children:(0,Z.jsxs)(`div`,{className:`flex items-start gap-2 text-sm text-red-600`,children:[(0,Z.jsx)(Ne,{className:`mt-0.5 size-4 shrink-0`}),(0,Z.jsx)(`p`,{children:e})]})}),(0,Z.jsxs)(K,{className:`mt-5`,children:[t&&(0,Z.jsx)(G,{variant:`outline`,onClick:n,children:`Try again`}),(0,Z.jsx)(G,{onClick:r,children:`OK`})]})]})}var An=t(((e,t)=>{((n,r)=>{typeof define==`function`&&define.amd?define([],r):typeof t==`object`&&e!==void 0?t.exports=r():n.Papa=r()})(e,function e(){var t=typeof self<`u`?self:typeof window<`u`?window:t===void 0?{}:t,n,r=!t.document&&!!t.postMessage,i=t.IS_PAPA_WORKER||!1,a={},o=0,s={};function c(e){return e.charCodeAt(0)===65279?e.slice(1):e}function l(e){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine=``,this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},function(e){var t=b(e);t.chunkSize=parseInt(t.chunkSize),e.step||e.chunk||(t.chunkSize=null),this._handle=new m(t),(this._handle.streamer=this)._config=t}.call(this,e),this.parseChunk=function(e,n){var r=parseInt(this._config.skipFirstNLines)||0;if(this.isFirstChunk&&0<r){let t=this._config.newline;t||=(a=this._config.quoteChar||`"`,this._handle.guessLineEndings(e,a)),e=[...e.split(t).slice(r)].join(t)}this.isFirstChunk&&S(this._config.beforeFirstChunk)&&(a=this._config.beforeFirstChunk(e))!==void 0&&(e=a),this.isFirstChunk=!1,this._halted=!1;var r=this._partialLine+e,a=(this._partialLine=``,this._handle.parse(r,this._baseIndex,!this._finished));if(!this._handle.paused()&&!this._handle.aborted()){if(e=a.meta.cursor,r=(this._finished||(this._partialLine=r.substring(e-this._baseIndex),this._baseIndex=e),a&&a.data&&(this._rowCount+=a.data.length),this._finished||this._config.preview&&this._rowCount>=this._config.preview),i)t.postMessage({results:a,workerId:s.WORKER_ID,finished:r});else if(S(this._config.chunk)&&!n){if(this._config.chunk(a,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);this._completeResults=a=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(a.data),this._completeResults.errors=this._completeResults.errors.concat(a.errors),this._completeResults.meta=a.meta),this._completed||!r||!S(this._config.complete)||a&&a.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),r||a&&a.meta.paused||this._nextChunk(),a}this._halted=!0},this._sendError=function(e){S(this._config.error)?this._config.error(e):i&&this._config.error&&t.postMessage({workerId:s.WORKER_ID,error:e,finished:!1})}}function u(e){var t;(e||={}).chunkSize||(e.chunkSize=s.RemoteChunkSize),l.call(this,e),this._nextChunk=r?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(t=new XMLHttpRequest,this._config.withCredentials&&(t.withCredentials=this._config.withCredentials),r||(t.onload=x(this._chunkLoaded,this),t.onerror=x(this._chunkError,this)),t.open(this._config.downloadRequestBody?`POST`:`GET`,this._input,!r),this._config.downloadRequestHeaders){var e,n=this._config.downloadRequestHeaders;for(e in n)t.setRequestHeader(e,n[e])}var i;this._config.chunkSize&&(i=this._start+this._config.chunkSize-1,t.setRequestHeader(`Range`,`bytes=`+this._start+`-`+i));try{t.send(this._config.downloadRequestBody)}catch(e){this._chunkError(e.message)}r&&t.status===0&&this._chunkError()}},this._chunkLoaded=function(){t.readyState===4&&(t.status<200||400<=t.status?this._chunkError():(this._start+=this._config.chunkSize||t.responseText.length,this._finished=!this._config.chunkSize||this._start>=(e=>(e=e.getResponseHeader(`Content-Range`))===null?-1:parseInt(e.substring(e.lastIndexOf(`/`)+1)))(t),this.parseChunk(t.responseText)))},this._chunkError=function(e){e=t.statusText||e,this._sendError(Error(e))}}function d(e){(e||={}).chunkSize||(e.chunkSize=s.LocalChunkSize),l.call(this,e);var t,n,r=typeof FileReader<`u`;this.stream=function(e){this._input=e,n=e.slice||e.webkitSlice||e.mozSlice,r?((t=new FileReader).onload=x(this._chunkLoaded,this),t.onerror=x(this._chunkError,this)):t=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input,i=(this._config.chunkSize&&(i=Math.min(this._start+this._config.chunkSize,this._input.size),e=n.call(e,this._start,i)),t.readAsText(e,this._config.encoding));r||this._chunkLoaded({target:{result:i}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(t.error)}}function f(e){var t;l.call(this,e||={}),this.stream=function(e){return t=e,this._nextChunk()},this._nextChunk=function(){var e,n;if(!this._finished)return e=this._config.chunkSize,t=e?(n=t.substring(0,e),t.substring(e)):(n=t,``),this._finished=!t,this.parseChunk(n)}}function p(e){l.call(this,e||={});var t=[],n=!0,r=!1;this.pause=function(){l.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){l.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on(`data`,this._streamData),this._input.on(`end`,this._streamEnd),this._input.on(`error`,this._streamError)},this._checkIsFinished=function(){r&&t.length===1&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):n=!0},this._streamData=x(function(e){try{t.push(typeof e==`string`?e:e.toString(this._config.encoding)),n&&(n=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}},this),this._streamError=x(function(e){this._streamCleanUp(),this._sendError(e)},this),this._streamEnd=x(function(){this._streamCleanUp(),r=!0,this._streamData(``)},this),this._streamCleanUp=x(function(){this._input.removeListener(`data`,this._streamData),this._input.removeListener(`end`,this._streamEnd),this._input.removeListener(`error`,this._streamError)},this)}function m(e){var t,n,r,i,a=2**53,o=-a,l=/^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/,u=/^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/,d=this,f=0,p=0,m=!1,_=!1,v=[],y={data:[],errors:[],meta:{}};function x(t){return e.skipEmptyLines===`greedy`?t.join(``).trim()===``:t.length===1&&t[0].length===0}function C(){if(y&&r&&(T(`Delimiter`,`UndetectableDelimiter`,`Unable to auto-detect delimiting character; defaulted to '`+s.DefaultDelimiter+`'`),r=!1),e.skipEmptyLines&&(y.data=y.data.filter(function(e){return!x(e)})),w()){if(y)if(Array.isArray(y.data[0])){for(var t=0;w()&&t<y.data.length;t++)y.data[t].forEach(n);y.data.splice(0,1)}else y.data.forEach(n);function n(t,n){t=c(t),S(e.transformHeader)&&(t=e.transformHeader(t,n)),v.push(t)}}function n(t,n){for(var r=e.header?{}:[],i=0;i<t.length;i++){var s=i,c=t[i],c=((t,n)=>(t=>(e.dynamicTypingFunction&&e.dynamicTyping[t]===void 0&&(e.dynamicTyping[t]=e.dynamicTypingFunction(t)),!0===(e.dynamicTyping[t]||e.dynamicTyping)))(t)?n===`true`||n===`TRUE`||n!==`false`&&n!==`FALSE`&&((e=>{if(l.test(e)&&(e=parseFloat(e),o<e&&e<a))return 1})(n)?parseFloat(n):u.test(n)?new Date(n):n===``?null:n):n)(s=e.header?i>=v.length?`__parsed_extra`:v[i]:s,c=e.transform?e.transform(c,s):c);s===`__parsed_extra`?(r[s]=r[s]||[],r[s].push(c)):r[s]=c}return e.header&&(i>v.length?T(`FieldMismatch`,`TooManyFields`,`Too many fields: expected `+v.length+` fields but parsed `+i,p+n):i<v.length&&T(`FieldMismatch`,`TooFewFields`,`Too few fields: expected `+v.length+` fields but parsed `+i,p+n)),r}var i;y&&(e.header||e.dynamicTyping||e.transform)&&(i=1,!y.data.length||Array.isArray(y.data[0])?(y.data=y.data.map(n),i=y.data.length):y.data=n(y.data,0),e.header&&y.meta&&(y.meta.fields=v),p+=i)}function w(){return e.header&&v.length===0}function T(e,t,n,r){e={type:e,code:t,message:n},r!==void 0&&(e.row=r),y.errors.push(e)}S(e.step)&&(i=e.step,e.step=function(t){y=t,w()?C():(C(),y.data.length!==0&&(f+=t.data.length,e.preview&&f>e.preview?n.abort():(y.data=y.data[0],i(y,d))))}),this.parse=function(i,a,o){var c=e.quoteChar||`"`,c=(e.newline||=this.guessLineEndings(i,c),r=!1,e.delimiter?S(e.delimiter)&&(e.delimiter=e.delimiter(i),y.meta.delimiter=e.delimiter):((c=((t,n,r,i,a)=>{var o,c,l,u;a||=[`,`,` `,`|`,`;`,s.RECORD_SEP,s.UNIT_SEP];for(var d=0;d<a.length;d++){for(var f,p=a[d],m=0,h=0,_=0,v=(l=void 0,new g({comments:i,delimiter:p,newline:n,preview:10}).parse(t)),y=0;y<v.data.length;y++)r&&x(v.data[y])?_++:(f=v.data[y].length,h+=f,l===void 0?l=f:0<f&&(m+=Math.abs(f-l),l=f));0<v.data.length&&(h/=v.data.length-_),(c===void 0||m<=c)&&(u===void 0||u<h)&&1.99<h&&(c=m,o=p,u=h)}return{successful:!!(e.delimiter=o),bestDelimiter:o}})(i,e.newline,e.skipEmptyLines,e.comments,e.delimitersToGuess)).successful?e.delimiter=c.bestDelimiter:(r=!0,e.delimiter=s.DefaultDelimiter),y.meta.delimiter=e.delimiter),b(e));return e.preview&&e.header&&c.preview++,t=i,n=new g(c),y=n.parse(t,a,o),C(),m?{meta:{paused:!0}}:y||{meta:{paused:!1}}},this.paused=function(){return m},this.pause=function(){m=!0,n.abort(),t=S(e.chunk)?``:t.substring(n.getCharIndex())},this.resume=function(){d.streamer._halted?(m=!1,d.streamer.parseChunk(t,!0)):setTimeout(d.resume,3)},this.aborted=function(){return _},this.abort=function(){_=!0,n.abort(),y.meta.aborted=!0,S(e.complete)&&e.complete(y),t=``},this.guessLineEndings=function(e,t){e=e.substring(0,1048576);var t=RegExp(h(t)+`([^]*?)`+h(t),`gm`),n=(e=e.replace(t,``)).split(`\r`),t=e.split(`
1
+ import{o as e,t}from"./rolldown-runtime-DAXXjFlN.js";import{t as n}from"./react-Bb3IsNbi.js";import{t as r}from"./jsx-runtime-DX3WBWVO.js";import{g as i}from"./framework-provider-CmtnPXIT.js";import{_ as a,a as o,g as s,l as c,p as l,v as u,y as d}from"./hooks-BApwwBE0.js";import{n as f}from"./dist-Ndy-PuGN.js";import{t as p}from"./nql-BsgFMd93.js";import{n as m}from"./offers-CrY6nSRR.js";import{f as h,g,l as _}from"./chunk-KS7C4IRE-DG9HTHQ3.js";import{a as v}from"./router-provider-C1R4AZ2o.js";import{c as y,f as b,p as x,v as S}from"./dist-DGzPJ_bO.js";import{t as C}from"./box-BWbhXh21.js";import{t as w}from"./container-BYz2Ed39.js";import{n as T}from"./filters-bXkkWro8.js";import{c as E,i as D,n as O,r as k,s as A}from"./switch-t-WyENU2.js";import{t as j}from"./dropzone-BmCXnw6J.js";import{i as M,n as N,o as P,s as F,t as I}from"./select-C1qDZnW4.js";import{t as L}from"./empty-indicator-oX1u1Pkn.js";import{i as ee,n as R,t as z}from"./input-group-CGOXcy4l.js";import{a as B,c as V,n as te,r as H,s as U,t as W}from"./table-DxUL78jU.js";import{m as ne}from"./users-CcSCQFcQ.js";import{$r as re,A as ie,Aa as ae,Ai as oe,C as se,Co as ce,Cr as le,Dr as ue,Ei as de,En as fe,Er as pe,Fa as me,Fi as he,Fo as ge,Go as _e,Gr as ve,Hi as ye,Jn as be,Ki as xe,La as Se,Li as Ce,Lo as we,Ls as Te,Nr as G,On as Ee,Po as De,Qo as Oe,S as ke,Sn as K,Ss as Ae,Tr as q,Va as je,Xa as Me,Xn as Ne,Yr as Pe,Za as Fe,Zo as Ie,b as Le,cn as Re,cs as ze,ea as Be,eo as Ve,er as He,fn as Ue,g as We,gr as Ge,h as Ke,hr as qe,jo as Je,ki as Ye,ln as Xe,ls as Ze,m as Qe,ma as $e,p as et,pa as tt,pn as nt,pr as rt,qi as it,qn as at,qr as ot,rr as st,so as ct,ss as lt,ta as ut,ti as dt,un as ft,us as pt,w as mt,wa as ht,wr as gt,x as _t,xn as vt,xo as yt,xr as bt,y as xt,z as St}from"./index-ukW_0Uie.js";import{t as J}from"./page-header-op0eN36I.js";import{C as Ct,S as wt,_ as Tt,a as Et,b as Dt,c as Ot,d as kt,f as Y,g as At,h as jt,i as Mt,l as Nt,m as Pt,n as Ft,o as It,p as Lt,r as Rt,s as zt,t as Bt,u as Vt,v as Ht,w as Ut,x as Wt,y as Gt}from"./filters-CuB-A7ma.js";import{r as Kt}from"./newsletters-D1jbtV-h.js";import{t as qt}from"./list-page-B6ANtzkd.js";import{a as Jt,c as Yt,i as Xt,n as Zt,t as Qt}from"./filter-sources-Bieps75g.js";import{i as $t,n as en,r as tn,t as nn}from"./virtual-list-Dhuh9fGx.js";import{t as rn}from"./get-site-timezone-HgL0jI_F.js";import{n as an,r as on,t as sn}from"./label-picker-Uq91atex.js";import{t as cn}from"./member-route-0Aa52Ntz.js";var X=e(n(),1),Z=r();function ln({open:e,memberCount:t,onOpenChange:n,onConfirm:r,isLoading:i=!1}){let[a,o]=(0,X.useState)([]),s=an({selectedSlugs:a,onSelectionChange:o}),c=(0,X.useCallback)(e=>{e||o([]),n(e)},[n]);return(0,Z.jsx)(bt,{open:e,onOpenChange:c,children:(0,Z.jsxs)(le,{className:`gap-5`,onOpenAutoFocus:e=>e.preventDefault(),children:[(0,Z.jsx)(pe,{children:(0,Z.jsxs)(ue,{children:[`Add label to `,b(t),` `,t===1?`member`:`members`]})}),(0,Z.jsx)(on,{isCreating:s.isCreating,labels:s.labels,optionSource:s.optionSource,resolvedSelectedLabels:s.resolvedSelectedLabels,selectedSlugs:a,onCreate:s.createLabel,onDelete:s.deleteLabel,onEdit:s.editLabel,onToggle:s.toggleLabel}),(0,Z.jsxs)(q,{children:[(0,Z.jsx)(G,{variant:`outline`,onClick:()=>c(!1),children:`Cancel`}),(0,Z.jsx)(G,{disabled:a.length===0||i,onClick:()=>{let e=s.labels.filter(e=>a.includes(e.slug)).map(e=>e.id);e.length>0&&r(e)},children:i?`Adding...`:a.length>1?`Add ${b(a.length)} labels`:`Add label`})]})]})})}function un({open:e,memberCount:t,nql:n,search:r,onOpenChange:i,onConfirm:a,isLoading:o=!1}){let[s,c]=(0,X.useState)([]),{data:l,isLoading:u}=_t({searchParams:{...n?{filter:n}:{},...r?{search:r}:{},include:`labels`,limit:`all`,fields:`id`},enabled:e}),d=(0,X.useMemo)(()=>{let e=new Set;for(let t of l?.members||[])for(let n of t.labels||[])e.add(n.slug);return e},[l]),f=an({selectedSlugs:s,onSelectionChange:c}),p={...f.optionSource,options:f.optionSource.options.filter(e=>d.has(String(e.value)))},m=(0,X.useCallback)(e=>{e||c([]),i(e)},[i]),h=()=>{let e=f.labels.filter(e=>s.includes(e.slug)).map(e=>e.id);e.length>0&&a(e)};return(0,Z.jsx)(bt,{open:e,onOpenChange:m,children:(0,Z.jsxs)(le,{className:`gap-5`,onOpenAutoFocus:e=>e.preventDefault(),children:[(0,Z.jsx)(pe,{children:(0,Z.jsxs)(ue,{children:[`Remove label from `,b(t),` `,t===1?`member`:`members`]})}),(0,Z.jsx)(on,{labels:f.labels.filter(e=>d.has(e.slug)),optionSource:{...p,isInitialLoad:p.isInitialLoad||u},resolvedSelectedLabels:f.resolvedSelectedLabels.filter(e=>d.has(e.slug)),selectedSlugs:s,onDelete:f.deleteLabel,onEdit:f.editLabel,onToggle:f.toggleLabel}),(0,Z.jsxs)(q,{children:[(0,Z.jsx)(G,{variant:`outline`,onClick:()=>m(!1),children:`Cancel`}),(0,Z.jsx)(G,{disabled:s.length===0||o,onClick:h,children:o?`Removing...`:s.length>1?`Remove ${b(s.length)} labels`:`Remove label`})]})]})})}function dn({open:e,newsletters:t,memberCount:n,onOpenChange:r,onConfirm:i,isLoading:a=!1}){let[o,s]=(0,X.useState)(`all`),[c,l]=(0,X.useState)([]),[u,d]=(0,X.useState)(``),[f,p]=(0,X.useState)(!1),m=(0,X.useRef)(null),h=(0,X.useRef)(null);(0,X.useEffect)(()=>{e||(s(`all`),l([]),d(``),p(!1))},[e]),(0,X.useEffect)(()=>{if(!f)return;let e=e=>{m.current&&!m.current.contains(e.target)&&p(!1)};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[f]);let g=e=>{e||(s(`all`),l([]),d(``),p(!1)),r(e)},_=(0,X.useCallback)(e=>{l(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),v=t.length>=2,y=()=>{i(!v||o===`all`?null:c)},b=a||v&&o===`selected`&&c.length===0,x=n===1?`member`:`members`;return(0,Z.jsx)(bt,{open:e,onOpenChange:g,children:(0,Z.jsxs)(le,{className:`gap-5`,children:[(0,Z.jsx)(pe,{children:(0,Z.jsx)(ue,{children:`Unsubscribe members`})}),v?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{"aria-label":`Unsubscribe scope`,className:`flex flex-col gap-3`,role:`radiogroup`,children:[(0,Z.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-3`,children:[(0,Z.jsx)(`input`,{checked:o===`all`,className:`mt-0.5 size-4 cursor-pointer accent-black`,name:`unsubscribe-mode`,type:`radio`,value:`all`,onChange:()=>s(`all`)}),(0,Z.jsxs)(`div`,{className:`flex flex-col`,children:[(0,Z.jsx)(`span`,{className:`text-sm font-semibold`,children:`Unsubscribe from all newsletters`}),(0,Z.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[n.toLocaleString(),` `,x,` will be unsubscribed from`,` `,t.length,` `,t.length===1?`newsletter`:`newsletters`,`.`]})]})]}),(0,Z.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-3`,children:[(0,Z.jsx)(`input`,{checked:o===`selected`,className:`mt-0.5 size-4 cursor-pointer accent-black`,name:`unsubscribe-mode`,type:`radio`,value:`selected`,onChange:()=>s(`selected`)}),(0,Z.jsxs)(`div`,{className:`flex flex-col`,children:[(0,Z.jsx)(`span`,{className:`text-sm font-semibold`,children:`Unsubscribe from selected newsletters`}),(0,Z.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`Select which newsletters to unsubscribe`,` `,n.toLocaleString(),` `,x,` from.`]})]})]})]}),o===`selected`&&(0,Z.jsxs)(`div`,{ref:m,className:`relative space-y-2`,children:[(0,Z.jsx)(`label`,{className:`text-sm font-semibold`,htmlFor:`newsletter-search`,children:`Newsletters`}),(0,Z.jsxs)(`div`,{className:`flex min-h-9 w-full cursor-text flex-wrap items-center gap-1.5 rounded-md border bg-background px-3 py-1 text-sm`,onClick:()=>{h.current?.focus(),p(!0)},children:[c.map(e=>{let n=t.find(t=>t.id===e);return n?(0,Z.jsxs)(be,{className:`cursor-pointer gap-1 pr-1`,variant:`outline`,onClick:t=>{t.stopPropagation(),_(e)},children:[n.name,(0,Z.jsx)(de,{className:`size-3`})]},e):null}),(0,Z.jsx)(`input`,{ref:h,className:`min-w-[80px] flex-1 bg-transparent py-1 text-sm outline-hidden placeholder:text-muted-foreground`,id:`newsletter-search`,placeholder:c.length===0?`Search newsletters...`:``,value:u,onChange:e=>{d(e.target.value),f||p(!0)},onFocus:()=>p(!0),onKeyDown:e=>{e.key===`Escape`&&(p(!1),h.current?.blur()),e.key===`Backspace`&&!u&&c.length>0&&_(c[c.length-1])}})]}),f&&(0,Z.jsx)(`div`,{className:`absolute top-full left-0 z-50 mt-1 w-full rounded-md border bg-white shadow-md dark:bg-gray-950`,children:(0,Z.jsx)(O,{shouldFilter:!1,children:(0,Z.jsxs)(E,{className:`max-h-64 overflow-y-auto`,children:[(0,Z.jsx)(D,{children:`No newsletters found.`}),t.filter(e=>e.name.toLowerCase().includes(u.toLowerCase())).map(e=>(0,Z.jsxs)(A,{value:e.name,onSelect:()=>_(e.id),children:[e.name,c.includes(e.id)&&(0,Z.jsx)(k,{})]},e.id))]})})})]})]}):(0,Z.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Are you sure you want to unsubscribe`,` `,n.toLocaleString(),` `,x,` from all newsletters? They will no longer receive any email newsletters from you.`]}),(0,Z.jsxs)(q,{children:[(0,Z.jsx)(G,{variant:`outline`,onClick:()=>g(!1),children:`Cancel`}),(0,Z.jsx)(G,{disabled:b,variant:`destructive`,onClick:y,children:a?`Unsubscribing...`:`Unsubscribe`})]})]})})}function fn({open:e,memberCount:t,onOpenChange:n,onConfirm:r,onExportBackup:i,isLoading:a=!1}){let[o,s]=(0,X.useState)(!1),c=e=>{e||s(!1),n(e)},l=async()=>{if(!(t<1||a||o))try{s(!0),await i(),r()}catch{}finally{s(!1)}};return(0,Z.jsx)(bt,{open:e,onOpenChange:c,children:(0,Z.jsxs)(le,{className:`gap-5`,children:[(0,Z.jsx)(pe,{children:(0,Z.jsx)(ue,{children:`Delete selected members?`})}),t>0?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`p`,{children:[`You're about to delete `,(0,Z.jsxs)(`strong`,{children:[t.toLocaleString(),` `,t===1?`member`:`members`]}),`. This is permanent! All Ghost data will be deleted, this will have no effect on subscriptions in Stripe.`]}),(0,Z.jsx)(`p`,{children:`A backup of your selection will be automatically downloaded to your device before deletion.`})]}):(0,Z.jsx)(`p`,{children:`No members are selected.`}),(0,Z.jsxs)(q,{children:[(0,Z.jsx)(G,{variant:`outline`,onClick:()=>c(!1),children:`Cancel`}),(0,Z.jsx)(G,{disabled:a||o||t<1,variant:`destructive`,onClick:()=>void l(),children:a||o?`Deleting...`:`Download backup & delete members`})]})]})})}function pn({fileError:e,onClose:t,onDropAccepted:n,onDropRejected:r}){return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`mt-5 space-y-5`,children:[(0,Z.jsxs)(at,{variant:`info`,children:[`Need some help? `,(0,Z.jsx)(`a`,{className:`font-semibold underline`,href:`https://ghost.org/help/import-members/`,rel:`noopener noreferrer`,target:`_blank`,children:`Learn more`}),` about importing members or `,(0,Z.jsx)(`a`,{className:`font-semibold underline`,href:`https://static.ghost.org/v4.0.0/files/member-import-template.csv`,rel:`noopener noreferrer`,target:`_blank`,children:`download a sample CSV file`}),`.`]}),e&&(0,Z.jsxs)(`div`,{className:`flex items-start gap-2 text-sm text-red-600`,children:[(0,Z.jsx)(ye,{className:`mt-0.5 size-4 shrink-0`}),(0,Z.jsx)(`p`,{children:e})]}),(0,Z.jsx)(j,{accept:{"text/csv":[`.csv`],"application/vnd.ms-excel":[`.csv`]},"aria-label":`Select or drop a CSV file`,onDropAccepted:e=>{let t=e[0];t&&n(t)},onDropRejected:r,children:({isDragActive:e,isDragReject:t})=>(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(Ce,{className:`mb-2 size-6 text-grey-600`}),(0,Z.jsx)(`span`,{className:`text-sm text-grey-700`,children:t?`The file type you uploaded is not supported`:e?`Drop CSV file to upload`:`Select or drop a CSV file`})]})})]}),(0,Z.jsx)(q,{className:`mt-5`,children:(0,Z.jsx)(G,{variant:`outline`,onClick:t,children:`Close`})})]})}var mn=[{label:`Email`,value:`email`},{label:`Name`,value:`name`},{label:`Note`,value:`note`},{label:`Subscribed to emails`,value:`subscribed_to_emails`},{label:`Stripe Customer ID`,value:`stripe_customer_id`},{label:`Complimentary plan`,value:`complimentary_plan`},{label:`Labels`,value:`labels`},{label:`Created at`,value:`created_at`},{label:`Gift ID`,value:`gift_id`}],hn={label:`Tier`,value:`import_tier`},gn=[`email`,`name`,`note`,`subscribed_to_emails`,`complimentary_plan`,`stripe_customer_id`,`labels`,`created_at`,`gift_id`];function _n({importMemberTier:e=!1}={}){return[...gn,...e?[hn.value]:[]]}function vn({importMemberTier:e=!1}={}){return[...mn,...e?[hn]:[]]}var yn=[`email`],bn=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,xn=class e{_mapping;constructor(e){if(this._mapping={},e)for(let[t,n]of Object.entries(e))this._mapping[n]=t}get(e){return this._mapping[e]??null}toJSON(){return{...this._mapping}}getKeyByValue(e){for(let[t,n]of Object.entries(this._mapping))if(n===e)return t;return null}updateMapping(t,n){let r=new e({});if(r._mapping={...this._mapping},n)for(let e in r._mapping)r._mapping[e]===n&&(r._mapping[e]=null);return r._mapping[t]=n,r}};function Sn(e,t=30){if(!e||e.length<=t)return e;let n=[];return Object.keys(e[0]).forEach(r=>{let i=e.filter(e=>e[r]&&e[r].trim()!==``),a=[];if(i.length<=t)a=i;else{let e=Math.floor(t/3),n=e,r=t-e-n,o=i.slice(0,e),s=n>0?i.slice(-n):[],c=Math.max(0,Math.floor(i.length/2)-Math.floor(r/2)),l=i.slice(c,c+r);a=[...o,...l,...s].slice(0,t)}a.forEach((e,t)=>{n[t]||(n[t]={}),n[t][r]=e[r]})}),n}function Cn(e,t={}){let n=Sn(e),r={},i=_n(t);if(e.length>0)for(let t of Object.keys(e[0])){if(!r.name&&/name/i.test(t)){r.name=t;continue}!r[t]&&i.includes(t)&&!yn.includes(t)&&(r[t]=t)}let a=0;for(;a<=n.length-1&&!r.email;){let e=n[a];for(let[t,n]of Object.entries(e))!r.email&&n&&bn.test(n)&&(r.email=t);a+=1}return r}function wn(e){return e.replace(`Value in [members.email] cannot be blank.`,`Missing email address`).replace(`Value in [members.note] exceeds maximum length of 2000 characters.`,`Note is too long`).replace(`Value in [members.subscribed] must be one of true, false, 0 or 1.`,`Value of "Subscribed to emails" must be "true" or "false"`).replace(`Validation (isEmail) failed for email`,`Invalid email address`).replace(/No such customer:[^,]*/,`Could not find Stripe customer`)}function Tn({status:e,fileData:t,mapping:n,mappingError:r,showMappingErrors:i,membersCount:a,dataPreviewIndex:o,hasPrevRecord:s,hasNextRecord:c,fieldMappings:l,labelPicker:u,onUpdateMapping:d,onDataPreviewIndexChange:f,onStartOver:p,onUpload:m}){let h=t&&t.length>0&&n?Object.entries(t[o]||{}).map(([e,t])=>({key:e,value:t,mapTo:n.get(e)})):[];return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`mt-5 space-y-5`,children:t===null?(0,Z.jsx)(`div`,{className:`flex items-center justify-center rounded-md border bg-muted p-10`,children:(0,Z.jsx)(He,{size:`md`})}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:y(`overflow-hidden rounded-md border`,i&&r&&`border-red-500`),children:(0,Z.jsx)(`div`,{className:`max-h-[400px] overflow-auto`,children:(0,Z.jsxs)(W,{className:`table-fixed`,children:[(0,Z.jsx)(U,{children:(0,Z.jsxs)(V,{children:[(0,Z.jsx)(B,{className:`w-1/3`,children:`Field`}),(0,Z.jsx)(B,{className:`w-1/3`,children:(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsxs)(`span`,{children:[`Sample data `,(0,Z.jsxs)(`span`,{className:`text-muted-foreground`,children:[`(#`,b(o+1),`)`]})]}),(0,Z.jsxs)(`div`,{className:`flex items-center`,children:[(0,Z.jsx)(`button`,{"aria-label":`Show previous sample row`,className:y(`rounded p-0.5 hover:bg-muted`,!s&&`cursor-default opacity-30`),disabled:!s||e===`UPLOADING`,type:`button`,onClick:()=>f(o-1),children:(0,Z.jsx)(Oe,{className:`size-4`})}),(0,Z.jsx)(`button`,{"aria-label":`Show next sample row`,className:y(`rounded p-0.5 hover:bg-muted`,!c&&`cursor-default opacity-30`),disabled:!c||e===`UPLOADING`,type:`button`,onClick:()=>f(o+1),children:(0,Z.jsx)(Ie,{className:`size-4`})})]})]})}),(0,Z.jsx)(B,{className:`w-1/3`,children:`Import as`})]})}),(0,Z.jsx)(te,{children:h.length>0?h.map(t=>(0,Z.jsxs)(V,{className:y(!t.mapTo&&`bg-muted`),children:[(0,Z.jsx)(H,{className:`text-sm font-medium break-all`,children:t.key}),(0,Z.jsx)(H,{className:y(`text-sm break-all`,!t.value&&`text-muted-foreground`),children:t.value||`\xA0`}),(0,Z.jsx)(H,{children:(0,Z.jsxs)(I,{disabled:e===`UPLOADING`,value:t.mapTo||`__not_imported__`,onValueChange:e=>{d(t.key,e===`__not_imported__`?null:e)},children:[(0,Z.jsx)(P,{className:y(`h-8 text-sm`,!t.mapTo&&`text-muted-foreground`),children:(0,Z.jsx)(F,{})}),(0,Z.jsxs)(N,{children:[(0,Z.jsx)(M,{value:`__not_imported__`,children:`Not imported`}),l.map(e=>(0,Z.jsx)(M,{value:e.value,children:e.label},e.value))]})]})})]},t.key)):(0,Z.jsx)(V,{children:(0,Z.jsx)(H,{className:`text-muted-foreground`,colSpan:3,children:`No data found in the uploaded CSV.`})})})]})})}),i&&r&&(0,Z.jsx)(`p`,{className:`text-sm text-red-600`,children:r}),a>0&&(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`If an email address in your CSV matches an existing member, they will be updated with the mapped values.`}),(0,Z.jsxs)(`div`,{className:`mt-5`,children:[(0,Z.jsx)(`label`,{className:`mb-1 block text-sm font-semibold`,children:`Label these members`}),(0,Z.jsx)(on,{isCreating:u.isCreating,labels:u.labels,optionSource:u.optionSource,resolvedSelectedLabels:u.resolvedSelectedLabels,selectedSlugs:u.selectedSlugs,onCreate:u.createLabel,onDelete:u.deleteLabel,onEdit:u.editLabel,onToggle:u.toggleLabel})]})]})}),(0,Z.jsxs)(q,{className:`mt-5`,children:[(0,Z.jsx)(G,{disabled:e===`UPLOADING`,variant:`outline`,onClick:p,children:`Start over`}),(0,Z.jsx)(G,{disabled:e===`UPLOADING`||a===0,onClick:m,children:e===`UPLOADING`?(0,Z.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(He,{color:`light`,size:`sm`}),`Uploading`]}):a>0?`Import ${b(a)} ${a===1?`member`:`members`}`:`Import members`})]})]})}function En({onUploadAnotherFile:e,onClose:t}){return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`mt-5`,children:(0,Z.jsx)(`p`,{className:`text-sm`,children:`Your import is being processed, and you'll receive a confirmation email as soon as it's complete. Usually this only takes a few minutes, but larger imports may take longer.`})}),(0,Z.jsxs)(q,{className:`mt-5`,children:[(0,Z.jsx)(G,{variant:`outline`,onClick:e,children:`Upload another file`}),(0,Z.jsx)(G,{onClick:t,children:`Got it`})]})]})}var Dn=()=>({status:`INIT`,file:null,fileData:null,mapping:null,selectedLabelSlugs:[],dataPreviewIndex:0,mappingError:null,showMappingErrors:!1,importResponse:null,errorMessage:null,errorHeader:`Import error`,showTryAgainButton:!0,dragOver:!1,fileError:null});function On({importResponse:e,onReset:t,onClose:n}){return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`mt-5 space-y-4`,children:[e.importedCount===0?(0,Z.jsxs)(`p`,{className:`text-sm`,children:[`No members were added`,e.errorCount>0?` due to the following errors:`:`.`]}):(0,Z.jsxs)(`p`,{className:`text-sm`,children:[`A total of `,(0,Z.jsx)(`strong`,{children:e.importedCount.toLocaleString()}),` `,e.importedCount===1?`person was`:`people were`,` successfully added or updated in your list of members, and now have access to your site.`]}),e.errorCount>0&&(0,Z.jsxs)(Z.Fragment,{children:[e.importedCount>0&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`hr`,{className:`border-grey-200`}),(0,Z.jsxs)(`p`,{className:`text-sm`,children:[(0,Z.jsx)(`strong`,{children:e.errorCount.toLocaleString()}),` `,e.errorCount===1?`member was`:`members were`,` skipped due to the following errors:`]})]}),(0,Z.jsx)(`ul`,{className:`list-inside list-disc space-y-1 text-sm text-muted-foreground`,children:e.errorList.map(e=>(0,Z.jsxs)(`li`,{children:[e.message,` (`,e.count,`)`]},e.message))})]})]}),(0,Z.jsx)(q,{className:`mt-5`,children:e.errorCount>0?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(G,{variant:`outline`,asChild:!0,children:(0,Z.jsx)(`a`,{download:e.errorCsvName,href:e.errorCsvUrl,children:`Download error file`})}),e.importedCount===0?(0,Z.jsx)(G,{onClick:t,children:`Try again`}):(0,Z.jsx)(G,{onClick:n,children:`View members`})]}):(0,Z.jsx)(Z.Fragment,{children:e.importedCount===0?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(G,{variant:`outline`,onClick:n,children:`Close`}),(0,Z.jsx)(G,{onClick:t,children:`Try again`})]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(G,{variant:`outline`,onClick:t,children:`Upload another file`}),(0,Z.jsx)(G,{onClick:n,children:`View members`})]})})})]})}function kn({errorMessage:e,showTryAgainButton:t,onTryAgain:n,onClose:r}){return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`mt-5`,children:(0,Z.jsxs)(`div`,{className:`flex items-start gap-2 text-sm text-red-600`,children:[(0,Z.jsx)(ye,{className:`mt-0.5 size-4 shrink-0`}),(0,Z.jsx)(`p`,{children:e})]})}),(0,Z.jsxs)(q,{className:`mt-5`,children:[t&&(0,Z.jsx)(G,{variant:`outline`,onClick:n,children:`Try again`}),(0,Z.jsx)(G,{onClick:r,children:`OK`})]})]})}var An=t(((e,t)=>{((n,r)=>{typeof define==`function`&&define.amd?define([],r):typeof t==`object`&&e!==void 0?t.exports=r():n.Papa=r()})(e,function e(){var t=typeof self<`u`?self:typeof window<`u`?window:t===void 0?{}:t,n,r=!t.document&&!!t.postMessage,i=t.IS_PAPA_WORKER||!1,a={},o=0,s={};function c(e){return e.charCodeAt(0)===65279?e.slice(1):e}function l(e){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine=``,this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},function(e){var t=b(e);t.chunkSize=parseInt(t.chunkSize),e.step||e.chunk||(t.chunkSize=null),this._handle=new m(t),(this._handle.streamer=this)._config=t}.call(this,e),this.parseChunk=function(e,n){var r=parseInt(this._config.skipFirstNLines)||0;if(this.isFirstChunk&&0<r){let t=this._config.newline;t||=(a=this._config.quoteChar||`"`,this._handle.guessLineEndings(e,a)),e=[...e.split(t).slice(r)].join(t)}this.isFirstChunk&&S(this._config.beforeFirstChunk)&&(a=this._config.beforeFirstChunk(e))!==void 0&&(e=a),this.isFirstChunk=!1,this._halted=!1;var r=this._partialLine+e,a=(this._partialLine=``,this._handle.parse(r,this._baseIndex,!this._finished));if(!this._handle.paused()&&!this._handle.aborted()){if(e=a.meta.cursor,r=(this._finished||(this._partialLine=r.substring(e-this._baseIndex),this._baseIndex=e),a&&a.data&&(this._rowCount+=a.data.length),this._finished||this._config.preview&&this._rowCount>=this._config.preview),i)t.postMessage({results:a,workerId:s.WORKER_ID,finished:r});else if(S(this._config.chunk)&&!n){if(this._config.chunk(a,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);this._completeResults=a=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(a.data),this._completeResults.errors=this._completeResults.errors.concat(a.errors),this._completeResults.meta=a.meta),this._completed||!r||!S(this._config.complete)||a&&a.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),r||a&&a.meta.paused||this._nextChunk(),a}this._halted=!0},this._sendError=function(e){S(this._config.error)?this._config.error(e):i&&this._config.error&&t.postMessage({workerId:s.WORKER_ID,error:e,finished:!1})}}function u(e){var t;(e||={}).chunkSize||(e.chunkSize=s.RemoteChunkSize),l.call(this,e),this._nextChunk=r?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(t=new XMLHttpRequest,this._config.withCredentials&&(t.withCredentials=this._config.withCredentials),r||(t.onload=x(this._chunkLoaded,this),t.onerror=x(this._chunkError,this)),t.open(this._config.downloadRequestBody?`POST`:`GET`,this._input,!r),this._config.downloadRequestHeaders){var e,n=this._config.downloadRequestHeaders;for(e in n)t.setRequestHeader(e,n[e])}var i;this._config.chunkSize&&(i=this._start+this._config.chunkSize-1,t.setRequestHeader(`Range`,`bytes=`+this._start+`-`+i));try{t.send(this._config.downloadRequestBody)}catch(e){this._chunkError(e.message)}r&&t.status===0&&this._chunkError()}},this._chunkLoaded=function(){t.readyState===4&&(t.status<200||400<=t.status?this._chunkError():(this._start+=this._config.chunkSize||t.responseText.length,this._finished=!this._config.chunkSize||this._start>=(e=>(e=e.getResponseHeader(`Content-Range`))===null?-1:parseInt(e.substring(e.lastIndexOf(`/`)+1)))(t),this.parseChunk(t.responseText)))},this._chunkError=function(e){e=t.statusText||e,this._sendError(Error(e))}}function d(e){(e||={}).chunkSize||(e.chunkSize=s.LocalChunkSize),l.call(this,e);var t,n,r=typeof FileReader<`u`;this.stream=function(e){this._input=e,n=e.slice||e.webkitSlice||e.mozSlice,r?((t=new FileReader).onload=x(this._chunkLoaded,this),t.onerror=x(this._chunkError,this)):t=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input,i=(this._config.chunkSize&&(i=Math.min(this._start+this._config.chunkSize,this._input.size),e=n.call(e,this._start,i)),t.readAsText(e,this._config.encoding));r||this._chunkLoaded({target:{result:i}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(t.error)}}function f(e){var t;l.call(this,e||={}),this.stream=function(e){return t=e,this._nextChunk()},this._nextChunk=function(){var e,n;if(!this._finished)return e=this._config.chunkSize,t=e?(n=t.substring(0,e),t.substring(e)):(n=t,``),this._finished=!t,this.parseChunk(n)}}function p(e){l.call(this,e||={});var t=[],n=!0,r=!1;this.pause=function(){l.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){l.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on(`data`,this._streamData),this._input.on(`end`,this._streamEnd),this._input.on(`error`,this._streamError)},this._checkIsFinished=function(){r&&t.length===1&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):n=!0},this._streamData=x(function(e){try{t.push(typeof e==`string`?e:e.toString(this._config.encoding)),n&&(n=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}},this),this._streamError=x(function(e){this._streamCleanUp(),this._sendError(e)},this),this._streamEnd=x(function(){this._streamCleanUp(),r=!0,this._streamData(``)},this),this._streamCleanUp=x(function(){this._input.removeListener(`data`,this._streamData),this._input.removeListener(`end`,this._streamEnd),this._input.removeListener(`error`,this._streamError)},this)}function m(e){var t,n,r,i,a=2**53,o=-a,l=/^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/,u=/^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/,d=this,f=0,p=0,m=!1,_=!1,v=[],y={data:[],errors:[],meta:{}};function x(t){return e.skipEmptyLines===`greedy`?t.join(``).trim()===``:t.length===1&&t[0].length===0}function C(){if(y&&r&&(T(`Delimiter`,`UndetectableDelimiter`,`Unable to auto-detect delimiting character; defaulted to '`+s.DefaultDelimiter+`'`),r=!1),e.skipEmptyLines&&(y.data=y.data.filter(function(e){return!x(e)})),w()){if(y)if(Array.isArray(y.data[0])){for(var t=0;w()&&t<y.data.length;t++)y.data[t].forEach(n);y.data.splice(0,1)}else y.data.forEach(n);function n(t,n){t=c(t),S(e.transformHeader)&&(t=e.transformHeader(t,n)),v.push(t)}}function n(t,n){for(var r=e.header?{}:[],i=0;i<t.length;i++){var s=i,c=t[i],c=((t,n)=>(t=>(e.dynamicTypingFunction&&e.dynamicTyping[t]===void 0&&(e.dynamicTyping[t]=e.dynamicTypingFunction(t)),!0===(e.dynamicTyping[t]||e.dynamicTyping)))(t)?n===`true`||n===`TRUE`||n!==`false`&&n!==`FALSE`&&((e=>{if(l.test(e)&&(e=parseFloat(e),o<e&&e<a))return 1})(n)?parseFloat(n):u.test(n)?new Date(n):n===``?null:n):n)(s=e.header?i>=v.length?`__parsed_extra`:v[i]:s,c=e.transform?e.transform(c,s):c);s===`__parsed_extra`?(r[s]=r[s]||[],r[s].push(c)):r[s]=c}return e.header&&(i>v.length?T(`FieldMismatch`,`TooManyFields`,`Too many fields: expected `+v.length+` fields but parsed `+i,p+n):i<v.length&&T(`FieldMismatch`,`TooFewFields`,`Too few fields: expected `+v.length+` fields but parsed `+i,p+n)),r}var i;y&&(e.header||e.dynamicTyping||e.transform)&&(i=1,!y.data.length||Array.isArray(y.data[0])?(y.data=y.data.map(n),i=y.data.length):y.data=n(y.data,0),e.header&&y.meta&&(y.meta.fields=v),p+=i)}function w(){return e.header&&v.length===0}function T(e,t,n,r){e={type:e,code:t,message:n},r!==void 0&&(e.row=r),y.errors.push(e)}S(e.step)&&(i=e.step,e.step=function(t){y=t,w()?C():(C(),y.data.length!==0&&(f+=t.data.length,e.preview&&f>e.preview?n.abort():(y.data=y.data[0],i(y,d))))}),this.parse=function(i,a,o){var c=e.quoteChar||`"`,c=(e.newline||=this.guessLineEndings(i,c),r=!1,e.delimiter?S(e.delimiter)&&(e.delimiter=e.delimiter(i),y.meta.delimiter=e.delimiter):((c=((t,n,r,i,a)=>{var o,c,l,u;a||=[`,`,` `,`|`,`;`,s.RECORD_SEP,s.UNIT_SEP];for(var d=0;d<a.length;d++){for(var f,p=a[d],m=0,h=0,_=0,v=(l=void 0,new g({comments:i,delimiter:p,newline:n,preview:10}).parse(t)),y=0;y<v.data.length;y++)r&&x(v.data[y])?_++:(f=v.data[y].length,h+=f,l===void 0?l=f:0<f&&(m+=Math.abs(f-l),l=f));0<v.data.length&&(h/=v.data.length-_),(c===void 0||m<=c)&&(u===void 0||u<h)&&1.99<h&&(c=m,o=p,u=h)}return{successful:!!(e.delimiter=o),bestDelimiter:o}})(i,e.newline,e.skipEmptyLines,e.comments,e.delimitersToGuess)).successful?e.delimiter=c.bestDelimiter:(r=!0,e.delimiter=s.DefaultDelimiter),y.meta.delimiter=e.delimiter),b(e));return e.preview&&e.header&&c.preview++,t=i,n=new g(c),y=n.parse(t,a,o),C(),m?{meta:{paused:!0}}:y||{meta:{paused:!1}}},this.paused=function(){return m},this.pause=function(){m=!0,n.abort(),t=S(e.chunk)?``:t.substring(n.getCharIndex())},this.resume=function(){d.streamer._halted?(m=!1,d.streamer.parseChunk(t,!0)):setTimeout(d.resume,3)},this.aborted=function(){return _},this.abort=function(){_=!0,n.abort(),y.meta.aborted=!0,S(e.complete)&&e.complete(y),t=``},this.guessLineEndings=function(e,t){e=e.substring(0,1048576);var t=RegExp(h(t)+`([^]*?)`+h(t),`gm`),n=(e=e.replace(t,``)).split(`\r`),t=e.split(`
2
2
  `),e=1<t.length&&t[0].length<n[0].length;if(n.length===1||e)return`
3
3
  `;for(var r=0,i=0;i<n.length;i++)n[i][0]===`
4
4
  `&&r++;return r>=n.length/2?`\r
@@ -7,4 +7,4 @@ import{o as e,t}from"./rolldown-runtime-DAXXjFlN.js";import{t as n}from"./react-
7
7
  `&&(n=`
8
8
  `);var p=0,m=!1;this.parse=function(s,g,_){if(typeof s!=`string`)throw Error(`Input must be a string`);var v=s.length,y=t.length,b=n.length,x=r.length,C=S(i),w=[],T=[],E=[],D=p=0;if(!s)return R();if(o||!1!==o&&s.indexOf(d)===-1){for(var O=s.split(n),k=0;k<O.length;k++){if(E=O[k],p+=E.length,k!==O.length-1)p+=n.length;else if(_)return R();if(!r||E.substring(0,x)!==r){if(C){if(w=[],F(E.split(t)),z(),m)return R()}else F(E.split(t));if(a&&a<=k)return w=w.slice(0,a),R(!0)}}return R()}for(var A=s.indexOf(t,p),j=s.indexOf(n,p),M=new RegExp(h(f)+h(d),`g`),N=s.indexOf(d,p);;)if(s[p]===d)for(N=p,p++;;){if((N=s.indexOf(d,N+1))===-1)return _||T.push({type:`Quotes`,code:`MissingQuotes`,message:`Quoted field unterminated`,row:w.length,index:p}),L();if(N===v-1)return L(s.substring(p,N).replace(M,d));if(d===f&&s[N+1]===f)N++;else if(d===f||N===0||s[N-1]!==f){A!==-1&&A<N+1&&(A=s.indexOf(t,N+1));var P=I((j=j!==-1&&j<N+1?s.indexOf(n,N+1):j)===-1?A:Math.min(A,j));if(s.substr(N+1+P,y)===t){E.push(s.substring(p,N).replace(M,d)),s[p=N+1+P+y]!==d&&(N=s.indexOf(d,p)),A=s.indexOf(t,p),j=s.indexOf(n,p);break}if(P=I(j),s.substring(N+1+P,N+1+P+b)===n){if(E.push(s.substring(p,N).replace(M,d)),ee(N+1+P+b),A=s.indexOf(t,p),N=s.indexOf(d,p),C&&(z(),m))return R();if(a&&w.length>=a)return R(!0);break}T.push({type:`Quotes`,code:`InvalidQuotes`,message:`Trailing quote on quoted field is malformed`,row:w.length,index:p}),N++}}else if(r&&E.length===0&&s.substring(p,p+x)===r){if(j===-1)return R();p=j+b,j=s.indexOf(n,p),A=s.indexOf(t,p)}else if(A!==-1&&(A<j||j===-1))E.push(s.substring(p,A)),p=A+y,A=s.indexOf(t,p);else{if(j===-1)break;if(E.push(s.substring(p,j)),ee(j+b),C&&(z(),m))return R();if(a&&w.length>=a)return R(!0)}return L();function F(e){w.push(e),D=p}function I(e){var t=0;return t=e!==-1&&(e=s.substring(N+1,e))&&e.trim()===``?e.length:t}function L(e){return _||(e===void 0&&(e=s.substring(p)),E.push(e),p=v,F(E),C&&z()),R()}function ee(e){p=e,F(E),E=[],j=s.indexOf(n,p)}function R(r){if(e.header&&!g&&w.length&&!u){var i=w[0],a=Object.create(null),o=new Set(i);let t=!1;for(let n=0;n<i.length;n++){let r=c(i[n]);if(a[r=S(e.transformHeader)?e.transformHeader(r,n):r]){let e,s=a[r];for(;e=r+`_`+s,s++,o.has(e););o.add(e),i[n]=e,a[r]++,t=!0,(l=l===null?{}:l)[e]=r}else a[r]=1,i[n]=r;o.add(r)}t&&console.warn(`Duplicate headers found and renamed.`),u=!0}return{data:w,errors:T,meta:{delimiter:t,linebreak:n,aborted:m,truncated:!!r,cursor:D+(g||0),renamedHeaders:l}}}function z(){i(R()),w=[],T=[]}},this.abort=function(){m=!0},this.getCharIndex=function(){return p}}function _(e){var t=e.data,n=a[t.workerId],r=!1;if(t.error)n.userError(t.error,t.file);else if(t.results&&t.results.data){var i={abort:function(){r=!0,v(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:y,resume:y};if(S(n.userStep)){for(var o=0;o<t.results.data.length&&(n.userStep({data:t.results.data[o],errors:t.results.errors,meta:t.results.meta},i),!r);o++);delete t.results}else S(n.userChunk)&&(n.userChunk(t.results,i,t.file),delete t.results)}t.finished&&!r&&v(t.workerId,t.results)}function v(e,t){var n=a[e];S(n.userComplete)&&n.userComplete(t),n.terminate(),delete a[e]}function y(){throw Error(`Not implemented.`)}function b(e){if(typeof e!=`object`||!e)return e;var t,n=Array.isArray(e)?[]:{};for(t in e)n[t]=b(e[t]);return n}function x(e,t){return function(){e.apply(t,arguments)}}function S(e){return typeof e==`function`}return s.parse=function(n,r){var i=(r||={}).dynamicTyping||!1;if(S(i)&&(r.dynamicTypingFunction=i,i={}),r.dynamicTyping=i,r.transform=!!S(r.transform)&&r.transform,!r.worker||!s.WORKERS_SUPPORTED)return i=null,s.NODE_STREAM_INPUT,typeof n==`string`?(n=c(n),i=new(r.download?u:f)(r)):!0===n.readable&&S(n.read)&&S(n.on)?i=new p(r):(t.File&&n instanceof File||n instanceof Object)&&(i=new d(r)),i.stream(n);(i=(()=>{var n;return!!s.WORKERS_SUPPORTED&&(n=(()=>{var n=t.URL||t.webkitURL||null,r=e.toString();return s.BLOB_URL||=n.createObjectURL(new Blob([`var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; `,`(`,r,`)();`],{type:`text/javascript`}))})(),(n=new t.Worker(n)).onmessage=_,n.id=o++,a[n.id]=n)})()).userStep=r.step,i.userChunk=r.chunk,i.userComplete=r.complete,i.userError=r.error,r.step=S(r.step),r.chunk=S(r.chunk),r.complete=S(r.complete),r.error=S(r.error),delete r.worker,i.postMessage({input:n,config:r,workerId:i.id})},s.unparse=function(e,t){var n=!1,r=!0,i=`,`,a=`\r
9
9
  `,o=`"`,c=o+o,l=!1,u=null,d=!1,f=((()=>{if(typeof t==`object`){if(typeof t.delimiter!=`string`||s.BAD_DELIMITERS.filter(function(e){return t.delimiter.indexOf(e)!==-1}).length||(i=t.delimiter),typeof t.quotes!=`boolean`&&typeof t.quotes!=`function`&&!Array.isArray(t.quotes)||(n=t.quotes),typeof t.skipEmptyLines!=`boolean`&&typeof t.skipEmptyLines!=`string`||(l=t.skipEmptyLines),typeof t.newline==`string`&&(a=t.newline),typeof t.quoteChar==`string`&&(o=t.quoteChar,c=o+o),typeof t.header==`boolean`&&(r=t.header),Array.isArray(t.columns)){if(t.columns.length===0)throw Error(`Option columns is empty`);u=t.columns}t.escapeChar!==void 0&&(c=t.escapeChar+o),t.escapeFormulae instanceof RegExp?d=t.escapeFormulae:typeof t.escapeFormulae==`boolean`&&t.escapeFormulae&&(d=/^[=+\-@\t\r].*$/)}})(),new RegExp(h(o),`g`));if(typeof e==`string`&&(e=JSON.parse(e)),Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return p(null,e,l);if(typeof e[0]==`object`)return p(u||Object.keys(e[0]),e,l)}else if(typeof e==`object`)return typeof e.data==`string`&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||=e.meta&&e.meta.fields||u,e.fields||=Array.isArray(e.data[0])?e.fields:typeof e.data[0]==`object`?Object.keys(e.data[0]):[],Array.isArray(e.data[0])||typeof e.data[0]==`object`||(e.data=[e.data])),p(e.fields||[],e.data||[],l);throw Error(`Unable to serialize unrecognized input`);function p(e,t,n){var o=``,s=(typeof e==`string`&&(e=JSON.parse(e)),typeof t==`string`&&(t=JSON.parse(t)),Array.isArray(e)&&0<e.length),c=!Array.isArray(t[0]);if(s&&r){for(var l=0;l<e.length;l++)0<l&&(o+=i),o+=m(e[l],l);0<t.length&&(o+=a)}for(var u=0;u<t.length;u++){var d=(s?e:t[u]).length,f=!1,p=s?Object.keys(t[u]).length===0:t[u].length===0;if(n&&!s&&(f=n===`greedy`?t[u].join(``).trim()===``:t[u].length===1&&t[u][0].length===0),n===`greedy`&&s){for(var h=[],g=0;g<d;g++){var _=c?e[g]:g;h.push(t[u][_])}f=h.join(``).trim()===``}if(!f){for(var v=0;v<d;v++){0<v&&!p&&(o+=i);var y=s&&c?e[v]:v;o+=m(t[u][y],v)}u<t.length-1&&(!n||0<d&&!p)&&(o+=a)}}return o}function m(e,t){var r,a,l;return e==null?``:e.constructor===Date?JSON.stringify(e).slice(1,25):(l=!1,d&&typeof e==`string`&&d.test(e)&&(e=`'`+e,l=!0),a=(r=e.toString()).replace(f,c),(l=l||!0===n||typeof n==`function`&&n(e,t)||Array.isArray(n)&&n[t]||((e,t)=>{for(var n=0;n<t.length;n++)if(-1<e.indexOf(t[n]))return!0;return!1})(a,s.BAD_DELIMITERS)||-1<a.indexOf(i)||-1<r.indexOf(o)||a.charAt(0)===` `||a.charAt(a.length-1)===` `)?o+a+o:a)}},s.RECORD_SEP=``,s.UNIT_SEP=``,s.BYTE_ORDER_MARK=``,s.BAD_DELIMITERS=[`\r`,`
10
- `,`"`,s.BYTE_ORDER_MARK],s.WORKERS_SUPPORTED=!r&&!!t.Worker,s.NODE_STREAM_INPUT=1,s.LocalChunkSize=10485760,s.RemoteChunkSize=5242880,s.DefaultDelimiter=`,`,s.Parser=g,s.ParserHandle=m,s.NetworkStreamer=u,s.FileStreamer=d,s.StringStreamer=f,s.ReadableStreamStreamer=p,t.jQuery&&((n=t.jQuery).fn.parse=function(e){var r=e.config||{},i=[];return this.each(function(e){if(!(n(this).prop(`tagName`).toUpperCase()===`INPUT`&&n(this).attr(`type`).toLowerCase()===`file`&&t.FileReader)||!this.files||this.files.length===0)return!0;for(var a=0;a<this.files.length;a++)i.push({file:this.files[a],inputElem:this,instanceConfig:n.extend({},r)})}),a(),this;function a(){if(i.length===0)S(e.complete)&&e.complete();else{var t,r,a,c,l=i[0];if(S(e.before)){var u=e.before(l.file,l.inputElem);if(typeof u==`object`){if(u.action===`abort`)return t=`AbortError`,r=l.file,a=l.inputElem,c=u.reason,void(S(e.error)&&e.error({name:t},r,a,c));if(u.action===`skip`)return void o();typeof u.config==`object`&&(l.instanceConfig=n.extend(l.instanceConfig,u.config))}else if(u===`skip`)return void o()}var d=l.instanceConfig.complete;l.instanceConfig.complete=function(e){S(d)&&d(e,l.file,l.inputElem),o()},s.parse(l.file,l.instanceConfig)}}function o(){i.splice(0,1),a()}}),i&&(t.onmessage=function(e){e=e.data,s.WORKER_ID===void 0&&e&&(s.WORKER_ID=e.workerId),typeof e.input==`string`?t.postMessage({workerId:s.WORKER_ID,results:s.parse(e.input,e.config),finished:!0}):(t.File&&e.input instanceof File||e.input instanceof Object)&&(e=s.parse(e.input,e.config))&&t.postMessage({workerId:s.WORKER_ID,results:e,finished:!0})}),(u.prototype=Object.create(l.prototype)).constructor=u,(d.prototype=Object.create(l.prototype)).constructor=d,(f.prototype=Object.create(f.prototype)).constructor=f,(p.prototype=Object.create(l.prototype)).constructor=p,s})})),jn=e(S(),1),Mn=e(An(),1);function Nn(e){let t=Mn.default.parse(e,{header:!0,skipEmptyLines:!0});return!t.data||t.data.length<1?[]:t.data.map(e=>{let t={};for(let[n,r]of Object.entries(e))t[n]=typeof r==`string`?r:typeof r==`number`||typeof r==`boolean`?String(r):``;return t})}function Pn(e){return e.length===0?``:Mn.default.unparse(e,{quotes:!0})}function Fn(e){let t=e.meta.stats.imported,n=e.meta.stats.invalid||[],r=n.length,i={},a=Pn(n.map(e=>{let t=wn(e.error);return t.split(`,`).forEach(e=>{let t=e.trim();i[t]?i[t].count+=1:i[t]={message:t,count:1}}),{...e,error:t}})),o=new Blob([a],{type:`text/csv`}),s=URL.createObjectURL(o),c=e.meta.import_label;return{importedCount:t,errorCount:r,errorCsvUrl:s,errorCsvName:c?`${c.name} - Errors.csv`:`Import ${(0,jn.default)().format(`YYYY-MM-DD HH:mm`)} - Errors.csv`,errorList:Object.values(i),importLabel:e.meta.import_label||void 0}}function In(e,t){switch(t.type){case`SELECT_FILE`:return{...e,status:`MAPPING`,file:t.file,fileData:null,mapping:null,dataPreviewIndex:0,mappingError:null,showMappingErrors:!1,fileError:null};case`SET_FILE_ERROR`:return{...e,fileError:t.fileError};case`PARSE_SUCCESS`:return{...e,fileData:t.fileData,mapping:t.mapping,mappingError:t.mappingError};case`PARSE_FAILURE`:return{...e,fileData:[],mapping:null,mappingError:t.mappingError};case`UPDATE_MAPPING`:return{...e,mapping:t.mapping,mappingError:t.mappingError};case`SET_SELECTED_LABEL_SLUGS`:return{...e,selectedLabelSlugs:t.selectedLabelSlugs};case`SET_DATA_PREVIEW_INDEX`:return{...e,dataPreviewIndex:t.dataPreviewIndex};case`SET_SHOW_MAPPING_ERRORS`:return{...e,showMappingErrors:t.showMappingErrors};case`SET_DRAG_OVER`:return{...e,dragOver:t.dragOver};case`UPLOAD_START`:return{...e,status:`UPLOADING`,showMappingErrors:!1};case`UPLOAD_ACCEPTED`:return{...e,status:`PROCESSING`};case`UPLOAD_COMPLETE`:return{...e,status:`COMPLETE`,importResponse:t.importResponse};case`UPLOAD_ERROR`:return{...e,status:`ERROR`,errorMessage:t.errorMessage,errorHeader:t.errorHeader??`Import error`,showTryAgainButton:t.showTryAgainButton??!0};case`RESET`:return Dn();default:return e}}function Ln({open:e,onOpenChange:t,onComplete:n,onClose:r}){let[i,o]=(0,X.useReducer)(In,void 0,Dn),c=(0,X.useRef)(null),{data:l}=Me(),{mutateAsync:f}=re(),p=l?.config?.labs?.importMemberTier===!0,m=(0,X.useMemo)(()=>vn({importMemberTier:p}),[p]),h=an({selectedSlugs:i.selectedLabelSlugs,onSelectionChange:e=>o({type:`SET_SELECTED_LABEL_SLUGS`,selectedLabelSlugs:e})}),g=(0,X.useCallback)(()=>{c.current&&typeof URL.revokeObjectURL==`function`?(URL.revokeObjectURL(c.current),c.current=null):c.current&&=null},[]),_=(0,X.useCallback)(()=>{g(),o({type:`RESET`})},[g]);(0,X.useEffect)(()=>()=>{g()},[g]);let v=(0,X.useCallback)(e=>{if(!(!e&&i.status===`UPLOADING`)){if(!e){let e=i.importResponse??void 0;_(),r?.(e)}t(e)}},[r,t,_,i.importResponse,i.status]);(0,X.useEffect)(()=>{if(!i.file)return;let e=!1,t=new FileReader;return t.onload=t=>{if(!e)try{let e=t.target?.result,n=Nn(e);if(n.length>0){let e=new xn(Cn(n,{importMemberTier:p}));o({type:`PARSE_SUCCESS`,fileData:n,mapping:e,mappingError:e.getKeyByValue(`email`)?null:`Please map "Email" to one of the fields in the CSV.`})}else o({type:`PARSE_SUCCESS`,fileData:[],mapping:null,mappingError:`File is empty, nothing to import. Please select a different file.`})}catch{o({type:`PARSE_FAILURE`,mappingError:`Failed to parse this file. Please try another CSV file.`})}},t.onerror=()=>{e||o({type:`PARSE_FAILURE`,mappingError:`Failed to read file${t.error?.message?`: ${t.error.message}`:``}`})},t.onabort=()=>{e||o({type:`PARSE_FAILURE`,mappingError:`File read was interrupted. Please try again.`})},t.readAsText(i.file),()=>{e=!0,t.readyState===FileReader.LOADING&&t.abort()}},[p,i.file]);let b=(0,X.useCallback)(e=>{let t=/(?:\.([^.]+))?$/.exec(e.name)?.[1];return!t||t.toLowerCase()!==`csv`?(o({type:`SET_FILE_ERROR`,fileError:`The file type you uploaded is not supported`}),!1):(o({type:`SET_FILE_ERROR`,fileError:null}),!0)},[]),x=(0,X.useCallback)(e=>{b(e)&&o({type:`SELECT_FILE`,file:e})},[b]),S=(0,X.useCallback)((e,t)=>{if(!i.mapping)return;let n=i.mapping.updateMapping(e,t),r=i.fileData&&i.fileData.length===0?`File is empty, nothing to import. Please select a different file.`:n.getKeyByValue(`email`)?null:`Please map "Email" to one of the fields in the CSV.`;o({type:`UPDATE_MAPPING`,mapping:n,mappingError:r})},[i.fileData,i.mapping]),C=(0,X.useCallback)(async()=>{if(!i.file||i.mappingError){o({type:`SET_SHOW_MAPPING_ERRORS`,showMappingErrors:!0});return}o({type:`UPLOAD_START`});let e=[];for(let t of i.selectedLabelSlugs){let n=h.labels.find(e=>e.slug===t);n&&e.push(n.name)}try{let t=await f({file:i.file,labels:e,mapping:i.mapping?.toJSON()});if(vt(t)){let e=Fn(t);g(),c.current=e.errorCsvUrl,o({type:`UPLOAD_COMPLETE`,importResponse:e}),n?.(e);return}o({type:`UPLOAD_ACCEPTED`}),n?.()}catch(e){if(e instanceof u){o({type:`UPLOAD_ERROR`,errorMessage:`The file you uploaded was larger than the maximum file size your server allows.`});return}let t=e instanceof a?e.data?.errors?.[0]:null;if(e instanceof s&&t?.code===`EMAIL_VERIFICATION_NEEDED`){o({type:`UPLOAD_ERROR`,errorMessage:t.message,errorHeader:`Woah there cowboy, that's a big list`,showTryAgainButton:!1}),n?.();return}if(e instanceof d||t?.type===`DataImportError`){o({type:`UPLOAD_ERROR`,errorMessage:t?.message||(e instanceof Error?e.message:`An unexpected error occurred, please try again`)});return}o({type:`UPLOAD_ERROR`,errorMessage:`An unexpected error occurred, please try again`})}},[i.file,i.mapping,i.mappingError,i.selectedLabelSlugs,h.labels,f,g,n]),w=i.fileData?!!i.fileData[i.dataPreviewIndex+1]:!1,T=i.dataPreviewIndex>0,E=i.fileData?.length??0,D=i.status===`MAPPING`||i.status===`UPLOADING`,O=(0,X.useMemo)(()=>{switch(i.status){case`PROCESSING`:return`Import in progress`;case`COMPLETE`:return`Import complete`;case`ERROR`:return i.errorHeader;default:return`Import members`}},[i.errorHeader,i.status]);return(0,Z.jsx)(ht,{open:e,onOpenChange:v,children:(0,Z.jsxs)(de,{className:y(`gap-0`,D&&`max-w-2xl`),children:[(0,Z.jsxs)(Ye,{children:[(0,Z.jsx)(ae,{children:O}),(0,Z.jsx)(le,{className:`sr-only`,children:`Import members from a CSV file.`})]}),i.status===`INIT`&&(0,Z.jsx)(pn,{fileError:i.fileError,onClose:()=>v(!1),onDropAccepted:x,onDropRejected:()=>o({type:`SET_FILE_ERROR`,fileError:`The file type you uploaded is not supported`})}),(i.status===`MAPPING`||i.status===`UPLOADING`)&&(0,Z.jsx)(Tn,{dataPreviewIndex:i.dataPreviewIndex,fieldMappings:m,fileData:i.fileData,hasNextRecord:w,hasPrevRecord:T,labelPicker:h,mapping:i.mapping,mappingError:i.mappingError,membersCount:E,showMappingErrors:i.showMappingErrors,status:i.status,onDataPreviewIndexChange:e=>{o({type:`SET_DATA_PREVIEW_INDEX`,dataPreviewIndex:e})},onStartOver:_,onUpdateMapping:S,onUpload:()=>void C()}),i.status===`PROCESSING`&&(0,Z.jsx)(En,{onClose:()=>v(!1),onUploadAnotherFile:_}),i.status===`COMPLETE`&&i.importResponse&&(0,Z.jsx)(On,{importResponse:i.importResponse,onClose:()=>v(!1),onReset:_}),i.status===`ERROR`&&(0,Z.jsx)(kn,{errorMessage:i.errorMessage,showTryAgainButton:i.showTryAgainButton,onClose:()=>v(!1),onTryAgain:_})]})})}var Rn=`count.active_stripe_customers`,zn=`${Rn}:>1`,Bn=`${Rn}:<2`,Vn=Ze({multipleActiveSubscriptionsBanner:Ze({dismissedCount:dt().finite().optional().catch(void 0),dismissedAt:at().optional().catch(void 0)}).optional().catch(void 0)});function Hn(e){return e===zn}function Un(e){if(!e)return Vn.parse({});try{let t=JSON.parse(e);return Vn.parse(t)}catch{return Vn.parse({})}}function Wn(e){return Un(e).multipleActiveSubscriptionsBanner??{}}function Gn(e,t,n){let r=Un(e),i=Wn(e);return JSON.stringify({...r,multipleActiveSubscriptionsBanner:{...i,dismissedCount:t,dismissedAt:n}})}function Kn(e,t,n){return{...e,accessibility:Gn(e.accessibility,t,n)}}var qn=[`is`,`contains`,`does-not-contain`,`starts-with`,`ends-with`],Jn=[`is`,`is-greater`,`is-less`],Q=[`is`,`is-not`],Yn=[`is-any`,`is-not-any`],Xn=[{value:`active`,label:`Active`},{value:`trialing`,label:`Trialing`},{value:`canceled`,label:`Canceled`},{value:`unpaid`,label:`Unpaid`},{value:`past_due`,label:`Past Due`},{value:`incomplete`,label:`Incomplete`},{value:`incomplete_expired`,label:`Incomplete - Expired`}],Zn={parse(){return null},serialize(e){let t=e.values[0];return e.operator!==`is`&&e.operator!==`is-not`?null:t===`email-disabled`?e.operator===`is`?[`(email_disabled:1)`]:[`(email_disabled:0)`]:t===`subscribed`?e.operator===`is`?[`(subscribed:true+email_disabled:0)`]:[`(subscribed:false,email_disabled:1)`]:t===`unsubscribed`?e.operator===`is`?[`(subscribed:false+email_disabled:0)`]:[`(subscribed:true,email_disabled:1)`]:null}},Qn={parse(){return null},serialize(e,t){let n=t.params.slug,r=e.values[0];return!n||e.operator!==`is`?null:r===`subscribed`?[`(newsletters.slug:${n}+email_disabled:0)`]:r===`unsubscribed`?[`(newsletters.slug:-${n},email_disabled:1)`]:null}},$n={parse(){return null},serialize(e){let t=e.values[0];return typeof t!=`string`||!t||e.operator!==`1`&&e.operator!==`0`?null:[`(feedback.post_id:${p(t)}+feedback.score:${e.operator})`]}},er={parse(e,t){let n=Ht(e);return!n||n.field!==t.key?null:n.operator===`$gt`&&n.value===1?{field:t.key,operator:`is`,values:[`true`]}:n.operator===`$lt`&&n.value===2?{field:t.key,operator:`is`,values:[`false`]}:null},serialize(e){let t=e.values[0];return e.operator===`is`?t===`true`?[zn]:t===`false`?[Bn]:null:null}},tr=Bt({name:{operators:qn,ui:{label:`Name`,type:`text`,placeholder:`Enter name...`,defaultOperator:`contains`,className:`w-48`},codec:Pt()},email:{operators:qn,ui:{label:`Email`,type:`text`,placeholder:`Enter email...`,defaultOperator:`contains`,className:`w-48`},codec:Pt()},label:{operators:Yn,ui:{label:`Label`,type:`multiselect`,searchable:!0,className:`w-64`,defaultOperator:`is-any`},metadata:{activeColumn:{key:`labels`,label:`Labels`,include:`labels`}},codec:Lt()},subscribed:{operators:Q,ui:{label:`Newsletter subscription`,type:`select`,searchable:!1},options:[{value:`subscribed`,label:`Subscribed`},{value:`unsubscribed`,label:`Unsubscribed`},{value:`email-disabled`,label:`Email disabled`}],codec:Zn},last_seen_at:{operators:jt,ui:{label:`Last seen`,type:`date`,defaultOperator:Tt},codec:Vt()},created_at:{operators:jt,ui:{label:`Created`,type:`date`,defaultOperator:Tt},codec:Vt()},signup:{operators:Q,ui:{label:`Signed up on post/page`,type:`select`,searchable:!0,placeholder:`Select a post or page...`,className:`w-64`},codec:Y({quoteStrings:!0})},"newsletters.:slug":{operators:[`is`],ui:{label:`Newsletter`,type:`select`,searchable:!1,hideOperatorSelect:!0},options:[{value:`subscribed`,label:`Subscribed`},{value:`unsubscribed`,label:`Unsubscribed`}],codec:Qn},tier_id:{operators:Yn,ui:{label:`Membership tier`,type:`multiselect`,searchable:!0,className:`w-64`,defaultOperator:`is-any`},metadata:{activeColumn:{key:`tiers`,label:`Tiers`,include:`tiers`}},codec:Lt()},status:{operators:Q,ui:{label:`Member status`,type:`select`,searchable:!1},options:[{value:`paid`,label:`Paid`},{value:`free`,label:`Free`},{value:`comped`,label:`Complimentary`}],codec:Y()},"subscriptions.plan_interval":{operators:Q,ui:{label:`Billing period`,type:`select`,searchable:!1},options:[{value:`month`,label:`Monthly`},{value:`year`,label:`Yearly`}],metadata:{activeColumn:{key:`subscriptions.plan_interval`,label:`Billing period`,include:`subscriptions`}},codec:Y()},"subscriptions.status":{operators:Q,ui:{label:`Stripe subscription status`,type:`select`,searchable:!1},options:Xn,metadata:{activeColumn:{key:`subscriptions.status`,label:`Subscription status`,include:`subscriptions`}},codec:Y()},"subscriptions.start_date":{operators:jt,ui:{label:`Paid start date`,type:`date`,defaultOperator:Tt},metadata:{activeColumn:{key:`subscriptions.start_date`,label:`Paid start date`,include:`subscriptions`}},codec:Vt()},"subscriptions.current_period_end":{operators:jt,ui:{label:`Next billing date`,type:`date`,defaultOperator:Tt},metadata:{activeColumn:{key:`subscriptions.current_period_end`,label:`Next billing date`,include:`subscriptions`}},codec:Vt()},conversion:{operators:Q,ui:{label:`Subscription started on post/page`,type:`select`,searchable:!0,placeholder:`Select a post or page...`,className:`w-64`},codec:Y({quoteStrings:!0})},email_count:{operators:Jn,ui:{label:`Emails sent (all time)`,type:`number`,defaultOperator:`is-greater`,min:0,className:`w-24`},codec:kt()},email_opened_count:{operators:Jn,ui:{label:`Emails opened (all time)`,type:`number`,defaultOperator:`is-greater`,min:0,className:`w-24`},codec:kt()},email_open_rate:{operators:Jn,ui:{label:`Open rate (all time)`,type:`number`,defaultOperator:`is-greater`,min:0,max:100,suffix:`%`,className:`w-24`},codec:kt()},"emails.post_id":{operators:Q,ui:{label:`Sent email`,type:`select`,searchable:!0,placeholder:`Select an email...`,className:`w-64`},codec:Y({quoteStrings:!0})},"opened_emails.post_id":{operators:Q,ui:{label:`Opened email`,type:`select`,searchable:!0,placeholder:`Select an email...`,className:`w-64`},codec:Y({quoteStrings:!0})},"clicked_links.post_id":{operators:Q,ui:{label:`Clicked email`,type:`select`,searchable:!0,placeholder:`Select an email...`,className:`w-64`},codec:Y({quoteStrings:!0})},newsletter_feedback:{operators:[`1`,`0`],ui:{label:`Responded with feedback`,type:`select`,searchable:!0,placeholder:`Select an email...`,className:`w-64`,defaultOperator:`1`},codec:$n},offer_redemptions:{operators:Yn,ui:{label:`Offer`,type:`multiselect`,searchable:!0,className:`w-64`,defaultOperator:`is-any`},metadata:{activeColumn:{key:`offer_redemptions`,label:`Offer`}},codec:Lt({quoteStrings:!0,serializeSingletonAsScalar:!0})},[Rn]:{operators:[`is`],ui:{label:`Multiple active subscriptions`,type:`select`,searchable:!1,hideOperatorSelect:!0},options:[{value:`true`,label:`Yes`},{value:`false`,label:`No`}],codec:er}}),nr=Bt({...tr,last_seen_at:Ct(tr.last_seen_at),created_at:Ct(tr.created_at),"subscriptions.start_date":Ct(tr[`subscriptions.start_date`]),"subscriptions.current_period_end":wt(tr[`subscriptions.current_period_end`])});function rr(){return nr}var ir=2;function ar(e){let t=new Map;for(let n of e){let e=Ot(nr,n.field,`UTC`)?.definition.metadata?.activeColumn;e&&t.set(e.key,e)}return Array.from(t.values()).slice(0,ir)}function or(e){let t=new Set([`labels`,`tiers`]);for(let n of ar(e))n.include&&t.add(n.include);return Array.from(t).join(`,`)}function sr({filters:e,nql:t,search:n}){if(!t&&!n)return;let r={include:or(e),limit:`100`,order:`created_at desc`};return t&&(r.filter=t),n&&(r.search=n),r}function cr({nql:e,search:t}){return!e&&!t?{all:!0}:{...e?{filter:e}:{},...t?{search:t}:{}}}function lr(e,t){return e?{text:jn.default.tz(e,t).format(`D MMM YYYY`),subtext:(0,jn.default)(e).fromNow()}:null}function ur(e,t,n){switch(e.key){case`labels`:return t.labels?.length?{text:t.labels.map(e=>e.name).join(`, `)}:null;case`tiers`:return t.tiers?.length?{text:t.tiers.map(e=>e.name).join(`, `)}:null;case`subscriptions.plan_interval`:{let e=t.current_subscription?.plan?.interval;return e?{text:e===`month`?`Monthly`:`Yearly`}:null}case`subscriptions.status`:{let e=t.current_subscription?.status;return e?{text:e.split(`_`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}:null}case`subscriptions.start_date`:return lr(t.current_subscription?.start_date,n);case`subscriptions.current_period_end`:return lr(t.current_subscription?.current_period_end,n);case`offer_redemptions`:{let e=t.subscriptions?.map(e=>e.offer?.name).filter(Boolean);return e?.length?{text:e.join(`, `)}:null}default:return null}}async function dr(e,t){let n=new URLSearchParams({limit:`all`});e&&n.set(`filter`,e),t&&n.set(`search`,t),await c(`/members/upload/?${n}`,`members.csv`)}var fr=({hasFilterOrSearch:e,memberCount:t,nql:n,search:r,canBulkDelete:i,showMenu:a=!0,showNewMember:o=!0,onImportComplete:s})=>{let c=_(),l=v(),u=c.pathname===`/members/import`,d=c.search??``,p=c.pathname===`/members`?`${c.pathname}${d}`:`/members`,m=`#/members/new?back=${encodeURIComponent(p)}`,[h,g]=(0,X.useState)(!1),[y,x]=(0,X.useState)(!1),[S,C]=(0,X.useState)(!1),[w,T]=(0,X.useState)(!1),{data:E,isLoading:D}=Kt({searchParams:{filter:`status:-archived`,limit:`50`}}),O=E?.newsletters||[],{mutateAsync:k,isPending:A}=mt(),{mutate:j,isPending:M}=se(),[N,P]=(0,X.useState)(!1),F=cr({nql:n,search:r}),I=(0,X.useCallback)(async()=>{try{await dr(n,r)}catch(e){throw f.error(`Export failed`,{description:`There was a problem downloading your member data. Please check your connection and try again.`}),e}},[n,r]),L=(0,X.useCallback)(async e=>{try{for(let t of e)await k({...F,action:{type:`addLabel`,meta:{label:{id:t}}}});g(!1),f.success(e.length>1?`Labels added successfully`:`Label added successfully`)}catch{f.error(`Failed to add label`,{description:`There was a problem applying this label. Please try again.`})}},[k,F]),ee=(0,X.useCallback)(async e=>{try{for(let t of e)await k({...F,action:{type:`removeLabel`,meta:{label:{id:t}}}});x(!1),f.success(e.length>1?`Labels removed successfully`:`Label removed successfully`)}catch{f.error(`Failed to remove label`,{description:`There was a problem removing this label. Please try again.`})}},[k,F]),R=(0,X.useCallback)(async e=>{let t=F;if(e===null){try{await k({...t,action:{type:`unsubscribe`}}),C(!1),f.success(`Members unsubscribed successfully`)}catch{f.error(`Failed to unsubscribe members`,{description:`There was a problem unsubscribing these members. Please try again.`})}return}P(!0);try{let n=await Promise.allSettled(e.map(e=>k({...t,action:{type:`unsubscribe`,newsletter:e}}))),r=n.filter(e=>e.status===`fulfilled`).length,i=n.length;C(!1),r===i?f.success(`Unsubscribed from ${i} ${i===1?`newsletter`:`newsletters`}`):r>0?f.warning(`Unsubscribed from ${r} of ${i} newsletters`,{description:`Some newsletters could not be unsubscribed. Please try again.`}):f.error(`Failed to unsubscribe members`,{description:`There was a problem unsubscribing these members. Please try again.`})}catch{f.error(`Failed to unsubscribe members`,{description:`There was a problem unsubscribing these members. Please try again.`})}finally{P(!1)}},[k,F]),z=(0,X.useCallback)(()=>{j(F,{onSuccess:()=>{T(!1),f.success(`Members deleted successfully`)},onError:()=>{f.error(`Failed to delete members`,{description:`There was a problem deleting these members. Please try again.`})}})},[j,F]),B=(0,X.useCallback)(async()=>{try{await dr(n,r)}catch(e){throw f.error(`Export failed`,{description:`There was a problem downloading your backup. Please check your connection and try again.`}),e}},[n,r]),V=(0,X.useCallback)(()=>{},[]),te=(0,X.useCallback)(()=>{l(`/members/import${d}`)},[d,l]),H=(0,X.useCallback)(e=>{s?.(e)},[s]),U=(0,X.useCallback)(e=>{if(e?.importLabel){l(cn({filter:`label:[${e.importLabel.slug}]`}),{replace:!0});return}l(`/members${d}`,{replace:!0})},[d,l]);return(0,Z.jsxs)(Z.Fragment,{children:[a&&(0,Z.jsxs)(me,{children:[(0,Z.jsx)(qe,{asChild:!0,children:(0,Z.jsx)(G,{"data-testid":`members-actions`,variant:`outline`,children:(0,Z.jsx)(Te,{className:`size-4`})})}),(0,Z.jsxs)(je,{align:`end`,children:[(0,Z.jsxs)(xe,{onClick:te,children:[(0,Z.jsx)(ge,{className:`mr-2 size-4`}),`Import members`]}),t>0&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(xe,{onClick:()=>void I(),children:[(0,Z.jsx)(Oe,{className:`mr-2 size-4`}),e?`Export ${b(t)} members`:`Export all members`]}),(0,Z.jsx)(tt,{}),(0,Z.jsxs)(xe,{onClick:()=>g(!0),children:[(0,Z.jsx)(Xe,{className:`mr-2 size-4`}),`Add label to `,b(t),` `,t===1?`member`:`members`]}),(0,Z.jsxs)(xe,{onClick:()=>x(!0),children:[(0,Z.jsx)(ut,{className:`mr-2 size-4`}),`Remove label from `,b(t),` `,t===1?`member`:`members`]}),(0,Z.jsxs)(xe,{disabled:D,onClick:()=>C(!0),children:[(0,Z.jsx)(nt,{className:`mr-2 size-4`}),`Unsubscribe `,b(t),` `,t===1?`member`:`members`]}),(0,Z.jsx)(tt,{}),(0,Z.jsxs)(xe,{className:`text-destructive focus:text-destructive`,disabled:!i,onClick:()=>T(!0),children:[(0,Z.jsx)(lt,{className:`mr-2 size-4`}),`Delete `,b(t),` `,t===1?`member`:`members`]})]})]})]}),o&&(0,Z.jsx)(G,{asChild:!0,children:(0,Z.jsxs)(`a`,{"aria-label":`New member`,className:`inline-flex items-center`,href:m,children:[(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`New member`}),(0,Z.jsx)(`span`,{className:`sm:hidden`,children:(0,Z.jsx)(ye,{})})]})}),(0,Z.jsx)(Ln,{open:u,onClose:U,onComplete:H,onOpenChange:V}),(0,Z.jsx)(ln,{isLoading:A,memberCount:t,open:h,onConfirm:e=>void L(e),onOpenChange:g}),(0,Z.jsx)(un,{isLoading:A,memberCount:t,nql:n,open:y,search:r,onConfirm:e=>void ee(e),onOpenChange:x}),(0,Z.jsx)(dn,{isLoading:A||N,memberCount:t,newsletters:O,open:S,onConfirm:e=>void R(e),onOpenChange:C}),(0,Z.jsx)(fn,{isLoading:M,memberCount:t,open:w,onConfirm:z,onExportBackup:B,onOpenChange:T})]})},pr=({membershipsEnabled:e,onMemberCreated:t})=>{let{data:n,isLoading:r}=o(),{mutateAsync:i,isPending:a}=Le(),s=l(),c=(0,X.useCallback)(async()=>{if(!(!n||a))try{await i({email:n.email,name:n.name}),f.success(`You've been added as a member`),await t?.()}catch(e){s(e)}},[i,n,s,a,t]);return e?(0,Z.jsx)(`div`,{className:`flex h-full flex-col items-center justify-center px-4`,children:(0,Z.jsx)(L,{actions:(0,Z.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-col items-center gap-2 sm:flex-row`,children:[(0,Z.jsx)(G,{asChild:!0,children:(0,Z.jsx)(`a`,{href:`#/members/new?back=%2Fmembers`,children:`New member`})}),(0,Z.jsx)(G,{disabled:a||r||!n,variant:`outline`,onClick:()=>void c(),children:a?`Adding...`:`Add yourself as a member`})]}),(0,Z.jsxs)(`p`,{className:`text-sm leading-tight text-pretty text-muted-foreground`,children:[`Already have members? `,(0,Z.jsx)(`a`,{className:`font-medium text-foreground underline-offset-4 hover:underline`,href:`#/members/import`,children:`Import with CSV`})]})]}),description:`Use memberships to allow your readers to sign up and subscribe to your content.`,title:`Start building your audience`,children:(0,Z.jsx)(Se,{})})}):(0,Z.jsx)(`div`,{className:`flex h-full flex-col items-center justify-center px-4`,children:(0,Z.jsx)(L,{actions:(0,Z.jsx)(G,{variant:`outline`,asChild:!0,children:(0,Z.jsx)(`a`,{href:`#/settings/members`,children:`Membership settings`})}),description:`Adjust your membership settings to start adding members.`,title:`Memberships have been disabled`,children:(0,Z.jsx)(Se,{})})})},mr=He.extend({route:Re(`members`),filter:Ve(at(),at().nullable()).refine(e=>typeof e.filter==`string`&&e.filter.length>0)}),hr=`A view with this name already exists`,gr=`Saved view could not be found for update`,_r=`Multiple saved views matched update target`,vr=`Saved view could not be found for delete`,yr=`Multiple saved views matched delete target`;function br(e){return mr.safeParse(e).success}function xr(e){let t=Ge(e);return t.ok?{ok:!0,views:t.views.filter(br)}:t}function Sr(e,t){return{name:e.trim(),route:`members`,filter:{filter:t}}}function Cr(e,t,n,r){let i=Sr(t,n);if(r){let t=it(e,r);if(t.length===0)throw Error(gr);if(t.length>1)throw Error(_r);let n=t[0];if($e(e,i,n))throw Error(hr);return e.map((e,t)=>t===n?i:e)}if($e(e,i))throw Error(hr);return[...e,i]}function wr(e,t){let n=it(e,t);if(n.length===0)throw Error(vr);if(n.length>1)throw Error(yr);let r=n[0];return e.filter((e,t)=>t!==r)}var Tr=`Cannot modify saved views because shared_views is invalid`;function Er(e){return q(e?.settings??null,`shared_views`)??`[]`}function Dr(){let{data:e}=ue(),t=l(),n=Er(e),r=(0,X.useRef)(null),i=(0,X.useMemo)(()=>xr(n),[n]);return(0,X.useEffect)(()=>{i.ok||r.current===n||(r.current=n,t(i.error,{withToast:!1}))},[t,i,n]),i.ok?i.views:[]}function Or(){let{data:e}=ue(),{mutateAsync:t}=be(),n=l();return(0,X.useCallback)(async(r,i,a)=>{let o=Ge(Er(e));if(!o.ok){let e=Error(Tr,{cause:o.error});throw n(e,{withToast:!1}),e}let s=Cr(o.views,r,i,a);try{await t([{key:`shared_views`,value:JSON.stringify(s)}])}catch(e){throw n(e,{withToast:!1}),e}},[e,t,n])}function kr(){let{data:e}=ue(),{mutateAsync:t}=be(),n=l();return(0,X.useCallback)(async r=>{let i=Ge(Er(e));if(!i.ok){let e=Error(Tr,{cause:i.error});throw n(e,{withToast:!1}),e}let a=wr(i.views,r);try{await t([{key:`shared_views`,value:JSON.stringify(a)}])}catch(e){throw n(e,{withToast:!1}),e}},[e,t,n])}function Ar(e,t){return(0,X.useMemo)(()=>!t||e.length===0?null:e.find(e=>e.filter.filter===t)??null,[e,t])}var jr=({filter:e,existingViews:t,activeView:n,onDeleted:r,onClose:i})=>{let[a,o]=(0,X.useState)(()=>n?.name??``),[s,c]=(0,X.useState)(``),[l,u]=(0,X.useState)(!1),[d,f]=(0,X.useState)(!1),[p,m]=(0,X.useState)(!1),h=Or(),g=kr(),_=!!n,v=async()=>{let r=a.trim();if(!r){c(`Please enter a name`);return}if(!_&&t.find(e=>e.name.trim().toLowerCase()===r.toLowerCase())){c(`A view with this name already exists`);return}u(!0);try{await h(r,e,n??void 0),i()}catch(e){c(e instanceof Error?e.message:`Failed to save view`)}finally{u(!1)}},y=async()=>{if(n){f(!0);try{await g(n),i(),r?.()}catch(e){c(e instanceof Error?e.message:`Failed to delete view`)}finally{f(!1)}}};return(0,Z.jsx)(Pe,{align:`end`,className:`w-72`,children:(0,Z.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Z.jsx)(`h3`,{className:`text-sm font-semibold`,children:_?`Edit view`:`Save view`}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,Z.jsx)(st,{placeholder:`View name`,value:a,autoFocus:!0,onChange:e=>{o(e.target.value),s&&c(``)},onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),v())}}),s&&(0,Z.jsx)(`p`,{className:`text-xs text-red-500`,children:s})]}),_?p?(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`Delete view?`}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(G,{size:`sm`,variant:`outline`,onClick:()=>m(!1),children:`Cancel`}),(0,Z.jsx)(G,{disabled:d,size:`sm`,variant:`destructive`,onClick:()=>void y(),children:d?`Deleting...`:`Delete`})]})]}):(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsx)(G,{className:`text-red hover:bg-red/5 hover:text-red`,size:`sm`,variant:`ghost`,onClick:()=>m(!0),children:`Delete`}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(G,{size:`sm`,variant:`outline`,onClick:i,children:`Cancel`}),(0,Z.jsx)(G,{disabled:l||!a.trim(),size:`sm`,onClick:()=>void v(),children:l?`Saving...`:`Save`})]})]}):(0,Z.jsx)(G,{className:`w-full`,disabled:l||!a.trim(),onClick:()=>void v(),children:l?`Saving...`:`Save`})]})})},Mr=({filter:e,existingViews:t,activeView:n,onDeleted:r})=>{let[i,a]=(0,X.useState)(!1),o=n?`edit:${n.name}:${n.filter.filter}`:`save:${e}`;return(0,Z.jsxs)(Ke,{open:i,onOpenChange:a,children:[(0,Z.jsx)(ft,{asChild:!0,children:(0,Z.jsx)(G,{variant:`outline`,children:n?`Edit view`:`Save view`})}),i&&(0,Z.jsx)(jr,{activeView:n,existingViews:t,filter:e,onClose:()=>a(!1),onDeleted:r},o)]})},Nr={"is-any":`is any of`,"is-not-any":`is none of`,"does-not-contain":`does not contain`,...At,...Dt,1:`More like this`,0:`Less like this`},Pr={"is-greater":`is greater than`,"is-less":`is less than`};function Fr(e){switch(e){case`name`:return X.createElement(St,{className:`size-4`});case`email`:case`subscribed`:return X.createElement(Ie,{className:`size-4`});case`label`:return X.createElement(ut,{className:`size-4`});case`last_seen_at`:return X.createElement(oe,{className:`size-4`});case`created_at`:return X.createElement(We,{className:`size-4`});case`signup`:return X.createElement(De,{className:`size-4`});case`tier_id`:case`subscriptions.status`:return X.createElement(_e,{className:`size-4`});case`status`:return X.createElement(Be,{className:`size-4`});case`subscriptions.plan_interval`:return X.createElement(pt,{className:`size-4`});case`subscriptions.start_date`:return X.createElement(Fe,{className:`size-4`});case`subscriptions.current_period_end`:return X.createElement(yt,{className:`size-4`});case`conversion`:return X.createElement(Je,{className:`size-4`});case`email_count`:case`emails.post_id`:return X.createElement(we,{className:`size-4`});case`email_opened_count`:case`opened_emails.post_id`:return X.createElement(Qe,{className:`size-4`});case`email_open_rate`:return X.createElement(xt,{className:`size-4`});case`clicked_links.post_id`:return X.createElement(he,{className:`size-4`});case`newsletter_feedback`:return X.createElement(ke,{className:`size-4`});case`offer_redemptions`:return X.createElement(et,{className:`size-4`});case Rn:return X.createElement(Ue,{className:`size-4`});default:return e.startsWith(`newsletters.`)?X.createElement(Ee,{className:`size-4`}):void 0}}function $(e,t){return{options:e,valueSource:t}}function Ir(e){let t=new Map,n=[],r=[];for(let t of e)t.redemption_type===`retention`&&(t.cadence===`month`?n.push(t.id):t.cadence===`year`&&r.push(t.id));return n.length>0&&t.set(`retention:month`,n),r.length>0&&t.set(`retention:year`,r),t}function Lr(e){return Array.isArray(e.metadata?.offerIds)?e.metadata.offerIds.filter(e=>typeof e==`string`):null}function Rr(e){let t=[],n=Ir(e);for(let n of e)n.redemption_type!==`retention`&&t.push({value:n.id,label:n.name});return n.has(`retention:month`)&&t.push({value:`retention:month`,label:`Monthly Retention`,metadata:{offerIds:n.get(`retention:month`)}}),n.has(`retention:year`)&&t.push({value:`retention:year`,label:`Yearly Retention`,metadata:{offerIds:n.get(`retention:year`)}}),t}function zr(e,t){let n=[],r=new Set;for(let i of t){let t=Lr(i);t&&t.length>0&&t.every(t=>e.includes(t))&&(n.push(String(i.value)),t.forEach(e=>{r.add(e)}))}for(let t of e)r.has(t)||n.push(t);return n}function Br(e,t){let n=[];for(let r of e){let e=t.find(e=>e.value===r),i=e?Lr(e):null;i?n.push(...i):n.push(r)}return[...new Set(n)]}function Vr(e){return new Map(e.map(e=>[e.id,e.name]))}function Hr(e,t,n){let r=e.map(e=>t.find(t=>t.value===e)).filter(e=>!!e);return r.length===1?r[0].label:r.length>1?`${r.length} selected`:e.length===1?n.get(e[0])??`Select...`:e.length>1?`${e.length} selected`:`Select...`}function Ur({labelValueSource:e,tierValueSource:t,newsletters:n=[],hydratedNewsletterSlugs:r=[],hasMultipleTiers:i=!1,paidMembersEnabled:a=!1,emailFiltersEnabled:o=!1,postValueSource:s,emailValueSource:c,offers:l=[],multipleActiveSubscriptionsCount:u=0,membersTrackSources:d=!1,emailTrackOpens:f=!1,emailTrackClicks:p=!1,siteTimezone:m=`UTC`}){return(0,X.useMemo)(()=>{let h=rr();function g(e,t={},n=Nr){let r=e.startsWith(`newsletters.`)?h[`newsletters.:slug`]:h[e];return{key:e,...r.ui,icon:Fr(e),operators:Nt(r.operators,{labels:n}),...`options`in r&&r.options?{options:r.options}:{},...t}}function _(e,t,n={}){let r=h[e],i=g(e,{defaultValue:t,...n});return Wt(r)?{...i,customRenderer:Gt(t)}:i}let v=[],y=n.filter(e=>e.status!==`archived`),b=new Set(y.map(e=>e.slug)),x=[...new Set(r)].map(e=>({slug:e,name:n.find(t=>t.slug===e)?.name??e})),S=x.filter(e=>!b.has(e.slug)),C=Rr(l),w=Vr(l),T=Yt(m),E=[g(`name`),g(`email`)];if(e&&E.push(g(`label`,{...$([],e),customRenderer:e=>X.createElement(sn,e)})),y.length<=1){E.push(g(`subscribed`));for(let e of x)E.push(g(`newsletters.${e.slug}`,{label:e.name}))}if(E.push(_(`last_seen_at`,T),_(`created_at`,T)),d&&E.push(g(`signup`,$([],s))),v.push({group:`Basic`,fields:E}),y.length>1){let e=[g(`subscribed`,{label:`All newsletters`,options:[{value:`subscribed`,label:`Subscribed to at least one`},{value:`unsubscribed`,label:`Unsubscribed from all`},{value:`email-disabled`,label:`Email disabled`}]})];for(let t of y)e.push(g(`newsletters.${t.slug}`,{label:t.name}));for(let t of S)e.push(g(`newsletters.${t.slug}`,{label:t.name}));v.push({group:`Newsletters`,fields:e})}if(a){let e=[];i&&e.push(g(`tier_id`,$([],t))),e.push(g(`status`,{options:[...h.status.options,{value:`gift`,label:`Gift subscription`}]})),u>0&&e.push(g(Rn)),e.push(g(`subscriptions.plan_interval`),g(`subscriptions.status`),_(`subscriptions.start_date`,T),_(`subscriptions.current_period_end`,T)),d&&e.push(g(`conversion`,$([],s))),l.length>0&&e.push(g(`offer_redemptions`,{options:C,customValueRenderer:e=>Hr(e,C,w)})),v.push({group:`Subscription`,fields:e})}if(o){let e=[g(`email_count`,{},Pr),g(`email_opened_count`,{},Pr)];f&&e.push(g(`email_open_rate`,{},Pr)),e.push(g(`emails.post_id`,$([],c))),f&&e.push(g(`opened_emails.post_id`,$([],c))),p&&e.push(g(`clicked_links.post_id`,$([],c))),e.push(g(`newsletter_feedback`,$([],c))),v.push({group:`Email`,fields:e})}return v},[o,c,p,f,i,e,d,u,n,l,r,a,s,m,t])}var Wr=[];function Gr(e,t){return e.map(e=>e.field===`offer_redemptions`?{...e,values:t(e.values)}:e)}var Kr=({filters:e,multipleActiveSubscriptionsCount:t,nql:n,onFiltersChange:r,savedViews:i=[],activeView:a,iconOnly:o=!1})=>{let{data:s}=m({}),{data:c}=Kt({searchParams:{limit:`100`}}),{data:l}=ue({}),u=l?.settings||[],d=q(u,`paid_members_enabled`)===!0,f=q(u,`editor_default_email_recipients`)!==`disabled`,p=q(u,`members_track_sources`)===!0,h=q(u,`email_track_opens`)===!0,g=q(u,`email_track_clicks`)===!0,_=rn(u),v=c?.newsletters||[],b=(0,X.useMemo)(()=>s?.offers??Wr,[s?.offers]),x=(0,X.useMemo)(()=>Rr(b),[b]),S=(0,X.useMemo)(()=>[...new Set(e.map(e=>e.field).filter(e=>e.startsWith(`newsletters.`)).map(e=>e.slice(12)).filter(Boolean))],[e]),C=(0,X.useMemo)(()=>Gr(e,e=>zr(e,x)),[e,x]),w=(0,X.useCallback)(e=>{r(Gr(e,e=>Br(e,x)))},[r,x]),E=Zt(),D=Jt(),O=Xt(),{valueSource:k,hasMultipleTiers:A}=Qt(),j=Ur({newsletters:v,hydratedNewsletterSlugs:S,hasMultipleTiers:A,paidMembersEnabled:d,emailFiltersEnabled:f,labelValueSource:O,tierValueSource:k,offers:b,multipleActiveSubscriptionsCount:t,postValueSource:E,emailValueSource:D,membersTrackSources:p,emailTrackOpens:h,emailTrackClicks:g,siteTimezone:_}),M=e.length>0,N=y(`bg-white dark:bg-background`,o&&!M&&`min-w-[34px] gap-0 !px-3 text-[0px] lg:min-w-0 lg:gap-1.5 lg:px-3 lg:text-base`),P=M?(0,Z.jsxs)(`div`,{className:`flex shrink-0 items-center gap-4 sm:absolute sm:top-0 sm:right-0`,children:[(0,Z.jsxs)(G,{className:`hidden items-center gap-1 !px-0 text-sm font-normal text-muted-foreground hover:bg-transparent hover:text-foreground lg:inline-flex`,type:`button`,variant:`ghost`,onClick:()=>r([]),children:[(0,Z.jsx)(fe,{className:`size-4`}),`Clear`]}),n&&(0,Z.jsx)(Mr,{activeView:a,existingViews:i,filter:n,onDeleted:()=>r([])})]}):void 0;return(0,Z.jsx)(T,{addButtonClassName:N,addButtonIcon:M?(0,Z.jsx)(ve,{}):(0,Z.jsx)(ie,{}),addButtonText:M?`Add filter`:`Filter`,allowMultiple:!0,className:`[&>button]:order-last ${M?`sm:!pr-40 [&>button]:border-none`:`w-auto`}`,clearButton:P,fields:j,filters:C,keyboardShortcut:`f`,popoverAlign:`start`,popoverContentClassName:`z-[80] w-[280px] [&_[data-slot=command-list]]:max-h-[450px]`,showClearButton:M,showSearchInput:!0,onChange:w})},qr=({search:e,onSearchChange:t,autoFocus:n=!1,ariaLabel:r=`Search members`})=>{let i=r===`Search members mobile`?`members-mobile-search-input`:`members-search-input`;return(0,Z.jsxs)(z,{className:`h-(--control-height) min-w-0 basis-full lg:w-[180px] lg:basis-auto xl:w-[240px]`,children:[(0,Z.jsx)(R,{children:(0,Z.jsx)(ce,{className:`size-4`,strokeWidth:1.75})}),(0,Z.jsx)(ee,{"aria-label":r,autoFocus:n,className:`!h-[34px]`,"data-testid":i,placeholder:`Search members...`,value:e,onChange:e=>t(e.target.value)})]})},Jr=({children:e,description:t,title:n,url:r})=>(0,Z.jsx)(`a`,{className:`group/card block rounded-xl border bg-card p-6 transition-all hover:bg-table-row-hover hover:shadow-xs`,href:r,rel:`noopener noreferrer`,target:`_blank`,children:(0,Z.jsxs)(`div`,{className:`flex items-center gap-6`,children:[e,(0,Z.jsxs)(`div`,{className:`flex flex-col leading-tight`,children:[(0,Z.jsx)(`h4`,{className:`text-md font-medium tracking-normal text-pretty text-foreground`,children:n}),(0,Z.jsx)(`p`,{className:`mt-1.5 text-sm leading-tight text-pretty text-muted-foreground`,children:t})]})]})}),Yr=`flex h-18 w-[100px] min-w-[100px] items-center justify-center rounded-md p-4 opacity-80 transition-all group-hover/card:opacity-100`,Xr=()=>(0,Z.jsxs)(`div`,{className:`grid w-full grid-cols-1 gap-4 lg:grid-cols-2`,children:[(0,Z.jsx)(Jr,{description:`Learn how to turn anonymous visitors into logged-in members with memberships in Ghost.`,title:`Building your audience with subscriber signups`,url:`https://ghost.org/resources/build-audience-subscriber-signups/`,children:(0,Z.jsx)(`div`,{className:y(Yr,`bg-gradient-to-tr from-[#22C55E]/20 to-[#84CC16]/20`),children:(0,Z.jsx)(De,{className:`text-[#16A34A]`,size:20,strokeWidth:1.5})})}),(0,Z.jsx)(Jr,{description:`Starting from zero? Use this guide to find your founding audience members.`,title:`Get your first 100 email subscribers`,url:`https://ghost.org/resources/first-100-email-subscribers/`,children:(0,Z.jsx)(`div`,{className:y(Yr,`bg-gradient-to-tl from-[#A855F7]/20 to-[#EC4899]/20`),children:(0,Z.jsx)(Ie,{className:`text-[#DB2777]`,size:20,strokeWidth:1.5})})})]});function Zr(e,t){let n=new URLSearchParams;t&&n.set(`back`,t);let r=n.toString();return`/members/${e}${r?`?${r}`:``}`}var Qr={left:`100%`};function $r(e){if(!e)return{text:`Unknown`,isKnown:!1};try{let t=JSON.parse(e);return t.country?t.country_code===`US`&&t.region?{text:`${t.region}, US`,isKnown:!0}:{text:t.country,isKnown:!0}:{text:`Unknown`,isKnown:!1}}catch{return{text:`Unknown`,isKnown:!1}}}function ei(e){switch(e){case`paid`:return`Paid`;case`comped`:return`Complimentary`;case`gift`:return`Gift`;default:return`Free`}}function ti(e){return e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey}function ni(e,t){window.open(`#${Zr(e,t)}`,`_blank`,`noopener`)}function ri({item:e,backPath:t,onClick:n}){return(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,Z.jsx)(Ae,{className:`size-8 min-w-8`,email:e.email,name:e.name,src:e.avatar_image}),(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[(0,Z.jsx)(`a`,{className:`block min-w-0 cursor-pointer`,href:`#${Zr(e.id,t)}`,onClick:n?t=>{if(ti(t)){t.stopPropagation();return}t.preventDefault(),t.stopPropagation(),n(e.id)}:void 0,children:(0,Z.jsx)(`span`,{className:`block truncate text-md font-semibold`,children:e.name||e.email||`Anonymous`})}),e.name&&e.email&&(0,Z.jsx)(`div`,{className:`truncate text-muted-foreground`,"data-testid":`member-email`,children:e.email})]})]})}function ii({status:e,tiers:t}){let n=t?.map(e=>e.name).join(`, `);return(0,Z.jsx)(`div`,{className:`flex min-w-0 justify-start`,children:(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[(0,Z.jsx)(`div`,{className:`truncate`,children:ei(e)}),n&&(0,Z.jsx)(`div`,{className:`truncate text-sm text-muted-foreground`,children:n})]})})}function ai({emailOpenRate:e}){let t=e!=null;return(0,Z.jsx)(`div`,{className:y(`text-base`,t?`text-foreground`:`text-muted-foreground`),children:t?x(e/100):`N/A`})}function oi({geolocation:e}){let t=$r(e);return(0,Z.jsx)(`div`,{className:y(`truncate text-base`,t.isKnown?`text-foreground`:`text-muted-foreground`),children:t.text})}function si({createdAt:e}){return(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`div`,{className:`text-base`,children:jn.default.utc(e).format(`D MMM YYYY`)}),(0,Z.jsx)(`div`,{className:`text-base text-muted-foreground`,children:jn.default.utc(e).fromNow()})]})}function ci({column:e,member:t,timezone:n}){let r=ur(e,t,n);return r?(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[(0,Z.jsx)(`div`,{className:`truncate text-base`,children:r.text}),r.subtext&&(0,Z.jsx)(`div`,{className:`truncate text-base text-muted-foreground`,children:r.subtext})]}):(0,Z.jsx)(`span`,{className:`text-base text-muted-foreground`,children:`-`})}var li=(0,X.forwardRef)(function({item:e,activeColumns:t,backPath:n,columnStyles:r,showPinnedEdge:i,showEmailOpenRate:a,timezone:o,onClick:s,...c},l){let u=t=>{if(ti(t)){ni(e.id,n);return}s(e.id)},d=t=>{t.button===1&&(t.preventDefault(),ni(e.id,n))};return(0,Z.jsxs)(V,{...c,ref:l,className:y(`group cursor-pointer`,c.className),"data-testid":`members-list-item`,onAuxClick:d,onClick:u,children:[(0,Z.jsxs)(H,{className:y(`min-w-0 bg-background px-4 py-3 group-hover:bg-[var(--members-sticky-hover-bg)] max-sm:!w-full max-sm:!min-w-0 lg:sticky lg:left-0 lg:z-20`),children:[(0,Z.jsx)(ri,{backPath:n,item:e,onClick:s}),i&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-y-px hidden w-[24px] group-hover:opacity-0 lg:block`,style:{...Qr,background:`linear-gradient(to right, var(--background) 0px, color-mix(in hsl, var(--background) 78%, transparent) 6px, color-mix(in hsl, var(--background) 28%, transparent) 16px, transparent 24px)`}}),(0,Z.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-y-px hidden w-[24px] opacity-0 group-hover:opacity-100 lg:block`,style:{...Qr,background:`linear-gradient(to right, var(--members-sticky-hover-bg) 0px, color-mix(in hsl, var(--members-sticky-hover-bg) 78%, transparent) 6px, color-mix(in hsl, var(--members-sticky-hover-bg) 28%, transparent) 16px, transparent 24px)`}})]})]}),(0,Z.jsx)(H,{className:`hidden px-4 py-3 sm:table-cell`,style:r.status,children:(0,Z.jsx)(ii,{status:e.status,tiers:e.tiers})}),a&&(0,Z.jsx)(H,{className:`hidden px-4 py-3 lg:table-cell`,style:r.openRate,children:(0,Z.jsx)(ai,{emailOpenRate:e.email_open_rate})}),(0,Z.jsx)(H,{className:`hidden px-4 py-3 lg:table-cell`,style:r.location,children:(0,Z.jsx)(oi,{geolocation:e.geolocation})}),(0,Z.jsx)(H,{className:`hidden px-4 py-3 lg:table-cell`,style:r.created,children:(0,Z.jsx)(si,{createdAt:e.created_at})}),t.map(t=>(0,Z.jsx)(H,{className:`hidden px-4 py-3 lg:table-cell`,style:r.dynamic,children:(0,Z.jsx)(ci,{column:t,member:e,timezone:o})},t.key))]})}),ui={left:`100%`,background:`linear-gradient(to right, var(--members-sticky-fade-base) 0px, color-mix(in hsl, var(--members-sticky-fade-base) 78%, transparent) 6px, color-mix(in hsl, var(--members-sticky-fade-base) 28%, transparent) 16px, transparent 24px)`},di=({activeColumns:e,columnStyles:t,showEmailOpenRate:n})=>(0,Z.jsxs)(`colgroup`,{children:[(0,Z.jsx)(`col`,{className:`max-sm:!w-full max-sm:!min-w-0 sm:max-lg:!w-auto sm:max-lg:!min-w-0`,style:t.member}),(0,Z.jsx)(`col`,{className:`hidden sm:table-column`,style:t.status}),n&&(0,Z.jsx)(`col`,{className:`hidden lg:table-column`,style:t.openRate}),(0,Z.jsx)(`col`,{className:`hidden lg:table-column`,style:t.location}),(0,Z.jsx)(`col`,{className:`hidden lg:table-column`,style:t.created}),e.map(e=>(0,Z.jsx)(`col`,{className:`hidden lg:table-column`,style:t.dynamic},e.key))]}),fi=({activeColumns:e,className:t,columnStyles:n,headerRef:r,memberHeaderRef:i,showEmailOpenRate:a})=>(0,Z.jsx)(U,{ref:r,className:y(`hidden bg-transparent lg:table-header-group [&_th]:whitespace-nowrap`,t),children:(0,Z.jsxs)(V,{children:[(0,Z.jsx)(B,{ref:i,className:`sticky left-0 z-[70] bg-transparent px-4 [--members-sticky-fade-base:var(--background)]`,style:n.member,children:`Member`}),(0,Z.jsx)(B,{className:`bg-transparent px-4`,style:n.status,children:`Status`}),a&&(0,Z.jsx)(B,{className:`bg-transparent px-4`,style:n.openRate,children:`Open rate`}),(0,Z.jsx)(B,{className:`bg-transparent px-4`,style:n.location,children:`Location`}),(0,Z.jsx)(B,{className:`bg-transparent px-4`,style:n.created,children:`Created`}),e.map(e=>(0,Z.jsx)(B,{className:`bg-transparent px-4`,style:n.dynamic,children:e.label},e.key))]})}),pi=({columnStyle:e,showPinnedEdge:t})=>(0,Z.jsxs)(`div`,{className:`pointer-events-none absolute inset-y-0 left-0 z-[70] overflow-visible bg-transparent [--members-sticky-fade-base:var(--background)]`,style:e,children:[(0,Z.jsxs)(W,{className:`w-full table-fixed border-collapse`,children:[(0,Z.jsx)(`colgroup`,{children:(0,Z.jsx)(`col`,{style:{width:`100%`}})}),(0,Z.jsx)(U,{className:`bg-transparent lg:table-header-group [&_th]:whitespace-nowrap`,children:(0,Z.jsx)(V,{children:(0,Z.jsx)(B,{className:`bg-transparent px-4`,children:`Member`})})})]}),t&&(0,Z.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-y-px w-[24px]`,style:ui})]}),mi={member:40,status:15,openRate:10,location:17.5,created:17.5},hi={member:320,status:180,openRate:140,location:180,created:160},gi=17.5,_i=220;function vi(e){return Number.isFinite(e)?Math.max(0,Math.floor(e)):0}function yi({showEmailOpenRate:e,activeColumnCount:t}){let n=[{key:`member`,width:mi.member},{key:`status`,width:mi.status},...e?[{key:`openRate`,width:mi.openRate}]:[],{key:`location`,width:mi.location},{key:`created`,width:mi.created}],r=vi(t),i=n.reduce((e,t)=>e+t.width,0),a=100+r*gi,o=gi/a*100,s=n.reduce((e,t)=>{let n=t.width/i*100;return e[t.key]=n/a*100,e},{member:0,status:0,openRate:0,location:0,created:0});return{tableWidthPercentage:a,minTableWidth:n.reduce((e,t)=>e+hi[t.key],0)+r*_i,dynamicColumnWidthPercentage:o,baseColumnWidthPercentages:s,baseColumnMinWidths:{member:hi.member,status:hi.status,openRate:hi.openRate,location:hi.location,created:hi.created},dynamicColumnMinWidth:_i}}function bi(e){let t=(e,t)=>({width:`${e}%`,minWidth:`${t}px`});return{tableStyle:{"--members-table-width":`${e.tableWidthPercentage}%`,"--members-table-min-width":`${e.minTableWidth}px`},columnStyles:{member:t(e.baseColumnWidthPercentages.member,e.baseColumnMinWidths.member),status:t(e.baseColumnWidthPercentages.status,e.baseColumnMinWidths.status),openRate:t(e.baseColumnWidthPercentages.openRate,e.baseColumnMinWidths.openRate),location:t(e.baseColumnWidthPercentages.location,e.baseColumnMinWidths.location),created:t(e.baseColumnWidthPercentages.created,e.baseColumnMinWidths.created),dynamic:t(e.dynamicColumnWidthPercentage,e.dynamicColumnMinWidth)}}}var xi=({height:e})=>(0,Z.jsx)(`tr`,{"aria-hidden":`true`,style:{height:e},children:(0,Z.jsx)(`td`,{colSpan:999})}),Si=(0,X.forwardRef)(function(e,t){return(0,Z.jsx)(V,{ref:t,...e,"aria-hidden":`true`,children:(0,Z.jsx)(H,{className:`h-[72px] px-4 py-3`,colSpan:999,children:(0,Z.jsx)(`div`,{className:`h-full animate-pulse rounded-md bg-muted`,"data-testid":`loading-placeholder`})})})});function Ci({items:e,totalItems:t,backPath:n,hasNextPage:r,isFetchingNextPage:i,fetchNextPage:a,isLoading:o,showEmailOpenRate:s=!0,activeColumns:c,timezone:l,pageHeaderRef:u,onRowClick:d}){let f=(0,X.useRef)(null),p=(0,X.useRef)(null),m=(0,X.useRef)(null),h=(0,X.useRef)(null),g=(0,X.useRef)(null),[_,v]=(0,X.useState)(0),[y,b]=(0,X.useState)(0),[x,S]=(0,X.useState)(!1),{visibleItemCount:C,canLoadMore:w,loadMore:T}=tn(t),E=(0,X.useMemo)(()=>yi({showEmailOpenRate:s,activeColumnCount:c.length}),[c.length,s]),{tableStyle:D,columnStyles:O}=(0,X.useMemo)(()=>bi(E),[E]);en({parentRef:f,isLoading:o}),(0,X.useEffect)(()=>{let e=g.current;if(!e)return;let t=()=>{let t=e.scrollLeft;S(t>0),h.current&&(h.current.scrollLeft=t)};return t(),e.addEventListener(`scroll`,t,{passive:!0}),window.addEventListener(`resize`,t),()=>{e.removeEventListener(`scroll`,t),window.removeEventListener(`resize`,t)}},[c.length,e.length,s]),(0,X.useEffect)(()=>{let e=u?.current,t=p.current,n=m.current;if(!e||!t||!n){v(0),b(0);return}let r=e.style.paddingBottom,i=e.style.marginBottom,a=parseFloat(getComputedStyle(e).paddingBottom)||0,o=parseFloat(getComputedStyle(e).marginBottom)||0,s=()=>{r?e.style.setProperty(`padding-bottom`,r):e.style.removeProperty(`padding-bottom`),i?e.style.setProperty(`margin-bottom`,i):e.style.removeProperty(`margin-bottom`)},c=()=>{if(!window.matchMedia(`(min-width: 1024px)`).matches){s(),v(0),b(0);return}let r=t.getBoundingClientRect().height,i=n.getBoundingClientRect().width;e.style.setProperty(`padding-bottom`,`${a+r}px`,`important`),e.style.setProperty(`margin-bottom`,`${o-r}px`,`important`);let c=e.getBoundingClientRect().height;v(i),b(Math.max(c-r,0))};c();let l=new ResizeObserver(()=>{c()});return l.observe(e),l.observe(t),l.observe(n),window.addEventListener(`resize`,c),()=>{s(),l.disconnect(),window.removeEventListener(`resize`,c)}},[c.length,u,s]);let{visibleItems:k,spaceBefore:A,spaceAfter:j}=$t({items:e,totalItems:C,hasNextPage:r,isFetchingNextPage:i,fetchNextPage:a,parentRef:f,estimateSize:()=>72}),M=e=>{d?d(e):window.location.hash=Zr(e,n)};return(0,Z.jsxs)(`div`,{ref:f,className:`w-full min-w-0`,"data-testid":`members-list-scroll-root`,children:[(0,Z.jsx)(`div`,{className:`sticky z-[50] hidden overflow-visible bg-transparent lg:block`,style:{top:y},children:(0,Z.jsxs)(`div`,{className:`relative`,children:[(0,Z.jsx)(pi,{columnStyle:_>0?{width:_}:O.member,showPinnedEdge:x}),(0,Z.jsx)(`div`,{ref:h,className:`w-full overflow-hidden`,style:_>0?{clipPath:`inset(0 0 0 ${_}px)`}:void 0,children:(0,Z.jsxs)(W,{"aria-hidden":`true`,className:`w-full border-collapse lg:w-[var(--members-table-width)] lg:min-w-[var(--members-table-min-width)] lg:table-fixed`,style:D,children:[(0,Z.jsx)(di,{activeColumns:c,columnStyles:O,showEmailOpenRate:s}),(0,Z.jsx)(fi,{activeColumns:c,columnStyles:O,headerRef:p,memberHeaderRef:m,showEmailOpenRate:s})]})})]})}),(0,Z.jsx)(`div`,{ref:g,className:`w-full overflow-x-auto overflow-y-visible`,children:(0,Z.jsxs)(W,{className:`w-full border-collapse max-sm:table-fixed sm:max-lg:table-auto lg:w-[var(--members-table-width)] lg:min-w-[var(--members-table-min-width)] lg:table-fixed`,"data-testid":`members-list`,style:D,children:[(0,Z.jsx)(di,{activeColumns:c,columnStyles:O,showEmailOpenRate:s}),(0,Z.jsx)(fi,{activeColumns:c,className:`lg:h-0 lg:overflow-hidden lg:[&_th]:pointer-events-none lg:[&_th]:h-0 lg:[&_th]:border-0 lg:[&_th]:p-0 lg:[&_th]:text-[0px] lg:[&_th]:leading-none lg:[&_th]:opacity-0 lg:[&_tr]:h-0 lg:[&_tr]:border-0`,columnStyles:O,showEmailOpenRate:s}),(0,Z.jsxs)(te,{children:[(0,Z.jsx)(xi,{height:A}),k.map(({key:t,virtualItem:r,item:i,props:a})=>r.index>e.length-1?(0,Z.jsx)(Si,{...a},t):(0,Z.jsx)(li,{...a,activeColumns:c,backPath:n,columnStyles:O,item:i,showEmailOpenRate:s,showPinnedEdge:x,timezone:l,onClick:M},t)),(0,Z.jsx)(xi,{height:j})]})]})}),w&&(0,Z.jsx)(nn,{isLoading:i,onClick:T})]})}function wi({count:e,hasResolvedCount:t,nql:n,search:r}){let i=h(),{data:a}=o(),{mutateAsync:s,isPending:c}=ne(),[l,u]=(0,X.useState)(null),d=Hn(n),p=!r&&(!n||d),m=(0,X.useMemo)(()=>Wn(a?.accessibility),[a?.accessibility]),g=l??m.dismissedCount??0,_=!d,v=p&&(d||e>g);return(0,X.useEffect)(()=>{let n=m.dismissedCount;!a||l!==null||c||n===void 0||!t||e>=n||(u(e),s(Kn(a,e,m.dismissedAt??new Date().toISOString())).then(()=>{u(null)}).catch(e=>{u(null),console.log(`Unable to update multiple active subscriptions banner dismissed count`,e)}))},[e,a,s,t,c,l,m.dismissedAt,m.dismissedCount]),{canDismiss:_,count:e,handleDismiss:(0,X.useCallback)(()=>{if(!a||c)return;let t=l;u(e),s(Kn(a,e,new Date().toISOString())).then(()=>{u(null)}).catch(()=>{u(t),f.error(`Unable to dismiss notification. Please try again.`)})},[e,a,s,c,l]),handleViewMembers:(0,X.useCallback)(()=>{i(cn({filter:zn}))},[i]),shouldShow:v}}var Ti=({count:e,hasResolvedCount:t,nql:n,search:r})=>{let i=wi({count:e,hasResolvedCount:t,nql:n,search:r});return i.shouldShow?(0,Z.jsx)(ot,{role:`status`,variant:`warning`,...i.canDismiss?{dismissible:!0,onDismiss:i.handleDismiss}:{dismissible:!1},children:(0,Z.jsxs)(`div`,{className:`flex flex-col items-baseline gap-3 pr-8 sm:flex-row`,children:[`We found `,b(i.count),` `,i.count===1?`member`:`members`,` with more than one active paid subscription.`,` `,(0,Z.jsxs)(`div`,{className:`flex items-baseline gap-3`,children:[i.canDismiss&&(0,Z.jsx)(`button`,{className:`nowrap font-semibold !underline`,type:`button`,onClick:i.handleViewMembers,children:`View members`}),(0,Z.jsx)(`a`,{className:`nowrap font-semibold underline`,href:`https://ghost.org/help/duplicate-subscription-warning/`,rel:`noopener noreferrer`,target:`_blank`,children:`Learn more`})]})]})}):null},Ei=[`subscriptions.plan_interval`,`subscriptions.status`,`subscriptions.start_date`,`subscriptions.current_period_end`,`conversion`,`offer_redemptions`,Rn];function Di(e,t){return t&&e.length===0?!1:!e.some(e=>Ei.includes(e.field))}function Oi({isFetching:e,isFetchingNextPage:t}){return e&&!t}var ki=Rt(nr,`date`);function Ai(e,t){return Ot(t,e.field,`UTC`)?.definition.operators.includes(e.operator)??!1}function ji(e){return Array.isArray(e.$and)?{operator:`$and`,children:e.$and}:Array.isArray(e.$or)?{operator:`$or`,children:e.$or}:null}function Mi(e){if(typeof e.subscribed==`boolean`)return{field:`subscribed`,operator:`is`,values:[e.subscribed?`subscribed`:`unsubscribed`]};if(typeof e.email_disabled==`number`){if(e.email_disabled===1)return{field:`subscribed`,operator:`is`,values:[`email-disabled`]};if(e.email_disabled===0)return{field:`subscribed`,operator:`is-not`,values:[`email-disabled`]}}let t=ji(e);if(!t||t.children.length!==2)return null;let n,r;for(let e of t.children)typeof e.subscribed==`boolean`&&(n=e.subscribed),typeof e.email_disabled==`number`&&(r=e.email_disabled);return t.operator===`$and`&&r===0&&n!==void 0?{field:`subscribed`,operator:`is`,values:[n?`subscribed`:`unsubscribed`]}:t.operator===`$or`&&r===1&&n!==void 0?{field:`subscribed`,operator:`is-not`,values:[n?`unsubscribed`:`subscribed`]}:null}function Ni(e){let t=ji(e);if(!t||t.children.length!==2)return null;let n,r;for(let e of t.children){let t=e[`newsletters.slug`];typeof t==`string`&&(n=t),t&&typeof t==`object`&&!Array.isArray(t)&&typeof t.$ne==`string`&&(n=t.$ne),typeof e.email_disabled==`number`&&(r=e.email_disabled)}return n?t.operator===`$and`&&r===0?{field:`newsletters.${n}`,operator:`is`,values:[`subscribed`]}:t.operator===`$or`&&r===1?{field:`newsletters.${n}`,operator:`is`,values:[`unsubscribed`]}:null:null}function Pi(e){let t=ji(e);if(!t||t.operator!==`$and`||t.children.length!==2)return null;let n,r;for(let e of t.children)typeof e[`feedback.post_id`]==`string`&&(n=e[`feedback.post_id`]),typeof e[`feedback.score`]==`number`&&(r=e[`feedback.score`]);return!n||r!==0&&r!==1?null:{field:`newsletter_feedback`,operator:String(r),values:[n]}}var Fi=[Mi,Ni,Pi];function Ii(e,t){for(let t of Fi){let n=t(e);if(n)return[n]}let n=ji(e);return n?.operator===`$and`?n.children.flatMap(e=>Ii(e,t)):Ft([e],nr,t)}function Li(e,t){let n=Et(e??``);return n?zt(Ii(n,t)):[]}function Ri(e){let t=Et(e??``);return t?Mt(t,ki):!1}function zi(e,t){return It(e,nr,t)}function Bi(e,t,n=!t){return!!e&&n&&!t&&Ri(e)}function Vi(e,t){return e.filter(e=>Ai(e,t))}function Hi({baseSearchParams:e,filters:t,search:n,timezone:r,fields:i}){let a=new URLSearchParams(e),o=zi(Vi(t,i),r);return a.delete(`filter`),a.delete(`search`),o&&a.set(`filter`,o),n&&a.set(`search`,n),a}function Ui(e){let t=(0,X.useMemo)(()=>rr(),[]),[n,r]=g(),i=(0,X.useRef)(null),a=(0,X.useMemo)(()=>n.get(`filter`)??void 0,[n]),o=(0,X.useMemo)(()=>n.toString(),[n]),s=(0,X.useMemo)(()=>Vi(Li(a,e),t),[a,e,t]),[c,l]=(0,X.useState)(s),u=(0,X.useMemo)(()=>n.get(`search`)??``,[n]),d=(0,X.useMemo)(()=>zi(Vi(c,t),e),[c,e,t]);return(0,X.useEffect)(()=>{o!==i.current&&(l(s),i.current=o)},[o,s]),(0,X.useEffect)(()=>{if(i.current!==null&&o!==i.current)return;let a=Hi({baseSearchParams:n,filters:c,search:u,timezone:e,fields:t}),s=a.toString();s!==o&&(i.current=s,r(a,{replace:!0}))},[o,c,u,n,r,e,t]),{filters:c,nql:d,search:u,setFilters:(0,X.useCallback)((a,o={})=>{let s=o.replace??!0,c=Hi({baseSearchParams:n,filters:a,search:u,timezone:e,fields:t});l(a),i.current=c.toString(),r(c,{replace:s})},[u,n,r,e,t]),setSearch:(0,X.useCallback)((a,o={})=>{let s=o.replace??!0,l=Hi({baseSearchParams:n,filters:c,search:a,timezone:e,fields:t});i.current=l.toString(),r(l,{replace:s})},[c,n,r,e,t]),clearFilters:(0,X.useCallback)(({replace:a=!0}={})=>{let o=Hi({baseSearchParams:n,filters:[],search:u,timezone:e,fields:t});l([]),i.current=o.toString(),r(o,{replace:a})},[u,n,r,e,t]),clearAll:(0,X.useCallback)(({replace:a=!0}={})=>{let o=Hi({baseSearchParams:n,filters:[],search:``,timezone:e,fields:t});l([]),i.current=o.toString(),r(o,{replace:a})},[n,r,e,t]),hasFilterOrSearch:!!d||u.length>0}}function Wi({enabled:e}){let{data:t}=gt({searchParams:{filter:zn,limit:`1`,fields:`id`,order:`id`},defaultErrorHandler:!1,enabled:e,refetchOnMount:`always`,staleTime:0});return{count:t?.meta?.pagination?.total??0,hasResolvedCount:t!==void 0}}var Gi=250,Ki=6,qi=({emailAnalyticsEnabled:e,hasStripeEnabled:t,membershipsEnabled:n,timezone:r})=>{let a=(0,X.useRef)(null),o=(0,X.useCallback)(e=>{a.current=e?.closest(`[data-list-page="header"]`)},[]),{filters:s,nql:c,search:l,setFilters:u,setSearch:d,hasFilterOrSearch:f,clearAll:p}=Ui(r),m=_(),h=Dr(),g=Ar(h,c),[v,x]=(0,X.useState)(!1),[S,T]=(0,X.useState)(!1),[E,D]=(0,X.useState)(l),O=bt(e=>{d(e)},Gi),{count:k,hasResolvedCount:A}=Wi({enabled:t}),j=(0,X.useMemo)(()=>ar(s),[s]),M=(0,X.useMemo)(()=>Di(s,c),[s,c]),{data:N,isError:P,isFetching:F,isFetchingNextPage:I,refetch:ee,fetchNextPage:R,hasNextPage:z}=Ce({searchParams:(0,X.useMemo)(()=>sr({filters:s,nql:c,search:l}),[s,c,l]),placeholderData:i}),B=Oi({isFetching:F,isFetchingNextPage:I}),V=N?.meta?.pagination?.total??0,te=s.length>0,H=v,U=te,W=f||V>0,ne=!f&&!B&&!P&&V<Ki;(0,X.useEffect)(()=>{D(l),O.cancel()},[l,O]);let re=e=>{D(e),O(e)};return(0,Z.jsx)(C,{className:`size-full`,children:(0,Z.jsx)(w,{className:`relative flex h-full flex-col`,size:`page`,children:(0,Z.jsxs)(qt,{"data-testid":`members-page`,children:[(0,Z.jsx)(qt.Header,{className:`py-4 sidebar:py-5`,children:(0,Z.jsxs)(`div`,{ref:o,className:`flex flex-col gap-4 sidebar:gap-6`,children:[(0,Z.jsxs)(J,{blurredBackground:!1,sticky:!1,children:[(0,Z.jsx)(J.Left,{children:(0,Z.jsxs)(J.Title,{children:[`Members`,` `,!B&&V>0&&(0,Z.jsx)(J.Count,{className:`hidden sm:inline`,children:b(V)})]})}),(0,Z.jsx)(J.Actions,{children:(0,Z.jsxs)(J.ActionGroup,{className:`ml-auto flex-wrap justify-end sm:ml-0 sm:flex-nowrap`,children:[W&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`hidden lg:flex`,children:(0,Z.jsx)(qr,{search:E,onSearchChange:re})}),(0,Z.jsx)(G,{"aria-label":v?`Hide member search`:`Show member search`,className:y(`lg:hidden`,v&&`bg-secondary hover:bg-secondary`),variant:`outline`,onClick:()=>{if(v){x(!1),T(!1);return}T(!0),x(!0)},children:(0,Z.jsx)(ce,{className:`size-4`})}),!te&&(0,Z.jsx)(Kr,{activeView:g,filters:s,iconOnly:!0,multipleActiveSubscriptionsCount:k,nql:c,savedViews:h,onFiltersChange:u})]}),(0,Z.jsx)(fr,{canBulkDelete:M,hasFilterOrSearch:f,memberCount:V,nql:c,search:l,showMenu:W,showNewMember:W,onImportComplete:()=>{ee()}})]})})]}),W&&(U||H)&&(0,Z.jsxs)(Ut,{className:y(`flex-col gap-4 lg:flex-row lg:items-center sidebar:gap-6 lg:gap-6`,!U&&`lg:hidden`),children:[H&&(0,Z.jsx)(`div`,{className:`w-full lg:hidden`,children:(0,Z.jsx)(qr,{ariaLabel:`Search members mobile`,autoFocus:S,search:E,onSearchChange:re})}),U&&(0,Z.jsx)(Kr,{activeView:g,filters:s,multipleActiveSubscriptionsCount:k,nql:c,savedViews:h,onFiltersChange:u})]}),t&&(0,Z.jsx)(Ti,{count:k,hasResolvedCount:A,nql:c,search:l})]})}),(0,Z.jsxs)(qt.Body,{children:[B?(0,Z.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,Z.jsx)(ze,{size:`lg`})}):P?(0,Z.jsxs)(`div`,{className:`mb-16 flex flex-1 flex-col items-center justify-center`,children:[(0,Z.jsx)(`h2`,{className:`mb-2 text-xl font-medium`,children:`Error loading members`}),(0,Z.jsx)(`p`,{className:`mb-4 text-muted-foreground`,children:`Please reload the page to try again`}),(0,Z.jsx)(G,{onClick:()=>window.location.reload(),children:`Reload page`})]}):N?.members.length?(0,Z.jsx)(Ci,{activeColumns:j,backPath:`${m.pathname}${m.search}`,fetchNextPage:()=>void R(),hasNextPage:z,isFetchingNextPage:I,isLoading:F&&!I,items:N.members,pageHeaderRef:a,showEmailOpenRate:e,timezone:r,totalItems:V}):f?(0,Z.jsx)(`div`,{className:`flex flex-1 flex-col items-center justify-center`,children:(0,Z.jsx)(L,{actions:(0,Z.jsx)(G,{variant:`outline`,onClick:()=>{O.cancel(),D(``),p({replace:!1})},children:`Show all members`}),title:`No matching members found.`,children:(0,Z.jsx)(Se,{})})}):(0,Z.jsx)(pr,{membershipsEnabled:n,onMemberCreated:async()=>{await ee()}}),ne&&(0,Z.jsx)(`div`,{className:y(N?.members.length&&`mt-8`),children:(0,Z.jsx)(Xr,{})})]})]})})})},Ji=()=>{let[e]=g(),{data:t,isLoading:n}=ue({}),{data:r,isLoading:i}=Me(),a=Bi(e.get(`filter`)??void 0,!!t?.settings,n);if(n||i||!t?.settings||!r?.config||a)return(0,Z.jsx)(C,{className:`size-full`,children:(0,Z.jsx)(w,{className:`relative flex h-full flex-col`,size:`page`,children:(0,Z.jsxs)(qt,{children:[(0,Z.jsx)(qt.Header,{className:`py-4 sidebar:py-6`,children:(0,Z.jsx)(J,{blurredBackground:!1,sticky:!1,children:(0,Z.jsx)(J.Left,{children:(0,Z.jsx)(J.Title,{children:`Members`})})})}),(0,Z.jsx)(qt.Body,{children:(0,Z.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,Z.jsx)(ze,{size:`lg`})})})]})})});let o=rn(t.settings),s=q(t.settings,`members_signup_access`)!==`none`,c=r.config.emailAnalytics===!0,l=_t(t.settings,r.config);return(0,Z.jsx)(qi,{emailAnalyticsEnabled:c,hasStripeEnabled:l,membershipsEnabled:s,timezone:o})};export{Ji as default};
10
+ `,`"`,s.BYTE_ORDER_MARK],s.WORKERS_SUPPORTED=!r&&!!t.Worker,s.NODE_STREAM_INPUT=1,s.LocalChunkSize=10485760,s.RemoteChunkSize=5242880,s.DefaultDelimiter=`,`,s.Parser=g,s.ParserHandle=m,s.NetworkStreamer=u,s.FileStreamer=d,s.StringStreamer=f,s.ReadableStreamStreamer=p,t.jQuery&&((n=t.jQuery).fn.parse=function(e){var r=e.config||{},i=[];return this.each(function(e){if(!(n(this).prop(`tagName`).toUpperCase()===`INPUT`&&n(this).attr(`type`).toLowerCase()===`file`&&t.FileReader)||!this.files||this.files.length===0)return!0;for(var a=0;a<this.files.length;a++)i.push({file:this.files[a],inputElem:this,instanceConfig:n.extend({},r)})}),a(),this;function a(){if(i.length===0)S(e.complete)&&e.complete();else{var t,r,a,c,l=i[0];if(S(e.before)){var u=e.before(l.file,l.inputElem);if(typeof u==`object`){if(u.action===`abort`)return t=`AbortError`,r=l.file,a=l.inputElem,c=u.reason,void(S(e.error)&&e.error({name:t},r,a,c));if(u.action===`skip`)return void o();typeof u.config==`object`&&(l.instanceConfig=n.extend(l.instanceConfig,u.config))}else if(u===`skip`)return void o()}var d=l.instanceConfig.complete;l.instanceConfig.complete=function(e){S(d)&&d(e,l.file,l.inputElem),o()},s.parse(l.file,l.instanceConfig)}}function o(){i.splice(0,1),a()}}),i&&(t.onmessage=function(e){e=e.data,s.WORKER_ID===void 0&&e&&(s.WORKER_ID=e.workerId),typeof e.input==`string`?t.postMessage({workerId:s.WORKER_ID,results:s.parse(e.input,e.config),finished:!0}):(t.File&&e.input instanceof File||e.input instanceof Object)&&(e=s.parse(e.input,e.config))&&t.postMessage({workerId:s.WORKER_ID,results:e,finished:!0})}),(u.prototype=Object.create(l.prototype)).constructor=u,(d.prototype=Object.create(l.prototype)).constructor=d,(f.prototype=Object.create(f.prototype)).constructor=f,(p.prototype=Object.create(l.prototype)).constructor=p,s})})),jn=e(S(),1),Mn=e(An(),1);function Nn(e){let t=Mn.default.parse(e,{header:!0,skipEmptyLines:!0});return!t.data||t.data.length<1?[]:t.data.map(e=>{let t={};for(let[n,r]of Object.entries(e))t[n]=typeof r==`string`?r:typeof r==`number`||typeof r==`boolean`?String(r):``;return t})}function Pn(e){return e.length===0?``:Mn.default.unparse(e,{quotes:!0})}function Fn(e){let t=e.meta.stats.imported,n=e.meta.stats.invalid||[],r=n.length,i={},a=Pn(n.map(e=>{let t=wn(e.error);return t.split(`,`).forEach(e=>{let t=e.trim();i[t]?i[t].count+=1:i[t]={message:t,count:1}}),{...e,error:t}})),o=new Blob([a],{type:`text/csv`}),s=URL.createObjectURL(o),c=e.meta.import_label;return{importedCount:t,errorCount:r,errorCsvUrl:s,errorCsvName:c?`${c.name} - Errors.csv`:`Import ${(0,jn.default)().format(`YYYY-MM-DD HH:mm`)} - Errors.csv`,errorList:Object.values(i),importLabel:e.meta.import_label||void 0}}function In(e,t){switch(t.type){case`SELECT_FILE`:return{...e,status:`MAPPING`,file:t.file,fileData:null,mapping:null,dataPreviewIndex:0,mappingError:null,showMappingErrors:!1,fileError:null};case`SET_FILE_ERROR`:return{...e,fileError:t.fileError};case`PARSE_SUCCESS`:return{...e,fileData:t.fileData,mapping:t.mapping,mappingError:t.mappingError};case`PARSE_FAILURE`:return{...e,fileData:[],mapping:null,mappingError:t.mappingError};case`UPDATE_MAPPING`:return{...e,mapping:t.mapping,mappingError:t.mappingError};case`SET_SELECTED_LABEL_SLUGS`:return{...e,selectedLabelSlugs:t.selectedLabelSlugs};case`SET_DATA_PREVIEW_INDEX`:return{...e,dataPreviewIndex:t.dataPreviewIndex};case`SET_SHOW_MAPPING_ERRORS`:return{...e,showMappingErrors:t.showMappingErrors};case`SET_DRAG_OVER`:return{...e,dragOver:t.dragOver};case`UPLOAD_START`:return{...e,status:`UPLOADING`,showMappingErrors:!1};case`UPLOAD_ACCEPTED`:return{...e,status:`PROCESSING`};case`UPLOAD_COMPLETE`:return{...e,status:`COMPLETE`,importResponse:t.importResponse};case`UPLOAD_ERROR`:return{...e,status:`ERROR`,errorMessage:t.errorMessage,errorHeader:t.errorHeader??`Import error`,showTryAgainButton:t.showTryAgainButton??!0};case`RESET`:return Dn();default:return e}}function Ln({open:e,onOpenChange:t,onComplete:n,onClose:r}){let[i,o]=(0,X.useReducer)(In,void 0,Dn),c=(0,X.useRef)(null),{data:l}=Te(),{mutateAsync:f}=ie(),p=l?.config?.labs?.importMemberTier===!0,m=(0,X.useMemo)(()=>vn({importMemberTier:p}),[p]),h=an({selectedSlugs:i.selectedLabelSlugs,onSelectionChange:e=>o({type:`SET_SELECTED_LABEL_SLUGS`,selectedLabelSlugs:e})}),g=(0,X.useCallback)(()=>{c.current&&typeof URL.revokeObjectURL==`function`?(URL.revokeObjectURL(c.current),c.current=null):c.current&&=null},[]),_=(0,X.useCallback)(()=>{g(),o({type:`RESET`})},[g]);(0,X.useEffect)(()=>()=>{g()},[g]);let v=(0,X.useCallback)(e=>{if(!(!e&&i.status===`UPLOADING`)){if(!e){let e=i.importResponse??void 0;_(),r?.(e)}t(e)}},[r,t,_,i.importResponse,i.status]);(0,X.useEffect)(()=>{if(!i.file)return;let e=!1,t=new FileReader;return t.onload=t=>{if(!e)try{let e=t.target?.result,n=Nn(e);if(n.length>0){let e=new xn(Cn(n,{importMemberTier:p}));o({type:`PARSE_SUCCESS`,fileData:n,mapping:e,mappingError:e.getKeyByValue(`email`)?null:`Please map "Email" to one of the fields in the CSV.`})}else o({type:`PARSE_SUCCESS`,fileData:[],mapping:null,mappingError:`File is empty, nothing to import. Please select a different file.`})}catch{o({type:`PARSE_FAILURE`,mappingError:`Failed to parse this file. Please try another CSV file.`})}},t.onerror=()=>{e||o({type:`PARSE_FAILURE`,mappingError:`Failed to read file${t.error?.message?`: ${t.error.message}`:``}`})},t.onabort=()=>{e||o({type:`PARSE_FAILURE`,mappingError:`File read was interrupted. Please try again.`})},t.readAsText(i.file),()=>{e=!0,t.readyState===FileReader.LOADING&&t.abort()}},[p,i.file]);let b=(0,X.useCallback)(e=>{let t=/(?:\.([^.]+))?$/.exec(e.name)?.[1];return!t||t.toLowerCase()!==`csv`?(o({type:`SET_FILE_ERROR`,fileError:`The file type you uploaded is not supported`}),!1):(o({type:`SET_FILE_ERROR`,fileError:null}),!0)},[]),x=(0,X.useCallback)(e=>{b(e)&&o({type:`SELECT_FILE`,file:e})},[b]),S=(0,X.useCallback)((e,t)=>{if(!i.mapping)return;let n=i.mapping.updateMapping(e,t),r=i.fileData&&i.fileData.length===0?`File is empty, nothing to import. Please select a different file.`:n.getKeyByValue(`email`)?null:`Please map "Email" to one of the fields in the CSV.`;o({type:`UPDATE_MAPPING`,mapping:n,mappingError:r})},[i.fileData,i.mapping]),C=(0,X.useCallback)(async()=>{if(!i.file||i.mappingError){o({type:`SET_SHOW_MAPPING_ERRORS`,showMappingErrors:!0});return}o({type:`UPLOAD_START`});let e=[];for(let t of i.selectedLabelSlugs){let n=h.labels.find(e=>e.slug===t);n&&e.push(n.name)}try{let t=await f({file:i.file,labels:e,mapping:i.mapping?.toJSON()});if(xt(t)){let e=Fn(t);g(),c.current=e.errorCsvUrl,o({type:`UPLOAD_COMPLETE`,importResponse:e}),n?.(e);return}o({type:`UPLOAD_ACCEPTED`}),n?.()}catch(e){if(e instanceof u){o({type:`UPLOAD_ERROR`,errorMessage:`The file you uploaded was larger than the maximum file size your server allows.`});return}let t=e instanceof a?e.data?.errors?.[0]:null;if(e instanceof s&&t?.code===`EMAIL_VERIFICATION_NEEDED`){o({type:`UPLOAD_ERROR`,errorMessage:t.message,errorHeader:`Woah there cowboy, that's a big list`,showTryAgainButton:!1}),n?.();return}if(e instanceof d||t?.type===`DataImportError`){o({type:`UPLOAD_ERROR`,errorMessage:t?.message||(e instanceof Error?e.message:`An unexpected error occurred, please try again`)});return}o({type:`UPLOAD_ERROR`,errorMessage:`An unexpected error occurred, please try again`})}},[i.file,i.mapping,i.mappingError,i.selectedLabelSlugs,h.labels,f,g,n]),w=i.fileData?!!i.fileData[i.dataPreviewIndex+1]:!1,T=i.dataPreviewIndex>0,E=i.fileData?.length??0,D=i.status===`MAPPING`||i.status===`UPLOADING`,O=(0,X.useMemo)(()=>{switch(i.status){case`PROCESSING`:return`Import in progress`;case`COMPLETE`:return`Import complete`;case`ERROR`:return i.errorHeader;default:return`Import members`}},[i.errorHeader,i.status]);return(0,Z.jsx)(bt,{open:e,onOpenChange:v,children:(0,Z.jsxs)(le,{className:y(`gap-0`,D&&`max-w-2xl`),children:[(0,Z.jsxs)(pe,{children:[(0,Z.jsx)(ue,{children:O}),(0,Z.jsx)(gt,{className:`sr-only`,children:`Import members from a CSV file.`})]}),i.status===`INIT`&&(0,Z.jsx)(pn,{fileError:i.fileError,onClose:()=>v(!1),onDropAccepted:x,onDropRejected:()=>o({type:`SET_FILE_ERROR`,fileError:`The file type you uploaded is not supported`})}),(i.status===`MAPPING`||i.status===`UPLOADING`)&&(0,Z.jsx)(Tn,{dataPreviewIndex:i.dataPreviewIndex,fieldMappings:m,fileData:i.fileData,hasNextRecord:w,hasPrevRecord:T,labelPicker:h,mapping:i.mapping,mappingError:i.mappingError,membersCount:E,showMappingErrors:i.showMappingErrors,status:i.status,onDataPreviewIndexChange:e=>{o({type:`SET_DATA_PREVIEW_INDEX`,dataPreviewIndex:e})},onStartOver:_,onUpdateMapping:S,onUpload:()=>void C()}),i.status===`PROCESSING`&&(0,Z.jsx)(En,{onClose:()=>v(!1),onUploadAnotherFile:_}),i.status===`COMPLETE`&&i.importResponse&&(0,Z.jsx)(On,{importResponse:i.importResponse,onClose:()=>v(!1),onReset:_}),i.status===`ERROR`&&(0,Z.jsx)(kn,{errorMessage:i.errorMessage,showTryAgainButton:i.showTryAgainButton,onClose:()=>v(!1),onTryAgain:_})]})})}var Rn=`count.active_stripe_customers`,zn=`${Rn}:>1`,Bn=`${Rn}:<2`,Vn=Xe({multipleActiveSubscriptionsBanner:Xe({dismissedCount:ft().finite().optional().catch(void 0),dismissedAt:nt().optional().catch(void 0)}).optional().catch(void 0)});function Hn(e){return e===zn}function Un(e){if(!e)return Vn.parse({});try{let t=JSON.parse(e);return Vn.parse(t)}catch{return Vn.parse({})}}function Wn(e){return Un(e).multipleActiveSubscriptionsBanner??{}}function Gn(e,t,n){let r=Un(e),i=Wn(e);return JSON.stringify({...r,multipleActiveSubscriptionsBanner:{...i,dismissedCount:t,dismissedAt:n}})}function Kn(e,t,n){return{...e,accessibility:Gn(e.accessibility,t,n)}}var qn=[`is`,`contains`,`does-not-contain`,`starts-with`,`ends-with`],Jn=[`is`,`is-greater`,`is-less`],Q=[`is`,`is-not`],Yn=[`is-any`,`is-not-any`],Xn=[{value:`active`,label:`Active`},{value:`trialing`,label:`Trialing`},{value:`canceled`,label:`Canceled`},{value:`unpaid`,label:`Unpaid`},{value:`past_due`,label:`Past Due`},{value:`incomplete`,label:`Incomplete`},{value:`incomplete_expired`,label:`Incomplete - Expired`}],Zn={parse(){return null},serialize(e){let t=e.values[0];return e.operator!==`is`&&e.operator!==`is-not`?null:t===`email-disabled`?e.operator===`is`?[`(email_disabled:1)`]:[`(email_disabled:0)`]:t===`subscribed`?e.operator===`is`?[`(subscribed:true+email_disabled:0)`]:[`(subscribed:false,email_disabled:1)`]:t===`unsubscribed`?e.operator===`is`?[`(subscribed:false+email_disabled:0)`]:[`(subscribed:true,email_disabled:1)`]:null}},Qn={parse(){return null},serialize(e,t){let n=t.params.slug,r=e.values[0];return!n||e.operator!==`is`?null:r===`subscribed`?[`(newsletters.slug:${n}+email_disabled:0)`]:r===`unsubscribed`?[`(newsletters.slug:-${n},email_disabled:1)`]:null}},$n={parse(){return null},serialize(e){let t=e.values[0];return typeof t!=`string`||!t||e.operator!==`1`&&e.operator!==`0`?null:[`(feedback.post_id:${p(t)}+feedback.score:${e.operator})`]}},er={parse(e,t){let n=Ht(e);return!n||n.field!==t.key?null:n.operator===`$gt`&&n.value===1?{field:t.key,operator:`is`,values:[`true`]}:n.operator===`$lt`&&n.value===2?{field:t.key,operator:`is`,values:[`false`]}:null},serialize(e){let t=e.values[0];return e.operator===`is`?t===`true`?[zn]:t===`false`?[Bn]:null:null}},tr=Bt({name:{operators:qn,ui:{label:`Name`,type:`text`,placeholder:`Enter name...`,defaultOperator:`contains`,className:`w-48`},codec:Pt()},email:{operators:qn,ui:{label:`Email`,type:`text`,placeholder:`Enter email...`,defaultOperator:`contains`,className:`w-48`},codec:Pt()},label:{operators:Yn,ui:{label:`Label`,type:`multiselect`,searchable:!0,className:`w-64`,defaultOperator:`is-any`},metadata:{activeColumn:{key:`labels`,label:`Labels`,include:`labels`}},codec:Lt()},subscribed:{operators:Q,ui:{label:`Newsletter subscription`,type:`select`,searchable:!1},options:[{value:`subscribed`,label:`Subscribed`},{value:`unsubscribed`,label:`Unsubscribed`},{value:`email-disabled`,label:`Email disabled`}],codec:Zn},last_seen_at:{operators:jt,ui:{label:`Last seen`,type:`date`,defaultOperator:Tt},codec:Vt()},created_at:{operators:jt,ui:{label:`Created`,type:`date`,defaultOperator:Tt},codec:Vt()},signup:{operators:Q,ui:{label:`Signed up on post/page`,type:`select`,searchable:!0,placeholder:`Select a post or page...`,className:`w-64`},codec:Y({quoteStrings:!0})},"newsletters.:slug":{operators:[`is`],ui:{label:`Newsletter`,type:`select`,searchable:!1,hideOperatorSelect:!0},options:[{value:`subscribed`,label:`Subscribed`},{value:`unsubscribed`,label:`Unsubscribed`}],codec:Qn},tier_id:{operators:Yn,ui:{label:`Membership tier`,type:`multiselect`,searchable:!0,className:`w-64`,defaultOperator:`is-any`},metadata:{activeColumn:{key:`tiers`,label:`Tiers`,include:`tiers`}},codec:Lt()},status:{operators:Q,ui:{label:`Member status`,type:`select`,searchable:!1},options:[{value:`paid`,label:`Paid`},{value:`free`,label:`Free`},{value:`comped`,label:`Complimentary`}],codec:Y()},"subscriptions.plan_interval":{operators:Q,ui:{label:`Billing period`,type:`select`,searchable:!1},options:[{value:`month`,label:`Monthly`},{value:`year`,label:`Yearly`}],metadata:{activeColumn:{key:`subscriptions.plan_interval`,label:`Billing period`,include:`subscriptions`}},codec:Y()},"subscriptions.status":{operators:Q,ui:{label:`Stripe subscription status`,type:`select`,searchable:!1},options:Xn,metadata:{activeColumn:{key:`subscriptions.status`,label:`Subscription status`,include:`subscriptions`}},codec:Y()},"subscriptions.start_date":{operators:jt,ui:{label:`Paid start date`,type:`date`,defaultOperator:Tt},metadata:{activeColumn:{key:`subscriptions.start_date`,label:`Paid start date`,include:`subscriptions`}},codec:Vt()},"subscriptions.current_period_end":{operators:jt,ui:{label:`Next billing date`,type:`date`,defaultOperator:Tt},metadata:{activeColumn:{key:`subscriptions.current_period_end`,label:`Next billing date`,include:`subscriptions`}},codec:Vt()},conversion:{operators:Q,ui:{label:`Subscription started on post/page`,type:`select`,searchable:!0,placeholder:`Select a post or page...`,className:`w-64`},codec:Y({quoteStrings:!0})},email_count:{operators:Jn,ui:{label:`Emails sent (all time)`,type:`number`,defaultOperator:`is-greater`,min:0,className:`w-24`},codec:kt()},email_opened_count:{operators:Jn,ui:{label:`Emails opened (all time)`,type:`number`,defaultOperator:`is-greater`,min:0,className:`w-24`},codec:kt()},email_open_rate:{operators:Jn,ui:{label:`Open rate (all time)`,type:`number`,defaultOperator:`is-greater`,min:0,max:100,suffix:`%`,className:`w-24`},codec:kt()},"emails.post_id":{operators:Q,ui:{label:`Sent email`,type:`select`,searchable:!0,placeholder:`Select an email...`,className:`w-64`},codec:Y({quoteStrings:!0})},"opened_emails.post_id":{operators:Q,ui:{label:`Opened email`,type:`select`,searchable:!0,placeholder:`Select an email...`,className:`w-64`},codec:Y({quoteStrings:!0})},"clicked_links.post_id":{operators:Q,ui:{label:`Clicked email`,type:`select`,searchable:!0,placeholder:`Select an email...`,className:`w-64`},codec:Y({quoteStrings:!0})},newsletter_feedback:{operators:[`1`,`0`],ui:{label:`Responded with feedback`,type:`select`,searchable:!0,placeholder:`Select an email...`,className:`w-64`,defaultOperator:`1`},codec:$n},offer_redemptions:{operators:Yn,ui:{label:`Offer`,type:`multiselect`,searchable:!0,className:`w-64`,defaultOperator:`is-any`},metadata:{activeColumn:{key:`offer_redemptions`,label:`Offer`}},codec:Lt({quoteStrings:!0,serializeSingletonAsScalar:!0})},[Rn]:{operators:[`is`],ui:{label:`Multiple active subscriptions`,type:`select`,searchable:!1,hideOperatorSelect:!0},options:[{value:`true`,label:`Yes`},{value:`false`,label:`No`}],codec:er}}),nr=Bt({...tr,last_seen_at:Ct(tr.last_seen_at),created_at:Ct(tr.created_at),"subscriptions.start_date":Ct(tr[`subscriptions.start_date`]),"subscriptions.current_period_end":wt(tr[`subscriptions.current_period_end`])});function rr(){return nr}var ir=2;function ar(e){let t=new Map;for(let n of e){let e=Ot(nr,n.field,`UTC`)?.definition.metadata?.activeColumn;e&&t.set(e.key,e)}return Array.from(t.values()).slice(0,ir)}function or(e){let t=new Set([`labels`,`tiers`]);for(let n of ar(e))n.include&&t.add(n.include);return Array.from(t).join(`,`)}function sr({filters:e,nql:t,search:n}){if(!t&&!n)return;let r={include:or(e),limit:`100`,order:`created_at desc`};return t&&(r.filter=t),n&&(r.search=n),r}function cr({nql:e,search:t}){return!e&&!t?{all:!0}:{...e?{filter:e}:{},...t?{search:t}:{}}}function lr(e,t){return e?{text:jn.default.tz(e,t).format(`D MMM YYYY`),subtext:(0,jn.default)(e).fromNow()}:null}function ur(e,t,n){switch(e.key){case`labels`:return t.labels?.length?{text:t.labels.map(e=>e.name).join(`, `)}:null;case`tiers`:return t.tiers?.length?{text:t.tiers.map(e=>e.name).join(`, `)}:null;case`subscriptions.plan_interval`:{let e=t.current_subscription?.plan?.interval;return e?{text:e===`month`?`Monthly`:`Yearly`}:null}case`subscriptions.status`:{let e=t.current_subscription?.status;return e?{text:e.split(`_`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}:null}case`subscriptions.start_date`:return lr(t.current_subscription?.start_date,n);case`subscriptions.current_period_end`:return lr(t.current_subscription?.current_period_end,n);case`offer_redemptions`:{let e=t.subscriptions?.map(e=>e.offer?.name).filter(Boolean);return e?.length?{text:e.join(`, `)}:null}default:return null}}async function dr(e,t){let n=new URLSearchParams({limit:`all`});e&&n.set(`filter`,e),t&&n.set(`search`,t),await c(`/members/upload/?${n}`,`members.csv`)}var fr=({hasFilterOrSearch:e,memberCount:t,nql:n,search:r,canBulkDelete:i,showMenu:a=!0,showNewMember:o=!0,onImportComplete:s})=>{let c=_(),l=v(),u=c.pathname===`/members/import`,d=c.search??``,p=c.pathname===`/members`?`${c.pathname}${d}`:`/members`,m=`#/members/new?back=${encodeURIComponent(p)}`,[h,g]=(0,X.useState)(!1),[y,x]=(0,X.useState)(!1),[S,C]=(0,X.useState)(!1),[w,T]=(0,X.useState)(!1),{data:E,isLoading:D}=Kt({searchParams:{filter:`status:-archived`,limit:`50`}}),O=E?.newsletters||[],{mutateAsync:k,isPending:A}=mt(),{mutate:j,isPending:M}=se(),[N,P]=(0,X.useState)(!1),F=cr({nql:n,search:r}),I=(0,X.useCallback)(async()=>{try{await dr(n,r)}catch(e){throw f.error(`Export failed`,{description:`There was a problem downloading your member data. Please check your connection and try again.`}),e}},[n,r]),L=(0,X.useCallback)(async e=>{try{for(let t of e)await k({...F,action:{type:`addLabel`,meta:{label:{id:t}}}});g(!1),f.success(e.length>1?`Labels added successfully`:`Label added successfully`)}catch{f.error(`Failed to add label`,{description:`There was a problem applying this label. Please try again.`})}},[k,F]),ee=(0,X.useCallback)(async e=>{try{for(let t of e)await k({...F,action:{type:`removeLabel`,meta:{label:{id:t}}}});x(!1),f.success(e.length>1?`Labels removed successfully`:`Label removed successfully`)}catch{f.error(`Failed to remove label`,{description:`There was a problem removing this label. Please try again.`})}},[k,F]),R=(0,X.useCallback)(async e=>{let t=F;if(e===null){try{await k({...t,action:{type:`unsubscribe`}}),C(!1),f.success(`Members unsubscribed successfully`)}catch{f.error(`Failed to unsubscribe members`,{description:`There was a problem unsubscribing these members. Please try again.`})}return}P(!0);try{let n=await Promise.allSettled(e.map(e=>k({...t,action:{type:`unsubscribe`,newsletter:e}}))),r=n.filter(e=>e.status===`fulfilled`).length,i=n.length;C(!1),r===i?f.success(`Unsubscribed from ${i} ${i===1?`newsletter`:`newsletters`}`):r>0?f.warning(`Unsubscribed from ${r} of ${i} newsletters`,{description:`Some newsletters could not be unsubscribed. Please try again.`}):f.error(`Failed to unsubscribe members`,{description:`There was a problem unsubscribing these members. Please try again.`})}catch{f.error(`Failed to unsubscribe members`,{description:`There was a problem unsubscribing these members. Please try again.`})}finally{P(!1)}},[k,F]),z=(0,X.useCallback)(()=>{j(F,{onSuccess:()=>{T(!1),f.success(`Members deleted successfully`)},onError:()=>{f.error(`Failed to delete members`,{description:`There was a problem deleting these members. Please try again.`})}})},[j,F]),B=(0,X.useCallback)(async()=>{try{await dr(n,r)}catch(e){throw f.error(`Export failed`,{description:`There was a problem downloading your backup. Please check your connection and try again.`}),e}},[n,r]),V=(0,X.useCallback)(()=>{},[]),te=(0,X.useCallback)(()=>{l(`/members/import${d}`)},[d,l]),H=(0,X.useCallback)(e=>{s?.(e)},[s]),U=(0,X.useCallback)(e=>{if(e?.importLabel){l(cn({filter:`label:[${e.importLabel.slug}]`}),{replace:!0});return}l(`/members${d}`,{replace:!0})},[d,l]);return(0,Z.jsxs)(Z.Fragment,{children:[a&&(0,Z.jsxs)(ve,{children:[(0,Z.jsx)(dt,{asChild:!0,children:(0,Z.jsx)(G,{"data-testid":`members-actions`,variant:`outline`,children:(0,Z.jsx)(De,{className:`size-4`})})}),(0,Z.jsxs)(ot,{align:`end`,children:[(0,Z.jsxs)(Pe,{onClick:te,children:[(0,Z.jsx)(Ce,{className:`mr-2 size-4`}),`Import members`]}),t>0&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(Pe,{onClick:()=>void I(),children:[(0,Z.jsx)(ge,{className:`mr-2 size-4`}),e?`Export ${b(t)} members`:`Export all members`]}),(0,Z.jsx)(re,{}),(0,Z.jsxs)(Pe,{onClick:()=>g(!0),children:[(0,Z.jsx)(Be,{className:`mr-2 size-4`}),`Add label to `,b(t),` `,t===1?`member`:`members`]}),(0,Z.jsxs)(Pe,{onClick:()=>x(!0),children:[(0,Z.jsx)(ut,{className:`mr-2 size-4`}),`Remove label from `,b(t),` `,t===1?`member`:`members`]}),(0,Z.jsxs)(Pe,{disabled:D,onClick:()=>C(!0),children:[(0,Z.jsx)(Fe,{className:`mr-2 size-4`}),`Unsubscribe `,b(t),` `,t===1?`member`:`members`]}),(0,Z.jsx)(re,{}),(0,Z.jsxs)(Pe,{className:`text-destructive focus:text-destructive`,disabled:!i,onClick:()=>T(!0),children:[(0,Z.jsx)(xe,{className:`mr-2 size-4`}),`Delete `,b(t),` `,t===1?`member`:`members`]})]})]})]}),o&&(0,Z.jsx)(G,{asChild:!0,children:(0,Z.jsxs)(`a`,{"aria-label":`New member`,className:`inline-flex items-center`,href:m,children:[(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`New member`}),(0,Z.jsx)(`span`,{className:`sm:hidden`,children:(0,Z.jsx)(ht,{})})]})}),(0,Z.jsx)(Ln,{open:u,onClose:U,onComplete:H,onOpenChange:V}),(0,Z.jsx)(ln,{isLoading:A,memberCount:t,open:h,onConfirm:e=>void L(e),onOpenChange:g}),(0,Z.jsx)(un,{isLoading:A,memberCount:t,nql:n,open:y,search:r,onConfirm:e=>void ee(e),onOpenChange:x}),(0,Z.jsx)(dn,{isLoading:A||N,memberCount:t,newsletters:O,open:S,onConfirm:e=>void R(e),onOpenChange:C}),(0,Z.jsx)(fn,{isLoading:M,memberCount:t,open:w,onConfirm:z,onExportBackup:B,onOpenChange:T})]})},pr=({membershipsEnabled:e,onMemberCreated:t})=>{let{data:n,isLoading:r}=o(),{mutateAsync:i,isPending:a}=Le(),s=l(),c=(0,X.useCallback)(async()=>{if(!(!n||a))try{await i({email:n.email,name:n.name}),f.success(`You've been added as a member`),await t?.()}catch(e){s(e)}},[i,n,s,a,t]);return e?(0,Z.jsx)(`div`,{className:`flex h-full flex-col items-center justify-center px-4`,children:(0,Z.jsx)(L,{actions:(0,Z.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-col items-center gap-2 sm:flex-row`,children:[(0,Z.jsx)(G,{asChild:!0,children:(0,Z.jsx)(`a`,{href:`#/members/new?back=%2Fmembers`,children:`New member`})}),(0,Z.jsx)(G,{disabled:a||r||!n,variant:`outline`,onClick:()=>void c(),children:a?`Adding...`:`Add yourself as a member`})]}),(0,Z.jsxs)(`p`,{className:`text-sm leading-tight text-pretty text-muted-foreground`,children:[`Already have members? `,(0,Z.jsx)(`a`,{className:`font-medium text-foreground underline-offset-4 hover:underline`,href:`#/members/import`,children:`Import with CSV`})]})]}),description:`Use memberships to allow your readers to sign up and subscribe to your content.`,title:`Start building your audience`,children:(0,Z.jsx)(Ye,{})})}):(0,Z.jsx)(`div`,{className:`flex h-full flex-col items-center justify-center px-4`,children:(0,Z.jsx)(L,{actions:(0,Z.jsx)(G,{variant:`outline`,asChild:!0,children:(0,Z.jsx)(`a`,{href:`#/settings/members`,children:`Membership settings`})}),description:`Adjust your membership settings to start adding members.`,title:`Memberships have been disabled`,children:(0,Z.jsx)(Ye,{})})})},mr=We.extend({route:Re(`members`),filter:Ue(nt(),nt().nullable()).refine(e=>typeof e.filter==`string`&&e.filter.length>0)}),hr=`A view with this name already exists`,gr=`Saved view could not be found for update`,_r=`Multiple saved views matched update target`,vr=`Saved view could not be found for delete`,yr=`Multiple saved views matched delete target`;function br(e){return mr.safeParse(e).success}function xr(e){let t=Ke(e);return t.ok?{ok:!0,views:t.views.filter(br)}:t}function Sr(e,t){return{name:e.trim(),route:`members`,filter:{filter:t}}}function Cr(e,t,n,r){let i=Sr(t,n);if(r){let t=et(e,r);if(t.length===0)throw Error(gr);if(t.length>1)throw Error(_r);let n=t[0];if(Qe(e,i,n))throw Error(hr);return e.map((e,t)=>t===n?i:e)}if(Qe(e,i))throw Error(hr);return[...e,i]}function wr(e,t){let n=et(e,t);if(n.length===0)throw Error(vr);if(n.length>1)throw Error(yr);let r=n[0];return e.filter((e,t)=>t!==r)}var Tr=`Cannot modify saved views because shared_views is invalid`;function Er(e){return K(e?.settings??null,`shared_views`)??`[]`}function Dr(){let{data:e}=fe(),t=l(),n=Er(e),r=(0,X.useRef)(null),i=(0,X.useMemo)(()=>xr(n),[n]);return(0,X.useEffect)(()=>{i.ok||r.current===n||(r.current=n,t(i.error,{withToast:!1}))},[t,i,n]),i.ok?i.views:[]}function Or(){let{data:e}=fe(),{mutateAsync:t}=Ee(),n=l();return(0,X.useCallback)(async(r,i,a)=>{let o=Ke(Er(e));if(!o.ok){let e=Error(Tr,{cause:o.error});throw n(e,{withToast:!1}),e}let s=Cr(o.views,r,i,a);try{await t([{key:`shared_views`,value:JSON.stringify(s)}])}catch(e){throw n(e,{withToast:!1}),e}},[e,t,n])}function kr(){let{data:e}=fe(),{mutateAsync:t}=Ee(),n=l();return(0,X.useCallback)(async r=>{let i=Ke(Er(e));if(!i.ok){let e=Error(Tr,{cause:i.error});throw n(e,{withToast:!1}),e}let a=wr(i.views,r);try{await t([{key:`shared_views`,value:JSON.stringify(a)}])}catch(e){throw n(e,{withToast:!1}),e}},[e,t,n])}function Ar(e,t){return(0,X.useMemo)(()=>!t||e.length===0?null:e.find(e=>e.filter.filter===t)??null,[e,t])}var jr=({filter:e,existingViews:t,activeView:n,onDeleted:r,onClose:i})=>{let[a,o]=(0,X.useState)(()=>n?.name??``),[s,c]=(0,X.useState)(``),[l,u]=(0,X.useState)(!1),[d,f]=(0,X.useState)(!1),[p,m]=(0,X.useState)(!1),h=Or(),g=kr(),_=!!n,v=async()=>{let r=a.trim();if(!r){c(`Please enter a name`);return}if(!_&&t.find(e=>e.name.trim().toLowerCase()===r.toLowerCase())){c(`A view with this name already exists`);return}u(!0);try{await h(r,e,n??void 0),i()}catch(e){c(e instanceof Error?e.message:`Failed to save view`)}finally{u(!1)}},y=async()=>{if(n){f(!0);try{await g(n),i(),r?.()}catch(e){c(e instanceof Error?e.message:`Failed to delete view`)}finally{f(!1)}}};return(0,Z.jsx)(qe,{align:`end`,className:`w-72`,children:(0,Z.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Z.jsx)(`h3`,{className:`text-sm font-semibold`,children:_?`Edit view`:`Save view`}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,Z.jsx)(st,{placeholder:`View name`,value:a,autoFocus:!0,onChange:e=>{o(e.target.value),s&&c(``)},onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),v())}}),s&&(0,Z.jsx)(`p`,{className:`text-xs text-red-500`,children:s})]}),_?p?(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`Delete view?`}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(G,{size:`sm`,variant:`outline`,onClick:()=>m(!1),children:`Cancel`}),(0,Z.jsx)(G,{disabled:d,size:`sm`,variant:`destructive`,onClick:()=>void y(),children:d?`Deleting...`:`Delete`})]})]}):(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsx)(G,{className:`text-red hover:bg-red/5 hover:text-red`,size:`sm`,variant:`ghost`,onClick:()=>m(!0),children:`Delete`}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(G,{size:`sm`,variant:`outline`,onClick:i,children:`Cancel`}),(0,Z.jsx)(G,{disabled:l||!a.trim(),size:`sm`,onClick:()=>void v(),children:l?`Saving...`:`Save`})]})]}):(0,Z.jsx)(G,{className:`w-full`,disabled:l||!a.trim(),onClick:()=>void v(),children:l?`Saving...`:`Save`})]})})},Mr=({filter:e,existingViews:t,activeView:n,onDeleted:r})=>{let[i,a]=(0,X.useState)(!1),o=n?`edit:${n.name}:${n.filter.filter}`:`save:${e}`;return(0,Z.jsxs)(rt,{open:i,onOpenChange:a,children:[(0,Z.jsx)(Ge,{asChild:!0,children:(0,Z.jsx)(G,{variant:`outline`,children:n?`Edit view`:`Save view`})}),i&&(0,Z.jsx)(jr,{activeView:n,existingViews:t,filter:e,onClose:()=>a(!1),onDeleted:r},o)]})},Nr={"is-any":`is any of`,"is-not-any":`is none of`,"does-not-contain":`does not contain`,...At,...Dt,1:`More like this`,0:`Less like this`},Pr={"is-greater":`is greater than`,"is-less":`is less than`};function Fr(e){switch(e){case`name`:return X.createElement(oe,{className:`size-4`});case`email`:case`subscribed`:return X.createElement(Me,{className:`size-4`});case`label`:return X.createElement(ut,{className:`size-4`});case`last_seen_at`:return X.createElement(Je,{className:`size-4`});case`created_at`:return X.createElement(lt,{className:`size-4`});case`signup`:return X.createElement(he,{className:`size-4`});case`tier_id`:case`subscriptions.status`:return X.createElement(we,{className:`size-4`});case`status`:return X.createElement(_e,{className:`size-4`});case`subscriptions.plan_interval`:return X.createElement(Ze,{className:`size-4`});case`subscriptions.start_date`:return X.createElement(ze,{className:`size-4`});case`subscriptions.current_period_end`:return X.createElement(pt,{className:`size-4`});case`conversion`:return X.createElement(Ae,{className:`size-4`});case`email_count`:case`emails.post_id`:return X.createElement(tt,{className:`size-4`});case`email_opened_count`:case`opened_emails.post_id`:return X.createElement(Ve,{className:`size-4`});case`email_open_rate`:return X.createElement(ae,{className:`size-4`});case`clicked_links.post_id`:return X.createElement(Se,{className:`size-4`});case`newsletter_feedback`:return X.createElement(je,{className:`size-4`});case`offer_redemptions`:return X.createElement(it,{className:`size-4`});case Rn:return X.createElement(ct,{className:`size-4`});default:return e.startsWith(`newsletters.`)?X.createElement(me,{className:`size-4`}):void 0}}function $(e,t){return{options:e,valueSource:t}}function Ir(e){let t=new Map,n=[],r=[];for(let t of e)t.redemption_type===`retention`&&(t.cadence===`month`?n.push(t.id):t.cadence===`year`&&r.push(t.id));return n.length>0&&t.set(`retention:month`,n),r.length>0&&t.set(`retention:year`,r),t}function Lr(e){return Array.isArray(e.metadata?.offerIds)?e.metadata.offerIds.filter(e=>typeof e==`string`):null}function Rr(e){let t=[],n=Ir(e);for(let n of e)n.redemption_type!==`retention`&&t.push({value:n.id,label:n.name});return n.has(`retention:month`)&&t.push({value:`retention:month`,label:`Monthly Retention`,metadata:{offerIds:n.get(`retention:month`)}}),n.has(`retention:year`)&&t.push({value:`retention:year`,label:`Yearly Retention`,metadata:{offerIds:n.get(`retention:year`)}}),t}function zr(e,t){let n=[],r=new Set;for(let i of t){let t=Lr(i);t&&t.length>0&&t.every(t=>e.includes(t))&&(n.push(String(i.value)),t.forEach(e=>{r.add(e)}))}for(let t of e)r.has(t)||n.push(t);return n}function Br(e,t){let n=[];for(let r of e){let e=t.find(e=>e.value===r),i=e?Lr(e):null;i?n.push(...i):n.push(r)}return[...new Set(n)]}function Vr(e){return new Map(e.map(e=>[e.id,e.name]))}function Hr(e,t,n){let r=e.map(e=>t.find(t=>t.value===e)).filter(e=>!!e);return r.length===1?r[0].label:r.length>1?`${r.length} selected`:e.length===1?n.get(e[0])??`Select...`:e.length>1?`${e.length} selected`:`Select...`}function Ur({labelValueSource:e,tierValueSource:t,newsletters:n=[],hydratedNewsletterSlugs:r=[],hasMultipleTiers:i=!1,paidMembersEnabled:a=!1,emailFiltersEnabled:o=!1,postValueSource:s,emailValueSource:c,offers:l=[],multipleActiveSubscriptionsCount:u=0,membersTrackSources:d=!1,emailTrackOpens:f=!1,emailTrackClicks:p=!1,siteTimezone:m=`UTC`}){return(0,X.useMemo)(()=>{let h=rr();function g(e,t={},n=Nr){let r=e.startsWith(`newsletters.`)?h[`newsletters.:slug`]:h[e];return{key:e,...r.ui,icon:Fr(e),operators:Nt(r.operators,{labels:n}),...`options`in r&&r.options?{options:r.options}:{},...t}}function _(e,t,n={}){let r=h[e],i=g(e,{defaultValue:t,...n});return Wt(r)?{...i,customRenderer:Gt(t)}:i}let v=[],y=n.filter(e=>e.status!==`archived`),b=new Set(y.map(e=>e.slug)),x=[...new Set(r)].map(e=>({slug:e,name:n.find(t=>t.slug===e)?.name??e})),S=x.filter(e=>!b.has(e.slug)),C=Rr(l),w=Vr(l),T=Yt(m),E=[g(`name`),g(`email`)];if(e&&E.push(g(`label`,{...$([],e),customRenderer:e=>X.createElement(sn,e)})),y.length<=1){E.push(g(`subscribed`));for(let e of x)E.push(g(`newsletters.${e.slug}`,{label:e.name}))}if(E.push(_(`last_seen_at`,T),_(`created_at`,T)),d&&E.push(g(`signup`,$([],s))),v.push({group:`Basic`,fields:E}),y.length>1){let e=[g(`subscribed`,{label:`All newsletters`,options:[{value:`subscribed`,label:`Subscribed to at least one`},{value:`unsubscribed`,label:`Unsubscribed from all`},{value:`email-disabled`,label:`Email disabled`}]})];for(let t of y)e.push(g(`newsletters.${t.slug}`,{label:t.name}));for(let t of S)e.push(g(`newsletters.${t.slug}`,{label:t.name}));v.push({group:`Newsletters`,fields:e})}if(a){let e=[];i&&e.push(g(`tier_id`,$([],t))),e.push(g(`status`,{options:[...h.status.options,{value:`gift`,label:`Gift subscription`}]})),u>0&&e.push(g(Rn)),e.push(g(`subscriptions.plan_interval`),g(`subscriptions.status`),_(`subscriptions.start_date`,T),_(`subscriptions.current_period_end`,T)),d&&e.push(g(`conversion`,$([],s))),l.length>0&&e.push(g(`offer_redemptions`,{options:C,customValueRenderer:e=>Hr(e,C,w)})),v.push({group:`Subscription`,fields:e})}if(o){let e=[g(`email_count`,{},Pr),g(`email_opened_count`,{},Pr)];f&&e.push(g(`email_open_rate`,{},Pr)),e.push(g(`emails.post_id`,$([],c))),f&&e.push(g(`opened_emails.post_id`,$([],c))),p&&e.push(g(`clicked_links.post_id`,$([],c))),e.push(g(`newsletter_feedback`,$([],c))),v.push({group:`Email`,fields:e})}return v},[o,c,p,f,i,e,d,u,n,l,r,a,s,m,t])}var Wr=[];function Gr(e,t){return e.map(e=>e.field===`offer_redemptions`?{...e,values:t(e.values)}:e)}var Kr=({filters:e,multipleActiveSubscriptionsCount:t,nql:n,onFiltersChange:r,savedViews:i=[],activeView:a,iconOnly:o=!1})=>{let{data:s}=m({}),{data:c}=Kt({searchParams:{limit:`100`}}),{data:l}=fe({}),u=l?.settings||[],d=K(u,`paid_members_enabled`)===!0,f=K(u,`editor_default_email_recipients`)!==`disabled`,p=K(u,`members_track_sources`)===!0,h=K(u,`email_track_opens`)===!0,g=K(u,`email_track_clicks`)===!0,_=rn(u),v=c?.newsletters||[],b=(0,X.useMemo)(()=>s?.offers??Wr,[s?.offers]),x=(0,X.useMemo)(()=>Rr(b),[b]),S=(0,X.useMemo)(()=>[...new Set(e.map(e=>e.field).filter(e=>e.startsWith(`newsletters.`)).map(e=>e.slice(12)).filter(Boolean))],[e]),C=(0,X.useMemo)(()=>Gr(e,e=>zr(e,x)),[e,x]),w=(0,X.useCallback)(e=>{r(Gr(e,e=>Br(e,x)))},[r,x]),E=Zt(),D=Jt(),O=Xt(),{valueSource:k,hasMultipleTiers:A}=Qt(),j=Ur({newsletters:v,hydratedNewsletterSlugs:S,hasMultipleTiers:A,paidMembersEnabled:d,emailFiltersEnabled:f,labelValueSource:O,tierValueSource:k,offers:b,multipleActiveSubscriptionsCount:t,postValueSource:E,emailValueSource:D,membersTrackSources:p,emailTrackOpens:h,emailTrackClicks:g,siteTimezone:_}),M=e.length>0,N=y(`bg-white dark:bg-background`,o&&!M&&`min-w-[34px] gap-0 !px-3 text-[0px] lg:min-w-0 lg:gap-1.5 lg:px-3 lg:text-base`),P=M?(0,Z.jsxs)(`div`,{className:`flex shrink-0 items-center gap-4 sm:absolute sm:top-0 sm:right-0`,children:[(0,Z.jsxs)(G,{className:`hidden items-center gap-1 !px-0 text-sm font-normal text-muted-foreground hover:bg-transparent hover:text-foreground lg:inline-flex`,type:`button`,variant:`ghost`,onClick:()=>r([]),children:[(0,Z.jsx)(de,{className:`size-4`}),`Clear`]}),n&&(0,Z.jsx)(Mr,{activeView:a,existingViews:i,filter:n,onDeleted:()=>r([])})]}):void 0;return(0,Z.jsx)(T,{addButtonClassName:N,addButtonIcon:M?(0,Z.jsx)(ce,{}):(0,Z.jsx)(yt,{}),addButtonText:M?`Add filter`:`Filter`,allowMultiple:!0,className:`[&>button]:order-last ${M?`sm:!pr-40 [&>button]:border-none`:`w-auto`}`,clearButton:P,fields:j,filters:C,keyboardShortcut:`f`,popoverAlign:`start`,popoverContentClassName:`z-[80] w-[280px] [&_[data-slot=command-list]]:max-h-[450px]`,showClearButton:M,showSearchInput:!0,onChange:w})},qr=({search:e,onSearchChange:t,autoFocus:n=!1,ariaLabel:r=`Search members`})=>{let i=r===`Search members mobile`?`members-mobile-search-input`:`members-search-input`;return(0,Z.jsxs)(z,{className:`h-(--control-height) min-w-0 basis-full lg:w-[180px] lg:basis-auto xl:w-[240px]`,children:[(0,Z.jsx)(R,{children:(0,Z.jsx)($e,{className:`size-4`,strokeWidth:1.75})}),(0,Z.jsx)(ee,{"aria-label":r,autoFocus:n,className:`!h-[34px]`,"data-testid":i,placeholder:`Search members...`,value:e,onChange:e=>t(e.target.value)})]})},Jr=({children:e,description:t,title:n,url:r})=>(0,Z.jsx)(`a`,{className:`group/card block rounded-xl border bg-card p-6 transition-all hover:bg-table-row-hover hover:shadow-xs`,href:r,rel:`noopener noreferrer`,target:`_blank`,children:(0,Z.jsxs)(`div`,{className:`flex items-center gap-6`,children:[e,(0,Z.jsxs)(`div`,{className:`flex flex-col leading-tight`,children:[(0,Z.jsx)(`h4`,{className:`text-md font-medium tracking-normal text-pretty text-foreground`,children:n}),(0,Z.jsx)(`p`,{className:`mt-1.5 text-sm leading-tight text-pretty text-muted-foreground`,children:t})]})]})}),Yr=`flex h-18 w-[100px] min-w-[100px] items-center justify-center rounded-md p-4 opacity-80 transition-all group-hover/card:opacity-100`,Xr=()=>(0,Z.jsxs)(`div`,{className:`grid w-full grid-cols-1 gap-4 lg:grid-cols-2`,children:[(0,Z.jsx)(Jr,{description:`Learn how to turn anonymous visitors into logged-in members with memberships in Ghost.`,title:`Building your audience with subscriber signups`,url:`https://ghost.org/resources/build-audience-subscriber-signups/`,children:(0,Z.jsx)(`div`,{className:y(Yr,`bg-gradient-to-tr from-[#22C55E]/20 to-[#84CC16]/20`),children:(0,Z.jsx)(he,{className:`text-[#16A34A]`,size:20,strokeWidth:1.5})})}),(0,Z.jsx)(Jr,{description:`Starting from zero? Use this guide to find your founding audience members.`,title:`Get your first 100 email subscribers`,url:`https://ghost.org/resources/first-100-email-subscribers/`,children:(0,Z.jsx)(`div`,{className:y(Yr,`bg-gradient-to-tl from-[#A855F7]/20 to-[#EC4899]/20`),children:(0,Z.jsx)(Me,{className:`text-[#DB2777]`,size:20,strokeWidth:1.5})})})]});function Zr(e,t){let n=new URLSearchParams;t&&n.set(`back`,t);let r=n.toString();return`/members/${e}${r?`?${r}`:``}`}var Qr={left:`100%`};function $r(e){if(!e)return{text:`Unknown`,isKnown:!1};try{let t=JSON.parse(e);return t.country?t.country_code===`US`&&t.region?{text:`${t.region}, US`,isKnown:!0}:{text:t.country,isKnown:!0}:{text:`Unknown`,isKnown:!1}}catch{return{text:`Unknown`,isKnown:!1}}}function ei(e){switch(e){case`paid`:return`Paid`;case`comped`:return`Complimentary`;case`gift`:return`Gift`;default:return`Free`}}function ti(e){return e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey}function ni(e,t){window.open(`#${Zr(e,t)}`,`_blank`,`noopener`)}function ri({item:e,backPath:t,onClick:n}){return(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,Z.jsx)(Ne,{className:`size-8 min-w-8`,email:e.email,name:e.name,src:e.avatar_image}),(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[(0,Z.jsx)(`a`,{className:`block min-w-0 cursor-pointer`,href:`#${Zr(e.id,t)}`,onClick:n?t=>{if(ti(t)){t.stopPropagation();return}t.preventDefault(),t.stopPropagation(),n(e.id)}:void 0,children:(0,Z.jsx)(`span`,{className:`block truncate text-md font-semibold`,children:e.name||e.email||`Anonymous`})}),e.name&&e.email&&(0,Z.jsx)(`div`,{className:`truncate text-muted-foreground`,"data-testid":`member-email`,children:e.email})]})]})}function ii({status:e,tiers:t}){let n=t?.map(e=>e.name).join(`, `);return(0,Z.jsx)(`div`,{className:`flex min-w-0 justify-start`,children:(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[(0,Z.jsx)(`div`,{className:`truncate`,children:ei(e)}),n&&(0,Z.jsx)(`div`,{className:`truncate text-sm text-muted-foreground`,children:n})]})})}function ai({emailOpenRate:e}){let t=e!=null;return(0,Z.jsx)(`div`,{className:y(`text-base`,t?`text-foreground`:`text-muted-foreground`),children:t?x(e/100):`N/A`})}function oi({geolocation:e}){let t=$r(e);return(0,Z.jsx)(`div`,{className:y(`truncate text-base`,t.isKnown?`text-foreground`:`text-muted-foreground`),children:t.text})}function si({createdAt:e}){return(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`div`,{className:`text-base`,children:jn.default.utc(e).format(`D MMM YYYY`)}),(0,Z.jsx)(`div`,{className:`text-base text-muted-foreground`,children:jn.default.utc(e).fromNow()})]})}function ci({column:e,member:t,timezone:n}){let r=ur(e,t,n);return r?(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[(0,Z.jsx)(`div`,{className:`truncate text-base`,children:r.text}),r.subtext&&(0,Z.jsx)(`div`,{className:`truncate text-base text-muted-foreground`,children:r.subtext})]}):(0,Z.jsx)(`span`,{className:`text-base text-muted-foreground`,children:`-`})}var li=(0,X.forwardRef)(function({item:e,activeColumns:t,backPath:n,columnStyles:r,showPinnedEdge:i,showEmailOpenRate:a,timezone:o,onClick:s,...c},l){let u=t=>{if(ti(t)){ni(e.id,n);return}s(e.id)},d=t=>{t.button===1&&(t.preventDefault(),ni(e.id,n))};return(0,Z.jsxs)(V,{...c,ref:l,className:y(`group cursor-pointer`,c.className),"data-testid":`members-list-item`,onAuxClick:d,onClick:u,children:[(0,Z.jsxs)(H,{className:y(`min-w-0 bg-background px-4 py-3 group-hover:bg-[var(--members-sticky-hover-bg)] max-sm:!w-full max-sm:!min-w-0 lg:sticky lg:left-0 lg:z-20`),children:[(0,Z.jsx)(ri,{backPath:n,item:e,onClick:s}),i&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-y-px hidden w-[24px] group-hover:opacity-0 lg:block`,style:{...Qr,background:`linear-gradient(to right, var(--background) 0px, color-mix(in hsl, var(--background) 78%, transparent) 6px, color-mix(in hsl, var(--background) 28%, transparent) 16px, transparent 24px)`}}),(0,Z.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-y-px hidden w-[24px] opacity-0 group-hover:opacity-100 lg:block`,style:{...Qr,background:`linear-gradient(to right, var(--members-sticky-hover-bg) 0px, color-mix(in hsl, var(--members-sticky-hover-bg) 78%, transparent) 6px, color-mix(in hsl, var(--members-sticky-hover-bg) 28%, transparent) 16px, transparent 24px)`}})]})]}),(0,Z.jsx)(H,{className:`hidden px-4 py-3 sm:table-cell`,style:r.status,children:(0,Z.jsx)(ii,{status:e.status,tiers:e.tiers})}),a&&(0,Z.jsx)(H,{className:`hidden px-4 py-3 lg:table-cell`,style:r.openRate,children:(0,Z.jsx)(ai,{emailOpenRate:e.email_open_rate})}),(0,Z.jsx)(H,{className:`hidden px-4 py-3 lg:table-cell`,style:r.location,children:(0,Z.jsx)(oi,{geolocation:e.geolocation})}),(0,Z.jsx)(H,{className:`hidden px-4 py-3 lg:table-cell`,style:r.created,children:(0,Z.jsx)(si,{createdAt:e.created_at})}),t.map(t=>(0,Z.jsx)(H,{className:`hidden px-4 py-3 lg:table-cell`,style:r.dynamic,children:(0,Z.jsx)(ci,{column:t,member:e,timezone:o})},t.key))]})}),ui={left:`100%`,background:`linear-gradient(to right, var(--members-sticky-fade-base) 0px, color-mix(in hsl, var(--members-sticky-fade-base) 78%, transparent) 6px, color-mix(in hsl, var(--members-sticky-fade-base) 28%, transparent) 16px, transparent 24px)`},di=({activeColumns:e,columnStyles:t,showEmailOpenRate:n})=>(0,Z.jsxs)(`colgroup`,{children:[(0,Z.jsx)(`col`,{className:`max-sm:!w-full max-sm:!min-w-0 sm:max-lg:!w-auto sm:max-lg:!min-w-0`,style:t.member}),(0,Z.jsx)(`col`,{className:`hidden sm:table-column`,style:t.status}),n&&(0,Z.jsx)(`col`,{className:`hidden lg:table-column`,style:t.openRate}),(0,Z.jsx)(`col`,{className:`hidden lg:table-column`,style:t.location}),(0,Z.jsx)(`col`,{className:`hidden lg:table-column`,style:t.created}),e.map(e=>(0,Z.jsx)(`col`,{className:`hidden lg:table-column`,style:t.dynamic},e.key))]}),fi=({activeColumns:e,className:t,columnStyles:n,headerRef:r,memberHeaderRef:i,showEmailOpenRate:a})=>(0,Z.jsx)(U,{ref:r,className:y(`hidden bg-transparent lg:table-header-group [&_th]:whitespace-nowrap`,t),children:(0,Z.jsxs)(V,{children:[(0,Z.jsx)(B,{ref:i,className:`sticky left-0 z-[70] bg-transparent px-4 [--members-sticky-fade-base:var(--background)]`,style:n.member,children:`Member`}),(0,Z.jsx)(B,{className:`bg-transparent px-4`,style:n.status,children:`Status`}),a&&(0,Z.jsx)(B,{className:`bg-transparent px-4`,style:n.openRate,children:`Open rate`}),(0,Z.jsx)(B,{className:`bg-transparent px-4`,style:n.location,children:`Location`}),(0,Z.jsx)(B,{className:`bg-transparent px-4`,style:n.created,children:`Created`}),e.map(e=>(0,Z.jsx)(B,{className:`bg-transparent px-4`,style:n.dynamic,children:e.label},e.key))]})}),pi=({columnStyle:e,showPinnedEdge:t})=>(0,Z.jsxs)(`div`,{className:`pointer-events-none absolute inset-y-0 left-0 z-[70] overflow-visible bg-transparent [--members-sticky-fade-base:var(--background)]`,style:e,children:[(0,Z.jsxs)(W,{className:`w-full table-fixed border-collapse`,children:[(0,Z.jsx)(`colgroup`,{children:(0,Z.jsx)(`col`,{style:{width:`100%`}})}),(0,Z.jsx)(U,{className:`bg-transparent lg:table-header-group [&_th]:whitespace-nowrap`,children:(0,Z.jsx)(V,{children:(0,Z.jsx)(B,{className:`bg-transparent px-4`,children:`Member`})})})]}),t&&(0,Z.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-y-px w-[24px]`,style:ui})]}),mi={member:40,status:15,openRate:10,location:17.5,created:17.5},hi={member:320,status:180,openRate:140,location:180,created:160},gi=17.5,_i=220;function vi(e){return Number.isFinite(e)?Math.max(0,Math.floor(e)):0}function yi({showEmailOpenRate:e,activeColumnCount:t}){let n=[{key:`member`,width:mi.member},{key:`status`,width:mi.status},...e?[{key:`openRate`,width:mi.openRate}]:[],{key:`location`,width:mi.location},{key:`created`,width:mi.created}],r=vi(t),i=n.reduce((e,t)=>e+t.width,0),a=100+r*gi,o=gi/a*100,s=n.reduce((e,t)=>{let n=t.width/i*100;return e[t.key]=n/a*100,e},{member:0,status:0,openRate:0,location:0,created:0});return{tableWidthPercentage:a,minTableWidth:n.reduce((e,t)=>e+hi[t.key],0)+r*_i,dynamicColumnWidthPercentage:o,baseColumnWidthPercentages:s,baseColumnMinWidths:{member:hi.member,status:hi.status,openRate:hi.openRate,location:hi.location,created:hi.created},dynamicColumnMinWidth:_i}}function bi(e){let t=(e,t)=>({width:`${e}%`,minWidth:`${t}px`});return{tableStyle:{"--members-table-width":`${e.tableWidthPercentage}%`,"--members-table-min-width":`${e.minTableWidth}px`},columnStyles:{member:t(e.baseColumnWidthPercentages.member,e.baseColumnMinWidths.member),status:t(e.baseColumnWidthPercentages.status,e.baseColumnMinWidths.status),openRate:t(e.baseColumnWidthPercentages.openRate,e.baseColumnMinWidths.openRate),location:t(e.baseColumnWidthPercentages.location,e.baseColumnMinWidths.location),created:t(e.baseColumnWidthPercentages.created,e.baseColumnMinWidths.created),dynamic:t(e.dynamicColumnWidthPercentage,e.dynamicColumnMinWidth)}}}var xi=({height:e})=>(0,Z.jsx)(`tr`,{"aria-hidden":`true`,style:{height:e},children:(0,Z.jsx)(`td`,{colSpan:999})}),Si=(0,X.forwardRef)(function(e,t){return(0,Z.jsx)(V,{ref:t,...e,"aria-hidden":`true`,children:(0,Z.jsx)(H,{className:`h-[72px] px-4 py-3`,colSpan:999,children:(0,Z.jsx)(`div`,{className:`h-full animate-pulse rounded-md bg-muted`,"data-testid":`loading-placeholder`})})})});function Ci({items:e,totalItems:t,backPath:n,hasNextPage:r,isFetchingNextPage:i,fetchNextPage:a,isLoading:o,showEmailOpenRate:s=!0,activeColumns:c,timezone:l,pageHeaderRef:u,onRowClick:d}){let f=(0,X.useRef)(null),p=(0,X.useRef)(null),m=(0,X.useRef)(null),h=(0,X.useRef)(null),g=(0,X.useRef)(null),[_,v]=(0,X.useState)(0),[y,b]=(0,X.useState)(0),[x,S]=(0,X.useState)(!1),{visibleItemCount:C,canLoadMore:w,loadMore:T}=tn(t),E=(0,X.useMemo)(()=>yi({showEmailOpenRate:s,activeColumnCount:c.length}),[c.length,s]),{tableStyle:D,columnStyles:O}=(0,X.useMemo)(()=>bi(E),[E]);en({parentRef:f,isLoading:o}),(0,X.useEffect)(()=>{let e=g.current;if(!e)return;let t=()=>{let t=e.scrollLeft;S(t>0),h.current&&(h.current.scrollLeft=t)};return t(),e.addEventListener(`scroll`,t,{passive:!0}),window.addEventListener(`resize`,t),()=>{e.removeEventListener(`scroll`,t),window.removeEventListener(`resize`,t)}},[c.length,e.length,s]),(0,X.useEffect)(()=>{let e=u?.current,t=p.current,n=m.current;if(!e||!t||!n){v(0),b(0);return}let r=e.style.paddingBottom,i=e.style.marginBottom,a=parseFloat(getComputedStyle(e).paddingBottom)||0,o=parseFloat(getComputedStyle(e).marginBottom)||0,s=()=>{r?e.style.setProperty(`padding-bottom`,r):e.style.removeProperty(`padding-bottom`),i?e.style.setProperty(`margin-bottom`,i):e.style.removeProperty(`margin-bottom`)},c=()=>{if(!window.matchMedia(`(min-width: 1024px)`).matches){s(),v(0),b(0);return}let r=t.getBoundingClientRect().height,i=n.getBoundingClientRect().width;e.style.setProperty(`padding-bottom`,`${a+r}px`,`important`),e.style.setProperty(`margin-bottom`,`${o-r}px`,`important`);let c=e.getBoundingClientRect().height;v(i),b(Math.max(c-r,0))};c();let l=new ResizeObserver(()=>{c()});return l.observe(e),l.observe(t),l.observe(n),window.addEventListener(`resize`,c),()=>{s(),l.disconnect(),window.removeEventListener(`resize`,c)}},[c.length,u,s]);let{visibleItems:k,spaceBefore:A,spaceAfter:j}=$t({items:e,totalItems:C,hasNextPage:r,isFetchingNextPage:i,fetchNextPage:a,parentRef:f,estimateSize:()=>72}),M=e=>{d?d(e):window.location.hash=Zr(e,n)};return(0,Z.jsxs)(`div`,{ref:f,className:`w-full min-w-0`,"data-testid":`members-list-scroll-root`,children:[(0,Z.jsx)(`div`,{className:`sticky z-[50] hidden overflow-visible bg-transparent lg:block`,style:{top:y},children:(0,Z.jsxs)(`div`,{className:`relative`,children:[(0,Z.jsx)(pi,{columnStyle:_>0?{width:_}:O.member,showPinnedEdge:x}),(0,Z.jsx)(`div`,{ref:h,className:`w-full overflow-hidden`,style:_>0?{clipPath:`inset(0 0 0 ${_}px)`}:void 0,children:(0,Z.jsxs)(W,{"aria-hidden":`true`,className:`w-full border-collapse lg:w-[var(--members-table-width)] lg:min-w-[var(--members-table-min-width)] lg:table-fixed`,style:D,children:[(0,Z.jsx)(di,{activeColumns:c,columnStyles:O,showEmailOpenRate:s}),(0,Z.jsx)(fi,{activeColumns:c,columnStyles:O,headerRef:p,memberHeaderRef:m,showEmailOpenRate:s})]})})]})}),(0,Z.jsx)(`div`,{ref:g,className:`w-full overflow-x-auto overflow-y-visible`,children:(0,Z.jsxs)(W,{className:`w-full border-collapse max-sm:table-fixed sm:max-lg:table-auto lg:w-[var(--members-table-width)] lg:min-w-[var(--members-table-min-width)] lg:table-fixed`,"data-testid":`members-list`,style:D,children:[(0,Z.jsx)(di,{activeColumns:c,columnStyles:O,showEmailOpenRate:s}),(0,Z.jsx)(fi,{activeColumns:c,className:`lg:h-0 lg:overflow-hidden lg:[&_th]:pointer-events-none lg:[&_th]:h-0 lg:[&_th]:border-0 lg:[&_th]:p-0 lg:[&_th]:text-[0px] lg:[&_th]:leading-none lg:[&_th]:opacity-0 lg:[&_tr]:h-0 lg:[&_tr]:border-0`,columnStyles:O,showEmailOpenRate:s}),(0,Z.jsxs)(te,{children:[(0,Z.jsx)(xi,{height:A}),k.map(({key:t,virtualItem:r,item:i,props:a})=>r.index>e.length-1?(0,Z.jsx)(Si,{...a},t):(0,Z.jsx)(li,{...a,activeColumns:c,backPath:n,columnStyles:O,item:i,showEmailOpenRate:s,showPinnedEdge:x,timezone:l,onClick:M},t)),(0,Z.jsx)(xi,{height:j})]})]})}),w&&(0,Z.jsx)(nn,{isLoading:i,onClick:T})]})}function wi({count:e,hasResolvedCount:t,nql:n,search:r}){let i=h(),{data:a}=o(),{mutateAsync:s,isPending:c}=ne(),[l,u]=(0,X.useState)(null),d=Hn(n),p=!r&&(!n||d),m=(0,X.useMemo)(()=>Wn(a?.accessibility),[a?.accessibility]),g=l??m.dismissedCount??0,_=!d,v=p&&(d||e>g);return(0,X.useEffect)(()=>{let n=m.dismissedCount;!a||l!==null||c||n===void 0||!t||e>=n||(u(e),s(Kn(a,e,m.dismissedAt??new Date().toISOString())).then(()=>{u(null)}).catch(e=>{u(null),console.log(`Unable to update multiple active subscriptions banner dismissed count`,e)}))},[e,a,s,t,c,l,m.dismissedAt,m.dismissedCount]),{canDismiss:_,count:e,handleDismiss:(0,X.useCallback)(()=>{if(!a||c)return;let t=l;u(e),s(Kn(a,e,new Date().toISOString())).then(()=>{u(null)}).catch(()=>{u(t),f.error(`Unable to dismiss notification. Please try again.`)})},[e,a,s,c,l]),handleViewMembers:(0,X.useCallback)(()=>{i(cn({filter:zn}))},[i]),shouldShow:v}}var Ti=({count:e,hasResolvedCount:t,nql:n,search:r})=>{let i=wi({count:e,hasResolvedCount:t,nql:n,search:r});return i.shouldShow?(0,Z.jsx)(at,{role:`status`,variant:`warning`,...i.canDismiss?{dismissible:!0,onDismiss:i.handleDismiss}:{dismissible:!1},children:(0,Z.jsxs)(`div`,{className:`flex flex-col items-baseline gap-3 pr-8 sm:flex-row`,children:[`We found `,b(i.count),` `,i.count===1?`member`:`members`,` with more than one active paid subscription.`,` `,(0,Z.jsxs)(`div`,{className:`flex items-baseline gap-3`,children:[i.canDismiss&&(0,Z.jsx)(`button`,{className:`nowrap font-semibold !underline`,type:`button`,onClick:i.handleViewMembers,children:`View members`}),(0,Z.jsx)(`a`,{className:`nowrap font-semibold underline`,href:`https://ghost.org/help/duplicate-subscription-warning/`,rel:`noopener noreferrer`,target:`_blank`,children:`Learn more`})]})]})}):null},Ei=[`subscriptions.plan_interval`,`subscriptions.status`,`subscriptions.start_date`,`subscriptions.current_period_end`,`conversion`,`offer_redemptions`,Rn];function Di(e,t){return t&&e.length===0?!1:!e.some(e=>Ei.includes(e.field))}function Oi({isFetching:e,isFetchingNextPage:t}){return e&&!t}var ki=Rt(nr,`date`);function Ai(e,t){return Ot(t,e.field,`UTC`)?.definition.operators.includes(e.operator)??!1}function ji(e){return Array.isArray(e.$and)?{operator:`$and`,children:e.$and}:Array.isArray(e.$or)?{operator:`$or`,children:e.$or}:null}function Mi(e){if(typeof e.subscribed==`boolean`)return{field:`subscribed`,operator:`is`,values:[e.subscribed?`subscribed`:`unsubscribed`]};if(typeof e.email_disabled==`number`){if(e.email_disabled===1)return{field:`subscribed`,operator:`is`,values:[`email-disabled`]};if(e.email_disabled===0)return{field:`subscribed`,operator:`is-not`,values:[`email-disabled`]}}let t=ji(e);if(!t||t.children.length!==2)return null;let n,r;for(let e of t.children)typeof e.subscribed==`boolean`&&(n=e.subscribed),typeof e.email_disabled==`number`&&(r=e.email_disabled);return t.operator===`$and`&&r===0&&n!==void 0?{field:`subscribed`,operator:`is`,values:[n?`subscribed`:`unsubscribed`]}:t.operator===`$or`&&r===1&&n!==void 0?{field:`subscribed`,operator:`is-not`,values:[n?`unsubscribed`:`subscribed`]}:null}function Ni(e){let t=ji(e);if(!t||t.children.length!==2)return null;let n,r;for(let e of t.children){let t=e[`newsletters.slug`];typeof t==`string`&&(n=t),t&&typeof t==`object`&&!Array.isArray(t)&&typeof t.$ne==`string`&&(n=t.$ne),typeof e.email_disabled==`number`&&(r=e.email_disabled)}return n?t.operator===`$and`&&r===0?{field:`newsletters.${n}`,operator:`is`,values:[`subscribed`]}:t.operator===`$or`&&r===1?{field:`newsletters.${n}`,operator:`is`,values:[`unsubscribed`]}:null:null}function Pi(e){let t=ji(e);if(!t||t.operator!==`$and`||t.children.length!==2)return null;let n,r;for(let e of t.children)typeof e[`feedback.post_id`]==`string`&&(n=e[`feedback.post_id`]),typeof e[`feedback.score`]==`number`&&(r=e[`feedback.score`]);return!n||r!==0&&r!==1?null:{field:`newsletter_feedback`,operator:String(r),values:[n]}}var Fi=[Mi,Ni,Pi];function Ii(e,t){for(let t of Fi){let n=t(e);if(n)return[n]}let n=ji(e);return n?.operator===`$and`?n.children.flatMap(e=>Ii(e,t)):Ft([e],nr,t)}function Li(e,t){let n=Et(e??``);return n?zt(Ii(n,t)):[]}function Ri(e){let t=Et(e??``);return t?Mt(t,ki):!1}function zi(e,t){return It(e,nr,t)}function Bi(e,t,n=!t){return!!e&&n&&!t&&Ri(e)}function Vi(e,t){return e.filter(e=>Ai(e,t))}function Hi({baseSearchParams:e,filters:t,search:n,timezone:r,fields:i}){let a=new URLSearchParams(e),o=zi(Vi(t,i),r);return a.delete(`filter`),a.delete(`search`),o&&a.set(`filter`,o),n&&a.set(`search`,n),a}function Ui(e){let t=(0,X.useMemo)(()=>rr(),[]),[n,r]=g(),i=(0,X.useRef)(null),a=(0,X.useMemo)(()=>n.get(`filter`)??void 0,[n]),o=(0,X.useMemo)(()=>n.toString(),[n]),s=(0,X.useMemo)(()=>Vi(Li(a,e),t),[a,e,t]),[c,l]=(0,X.useState)(s),u=(0,X.useMemo)(()=>n.get(`search`)??``,[n]),d=(0,X.useMemo)(()=>zi(Vi(c,t),e),[c,e,t]);return(0,X.useEffect)(()=>{o!==i.current&&(l(s),i.current=o)},[o,s]),(0,X.useEffect)(()=>{if(i.current!==null&&o!==i.current)return;let a=Hi({baseSearchParams:n,filters:c,search:u,timezone:e,fields:t}),s=a.toString();s!==o&&(i.current=s,r(a,{replace:!0}))},[o,c,u,n,r,e,t]),{filters:c,nql:d,search:u,setFilters:(0,X.useCallback)((a,o={})=>{let s=o.replace??!0,c=Hi({baseSearchParams:n,filters:a,search:u,timezone:e,fields:t});l(a),i.current=c.toString(),r(c,{replace:s})},[u,n,r,e,t]),setSearch:(0,X.useCallback)((a,o={})=>{let s=o.replace??!0,l=Hi({baseSearchParams:n,filters:c,search:a,timezone:e,fields:t});i.current=l.toString(),r(l,{replace:s})},[c,n,r,e,t]),clearFilters:(0,X.useCallback)(({replace:a=!0}={})=>{let o=Hi({baseSearchParams:n,filters:[],search:u,timezone:e,fields:t});l([]),i.current=o.toString(),r(o,{replace:a})},[u,n,r,e,t]),clearAll:(0,X.useCallback)(({replace:a=!0}={})=>{let o=Hi({baseSearchParams:n,filters:[],search:``,timezone:e,fields:t});l([]),i.current=o.toString(),r(o,{replace:a})},[n,r,e,t]),hasFilterOrSearch:!!d||u.length>0}}function Wi({enabled:e}){let{data:t}=_t({searchParams:{filter:zn,limit:`1`,fields:`id`,order:`id`},defaultErrorHandler:!1,enabled:e,refetchOnMount:`always`,staleTime:0});return{count:t?.meta?.pagination?.total??0,hasResolvedCount:t!==void 0}}var Gi=250,Ki=6,qi=({emailAnalyticsEnabled:e,hasStripeEnabled:t,membershipsEnabled:n,timezone:r})=>{let a=(0,X.useRef)(null),o=(0,X.useCallback)(e=>{a.current=e?.closest(`[data-list-page="header"]`)},[]),{filters:s,nql:c,search:l,setFilters:u,setSearch:d,hasFilterOrSearch:f,clearAll:p}=Ui(r),m=_(),h=Dr(),g=Ar(h,c),[v,x]=(0,X.useState)(!1),[S,T]=(0,X.useState)(!1),[E,D]=(0,X.useState)(l),O=St(e=>{d(e)},Gi),{count:k,hasResolvedCount:A}=Wi({enabled:t}),j=(0,X.useMemo)(()=>ar(s),[s]),M=(0,X.useMemo)(()=>Di(s,c),[s,c]),{data:N,isError:P,isFetching:F,isFetchingNextPage:I,refetch:ee,fetchNextPage:R,hasNextPage:z}=ke({searchParams:(0,X.useMemo)(()=>sr({filters:s,nql:c,search:l}),[s,c,l]),placeholderData:i}),B=Oi({isFetching:F,isFetchingNextPage:I}),V=N?.meta?.pagination?.total??0,te=s.length>0,H=v,U=te,W=f||V>0,ne=!f&&!B&&!P&&V<Ki;(0,X.useEffect)(()=>{D(l),O.cancel()},[l,O]);let re=e=>{D(e),O(e)};return(0,Z.jsx)(C,{className:`size-full`,children:(0,Z.jsx)(w,{className:`relative flex h-full flex-col`,size:`page`,children:(0,Z.jsxs)(qt,{"data-testid":`members-page`,children:[(0,Z.jsx)(qt.Header,{className:`py-4 sidebar:py-5`,children:(0,Z.jsxs)(`div`,{ref:o,className:`flex flex-col gap-4 sidebar:gap-6`,children:[(0,Z.jsxs)(J,{blurredBackground:!1,sticky:!1,children:[(0,Z.jsx)(J.Left,{children:(0,Z.jsxs)(J.Title,{children:[`Members`,` `,!B&&V>0&&(0,Z.jsx)(J.Count,{className:`hidden sm:inline`,children:b(V)})]})}),(0,Z.jsx)(J.Actions,{children:(0,Z.jsxs)(J.ActionGroup,{className:`ml-auto flex-wrap justify-end sm:ml-0 sm:flex-nowrap`,children:[W&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`hidden lg:flex`,children:(0,Z.jsx)(qr,{search:E,onSearchChange:re})}),(0,Z.jsx)(G,{"aria-label":v?`Hide member search`:`Show member search`,className:y(`lg:hidden`,v&&`bg-secondary hover:bg-secondary`),variant:`outline`,onClick:()=>{if(v){x(!1),T(!1);return}T(!0),x(!0)},children:(0,Z.jsx)($e,{className:`size-4`})}),!te&&(0,Z.jsx)(Kr,{activeView:g,filters:s,iconOnly:!0,multipleActiveSubscriptionsCount:k,nql:c,savedViews:h,onFiltersChange:u})]}),(0,Z.jsx)(fr,{canBulkDelete:M,hasFilterOrSearch:f,memberCount:V,nql:c,search:l,showMenu:W,showNewMember:W,onImportComplete:()=>{ee()}})]})})]}),W&&(U||H)&&(0,Z.jsxs)(Ut,{className:y(`flex-col gap-4 lg:flex-row lg:items-center sidebar:gap-6 lg:gap-6`,!U&&`lg:hidden`),children:[H&&(0,Z.jsx)(`div`,{className:`w-full lg:hidden`,children:(0,Z.jsx)(qr,{ariaLabel:`Search members mobile`,autoFocus:S,search:E,onSearchChange:re})}),U&&(0,Z.jsx)(Kr,{activeView:g,filters:s,multipleActiveSubscriptionsCount:k,nql:c,savedViews:h,onFiltersChange:u})]}),t&&(0,Z.jsx)(Ti,{count:k,hasResolvedCount:A,nql:c,search:l})]})}),(0,Z.jsxs)(qt.Body,{children:[B?(0,Z.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,Z.jsx)(He,{size:`lg`})}):P?(0,Z.jsxs)(`div`,{className:`mb-16 flex flex-1 flex-col items-center justify-center`,children:[(0,Z.jsx)(`h2`,{className:`mb-2 text-xl font-medium`,children:`Error loading members`}),(0,Z.jsx)(`p`,{className:`mb-4 text-muted-foreground`,children:`Please reload the page to try again`}),(0,Z.jsx)(G,{onClick:()=>window.location.reload(),children:`Reload page`})]}):N?.members.length?(0,Z.jsx)(Ci,{activeColumns:j,backPath:`${m.pathname}${m.search}`,fetchNextPage:()=>void R(),hasNextPage:z,isFetchingNextPage:I,isLoading:F&&!I,items:N.members,pageHeaderRef:a,showEmailOpenRate:e,timezone:r,totalItems:V}):f?(0,Z.jsx)(`div`,{className:`flex flex-1 flex-col items-center justify-center`,children:(0,Z.jsx)(L,{actions:(0,Z.jsx)(G,{variant:`outline`,onClick:()=>{O.cancel(),D(``),p({replace:!1})},children:`Show all members`}),title:`No matching members found.`,children:(0,Z.jsx)(Ye,{})})}):(0,Z.jsx)(pr,{membershipsEnabled:n,onMemberCreated:async()=>{await ee()}}),ne&&(0,Z.jsx)(`div`,{className:y(N?.members.length&&`mt-8`),children:(0,Z.jsx)(Xr,{})})]})]})})})},Ji=()=>{let[e]=g(),{data:t,isLoading:n}=fe({}),{data:r,isLoading:i}=Te(),a=Bi(e.get(`filter`)??void 0,!!t?.settings,n);if(n||i||!t?.settings||!r?.config||a)return(0,Z.jsx)(C,{className:`size-full`,children:(0,Z.jsx)(w,{className:`relative flex h-full flex-col`,size:`page`,children:(0,Z.jsxs)(qt,{children:[(0,Z.jsx)(qt.Header,{className:`py-4 sidebar:py-6`,children:(0,Z.jsx)(J,{blurredBackground:!1,sticky:!1,children:(0,Z.jsx)(J.Left,{children:(0,Z.jsx)(J.Title,{children:`Members`})})})}),(0,Z.jsx)(qt.Body,{children:(0,Z.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,Z.jsx)(He,{size:`lg`})})})]})})});let o=rn(t.settings),s=K(t.settings,`members_signup_access`)!==`none`,c=r.config.emailAnalytics===!0,l=vt(t.settings,r.config);return(0,Z.jsx)(qi,{emailAnalyticsEnabled:c,hasStripeEnabled:l,membershipsEnabled:s,timezone:o})};export{Ji as default};