ghost 4.37.0 → 4.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/content/themes/casper/LICENSE +1 -1
  2. package/content/themes/casper/README.md +1 -1
  3. package/content/themes/casper/assets/built/global.css +1 -1
  4. package/content/themes/casper/assets/built/global.css.map +1 -1
  5. package/content/themes/casper/assets/built/screen.css +1 -1
  6. package/content/themes/casper/assets/built/screen.css.map +1 -1
  7. package/content/themes/casper/assets/css/global.css +14 -6
  8. package/content/themes/casper/assets/css/screen.css +9 -1
  9. package/content/themes/casper/package.json +2 -2
  10. package/content/themes/casper/partials/post-card.hbs +1 -1
  11. package/content/themes/casper/post.hbs +18 -19
  12. package/content/themes/casper/yarn.lock +186 -217
  13. package/core/built/assets/ghost-dark-9f760f16230b8bc52e188d6ce28516b0.css +1 -0
  14. package/core/built/assets/{ghost.min-c1938f6ee696bf08bd6bf93cac341ea2.js → ghost.min-6386b02480494a69c3bfe66206754836.js} +339 -279
  15. package/core/built/assets/ghost.min-f4c59dd57a2136df8b0a34f87c099034.css +1 -0
  16. package/core/built/assets/icons/eye.svg +4 -1
  17. package/core/built/assets/icons/member-add.svg +3 -0
  18. package/core/built/assets/icons/pin.svg +4 -1
  19. package/core/built/assets/{vendor.min-6dc30be68238b5c55df0cdc1f2dc8b8d.js → vendor.min-c814d3c4b3f543c4cd5ef3aacd0fc645.js} +36 -34
  20. package/core/frontend/helpers/get.js +4 -0
  21. package/core/frontend/helpers/match.js +12 -0
  22. package/core/frontend/helpers/prev_post.js +11 -1
  23. package/core/frontend/helpers/tiers.js +59 -0
  24. package/core/frontend/helpers/tpl/content-cta.hbs +1 -1
  25. package/core/frontend/services/routing/router-manager.js +1 -1
  26. package/core/frontend/web/site.js +10 -0
  27. package/core/server/api/canary/index.js +4 -0
  28. package/core/server/api/canary/members.js +2 -1
  29. package/core/server/api/canary/products.js +3 -6
  30. package/core/server/api/canary/tiers-public.js +34 -0
  31. package/core/server/api/canary/tiers.js +3 -6
  32. package/core/server/api/canary/utils/serializers/output/email-posts.js +7 -1
  33. package/core/server/api/canary/utils/serializers/output/pages.js +9 -2
  34. package/core/server/api/canary/utils/serializers/output/posts.js +8 -2
  35. package/core/server/api/canary/utils/serializers/output/preview.js +7 -1
  36. package/core/server/api/canary/utils/serializers/output/products.js +3 -1
  37. package/core/server/api/canary/utils/serializers/output/tiers.js +4 -2
  38. package/core/server/api/canary/utils/serializers/output/utils/mapper.js +17 -7
  39. package/core/server/data/db/connection.js +3 -2
  40. package/core/server/data/migrations/versions/3.29/01-remove-duplicate-subscriptions.js +2 -1
  41. package/core/server/data/migrations/versions/3.29/02-remove-duplicate-customers.js +2 -1
  42. package/core/server/data/migrations/versions/3.29/03-remove-orphaned-customers.js +2 -1
  43. package/core/server/data/migrations/versions/3.29/04-remove-orphaned-subscriptions.js +2 -1
  44. package/core/server/data/migrations/versions/3.29/05-add-member-constraints.js +3 -2
  45. package/core/server/data/migrations/versions/3.39/06-add-email-recipient-index.js +4 -3
  46. package/core/server/data/migrations/versions/4.0/14-remove-orphaned-stripe-records.js +2 -1
  47. package/core/server/data/migrations/versions/4.0/26-add-cascade-on-delete.js +2 -1
  48. package/core/server/data/migrations/versions/4.0/29-fix-foreign-key-for-members-stripe-customers-subscriptions.js +2 -1
  49. package/core/server/data/migrations/versions/4.1/02-add-unique-constraint-for-member-stripe-tables.js +2 -1
  50. package/core/server/data/migrations/versions/4.20/05-remove-not-null-constraint-from-portal-title.js +3 -2
  51. package/core/server/data/migrations/versions/4.33/2022-01-18-09-07-remove-duplicate-offer-redemptions.js +2 -2
  52. package/core/server/data/migrations/versions/4.35/2022-02-01-11-48-update-email-recipient-filter-column-type.js +2 -1
  53. package/core/server/data/migrations/versions/4.35/2022-02-01-12-03-update-recipient-filter-column-type.js +2 -1
  54. package/core/server/data/migrations/versions/4.37/2022-02-21-09-53-backfill-members-last-seen-at-column.js +3 -2
  55. package/core/server/data/migrations/versions/4.38/2022-03-01-08-46-add-visibility-to-tiers.js +11 -0
  56. package/core/server/data/migrations/versions/4.38/2022-03-03-16-12-add-visibility-to-tiers.js +8 -0
  57. package/core/server/data/migrations/versions/4.38/2022-03-03-16-17-drop-tiers-visible-column.js +7 -0
  58. package/core/server/data/schema/clients/index.js +1 -1
  59. package/core/server/data/schema/clients/mysql.js +4 -4
  60. package/core/server/data/schema/commands.js +42 -50
  61. package/core/server/data/schema/fixtures/fixtures.json +4 -2
  62. package/core/server/data/schema/schema.js +7 -0
  63. package/core/server/models/product.js +2 -1
  64. package/core/server/services/auth/api-key/admin.js +15 -6
  65. package/core/server/services/auth/setup.js +5 -0
  66. package/core/server/services/email-analytics/lib/event-processor.js +18 -1
  67. package/core/server/services/members/middleware.js +3 -0
  68. package/core/server/services/members/service.js +13 -1
  69. package/core/server/web/admin/views/default-prod.html +4 -4
  70. package/core/server/web/admin/views/default.html +4 -4
  71. package/core/server/web/api/app.js +3 -0
  72. package/core/server/web/api/canary/admin/middleware.js +2 -0
  73. package/core/server/web/api/canary/content/routes.js +1 -0
  74. package/core/server/web/members/app.js +1 -1
  75. package/core/shared/config/defaults.json +2 -2
  76. package/core/shared/config/utils.js +5 -1
  77. package/core/shared/labs.js +1 -0
  78. package/package.json +47 -44
  79. package/yarn.lock +606 -574
  80. package/core/built/assets/ghost-dark-d54723f7267e66fa2595f897076e86c2.css +0 -1
  81. package/core/built/assets/ghost.min-02a5f8954bd85fe28817b8c8b111b8aa.css +0 -1
