ghost 5.30.0 → 5.31.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 (126) hide show
  1. package/components/{tryghost-adapter-manager-5.30.0.tgz → tryghost-adapter-manager-5.31.0.tgz} +0 -0
  2. package/components/{tryghost-api-framework-5.30.0.tgz → tryghost-api-framework-5.31.0.tgz} +0 -0
  3. package/components/{tryghost-api-version-compatibility-service-5.30.0.tgz → tryghost-api-version-compatibility-service-5.31.0.tgz} +0 -0
  4. package/components/{tryghost-audience-feedback-5.30.0.tgz → tryghost-audience-feedback-5.31.0.tgz} +0 -0
  5. package/components/{tryghost-bootstrap-socket-5.30.0.tgz → tryghost-bootstrap-socket-5.31.0.tgz} +0 -0
  6. package/components/{tryghost-constants-5.30.0.tgz → tryghost-constants-5.31.0.tgz} +0 -0
  7. package/components/{tryghost-custom-theme-settings-service-5.30.0.tgz → tryghost-custom-theme-settings-service-5.31.0.tgz} +0 -0
  8. package/components/{tryghost-data-generator-5.30.0.tgz → tryghost-data-generator-5.31.0.tgz} +0 -0
  9. package/components/tryghost-domain-events-5.31.0.tgz +0 -0
  10. package/components/tryghost-email-analytics-provider-mailgun-5.31.0.tgz +0 -0
  11. package/components/{tryghost-email-analytics-service-5.30.0.tgz → tryghost-email-analytics-service-5.31.0.tgz} +0 -0
  12. package/components/{tryghost-email-content-generator-5.30.0.tgz → tryghost-email-content-generator-5.31.0.tgz} +0 -0
  13. package/components/{tryghost-email-events-5.30.0.tgz → tryghost-email-events-5.31.0.tgz} +0 -0
  14. package/components/tryghost-email-service-5.31.0.tgz +0 -0
  15. package/components/{tryghost-email-suppression-list-5.30.0.tgz → tryghost-email-suppression-list-5.31.0.tgz} +0 -0
  16. package/components/{tryghost-express-dynamic-redirects-5.30.0.tgz → tryghost-express-dynamic-redirects-5.31.0.tgz} +0 -0
  17. package/components/tryghost-extract-api-key-5.31.0.tgz +0 -0
  18. package/components/{tryghost-html-to-plaintext-5.30.0.tgz → tryghost-html-to-plaintext-5.31.0.tgz} +0 -0
  19. package/components/tryghost-i18n-5.31.0.tgz +0 -0
  20. package/components/tryghost-importer-revue-5.31.0.tgz +0 -0
  21. package/components/{tryghost-job-manager-5.30.0.tgz → tryghost-job-manager-5.31.0.tgz} +0 -0
  22. package/components/{tryghost-link-redirects-5.30.0.tgz → tryghost-link-redirects-5.31.0.tgz} +0 -0
  23. package/components/tryghost-link-replacer-5.31.0.tgz +0 -0
  24. package/components/{tryghost-link-tracking-5.30.0.tgz → tryghost-link-tracking-5.31.0.tgz} +0 -0
  25. package/components/{tryghost-magic-link-5.30.0.tgz → tryghost-magic-link-5.31.0.tgz} +0 -0
  26. package/components/{tryghost-mailgun-client-5.30.0.tgz → tryghost-mailgun-client-5.31.0.tgz} +0 -0
  27. package/components/tryghost-member-attribution-5.31.0.tgz +0 -0
  28. package/components/tryghost-member-events-5.31.0.tgz +0 -0
  29. package/components/{tryghost-members-api-5.30.0.tgz → tryghost-members-api-5.31.0.tgz} +0 -0
  30. package/components/{tryghost-members-csv-5.30.0.tgz → tryghost-members-csv-5.31.0.tgz} +0 -0
  31. package/components/{tryghost-members-events-service-5.30.0.tgz → tryghost-members-events-service-5.31.0.tgz} +0 -0
  32. package/components/{tryghost-members-importer-5.30.0.tgz → tryghost-members-importer-5.31.0.tgz} +0 -0
  33. package/components/tryghost-members-offers-5.31.0.tgz +0 -0
  34. package/components/tryghost-members-payments-5.31.0.tgz +0 -0
  35. package/components/{tryghost-members-ssr-5.30.0.tgz → tryghost-members-ssr-5.31.0.tgz} +0 -0
  36. package/components/{tryghost-members-stripe-service-5.30.0.tgz → tryghost-members-stripe-service-5.31.0.tgz} +0 -0
  37. package/components/{tryghost-minifier-5.30.0.tgz → tryghost-minifier-5.31.0.tgz} +0 -0
  38. package/components/{tryghost-mw-api-version-mismatch-5.30.0.tgz → tryghost-mw-api-version-mismatch-5.31.0.tgz} +0 -0
  39. package/components/{tryghost-mw-cache-control-5.30.0.tgz → tryghost-mw-cache-control-5.31.0.tgz} +0 -0
  40. package/components/{tryghost-mw-error-handler-5.30.0.tgz → tryghost-mw-error-handler-5.31.0.tgz} +0 -0
  41. package/components/tryghost-mw-session-from-token-5.31.0.tgz +0 -0
  42. package/components/tryghost-mw-update-user-last-seen-5.31.0.tgz +0 -0
  43. package/components/{tryghost-mw-vhost-5.30.0.tgz → tryghost-mw-vhost-5.31.0.tgz} +0 -0
  44. package/components/tryghost-oembed-service-5.31.0.tgz +0 -0
  45. package/components/tryghost-package-json-5.31.0.tgz +0 -0
  46. package/components/tryghost-referrers-5.31.0.tgz +0 -0
  47. package/components/{tryghost-security-5.30.0.tgz → tryghost-security-5.31.0.tgz} +0 -0
  48. package/components/{tryghost-session-service-5.30.0.tgz → tryghost-session-service-5.31.0.tgz} +0 -0
  49. package/components/tryghost-settings-path-manager-5.31.0.tgz +0 -0
  50. package/components/{tryghost-staff-service-5.30.0.tgz → tryghost-staff-service-5.31.0.tgz} +0 -0
  51. package/components/tryghost-stats-service-5.31.0.tgz +0 -0
  52. package/components/{tryghost-tiers-5.30.0.tgz → tryghost-tiers-5.31.0.tgz} +0 -0
  53. package/components/{tryghost-update-check-service-5.30.0.tgz → tryghost-update-check-service-5.31.0.tgz} +0 -0
  54. package/components/tryghost-verification-trigger-5.31.0.tgz +0 -0
  55. package/components/{tryghost-version-notifications-data-service-5.30.0.tgz → tryghost-version-notifications-data-service-5.31.0.tgz} +0 -0
  56. package/components/tryghost-webmentions-5.31.0.tgz +0 -0
  57. package/content/themes/casper/author.hbs +6 -6
  58. package/content/themes/casper/package.json +1 -1
  59. package/core/boot.js +2 -0
  60. package/core/built/admin/assets/{chunk.143.f9aa3f7f1c45d1d921cd.js → chunk.143.7ef8d39b50a9ef3d6a6b.js} +5 -5
  61. package/core/built/admin/assets/{chunk.178.55d68318431345983298.js → chunk.178.8a8e070a8c2682df548a.js} +4 -4
  62. package/core/built/admin/assets/{ghost-d3e45940f0f1601232d464d0b429d45f.css → ghost-721a7adc4ca642c88e4ac85e1cb8b385.css} +1 -1
  63. package/core/built/admin/assets/{ghost-dark-c8dc36895dfcbc03f0edd94311c65bfd.css → ghost-dark-fb05eb50e216469c5626356731afa42f.css} +1 -1
  64. package/core/built/admin/assets/{ghost-23dc524374e35a582886c36f7dacdb05.js → ghost-fc0450a45ea5be2e5a10c4d897d5b430.js} +142 -124
  65. package/core/built/admin/assets/{vendor-fadbf85ad92c591dc4bd3755312b6ddf.js → vendor-0441964c34d58f2aacd5a04bbe240243.js} +34 -37
  66. package/core/built/admin/index.html +5 -5
  67. package/core/frontend/helpers/ghost_head.js +16 -0
  68. package/core/server/api/endpoints/index.js +4 -0
  69. package/core/server/api/endpoints/mentions.js +33 -0
  70. package/core/server/api/endpoints/oembed.js +1 -22
  71. package/core/server/api/endpoints/utils/serializers/input/settings.js +2 -1
  72. package/core/server/api/endpoints/utils/serializers/output/mappers/index.js +2 -1
  73. package/core/server/api/endpoints/utils/serializers/output/mappers/mentions.js +18 -0
  74. package/core/server/data/exporter/table-lists.js +1 -0
  75. package/core/server/data/importer/import-manager.js +21 -5
  76. package/core/server/data/migrations/versions/5.31/2022-12-05-09-56-update-newsletter-subscriptions.js +23 -0
  77. package/core/server/data/migrations/versions/5.31/2023-01-17-14-59-add-outbound-link-tagging-setting.js +8 -0
  78. package/core/server/data/migrations/versions/5.31/2023-01-19-07-46-add-mentions-table.js +17 -0
  79. package/core/server/data/schema/default-settings/default-settings.json +10 -0
  80. package/core/server/data/schema/schema.js +15 -0
  81. package/core/server/models/base/plugins/actions.js +1 -1
  82. package/core/server/models/base/plugins/sanitize.js +2 -0
  83. package/core/server/models/mention.js +9 -0
  84. package/core/server/models/redirect.js +2 -1
  85. package/core/server/services/api-version-compatibility/index.js +5 -8
  86. package/core/server/services/email-suppression-list/MailgunEmailSuppressionList.js +1 -1
  87. package/core/server/services/link-redirection/LinkRedirectRepository.js +2 -1
  88. package/core/server/services/link-tracking/PostLinkRepository.js +2 -1
  89. package/core/server/services/mega/post-email-serializer.js +2 -2
  90. package/core/server/services/member-attribution/index.js +2 -0
  91. package/core/server/services/mentions/BookshelfMentionRepository.js +117 -0
  92. package/core/server/services/mentions/MentionController.js +66 -0
  93. package/core/server/services/mentions/WebmentionMetadata.js +20 -0
  94. package/core/server/services/mentions/index.js +1 -0
  95. package/core/server/services/mentions/service.js +77 -0
  96. package/core/server/services/oembed/index.js +1 -0
  97. package/core/server/services/{nft-oembed.js → oembed/nft-oembed.js} +0 -0
  98. package/core/server/services/oembed/service.js +24 -0
  99. package/core/server/services/{twitter-embed.js → oembed/twitter-embed.js} +0 -0
  100. package/core/server/services/url/Resources.js +3 -17
  101. package/core/server/services/url/UrlService.js +3 -3
  102. package/core/server/web/api/endpoints/admin/routes.js +3 -0
  103. package/core/server/web/parent/frontend.js +1 -0
  104. package/core/server/web/webmentions/index.js +1 -0
  105. package/core/server/web/webmentions/routes.js +18 -0
  106. package/core/shared/labs.js +6 -4
  107. package/package.json +115 -111
  108. package/yarn.lock +620 -80
  109. package/components/tryghost-domain-events-5.30.0.tgz +0 -0
  110. package/components/tryghost-email-analytics-provider-mailgun-5.30.0.tgz +0 -0
  111. package/components/tryghost-email-service-5.30.0.tgz +0 -0
  112. package/components/tryghost-extract-api-key-5.30.0.tgz +0 -0
  113. package/components/tryghost-importer-revue-5.30.0.tgz +0 -0
  114. package/components/tryghost-link-replacer-5.30.0.tgz +0 -0
  115. package/components/tryghost-member-attribution-5.30.0.tgz +0 -0
  116. package/components/tryghost-member-events-5.30.0.tgz +0 -0
  117. package/components/tryghost-members-offers-5.30.0.tgz +0 -0
  118. package/components/tryghost-members-payments-5.30.0.tgz +0 -0
  119. package/components/tryghost-mw-session-from-token-5.30.0.tgz +0 -0
  120. package/components/tryghost-mw-update-user-last-seen-5.30.0.tgz +0 -0
  121. package/components/tryghost-oembed-service-5.30.0.tgz +0 -0
  122. package/components/tryghost-package-json-5.30.0.tgz +0 -0
  123. package/components/tryghost-referrers-5.30.0.tgz +0 -0
  124. package/components/tryghost-settings-path-manager-5.30.0.tgz +0 -0
  125. package/components/tryghost-stats-service-5.30.0.tgz +0 -0
  126. package/components/tryghost-verification-trigger-5.30.0.tgz +0 -0
@@ -12314,7 +12314,7 @@ if("object"!=typeof n)return n
12314
12314
  throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string")
