@automattic/newspack-blocks 1.0.0-hotfix-cap-count-user-posts-dedup.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (568) hide show
  1. package/.eslintrc.js +3 -0
  2. package/.hooks/pre-push +8 -0
  3. package/.nvmrc +1 -0
  4. package/.prettierignore +4 -0
  5. package/.prettierrc.js +5 -0
  6. package/.stylelintrc.js +3 -0
  7. package/AGENTS.md +275 -0
  8. package/CHANGELOG.md +3971 -0
  9. package/CLAUDE.md +1 -0
  10. package/README.md +43 -0
  11. package/babel.config.js +6 -0
  12. package/bin/install-wp-tests.sh +155 -0
  13. package/bin/update-translations.sh +13 -0
  14. package/block-list.json +12 -0
  15. package/composer.json +46 -0
  16. package/composer.lock +3632 -0
  17. package/dist/author-list/view-rtl.css +1 -0
  18. package/dist/author-list/view.asset.php +1 -0
  19. package/dist/author-list/view.css +1 -0
  20. package/dist/author-list/view.js +0 -0
  21. package/dist/author-profile/view-rtl.css +1 -0
  22. package/dist/author-profile/view.asset.php +1 -0
  23. package/dist/author-profile/view.css +1 -0
  24. package/dist/author-profile/view.js +0 -0
  25. package/dist/block_styles-rtl.css +2 -0
  26. package/dist/block_styles.asset.php +1 -0
  27. package/dist/block_styles.css +2 -0
  28. package/dist/block_styles.js +0 -0
  29. package/dist/blocks/author-list/block.json +89 -0
  30. package/dist/blocks/author-profile/block.json +80 -0
  31. package/dist/blocks/carousel/block.json +125 -0
  32. package/dist/blocks/checkout-button/block.json +117 -0
  33. package/dist/blocks/donate/block.json +103 -0
  34. package/dist/blocks/homepage-articles/block.json +260 -0
  35. package/dist/blocks/iframe/block.json +36 -0
  36. package/dist/carousel/view-rtl.css +2 -0
  37. package/dist/carousel/view.asset.php +1 -0
  38. package/dist/carousel/view.css +2 -0
  39. package/dist/carousel/view.js +3 -0
  40. package/dist/checkout-button/view-rtl.css +1 -0
  41. package/dist/checkout-button/view.asset.php +1 -0
  42. package/dist/checkout-button/view.css +1 -0
  43. package/dist/checkout-button/view.js +0 -0
  44. package/dist/donate/view-rtl.css +1 -0
  45. package/dist/donate/view.asset.php +1 -0
  46. package/dist/donate/view.css +1 -0
  47. package/dist/donate/view.js +1 -0
  48. package/dist/editor-rtl.css +66 -0
  49. package/dist/editor.asset.php +1 -0
  50. package/dist/editor.css +66 -0
  51. package/dist/editor.js +57 -0
  52. package/dist/frequencyBased-rtl.css +1 -0
  53. package/dist/frequencyBased.asset.php +1 -0
  54. package/dist/frequencyBased.css +1 -0
  55. package/dist/frequencyBased.js +1 -0
  56. package/dist/homepage-articles/view-rtl.css +1 -0
  57. package/dist/homepage-articles/view.asset.php +1 -0
  58. package/dist/homepage-articles/view.css +1 -0
  59. package/dist/homepage-articles/view.js +1 -0
  60. package/dist/iframe/view-rtl.css +1 -0
  61. package/dist/iframe/view.asset.php +1 -0
  62. package/dist/iframe/view.css +1 -0
  63. package/dist/iframe/view.js +1 -0
  64. package/dist/modal-rtl.css +1 -0
  65. package/dist/modal.asset.php +1 -0
  66. package/dist/modal.css +1 -0
  67. package/dist/modal.js +1 -0
  68. package/dist/modalCheckout-rtl.css +1 -0
  69. package/dist/modalCheckout.asset.php +1 -0
  70. package/dist/modalCheckout.css +1 -0
  71. package/dist/modalCheckout.js +1 -0
  72. package/dist/placeholder_blocks.asset.php +1 -0
  73. package/dist/placeholder_blocks.js +4 -0
  74. package/dist/tiersBased-rtl.css +1 -0
  75. package/dist/tiersBased.asset.php +1 -0
  76. package/dist/tiersBased.css +1 -0
  77. package/dist/tiersBased.js +1 -0
  78. package/includes/class-modal-checkout.php +2324 -0
  79. package/includes/class-newspack-blocks-api.php +347 -0
  80. package/includes/class-newspack-blocks-caching.php +291 -0
  81. package/includes/class-newspack-blocks-patterns.php +167 -0
  82. package/includes/class-newspack-blocks.php +1581 -0
  83. package/includes/modal-checkout/class-change-payment-gateway.php +86 -0
  84. package/includes/modal-checkout/class-checkout-data.php +406 -0
  85. package/includes/plugins/class-the-events-calendar.php +84 -0
  86. package/includes/tracking/class-data-events.php +83 -0
  87. package/languages/newspack-blocks-de_DE-01a5b44b8bc8d20f62541de420aa61ab.json +1 -0
  88. package/languages/newspack-blocks-de_DE-0662222bf15e7a1a7b74db2dabb48d6c.json +1 -0
  89. package/languages/newspack-blocks-de_DE-0c8dad524e2a57cee4f8efb6e35387c1.json +1 -0
  90. package/languages/newspack-blocks-de_DE-10754bc02d28d4301c103f26dbf519ce.json +1 -0
  91. package/languages/newspack-blocks-de_DE-2d52b39fdbc5d6c94b3514803f3720b8.json +1 -0
  92. package/languages/newspack-blocks-de_DE-34e5c64f90b1444f3fc735376442eada.json +1 -0
  93. package/languages/newspack-blocks-de_DE-351fd022e077061b5796bf7042446bfc.json +1 -0
  94. package/languages/newspack-blocks-de_DE-37552bb09e2a9fceec1970e3c6d46557.json +1 -0
  95. package/languages/newspack-blocks-de_DE-4b2ccb4e4dc8b3491228b2feb54872f2.json +1 -0
  96. package/languages/newspack-blocks-de_DE-4cecf783e091d36284a3e0cdafcd0fd5.json +1 -0
  97. package/languages/newspack-blocks-de_DE-4f16e21047908d19937bc10ced63acd1.json +1 -0
  98. package/languages/newspack-blocks-de_DE-4fdea541976076f02d56139fb35e5b42.json +1 -0
  99. package/languages/newspack-blocks-de_DE-501b38ac90d35730a620fb0d483702fa.json +1 -0
  100. package/languages/newspack-blocks-de_DE-53e2a1d5945b8d2b1c35e81ae1e532f3.json +1 -0
  101. package/languages/newspack-blocks-de_DE-5d4055f484eeb00e3ea0f9d8aace0897.json +1 -0
  102. package/languages/newspack-blocks-de_DE-5f70538e0223bc8a05b922cba67da6fb.json +1 -0
  103. package/languages/newspack-blocks-de_DE-6c2e53bab28419c30e1eaee70ba599cf.json +1 -0
  104. package/languages/newspack-blocks-de_DE-6ed95fb4873e6e2b81351177a44995f6.json +1 -0
  105. package/languages/newspack-blocks-de_DE-727631509ad8eec8e2cbe740c6dad199.json +1 -0
  106. package/languages/newspack-blocks-de_DE-73c6d3bde805172d1993f75397e9832d.json +1 -0
  107. package/languages/newspack-blocks-de_DE-78456b164809d080adecb4d2b3895802.json +1 -0
  108. package/languages/newspack-blocks-de_DE-7b1aa64ce2d962decc04666ab86c53de.json +1 -0
  109. package/languages/newspack-blocks-de_DE-7c29764d5ef91723f5ce454f66431b9e.json +1 -0
  110. package/languages/newspack-blocks-de_DE-912a2876091ef0dca9b26f3cfc01fc9c.json +1 -0
  111. package/languages/newspack-blocks-de_DE-91a7ac8017d6e2159be1c5a3c1e372e4.json +1 -0
  112. package/languages/newspack-blocks-de_DE-969286d51bb0afe10983b9aec317b5ee.json +1 -0
  113. package/languages/newspack-blocks-de_DE-9ef9b2c60c897ad79f92951e6e9949a1.json +1 -0
  114. package/languages/newspack-blocks-de_DE-a822c3d210c89af3cb7da28eaaef929c.json +1 -0
  115. package/languages/newspack-blocks-de_DE-aa9f9057c77a46b31d7e325a4322f2da.json +1 -0
  116. package/languages/newspack-blocks-de_DE-b6d3cfc30bb16d88d7bc5384bc775543.json +1 -0
  117. package/languages/newspack-blocks-de_DE-b712270cd4eb3cae7899b50b57bdd576.json +1 -0
  118. package/languages/newspack-blocks-de_DE-babcc0ca24e7f0145b1c8f647049f085.json +1 -0
  119. package/languages/newspack-blocks-de_DE-bb66d96d450663284550bed5a3e9113e.json +1 -0
  120. package/languages/newspack-blocks-de_DE-c810378e74f20906b8193ea76adb6bc0.json +1 -0
  121. package/languages/newspack-blocks-de_DE-d3a1c55a07efd1a65e227bf120840752.json +1 -0
  122. package/languages/newspack-blocks-de_DE-d5f23a52ecbfd492ebf819c14206a9e2.json +1 -0
  123. package/languages/newspack-blocks-de_DE-d684e5c5ac51934ba20811c2f588e1d5.json +1 -0
  124. package/languages/newspack-blocks-de_DE-dd56360b115d1b39c48033c1e0749a11.json +1 -0
  125. package/languages/newspack-blocks-de_DE-e0e4434aee4db01e71268ce3edf1dd97.json +1 -0
  126. package/languages/newspack-blocks-de_DE-e58126c278611ed6c17684ba8e7459b4.json +1 -0
  127. package/languages/newspack-blocks-de_DE-ea3e2a660753c7bfa13b5bbd8a46bdd0.json +1 -0
  128. package/languages/newspack-blocks-de_DE-eccbc51a43c04f59165364eda71e0be7.json +1 -0
  129. package/languages/newspack-blocks-de_DE-eeb28f99adedd5fad3081d2756d6f4a4.json +1 -0
  130. package/languages/newspack-blocks-de_DE-f03802d9ac1ae8f3b85caee4347b93a7.json +1 -0
  131. package/languages/newspack-blocks-de_DE-f32a4d8bd8f1f1e03b6523dfaa4c9f73.json +1 -0
  132. package/languages/newspack-blocks-de_DE-f5f8db76788e4079ddfa743333708b88.json +1 -0
  133. package/languages/newspack-blocks-de_DE-f8b1589c450689398f90b179f47e74ee.json +1 -0
  134. package/languages/newspack-blocks-de_DE-f9d0b05d4d6ddd3273f1f3fb2eb2ca50.json +1 -0
  135. package/languages/newspack-blocks-de_DE-fbe7f8c598cf05d4603ba49fec909ded.json +1 -0
  136. package/languages/newspack-blocks-de_DE-fcc93143c1f2b74671f595454b971f44.json +1 -0
  137. package/languages/newspack-blocks-de_DE.mo +0 -0
  138. package/languages/newspack-blocks-de_DE.po +2088 -0
  139. package/languages/newspack-blocks-es_ES-01a5b44b8bc8d20f62541de420aa61ab.json +1 -0
  140. package/languages/newspack-blocks-es_ES-0662222bf15e7a1a7b74db2dabb48d6c.json +1 -0
  141. package/languages/newspack-blocks-es_ES-0c8dad524e2a57cee4f8efb6e35387c1.json +1 -0
  142. package/languages/newspack-blocks-es_ES-10754bc02d28d4301c103f26dbf519ce.json +1 -0
  143. package/languages/newspack-blocks-es_ES-2d52b39fdbc5d6c94b3514803f3720b8.json +1 -0
  144. package/languages/newspack-blocks-es_ES-34e5c64f90b1444f3fc735376442eada.json +1 -0
  145. package/languages/newspack-blocks-es_ES-351fd022e077061b5796bf7042446bfc.json +1 -0
  146. package/languages/newspack-blocks-es_ES-37552bb09e2a9fceec1970e3c6d46557.json +1 -0
  147. package/languages/newspack-blocks-es_ES-4b2ccb4e4dc8b3491228b2feb54872f2.json +1 -0
  148. package/languages/newspack-blocks-es_ES-4cecf783e091d36284a3e0cdafcd0fd5.json +1 -0
  149. package/languages/newspack-blocks-es_ES-4f16e21047908d19937bc10ced63acd1.json +1 -0
  150. package/languages/newspack-blocks-es_ES-4fdea541976076f02d56139fb35e5b42.json +1 -0
  151. package/languages/newspack-blocks-es_ES-501b38ac90d35730a620fb0d483702fa.json +1 -0
  152. package/languages/newspack-blocks-es_ES-53e2a1d5945b8d2b1c35e81ae1e532f3.json +1 -0
  153. package/languages/newspack-blocks-es_ES-5d4055f484eeb00e3ea0f9d8aace0897.json +1 -0
  154. package/languages/newspack-blocks-es_ES-5f70538e0223bc8a05b922cba67da6fb.json +1 -0
  155. package/languages/newspack-blocks-es_ES-6c2e53bab28419c30e1eaee70ba599cf.json +1 -0
  156. package/languages/newspack-blocks-es_ES-6ed95fb4873e6e2b81351177a44995f6.json +1 -0
  157. package/languages/newspack-blocks-es_ES-727631509ad8eec8e2cbe740c6dad199.json +1 -0
  158. package/languages/newspack-blocks-es_ES-73c6d3bde805172d1993f75397e9832d.json +1 -0
  159. package/languages/newspack-blocks-es_ES-78456b164809d080adecb4d2b3895802.json +1 -0
  160. package/languages/newspack-blocks-es_ES-7b1aa64ce2d962decc04666ab86c53de.json +1 -0
  161. package/languages/newspack-blocks-es_ES-7c29764d5ef91723f5ce454f66431b9e.json +1 -0
  162. package/languages/newspack-blocks-es_ES-912a2876091ef0dca9b26f3cfc01fc9c.json +1 -0
  163. package/languages/newspack-blocks-es_ES-91a7ac8017d6e2159be1c5a3c1e372e4.json +1 -0
  164. package/languages/newspack-blocks-es_ES-969286d51bb0afe10983b9aec317b5ee.json +1 -0
  165. package/languages/newspack-blocks-es_ES-9ef9b2c60c897ad79f92951e6e9949a1.json +1 -0
  166. package/languages/newspack-blocks-es_ES-a822c3d210c89af3cb7da28eaaef929c.json +1 -0
  167. package/languages/newspack-blocks-es_ES-aa9f9057c77a46b31d7e325a4322f2da.json +1 -0
  168. package/languages/newspack-blocks-es_ES-b6d3cfc30bb16d88d7bc5384bc775543.json +1 -0
  169. package/languages/newspack-blocks-es_ES-b712270cd4eb3cae7899b50b57bdd576.json +1 -0
  170. package/languages/newspack-blocks-es_ES-babcc0ca24e7f0145b1c8f647049f085.json +1 -0
  171. package/languages/newspack-blocks-es_ES-bb66d96d450663284550bed5a3e9113e.json +1 -0
  172. package/languages/newspack-blocks-es_ES-c810378e74f20906b8193ea76adb6bc0.json +1 -0
  173. package/languages/newspack-blocks-es_ES-d3a1c55a07efd1a65e227bf120840752.json +1 -0
  174. package/languages/newspack-blocks-es_ES-d5f23a52ecbfd492ebf819c14206a9e2.json +1 -0
  175. package/languages/newspack-blocks-es_ES-d684e5c5ac51934ba20811c2f588e1d5.json +1 -0
  176. package/languages/newspack-blocks-es_ES-dd56360b115d1b39c48033c1e0749a11.json +1 -0
  177. package/languages/newspack-blocks-es_ES-e0e4434aee4db01e71268ce3edf1dd97.json +1 -0
  178. package/languages/newspack-blocks-es_ES-e58126c278611ed6c17684ba8e7459b4.json +1 -0
  179. package/languages/newspack-blocks-es_ES-ea3e2a660753c7bfa13b5bbd8a46bdd0.json +1 -0
  180. package/languages/newspack-blocks-es_ES-eccbc51a43c04f59165364eda71e0be7.json +1 -0
  181. package/languages/newspack-blocks-es_ES-eeb28f99adedd5fad3081d2756d6f4a4.json +1 -0
  182. package/languages/newspack-blocks-es_ES-f03802d9ac1ae8f3b85caee4347b93a7.json +1 -0
  183. package/languages/newspack-blocks-es_ES-f32a4d8bd8f1f1e03b6523dfaa4c9f73.json +1 -0
  184. package/languages/newspack-blocks-es_ES-f5f8db76788e4079ddfa743333708b88.json +1 -0
  185. package/languages/newspack-blocks-es_ES-f8b1589c450689398f90b179f47e74ee.json +1 -0
  186. package/languages/newspack-blocks-es_ES-f9d0b05d4d6ddd3273f1f3fb2eb2ca50.json +1 -0
  187. package/languages/newspack-blocks-es_ES-fbe7f8c598cf05d4603ba49fec909ded.json +1 -0
  188. package/languages/newspack-blocks-es_ES-fcc93143c1f2b74671f595454b971f44.json +1 -0
  189. package/languages/newspack-blocks-es_ES.mo +0 -0
  190. package/languages/newspack-blocks-es_ES.po +2080 -0
  191. package/languages/newspack-blocks-fr_BE-01a5b44b8bc8d20f62541de420aa61ab.json +1 -0
  192. package/languages/newspack-blocks-fr_BE-0662222bf15e7a1a7b74db2dabb48d6c.json +1 -0
  193. package/languages/newspack-blocks-fr_BE-0c8dad524e2a57cee4f8efb6e35387c1.json +1 -0
  194. package/languages/newspack-blocks-fr_BE-10754bc02d28d4301c103f26dbf519ce.json +1 -0
  195. package/languages/newspack-blocks-fr_BE-2d52b39fdbc5d6c94b3514803f3720b8.json +1 -0
  196. package/languages/newspack-blocks-fr_BE-34e5c64f90b1444f3fc735376442eada.json +1 -0
  197. package/languages/newspack-blocks-fr_BE-351fd022e077061b5796bf7042446bfc.json +1 -0
  198. package/languages/newspack-blocks-fr_BE-37552bb09e2a9fceec1970e3c6d46557.json +1 -0
  199. package/languages/newspack-blocks-fr_BE-4b2ccb4e4dc8b3491228b2feb54872f2.json +1 -0
  200. package/languages/newspack-blocks-fr_BE-4cecf783e091d36284a3e0cdafcd0fd5.json +1 -0
  201. package/languages/newspack-blocks-fr_BE-4f16e21047908d19937bc10ced63acd1.json +1 -0
  202. package/languages/newspack-blocks-fr_BE-4fdea541976076f02d56139fb35e5b42.json +1 -0
  203. package/languages/newspack-blocks-fr_BE-501b38ac90d35730a620fb0d483702fa.json +1 -0
  204. package/languages/newspack-blocks-fr_BE-53e2a1d5945b8d2b1c35e81ae1e532f3.json +1 -0
  205. package/languages/newspack-blocks-fr_BE-5d4055f484eeb00e3ea0f9d8aace0897.json +1 -0
  206. package/languages/newspack-blocks-fr_BE-5f70538e0223bc8a05b922cba67da6fb.json +1 -0
  207. package/languages/newspack-blocks-fr_BE-6c2e53bab28419c30e1eaee70ba599cf.json +1 -0
  208. package/languages/newspack-blocks-fr_BE-6ed95fb4873e6e2b81351177a44995f6.json +1 -0
  209. package/languages/newspack-blocks-fr_BE-727631509ad8eec8e2cbe740c6dad199.json +1 -0
  210. package/languages/newspack-blocks-fr_BE-73c6d3bde805172d1993f75397e9832d.json +1 -0
  211. package/languages/newspack-blocks-fr_BE-78456b164809d080adecb4d2b3895802.json +1 -0
  212. package/languages/newspack-blocks-fr_BE-7b1aa64ce2d962decc04666ab86c53de.json +1 -0
  213. package/languages/newspack-blocks-fr_BE-7c29764d5ef91723f5ce454f66431b9e.json +1 -0
  214. package/languages/newspack-blocks-fr_BE-912a2876091ef0dca9b26f3cfc01fc9c.json +1 -0
  215. package/languages/newspack-blocks-fr_BE-91a7ac8017d6e2159be1c5a3c1e372e4.json +1 -0
  216. package/languages/newspack-blocks-fr_BE-969286d51bb0afe10983b9aec317b5ee.json +1 -0
  217. package/languages/newspack-blocks-fr_BE-9ef9b2c60c897ad79f92951e6e9949a1.json +1 -0
  218. package/languages/newspack-blocks-fr_BE-a822c3d210c89af3cb7da28eaaef929c.json +1 -0
  219. package/languages/newspack-blocks-fr_BE-aa9f9057c77a46b31d7e325a4322f2da.json +1 -0
  220. package/languages/newspack-blocks-fr_BE-b6d3cfc30bb16d88d7bc5384bc775543.json +1 -0
  221. package/languages/newspack-blocks-fr_BE-b712270cd4eb3cae7899b50b57bdd576.json +1 -0
  222. package/languages/newspack-blocks-fr_BE-babcc0ca24e7f0145b1c8f647049f085.json +1 -0
  223. package/languages/newspack-blocks-fr_BE-bb66d96d450663284550bed5a3e9113e.json +1 -0
  224. package/languages/newspack-blocks-fr_BE-c810378e74f20906b8193ea76adb6bc0.json +1 -0
  225. package/languages/newspack-blocks-fr_BE-d3a1c55a07efd1a65e227bf120840752.json +1 -0
  226. package/languages/newspack-blocks-fr_BE-d5f23a52ecbfd492ebf819c14206a9e2.json +1 -0
  227. package/languages/newspack-blocks-fr_BE-d684e5c5ac51934ba20811c2f588e1d5.json +1 -0
  228. package/languages/newspack-blocks-fr_BE-dd56360b115d1b39c48033c1e0749a11.json +1 -0
  229. package/languages/newspack-blocks-fr_BE-e0e4434aee4db01e71268ce3edf1dd97.json +1 -0
  230. package/languages/newspack-blocks-fr_BE-e58126c278611ed6c17684ba8e7459b4.json +1 -0
  231. package/languages/newspack-blocks-fr_BE-ea3e2a660753c7bfa13b5bbd8a46bdd0.json +1 -0
  232. package/languages/newspack-blocks-fr_BE-eccbc51a43c04f59165364eda71e0be7.json +1 -0
  233. package/languages/newspack-blocks-fr_BE-eeb28f99adedd5fad3081d2756d6f4a4.json +1 -0
  234. package/languages/newspack-blocks-fr_BE-f03802d9ac1ae8f3b85caee4347b93a7.json +1 -0
  235. package/languages/newspack-blocks-fr_BE-f32a4d8bd8f1f1e03b6523dfaa4c9f73.json +1 -0
  236. package/languages/newspack-blocks-fr_BE-f5f8db76788e4079ddfa743333708b88.json +1 -0
  237. package/languages/newspack-blocks-fr_BE-f8b1589c450689398f90b179f47e74ee.json +1 -0
  238. package/languages/newspack-blocks-fr_BE-f9d0b05d4d6ddd3273f1f3fb2eb2ca50.json +1 -0
  239. package/languages/newspack-blocks-fr_BE-fbe7f8c598cf05d4603ba49fec909ded.json +1 -0
  240. package/languages/newspack-blocks-fr_BE-fcc93143c1f2b74671f595454b971f44.json +1 -0
  241. package/languages/newspack-blocks-fr_BE.mo +0 -0
  242. package/languages/newspack-blocks-fr_BE.po +2079 -0
  243. package/languages/newspack-blocks-nb_NO-01a5b44b8bc8d20f62541de420aa61ab.json +1 -0
  244. package/languages/newspack-blocks-nb_NO-0662222bf15e7a1a7b74db2dabb48d6c.json +1 -0
  245. package/languages/newspack-blocks-nb_NO-0c8dad524e2a57cee4f8efb6e35387c1.json +1 -0
  246. package/languages/newspack-blocks-nb_NO-10754bc02d28d4301c103f26dbf519ce.json +1 -0
  247. package/languages/newspack-blocks-nb_NO-2d52b39fdbc5d6c94b3514803f3720b8.json +1 -0
  248. package/languages/newspack-blocks-nb_NO-34e5c64f90b1444f3fc735376442eada.json +1 -0
  249. package/languages/newspack-blocks-nb_NO-351fd022e077061b5796bf7042446bfc.json +1 -0
  250. package/languages/newspack-blocks-nb_NO-37552bb09e2a9fceec1970e3c6d46557.json +1 -0
  251. package/languages/newspack-blocks-nb_NO-4b2ccb4e4dc8b3491228b2feb54872f2.json +1 -0
  252. package/languages/newspack-blocks-nb_NO-4cecf783e091d36284a3e0cdafcd0fd5.json +1 -0
  253. package/languages/newspack-blocks-nb_NO-4f16e21047908d19937bc10ced63acd1.json +1 -0
  254. package/languages/newspack-blocks-nb_NO-4fdea541976076f02d56139fb35e5b42.json +1 -0
  255. package/languages/newspack-blocks-nb_NO-501b38ac90d35730a620fb0d483702fa.json +1 -0
  256. package/languages/newspack-blocks-nb_NO-53e2a1d5945b8d2b1c35e81ae1e532f3.json +1 -0
  257. package/languages/newspack-blocks-nb_NO-5d4055f484eeb00e3ea0f9d8aace0897.json +1 -0
  258. package/languages/newspack-blocks-nb_NO-5f70538e0223bc8a05b922cba67da6fb.json +1 -0
  259. package/languages/newspack-blocks-nb_NO-6c2e53bab28419c30e1eaee70ba599cf.json +1 -0
  260. package/languages/newspack-blocks-nb_NO-6ed95fb4873e6e2b81351177a44995f6.json +1 -0
  261. package/languages/newspack-blocks-nb_NO-73c6d3bde805172d1993f75397e9832d.json +1 -0
  262. package/languages/newspack-blocks-nb_NO-78456b164809d080adecb4d2b3895802.json +1 -0
  263. package/languages/newspack-blocks-nb_NO-7b1aa64ce2d962decc04666ab86c53de.json +1 -0
  264. package/languages/newspack-blocks-nb_NO-7c29764d5ef91723f5ce454f66431b9e.json +1 -0
  265. package/languages/newspack-blocks-nb_NO-912a2876091ef0dca9b26f3cfc01fc9c.json +1 -0
  266. package/languages/newspack-blocks-nb_NO-91a7ac8017d6e2159be1c5a3c1e372e4.json +1 -0
  267. package/languages/newspack-blocks-nb_NO-969286d51bb0afe10983b9aec317b5ee.json +1 -0
  268. package/languages/newspack-blocks-nb_NO-9ef9b2c60c897ad79f92951e6e9949a1.json +1 -0
  269. package/languages/newspack-blocks-nb_NO-a822c3d210c89af3cb7da28eaaef929c.json +1 -0
  270. package/languages/newspack-blocks-nb_NO-aa9f9057c77a46b31d7e325a4322f2da.json +1 -0
  271. package/languages/newspack-blocks-nb_NO-b6d3cfc30bb16d88d7bc5384bc775543.json +1 -0
  272. package/languages/newspack-blocks-nb_NO-b712270cd4eb3cae7899b50b57bdd576.json +1 -0
  273. package/languages/newspack-blocks-nb_NO-babcc0ca24e7f0145b1c8f647049f085.json +1 -0
  274. package/languages/newspack-blocks-nb_NO-bb66d96d450663284550bed5a3e9113e.json +1 -0
  275. package/languages/newspack-blocks-nb_NO-c810378e74f20906b8193ea76adb6bc0.json +1 -0
  276. package/languages/newspack-blocks-nb_NO-d3a1c55a07efd1a65e227bf120840752.json +1 -0
  277. package/languages/newspack-blocks-nb_NO-d5f23a52ecbfd492ebf819c14206a9e2.json +1 -0
  278. package/languages/newspack-blocks-nb_NO-d684e5c5ac51934ba20811c2f588e1d5.json +1 -0
  279. package/languages/newspack-blocks-nb_NO-dd56360b115d1b39c48033c1e0749a11.json +1 -0
  280. package/languages/newspack-blocks-nb_NO-e0e4434aee4db01e71268ce3edf1dd97.json +1 -0
  281. package/languages/newspack-blocks-nb_NO-e58126c278611ed6c17684ba8e7459b4.json +1 -0
  282. package/languages/newspack-blocks-nb_NO-ea3e2a660753c7bfa13b5bbd8a46bdd0.json +1 -0
  283. package/languages/newspack-blocks-nb_NO-eccbc51a43c04f59165364eda71e0be7.json +1 -0
  284. package/languages/newspack-blocks-nb_NO-eeb28f99adedd5fad3081d2756d6f4a4.json +1 -0
  285. package/languages/newspack-blocks-nb_NO-f03802d9ac1ae8f3b85caee4347b93a7.json +1 -0
  286. package/languages/newspack-blocks-nb_NO-f32a4d8bd8f1f1e03b6523dfaa4c9f73.json +1 -0
  287. package/languages/newspack-blocks-nb_NO-f5f8db76788e4079ddfa743333708b88.json +1 -0
  288. package/languages/newspack-blocks-nb_NO-f8b1589c450689398f90b179f47e74ee.json +1 -0
  289. package/languages/newspack-blocks-nb_NO-f9d0b05d4d6ddd3273f1f3fb2eb2ca50.json +1 -0
  290. package/languages/newspack-blocks-nb_NO-fbe7f8c598cf05d4603ba49fec909ded.json +1 -0
  291. package/languages/newspack-blocks-nb_NO-fcc93143c1f2b74671f595454b971f44.json +1 -0
  292. package/languages/newspack-blocks-nb_NO.mo +0 -0
  293. package/languages/newspack-blocks-nb_NO.po +2078 -0
  294. package/languages/newspack-blocks-pt_PT-01a5b44b8bc8d20f62541de420aa61ab.json +1 -0
  295. package/languages/newspack-blocks-pt_PT-0662222bf15e7a1a7b74db2dabb48d6c.json +1 -0
  296. package/languages/newspack-blocks-pt_PT-0c8dad524e2a57cee4f8efb6e35387c1.json +1 -0
  297. package/languages/newspack-blocks-pt_PT-10754bc02d28d4301c103f26dbf519ce.json +1 -0
  298. package/languages/newspack-blocks-pt_PT-2d52b39fdbc5d6c94b3514803f3720b8.json +1 -0
  299. package/languages/newspack-blocks-pt_PT-34e5c64f90b1444f3fc735376442eada.json +1 -0
  300. package/languages/newspack-blocks-pt_PT-351fd022e077061b5796bf7042446bfc.json +1 -0
  301. package/languages/newspack-blocks-pt_PT-37552bb09e2a9fceec1970e3c6d46557.json +1 -0
  302. package/languages/newspack-blocks-pt_PT-4b2ccb4e4dc8b3491228b2feb54872f2.json +1 -0
  303. package/languages/newspack-blocks-pt_PT-4cecf783e091d36284a3e0cdafcd0fd5.json +1 -0
  304. package/languages/newspack-blocks-pt_PT-4f16e21047908d19937bc10ced63acd1.json +1 -0
  305. package/languages/newspack-blocks-pt_PT-4fdea541976076f02d56139fb35e5b42.json +1 -0
  306. package/languages/newspack-blocks-pt_PT-501b38ac90d35730a620fb0d483702fa.json +1 -0
  307. package/languages/newspack-blocks-pt_PT-53e2a1d5945b8d2b1c35e81ae1e532f3.json +1 -0
  308. package/languages/newspack-blocks-pt_PT-5d4055f484eeb00e3ea0f9d8aace0897.json +1 -0
  309. package/languages/newspack-blocks-pt_PT-5f70538e0223bc8a05b922cba67da6fb.json +1 -0
  310. package/languages/newspack-blocks-pt_PT-6c2e53bab28419c30e1eaee70ba599cf.json +1 -0
  311. package/languages/newspack-blocks-pt_PT-6ed95fb4873e6e2b81351177a44995f6.json +1 -0
  312. package/languages/newspack-blocks-pt_PT-727631509ad8eec8e2cbe740c6dad199.json +1 -0
  313. package/languages/newspack-blocks-pt_PT-73c6d3bde805172d1993f75397e9832d.json +1 -0
  314. package/languages/newspack-blocks-pt_PT-78456b164809d080adecb4d2b3895802.json +1 -0
  315. package/languages/newspack-blocks-pt_PT-7b1aa64ce2d962decc04666ab86c53de.json +1 -0
  316. package/languages/newspack-blocks-pt_PT-7c29764d5ef91723f5ce454f66431b9e.json +1 -0
  317. package/languages/newspack-blocks-pt_PT-912a2876091ef0dca9b26f3cfc01fc9c.json +1 -0
  318. package/languages/newspack-blocks-pt_PT-91a7ac8017d6e2159be1c5a3c1e372e4.json +1 -0
  319. package/languages/newspack-blocks-pt_PT-969286d51bb0afe10983b9aec317b5ee.json +1 -0
  320. package/languages/newspack-blocks-pt_PT-9ef9b2c60c897ad79f92951e6e9949a1.json +1 -0
  321. package/languages/newspack-blocks-pt_PT-a822c3d210c89af3cb7da28eaaef929c.json +1 -0
  322. package/languages/newspack-blocks-pt_PT-aa9f9057c77a46b31d7e325a4322f2da.json +1 -0
  323. package/languages/newspack-blocks-pt_PT-b6d3cfc30bb16d88d7bc5384bc775543.json +1 -0
  324. package/languages/newspack-blocks-pt_PT-b712270cd4eb3cae7899b50b57bdd576.json +1 -0
  325. package/languages/newspack-blocks-pt_PT-babcc0ca24e7f0145b1c8f647049f085.json +1 -0
  326. package/languages/newspack-blocks-pt_PT-bb66d96d450663284550bed5a3e9113e.json +1 -0
  327. package/languages/newspack-blocks-pt_PT-c810378e74f20906b8193ea76adb6bc0.json +1 -0
  328. package/languages/newspack-blocks-pt_PT-d3a1c55a07efd1a65e227bf120840752.json +1 -0
  329. package/languages/newspack-blocks-pt_PT-d5f23a52ecbfd492ebf819c14206a9e2.json +1 -0
  330. package/languages/newspack-blocks-pt_PT-d684e5c5ac51934ba20811c2f588e1d5.json +1 -0
  331. package/languages/newspack-blocks-pt_PT-dd56360b115d1b39c48033c1e0749a11.json +1 -0
  332. package/languages/newspack-blocks-pt_PT-e0e4434aee4db01e71268ce3edf1dd97.json +1 -0
  333. package/languages/newspack-blocks-pt_PT-e58126c278611ed6c17684ba8e7459b4.json +1 -0
  334. package/languages/newspack-blocks-pt_PT-ea3e2a660753c7bfa13b5bbd8a46bdd0.json +1 -0
  335. package/languages/newspack-blocks-pt_PT-eccbc51a43c04f59165364eda71e0be7.json +1 -0
  336. package/languages/newspack-blocks-pt_PT-eeb28f99adedd5fad3081d2756d6f4a4.json +1 -0
  337. package/languages/newspack-blocks-pt_PT-f03802d9ac1ae8f3b85caee4347b93a7.json +1 -0
  338. package/languages/newspack-blocks-pt_PT-f32a4d8bd8f1f1e03b6523dfaa4c9f73.json +1 -0
  339. package/languages/newspack-blocks-pt_PT-f5f8db76788e4079ddfa743333708b88.json +1 -0
  340. package/languages/newspack-blocks-pt_PT-f8b1589c450689398f90b179f47e74ee.json +1 -0
  341. package/languages/newspack-blocks-pt_PT-f9d0b05d4d6ddd3273f1f3fb2eb2ca50.json +1 -0
  342. package/languages/newspack-blocks-pt_PT-fbe7f8c598cf05d4603ba49fec909ded.json +1 -0
  343. package/languages/newspack-blocks-pt_PT-fcc93143c1f2b74671f595454b971f44.json +1 -0
  344. package/languages/newspack-blocks-pt_PT.mo +0 -0
  345. package/languages/newspack-blocks-pt_PT.po +2078 -0
  346. package/languages/newspack-blocks.pot +2370 -0
  347. package/newspack-blocks.php +96 -0
  348. package/package.json +64 -0
  349. package/phpcs.xml +38 -0
  350. package/release.config.js +1 -0
  351. package/src/assets/placeholder-1024x536.jpg +0 -0
  352. package/src/assets/placeholder-600x800.jpg +0 -0
  353. package/src/assets/placeholder-800x600.jpg +0 -0
  354. package/src/assets/placeholder-800x800.jpg +0 -0
  355. package/src/assets/placeholder-donations-cover.jpg +0 -0
  356. package/src/assets/placeholder-donations-image.jpg +0 -0
  357. package/src/assets/placeholder-subscribe-cover.jpg +0 -0
  358. package/src/assets/placeholder-subscribe-image.jpg +0 -0
  359. package/src/block-patterns/donations-1.php +13 -0
  360. package/src/block-patterns/donations-2.php +13 -0
  361. package/src/block-patterns/donations-3.php +13 -0
  362. package/src/block-patterns/donations-4.php +13 -0
  363. package/src/block-patterns/donations-5.php +13 -0
  364. package/src/block-patterns/homepage-posts-1.php +13 -0
  365. package/src/block-patterns/homepage-posts-10.php +13 -0
  366. package/src/block-patterns/homepage-posts-11.php +13 -0
  367. package/src/block-patterns/homepage-posts-12.php +13 -0
  368. package/src/block-patterns/homepage-posts-13.php +13 -0
  369. package/src/block-patterns/homepage-posts-14.php +13 -0
  370. package/src/block-patterns/homepage-posts-15.php +13 -0
  371. package/src/block-patterns/homepage-posts-16.php +13 -0
  372. package/src/block-patterns/homepage-posts-17.php +13 -0
  373. package/src/block-patterns/homepage-posts-18.php +13 -0
  374. package/src/block-patterns/homepage-posts-19.php +13 -0
  375. package/src/block-patterns/homepage-posts-2.php +13 -0
  376. package/src/block-patterns/homepage-posts-20.php +13 -0
  377. package/src/block-patterns/homepage-posts-21.php +13 -0
  378. package/src/block-patterns/homepage-posts-22.php +13 -0
  379. package/src/block-patterns/homepage-posts-23.php +13 -0
  380. package/src/block-patterns/homepage-posts-24.php +13 -0
  381. package/src/block-patterns/homepage-posts-25.php +13 -0
  382. package/src/block-patterns/homepage-posts-26.php +13 -0
  383. package/src/block-patterns/homepage-posts-27.php +13 -0
  384. package/src/block-patterns/homepage-posts-28.php +13 -0
  385. package/src/block-patterns/homepage-posts-29.php +13 -0
  386. package/src/block-patterns/homepage-posts-3.php +13 -0
  387. package/src/block-patterns/homepage-posts-30.php +13 -0
  388. package/src/block-patterns/homepage-posts-31.php +13 -0
  389. package/src/block-patterns/homepage-posts-4.php +13 -0
  390. package/src/block-patterns/homepage-posts-5.php +13 -0
  391. package/src/block-patterns/homepage-posts-6.php +13 -0
  392. package/src/block-patterns/homepage-posts-7.php +13 -0
  393. package/src/block-patterns/homepage-posts-8.php +13 -0
  394. package/src/block-patterns/homepage-posts-9.php +13 -0
  395. package/src/block-patterns/subscribe-1.php +13 -0
  396. package/src/block-patterns/subscribe-2.php +13 -0
  397. package/src/block-patterns/subscribe-3.php +13 -0
  398. package/src/block-patterns/subscribe-4.php +13 -0
  399. package/src/block-patterns/subscribe-5.php +13 -0
  400. package/src/block-patterns/subscribe-6.php +13 -0
  401. package/src/block-patterns/subscribe-7.php +13 -0
  402. package/src/block-styles/core/columns/editor.scss +90 -0
  403. package/src/block-styles/core/columns/index.js +20 -0
  404. package/src/block-styles/core/columns/view.scss +131 -0
  405. package/src/block-styles/core/group/editor.scss +24 -0
  406. package/src/block-styles/core/group/index.js +25 -0
  407. package/src/block-styles/core/group/view.scss +13 -0
  408. package/src/block-styles/view.js +5 -0
  409. package/src/blocks/author-list/block.json +84 -0
  410. package/src/blocks/author-list/class-wp-rest-newspack-author-list-controller.php +381 -0
  411. package/src/blocks/author-list/edit.js +456 -0
  412. package/src/blocks/author-list/editor.js +7 -0
  413. package/src/blocks/author-list/editor.scss +1 -0
  414. package/src/blocks/author-list/index.js +60 -0
  415. package/src/blocks/author-list/view.js +5 -0
  416. package/src/blocks/author-list/view.php +180 -0
  417. package/src/blocks/author-list/view.scss +46 -0
  418. package/src/blocks/author-profile/README.md +105 -0
  419. package/src/blocks/author-profile/block.json +77 -0
  420. package/src/blocks/author-profile/class-wp-rest-newspack-authors-controller.php +618 -0
  421. package/src/blocks/author-profile/context.js +26 -0
  422. package/src/blocks/author-profile/edit.js +1031 -0
  423. package/src/blocks/author-profile/editor.js +7 -0
  424. package/src/blocks/author-profile/editor.scss +61 -0
  425. package/src/blocks/author-profile/index.js +66 -0
  426. package/src/blocks/author-profile/single-author.js +106 -0
  427. package/src/blocks/author-profile/templates.js +263 -0
  428. package/src/blocks/author-profile/variations.js +86 -0
  429. package/src/blocks/author-profile/view.js +5 -0
  430. package/src/blocks/author-profile/view.php +501 -0
  431. package/src/blocks/author-profile/view.scss +159 -0
  432. package/src/blocks/carousel/block.json +121 -0
  433. package/src/blocks/carousel/create-swiper.js +230 -0
  434. package/src/blocks/carousel/edit.js +469 -0
  435. package/src/blocks/carousel/editor.js +7 -0
  436. package/src/blocks/carousel/editor.scss +54 -0
  437. package/src/blocks/carousel/index.js +55 -0
  438. package/src/blocks/carousel/view.js +49 -0
  439. package/src/blocks/carousel/view.php +417 -0
  440. package/src/blocks/carousel/view.scss +397 -0
  441. package/src/blocks/checkout-button/block.json +117 -0
  442. package/src/blocks/checkout-button/deprecated.js +81 -0
  443. package/src/blocks/checkout-button/edit.js +385 -0
  444. package/src/blocks/checkout-button/edit.scss +67 -0
  445. package/src/blocks/checkout-button/editor.js +19 -0
  446. package/src/blocks/checkout-button/index.js +32 -0
  447. package/src/blocks/checkout-button/view.js +4 -0
  448. package/src/blocks/checkout-button/view.php +178 -0
  449. package/src/blocks/checkout-button/view.scss +39 -0
  450. package/src/blocks/donate/block.json +103 -0
  451. package/src/blocks/donate/consts.ts +25 -0
  452. package/src/blocks/donate/edit/FrequencyBasedLayout.tsx +255 -0
  453. package/src/blocks/donate/edit/TierBasedLayout.tsx +133 -0
  454. package/src/blocks/donate/edit/components/AmountValueInput.tsx +62 -0
  455. package/src/blocks/donate/edit/components/index.tsx +1 -0
  456. package/src/blocks/donate/edit/index.tsx +445 -0
  457. package/src/blocks/donate/editor.js +7 -0
  458. package/src/blocks/donate/frequency-based/index.ts +135 -0
  459. package/src/blocks/donate/frequency-based/style.scss +245 -0
  460. package/src/blocks/donate/frontend/class-newspack-blocks-donate-renderer-base.php +225 -0
  461. package/src/blocks/donate/frontend/class-newspack-blocks-donate-renderer-frequency-based.php +341 -0
  462. package/src/blocks/donate/frontend/class-newspack-blocks-donate-renderer-tiers-based.php +184 -0
  463. package/src/blocks/donate/frontend/class-newspack-blocks-donate-renderer.php +117 -0
  464. package/src/blocks/donate/index.js +72 -0
  465. package/src/blocks/donate/styles/editor.scss +230 -0
  466. package/src/blocks/donate/styles/style-variations.scss +792 -0
  467. package/src/blocks/donate/styles/view.scss +45 -0
  468. package/src/blocks/donate/tiers-based/index.ts +36 -0
  469. package/src/blocks/donate/tiers-based/slider.ts +64 -0
  470. package/src/blocks/donate/tiers-based/style.scss +185 -0
  471. package/src/blocks/donate/tiers-based/types.ts +3 -0
  472. package/src/blocks/donate/tiers-based/utils.test.js +38 -0
  473. package/src/blocks/donate/tiers-based/utils.ts +21 -0
  474. package/src/blocks/donate/tiers-based/view.ts +132 -0
  475. package/src/blocks/donate/types.ts +96 -0
  476. package/src/blocks/donate/utils.ts +108 -0
  477. package/src/blocks/donate/view.php +29 -0
  478. package/src/blocks/donate/view.ts +44 -0
  479. package/src/blocks/homepage-articles/block.json +260 -0
  480. package/src/blocks/homepage-articles/class-wp-rest-newspack-articles-controller.php +231 -0
  481. package/src/blocks/homepage-articles/edit.tsx +730 -0
  482. package/src/blocks/homepage-articles/editor.js +16 -0
  483. package/src/blocks/homepage-articles/editor.scss +226 -0
  484. package/src/blocks/homepage-articles/index.js +102 -0
  485. package/src/blocks/homepage-articles/store.js +193 -0
  486. package/src/blocks/homepage-articles/templates/article.php +290 -0
  487. package/src/blocks/homepage-articles/templates/articles-list.php +21 -0
  488. package/src/blocks/homepage-articles/templates/articles-loop.php +35 -0
  489. package/src/blocks/homepage-articles/utils.ts +270 -0
  490. package/src/blocks/homepage-articles/view.js +242 -0
  491. package/src/blocks/homepage-articles/view.php +561 -0
  492. package/src/blocks/homepage-articles/view.scss +784 -0
  493. package/src/blocks/iframe/block.json +36 -0
  494. package/src/blocks/iframe/class-wp-rest-newspack-iframe-controller.php +586 -0
  495. package/src/blocks/iframe/edit.js +232 -0
  496. package/src/blocks/iframe/editor.js +7 -0
  497. package/src/blocks/iframe/editor.scss +84 -0
  498. package/src/blocks/iframe/iframe-placeholder.js +166 -0
  499. package/src/blocks/iframe/index.js +54 -0
  500. package/src/blocks/iframe/view.js +49 -0
  501. package/src/blocks/iframe/view.php +116 -0
  502. package/src/blocks/iframe/view.scss +9 -0
  503. package/src/blocks/shared/author.js +47 -0
  504. package/src/blocks/video-playlist/edit.js +222 -0
  505. package/src/blocks/video-playlist/editor.js +7 -0
  506. package/src/blocks/video-playlist/editor.scss +23 -0
  507. package/src/blocks/video-playlist/index.js +54 -0
  508. package/src/blocks/video-playlist/view.php +188 -0
  509. package/src/components/autocomplete-tokenfield.js +189 -0
  510. package/src/components/autocomplete-tokenfield.scss +27 -0
  511. package/src/components/editor-panels.js +90 -0
  512. package/src/components/query-controls.js +450 -0
  513. package/src/components/redirect-after-success.tsx +50 -0
  514. package/src/modal-checkout/accessibility.js +73 -0
  515. package/src/modal-checkout/analytics/ga4/README.md +45 -0
  516. package/src/modal-checkout/analytics/ga4/checkout-attempt.js +18 -0
  517. package/src/modal-checkout/analytics/ga4/checkout-success.js +17 -0
  518. package/src/modal-checkout/analytics/ga4/dismissed.js +17 -0
  519. package/src/modal-checkout/analytics/ga4/loaded.js +17 -0
  520. package/src/modal-checkout/analytics/ga4/opened.js +37 -0
  521. package/src/modal-checkout/analytics/ga4/pagination.js +59 -0
  522. package/src/modal-checkout/analytics/ga4/utils/index.js +64 -0
  523. package/src/modal-checkout/analytics/index.js +6 -0
  524. package/src/modal-checkout/checkout.scss +1064 -0
  525. package/src/modal-checkout/index.js +929 -0
  526. package/src/modal-checkout/modal.js +983 -0
  527. package/src/modal-checkout/modal.scss +265 -0
  528. package/src/modal-checkout/templates/empty-html-add-recipient.php +15 -0
  529. package/src/modal-checkout/templates/empty-order-details.php +16 -0
  530. package/src/modal-checkout/templates/form-change-payment-method.php +99 -0
  531. package/src/modal-checkout/templates/form-checkout.php +74 -0
  532. package/src/modal-checkout/templates/form-coupon.php +22 -0
  533. package/src/modal-checkout/templates/form-gift-subscription.php +34 -0
  534. package/src/modal-checkout/templates/payment-method.php +29 -0
  535. package/src/modal-checkout/templates/thankyou.php +94 -0
  536. package/src/modal-checkout/utils.js +309 -0
  537. package/src/setup/block-styles.js +2 -0
  538. package/src/setup/category.js +18 -0
  539. package/src/setup/editor.js +7 -0
  540. package/src/setup/editor.scss +56 -0
  541. package/src/setup/newspack-logo.js +26 -0
  542. package/src/setup/placeholder-blocks.js +84 -0
  543. package/src/setup/unregister-blocks.js +14 -0
  544. package/src/shared/authors.php +63 -0
  545. package/src/shared/js/newspack-icon.js +31 -0
  546. package/src/shared/js/utils.js +50 -0
  547. package/src/shared/sass/_mixins.scss +42 -0
  548. package/src/shared/sass/_placeholder.scss +5 -0
  549. package/src/shared/sass/_preview.scss +12 -0
  550. package/src/shared/sass/_variables.scss +24 -0
  551. package/src/templates/author-profile-card.php +145 -0
  552. package/src/types/@wordpress/block-editor.d.ts +1 -0
  553. package/src/types/@wordpress/components.d.ts +1 -0
  554. package/src/types/index.d.ts +170 -0
  555. package/src/types/newspack-components.d.ts +7 -0
  556. package/tsconfig.json +7 -0
  557. package/vendor/autoload.php +22 -0
  558. package/vendor/composer/ClassLoader.php +579 -0
  559. package/vendor/composer/InstalledVersions.php +396 -0
  560. package/vendor/composer/LICENSE +21 -0
  561. package/vendor/composer/autoload_classmap.php +10 -0
  562. package/vendor/composer/autoload_namespaces.php +9 -0
  563. package/vendor/composer/autoload_psr4.php +9 -0
  564. package/vendor/composer/autoload_real.php +36 -0
  565. package/vendor/composer/autoload_static.php +20 -0
  566. package/vendor/composer/installed.json +5 -0
  567. package/vendor/composer/installed.php +23 -0
  568. package/webpack.config.js +82 -0
