@total_onion/onion-library 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/npm-publish.yml +34 -0
- package/.prettierrc +22 -0
- package/README.md +33 -0
- package/__spec__/copyBlockComponent.spec.js +94 -0
- package/__spec__/copyFile.spec.js +78 -0
- package/__spec__/copyFileKeeping.spec.js +74 -0
- package/__spec__/files/source.txt +1 -0
- package/__spec__/update-all-components.spec.js +99 -0
- package/__spec__/update-component.spec.js +165 -0
- package/components/admin-filter-pages-by-block/filter-pages-by-block.php +81 -0
- package/components/admin-resizable-editor-sidebar/resizable-editor-sidebar.php +224 -0
- package/components/block-animated-sections/animated-sections-extra.scss +631 -0
- package/components/block-animated-sections/animated-sections.js +1642 -0
- package/components/block-animated-sections/animated-sections.php +14 -0
- package/components/block-animated-sections/animated-sections.scss +470 -0
- package/components/block-animated-sections/animated-sections.twig +324 -0
- package/components/block-animated-sections/group_63f350c04d418.json +4122 -0
- package/components/block-back-to-top-button/back-to-top-button-extra.scss +6 -0
- package/components/block-back-to-top-button/back-to-top-button.js +12 -0
- package/components/block-back-to-top-button/back-to-top-button.php +14 -0
- package/components/block-back-to-top-button/back-to-top-button.scss +71 -0
- package/components/block-back-to-top-button/back-to-top-button.twig +40 -0
- package/components/block-back-to-top-button/group_63e24e04a1e61.json +315 -0
- package/components/block-bambuser-display/bambuser-display-extra.scss +6 -0
- package/components/block-bambuser-display/bambuser-display.js +43 -0
- package/components/block-bambuser-display/bambuser-display.php +14 -0
- package/components/block-bambuser-display/bambuser-display.scss +7 -0
- package/components/block-bambuser-display/bambuser-display.twig +43 -0
- package/components/block-bambuser-display/group_671658042eba7.json +489 -0
- package/components/block-bazaarvoice-display/bazaarvoice-display-extra.scss +5 -0
- package/components/block-bazaarvoice-display/bazaarvoice-display.js +7 -0
- package/components/block-bazaarvoice-display/bazaarvoice-display.php +14 -0
- package/components/block-bazaarvoice-display/bazaarvoice-display.scss +42 -0
- package/components/block-bazaarvoice-display/bazaarvoice-display.twig +38 -0
- package/components/block-bazaarvoice-display/group_64f744285585d.json +382 -0
- package/components/block-better-reviews/better-reviews-extra.scss +5 -0
- package/components/block-betterreviews-display/betterreviews-display-extra.scss +309 -0
- package/components/block-betterreviews-display/betterreviews-display.js +8 -0
- package/components/block-betterreviews-display/betterreviews-display.php +14 -0
- package/components/block-betterreviews-display/betterreviews-display.scss +25 -0
- package/components/block-betterreviews-display/betterreviews-display.twig +31 -0
- package/components/block-betterreviews-display/group_651c206555d43.json +331 -0
- package/components/block-breadcrumb-display/breadcrumb-display-extra.scss +6 -0
- package/components/block-breadcrumb-display/breadcrumb-display.js +8 -0
- package/components/block-breadcrumb-display/breadcrumb-display.php +14 -0
- package/components/block-breadcrumb-display/breadcrumb-display.scss +17 -0
- package/components/block-breadcrumb-display/breadcrumb-display.twig +50 -0
- package/components/block-breadcrumb-display/group_652aea92326b9.json +211 -0
- package/components/block-card-carousel-v2/card-carousel-v2.js +138 -0
- package/components/block-card-carousel-v2/card-carousel-v2.php +17 -0
- package/components/block-card-carousel-v2/card-carousel-v2.scss +408 -0
- package/components/block-card-carousel-v2/card-carousel-v2.twig +145 -0
- package/components/block-card-carousel-v2/group_64f46e5ea695b.json +1171 -0
- package/components/block-carousel-multi-layout-v2/carousel-multi-layout-v2-extra.js +1 -0
- package/components/block-carousel-multi-layout-v2/carousel-multi-layout-v2-extra.scss +5 -0
- package/components/block-carousel-multi-layout-v2/carousel-multi-layout-v2.js +223 -0
- package/components/block-carousel-multi-layout-v2/carousel-multi-layout-v2.php +17 -0
- package/components/block-carousel-multi-layout-v2/carousel-multi-layout-v2.scss +155 -0
- package/components/block-carousel-multi-layout-v2/carousel-multi-layout-v2.twig +137 -0
- package/components/block-carousel-multi-layout-v2/group_63f1ff16340b1.json +687 -0
- package/components/block-carousel-thumbnail-gallery/carousel-thumbnail-gallery-extra.scss +6 -0
- package/components/block-carousel-thumbnail-gallery/carousel-thumbnail-gallery.js +89 -0
- package/components/block-carousel-thumbnail-gallery/carousel-thumbnail-gallery.php +17 -0
- package/components/block-carousel-thumbnail-gallery/carousel-thumbnail-gallery.scss +87 -0
- package/components/block-carousel-thumbnail-gallery/carousel-thumbnail-gallery.twig +70 -0
- package/components/block-carousel-thumbnail-gallery/group_63dfd38732f6c.json +605 -0
- package/components/block-collection-carousel/collection-carousel-extra.scss +5 -0
- package/components/block-collection-carousel/collection-carousel.js +132 -0
- package/components/block-collection-carousel/collection-carousel.php +14 -0
- package/components/block-collection-carousel/collection-carousel.scss +59 -0
- package/components/block-collection-carousel/collection-carousel.twig +87 -0
- package/components/block-collection-carousel/group_645b93da4e5d5.json +225 -0
- package/components/block-current-post-info/current-post-info-extra.js +1 -0
- package/components/block-current-post-info/current-post-info-extra.scss +6 -0
- package/components/block-current-post-info/current-post-info.js +11 -0
- package/components/block-current-post-info/current-post-info.php +17 -0
- package/components/block-current-post-info/current-post-info.scss +173 -0
- package/components/block-current-post-info/current-post-info.twig +44 -0
- package/components/block-current-post-info/group_681f29c027d42.json +2535 -0
- package/components/block-debrain-label-shop/debrain-label-shop.js +7 -0
- package/components/block-debrain-label-shop/debrain-label-shop.php +73 -0
- package/components/block-debrain-label-shop/debrain-label-shop.scss +4 -0
- package/components/block-debrain-label-shop/debrain-label-shop.twig +116 -0
- package/components/block-debrain-label-shop/group_63935b63f198c.json +1613 -0
- package/components/block-debrain-wtb/debrain-wtb-extra.scss +6 -0
- package/components/block-debrain-wtb/debrain-wtb.js +8 -0
- package/components/block-debrain-wtb/debrain-wtb.php +14 -0
- package/components/block-debrain-wtb/debrain-wtb.scss +7 -0
- package/components/block-debrain-wtb/debrain-wtb.twig +18 -0
- package/components/block-debrain-wtb/group_66349f620692e.json +73 -0
- package/components/block-divider/divider-extra.scss +5 -0
- package/components/block-divider/divider.js +8 -0
- package/components/block-divider/divider.php +14 -0
- package/components/block-divider/divider.scss +86 -0
- package/components/block-divider/divider.twig +48 -0
- package/components/block-divider/group_63a4486b818b1.json +888 -0
- package/components/block-event-details-banner/event-details-banner-extra.scss +15 -0
- package/components/block-event-details-banner/event-details-banner.js +9 -0
- package/components/block-event-details-banner/event-details-banner.php +14 -0
- package/components/block-event-details-banner/event-details-banner.scss +216 -0
- package/components/block-event-details-banner/event-details-banner.twig +78 -0
- package/components/block-event-details-banner/group_63d934fc2895a.json +736 -0
- package/components/block-floating-links/floating-links-extra.scss +4 -0
- package/components/block-floating-links/floating-links.js +8 -0
- package/components/block-floating-links/floating-links.php +14 -0
- package/components/block-floating-links/floating-links.scss +73 -0
- package/components/block-floating-links/floating-links.twig +25 -0
- package/components/block-floating-links/group_63d7ab19e9b15.json +531 -0
- package/components/block-gradient-layer/gradient-layer-extra.scss +6 -0
- package/components/block-gradient-layer/gradient-layer.js +7 -0
- package/components/block-gradient-layer/gradient-layer.php +14 -0
- package/components/block-gradient-layer/gradient-layer.scss +11 -0
- package/components/block-gradient-layer/gradient-layer.twig +17 -0
- package/components/block-gradient-layer/group_6787dab17f83e.json +215 -0
- package/components/block-group-container/group-container-extra.scss +2 -0
- package/components/block-group-container/group-container.js +8 -0
- package/components/block-group-container/group-container.php +14 -0
- package/components/block-group-container/group-container.scss +34 -0
- package/components/block-group-container/group-container.twig +49 -0
- package/components/block-group-container/group_644ce9a48943b.json +5097 -0
- package/components/block-iframe-container/group_645d4a0c3e5ca.json +459 -0
- package/components/block-iframe-container/iframe-container-extra.scss +2 -0
- package/components/block-iframe-container/iframe-container.js +31 -0
- package/components/block-iframe-container/iframe-container.php +14 -0
- package/components/block-iframe-container/iframe-container.scss +26 -0
- package/components/block-iframe-container/iframe-container.twig +23 -0
- package/components/block-list-builder/group_640ebbadc584f.json +739 -0
- package/components/block-list-builder/list-builder-extra.scss +6 -0
- package/components/block-list-builder/list-builder.js +7 -0
- package/components/block-list-builder/list-builder.php +14 -0
- package/components/block-list-builder/list-builder.scss +62 -0
- package/components/block-list-builder/list-builder.twig +47 -0
- package/components/block-map-container/group_670fe49f73f13.json +406 -0
- package/components/block-map-container/map-container-extra.scss +2 -0
- package/components/block-map-container/map-container.js +230 -0
- package/components/block-map-container/map-container.php +14 -0
- package/components/block-map-container/map-container.scss +70 -0
- package/components/block-map-container/map-container.twig +35 -0
- package/components/block-menu-presentation/group_63d7ea144187d.json +489 -0
- package/components/block-menu-presentation/menu-presentation-extra.scss +2 -0
- package/components/block-menu-presentation/menu-presentation.js +11 -0
- package/components/block-menu-presentation/menu-presentation.php +14 -0
- package/components/block-menu-presentation/menu-presentation.scss +111 -0
- package/components/block-menu-presentation/menu-presentation.twig +60 -0
- package/components/block-mikmak-wtb/group_6674604cd3920.json +54 -0
- package/components/block-mikmak-wtb/mikmak-wtb-extra.scss +6 -0
- package/components/block-mikmak-wtb/mikmak-wtb.js +7 -0
- package/components/block-mikmak-wtb/mikmak-wtb.php +14 -0
- package/components/block-mikmak-wtb/mikmak-wtb.scss +7 -0
- package/components/block-mikmak-wtb/mikmak-wtb.twig +19 -0
- package/components/block-nav-menu-container/group_65d29435959e5.json +185 -0
- package/components/block-nav-menu-container/nav-menu-container-extra.scss +6 -0
- package/components/block-nav-menu-container/nav-menu-container.js +21 -0
- package/components/block-nav-menu-container/nav-menu-container.php +14 -0
- package/components/block-nav-menu-container/nav-menu-container.scss +13 -0
- package/components/block-nav-menu-container/nav-menu-container.twig +19 -0
- package/components/block-post-info/group_64ef2bc27ec59.json +13315 -0
- package/components/block-post-info/post-info/article-description.twig +7 -0
- package/components/block-post-info/post-info/bazaarvoice-inline.twig +10 -0
- package/components/block-post-info/post-info/better-reviews.twig +13 -0
- package/components/block-post-info/post-info/buy-now.twig +79 -0
- package/components/block-post-info/post-info/cocktail-glass-type.twig +21 -0
- package/components/block-post-info/post-info/cocktail-ingredients-description.twig +7 -0
- package/components/block-post-info/post-info/cocktail-ingredients-title.twig +7 -0
- package/components/block-post-info/post-info/cocktail-instructions-description.twig +7 -0
- package/components/block-post-info/post-info/cocktail-instructions-title.twig +7 -0
- package/components/block-post-info/post-info/cocktail-prep-time.twig +26 -0
- package/components/block-post-info/post-info/cocktail-recipe-ingredients.twig +132 -0
- package/components/block-post-info/post-info/cocktail-recipe-instructions.twig +19 -0
- package/components/block-post-info/post-info/cocktail-skill-level.twig +26 -0
- package/components/block-post-info/post-info/cocktail-taste.twig +26 -0
- package/components/block-post-info/post-info/cocktail-tasting-notes.twig +5 -0
- package/components/block-post-info/post-info/divider.twig +3 -0
- package/components/block-post-info/post-info/drink-description.twig +7 -0
- package/components/block-post-info/post-info/global-image.twig +23 -0
- package/components/block-post-info/post-info/gradient-overlay.twig +6 -0
- package/components/block-post-info/post-info/person-email.twig +10 -0
- package/components/block-post-info/post-info/person-name.twig +7 -0
- package/components/block-post-info/post-info/person-questionaire.twig +15 -0
- package/components/block-post-info/post-info/person-rating.twig +24 -0
- package/components/block-post-info/post-info/post-author.twig +7 -0
- package/components/block-post-info/post-info/post-categories.twig +6 -0
- package/components/block-post-info/post-info/post-headline.twig +6 -0
- package/components/block-post-info/post-info/post-image.twig +47 -0
- package/components/block-post-info/post-info/post-info-description.twig +5 -0
- package/components/block-post-info/post-info/post-info-subtitle.twig +5 -0
- package/components/block-post-info/post-info/post-link.twig +40 -0
- package/components/block-post-info/post-info/post-name.twig +5 -0
- package/components/block-post-info/post-info/post-publish-date.twig +7 -0
- package/components/block-post-info/post-info/post-tags.twig +16 -0
- package/components/block-post-info/post-info/post-text-alternative-style.twig +5 -0
- package/components/block-post-info/post-info/post-title.twig +5 -0
- package/components/block-post-info/post-info/product-abv.twig +7 -0
- package/components/block-post-info/post-info/product-age-statement.twig +8 -0
- package/components/block-post-info/post-info/product-cask-type.twig +7 -0
- package/components/block-post-info/post-info/product-country.twig +7 -0
- package/components/block-post-info/post-info/product-details-brand.twig +5 -0
- package/components/block-post-info/post-info/product-details-description.twig +5 -0
- package/components/block-post-info/post-info/product-details-name.twig +5 -0
- package/components/block-post-info/post-info/product-details-price.twig +5 -0
- package/components/block-post-info/post-info/product-finish.twig +7 -0
- package/components/block-post-info/post-info/product-history.twig +7 -0
- package/components/block-post-info/post-info/product-logo.twig +3 -0
- package/components/block-post-info/post-info/product-name.twig +5 -0
- package/components/block-post-info/post-info/product-nose.twig +7 -0
- package/components/block-post-info/post-info/product-price.twig +5 -0
- package/components/block-post-info/post-info/product-taste.twig +7 -0
- package/components/block-post-info/post-info/product-whisky-type.twig +7 -0
- package/components/block-post-info/post-info/reservebar-add-to-cart.twig +28 -0
- package/components/block-post-info/post-info/shopify-add-to-cart.twig +31 -0
- package/components/block-post-info/post-info/social-media-item.twig +34 -0
- package/components/block-post-info/post-info/spacer-v2.twig +5 -0
- package/components/block-post-info/post-info/treat-recipe-ingredients.twig +83 -0
- package/components/block-post-info/post-info-extra.js +1 -0
- package/components/block-post-info/post-info-extra.scss +14 -0
- package/components/block-post-info/post-info.js +11 -0
- package/components/block-post-info/post-info.php +17 -0
- package/components/block-post-info/post-info.scss +174 -0
- package/components/block-post-info/post-info.twig +51 -0
- package/components/block-post-type-filter-grid-v2/group_64690c62487bc.json +4359 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/better-reviews-widget.vue +15 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/buy-now-widget.vue +72 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/cocktail-category.vue +54 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/cocktail-tasting-notes.vue +15 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/divider-widget.vue +11 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/drink-tastes.vue +26 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/featured-post-component.vue +61 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/global-image-widget.vue +23 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/media-widget.vue +23 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/person-email-widget.vue +20 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/person-name-widget.vue +15 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/person-questionaire-widget.vue +17 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/person-rating-widget.vue +25 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-author-widget.vue +15 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-category-widget.vue +20 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-component.vue +130 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-headline-widget.vue +16 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-image-widget.vue +60 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-info-description.vue +14 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-info-subtitle.vue +14 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-link-widget.vue +44 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-publish-widget.vue +44 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-tags-widget.vue +20 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-text-alternative-style.vue +18 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-title-widget.vue +20 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/pre-render-posts-html.twig +17 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-abv.vue +18 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-age-statement.vue +17 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-bazaarvoice.vue +15 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-brand.vue +16 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-cask-type.vue +16 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-country.vue +14 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-description.vue +15 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-details-name.vue +18 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-details-price.vue +15 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-finish.vue +15 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-history.vue +16 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-link.vue +15 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-logo-widget.vue +22 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-name.vue +17 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-nose.vue +16 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-price.vue +15 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-slug.vue +14 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-taste.vue +16 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-whisky-type.vue +25 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/ptfg-posts.twig +404 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/ptfg-utils.vue +38 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/shopify-add-to-cart.vue +31 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/social-media-item.vue +58 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/spacer-widget.vue +13 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/text-search.vue +10 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2-extra.scss +6 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2.js +15 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2.php +48 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2.scss +989 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2.twig +148 -0
- package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2.vue +888 -0
- package/components/block-post-type-scroller/group_65de1e6cda9fd.json +405 -0
- package/components/block-post-type-scroller/post-type-scroller-extra.scss +6 -0
- package/components/block-post-type-scroller/post-type-scroller.js +15 -0
- package/components/block-post-type-scroller/post-type-scroller.php +14 -0
- package/components/block-post-type-scroller/post-type-scroller.scss +4 -0
- package/components/block-post-type-scroller/post-type-scroller.twig +14 -0
- package/components/block-responsive-image/responsive-image.js +14 -0
- package/components/block-responsive-image/responsive-image.scss +3 -0
- package/components/block-responsive-table/group_6617ecc987ddd.json +461 -0
- package/components/block-responsive-table/responsive-table-extra.scss +6 -0
- package/components/block-responsive-table/responsive-table.js +7 -0
- package/components/block-responsive-table/responsive-table.php +14 -0
- package/components/block-responsive-table/responsive-table.scss +51 -0
- package/components/block-responsive-table/responsive-table.twig +45 -0
- package/components/block-section-separator/group_63e635d6a198a.json +576 -0
- package/components/block-section-separator/section-separator.js +8 -0
- package/components/block-section-separator/section-separator.php +14 -0
- package/components/block-section-separator/section-separator.scss +38 -0
- package/components/block-section-separator/section-separator.twig +46 -0
- package/components/block-single-column-container/group_656858f72acd7.json +1065 -0
- package/components/block-single-column-container/single-column-container-extra.scss +6 -0
- package/components/block-single-column-container/single-column-container.js +8 -0
- package/components/block-single-column-container/single-column-container.php +14 -0
- package/components/block-single-column-container/single-column-container.scss +20 -0
- package/components/block-single-column-container/single-column-container.twig +31 -0
- package/components/block-single-content-box/group_65b776f4d75a3.json +1734 -0
- package/components/block-single-content-box/single-content-box-extra.scss +7 -0
- package/components/block-single-content-box/single-content-box.js +15 -0
- package/components/block-single-content-box/single-content-box.php +14 -0
- package/components/block-single-content-box/single-content-box.scss +13 -0
- package/components/block-single-content-box/single-content-box.twig +21 -0
- package/components/block-single-lottie/group_65ccfe68d38cb.json +232 -0
- package/components/block-single-lottie/single-lottie-extra.scss +6 -0
- package/components/block-single-lottie/single-lottie.js +10 -0
- package/components/block-single-lottie/single-lottie.php +14 -0
- package/components/block-single-lottie/single-lottie.scss +10 -0
- package/components/block-single-lottie/single-lottie.twig +16 -0
- package/components/block-single-responsive-image/group_65a6674d41afa.json +354 -0
- package/components/block-single-responsive-image/single-responsive-image-extra.scss +7 -0
- package/components/block-single-responsive-image/single-responsive-image.js +7 -0
- package/components/block-single-responsive-image/single-responsive-image.php +14 -0
- package/components/block-single-responsive-image/single-responsive-image.scss +9 -0
- package/components/block-single-responsive-image/single-responsive-image.twig +17 -0
- package/components/block-single-video/group_65afa6aedbeac.json +280 -0
- package/components/block-single-video/single-video-extra.js +1 -0
- package/components/block-single-video/single-video-extra.scss +6 -0
- package/components/block-single-video/single-video.js +12 -0
- package/components/block-single-video/single-video.php +14 -0
- package/components/block-single-video/single-video.scss +36 -0
- package/components/block-single-video/single-video.twig +21 -0
- package/components/block-site-copyright-notice/group_66296c3716b4f.json +287 -0
- package/components/block-site-copyright-notice/site-copyright-notice-extra.scss +5 -0
- package/components/block-site-copyright-notice/site-copyright-notice.js +7 -0
- package/components/block-site-copyright-notice/site-copyright-notice.php +14 -0
- package/components/block-site-copyright-notice/site-copyright-notice.scss +32 -0
- package/components/block-site-copyright-notice/site-copyright-notice.twig +26 -0
- package/components/block-site-logo-container/group_65dda9cbda1a0.json +182 -0
- package/components/block-site-logo-container/site-logo-container-extra.scss +6 -0
- package/components/block-site-logo-container/site-logo-container.js +7 -0
- package/components/block-site-logo-container/site-logo-container.php +14 -0
- package/components/block-site-logo-container/site-logo-container.scss +30 -0
- package/components/block-site-logo-container/site-logo-container.twig +42 -0
- package/components/block-site-title-and-tagline/group_65d258a4d4ee1.json +393 -0
- package/components/block-site-title-and-tagline/site-title-and-tagline-extra.scss +5 -0
- package/components/block-site-title-and-tagline/site-title-and-tagline.js +7 -0
- package/components/block-site-title-and-tagline/site-title-and-tagline.php +14 -0
- package/components/block-site-title-and-tagline/site-title-and-tagline.scss +19 -0
- package/components/block-site-title-and-tagline/site-title-and-tagline.twig +24 -0
- package/components/block-slide-in-panel/group_644e7531c41b6.json +533 -0
- package/components/block-slide-in-panel/slide-in-panel-extra.scss +9 -0
- package/components/block-slide-in-panel/slide-in-panel.js +23 -0
- package/components/block-slide-in-panel/slide-in-panel.php +14 -0
- package/components/block-slide-in-panel/slide-in-panel.scss +40 -0
- package/components/block-slide-in-panel/slide-in-panel.twig +33 -0
- package/components/block-spacer-v2/group_64060dc280525.json +139 -0
- package/components/block-spacer-v2/spacer-v2.js +8 -0
- package/components/block-spacer-v2/spacer-v2.php +14 -0
- package/components/block-spacer-v2/spacer-v2.scss +20 -0
- package/components/block-spacer-v2/spacer-v2.twig +13 -0
- package/components/block-standard-content-v2/group_63a06c993ad35.json +2718 -0
- package/components/block-standard-content-v2/standard-content-v2-extra.js +1 -0
- package/components/block-standard-content-v2/standard-content-v2-extra.scss +21 -0
- package/components/block-standard-content-v2/standard-content-v2.js +51 -0
- package/components/block-standard-content-v2/standard-content-v2.php +17 -0
- package/components/block-standard-content-v2/standard-content-v2.scss +25 -0
- package/components/block-standard-content-v2/standard-content-v2.twig +20 -0
- package/components/block-sticky-link/group_63d78d7f41d23.json +134 -0
- package/components/block-sticky-link/sticky-link-extra.scss +1 -0
- package/components/block-sticky-link/sticky-link.js +8 -0
- package/components/block-sticky-link/sticky-link.php +14 -0
- package/components/block-sticky-link/sticky-link.scss +41 -0
- package/components/block-sticky-link/sticky-link.twig +25 -0
- package/components/block-sub-group-container/group_65de580781a2b.json +1524 -0
- package/components/block-sub-group-container/sub-group-container-extra.scss +2 -0
- package/components/block-sub-group-container/sub-group-container.js +9 -0
- package/components/block-sub-group-container/sub-group-container.php +14 -0
- package/components/block-sub-group-container/sub-group-container.scss +26 -0
- package/components/block-sub-group-container/sub-group-container.twig +42 -0
- package/components/block-sub-tabbed-content/group_6629506ec3a1e.json +1091 -0
- package/components/block-sub-tabbed-content/sub-tabbed-content-extra.scss +2 -0
- package/components/block-sub-tabbed-content/sub-tabbed-content.js +38 -0
- package/components/block-sub-tabbed-content/sub-tabbed-content.php +14 -0
- package/components/block-sub-tabbed-content/sub-tabbed-content.scss +74 -0
- package/components/block-sub-tabbed-content/sub-tabbed-content.twig +50 -0
- package/components/block-tabbed-content-v2/group_6471dffc728cf.json +1270 -0
- package/components/block-tabbed-content-v2/tabbed-content-v2-extra.scss +1 -0
- package/components/block-tabbed-content-v2/tabbed-content-v2.js +38 -0
- package/components/block-tabbed-content-v2/tabbed-content-v2.php +14 -0
- package/components/block-tabbed-content-v2/tabbed-content-v2.scss +73 -0
- package/components/block-tabbed-content-v2/tabbed-content-v2.twig +58 -0
- package/components/block-theme-switcher/group_674e319102e49.json +167 -0
- package/components/block-theme-switcher/theme-switcher-extra.scss +6 -0
- package/components/block-theme-switcher/theme-switcher.js +17 -0
- package/components/block-theme-switcher/theme-switcher.php +14 -0
- package/components/block-theme-switcher/theme-switcher.scss +7 -0
- package/components/block-theme-switcher/theme-switcher.twig +29 -0
- package/components/cache-cta-styles/cache-cta-styles.php +54 -0
- package/components/cache-custom-cache-config/custom-cache-config.php +8 -0
- package/components/cache-custom-cache-config/group_66f3e16f8c024.json +79 -0
- package/components/cache-global-settings/cache-global-settings.php +36 -0
- package/components/cache-market-settings/cache-market-settings.php +39 -0
- package/components/cache-themes/cache-themes.php +53 -0
- package/components/cache-typography/cache-typography.php +53 -0
- package/components/component-accent-image/accent-image.twig +75 -0
- package/components/component-accent-image/group_6265189d8a694.json +890 -0
- package/components/component-accent-image-v2/accent-image-v2.twig +114 -0
- package/components/component-accent-image-v2/group_6595613d07b2d.json +951 -0
- package/components/component-accent-text/accent-text-extra.scss +6 -0
- package/components/component-accent-text/accent-text.scss +61 -0
- package/components/component-accent-text/accent-text.twig +11 -0
- package/components/component-accent-text/group_63e10c602d136.json +220 -0
- package/components/component-accordion-v2/accordion-v2-extra.scss +6 -0
- package/components/component-accordion-v2/accordion-v2.js +113 -0
- package/components/component-accordion-v2/accordion-v2.scss +172 -0
- package/components/component-accordion-v2/accordion-v2.twig +38 -0
- package/components/component-accordion-v2/group_65086e92b21c1.json +516 -0
- package/components/component-accordion-v3/accordion-v3.js +113 -0
- package/components/component-accordion-v3/accordion-v3.scss +183 -0
- package/components/component-accordion-v3/accordion-v3.twig +39 -0
- package/components/component-accordion-v3/group_66ab7edfc6d63.json +535 -0
- package/components/component-acf-wysiwyg-options/acf-wysiwyg-options.php +221 -0
- package/components/component-animations/animations.scss +117 -0
- package/components/component-animations/animations.twig +18 -0
- package/components/component-animations/group_659e9c280bdda.json +458 -0
- package/components/component-animations-style/animations-style.twig +5 -0
- package/components/component-athena-body-close/athena-body-close.twig +1 -0
- package/components/component-athena-body-open/athena-body-open.twig +32 -0
- package/components/component-athena-head/athena-head.twig +4 -0
- package/components/component-better-reviews/better-reviews-extra.scss +5 -0
- package/components/component-better-reviews/better-reviews.scss +356 -0
- package/components/component-better-reviews/better-reviews.twig +6 -0
- package/components/component-better-reviews-display-settings/group_671f47cc17aa9.json +91 -0
- package/components/component-block-padding/block-padding.scss +62 -0
- package/components/component-block-padding/block-padding.twig +53 -0
- package/components/component-block-padding/group_638f4148bc10b.json +889 -0
- package/components/component-block-settings/block-settings.scss +42 -0
- package/components/component-block-settings/block-settings.twig +31 -0
- package/components/component-block-settings/group_65a45ada4e128.json +699 -0
- package/components/component-blockquote/blockquote.scss +64 -0
- package/components/component-blockquote/blockquote.twig +55 -0
- package/components/component-blockquote/group_659d2bbc948e1.json +280 -0
- package/components/component-box-shadow/box-shadow.scss +9 -0
- package/components/component-box-shadow/box-shadow.twig +7 -0
- package/components/component-box-shadow/group_666ed2bece4c3.json +210 -0
- package/components/component-buy-now-button/buy-now-button.js +15 -0
- package/components/component-buy-now-button/buy-now-button.twig +97 -0
- package/components/component-buy-now-button/group_658430fa58bf1.json +717 -0
- package/components/component-carousel-standard/group_6282c52bf38d7.json +2844 -0
- package/components/component-child-pattern-settings/group_670b7ac92563c.json +76 -0
- package/components/component-classic-nav-items-center/classic-nav-items-center.js +58 -0
- package/components/component-classic-nav-items-center/classic-nav-items-center.scss +811 -0
- package/components/component-classic-nav-items-center/classic-nav-items-center.twig +144 -0
- package/components/component-classic-nav-items-center/group_66a2b63ae5cad.json +277 -0
- package/components/component-code-block/code-block.scss +10 -0
- package/components/component-code-block/code-block.twig +7 -0
- package/components/component-code-block/group_657eeb3aeb09e.json +58 -0
- package/components/component-competition-selection/competition-selection.twig +5 -0
- package/components/component-content-container/content-container.js +92 -0
- package/components/component-content-container/content-container.scss +57 -0
- package/components/component-content-container/content-container.twig +34 -0
- package/components/component-content-container/group_65e3707a7a50f.json +89 -0
- package/components/component-content-container-settings/content-container-settings.scss +213 -0
- package/components/component-content-container-settings/content-container-settings.twig +156 -0
- package/components/component-content-container-settings/group_65b58da6d24b8.json +2495 -0
- package/components/component-content-image-v2/content-image-v2.scss +33 -0
- package/components/component-content-image-v2/content-image-v2.twig +85 -0
- package/components/component-content-image-v2/group_63d7ba80aeac7.json +647 -0
- package/components/component-content-tooltip/content-tooltip-extra.scss +6 -0
- package/components/component-content-tooltip/content-tooltip.js +44 -0
- package/components/component-content-tooltip/content-tooltip.scss +41 -0
- package/components/component-countdown/countdown-extra.scss +6 -0
- package/components/component-countdown/countdown.js +58 -0
- package/components/component-countdown/countdown.scss +15 -0
- package/components/component-countdown/countdown.twig +16 -0
- package/components/component-countdown/group_6520a0c1ae809.json +334 -0
- package/components/component-cover-link/cover-link.scss +11 -0
- package/components/component-cover-link/cover-link.twig +4 -0
- package/components/component-cover-link/group_65ca55f45368c.json +103 -0
- package/components/component-cta-selection/cta-selection.twig +313 -0
- package/components/component-cta-selection/group_64b24a4e10761.json +1262 -0
- package/components/component-eager-loading/eager-loading.twig +4 -0
- package/components/component-eager-loading/group_654bee047f2f0.json +55 -0
- package/components/component-element-positioning/element-positioning.scss +21 -0
- package/components/component-element-positioning/element-positioning.twig +34 -0
- package/components/component-element-positioning/group_65b0e17675b81.json +471 -0
- package/components/component-form-selection/form-selection-extra.scss +6 -0
- package/components/component-form-selection/form-selection.js +18 -0
- package/components/component-form-selection/form-selection.scss +41 -0
- package/components/component-form-selection/form-selection.twig +23 -0
- package/components/component-form-selection/group_63f4889ebf085.json +161 -0
- package/components/component-global-content-max-width/global-content-max-width.twig +11 -0
- package/components/component-global-content-max-width/group_63c83de4f0a99.json +55 -0
- package/components/component-global-image/group_65b7c7e412941.json +256 -0
- package/components/component-gradient-overlay/gradient-overlay.scss +46 -0
- package/components/component-gradient-overlay/gradient-overlay.twig +58 -0
- package/components/component-gradient-overlay/group_65995d4f1a4b5.json +467 -0
- package/components/component-grid-layout-container/grid-layout-container.scss +61 -0
- package/components/component-grid-layout-container/grid-layout-container.twig +38 -0
- package/components/component-grid-layout-container/group_6504a88c17463.json +886 -0
- package/components/component-grid-layout-element/grid-layout-element.scss +27 -0
- package/components/component-grid-layout-element/grid-layout-element.twig +39 -0
- package/components/component-grid-layout-element/group_6504a81a0623c.json +705 -0
- package/components/component-inline-raw-svg/group_6714e19ec95cc.json +55 -0
- package/components/component-lottie-animations/group_65cb36d6cb82e.json +250 -0
- package/components/component-lottie-animations/lottie-animations-extra.scss +2 -0
- package/components/component-lottie-animations/lottie-animations.js +25 -0
- package/components/component-lottie-animations/lottie-animations.scss +13 -0
- package/components/component-lottie-animations/lottie-animations.twig +8 -0
- package/components/component-market-selector/group_66a7b8ec15615.json +53 -0
- package/components/component-market-selector/market-selector-extra.scss +2 -0
- package/components/component-market-selector/market-selector.js +71 -0
- package/components/component-market-selector/market-selector.scss +247 -0
- package/components/component-market-selector/market-selector.twig +16 -0
- package/components/component-nav-menu/group_64b814182a570.json +432 -0
- package/components/component-nav-menu/nav-menu.scss +44 -0
- package/components/component-nav-menu/nav-menu.twig +76 -0
- package/components/component-nav-menu-slide-in-panel/group_65db1f6c9cba8.json +172 -0
- package/components/component-nav-menu-slide-in-panel/nav-menu-slide-in-panel-extra.scss +7 -0
- package/components/component-nav-menu-slide-in-panel/nav-menu-slide-in-panel.js +176 -0
- package/components/component-nav-menu-slide-in-panel/nav-menu-slide-in-panel.scss +638 -0
- package/components/component-nav-menu-slide-in-panel/nav-menu-slide-in-panel.twig +95 -0
- package/components/component-page-properties/page-properties.twig +27 -0
- package/components/component-parallax-animations/parallax-animations.js +40 -0
- package/components/component-post-author/group_67a1430a08630.json +482 -0
- package/components/component-post-author/post-author-extra.scss +6 -0
- package/components/component-post-author/post-author.scss +46 -0
- package/components/component-post-author/post-author.twig +80 -0
- package/components/component-post-image/group_65b375fc0d10d.json +460 -0
- package/components/component-post-tags/group_67090920e08e5.json +100 -0
- package/components/component-responsive-image/group_6258aff982b23.json +2415 -0
- package/components/component-responsive-image/responsive-image.scss +61 -0
- package/components/component-responsive-image/responsive-image.twig +138 -0
- package/components/component-responsive-show-hide/group_645a741c8da2e.json +108 -0
- package/components/component-responsive-show-hide/responsive-show-hide.twig +9 -0
- package/components/component-responsive-video/responsive-video.scss +8 -0
- package/components/component-scrolling-banner/group_626472bf26f5c.json +501 -0
- package/components/component-scrolling-banner/scrolling-banner-extra.scss +5 -0
- package/components/component-scrolling-banner/scrolling-banner.js +118 -0
- package/components/component-scrolling-banner/scrolling-banner.scss +98 -0
- package/components/component-scrolling-banner/scrolling-banner.twig +31 -0
- package/components/component-scrolling-posts/group_65de1ebc8e0bc.json +404 -0
- package/components/component-scrolling-posts/scrolling-posts.js +16 -0
- package/components/component-scrolling-posts/scrolling-posts.scss +52 -0
- package/components/component-scrolling-posts/scrolling-posts.twig +76 -0
- package/components/component-shopify/shop-shopify.js +390 -0
- package/components/component-shopify/shop.js +104 -0
- package/components/component-shopify/shopify.scss +250 -0
- package/components/component-single-image/single-image.twig +7 -0
- package/components/component-social-media-share/group_6807bb08ab942.json +596 -0
- package/components/component-social-media-share/social-media-share-extra.scss +6 -0
- package/components/component-social-media-share/social-media-share.js +69 -0
- package/components/component-social-media-share/social-media-share.scss +128 -0
- package/components/component-social-media-share/social-media-share.twig +213 -0
- package/components/component-social-networks/group_668c110442111.json +467 -0
- package/components/component-social-networks/social-networks.scss +65 -0
- package/components/component-social-networks/social-networks.twig +38 -0
- package/components/component-spotify-embed/group_67d04c4c4cf78.json +123 -0
- package/components/component-spotify-embed/spotify-embed-extra.scss +5 -0
- package/components/component-spotify-embed/spotify-embed.js +7 -0
- package/components/component-spotify-embed/spotify-embed.scss +17 -0
- package/components/component-spotify-embed/spotify-embed.twig +4 -0
- package/components/component-standard-content-box/group_62a5ca6aa81d7.json +973 -0
- package/components/component-standard-content-box/standard-content-box.twig +64 -0
- package/components/component-standard-content-box-v2/group_6580636e7794b.json +136 -0
- package/components/component-standard-content-box-v2/standard-content-box-v2.twig +89 -0
- package/components/component-text-editor-settings/group_657305390de77.json +1236 -0
- package/components/component-truncated-text/group_677bd1bc69968.json +379 -0
- package/components/component-truncated-text/truncated-text-extra.scss +6 -0
- package/components/component-truncated-text/truncated-text.js +76 -0
- package/components/component-truncated-text/truncated-text.scss +42 -0
- package/components/component-truncated-text/truncated-text.twig +31 -0
- package/components/component-typography-style-select/group_6511f390d8357.json +83 -0
- package/components/component-video-standard/group_6258a8ba5e629.json +887 -0
- package/components/controller-password-protected/password-protected.css +46 -0
- package/components/controller-password-protected/password-protected.php +14 -0
- package/components/controller-password-protected/password-protected.twig +9 -0
- package/components/entrypoint-data-attribute/entry-point-data-attribute.twig +6 -0
- package/components/entrypoint-entry-point-classes/entry-point-classes.twig +13 -0
- package/components/entrypoint-entry-point-html/entry-point-html.twig +36 -0
- package/components/entrypoint-entry-point-style/entry-point-style.twig +14 -0
- package/components/entrypoint-preview-info/entry-point-preview-info.twig +7 -0
- package/components/fields-add-manage-patterns/add-manage-patterns-menu-link.php +13 -0
- package/components/fields-add-svg-support/add-svg-support.php +50 -0
- package/components/fields-allowed-block-types/allowed-block-types.php +34 -0
- package/components/fields-animations-style/animations-style.twig +2 -0
- package/components/fields-archive-pages/group_635e777ce46d4.json +135 -0
- package/components/fields-background-image-body/background-image-body.twig +16 -0
- package/components/fields-background-image-footer/background-image-footer.twig +8 -0
- package/components/fields-background-image-main/background-image-main.twig +8 -0
- package/components/fields-background-video-body/background-video-body.twig +14 -0
- package/components/fields-bazaarvoice-review/bazaarvoice-review.scss +10 -0
- package/components/fields-block-categories/block-categories.php +18 -0
- package/components/fields-block-editor-assets/block-editor-assets.php +17 -0
- package/components/fields-blockquote/blockquote.scss +64 -0
- package/components/fields-blockquote/blockquote.twig +55 -0
- package/components/fields-blocks-post-type-public/blocks-post-type-public.php +18 -0
- package/components/fields-box-shadow/box-shadow.scss +9 -0
- package/components/fields-check-file-type/check-file-type.php +13 -0
- package/components/fields-cloudflare-configuration/cloudflare-configuration.php +72 -0
- package/components/fields-cocktail-info/group_64c29b7f188ca.json +1461 -0
- package/components/fields-content-image-v2/content-image-v2.scss +30 -0
- package/components/fields-content-image-v2/content-image-v2.twig +73 -0
- package/components/fields-core-acf-wysiwyg-toolbars/core-acf-wysiwyg-toolbars.php +38 -0
- package/components/fields-core-athena-block-render-function/core-athena-block-render-function.php +50 -0
- package/components/fields-core-colour-data-config/core-colour-data-config.js +2 -0
- package/components/fields-core-colour-data-config/core-colour-data-config.php +60 -0
- package/components/fields-core-critical/core-critical.scss +6 -0
- package/components/fields-core-critical-css/core-critical-css.php +6 -0
- package/components/fields-core-css-modules/core-css-modules.scss +12 -0
- package/components/fields-core-css-sizing-vars/core-css-sizing-vars.scss +156 -0
- package/components/fields-core-cta/core-cta.php +240 -0
- package/components/fields-core-cta/core-cta.scss +280 -0
- package/components/fields-core-design-settings/core-design-settings.twig +6 -0
- package/components/fields-core-design-system/core-design-system.php +44 -0
- package/components/fields-core-editor-cta-style-select/core-editor-cta-style-select.js +16 -0
- package/components/fields-core-editor-cta-style-select/core-editor-cta-style-select.php +18 -0
- package/components/fields-core-editor-theme-select/core-editor-theme-select.js +16 -0
- package/components/fields-core-editor-theme-select/core-editor-theme-select.php +19 -0
- package/components/fields-core-font-modifiers/core-font-modifiers.php +46 -0
- package/components/fields-core-font-modifiers/group_65abf0fc06efd.json +489 -0
- package/components/fields-core-functions/core-functions.scss +111 -0
- package/components/fields-core-generic/core-generic.scss +132 -0
- package/components/fields-core-gradient-designer/core-gradient-designer.scss +92 -0
- package/components/fields-core-mixins/core-mixins.scss +1076 -0
- package/components/fields-core-root-variables/core-root-variables.scss +48 -0
- package/components/fields-core-themes/core-themes.php +65 -0
- package/components/fields-core-typography/core-typography.php +194 -0
- package/components/fields-core-typography/core-typography.scss +384 -0
- package/components/fields-core-wordpress-block-editor-preview/core-wordpress-block-editor-preview.js +121 -0
- package/components/fields-core-wordpress-block-editor-preview/core-wordpress-block-editor-preview.scss +101 -0
- package/components/fields-cover-link/cover-link.scss +11 -0
- package/components/fields-cover-link/cover-link.twig +4 -0
- package/components/fields-cta-icon-map/cta-icon-map.php +11 -0
- package/components/fields-cta-icons/group_677ed96c3c64f.json +677 -0
- package/components/fields-cta-styles/group_65abe1a526214.json +3238 -0
- package/components/fields-cta-styles-ui-page/ui_options_page_66000817bcbaf.json +22 -0
- package/components/fields-data-enables/data-enables.twig +21 -0
- package/components/fields-debrain-label-shop/group_63dd19dc3ba18.json +271 -0
- package/components/fields-default-theme/group_663c9818d16ea.json +79 -0
- package/components/fields-design-system/group_63e7fd39c8e35.json +966 -0
- package/components/fields-dynamic-critical-css/dynamic-critical-css.php +113 -0
- package/components/fields-dynamic-critical-css/group_65abcd463e8d0.json +126 -0
- package/components/fields-dynamic-image-preload/group_665f1f240337a.json +56 -0
- package/components/fields-e-shop-settings/e-shop-settings.twig +69 -0
- package/components/fields-e-shop-settings/group_650b24b4e623d.json +702 -0
- package/components/fields-get-asset-uri/get-asset-uri.php +36 -0
- package/components/fields-get-pattern/get-pattern.php +639 -0
- package/components/fields-get-raw-svg/get_raw_svg.php +24 -0
- package/components/fields-get-svg-icon-content/get-svg-icon-content.php +10 -0
- package/components/fields-global-images/group_6519888a76006.json +121 -0
- package/components/fields-global-preload/global-preload.twig +18 -0
- package/components/fields-global-preload/group_65e0bd35e781b.json +289 -0
- package/components/fields-global-settings/ui_options_page_65d2558ee2392.json +22 -0
- package/components/fields-grid-gap-mults/grid-gap-mults.twig +10 -0
- package/components/fields-header-and-footer-patterns/group_67224e439992d.json +107 -0
- package/components/fields-image-management-service/group_677813165b633.json +149 -0
- package/components/fields-image-sizes/image-sizes.php +24 -0
- package/components/fields-imagekit-configuration/imagekit-configuration.php +250 -0
- package/components/fields-inline-css-file/inline-css-file.php +24 -0
- package/components/fields-library-images/blue-brick.svg +19 -0
- package/components/fields-library-images/brick.svg +19 -0
- package/components/fields-library-images/chevron-library.svg +3 -0
- package/components/fields-library-images/green-brick.svg +19 -0
- package/components/fields-market-settings-ui-page/ui_options_page_65d4926a854a9.json +22 -0
- package/components/fields-noscript/noscript.twig +11 -0
- package/components/fields-notes/group_66573c9838918.json +55 -0
- package/components/fields-pantheon-page-cache-config/pantheon-page-cache-config.php +61 -0
- package/components/fields-people/group_6525b74551434.json +179 -0
- package/components/fields-post-info/group_64c29bf97fba2.json +963 -0
- package/components/fields-preload/preload.twig +2 -0
- package/components/fields-product-info/group_64c29a6750b1c.json +501 -0
- package/components/fields-registers-menus/registers-menus.php +18 -0
- package/components/fields-reservebar-popup/reservebar-popup.js +44 -0
- package/components/fields-reservebar-popup/reservebar-popup.scss +33 -0
- package/components/fields-site-copyright-notice/group_66317dcfcb01a.json +78 -0
- package/components/fields-site-logos/group_67b50a5b01f1d.json +120 -0
- package/components/fields-site-menus/site-menus.php +19 -0
- package/components/fields-text-style/group_6509a986674f1.json +328 -0
- package/components/fields-text-style/text-style.twig +14 -0
- package/components/fields-theme-attribute/core-theme-attribute.twig +15 -0
- package/components/fields-theme-font-select/group_64e627319dd51.json +68 -0
- package/components/fields-themes/group_65ac3c7583bdf.json +1086 -0
- package/components/fields-themes-ui-page/ui_options_page_660007a245fa0.json +22 -0
- package/components/fields-twig-filters-functions/twig-filters-functions.php +321 -0
- package/components/fields-typography-settings/group_657438bf04b09.json +5668 -0
- package/components/fields-typography-ui-page/ui_options_page_65ff1174bed38.json +22 -0
- package/components/fields-upload-file-size-limit/upload-file-size-limit.php +36 -0
- package/components/fields-upload-filesize-limit/group_659d259760a1d.json +56 -0
- package/components/fields-video-management-services/group_67b4cac05cb30.json +144 -0
- package/components/fields-wysiwyg-add-content-tooltip/wysiwyg-add-content-tooltip.php +45 -0
- package/components/security-password-protected/password-protected.php +25 -0
- package/createJsAssets.js +31 -0
- package/createNewBlock.js +163 -0
- package/createNewChildBlock.js +76 -0
- package/duplicateBlock.js +215 -0
- package/esbuild.mjs +18 -0
- package/exportAllBlocks.js +121 -0
- package/exportBlock.js +109 -0
- package/exportChildBlock.js +102 -0
- package/exportCustomCachesToLibrary.js +73 -0
- package/exportEntrypointToLibrary.js +62 -0
- package/exportImagesToLibrary.js +68 -0
- package/exportSEOExtrasToLibrary.js +73 -0
- package/exportToLibrary.js +437 -0
- package/fields.json +4 -0
- package/importBlock.js +90 -0
- package/importChildBlock.js +76 -0
- package/index.js +0 -0
- package/install-component.js +206 -0
- package/list-components.js +9 -0
- package/new-block-templates/template-acf-pattern.js +25 -0
- package/new-block-templates/template-acf.js +19 -0
- package/new-block-templates/template-cypress.js +9 -0
- package/new-block-templates/template-default.js +31 -0
- package/new-block-templates/template-swiper.js +127 -0
- package/new-block-templates/template-vue.js +59 -0
- package/package.json +32 -0
- package/public/.gitkeep +0 -0
- package/public/block-back-to-top-button/back-to-top-button.js +15 -0
- package/public/block-divider/divider.js +10 -0
- package/update-all-components.js +134 -0
- package/update-component.js +543 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# This workflow will run tests using node and then publish a package to NPM when a release is created
|
|
2
|
+
# For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages
|
|
3
|
+
|
|
4
|
+
name: Node.js Package
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
release:
|
|
8
|
+
types: [created]
|
|
9
|
+
branches:
|
|
10
|
+
- master
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v2
|
|
17
|
+
- uses: actions/setup-node@v2
|
|
18
|
+
with:
|
|
19
|
+
node-version: 16
|
|
20
|
+
- run: npm ci
|
|
21
|
+
|
|
22
|
+
publish-npm:
|
|
23
|
+
needs: build
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
steps:
|
|
26
|
+
- uses: actions/checkout@v2
|
|
27
|
+
- uses: actions/setup-node@v2
|
|
28
|
+
with:
|
|
29
|
+
node-version: 16
|
|
30
|
+
registry-url: https://registry.npmjs.org/
|
|
31
|
+
- run: npm ci
|
|
32
|
+
- run: npm publish
|
|
33
|
+
env:
|
|
34
|
+
NODE_AUTH_TOKEN: ${{secrets.npm_token}}
|
package/.prettierrc
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"useTabs": true,
|
|
3
|
+
"overrides": [
|
|
4
|
+
{
|
|
5
|
+
"files": "*.test.js",
|
|
6
|
+
"options": {
|
|
7
|
+
"semi": true
|
|
8
|
+
}
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"files": ["*.js", "*.css", "*.scss"],
|
|
12
|
+
"options": {
|
|
13
|
+
"useTabs": true,
|
|
14
|
+
"semi": true,
|
|
15
|
+
"singleQuote": true,
|
|
16
|
+
"trailingComma": "none",
|
|
17
|
+
"tabWidth": 4,
|
|
18
|
+
"bracketSpacing": false
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
package/README.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# cbl-component-library
|
|
2
|
+
|
|
3
|
+
Front end components for gcms sites
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Install with npm or yarn..
|
|
8
|
+
|
|
9
|
+
`npm install --save-dev @pernod-ricard-global-cms/cbl-component-library`
|
|
10
|
+
|
|
11
|
+
`yarn add -D @pernod-ricard-global-cms/cbl-component-library`
|
|
12
|
+
|
|
13
|
+
If you don't have the scripts already in your package.json you can add these and use them to install and update components.
|
|
14
|
+
|
|
15
|
+
`"install-component": "node ./node_modules/@pernod-ricard-global-cms/cbl-component-library/install-component.js", "upgrade-component": "node ./node_modules/@pernod-ricard-global-cms/cbl-component-library/upgrade-component.js", "list-components": "node ./node_modules/@pernod-ricard-global-cms/cbl-component-library/list-components.js",`
|
|
16
|
+
|
|
17
|
+
eg you can list the available components with
|
|
18
|
+
|
|
19
|
+
`yarn list-components`
|
|
20
|
+
|
|
21
|
+
and then you can install and component with
|
|
22
|
+
|
|
23
|
+
`yarn install-component <name-of-component>`
|
|
24
|
+
|
|
25
|
+
## Run unit tests
|
|
26
|
+
|
|
27
|
+
Go to the folder
|
|
28
|
+
|
|
29
|
+
`yarn install`
|
|
30
|
+
|
|
31
|
+
then, to run unit tests,
|
|
32
|
+
|
|
33
|
+
`yarn test`
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const { promisify } = require('util');
|
|
4
|
+
|
|
5
|
+
// Import the function to be tested
|
|
6
|
+
const updateComponent = require('../update-component');
|
|
7
|
+
|
|
8
|
+
// Promisify the fs functions used in the copyBlockComponent function
|
|
9
|
+
const readdirPromisified = promisify(fs.readdir);
|
|
10
|
+
const accessPromisified = promisify(fs.access);
|
|
11
|
+
|
|
12
|
+
// Create a utility function to remove the file (used after each test)
|
|
13
|
+
const removeFile = async (filePath) => {
|
|
14
|
+
try {
|
|
15
|
+
await fs.promises.unlink(filePath);
|
|
16
|
+
} catch (err) {
|
|
17
|
+
// If the file doesn't exist, ignore the error
|
|
18
|
+
if (err.code !== 'ENOENT') {
|
|
19
|
+
console.error('Error removing the file:', err);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
xdescribe('copyBlockComponent function', () => {
|
|
25
|
+
const libraryPath = 'testFiles/library'; // Assuming the libraryPath is defined for the tests
|
|
26
|
+
const componentName = 'TestComponent';
|
|
27
|
+
|
|
28
|
+
// Before each test, create the source directory with some test files
|
|
29
|
+
beforeEach(async () => {
|
|
30
|
+
try {
|
|
31
|
+
const sourceDir = path.join(libraryPath, 'components', componentName);
|
|
32
|
+
await fs.promises.mkdir(sourceDir, { recursive: true });
|
|
33
|
+
await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.php'), 'Test PHP content');
|
|
34
|
+
await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.js'), 'Test JS content');
|
|
35
|
+
await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.scss'), 'Test SCSS content');
|
|
36
|
+
await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.json'), 'Test JSON content');
|
|
37
|
+
await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.twig'), 'Test Twig content');
|
|
38
|
+
await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.vue'), 'Test Vue content');
|
|
39
|
+
await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.extra'), 'Test Extra content');
|
|
40
|
+
await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.spec'), 'Test Spec content');
|
|
41
|
+
} catch (err) {
|
|
42
|
+
console.error('Error creating the source directory:', err);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
// After each test, remove the source and destination files
|
|
47
|
+
afterEach(async () => {
|
|
48
|
+
try {
|
|
49
|
+
const sourceDir = path.join(libraryPath, 'components', componentName);
|
|
50
|
+
await fs.promises.rmdir(sourceDir, { recursive: true });
|
|
51
|
+
await removeFile('./inc/acf-blocks/TestComponent.php');
|
|
52
|
+
await removeFile('./assets/js/blocks/TestComponent.js');
|
|
53
|
+
await removeFile('./assets/scss/blocks/TestComponent.scss');
|
|
54
|
+
await removeFile('./acf-json/TestComponent.json');
|
|
55
|
+
await removeFile('./views/blocks/TestComponent.twig');
|
|
56
|
+
await removeFile('./assets/vue/blocks/TestComponent.vue');
|
|
57
|
+
await removeFile('./assets/scss/blocks/TestComponent/TestComponent.extra');
|
|
58
|
+
} catch (err) {
|
|
59
|
+
console.error('Error cleaning up the test files:', err);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
it('should copy files from source to destination based on the file types', async () => {
|
|
64
|
+
// Call the function to be tested
|
|
65
|
+
await updateComponent.copyBlockComponent(componentName);
|
|
66
|
+
|
|
67
|
+
// Assert that the destination files exist for each file type
|
|
68
|
+
const destinationFiles = [
|
|
69
|
+
'./inc/acf-blocks/TestComponent.php',
|
|
70
|
+
'./assets/js/blocks/TestComponent.js',
|
|
71
|
+
'./assets/scss/blocks/TestComponent.scss',
|
|
72
|
+
'./acf-json/TestComponent.json',
|
|
73
|
+
'./views/blocks/TestComponent.twig',
|
|
74
|
+
'./assets/vue/blocks/TestComponent.vue',
|
|
75
|
+
'./assets/scss/blocks/TestComponent/TestComponent.extra',
|
|
76
|
+
];
|
|
77
|
+
|
|
78
|
+
for (const filePath of destinationFiles) {
|
|
79
|
+
const fileExists = await accessPromisified(filePath)
|
|
80
|
+
.then(() => true)
|
|
81
|
+
.catch(() => false);
|
|
82
|
+
expect(fileExists).toBe(true);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Assert that the destination files contain the same content as the source files
|
|
86
|
+
const sourceDir = path.join(libraryPath, 'components', componentName);
|
|
87
|
+
const fileTypes = ['php', 'js', 'scss', 'json', 'twig', 'vue', 'extra'];
|
|
88
|
+
for (const fileType of fileTypes) {
|
|
89
|
+
const sourceContent = await fs.promises.readFile(path.join(sourceDir, `TestComponent.${fileType}`), 'utf-8');
|
|
90
|
+
const destinationContent = await fs.promises.readFile(path.join(`./${fileType === 'extra' ? 'assets/scss/blocks/TestComponent' : fileType}s/TestComponent.${fileType}`), 'utf-8');
|
|
91
|
+
expect(destinationContent).toBe(sourceContent);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
});
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const updateComponent = require('../update-component');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
describe('copyFile function', () => {
|
|
9
|
+
const sourceFilePath = './__spec__/files/source.txt';
|
|
10
|
+
const destinationFilePath = './__spec__/files/destination.txt';
|
|
11
|
+
|
|
12
|
+
// Helper function to delete a file if it exists
|
|
13
|
+
const deleteFileIfExists = (filePath) => {
|
|
14
|
+
if (fs.existsSync(filePath)) {
|
|
15
|
+
fs.unlinkSync(destinationFilePath);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
beforeEach(() => {
|
|
20
|
+
deleteFileIfExists(destinationFilePath);
|
|
21
|
+
jest.resetModules();
|
|
22
|
+
jest.clearAllMocks();
|
|
23
|
+
});
|
|
24
|
+
afterEach(() => {
|
|
25
|
+
deleteFileIfExists(destinationFilePath);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
// Test case 1: Ensure the file is copied when destination does not exists
|
|
30
|
+
test('copies file if it does not exist', async () => {
|
|
31
|
+
await updateComponent.copyFile(sourceFilePath, destinationFilePath);
|
|
32
|
+
|
|
33
|
+
// Wait for a short delay to allow the asynchronous operation to complete
|
|
34
|
+
await new Promise((resolve) => setTimeout(resolve, 150)); // Adjust the delay time as needed
|
|
35
|
+
|
|
36
|
+
expect(fs.existsSync(destinationFilePath)).toBe(true);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
// Test case 2: Ensure the file is copied even if the destination exists
|
|
40
|
+
test('overwrite file when destination file already exists', async () => {
|
|
41
|
+
// Create a dummy destination file to simulate an existing file
|
|
42
|
+
fs.writeFileSync(destinationFilePath, 'Dummy content Newer');
|
|
43
|
+
|
|
44
|
+
await updateComponent.copyFile(sourceFilePath, destinationFilePath);
|
|
45
|
+
// Wait for a short delay to allow the asynchronous operation to complete
|
|
46
|
+
await new Promise((resolve) => setTimeout(resolve, 50)); // Adjust the delay time as needed
|
|
47
|
+
|
|
48
|
+
// Assert that the destination file still exists after the function call
|
|
49
|
+
expect(fs.existsSync(destinationFilePath)).toBe(true);
|
|
50
|
+
|
|
51
|
+
// get file content
|
|
52
|
+
const destinationContent = fs.readFileSync(destinationFilePath, 'utf8');
|
|
53
|
+
|
|
54
|
+
// content should be
|
|
55
|
+
expect(destinationContent).toBe('Dummy content');
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
// Test case 3: Ensure the function handles errors properly
|
|
59
|
+
test('handles errors when copying the file', async () => {
|
|
60
|
+
// Create a dummy destination file to simulate an existing file
|
|
61
|
+
// fs.writeFileSync(destinationFilePath, 'Dummy content');
|
|
62
|
+
const sourceFilePath = './__spec__/nonexistent_source.txt';
|
|
63
|
+
|
|
64
|
+
// Ensure that console.error is called with the error message
|
|
65
|
+
const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
|
|
66
|
+
|
|
67
|
+
await updateComponent.copyFileKeeping(sourceFilePath, destinationFilePath);
|
|
68
|
+
// Wait for a short delay to allow the asynchronous operation to complete
|
|
69
|
+
await new Promise((resolve) => setTimeout(resolve, 50)); // Adjust the delay time as needed
|
|
70
|
+
|
|
71
|
+
// Assert that console.error was called with the expected error message
|
|
72
|
+
expect(consoleErrorSpy).toHaveBeenCalled();
|
|
73
|
+
|
|
74
|
+
// Restore the original console.error function
|
|
75
|
+
consoleErrorSpy.mockRestore();
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
});
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
// const path = require('path');
|
|
5
|
+
const updateComponent = require('../update-component');
|
|
6
|
+
|
|
7
|
+
describe('copyFileKeeping', () => {
|
|
8
|
+
const sourceFilePath = './__spec__/files/source.txt';
|
|
9
|
+
const destinationFilePath = './__spec__/files/destination.txt';
|
|
10
|
+
|
|
11
|
+
// Helper function to delete a file if it exists
|
|
12
|
+
const deleteFileIfExists = (filePath) => {
|
|
13
|
+
if (fs.existsSync(filePath)) {
|
|
14
|
+
fs.unlinkSync(destinationFilePath);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
beforeEach(() => {
|
|
19
|
+
deleteFileIfExists(destinationFilePath);
|
|
20
|
+
jest.resetModules();
|
|
21
|
+
jest.clearAllMocks();
|
|
22
|
+
});
|
|
23
|
+
afterEach(() => {
|
|
24
|
+
deleteFileIfExists(destinationFilePath);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
// Test case 1: Ensure the file is copied when destination does not exists
|
|
28
|
+
test('copies file if it does not exist', async () => {
|
|
29
|
+
await updateComponent.copyFileKeeping(sourceFilePath, destinationFilePath);
|
|
30
|
+
|
|
31
|
+
// Wait for a short delay to allow the asynchronous operation to complete
|
|
32
|
+
await new Promise((resolve) => setTimeout(resolve, 50)); // Adjust the delay time as needed
|
|
33
|
+
|
|
34
|
+
expect(fs.existsSync(destinationFilePath)).toBe(true);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
// Test case 2: Ensure the file is NOT copied when destination exists
|
|
38
|
+
test('copies file when destination file already exists', async () => {
|
|
39
|
+
// Create a dummy destination file to simulate an existing file
|
|
40
|
+
fs.writeFileSync(destinationFilePath, 'Dummy content Newer');
|
|
41
|
+
|
|
42
|
+
await updateComponent.copyFileKeeping(sourceFilePath, destinationFilePath);
|
|
43
|
+
// Wait for a short delay to allow the asynchronous operation to complete
|
|
44
|
+
await new Promise((resolve) => setTimeout(resolve, 50)); // Adjust the delay time as needed
|
|
45
|
+
|
|
46
|
+
// Assert that the destination file still exists after the function call
|
|
47
|
+
expect(fs.existsSync(destinationFilePath)).toBe(true);
|
|
48
|
+
|
|
49
|
+
// get file content
|
|
50
|
+
const destinationContent = fs.readFileSync(destinationFilePath, 'utf8');
|
|
51
|
+
|
|
52
|
+
expect(destinationContent).toBe('Dummy content Newer');
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
// Test case 3: Ensure the function handles errors properly
|
|
56
|
+
test('handles errors when copying the file', async () => {
|
|
57
|
+
// Create a dummy destination file to simulate an existing file
|
|
58
|
+
// fs.writeFileSync(destinationFilePath, 'Dummy content');
|
|
59
|
+
const sourceFilePath = './__spec__/nonexistent_source.txt';
|
|
60
|
+
|
|
61
|
+
// Ensure that console.error is called with the error message
|
|
62
|
+
const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
|
|
63
|
+
|
|
64
|
+
await updateComponent.copyFileKeeping(sourceFilePath, destinationFilePath);
|
|
65
|
+
// Wait for a short delay to allow the asynchronous operation to complete
|
|
66
|
+
await new Promise((resolve) => setTimeout(resolve, 50)); // Adjust the delay time as needed
|
|
67
|
+
|
|
68
|
+
// Assert that console.error was called with the expected error message
|
|
69
|
+
expect(consoleErrorSpy).toHaveBeenCalled();
|
|
70
|
+
|
|
71
|
+
// Restore the original console.error function
|
|
72
|
+
consoleErrorSpy.mockRestore();
|
|
73
|
+
});
|
|
74
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Dummy content
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const glob = require('glob');
|
|
4
|
+
const fs = jest.mock('fs');
|
|
5
|
+
const updateAllComponents = require('../update-all-components');
|
|
6
|
+
|
|
7
|
+
describe('getComponentsList', () => {
|
|
8
|
+
afterEach(() => {
|
|
9
|
+
jest.resetModules(); // Reset all mocked modules after each test
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
it('returns the correct components list when project-components-list.json is found', () => {
|
|
13
|
+
const projectComponentsList = {
|
|
14
|
+
"block": [
|
|
15
|
+
"accordion",
|
|
16
|
+
"standard-content-v2"
|
|
17
|
+
],
|
|
18
|
+
"fields": [
|
|
19
|
+
"video-standard",
|
|
20
|
+
"responsive-show-hide"
|
|
21
|
+
],
|
|
22
|
+
"admin": [
|
|
23
|
+
"filter-pages-by-block",
|
|
24
|
+
"resizable-editor-sidebar"
|
|
25
|
+
]
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
jest.mock('fs', () => ({
|
|
29
|
+
existsSync: jest.fn().mockReturnValue(true),
|
|
30
|
+
readFileSync: jest
|
|
31
|
+
.fn()
|
|
32
|
+
.mockReturnValue(JSON.stringify(projectComponentsList)),
|
|
33
|
+
}));
|
|
34
|
+
|
|
35
|
+
const result = updateAllComponents.getComponentsList();
|
|
36
|
+
|
|
37
|
+
// random order
|
|
38
|
+
result.map(m => expect([
|
|
39
|
+
"block-accordion",
|
|
40
|
+
"block-standard-content-v2",
|
|
41
|
+
|
|
42
|
+
"admin-core-mixins",
|
|
43
|
+
"admin-core-design-system",
|
|
44
|
+
"admin-core-generic",
|
|
45
|
+
"admin-core-critical",
|
|
46
|
+
"admin-core-functions",
|
|
47
|
+
|
|
48
|
+
"admin-filter-pages-by-block",
|
|
49
|
+
"admin-resizable-editor-sidebar",
|
|
50
|
+
"fields-video-standard",
|
|
51
|
+
"fields-responsive-show-hide",
|
|
52
|
+
|
|
53
|
+
"admin-core-cta",
|
|
54
|
+
"admin-core-root-variables",
|
|
55
|
+
"admin-core-css-sizing-vars",
|
|
56
|
+
"admin-core-colour-data-config",
|
|
57
|
+
"admin-core-wordpress-block-editor-preview",
|
|
58
|
+
"admin-core-editor-cta-style-select",
|
|
59
|
+
"admin-core-gradient-designer",
|
|
60
|
+
"admin-core-typography",
|
|
61
|
+
]).toContain(m));
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
it('returns the correct components list when project-components-list.json is not found', () => {
|
|
65
|
+
jest.mock('fs', () => ({
|
|
66
|
+
existsSync: jest.fn().mockReturnValue(false), // Simulate 'project-components-list.json' not existing
|
|
67
|
+
}));
|
|
68
|
+
|
|
69
|
+
jest.mock('glob', () => ({
|
|
70
|
+
// mock components in the filesystem
|
|
71
|
+
sync: jest.fn().mockReturnValue([
|
|
72
|
+
`./node_modules/@pernod-ricard-global-cms/cbl-component-library/components/component1`,
|
|
73
|
+
`./node_modules/@pernod-ricard-global-cms/cbl-component-library/components/component2`,
|
|
74
|
+
]),
|
|
75
|
+
}));
|
|
76
|
+
const result = updateAllComponents.getComponentsList();
|
|
77
|
+
|
|
78
|
+
// random order
|
|
79
|
+
result.map(m => expect([
|
|
80
|
+
"admin-core-mixins",
|
|
81
|
+
"admin-core-design-system",
|
|
82
|
+
"admin-core-generic",
|
|
83
|
+
"admin-core-critical",
|
|
84
|
+
"admin-core-functions",
|
|
85
|
+
|
|
86
|
+
"component1",
|
|
87
|
+
"component2",
|
|
88
|
+
|
|
89
|
+
"admin-core-cta",
|
|
90
|
+
"admin-core-root-variables",
|
|
91
|
+
"admin-core-css-sizing-vars",
|
|
92
|
+
"admin-core-colour-data-config",
|
|
93
|
+
"admin-core-wordpress-block-editor-preview",
|
|
94
|
+
"admin-core-editor-cta-style-select",
|
|
95
|
+
"admin-core-gradient-designer",
|
|
96
|
+
"admin-core-typography",
|
|
97
|
+
]).toContain(m));
|
|
98
|
+
});
|
|
99
|
+
});
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// const glob = require('glob');
|
|
4
|
+
const fs = require('fs');
|
|
5
|
+
// const fse = require("fs-extra");
|
|
6
|
+
|
|
7
|
+
// const path = require('path');
|
|
8
|
+
const updateComponent = require('../update-component');
|
|
9
|
+
|
|
10
|
+
jest.mock('fs');
|
|
11
|
+
|
|
12
|
+
describe('getExtension', () => {
|
|
13
|
+
test('Check getExtension js', () => {
|
|
14
|
+
const result = updateComponent.getExtension('testing.js')
|
|
15
|
+
expect(result).toBe('js');
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
test('Check getExtension spec.js', () => {
|
|
19
|
+
const result = updateComponent.getExtension('testing.spec.js')
|
|
20
|
+
expect(result).toBe('js');
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
describe('getFileType function', () => {
|
|
25
|
+
it('should return "extra" for filenames ending with "-extra.scss"', () => {
|
|
26
|
+
const result = updateComponent.getFileType('styles-extra.scss');
|
|
27
|
+
expect(result).toBe('extra');
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it('should return "spec" for filenames ending with "spec.js"', () => {
|
|
31
|
+
const result = updateComponent.getFileType('test.spec.js');
|
|
32
|
+
expect(result).toBe('spec');
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it('should return the correct file extension for other filenames', () => {
|
|
36
|
+
const result = updateComponent.getFileType('script.js');
|
|
37
|
+
expect(result).toBe('js');
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it('should return an empty string for filenames without extensions', () => {
|
|
41
|
+
const result = updateComponent.getFileType('README');
|
|
42
|
+
expect(result).toBe('');
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
describe('checkFolder function', () => {
|
|
47
|
+
beforeEach(() => {
|
|
48
|
+
jest.resetModules();
|
|
49
|
+
jest.clearAllMocks();
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
it('should return true for an existing directory', () => {
|
|
53
|
+
// Mocking fs.existsSync to return true
|
|
54
|
+
fs.existsSync.mockReturnValue(true);
|
|
55
|
+
// Mocking fs.statSync to return an object with isDirectory function returning true
|
|
56
|
+
fs.statSync.mockReturnValue({ isDirectory: () => true });
|
|
57
|
+
|
|
58
|
+
const result = updateComponent.checkFolder('/path/to/existing/folder');
|
|
59
|
+
expect(result).toBe(true);
|
|
60
|
+
// Ensure that the fs.existsSync function was called with the correct argument
|
|
61
|
+
expect(fs.existsSync).toHaveBeenCalledWith('/path/to/existing/folder');
|
|
62
|
+
// Ensure that the fs.statSync function was called with the correct argument
|
|
63
|
+
expect(fs.statSync).toHaveBeenCalledWith('/path/to/existing/folder');
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
it('should return false for a non-existing directory', () => {
|
|
67
|
+
// Mocking fs.existsSync to return false
|
|
68
|
+
fs.existsSync.mockReturnValue(false);
|
|
69
|
+
|
|
70
|
+
const result = updateComponent.checkFolder('/path/to/non_existing/folder');
|
|
71
|
+
expect(result).toBe(false);
|
|
72
|
+
// Ensure that the fs.existsSync function was called with the correct argument
|
|
73
|
+
expect(fs.existsSync).toHaveBeenCalledWith('/path/to/non_existing/folder');
|
|
74
|
+
// Ensure that the fs.statSync function was not called (since the folder does not exist)
|
|
75
|
+
expect(fs.statSync).not.toHaveBeenCalled();
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it('should return false for an existing file (not a directory)', () => {
|
|
79
|
+
// Mocking fs.existsSync to return true
|
|
80
|
+
fs.existsSync.mockReturnValue(true);
|
|
81
|
+
// Mocking fs.statSync to return an object with isDirectory function returning false
|
|
82
|
+
fs.statSync.mockReturnValue({ isDirectory: () => false });
|
|
83
|
+
|
|
84
|
+
const result = updateComponent.checkFolder('/path/to/existing/file');
|
|
85
|
+
expect(result).toBe(false);
|
|
86
|
+
// Ensure that the fs.existsSync function was called with the correct argument
|
|
87
|
+
expect(fs.existsSync).toHaveBeenCalledWith('/path/to/existing/file');
|
|
88
|
+
// Ensure that the fs.statSync function was called with the correct argument
|
|
89
|
+
expect(fs.statSync).toHaveBeenCalledWith('/path/to/existing/file');
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
describe('getProjectName function', () => {
|
|
94
|
+
beforeEach(() => {
|
|
95
|
+
jest.resetModules();
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
test('should return the project name from package.json', () => {
|
|
99
|
+
const projectName = 'Your Project Name';
|
|
100
|
+
const packageJson = {
|
|
101
|
+
name: projectName
|
|
102
|
+
};
|
|
103
|
+
fs.readFileSync.mockReturnValue(JSON.stringify(packageJson));
|
|
104
|
+
const result = updateComponent.getProjectName();
|
|
105
|
+
expect(result).toBe(projectName);
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
test('should capitalize the project name if it does not start with "the"', () => {
|
|
109
|
+
const projectName = 'your project name';
|
|
110
|
+
const packageJson = {
|
|
111
|
+
name: projectName
|
|
112
|
+
};
|
|
113
|
+
fs.readFileSync.mockReturnValue(JSON.stringify(packageJson));
|
|
114
|
+
const result = updateComponent.getProjectName();
|
|
115
|
+
expect(result).toBe('Your project name');
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
test('should capitalize and prepend "The" to the project name if it starts with "the"', () => {
|
|
119
|
+
const projectName = 'theglenlivet';
|
|
120
|
+
const packageJson = {
|
|
121
|
+
name: projectName
|
|
122
|
+
};
|
|
123
|
+
fs.readFileSync.mockReturnValue(JSON.stringify(packageJson));
|
|
124
|
+
const result = updateComponent.getProjectName();
|
|
125
|
+
expect(result).toBe('The Glenlivet');
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
test('should return default project name if package.json is not found', () => {
|
|
129
|
+
fs.readFileSync.mockImplementation(() => {
|
|
130
|
+
throw new Error('File not found');
|
|
131
|
+
});
|
|
132
|
+
// Ensure that console.error is called with the error message
|
|
133
|
+
const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
|
|
134
|
+
|
|
135
|
+
const result = updateComponent.getProjectName();
|
|
136
|
+
expect(result).toBe('Global Theme');
|
|
137
|
+
// Assert that console.error was called with the expected error message
|
|
138
|
+
expect(consoleErrorSpy).toHaveBeenCalled();
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
describe('getFileType function', () => {
|
|
143
|
+
it('should return "extra" for filenames ending with "-extra.scss"', () => {
|
|
144
|
+
const filename = 'style-extra.scss';
|
|
145
|
+
expect(updateComponent.getFileType(filename)).toBe('extra');
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
it('should return "spec" for filenames ending with "spec.js"', () => {
|
|
149
|
+
const filename = 'test.spec.js';
|
|
150
|
+
expect(updateComponent.getFileType(filename)).toBe('spec');
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
it('should call getExtension for other filenames', () => {
|
|
154
|
+
const addSpy = jest.spyOn(updateComponent, 'getExtension');
|
|
155
|
+
// console.log(addSpy)
|
|
156
|
+
// return
|
|
157
|
+
const filename = 'example.txt';
|
|
158
|
+
const result = updateComponent.getFileType(filename);
|
|
159
|
+
// expect(addSpy).toHaveBeenCalledWith(filename);
|
|
160
|
+
expect(result).toBe('txt');
|
|
161
|
+
|
|
162
|
+
// Don't forget to restore the original 'add' function after the test
|
|
163
|
+
addSpy.mockRestore();
|
|
164
|
+
});
|
|
165
|
+
});
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
// Do not edit this file outside of the component library as otherwise your changes will be lost with future updates.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Adds a dropdown to the admin panel for filtering pages by blocks used on the page.
|
|
6
|
+
*
|
|
7
|
+
* @package Global Theme
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Register 'block' as a query variable.
|
|
12
|
+
*
|
|
13
|
+
* @param array $vars The existing query variables.
|
|
14
|
+
* @return array The modified query variables.
|
|
15
|
+
*/
|
|
16
|
+
function register_search_block_query_var( $vars ) {
|
|
17
|
+
$vars[] = 'block';
|
|
18
|
+
return $vars;
|
|
19
|
+
}
|
|
20
|
+
add_filter( 'query_vars', 'register_search_block_query_var' );
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Add a block types filter dropdown to the admin post list table.
|
|
24
|
+
*
|
|
25
|
+
* @param string $post_type The current post type.
|
|
26
|
+
*/
|
|
27
|
+
function add_block_types_filter_dropdown( $post_type ) {
|
|
28
|
+
// Check if block editor is used for the post type
|
|
29
|
+
if ( ! use_block_editor_for_post_type( $post_type ) ) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Get all registered block types
|
|
34
|
+
$block_types = \WP_Block_Type_Registry::get_instance()->get_all_registered();
|
|
35
|
+
|
|
36
|
+
$options = array_reduce(
|
|
37
|
+
$block_types,
|
|
38
|
+
function ( $options, $block_type ) {
|
|
39
|
+
// Generate option value based on block type name
|
|
40
|
+
$val = '<!-- wp:' . str_replace( 'core/', '', $block_type->name ) . ' ';
|
|
41
|
+
|
|
42
|
+
// Generate option HTML with selected attribute if it matches the current block query
|
|
43
|
+
$option_html = sprintf(
|
|
44
|
+
'<option value="%s" %s>%s</option>',
|
|
45
|
+
esc_attr( $val ),
|
|
46
|
+
selected( get_query_var( 'block' ), $val, false ),
|
|
47
|
+
esc_html( $block_type->title ? $block_type->title : $block_type->name )
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
// Append the option HTML to the options string
|
|
51
|
+
return $options . $option_html;
|
|
52
|
+
},
|
|
53
|
+
''
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
// Output the block filter dropdown
|
|
57
|
+
echo '<select name="block"><option value="">' . esc_html( __( 'All Block Types', 'Global Theme' ) ) . '</option>' . wp_kses( $options, array( 'option' => array( 'value' => array() ) ) ) . '</select>';
|
|
58
|
+
}
|
|
59
|
+
add_action( 'restrict_manage_posts', 'add_block_types_filter_dropdown' );
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Modify the main query before it runs.
|
|
63
|
+
*
|
|
64
|
+
* @param WP_Query $query The WP_Query instance.
|
|
65
|
+
*/
|
|
66
|
+
function modify_search_query_for_block( $query ) {
|
|
67
|
+
// Check if we're in the admin area, main query, and performing a search
|
|
68
|
+
if ( is_admin() && $query->is_main_query() && $query->is_search() ) {
|
|
69
|
+
// Get the block query variable and URL decode.
|
|
70
|
+
$block_query_input = urldecode( get_query_var( 'block' ) );
|
|
71
|
+
// Sanitize block query input.
|
|
72
|
+
$block_query = str_replace( '<', '<', sanitize_text_field( $block_query_input ) );
|
|
73
|
+
|
|
74
|
+
// Check if the block query variable contains a block pattern
|
|
75
|
+
if ( strpos( $block_query, '<!-- wp:' ) !== false ) {
|
|
76
|
+
// Modify the search query to search for the block pattern in the post content
|
|
77
|
+
$query->set( 's', $block_query );
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
add_action( 'pre_get_posts', 'modify_search_query_for_block' );
|