@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.
- package/.eslintrc.js +3 -0
- package/.hooks/pre-push +8 -0
- package/.nvmrc +1 -0
- package/.prettierignore +4 -0
- package/.prettierrc.js +5 -0
- package/.stylelintrc.js +3 -0
- package/AGENTS.md +275 -0
- package/CHANGELOG.md +3971 -0
- package/CLAUDE.md +1 -0
- package/README.md +43 -0
- package/babel.config.js +6 -0
- package/bin/install-wp-tests.sh +155 -0
- package/bin/update-translations.sh +13 -0
- package/block-list.json +12 -0
- package/composer.json +46 -0
- package/composer.lock +3632 -0
- package/dist/author-list/view-rtl.css +1 -0
- package/dist/author-list/view.asset.php +1 -0
- package/dist/author-list/view.css +1 -0
- package/dist/author-list/view.js +0 -0
- package/dist/author-profile/view-rtl.css +1 -0
- package/dist/author-profile/view.asset.php +1 -0
- package/dist/author-profile/view.css +1 -0
- package/dist/author-profile/view.js +0 -0
- package/dist/block_styles-rtl.css +2 -0
- package/dist/block_styles.asset.php +1 -0
- package/dist/block_styles.css +2 -0
- package/dist/block_styles.js +0 -0
- package/dist/blocks/author-list/block.json +89 -0
- package/dist/blocks/author-profile/block.json +80 -0
- package/dist/blocks/carousel/block.json +125 -0
- package/dist/blocks/checkout-button/block.json +117 -0
- package/dist/blocks/donate/block.json +103 -0
- package/dist/blocks/homepage-articles/block.json +260 -0
- package/dist/blocks/iframe/block.json +36 -0
- package/dist/carousel/view-rtl.css +2 -0
- package/dist/carousel/view.asset.php +1 -0
- package/dist/carousel/view.css +2 -0
- package/dist/carousel/view.js +3 -0
- package/dist/checkout-button/view-rtl.css +1 -0
- package/dist/checkout-button/view.asset.php +1 -0
- package/dist/checkout-button/view.css +1 -0
- package/dist/checkout-button/view.js +0 -0
- package/dist/donate/view-rtl.css +1 -0
- package/dist/donate/view.asset.php +1 -0
- package/dist/donate/view.css +1 -0
- package/dist/donate/view.js +1 -0
- package/dist/editor-rtl.css +66 -0
- package/dist/editor.asset.php +1 -0
- package/dist/editor.css +66 -0
- package/dist/editor.js +57 -0
- package/dist/frequencyBased-rtl.css +1 -0
- package/dist/frequencyBased.asset.php +1 -0
- package/dist/frequencyBased.css +1 -0
- package/dist/frequencyBased.js +1 -0
- package/dist/homepage-articles/view-rtl.css +1 -0
- package/dist/homepage-articles/view.asset.php +1 -0
- package/dist/homepage-articles/view.css +1 -0
- package/dist/homepage-articles/view.js +1 -0
- package/dist/iframe/view-rtl.css +1 -0
- package/dist/iframe/view.asset.php +1 -0
- package/dist/iframe/view.css +1 -0
- package/dist/iframe/view.js +1 -0
- package/dist/modal-rtl.css +1 -0
- package/dist/modal.asset.php +1 -0
- package/dist/modal.css +1 -0
- package/dist/modal.js +1 -0
- package/dist/modalCheckout-rtl.css +1 -0
- package/dist/modalCheckout.asset.php +1 -0
- package/dist/modalCheckout.css +1 -0
- package/dist/modalCheckout.js +1 -0
- package/dist/placeholder_blocks.asset.php +1 -0
- package/dist/placeholder_blocks.js +4 -0
- package/dist/tiersBased-rtl.css +1 -0
- package/dist/tiersBased.asset.php +1 -0
- package/dist/tiersBased.css +1 -0
- package/dist/tiersBased.js +1 -0
- package/includes/class-modal-checkout.php +2324 -0
- package/includes/class-newspack-blocks-api.php +347 -0
- package/includes/class-newspack-blocks-caching.php +291 -0
- package/includes/class-newspack-blocks-patterns.php +167 -0
- package/includes/class-newspack-blocks.php +1581 -0
- package/includes/modal-checkout/class-change-payment-gateway.php +86 -0
- package/includes/modal-checkout/class-checkout-data.php +406 -0
- package/includes/plugins/class-the-events-calendar.php +84 -0
- package/includes/tracking/class-data-events.php +83 -0
- package/languages/newspack-blocks-de_DE-01a5b44b8bc8d20f62541de420aa61ab.json +1 -0
- package/languages/newspack-blocks-de_DE-0662222bf15e7a1a7b74db2dabb48d6c.json +1 -0
- package/languages/newspack-blocks-de_DE-0c8dad524e2a57cee4f8efb6e35387c1.json +1 -0
- package/languages/newspack-blocks-de_DE-10754bc02d28d4301c103f26dbf519ce.json +1 -0
- package/languages/newspack-blocks-de_DE-2d52b39fdbc5d6c94b3514803f3720b8.json +1 -0
- package/languages/newspack-blocks-de_DE-34e5c64f90b1444f3fc735376442eada.json +1 -0
- package/languages/newspack-blocks-de_DE-351fd022e077061b5796bf7042446bfc.json +1 -0
- package/languages/newspack-blocks-de_DE-37552bb09e2a9fceec1970e3c6d46557.json +1 -0
- package/languages/newspack-blocks-de_DE-4b2ccb4e4dc8b3491228b2feb54872f2.json +1 -0
- package/languages/newspack-blocks-de_DE-4cecf783e091d36284a3e0cdafcd0fd5.json +1 -0
- package/languages/newspack-blocks-de_DE-4f16e21047908d19937bc10ced63acd1.json +1 -0
- package/languages/newspack-blocks-de_DE-4fdea541976076f02d56139fb35e5b42.json +1 -0
- package/languages/newspack-blocks-de_DE-501b38ac90d35730a620fb0d483702fa.json +1 -0
- package/languages/newspack-blocks-de_DE-53e2a1d5945b8d2b1c35e81ae1e532f3.json +1 -0
- package/languages/newspack-blocks-de_DE-5d4055f484eeb00e3ea0f9d8aace0897.json +1 -0
- package/languages/newspack-blocks-de_DE-5f70538e0223bc8a05b922cba67da6fb.json +1 -0
- package/languages/newspack-blocks-de_DE-6c2e53bab28419c30e1eaee70ba599cf.json +1 -0
- package/languages/newspack-blocks-de_DE-6ed95fb4873e6e2b81351177a44995f6.json +1 -0
- package/languages/newspack-blocks-de_DE-727631509ad8eec8e2cbe740c6dad199.json +1 -0
- package/languages/newspack-blocks-de_DE-73c6d3bde805172d1993f75397e9832d.json +1 -0
- package/languages/newspack-blocks-de_DE-78456b164809d080adecb4d2b3895802.json +1 -0
- package/languages/newspack-blocks-de_DE-7b1aa64ce2d962decc04666ab86c53de.json +1 -0
- package/languages/newspack-blocks-de_DE-7c29764d5ef91723f5ce454f66431b9e.json +1 -0
- package/languages/newspack-blocks-de_DE-912a2876091ef0dca9b26f3cfc01fc9c.json +1 -0
- package/languages/newspack-blocks-de_DE-91a7ac8017d6e2159be1c5a3c1e372e4.json +1 -0
- package/languages/newspack-blocks-de_DE-969286d51bb0afe10983b9aec317b5ee.json +1 -0
- package/languages/newspack-blocks-de_DE-9ef9b2c60c897ad79f92951e6e9949a1.json +1 -0
- package/languages/newspack-blocks-de_DE-a822c3d210c89af3cb7da28eaaef929c.json +1 -0
- package/languages/newspack-blocks-de_DE-aa9f9057c77a46b31d7e325a4322f2da.json +1 -0
- package/languages/newspack-blocks-de_DE-b6d3cfc30bb16d88d7bc5384bc775543.json +1 -0
- package/languages/newspack-blocks-de_DE-b712270cd4eb3cae7899b50b57bdd576.json +1 -0
- package/languages/newspack-blocks-de_DE-babcc0ca24e7f0145b1c8f647049f085.json +1 -0
- package/languages/newspack-blocks-de_DE-bb66d96d450663284550bed5a3e9113e.json +1 -0
- package/languages/newspack-blocks-de_DE-c810378e74f20906b8193ea76adb6bc0.json +1 -0
- package/languages/newspack-blocks-de_DE-d3a1c55a07efd1a65e227bf120840752.json +1 -0
- package/languages/newspack-blocks-de_DE-d5f23a52ecbfd492ebf819c14206a9e2.json +1 -0
- package/languages/newspack-blocks-de_DE-d684e5c5ac51934ba20811c2f588e1d5.json +1 -0
- package/languages/newspack-blocks-de_DE-dd56360b115d1b39c48033c1e0749a11.json +1 -0
- package/languages/newspack-blocks-de_DE-e0e4434aee4db01e71268ce3edf1dd97.json +1 -0
- package/languages/newspack-blocks-de_DE-e58126c278611ed6c17684ba8e7459b4.json +1 -0
- package/languages/newspack-blocks-de_DE-ea3e2a660753c7bfa13b5bbd8a46bdd0.json +1 -0
- package/languages/newspack-blocks-de_DE-eccbc51a43c04f59165364eda71e0be7.json +1 -0
- package/languages/newspack-blocks-de_DE-eeb28f99adedd5fad3081d2756d6f4a4.json +1 -0
- package/languages/newspack-blocks-de_DE-f03802d9ac1ae8f3b85caee4347b93a7.json +1 -0
- package/languages/newspack-blocks-de_DE-f32a4d8bd8f1f1e03b6523dfaa4c9f73.json +1 -0
- package/languages/newspack-blocks-de_DE-f5f8db76788e4079ddfa743333708b88.json +1 -0
- package/languages/newspack-blocks-de_DE-f8b1589c450689398f90b179f47e74ee.json +1 -0
- package/languages/newspack-blocks-de_DE-f9d0b05d4d6ddd3273f1f3fb2eb2ca50.json +1 -0
- package/languages/newspack-blocks-de_DE-fbe7f8c598cf05d4603ba49fec909ded.json +1 -0
- package/languages/newspack-blocks-de_DE-fcc93143c1f2b74671f595454b971f44.json +1 -0
- package/languages/newspack-blocks-de_DE.mo +0 -0
- package/languages/newspack-blocks-de_DE.po +2088 -0
- package/languages/newspack-blocks-es_ES-01a5b44b8bc8d20f62541de420aa61ab.json +1 -0
- package/languages/newspack-blocks-es_ES-0662222bf15e7a1a7b74db2dabb48d6c.json +1 -0
- package/languages/newspack-blocks-es_ES-0c8dad524e2a57cee4f8efb6e35387c1.json +1 -0
- package/languages/newspack-blocks-es_ES-10754bc02d28d4301c103f26dbf519ce.json +1 -0
- package/languages/newspack-blocks-es_ES-2d52b39fdbc5d6c94b3514803f3720b8.json +1 -0
- package/languages/newspack-blocks-es_ES-34e5c64f90b1444f3fc735376442eada.json +1 -0
- package/languages/newspack-blocks-es_ES-351fd022e077061b5796bf7042446bfc.json +1 -0
- package/languages/newspack-blocks-es_ES-37552bb09e2a9fceec1970e3c6d46557.json +1 -0
- package/languages/newspack-blocks-es_ES-4b2ccb4e4dc8b3491228b2feb54872f2.json +1 -0
- package/languages/newspack-blocks-es_ES-4cecf783e091d36284a3e0cdafcd0fd5.json +1 -0
- package/languages/newspack-blocks-es_ES-4f16e21047908d19937bc10ced63acd1.json +1 -0
- package/languages/newspack-blocks-es_ES-4fdea541976076f02d56139fb35e5b42.json +1 -0
- package/languages/newspack-blocks-es_ES-501b38ac90d35730a620fb0d483702fa.json +1 -0
- package/languages/newspack-blocks-es_ES-53e2a1d5945b8d2b1c35e81ae1e532f3.json +1 -0
- package/languages/newspack-blocks-es_ES-5d4055f484eeb00e3ea0f9d8aace0897.json +1 -0
- package/languages/newspack-blocks-es_ES-5f70538e0223bc8a05b922cba67da6fb.json +1 -0
- package/languages/newspack-blocks-es_ES-6c2e53bab28419c30e1eaee70ba599cf.json +1 -0
- package/languages/newspack-blocks-es_ES-6ed95fb4873e6e2b81351177a44995f6.json +1 -0
- package/languages/newspack-blocks-es_ES-727631509ad8eec8e2cbe740c6dad199.json +1 -0
- package/languages/newspack-blocks-es_ES-73c6d3bde805172d1993f75397e9832d.json +1 -0
- package/languages/newspack-blocks-es_ES-78456b164809d080adecb4d2b3895802.json +1 -0
- package/languages/newspack-blocks-es_ES-7b1aa64ce2d962decc04666ab86c53de.json +1 -0
- package/languages/newspack-blocks-es_ES-7c29764d5ef91723f5ce454f66431b9e.json +1 -0
- package/languages/newspack-blocks-es_ES-912a2876091ef0dca9b26f3cfc01fc9c.json +1 -0
- package/languages/newspack-blocks-es_ES-91a7ac8017d6e2159be1c5a3c1e372e4.json +1 -0
- package/languages/newspack-blocks-es_ES-969286d51bb0afe10983b9aec317b5ee.json +1 -0
- package/languages/newspack-blocks-es_ES-9ef9b2c60c897ad79f92951e6e9949a1.json +1 -0
- package/languages/newspack-blocks-es_ES-a822c3d210c89af3cb7da28eaaef929c.json +1 -0
- package/languages/newspack-blocks-es_ES-aa9f9057c77a46b31d7e325a4322f2da.json +1 -0
- package/languages/newspack-blocks-es_ES-b6d3cfc30bb16d88d7bc5384bc775543.json +1 -0
- package/languages/newspack-blocks-es_ES-b712270cd4eb3cae7899b50b57bdd576.json +1 -0
- package/languages/newspack-blocks-es_ES-babcc0ca24e7f0145b1c8f647049f085.json +1 -0
- package/languages/newspack-blocks-es_ES-bb66d96d450663284550bed5a3e9113e.json +1 -0
- package/languages/newspack-blocks-es_ES-c810378e74f20906b8193ea76adb6bc0.json +1 -0
- package/languages/newspack-blocks-es_ES-d3a1c55a07efd1a65e227bf120840752.json +1 -0
- package/languages/newspack-blocks-es_ES-d5f23a52ecbfd492ebf819c14206a9e2.json +1 -0
- package/languages/newspack-blocks-es_ES-d684e5c5ac51934ba20811c2f588e1d5.json +1 -0
- package/languages/newspack-blocks-es_ES-dd56360b115d1b39c48033c1e0749a11.json +1 -0
- package/languages/newspack-blocks-es_ES-e0e4434aee4db01e71268ce3edf1dd97.json +1 -0
- package/languages/newspack-blocks-es_ES-e58126c278611ed6c17684ba8e7459b4.json +1 -0
- package/languages/newspack-blocks-es_ES-ea3e2a660753c7bfa13b5bbd8a46bdd0.json +1 -0
- package/languages/newspack-blocks-es_ES-eccbc51a43c04f59165364eda71e0be7.json +1 -0
- package/languages/newspack-blocks-es_ES-eeb28f99adedd5fad3081d2756d6f4a4.json +1 -0
- package/languages/newspack-blocks-es_ES-f03802d9ac1ae8f3b85caee4347b93a7.json +1 -0
- package/languages/newspack-blocks-es_ES-f32a4d8bd8f1f1e03b6523dfaa4c9f73.json +1 -0
- package/languages/newspack-blocks-es_ES-f5f8db76788e4079ddfa743333708b88.json +1 -0
- package/languages/newspack-blocks-es_ES-f8b1589c450689398f90b179f47e74ee.json +1 -0
- package/languages/newspack-blocks-es_ES-f9d0b05d4d6ddd3273f1f3fb2eb2ca50.json +1 -0
- package/languages/newspack-blocks-es_ES-fbe7f8c598cf05d4603ba49fec909ded.json +1 -0
- package/languages/newspack-blocks-es_ES-fcc93143c1f2b74671f595454b971f44.json +1 -0
- package/languages/newspack-blocks-es_ES.mo +0 -0
- package/languages/newspack-blocks-es_ES.po +2080 -0
- package/languages/newspack-blocks-fr_BE-01a5b44b8bc8d20f62541de420aa61ab.json +1 -0
- package/languages/newspack-blocks-fr_BE-0662222bf15e7a1a7b74db2dabb48d6c.json +1 -0
- package/languages/newspack-blocks-fr_BE-0c8dad524e2a57cee4f8efb6e35387c1.json +1 -0
- package/languages/newspack-blocks-fr_BE-10754bc02d28d4301c103f26dbf519ce.json +1 -0
- package/languages/newspack-blocks-fr_BE-2d52b39fdbc5d6c94b3514803f3720b8.json +1 -0
- package/languages/newspack-blocks-fr_BE-34e5c64f90b1444f3fc735376442eada.json +1 -0
- package/languages/newspack-blocks-fr_BE-351fd022e077061b5796bf7042446bfc.json +1 -0
- package/languages/newspack-blocks-fr_BE-37552bb09e2a9fceec1970e3c6d46557.json +1 -0
- package/languages/newspack-blocks-fr_BE-4b2ccb4e4dc8b3491228b2feb54872f2.json +1 -0
- package/languages/newspack-blocks-fr_BE-4cecf783e091d36284a3e0cdafcd0fd5.json +1 -0
- package/languages/newspack-blocks-fr_BE-4f16e21047908d19937bc10ced63acd1.json +1 -0
- package/languages/newspack-blocks-fr_BE-4fdea541976076f02d56139fb35e5b42.json +1 -0
- package/languages/newspack-blocks-fr_BE-501b38ac90d35730a620fb0d483702fa.json +1 -0
- package/languages/newspack-blocks-fr_BE-53e2a1d5945b8d2b1c35e81ae1e532f3.json +1 -0
- package/languages/newspack-blocks-fr_BE-5d4055f484eeb00e3ea0f9d8aace0897.json +1 -0
- package/languages/newspack-blocks-fr_BE-5f70538e0223bc8a05b922cba67da6fb.json +1 -0
- package/languages/newspack-blocks-fr_BE-6c2e53bab28419c30e1eaee70ba599cf.json +1 -0
- package/languages/newspack-blocks-fr_BE-6ed95fb4873e6e2b81351177a44995f6.json +1 -0
- package/languages/newspack-blocks-fr_BE-727631509ad8eec8e2cbe740c6dad199.json +1 -0
- package/languages/newspack-blocks-fr_BE-73c6d3bde805172d1993f75397e9832d.json +1 -0
- package/languages/newspack-blocks-fr_BE-78456b164809d080adecb4d2b3895802.json +1 -0
- package/languages/newspack-blocks-fr_BE-7b1aa64ce2d962decc04666ab86c53de.json +1 -0
- package/languages/newspack-blocks-fr_BE-7c29764d5ef91723f5ce454f66431b9e.json +1 -0
- package/languages/newspack-blocks-fr_BE-912a2876091ef0dca9b26f3cfc01fc9c.json +1 -0
- package/languages/newspack-blocks-fr_BE-91a7ac8017d6e2159be1c5a3c1e372e4.json +1 -0
- package/languages/newspack-blocks-fr_BE-969286d51bb0afe10983b9aec317b5ee.json +1 -0
- package/languages/newspack-blocks-fr_BE-9ef9b2c60c897ad79f92951e6e9949a1.json +1 -0
- package/languages/newspack-blocks-fr_BE-a822c3d210c89af3cb7da28eaaef929c.json +1 -0
- package/languages/newspack-blocks-fr_BE-aa9f9057c77a46b31d7e325a4322f2da.json +1 -0
- package/languages/newspack-blocks-fr_BE-b6d3cfc30bb16d88d7bc5384bc775543.json +1 -0
- package/languages/newspack-blocks-fr_BE-b712270cd4eb3cae7899b50b57bdd576.json +1 -0
- package/languages/newspack-blocks-fr_BE-babcc0ca24e7f0145b1c8f647049f085.json +1 -0
- package/languages/newspack-blocks-fr_BE-bb66d96d450663284550bed5a3e9113e.json +1 -0
- package/languages/newspack-blocks-fr_BE-c810378e74f20906b8193ea76adb6bc0.json +1 -0
- package/languages/newspack-blocks-fr_BE-d3a1c55a07efd1a65e227bf120840752.json +1 -0
- package/languages/newspack-blocks-fr_BE-d5f23a52ecbfd492ebf819c14206a9e2.json +1 -0
- package/languages/newspack-blocks-fr_BE-d684e5c5ac51934ba20811c2f588e1d5.json +1 -0
- package/languages/newspack-blocks-fr_BE-dd56360b115d1b39c48033c1e0749a11.json +1 -0
- package/languages/newspack-blocks-fr_BE-e0e4434aee4db01e71268ce3edf1dd97.json +1 -0
- package/languages/newspack-blocks-fr_BE-e58126c278611ed6c17684ba8e7459b4.json +1 -0
- package/languages/newspack-blocks-fr_BE-ea3e2a660753c7bfa13b5bbd8a46bdd0.json +1 -0
- package/languages/newspack-blocks-fr_BE-eccbc51a43c04f59165364eda71e0be7.json +1 -0
- package/languages/newspack-blocks-fr_BE-eeb28f99adedd5fad3081d2756d6f4a4.json +1 -0
- package/languages/newspack-blocks-fr_BE-f03802d9ac1ae8f3b85caee4347b93a7.json +1 -0
- package/languages/newspack-blocks-fr_BE-f32a4d8bd8f1f1e03b6523dfaa4c9f73.json +1 -0
- package/languages/newspack-blocks-fr_BE-f5f8db76788e4079ddfa743333708b88.json +1 -0
- package/languages/newspack-blocks-fr_BE-f8b1589c450689398f90b179f47e74ee.json +1 -0
- package/languages/newspack-blocks-fr_BE-f9d0b05d4d6ddd3273f1f3fb2eb2ca50.json +1 -0
- package/languages/newspack-blocks-fr_BE-fbe7f8c598cf05d4603ba49fec909ded.json +1 -0
- package/languages/newspack-blocks-fr_BE-fcc93143c1f2b74671f595454b971f44.json +1 -0
- package/languages/newspack-blocks-fr_BE.mo +0 -0
- package/languages/newspack-blocks-fr_BE.po +2079 -0
- package/languages/newspack-blocks-nb_NO-01a5b44b8bc8d20f62541de420aa61ab.json +1 -0
- package/languages/newspack-blocks-nb_NO-0662222bf15e7a1a7b74db2dabb48d6c.json +1 -0
- package/languages/newspack-blocks-nb_NO-0c8dad524e2a57cee4f8efb6e35387c1.json +1 -0
- package/languages/newspack-blocks-nb_NO-10754bc02d28d4301c103f26dbf519ce.json +1 -0
- package/languages/newspack-blocks-nb_NO-2d52b39fdbc5d6c94b3514803f3720b8.json +1 -0
- package/languages/newspack-blocks-nb_NO-34e5c64f90b1444f3fc735376442eada.json +1 -0
- package/languages/newspack-blocks-nb_NO-351fd022e077061b5796bf7042446bfc.json +1 -0
- package/languages/newspack-blocks-nb_NO-37552bb09e2a9fceec1970e3c6d46557.json +1 -0
- package/languages/newspack-blocks-nb_NO-4b2ccb4e4dc8b3491228b2feb54872f2.json +1 -0
- package/languages/newspack-blocks-nb_NO-4cecf783e091d36284a3e0cdafcd0fd5.json +1 -0
- package/languages/newspack-blocks-nb_NO-4f16e21047908d19937bc10ced63acd1.json +1 -0
- package/languages/newspack-blocks-nb_NO-4fdea541976076f02d56139fb35e5b42.json +1 -0
- package/languages/newspack-blocks-nb_NO-501b38ac90d35730a620fb0d483702fa.json +1 -0
- package/languages/newspack-blocks-nb_NO-53e2a1d5945b8d2b1c35e81ae1e532f3.json +1 -0
- package/languages/newspack-blocks-nb_NO-5d4055f484eeb00e3ea0f9d8aace0897.json +1 -0
- package/languages/newspack-blocks-nb_NO-5f70538e0223bc8a05b922cba67da6fb.json +1 -0
- package/languages/newspack-blocks-nb_NO-6c2e53bab28419c30e1eaee70ba599cf.json +1 -0
- package/languages/newspack-blocks-nb_NO-6ed95fb4873e6e2b81351177a44995f6.json +1 -0
- package/languages/newspack-blocks-nb_NO-73c6d3bde805172d1993f75397e9832d.json +1 -0
- package/languages/newspack-blocks-nb_NO-78456b164809d080adecb4d2b3895802.json +1 -0
- package/languages/newspack-blocks-nb_NO-7b1aa64ce2d962decc04666ab86c53de.json +1 -0
- package/languages/newspack-blocks-nb_NO-7c29764d5ef91723f5ce454f66431b9e.json +1 -0
- package/languages/newspack-blocks-nb_NO-912a2876091ef0dca9b26f3cfc01fc9c.json +1 -0
- package/languages/newspack-blocks-nb_NO-91a7ac8017d6e2159be1c5a3c1e372e4.json +1 -0
- package/languages/newspack-blocks-nb_NO-969286d51bb0afe10983b9aec317b5ee.json +1 -0
- package/languages/newspack-blocks-nb_NO-9ef9b2c60c897ad79f92951e6e9949a1.json +1 -0
- package/languages/newspack-blocks-nb_NO-a822c3d210c89af3cb7da28eaaef929c.json +1 -0
- package/languages/newspack-blocks-nb_NO-aa9f9057c77a46b31d7e325a4322f2da.json +1 -0
- package/languages/newspack-blocks-nb_NO-b6d3cfc30bb16d88d7bc5384bc775543.json +1 -0
- package/languages/newspack-blocks-nb_NO-b712270cd4eb3cae7899b50b57bdd576.json +1 -0
- package/languages/newspack-blocks-nb_NO-babcc0ca24e7f0145b1c8f647049f085.json +1 -0
- package/languages/newspack-blocks-nb_NO-bb66d96d450663284550bed5a3e9113e.json +1 -0
- package/languages/newspack-blocks-nb_NO-c810378e74f20906b8193ea76adb6bc0.json +1 -0
- package/languages/newspack-blocks-nb_NO-d3a1c55a07efd1a65e227bf120840752.json +1 -0
- package/languages/newspack-blocks-nb_NO-d5f23a52ecbfd492ebf819c14206a9e2.json +1 -0
- package/languages/newspack-blocks-nb_NO-d684e5c5ac51934ba20811c2f588e1d5.json +1 -0
- package/languages/newspack-blocks-nb_NO-dd56360b115d1b39c48033c1e0749a11.json +1 -0
- package/languages/newspack-blocks-nb_NO-e0e4434aee4db01e71268ce3edf1dd97.json +1 -0
- package/languages/newspack-blocks-nb_NO-e58126c278611ed6c17684ba8e7459b4.json +1 -0
- package/languages/newspack-blocks-nb_NO-ea3e2a660753c7bfa13b5bbd8a46bdd0.json +1 -0
- package/languages/newspack-blocks-nb_NO-eccbc51a43c04f59165364eda71e0be7.json +1 -0
- package/languages/newspack-blocks-nb_NO-eeb28f99adedd5fad3081d2756d6f4a4.json +1 -0
- package/languages/newspack-blocks-nb_NO-f03802d9ac1ae8f3b85caee4347b93a7.json +1 -0
- package/languages/newspack-blocks-nb_NO-f32a4d8bd8f1f1e03b6523dfaa4c9f73.json +1 -0
- package/languages/newspack-blocks-nb_NO-f5f8db76788e4079ddfa743333708b88.json +1 -0
- package/languages/newspack-blocks-nb_NO-f8b1589c450689398f90b179f47e74ee.json +1 -0
- package/languages/newspack-blocks-nb_NO-f9d0b05d4d6ddd3273f1f3fb2eb2ca50.json +1 -0
- package/languages/newspack-blocks-nb_NO-fbe7f8c598cf05d4603ba49fec909ded.json +1 -0
- package/languages/newspack-blocks-nb_NO-fcc93143c1f2b74671f595454b971f44.json +1 -0
- package/languages/newspack-blocks-nb_NO.mo +0 -0
- package/languages/newspack-blocks-nb_NO.po +2078 -0
- package/languages/newspack-blocks-pt_PT-01a5b44b8bc8d20f62541de420aa61ab.json +1 -0
- package/languages/newspack-blocks-pt_PT-0662222bf15e7a1a7b74db2dabb48d6c.json +1 -0
- package/languages/newspack-blocks-pt_PT-0c8dad524e2a57cee4f8efb6e35387c1.json +1 -0
- package/languages/newspack-blocks-pt_PT-10754bc02d28d4301c103f26dbf519ce.json +1 -0
- package/languages/newspack-blocks-pt_PT-2d52b39fdbc5d6c94b3514803f3720b8.json +1 -0
- package/languages/newspack-blocks-pt_PT-34e5c64f90b1444f3fc735376442eada.json +1 -0
- package/languages/newspack-blocks-pt_PT-351fd022e077061b5796bf7042446bfc.json +1 -0
- package/languages/newspack-blocks-pt_PT-37552bb09e2a9fceec1970e3c6d46557.json +1 -0
- package/languages/newspack-blocks-pt_PT-4b2ccb4e4dc8b3491228b2feb54872f2.json +1 -0
- package/languages/newspack-blocks-pt_PT-4cecf783e091d36284a3e0cdafcd0fd5.json +1 -0
- package/languages/newspack-blocks-pt_PT-4f16e21047908d19937bc10ced63acd1.json +1 -0
- package/languages/newspack-blocks-pt_PT-4fdea541976076f02d56139fb35e5b42.json +1 -0
- package/languages/newspack-blocks-pt_PT-501b38ac90d35730a620fb0d483702fa.json +1 -0
- package/languages/newspack-blocks-pt_PT-53e2a1d5945b8d2b1c35e81ae1e532f3.json +1 -0
- package/languages/newspack-blocks-pt_PT-5d4055f484eeb00e3ea0f9d8aace0897.json +1 -0
- package/languages/newspack-blocks-pt_PT-5f70538e0223bc8a05b922cba67da6fb.json +1 -0
- package/languages/newspack-blocks-pt_PT-6c2e53bab28419c30e1eaee70ba599cf.json +1 -0
- package/languages/newspack-blocks-pt_PT-6ed95fb4873e6e2b81351177a44995f6.json +1 -0
- package/languages/newspack-blocks-pt_PT-727631509ad8eec8e2cbe740c6dad199.json +1 -0
- package/languages/newspack-blocks-pt_PT-73c6d3bde805172d1993f75397e9832d.json +1 -0
- package/languages/newspack-blocks-pt_PT-78456b164809d080adecb4d2b3895802.json +1 -0
- package/languages/newspack-blocks-pt_PT-7b1aa64ce2d962decc04666ab86c53de.json +1 -0
- package/languages/newspack-blocks-pt_PT-7c29764d5ef91723f5ce454f66431b9e.json +1 -0
- package/languages/newspack-blocks-pt_PT-912a2876091ef0dca9b26f3cfc01fc9c.json +1 -0
- package/languages/newspack-blocks-pt_PT-91a7ac8017d6e2159be1c5a3c1e372e4.json +1 -0
- package/languages/newspack-blocks-pt_PT-969286d51bb0afe10983b9aec317b5ee.json +1 -0
- package/languages/newspack-blocks-pt_PT-9ef9b2c60c897ad79f92951e6e9949a1.json +1 -0
- package/languages/newspack-blocks-pt_PT-a822c3d210c89af3cb7da28eaaef929c.json +1 -0
- package/languages/newspack-blocks-pt_PT-aa9f9057c77a46b31d7e325a4322f2da.json +1 -0
- package/languages/newspack-blocks-pt_PT-b6d3cfc30bb16d88d7bc5384bc775543.json +1 -0
- package/languages/newspack-blocks-pt_PT-b712270cd4eb3cae7899b50b57bdd576.json +1 -0
- package/languages/newspack-blocks-pt_PT-babcc0ca24e7f0145b1c8f647049f085.json +1 -0
- package/languages/newspack-blocks-pt_PT-bb66d96d450663284550bed5a3e9113e.json +1 -0
- package/languages/newspack-blocks-pt_PT-c810378e74f20906b8193ea76adb6bc0.json +1 -0
- package/languages/newspack-blocks-pt_PT-d3a1c55a07efd1a65e227bf120840752.json +1 -0
- package/languages/newspack-blocks-pt_PT-d5f23a52ecbfd492ebf819c14206a9e2.json +1 -0
- package/languages/newspack-blocks-pt_PT-d684e5c5ac51934ba20811c2f588e1d5.json +1 -0
- package/languages/newspack-blocks-pt_PT-dd56360b115d1b39c48033c1e0749a11.json +1 -0
- package/languages/newspack-blocks-pt_PT-e0e4434aee4db01e71268ce3edf1dd97.json +1 -0
- package/languages/newspack-blocks-pt_PT-e58126c278611ed6c17684ba8e7459b4.json +1 -0
- package/languages/newspack-blocks-pt_PT-ea3e2a660753c7bfa13b5bbd8a46bdd0.json +1 -0
- package/languages/newspack-blocks-pt_PT-eccbc51a43c04f59165364eda71e0be7.json +1 -0
- package/languages/newspack-blocks-pt_PT-eeb28f99adedd5fad3081d2756d6f4a4.json +1 -0
- package/languages/newspack-blocks-pt_PT-f03802d9ac1ae8f3b85caee4347b93a7.json +1 -0
- package/languages/newspack-blocks-pt_PT-f32a4d8bd8f1f1e03b6523dfaa4c9f73.json +1 -0
- package/languages/newspack-blocks-pt_PT-f5f8db76788e4079ddfa743333708b88.json +1 -0
- package/languages/newspack-blocks-pt_PT-f8b1589c450689398f90b179f47e74ee.json +1 -0
- package/languages/newspack-blocks-pt_PT-f9d0b05d4d6ddd3273f1f3fb2eb2ca50.json +1 -0
- package/languages/newspack-blocks-pt_PT-fbe7f8c598cf05d4603ba49fec909ded.json +1 -0
- package/languages/newspack-blocks-pt_PT-fcc93143c1f2b74671f595454b971f44.json +1 -0
- package/languages/newspack-blocks-pt_PT.mo +0 -0
- package/languages/newspack-blocks-pt_PT.po +2078 -0
- package/languages/newspack-blocks.pot +2370 -0
- package/newspack-blocks.php +96 -0
- package/package.json +64 -0
- package/phpcs.xml +38 -0
- package/release.config.js +1 -0
- package/src/assets/placeholder-1024x536.jpg +0 -0
- package/src/assets/placeholder-600x800.jpg +0 -0
- package/src/assets/placeholder-800x600.jpg +0 -0
- package/src/assets/placeholder-800x800.jpg +0 -0
- package/src/assets/placeholder-donations-cover.jpg +0 -0
- package/src/assets/placeholder-donations-image.jpg +0 -0
- package/src/assets/placeholder-subscribe-cover.jpg +0 -0
- package/src/assets/placeholder-subscribe-image.jpg +0 -0
- package/src/block-patterns/donations-1.php +13 -0
- package/src/block-patterns/donations-2.php +13 -0
- package/src/block-patterns/donations-3.php +13 -0
- package/src/block-patterns/donations-4.php +13 -0
- package/src/block-patterns/donations-5.php +13 -0
- package/src/block-patterns/homepage-posts-1.php +13 -0
- package/src/block-patterns/homepage-posts-10.php +13 -0
- package/src/block-patterns/homepage-posts-11.php +13 -0
- package/src/block-patterns/homepage-posts-12.php +13 -0
- package/src/block-patterns/homepage-posts-13.php +13 -0
- package/src/block-patterns/homepage-posts-14.php +13 -0
- package/src/block-patterns/homepage-posts-15.php +13 -0
- package/src/block-patterns/homepage-posts-16.php +13 -0
- package/src/block-patterns/homepage-posts-17.php +13 -0
- package/src/block-patterns/homepage-posts-18.php +13 -0
- package/src/block-patterns/homepage-posts-19.php +13 -0
- package/src/block-patterns/homepage-posts-2.php +13 -0
- package/src/block-patterns/homepage-posts-20.php +13 -0
- package/src/block-patterns/homepage-posts-21.php +13 -0
- package/src/block-patterns/homepage-posts-22.php +13 -0
- package/src/block-patterns/homepage-posts-23.php +13 -0
- package/src/block-patterns/homepage-posts-24.php +13 -0
- package/src/block-patterns/homepage-posts-25.php +13 -0
- package/src/block-patterns/homepage-posts-26.php +13 -0
- package/src/block-patterns/homepage-posts-27.php +13 -0
- package/src/block-patterns/homepage-posts-28.php +13 -0
- package/src/block-patterns/homepage-posts-29.php +13 -0
- package/src/block-patterns/homepage-posts-3.php +13 -0
- package/src/block-patterns/homepage-posts-30.php +13 -0
- package/src/block-patterns/homepage-posts-31.php +13 -0
- package/src/block-patterns/homepage-posts-4.php +13 -0
- package/src/block-patterns/homepage-posts-5.php +13 -0
- package/src/block-patterns/homepage-posts-6.php +13 -0
- package/src/block-patterns/homepage-posts-7.php +13 -0
- package/src/block-patterns/homepage-posts-8.php +13 -0
- package/src/block-patterns/homepage-posts-9.php +13 -0
- package/src/block-patterns/subscribe-1.php +13 -0
- package/src/block-patterns/subscribe-2.php +13 -0
- package/src/block-patterns/subscribe-3.php +13 -0
- package/src/block-patterns/subscribe-4.php +13 -0
- package/src/block-patterns/subscribe-5.php +13 -0
- package/src/block-patterns/subscribe-6.php +13 -0
- package/src/block-patterns/subscribe-7.php +13 -0
- package/src/block-styles/core/columns/editor.scss +90 -0
- package/src/block-styles/core/columns/index.js +20 -0
- package/src/block-styles/core/columns/view.scss +131 -0
- package/src/block-styles/core/group/editor.scss +24 -0
- package/src/block-styles/core/group/index.js +25 -0
- package/src/block-styles/core/group/view.scss +13 -0
- package/src/block-styles/view.js +5 -0
- package/src/blocks/author-list/block.json +84 -0
- package/src/blocks/author-list/class-wp-rest-newspack-author-list-controller.php +381 -0
- package/src/blocks/author-list/edit.js +456 -0
- package/src/blocks/author-list/editor.js +7 -0
- package/src/blocks/author-list/editor.scss +1 -0
- package/src/blocks/author-list/index.js +60 -0
- package/src/blocks/author-list/view.js +5 -0
- package/src/blocks/author-list/view.php +180 -0
- package/src/blocks/author-list/view.scss +46 -0
- package/src/blocks/author-profile/README.md +105 -0
- package/src/blocks/author-profile/block.json +77 -0
- package/src/blocks/author-profile/class-wp-rest-newspack-authors-controller.php +618 -0
- package/src/blocks/author-profile/context.js +26 -0
- package/src/blocks/author-profile/edit.js +1031 -0
- package/src/blocks/author-profile/editor.js +7 -0
- package/src/blocks/author-profile/editor.scss +61 -0
- package/src/blocks/author-profile/index.js +66 -0
- package/src/blocks/author-profile/single-author.js +106 -0
- package/src/blocks/author-profile/templates.js +263 -0
- package/src/blocks/author-profile/variations.js +86 -0
- package/src/blocks/author-profile/view.js +5 -0
- package/src/blocks/author-profile/view.php +501 -0
- package/src/blocks/author-profile/view.scss +159 -0
- package/src/blocks/carousel/block.json +121 -0
- package/src/blocks/carousel/create-swiper.js +230 -0
- package/src/blocks/carousel/edit.js +469 -0
- package/src/blocks/carousel/editor.js +7 -0
- package/src/blocks/carousel/editor.scss +54 -0
- package/src/blocks/carousel/index.js +55 -0
- package/src/blocks/carousel/view.js +49 -0
- package/src/blocks/carousel/view.php +417 -0
- package/src/blocks/carousel/view.scss +397 -0
- package/src/blocks/checkout-button/block.json +117 -0
- package/src/blocks/checkout-button/deprecated.js +81 -0
- package/src/blocks/checkout-button/edit.js +385 -0
- package/src/blocks/checkout-button/edit.scss +67 -0
- package/src/blocks/checkout-button/editor.js +19 -0
- package/src/blocks/checkout-button/index.js +32 -0
- package/src/blocks/checkout-button/view.js +4 -0
- package/src/blocks/checkout-button/view.php +178 -0
- package/src/blocks/checkout-button/view.scss +39 -0
- package/src/blocks/donate/block.json +103 -0
- package/src/blocks/donate/consts.ts +25 -0
- package/src/blocks/donate/edit/FrequencyBasedLayout.tsx +255 -0
- package/src/blocks/donate/edit/TierBasedLayout.tsx +133 -0
- package/src/blocks/donate/edit/components/AmountValueInput.tsx +62 -0
- package/src/blocks/donate/edit/components/index.tsx +1 -0
- package/src/blocks/donate/edit/index.tsx +445 -0
- package/src/blocks/donate/editor.js +7 -0
- package/src/blocks/donate/frequency-based/index.ts +135 -0
- package/src/blocks/donate/frequency-based/style.scss +245 -0
- package/src/blocks/donate/frontend/class-newspack-blocks-donate-renderer-base.php +225 -0
- package/src/blocks/donate/frontend/class-newspack-blocks-donate-renderer-frequency-based.php +341 -0
- package/src/blocks/donate/frontend/class-newspack-blocks-donate-renderer-tiers-based.php +184 -0
- package/src/blocks/donate/frontend/class-newspack-blocks-donate-renderer.php +117 -0
- package/src/blocks/donate/index.js +72 -0
- package/src/blocks/donate/styles/editor.scss +230 -0
- package/src/blocks/donate/styles/style-variations.scss +792 -0
- package/src/blocks/donate/styles/view.scss +45 -0
- package/src/blocks/donate/tiers-based/index.ts +36 -0
- package/src/blocks/donate/tiers-based/slider.ts +64 -0
- package/src/blocks/donate/tiers-based/style.scss +185 -0
- package/src/blocks/donate/tiers-based/types.ts +3 -0
- package/src/blocks/donate/tiers-based/utils.test.js +38 -0
- package/src/blocks/donate/tiers-based/utils.ts +21 -0
- package/src/blocks/donate/tiers-based/view.ts +132 -0
- package/src/blocks/donate/types.ts +96 -0
- package/src/blocks/donate/utils.ts +108 -0
- package/src/blocks/donate/view.php +29 -0
- package/src/blocks/donate/view.ts +44 -0
- package/src/blocks/homepage-articles/block.json +260 -0
- package/src/blocks/homepage-articles/class-wp-rest-newspack-articles-controller.php +231 -0
- package/src/blocks/homepage-articles/edit.tsx +730 -0
- package/src/blocks/homepage-articles/editor.js +16 -0
- package/src/blocks/homepage-articles/editor.scss +226 -0
- package/src/blocks/homepage-articles/index.js +102 -0
- package/src/blocks/homepage-articles/store.js +193 -0
- package/src/blocks/homepage-articles/templates/article.php +290 -0
- package/src/blocks/homepage-articles/templates/articles-list.php +21 -0
- package/src/blocks/homepage-articles/templates/articles-loop.php +35 -0
- package/src/blocks/homepage-articles/utils.ts +270 -0
- package/src/blocks/homepage-articles/view.js +242 -0
- package/src/blocks/homepage-articles/view.php +561 -0
- package/src/blocks/homepage-articles/view.scss +784 -0
- package/src/blocks/iframe/block.json +36 -0
- package/src/blocks/iframe/class-wp-rest-newspack-iframe-controller.php +586 -0
- package/src/blocks/iframe/edit.js +232 -0
- package/src/blocks/iframe/editor.js +7 -0
- package/src/blocks/iframe/editor.scss +84 -0
- package/src/blocks/iframe/iframe-placeholder.js +166 -0
- package/src/blocks/iframe/index.js +54 -0
- package/src/blocks/iframe/view.js +49 -0
- package/src/blocks/iframe/view.php +116 -0
- package/src/blocks/iframe/view.scss +9 -0
- package/src/blocks/shared/author.js +47 -0
- package/src/blocks/video-playlist/edit.js +222 -0
- package/src/blocks/video-playlist/editor.js +7 -0
- package/src/blocks/video-playlist/editor.scss +23 -0
- package/src/blocks/video-playlist/index.js +54 -0
- package/src/blocks/video-playlist/view.php +188 -0
- package/src/components/autocomplete-tokenfield.js +189 -0
- package/src/components/autocomplete-tokenfield.scss +27 -0
- package/src/components/editor-panels.js +90 -0
- package/src/components/query-controls.js +450 -0
- package/src/components/redirect-after-success.tsx +50 -0
- package/src/modal-checkout/accessibility.js +73 -0
- package/src/modal-checkout/analytics/ga4/README.md +45 -0
- package/src/modal-checkout/analytics/ga4/checkout-attempt.js +18 -0
- package/src/modal-checkout/analytics/ga4/checkout-success.js +17 -0
- package/src/modal-checkout/analytics/ga4/dismissed.js +17 -0
- package/src/modal-checkout/analytics/ga4/loaded.js +17 -0
- package/src/modal-checkout/analytics/ga4/opened.js +37 -0
- package/src/modal-checkout/analytics/ga4/pagination.js +59 -0
- package/src/modal-checkout/analytics/ga4/utils/index.js +64 -0
- package/src/modal-checkout/analytics/index.js +6 -0
- package/src/modal-checkout/checkout.scss +1064 -0
- package/src/modal-checkout/index.js +929 -0
- package/src/modal-checkout/modal.js +983 -0
- package/src/modal-checkout/modal.scss +265 -0
- package/src/modal-checkout/templates/empty-html-add-recipient.php +15 -0
- package/src/modal-checkout/templates/empty-order-details.php +16 -0
- package/src/modal-checkout/templates/form-change-payment-method.php +99 -0
- package/src/modal-checkout/templates/form-checkout.php +74 -0
- package/src/modal-checkout/templates/form-coupon.php +22 -0
- package/src/modal-checkout/templates/form-gift-subscription.php +34 -0
- package/src/modal-checkout/templates/payment-method.php +29 -0
- package/src/modal-checkout/templates/thankyou.php +94 -0
- package/src/modal-checkout/utils.js +309 -0
- package/src/setup/block-styles.js +2 -0
- package/src/setup/category.js +18 -0
- package/src/setup/editor.js +7 -0
- package/src/setup/editor.scss +56 -0
- package/src/setup/newspack-logo.js +26 -0
- package/src/setup/placeholder-blocks.js +84 -0
- package/src/setup/unregister-blocks.js +14 -0
- package/src/shared/authors.php +63 -0
- package/src/shared/js/newspack-icon.js +31 -0
- package/src/shared/js/utils.js +50 -0
- package/src/shared/sass/_mixins.scss +42 -0
- package/src/shared/sass/_placeholder.scss +5 -0
- package/src/shared/sass/_preview.scss +12 -0
- package/src/shared/sass/_variables.scss +24 -0
- package/src/templates/author-profile-card.php +145 -0
- package/src/types/@wordpress/block-editor.d.ts +1 -0
- package/src/types/@wordpress/components.d.ts +1 -0
- package/src/types/index.d.ts +170 -0
- package/src/types/newspack-components.d.ts +7 -0
- package/tsconfig.json +7 -0
- package/vendor/autoload.php +22 -0
- package/vendor/composer/ClassLoader.php +579 -0
- package/vendor/composer/InstalledVersions.php +396 -0
- package/vendor/composer/LICENSE +21 -0
- package/vendor/composer/autoload_classmap.php +10 -0
- package/vendor/composer/autoload_namespaces.php +9 -0
- package/vendor/composer/autoload_psr4.php +9 -0
- package/vendor/composer/autoload_real.php +36 -0
- package/vendor/composer/autoload_static.php +20 -0
- package/vendor/composer/installed.json +5 -0
- package/vendor/composer/installed.php +23 -0
- package/webpack.config.js +82 -0
package/.eslintrc.js
ADDED
package/.hooks/pre-push
ADDED
package/.nvmrc
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
lts/*
|
package/.prettierignore
ADDED
package/.prettierrc.js
ADDED
package/.stylelintrc.js
ADDED
package/AGENTS.md
ADDED
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
# AI Agent Instructions for newspack-blocks
|
|
2
|
+
|
|
3
|
+
This file supplements the workspace-level instructions in [`../../AGENTS.md`](../../AGENTS.md). See that file for shared conventions (coding standards, commit format, build/test commands, git workflow, Docker environment). This document covers patterns and architecture specific to this repository.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`newspack-blocks` is a WordPress plugin providing custom Gutenberg blocks for Newspack news sites. All blocks use **dynamic (server-side) rendering** via PHP `view.php` files. The editor UI is built with React/JSX and compiled into a single combined bundle.
|
|
8
|
+
|
|
9
|
+
## Block Architecture
|
|
10
|
+
|
|
11
|
+
### Dynamic Rendering
|
|
12
|
+
|
|
13
|
+
All blocks use `save: () => null` (or `<InnerBlocks.Content />` for nested mode) and render frontend HTML entirely via `view.php` files. The `Newspack_Blocks::manage_view_scripts()` method scans `src/blocks/*/` at plugin load, includes each `view.php`, and wires their `init` registrations.
|
|
14
|
+
|
|
15
|
+
### Combined Editor Bundle
|
|
16
|
+
|
|
17
|
+
Unlike many block plugins, ALL block editor scripts are compiled into a single `dist/editor.js` file. There are no per-block editor scripts. This bundle includes:
|
|
18
|
+
- All block `editor.js` files from `src/blocks/*/`
|
|
19
|
+
- Editor setup from `src/setup/editor.js` (Newspack category, block-styles, unregister-blocks)
|
|
20
|
+
|
|
21
|
+
### Separate View Bundles
|
|
22
|
+
|
|
23
|
+
Each block's frontend JS/CSS is compiled to separate files under `dist/<block-name>/`. View assets are conditionally enqueued only when the block is rendered via `Newspack_Blocks::enqueue_view_assets('<slug>')`.
|
|
24
|
+
|
|
25
|
+
### Block File Convention
|
|
26
|
+
|
|
27
|
+
Each block under `src/blocks/<block-name>/` typically contains:
|
|
28
|
+
|
|
29
|
+
| File | Purpose |
|
|
30
|
+
|---|---|
|
|
31
|
+
| `block.json` | Block metadata, attributes, supports. Not all blocks have one. |
|
|
32
|
+
| `index.js` | Exports `name`, `settings`, `title`. Does NOT call `registerBlockType()`. |
|
|
33
|
+
| `editor.js` | Entry point that calls `registerBlockType()`. Imported by combined editor bundle. |
|
|
34
|
+
| `edit.js` / `edit.tsx` | React component for the editor UI. |
|
|
35
|
+
| `editor.scss` | Editor-only styles. |
|
|
36
|
+
| `view.php` | **Server-side rendering** and block registration (primary render mechanism). |
|
|
37
|
+
| `view.js` / `view.ts` | Frontend JavaScript (compiled to `dist/<block-name>/view.js`). |
|
|
38
|
+
| `view.scss` | Frontend styles (compiled to `dist/<block-name>/view.css`). |
|
|
39
|
+
| `class-wp-rest-*.php` | REST API controller (for blocks with data-fetching needs). |
|
|
40
|
+
|
|
41
|
+
### Block Registration Flow
|
|
42
|
+
|
|
43
|
+
1. `newspack-blocks.php` defines constants, requires PHP files, and hooks REST controllers.
|
|
44
|
+
2. `Newspack_Blocks::manage_view_scripts()` iterates `src/blocks/*/`, includes each `view.php`.
|
|
45
|
+
3. Each `view.php` registers its block on `init` with a `render_callback`.
|
|
46
|
+
4. On `enqueue_block_editor_assets`, the combined `dist/editor.js` is enqueued with localized data via `newspack_blocks_data`.
|
|
47
|
+
|
|
48
|
+
## Block Inventory
|
|
49
|
+
|
|
50
|
+
| Block | Directory | SSR | View JS | Notes |
|
|
51
|
+
|---|---|---|---|---|
|
|
52
|
+
| Homepage Posts | `src/blocks/homepage-articles/` | Yes | Yes (load-more, infinite scroll) | Main content block. Redux store for deduplication. |
|
|
53
|
+
| Carousel | `src/blocks/carousel/` | Yes | Yes (Swiper slider) | Variant of homepage-articles. Shares its Redux store. |
|
|
54
|
+
| Author Profile | `src/blocks/author-profile/` | Yes | Style-only | Supports nested mode (InnerBlocks + block bindings). |
|
|
55
|
+
| Author List | `src/blocks/author-list/` | Yes | Style-only | Directory-style author listing. |
|
|
56
|
+
| Donate | `src/blocks/donate/` | Yes | Yes (two variants) | Frequency-based and tiers-based frontend scripts. |
|
|
57
|
+
| Checkout Button | `src/blocks/checkout-button/` | Yes | Style-only | WooCommerce integration. Uses `register_block_type_from_metadata`. |
|
|
58
|
+
| Iframe | `src/blocks/iframe/` | Yes | Yes (postMessage height) | File upload + embed. |
|
|
59
|
+
| Video Playlist | `src/blocks/video-playlist/` | Yes | Yes | **DEPRECATED.** No `block.json`. |
|
|
60
|
+
|
|
61
|
+
Production builds only include blocks listed in `block-list.json`. In development, all block directories are included.
|
|
62
|
+
|
|
63
|
+
## Gotchas
|
|
64
|
+
|
|
65
|
+
Things that are non-obvious and will trip you up:
|
|
66
|
+
|
|
67
|
+
- **REST controllers live in `src/blocks/`, not `includes/`**. Each block with data-fetching needs has its own `class-wp-rest-*.php` alongside its editor code, not in the central `includes/` directory.
|
|
68
|
+
- **`index.js` exports settings but does NOT register blocks.** Registration happens in `editor.js`, which imports from `index.js` and calls `registerBlockType()`. Editing `index.js` alone won't change registration behavior.
|
|
69
|
+
- **Video Playlist registers as `youtube-video-playlist`** in PHP but its directory is `video-playlist/`. The slug mismatch can cause confusion when searching for the block.
|
|
70
|
+
- **`view.scss` is imported in both `index.js` and `view.js`** for some blocks. The `index.js` import ensures editor preview styling; the `view.js` import handles the frontend. Removing either import breaks one context.
|
|
71
|
+
- **No Composer autoloading for plugin classes.** The plugin uses manual `require_once` in `newspack-blocks.php`. If you add a new PHP class, you must add a corresponding `require_once`.
|
|
72
|
+
- **All integrations with other plugins are defensive.** Always use `class_exists`/`function_exists` checks. The plugin must work without WooCommerce, Co-Authors Plus, Newspack Plugin, Jetpack, Yoast SEO, or The Events Calendar installed.
|
|
73
|
+
|
|
74
|
+
## Common Tasks
|
|
75
|
+
|
|
76
|
+
### Modify a block's editor UI
|
|
77
|
+
|
|
78
|
+
1. Find the block's `edit.js` (or `edit.tsx`) in `src/blocks/<block-name>/`.
|
|
79
|
+
2. Make changes to the React component.
|
|
80
|
+
3. Run `n build` or `n watch` to recompile the combined `dist/editor.js` bundle.
|
|
81
|
+
4. No PHP changes needed unless you're adding/changing block attributes (update `block.json` or the `register_block_type` call in `view.php`).
|
|
82
|
+
|
|
83
|
+
### Modify a block's frontend rendering
|
|
84
|
+
|
|
85
|
+
1. Edit the `view.php` in `src/blocks/<block-name>/`.
|
|
86
|
+
2. For frontend JS changes, edit `view.js`/`view.ts` and rebuild.
|
|
87
|
+
3. No editor rebuild needed for PHP-only changes, but the Docker container serves the source files directly, so changes are live on page refresh.
|
|
88
|
+
|
|
89
|
+
### Add a new block
|
|
90
|
+
|
|
91
|
+
1. Create a new directory under `src/blocks/<block-name>/`.
|
|
92
|
+
2. Follow the block file convention: at minimum, `block.json`, `index.js`, `editor.js`, `edit.js`, `view.php`.
|
|
93
|
+
3. Add the block slug to `block-list.json` for it to be included in production builds.
|
|
94
|
+
4. The webpack config auto-discovers `editor.js` and `view.js` files, so no webpack changes are needed.
|
|
95
|
+
5. Add a `require_once` in `newspack-blocks.php` if the block has PHP classes (e.g., REST controllers).
|
|
96
|
+
|
|
97
|
+
### Modify the modal checkout
|
|
98
|
+
|
|
99
|
+
The modal checkout is the largest subsystem. Key files:
|
|
100
|
+
- **PHP backend**: `includes/class-modal-checkout.php` (~79KB) with sub-classes in `includes/modal-checkout/`
|
|
101
|
+
- **Frontend JS**: `src/modal-checkout/modal.js` (dialog), `src/modal-checkout/index.js` (checkout logic)
|
|
102
|
+
- **Templates**: `src/modal-checkout/templates/` (checkout form, payment method, thank you page, coupon, gift subscription)
|
|
103
|
+
- **Analytics**: `src/modal-checkout/analytics/`
|
|
104
|
+
|
|
105
|
+
## Directory Structure
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
newspack-blocks/
|
|
109
|
+
├── newspack-blocks.php # Main plugin file: constants, requires, hooks
|
|
110
|
+
├── block-list.json # Controls which blocks are included in production builds
|
|
111
|
+
├── webpack.config.js # Custom webpack config (extends newspack-scripts)
|
|
112
|
+
│
|
|
113
|
+
├── includes/ # Core PHP classes (services, API, caching, modal checkout)
|
|
114
|
+
│ ├── class-newspack-blocks.php # Main class: registration, asset management, query builder
|
|
115
|
+
│ ├── class-newspack-blocks-api.php # REST API utilities
|
|
116
|
+
│ ├── class-newspack-blocks-caching.php # Object-cache layer for dynamic blocks
|
|
117
|
+
│ ├── class-newspack-blocks-patterns.php # Block pattern registration
|
|
118
|
+
│ ├── class-modal-checkout.php # WooCommerce modal checkout (largest file)
|
|
119
|
+
│ ├── modal-checkout/ # Modal checkout sub-classes
|
|
120
|
+
│ └── tracking/ # Data Events API integration
|
|
121
|
+
│
|
|
122
|
+
├── src/
|
|
123
|
+
│ ├── blocks/ # Individual blocks (see Block Inventory above)
|
|
124
|
+
│ │ └── shared/ # Shared block utilities (author.js)
|
|
125
|
+
│ ├── block-patterns/ # PHP pattern files (homepage-posts, donations, subscribe)
|
|
126
|
+
│ ├── block-styles/ # Custom styles for core blocks (columns, group)
|
|
127
|
+
│ ├── components/ # Shared React editor components
|
|
128
|
+
│ ├── modal-checkout/ # Modal checkout JS/SCSS/templates
|
|
129
|
+
│ ├── setup/ # Editor setup (category, block-styles, placeholder blocks)
|
|
130
|
+
│ ├── shared/
|
|
131
|
+
│ │ ├── js/ # Shared JS utilities (utils.js, newspack-icon.js)
|
|
132
|
+
│ │ ├── sass/ # Shared SCSS (_mixins.scss, _variables.scss)
|
|
133
|
+
│ │ └── authors.php # Shared PHP author helpers
|
|
134
|
+
│ ├── templates/ # PHP templates (author-profile-card.php)
|
|
135
|
+
│ └── types/ # TypeScript type declarations
|
|
136
|
+
│
|
|
137
|
+
├── dist/ # Compiled output (gitignored)
|
|
138
|
+
├── tests/ # PHPUnit tests
|
|
139
|
+
├── languages/ # Translation files
|
|
140
|
+
└── bin/ # Shell scripts (WP test install, i18n)
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Build System
|
|
144
|
+
|
|
145
|
+
### Webpack Entry Points
|
|
146
|
+
|
|
147
|
+
Defined in `webpack.config.js` using `newspack-scripts/config/getWebpackConfig`:
|
|
148
|
+
|
|
149
|
+
| Entry | Source | Purpose |
|
|
150
|
+
|---|---|---|
|
|
151
|
+
| `editor` | All `src/blocks/*/editor.js` + `src/setup/editor.js` | Combined editor bundle |
|
|
152
|
+
| `<block>/view` | Each `src/blocks/*/view.{js,ts}` | Per-block frontend scripts |
|
|
153
|
+
| `placeholder_blocks` | `src/setup/placeholder-blocks.js` | Placeholder UI for unavailable plugins |
|
|
154
|
+
| `block_styles` | `src/block-styles/view.js` | Core block style overrides |
|
|
155
|
+
| `modal` | `src/modal-checkout/modal.js` | Modal checkout dialog |
|
|
156
|
+
| `modalCheckout` | `src/modal-checkout/index.js` | Modal checkout logic |
|
|
157
|
+
| `frequencyBased` | `src/blocks/donate/frequency-based/index.ts` | Donate frequency-based frontend |
|
|
158
|
+
| `tiersBased` | `src/blocks/donate/tiers-based/index.ts` | Donate tiers-based frontend |
|
|
159
|
+
|
|
160
|
+
### Key Dependencies
|
|
161
|
+
|
|
162
|
+
- **`newspack-scripts`**: Shared toolchain (ESLint, Stylelint, Prettier, Babel, Webpack, commitlint, semantic-release)
|
|
163
|
+
- **`newspack-components`**: Shared React UI components
|
|
164
|
+
- **`newspack-colors`** / **`newspack-icons`**: Shared color palette and SVG icons
|
|
165
|
+
- **`swiper`** (12.x): Carousel slider
|
|
166
|
+
- **`redux`** + **`redux-saga`**: Homepage Articles block store
|
|
167
|
+
|
|
168
|
+
## REST API
|
|
169
|
+
|
|
170
|
+
All endpoints use the `newspack-blocks/v1` namespace. Controllers live alongside their block code in `src/blocks/`, not in `includes/`.
|
|
171
|
+
|
|
172
|
+
| Endpoint | Controller | Permission |
|
|
173
|
+
|---|---|---|
|
|
174
|
+
| `GET /articles` | `WP_REST_Newspack_Articles_Controller` | Public |
|
|
175
|
+
| `GET /newspack-blocks-posts` | Same controller | `edit_posts` |
|
|
176
|
+
| `GET /newspack-blocks-specific-posts` | Same controller | `edit_posts` |
|
|
177
|
+
| `GET /authors` | `WP_REST_Newspack_Authors_Controller` | `edit_posts` |
|
|
178
|
+
| `GET /author-list` | `WP_REST_Newspack_Author_List_Controller` | `edit_posts` |
|
|
179
|
+
| Various iframe endpoints | `WP_REST_Newspack_Iframe_Controller` | `edit_posts` / custom |
|
|
180
|
+
|
|
181
|
+
REST controllers are instantiated via wrapper functions hooked to `rest_api_init` in `newspack-blocks.php`.
|
|
182
|
+
|
|
183
|
+
## PHP Architecture
|
|
184
|
+
|
|
185
|
+
### Constants
|
|
186
|
+
|
|
187
|
+
| Constant | Value |
|
|
188
|
+
|---|---|
|
|
189
|
+
| `NEWSPACK_BLOCKS__PLUGIN_FILE` | Main plugin file path |
|
|
190
|
+
| `NEWSPACK_BLOCKS__BLOCKS_DIRECTORY` | `'dist/'` |
|
|
191
|
+
| `NEWSPACK_BLOCKS__PLUGIN_DIR` | Plugin directory path |
|
|
192
|
+
| `NEWSPACK_BLOCKS__VERSION` | Version string (updated by semantic-release) |
|
|
193
|
+
|
|
194
|
+
### Key Classes
|
|
195
|
+
|
|
196
|
+
| Class | File | Purpose |
|
|
197
|
+
|---|---|---|
|
|
198
|
+
| `Newspack_Blocks` | `includes/class-newspack-blocks.php` | Main facade: registration, assets, query builder, template helpers |
|
|
199
|
+
| `Newspack_Blocks_API` | `includes/class-newspack-blocks-api.php` | REST API utilities |
|
|
200
|
+
| `Newspack_Blocks_Caching` | `includes/class-newspack-blocks-caching.php` | Object-cache layer |
|
|
201
|
+
| `Newspack_Blocks_Patterns` | `includes/class-newspack-blocks-patterns.php` | Block pattern registration |
|
|
202
|
+
| `Modal_Checkout` | `includes/class-modal-checkout.php` | WooCommerce modal checkout (~79KB) |
|
|
203
|
+
| `Newspack_Blocks_Donate_Renderer` | `src/blocks/donate/frontend/` | Donate SSR with strategy classes |
|
|
204
|
+
|
|
205
|
+
### Naming Conventions
|
|
206
|
+
|
|
207
|
+
- **Functions**: `newspack_blocks_*` prefix (e.g., `newspack_blocks_render_block_homepage_articles`)
|
|
208
|
+
- **Classes**: `Newspack_Blocks*` or `WP_REST_Newspack_*` for REST controllers
|
|
209
|
+
- **Constants**: `NEWSPACK_BLOCKS__*` (double underscore)
|
|
210
|
+
- **Hooks**: `newspack_blocks_*` prefix; modal-specific use `newspack_modal_checkout_*`
|
|
211
|
+
- **Text domain**: `newspack-blocks`
|
|
212
|
+
- **Block names**: Short slugs in `block.json`, namespaced as `newspack-blocks/<slug>` in PHP/JS
|
|
213
|
+
|
|
214
|
+
### Localized Editor Data
|
|
215
|
+
|
|
216
|
+
The editor script receives a `newspack_blocks_data` global containing: REST URLs, asset paths, iframe config, reCAPTCHA support, donation/WooCommerce settings, custom taxonomies, block patterns for the current post type, CoAuthors Plus availability, and author custom fields.
|
|
217
|
+
|
|
218
|
+
## JavaScript Patterns
|
|
219
|
+
|
|
220
|
+
### React Component Styles
|
|
221
|
+
|
|
222
|
+
Mixed patterns exist:
|
|
223
|
+
- **Newer blocks** use function components + hooks (`author-profile`, `checkout-button`, `donate`, `iframe`)
|
|
224
|
+
- **Older blocks** use class components + HOCs (`homepage-articles`, `carousel`, `video-playlist`)
|
|
225
|
+
|
|
226
|
+
### State Management
|
|
227
|
+
|
|
228
|
+
- **Block attributes**: Primary persistent state, managed via `setAttributes`.
|
|
229
|
+
- **Custom Redux store**: `src/blocks/homepage-articles/store.js` registers a `@wordpress/data` store using Redux + redux-saga. Used by both homepage-articles and carousel for cross-block post deduplication.
|
|
230
|
+
- **React Context**: `src/blocks/author-profile/context.js` defines `AuthorContext`, also exposed as `window.NewspackAuthorContext` for cross-package consumption (e.g., by the avatar block in newspack-plugin).
|
|
231
|
+
- **Global bridge**: `window.__newspackCurrentAuthor` is used by block bindings to read author data.
|
|
232
|
+
- **Frontend state**: Scripts consume `data-*` attributes and localized globals, then mutate DOM/class state (no frontend React).
|
|
233
|
+
|
|
234
|
+
### SCSS Architecture
|
|
235
|
+
|
|
236
|
+
- Per-block split: `editor.scss` (editor-only) and `view.scss` (frontend).
|
|
237
|
+
- Shared partials via `@use`: `src/shared/sass/_variables.scss`, `_mixins.scss`, `_placeholder.scss`, `_preview.scss`.
|
|
238
|
+
- BEM-like naming within WP wrapper classes (e.g., `.wp-block-newspack-blocks-author-profile__bio`).
|
|
239
|
+
- Short internal prefixes for legacy blocks: `.wpnbha` (homepage-articles), `.wpnbpc` (carousel).
|
|
240
|
+
- No CSS-in-JS.
|
|
241
|
+
|
|
242
|
+
### TypeScript
|
|
243
|
+
|
|
244
|
+
Partial adoption. Some blocks use `.ts`/`.tsx` (homepage-articles `edit.tsx`, donate types/views), but most use plain JS. Config extends `newspack-scripts/config/tsconfig.json`. Type declarations live in `src/types/`.
|
|
245
|
+
|
|
246
|
+
## Testing
|
|
247
|
+
|
|
248
|
+
### PHP Tests
|
|
249
|
+
|
|
250
|
+
- **Config**: `phpunit.xml.dist` with a single `main` test suite matching `tests/test-*.php`
|
|
251
|
+
- **Bootstrap**: `tests/bootstrap.php` loads the WP test framework and the plugin
|
|
252
|
+
- **Base class**: `tests/wp-unittestcase-blocks.php` provides `WP_UnitTestCase_Blocks` with:
|
|
253
|
+
- Mock `CoAuthors_Plus` and `CoAuthors_Guest_Authors` classes
|
|
254
|
+
- Helper methods: `get_args_with_defaults()`, `create_guest_author()`, `create_post()`
|
|
255
|
+
- Registers a custom `author` taxonomy for CoAuthors Plus testing
|
|
256
|
+
- **Test files**: `test-donate-block.php`, `test-homepage-posts-block.php`
|
|
257
|
+
- **No PHPUnit groups** are currently defined
|
|
258
|
+
- **Run**: `n test-php` (from within the repo directory)
|
|
259
|
+
|
|
260
|
+
### JS Tests
|
|
261
|
+
|
|
262
|
+
- Minimal: only `src/blocks/donate/tiers-based/utils.test.js`
|
|
263
|
+
- Uses Jest via `newspack-scripts test`
|
|
264
|
+
- Always run the full suite (`npm test`), not individual files
|
|
265
|
+
|
|
266
|
+
## Hooks and Extension Points
|
|
267
|
+
|
|
268
|
+
The plugin exposes many hooks. Rather than listing them all here (they change over time), use `grep -r 'apply_filters\|do_action' src/ includes/` to find current hooks. The key hook prefixes are:
|
|
269
|
+
|
|
270
|
+
- **`newspack_blocks_*`**: General block hooks (query building, deduplication, registration, author data)
|
|
271
|
+
- **`newspack_modal_checkout_*`**: Modal checkout specific hooks (labels, gateways, billing fields, HTML output)
|
|
272
|
+
|
|
273
|
+
## CI/CD
|
|
274
|
+
|
|
275
|
+
See parent `../../AGENTS.md` for shared CI conventions. This repo's release runs `newspack-scripts release --files=newspack-blocks.php` to auto-bump the version in the main plugin file header.
|