@@ -0,0 +1,86 @@
1
+ <?php
2
+ /**
3
+ * Subscriptions Change Payment Gateway integration for the Modal Checkout.
4
+ *
5
+ * @package Newspack
6
+ */
7
+
8
+ namespace Newspack_Blocks\Modal_Checkout;
9
+
10
+ use Newspack_Blocks\Modal_Checkout;
11
+
12
+
13
+ /**
14
+ * Change Payment Gateway integration class.
15
+ */
16
+ final class Change_Payment_Gateway {
17
+ /**
18
+ * Initialize hooks.
19
+ */
20
+ public static function init() {
21
+ add_action( 'init', [ __CLASS__, 'remove_filters' ] );
22
+ add_filter( 'newspack_modal_checkout_success_text', [ __CLASS__, 'get_success_text' ] );
23
+ add_filter( 'newspack_modal_checkout_data', [ __CLASS__, 'get_checkout_data' ] );
24
+ }
25
+
26
+ /**
27
+ * Remove some WooCommerce Subscriptions filters for the modal checkout.
28
+ */
29
+ public static function remove_filters() {
30
+ if ( ! Modal_Checkout::is_modal_checkout() ) {
31
+ return;
32
+ }
33
+
34
+ // Remove the custom return URL filter so it renders modal checkout's
35
+ // "Thank You" template.
36
+ remove_filter( 'woocommerce_get_return_url', 'WC_Subscriptions_Change_Payment_Gateway::get_return_url', 11 );
37
+ }
38
+
39
+ /**
40
+ * Use WooCommerce Subscriptions' success notice for the change payment
41
+ * method form.
42
+ *
43
+ * @param string $text The success text.
44
+ *
45
+ * @return string The success text.
46
+ */
47
+ public static function get_success_text( $text ) {
48
+ if ( ! isset( $_GET['action_type'] ) || 'change_payment_method' !== $_GET['action_type'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
49
+ return $text;
50
+ }
51
+
52
+ $notices = wc_get_notices( 'success' );
53
+ wc_clear_notices();
54
+
55
+ return implode(
56
+ '<br>',
57
+ array_map(
58
+ function( $notice ) {
59
+ return $notice['notice'];
60
+ },
61
+ $notices
62
+ )
63
+ );
64
+ }
65
+
66
+ /**
67
+ * Modify the checkout data for the change payment method action.
68
+ *
69
+ * @param array $data The checkout data.
70
+ *
71
+ * @return array The checkout data.
72
+ */
73
+ public static function get_checkout_data( $data ) {
74
+ if ( $data['action_type'] !== 'change_payment_method' ) {
75
+ return $data;
76
+ }
77
+
78
+ // The original order may contain gate or prompt post IDs, which are not
79
+ // relevant for this action and should be removed to avoid confusion.
80
+ unset( $data['gate_post_id'] );
81
+ unset( $data['prompt_post_id'] );
82
+
83
+ return $data;
84
+ }
85
+ }
86
+ Change_Payment_Gateway::init();
@@ -0,0 +1,406 @@
1
+ <?php
2
+ /**
3
+ * Newspack Blocks Modal Checkout Data.
4
+ *
5
+ * @package Newspack
6
+ */
7
+
8
+ namespace Newspack_Blocks\Modal_Checkout;
9
+
10
+ /**
11
+ * Checkout Data Class.
12
+ */
13
+ final class Checkout_Data {
14
+ /**
15
+ * Get price string for the price summary card to render in auth flow.
16
+ *
17
+ * @param string $name The name.
18
+ * @param string $price The price. Optional. If not provided, the price string will contain 0.
19
+ * @param string $frequency The frequency. Optional. If not provided, the price will be treated as a one-time payment.
20
+ * @param int $product_id Product ID to get additional subscription details. Optional.
21
+ *
22
+ * @return string The price string.
23
+ */
24
+ public static function get_price_summary( $name, $price = '', $frequency = '', $product_id = null ) {
25
+ if ( ! $price ) {
26
+ $price = '0';
27
+ }
28
+
29
+ if ( function_exists( 'wcs_price_string' ) && function_exists( 'wc_price' ) && function_exists( 'wc_get_product' ) && class_exists( 'WC_Subscriptions_Product' ) ) {
30
+ if ( $frequency && $frequency !== 'once' ) {
31
+ // Get additional subscription details if product_id is provided.
32
+ $subscription_interval = 1;
33
+ $trial_length = 0;
34
+ $trial_period = '';
35
+ $initial_amount = 0;
36
+
37
+ if ( $product_id ) {
38
+ $product = wc_get_product( $product_id );
39
+ $subscription_interval = \WC_Subscriptions_Product::get_interval( $product );
40
+ $trial_length = \WC_Subscriptions_Product::get_trial_length( $product );
41
+ $trial_period = \WC_Subscriptions_Product::get_trial_period( $product );
42
+ $initial_amount = \WC_Subscriptions_Product::get_sign_up_fee( $product );
43
+
44
+ if ( empty( $subscription_interval ) ) {
45
+ $subscription_interval = 1;
46
+ }
47
+ }
48
+
49
+ $price = wp_strip_all_tags(
50
+ wcs_price_string(
51
+ [
52
+ 'recurring_amount' => $price,
53
+ 'subscription_period' => $frequency,
54
+ 'subscription_interval' => $subscription_interval,
55
+ 'use_per_slash' => true,
56
+ 'trial_length' => $trial_length,
57
+ 'trial_period' => $trial_period,
58
+ 'initial_amount' => $initial_amount,
59
+ ]
60
+ )
61
+ );
62
+ } elseif ( $price !== '{{PRICE}}' ) { // Preserve placeholder for templating.
63
+ $price = wp_strip_all_tags( wc_price( $price ) );
64
+ }
65
+ }
66
+
67
+ // translators: 1 is the name of the item. 2 is the price of the item.
68
+ $price_summary = sprintf( __( '%1$s: %2$s', 'newspack-blocks' ), $name, $price );
69
+
70
+ /**
71
+ * Filters the price summary string that appears in modal checkout.
72
+ *
73
+ * @param string $price_summary The formatted price summary string.
74
+ * @param string $product_id The product ID, if available.
75
+ *
76
+ * @return string The filtered price summary string.
77
+ */
78
+ return apply_filters( 'newspack_modal_checkout_price_summary', $price_summary, $product_id );
79
+ }
80
+
81
+ /**
82
+ * Returns whether a product is a one time purchase, or recurring and when.
83
+ *
84
+ * @param string $product_id Product's ID.
85
+ *
86
+ * @return string The purchase recurrence.
87
+ */
88
+ public static function get_purchase_recurrence( $product_id ) {
89
+ if ( ! function_exists( 'wc_get_product' ) ) {
90
+ return 'once';
91
+ }
92
+ $product = \wc_get_product( $product_id );
93
+ if ( $product && ( $product->is_type( 'subscription' ) || $product->is_type( 'subscription_variation' ) ) ) {
94
+ $recurrence = get_post_meta( $product_id, '_subscription_period', true );
95
+ if ( ! empty( $recurrence ) ) {
96
+ return $recurrence;
97
+ }
98
+ }
99
+ return 'once';
100
+ }
101
+
102
+ /**
103
+ * Returns whether a product ID is associated with a membership.
104
+ *
105
+ * @param string $product_id Product's ID.
106
+ */
107
+ public static function is_membership_product( $product_id ) {
108
+ if ( ! function_exists( 'wc_memberships_get_membership_plans' ) ) {
109
+ return false;
110
+ }
111
+ $membership_plans = wc_memberships_get_membership_plans();
112
+ $plans = [];
113
+
114
+ foreach ( $membership_plans as $plan ) {
115
+ $subscription_plan = new \WC_Memberships_Integration_Subscriptions_Membership_Plan( $plan->get_id() );
116
+ $required_products = $subscription_plan->get_subscription_product_ids();
117
+ if ( in_array( $product_id, $required_products ) ) {
118
+ return true;
119
+ }
120
+ }
121
+ return false;
122
+ }
123
+
124
+
125
+ /**
126
+ * Returns the product type: product, subscription, donation, or membership.
127
+ *
128
+ * @param string $product_id Product's ID.
129
+ */
130
+ public static function get_product_type( $product_id ) {
131
+ $product_type = 'product';
132
+ $recurrence = self::get_purchase_recurrence( $product_id );
133
+
134
+ // Check if it's a subscription product.
135
+ if ( 'once' !== $recurrence ) {
136
+ $product_type = 'subscription';
137
+ }
138
+
139
+ // Check if it's a membership product.
140
+ if ( self::is_membership_product( $product_id ) ) {
141
+ $product_type = 'membership';
142
+ }
143
+
144
+ // Check if it's a donation product.
145
+ if ( method_exists( 'Newspack\Donations', 'is_donation_product' ) ) {
146
+ if ( \Newspack\Donations::is_donation_product( $product_id ) ) {
147
+ $product_type = 'donation';
148
+ }
149
+ }
150
+
151
+ return $product_type;
152
+ }
153
+
154
+ /**
155
+ * Returns the action type: checkout_button or donation.
156
+ *
157
+ * @param string $product_id Product's ID.
158
+ * @param \WC_Order $order Optional order to check if it's a subscription switch.
159
+ */
160
+ public static function get_action_type( $product_id, $order = null ) {
161
+ $action_type = 'checkout_button';
162
+
163
+ // Check if it's a donation product, and update action_type, product_type.
164
+ if ( method_exists( 'Newspack\Donations', 'is_donation_product' ) ) {
165
+ if ( \Newspack\Donations::is_donation_product( $product_id ) ) {
166
+ $action_type = 'donation';
167
+ }
168
+ }
169
+
170
+ // Check if it's a subscription switch.
171
+ if ( $order ) {
172
+ if ( function_exists( 'wcs_order_contains_switch' ) && wcs_order_contains_switch( $order ) ) {
173
+ $action_type = 'subscription_switch';
174
+ }
175
+ } elseif ( method_exists( 'WC_Subscriptions_Switcher', 'cart_contains_switches' ) && \WC_Subscriptions_Switcher::cart_contains_switches( 'any' ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
176
+ $action_type = 'subscription_switch';
177
+ }
178
+
179
+ // Check if the action type is set in the URL.
180
+ if ( isset( $_GET['action_type'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
181
+ $action_type = sanitize_text_field( wp_unslash( $_GET['action_type'] ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
182
+ }
183
+
184
+ return $action_type;
185
+ }
186
+
187
+ /**
188
+ * Get donate product checkout data.
189
+ *
190
+ * @param string $frequency The frequency.
191
+ * @param int $amount The amount.
192
+ *
193
+ * @return array
194
+ */
195
+ public static function get_donation_checkout_data( $frequency, $amount = null ) {
196
+ if ( ! method_exists( 'Newspack\Donations', 'get_donation_product' ) ) {
197
+ return [];
198
+ }
199
+ $product_id = \Newspack\Donations::get_donation_product( $frequency );
200
+ if ( ! $product_id ) {
201
+ return [];
202
+ }
203
+ $product = wc_get_product( $product_id );
204
+ if ( ! $product ) {
205
+ return [];
206
+ }
207
+ $data = self::get_checkout_data( $product );
208
+ if ( $amount ) {
209
+ $data['amount'] = $amount;
210
+ }
211
+ return $data;
212
+ }
213
+
214
+ /**
215
+ * Recursively get the children of a product, returning only ungrouped children.
216
+ *
217
+ * @param \WC_Product $product Product object.
218
+ * @return array Array of child product IDs.
219
+ */
220
+ public static function get_children( $product ) {
221
+ $children = [];
222
+ foreach ( $product->get_children() as $child_id ) {
223
+ $child = \wc_get_product( $child_id );
224
+ // Check if the child has children of its own.
225
+ if ( method_exists( $child, 'get_children' ) && $child->get_children() ) {
226
+ $children = array_merge( $children, self::get_children( $child ) );
227
+ } else {
228
+ $children[] = $child_id;
229
+ }
230
+ }
231
+ return $children;
232
+ }
233
+
234
+ /**
235
+ * Returns checkout data given a product, product variation, cart or order object.
236
+ *
237
+ * @param \WC_Product|\WC_Product_Variation|\WC_Cart|\WC_Order $source Product, product variation, cart or order object.
238
+ *
239
+ * @return array
240
+ */
241
+ public static function get_checkout_data( $source ) {
242
+ $data = [];
243
+ if ( empty( $source ) ) {
244
+ return $data;
245
+ }
246
+
247
+ $cart_item = null;
248
+ $order = null;
249
+ $referrer = '';
250
+ $variation_id = null;
251
+ $is_variable = false;
252
+ $is_grouped = false;
253
+
254
+ if ( $source instanceof \WC_Product ) {
255
+ if ( $source->is_type( 'grouped' ) ) {
256
+ $is_grouped = true;
257
+ $product_id = $source->get_id();
258
+ $children = self::get_children( $source );
259
+ } elseif ( $source->is_type( 'variable' ) ) {
260
+ $is_variable = true;
261
+ $product_id = $source->get_id();
262
+ $children = self::get_children( $source );
263
+ } elseif ( $source instanceof \WC_Product_Variation ) {
264
+ $product_id = $source->get_parent_id();
265
+ $variation_id = $source->get_id();
266
+ $amount = $source->get_price();
267
+ } else {
268
+ $product_id = $source->get_id();
269
+ if ( $source->get_parent_id() ) {
270
+ $product_id = $source->get_parent_id();
271
+ $variation_id = $source->get_id();
272
+ }
273
+ $amount = $source->get_price();
274
+ }
275
+ } elseif ( $source instanceof \WC_Cart ) {
276
+ $cart_items = $source->get_cart();
277
+ $cart_item = reset( $cart_items ); // Use only the first item in the cart.
278
+ $product_id = $cart_item['product_id'];
279
+ $variation_id = $cart_item['variation_id'];
280
+ $amount = $cart_item['data']->get_price();
281
+ $referrer = $cart_item['referer'] ?? '';
282
+ } elseif ( $source instanceof \WC_Order ) {
283
+ // If order as actually a subscription object, we need to get the original order.
284
+ if ( $source instanceof \WC_Subscription ) {
285
+ $order = $source->get_parent();
286
+ } else {
287
+ $order = $source;
288
+ }
289
+ $order_items = $order->get_items();
290
+ $order_item = reset( $order_items ); // Use only the first item in the order.
291
+ $product_id = $order_item->get_product_id();
292
+ $variation_id = $order_item->get_variation_id();
293
+ $amount = $order_item->get_subtotal();
294
+ $referrer = $order->get_meta( '_newspack_referer' );
295
+ }
296
+
297
+ // If we have no referrer, set it to the current path.
298
+ if ( ! $referrer ) {
299
+ global $wp;
300
+ $referrer = $wp->request;
301
+ }
302
+
303
+ $product_type = self::get_product_type( $product_id );
304
+ $recurrence = self::get_purchase_recurrence( $variation_id ? $variation_id : $product_id );
305
+
306
+ /**
307
+ * Price summary name.
308
+ */
309
+ if ( 'donation' === $product_type ) {
310
+ $name = __( 'Donate', 'newspack-blocks' );
311
+ } elseif ( $variation_id ) {
312
+ $variation = wc_get_product( $variation_id );
313
+ $name = $variation->get_name();
314
+ } else {
315
+ $product = wc_get_product( $product_id );
316
+ $name = $product->get_name();
317
+ }
318
+
319
+ $data = [
320
+ 'action_type' => self::get_action_type( $product_id, $order ),
321
+ 'currency' => function_exists( 'get_woocommerce_currency' ) ? \get_woocommerce_currency() : 'USD',
322
+ 'product_id' => strval( $product_id ? $product_id : '' ),
323
+ 'product_type' => $product_type,
324
+ 'referrer' => $referrer ? str_replace( home_url(), '', $referrer ) : '', // Keeps format consistent for Homepage with Donate and Checkout Button blocks.
325
+ ];
326
+
327
+ if ( $is_variable ) {
328
+ $data['is_variable'] = true;
329
+ $data['variation_ids'] = $children;
330
+ } elseif ( $is_grouped ) {
331
+ $data['is_grouped'] = true;
332
+ $data['child_ids'] = $children;
333
+ } else {
334
+ $data['amount'] = $amount;
335
+ $data['price_summary'] = self::get_price_summary( $name, $amount, $recurrence, $variation_id ? $variation_id : $product_id );
336
+ $data['summary_template'] = self::get_price_summary( $name, '{{PRICE}}', $recurrence, $variation_id ? $variation_id : $product_id );
337
+ $data['recurrence'] = $recurrence;
338
+ }
339
+ if ( $variation_id ) {
340
+ $data['variation_id'] = strval( $variation_id );
341
+ }
342
+
343
+ /**
344
+ * Order specific data.
345
+ */
346
+ if ( $order ) {
347
+ $data['order_id'] = $order->get_id();
348
+ if ( in_array( $product_type, [ 'subscription', 'membership' ], true ) ) {
349
+ $subscription_renewal = $order->get_meta( '_subscription_renewal' );
350
+ if ( $subscription_renewal ) {
351
+ $data['subscription_renewal'] = $subscription_renewal;
352
+ }
353
+ if ( function_exists( 'wcs_get_subscriptions_for_order' ) ) {
354
+ $subscriptions = wcs_get_subscriptions_for_order( $order );
355
+ if ( ! empty( $subscriptions ) ) {
356
+ $data['subscription_ids'] = array_values(
357
+ array_map(
358
+ function( $subscription ) {
359
+ return $subscription->get_id();
360
+ },
361
+ $subscriptions
362
+ )
363
+ );
364
+ }
365
+ }
366
+ }
367
+ }
368
+
369
+ /**
370
+ * Gate and popup data.
371
+ */
372
+ $gate_post_id = null;
373
+ $newspack_popup_id = null;
374
+ $prompt_title = null;
375
+ if ( $order ) {
376
+ $gate_post_id = $order->get_meta( '_gate_post_id' );
377
+ $newspack_popup_id = $order->get_meta( '_newspack_popup_id' );
378
+ $prompt_title = $order->get_meta( '_prompt_title' );
379
+ } elseif ( $cart_item ) {
380
+ $gate_post_id = $cart_item['gate_post_id'] ?? null;
381
+ $newspack_popup_id = $cart_item['newspack_popup_id'] ?? null;
382
+ $prompt_title = $cart_item['prompt_title'] ?? null;
383
+ } else {
384
+ $gate_post_id = filter_input( INPUT_GET, 'gate_post_id', FILTER_SANITIZE_NUMBER_INT );
385
+ $newspack_popup_id = filter_input( INPUT_GET, 'newspack_popup_id', FILTER_SANITIZE_NUMBER_INT );
386
+ $prompt_title = filter_input( INPUT_GET, 'prompt_title', FILTER_SANITIZE_SPECIAL_CHARS );
387
+ }
388
+ if ( $gate_post_id ) {
389
+ $data['gate_post_id'] = $gate_post_id;
390
+ }
391
+ if ( $newspack_popup_id ) {
392
+ $data['newspack_popup_id'] = $newspack_popup_id;
393
+ }
394
+ if ( $prompt_title ) {
395
+ $data['prompt_title'] = $prompt_title;
396
+ }
397
+
398
+ /**
399
+ * Filters the checkout data.
400
+ *
401
+ * @param array $data The checkout data.
402
+ * @param \WC_Product|\WC_Product_Variation|\WC_Cart|\WC_Order $source Product, product variation, cart or order object.
403
+ */
404
+ return apply_filters( 'newspack_modal_checkout_data', $data, $source );
405
+ }
406
+ }
@@ -0,0 +1,84 @@
1
+ <?php
2
+ /**
3
+ * The Events Calendar integration class.
4
+ *
5
+ * @package Newspack
6
+ */
7
+
8
+ namespace Newspack_Blocks;
9
+
10
+ defined( 'ABSPATH' ) || exit;
11
+
12
+ /**
13
+ * Main class.
14
+ */
15
+ class The_Events_Calendar {
16
+ /**
17
+ * Initialize hooks and filters.
18
+ */
19
+ public static function init() {
20
+ add_filter( 'tribe_events_register_event_type_args', [ __CLASS__, 'register_event_type_args' ] );
21
+ add_filter( 'newspack_blocks_displayed_post_date', [ __CLASS__, 'get_displayed_post_date' ], 10, 2 );
22
+ add_filter( 'newspack_blocks_formatted_displayed_post_date', [ __CLASS__, 'get_formatted_displayed_post_date' ], 10, 2 );
23
+ add_filter( 'newspack_blocks_article_meta_footer', [ __CLASS__, 'get_article_meta_footer' ], 10, 2 );
24
+ }
25
+
26
+ /**
27
+ * Enable Newspack Blocks support for The Events Calendar.
28
+ *
29
+ * @param array $args The post type args.
30
+ */
31
+ public static function register_event_type_args( $args ) {
32
+ $args['supports'][] = 'newspack_blocks';
33
+ return $args;
34
+ }
35
+
36
+ /**
37
+ * Get the displayed post date.
38
+ *
39
+ * @param string $date The date.
40
+ * @param WP_Post $post The post object.
41
+ */
42
+ public static function get_displayed_post_date( $date, $post ) {
43
+ if ( $post->post_type === 'tribe_events' ) {
44
+ return mysql_to_rfc3339( get_post_meta( $post->ID, '_EventStartDate', true ) );
45
+ }
46
+ return $date;
47
+ }
48
+
49
+ /**
50
+ * Get the formatted displayed post date.
51
+ *
52
+ * @param string $date The date.
53
+ * @param WP_Post $post The post object.
54
+ */
55
+ public static function get_formatted_displayed_post_date( $date, $post ) {
56
+ if ( $post->post_type === 'tribe_events' && function_exists( 'tribe_events_event_schedule_details' ) ) {
57
+ try {
58
+ $html = tribe_events_event_schedule_details( $post );
59
+ return wp_strip_all_tags( $html );
60
+ } catch ( \Throwable $th ) {
61
+ return $date;
62
+ }
63
+ }
64
+ return $date;
65
+ }
66
+
67
+ /**
68
+ * Get the article meta footer.
69
+ *
70
+ * @param string $footer The footer.
71
+ * @param WP_Post $post The post object.
72
+ */
73
+ public static function get_article_meta_footer( $footer, $post ) {
74
+ if ( $post->post_type === 'tribe_events' && function_exists( 'tribe_get_venue' ) ) {
75
+ $venue = tribe_get_venue( $post );
76
+ if ( ! $venue ) {
77
+ return $footer;
78
+ }
79
+ return $footer . '<span class="newspack-blocks__tec-venue">' . $venue . '</span>';
80
+ }
81
+ return $footer;
82
+ }
83
+ }
84
+ The_Events_Calendar::init();
@@ -0,0 +1,83 @@
1
+ <?php
2
+ /**
3
+ * Newspack Blocks Tracking Data Events Integration.
4
+ *
5
+ * @package Newspack
6
+ */
7
+
8
+ namespace Newspack_Blocks\Tracking;
9
+
10
+ use Newspack_Blocks\Modal_Checkout\Checkout_Data;
11
+
12
+ /**
13
+ * Tracking Data Events Class.
14
+ */
15
+ final class Data_Events {
16
+
17
+ /**
18
+ * The name of the action for form submissions
19
+ */
20
+ const FORM_SUBMISSION_SUCCESS = 'form_submission_success';
21
+
22
+ /**
23
+ * The name of the action for form submissions
24
+ */
25
+ const FORM_SUBMISSION_FAILURE = 'form_submission_failure';
26
+
27
+ /**
28
+ * Initialize hooks.
29
+ */
30
+ public static function init() {
31
+ add_action( 'plugins_loaded', [ __CLASS__, 'register_listeners' ] );
32
+ }
33
+
34
+ /**
35
+ * Register listeners.
36
+ */
37
+ public static function register_listeners() {
38
+ if ( ! method_exists( 'Newspack\Data_Events', 'register_handler' ) ) {
39
+ return;
40
+ }
41
+
42
+ /**
43
+ * Modal Checkout Interation: Completed Order.
44
+ */
45
+ \Newspack\Data_Events::register_listener(
46
+ 'woocommerce_checkout_order_processed',
47
+ 'modal_checkout_interaction',
48
+ [ __CLASS__, 'order_status_completed' ]
49
+ );
50
+ }
51
+
52
+ /**
53
+ * Send data to GA4.
54
+ *
55
+ * @param string $order_id Order's ID.
56
+ * @param array $posted_data Posted Data.
57
+ * @param \WC_Order $order Order object.
58
+ */
59
+ public static function order_status_completed( $order_id, $posted_data, $order ) {
60
+ // Check if in a modal checkout; if no, bail.
61
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended
62
+ $is_modal_checkout = ( isset( $_REQUEST['modal_checkout'] ) ? true : false );
63
+ if ( ! $is_modal_checkout ) {
64
+ return;
65
+ }
66
+
67
+ $data = \Newspack\Data_Events\Utils::get_order_data( $order_id );
68
+ if ( empty( $data ) ) {
69
+ return;
70
+ }
71
+
72
+ $product_id = is_array( $data['platform_data']['product_id'] ) ? $data['platform_data']['product_id'][0] : $data['platform_data']['product_id'];
73
+
74
+ $data['action'] = self::FORM_SUBMISSION_SUCCESS;
75
+ $data['action_type'] = Checkout_Data::get_action_type( $product_id );
76
+ $data['product_id'] = $product_id;
77
+ $data['product_type'] = Checkout_Data::get_product_type( $product_id );
78
+ $data['recurrence'] = Checkout_Data::get_purchase_recurrence( $product_id );
79
+
80
+ return $data;
81
+ }
82
+ }
83
+ Data_Events::init();
@@ -0,0 +1 @@
1
+ {"translation-revision-date":"2024-08-30 08:45-0700","generator":"WP-CLI\/2.8.1","source":"release\/newspack-blocks\/src\/blocks\/iframe\/edit.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"de","plural-forms":"nplurals=2; plural=(n != 1);"},"Hide iframe preview":[""],"Show iframe preview":[""],"This block will take over the page content.":[""],"Newspack embedded iframe":[""],"An error occured when uploading the iframe archive.":[""],"An error occured when setting the iframe from the archive media.":[""],"Iframe Settings":[""],"Fullscreen":[""],"If enabled, the iframe will be full screen and hide all the post content.":[""],"Width":[""],"Height":[""]}}}
@@ -0,0 +1 @@
1
+ {"translation-revision-date":"2024-08-30 08:45-0700","generator":"WP-CLI\/2.8.1","source":"release\/newspack-blocks\/dist\/placeholder_blocks.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"de","plural-forms":"nplurals=2; plural=(n != 1);"},"Ad Unit":[""],"Render an ad unit from your inventory.":[""],"Place ad units inside your page by installing Newspack Ads.":[""],"The \"%s\" block is currently not available.":[""],"Visit Plugin Page":[""],"Remove Block":[""]}}}
@@ -0,0 +1 @@
1
+ {"translation-revision-date":"2024-08-30 08:45-0700","generator":"WP-CLI\/2.12.0","source":"dist\/carousel\/view.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"de","plural-forms":"nplurals=2; plural=(n != 1);"},"Slide %s":[""],"Slide %1$s of %2$s":[""],"Image: %s,":[""],"Playing":[""],"Paused":[""]}}}
@@ -0,0 +1 @@
1
+ {"translation-revision-date":"2024-08-30 08:45-0700","generator":"WP-CLI\/2.12.0","source":"src\/setup\/placeholder-blocks.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"de","plural-forms":"nplurals=2; plural=(n != 1);"},"Ad Unit":[""],"Render an ad unit from your inventory.":[""],"Place ad units inside your page by installing Newspack Ads.":[""],"The \"%s\" block is currently not available.":[""],"Visit Plugin Page":[""],"Remove Block":[""]}}}
@@ -0,0 +1 @@
1
+ {"translation-revision-date":"2024-08-30 08:45-0700","generator":"WP-CLI\/2.12.0","source":"src\/blocks\/author-list\/index.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"de","plural-forms":"nplurals=2; plural=(n != 1);"},"block style\u0004Default":["Standard"],"block style\u0004Centered":[""],"author":[""],"Author List":[""],"profile":[""],"Display a list of author profile cards.":[""]}}}
@@ -0,0 +1 @@
1
+ {"translation-revision-date":"2024-08-30 08:45-0700","generator":"WP-CLI\/2.12.0","source":"src\/blocks\/author-profile\/single-author.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"de","plural-forms":"nplurals=2; plural=(n != 1);"},"More by %s":[""]}}}
@@ -0,0 +1 @@
1
+ {"translation-revision-date":"2024-08-30 08:45-0700","generator":"WP-CLI\/2.8.1","source":"release\/newspack-blocks\/src\/blocks\/carousel\/create-swiper.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"de","plural-forms":"nplurals=2; plural=(n != 1);"},"Slide %s":[""],"Slide %1$s of %2$s":[""],"Image: %s, ":[""],"Playing":[""],"Paused":[""]}}}
@@ -0,0 +1 @@
1
+ {"translation-revision-date":"2024-08-30 08:45-0700","generator":"WP-CLI\/2.12.0","source":"src\/components\/query-controls.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"de","plural-forms":"nplurals=2; plural=(n != 1);"},"(no title)":["(kein Titel)"],"(no name)":["(kein Name)"],"Deleted category":[""],"Deleted tag":[""],"Mode":[""],"The block will display only the specifically selected content.":[""],"The block will display content based on the filtering settings below.":[""],"Dynamic":[""],"Static":[""],"Content":["Inhalt"],"Begin typing any word in a title. Click on an autocomplete result to select it.":[""],"Category":[""],"is one of":[""],"is all of":[""],"Include subcategories":[""],"Tags":["Schlagw\u00f6rter"],"Authors":["Autoren"],"Excluded categories":[""],"Excluded tags":[""],"Excluded %s":[""],"Allow duplicate content":[""],"Exclude this block from the page's deduplication logic.":[""]}}}