ghost 5.46.1 → 5.47.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 (274) hide show
  1. package/MigratorConfig.js +1 -0
  2. package/components/tryghost-adapter-cache-memory-ttl-5.47.1.tgz +0 -0
  3. package/components/tryghost-adapter-cache-redis-5.47.1.tgz +0 -0
  4. package/components/{tryghost-adapter-manager-5.46.1.tgz → tryghost-adapter-manager-5.47.1.tgz} +0 -0
  5. package/components/{tryghost-announcement-bar-settings-5.46.1.tgz → tryghost-announcement-bar-settings-5.47.1.tgz} +0 -0
  6. package/components/tryghost-api-framework-5.47.1.tgz +0 -0
  7. package/components/tryghost-api-version-compatibility-service-5.47.1.tgz +0 -0
  8. package/components/{tryghost-audience-feedback-5.46.1.tgz → tryghost-audience-feedback-5.47.1.tgz} +0 -0
  9. package/components/tryghost-bootstrap-socket-5.47.1.tgz +0 -0
  10. package/components/tryghost-constants-5.47.1.tgz +0 -0
  11. package/components/tryghost-custom-theme-settings-service-5.47.1.tgz +0 -0
  12. package/components/tryghost-data-generator-5.47.1.tgz +0 -0
  13. package/components/{tryghost-domain-events-5.46.1.tgz → tryghost-domain-events-5.47.1.tgz} +0 -0
  14. package/components/tryghost-dynamic-routing-events-5.47.1.tgz +0 -0
  15. package/components/tryghost-email-analytics-provider-mailgun-5.47.1.tgz +0 -0
  16. package/components/tryghost-email-analytics-service-5.47.1.tgz +0 -0
  17. package/components/tryghost-email-content-generator-5.47.1.tgz +0 -0
  18. package/components/tryghost-email-events-5.47.1.tgz +0 -0
  19. package/components/tryghost-email-service-5.47.1.tgz +0 -0
  20. package/components/{tryghost-email-suppression-list-5.46.1.tgz → tryghost-email-suppression-list-5.47.1.tgz} +0 -0
  21. package/components/tryghost-event-aware-cache-wrapper-5.47.1.tgz +0 -0
  22. package/components/tryghost-express-dynamic-redirects-5.47.1.tgz +0 -0
  23. package/components/tryghost-external-media-inliner-5.47.1.tgz +0 -0
  24. package/components/tryghost-extract-api-key-5.47.1.tgz +0 -0
  25. package/components/{tryghost-html-to-plaintext-5.46.1.tgz → tryghost-html-to-plaintext-5.47.1.tgz} +0 -0
  26. package/components/tryghost-i18n-5.47.1.tgz +0 -0
  27. package/components/{tryghost-importer-handler-content-files-5.46.1.tgz → tryghost-importer-handler-content-files-5.47.1.tgz} +0 -0
  28. package/components/tryghost-importer-revue-5.47.1.tgz +0 -0
  29. package/components/tryghost-in-memory-repository-5.47.1.tgz +0 -0
  30. package/components/tryghost-job-manager-5.47.1.tgz +0 -0
  31. package/components/tryghost-link-redirects-5.47.1.tgz +0 -0
  32. package/components/tryghost-link-replacer-5.47.1.tgz +0 -0
  33. package/components/tryghost-link-tracking-5.47.1.tgz +0 -0
  34. package/components/{tryghost-magic-link-5.46.1.tgz → tryghost-magic-link-5.47.1.tgz} +0 -0
  35. package/components/tryghost-mailgun-client-5.47.1.tgz +0 -0
  36. package/components/tryghost-member-attribution-5.47.1.tgz +0 -0
  37. package/components/tryghost-member-events-5.47.1.tgz +0 -0
  38. package/components/tryghost-members-api-5.47.1.tgz +0 -0
  39. package/components/tryghost-members-csv-5.47.1.tgz +0 -0
  40. package/components/tryghost-members-events-service-5.47.1.tgz +0 -0
  41. package/components/tryghost-members-importer-5.47.1.tgz +0 -0
  42. package/components/tryghost-members-offers-5.47.1.tgz +0 -0
  43. package/components/tryghost-members-payments-5.47.1.tgz +0 -0
  44. package/components/tryghost-members-ssr-5.47.1.tgz +0 -0
  45. package/components/tryghost-members-stripe-service-5.47.1.tgz +0 -0
  46. package/components/{tryghost-mentions-email-report-5.46.1.tgz → tryghost-mentions-email-report-5.47.1.tgz} +0 -0
  47. package/components/tryghost-milestones-5.47.1.tgz +0 -0
  48. package/components/tryghost-minifier-5.47.1.tgz +0 -0
  49. package/components/tryghost-mw-api-version-mismatch-5.47.1.tgz +0 -0
  50. package/components/tryghost-mw-cache-control-5.47.1.tgz +0 -0
  51. package/components/tryghost-mw-error-handler-5.47.1.tgz +0 -0
  52. package/components/tryghost-mw-session-from-token-5.47.1.tgz +0 -0
  53. package/components/{tryghost-mw-update-user-last-seen-5.46.1.tgz → tryghost-mw-update-user-last-seen-5.47.1.tgz} +0 -0
  54. package/components/tryghost-mw-version-match-5.47.1.tgz +0 -0
  55. package/components/tryghost-mw-vhost-5.47.1.tgz +0 -0
  56. package/components/tryghost-oembed-service-5.47.1.tgz +0 -0
  57. package/components/tryghost-package-json-5.47.1.tgz +0 -0
  58. package/components/tryghost-post-revisions-5.47.1.tgz +0 -0
  59. package/components/tryghost-posts-service-5.47.1.tgz +0 -0
  60. package/components/tryghost-referrers-5.47.1.tgz +0 -0
  61. package/components/{tryghost-security-5.46.1.tgz → tryghost-security-5.47.1.tgz} +0 -0
  62. package/components/tryghost-session-service-5.47.1.tgz +0 -0
  63. package/components/tryghost-settings-path-manager-5.47.1.tgz +0 -0
  64. package/components/{tryghost-slack-notifications-5.46.1.tgz → tryghost-slack-notifications-5.47.1.tgz} +0 -0
  65. package/components/tryghost-staff-service-5.47.1.tgz +0 -0
  66. package/components/tryghost-stats-service-5.47.1.tgz +0 -0
  67. package/components/tryghost-tiers-5.47.1.tgz +0 -0
  68. package/components/tryghost-update-check-service-5.47.1.tgz +0 -0
  69. package/components/tryghost-verification-trigger-5.47.1.tgz +0 -0
  70. package/components/tryghost-version-notifications-data-service-5.47.1.tgz +0 -0
  71. package/components/{tryghost-webmentions-5.46.1.tgz → tryghost-webmentions-5.47.1.tgz} +0 -0
  72. package/content/themes/casper/assets/built/global.css +1 -1
  73. package/content/themes/casper/assets/built/global.css.map +1 -1
  74. package/content/themes/casper/assets/built/screen.css +1 -1
  75. package/content/themes/casper/assets/built/screen.css.map +1 -1
  76. package/content/themes/casper/assets/css/screen.css +18 -2
  77. package/content/themes/casper/package.json +1 -1
  78. package/core/boot.js +2 -2
  79. package/core/built/admin/assets/{chunk.604.e25172fcbbcc8ddcbdec.js → chunk.11.a4f9c30c0891933434bf.js} +4136 -4448
  80. package/core/built/admin/assets/{chunk.143.0ab429a53bdda025f009.js → chunk.143.70ebfe98c846ee93f854.js} +5 -5
  81. package/core/built/admin/assets/{chunk.178.3ec92986406c285cdd68.js → chunk.178.e3546b84ecb79aae1772.js} +4 -4
  82. package/core/built/admin/assets/{ghost-2e3d55ca4212a50f87aba88c26b55945.js → ghost-48e9d3e33a5bb943cd479b941dbfe62e.js} +444 -478
  83. package/core/built/admin/assets/ghost-a2e163a59a7ec0c8ceb97289113a9994.css +1 -0
  84. package/core/built/admin/assets/ghost-dark-f2d9fd8b4f7b41e98642a27afdc9b35a.css +1 -0
  85. package/core/built/admin/assets/{vendor-e3de790ee48087482d42c1686d5fefd9.js → vendor-39356907c39237f12c305e1d3ca46c85.js} +11 -11
  86. package/core/built/admin/index.html +6 -6
  87. package/core/frontend/public/ghost.min.css +1 -1
  88. package/core/frontend/services/admin-auth-assets/index.js +1 -1
  89. package/core/frontend/services/card-assets/{service.js → CardAssetService.js} +2 -2
  90. package/core/frontend/services/card-assets/index.js +1 -1
  91. package/core/frontend/services/comment-counts-assets/index.js +1 -1
  92. package/core/frontend/services/member-attribution-assets/index.js +1 -1
  93. package/core/frontend/services/routing/index.js +1 -1
  94. package/core/frontend/services/sitemap/{page-generator.js → PageMapGenerator.js} +1 -1
  95. package/core/frontend/services/sitemap/{post-generator.js → PostMapGenerator.js} +1 -1
  96. package/core/frontend/services/sitemap/{manager.js → SiteMapManager.js} +5 -5
  97. package/core/frontend/services/sitemap/{tag-generator.js → TagsMapGenerator.js} +1 -1
  98. package/core/frontend/services/sitemap/{user-generator.js → UserMapGenerator.js} +1 -1
  99. package/core/frontend/services/sitemap/handler.js +1 -1
  100. package/core/frontend/services/theme-engine/i18n/{theme-i18n.js → ThemeI18n.js} +1 -1
  101. package/core/frontend/services/theme-engine/i18n/index.js +1 -1
  102. package/core/frontend/web/routes.js +1 -1
  103. package/core/frontend/web/site.js +2 -2
  104. package/core/server/adapters/cache/Redis.js +1 -0
  105. package/core/server/adapters/scheduling/post-scheduling/index.js +1 -1
  106. package/core/server/adapters/scheduling/{SchedulingDefault.js → scheduling-default.js} +1 -1
  107. package/core/server/adapters/sso/{Default.js → DefaultSSOAdapter.js} +1 -1
  108. package/core/server/adapters/storage/LocalMediaStorage.js +2 -2
  109. package/core/server/api/endpoints/authentication.js +7 -3
  110. package/core/server/api/endpoints/invites.js +2 -2
  111. package/core/server/api/endpoints/users.js +1 -1
  112. package/core/server/api/endpoints/utils/serializers/output/members.js +1 -4
  113. package/core/server/api/endpoints/utils/validators/input/password_reset.js +1 -0
  114. package/core/server/data/importer/importers/data/{custom-theme-settings.js → CustomThemeSettingsImporter.js} +1 -1
  115. package/core/server/data/importer/importers/data/{newsletters.js → NewslettersImporter.js} +1 -1
  116. package/core/server/data/importer/importers/data/{posts.js → PostsImporter.js} +1 -1
  117. package/core/server/data/importer/importers/data/{products.js → ProductsImporter.js} +1 -1
  118. package/core/server/data/importer/importers/data/{revue-subscriber.js → RevueSubscriberImporter.js} +1 -1
  119. package/core/server/data/importer/importers/data/{roles.js → RolesImporter.js} +1 -1
  120. package/core/server/data/importer/importers/data/{settings.js → SettingsImporter.js} +1 -1
  121. package/core/server/data/importer/importers/data/{stripe-prices.js → StripePricesImporter.js} +1 -1
  122. package/core/server/data/importer/importers/data/{stripe-products.js → StripeProductsImporter.js} +1 -1
  123. package/core/server/data/importer/importers/data/{tags.js → TagsImporter.js} +1 -1
  124. package/core/server/data/importer/importers/data/{users.js → UsersImporter.js} +1 -1
  125. package/core/server/data/importer/importers/data/data-importer.js +11 -11
  126. package/core/server/data/migrations/hooks/migrate/afterEach.js +1 -0
  127. package/core/server/data/migrations/hooks/migrate/beforeEach.js +1 -0
  128. package/core/server/data/migrations/versions/4.4/02-migrate-members-signup-access.js +1 -1
  129. package/core/server/data/schema/fixtures/index.js +1 -1
  130. package/core/server/lib/image/{image-utils.js → ImageUtils.js} +4 -4
  131. package/core/server/lib/image/index.js +1 -1
  132. package/core/server/models/base/plugins/actions.js +104 -29
  133. package/core/server/models/base/plugins/bulk-operations.js +28 -7
  134. package/core/server/models/invite.js +10 -6
  135. package/core/server/models/post.js +21 -7
  136. package/core/server/services/{users.js → Users.js} +1 -1
  137. package/core/server/services/adapter-manager/index.js +2 -2
  138. package/core/server/services/auth/session/express-session.js +1 -1
  139. package/core/server/services/comments/{controller.js → CommentsController.js} +2 -2
  140. package/core/server/services/comments/{service.js → CommentsService.js} +1 -1
  141. package/core/server/services/comments/index.js +3 -3
  142. package/core/server/services/custom-redirects/index.js +1 -1
  143. package/core/server/services/email-analytics/index.js +1 -1
  144. package/core/server/services/email-service/{wrapper.js → EmailServiceWrapper.js} +2 -2
  145. package/core/server/services/email-service/index.js +1 -1
  146. package/core/server/services/explore/index.js +1 -1
  147. package/core/server/services/frontend-data-service/index.js +1 -1
  148. package/core/server/services/invites/{invites.js → Invites.js} +25 -10
  149. package/core/server/services/invites/index.js +3 -1
  150. package/core/server/services/mail/templates/invite-user-by-api-key.html +160 -0
  151. package/core/server/services/members/api.js +1 -1
  152. package/core/server/services/members/emails/signin.js +8 -8
  153. package/core/server/services/members/emails/signup-paid.js +7 -7
  154. package/core/server/services/members/emails/signup.js +9 -9
  155. package/core/server/services/members/emails/subscribe.js +9 -9
  156. package/core/server/services/members/emails/{updateEmail.js → update-email.js} +7 -7
  157. package/core/server/services/members/service.js +2 -2
  158. package/core/server/services/members/utils.js +1 -3
  159. package/core/server/services/newsletters/index.js +1 -1
  160. package/core/server/services/notifications/index.js +1 -1
  161. package/core/server/services/oembed/{twitter-embed.js → TwitterOEmbedProvider.js} +2 -1
  162. package/core/server/services/oembed/service.js +2 -2
  163. package/core/server/services/posts/posts-service.js +1 -1
  164. package/core/server/services/route-settings/index.js +3 -3
  165. package/core/server/services/settings/settings-service.js +1 -1
  166. package/core/server/services/settings-helpers/index.js +1 -1
  167. package/core/server/services/webhooks/listen.js +1 -1
  168. package/core/server/web/api/endpoints/admin/middleware.js +2 -0
  169. package/core/server/web/members/app.js +1 -1
  170. package/core/server/web/parent/frontend.js +1 -1
  171. package/core/shared/config/defaults.json +5 -5
  172. package/core/shared/labs.js +3 -4
  173. package/core/shared/settings-cache/index.js +1 -1
  174. package/package.json +156 -153
  175. package/yarn.lock +1033 -809
  176. package/components/tryghost-adapter-cache-memory-ttl-5.46.1.tgz +0 -0
  177. package/components/tryghost-adapter-cache-redis-5.46.1.tgz +0 -0
  178. package/components/tryghost-api-framework-5.46.1.tgz +0 -0
  179. package/components/tryghost-api-version-compatibility-service-5.46.1.tgz +0 -0
  180. package/components/tryghost-bootstrap-socket-5.46.1.tgz +0 -0
  181. package/components/tryghost-constants-5.46.1.tgz +0 -0
  182. package/components/tryghost-custom-theme-settings-service-5.46.1.tgz +0 -0
  183. package/components/tryghost-data-generator-5.46.1.tgz +0 -0
  184. package/components/tryghost-dynamic-routing-events-5.46.1.tgz +0 -0
  185. package/components/tryghost-email-analytics-provider-mailgun-5.46.1.tgz +0 -0
  186. package/components/tryghost-email-analytics-service-5.46.1.tgz +0 -0
  187. package/components/tryghost-email-content-generator-5.46.1.tgz +0 -0
  188. package/components/tryghost-email-events-5.46.1.tgz +0 -0
  189. package/components/tryghost-email-service-5.46.1.tgz +0 -0
  190. package/components/tryghost-event-aware-cache-wrapper-5.46.1.tgz +0 -0
  191. package/components/tryghost-express-dynamic-redirects-5.46.1.tgz +0 -0
  192. package/components/tryghost-external-media-inliner-5.46.1.tgz +0 -0
  193. package/components/tryghost-extract-api-key-5.46.1.tgz +0 -0
  194. package/components/tryghost-i18n-5.46.1.tgz +0 -0
  195. package/components/tryghost-importer-revue-5.46.1.tgz +0 -0
  196. package/components/tryghost-job-manager-5.46.1.tgz +0 -0
  197. package/components/tryghost-link-redirects-5.46.1.tgz +0 -0
  198. package/components/tryghost-link-replacer-5.46.1.tgz +0 -0
  199. package/components/tryghost-link-tracking-5.46.1.tgz +0 -0
  200. package/components/tryghost-mailgun-client-5.46.1.tgz +0 -0
  201. package/components/tryghost-member-attribution-5.46.1.tgz +0 -0
  202. package/components/tryghost-member-events-5.46.1.tgz +0 -0
  203. package/components/tryghost-members-api-5.46.1.tgz +0 -0
  204. package/components/tryghost-members-csv-5.46.1.tgz +0 -0
  205. package/components/tryghost-members-events-service-5.46.1.tgz +0 -0
  206. package/components/tryghost-members-importer-5.46.1.tgz +0 -0
  207. package/components/tryghost-members-offers-5.46.1.tgz +0 -0
  208. package/components/tryghost-members-payments-5.46.1.tgz +0 -0
  209. package/components/tryghost-members-ssr-5.46.1.tgz +0 -0
  210. package/components/tryghost-members-stripe-service-5.46.1.tgz +0 -0
  211. package/components/tryghost-milestones-5.46.1.tgz +0 -0
  212. package/components/tryghost-minifier-5.46.1.tgz +0 -0
  213. package/components/tryghost-mw-api-version-mismatch-5.46.1.tgz +0 -0
  214. package/components/tryghost-mw-cache-control-5.46.1.tgz +0 -0
  215. package/components/tryghost-mw-error-handler-5.46.1.tgz +0 -0
  216. package/components/tryghost-mw-session-from-token-5.46.1.tgz +0 -0
  217. package/components/tryghost-mw-version-match-5.46.1.tgz +0 -0
  218. package/components/tryghost-mw-vhost-5.46.1.tgz +0 -0
  219. package/components/tryghost-oembed-service-5.46.1.tgz +0 -0
  220. package/components/tryghost-package-json-5.46.1.tgz +0 -0
  221. package/components/tryghost-post-revisions-5.46.1.tgz +0 -0
  222. package/components/tryghost-posts-service-5.46.1.tgz +0 -0
  223. package/components/tryghost-referrers-5.46.1.tgz +0 -0
  224. package/components/tryghost-session-service-5.46.1.tgz +0 -0
  225. package/components/tryghost-settings-path-manager-5.46.1.tgz +0 -0
  226. package/components/tryghost-staff-service-5.46.1.tgz +0 -0
  227. package/components/tryghost-stats-service-5.46.1.tgz +0 -0
  228. package/components/tryghost-tiers-5.46.1.tgz +0 -0
  229. package/components/tryghost-update-check-service-5.46.1.tgz +0 -0
  230. package/components/tryghost-verification-trigger-5.46.1.tgz +0 -0
  231. package/components/tryghost-version-notifications-data-service-5.46.1.tgz +0 -0
  232. package/core/built/admin/assets/ghost-c3187d2bb18193c111d376a110c8c80d.css +0 -1
  233. package/core/built/admin/assets/ghost-dark-4948d897bf814756a3870ef564ba6a6d.css +0 -1
  234. /package/core/built/admin/assets/{chunk.604.e25172fcbbcc8ddcbdec.js.LICENSE.txt → chunk.11.a4f9c30c0891933434bf.js.LICENSE.txt} +0 -0
  235. /package/core/frontend/services/admin-auth-assets/{service.js → AdminAuthAssetsService.js} +0 -0
  236. /package/core/frontend/services/comment-counts-assets/{service.js → CommentCountsAssetsService.js} +0 -0
  237. /package/core/frontend/services/member-attribution-assets/{service.js → MemberAttributionAssetsService.js} +0 -0
  238. /package/core/frontend/services/routing/{router-manager.js → RouterManager.js} +0 -0
  239. /package/core/frontend/services/sitemap/{base-generator.js → BaseSiteMapGenerator.js} +0 -0
  240. /package/core/frontend/services/sitemap/{index-generator.js → SiteMapIndexGenerator.js} +0 -0
  241. /package/core/frontend/services/theme-engine/i18n/{i18n.js → I18n.js} +0 -0
  242. /package/core/server/{ghost-server.js → GhostServer.js} +0 -0
  243. /package/core/server/adapters/cache/{Memory.js → MemoryCache.js} +0 -0
  244. /package/core/server/adapters/cache/{MemoryTTL.js → memory-ttl.js} +0 -0
  245. /package/core/server/adapters/scheduling/post-scheduling/{post-scheduler.js → PostScheduler.js} +0 -0
  246. /package/core/server/adapters/scheduling/{SchedulingBase.js → scheduling-base.js} +0 -0
  247. /package/core/server/adapters/sso/{Base.js → SSOBase.js} +0 -0
  248. /package/core/server/data/db/{state-manager.js → DatabaseStateManager.js} +0 -0
  249. /package/core/server/data/importer/importers/data/{base.js → Base.js} +0 -0
  250. /package/core/server/data/schema/fixtures/{fixture-manager.js → FixtureManager.js} +0 -0
  251. /package/core/server/lib/image/{blog-icon.js → BlogIcon.js} +0 -0
  252. /package/core/server/lib/image/{cached-image-size-from-url.js → CachedImageSizeFromUrl.js} +0 -0
  253. /package/core/server/lib/image/{gravatar.js → Gravatar.js} +0 -0
  254. /package/core/server/lib/image/{image-size.js → ImageSize.js} +0 -0
  255. /package/core/server/services/auth/session/{store.js → SessionStore.js} +0 -0
  256. /package/core/server/services/comments/{emails.js → CommentsServiceEmails.js} +0 -0
  257. /package/core/server/services/comments/{stats.js → CommentsStatsService.js} +0 -0
  258. /package/core/server/services/custom-redirects/{api.js → CustomRedirectsAPI.js} +0 -0
  259. /package/core/server/services/email-analytics/{wrapper.js → EmailAnalyticsServiceWrapper.js} +0 -0
  260. /package/core/server/services/explore/{service.js → ExploreService.js} +0 -0
  261. /package/core/server/services/frontend-data-service/{frontend-data-service.js → FrontendDataService.js} +0 -0
  262. /package/core/server/services/members/{config.js → MembersConfigProvider.js} +0 -0
  263. /package/core/server/services/members/stats/{members-stats.js → MembersStats.js} +0 -0
  264. /package/core/server/services/newsletters/{service.js → NewslettersService.js} +0 -0
  265. /package/core/server/services/notifications/{notifications.js → Notifications.js} +0 -0
  266. /package/core/server/services/oembed/{nft-oembed.js → NFTOEmbedProvider.js} +0 -0
  267. /package/core/server/services/posts/stats/{post-stats.js → PostStats.js} +0 -0
  268. /package/core/server/services/route-settings/{default-settings-manager.js → DefaultSettingsManager.js} +0 -0
  269. /package/core/server/services/route-settings/{route-settings.js → RouteSettings.js} +0 -0
  270. /package/core/server/services/route-settings/{settings-loader.js → SettingsLoader.js} +0 -0
  271. /package/core/server/services/settings/{settings-bread-service.js → SettingsBREADService.js} +0 -0
  272. /package/core/server/services/settings-helpers/{settings-helpers.js → SettingsHelpers.js} +0 -0
  273. /package/core/server/services/webhooks/{trigger.js → WebhookTrigger.js} +0 -0
  274. /package/core/shared/settings-cache/{cache.js → CacheManager.js} +0 -0