@@ -1 +1,4 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><defs><style>.a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;}</style></defs><title>view-1</title><path class="a" d="M12,5.251C7.969,5.183,3.8,8,1.179,10.885a1.663,1.663,0,0,0,0,2.226C3.743,15.935,7.9,18.817,12,18.748c4.1.069,8.258-2.813,10.824-5.637a1.663,1.663,0,0,0,0-2.226C20.2,8,16.031,5.183,12,5.251Z"/><path class="a" d="M15.75,12A3.75,3.75,0,1,1,12,8.249,3.749,3.749,0,0,1,15.75,12Z"/></svg>
1
+ <svg width="26" height="24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M13 5.001c-4.03-.078-8.2 3.157-10.82 6.47-.276.35-.428.805-.428 1.277 0 .472.152.928.427 1.278C4.743 17.27 8.9 20.578 13 20.5c4.1.079 8.258-3.23 10.824-6.473.275-.35.428-.806.428-1.278s-.153-.927-.428-1.278C21.2 8.158 17.031 4.923 13 5.001Z" stroke="#000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3
+ <path d="M16.75 12.751a3.75 3.75 0 1 1-7.5-.002 3.75 3.75 0 0 1 7.5.002Z" stroke="#000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M11.5 12c-2.824 0-2.83.024-4.5.53-3.5 1.058-5 3.176-5 6.386V21h10M19 16v6M16 19h6M11.5 12a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3
+ </svg>
@@ -1 +1,4 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><defs><style>.a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px}</style></defs><title>pin</title><circle class="a" cx="12" cy="8.25" r="3.75"/><path class="a" d="M12 .75a7.5 7.5 0 0 1 7.5 7.5c0 3.407-5.074 11.95-6.875 14.665a.75.75 0 0 1-1.25 0C9.574 20.2 4.5 11.657 4.5 8.25A7.5 7.5 0 0 1 12 .75z"/></svg>
1
+ <svg width="24" height="26" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M12 14.75a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3
+ <path d="M21 10.75c0 7.9-6.932 12.331-8.629 13.3a.751.751 0 0 1-.743 0C9.931 23.08 3 18.648 3 10.75a9 9 0 1 1 18 0Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </svg>
@@ -11707,7 +11707,7 @@ e.default={content:'<path d="M5.5 20c-.827 0-1.5-.673-1.5-1.5v-10C4 7.673 4.673
11707
11707
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
11708
11708
  e.default={content:'<path fill-rule="evenodd" clip-rule="evenodd" d="M22.707 1.293a1 1 0 010 1.414l-11 11a1 1 0 01-1.414-1.414l11-11a1 1 0 011.414 0z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M13 2a1 1 0 011-1h8a1 1 0 011 1v8a1 1 0 11-2 0V3h-7a1 1 0 01-1-1zM1 2a1 1 0 011-1h7a1 1 0 010 2H3v18h18v-6a1 1 0 112 0v7a1 1 0 01-1 1H2a1 1 0 01-1-1V2z"/>',attrs:{fill:"none",viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/eye",["exports"],(function(e){"use strict"
11709
11709
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
11710
- e.default={content:'<defs><style>.eye_svg__a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px}</style></defs><path class="eye_svg__a" d="M12 5.251C7.969 5.183 3.8 8 1.179 10.885a1.663 1.663 0 000 2.226C3.743 15.935 7.9 18.817 12 18.748c4.1.069 8.258-2.813 10.824-5.637a1.663 1.663 0 000-2.226C20.2 8 16.031 5.183 12 5.251z"/><path class="eye_svg__a" d="M15.75 12A3.75 3.75 0 1112 8.249 3.749 3.749 0 0115.75 12z"/>',attrs:{viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/facebook-heart",["exports"],(function(e){"use strict"
11710
+ e.default={content:'<path d="M13 5.001c-4.03-.078-8.2 3.157-10.82 6.47-.276.35-.428.805-.428 1.277 0 .472.152.928.427 1.278C4.743 17.27 8.9 20.578 13 20.5c4.1.079 8.258-3.23 10.824-6.473.275-.35.428-.806.428-1.278s-.153-.927-.428-1.278C21.2 8.158 17.031 4.923 13 5.001z" stroke="#000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M16.75 12.751a3.75 3.75 0 11-7.5-.002 3.75 3.75 0 017.5.002z" stroke="#000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>',attrs:{fill:"none",viewBox:"0 0 26 24"}}})),define("ember-svg-jar/inlined/facebook-heart",["exports"],(function(e){"use strict"
11711
11711
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
11712
11712
  e.default={content:'<path d="M15 27c6.627 0 12-5.373 12-12S21.627 3 15 3 3 8.373 3 15s5.373 12 12 12z" fill="#FF4F67"/><path fill-rule="evenodd" clip-rule="evenodd" d="M30 15c0 8.284-6.716 15-15 15-8.284 0-15-6.716-15-15C0 6.716 6.716 0 15 0c8.284 0 15 6.716 15 15zm-3 0c0 6.627-5.373 12-12 12S3 21.627 3 15 8.373 3 15 3s12 5.373 12 12z" fill="#fff"/><path d="M14.5 11.441C15.434 9.811 16.375 9 18.25 9 20.317 9 22 11.49 22 13.28c0 3.252-4.484 6.777-7.5 8.72-2.713-1.678-7.5-5.468-7.5-8.72C7 11.49 8.684 9 10.75 9c1.875 0 2.809.811 3.75 2.441z" fill="#FEFEFE"/>',attrs:{fill:"none",viewBox:"0 0 30 30"}}})),define("ember-svg-jar/inlined/facebook-like",["exports"],(function(e){"use strict"
11713
11713
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
@@ -11955,7 +11955,9 @@ e.default={content:'<g fill="none" stroke="#000" stroke-linecap="round" stroke-l
11955
11955
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
11956
11956
  e.default={content:'<path d="M21.098 13.951c1.201-2.187 1.505-4.565 1.522-4.705a.5.5 0 00-.357-.54c-.07-.02-1.597-.444-3.451-.281a15.204 15.204 0 00-.602-3.935.502.502 0 00-.613-.329c-.07.02-1.569.46-3.122 1.586-.896-1.817-2.036-3.014-2.115-3.095a.518.518 0 00-.718 0c-.078.081-1.217 1.278-2.113 3.093-1.555-1.126-3.054-1.564-3.125-1.584a.503.503 0 00-.613.329c-.037.115-.564 1.818-.602 3.934-1.855-.163-3.381.262-3.451.282a.501.501 0 00-.358.54c.017.138.307 2.433 1.454 4.587C1.33 14.81.5 16.03.5 17.312c0 3.26 4.836 5.718 11.25 5.718 2.104 0 4.836-.324 5.987-.943a.5.5 0 00.263-.441V19h4.875a.5.5 0 00.499-.463c.136-1.836-.657-3.41-2.276-4.586zm-2.309-4.524a9.635 9.635 0 012.767.141c-.214 1.179-.979 4.42-3.093 6.06-1.465 1.137-3.314 1.28-4.634 1.193 1.36-.699 3.197-1.98 4.188-4.123.488-1.055.705-2.19.772-3.271zM17.39 5.291c.298 1.217.899 4.434-.282 6.988-.809 1.752-2.315 2.87-3.506 3.523.898-1.342 1.95-3.416 1.95-5.782 0-1.205-.276-2.332-.663-3.329a10.603 10.603 0 012.501-1.4zM12 3.761c.779.947 2.553 3.419 2.553 6.26 0 2.842-1.774 5.313-2.553 6.261-.779-.947-2.553-3.419-2.553-6.261 0-2.841 1.774-5.313 2.553-6.26zm-5.39 1.53c.561.216 1.537.672 2.499 1.402-.386.997-.662 2.123-.662 3.328 0 2.369 1.055 4.444 1.953 5.786-1.191-.651-2.696-1.769-3.509-3.528-1.18-2.553-.579-5.771-.281-6.988zM5.211 9.426c.067 1.08.284 2.216.772 3.273.992 2.145 2.83 3.426 4.191 4.125-1.319.088-3.167-.053-4.637-1.194-2.109-1.638-2.876-4.882-3.092-6.061a9.641 9.641 0 012.766-.143zM17.5 18a.5.5 0 00-.5.5v2.826c-1.023.403-3.215.704-5.25.704-5.652 0-10.25-2.116-10.25-4.718 0-.925.656-1.845 1.85-2.626.431.643.946 1.246 1.574 1.733 1.468 1.139 3.211 1.432 4.616 1.432 1.185 0 2.121-.207 2.46-.293.339.086 1.275.293 2.46.293 1.405 0 3.148-.293 4.616-1.433a7.251 7.251 0 001.498-1.619c1.162.862 1.773 1.934 1.812 3.2H17.5z"/>',attrs:{version:"1",viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/markdown",["exports"],(function(e){"use strict"
11957
11957
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
11958
- e.default={content:'<g fill="none" fill-rule="evenodd"><rect stroke="#000" stroke-width="2" x="2" y="2" width="39" height="30" rx="2"/><path fill="#000" d="M19.566 12.613l-.049-.01L14.917 24h-1.279l-4.6-11.387-.048.01.195 5.752v4.121l1.592.274V24H5.669v-1.23l1.592-.274V11.295L5.67 11.02v-1.24h4.053l4.531 11.553h.059l4.521-11.553h4.063v1.24l-1.592.274v11.201l1.592.274V24h-5.107v-1.23l1.591-.274v-4.121z"/><path d="M36.077 18.501l-5.039 5.039L26 18.5m5.038 5.039v-13.1" stroke="#000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></g>',attrs:{viewBox:"0 0 43 34"}}})),define("ember-svg-jar/inlined/members-all",["exports"],(function(e){"use strict"
11958
+ e.default={content:'<g fill="none" fill-rule="evenodd"><rect stroke="#000" stroke-width="2" x="2" y="2" width="39" height="30" rx="2"/><path fill="#000" d="M19.566 12.613l-.049-.01L14.917 24h-1.279l-4.6-11.387-.048.01.195 5.752v4.121l1.592.274V24H5.669v-1.23l1.592-.274V11.295L5.67 11.02v-1.24h4.053l4.531 11.553h.059l4.521-11.553h4.063v1.24l-1.592.274v11.201l1.592.274V24h-5.107v-1.23l1.591-.274v-4.121z"/><path d="M36.077 18.501l-5.039 5.039L26 18.5m5.038 5.039v-13.1" stroke="#000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></g>',attrs:{viewBox:"0 0 43 34"}}})),define("ember-svg-jar/inlined/member-add",["exports"],(function(e){"use strict"
11959
+ Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
11960
+ e.default={content:'<path d="M11.5 12c-2.824 0-2.83.024-4.5.53-3.5 1.058-5 3.176-5 6.386V21h10m7-5v6m-3-3h6m-10.5-7a5.5 5.5 0 100-11 5.5 5.5 0 000 11z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>',attrs:{fill:"none",viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/members-all",["exports"],(function(e){"use strict"
11959
11961
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
11960
11962
  e.default={content:'<path fill-rule="evenodd" clip-rule="evenodd" d="M6 1.25a2.5 2.5 0 100 5 2.5 2.5 0 000-5zm-3.5 2.5a3.5 3.5 0 117 0 3.5 3.5 0 01-7 0z" fill="#000"/><path fill-rule="evenodd" clip-rule="evenodd" d="M1.934 9.434A5.75 5.75 0 0111.75 13.5v2.25a.5.5 0 01-.5.5H9.452l-.704 7.05a.5.5 0 01-.498.45h-4.5a.5.5 0 01-.498-.45l-.704-7.05H.75a.5.5 0 01-.5-.5V13.5a5.75 5.75 0 011.684-4.066zM6 8.75a4.75 4.75 0 00-4.75 4.75v1.75H3a.5.5 0 01.498.45l.704 7.05h3.596l.704-7.05A.5.5 0 019 15.25h1.75V13.5A4.75 4.75 0 006 8.75zm12-7.5a2.5 2.5 0 100 5 2.5 2.5 0 000-5zm-3.5 2.5a3.5 3.5 0 117 0 3.5 3.5 0 01-7 0z" fill="#000"/><path fill-rule="evenodd" clip-rule="evenodd" d="M15.868 8.164A5.75 5.75 0 0123.75 13.5v2.25a.5.5 0 01-.5.5h-1.798l-.705 7.05a.5.5 0 01-.497.45h-4.5a.5.5 0 01-.498-.45l-.705-7.05H13.5a.5.5 0 110-1H15a.5.5 0 01.498.45l.704 7.05h3.595l.705-7.05a.5.5 0 01.498-.45h1.75V13.5a4.75 4.75 0 00-8.822-2.443.5.5 0 11-.857-.514 5.75 5.75 0 012.797-2.38z" fill="#000"/>',attrs:{fill:"none",viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/members-bold",["exports"],(function(e){"use strict"
11961
11963
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
@@ -11971,10 +11973,10 @@ e.default={content:'<path fill-rule="evenodd" clip-rule="evenodd" d="M12.75 11.7
11971
11973
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
11972
11974
  e.default={content:'<path d="M3.5 24a.502.502 0 01-.498-.458L2.54 18H.5a.5.5 0 01-.5-.5V14a5.497 5.497 0 013.724-5.208 5.514 5.514 0 011.781-.297c.841 0 1.655.19 2.42.566a5.467 5.467 0 012.781 3.16.497.497 0 01-.311.635.5.5 0 01-.635-.312 4.472 4.472 0 00-2.275-2.586 4.461 4.461 0 00-3.438-.219A4.497 4.497 0 001 14v3h2c.258 0 .477.201.498.458L3.96 23h3.08l.462-5.542A.502.502 0 018 17h1a.5.5 0 010 1h-.54l-.462 5.542A.502.502 0 017.5 24h-4zM5.5 8c-2.206 0-4-1.794-4-4s1.794-4 4-4 4 1.794 4 4-1.794 4-4 4zm0-7c-1.654 0-3 1.346-3 3s1.346 3 3 3 3-1.346 3-3-1.346-3-3-3zM17.5 24c-3.584 0-6.5-2.916-6.5-6.5s2.916-6.5 6.5-6.5 6.5 2.916 6.5 6.5-2.916 6.5-6.5 6.5zm0-12c-3.033 0-5.5 2.467-5.5 5.5s2.467 5.5 5.5 5.5 5.5-2.467 5.5-5.5-2.467-5.5-5.5-5.5z"/><path d="M16.667 20.428a1.24 1.24 0 01-.882-.365l-1.5-1.5a.5.5 0 01.708-.707l1.5 1.5a.244.244 0 00.176.072.252.252 0 00.202-.1l2.905-3.872a.501.501 0 01.8.6l-2.905 3.872c-.237.314-.612.5-1.004.5z"/>',attrs:{viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/members",["exports"],(function(e){"use strict"
11973
11975
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
11974
- e.default={content:'<defs><style>.members_svg__cls-1{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px}</style></defs><circle class="members_svg__cls-1" cx="7.5" cy="7.875" r="4.125"/><path class="members_svg__cls-1" d="M.75 20.25a6.75 6.75 0 0113.5 0"/><circle class="members_svg__cls-1" cx="17.727" cy="10.125" r="3.375"/><path class="members_svg__cls-1" d="M15.813 15.068a5.526 5.526 0 017.437 5.182"/>',attrs:{id:"members_svg__Regular",viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/mobile-phone-heart",["exports"],(function(e){"use strict"
11976
+ e.default={content:'<defs><style>.members_svg__cls-1{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px}</style></defs><circle class="members_svg__cls-1" cx="7.5" cy="7.875" r="4.125"/><path class="members_svg__cls-1" d="M.75 20.25a6.75 6.75 0 0113.5 0"/><circle class="members_svg__cls-1" cx="17.727" cy="10.125" r="3.375"/><path class="members_svg__cls-1" d="M15.813 15.068a5.526 5.526 0 017.437 5.182"/>',attrs:{id:"members_svg__Regular",viewBox:"0 0 24 24"}}}))
11977
+ define("ember-svg-jar/inlined/mobile-phone-heart",["exports"],(function(e){"use strict"
11975
11978
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
11976
- e.default={content:'<path d="M16.5 0h-9A2.503 2.503 0 005 2.5v19C5 22.879 6.122 24 7.5 24h9c1.378 0 2.5-1.121 2.5-2.5v-19C19 1.121 17.878 0 16.5 0zM6 5h12v14H6V5zm1.5-4h9c.827 0 1.5.673 1.5 1.5V4H6V2.5C6 1.673 6.673 1 7.5 1zm9 22h-9c-.827 0-1.5-.673-1.5-1.5V20h12v1.5c0 .827-.673 1.5-1.5 1.5zm-7-20h5a.5.5 0 000-1h-5a.5.5 0 000 1z"/><circle cx="12" cy="21.5" r="1"/><path d="M14.272 7.502c-.772 0-1.673.376-2.272 1.356-.599-.981-1.5-1.356-2.272-1.356C8.387 7.502 7 8.609 7 10.462c0 2.581 4.226 5.698 4.708 6.046a.503.503 0 00.584 0C12.774 16.16 17 13.043 17 10.462c0-1.853-1.387-2.96-2.728-2.96zM12 15.479c-1.34-1.023-4-3.39-4-5.017 0-1.226.878-1.96 1.728-1.96.844 0 1.512.673 1.786 1.802.108.447.863.447.972 0 .274-1.129.942-1.802 1.786-1.802.85 0 1.728.733 1.728 1.96 0 1.627-2.66 3.993-4 5.017z"/>',attrs:{version:"1",viewBox:"0 0 24 24"}}}))
11977
- define("ember-svg-jar/inlined/mobile-phone",["exports"],(function(e){"use strict"
11979
+ e.default={content:'<path d="M16.5 0h-9A2.503 2.503 0 005 2.5v19C5 22.879 6.122 24 7.5 24h9c1.378 0 2.5-1.121 2.5-2.5v-19C19 1.121 17.878 0 16.5 0zM6 5h12v14H6V5zm1.5-4h9c.827 0 1.5.673 1.5 1.5V4H6V2.5C6 1.673 6.673 1 7.5 1zm9 22h-9c-.827 0-1.5-.673-1.5-1.5V20h12v1.5c0 .827-.673 1.5-1.5 1.5zm-7-20h5a.5.5 0 000-1h-5a.5.5 0 000 1z"/><circle cx="12" cy="21.5" r="1"/><path d="M14.272 7.502c-.772 0-1.673.376-2.272 1.356-.599-.981-1.5-1.356-2.272-1.356C8.387 7.502 7 8.609 7 10.462c0 2.581 4.226 5.698 4.708 6.046a.503.503 0 00.584 0C12.774 16.16 17 13.043 17 10.462c0-1.853-1.387-2.96-2.728-2.96zM12 15.479c-1.34-1.023-4-3.39-4-5.017 0-1.226.878-1.96 1.728-1.96.844 0 1.512.673 1.786 1.802.108.447.863.447.972 0 .274-1.129.942-1.802 1.786-1.802.85 0 1.728.733 1.728 1.96 0 1.627-2.66 3.993-4 5.017z"/>',attrs:{version:"1",viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/mobile-phone",["exports"],(function(e){"use strict"
11978
11980
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
11979
11981
  e.default={content:'<path d="M3.166 14a.5.5 0 01.5-.5h8.667a.5.5 0 010 1H3.666a.5.5 0 01-.5-.5z"/><path d="M5 1.833a.833.833 0 00-.834.834v12.666c0 .46.373.834.833.834h6c.46 0 .834-.373.834-.834V2.668a.833.833 0 00-.834-.833H5zm-1.834.834c0-1.013.82-1.834 1.833-1.834h6c1.013 0 1.834.821 1.834 1.834v12.666a1.834 1.834 0 01-1.834 1.834H5a1.833 1.833 0 01-1.833-1.834V2.668z"/>',attrs:{fill:"none",viewBox:"0 0 16 18"}}})),define("ember-svg-jar/inlined/module",["exports"],(function(e){"use strict"
11980
11982
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
@@ -12032,12 +12034,12 @@ e.default={content:'<defs><style>.percentage_svg__a{fill:none;stroke:currentColo
12032
12034
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
12033
12035
  e.default={content:'<path d="M19 18.5v-17a.5.5 0 00-.5-.5h-17a.5.5 0 00-.5.5v17a.5.5 0 00.5.5h17a.5.5 0 00.5-.5zM18 2v13h-2.56a5.382 5.382 0 00-3.352-4.5 3.555 3.555 0 10-3.979.002A5.377 5.377 0 004.759 15H2V2h16zM7.541 7.555A2.56 2.56 0 0110.098 5a2.558 2.558 0 012.555 2.555 2.558 2.558 0 01-2.555 2.556 2.559 2.559 0 01-2.557-2.556zM14.458 15H5.736a4.395 4.395 0 014.361-3.889A4.395 4.395 0 0114.458 15zM2 18v-2h16v2H2zM22.884 7.242a.5.5 0 00-.339-.178l-1.992-.182a.501.501 0 00-.09.996l1.494.136-1.272 13.942-14.44-1.317a.502.502 0 00-.09.997l14.937 1.363.045.001a.501.501 0 00.498-.455l1.363-14.939a.497.497 0 00-.114-.364z"/>',attrs:{version:"1",viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/photos",["exports"],(function(e){"use strict"
12034
12036
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
12035
- e.default={content:'<path d="M19 18.5v-17a.5.5 0 00-.5-.5h-17a.5.5 0 00-.5.5v17a.5.5 0 00.5.5h17a.5.5 0 00.5-.5zM18 2v13h-2.161l-2.874-7.186a.5.5 0 00-.453-.314.529.529 0 00-.467.293l-2.17 4.775-1.99-2.389a.502.502 0 00-.813.063L4.217 15H2V2h16zm-3.238 13H5.383l2.183-3.639 2.049 2.46a.5.5 0 00.839-.114l2.016-4.434L14.762 15zM2 18v-2h16v2H2zM22.884 7.242a.5.5 0 00-.339-.178l-1.992-.181a.5.5 0 00-.09.996l1.494.135-1.272 13.942-14.44-1.317a.502.502 0 00-.09.997l14.937 1.363.045.001a.501.501 0 00.498-.455l1.363-14.939a.497.497 0 00-.114-.364zM6 8c1.103 0 2-.897 2-2s-.897-2-2-2-2 .897-2 2 .897 2 2 2zm0-3c.551 0 1 .449 1 1s-.449 1-1 1-1-.449-1-1 .449-1 1-1z"/>',attrs:{version:"1",viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/piggy-bank",["exports"],(function(e){"use strict"
12037
+ e.default={content:'<path d="M19 18.5v-17a.5.5 0 00-.5-.5h-17a.5.5 0 00-.5.5v17a.5.5 0 00.5.5h17a.5.5 0 00.5-.5zM18 2v13h-2.161l-2.874-7.186a.5.5 0 00-.453-.314.529.529 0 00-.467.293l-2.17 4.775-1.99-2.389a.502.502 0 00-.813.063L4.217 15H2V2h16zm-3.238 13H5.383l2.183-3.639 2.049 2.46a.5.5 0 00.839-.114l2.016-4.434L14.762 15zM2 18v-2h16v2H2zM22.884 7.242a.5.5 0 00-.339-.178l-1.992-.181a.5.5 0 00-.09.996l1.494.135-1.272 13.942-14.44-1.317a.502.502 0 00-.09.997l14.937 1.363.045.001a.501.501 0 00.498-.455l1.363-14.939a.497.497 0 00-.114-.364zM6 8c1.103 0 2-.897 2-2s-.897-2-2-2-2 .897-2 2 .897 2 2 2zm0-3c.551 0 1 .449 1 1s-.449 1-1 1-1-.449-1-1 .449-1 1-1z"/>',attrs:{version:"1",viewBox:"0 0 24 24"}}}))
12038
+ define("ember-svg-jar/inlined/piggy-bank",["exports"],(function(e){"use strict"
12036
12039
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
12037
- e.default={content:'<defs><style>.piggy-bank_svg__a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px}</style></defs><path class="piggy-bank_svg__a" d="M23.25 9.5a3 3 0 01-3 3M8.25 8a6.763 6.763 0 016 0M6.375 11a.375.375 0 10.375.375.375.375 0 00-.375-.375"/><path class="piggy-bank_svg__a" d="M7.9 4.883C6.726 2.756 3.75 2.75 3.75 2.75l.626 4.384A8.058 8.058 0 002.6 10.25H.75v6h2.49a8.467 8.467 0 002.01 2.372V21.5a.75.75 0 00.75.75h1.5a.75.75 0 00.75-.75v-1.241a9.512 9.512 0 006 .011v1.23a.75.75 0 00.75.75h1.5a.75.75 0 00.75-.75v-2.863a7.941 7.941 0 003-6.137c0-6.494-7.05-9.389-12.35-7.617z"/>',attrs:{viewBox:"0 0 24 24"}}}))
12038
- define("ember-svg-jar/inlined/pin",["exports"],(function(e){"use strict"
12040
+ e.default={content:'<defs><style>.piggy-bank_svg__a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px}</style></defs><path class="piggy-bank_svg__a" d="M23.25 9.5a3 3 0 01-3 3M8.25 8a6.763 6.763 0 016 0M6.375 11a.375.375 0 10.375.375.375.375 0 00-.375-.375"/><path class="piggy-bank_svg__a" d="M7.9 4.883C6.726 2.756 3.75 2.75 3.75 2.75l.626 4.384A8.058 8.058 0 002.6 10.25H.75v6h2.49a8.467 8.467 0 002.01 2.372V21.5a.75.75 0 00.75.75h1.5a.75.75 0 00.75-.75v-1.241a9.512 9.512 0 006 .011v1.23a.75.75 0 00.75.75h1.5a.75.75 0 00.75-.75v-2.863a7.941 7.941 0 003-6.137c0-6.494-7.05-9.389-12.35-7.617z"/>',attrs:{viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/pin",["exports"],(function(e){"use strict"
12039
12041
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
12040
- e.default={content:'<defs><style>.pin_svg__a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px}</style></defs><circle class="pin_svg__a" cx="12" cy="8.25" r="3.75"/><path class="pin_svg__a" d="M12 .75a7.5 7.5 0 017.5 7.5c0 3.407-5.074 11.95-6.875 14.665a.75.75 0 01-1.25 0C9.574 20.2 4.5 11.657 4.5 8.25A7.5 7.5 0 0112 .75z"/>',attrs:{viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/plane",["exports"],(function(e){"use strict"
12042
+ e.default={content:'<path d="M12 14.75a4 4 0 100-8 4 4 0 000 8z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M21 10.75c0 7.9-6.932 12.331-8.629 13.3a.751.751 0 01-.743 0C9.931 23.08 3 18.648 3 10.75a9 9 0 1118 0z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>',attrs:{fill:"none",viewBox:"0 0 24 26"}}})),define("ember-svg-jar/inlined/plane",["exports"],(function(e){"use strict"
12041
12043
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
12042
12044
  e.default={content:'<path d="M22.854 1.146c-1.132-1.132-3.073-1.133-4.207 0L15.793 4c-1.566-.001-2.984-.01-4.268-.018-1.1-.007-2.101-.013-3.01-.013C2.92 3.969 0 4.103 0 7c0 2.326 2.079 2.41 5.225 2.536 1.307.052 2.884.116 4.704.329L4.793 15H2.5A2.503 2.503 0 000 17.5c0 1.87 1.374 2.258 2.829 2.67l.774.227.213.731C4.214 22.54 4.626 24 6.5 24 7.878 24 9 22.878 9 21.5v-2.293l5.135-5.135c.214 1.826.278 3.407.331 4.715C14.592 21.926 14.675 24 17 24c.931 0 1.584-.224 2.056-.703 1.13-1.148 1.09-3.629 1.004-9.066A385.498 385.498 0 0120 8.207l2.854-2.853a2.947 2.947 0 000-4.208zm-.708 3.501l-3 3A.5.5 0 0019 8c0 2.421.033 4.488.06 6.246.077 4.836.119 7.5-.717 8.349-.275.28-.689.405-1.343.405-1.238 0-1.396-.806-1.535-4.253-.063-1.565-.142-3.513-.47-5.818a.497.497 0 00-.337-.403L14.5 12.5a.504.504 0 00-.354.146l-6 6A.504.504 0 008 19v2.5c0 .827-.673 1.5-1.5 1.5-1.072 0-1.302-.657-1.722-2.143-.092-.326-.188-.667-.304-1.015a.5.5 0 00-.316-.316 22.197 22.197 0 00-1.058-.317C1.606 18.785 1 18.571 1 17.5c0-.827.673-1.5 1.5-1.5H5a.5.5 0 00.353-.146l6-6a.5.5 0 00-.282-.849c-2.298-.328-4.243-.406-5.806-.468C1.808 8.398 1 8.24 1 7c0-1.67 1.335-2.031 7.516-2.031.907 0 1.906.006 3.003.013C12.861 4.991 14.35 5 16 5a.5.5 0 00.354-.147l3-3c.755-.755 2.038-.755 2.793 0 .782.783.782 2.01-.001 2.794z"/>',attrs:{version:"1",viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/play",["exports"],(function(e){"use strict"
12043
12045
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
@@ -12093,10 +12095,10 @@ e.default={content:'<defs><style>.settings_svg__a{fill:none;stroke:currentColor;
12093
12095
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
12094
12096
  e.default={content:'<defs><style>.shield-lock_svg__a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px}</style></defs><path class="shield-lock_svg__a" d="M2.25 3.923v7.614A11.907 11.907 0 009.882 22.65l1.041.4a3 3 0 002.154 0l1.041-.4a11.907 11.907 0 007.632-11.113V3.923a1.487 1.487 0 00-.868-1.362A21.7 21.7 0 0012 .75a21.7 21.7 0 00-8.882 1.811 1.487 1.487 0 00-.868 1.362z"/><rect class="shield-lock_svg__a" x="7.5" y="9.75" width="9" height="7.5" rx="1.5" ry="1.5"/><path class="shield-lock_svg__a" d="M12 5.25a3 3 0 00-3 3v1.5h6v-1.5a3 3 0 00-3-3zM12 13.154a.375.375 0 11-.375.375.375.375 0 01.375-.375"/>',attrs:{viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/shield",["exports"],(function(e){"use strict"
12095
12097
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
12096
- e.default={content:'<path d="M21.63 4.537c-.073-.019-7.399-2.017-9.769-4.39a.532.532 0 00-.723 0C8.769 2.52 1.443 4.518 1.37 4.537A.5.5 0 001 5.02c0 8.569.761 15.405 10.326 18.949L11.5 24l.174-.031C21.239 20.425 22 13.589 22 5.02a.5.5 0 00-.37-.483zM11.5 22.966C2.817 19.674 2.023 13.601 2.001 5.4c1.497-.429 7.022-2.109 9.499-4.228 2.477 2.119 8.002 3.798 9.499 4.227-.021 8.202-.816 14.275-9.499 17.567zm-.464-16.223L9.732 10H6.5a.5.5 0 00-.332.873l2.626 2.337-.99 3.672a.497.497 0 00.482.63.51.51 0 00.308-.105l2.907-2.267 2.907 2.251a.5.5 0 00.788-.526l-.99-3.651 2.627-2.34A.5.5 0 0016.5 10h-3.232l-1.304-3.257c-.15-.38-.778-.38-.928 0zm1.429 3.943a.5.5 0 00.464.314h2.259l-1.878 1.672a.5.5 0 00-.149.504l.681 2.51-2.035-1.576a.498.498 0 00-.613.001L9.16 15.697l.682-2.526a.5.5 0 00-.15-.504L7.814 11h2.257a.5.5 0 00.464-.314l.965-2.411.965 2.411z"/>',attrs:{version:"1",viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/sidemenu-open",["exports"],(function(e){"use strict"
12098
+ e.default={content:'<path d="M21.63 4.537c-.073-.019-7.399-2.017-9.769-4.39a.532.532 0 00-.723 0C8.769 2.52 1.443 4.518 1.37 4.537A.5.5 0 001 5.02c0 8.569.761 15.405 10.326 18.949L11.5 24l.174-.031C21.239 20.425 22 13.589 22 5.02a.5.5 0 00-.37-.483zM11.5 22.966C2.817 19.674 2.023 13.601 2.001 5.4c1.497-.429 7.022-2.109 9.499-4.228 2.477 2.119 8.002 3.798 9.499 4.227-.021 8.202-.816 14.275-9.499 17.567zm-.464-16.223L9.732 10H6.5a.5.5 0 00-.332.873l2.626 2.337-.99 3.672a.497.497 0 00.482.63.51.51 0 00.308-.105l2.907-2.267 2.907 2.251a.5.5 0 00.788-.526l-.99-3.651 2.627-2.34A.5.5 0 0016.5 10h-3.232l-1.304-3.257c-.15-.38-.778-.38-.928 0zm1.429 3.943a.5.5 0 00.464.314h2.259l-1.878 1.672a.5.5 0 00-.149.504l.681 2.51-2.035-1.576a.498.498 0 00-.613.001L9.16 15.697l.682-2.526a.5.5 0 00-.15-.504L7.814 11h2.257a.5.5 0 00.464-.314l.965-2.411.965 2.411z"/>',attrs:{version:"1",viewBox:"0 0 24 24"}}}))
12099
+ define("ember-svg-jar/inlined/sidemenu-open",["exports"],(function(e){"use strict"
12097
12100
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
12098
- e.default={content:'<path d="M21 2.5H3c-.828 0-1.5.608-1.5 1.357v16.286c0 .75.672 1.357 1.5 1.357h18c.828 0 1.5-.608 1.5-1.357V3.857c0-.75-.672-1.357-1.5-1.357zm-4.5 0v19" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M16.5 2.5v19h6v-19h-6z" fill="#15171A"/>',attrs:{fill:"none",viewBox:"0 0 24 24"}}}))
12099
- define("ember-svg-jar/inlined/sidemenu",["exports"],(function(e){"use strict"
12101
+ e.default={content:'<path d="M21 2.5H3c-.828 0-1.5.608-1.5 1.357v16.286c0 .75.672 1.357 1.5 1.357h18c.828 0 1.5-.608 1.5-1.357V3.857c0-.75-.672-1.357-1.5-1.357zm-4.5 0v19" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M16.5 2.5v19h6v-19h-6z" fill="#15171A"/>',attrs:{fill:"none",viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/sidemenu",["exports"],(function(e){"use strict"
12100
12102
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
12101
12103
  e.default={content:'<path d="M21 2.5H3c-.828 0-1.5.608-1.5 1.357v16.286c0 .75.672 1.357 1.5 1.357h18c.828 0 1.5-.608 1.5-1.357V3.857c0-.75-.672-1.357-1.5-1.357zm-4.5 0v19" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>',attrs:{fill:"none",viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/signal-tower",["exports"],(function(e){"use strict"
12102
12104
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
@@ -12154,10 +12156,10 @@ e.default={content:'<path d="M20.62.107c-3.947.473-7.5 1.922-10.453 4.264-.82.65
12154
12156
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
12155
12157
  e.default={content:'<path d="M14.046 2.242l-4.148-.01h-.002c-4.374 0-7.8 3.427-7.8 7.802 0 4.098 3.186 7.206 7.465 7.37v3.828a.85.85 0 00.12.403.744.744 0 001.034.229c.264-.168 6.473-4.14 8.088-5.506 1.902-1.61 3.04-3.97 3.043-6.312v-.017c-.006-4.367-3.43-7.787-7.8-7.788zm3.787 12.972c-1.134.96-4.862 3.405-6.772 4.643V16.67a.75.75 0 00-.75-.75h-.396c-3.66 0-6.318-2.476-6.318-5.886 0-3.534 2.768-6.302 6.3-6.302l4.147.01h.002c3.532 0 6.3 2.766 6.302 6.296-.003 1.91-.942 3.844-2.514 5.176z"/>',attrs:{viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/twitter-like",["exports"],(function(e){"use strict"
12156
12158
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
12157
- e.default={content:'<path d="M12 21.638h-.014C9.403 21.59 1.95 14.856 1.95 8.478c0-3.064 2.525-5.754 5.403-5.754 2.29 0 3.83 1.58 4.646 2.73.814-1.148 2.354-2.73 4.645-2.73 2.88 0 5.404 2.69 5.404 5.755 0 6.376-7.454 13.11-10.037 13.157H12zM7.354 4.225c-2.08 0-3.903 1.988-3.903 4.255 0 5.74 7.034 11.596 8.55 11.658 1.518-.062 8.55-5.917 8.55-11.658 0-2.267-1.823-4.255-3.903-4.255-2.528 0-3.94 2.936-3.952 2.965-.23.562-1.156.562-1.387 0-.014-.03-1.425-2.965-3.954-2.965z"/>',attrs:{viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/twitter-link",["exports"],(function(e){"use strict"
12159
+ e.default={content:'<path d="M12 21.638h-.014C9.403 21.59 1.95 14.856 1.95 8.478c0-3.064 2.525-5.754 5.403-5.754 2.29 0 3.83 1.58 4.646 2.73.814-1.148 2.354-2.73 4.645-2.73 2.88 0 5.404 2.69 5.404 5.755 0 6.376-7.454 13.11-10.037 13.157H12zM7.354 4.225c-2.08 0-3.903 1.988-3.903 4.255 0 5.74 7.034 11.596 8.55 11.658 1.518-.062 8.55-5.917 8.55-11.658 0-2.267-1.823-4.255-3.903-4.255-2.528 0-3.94 2.936-3.952 2.965-.23.562-1.156.562-1.387 0-.014-.03-1.425-2.965-3.954-2.965z"/>',attrs:{viewBox:"0 0 24 24"}}}))
12160
+ define("ember-svg-jar/inlined/twitter-link",["exports"],(function(e){"use strict"
12158
12161
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
12159
- e.default={content:'<g fill="#5b7083"><path d="M11.96 14.945a.833.833 0 01-.203-.027 5.192 5.192 0 01-2.795-1.932c-.832-1.125-1.176-2.508-.968-3.893s.942-2.605 2.068-3.438l3.53-2.608a5.25 5.25 0 017.33 1.1c.83 1.127 1.175 2.51.967 3.895s-.943 2.605-2.07 3.438l-1.48 1.094a.752.752 0 01-.892-1.208l1.48-1.095a3.713 3.713 0 001.476-2.45 3.724 3.724 0 00-.69-2.778 3.745 3.745 0 00-5.23-.784l-3.53 2.608a3.72 3.72 0 00-1.475 2.45c-.15.99.097 1.975.69 2.778a3.701 3.701 0 001.992 1.377.752.752 0 01-.202 1.475z"/><path d="M7.27 22.054a5.24 5.24 0 01-5.193-6.019 5.21 5.21 0 012.07-3.438l1.478-1.094a.752.752 0 01.893 1.208l-1.48 1.095a3.716 3.716 0 00-1.475 2.45c-.148.99.097 1.975.69 2.778a3.745 3.745 0 005.23.785l3.528-2.608a3.744 3.744 0 00.785-5.23 3.7 3.7 0 00-1.992-1.376.75.75 0 01-.52-.927c.112-.4.528-.63.926-.522a5.19 5.19 0 012.794 1.932 5.248 5.248 0 01-1.1 7.33l-3.53 2.608a5.189 5.189 0 01-3.105 1.026z"/></g>',attrs:{viewBox:"0 0 24 24"}}}))
12160
- define("ember-svg-jar/inlined/twitter-retweet",["exports"],(function(e){"use strict"
12162
+ e.default={content:'<g fill="#5b7083"><path d="M11.96 14.945a.833.833 0 01-.203-.027 5.192 5.192 0 01-2.795-1.932c-.832-1.125-1.176-2.508-.968-3.893s.942-2.605 2.068-3.438l3.53-2.608a5.25 5.25 0 017.33 1.1c.83 1.127 1.175 2.51.967 3.895s-.943 2.605-2.07 3.438l-1.48 1.094a.752.752 0 01-.892-1.208l1.48-1.095a3.713 3.713 0 001.476-2.45 3.724 3.724 0 00-.69-2.778 3.745 3.745 0 00-5.23-.784l-3.53 2.608a3.72 3.72 0 00-1.475 2.45c-.15.99.097 1.975.69 2.778a3.701 3.701 0 001.992 1.377.752.752 0 01-.202 1.475z"/><path d="M7.27 22.054a5.24 5.24 0 01-5.193-6.019 5.21 5.21 0 012.07-3.438l1.478-1.094a.752.752 0 01.893 1.208l-1.48 1.095a3.716 3.716 0 00-1.475 2.45c-.148.99.097 1.975.69 2.778a3.745 3.745 0 005.23.785l3.528-2.608a3.744 3.744 0 00.785-5.23 3.7 3.7 0 00-1.992-1.376.75.75 0 01-.52-.927c.112-.4.528-.63.926-.522a5.19 5.19 0 012.794 1.932 5.248 5.248 0 01-1.1 7.33l-3.53 2.608a5.189 5.189 0 01-3.105 1.026z"/></g>',attrs:{viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/twitter-retweet",["exports"],(function(e){"use strict"
12161
12163
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
12162
12164
  e.default={content:'<path d="M23.77 15.67a.749.749 0 00-1.06 0l-2.22 2.22V7.65a3.755 3.755 0 00-3.75-3.75h-5.85a.75.75 0 000 1.5h5.85c1.24 0 2.25 1.01 2.25 2.25v10.24l-2.22-2.22a.749.749 0 10-1.06 1.06l3.5 3.5c.145.147.337.22.53.22s.383-.072.53-.22l3.5-3.5a.747.747 0 000-1.06zm-10.66 3.28H7.26c-1.24 0-2.25-1.01-2.25-2.25V6.46l2.22 2.22a.752.752 0 001.062 0 .749.749 0 000-1.06l-3.5-3.5a.747.747 0 00-1.06 0l-3.5 3.5a.749.749 0 101.06 1.06l2.22-2.22V16.7a3.755 3.755 0 003.75 3.75h5.85a.75.75 0 000-1.5z"/>',attrs:{viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/twitter-share",["exports"],(function(e){"use strict"
12163
12165
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
@@ -12300,10 +12302,10 @@ var n=t.default.extend({_tooltipVariantClass:"ember-tooltip"})
12300
12302
  e.default=n})),define("ember-tooltips/templates/components/ember-tooltip-base",["exports"],(function(e){"use strict"
12301
12303
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
12302
12304
  var t=Ember.HTMLBars.template({id:"wPl1S7tp",block:'{"symbols":["&default"],"statements":[[6,[37,0],[[32,0,["_awaitingTooltipElementRendered"]]],null,[["default","else"],[{"statements":[[2," "],[10,"div"],[12],[2,"\\n"],[6,[37,0],[[32,0,["_shouldRenderContent"]]],null,[["default"],[{"statements":[[6,[37,0],[[27,[32,1]]],null,[["default","else"],[{"statements":[[2," "],[18,1,[[32,0]]],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[1,[32,0,["text"]]],[2,"\\n"]],"parameters":[]}]]]],"parameters":[]}]]],[2," "],[13],[2,"\\n"]],"parameters":[]},{"statements":[[6,[37,2],[[30,[36,1],[[32,0,["_renderElement"]]],null]],[["guid","insertBefore"],["%cursor:0%",[29]]],[["default"],[{"statements":[[2," "],[10,"div"],[12],[2,"\\n"],[6,[37,0],[[27,[32,1]]],null,[["default","else"],[{"statements":[[2," "],[18,1,[[32,0]]],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[1,[32,0,["text"]]],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n"]],"parameters":[]}]]]],"parameters":[]}]]]],"hasEval":false,"upvars":["if","-in-el-null","in-element"]}',moduleName:"ember-tooltips/templates/components/ember-tooltip-base.hbs"})
12303
- e.default=t})),define("ember-tooltips/utils/ember-popover",["exports"],(function(e){"use strict"
12305
+ e.default=t}))
12306
+ define("ember-tooltips/utils/ember-popover",["exports"],(function(e){"use strict"
12304
12307
  function t(e,t){return!!t&&(t===e||!!t.querySelectorAll(e).length)}function n(e,n,r){return!(!n||!r)&&(!!n.is(e)||!!n.querySelectorAll(e).length&&!t(e,r))}Object.defineProperty(e,"__esModule",{value:!0}),e.isElementElsewhere=function(e,r,i){const o=!t(e,i)
12305
- return!n(e,r,i)&&o},e.isElementInPopover=t,e.isElementInTargetAndNotInPopover=n}))
12306
- define("ember-tracked-storage-polyfill/index",["exports"],(function(e){"use strict"
12308
+ return!n(e,r,i)&&o},e.isElementInPopover=t,e.isElementInTargetAndNotInPopover=n})),define("ember-tracked-storage-polyfill/index",["exports"],(function(e){"use strict"
12307
12309
  Object.defineProperty(e,"__esModule",{value:!0}),e.createStorage=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r
12308
12310
  return new n(e,t)},e.getValue=function(e){return e._value},e.setValue=function(e,t){const{_isEqual:n,_lastValue:r}=e
12309
12311
  n(t,r)||(e._value=e._lastValue=t)}
@@ -12539,7 +12541,8 @@ r.addEventListener("load",(()=>{let e=this.selectingFile
12539
12541
  this.selectingFile=!1,t({id:e})})),r.src=n}))}uploadSuccess(e,t){let n=new Image
12540
12542
  n.addEventListener("load",(()=>{let r={src:e.url,width:n.naturalWidth,height:n.naturalHeight},i=`${t.id}Image`
12541
12543
  this.args.payload[i]=r,this.updateImageDimensions()})),n.src=e.url}setLayoutWide(){this.args.payload.cardWidth="wide",Ember.run.scheduleOnce("afterRender",this,this.updateImageDimensions)}setLayoutFull(){this.args.payload.cardWidth="full",Ember.run.scheduleOnce("afterRender",this,this.updateImageDimensions)}setStartingPosition(e){this.args.payload.startingPosition=Math.min(100,Math.max(0,parseInt(e.target.value)))}selectBeforeImage(){this.selectingFile="before",this._triggerFileDialog()}selectAfterImage(){this.selectingFile="after",this._triggerFileDialog()}uploadFailed(){}handleErrors(){}setCaption(e){this.args.payload.caption=e}leaveEditMode(){this.isEmpty&&Ember.run.scheduleOnce("afterRender",this,this.args.deleteCard)}},w=k(_.prototype,"imageWidth",[i],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),k(_.prototype,"preventDefault",[o],Object.getOwnPropertyDescriptor(_.prototype,"preventDefault"),_.prototype),k(_.prototype,"stopPropagation",[a],Object.getOwnPropertyDescriptor(_.prototype,"stopPropagation"),_.prototype),k(_.prototype,"removeFocus",[s],Object.getOwnPropertyDescriptor(_.prototype,"removeFocus"),_.prototype),k(_.prototype,"registerElement",[l],Object.getOwnPropertyDescriptor(_.prototype,"registerElement"),_.prototype),k(_.prototype,"uploadStart",[u],Object.getOwnPropertyDescriptor(_.prototype,"uploadStart"),_.prototype),k(_.prototype,"uploadSuccess",[c],Object.getOwnPropertyDescriptor(_.prototype,"uploadSuccess"),_.prototype),k(_.prototype,"setLayoutWide",[d],Object.getOwnPropertyDescriptor(_.prototype,"setLayoutWide"),_.prototype),k(_.prototype,"setLayoutFull",[h],Object.getOwnPropertyDescriptor(_.prototype,"setLayoutFull"),_.prototype),k(_.prototype,"setStartingPosition",[p],Object.getOwnPropertyDescriptor(_.prototype,"setStartingPosition"),_.prototype),k(_.prototype,"selectBeforeImage",[f],Object.getOwnPropertyDescriptor(_.prototype,"selectBeforeImage"),_.prototype),k(_.prototype,"selectAfterImage",[m],Object.getOwnPropertyDescriptor(_.prototype,"selectAfterImage"),_.prototype),k(_.prototype,"uploadFailed",[g],Object.getOwnPropertyDescriptor(_.prototype,"uploadFailed"),_.prototype),k(_.prototype,"handleErrors",[b],Object.getOwnPropertyDescriptor(_.prototype,"handleErrors"),_.prototype),k(_.prototype,"setCaption",[v],Object.getOwnPropertyDescriptor(_.prototype,"setCaption"),_.prototype),k(_.prototype,"leaveEditMode",[y],Object.getOwnPropertyDescriptor(_.prototype,"leaveEditMode"),_.prototype),_)
12542
- e.default=A,Ember._setComponentTemplate(E,A)})),define("koenig-editor/components/koenig-card-bookmark",["exports","koenig-editor/components/koenig-editor","@tryghost/helpers","ember-concurrency"],(function(e,t,n,r){"use strict"
12544
+ e.default=A,Ember._setComponentTemplate(E,A)}))
12545
+ define("koenig-editor/components/koenig-card-bookmark",["exports","koenig-editor/components/koenig-editor","@tryghost/helpers","ember-concurrency"],(function(e,t,n,r){"use strict"
12543
12546
  var i,o,a,s,l,u,c,d,h,p,f,m,g,b,v
12544
12547
  function y(e,t,n,r){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(r):void 0})}function _(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function w(e,t,n,r,i){var o={}
12545
12548
  return Object.keys(r).forEach((function(e){o[e]=r[e]})),o.enumerable=!!o.enumerable,o.configurable=!!o.configurable,("value"in o||o.initializer)&&(o.writable=!0),o=n.slice().reverse().reduce((function(n,r){return r(e,t,n)||n}),o),i&&void 0!==o.initializer&&(o.value=o.initializer?o.initializer.call(i):void 0,o.initializer=void 0),void 0===o.initializer&&(Object.defineProperty(e,t,o),o=null),o}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
@@ -12557,8 +12560,7 @@ Ember.set(this.payload,"url",t)}urlKeydown(e){"Enter"===e.key&&(e.preventDefault
12557
12560
  this.editor.run((n=>{let{builder:r}=n,i=this.env.postModel,o=r.createMarkupSection("p"),a=r.createMarkup("a",{href:this.payload.url})
12558
12561
  n.replaceSection(i,o),n.insertTextWithMarkup(o.toRange().head,this.payload.url,[a]),t.headSection!==i&&n.setRange(t),e.linkOnError&&n.cancelSnapshot()}))}_focusInput(){let e=this.element.querySelector('[name="url"]')
12559
12562
  e&&e.focus()}},g=w(m.prototype,"ajax",[i],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),b=w(m.prototype,"ghostPaths",[o],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),w(m.prototype,"isEmpty",[a],Object.getOwnPropertyDescriptor(m.prototype,"isEmpty"),m.prototype),w(m.prototype,"counts",[s],Object.getOwnPropertyDescriptor(m.prototype,"counts"),m.prototype),w(m.prototype,"onDeselect",[l],Object.getOwnPropertyDescriptor(m.prototype,"onDeselect"),m.prototype),w(m.prototype,"updateUrl",[u],Object.getOwnPropertyDescriptor(m.prototype,"updateUrl"),m.prototype),w(m.prototype,"urlKeydown",[c],Object.getOwnPropertyDescriptor(m.prototype,"urlKeydown"),m.prototype),w(m.prototype,"updateCaption",[d],Object.getOwnPropertyDescriptor(m.prototype,"updateCaption"),m.prototype),w(m.prototype,"retry",[h],Object.getOwnPropertyDescriptor(m.prototype,"retry"),m.prototype),w(m.prototype,"insertAsLink",[p],Object.getOwnPropertyDescriptor(m.prototype,"insertAsLink"),m.prototype),v=w(m.prototype,"convertUrl",[f],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),m)
12560
- e.default=E,Ember._setComponentTemplate(M,E)}))
12561
- define("koenig-editor/components/koenig-card-button",["exports","@glimmer/component","ember-concurrency"],(function(e,t,n){"use strict"
12563
+ e.default=E,Ember._setComponentTemplate(M,E)})),define("koenig-editor/components/koenig-card-button",["exports","@glimmer/component","ember-concurrency"],(function(e,t,n){"use strict"
12562
12564
  var r,i,o,a,s,l,u,c,d,h,p,f,m,g,b,v,y,_,w,M,k,E,A,j
12563
12565
  function O(e,t,n,r){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(r):void 0})}function x(e,t,n,r,i){var o={}
12564
12566
  return Object.keys(r).forEach((function(e){o[e]=r[e]})),o.enumerable=!!o.enumerable,o.configurable=!!o.configurable,("value"in o||o.initializer)&&(o.writable=!0),o=n.slice().reverse().reduce((function(n,r){return r(e,t,n)||n}),o),i&&void 0!==o.initializer&&(o.value=o.initializer?o.initializer.call(i):void 0,o.initializer=void 0),void 0===o.initializer&&(Object.defineProperty(e,t,o),o=null),o}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
@@ -13226,7 +13228,8 @@ if(Ember.isEmpty(t))return
13226
13228
  let i=t.length-1,o=t[n].length-1
13227
13229
  "right"===e?(r+=1,r>o&&(n<i?n+=1:n=0,r=0)):"left"===e?(r-=1,r<0&&(n>0?n-=1:n=t.length-1,r=t[n].length-1)):"up"===e?(n-=1,n<0&&(n=i)):"down"===e&&(n+=1,n>i&&(n=0)),r>t[n].length-1&&(r=t[n].length-1),this.selectedRowIndex=n,this.selectedColumnIndex=r}_performAction(){this.selectedItem&&this.itemClicked(this.selectedItem)}_handleWindowMousedown(e){e.target.closest(`#${this.containerElement.id}, .fullscreen-modal-container`)?e.target.closest('[data-kg="cardmenu-card"]')||e.preventDefault():this._hideMenu()}_registerEditorKeyboardNavHandlers(){let{editor:e}=this.args
13228
13230
  e.registerKeyCommand({str:"ESC",name:"slash-menu",run:Ember.run.bind(this,this._hideMenu)}),e.registerKeyCommand({str:"ENTER",name:"slash-menu",run:Ember.run.bind(this,this._performAction)}),e.registerKeyCommand({str:"UP",name:"slash-menu",run:Ember.run.bind(this,this._moveSelection,"up")}),e.registerKeyCommand({str:"DOWN",name:"slash-menu",run:Ember.run.bind(this,this._moveSelection,"down")}),e.registerKeyCommand({str:"LEFT",name:"slash-menu",run:Ember.run.bind(this,this._moveSelection,"left")}),e.registerKeyCommand({str:"RIGHT",name:"slash-menu",run:Ember.run.bind(this,this._moveSelection,"right")})}_unregisterEditorKeyboardNavHandlers(){this.args.editor.unregisterKeyCommands("slash-menu")}},m=_(f.prototype,"itemSections",[o],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return[]}}),g=_(f.prototype,"showMenu",[a],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),b=_(f.prototype,"selectedRowIndex",[s],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return 0}}),v=_(f.prototype,"selectedColumnIndex",[l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return 0}}),_(f.prototype,"updateItemSections",[u],Object.getOwnPropertyDescriptor(f.prototype,"updateItemSections"),f.prototype),_(f.prototype,"registerContainerElement",[c],Object.getOwnPropertyDescriptor(f.prototype,"registerContainerElement"),f.prototype),_(f.prototype,"registerEditor",[d],Object.getOwnPropertyDescriptor(f.prototype,"registerEditor"),f.prototype),_(f.prototype,"handleCursorChange",[h],Object.getOwnPropertyDescriptor(f.prototype,"handleCursorChange"),f.prototype),_(f.prototype,"itemClicked",[p],Object.getOwnPropertyDescriptor(f.prototype,"itemClicked"),f.prototype),f)
13229
- e.default=M,Ember._setComponentTemplate(w,M)})),define("koenig-editor/components/koenig-snippet-input",["exports","@glimmer/component","koenig-editor/utils/get-scroll-parent","koenig-editor/components/koenig-toolbar"],(function(e,t,n,r){"use strict"
13231
+ e.default=M,Ember._setComponentTemplate(w,M)}))
13232
+ define("koenig-editor/components/koenig-snippet-input",["exports","@glimmer/component","koenig-editor/utils/get-scroll-parent","koenig-editor/components/koenig-toolbar"],(function(e,t,n,r){"use strict"
13230
13233
  var i,o,a,s,l,u,c,d,h,p,f
13231
13234
  function m(e,t,n,r){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(r):void 0})}function g(e,t,n,r,i){var o={}
13232
13235
  return Object.keys(r).forEach((function(e){o[e]=r[e]})),o.enumerable=!!o.enumerable,o.configurable=!!o.configurable,("value"in o||o.initializer)&&(o.writable=!0),o=n.slice().reverse().reduce((function(n,r){return r(e,t,n)||n}),o),i&&void 0!==o.initializer&&(o.value=o.initializer?o.initializer.call(i):void 0,o.initializer=void 0),void 0===o.initializer&&(Object.defineProperty(e,t,o),o=null),o}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
@@ -13245,8 +13248,7 @@ if(a.left<0){a.left=0,s=(n.left-t.left+n.width/2)/i*100,s<5&&(s=5)}if(a.left+i>t
13245
13248
  t&&n&&this.args.cancel()}_handleKeydown(e){"Escape"===e.key&&this._cancelAndReselect()}_cancelAndReselect(){this.args.cancel(),this._snippetRange&&this.args.editor.selectRange(this._snippetRange)}_addStyleElement(e){let t=document.createElement("style")
13246
13249
  t.id=`${this.element.id}-style`,t.innerHTML=`#${this.element.id}:before, #${this.element.id}:after { ${e} }`,document.head.appendChild(t)}_removeStyleElement(){let e=document.querySelector(`#${this.element.id}-style`)
13247
13250
  e&&e.remove()}},h=g(d.prototype,"koenigUi",[i],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),p=g(d.prototype,"name",[o],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return""}}),f=g(d.prototype,"style",[a],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return Ember.String.htmlSafe("")}}),g(d.prototype,"selectSnippet",[s],Object.getOwnPropertyDescriptor(d.prototype,"selectSnippet"),d.prototype),g(d.prototype,"nameKeydown",[l],Object.getOwnPropertyDescriptor(d.prototype,"nameKeydown"),d.prototype),g(d.prototype,"nameInput",[u],Object.getOwnPropertyDescriptor(d.prototype,"nameInput"),d.prototype),g(d.prototype,"registerAndPositionElement",[c],Object.getOwnPropertyDescriptor(d.prototype,"registerAndPositionElement"),d.prototype),d)
13248
- e.default=v,Ember._setComponentTemplate(b,v)}))
13249
- define("koenig-editor/components/koenig-text-replacement-html-input",["exports","mobiledoc-kit/editor/editor","koenig-editor/lib/clean-text-replacement-html","koenig-editor/options/atoms","koenig-editor/options/key-commands","validator","koenig-editor/components/koenig-editor","koenig-editor/lib/dnd/constants","mobiledoc-kit/utils/parse-utils","koenig-editor/utils/markup-utils","koenig-editor/options/text-expansions"],(function(e,t,n,r,i,o,a,s,l,u,c){"use strict"
13251
+ e.default=v,Ember._setComponentTemplate(b,v)})),define("koenig-editor/components/koenig-text-replacement-html-input",["exports","mobiledoc-kit/editor/editor","koenig-editor/lib/clean-text-replacement-html","koenig-editor/options/atoms","koenig-editor/options/key-commands","validator","koenig-editor/components/koenig-editor","koenig-editor/lib/dnd/constants","mobiledoc-kit/utils/parse-utils","koenig-editor/utils/markup-utils","koenig-editor/options/text-expansions"],(function(e,t,n,r,i,o,a,s,l,u,c){"use strict"
13250
13252
  var d,h,p,f,m,g
13251
13253
  function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function v(e,t,n,r,i){var o={}
13252
13254
  return Object.keys(r).forEach((function(e){o[e]=r[e]})),o.enumerable=!!o.enumerable,o.configurable=!!o.configurable,("value"in o||o.initializer)&&(o.writable=!0),o=n.slice().reverse().reduce((function(n,r){return r(e,t,n)||n}),o),i&&void 0!==o.initializer&&(o.value=o.initializer?o.initializer.call(i):void 0,o.initializer=void 0),void 0===o.initializer&&(Object.defineProperty(e,t,o),o=null),o}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0,e.formatTextReplacementHtml=_
@@ -13655,12 +13657,12 @@ return e.match(n)})):e.includes(r)}))
13655
13657
  return t.length>0?t[0]:null}})),define("koenig-editor/utils/prettify-file-name",["exports"],(function(e){"use strict"
13656
13658
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(e){if(!e||"string"!=typeof e)return""
13657
13659
  let t=e.split(".").slice(0,-1).join(".").replace(/[-_]/g," ").replace(/[^\w\s]+/g,"").replace(/\s\s+/g," ")
13658
- return t.charAt(0).toUpperCase()+t.slice(1)}})),define("koenig-editor/utils/reading-time",["exports"],(function(e){"use strict"
13660
+ return t.charAt(0).toUpperCase()+t.slice(1)}}))
13661
+ define("koenig-editor/utils/reading-time",["exports"],(function(e){"use strict"
13659
13662
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(e){let{wordCount:t,imageCount:n}=e,r=t/(275/60)
13660
13663
  for(var i=12;i>12-n;i-=1)r+=Math.max(i,3)
13661
13664
  let o=Math.round(r/60)
13662
- return o<1?"1 min read":"% min read".replace("%",o)}}))
13663
- define("koenig-editor/utils/snippet-icon",["exports"],(function(e){"use strict"
13665
+ return o<1?"1 min read":"% min read".replace("%",o)}})),define("koenig-editor/utils/snippet-icon",["exports"],(function(e){"use strict"
13664
13666
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(e){let{mobiledoc:t}=e
13665
13667
  if(0===t.cards.length)return"koenig/kg-card-type-snippet-text"
13666
13668
  if(t.sections.some((e=>10!==e[0])))return"koenig/kg-card-type-snippet-combination"
@@ -13858,14 +13860,14 @@ var o=n
13858
13860
  e.default=o})),define("liquid-fire/promise",["exports"],(function(e){"use strict"
13859
13861
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
13860
13862
  var t=Ember.RSVP.Promise
13861
- e.default=t})),define("liquid-fire/rule",["exports","liquid-fire/action","liquid-fire/constraint"],(function(e,t,n){"use strict"
13863
+ e.default=t}))
13864
+ define("liquid-fire/rule",["exports","liquid-fire/action","liquid-fire/constraint"],(function(e,t,n){"use strict"
13862
13865
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
13863
13866
  e.default=class{constructor(){this.constraints=Ember.A(),this.use=null,this.reverse=null}add(e){if(e instanceof t.default){let t="use"
13864
13867
  if(e.reversed&&(t="reverse"),this[t])throw new Error(`More than one "${t}" statement in the same transition rule is not allowed`)
13865
13868
  this[t]=e}else"debug"===e?this.debug=!0:this.constraints.push(e)}validate(e){if(!this.use)throw new Error('Every transition rule must include a "use" statement')
13866
13869
  this.use.validateHandler(e),this.reverse&&this.reverse.validateHandler(e),this.constraints.find((e=>"firstTime"===e.target))||this.constraints.push(new n.default("firstTime","no"))}invert(){let e=new this.constructor
13867
- return e.use=this.reverse,e.reverse=this.use,e.constraints=this.constraints.map((e=>e.invert())),e.debug=this.debug,e}}}))
13868
- define("liquid-fire/running-transition",["exports","jquery"],(function(e,t){"use strict"
13870
+ return e.use=this.reverse,e.reverse=this.use,e.constraints=this.constraints.map((e=>e.invert())),e.debug=this.debug,e}}})),define("liquid-fire/running-transition",["exports","jquery"],(function(e,t){"use strict"
13869
13871
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
13870
13872
  function n(e,n,r){let i=null
13871
13873
  r.view&&(i=(0,t.default)(r.view.element))
@@ -14006,7 +14008,8 @@ case"inject":return parseFloat(i)-n(e,r)+"px"}}}
14006
14008
  t.Normalizations.registered.outerWidth=r("width"),t.Normalizations.registered.outerHeight=r("height")}})),define("liquid-wormhole/components/liquid-append",["exports"],(function(e){"use strict"
14007
14009
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=Ember.Component.extend({didUpdateAttrs(){if(this.get("replaceNodes")){const e=this.get("nodes")
14008
14010
  this.$().children().remove(),this.$().append(e)}},didInsertElement(){const e=this.get("notify"),t=this.get("nodes")
14009
- e&&e.willAppendNodes&&e.willAppendNodes(this.element),this.$().append(t),e&&e.didAppendNodes&&e.didAppendNodes(this.element)}})})),define("liquid-wormhole/components/liquid-destination",["exports","perf-primitives/hash-map","liquid-wormhole/templates/components/liquid-destination"],(function(e,t,n){"use strict"
14011
+ e&&e.willAppendNodes&&e.willAppendNodes(this.element),this.$().append(t),e&&e.didAppendNodes&&e.didAppendNodes(this.element)}})}))
14012
+ define("liquid-wormhole/components/liquid-destination",["exports","perf-primitives/hash-map","liquid-wormhole/templates/components/liquid-destination"],(function(e,t,n){"use strict"
14010
14013
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=Ember.Component.extend({layout:n.default,classNames:["liquid-destination"],classNameBindings:["hasWormholes"],name:"default",liquidWormholeService:Ember.inject.service("liquidWormhole"),matchContext:Ember.computed((()=>({helperName:"liquid-wormhole"}))),hasWormholes:Ember.computed.gt("stacks.length",0),init(){this._super(...arguments),this.stackMap=new t.default,this.set("stacks",Ember.A()),this.wormholeQueue=Ember.A()
14011
14014
  const e=this.get("name")
14012
14015
  this.get("liquidWormholeService").registerDestination(e,this)},willDestroyElement(){this._super(...arguments)
@@ -14016,8 +14019,7 @@ if(!e.element.contains(n))break}this.wormholeQueue.insertAt(t+1,e),Ember.run.sch
14016
14019
  r.set("nodes",i),r.set("_replaceNodes",!0),Ember.run.next((()=>n.removeObject(r)))},flushWormholeQueue(){this.wormholeQueue.forEach((e=>{const t=e.get("stack"),n=this.stackMap.get(t)||this.createStack(e),r=e.get("nodes"),i=e.get("value"),o=Ember.Object.create({nodes:r,wormhole:e,value:i})
14017
14020
  r.css({visibility:"hidden"}),n.pushObject(o)})),this.wormholeQueue.clear()},createStack(e){const t=e.get("stack"),n=Ember.A([null])
14018
14021
  return n.set("name",t),this.stackMap.set(t,n),this.stacks.pushObject(n),n},actions:{willTransition(){},afterChildInsertion(){},afterTransition([{value:e,view:t}]){if(!this.isDestroying&&!this.isDestroyed&&(this.$(t.element).find(".liquid-wormhole-element").css({visibility:"visible"}),null===e)){const e=this.get("stacks"),n=t.get("parentView.stackName"),r=this.stackMap.get(n)
14019
- e.removeObject(r),this.stackMap.delete(n)}}}})}))
14020
- define("liquid-wormhole/components/liquid-wormhole",["exports","liquid-wormhole/templates/components/liquid-wormhole"],(function(e,t){"use strict"
14022
+ e.removeObject(r),this.stackMap.delete(n)}}}})})),define("liquid-wormhole/components/liquid-wormhole",["exports","liquid-wormhole/templates/components/liquid-wormhole"],(function(e,t){"use strict"
14021
14023
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=Ember.Component.extend({layout:t.default,to:Ember.computed.reads("destination"),liquidWormholeService:Ember.inject.service("liquid-wormhole"),stack:Ember.computed((function(){return Ember.guidFor(this)})),value:!0,init(){const e=this.get("class"),t=this.get("stack")||this.get("id")
14022
14024
  this.set("wormholeClass",e),this.set("wormholeId",t),"function"!==Ember.typeOf(this.get("send"))&&this.set("hasSend",!0),this._super(...arguments)},didUpdateAttrs(){this._super(...arguments),this.get("liquidWormholeService").removeWormhole(this,this.get("to")),this.get("liquidWormholeService").appendWormhole(this,this.get("to"))},didInsertElement(){const e=this.$().children()
14023
14025
  this.set("nodes",e),this.element.className="liquid-wormhole-container",this.element.id="",this.get("liquidWormholeService").appendWormhole(this,this.get("to")),this._super.apply(this,arguments)},willDestroyElement(){this.get("liquidWormholeService").removeWormhole(this,this.get("to")),this._super.apply(this,arguments)}})})),define("liquid-wormhole/index",["exports","liquid-fire/constraint"],(function(e,t){"use strict"
@@ -19588,4 +19590,4 @@ if(!i)return v(e)
19588
19590
  if(!b(i)||v(i).isOlderThan(4)){var o=v(e).getStackTop()
19589
19591
  y(i,new p(o.client,c.a.clone(o.scope)))}return v(i)}catch(t){return v(e)}}(e):v(e)}function b(e){return!!(e&&e.__SENTRY__&&e.__SENTRY__.hub)}function v(e){return e&&e.__SENTRY__&&e.__SENTRY__.hub||(e.__SENTRY__=e.__SENTRY__||{},e.__SENTRY__.hub=new p),e.__SENTRY__.hub}function y(e,t){return!!e&&(e.__SENTRY__=e.__SENTRY__||{},e.__SENTRY__.hub=t,!0)}}]])