12315
12315
  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 I(e,t,r,n,i){var o={}
12316
12316
  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=e.VIDEO_MIME_TYPES=e.VIDEO_EXTENSIONS=void 0
12317
- const N=Ember.HTMLBars.template({id:"cWi7xXMQ",block:'{"symbols":["uploader","card","uploader","@payload","@env","@headerOffset","@isSelected","@isEditing","@selectCard","@deselectCard","@editCard","@saveCard","@saveAsSnippet","@addParagraphAfterCard","@moveCursorToPrevSection","@moveCursorToNextSection","@editor"],"statements":[[8,"koenig-card",[[4,[38,11],[[32,0,["didInsert"]]],null],[4,[38,0],["dragover",[32,0,["dragOver"]]],null],[4,[38,0],["dragleave",[32,0,["dragLeave"]]],null],[4,[38,0],["drop",[32,0,["drop"]]],null]],[["@env","@class","@headerOffset","@toolbar","@payload","@isSelected","@isEditing","@selectCard","@deselectCard","@editCard","@hasEditMode","@saveCard","@saveAsSnippet","@addParagraphAfterCard","@moveCursorToPrevSection","@moveCursorToNextSection","@editor"],[[32,5],[30,[36,10],["kg-card kg-video-card kg-card-hover mih10 miw-100 relative ba b--transparent",[30,[36,9],["breakout"],[["size"],[[32,4,["cardWidth"]]]]]],null],[32,6],[32,0,["toolbar"]],[32,4],[32,7],[32,8],[32,9],[32,10],[32,11],[30,[36,7],[[32,0,["isEmpty"]]],null],[32,12],[32,13],[32,14],[32,15],[32,16],[32,17]]],[["default"],[{"statements":[[2,"\\n "],[8,"gh-uploader",[],[["@uploadUrl","@resourceName","@files","@accept","@extensions","@onStart","@onComplete","@onFailed"],["/media/upload/","media",[32,0,["files"]],[32,0,["videoMimeTypes"]],[32,0,["videoExtensions"]],[32,0,["videoUploadStarted"]],[32,0,["videoUploadCompleted"]],[32,0,["videoUploadFailed"]]]],[["default"],[{"statements":[[2,"\\n "],[10,"div"],[15,0,[31,["relative",[30,[36,3],[[30,[36,8],[[32,0,["previewThumbnailSrc"]],[32,4,["customThumbnailSrc"]],[32,4,["thumbnailSrc"]]],null]," bg-whitegrey-l2"],null]]]],[12],[2,"\\n"],[6,[37,2],[[30,[36,8],[[32,0,["previewThumbnailSrc"]],[32,4,["customThumbnailSrc"]],[32,4,["thumbnailSrc"]]],null]],null,[["default"],[{"statements":[[2," "],[10,"div"],[14,0,"aspect-ratio"],[15,5,[32,0,["aspectRatioPaddingStyle"]]],[12],[2,"\\n "],[10,"img"],[15,"src",[30,[36,8],[[32,0,["previewThumbnailSrc"]],[32,4,["customThumbnailSrc"]],[32,4,["thumbnailSrc"]]],null]],[14,0,"aspect-ratio--object"],[14,5,"object-fit: cover"],[12],[13],[2,"\\n "],[13],[2,"\\n"],[6,[37,3],[[30,[36,8],[[32,3,["isUploading"]],[32,3,["errors"]]],null]],null,[["default"],[{"statements":[[2," "],[10,"div"],[14,0,"image-overlay"],[12],[2,"\\n "],[10,"button"],[14,0,"kg-large-play-icon"],[14,4,"button"],[12],[1,[30,[36,1],["play"],null]],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[6,[37,2],[[32,0,["isDraggedOver"]]],null,[["default"],[{"statements":[[2," "],[10,"div"],[14,0,"absolute absolute--fill flex items-center bg-black-60 pe-none"],[12],[2,"\\n "],[10,"span"],[14,0,"db center sans-serif fw7 f7 white"],[12],[2,"\\n Drop to replace video\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]]],"parameters":[]}]]],[2,"\\n"],[6,[37,2],[[30,[36,8],[[32,3,["errors"]],[32,3,["isUploading"]],[30,[36,7],[[32,4,["src"]]],null]],null]],null,[["default","else"],[{"statements":[[2," "],[10,"div"],[15,0,[31,["relative miw-100 flex items-center justify-center ",[30,[36,3],[[32,4,["src"]],"kg-media-placeholder ba b--whitegrey bg-whitegrey-l2","absolute absolute--fill bg-white-50"],null]]]],[12],[2,"\\n"],[6,[37,2],[[32,0,["isDraggedOver"]]],null,[["default","else"],[{"statements":[[2," "],[10,"span"],[14,0,"db center sans-serif fw7 f7 middarkgrey"],[12],[2,"\\n Drop it like it\'s hot 🔥\\n "],[13],[2,"\\n"]],"parameters":[]},{"statements":[[6,[37,2],[[32,3,["isUploading"]]],null,[["default","else"],[{"statements":[[2," "],[1,[32,3,["progressBar"]]],[2,"\\n"]],"parameters":[]},{"statements":[[6,[37,2],[[30,[36,7],[[32,0,["previewThumbnailSrc"]],[32,4,["src"]]],null]],null,[["default"],[{"statements":[[2," "],[11,"button"],[24,0,"flex flex-column items-center center sans-serif fw4 f7 middarkgrey pa16 pt14 pb14 kg-image-button"],[24,4,"button"],[4,[38,0],["click",[32,0,["triggerVideoFileDialog"]]],null],[12],[2,"\\n "],[1,[30,[36,1],["film-camera"],[["class"],["kg-placeholder-video"]]]],[2,"\\n "],[10,"span"],[14,0,"mt4 kg-upload-placeholder-text"],[12],[2,"Click to select a video"],[13],[2,"\\n"],[6,[37,2],[[32,3,["errors"]]],null,[["default"],[{"statements":[[2," "],[10,"span"],[14,0,"kg-upload-error"],[12],[2,"\\n "],[1,[30,[36,6],[[32,3,["errors"]],"0.message"],null]],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n "]],"parameters":[]}]]]],"parameters":[]}]]]],"parameters":[]}]]],[2," "],[13],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[10,"div"],[14,0,"kg-player-container"],[12],[2,"\\n "],[10,"div"],[15,0,[31,["kg-player ",[30,[36,2],[[30,[36,5],[[32,4,["cardWidth"]],"full"],null],"kg-player-full"],null]]]],[12],[2,"\\n "],[10,"button"],[14,0,"kg-player-play-icon"],[14,4,"button"],[12],[1,[30,[36,1],["play"],null]],[13],[2,"\\n "],[10,"span"],[14,0,"kg-player-current-time"],[12],[2,"0:00"],[13],[2,"\\n "],[10,"div"],[14,0,"kg-player-time"],[12],[2,"\\n /"],[10,"span"],[14,0,"kg-player-duration"],[12],[1,[32,0,["totalDuration"]]],[13],[2,"\\n "],[13],[2,"\\n "],[10,"input"],[14,0,"kg-player-seek-slider"],[14,"max","100"],[14,2,"0"],[14,4,"range"],[12],[13],[2,"\\n "],[10,"button"],[14,0,"kg-player-playback-rate"],[14,4,"button"],[12],[2,"1×"],[13],[2,"\\n "],[10,"button"],[14,0,"kg-player-unmute-icon"],[14,4,"button"],[12],[1,[30,[36,1],["unmute"],null]],[13],[2,"\\n "],[10,"input"],[14,0,"kg-player-volume-slider"],[14,"max","100"],[14,2,"70"],[14,4,"range"],[12],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n\\n "],[10,"div"],[14,5,"display:none"],[12],[2,"\\n "],[8,"gh-file-input",[],[["@multiple","@action","@accept","@onInsert"],[false,[32,3,["setFiles"]],[32,0,["videoMimeTypes"]],[32,0,["registerVideoFileInput"]]]],null],[2,"\\n "],[13],[2,"\\n "]],"parameters":[3]}]]],[2,"\\n\\n"],[6,[37,2],[[30,[36,8],[[32,7],[30,[36,12],[[32,4,["caption"]]],null]],null]],null,[["default"],[{"statements":[[2," "],[8,[32,2,["CaptionInput"]],[],[["@caption","@update","@placeholder"],[[32,4,["caption"]],[30,[36,4],[[32,0,["updatePayloadAttr"]],"caption"],null],"Type caption for video (optional)"]],null],[2,"\\n"]],"parameters":[]}]]]],"parameters":[2]}]]],[2,"\\n\\n"],[6,[37,2],[[30,[36,13],[[32,8],[32,4,["src"]]],null]],null,[["default"],[{"statements":[[2," "],[8,"koenig-settings-panel",[],[[],[]],[["default"],[{"statements":[[2,"\\n "],[10,"div"],[14,0,"kg-settings-panel-control kg-settings-panel-control-horizontal"],[12],[2,"\\n "],[10,"div"],[14,0,"kg-settings-panel-control-label"],[12],[2,"Video width"],[13],[2,"\\n "],[10,"div"],[14,0,"kg-settings-panel-control-input"],[12],[2,"\\n "],[10,"div"],[14,0,"gh-btn-group icons"],[12],[2,"\\n "],[11,"button"],[24,"title","Regular"],[16,0,[31,["gh-btn gh-btn-icon ",[30,[36,3],[[32,4,["cardWidth"]],"gh-btn-group-selected"],null]]]],[24,4,"button"],[4,[38,0],["click",[30,[36,4],[[32,0,["updatePayloadAttr"]],"cardWidth",null],null]],null],[12],[10,"span"],[12],[1,[30,[36,1],["koenig/kg-img-regular"],[["class"],["fill-darkgrey"]]]],[13],[13],[2,"\\n "],[11,"button"],[24,"title","Wide"],[16,0,[31,["gh-btn gh-btn-icon ",[30,[36,2],[[30,[36,5],[[32,4,["cardWidth"]],"wide"],null],"gh-btn-group-selected"],null]]]],[24,4,"button"],[4,[38,0],["click",[30,[36,4],[[32,0,["updatePayloadAttr"]],"cardWidth","wide"],null]],null],[12],[10,"span"],[12],[1,[30,[36,1],["koenig/kg-img-wide"],[["class"],["fill-darkgrey"]]]],[13],[13],[2,"\\n "],[11,"button"],[24,"title","Full"],[16,0,[31,["gh-btn gh-btn-icon ",[30,[36,2],[[30,[36,5],[[32,4,["cardWidth"]],"full"],null],"gh-btn-group-selected"],null]]]],[24,4,"button"],[4,[38,0],["click",[30,[36,4],[[32,0,["updatePayloadAttr"]],"cardWidth","full"],null]],null],[12],[10,"span"],[12],[1,[30,[36,1],["koenig/kg-img-full"],[["class"],["fill-darkgrey"]]]],[13],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n\\n "],[10,"div"],[14,0,"kg-settings-panel-control kg-settings-panel-control-horizontal"],[12],[2,"\\n "],[10,"label"],[14,0,"kg-settings-panel-control-label"],[14,"for","loop-toggle"],[12],[2,"Loop"],[13],[2,"\\n "],[10,"div"],[14,0,"kg-settings-panel-control-input"],[12],[2,"\\n "],[10,"div"],[14,0,"for-switch x-small"],[12],[2,"\\n "],[10,"label"],[14,0,"switch"],[12],[2,"\\n "],[11,"input"],[24,0,"gh-input"],[24,1,"loop-toggle"],[16,"checked",[32,4,["loop"]]],[24,4,"checkbox"],[4,[38,0],["input",[32,0,["toggleLoop"]]],null],[12],[13],[2,"\\n "],[10,"span"],[14,0,"input-toggle-component mt1"],[12],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"div"],[14,0,"kg-settings-panel-control-info video"],[12],[2,"Autoplay your video on a loop without sound."],[13],[2,"\\n\\n "],[8,"gh-uploader",[],[["@uploadUrl","@accept","@extensions","@onStart","@onComplete"],["/images/upload/",[32,0,["imageMimeTypes"]],[32,0,["imageExtensions"]],[32,0,["customThumbnailUploadStarted"]],[32,0,["customThumbnailUploadCompleted"]]]],[["default"],[{"statements":[[2,"\\n\\n"],[6,[37,3],[[32,4,["loop"]]],null,[["default"],[{"statements":[[2," "],[10,"div"],[14,0,"kg-settings-panel-control"],[12],[2,"\\n "],[10,"label"],[14,0,"kg-settings-panel-control-label"],[12],[2,"Custom thumbnail"],[13],[2,"\\n "],[10,"div"],[14,0,"kg-settings-panel-control-input"],[12],[2,"\\n "],[10,"div"],[14,0,"relative w-100"],[12],[2,"\\n"],[6,[37,2],[[32,1,["isUploading"]]],null,[["default","else"],[{"statements":[[2," "],[10,"div"],[14,0,"kg-upload-thumbnail-xl"],[12],[2,"\\n "],[1,[32,1,["progressBar"]]],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]},{"statements":[[6,[37,2],[[32,4,["customThumbnailSrc"]]],null,[["default","else"],[{"statements":[[2," "],[10,"div"],[14,0,"kg-thumbnail-xl-container"],[12],[2,"\\n "],[11,"img"],[24,0,"kg-thumbnail-xl"],[16,"src",[32,4,["customThumbnailSrc"]]],[4,[38,0],["click",[32,1,["triggerFileDialog"]]],null],[12],[13],[2,"\\n "],[10,"div"],[14,0,"image-overlay"],[12],[2,"\\n "],[10,"div"],[14,0,"flex flex-row-reverse"],[12],[2,"\\n "],[11,"button"],[24,0,"bg-white-90 br3 pe-auto"],[24,4,"button"],[4,[38,0],["click",[32,0,["deleteCustomThumbnail"]]],null],[12],[2,"\\n "],[1,[30,[36,1],["koenig/kg-trash"],[["class"],["kg-replace-icon fill-darkgrey"]]]],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[11,"button"],[24,0,"gh-btn kg-upload-thumbnail-xl"],[24,4,"button"],[4,[38,0],["click",[32,1,["triggerFileDialog"]]],null],[12],[2,"\\n "],[1,[30,[36,1],["upload-fill"],null]],[2,"\\n "],[13],[2,"\\n "]],"parameters":[]}]]]],"parameters":[]}]]],[2," "],[13],[2,"\\n "],[10,"div"],[14,5,"display:none"],[12],[2,"\\n "],[8,"gh-file-input",[],[["@multiple","@action","@accept","@onInsert"],[false,[32,1,["setFiles"]],[32,0,["imageMimeTypes"]],[32,1,["registerFileInput"]]]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"],[6,[37,2],[true],null,[["default"],[{"statements":[[2," "],[10,"div"],[14,0,"kg-settings-panel-control-info"],[12],[2,"\\n "],[10,"span"],[14,0,"red"],[12],[2,"The file type you uploaded is not supported. Please use .MP4, .WEBM, .OGV"],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2,"\\n"],[2," "],[13],[2,"\\n"]],"parameters":[]}]]],[2," "]],"parameters":[1]}]]],[2,"\\n "]],"parameters":[]}]]],[2,"\\n"]],"parameters":[]}]]]],"hasEval":false,"upvars":["on","svg-jar","if","unless","fn","eq","get","not","or","kg-style","concat","did-insert","clean-basic-html","and"]}',moduleName:"koenig-editor/components/koenig-card-video.hbs"}),L=["mp4","webm","ogv"]
12317
+ const N=Ember.HTMLBars.template({id:"qgPFrLj7",block:'{"symbols":["uploader","error","card","uploader","@payload","@env","@headerOffset","@isSelected","@isEditing","@selectCard","@deselectCard","@editCard","@saveCard","@saveAsSnippet","@addParagraphAfterCard","@moveCursorToPrevSection","@moveCursorToNextSection","@editor"],"statements":[[8,"koenig-card",[[4,[38,13],[[32,0,["didInsert"]]],null],[4,[38,2],["dragover",[32,0,["dragOver"]]],null],[4,[38,2],["dragleave",[32,0,["dragLeave"]]],null],[4,[38,2],["drop",[32,0,["drop"]]],null]],[["@env","@class","@headerOffset","@toolbar","@payload","@isSelected","@isEditing","@selectCard","@deselectCard","@editCard","@hasEditMode","@saveCard","@saveAsSnippet","@addParagraphAfterCard","@moveCursorToPrevSection","@moveCursorToNextSection","@editor"],[[32,6],[30,[36,12],["kg-card kg-video-card kg-card-hover mih10 miw-100 relative ba b--transparent",[30,[36,11],["breakout"],[["size"],[[32,5,["cardWidth"]]]]]],null],[32,7],[32,0,["toolbar"]],[32,5],[32,8],[32,9],[32,10],[32,11],[32,12],[30,[36,9],[[32,0,["isEmpty"]]],null],[32,13],[32,14],[32,15],[32,16],[32,17],[32,18]]],[["default"],[{"statements":[[2,"\\n "],[8,"gh-uploader",[],[["@uploadUrl","@resourceName","@files","@accept","@extensions","@onStart","@onComplete","@onFailed"],["/media/upload/","media",[32,0,["files"]],[32,0,["videoMimeTypes"]],[32,0,["videoExtensions"]],[32,0,["videoUploadStarted"]],[32,0,["videoUploadCompleted"]],[32,0,["videoUploadFailed"]]]],[["default"],[{"statements":[[2,"\\n "],[10,"div"],[15,0,[31,["relative",[30,[36,5],[[30,[36,10],[[32,0,["previewThumbnailSrc"]],[32,5,["customThumbnailSrc"]],[32,5,["thumbnailSrc"]]],null]," bg-whitegrey-l2"],null]]]],[12],[2,"\\n"],[6,[37,4],[[30,[36,10],[[32,0,["previewThumbnailSrc"]],[32,5,["customThumbnailSrc"]],[32,5,["thumbnailSrc"]]],null]],null,[["default"],[{"statements":[[2," "],[10,"div"],[14,0,"aspect-ratio"],[15,5,[32,0,["aspectRatioPaddingStyle"]]],[12],[2,"\\n "],[10,"img"],[15,"src",[30,[36,10],[[32,0,["previewThumbnailSrc"]],[32,5,["customThumbnailSrc"]],[32,5,["thumbnailSrc"]]],null]],[14,0,"aspect-ratio--object"],[14,5,"object-fit: cover"],[12],[13],[2,"\\n "],[13],[2,"\\n"],[6,[37,5],[[30,[36,10],[[32,4,["isUploading"]],[32,4,["errors"]]],null]],null,[["default"],[{"statements":[[2," "],[10,"div"],[14,0,"image-overlay"],[12],[2,"\\n "],[10,"button"],[14,0,"kg-large-play-icon"],[14,4,"button"],[12],[1,[30,[36,3],["play"],null]],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[6,[37,4],[[32,0,["isDraggedOver"]]],null,[["default"],[{"statements":[[2," "],[10,"div"],[14,0,"absolute absolute--fill flex items-center bg-black-60 pe-none"],[12],[2,"\\n "],[10,"span"],[14,0,"db center sans-serif fw7 f7 white"],[12],[2,"\\n Drop to replace video\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]]],"parameters":[]}]]],[2,"\\n"],[6,[37,4],[[30,[36,10],[[32,4,["errors"]],[32,4,["isUploading"]],[30,[36,9],[[32,5,["src"]]],null]],null]],null,[["default","else"],[{"statements":[[2," "],[10,"div"],[15,0,[31,["relative miw-100 flex items-center justify-center ",[30,[36,5],[[32,5,["src"]],"kg-media-placeholder ba b--whitegrey bg-whitegrey-l2","absolute absolute--fill bg-white-50"],null]]]],[12],[2,"\\n"],[6,[37,4],[[32,0,["isDraggedOver"]]],null,[["default","else"],[{"statements":[[2," "],[10,"span"],[14,0,"db center sans-serif fw7 f7 middarkgrey"],[12],[2,"\\n Drop it like it\'s hot 🔥\\n "],[13],[2,"\\n"]],"parameters":[]},{"statements":[[6,[37,4],[[32,4,["isUploading"]]],null,[["default","else"],[{"statements":[[2," "],[1,[32,4,["progressBar"]]],[2,"\\n"]],"parameters":[]},{"statements":[[6,[37,4],[[30,[36,9],[[32,0,["previewThumbnailSrc"]],[32,5,["src"]]],null]],null,[["default"],[{"statements":[[2," "],[11,"button"],[24,0,"flex flex-column items-center center sans-serif fw4 f7 middarkgrey pa16 pt14 pb14 kg-image-button"],[24,4,"button"],[4,[38,2],["click",[32,0,["triggerVideoFileDialog"]]],null],[12],[2,"\\n "],[1,[30,[36,3],["film-camera"],[["class"],["kg-placeholder-video"]]]],[2,"\\n "],[10,"span"],[14,0,"mt4 kg-upload-placeholder-text"],[12],[2,"Click to select a video"],[13],[2,"\\n"],[6,[37,4],[[32,4,["errors"]]],null,[["default"],[{"statements":[[2," "],[10,"span"],[14,0,"kg-upload-error"],[12],[2,"\\n "],[1,[30,[36,8],[[32,4,["errors"]],"0.message"],null]],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n "]],"parameters":[]}]]]],"parameters":[]}]]]],"parameters":[]}]]],[2," "],[13],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[10,"div"],[14,0,"kg-player-container"],[12],[2,"\\n "],[10,"div"],[15,0,[31,["kg-player ",[30,[36,4],[[30,[36,7],[[32,5,["cardWidth"]],"full"],null],"kg-player-full"],null]]]],[12],[2,"\\n "],[10,"button"],[14,0,"kg-player-play-icon"],[14,4,"button"],[12],[1,[30,[36,3],["play"],null]],[13],[2,"\\n "],[10,"span"],[14,0,"kg-player-current-time"],[12],[2,"0:00"],[13],[2,"\\n "],[10,"div"],[14,0,"kg-player-time"],[12],[2,"\\n /"],[10,"span"],[14,0,"kg-player-duration"],[12],[1,[32,0,["totalDuration"]]],[13],[2,"\\n "],[13],[2,"\\n "],[10,"input"],[14,0,"kg-player-seek-slider"],[14,"max","100"],[14,2,"0"],[14,4,"range"],[12],[13],[2,"\\n "],[10,"button"],[14,0,"kg-player-playback-rate"],[14,4,"button"],[12],[2,"1×"],[13],[2,"\\n "],[10,"button"],[14,0,"kg-player-unmute-icon"],[14,4,"button"],[12],[1,[30,[36,3],["unmute"],null]],[13],[2,"\\n "],[10,"input"],[14,0,"kg-player-volume-slider"],[14,"max","100"],[14,2,"70"],[14,4,"range"],[12],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n\\n "],[10,"div"],[14,5,"display:none"],[12],[2,"\\n "],[8,"gh-file-input",[],[["@multiple","@action","@accept","@onInsert"],[false,[32,4,["setFiles"]],[32,0,["videoMimeTypes"]],[32,0,["registerVideoFileInput"]]]],null],[2,"\\n "],[13],[2,"\\n "]],"parameters":[4]}]]],[2,"\\n\\n"],[6,[37,4],[[30,[36,10],[[32,8],[30,[36,14],[[32,5,["caption"]]],null]],null]],null,[["default"],[{"statements":[[2," "],[8,[32,3,["CaptionInput"]],[],[["@caption","@update","@placeholder"],[[32,5,["caption"]],[30,[36,6],[[32,0,["updatePayloadAttr"]],"caption"],null],"Type caption for video (optional)"]],null],[2,"\\n"]],"parameters":[]}]]]],"parameters":[3]}]]],[2,"\\n\\n"],[6,[37,4],[[30,[36,15],[[32,9],[32,5,["src"]]],null]],null,[["default"],[{"statements":[[2," "],[8,"koenig-settings-panel",[],[[],[]],[["default"],[{"statements":[[2,"\\n "],[10,"div"],[14,0,"kg-settings-panel-control kg-settings-panel-control-horizontal"],[12],[2,"\\n "],[10,"div"],[14,0,"kg-settings-panel-control-label"],[12],[2,"Video width"],[13],[2,"\\n "],[10,"div"],[14,0,"kg-settings-panel-control-input"],[12],[2,"\\n "],[10,"div"],[14,0,"gh-btn-group icons"],[12],[2,"\\n "],[11,"button"],[24,"title","Regular"],[16,0,[31,["gh-btn gh-btn-icon ",[30,[36,5],[[32,5,["cardWidth"]],"gh-btn-group-selected"],null]]]],[24,4,"button"],[4,[38,2],["click",[30,[36,6],[[32,0,["updatePayloadAttr"]],"cardWidth",null],null]],null],[12],[10,"span"],[12],[1,[30,[36,3],["koenig/kg-img-regular"],[["class"],["fill-darkgrey"]]]],[13],[13],[2,"\\n "],[11,"button"],[24,"title","Wide"],[16,0,[31,["gh-btn gh-btn-icon ",[30,[36,4],[[30,[36,7],[[32,5,["cardWidth"]],"wide"],null],"gh-btn-group-selected"],null]]]],[24,4,"button"],[4,[38,2],["click",[30,[36,6],[[32,0,["updatePayloadAttr"]],"cardWidth","wide"],null]],null],[12],[10,"span"],[12],[1,[30,[36,3],["koenig/kg-img-wide"],[["class"],["fill-darkgrey"]]]],[13],[13],[2,"\\n "],[11,"button"],[24,"title","Full"],[16,0,[31,["gh-btn gh-btn-icon ",[30,[36,4],[[30,[36,7],[[32,5,["cardWidth"]],"full"],null],"gh-btn-group-selected"],null]]]],[24,4,"button"],[4,[38,2],["click",[30,[36,6],[[32,0,["updatePayloadAttr"]],"cardWidth","full"],null]],null],[12],[10,"span"],[12],[1,[30,[36,3],["koenig/kg-img-full"],[["class"],["fill-darkgrey"]]]],[13],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n\\n "],[10,"div"],[14,0,"kg-settings-panel-control kg-settings-panel-control-horizontal"],[12],[2,"\\n "],[10,"label"],[14,0,"kg-settings-panel-control-label"],[14,"for","loop-toggle"],[12],[2,"Loop"],[13],[2,"\\n "],[10,"div"],[14,0,"kg-settings-panel-control-input"],[12],[2,"\\n "],[10,"div"],[14,0,"for-switch x-small"],[12],[2,"\\n "],[10,"label"],[14,0,"switch"],[12],[2,"\\n "],[11,"input"],[24,0,"gh-input"],[24,1,"loop-toggle"],[16,"checked",[32,5,["loop"]]],[24,4,"checkbox"],[4,[38,2],["input",[32,0,["toggleLoop"]]],null],[12],[13],[2,"\\n "],[10,"span"],[14,0,"input-toggle-component mt1"],[12],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"div"],[14,0,"kg-settings-panel-control-info video"],[12],[2,"Autoplay your video on a loop without sound."],[13],[2,"\\n\\n "],[8,"gh-uploader",[],[["@uploadUrl","@accept","@extensions","@onStart","@onComplete"],["/images/upload/",[32,0,["imageMimeTypes"]],[32,0,["imageExtensions"]],[32,0,["customThumbnailUploadStarted"]],[32,0,["customThumbnailUploadCompleted"]]]],[["default"],[{"statements":[[2,"\\n\\n"],[6,[37,5],[[32,5,["loop"]]],null,[["default"],[{"statements":[[2," "],[10,"div"],[14,0,"kg-settings-panel-control"],[12],[2,"\\n "],[10,"label"],[14,0,"kg-settings-panel-control-label"],[12],[2,"Custom thumbnail"],[13],[2,"\\n "],[10,"div"],[14,0,"kg-settings-panel-control-input"],[12],[2,"\\n "],[10,"div"],[14,0,"relative w-100"],[12],[2,"\\n"],[6,[37,4],[[32,1,["isUploading"]]],null,[["default","else"],[{"statements":[[2," "],[10,"div"],[14,0,"kg-upload-thumbnail-xl"],[12],[2,"\\n "],[1,[32,1,["progressBar"]]],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]},{"statements":[[6,[37,4],[[32,5,["customThumbnailSrc"]]],null,[["default","else"],[{"statements":[[2," "],[10,"div"],[14,0,"kg-thumbnail-xl-container"],[12],[2,"\\n "],[11,"img"],[24,0,"kg-thumbnail-xl"],[16,"src",[32,5,["customThumbnailSrc"]]],[4,[38,2],["click",[32,1,["triggerFileDialog"]]],null],[12],[13],[2,"\\n "],[10,"div"],[14,0,"image-overlay"],[12],[2,"\\n "],[10,"div"],[14,0,"flex flex-row-reverse"],[12],[2,"\\n "],[11,"button"],[24,0,"bg-white-90 br3 pe-auto"],[24,4,"button"],[4,[38,2],["click",[32,0,["deleteCustomThumbnail"]]],null],[12],[2,"\\n "],[1,[30,[36,3],["koenig/kg-trash"],[["class"],["kg-replace-icon fill-darkgrey"]]]],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[11,"button"],[24,0,"gh-btn kg-upload-thumbnail-xl"],[24,4,"button"],[4,[38,2],["click",[32,1,["triggerFileDialog"]]],null],[12],[2,"\\n "],[1,[30,[36,3],["upload-fill"],null]],[2,"\\n "],[13],[2,"\\n "]],"parameters":[]}]]]],"parameters":[]}]]],[2," "],[13],[2,"\\n "],[10,"div"],[14,5,"display:none"],[12],[2,"\\n "],[8,"gh-file-input",[],[["@multiple","@action","@accept","@onInsert"],[false,[32,1,["setFiles"]],[32,0,["imageMimeTypes"]],[32,1,["registerFileInput"]]]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"],[6,[37,4],[[32,1,["errors"]]],null,[["default"],[{"statements":[[2," "],[10,"div"],[14,0,"kg-settings-panel-control-info"],[12],[2,"\\n"],[6,[37,1],[[30,[36,0],[[30,[36,0],[[32,1,["errors"]]],null]],null]],null,[["default"],[{"statements":[[2," "],[10,"span"],[14,0,"red"],[12],[1,[32,2,["message"]]],[13],[2,"\\n"]],"parameters":[2]}]]],[2," "],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n"]],"parameters":[]}]]],[2," "]],"parameters":[1]}]]],[2,"\\n "]],"parameters":[]}]]],[2,"\\n"]],"parameters":[]}]]]],"hasEval":false,"upvars":["-track-array","each","on","svg-jar","if","unless","fn","eq","get","not","or","kg-style","concat","did-insert","clean-basic-html","and"]}',moduleName:"koenig-editor/components/koenig-card-video.hbs"}),L=["mp4","webm","ogv"]
12318
12318
  e.VIDEO_EXTENSIONS=L
12319
12319
  const F=["video/mp4","video/webm","video/ogg"]
12320
12320
  e.VIDEO_MIME_TYPES=F
@@ -12378,7 +12378,7 @@ throw new TypeError("@@toPrimitive must return a primitive value.")}return("stri
12378
12378
  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 le(e,t,r,n,i){var o={}
12379
12379
  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.TESTING_EXPANDO_PROPERTY=e.SPECIAL_MARKUPS=e.REMOVE_CARD_HOOK=e.REMOVE_ATOM_HOOK=e.NO_CURSOR_MOVEMENT=e.MOBILEDOC_VERSION=e.CURSOR_BEFORE=e.CURSOR_AFTER=e.BLANK_DOC=e.ADD_CARD_HOOK=e.ADD_ATOM_HOOK=void 0,e.arrayToMap=ye,e.default=void 0,e.getBlankMobileDoc=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"p"
12380
12380
  return{...ve,sections:[[1,e,[[0,[],0,""]]]]}},e.toggleSpecialFormatEditState=_e
12381
- const ue=Ember.HTMLBars.template({id:"LCKGp+Ua",block:'{"symbols":["atom","card","selector","@snippets","@saveSnippet","@updateSnippet","@postType"],"statements":[[10,"div"],[14,0,"koenig-editor__editor-wrapper"],[14,"data-kg","editor-wrapper"],[12],[2,"\\n "],[10,"div"],[14,0,"koenig-editor__editor"],[14,"data-kg","editor"],[12],[13],[2,"\\n"],[13],[2,"\\n\\n"],[8,"koenig-toolbar",[],[["@editor","@editorRange","@activeMarkupTagNames","@activeSectionTagNames","@toggleMarkup","@toggleSection","@toggleHeaderSection","@editLink","@addSnippet"],[[32,0,["editor"]],[32,0,["selectedRange"]],[32,0,["activeMarkupTagNames"]],[32,0,["activeSectionTagNames"]],[30,[36,1],[[32,0],"toggleMarkup"],null],[30,[36,1],[[32,0],"toggleSection"],null],[30,[36,1],[[32,0],"toggleHeaderSection"],null],[30,[36,1],[[32,0],"editLink"],null],[32,0,["addSnippetIfPossible"]]]],null],[2,"\\n\\n"],[8,"koenig-link-toolbar",[],[["@editor","@container","@linkRange","@selectedRange","@editLink"],[[32,0,["editor"]],[32,0,["element"]],[32,0,["linkRange"]],[32,0,["selectedRange"]],[30,[36,1],[[32,0],"editLink"],null]]],null],[2,"\\n\\n"],[6,[37,6],[[32,0,["linkRange"]]],null,[["default"],[{"statements":[[2," "],[8,"koenig-link-input",[],[["@editor","@linkRange","@linkRect","@selectedRange","@cancel"],[[32,0,["editor"]],[32,0,["linkRange"]],[32,0,["linkRect"]],[32,0,["selectedRange"]],[30,[36,1],[[32,0],"cancelEditLink"],null]]],null],[2,"\\n"]],"parameters":[]}]]],[2,"\\n"],[6,[37,6],[[32,0,["snippetRange"]]],null,[["default"],[{"statements":[[2," "],[8,"koenig-snippet-input",[],[["@editor","@snippetRange","@snippetRect","@snippets","@save","@update","@cancel"],[[32,0,["editor"]],[32,0,["snippetRange"]],[32,0,["snippetRect"]],[32,4],[32,5],[32,6],[32,0,["cancelAddSnippet"]]]],null],[2,"\\n"]],"parameters":[]}]]],[2,"\\n"],[6,[37,6],[[32,0,["activeSelectorComponent"]]],null,[["default"],[{"statements":[[2," "],[8,"koenig-media-selector",[],[["@editor","@editorRange","@replaceWithCardSection","@scrollContainerSelector","@close"],[[32,0,["editor"]],[32,0,["selectedRange"]],[30,[36,1],[[32,0],"replaceWithCardSection"],null],[32,0,["scrollContainerSelector"]],[30,[36,1],[[32,0],"closeSelectorComponent"],null]]],[["default"],[{"statements":[[2,"\\n "],[1,[30,[36,3],[[32,0,["activeSelectorComponent"]]],[["selector"],[[32,3]]]]],[2,"\\n "]],"parameters":[3]}]]],[2,"\\n"]],"parameters":[]}]]],[2,"\\n"],[8,"koenig-plus-menu",[],[["@editor","@editorRange","@snippets","@deleteSnippet","@replaceWithCardSection","@replaceWithPost","@openSelectorComponent","@postType"],[[32,0,["editor"]],[32,0,["selectedRange"]],[32,0,["snippets"]],[32,0,["deleteSnippet"]],[30,[36,1],[[32,0],"replaceWithCardSection"],null],[30,[36,1],[[32,0],"replaceWithPost"],null],[30,[36,1],[[32,0],"openSelectorComponent"],null],[32,7]]],null],[2,"\\n\\n"],[8,"koenig-slash-menu",[],[["@editor","@editorRange","@snippets","@deleteSnippet","@replaceWithCardSection","@replaceWithPost","@openSelectorComponent","@postType"],[[32,0,["editor"]],[32,0,["selectedRange"]],[32,0,["snippets"]],[32,0,["deleteSnippet"]],[30,[36,1],[[32,0],"replaceWithCardSection"],null],[30,[36,1],[[32,0],"replaceWithPost"],null],[30,[36,1],[[32,0],"openSelectorComponent"],null],[32,7]]],null],[2,"\\n\\n"],[6,[37,8],[[30,[36,7],[[30,[36,7],[[32,0,["componentCards"]]],null]],null]],null,[["default"],[{"statements":[[6,[37,4],[[32,2,["destinationElement"]]],[["guid","insertBefore"],["%cursor:1%",[29]]],[["default"],[{"statements":[[2," "],[1,[30,[36,3],[[32,2,["componentName"]]],[["editor","postModel","cardName","payload","env","options","headerOffset","saveCard","cancelCard","removeCard","scrollToCard","isSelected","isEditing","selectCard","deselectCard","editCard","deleteCard","saveAsSnippet","moveCursorToPrevSection","moveCursorToNextSection","addParagraphAfterCard","registerComponent"],[[32,0,["editor"]],[32,2,["postModel"]],[32,2,["cardName"]],[32,2,["payload"]],[32,2,["env"]],[32,2,["options"]],[32,0,["headerOffset"]],[30,[36,1],[[32,0],[32,2,["env","save"]]],null],[30,[36,1],[[32,0],[32,2,["env","cancel"]]],null],[30,[36,1],[[32,0],[32,2,["env","remove"]]],null],[30,[36,1],[[32,0],"_scrollToCard",[32,2]],null],[32,2,["isSelected"]],[32,2,["isEditing"]],[30,[36,1],[[32,0],"_selectCard",[32,2]],null],[30,[36,1],[[32,0],"_deselectCard",[32,2]],null],[30,[36,1],[[32,0],"_editCard",[32,2]],null],[30,[36,1],[[32,0],"_deleteCard",[32,2]],null],[30,[36,6],[[32,0,["saveCardAsSnippetIfPossible"]],[30,[36,2],[[30,[36,5],[[32,0,["saveCardAsSnippetIfPossible"]]],null],[32,2]],null]],null],[30,[36,1],[[32,0],"moveCursorToPrevSection",[32,2]],null],[30,[36,1],[[32,0],"moveCursorToNextSection",[32,2]],null],[30,[36,1],[[32,0],"addParagraphAfterCard",[32,2]],null],[30,[36,1],[[32,0],[30,[36,0],[[32,2,["component"]]],null]],null]]]]],[2,"\\n"]],"parameters":[]}]]]],"parameters":[2]}]]],[2,"\\n"],[6,[37,8],[[30,[36,7],[[30,[36,7],[[32,0,["componentAtoms"]]],null]],null]],null,[["default"],[{"statements":[[6,[37,4],[[32,1,["destinationElement"]]],[["guid","insertBefore"],["%cursor:0%",[29]]],[["default"],[{"statements":[[2," "],[1,[30,[36,3],[[32,1,["componentName"]]],[["editor","atom","saveAtom","registerComponent"],[[32,0,["editor"]],[32,1],[30,[36,2],[[32,1,["env","save"]],[32,1,["env","value"]],[32,1,["env","payload"]]],null],[30,[36,1],[[32,0],[30,[36,0],[[32,1,["component"]]],null]],null]]]]],[2,"\\n"]],"parameters":[]}]]]],"parameters":[1]}]]]],"hasEval":false,"upvars":["mut","action","fn","component","in-element","optional","if","-track-array","each"]}',moduleName:"koenig-editor/components/koenig-editor.hbs"}),{countWords:de}=_.utils,ce="addComponent"
12381
+ const ue=Ember.HTMLBars.template({id:"e8aTu/+I",block:'{"symbols":["atom","card","selector","@snippets","@saveSnippet","@updateSnippet","@postType"],"statements":[[10,"div"],[14,0,"koenig-editor__editor-wrapper"],[14,"data-kg","editor-wrapper"],[12],[2,"\\n "],[10,"div"],[14,0,"koenig-editor__editor"],[14,"data-kg","editor"],[12],[13],[2,"\\n"],[13],[2,"\\n\\n"],[8,"koenig-toolbar",[],[["@editor","@editorRange","@activeMarkupTagNames","@activeSectionTagNames","@toggleMarkup","@toggleSection","@toggleHeaderSection","@editLink","@addSnippet"],[[32,0,["editor"]],[32,0,["selectedRange"]],[32,0,["activeMarkupTagNames"]],[32,0,["activeSectionTagNames"]],[30,[36,1],[[32,0],"toggleMarkup"],null],[30,[36,1],[[32,0],"toggleSection"],null],[30,[36,1],[[32,0],"toggleHeaderSection"],null],[30,[36,1],[[32,0],"editLink"],null],[32,0,["addSnippetIfPossible"]]]],null],[2,"\\n\\n"],[8,"koenig-link-toolbar",[],[["@editor","@container","@linkRange","@selectedRange","@editLink"],[[32,0,["editor"]],[32,0,["element"]],[32,0,["linkRange"]],[32,0,["selectedRange"]],[30,[36,1],[[32,0],"editLink"],null]]],null],[2,"\\n\\n"],[6,[37,6],[[32,0,["linkRange"]]],null,[["default"],[{"statements":[[2," "],[8,"koenig-link-input",[],[["@editor","@linkRange","@linkRect","@selectedRange","@cancel"],[[32,0,["editor"]],[32,0,["linkRange"]],[32,0,["linkRect"]],[32,0,["selectedRange"]],[30,[36,1],[[32,0],"cancelEditLink"],null]]],null],[2,"\\n"]],"parameters":[]}]]],[2,"\\n"],[6,[37,6],[[32,0,["snippetRange"]]],null,[["default"],[{"statements":[[2," "],[8,"koenig-snippet-input",[],[["@editor","@snippetRange","@snippetRect","@snippets","@save","@update","@cancel"],[[32,0,["editor"]],[32,0,["snippetRange"]],[32,0,["snippetRect"]],[32,4],[32,5],[32,6],[32,0,["cancelAddSnippet"]]]],null],[2,"\\n"]],"parameters":[]}]]],[2,"\\n"],[6,[37,6],[[32,0,["activeSelectorComponent"]]],null,[["default"],[{"statements":[[2," "],[8,"koenig-media-selector",[],[["@editor","@editorRange","@replaceWithCardSection","@scrollContainerSelector","@close"],[[32,0,["editor"]],[32,0,["selectedRange"]],[30,[36,1],[[32,0],"replaceWithCardSection"],null],[32,0,["scrollContainerSelector"]],[30,[36,1],[[32,0],"closeSelectorComponent"],null]]],[["default"],[{"statements":[[2,"\\n "],[1,[30,[36,3],[[32,0,["activeSelectorComponent"]]],[["selector"],[[32,3]]]]],[2,"\\n "]],"parameters":[3]}]]],[2,"\\n"]],"parameters":[]}]]],[2,"\\n"],[8,"koenig-plus-menu",[],[["@editor","@editorRange","@snippets","@replaceWithCardSection","@replaceWithPost","@openSelectorComponent","@menuItems"],[[32,0,["editor"]],[32,0,["selectedRange"]],[32,0,["snippets"]],[30,[36,1],[[32,0],"replaceWithCardSection"],null],[30,[36,1],[[32,0],"replaceWithPost"],null],[30,[36,1],[[32,0],"openSelectorComponent"],null],[30,[36,7],null,[["postType","snippets","deleteSnippet"],[[32,7],[32,0,["snippets"]],[32,0,["deleteSnippet"]]]]]]],null],[2,"\\n\\n"],[8,"koenig-slash-menu",[],[["@editor","@editorRange","@snippets","@replaceWithCardSection","@replaceWithPost","@openSelectorComponent","@menuItems"],[[32,0,["editor"]],[32,0,["selectedRange"]],[32,0,["snippets"]],[30,[36,1],[[32,0],"replaceWithCardSection"],null],[30,[36,1],[[32,0],"replaceWithPost"],null],[30,[36,1],[[32,0],"openSelectorComponent"],null],[30,[36,7],null,[["postType","snippets","deleteSnippet"],[[32,7],[32,0,["snippets"]],[32,0,["deleteSnippet"]]]]]]],null],[2,"\\n\\n"],[6,[37,9],[[30,[36,8],[[30,[36,8],[[32,0,["componentCards"]]],null]],null]],null,[["default"],[{"statements":[[6,[37,4],[[32,2,["destinationElement"]]],[["guid","insertBefore"],["%cursor:1%",[29]]],[["default"],[{"statements":[[2," "],[1,[30,[36,3],[[32,2,["componentName"]]],[["editor","postModel","cardName","payload","env","options","headerOffset","saveCard","cancelCard","removeCard","scrollToCard","isSelected","isEditing","selectCard","deselectCard","editCard","deleteCard","saveAsSnippet","moveCursorToPrevSection","moveCursorToNextSection","addParagraphAfterCard","registerComponent"],[[32,0,["editor"]],[32,2,["postModel"]],[32,2,["cardName"]],[32,2,["payload"]],[32,2,["env"]],[32,2,["options"]],[32,0,["headerOffset"]],[30,[36,1],[[32,0],[32,2,["env","save"]]],null],[30,[36,1],[[32,0],[32,2,["env","cancel"]]],null],[30,[36,1],[[32,0],[32,2,["env","remove"]]],null],[30,[36,1],[[32,0],"_scrollToCard",[32,2]],null],[32,2,["isSelected"]],[32,2,["isEditing"]],[30,[36,1],[[32,0],"_selectCard",[32,2]],null],[30,[36,1],[[32,0],"_deselectCard",[32,2]],null],[30,[36,1],[[32,0],"_editCard",[32,2]],null],[30,[36,1],[[32,0],"_deleteCard",[32,2]],null],[30,[36,6],[[32,0,["saveCardAsSnippetIfPossible"]],[30,[36,2],[[30,[36,5],[[32,0,["saveCardAsSnippetIfPossible"]]],null],[32,2]],null]],null],[30,[36,1],[[32,0],"moveCursorToPrevSection",[32,2]],null],[30,[36,1],[[32,0],"moveCursorToNextSection",[32,2]],null],[30,[36,1],[[32,0],"addParagraphAfterCard",[32,2]],null],[30,[36,1],[[32,0],[30,[36,0],[[32,2,["component"]]],null]],null]]]]],[2,"\\n"]],"parameters":[]}]]]],"parameters":[2]}]]],[2,"\\n"],[6,[37,9],[[30,[36,8],[[30,[36,8],[[32,0,["componentAtoms"]]],null]],null]],null,[["default"],[{"statements":[[6,[37,4],[[32,1,["destinationElement"]]],[["guid","insertBefore"],["%cursor:0%",[29]]],[["default"],[{"statements":[[2," "],[1,[30,[36,3],[[32,1,["componentName"]]],[["editor","atom","saveAtom","registerComponent"],[[32,0,["editor"]],[32,1],[30,[36,2],[[32,1,["env","save"]],[32,1,["env","value"]],[32,1,["env","payload"]]],null],[30,[36,1],[[32,0],[30,[36,0],[[32,1,["component"]]],null]],null]]]]],[2,"\\n"]],"parameters":[]}]]]],"parameters":[1]}]]]],"hasEval":false,"upvars":["mut","action","fn","component","in-element","optional","if","card-menu-items","-track-array","each"]}',moduleName:"koenig-editor/components/koenig-editor.hbs"}),{countWords:de}=_.utils,ce="addComponent"
12382
12382
  e.ADD_CARD_HOOK=ce
12383
12383
  const he="removeComponent"
12384
12384
  e.REMOVE_CARD_HOOK=he
@@ -12612,24 +12612,21 @@ this._containerElem.style.top=`${r}px`}}},l(s.prototype,"didInsertContainer",[r]
12612
12612
  e.default=d,Ember._setComponentTemplate(u,d)})),define("koenig-editor/components/koenig-menu-content",["exports","@glimmer/component"],(function(e,t){"use strict"
12613
12613
  var r,n
12614
12614
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
12615
- const i=Ember.HTMLBars.template({id:"EWabgIGO",block:'{"symbols":["section","sectionIndex","item","@selectedItem","@itemClicked","@postType","@itemSections"],"statements":[[6,[37,10],[[30,[36,9],[[30,[36,9],[[32,7]],null]],null]],null,[["default"],[{"statements":[[6,[37,4],[[32,1,["items"]]],null,[["default"],[{"statements":[[6,[37,4],[[30,[36,13],[[30,[36,12],[[32,1,["developerExperiment"]]],null],[30,[36,11],null,null]],null]],null,[["default"],[{"statements":[[2," "],[10,"div"],[15,0,[31,["flex flex-column justify-center flex-shrink-0 ",[30,[36,8],[[30,[36,3],[[32,2],0],null],"mt3 bt b--whitegrey"],null]," mb2 pl4 pr4 pt3 midlightgrey ttu f-supersmall fw5 tracked-3"]]],[14,5,"min-width: calc(100% - 3.2rem);"],[12],[2,"\\n "],[1,[32,1,["title"]]],[2,"\\n "],[13],[2,"\\n"],[6,[37,10],[[30,[36,9],[[30,[36,9],[[32,1,["items"]]],null]],null]],null,[["default"],[{"statements":[[6,[37,4],[[30,[36,7],[[32,3]],[["postType"],[[32,6]]]]],null,[["default"],[{"statements":[[2," "],[11,"div"],[16,0,[31,[[30,[36,4],[[30,[36,3],[[32,3],[32,4]],null],"kg-cardmenu-card-selected"],null]," ",[30,[36,2],["cardmenu-card"],null]]]],[24,"data-kg","cardmenu-card"],[24,"role","menuitem"],[16,"title",[31,[[32,3,["label"]]]]],[4,[38,0],["click",[30,[36,5],[[32,5],[32,3]],null]],null],[4,[38,6],[[32,0,["scrollIntoView"]],[30,[36,3],[[32,3],[32,4]],null]],null],[12],[2,"\\n "],[10,"div"],[15,0,[31,[[30,[36,2],["cardmenu-icon"],null]," ",[32,3,["iconClass"]]]]],[14,"aria-hidden","true"],[12],[1,[30,[36,1],[[32,3,["icon"]]],[["class"],["w7 h7"]]]],[13],[2,"\\n "],[10,"div"],[15,0,[31,[[30,[36,2],["cardmenu-text"],null]]]],[12],[2,"\\n "],[10,"div"],[15,0,[31,[[30,[36,2],["cardmenu-label"],null]]]],[12],[1,[32,3,["label"]]],[13],[2,"\\n "],[10,"div"],[15,0,[31,[[30,[36,2],["cardmenu-desc"],null]]]],[12],[1,[32,3,["desc"]]],[13],[2,"\\n "],[13],[2,"\\n"],[6,[37,4],[[32,3,["deleteClicked"]]],null,[["default"],[{"statements":[[2," "],[11,"span"],[24,0,"kg-cardmenu-action-icon red"],[4,[38,0],["click",[32,3,["deleteClicked"]]],null],[12],[1,[30,[36,1],["trash"],null]],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n"]],"parameters":[]}]]]],"parameters":[3]}]]]],"parameters":[]}]]]],"parameters":[]}]]]],"parameters":[1,2]}]]]],"hasEval":false,"upvars":["on","svg-jar","kg-style","eq","if","fn","did-update","card-is-available","unless","-track-array","each","enable-developer-experiments","not","or"]}',moduleName:"koenig-editor/components/koenig-menu-content.hbs"})
12615
+ const i=Ember.HTMLBars.template({id:"Q5tkV3DX",block:'{"symbols":["section","sectionIndex","item","@selectedItem","@itemClicked","@itemSections"],"statements":[[6,[37,9],[[30,[36,8],[[30,[36,8],[[32,6]],null]],null]],null,[["default"],[{"statements":[[6,[37,4],[[32,1,["items"]]],null,[["default"],[{"statements":[[2," "],[10,"div"],[15,0,[31,["flex flex-column justify-center flex-shrink-0 ",[30,[36,7],[[30,[36,3],[[32,2],0],null],"mt3 bt b--whitegrey"],null]," mb2 pl4 pr4 pt3 midlightgrey ttu f-supersmall fw5 tracked-3"]]],[14,5,"min-width: calc(100% - 3.2rem);"],[12],[2,"\\n "],[1,[32,1,["title"]]],[2,"\\n "],[13],[2,"\\n"],[6,[37,9],[[30,[36,8],[[30,[36,8],[[32,1,["items"]]],null]],null]],null,[["default"],[{"statements":[[2," "],[11,"div"],[16,0,[31,[[30,[36,4],[[30,[36,3],[[32,3],[32,4]],null],"kg-cardmenu-card-selected"],null]," ",[30,[36,2],["cardmenu-card"],null]]]],[24,"data-kg","cardmenu-card"],[24,"role","menuitem"],[16,"title",[31,[[32,3,["label"]]]]],[4,[38,0],["click",[30,[36,5],[[32,5],[32,3]],null]],null],[4,[38,6],[[32,0,["scrollIntoView"]],[30,[36,3],[[32,3],[32,4]],null]],null],[12],[2,"\\n "],[10,"div"],[15,0,[31,[[30,[36,2],["cardmenu-icon"],null]," ",[32,3,["iconClass"]]]]],[14,"aria-hidden","true"],[12],[1,[30,[36,1],[[32,3,["icon"]]],[["class"],["w7 h7"]]]],[13],[2,"\\n "],[10,"div"],[15,0,[31,[[30,[36,2],["cardmenu-text"],null]]]],[12],[2,"\\n "],[10,"div"],[15,0,[31,[[30,[36,2],["cardmenu-label"],null]]]],[12],[1,[32,3,["label"]]],[13],[2,"\\n "],[10,"div"],[15,0,[31,[[30,[36,2],["cardmenu-desc"],null]]]],[12],[1,[32,3,["desc"]]],[13],[2,"\\n "],[13],[2,"\\n"],[6,[37,4],[[32,3,["deleteClicked"]]],null,[["default"],[{"statements":[[2," "],[11,"span"],[24,0,"kg-cardmenu-action-icon red"],[4,[38,0],["click",[32,3,["deleteClicked"]]],null],[12],[1,[30,[36,1],["trash"],null]],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n"]],"parameters":[3]}]]]],"parameters":[]}]]]],"parameters":[1,2]}]]]],"hasEval":false,"upvars":["on","svg-jar","kg-style","eq","if","fn","did-update","unless","-track-array","each"]}',moduleName:"koenig-editor/components/koenig-menu-content.hbs"})
12616
12616
  let o=(r=Ember._action,n=class extends t.default{scrollIntoView(e,t){let[r]=t
12617
12617
  r&&e.scrollIntoView({behavior:"smooth",block:"nearest"})}},a=n.prototype,s="scrollIntoView",l=[r],u=Object.getOwnPropertyDescriptor(n.prototype,"scrollIntoView"),d=n.prototype,c={},Object.keys(u).forEach((function(e){c[e]=u[e]})),c.enumerable=!!c.enumerable,c.configurable=!!c.configurable,("value"in c||c.initializer)&&(c.writable=!0),c=l.slice().reverse().reduce((function(e,t){return t(a,s,e)||e}),c),d&&void 0!==c.initializer&&(c.value=c.initializer?c.initializer.call(d):void 0,c.initializer=void 0),void 0===c.initializer&&(Object.defineProperty(a,s,c),c=null),n)
12618
12618
  var a,s,l,u,d,c
12619
- e.default=o,Ember._setComponentTemplate(i,o)})),define("koenig-editor/components/koenig-plus-menu",["exports","mobiledoc-kit/parsers/mobiledoc","koenig-editor/utils/snippet-icon","koenig-editor/options/cards","@ember-decorators/component"],(function(e,t,r,n,i){"use strict"
12620
- var o,a,s,l,u,d,c,h,p
12621
- function f(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e
12619
+ e.default=o,Ember._setComponentTemplate(i,o)})),define("koenig-editor/components/koenig-plus-menu",["exports","mobiledoc-kit/parsers/mobiledoc","@ember-decorators/component"],(function(e,t,r){"use strict"
12620
+ var n,i,o,a,s,l,u,d
12621
+ function c(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e
12622
12622
  var r=e[Symbol.toPrimitive]
12623
12623
  if(void 0!==r){var n=r.call(e,t||"default")
12624
12624
  if("object"!=typeof n)return n
12625
12625
  throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string")
12626
- 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 m(e,t,r,n,i){var o={}
12626
+ 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 h(e,t,r,n,i){var o={}
12627
12627
  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
12628
- const g=Ember.HTMLBars.template({id:"ZLIRTD7a",block:'{"symbols":["@postType"],"statements":[[6,[37,3],[[32,0,["showButton"]]],null,[["default"],[{"statements":[[2," "],[10,"button"],[14,"aria-label","Add a card"],[14,0,"koenig-plus-menu-button flex justify-center items-center relative w7 h7 w9-ns h9-ns ba b--midlightgrey-l2 bg-white br-100 anim-normal"],[15,"onclick",[30,[36,1],[[32,0],"openMenu"],null]],[14,4,"button"],[12],[1,[30,[36,2],["plus"],[["class"],["w4 h4 stroke-middarkgrey"]]]],[13],[2,"\\n"]],"parameters":[]}]]],[2,"\\n"],[6,[37,3],[[32,0,["showMenu"]]],null,[["default"],[{"statements":[[2," "],[10,"div"],[15,0,[31,[[30,[36,0],["cardmenu"],null]," pa0"]]],[14,"role","menu"],[12],[2,"\\n"],[2," "],[8,"koenig-menu-content",[],[["@itemSections","@itemClicked","@postType"],[[32,0,["itemSections"]],[30,[36,1],[[32,0],"itemClicked"],null],[32,1]]],null],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]]],"hasEval":false,"upvars":["kg-style","action","svg-jar","if"]}',moduleName:"koenig-editor/components/koenig-plus-menu.hbs"})
12629
- let v=(o=(0,i.classNames)("absolute"),a=(0,i.attributeBindings)("style","data-kg"),s=Ember.computed("top"),l=Ember.computed("snippets.[]"),u=Ember._action,d=Ember._action,c=Ember._action,o(h=a((p=class extends Ember.Component{constructor(){super(...arguments),f(this,"editor",null),f(this,"editorRange",null),f(this,"snippets",null),f(this,"showButton",!1),f(this,"showMenu",!1),f(this,"top",0),f(this,"data-kg","plus-menu"),f(this,"_onResizeHandler",null),f(this,"_onWindowMousedownHandler",null),f(this,"_lastEditorRange",null),f(this,"_hasCursorButton",!1),f(this,"_onMousemoveHandler",null),f(this,"_onKeydownHandler",null)}replaceWithCardSection(){}get style(){return Ember.String.htmlSafe(`top: ${this.top}px`)}get itemSections(){let{snippets:e}=this,t=[...n.CARD_MENU]
12630
- if(e?.length){let n={title:"Snippets",items:[],rowLength:1}
12631
- e.forEach((e=>{let t={label:e.name,icon:(0,r.default)(e),type:"snippet",matches:[e.name.toLowerCase()]}
12632
- this.deleteSnippet&&(t.deleteClicked=t=>{t.preventDefault(),t.stopImmediatePropagation(),this.deleteSnippet(e)}),n.items.push(t)})),t.push(n)}return t}init(){super.init(...arguments),this._onResizeHandler=Ember.run.bind(this,this._handleResize),window.addEventListener("resize",this._onResizeHandler),this._onMousemoveHandler=Ember.run.bind(this,this._mousemoveRaf),window.addEventListener("mousemove",this._onMousemoveHandler)}didReceiveAttrs(){super.didReceiveAttrs(...arguments)
12628
+ const p=Ember.HTMLBars.template({id:"UFhfaQAV",block:'{"symbols":["@menuItems","@postType"],"statements":[[6,[37,3],[[32,0,["showButton"]]],null,[["default"],[{"statements":[[2," "],[10,"button"],[14,"aria-label","Add a card"],[14,0,"koenig-plus-menu-button flex justify-center items-center relative w7 h7 w9-ns h9-ns ba b--midlightgrey-l2 bg-white br-100 anim-normal"],[15,"onclick",[30,[36,1],[[32,0],"openMenu"],null]],[14,4,"button"],[12],[1,[30,[36,2],["plus"],[["class"],["w4 h4 stroke-middarkgrey"]]]],[13],[2,"\\n"]],"parameters":[]}]]],[2,"\\n"],[6,[37,3],[[32,0,["showMenu"]]],null,[["default"],[{"statements":[[2," "],[10,"div"],[15,0,[31,[[30,[36,0],["cardmenu"],null]," pa0"]]],[14,"role","menu"],[12],[2,"\\n"],[2," "],[8,"koenig-menu-content",[],[["@itemSections","@itemClicked","@postType"],[[32,1],[30,[36,1],[[32,0],"itemClicked"],null],[32,2]]],null],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]]],"hasEval":false,"upvars":["kg-style","action","svg-jar","if"]}',moduleName:"koenig-editor/components/koenig-plus-menu.hbs"})
12629
+ let f=(n=(0,r.classNames)("absolute"),i=(0,r.attributeBindings)("style","data-kg"),o=Ember.computed("top"),a=Ember._action,s=Ember._action,l=Ember._action,n(u=i((d=class extends Ember.Component{constructor(){super(...arguments),c(this,"editor",null),c(this,"editorRange",null),c(this,"snippets",null),c(this,"showButton",!1),c(this,"showMenu",!1),c(this,"top",0),c(this,"data-kg","plus-menu"),c(this,"_onResizeHandler",null),c(this,"_onWindowMousedownHandler",null),c(this,"_lastEditorRange",null),c(this,"_hasCursorButton",!1),c(this,"_onMousemoveHandler",null),c(this,"_onKeydownHandler",null)}replaceWithCardSection(){}get style(){return Ember.String.htmlSafe(`top: ${this.top}px`)}init(){super.init(...arguments),this._onResizeHandler=Ember.run.bind(this,this._handleResize),window.addEventListener("resize",this._onResizeHandler),this._onMousemoveHandler=Ember.run.bind(this,this._mousemoveRaf),window.addEventListener("mousemove",this._onMousemoveHandler)}didReceiveAttrs(){super.didReceiveAttrs(...arguments)
12633
12630
  let e=this.editorRange
12634
12631
  this.showMenu||e===this._lastEditorRange||(this._showOrHideButton(e),this._hasCursorButton=this.showButton),this.showButton&&Ember.run.next(this,this._positionMenu),this._ignoreRangeChange||!this.showMenu||!e||e.isBlank||e.isEqual(this._lastEditorRange)||this._hideMenu(),this._lastEditorRange=e,this._ignoreRangeChange=!1}willDestroyElement(){super.willDestroyElement(...arguments),Ember.run.cancel(this._throttleResize),window.removeEventListener("mousedown",this._onWindowMousedownHandler),window.removeEventListener("resize",this._onResizeHandler),window.removeEventListener("mousemove",this._onMousemoveHandler),window.removeEventListener("keydown",this._onKeydownHandler)}openMenu(){this._showMenu()}closeMenu(){this._hideMenu()}itemClicked(e,r){r&&r.preventDefault()
12635
12632
  let n=this._editorRange
@@ -12645,8 +12642,8 @@ e&&e.focus()}_handleWindowMousedown(e){e.target.closest(`#${this.elementId}, .fu
12645
12642
  r<this.element.parentNode.getBoundingClientRect().left&&(r+=40)
12646
12643
  try{let e=i.positionAtPoint(r,n)
12647
12644
  if(e){let t=e.toRange()
12648
- this._showOrHideButton(t)}}catch(t){t instanceof TypeError==!1&&console.error(t)}!this.showButton&&this._hasCursorButton&&this._showOrHideButton(this.editorRange)}this._mousemoveTicking=!1}_handleKeydown(e){if("Escape"===e.key)return this._moveCaretToCachedEditorRange(),void this._hideMenu();["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(e.key)&&this._hideMenu()}_handleResize(){this.showButton&&(this._throttleResize=Ember.run.throttle(this,this._positionMenu,100))}_moveCaretToCachedEditorRange(){this._ignoreRangeChange=!0,this.set("editorRange",this._editorRange),this.editor.selectRange(this._editorRange)}},m(p.prototype,"style",[s],Object.getOwnPropertyDescriptor(p.prototype,"style"),p.prototype),m(p.prototype,"itemSections",[l],Object.getOwnPropertyDescriptor(p.prototype,"itemSections"),p.prototype),m(p.prototype,"openMenu",[u],Object.getOwnPropertyDescriptor(p.prototype,"openMenu"),p.prototype),m(p.prototype,"closeMenu",[d],Object.getOwnPropertyDescriptor(p.prototype,"closeMenu"),p.prototype),m(p.prototype,"itemClicked",[c],Object.getOwnPropertyDescriptor(p.prototype,"itemClicked"),p.prototype),h=p))||h)||h)
12649
- e.default=v,Ember._setComponentTemplate(g,v)})),define("koenig-editor/components/koenig-settings-panel",["exports","@glimmer/component","ember-concurrency"],(function(e,t,r){"use strict"
12645
+ this._showOrHideButton(t)}}catch(t){t instanceof TypeError==!1&&console.error(t)}!this.showButton&&this._hasCursorButton&&this._showOrHideButton(this.editorRange)}this._mousemoveTicking=!1}_handleKeydown(e){if("Escape"===e.key)return this._moveCaretToCachedEditorRange(),void this._hideMenu();["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(e.key)&&this._hideMenu()}_handleResize(){this.showButton&&(this._throttleResize=Ember.run.throttle(this,this._positionMenu,100))}_moveCaretToCachedEditorRange(){this._ignoreRangeChange=!0,this.set("editorRange",this._editorRange),this.editor.selectRange(this._editorRange)}},h(d.prototype,"style",[o],Object.getOwnPropertyDescriptor(d.prototype,"style"),d.prototype),h(d.prototype,"openMenu",[a],Object.getOwnPropertyDescriptor(d.prototype,"openMenu"),d.prototype),h(d.prototype,"closeMenu",[s],Object.getOwnPropertyDescriptor(d.prototype,"closeMenu"),d.prototype),h(d.prototype,"itemClicked",[l],Object.getOwnPropertyDescriptor(d.prototype,"itemClicked"),d.prototype),u=d))||u)||u)
12646
+ e.default=f,Ember._setComponentTemplate(p,f)})),define("koenig-editor/components/koenig-settings-panel",["exports","@glimmer/component","ember-concurrency"],(function(e,t,r){"use strict"
12650
12647
  var n,i,o,a,s
12651
12648
  function l(e,t,r,n,i){var o={}
12652
12649
  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
@@ -12660,28 +12657,25 @@ o+t.width>window.innerWidth-20&&(o=window.innerWidth-t.width-20),e.style.top=`${
12660
12657
  const i=e.getBoundingClientRect(),o=i.top<0,a=i.bottom>window.innerHeight
12661
12658
  if(o&&a)return{x:r,y:n}
12662
12659
  if(o){return{x:r,y:n+(Math.abs(i.top)+10)}}if(a){return{x:r,y:n+(-Math.abs(i.bottom-window.innerHeight)-10)}}return{x:r,y:n}}},l(s.prototype,"registerAndPosition",[n],Object.getOwnPropertyDescriptor(s.prototype,"registerAndPosition"),s.prototype),l(s.prototype,"positionPanel",[i],Object.getOwnPropertyDescriptor(s.prototype,"positionPanel"),s.prototype),l(s.prototype,"debounceWindowResizeTask",[o],Object.getOwnPropertyDescriptor(s.prototype,"debounceWindowResizeTask"),s.prototype),l(s.prototype,"calculateResizeAdjustment",[a],Object.getOwnPropertyDescriptor(s.prototype,"calculateResizeAdjustment"),s.prototype),s)
12663
- e.default=d,Ember._setComponentTemplate(u,d)})),define("koenig-editor/components/koenig-slash-menu",["exports","@glimmer/component","mobiledoc-kit/parsers/mobiledoc","koenig-editor/utils/snippet-icon","koenig-editor/options/cards"],(function(e,t,r,n,i){"use strict"
12664
- var o,a,s,l,u,d,c,h,p,f,m,g,v,b
12665
- function y(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,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e
12660
+ e.default=d,Ember._setComponentTemplate(u,d)})),define("koenig-editor/components/koenig-slash-menu",["exports","@glimmer/component","mobiledoc-kit/parsers/mobiledoc"],(function(e,t,r){"use strict"
12661
+ var n,i,o,a,s,l,u,d,c,h,p,f,m,g
12662
+ function v(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 b(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e
12666
12663
  var r=e[Symbol.toPrimitive]
12667
12664
  if(void 0!==r){var n=r.call(e,t||"default")
12668
12665
  if("object"!=typeof n)return n
12669
12666
  throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string")
12670
- 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={}
12667
+ 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 y(e,t,r,n,i){var o={}
12671
12668
  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
12672
- const k=Ember.HTMLBars.template({id:"Mpu1fvcX",block:'{"symbols":["&attrs","@editor","@editorRange","@snippets"],"statements":[[11,"div"],[24,1,"koenig-slash-menu"],[24,0,"absolute"],[17,1],[4,[38,1],[[32,0,["registerContainerElement"]]],null],[4,[38,2],[[32,0,["registerEditor"]],[32,2]],null],[4,[38,2],[[32,0,["handleCursorChange"]],[32,3]],null],[4,[38,2],[[32,0,["updateItemSections"]],[32,4]],null],[12],[2,"\\n"],[6,[37,4],[[30,[36,3],[[32,0,["showMenu"]],[32,0,["itemSections"]]],null]],null,[["default"],[{"statements":[[2," "],[10,"div"],[15,0,[31,["koenig-cardmenu ",[30,[36,0],["cardmenu"],null]]]],[14,"role","menu"],[12],[2,"\\n "],[8,"koenig-menu-content",[],[["@itemSections","@selectedItem","@itemClicked"],[[32,0,["itemSections"]],[32,0,["selectedItem"]],[32,0,["itemClicked"]]]],null],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[13]],"hasEval":false,"upvars":["kg-style","did-insert","did-update","and","if"]}',moduleName:"koenig-editor/components/koenig-slash-menu.hbs"})
12673
- let w=(o=Ember._tracked,a=Ember._tracked,s=Ember._tracked,l=Ember._tracked,u=Ember._action,d=Ember._action,c=Ember._action,h=Ember._action,p=Ember._action,f=class extends t.default{constructor(){super(...arguments),y(this,"itemSections",m,this),y(this,"showMenu",g,this),y(this,"selectedRowIndex",v,this),y(this,"selectedColumnIndex",b,this),_(this,"query",""),this.registerEditor(null,[this.args.editor])}willDestroy(){super.willDestroy?.(...arguments),window.removeEventListener("mousedown",this._onWindowMousedownHandler)}get itemMap(){let e=[]
12669
+ const _=Ember.HTMLBars.template({id:"Mpu1fvcX",block:'{"symbols":["&attrs","@editor","@editorRange","@snippets"],"statements":[[11,"div"],[24,1,"koenig-slash-menu"],[24,0,"absolute"],[17,1],[4,[38,1],[[32,0,["registerContainerElement"]]],null],[4,[38,2],[[32,0,["registerEditor"]],[32,2]],null],[4,[38,2],[[32,0,["handleCursorChange"]],[32,3]],null],[4,[38,2],[[32,0,["updateItemSections"]],[32,4]],null],[12],[2,"\\n"],[6,[37,4],[[30,[36,3],[[32,0,["showMenu"]],[32,0,["itemSections"]]],null]],null,[["default"],[{"statements":[[2," "],[10,"div"],[15,0,[31,["koenig-cardmenu ",[30,[36,0],["cardmenu"],null]]]],[14,"role","menu"],[12],[2,"\\n "],[8,"koenig-menu-content",[],[["@itemSections","@selectedItem","@itemClicked"],[[32,0,["itemSections"]],[32,0,["selectedItem"]],[32,0,["itemClicked"]]]],null],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[13]],"hasEval":false,"upvars":["kg-style","did-insert","did-update","and","if"]}',moduleName:"koenig-editor/components/koenig-slash-menu.hbs"})
12670
+ let E=(n=Ember._tracked,i=Ember._tracked,o=Ember._tracked,a=Ember._tracked,s=Ember._action,l=Ember._action,u=Ember._action,d=Ember._action,c=Ember._action,h=class extends t.default{constructor(){super(...arguments),v(this,"itemSections",p,this),v(this,"showMenu",f,this),v(this,"selectedRowIndex",m,this),v(this,"selectedColumnIndex",g,this),b(this,"query",""),this.registerEditor(null,[this.args.editor])}willDestroy(){super.willDestroy?.(...arguments),window.removeEventListener("mousedown",this._onWindowMousedownHandler)}get itemMap(){let e=[]
12674
12671
  return this.itemSections.forEach((t=>{let r=Math.ceil(t.items.length/t.rowLength)
12675
12672
  for(let n=0;n<r;n++){let r=n*t.rowLength
12676
- e.push(t.items.slice(r,r+t.rowLength))}})),e}get selectedItem(){return this.itemMap[this.selectedRowIndex]?.[this.selectedColumnIndex]}updateItemSections(){let{snippets:e}=this.args,t=[...i.CARD_MENU]
12677
- if(e?.length){let r={title:"Snippets",items:[],rowLength:1}
12678
- e.forEach((e=>{let t={label:e.name,icon:(0,n.default)(e),type:"snippet",matches:t=>e.name.toLowerCase().indexOf(t)>-1}
12679
- this.args.deleteSnippet&&(t.deleteClicked=t=>{t.preventDefault(),t.stopImmediatePropagation(),this.args.deleteSnippet(e)}),r.items.push(t)})),t.push(r)}let r=(e=>{let t=e.split(/\s/)[0].replace(/^\//,"")
12680
- return r=>!e||(Ember.isArray(r.matches)?!t||r.matches.any((e=>0===e.indexOf(t.toLowerCase()))):"function"==typeof r.matches&&r.matches(e))})(this.query),o=t.map((e=>{let t=e.items.filter(r)
12681
- if(t.length>0)return Object.assign({},e,{items:t})})).compact()
12673
+ e.push(t.items.slice(r,r+t.rowLength))}})),e}get selectedItem(){return this.itemMap[this.selectedRowIndex]?.[this.selectedColumnIndex]}updateItemSections(){let e=[...this.args.menuItems],t=(e=>{let t=e.split(/\s/)[0].replace(/^\//,"")
12674
+ return r=>!e||(Ember.isArray(r.matches)?!t||r.matches.any((e=>0===e.indexOf(t.toLowerCase()))):"function"==typeof r.matches&&r.matches(e))})(this.query),r=e.map((e=>{let r=e.items.filter(t)
12675
+ if(r.length>0)return Object.assign({},e,{items:r})})).compact()
12682
12676
  this.query!==this._lastQuery&&(this.selectedRowIndex=0,this.selectedColumnIndex=0)
12683
- const a=o[0]?.items[0]
12684
- "selector"!==a?.type&&!0!==a?.insertOnSpace||" "!==this.query.charAt(this.query.length-1)||this.itemClicked(o[0].items[0]),this.itemSections=o}registerContainerElement(e){this.containerElement=e}registerEditor(e,t){let[r]=t
12677
+ const n=r[0]?.items[0]
12678
+ "selector"!==n?.type&&!0!==n?.insertOnSpace||" "!==this.query.charAt(this.query.length-1)||this.itemClicked(r[0].items[0]),this.itemSections=r}registerContainerElement(e){this.containerElement=e}registerEditor(e,t){let[r]=t
12685
12679
  r.onTextInput({name:"slash_menu",text:"/",run:this._showMenu.bind(this)})}handleCursorChange(e,t){let[r]=t
12686
12680
  if(this._positionMenu(r),this.showMenu&&r){let{head:{section:e}}=r
12687
12681
  if(e&&(e.text||""===e.text)&&0!==e.text.indexOf("/"))return void this._hideMenu()
@@ -12699,8 +12693,8 @@ this.containerElement.style.top=`${n}px`}}_showMenu(){let{editorRange:e}=this.ar
12699
12693
  if(Ember.isEmpty(t))return
12700
12694
  let i=t.length-1,o=t[r].length-1
12701
12695
  "right"===e?(n+=1,n>o&&(r<i?r+=1:r=0,n=0)):"left"===e?(n-=1,n<0&&(r>0?r-=1:r=t.length-1,n=t[r].length-1)):"up"===e?(r-=1,r<0&&(r=i)):"down"===e&&(r+=1,r>i&&(r=0)),n>t[r].length-1&&(n=t[r].length-1),this.selectedRowIndex=r,this.selectedColumnIndex=n}_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
12702
- 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=E(f.prototype,"itemSections",[o],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return[]}}),g=E(f.prototype,"showMenu",[a],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),v=E(f.prototype,"selectedRowIndex",[s],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return 0}}),b=E(f.prototype,"selectedColumnIndex",[l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return 0}}),E(f.prototype,"updateItemSections",[u],Object.getOwnPropertyDescriptor(f.prototype,"updateItemSections"),f.prototype),E(f.prototype,"registerContainerElement",[d],Object.getOwnPropertyDescriptor(f.prototype,"registerContainerElement"),f.prototype),E(f.prototype,"registerEditor",[c],Object.getOwnPropertyDescriptor(f.prototype,"registerEditor"),f.prototype),E(f.prototype,"handleCursorChange",[h],Object.getOwnPropertyDescriptor(f.prototype,"handleCursorChange"),f.prototype),E(f.prototype,"itemClicked",[p],Object.getOwnPropertyDescriptor(f.prototype,"itemClicked"),f.prototype),f)
12703
- e.default=w,Ember._setComponentTemplate(k,w)})),define("koenig-editor/components/koenig-snippet-input",["exports","@glimmer/component","koenig-editor/utils/get-scroll-parent","koenig-editor/components/koenig-toolbar"],(function(e,t,r,n){"use strict"
12696
+ 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")}},p=y(h.prototype,"itemSections",[n],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return[]}}),f=y(h.prototype,"showMenu",[i],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),m=y(h.prototype,"selectedRowIndex",[o],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return 0}}),g=y(h.prototype,"selectedColumnIndex",[a],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return 0}}),y(h.prototype,"updateItemSections",[s],Object.getOwnPropertyDescriptor(h.prototype,"updateItemSections"),h.prototype),y(h.prototype,"registerContainerElement",[l],Object.getOwnPropertyDescriptor(h.prototype,"registerContainerElement"),h.prototype),y(h.prototype,"registerEditor",[u],Object.getOwnPropertyDescriptor(h.prototype,"registerEditor"),h.prototype),y(h.prototype,"handleCursorChange",[d],Object.getOwnPropertyDescriptor(h.prototype,"handleCursorChange"),h.prototype),y(h.prototype,"itemClicked",[c],Object.getOwnPropertyDescriptor(h.prototype,"itemClicked"),h.prototype),h)
12697
+ e.default=E,Ember._setComponentTemplate(_,E)})),define("koenig-editor/components/koenig-snippet-input",["exports","@glimmer/component","koenig-editor/utils/get-scroll-parent","koenig-editor/components/koenig-toolbar"],(function(e,t,r,n){"use strict"
12704
12698
  var i,o,a,s,l,u,d,c,h,p,f
12705
12699
  function m(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 g(e,t,r,n,i){var o={}
12706
12700
  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
@@ -12782,13 +12776,16 @@ let o=50
12782
12776
  if(i.left<0){i.left=0,o=(t.left-e.left+t.width/2)/r*100,o<5&&(o=5)}if(i.left+r>e.width){i.left=null,i.right=0,o=100+(t.right-e.right-t.width/2)/r*100,o>95&&(o=95)}this._removeStyleElement(),50!==o&&this._addStyleElement(o),this.setProperties(i)}_addStyleElement(e){let t=`left: calc(${e}% - 10px);`,r=`left: calc(${e}% - 8px);`,n=document.createElement("style")
12783
12777
  n.id=`${this.elementId}-style`,n.innerHTML=`\n #${this.elementId} > ul:before { ${t} }\n #${this.elementId} > ul:after { ${r} }\n `,document.head.appendChild(n)}_removeStyleElement(){let e=document.querySelector(`#${this.elementId}-style`)
12784
12778
  e&&e.remove()}},f=b(p.prototype,"feature",[o],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),b(p.prototype,"style",[a],Object.getOwnPropertyDescriptor(p.prototype,"style"),p.prototype),b(p.prototype,"_toggleMarkup",[s],Object.getOwnPropertyDescriptor(p.prototype,"_toggleMarkup"),p.prototype),b(p.prototype,"toggleQuoteSection",[l],Object.getOwnPropertyDescriptor(p.prototype,"toggleQuoteSection"),p.prototype),b(p.prototype,"_toggleHeaderSection",[u],Object.getOwnPropertyDescriptor(p.prototype,"_toggleHeaderSection"),p.prototype),b(p.prototype,"_editLink",[d],Object.getOwnPropertyDescriptor(p.prototype,"_editLink"),p.prototype),m=b(p.prototype,"_toggleVisibility",[c],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),h=p))||h)||h)
12785
- e.default=_,Ember._setComponentTemplate(y,_)})),define("koenig-editor/helpers/card-is-available",["exports","ghost-admin/decorators/inject"],(function(e,t){"use strict"
12786
- var r,n,i,o,a,s
12787
- function l(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 u(e,t,r,n,i){var o={}
12779
+ e.default=_,Ember._setComponentTemplate(y,_)})),define("koenig-editor/helpers/card-menu-items",["exports","koenig-editor/utils/snippet-icon","koenig-editor/options/cards","ghost-admin/decorators/inject"],(function(e,t,r,n){"use strict"
12780
+ var i,o,a,s,l,u
12781
+ function d(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 c(e,t,r,n,i){var o={}
12788
12782
  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
12789
- let d=(r=Ember.inject.service,n=Ember.inject.service,i=class extends Ember.Helper{constructor(){super(...arguments),l(this,"feature",o,this),l(this,"settings",a,this),l(this,"config",s,this)}compute(e){let[t]=e,{postType:r}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=!0
12790
- return"string"==typeof t.isAvailable&&(n=Ember.get(this,t.isAvailable)),Ember.isArray(t.isAvailable)&&(n=t.isAvailable.every((e=>Ember.get(this,e)))),t.developerExperiment&&(n=n&&this.config.enableDeveloperExperiments),r&&t.postType&&(n=n&&t.postType===r),n}},o=u(i.prototype,"feature",[r],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),a=u(i.prototype,"settings",[n],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),s=u(i.prototype,"config",[t.inject],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),i)
12791
- e.default=d})),define("koenig-editor/helpers/clean-basic-html",["exports","@tryghost/kg-clean-basic-html"],(function(e,t){"use strict"
12783
+ let h=(i=Ember.inject.service,o=Ember.inject.service,a=class extends Ember.Helper{constructor(){super(...arguments),d(this,"feature",s,this),d(this,"settings",l,this),d(this,"config",u,this)}compute(e){let{postType:n,snippets:i,deleteSnippet:o}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=JSON.parse(JSON.stringify(r.CARD_MENU))
12784
+ if(a=a.filter((e=>!e.developerExperiment||this.config.enableDeveloperExperiments)),a.forEach((e=>{e.items=e.items.filter((e=>{let t=!0
12785
+ return"string"==typeof e.isAvailable&&(t=Ember.get(this,e.isAvailable)),Ember.isArray(e.isAvailable)&&(t=e.isAvailable.every((e=>Ember.get(this,e)))),e.developerExperiment&&(t=t&&this.config.enableDeveloperExperiments),n&&e.postType&&(t=t&&e.postType===n),t}))})),i?.length){let e={title:"Snippets",items:[],rowLength:1}
12786
+ i.forEach((r=>{let n={label:r.name,icon:(0,t.default)(r),type:"snippet",matches:e=>r.name.toLowerCase().indexOf(e)>-1}
12787
+ o&&(n.deleteClicked=e=>{e.preventDefault(),e.stopImmediatePropagation(),o(r)}),e.items.push(n)})),a.push(e)}return a}},s=c(a.prototype,"feature",[i],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),l=c(a.prototype,"settings",[o],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),u=c(a.prototype,"config",[n.inject],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),a)
12788
+ e.default=h})),define("koenig-editor/helpers/clean-basic-html",["exports","@tryghost/kg-clean-basic-html"],(function(e,t){"use strict"
12792
12789
  function r(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:""
12793
12790
  return Ember.isArray(e)&&(e=e[0]||""),(0,t.default)(e)}Object.defineProperty(e,"__esModule",{value:!0}),e.cleanBasicHtmlHelper=r,e.default=void 0
12794
12791
  var n=Ember.Helper.helper(r)
@@ -13677,4 +13674,4 @@ return void 0===n&&(n=(0,t.createStorage)(null,(()=>!1)),r.set(e,n)),n}dirtyStor
13677
13674
  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"
13678
13675
  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}})}))
13679
13676
 
13680
- //# sourceMappingURL=vendor-fadbf85ad92c591dc4bd3755312b6ddf.map
13677
+ //# sourceMappingURL=vendor-0441964c34d58f2aacd5a04bbe240243.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.30%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%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.31%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%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-d3e45940f0f1601232d464d0b429d45f.css" title="light">
40
+ <link integrity="" rel="stylesheet" href="assets/ghost-721a7adc4ca642c88e4ac85e1cb8b385.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-fadbf85ad92c591dc4bd3755312b6ddf.js"></script>
59
+ <script src="assets/vendor-0441964c34d58f2aacd5a04bbe240243.js"></script>
60
60
  <script src="assets/chunk.47.f29250a4560868c21293.js"></script>
61
- <script src="assets/chunk.143.f9aa3f7f1c45d1d921cd.js"></script>
62
- <script src="assets/ghost-23dc524374e35a582886c36f7dacdb05.js"></script>
61
+ <script src="assets/chunk.143.7ef8d39b50a9ef3d6a6b.js"></script>
62
+ <script src="assets/ghost-fc0450a45ea5be2e5a10c4d897d5b430.js"></script>
63
63
  </body>
64
64
  </html>
@@ -83,6 +83,17 @@ function getSearchHelper(frontendKey) {
83
83
  return helper;
84
84
  }
85
85
 
86
+ function getWebmentionDiscoveryLink() {
87
+ try {
88
+ const siteUrl = urlUtils.getSiteUrl();
89
+ const webmentionUrl = new URL('webmentions/receive/', siteUrl);
90
+ return `<link href="${webmentionUrl.href}" rel="webmention" />`;
91
+ } catch (err) {
92
+ logging.warn(err);
93
+ return '';
94
+ }
95
+ }
96
+
86
97
  /**
87
98
  * **NOTE**
88
99
  * Express adds `_locals`, see https://github.com/expressjs/express/blob/4.15.4/lib/response.js#L962.
@@ -215,6 +226,11 @@ module.exports = async function ghost_head(options) { // eslint-disable-line cam
215
226
  if (!_.includes(context, 'amp')) {
216
227
  head.push(getMembersHelper(options.data, frontendKey));
217
228
  head.push(getSearchHelper(frontendKey));
229
+ try {
230
+ head.push(getWebmentionDiscoveryLink());
231
+ } catch (err) {
232
+ logging.warn(err);
233
+ }
218
234
 
219
235
  // @TODO do this in a more "frameworky" way
220
236
  if (cardAssetService.hasFile('js')) {
@@ -57,6 +57,10 @@ module.exports = {
57
57
  return apiFramework.pipeline(require('./posts'), localUtils);
58
58
  },
59
59
 
60
+ get mentions() {
61
+ return apiFramework.pipeline(require('./mentions'), localUtils);
62
+ },
63
+
60
64
  get invites() {
61
65
  return apiFramework.pipeline(require('./invites'), localUtils);
62
66
  },
@@ -0,0 +1,33 @@
1
+ const mentions = require('../../services/mentions');
2
+
3
+ module.exports = {
4
+ docName: 'mentions',
5
+ browse: {
6
+ options: [
7
+ 'filter',
8
+ 'fields',
9
+ 'limit',
10
+ 'order',
11
+ 'page',
12
+ 'debug'
13
+ ],
14
+ permissions: false,
15
+ query(frame) {
16
+ return mentions.controller.browse(frame);
17
+ }
18
+ },
19
+
20
+ receive: {
21
+ statusCode: 202, // Required for the spec because we don't have a status page
22
+ headers: {},
23
+ options: [],
24
+ permissions: false,
25
+ response: {
26
+ format: 'plain'
27
+ },
28
+ async query(frame) {
29
+ await mentions.controller.receive(frame);
30
+ return null;
31
+ }
32
+ }
33
+ };
@@ -1,25 +1,4 @@
1
- const config = require('../../../shared/config');
2
- const externalRequest = require('../../lib/request-external');
3
-
4
- const OEmbed = require('@tryghost/oembed-service');
5
- const oembed = new OEmbed({config, externalRequest});
6
-
7
- const NFT = require('../../services/nft-oembed');
8
- const nft = new NFT({
9
- config: {
10
- apiKey: config.get('opensea').privateReadOnlyApiKey
11
- }
12
- });
13
-
14
- const Twitter = require('../../services/twitter-embed');
15
- const twitter = new Twitter({
16
- config: {
17
- bearerToken: config.get('twitter').privateReadOnlyToken
18
- }
19
- });
20
-
21
- oembed.registerProvider(nft);
22
- oembed.registerProvider(twitter);
1
+ const oembed = require('../../services/oembed');
23
2
 
24
3
  module.exports = {
25
4
  docName: 'oembed',
@@ -59,7 +59,8 @@ const EDITABLE_SETTINGS = [
59
59
  'editor_default_email_recipients',
60
60
  'editor_default_email_recipients_filter',
61
61
  'labs',
62
- 'comments_enabled'
62
+ 'comments_enabled',
63
+ 'outbound_link_tagging'
63
64
  ];
64
65
 
65
66
  module.exports = {
@@ -15,5 +15,6 @@ module.exports = {
15
15
  tags: require('./tags'),
16
16
  offers: require('./offers'),
17
17
  newsletters: require('./newsletters'),
18
- users: require('./users')
18
+ users: require('./users'),
19
+ mentions: require('./mentions')
19
20
  };
@@ -0,0 +1,18 @@
1
+ module.exports = (model) => {
2
+ const json = model.toJSON();
3
+
4
+ return {
5
+ id: json.id,
6
+ source: json.source,
7
+ target: json.target,
8
+ timestamp: json.timestamp,
9
+ payload: json.payload,
10
+ resource_id: json.resourceId,
11
+ source_title: json.sourceTitle,
12
+ source_site_title: json.sourceSiteTitle,
13
+ source_excerpt: json.sourceExcerpt,
14
+ source_author: json.sourceAuthor,
15
+ source_favicon: json.sourceFavicon,
16
+ source_featured_image: json.sourceFeaturedImage
17
+ };
18
+ };
@@ -37,6 +37,7 @@ const BACKUP_TABLES = [
37
37
  'members_created_events',
38
38
  'members_subscription_created_events',
39
39
  'members_newsletters',
40
+ 'mentions',
40
41
  'comments',
41
42
  'comment_likes',
42
43
  'comment_reports',
@@ -32,7 +32,10 @@ const messages = {
32
32
  noContentToImport: 'Zip did not include any content to import.',
33
33
  invalidZipStructure: 'Invalid zip file structure.',
34
34
  invalidZipFileBaseDirectory: 'Invalid zip file: base directory read failed',
35
- zipContainsMultipleDataFormats: 'Zip file contains multiple data formats. Please split up and import separately.'
35
+ zipContainsMultipleDataFormats: 'Zip file contains multiple data formats. Please split up and import separately.',
36
+ invalidZipFileNameEncoding: 'The uploaded zip could not be read',
37
+ invalidZipFileNameEncodingContext: 'The filename was too long or contained invalid characters',
38
+ invalidZipFileNameEncodingHelp: 'Remove any special characters from the file name, or alternatively try another archiving tool if using MacOS Archive Utility'
36
39
  };
37
40
 
38
41
  // Glob levels
@@ -170,13 +173,26 @@ class ImportManager {
170
173
  * @param {string} filePath
171
174
  * @returns {Promise<string>} full path to the extracted folder
172
175
  */
173
- extractZip(filePath) {
176
+ async extractZip(filePath) {
174
177
  const tmpDir = path.join(os.tmpdir(), uuid.v4());
175
178
  this.fileToDelete = tmpDir;
176
179
 
177
- return extract(filePath, tmpDir).then(function () {
178
- return tmpDir;
179
- });
180
+ try {
181
+ await extract(filePath, tmpDir);
182
+ } catch (err) {
183
+ if (err.message.startsWith('ENAMETOOLONG:')) {
184
+ // The file was probably zipped with MacOS zip utility. Which doesn't correctly set UTF-8 encoding flag.
185
+ // This causes ENAMETOOLONG error on Linux, because the resulting filename length is too long when decoded using the default string encoder.
186
+ throw new errors.UnsupportedMediaTypeError({
187
+ message: tpl(messages.invalidZipFileNameEncoding),
188
+ context: tpl(messages.invalidZipFileNameEncodingContext),
189
+ help: tpl(messages.invalidZipFileNameEncodingHelp),
190
+ code: 'INVALID_ZIP_FILE_NAME_ENCODING'
191
+ });
192
+ }
193
+ throw err;
194
+ }
195
+ return tmpDir;
180
196
  }
181
197
 
182
198
  /**
@@ -0,0 +1,23 @@
1
+ const logging = require('@tryghost/logging');
2
+ const {createTransactionalMigration} = require('../../utils');
3
+
4
+ module.exports = createTransactionalMigration(
5
+ async function up(knex) {
6
+ const rows = await knex
7
+ .pluck('m.id')
8
+ .from('members AS m')
9
+ .innerJoin('suppressions AS s', 'm.email', '=', 's.email');
10
+
11
+ if (rows.length === 0) {
12
+ logging.info(`No suppressed emails found - skipping migration`);
13
+ return;
14
+ }
15
+
16
+ logging.info(`Unsubscribing ${rows.length} members from all newsletters`);
17
+
18
+ await knex('members_newsletters').whereIn('member_id', rows).del();
19
+ },
20
+ async function down() {
21
+ // We don't have enough information to do anything here.
22
+ }
23
+ );