@@ -12411,25 +12411,25 @@ Object.keys(t).forEach((r=>{e.registerKeyCommand({str:r,run:()=>t[r](e,r)})})),t
12411
12411
  Ember.set(r,e,t),n(r,!1)}_enter(e){this.isEditing&&("meta"===e||"ctrl"===e&&t.default.isWin())&&this.editCard()}_placeCursorAtEnd(){if(!this._textReplacementEditor)return
12412
12412
  let e=this._textReplacementEditor.post.tailPosition().toRange()
12413
12413
  this._textReplacementEditor.selectRange(e)}},d(u.prototype,"isEmpty",[n],Object.getOwnPropertyDescriptor(u.prototype,"isEmpty"),u.prototype),d(u.prototype,"formattedHtml",[i],Object.getOwnPropertyDescriptor(u.prototype,"formattedHtml"),u.prototype),d(u.prototype,"toolbar",[o],Object.getOwnPropertyDescriptor(u.prototype,"toolbar"),u.prototype),d(u.prototype,"updateHtml",[a],Object.getOwnPropertyDescriptor(u.prototype,"updateHtml"),u.prototype),d(u.prototype,"registerEditor",[s],Object.getOwnPropertyDescriptor(u.prototype,"registerEditor"),u.prototype),d(u.prototype,"leaveEditMode",[l],Object.getOwnPropertyDescriptor(u.prototype,"leaveEditMode"),u.prototype),u)