19590
19592
 
19591
- //# sourceMappingURL=vendor.min-6dc30be68238b5c55df0cdc1f2dc8b8d.map
19593
+ //# sourceMappingURL=vendor.min-c814d3c4b3f543c4cd5ef3aacd0fc645.map
@@ -31,6 +31,9 @@ const RESOURCES = {
31
31
  },
32
32
  authors: {
33
33
  alias: 'authorsPublic'
34
+ },
35
+ tiers: {
36
+ alias: 'tiersPublic'
34
37
  }
35
38
  };
36
39
 
@@ -153,6 +156,7 @@ module.exports = function get(resource, options) {
153
156
 
154
157
  // Parse the options we're going to pass to the API
155
158
  apiOptions = parseOptions(ghostGlobals, this, apiOptions);
159
+ apiOptions.context = {member: data.member};
156
160
 
157
161
  // @TODO: https://github.com/TryGhost/Ghost/issues/10548
158
162
  return controller[action](apiOptions).then(function success(result) {
@@ -45,6 +45,18 @@ const handleMatch = (data, operator, value) => {
45
45
  case '!=':
46
46
  result = data !== value;
47
47
  break;
48
+ case '<':
49
+ result = data < value;
50
+ break;
51
+ case '>':
52
+ result = data > value;
53
+ break;
54
+ case '>=':
55
+ result = data >= value;
56
+ break;
57
+ case '<=':
58
+ result = data <= value;
59
+ break;
48
60
  default:
49
61
  result = data === value;
50
62
  }
@@ -32,7 +32,8 @@ const buildApiOptions = function buildApiOptions(options, post) {
32
32
  limit: 1,
33
33
  // This line deliberately uses double quotes because GQL cannot handle either double quotes
34
34
  // or escaped singles, see TryGhost/GQL#34
35
- filter: "slug:-" + slug + "+published_at:" + op + "'" + publishedAt + "'" // eslint-disable-line quotes
35
+ filter: "slug:-" + slug + "+published_at:" + op + "'" + publishedAt + "'", // eslint-disable-line quotes
36
+ context: {member: options.data.member}
36
37
  };
37
38
 
38
39
  if (get(options, 'hash.in')) {
@@ -48,6 +49,11 @@ const buildApiOptions = function buildApiOptions(options, post) {
48
49
  return apiOptions;
49
50
  };
50
51
 
52
+ /**
53
+ * @param {*} options
54
+ * @param {*} data
55
+ * @returns {Promise<any>}
56
+ */
51
57
  const fetch = function fetch(options, data) {
52
58
  const self = this;
53
59
  const apiOptions = buildApiOptions(options, this);
@@ -77,6 +83,10 @@ const fetch = function fetch(options, data) {
77
83
  // If prevNext method is called without valid post data then we must return a promise, if there is valid post data
78
84
  // then the promise is handled in the api call.
79
85
 
86
+ /**
87
+ * @param {*} options
88
+ * @returns {Promise<any>}
89
+ */
80
90
  module.exports = function prevNext(options) {
81
91
  options = options || {};
82
92
 
@@ -0,0 +1,59 @@
1
+ // # Tiers Helper
2
+ // Usage: `{{tiers}}`, `{{tiers separator=' - ' prefix=' : ' suffix=''}}`
3
+ //
4
+ // Returns a string of the tiers with access to the post.
5
+ // By default, tiers are separated by commas.
6
+ const {labs} = require('../services/proxy');
7
+ const {SafeString, escapeExpression} = require('../services/rendering');
8
+
9
+ const isString = require('lodash/isString');
10
+
11
+ function tiers(options = {}) {
12
+ options = options || {};
13
+ options.hash = options.hash || {};
14
+
15
+ const separator = isString(options.hash.separator) ? options.hash.separator : ', ';
16
+ const lastSeparator = isString(options.hash.lastSeparator) ? options.hash.lastSeparator : ' and ';
17
+ const prefix = isString(options.hash.prefix) ? options.hash.prefix : '';
18
+ let suffix = isString(options.hash.suffix) ? options.hash.suffix : '';
19
+
20
+ let output = '';
21
+
22
+ let accessProductsList = this.tiers;
23
+
24
+ if (accessProductsList && accessProductsList.length > 0) {
25
+ const tierNames = accessProductsList.map((tier) => {
26
+ return escapeExpression(tier.name);
27
+ });
28
+
29
+ if (tierNames.length === 1) {
30
+ output = tierNames[0];
31
+ suffix = isString(options.hash.suffix) ? options.hash.suffix : ' tier';
32
+ } else {
33
+ suffix = isString(options.hash.suffix) ? options.hash.suffix : ' tiers';
34
+ const firsts = tierNames.slice(0, tierNames.length - 1);
35
+ const last = tierNames[tierNames.length - 1];
36
+ output = firsts.join(separator) + lastSeparator + last;
37
+ }
38
+ }
39
+
40
+ if (output) {
41
+ output = prefix + output + suffix;
42
+ }
43
+
44
+ return new SafeString(output);
45
+ }
46
+
47
+ module.exports = function productsLabsWrapper() {
48
+ let self = this;
49
+ let args = arguments;
50
+
51
+ return labs.enabledHelper({
52
+ flagKey: 'multipleProducts',
53
+ flagName: 'Tiers',
54
+ helperName: 'tiers',
55
+ helpUrl: 'https://ghost.org/docs/themes/'
56
+ }, () => {
57
+ return tiers.apply(self, args);
58
+ });
59
+ };
@@ -8,7 +8,7 @@
8
8
  <h2>This post is for subscribers only</h2>
9
9
  {{/has}}
10
10
  {{#has visibility="tiers"}}
11
- <h2>This post is for subscribers on the {{products}} only </h2>
11
+ <h2>This post is for subscribers on the {{tiers}} only </h2>
12
12
  {{/has}}
13
13
  {{#if @member}}
14
14
  <a class="gh-btn" data-portal="account/plans" style="color:{{accentColor}}">Upgrade your account</a>
@@ -35,7 +35,7 @@ class RouterManager {
35
35
  routerCreated(router) {
36
36
  // NOTE: this event should be become an "internal frontend even"
37
37
  // and should not be consumed by the modules outside the frontend
38
- events.emit('router.created', this);
38
+ events.emit('router.created', router);
39
39
 
40
40
  // CASE: there are router types which do not generate resource urls
41
41
  // e.g. static route router, in this case we don't want ot notify the URL service
@@ -4,6 +4,8 @@ const express = require('../../shared/express');
4
4
  const cors = require('cors');
5
5
  const {URL} = require('url');
6
6
  const errors = require('@tryghost/errors');
7
+ const DomainEvents = require('@tryghost/domain-events');
8
+ const {MemberPageViewEvent} = require('@tryghost/member-events');
7
9
 
8
10
  // App requires
9
11
  const config = require('../../shared/config');
@@ -171,6 +173,14 @@ module.exports = function setupSiteApp(options = {}) {
171
173
  }
172
174
  });
173
175
 
176
+ siteApp.use(function (req, res, next) {
177
+ if (req.member) {
178
+ // This event needs memberLastSeenAt to avoid doing un-necessary database queries when updating `last_seen_at`
179
+ DomainEvents.dispatch(MemberPageViewEvent.create({url: req.url, memberId: req.member.id, memberLastSeenAt: req.member.last_seen_at}, new Date()));
180
+ }
181
+ next();
182
+ });
183
+
174
184
  debug('General middleware done');
175
185
 
176
186
  router = siteRoutes(options);
@@ -207,5 +207,9 @@ module.exports = {
207
207
 
208
208
  get productsPublic() {
209
209
  return shared.pipeline(require('./products-public'), localUtils, 'content');
210
+ },
211
+
212
+ get tiersPublic() {
213
+ return shared.pipeline(require('./tiers-public'), localUtils, 'content');
210
214
  }
211
215
  };
@@ -54,7 +54,8 @@ module.exports = {
54
54
  'order',
55
55
  'debug',
56
56
  'page',
57
- 'search'
57
+ 'search',
58
+ 'include'
58
59
  ],
59
60
  permissions: true,
60
61
  validation: {},
@@ -93,7 +93,9 @@ module.exports = {
93
93
  options: [
94
94
  'id'
95
95
  ],
96
- headers: {},
96
+ headers: {
97
+ cacheInvalidate: true
98
+ },
97
99
  validation: {
98
100
  options: {
99
101
  id: {
@@ -108,11 +110,6 @@ module.exports = {
108
110
  frame.options
109
111
  );
110
112
 
111
- if (model.wasChanged()) {
112
- this.headers.cacheInvalidate = true;
113
- } else {
114
- this.headers.cacheInvalidate = false;
115
- }
116
113
  return model;
117
114
  }
118
115
  }
@@ -0,0 +1,34 @@
1
+ // NOTE: We must not cache references to membersService.api
2
+ // as it is a getter and may change during runtime.
3
+ const membersService = require('../../services/members');
4
+
5
+ const allowedIncludes = ['monthly_price', 'yearly_price', 'benefits'];
6
+
7
+ module.exports = {
8
+ docName: 'tiers',
9
+
10
+ browse: {
11
+ options: [
12
+ 'limit',
13
+ 'fields',
14
+ 'include',
15
+ 'filter',
16
+ 'order',
17
+ 'debug',
18
+ 'page'
19
+ ],
20
+ permissions: true,
21
+ validation: {
22
+ options: {
23
+ include: {
24
+ values: allowedIncludes
25
+ }
26
+ }
27
+ },
28
+ async query(frame) {
29
+ const page = await membersService.api.productRepository.list(frame.options);
30
+
31
+ return page;
32
+ }
33
+ }
34
+ };
@@ -95,7 +95,9 @@ module.exports = {
95
95
  options: [
96
96
  'id'
97
97
  ],
98
- headers: {},
98
+ headers: {
99
+ cacheInvalidate: true
100
+ },
99
101
  validation: {
100
102
  options: {
101
103
  id: {
@@ -112,11 +114,6 @@ module.exports = {
112
114
  frame.options
113
115
  );
114
116
 
115
- if (model.wasChanged()) {
116
- this.headers.cacheInvalidate = true;
117
- } else {
118
- this.headers.cacheInvalidate = false;
119
- }
120
117
  return model;
121
118
  }
122
119
  }
@@ -1,9 +1,15 @@
1
1
  const mapper = require('./utils/mapper');
2
2
  const gating = require('./utils/post-gating');
3
+ const membersService = require('../../../../../services/members');
3
4
 
4
5
  module.exports = {
5
6
  async read(model, apiConfig, frame) {
6
- const emailPost = await mapper.mapPost(model, frame);
7
+ const tiersModels = await membersService.api.productRepository.list({
8
+ withRelated: ['monthlyPrice', 'yearlyPrice']
9
+ });
10
+ const tiers = tiersModels.data && tiersModels.data.map(tierModel => tierModel.toJSON());
11
+
12
+ const emailPost = await mapper.mapPost(model, frame, {tiers});
7
13
  gating.forPost(emailPost, frame);
8
14
 
9
15
  frame.response = {