12414
- e.default=p,Ember._setComponentTemplate(h,p)})),define("koenig-editor/components/koenig-card-embed",["exports","koenig-editor/components/koenig-editor","@tryghost/helpers","ember-concurrency"],(function(e,t,r,n){"use strict"
12415
- var i,o,a,s,l,u,c,d,h,p,f,m,g,v,b,y
12416
- function _(e,t,r,n){r&&Object.defineProperty(e,t,{enumerable:r.enumerable,configurable:r.configurable,writable:r.writable,value:r.initializer?r.initializer.call(n):void 0})}function k(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e
12414
+ e.default=p,Ember._setComponentTemplate(h,p)})),define("koenig-editor/components/koenig-card-embed",["exports","koenig-editor/components/koenig-editor","@tryghost/helpers","ember-ajax/errors","ember-concurrency"],(function(e,t,r,n,i){"use strict"
12415
+ var o,a,s,l,u,c,d,h,p,f,m,g,v,b,y,_
12416
+ function k(e,t,r,n){r&&Object.defineProperty(e,t,{enumerable:r.enumerable,configurable:r.configurable,writable:r.writable,value:r.initializer?r.initializer.call(n):void 0})}function E(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e
12417
12417
  var r=e[Symbol.toPrimitive]
12418
12418
  if(void 0!==r){var n=r.call(e,t||"default")
12419
12419
  if("object"!=typeof n)return n
12420
12420
  throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string")
12421
- return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function E(e,t,r,n,i){var o={}
12421
+ return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function w(e,t,r,n,i){var o={}
12422
12422
  return Object.keys(n).forEach((function(e){o[e]=n[e]})),o.enumerable=!!o.enumerable,o.configurable=!!o.configurable,("value"in o||o.initializer)&&(o.writable=!0),o=r.slice().reverse().reduce((function(r,n){return n(e,t,r)||r}),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
12423
- const w=Ember.HTMLBars.template({id:"J8xpDgjK",block:'{"symbols":["card"],"statements":[[8,"koenig-card",[],[["@class","@isSelected","@isEditing","@selectCard","@deselectCard","@onDeselect","@editCard","@saveAsSnippet","@toolbar","@hasEditMode","@showSelectedOutline","@addParagraphAfterCard","@moveCursorToPrevSection","@moveCursorToNextSection","@editor"],["flex flex-column",[32,0,["isSelected"]],[32,0,["isEditing"]],[30,[36,0],[[32,0],[32,0,["selectCard"]]],null],[30,[36,0],[[32,0],[32,0,["deselectCard"]]],null],[30,[36,0],[[32,0],"onDeselect"],null],[30,[36,0],[[32,0],[32,0,["editCard"]]],null],[30,[36,2],[[32,0,["payload","type"]],[32,0,["saveAsSnippet"]]],null],[32,0,["toolbar"]],false,[32,0,["payload","type"]],[32,0,["addParagraphAfterCard"]],[32,0,["moveCursorToPrevSection"]],[32,0,["moveCursorToNextSection"]],[32,0,["editor"]]]],[["default"],[{"statements":[[2,"\\n"],[6,[37,2],[[32,0,["payload","type"]]],null,[["default","else"],[{"statements":[[2," "],[10,"div"],[14,0,"kg-card-hover"],[12],[2,"\\n "],[10,"div"],[15,0,[31,["koenig-embed-",[32,0,["payload","type"]]," flex justify-center relative"]]],[14,"data-kg-embed",""],[12],[2,"\\n"],[6,[37,2],[[30,[36,3],[[32,0,["payload","type"]],"nft"],null]],null,[["default","else"],[{"statements":[[2," "],[8,"koenig-card-embed/nft",[],[["@payload"],[[32,0,["payload"]]]],null],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[10,"iframe"],[14,0,"bn miw-100"],[14,"scrolling","no"],[12],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[10,"div"],[14,0,"koenig-card-click-overlay ba b--transparent"],[14,"data-kg-overlay",""],[12],[13],[2,"\\n "],[13],[2,"\\n\\n"],[6,[37,2],[[30,[36,5],[[32,0,["isSelected"]],[30,[36,4],[[32,0,["payload","caption"]]],null]],null]],null,[["default"],[{"statements":[[2," "],[8,[32,1,["CaptionInput"]],[],[["@caption","@update","@placeholder"],[[32,0,["payload","caption"]],[30,[36,0],[[32,0],"updateCaption"],null],"Type caption for embed (optional)"]],null],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n"]],"parameters":[]},{"statements":[[6,[37,2],[[32,0,["convertUrl","isRunning"]]],null,[["default","else"],[{"statements":[[2," "],[10,"div"],[14,0,"miw-100 pa2 ba br2 b--lightgrey-d1 flex items-center justify-center bg-whitegrey-l2 f6 lh-title h10"],[12],[2,"\\n  "],[10,"div"],[14,0,"ghost-spinner spinner-blue"],[12],[13],[2," \\n "],[13],[2,"\\n"]],"parameters":[]},{"statements":[[6,[37,2],[[32,0,["hasError"]]],null,[["default","else"],[{"statements":[[2," "],[10,"div"],[14,0,"miw-100 flex flex-row pa2 pl3 ba br2 b--red-l3 red bg-error-red f7 fw4 lh-title h10 items-center"],[12],[2,"\\n "],[10,"span"],[14,0,"mr3"],[12],[2,"There was an error when parsing the URL."],[13],[2,"\\n "],[11,"button"],[24,0,"red-d2 mr3 fw6 hover-red"],[24,4,"button"],[4,[38,0],[[32,0],"retry"],null],[12],[10,"span"],[14,0,"underline"],[12],[2,"Retry"],[13],[13],[2,"\\n "],[11,"button"],[24,0,"red-d2 mr-auto fw6 underline hover-red"],[24,4,"button"],[4,[38,0],[[32,0],"insertAsLink"],null],[12],[10,"span"],[14,0,"underline"],[12],[2,"Paste URL as link"],[13],[13],[2,"\\n "],[11,"button"],[24,0,"nudge-right--2"],[24,4,"button"],[4,[38,0],[[32,0],[32,0,["deleteCard"]]],null],[12],[2,"\\n "],[1,[30,[36,1],["close"],[["class"],["w3 stroke-red-l3"]]]],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[10,"input"],[15,2,[32,0,["payload","url"]]],[14,3,"url"],[14,"placeholder","Paste URL to add embedded content..."],[14,0,"miw-100 pa2 ba br2 b--lightgrey-d2 f7 form-text lh-title tracked-2 h10 nl2 nr2"],[15,"oninput",[30,[36,0],[[32,0],"updateUrl"],null]],[15,"onkeydown",[30,[36,0],[[32,0],"urlKeydown"],null]],[14,4,"text"],[12],[13],[2,"\\n "]],"parameters":[]}]]]],"parameters":[]}]]]],"parameters":[]}]]]],"parameters":[1]}]]],[2,"\\n"]],"hasEval":false,"upvars":["action","svg-jar","if","eq","clean-basic-html","or"]}',moduleName:"koenig-editor/components/koenig-card-embed.hbs"}),{countWords:x}=r.utils
12424
- let O=(i=Ember.inject.service,o=Ember.inject.service,a=Ember.computed("payload.html"),s=Ember.computed("payload.{html,caption}"),l=Ember._action,u=Ember._action,c=Ember._action,d=Ember._action,h=Ember._action,p=Ember._action,f=Ember._action,m=(0,n.task)((function*(e){if(Ember.isBlank(e))this.deleteCard()
12423
+ const x=Ember.HTMLBars.template({id:"Y21xPSLE",block:'{"symbols":["card"],"statements":[[8,"koenig-card",[],[["@class","@isSelected","@isEditing","@selectCard","@deselectCard","@onDeselect","@editCard","@saveAsSnippet","@toolbar","@hasEditMode","@showSelectedOutline","@addParagraphAfterCard","@moveCursorToPrevSection","@moveCursorToNextSection","@editor"],["flex flex-column",[32,0,["isSelected"]],[32,0,["isEditing"]],[30,[36,0],[[32,0],[32,0,["selectCard"]]],null],[30,[36,0],[[32,0],[32,0,["deselectCard"]]],null],[30,[36,0],[[32,0],"onDeselect"],null],[30,[36,0],[[32,0],[32,0,["editCard"]]],null],[30,[36,2],[[32,0,["payload","type"]],[32,0,["saveAsSnippet"]]],null],[32,0,["toolbar"]],false,[32,0,["payload","type"]],[32,0,["addParagraphAfterCard"]],[32,0,["moveCursorToPrevSection"]],[32,0,["moveCursorToNextSection"]],[32,0,["editor"]]]],[["default"],[{"statements":[[2,"\\n"],[6,[37,2],[[32,0,["payload","type"]]],null,[["default","else"],[{"statements":[[2," "],[10,"div"],[14,0,"kg-card-hover"],[12],[2,"\\n "],[10,"div"],[15,0,[31,["koenig-embed-",[32,0,["payload","type"]]," flex justify-center relative"]]],[14,"data-kg-embed",""],[12],[2,"\\n"],[6,[37,2],[[30,[36,3],[[32,0,["payload","type"]],"nft"],null]],null,[["default","else"],[{"statements":[[2," "],[8,"koenig-card-embed/nft",[],[["@payload"],[[32,0,["payload"]]]],null],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[10,"iframe"],[14,0,"bn miw-100"],[14,"scrolling","no"],[12],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[10,"div"],[14,0,"koenig-card-click-overlay ba b--transparent"],[14,"data-kg-overlay",""],[12],[13],[2,"\\n "],[13],[2,"\\n\\n"],[6,[37,2],[[30,[36,5],[[32,0,["isSelected"]],[30,[36,4],[[32,0,["payload","caption"]]],null]],null]],null,[["default"],[{"statements":[[2," "],[8,[32,1,["CaptionInput"]],[],[["@caption","@update","@placeholder"],[[32,0,["payload","caption"]],[30,[36,0],[[32,0],"updateCaption"],null],"Type caption for embed (optional)"]],null],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n"]],"parameters":[]},{"statements":[[6,[37,2],[[32,0,["convertUrl","isRunning"]]],null,[["default","else"],[{"statements":[[2," "],[10,"div"],[14,0,"miw-100 pa2 ba br2 b--lightgrey-d1 flex items-center justify-center bg-whitegrey-l2 f6 lh-title h10"],[12],[2,"\\n  "],[10,"div"],[14,0,"ghost-spinner spinner-blue"],[12],[13],[2," \\n "],[13],[2,"\\n"]],"parameters":[]},{"statements":[[6,[37,2],[[32,0,["isUnauthorized"]]],null,[["default","else"],[{"statements":[[2," "],[10,"div"],[14,0,"miw-100 flex flex-row pa2 pl3 ba br2 b--red-l3 red bg-error-red f7 fw4 lh-title h10 items-center"],[12],[2,"\\n "],[10,"span"],[14,0,"mr3"],[12],[2,"The owner of this URL has disabled embedding."],[13],[2,"\\n "],[11,"button"],[24,0,"red-d2 mr3 fw6 hover-red"],[24,4,"button"],[4,[38,0],[[32,0],"retry"],null],[12],[10,"span"],[14,0,"underline"],[12],[2,"Retry"],[13],[13],[2,"\\n "],[11,"button"],[24,0,"red-d2 mr-auto fw6 underline hover-red"],[24,4,"button"],[4,[38,0],[[32,0],"insertAsLink"],null],[12],[10,"span"],[14,0,"underline"],[12],[2,"Paste URL as link"],[13],[13],[2,"\\n "],[11,"button"],[24,0,"nudge-right--2"],[24,4,"button"],[4,[38,0],[[32,0],[32,0,["deleteCard"]]],null],[12],[2,"\\n "],[1,[30,[36,1],["close"],[["class"],["w3 stroke-red-l3"]]]],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]},{"statements":[[6,[37,2],[[32,0,["hasError"]]],null,[["default","else"],[{"statements":[[2," "],[10,"div"],[14,0,"miw-100 flex flex-row pa2 pl3 ba br2 b--red-l3 red bg-error-red f7 fw4 lh-title h10 items-center"],[12],[2,"\\n "],[10,"span"],[14,0,"mr3"],[12],[2,"There was an error when parsing the URL."],[13],[2,"\\n "],[11,"button"],[24,0,"red-d2 mr3 fw6 hover-red"],[24,4,"button"],[4,[38,0],[[32,0],"retry"],null],[12],[10,"span"],[14,0,"underline"],[12],[2,"Retry"],[13],[13],[2,"\\n "],[11,"button"],[24,0,"red-d2 mr-auto fw6 underline hover-red"],[24,4,"button"],[4,[38,0],[[32,0],"insertAsLink"],null],[12],[10,"span"],[14,0,"underline"],[12],[2,"Paste URL as link"],[13],[13],[2,"\\n "],[11,"button"],[24,0,"nudge-right--2"],[24,4,"button"],[4,[38,0],[[32,0],[32,0,["deleteCard"]]],null],[12],[2,"\\n "],[1,[30,[36,1],["close"],[["class"],["w3 stroke-red-l3"]]]],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[10,"input"],[15,2,[32,0,["payload","url"]]],[14,3,"url"],[14,"placeholder","Paste URL to add embedded content..."],[14,0,"miw-100 pa2 ba br2 b--lightgrey-d2 f7 form-text lh-title tracked-2 h10 nl2 nr2"],[15,"oninput",[30,[36,0],[[32,0],"updateUrl"],null]],[15,"onkeydown",[30,[36,0],[[32,0],"urlKeydown"],null]],[14,4,"text"],[12],[13],[2,"\\n "]],"parameters":[]}]]]],"parameters":[]}]]]],"parameters":[]}]]]],"parameters":[]}]]]],"parameters":[1]}]]],[2,"\\n"]],"hasEval":false,"upvars":["action","svg-jar","if","eq","clean-basic-html","or"]}',moduleName:"koenig-editor/components/koenig-card-embed.hbs"}),{countWords:O}=r.utils
12424
+ let C=(o=Ember.inject.service,a=Ember.inject.service,s=Ember.computed("payload.html"),l=Ember.computed("payload.{html,caption}"),u=Ember._action,c=Ember._action,d=Ember._action,h=Ember._action,p=Ember._action,f=Ember._action,m=Ember._action,g=(0,i.task)((function*(e){if(Ember.isBlank(e))this.deleteCard()
12425
12425
  else try{let t=this.ghostPaths.url.api("oembed"),r={url:e}
12426
12426
  this.payload.isDirectUrl||(r.type="embed")
12427
12427
  let n=yield this.ajax.request(t,{data:r})
12428
12428
  if("bookmark"===n.type)return void this.send("insertAsBookmark",n)
12429
12429
  if(!n.html&&"nft"!==n.type)throw"No HTML returned"
12430
12430
  Ember.set(this.payload,"linkOnError",void 0),Ember.set(this.payload,"isDirectUrl",void 0),Ember.set(this.payload,"html",n.html),delete n.html,Ember.set(this.payload,"type",n.type),delete n.type,Ember.set(this.payload,"metadata",n),this.saveCard(this.payload,!1),Ember.run.schedule("afterRender",this,this._populateIframe)}catch(t){if(this.payload.linkOnError)return void this.send("insertAsLink",{linkOnError:!0})
12431
- this.set("hasError",!0)}})).drop(),g=class extends Ember.Component{constructor(){super(...arguments),_(this,"ajax",v,this),_(this,"ghostPaths",b,this),k(this,"payload",null),k(this,"isSelected",!1),k(this,"isEditing",!1),k(this,"hasError",!1),_(this,"convertUrl",y,this)}selectCard(){}deselectCard(){}editCard(){}saveCard(){}deleteCard(){}moveCursorToNextSection(){}moveCursorToPrevSection(){}addParagraphAfterCard(){}registerComponent(){}get isEmpty(){return Ember.isBlank(this.payload.html)&&"nft"!==this.payload.type}get counts(){return{imageCount:this.payload.html?1:0,wordCount:x(this.payload.caption)}}init(){super.init(...arguments),this.payload.url&&!this.payload.html&&this.convertUrl.perform(this.payload.url),this.registerComponent(this)}didInsertElement(){super.didInsertElement(...arguments),this._populateIframe(),this._focusInput()}willDestroyElement(){super.willDestroyElement(...arguments),Ember.run.cancel(this._resizeDebounce),this._iframeMutationObserver&&this._iframeMutationObserver.disconnect(),window.removeEventListener("resize",this._windowResizeHandler)}onDeselect(){!this.payload.url||this.payload.html||this.hasError?!this.isEmpty||this.convertUrl.isRunning||this.hasError||this.deleteCard(t.NO_CURSOR_MOVEMENT):this.convertUrl.perform(this.payload.url)}updateUrl(e){let t=e.target.value
12432
- Ember.set(this.payload,"url",t)}urlKeydown(e){"Enter"===e.key&&(e.preventDefault(),this.convertUrl.perform(this.payload.url)),"Escape"===e.key&&(e.target.blur(),this.deleteCard())}updateCaption(e){Ember.set(this.payload,"caption",e),this.saveCard(this.payload,!1)}retry(){this.set("hasError",!1)}insertAsLink(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{linkOnError:!1},{range:t}=this.editor
12431
+ this.set("hasError",!0),(0,n.isUnauthorizedError)(t)&&this.set("isUnauthorized",!0)}})).drop(),v=class extends Ember.Component{constructor(){super(...arguments),k(this,"ajax",b,this),k(this,"ghostPaths",y,this),E(this,"payload",null),E(this,"isSelected",!1),E(this,"isEditing",!1),E(this,"hasError",!1),E(this,"isUnauthorized",!1),k(this,"convertUrl",_,this)}selectCard(){}deselectCard(){}editCard(){}saveCard(){}deleteCard(){}moveCursorToNextSection(){}moveCursorToPrevSection(){}addParagraphAfterCard(){}registerComponent(){}get isEmpty(){return Ember.isBlank(this.payload.html)&&"nft"!==this.payload.type}get counts(){return{imageCount:this.payload.html?1:0,wordCount:O(this.payload.caption)}}init(){super.init(...arguments),this.payload.url&&!this.payload.html&&this.convertUrl.perform(this.payload.url),this.registerComponent(this)}didInsertElement(){super.didInsertElement(...arguments),this._populateIframe(),this._focusInput()}willDestroyElement(){super.willDestroyElement(...arguments),Ember.run.cancel(this._resizeDebounce),this._iframeMutationObserver&&this._iframeMutationObserver.disconnect(),window.removeEventListener("resize",this._windowResizeHandler)}onDeselect(){!this.payload.url||this.payload.html||this.hasError?!this.isEmpty||this.convertUrl.isRunning||this.hasError||this.deleteCard(t.NO_CURSOR_MOVEMENT):this.convertUrl.perform(this.payload.url)}updateUrl(e){let t=e.target.value
12432
+ Ember.set(this.payload,"url",t)}urlKeydown(e){"Enter"===e.key&&(e.preventDefault(),this.convertUrl.perform(this.payload.url)),"Escape"===e.key&&(e.target.blur(),this.deleteCard())}updateCaption(e){Ember.set(this.payload,"caption",e),this.saveCard(this.payload,!1)}retry(){this.set("hasError",!1),this.set("isUnauthorized",!1)}insertAsLink(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{linkOnError:!1},{range:t}=this.editor
12433
12433
  this.editor.run((r=>{let{builder:n}=r,i=this.env.postModel,o=n.createMarkupSection("p"),a=n.createMarkup("a",{href:this.payload.url})
12434
12434
  r.replaceSection(i,o),r.insertTextWithMarkup(o.toRange().head,this.payload.url,[a]),t.headSection!==i&&r.setRange(t),e.linkOnError&&r.cancelSnapshot()}))}insertAsBookmark(e){let{range:t}=this.editor
12435
12435
  this.editor.run((r=>{let n=this.env.postModel,i=r.builder.createCardSection("bookmark",e)
@@ -12445,8 +12445,8 @@ if("IFRAME"===t.tagName){if(-1===t.getAttribute("width").indexOf("%")){const r=p
12445
12445
  if(r&&n){const i=r/n,o=e.offsetWidth/i
12446
12446
  return t.style.height=`${o}px`,void(e.style.height=`${o}px`)}}if(-1===t.getAttribute("height").indexOf("%")){const r=parseInt(t.getAttribute("height"))
12447
12447
  return void(e.style.height=`${r}px`)}}const r=e.contentDocument.scrollingElement.scrollHeight
12448
- e.style.height=`${r}px`}_setupWindowResizeHandler(e){window.removeEventListener("resize",this._windowResizeHandler),this._windowResizeHandler=Ember.run.bind(this,this._resizeIframe,e),window.addEventListener("resize",this._windowResizeHandler,{passive:!0})}},v=E(g.prototype,"ajax",[i],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),b=E(g.prototype,"ghostPaths",[o],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),E(g.prototype,"isEmpty",[a],Object.getOwnPropertyDescriptor(g.prototype,"isEmpty"),g.prototype),E(g.prototype,"counts",[s],Object.getOwnPropertyDescriptor(g.prototype,"counts"),g.prototype),E(g.prototype,"onDeselect",[l],Object.getOwnPropertyDescriptor(g.prototype,"onDeselect"),g.prototype),E(g.prototype,"updateUrl",[u],Object.getOwnPropertyDescriptor(g.prototype,"updateUrl"),g.prototype),E(g.prototype,"urlKeydown",[c],Object.getOwnPropertyDescriptor(g.prototype,"urlKeydown"),g.prototype),E(g.prototype,"updateCaption",[d],Object.getOwnPropertyDescriptor(g.prototype,"updateCaption"),g.prototype),E(g.prototype,"retry",[h],Object.getOwnPropertyDescriptor(g.prototype,"retry"),g.prototype),E(g.prototype,"insertAsLink",[p],Object.getOwnPropertyDescriptor(g.prototype,"insertAsLink"),g.prototype),E(g.prototype,"insertAsBookmark",[f],Object.getOwnPropertyDescriptor(g.prototype,"insertAsBookmark"),g.prototype),y=E(g.prototype,"convertUrl",[m],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),g)
12449
- e.default=O,Ember._setComponentTemplate(w,O)})),define("koenig-editor/components/koenig-card-embed/nft",["exports"],(function(e){"use strict"
12448
+ e.style.height=`${r}px`}_setupWindowResizeHandler(e){window.removeEventListener("resize",this._windowResizeHandler),this._windowResizeHandler=Ember.run.bind(this,this._resizeIframe,e),window.addEventListener("resize",this._windowResizeHandler,{passive:!0})}},b=w(v.prototype,"ajax",[o],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),y=w(v.prototype,"ghostPaths",[a],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),w(v.prototype,"isEmpty",[s],Object.getOwnPropertyDescriptor(v.prototype,"isEmpty"),v.prototype),w(v.prototype,"counts",[l],Object.getOwnPropertyDescriptor(v.prototype,"counts"),v.prototype),w(v.prototype,"onDeselect",[u],Object.getOwnPropertyDescriptor(v.prototype,"onDeselect"),v.prototype),w(v.prototype,"updateUrl",[c],Object.getOwnPropertyDescriptor(v.prototype,"updateUrl"),v.prototype),w(v.prototype,"urlKeydown",[d],Object.getOwnPropertyDescriptor(v.prototype,"urlKeydown"),v.prototype),w(v.prototype,"updateCaption",[h],Object.getOwnPropertyDescriptor(v.prototype,"updateCaption"),v.prototype),w(v.prototype,"retry",[p],Object.getOwnPropertyDescriptor(v.prototype,"retry"),v.prototype),w(v.prototype,"insertAsLink",[f],Object.getOwnPropertyDescriptor(v.prototype,"insertAsLink"),v.prototype),w(v.prototype,"insertAsBookmark",[m],Object.getOwnPropertyDescriptor(v.prototype,"insertAsBookmark"),v.prototype),_=w(v.prototype,"convertUrl",[g],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),v)
12449
+ e.default=C,Ember._setComponentTemplate(x,C)})),define("koenig-editor/components/koenig-card-embed/nft",["exports"],(function(e){"use strict"
12450
12450
  function t(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e
12451
12451
  var r=e[Symbol.toPrimitive]
12452
12452
  if(void 0!==r){var n=r.call(e,t||"default")
@@ -14082,4 +14082,4 @@ return void 0===n&&(n=(0,t.createStorage)(null,(()=>!1)),r.set(e,n)),n}dirtyStor
14082
14082
  r&&(0,t.setValue)(r,null)}constructor(e){o(this,"storages",new WeakMap),o(this,"vals",void 0),this.vals=new WeakSet(e)}has(e){return(0,t.getValue)(this.storageFor(e)),this.vals.has(e)}add(e){return this.vals.add(e),this.dirtyStorageFor(e),this}delete(e){return this.dirtyStorageFor(e),this.vals.delete(e)}get[i](){return this.vals[Symbol.toStringTag]}}e.TrackedWeakSet=s,Object.setPrototypeOf(s.prototype,WeakSet.prototype)})),define("tracked-built-ins/index",["exports","tracked-built-ins/-private/decorator","tracked-built-ins/-private/array","tracked-built-ins/-private/object","tracked-built-ins/-private/map","tracked-built-ins/-private/set"],(function(e,t,r,n,i,o){"use strict"
14083
14083
  Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"TrackedArray",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(e,"TrackedMap",{enumerable:!0,get:function(){return i.TrackedMap}}),Object.defineProperty(e,"TrackedObject",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(e,"TrackedSet",{enumerable:!0,get:function(){return o.TrackedSet}}),Object.defineProperty(e,"TrackedWeakMap",{enumerable:!0,get:function(){return i.TrackedWeakMap}}),Object.defineProperty(e,"TrackedWeakSet",{enumerable:!0,get:function(){return o.TrackedWeakSet}}),Object.defineProperty(e,"tracked",{enumerable:!0,get:function(){return t.default}})}))
14084
14084
 
14085
- //# sourceMappingURL=vendor-e3de790ee48087482d42c1686d5fefd9.map
14085
+ //# sourceMappingURL=vendor-39356907c39237f12c305e1d3ca46c85.map
@@ -8,7 +8,7 @@
8
8
  <title>Ghost Admin</title>
9
9
 
10
10
 
11
- <meta name="ghost-admin/config/environment" content="%7B%22modulePrefix%22%3A%22ghost-admin%22%2C%22environment%22%3A%22production%22%2C%22rootURL%22%3A%22%22%2C%22locationType%22%3A%22trailing-hash%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%2C%22Array%22%3Atrue%2C%22String%22%3Atrue%2C%22Function%22%3Afalse%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_JQUERY_INTEGRATION%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%225.46%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%7D%2C%22ember-websockets%22%3A%7B%22socketIO%22%3Atrue%7D%2C%22%40sentry%2Fember%22%3A%7B%22disablePerformance%22%3Atrue%2C%22sentry%22%3A%7B%7D%7D%2C%22ember-cli-mirage%22%3A%7B%22usingProxy%22%3Afalse%2C%22useDefaultPassthroughs%22%3Atrue%7D%2C%22exportApplicationGlobal%22%3Afalse%2C%22ember-load%22%3A%7B%22loadingIndicatorClass%22%3A%22ember-load-indicator%22%7D%7D" />
11
+ <meta name="ghost-admin/config/environment" content="%7B%22modulePrefix%22%3A%22ghost-admin%22%2C%22environment%22%3A%22production%22%2C%22rootURL%22%3A%22%22%2C%22locationType%22%3A%22trailing-hash%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%2C%22Array%22%3Atrue%2C%22String%22%3Atrue%2C%22Function%22%3Afalse%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_JQUERY_INTEGRATION%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%225.47%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%7D%2C%22ember-websockets%22%3A%7B%22socketIO%22%3Atrue%7D%2C%22%40sentry%2Fember%22%3A%7B%22disablePerformance%22%3Atrue%2C%22sentry%22%3A%7B%7D%7D%2C%22ember-cli-mirage%22%3A%7B%22usingProxy%22%3Afalse%2C%22useDefaultPassthroughs%22%3Atrue%7D%2C%22exportApplicationGlobal%22%3Afalse%2C%22ember-load%22%3A%7B%22loadingIndicatorClass%22%3A%22ember-load-indicator%22%7D%7D" />
12
12
 
13
13
  <meta name="HandheldFriendly" content="True" />
14
14
  <meta name="MobileOptimized" content="320" />
@@ -37,7 +37,7 @@
37
37
  </style>
38
38
 
39
39
  <link integrity="" rel="stylesheet" href="assets/vendor-3e6947aa681f0fb82b193090e520dc73.css">
40
- <link integrity="" rel="stylesheet" href="assets/ghost-c3187d2bb18193c111d376a110c8c80d.css" title="light">
40
+ <link integrity="" rel="stylesheet" href="assets/ghost-a2e163a59a7ec0c8ceb97289113a9994.css" title="light">
41
41
 
42
42
 
43
43
  </head>
@@ -56,9 +56,9 @@
56
56
 
57
57
  <div id="ember-basic-dropdown-wormhole"></div>
58
58
 
59
- <script src="assets/vendor-e3de790ee48087482d42c1686d5fefd9.js"></script>
60
- <script src="assets/chunk.604.e25172fcbbcc8ddcbdec.js"></script>
61
- <script src="assets/chunk.143.0ab429a53bdda025f009.js"></script>
62
- <script src="assets/ghost-2e3d55ca4212a50f87aba88c26b55945.js"></script>
59
+ <script src="assets/vendor-39356907c39237f12c305e1d3ca46c85.js"></script>
60
+ <script src="assets/chunk.11.a4f9c30c0891933434bf.js"></script>
61
+ <script src="assets/chunk.143.70ebfe98c846ee93f854.js"></script>
62
+ <script src="assets/ghost-48e9d3e33a5bb943cd479b941dbfe62e.js"></script>
63
63
  </body>
64
64
  </html>
@@ -1 +1 @@
1
- /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;font-family:sans-serif}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.black{color:#15171a}.darkgrey{color:#394047}.midgrey{color:#7c8b9a}.lightgrey{color:#ced4d9}.blue{color:#14b8ff}.red{color:#f50b23}.orange{color:#ffb41f}.green{color:#30cf43}.darkgrey-hover:hover{color:#394047}.midgrey-hover:hover{color:#7c8b9a}.lightgrey-hover:hover{color:#ced4d9}.blue-hover:hover{color:#14b8ff}.red-hover:hover{color:#f50b23}.orange-hover:hover{color:#ffb41f}.green-hover:hover{color:#30cf43}*,:after,:before{box-sizing:border-box}html{-webkit-tap-highlight-color:rgba(0,0,0,0);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:62.5%;letter-spacing:.2px;line-height:1.65;overflow:hidden}body,html{height:100%;width:100%}body{color:#343f44;font-size:1.4rem;overflow:auto;overflow-x:hidden}.gh-view{-ms-flex-positive:1;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;flex-grow:1}h1,h2{color:#343f44;font-size:2.9rem;line-height:1.15em;margin:0 0 .3em;text-indent:-1px;text-rendering:optimizeLegibility}@media (max-width:500px){h1{font-size:2.4rem}}.gh-input{-webkit-appearance:none;border:1px solid #d6e3eb;border-radius:4px;color:#4b5b62;display:block;font-size:1.6rem;font-weight:300;height:40px;line-height:1em;padding:10px 12px;transition:border-color .15s linear;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;width:100%}.gh-input:focus{border-color:#b4cbda;outline:0}.gh-btn{fill:#829aa8;-webkit-font-smoothing:subpixel-antialiased;border:1px solid #d6e3eb;border-radius:5px;color:#829aa8;display:inline-block;outline:none;text-decoration:none!important;transition:all .2s ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.gh-btn span{border-radius:4px;display:block;font-size:1.3rem;font-weight:400;height:33px;letter-spacing:.2px;line-height:33px;padding:0 12px;text-align:center}.gh-btn:hover{border-color:#b4cbda}.gh-btn-hover-blue:hover{border-color:#3eb0ef;color:#3eb0ef}.gh-btn-blue{fill:#fff;background:linear-gradient(#3da1d6,#2288bf);border:0;box-shadow:0 1px 0 rgba(0,0,0,.12);color:#fff;padding:1px;text-shadow:0 -1px 0 rgba(0,0,0,.1);transition:none!important}.gh-btn-blue span{background:linear-gradient(#4ab6f0,#2fa5e4 60%,#2fa5e4 90%,#38a9e5);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.1)}.gh-btn-blue:active,.gh-btn-blue:focus{background:#1e78a9}.gh-btn-blue:active span,.gh-btn-blue:focus span{background:#29a0e0;box-shadow:none}.gh-btn-block{display:block;width:100%}.gh-input-icon{display:block;position:relative}.gh-input-icon svg{fill:color(var(--midgrey) l(15%));height:14px;left:10px;position:absolute;top:50%;transform:translateY(-7px);width:auto;z-index:2}.gh-input-icon input{padding-left:35px}.gh-app{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;height:100%;overflow:hidden}.gh-viewport{max-height:100%;overflow:hidden}.gh-main,.gh-viewport{-ms-flex-positive:1;display:-ms-flexbox;display:flex;flex-grow:1}.gh-main{background:#fff;overflow-y:auto;position:relative}.gh-flow{background:linear-gradient(315deg,#efefef,#fff);min-height:100%;overflow-y:auto}.gh-flow,.gh-flow-content-wrap{display:flex;flex-direction:column;flex-grow:1}.gh-flow-content-wrap{align-items:center;flex-shrink:0;justify-content:center;margin:0 24px;padding-bottom:8vh}.gh-flow-content-wrap .site-icon{border-radius:3px;height:70px;width:70px}.gh-flow-content{background:#fff;border-radius:3px;box-shadow:0 2.8px 2.2px rgba(0,0,0,.02),0 6.7px 5.3px rgba(0,0,0,.02),0 12.5px 10px rgba(0,0,0,.02),0 22.3px 17.9px rgba(0,0,0,.03),0 41.8px 33.4px rgba(0,0,0,.03),0 100px 80px rgba(0,0,0,.05);color:var(--darkgrey);display:flex;flex-direction:column;font-size:1.9rem;font-weight:300;line-height:1.5em;margin:4rem 0 6rem;max-width:520px;padding:40px;width:100%}.gh-flow-content.unsubscribe{align-items:center;justify-content:center;margin:4rem 0;max-width:560px;min-height:200px;text-align:center}@media (max-width:500px){.gh-flow-content{background:transparent;box-shadow:none;padding:0}}.gh-flow-content header{align-items:center;display:flex;flex-direction:column}.gh-flow-content h1{color:#15171a;font-size:4.1rem;font-weight:700;line-height:1.15em;margin-bottom:24px}.gh-flow-content.unsubscribe h1{font-size:3.2rem}@media (max-width:600px){.gh-flow-content h1,.gh-flow-content.unsubscribe h1{font-size:6vw}}.gh-flow-content.unsubscribe p{color:#394047;font-size:1.8rem;margin:0 0 .4em}@media (max-width:500px){.gh-flow-content.unsubscribe p{font-size:1.6rem;line-height:1.5}}.gh-flow-content .gh-btn{display:block;margin:20px auto 0;max-width:400px}.gh-flow-content .form-group{margin-bottom:2.5rem;position:relative}.gh-flow-content .form-group.error .gh-input{border-color:#f50b23;box-shadow:0 0 0 3px rgba(239,24,24,.15)}.gh-flow-content .main-error{color:#7c8b9a;font-size:1.35rem;font-weight:400;margin:0;position:absolute;right:0;text-align:center;user-select:text}.gh-flow-em{font-weight:500}.unsubscribe-footer{font-size:1.5rem;text-align:center}@media (max-width:500px){.unsubscribe-footer{font-size:1.4rem;line-height:1.4em;padding:0 24px}}.unsubscribe-footer p{color:#7c8b9a;margin:0 0 .4rem}.unsubscribe-footer a{color:#15171a;text-decoration:none}.unsubscribe-footer a:hover{text-decoration:underline}.gh-signin{margin-bottom:1.5rem}.gh-signin .gh-input,.gh-signin .gh-input:-webkit-autofill:first-line{border-radius:8px;font-size:1.8rem;height:54px;padding:12px 16px}.gh-signin .gh-input::placeholder{color:#abb4be;font-weight:400;opacity:1}.gh-signin .gh-input::-webkit-input-placeholder{color:#abb4be;font-weight:400}.gh-signin .gh-input:-ms-input-placeholder{color:#abb4be;font-weight:400}.gh-signin .gh-input::-moz-placeholder{color:#abb4be;font-weight:400;opacity:1}.gh-signin .gh-input:focus{border-color:#30cf43;box-shadow:0 0 0 3px rgba(26,170,96,.15)}.gh-signin .gh-btn{-webkit-font-smoothing:subpixel-antialiased;background:#15171a;border-radius:8px;font-weight:300;height:54px;line-height:54px;margin:0;margin-top:32px;max-width:unset;transition:all .4s ease;width:100%}.gh-signin .gh-btn span{color:#fff;font-size:1.8rem}.error-content{flex-grow:1;justify-content:center;padding:8vw;user-select:text}.error-content,.error-details{align-items:center;display:flex}.error-details{margin-bottom:4rem}.error-ghost{height:115px;margin:15px}@media (max-width:630px){.error-ghost{display:none}}.error-code{color:#c5d2d9;font-size:10vw;font-weight:600;letter-spacing:-.4vw;line-height:.9em;margin:0}.error-description{border:none;color:#54666d;font-size:2.3rem;font-weight:300;line-height:1.3em;margin:0;padding:0}.error-message{align-items:center;display:flex;flex-direction:column;margin:15px}.error-message a{font-size:1.4rem;line-height:1;margin:8px 0}.error-link{background-color:transparent;color:#5ba4e5;text-decoration:none;transition:background .3s,color .3s}.error-stack{background-color:hsla(0,0%,100%,.3);margin:1rem auto;max-width:800px;padding:2rem}.error-stack-list{list-style-type:none;margin:0;padding:0}.error-stack-list li{display:block}.error-stack-list li:before{color:#bbb;content:"\21AA";display:inline-block;font-size:1.2rem;margin-right:.5rem}.error-stack-function{font-weight:700}
1
+ /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.black{color:#15171a}.darkgrey{color:#394047}.midgrey{color:#7c8b9a}.lightgrey{color:#ced4d9}.blue{color:#14b8ff}.red{color:#f50b23}.orange{color:#ffb41f}.green{color:#30cf43}.darkgrey-hover:hover{color:#394047}.midgrey-hover:hover{color:#7c8b9a}.lightgrey-hover:hover{color:#ced4d9}.blue-hover:hover{color:#14b8ff}.red-hover:hover{color:#f50b23}.orange-hover:hover{color:#ffb41f}.green-hover:hover{color:#30cf43}*,:after,:before{box-sizing:border-box}html{overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:62.5%;line-height:1.65;letter-spacing:.2px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body,html{width:100%;height:100%}body{overflow:auto;overflow-x:hidden;color:#343f44;font-size:1.4rem}.gh-view{-ms-flex-positive:1;flex-grow:1;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}h1,h2{margin:0 0 .3em;color:#343f44;line-height:1.15em;text-rendering:optimizeLegibility;text-indent:-1px;font-size:2.9rem}@media (max-width:500px){h1{font-size:2.4rem}}.gh-input{display:block;padding:10px 12px;width:100%;height:40px;border:1px solid #d6e3eb;border-radius:4px;color:#4b5b62;font-size:1.6rem;line-height:1em;font-weight:300;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;transition:border-color .15s linear;-webkit-appearance:none}.gh-input:focus{outline:0;border-color:#b4cbda}.gh-btn{display:inline-block;outline:none;border:1px solid #d6e3eb;color:#829aa8;text-decoration:none!important;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;fill:#829aa8;border-radius:5px;transition:all .2s ease;-webkit-font-smoothing:subpixel-antialiased}.gh-btn span{display:block;padding:0 12px;height:33px;font-size:1.3rem;line-height:33px;font-weight:400;text-align:center;letter-spacing:.2px;border-radius:4px}.gh-btn:hover{border-color:#b4cbda}.gh-btn-hover-blue:hover{border-color:#3eb0ef;color:#3eb0ef}.gh-btn-blue{padding:1px;border:0;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.1);fill:#fff;background:linear-gradient(#3da1d6,#2288bf);box-shadow:0 1px 0 rgba(0,0,0,.12);transition:none!important}.gh-btn-blue span{background:linear-gradient(#4ab6f0,#2fa5e4 60%,#2fa5e4 90%,#38a9e5);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.1)}.gh-btn-blue:active,.gh-btn-blue:focus{background:#1e78a9}.gh-btn-blue:active span,.gh-btn-blue:focus span{background:#29a0e0;box-shadow:none}.gh-btn-block{display:block;width:100%}.gh-input-icon{position:relative;display:block}.gh-input-icon svg{position:absolute;top:50%;left:10px;z-index:2;height:14px;width:auto;fill:color(var(--midgrey) l(15%));transform:translateY(-7px)}.gh-input-icon input{padding-left:35px}.gh-app{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;overflow:hidden;height:100%}.gh-viewport{overflow:hidden;max-height:100%}.gh-main,.gh-viewport{-ms-flex-positive:1;flex-grow:1;display:-ms-flexbox;display:flex}.gh-main{position:relative;background:#fff;overflow-y:auto}.gh-flow{overflow-y:auto;min-height:100%;background:linear-gradient(315deg,#efefef,#fff)}.gh-flow,.gh-flow-content-wrap{flex-grow:1;display:flex;flex-direction:column}.gh-flow-content-wrap{flex-shrink:0;justify-content:center;align-items:center;margin:0 24px;padding-bottom:8vh}.gh-flow-content-wrap .site-icon{width:70px;height:70px;border-radius:3px}.gh-flow-content{display:flex;flex-direction:column;max-width:520px;width:100%;margin:4rem 0 6rem;padding:40px;background:#fff;color:var(--darkgrey);font-size:1.9rem;line-height:1.5em;font-weight:300;border-radius:3px;box-shadow:0 2.8px 2.2px rgba(0,0,0,.02),0 6.7px 5.3px rgba(0,0,0,.02),0 12.5px 10px rgba(0,0,0,.02),0 22.3px 17.9px rgba(0,0,0,.03),0 41.8px 33.4px rgba(0,0,0,.03),0 100px 80px rgba(0,0,0,.05)}.gh-flow-content.unsubscribe{align-items:center;justify-content:center;max-width:560px;min-height:200px;margin:4rem 0;text-align:center}@media (max-width:500px){.gh-flow-content{padding:0;background:transparent;box-shadow:none}}.gh-flow-content header{display:flex;flex-direction:column;align-items:center}.gh-flow-content h1{margin-bottom:24px;color:#15171a;font-size:4.1rem;font-weight:700;line-height:1.15em}.gh-flow-content.unsubscribe h1{font-size:3.2rem}@media (max-width:600px){.gh-flow-content.unsubscribe h1,.gh-flow-content h1{font-size:6vw}}.gh-flow-content.unsubscribe p{margin:0 0 .4em;color:#394047;font-size:1.8rem}@media (max-width:500px){.gh-flow-content.unsubscribe p{font-size:1.6rem;line-height:1.5}}.gh-flow-content .gh-btn{display:block;margin:20px auto 0;max-width:400px}.gh-flow-content .form-group{position:relative;margin-bottom:2.5rem}.gh-flow-content .form-group.error .gh-input{border-color:#f50b23;box-shadow:0 0 0 3px rgba(239,24,24,.15)}.gh-flow-content .main-error{position:absolute;right:0;margin:0;color:#7c8b9a;font-size:1.35rem;font-weight:400;text-align:center;user-select:text}.gh-flow-em{font-weight:500}.unsubscribe-footer{text-align:center;font-size:1.5rem}@media (max-width:500px){.unsubscribe-footer{padding:0 24px;font-size:1.4rem;line-height:1.4em}}.unsubscribe-footer p{color:#7c8b9a;margin:0 0 .4rem}.unsubscribe-footer a{color:#15171a;text-decoration:none}.unsubscribe-footer a:hover{text-decoration:underline}.gh-signin{margin-bottom:1.5rem}.gh-signin .gh-input,.gh-signin .gh-input:-webkit-autofill:first-line{height:54px;padding:12px 16px;font-size:1.8rem;border-radius:8px}.gh-signin .gh-input::placeholder{color:#abb4be;font-weight:400;opacity:1}.gh-signin .gh-input::-webkit-input-placeholder{color:#abb4be;font-weight:400}.gh-signin .gh-input:-ms-input-placeholder{color:#abb4be;font-weight:400}.gh-signin .gh-input::-moz-placeholder{color:#abb4be;font-weight:400;opacity:1}.gh-signin .gh-input:focus{border-color:#30cf43;box-shadow:0 0 0 3px rgba(26,170,96,.15)}.gh-signin .gh-btn{margin:0;width:100%;height:54px;max-width:unset;margin-top:32px;background:#15171a;font-weight:300;line-height:54px;border-radius:8px;transition:all .4s ease;-webkit-font-smoothing:subpixel-antialiased}.gh-signin .gh-btn span{color:#fff;font-size:1.8rem}.error-content{flex-grow:1;justify-content:center;user-select:text;padding:8vw}.error-content,.error-details{display:flex;align-items:center}.error-details{margin-bottom:4rem}.error-ghost{margin:15px;height:115px}@media (max-width:630px){.error-ghost{display:none}}.error-code{margin:0;color:#c5d2d9;font-size:10vw;font-weight:600;line-height:.9em;letter-spacing:-.4vw}.error-description{margin:0;padding:0;border:none;color:#54666d;font-size:2.3rem;font-weight:300;line-height:1.3em}.error-message{display:flex;flex-direction:column;margin:15px;align-items:center}.error-message a{font-size:1.4rem;line-height:1;margin:8px 0}.error-link{background-color:transparent;color:#5ba4e5;transition:background .3s,color .3s;text-decoration:none}.error-stack{margin:1rem auto;padding:2rem;max-width:800px;background-color:hsla(0,0%,100%,.3)}.error-stack-list{margin:0;padding:0;list-style-type:none}.error-stack-list li{display:block}.error-stack-list li:before{content:"\21AA";display:inline-block;margin-right:.5rem;color:#bbb;font-size:1.2rem}.error-stack-function{font-weight:700}
@@ -1,4 +1,4 @@
1
- const AdminAuthAssetsService = require('./service');
1
+ const AdminAuthAssetsService = require('./AdminAuthAssetsService');
2
2
  let adminAuthAssets = new AdminAuthAssetsService();
3
3
 
4
4
  module.exports = adminAuthAssets;
@@ -32,8 +32,8 @@ class CardAssetService {
32
32
  // Include rules take precedence over exclude rules.
33
33
  if (_.has(this.config, 'include')) {
34
34
  return {
35
- 'cards.min.css': `css/(${this.config.include.join('|')}).css`,
36
- 'cards.min.js': `js/(${this.config.include.join('|')}).js`
35
+ 'cards.min.css': `css/@(${this.config.include.join('|')}).css`,
36
+ 'cards.min.js': `js/@(${this.config.include.join('|')}).js`
37
37
  };
38
38
  }
39
39
 
@@ -1,4 +1,4 @@
1
- const CardAssetService = require('./service');
1
+ const CardAssetService = require('./CardAssetService');
2
2
  let cardAssetService = new CardAssetService();
3
3
 
4
4
  module.exports = cardAssetService;
@@ -1,4 +1,4 @@
1
- const CommentCountsAssetsService = require('./service');
1
+ const CommentCountsAssetsService = require('./CommentCountsAssetsService');
2
2
  let commentCountsAssets = new CommentCountsAssetsService();
3
3
 
4
4
  module.exports = commentCountsAssets;
@@ -1,4 +1,4 @@
1
- const MemberAttributionAssetsService = require('./service');
1
+ const MemberAttributionAssetsService = require('./MemberAttributionAssetsService');
2
2
  const memberAttributionAssets = new MemberAttributionAssetsService();
3
3
 
4
4
  module.exports = memberAttributionAssets;
@@ -1,5 +1,5 @@
1
1
  const registry = require('./registry');
2
- const RouterManager = require('./router-manager');
2
+ const RouterManager = require('./RouterManager');
3
3
  const routerManager = new RouterManager({registry});
4
4
 
5
5
  module.exports = {
@@ -1,5 +1,5 @@
1
1
  const _ = require('lodash');
2
- const BaseMapGenerator = require('./base-generator');
2
+ const BaseMapGenerator = require('./BaseSiteMapGenerator');
3
3
 
4
4
  class PageMapGenerator extends BaseMapGenerator {
5
5
  constructor(opts) {
@@ -1,5 +1,5 @@
1
1
  const _ = require('lodash');
2
- const BaseMapGenerator = require('./base-generator');
2
+ const BaseMapGenerator = require('./BaseSiteMapGenerator');
3
3
 
4
4
  class PostMapGenerator extends BaseMapGenerator {
5
5
  constructor(opts) {
@@ -1,10 +1,10 @@
1
1
  const DomainEvents = require('@tryghost/domain-events');
2
2
  const {URLResourceUpdatedEvent} = require('@tryghost/dynamic-routing-events');
3
- const IndexMapGenerator = require('./index-generator');
4
- const PagesMapGenerator = require('./page-generator');
5
- const PostsMapGenerator = require('./post-generator');
6
- const UsersMapGenerator = require('./user-generator');
7
- const TagsMapGenerator = require('./tag-generator');
3
+ const IndexMapGenerator = require('./SiteMapIndexGenerator');
4
+ const PagesMapGenerator = require('./PageMapGenerator');
5
+ const PostsMapGenerator = require('./PostMapGenerator');
6
+ const UsersMapGenerator = require('./UserMapGenerator');
7
+ const TagsMapGenerator = require('./TagsMapGenerator');
8
8
 
9
9
  // This uses events from the routing service and the URL service
10
10
  const events = require('../../../server/lib/common/events');
@@ -1,5 +1,5 @@
1
1
  const _ = require('lodash');
2
- const BaseMapGenerator = require('./base-generator');
2
+ const BaseMapGenerator = require('./BaseSiteMapGenerator');
3
3
 
4
4
  class TagsMapGenerator extends BaseMapGenerator {
5
5
  constructor(opts) {
@@ -1,6 +1,6 @@
1
1
  const _ = require('lodash');
2
2
  const validator = require('@tryghost/validator');
3
- const BaseMapGenerator = require('./base-generator');
3
+ const BaseMapGenerator = require('./BaseSiteMapGenerator');
4
4
 
5
5
  class UserMapGenerator extends BaseMapGenerator {
6
6
  constructor(opts) {
@@ -1,5 +1,5 @@
1
1
  const config = require('../../../shared/config');
2
- const Manager = require('./manager');
2
+ const Manager = require('./SiteMapManager');
3
3
  const manager = new Manager();
4
4
 
5
5
  // Responsible for handling requests for sitemap files
@@ -1,6 +1,6 @@
1
1
  const errors = require('@tryghost/errors');
2
2
  const logging = require('@tryghost/logging');
3
- const I18n = require('./i18n');
3
+ const I18n = require('./I18n');
4
4
 
5
5
  class ThemeI18n extends I18n {
6
6
  /**
@@ -1,6 +1,6 @@
1
1
  const config = require('../../../../shared/config');
2
2
 
3
- const ThemeI18n = require('./theme-i18n');
3
+ const ThemeI18n = require('./ThemeI18n');
4
4
 
5
5
  module.exports = new ThemeI18n({basePath: config.getContentPath('themes')});
6
6
  module.exports.ThemeI18n = ThemeI18n;
@@ -3,7 +3,7 @@ const routing = require('../services/routing');
3
3
 
4
4
  /**
5
5
  *
6
- * @param {import('../services/routing/router-manager').RouterConfig} routerConfig
6
+ * @param {import('../services/routing/RouterManager').RouterConfig} routerConfig
7
7
  * @returns {import('express').Router}
8
8
  */
9
9
  module.exports = function siteRoutes(routerConfig) {
@@ -33,7 +33,7 @@ function SiteRouter(req, res, next) {
33
33
 
34
34
  /**
35
35
  *
36
- * @param {import('../services/routing/router-manager').RouterConfig} routerConfig
36
+ * @param {import('../services/routing/RouterManager').RouterConfig} routerConfig
37
37
  * @returns {import('express').Application}
38
38
  */
39
39
  module.exports = function setupSiteApp(routerConfig) {
@@ -172,7 +172,7 @@ module.exports = function setupSiteApp(routerConfig) {
172
172
 
173
173
  /**
174
174
  * see https://github.com/expressjs/express/issues/2596
175
- * @param {import('../services/routing/router-manager').RouterConfig} routerConfig
175
+ * @param {import('../services/routing/RouterManager').RouterConfig} routerConfig
176
176
  */
177
177
  module.exports.reload = (routerConfig) => {
178
178
  debug('reloading');
@@ -1,3 +1,4 @@
1
+ /* eslint-disable ghost/filenames/match-regex */
1
2
  const RedisCache = require('@tryghost/adapter-cache-redis');
2
3
 
3
4
  module.exports = RedisCache;
@@ -1,7 +1,7 @@
1
1
  const Promise = require('bluebird');
2
2
  const events = require('../../../lib/common/events');
3
3
  const localUtils = require('../utils');
4
- const PostScheduler = require('./post-scheduler');
4
+ const PostScheduler = require('./PostScheduler');
5
5
  const getSchedulerIntegration = require('./scheduler-intergation');
6
6
 
7
7
  /**
@@ -1,7 +1,7 @@
1
1
  const util = require('util');
2
2
  const moment = require('moment');
3
3
  const debug = require('@tryghost/debug')('scheduling-default');
4
- const SchedulingBase = require('./SchedulingBase');
4
+ const SchedulingBase = require('./scheduling-base');
5
5
  const logging = require('@tryghost/logging');
6
6
  const errors = require('@tryghost/errors');
7
7
  const request = require('@tryghost/request');
@@ -1,4 +1,4 @@
1
- const Base = require('./Base');
1
+ const Base = require('./SSOBase');
2
2
 
3
3
  module.exports = class DefaultSSOAdapter extends Base {
4
4
  constructor() {
@@ -10,7 +10,7 @@ const messages = {
10
10
  cannotRead: 'Could not read media file: {file}'
11
11
  };
12
12
 
13
- class LocalMediaStore extends LocalStorageBase {
13
+ class LocalMediaStorage extends LocalStorageBase {
14
14
  constructor() {
15
15
  super({
16
16
  storagePath: config.getContentPath('media'),
@@ -21,4 +21,4 @@ class LocalMediaStore extends LocalStorageBase {
21
21
  }
22
22
  }
23
23
 
24
- module.exports = LocalMediaStore;
24
+ module.exports = LocalMediaStorage;
@@ -3,6 +3,7 @@ const api = require('./index');
3
3
  const config = require('../../../shared/config');
4
4
  const tpl = require('@tryghost/tpl');
5
5
  const errors = require('@tryghost/errors');
6
+ const logging = require('@tryghost/logging');
6
7
  const web = require('../../web');
7
8
  const models = require('../../models');
8
9
  const auth = require('../../services/auth');
@@ -10,7 +11,7 @@ const invitations = require('../../services/invitations');
10
11
  const dbBackup = require('../../data/db/backup');
11
12
  const apiMail = require('./index').mail;
12
13
  const apiSettings = require('./index').settings;
13
- const UsersService = require('../../services/users');
14
+ const UsersService = require('../../services/Users');
14
15
  const userService = new UsersService({dbBackup, models, auth, apiMail, apiSettings});
15
16
  const {deleteAllSessions} = require('../../services/auth/session');
16
17
 
@@ -70,8 +71,11 @@ module.exports = {
70
71
  return auth.setup.doSettings(data, api.settings);
71
72
  })
72
73
  .then((user) => {
73
- return auth.setup.sendWelcomeEmail(user.get('email'), api.mail)
74
- .then(() => user);
74
+ auth.setup.sendWelcomeEmail(user.get('email'), api.mail)
75
+ .catch((err) => {
76
+ logging.error(err);
77
+ });
78
+ return user;
75
79
  });
76
80
  }
77
81
  },
@@ -109,8 +109,8 @@ module.exports = {
109
109
  invites: frame.data.invites,
110
110
  options: frame.options,
111
111
  user: {
112
- name: frame.user.get('name'),
113
- email: frame.user.get('email')
112
+ name: frame.user?.get('name'),
113
+ email: frame.user?.get('email')
114
114
  }
115
115
  });
116
116
  }
@@ -7,7 +7,7 @@ const dbBackup = require('../../data/db/backup');
7
7
  const auth = require('../../services/auth');
8
8
  const apiMail = require('./index').mail;
9
9
  const apiSettings = require('./index').settings;
10
- const UsersService = require('../../services/users');
10
+ const UsersService = require('../../services/Users');
11
11
  const userService = new UsersService({dbBackup, models, auth, apiMail, apiSettings});
12
12
  const ALLOWED_INCLUDES = ['count.posts', 'permissions', 'roles', 'roles.permissions'];
13
13
  const UNSAFE_ATTRS = ['status', 'roles'];
@@ -2,7 +2,6 @@
2
2
  const debug = require('@tryghost/debug')('api:endpoints:utils:serializers:output:members');
3
3
  const {unparse} = require('@tryghost/members-csv');
4
4
  const mappers = require('./mappers');
5
- const labs = require('../../../../../../shared/labs');
6
5
 
7
6
  module.exports = {
8
7
  browse: createSerializer('browse', paginatedMembers),
@@ -172,9 +171,7 @@ function serializeMember(member, options) {
172
171
  delete subscription.price.product;
173
172
  }
174
173
 
175
- if (labs.isSet('suppressionList')) {
176
- serialized.email_suppression = json.email_suppression;
177
- }
174
+ serialized.email_suppression = json.email_suppression;
178
175
 
179
176
  if (json.newsletters) {
180
177
  serialized.newsletters = json.newsletters
@@ -1,3 +1,4 @@
1
+ /* eslint-disable ghost/filenames/match-regex */
1
2
  const Promise = require('bluebird');
2
3
  const validator = require('@tryghost/validator');
3
4
  const debug = require('@tryghost/debug')('api:endpoints:utils:validators:input:passwordreset');
@@ -1,6 +1,6 @@
1
1
  const _ = require('lodash');
2
2
  const debug = require('@tryghost/debug')('importer:roles');
3
- const BaseImporter = require('./base');
3
+ const BaseImporter = require('./Base');
4
4
  const models = require('../../../../models');
5
5
  const {activate} = require('../../../../services/themes/activate');
6
6
  const {sequence} = require('@tryghost/promise');
@@ -1,6 +1,6 @@
1
1
  const debug = require('@tryghost/debug')('importer:newsletters');
2
2
  const _ = require('lodash');
3
- const BaseImporter = require('./base');
3
+ const BaseImporter = require('./Base');
4
4
  const models = require('../../../../models');
5
5
 
6
6
  const ignoredColumns = ['sender_email'];
@@ -1,7 +1,7 @@
1
1
  const debug = require('@tryghost/debug')('importer:posts');
2
2
  const _ = require('lodash');
3
3
  const uuid = require('uuid');
4
- const BaseImporter = require('./base');
4
+ const BaseImporter = require('./Base');
5
5
  const mobiledocLib = require('../../../../lib/mobiledoc');
6
6
  const validator = require('@tryghost/validator');
7
7
  const postsMetaSchema = require('../../../schema').tables.posts_meta;
@@ -1,5 +1,5 @@
1
1
  const _ = require('lodash');
2
- const BaseImporter = require('./base');
2
+ const BaseImporter = require('./Base');
3
3
  const models = require('../../../../models');
4
4
  const debug = require('@tryghost/debug')('importer:products');
5
5
 
@@ -1,5 +1,5 @@
1
1
  const debug = require('@tryghost/debug')('importer:revue-subscriber');
2
- const BaseImporter = require('./base');
2
+ const BaseImporter = require('./Base');
3
3
 
4
4
  const papaparse = require('papaparse');
5
5
  const path = require('path');
@@ -1,5 +1,5 @@
1
1
  const debug = require('@tryghost/debug')('importer:roles');
2
- const BaseImporter = require('./base');
2
+ const BaseImporter = require('./Base');
3
3
 
4
4
  class RolesImporter extends BaseImporter {
5
5
  constructor(allDataFromFile) {
@@ -1,7 +1,7 @@
1
1
  const debug = require('@tryghost/debug')('importer:settings');
2
2
  const ObjectId = require('bson-objectid').default;
3
3
  const _ = require('lodash');
4
- const BaseImporter = require('./base');
4
+ const BaseImporter = require('./Base');
5
5
  const models = require('../../../../models');
6
6
  const defaultSettings = require('../../../schema').defaultSettings;
7
7
  const keyGroupMapper = require('../../../../api/endpoints/utils/serializers/input/utils/settings-key-group-mapper');
@@ -1,6 +1,6 @@
1
1
  const _ = require('lodash');
2
2
  const debug = require('@tryghost/debug')('importer:stripeprices');
3
- const BaseImporter = require('./base');
3
+ const BaseImporter = require('./Base');
4
4
  const models = require('../../../../models');
5
5
 
6
6
  class StripePricesImporter extends BaseImporter {
@@ -1,6 +1,6 @@
1
1
  const _ = require('lodash');
2
2
  const debug = require('@tryghost/debug')('importer:stripeproducts');
3
- const BaseImporter = require('./base');
3
+ const BaseImporter = require('./Base');
4
4
  const models = require('../../../../models');
5
5
 
6
6
  class StripeProductsImporter extends BaseImporter {
@@ -1,6 +1,6 @@
1
1
  const debug = require('@tryghost/debug')('importer:tags');
2
2
  const _ = require('lodash');
3
- const BaseImporter = require('./base');
3
+ const BaseImporter = require('./Base');
4
4
  const models = require('../../../../models');
5
5
  const {sequence} = require('@tryghost/promise');
6
6
 
@@ -1,6 +1,6 @@
1
1
  const debug = require('@tryghost/debug')('importer:users');
2
2
  const _ = require('lodash');
3
- const BaseImporter = require('./base');
3
+ const BaseImporter = require('./Base');
4
4
  const models = require('../../../../models');
5
5
  const limitService = require('../../../../services/limits');
6
6