@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.
Files changed (719) hide show
  1. package/.github/workflows/npm-publish.yml +34 -0
  2. package/.prettierrc +22 -0
  3. package/README.md +33 -0
  4. package/__spec__/copyBlockComponent.spec.js +94 -0
  5. package/__spec__/copyFile.spec.js +78 -0
  6. package/__spec__/copyFileKeeping.spec.js +74 -0
  7. package/__spec__/files/source.txt +1 -0
  8. package/__spec__/update-all-components.spec.js +99 -0
  9. package/__spec__/update-component.spec.js +165 -0
  10. package/components/admin-filter-pages-by-block/filter-pages-by-block.php +81 -0
  11. package/components/admin-resizable-editor-sidebar/resizable-editor-sidebar.php +224 -0
  12. package/components/block-animated-sections/animated-sections-extra.scss +631 -0
  13. package/components/block-animated-sections/animated-sections.js +1642 -0
  14. package/components/block-animated-sections/animated-sections.php +14 -0
  15. package/components/block-animated-sections/animated-sections.scss +470 -0
  16. package/components/block-animated-sections/animated-sections.twig +324 -0
  17. package/components/block-animated-sections/group_63f350c04d418.json +4122 -0
  18. package/components/block-back-to-top-button/back-to-top-button-extra.scss +6 -0
  19. package/components/block-back-to-top-button/back-to-top-button.js +12 -0
  20. package/components/block-back-to-top-button/back-to-top-button.php +14 -0
  21. package/components/block-back-to-top-button/back-to-top-button.scss +71 -0
  22. package/components/block-back-to-top-button/back-to-top-button.twig +40 -0
  23. package/components/block-back-to-top-button/group_63e24e04a1e61.json +315 -0
  24. package/components/block-bambuser-display/bambuser-display-extra.scss +6 -0
  25. package/components/block-bambuser-display/bambuser-display.js +43 -0
  26. package/components/block-bambuser-display/bambuser-display.php +14 -0
  27. package/components/block-bambuser-display/bambuser-display.scss +7 -0
  28. package/components/block-bambuser-display/bambuser-display.twig +43 -0
  29. package/components/block-bambuser-display/group_671658042eba7.json +489 -0
  30. package/components/block-bazaarvoice-display/bazaarvoice-display-extra.scss +5 -0
  31. package/components/block-bazaarvoice-display/bazaarvoice-display.js +7 -0
  32. package/components/block-bazaarvoice-display/bazaarvoice-display.php +14 -0
  33. package/components/block-bazaarvoice-display/bazaarvoice-display.scss +42 -0
  34. package/components/block-bazaarvoice-display/bazaarvoice-display.twig +38 -0
  35. package/components/block-bazaarvoice-display/group_64f744285585d.json +382 -0
  36. package/components/block-better-reviews/better-reviews-extra.scss +5 -0
  37. package/components/block-betterreviews-display/betterreviews-display-extra.scss +309 -0
  38. package/components/block-betterreviews-display/betterreviews-display.js +8 -0
  39. package/components/block-betterreviews-display/betterreviews-display.php +14 -0
  40. package/components/block-betterreviews-display/betterreviews-display.scss +25 -0
  41. package/components/block-betterreviews-display/betterreviews-display.twig +31 -0
  42. package/components/block-betterreviews-display/group_651c206555d43.json +331 -0
  43. package/components/block-breadcrumb-display/breadcrumb-display-extra.scss +6 -0
  44. package/components/block-breadcrumb-display/breadcrumb-display.js +8 -0
  45. package/components/block-breadcrumb-display/breadcrumb-display.php +14 -0
  46. package/components/block-breadcrumb-display/breadcrumb-display.scss +17 -0
  47. package/components/block-breadcrumb-display/breadcrumb-display.twig +50 -0
  48. package/components/block-breadcrumb-display/group_652aea92326b9.json +211 -0
  49. package/components/block-card-carousel-v2/card-carousel-v2.js +138 -0
  50. package/components/block-card-carousel-v2/card-carousel-v2.php +17 -0
  51. package/components/block-card-carousel-v2/card-carousel-v2.scss +408 -0
  52. package/components/block-card-carousel-v2/card-carousel-v2.twig +145 -0
  53. package/components/block-card-carousel-v2/group_64f46e5ea695b.json +1171 -0
  54. package/components/block-carousel-multi-layout-v2/carousel-multi-layout-v2-extra.js +1 -0
  55. package/components/block-carousel-multi-layout-v2/carousel-multi-layout-v2-extra.scss +5 -0
  56. package/components/block-carousel-multi-layout-v2/carousel-multi-layout-v2.js +223 -0
  57. package/components/block-carousel-multi-layout-v2/carousel-multi-layout-v2.php +17 -0
  58. package/components/block-carousel-multi-layout-v2/carousel-multi-layout-v2.scss +155 -0
  59. package/components/block-carousel-multi-layout-v2/carousel-multi-layout-v2.twig +137 -0
  60. package/components/block-carousel-multi-layout-v2/group_63f1ff16340b1.json +687 -0
  61. package/components/block-carousel-thumbnail-gallery/carousel-thumbnail-gallery-extra.scss +6 -0
  62. package/components/block-carousel-thumbnail-gallery/carousel-thumbnail-gallery.js +89 -0
  63. package/components/block-carousel-thumbnail-gallery/carousel-thumbnail-gallery.php +17 -0
  64. package/components/block-carousel-thumbnail-gallery/carousel-thumbnail-gallery.scss +87 -0
  65. package/components/block-carousel-thumbnail-gallery/carousel-thumbnail-gallery.twig +70 -0
  66. package/components/block-carousel-thumbnail-gallery/group_63dfd38732f6c.json +605 -0
  67. package/components/block-collection-carousel/collection-carousel-extra.scss +5 -0
  68. package/components/block-collection-carousel/collection-carousel.js +132 -0
  69. package/components/block-collection-carousel/collection-carousel.php +14 -0
  70. package/components/block-collection-carousel/collection-carousel.scss +59 -0
  71. package/components/block-collection-carousel/collection-carousel.twig +87 -0
  72. package/components/block-collection-carousel/group_645b93da4e5d5.json +225 -0
  73. package/components/block-current-post-info/current-post-info-extra.js +1 -0
  74. package/components/block-current-post-info/current-post-info-extra.scss +6 -0
  75. package/components/block-current-post-info/current-post-info.js +11 -0
  76. package/components/block-current-post-info/current-post-info.php +17 -0
  77. package/components/block-current-post-info/current-post-info.scss +173 -0
  78. package/components/block-current-post-info/current-post-info.twig +44 -0
  79. package/components/block-current-post-info/group_681f29c027d42.json +2535 -0
  80. package/components/block-debrain-label-shop/debrain-label-shop.js +7 -0
  81. package/components/block-debrain-label-shop/debrain-label-shop.php +73 -0
  82. package/components/block-debrain-label-shop/debrain-label-shop.scss +4 -0
  83. package/components/block-debrain-label-shop/debrain-label-shop.twig +116 -0
  84. package/components/block-debrain-label-shop/group_63935b63f198c.json +1613 -0
  85. package/components/block-debrain-wtb/debrain-wtb-extra.scss +6 -0
  86. package/components/block-debrain-wtb/debrain-wtb.js +8 -0
  87. package/components/block-debrain-wtb/debrain-wtb.php +14 -0
  88. package/components/block-debrain-wtb/debrain-wtb.scss +7 -0
  89. package/components/block-debrain-wtb/debrain-wtb.twig +18 -0
  90. package/components/block-debrain-wtb/group_66349f620692e.json +73 -0
  91. package/components/block-divider/divider-extra.scss +5 -0
  92. package/components/block-divider/divider.js +8 -0
  93. package/components/block-divider/divider.php +14 -0
  94. package/components/block-divider/divider.scss +86 -0
  95. package/components/block-divider/divider.twig +48 -0
  96. package/components/block-divider/group_63a4486b818b1.json +888 -0
  97. package/components/block-event-details-banner/event-details-banner-extra.scss +15 -0
  98. package/components/block-event-details-banner/event-details-banner.js +9 -0
  99. package/components/block-event-details-banner/event-details-banner.php +14 -0
  100. package/components/block-event-details-banner/event-details-banner.scss +216 -0
  101. package/components/block-event-details-banner/event-details-banner.twig +78 -0
  102. package/components/block-event-details-banner/group_63d934fc2895a.json +736 -0
  103. package/components/block-floating-links/floating-links-extra.scss +4 -0
  104. package/components/block-floating-links/floating-links.js +8 -0
  105. package/components/block-floating-links/floating-links.php +14 -0
  106. package/components/block-floating-links/floating-links.scss +73 -0
  107. package/components/block-floating-links/floating-links.twig +25 -0
  108. package/components/block-floating-links/group_63d7ab19e9b15.json +531 -0
  109. package/components/block-gradient-layer/gradient-layer-extra.scss +6 -0
  110. package/components/block-gradient-layer/gradient-layer.js +7 -0
  111. package/components/block-gradient-layer/gradient-layer.php +14 -0
  112. package/components/block-gradient-layer/gradient-layer.scss +11 -0
  113. package/components/block-gradient-layer/gradient-layer.twig +17 -0
  114. package/components/block-gradient-layer/group_6787dab17f83e.json +215 -0
  115. package/components/block-group-container/group-container-extra.scss +2 -0
  116. package/components/block-group-container/group-container.js +8 -0
  117. package/components/block-group-container/group-container.php +14 -0
  118. package/components/block-group-container/group-container.scss +34 -0
  119. package/components/block-group-container/group-container.twig +49 -0
  120. package/components/block-group-container/group_644ce9a48943b.json +5097 -0
  121. package/components/block-iframe-container/group_645d4a0c3e5ca.json +459 -0
  122. package/components/block-iframe-container/iframe-container-extra.scss +2 -0
  123. package/components/block-iframe-container/iframe-container.js +31 -0
  124. package/components/block-iframe-container/iframe-container.php +14 -0
  125. package/components/block-iframe-container/iframe-container.scss +26 -0
  126. package/components/block-iframe-container/iframe-container.twig +23 -0
  127. package/components/block-list-builder/group_640ebbadc584f.json +739 -0
  128. package/components/block-list-builder/list-builder-extra.scss +6 -0
  129. package/components/block-list-builder/list-builder.js +7 -0
  130. package/components/block-list-builder/list-builder.php +14 -0
  131. package/components/block-list-builder/list-builder.scss +62 -0
  132. package/components/block-list-builder/list-builder.twig +47 -0
  133. package/components/block-map-container/group_670fe49f73f13.json +406 -0
  134. package/components/block-map-container/map-container-extra.scss +2 -0
  135. package/components/block-map-container/map-container.js +230 -0
  136. package/components/block-map-container/map-container.php +14 -0
  137. package/components/block-map-container/map-container.scss +70 -0
  138. package/components/block-map-container/map-container.twig +35 -0
  139. package/components/block-menu-presentation/group_63d7ea144187d.json +489 -0
  140. package/components/block-menu-presentation/menu-presentation-extra.scss +2 -0
  141. package/components/block-menu-presentation/menu-presentation.js +11 -0
  142. package/components/block-menu-presentation/menu-presentation.php +14 -0
  143. package/components/block-menu-presentation/menu-presentation.scss +111 -0
  144. package/components/block-menu-presentation/menu-presentation.twig +60 -0
  145. package/components/block-mikmak-wtb/group_6674604cd3920.json +54 -0
  146. package/components/block-mikmak-wtb/mikmak-wtb-extra.scss +6 -0
  147. package/components/block-mikmak-wtb/mikmak-wtb.js +7 -0
  148. package/components/block-mikmak-wtb/mikmak-wtb.php +14 -0
  149. package/components/block-mikmak-wtb/mikmak-wtb.scss +7 -0
  150. package/components/block-mikmak-wtb/mikmak-wtb.twig +19 -0
  151. package/components/block-nav-menu-container/group_65d29435959e5.json +185 -0
  152. package/components/block-nav-menu-container/nav-menu-container-extra.scss +6 -0
  153. package/components/block-nav-menu-container/nav-menu-container.js +21 -0
  154. package/components/block-nav-menu-container/nav-menu-container.php +14 -0
  155. package/components/block-nav-menu-container/nav-menu-container.scss +13 -0
  156. package/components/block-nav-menu-container/nav-menu-container.twig +19 -0
  157. package/components/block-post-info/group_64ef2bc27ec59.json +13315 -0
  158. package/components/block-post-info/post-info/article-description.twig +7 -0
  159. package/components/block-post-info/post-info/bazaarvoice-inline.twig +10 -0
  160. package/components/block-post-info/post-info/better-reviews.twig +13 -0
  161. package/components/block-post-info/post-info/buy-now.twig +79 -0
  162. package/components/block-post-info/post-info/cocktail-glass-type.twig +21 -0
  163. package/components/block-post-info/post-info/cocktail-ingredients-description.twig +7 -0
  164. package/components/block-post-info/post-info/cocktail-ingredients-title.twig +7 -0
  165. package/components/block-post-info/post-info/cocktail-instructions-description.twig +7 -0
  166. package/components/block-post-info/post-info/cocktail-instructions-title.twig +7 -0
  167. package/components/block-post-info/post-info/cocktail-prep-time.twig +26 -0
  168. package/components/block-post-info/post-info/cocktail-recipe-ingredients.twig +132 -0
  169. package/components/block-post-info/post-info/cocktail-recipe-instructions.twig +19 -0
  170. package/components/block-post-info/post-info/cocktail-skill-level.twig +26 -0
  171. package/components/block-post-info/post-info/cocktail-taste.twig +26 -0
  172. package/components/block-post-info/post-info/cocktail-tasting-notes.twig +5 -0
  173. package/components/block-post-info/post-info/divider.twig +3 -0
  174. package/components/block-post-info/post-info/drink-description.twig +7 -0
  175. package/components/block-post-info/post-info/global-image.twig +23 -0
  176. package/components/block-post-info/post-info/gradient-overlay.twig +6 -0
  177. package/components/block-post-info/post-info/person-email.twig +10 -0
  178. package/components/block-post-info/post-info/person-name.twig +7 -0
  179. package/components/block-post-info/post-info/person-questionaire.twig +15 -0
  180. package/components/block-post-info/post-info/person-rating.twig +24 -0
  181. package/components/block-post-info/post-info/post-author.twig +7 -0
  182. package/components/block-post-info/post-info/post-categories.twig +6 -0
  183. package/components/block-post-info/post-info/post-headline.twig +6 -0
  184. package/components/block-post-info/post-info/post-image.twig +47 -0
  185. package/components/block-post-info/post-info/post-info-description.twig +5 -0
  186. package/components/block-post-info/post-info/post-info-subtitle.twig +5 -0
  187. package/components/block-post-info/post-info/post-link.twig +40 -0
  188. package/components/block-post-info/post-info/post-name.twig +5 -0
  189. package/components/block-post-info/post-info/post-publish-date.twig +7 -0
  190. package/components/block-post-info/post-info/post-tags.twig +16 -0
  191. package/components/block-post-info/post-info/post-text-alternative-style.twig +5 -0
  192. package/components/block-post-info/post-info/post-title.twig +5 -0
  193. package/components/block-post-info/post-info/product-abv.twig +7 -0
  194. package/components/block-post-info/post-info/product-age-statement.twig +8 -0
  195. package/components/block-post-info/post-info/product-cask-type.twig +7 -0
  196. package/components/block-post-info/post-info/product-country.twig +7 -0
  197. package/components/block-post-info/post-info/product-details-brand.twig +5 -0
  198. package/components/block-post-info/post-info/product-details-description.twig +5 -0
  199. package/components/block-post-info/post-info/product-details-name.twig +5 -0
  200. package/components/block-post-info/post-info/product-details-price.twig +5 -0
  201. package/components/block-post-info/post-info/product-finish.twig +7 -0
  202. package/components/block-post-info/post-info/product-history.twig +7 -0
  203. package/components/block-post-info/post-info/product-logo.twig +3 -0
  204. package/components/block-post-info/post-info/product-name.twig +5 -0
  205. package/components/block-post-info/post-info/product-nose.twig +7 -0
  206. package/components/block-post-info/post-info/product-price.twig +5 -0
  207. package/components/block-post-info/post-info/product-taste.twig +7 -0
  208. package/components/block-post-info/post-info/product-whisky-type.twig +7 -0
  209. package/components/block-post-info/post-info/reservebar-add-to-cart.twig +28 -0
  210. package/components/block-post-info/post-info/shopify-add-to-cart.twig +31 -0
  211. package/components/block-post-info/post-info/social-media-item.twig +34 -0
  212. package/components/block-post-info/post-info/spacer-v2.twig +5 -0
  213. package/components/block-post-info/post-info/treat-recipe-ingredients.twig +83 -0
  214. package/components/block-post-info/post-info-extra.js +1 -0
  215. package/components/block-post-info/post-info-extra.scss +14 -0
  216. package/components/block-post-info/post-info.js +11 -0
  217. package/components/block-post-info/post-info.php +17 -0
  218. package/components/block-post-info/post-info.scss +174 -0
  219. package/components/block-post-info/post-info.twig +51 -0
  220. package/components/block-post-type-filter-grid-v2/group_64690c62487bc.json +4359 -0
  221. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/better-reviews-widget.vue +15 -0
  222. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/buy-now-widget.vue +72 -0
  223. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/cocktail-category.vue +54 -0
  224. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/cocktail-tasting-notes.vue +15 -0
  225. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/divider-widget.vue +11 -0
  226. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/drink-tastes.vue +26 -0
  227. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/featured-post-component.vue +61 -0
  228. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/global-image-widget.vue +23 -0
  229. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/media-widget.vue +23 -0
  230. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/person-email-widget.vue +20 -0
  231. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/person-name-widget.vue +15 -0
  232. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/person-questionaire-widget.vue +17 -0
  233. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/person-rating-widget.vue +25 -0
  234. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-author-widget.vue +15 -0
  235. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-category-widget.vue +20 -0
  236. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-component.vue +130 -0
  237. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-headline-widget.vue +16 -0
  238. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-image-widget.vue +60 -0
  239. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-info-description.vue +14 -0
  240. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-info-subtitle.vue +14 -0
  241. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-link-widget.vue +44 -0
  242. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-publish-widget.vue +44 -0
  243. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-tags-widget.vue +20 -0
  244. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-text-alternative-style.vue +18 -0
  245. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-title-widget.vue +20 -0
  246. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/pre-render-posts-html.twig +17 -0
  247. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-abv.vue +18 -0
  248. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-age-statement.vue +17 -0
  249. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-bazaarvoice.vue +15 -0
  250. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-brand.vue +16 -0
  251. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-cask-type.vue +16 -0
  252. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-country.vue +14 -0
  253. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-description.vue +15 -0
  254. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-details-name.vue +18 -0
  255. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-details-price.vue +15 -0
  256. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-finish.vue +15 -0
  257. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-history.vue +16 -0
  258. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-link.vue +15 -0
  259. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-logo-widget.vue +22 -0
  260. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-name.vue +17 -0
  261. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-nose.vue +16 -0
  262. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-price.vue +15 -0
  263. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-slug.vue +14 -0
  264. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-taste.vue +16 -0
  265. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-whisky-type.vue +25 -0
  266. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/ptfg-posts.twig +404 -0
  267. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/ptfg-utils.vue +38 -0
  268. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/shopify-add-to-cart.vue +31 -0
  269. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/social-media-item.vue +58 -0
  270. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/spacer-widget.vue +13 -0
  271. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/text-search.vue +10 -0
  272. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2-extra.scss +6 -0
  273. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2.js +15 -0
  274. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2.php +48 -0
  275. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2.scss +989 -0
  276. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2.twig +148 -0
  277. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2.vue +888 -0
  278. package/components/block-post-type-scroller/group_65de1e6cda9fd.json +405 -0
  279. package/components/block-post-type-scroller/post-type-scroller-extra.scss +6 -0
  280. package/components/block-post-type-scroller/post-type-scroller.js +15 -0
  281. package/components/block-post-type-scroller/post-type-scroller.php +14 -0
  282. package/components/block-post-type-scroller/post-type-scroller.scss +4 -0
  283. package/components/block-post-type-scroller/post-type-scroller.twig +14 -0
  284. package/components/block-responsive-image/responsive-image.js +14 -0
  285. package/components/block-responsive-image/responsive-image.scss +3 -0
  286. package/components/block-responsive-table/group_6617ecc987ddd.json +461 -0
  287. package/components/block-responsive-table/responsive-table-extra.scss +6 -0
  288. package/components/block-responsive-table/responsive-table.js +7 -0
  289. package/components/block-responsive-table/responsive-table.php +14 -0
  290. package/components/block-responsive-table/responsive-table.scss +51 -0
  291. package/components/block-responsive-table/responsive-table.twig +45 -0
  292. package/components/block-section-separator/group_63e635d6a198a.json +576 -0
  293. package/components/block-section-separator/section-separator.js +8 -0
  294. package/components/block-section-separator/section-separator.php +14 -0
  295. package/components/block-section-separator/section-separator.scss +38 -0
  296. package/components/block-section-separator/section-separator.twig +46 -0
  297. package/components/block-single-column-container/group_656858f72acd7.json +1065 -0
  298. package/components/block-single-column-container/single-column-container-extra.scss +6 -0
  299. package/components/block-single-column-container/single-column-container.js +8 -0
  300. package/components/block-single-column-container/single-column-container.php +14 -0
  301. package/components/block-single-column-container/single-column-container.scss +20 -0
  302. package/components/block-single-column-container/single-column-container.twig +31 -0
  303. package/components/block-single-content-box/group_65b776f4d75a3.json +1734 -0
  304. package/components/block-single-content-box/single-content-box-extra.scss +7 -0
  305. package/components/block-single-content-box/single-content-box.js +15 -0
  306. package/components/block-single-content-box/single-content-box.php +14 -0
  307. package/components/block-single-content-box/single-content-box.scss +13 -0
  308. package/components/block-single-content-box/single-content-box.twig +21 -0
  309. package/components/block-single-lottie/group_65ccfe68d38cb.json +232 -0
  310. package/components/block-single-lottie/single-lottie-extra.scss +6 -0
  311. package/components/block-single-lottie/single-lottie.js +10 -0
  312. package/components/block-single-lottie/single-lottie.php +14 -0
  313. package/components/block-single-lottie/single-lottie.scss +10 -0
  314. package/components/block-single-lottie/single-lottie.twig +16 -0
  315. package/components/block-single-responsive-image/group_65a6674d41afa.json +354 -0
  316. package/components/block-single-responsive-image/single-responsive-image-extra.scss +7 -0
  317. package/components/block-single-responsive-image/single-responsive-image.js +7 -0
  318. package/components/block-single-responsive-image/single-responsive-image.php +14 -0
  319. package/components/block-single-responsive-image/single-responsive-image.scss +9 -0
  320. package/components/block-single-responsive-image/single-responsive-image.twig +17 -0
  321. package/components/block-single-video/group_65afa6aedbeac.json +280 -0
  322. package/components/block-single-video/single-video-extra.js +1 -0
  323. package/components/block-single-video/single-video-extra.scss +6 -0
  324. package/components/block-single-video/single-video.js +12 -0
  325. package/components/block-single-video/single-video.php +14 -0
  326. package/components/block-single-video/single-video.scss +36 -0
  327. package/components/block-single-video/single-video.twig +21 -0
  328. package/components/block-site-copyright-notice/group_66296c3716b4f.json +287 -0
  329. package/components/block-site-copyright-notice/site-copyright-notice-extra.scss +5 -0
  330. package/components/block-site-copyright-notice/site-copyright-notice.js +7 -0
  331. package/components/block-site-copyright-notice/site-copyright-notice.php +14 -0
  332. package/components/block-site-copyright-notice/site-copyright-notice.scss +32 -0
  333. package/components/block-site-copyright-notice/site-copyright-notice.twig +26 -0
  334. package/components/block-site-logo-container/group_65dda9cbda1a0.json +182 -0
  335. package/components/block-site-logo-container/site-logo-container-extra.scss +6 -0
  336. package/components/block-site-logo-container/site-logo-container.js +7 -0
  337. package/components/block-site-logo-container/site-logo-container.php +14 -0
  338. package/components/block-site-logo-container/site-logo-container.scss +30 -0
  339. package/components/block-site-logo-container/site-logo-container.twig +42 -0
  340. package/components/block-site-title-and-tagline/group_65d258a4d4ee1.json +393 -0
  341. package/components/block-site-title-and-tagline/site-title-and-tagline-extra.scss +5 -0
  342. package/components/block-site-title-and-tagline/site-title-and-tagline.js +7 -0
  343. package/components/block-site-title-and-tagline/site-title-and-tagline.php +14 -0
  344. package/components/block-site-title-and-tagline/site-title-and-tagline.scss +19 -0
  345. package/components/block-site-title-and-tagline/site-title-and-tagline.twig +24 -0
  346. package/components/block-slide-in-panel/group_644e7531c41b6.json +533 -0
  347. package/components/block-slide-in-panel/slide-in-panel-extra.scss +9 -0
  348. package/components/block-slide-in-panel/slide-in-panel.js +23 -0
  349. package/components/block-slide-in-panel/slide-in-panel.php +14 -0
  350. package/components/block-slide-in-panel/slide-in-panel.scss +40 -0
  351. package/components/block-slide-in-panel/slide-in-panel.twig +33 -0
  352. package/components/block-spacer-v2/group_64060dc280525.json +139 -0
  353. package/components/block-spacer-v2/spacer-v2.js +8 -0
  354. package/components/block-spacer-v2/spacer-v2.php +14 -0
  355. package/components/block-spacer-v2/spacer-v2.scss +20 -0
  356. package/components/block-spacer-v2/spacer-v2.twig +13 -0
  357. package/components/block-standard-content-v2/group_63a06c993ad35.json +2718 -0
  358. package/components/block-standard-content-v2/standard-content-v2-extra.js +1 -0
  359. package/components/block-standard-content-v2/standard-content-v2-extra.scss +21 -0
  360. package/components/block-standard-content-v2/standard-content-v2.js +51 -0
  361. package/components/block-standard-content-v2/standard-content-v2.php +17 -0
  362. package/components/block-standard-content-v2/standard-content-v2.scss +25 -0
  363. package/components/block-standard-content-v2/standard-content-v2.twig +20 -0
  364. package/components/block-sticky-link/group_63d78d7f41d23.json +134 -0
  365. package/components/block-sticky-link/sticky-link-extra.scss +1 -0
  366. package/components/block-sticky-link/sticky-link.js +8 -0
  367. package/components/block-sticky-link/sticky-link.php +14 -0
  368. package/components/block-sticky-link/sticky-link.scss +41 -0
  369. package/components/block-sticky-link/sticky-link.twig +25 -0
  370. package/components/block-sub-group-container/group_65de580781a2b.json +1524 -0
  371. package/components/block-sub-group-container/sub-group-container-extra.scss +2 -0
  372. package/components/block-sub-group-container/sub-group-container.js +9 -0
  373. package/components/block-sub-group-container/sub-group-container.php +14 -0
  374. package/components/block-sub-group-container/sub-group-container.scss +26 -0
  375. package/components/block-sub-group-container/sub-group-container.twig +42 -0
  376. package/components/block-sub-tabbed-content/group_6629506ec3a1e.json +1091 -0
  377. package/components/block-sub-tabbed-content/sub-tabbed-content-extra.scss +2 -0
  378. package/components/block-sub-tabbed-content/sub-tabbed-content.js +38 -0
  379. package/components/block-sub-tabbed-content/sub-tabbed-content.php +14 -0
  380. package/components/block-sub-tabbed-content/sub-tabbed-content.scss +74 -0
  381. package/components/block-sub-tabbed-content/sub-tabbed-content.twig +50 -0
  382. package/components/block-tabbed-content-v2/group_6471dffc728cf.json +1270 -0
  383. package/components/block-tabbed-content-v2/tabbed-content-v2-extra.scss +1 -0
  384. package/components/block-tabbed-content-v2/tabbed-content-v2.js +38 -0
  385. package/components/block-tabbed-content-v2/tabbed-content-v2.php +14 -0
  386. package/components/block-tabbed-content-v2/tabbed-content-v2.scss +73 -0
  387. package/components/block-tabbed-content-v2/tabbed-content-v2.twig +58 -0
  388. package/components/block-theme-switcher/group_674e319102e49.json +167 -0
  389. package/components/block-theme-switcher/theme-switcher-extra.scss +6 -0
  390. package/components/block-theme-switcher/theme-switcher.js +17 -0
  391. package/components/block-theme-switcher/theme-switcher.php +14 -0
  392. package/components/block-theme-switcher/theme-switcher.scss +7 -0
  393. package/components/block-theme-switcher/theme-switcher.twig +29 -0
  394. package/components/cache-cta-styles/cache-cta-styles.php +54 -0
  395. package/components/cache-custom-cache-config/custom-cache-config.php +8 -0
  396. package/components/cache-custom-cache-config/group_66f3e16f8c024.json +79 -0
  397. package/components/cache-global-settings/cache-global-settings.php +36 -0
  398. package/components/cache-market-settings/cache-market-settings.php +39 -0
  399. package/components/cache-themes/cache-themes.php +53 -0
  400. package/components/cache-typography/cache-typography.php +53 -0
  401. package/components/component-accent-image/accent-image.twig +75 -0
  402. package/components/component-accent-image/group_6265189d8a694.json +890 -0
  403. package/components/component-accent-image-v2/accent-image-v2.twig +114 -0
  404. package/components/component-accent-image-v2/group_6595613d07b2d.json +951 -0
  405. package/components/component-accent-text/accent-text-extra.scss +6 -0
  406. package/components/component-accent-text/accent-text.scss +61 -0
  407. package/components/component-accent-text/accent-text.twig +11 -0
  408. package/components/component-accent-text/group_63e10c602d136.json +220 -0
  409. package/components/component-accordion-v2/accordion-v2-extra.scss +6 -0
  410. package/components/component-accordion-v2/accordion-v2.js +113 -0
  411. package/components/component-accordion-v2/accordion-v2.scss +172 -0
  412. package/components/component-accordion-v2/accordion-v2.twig +38 -0
  413. package/components/component-accordion-v2/group_65086e92b21c1.json +516 -0
  414. package/components/component-accordion-v3/accordion-v3.js +113 -0
  415. package/components/component-accordion-v3/accordion-v3.scss +183 -0
  416. package/components/component-accordion-v3/accordion-v3.twig +39 -0
  417. package/components/component-accordion-v3/group_66ab7edfc6d63.json +535 -0
  418. package/components/component-acf-wysiwyg-options/acf-wysiwyg-options.php +221 -0
  419. package/components/component-animations/animations.scss +117 -0
  420. package/components/component-animations/animations.twig +18 -0
  421. package/components/component-animations/group_659e9c280bdda.json +458 -0
  422. package/components/component-animations-style/animations-style.twig +5 -0
  423. package/components/component-athena-body-close/athena-body-close.twig +1 -0
  424. package/components/component-athena-body-open/athena-body-open.twig +32 -0
  425. package/components/component-athena-head/athena-head.twig +4 -0
  426. package/components/component-better-reviews/better-reviews-extra.scss +5 -0
  427. package/components/component-better-reviews/better-reviews.scss +356 -0
  428. package/components/component-better-reviews/better-reviews.twig +6 -0
  429. package/components/component-better-reviews-display-settings/group_671f47cc17aa9.json +91 -0
  430. package/components/component-block-padding/block-padding.scss +62 -0
  431. package/components/component-block-padding/block-padding.twig +53 -0
  432. package/components/component-block-padding/group_638f4148bc10b.json +889 -0
  433. package/components/component-block-settings/block-settings.scss +42 -0
  434. package/components/component-block-settings/block-settings.twig +31 -0
  435. package/components/component-block-settings/group_65a45ada4e128.json +699 -0
  436. package/components/component-blockquote/blockquote.scss +64 -0
  437. package/components/component-blockquote/blockquote.twig +55 -0
  438. package/components/component-blockquote/group_659d2bbc948e1.json +280 -0
  439. package/components/component-box-shadow/box-shadow.scss +9 -0
  440. package/components/component-box-shadow/box-shadow.twig +7 -0
  441. package/components/component-box-shadow/group_666ed2bece4c3.json +210 -0
  442. package/components/component-buy-now-button/buy-now-button.js +15 -0
  443. package/components/component-buy-now-button/buy-now-button.twig +97 -0
  444. package/components/component-buy-now-button/group_658430fa58bf1.json +717 -0
  445. package/components/component-carousel-standard/group_6282c52bf38d7.json +2844 -0
  446. package/components/component-child-pattern-settings/group_670b7ac92563c.json +76 -0
  447. package/components/component-classic-nav-items-center/classic-nav-items-center.js +58 -0
  448. package/components/component-classic-nav-items-center/classic-nav-items-center.scss +811 -0
  449. package/components/component-classic-nav-items-center/classic-nav-items-center.twig +144 -0
  450. package/components/component-classic-nav-items-center/group_66a2b63ae5cad.json +277 -0
  451. package/components/component-code-block/code-block.scss +10 -0
  452. package/components/component-code-block/code-block.twig +7 -0
  453. package/components/component-code-block/group_657eeb3aeb09e.json +58 -0
  454. package/components/component-competition-selection/competition-selection.twig +5 -0
  455. package/components/component-content-container/content-container.js +92 -0
  456. package/components/component-content-container/content-container.scss +57 -0
  457. package/components/component-content-container/content-container.twig +34 -0
  458. package/components/component-content-container/group_65e3707a7a50f.json +89 -0
  459. package/components/component-content-container-settings/content-container-settings.scss +213 -0
  460. package/components/component-content-container-settings/content-container-settings.twig +156 -0
  461. package/components/component-content-container-settings/group_65b58da6d24b8.json +2495 -0
  462. package/components/component-content-image-v2/content-image-v2.scss +33 -0
  463. package/components/component-content-image-v2/content-image-v2.twig +85 -0
  464. package/components/component-content-image-v2/group_63d7ba80aeac7.json +647 -0
  465. package/components/component-content-tooltip/content-tooltip-extra.scss +6 -0
  466. package/components/component-content-tooltip/content-tooltip.js +44 -0
  467. package/components/component-content-tooltip/content-tooltip.scss +41 -0
  468. package/components/component-countdown/countdown-extra.scss +6 -0
  469. package/components/component-countdown/countdown.js +58 -0
  470. package/components/component-countdown/countdown.scss +15 -0
  471. package/components/component-countdown/countdown.twig +16 -0
  472. package/components/component-countdown/group_6520a0c1ae809.json +334 -0
  473. package/components/component-cover-link/cover-link.scss +11 -0
  474. package/components/component-cover-link/cover-link.twig +4 -0
  475. package/components/component-cover-link/group_65ca55f45368c.json +103 -0
  476. package/components/component-cta-selection/cta-selection.twig +313 -0
  477. package/components/component-cta-selection/group_64b24a4e10761.json +1262 -0
  478. package/components/component-eager-loading/eager-loading.twig +4 -0
  479. package/components/component-eager-loading/group_654bee047f2f0.json +55 -0
  480. package/components/component-element-positioning/element-positioning.scss +21 -0
  481. package/components/component-element-positioning/element-positioning.twig +34 -0
  482. package/components/component-element-positioning/group_65b0e17675b81.json +471 -0
  483. package/components/component-form-selection/form-selection-extra.scss +6 -0
  484. package/components/component-form-selection/form-selection.js +18 -0
  485. package/components/component-form-selection/form-selection.scss +41 -0
  486. package/components/component-form-selection/form-selection.twig +23 -0
  487. package/components/component-form-selection/group_63f4889ebf085.json +161 -0
  488. package/components/component-global-content-max-width/global-content-max-width.twig +11 -0
  489. package/components/component-global-content-max-width/group_63c83de4f0a99.json +55 -0
  490. package/components/component-global-image/group_65b7c7e412941.json +256 -0
  491. package/components/component-gradient-overlay/gradient-overlay.scss +46 -0
  492. package/components/component-gradient-overlay/gradient-overlay.twig +58 -0
  493. package/components/component-gradient-overlay/group_65995d4f1a4b5.json +467 -0
  494. package/components/component-grid-layout-container/grid-layout-container.scss +61 -0
  495. package/components/component-grid-layout-container/grid-layout-container.twig +38 -0
  496. package/components/component-grid-layout-container/group_6504a88c17463.json +886 -0
  497. package/components/component-grid-layout-element/grid-layout-element.scss +27 -0
  498. package/components/component-grid-layout-element/grid-layout-element.twig +39 -0
  499. package/components/component-grid-layout-element/group_6504a81a0623c.json +705 -0
  500. package/components/component-inline-raw-svg/group_6714e19ec95cc.json +55 -0
  501. package/components/component-lottie-animations/group_65cb36d6cb82e.json +250 -0
  502. package/components/component-lottie-animations/lottie-animations-extra.scss +2 -0
  503. package/components/component-lottie-animations/lottie-animations.js +25 -0
  504. package/components/component-lottie-animations/lottie-animations.scss +13 -0
  505. package/components/component-lottie-animations/lottie-animations.twig +8 -0
  506. package/components/component-market-selector/group_66a7b8ec15615.json +53 -0
  507. package/components/component-market-selector/market-selector-extra.scss +2 -0
  508. package/components/component-market-selector/market-selector.js +71 -0
  509. package/components/component-market-selector/market-selector.scss +247 -0
  510. package/components/component-market-selector/market-selector.twig +16 -0
  511. package/components/component-nav-menu/group_64b814182a570.json +432 -0
  512. package/components/component-nav-menu/nav-menu.scss +44 -0
  513. package/components/component-nav-menu/nav-menu.twig +76 -0
  514. package/components/component-nav-menu-slide-in-panel/group_65db1f6c9cba8.json +172 -0
  515. package/components/component-nav-menu-slide-in-panel/nav-menu-slide-in-panel-extra.scss +7 -0
  516. package/components/component-nav-menu-slide-in-panel/nav-menu-slide-in-panel.js +176 -0
  517. package/components/component-nav-menu-slide-in-panel/nav-menu-slide-in-panel.scss +638 -0
  518. package/components/component-nav-menu-slide-in-panel/nav-menu-slide-in-panel.twig +95 -0
  519. package/components/component-page-properties/page-properties.twig +27 -0
  520. package/components/component-parallax-animations/parallax-animations.js +40 -0
  521. package/components/component-post-author/group_67a1430a08630.json +482 -0
  522. package/components/component-post-author/post-author-extra.scss +6 -0
  523. package/components/component-post-author/post-author.scss +46 -0
  524. package/components/component-post-author/post-author.twig +80 -0
  525. package/components/component-post-image/group_65b375fc0d10d.json +460 -0
  526. package/components/component-post-tags/group_67090920e08e5.json +100 -0
  527. package/components/component-responsive-image/group_6258aff982b23.json +2415 -0
  528. package/components/component-responsive-image/responsive-image.scss +61 -0
  529. package/components/component-responsive-image/responsive-image.twig +138 -0
  530. package/components/component-responsive-show-hide/group_645a741c8da2e.json +108 -0
  531. package/components/component-responsive-show-hide/responsive-show-hide.twig +9 -0
  532. package/components/component-responsive-video/responsive-video.scss +8 -0
  533. package/components/component-scrolling-banner/group_626472bf26f5c.json +501 -0
  534. package/components/component-scrolling-banner/scrolling-banner-extra.scss +5 -0
  535. package/components/component-scrolling-banner/scrolling-banner.js +118 -0
  536. package/components/component-scrolling-banner/scrolling-banner.scss +98 -0
  537. package/components/component-scrolling-banner/scrolling-banner.twig +31 -0
  538. package/components/component-scrolling-posts/group_65de1ebc8e0bc.json +404 -0
  539. package/components/component-scrolling-posts/scrolling-posts.js +16 -0
  540. package/components/component-scrolling-posts/scrolling-posts.scss +52 -0
  541. package/components/component-scrolling-posts/scrolling-posts.twig +76 -0
  542. package/components/component-shopify/shop-shopify.js +390 -0
  543. package/components/component-shopify/shop.js +104 -0
  544. package/components/component-shopify/shopify.scss +250 -0
  545. package/components/component-single-image/single-image.twig +7 -0
  546. package/components/component-social-media-share/group_6807bb08ab942.json +596 -0
  547. package/components/component-social-media-share/social-media-share-extra.scss +6 -0
  548. package/components/component-social-media-share/social-media-share.js +69 -0
  549. package/components/component-social-media-share/social-media-share.scss +128 -0
  550. package/components/component-social-media-share/social-media-share.twig +213 -0
  551. package/components/component-social-networks/group_668c110442111.json +467 -0
  552. package/components/component-social-networks/social-networks.scss +65 -0
  553. package/components/component-social-networks/social-networks.twig +38 -0
  554. package/components/component-spotify-embed/group_67d04c4c4cf78.json +123 -0
  555. package/components/component-spotify-embed/spotify-embed-extra.scss +5 -0
  556. package/components/component-spotify-embed/spotify-embed.js +7 -0
  557. package/components/component-spotify-embed/spotify-embed.scss +17 -0
  558. package/components/component-spotify-embed/spotify-embed.twig +4 -0
  559. package/components/component-standard-content-box/group_62a5ca6aa81d7.json +973 -0
  560. package/components/component-standard-content-box/standard-content-box.twig +64 -0
  561. package/components/component-standard-content-box-v2/group_6580636e7794b.json +136 -0
  562. package/components/component-standard-content-box-v2/standard-content-box-v2.twig +89 -0
  563. package/components/component-text-editor-settings/group_657305390de77.json +1236 -0
  564. package/components/component-truncated-text/group_677bd1bc69968.json +379 -0
  565. package/components/component-truncated-text/truncated-text-extra.scss +6 -0
  566. package/components/component-truncated-text/truncated-text.js +76 -0
  567. package/components/component-truncated-text/truncated-text.scss +42 -0
  568. package/components/component-truncated-text/truncated-text.twig +31 -0
  569. package/components/component-typography-style-select/group_6511f390d8357.json +83 -0
  570. package/components/component-video-standard/group_6258a8ba5e629.json +887 -0
  571. package/components/controller-password-protected/password-protected.css +46 -0
  572. package/components/controller-password-protected/password-protected.php +14 -0
  573. package/components/controller-password-protected/password-protected.twig +9 -0
  574. package/components/entrypoint-data-attribute/entry-point-data-attribute.twig +6 -0
  575. package/components/entrypoint-entry-point-classes/entry-point-classes.twig +13 -0
  576. package/components/entrypoint-entry-point-html/entry-point-html.twig +36 -0
  577. package/components/entrypoint-entry-point-style/entry-point-style.twig +14 -0
  578. package/components/entrypoint-preview-info/entry-point-preview-info.twig +7 -0
  579. package/components/fields-add-manage-patterns/add-manage-patterns-menu-link.php +13 -0
  580. package/components/fields-add-svg-support/add-svg-support.php +50 -0
  581. package/components/fields-allowed-block-types/allowed-block-types.php +34 -0
  582. package/components/fields-animations-style/animations-style.twig +2 -0
  583. package/components/fields-archive-pages/group_635e777ce46d4.json +135 -0
  584. package/components/fields-background-image-body/background-image-body.twig +16 -0
  585. package/components/fields-background-image-footer/background-image-footer.twig +8 -0
  586. package/components/fields-background-image-main/background-image-main.twig +8 -0
  587. package/components/fields-background-video-body/background-video-body.twig +14 -0
  588. package/components/fields-bazaarvoice-review/bazaarvoice-review.scss +10 -0
  589. package/components/fields-block-categories/block-categories.php +18 -0
  590. package/components/fields-block-editor-assets/block-editor-assets.php +17 -0
  591. package/components/fields-blockquote/blockquote.scss +64 -0
  592. package/components/fields-blockquote/blockquote.twig +55 -0
  593. package/components/fields-blocks-post-type-public/blocks-post-type-public.php +18 -0
  594. package/components/fields-box-shadow/box-shadow.scss +9 -0
  595. package/components/fields-check-file-type/check-file-type.php +13 -0
  596. package/components/fields-cloudflare-configuration/cloudflare-configuration.php +72 -0
  597. package/components/fields-cocktail-info/group_64c29b7f188ca.json +1461 -0
  598. package/components/fields-content-image-v2/content-image-v2.scss +30 -0
  599. package/components/fields-content-image-v2/content-image-v2.twig +73 -0
  600. package/components/fields-core-acf-wysiwyg-toolbars/core-acf-wysiwyg-toolbars.php +38 -0
  601. package/components/fields-core-athena-block-render-function/core-athena-block-render-function.php +50 -0
  602. package/components/fields-core-colour-data-config/core-colour-data-config.js +2 -0
  603. package/components/fields-core-colour-data-config/core-colour-data-config.php +60 -0
  604. package/components/fields-core-critical/core-critical.scss +6 -0
  605. package/components/fields-core-critical-css/core-critical-css.php +6 -0
  606. package/components/fields-core-css-modules/core-css-modules.scss +12 -0
  607. package/components/fields-core-css-sizing-vars/core-css-sizing-vars.scss +156 -0
  608. package/components/fields-core-cta/core-cta.php +240 -0
  609. package/components/fields-core-cta/core-cta.scss +280 -0
  610. package/components/fields-core-design-settings/core-design-settings.twig +6 -0
  611. package/components/fields-core-design-system/core-design-system.php +44 -0
  612. package/components/fields-core-editor-cta-style-select/core-editor-cta-style-select.js +16 -0
  613. package/components/fields-core-editor-cta-style-select/core-editor-cta-style-select.php +18 -0
  614. package/components/fields-core-editor-theme-select/core-editor-theme-select.js +16 -0
  615. package/components/fields-core-editor-theme-select/core-editor-theme-select.php +19 -0
  616. package/components/fields-core-font-modifiers/core-font-modifiers.php +46 -0
  617. package/components/fields-core-font-modifiers/group_65abf0fc06efd.json +489 -0
  618. package/components/fields-core-functions/core-functions.scss +111 -0
  619. package/components/fields-core-generic/core-generic.scss +132 -0
  620. package/components/fields-core-gradient-designer/core-gradient-designer.scss +92 -0
  621. package/components/fields-core-mixins/core-mixins.scss +1076 -0
  622. package/components/fields-core-root-variables/core-root-variables.scss +48 -0
  623. package/components/fields-core-themes/core-themes.php +65 -0
  624. package/components/fields-core-typography/core-typography.php +194 -0
  625. package/components/fields-core-typography/core-typography.scss +384 -0
  626. package/components/fields-core-wordpress-block-editor-preview/core-wordpress-block-editor-preview.js +121 -0
  627. package/components/fields-core-wordpress-block-editor-preview/core-wordpress-block-editor-preview.scss +101 -0
  628. package/components/fields-cover-link/cover-link.scss +11 -0
  629. package/components/fields-cover-link/cover-link.twig +4 -0
  630. package/components/fields-cta-icon-map/cta-icon-map.php +11 -0
  631. package/components/fields-cta-icons/group_677ed96c3c64f.json +677 -0
  632. package/components/fields-cta-styles/group_65abe1a526214.json +3238 -0
  633. package/components/fields-cta-styles-ui-page/ui_options_page_66000817bcbaf.json +22 -0
  634. package/components/fields-data-enables/data-enables.twig +21 -0
  635. package/components/fields-debrain-label-shop/group_63dd19dc3ba18.json +271 -0
  636. package/components/fields-default-theme/group_663c9818d16ea.json +79 -0
  637. package/components/fields-design-system/group_63e7fd39c8e35.json +966 -0
  638. package/components/fields-dynamic-critical-css/dynamic-critical-css.php +113 -0
  639. package/components/fields-dynamic-critical-css/group_65abcd463e8d0.json +126 -0
  640. package/components/fields-dynamic-image-preload/group_665f1f240337a.json +56 -0
  641. package/components/fields-e-shop-settings/e-shop-settings.twig +69 -0
  642. package/components/fields-e-shop-settings/group_650b24b4e623d.json +702 -0
  643. package/components/fields-get-asset-uri/get-asset-uri.php +36 -0
  644. package/components/fields-get-pattern/get-pattern.php +639 -0
  645. package/components/fields-get-raw-svg/get_raw_svg.php +24 -0
  646. package/components/fields-get-svg-icon-content/get-svg-icon-content.php +10 -0
  647. package/components/fields-global-images/group_6519888a76006.json +121 -0
  648. package/components/fields-global-preload/global-preload.twig +18 -0
  649. package/components/fields-global-preload/group_65e0bd35e781b.json +289 -0
  650. package/components/fields-global-settings/ui_options_page_65d2558ee2392.json +22 -0
  651. package/components/fields-grid-gap-mults/grid-gap-mults.twig +10 -0
  652. package/components/fields-header-and-footer-patterns/group_67224e439992d.json +107 -0
  653. package/components/fields-image-management-service/group_677813165b633.json +149 -0
  654. package/components/fields-image-sizes/image-sizes.php +24 -0
  655. package/components/fields-imagekit-configuration/imagekit-configuration.php +250 -0
  656. package/components/fields-inline-css-file/inline-css-file.php +24 -0
  657. package/components/fields-library-images/blue-brick.svg +19 -0
  658. package/components/fields-library-images/brick.svg +19 -0
  659. package/components/fields-library-images/chevron-library.svg +3 -0
  660. package/components/fields-library-images/green-brick.svg +19 -0
  661. package/components/fields-market-settings-ui-page/ui_options_page_65d4926a854a9.json +22 -0
  662. package/components/fields-noscript/noscript.twig +11 -0
  663. package/components/fields-notes/group_66573c9838918.json +55 -0
  664. package/components/fields-pantheon-page-cache-config/pantheon-page-cache-config.php +61 -0
  665. package/components/fields-people/group_6525b74551434.json +179 -0
  666. package/components/fields-post-info/group_64c29bf97fba2.json +963 -0
  667. package/components/fields-preload/preload.twig +2 -0
  668. package/components/fields-product-info/group_64c29a6750b1c.json +501 -0
  669. package/components/fields-registers-menus/registers-menus.php +18 -0
  670. package/components/fields-reservebar-popup/reservebar-popup.js +44 -0
  671. package/components/fields-reservebar-popup/reservebar-popup.scss +33 -0
  672. package/components/fields-site-copyright-notice/group_66317dcfcb01a.json +78 -0
  673. package/components/fields-site-logos/group_67b50a5b01f1d.json +120 -0
  674. package/components/fields-site-menus/site-menus.php +19 -0
  675. package/components/fields-text-style/group_6509a986674f1.json +328 -0
  676. package/components/fields-text-style/text-style.twig +14 -0
  677. package/components/fields-theme-attribute/core-theme-attribute.twig +15 -0
  678. package/components/fields-theme-font-select/group_64e627319dd51.json +68 -0
  679. package/components/fields-themes/group_65ac3c7583bdf.json +1086 -0
  680. package/components/fields-themes-ui-page/ui_options_page_660007a245fa0.json +22 -0
  681. package/components/fields-twig-filters-functions/twig-filters-functions.php +321 -0
  682. package/components/fields-typography-settings/group_657438bf04b09.json +5668 -0
  683. package/components/fields-typography-ui-page/ui_options_page_65ff1174bed38.json +22 -0
  684. package/components/fields-upload-file-size-limit/upload-file-size-limit.php +36 -0
  685. package/components/fields-upload-filesize-limit/group_659d259760a1d.json +56 -0
  686. package/components/fields-video-management-services/group_67b4cac05cb30.json +144 -0
  687. package/components/fields-wysiwyg-add-content-tooltip/wysiwyg-add-content-tooltip.php +45 -0
  688. package/components/security-password-protected/password-protected.php +25 -0
  689. package/createJsAssets.js +31 -0
  690. package/createNewBlock.js +163 -0
  691. package/createNewChildBlock.js +76 -0
  692. package/duplicateBlock.js +215 -0
  693. package/esbuild.mjs +18 -0
  694. package/exportAllBlocks.js +121 -0
  695. package/exportBlock.js +109 -0
  696. package/exportChildBlock.js +102 -0
  697. package/exportCustomCachesToLibrary.js +73 -0
  698. package/exportEntrypointToLibrary.js +62 -0
  699. package/exportImagesToLibrary.js +68 -0
  700. package/exportSEOExtrasToLibrary.js +73 -0
  701. package/exportToLibrary.js +437 -0
  702. package/fields.json +4 -0
  703. package/importBlock.js +90 -0
  704. package/importChildBlock.js +76 -0
  705. package/index.js +0 -0
  706. package/install-component.js +206 -0
  707. package/list-components.js +9 -0
  708. package/new-block-templates/template-acf-pattern.js +25 -0
  709. package/new-block-templates/template-acf.js +19 -0
  710. package/new-block-templates/template-cypress.js +9 -0
  711. package/new-block-templates/template-default.js +31 -0
  712. package/new-block-templates/template-swiper.js +127 -0
  713. package/new-block-templates/template-vue.js +59 -0
  714. package/package.json +32 -0
  715. package/public/.gitkeep +0 -0
  716. package/public/block-back-to-top-button/back-to-top-button.js +15 -0
  717. package/public/block-divider/divider.js +10 -0
  718. package/update-all-components.js +134 -0
  719. package/update-component.js +543 -0
@@ -0,0 +1,1642 @@
1
+ import {getGsap, getSwiperAssetsV2} from '@pernod-ricard-global-cms/jsutils';
2
+ import('swiper/css/bundle');
3
+
4
+ export default function animatedsectionsJs(options = {}) {
5
+ try {
6
+ const {block} = options;
7
+ Promise.all([getGsap(), getSwiperAssetsV2()]).then((results) => {
8
+ // Modules and Libraries
9
+ const gsap = results[0][0];
10
+ const {
11
+ Swiper,
12
+ Navigation,
13
+ Pagination,
14
+ Lazy,
15
+ Autoplay,
16
+ EffectFade,
17
+ EffectCreative
18
+ } = results[1][0];
19
+
20
+ //Flags
21
+ const MOBILE_BREAKPOINT = 768; //px
22
+
23
+ // Dom Declarations
24
+ let foregroundElements;
25
+ let backgroundElements;
26
+ let timelineElements;
27
+
28
+ if (window.innerWidth <= MOBILE_BREAKPOINT) {
29
+ foregroundElements = Array.from(
30
+ block.querySelectorAll(
31
+ '.animated-sections__foreground-element--mobile'
32
+ )
33
+ );
34
+ backgroundElements = Array.from(
35
+ block.querySelectorAll(
36
+ '.animated-sections__background-element--mobile'
37
+ )
38
+ );
39
+ timelineElements = block.querySelectorAll(
40
+ '.animated-sections__timeline--tablet-mobile'
41
+ );
42
+ } else {
43
+ foregroundElements = Array.from(
44
+ block.querySelectorAll(
45
+ '.animated-sections__foreground-element--desktop'
46
+ )
47
+ );
48
+ backgroundElements = Array.from(
49
+ block.querySelectorAll(
50
+ '.animated-sections__background-element--desktop'
51
+ )
52
+ );
53
+ timelineElements = block.querySelectorAll(
54
+ '.animated-sections__timeline--desktop'
55
+ );
56
+ }
57
+
58
+ const allElements = [...backgroundElements, ...foregroundElements];
59
+
60
+ // DOM Constants
61
+ const siteHeader = document.getElementsByTagName('header')[0];
62
+ const elementCanvas = block.querySelector(
63
+ '.animated-sections__canvas-inner'
64
+ );
65
+ const contentElements = block.querySelectorAll(
66
+ '.animated-sections__content-element'
67
+ );
68
+ const contentButtons = document.querySelectorAll(
69
+ '[data-content-button]'
70
+ );
71
+ const backButton = block.querySelector(
72
+ '.animated-sections__ui-element-back-button'
73
+ );
74
+ const nextButton = block.querySelector(
75
+ '.animated-sections__ui-element-down-arrow'
76
+ );
77
+ const swiperWrapper = document.querySelector(
78
+ '.animated-sections__swiper-content-wrapper'
79
+ );
80
+ const swiperOverlay = document.querySelector(
81
+ '.animated-sections__swiper-content-overlay'
82
+ );
83
+ const timelineNavWrapper = document.querySelector(
84
+ '.animated-sections__ui-element-timeline-nav-wrapper'
85
+ );
86
+ const dots = document.querySelectorAll(
87
+ '.animated-sections__ui-element-timeline-dot'
88
+ );
89
+ const menuItems = document.querySelectorAll(
90
+ '.animated-sections__ui-element-timeline-name'
91
+ );
92
+ const scrollBar = block.querySelector(
93
+ '.animated-sections__progress-bar'
94
+ );
95
+ // const uiElementsContainer = block.querySelector(
96
+ // '.animated-sections__ui-elements'
97
+ // );
98
+
99
+ // Constants
100
+ const figmaDesktopHeight = parseFloat(block.dataset.desktopHeight);
101
+ const figmaDesktopWidth = parseFloat(block.dataset.desktopWidth);
102
+ const figmaMobileHeight = parseFloat(block.dataset.mobileHeight);
103
+ const figmaMobileWidth = parseFloat(block.dataset.mobileWidth);
104
+
105
+ const figmaTransformOrigin = block.dataset.transformOrigin;
106
+
107
+ const swiperEnabled = block.dataset.swiperEnabled;
108
+
109
+ // Variable Declarations
110
+ let timelines = [];
111
+ let allNavTimelines = [];
112
+ let lastTime = null;
113
+ let scrollAmount = 0;
114
+ let lastScrollTop = 0;
115
+ let forwardPlaybackHistory = [];
116
+
117
+ let touchStartY = 0;
118
+ let touchEndY = 0;
119
+ let scrollVelocity = 0;
120
+ let isDecelerating = false;
121
+ let lastTouchY = 0;
122
+ let isTouching = false;
123
+
124
+ const state = {
125
+ currentTimelineIndex: 0,
126
+ canSwipe: true,
127
+ timelinesVisited: false,
128
+ lastSwipeFalseTime: 0
129
+ };
130
+
131
+ const SwiperManager = {
132
+ swiper: null,
133
+ init: function () {
134
+ this.swiper = new Swiper('.swiper-container', {
135
+ modules: [
136
+ Navigation,
137
+ Pagination,
138
+ Lazy,
139
+ Autoplay,
140
+ EffectFade,
141
+ EffectCreative
142
+ ],
143
+ pagination: {
144
+ el: '.animated-sections .swiper-pagination',
145
+ clickable: true
146
+ },
147
+ allowTouchMove: false,
148
+ effect: 'creative',
149
+ speed: 1000,
150
+ creativeEffect: {
151
+ prev: {
152
+ opacity: 0
153
+ },
154
+ next: {
155
+ opacity: 0
156
+ }
157
+ },
158
+ on: {
159
+ init: function () {
160
+ const swiperSlides = this.slides;
161
+ swiperSlides.forEach((slide) => {
162
+ const overlayColor = slide.dataset.color;
163
+ swiperOverlay.className = '';
164
+ swiperOverlay.classList.add(
165
+ 'animated-sections__swiper-content-overlay'
166
+ );
167
+ swiperOverlay.classList.add(
168
+ 'animated-sections__swiper-content-overlay--' +
169
+ overlayColor
170
+ );
171
+ });
172
+ }
173
+ }
174
+ });
175
+ },
176
+ initSwiperPaginationListener: function () {
177
+ this.swiper.pagination.el.addEventListener('click', (e) => {
178
+ if (!getState('canSwipe')) {
179
+ return;
180
+ }
181
+ if (
182
+ e.target.classList.contains(
183
+ 'swiper-pagination-bullet'
184
+ )
185
+ ) {
186
+ const index = [
187
+ ...this.swiper.pagination.el.childNodes
188
+ ].indexOf(e.target);
189
+ const targetStepIndex =
190
+ parseInt(
191
+ this.swiper.slides[index].dataset.slideId
192
+ ) - 1;
193
+ const currentStepIndex = getState(
194
+ 'currentTimelineIndex'
195
+ );
196
+ const stepDifference =
197
+ targetStepIndex - currentStepIndex;
198
+
199
+ if (
200
+ Math.abs(stepDifference) > 1 ||
201
+ Math.abs(stepDifference) < -1
202
+ ) {
203
+ TimelineManager.fadeToBlack(() => {
204
+ TimelineManager.navigateToTimeline(
205
+ targetStepIndex
206
+ );
207
+ });
208
+ } else if (Math.abs(stepDifference) == 0) {
209
+ return;
210
+ } else {
211
+ TimelineManager.changeTimeline(stepDifference);
212
+ }
213
+ }
214
+ });
215
+ }
216
+ };
217
+ const TimelineManager = {
218
+ createTimelinesAndNavigation: function () {
219
+ timelineElements.forEach((step, index) => {
220
+ const animation = step.dataset.animation;
221
+ const animationObj = JSON.parse(animation);
222
+ const tweens = this.createTweens(animationObj);
223
+ const timeline = new TimelineLite({paused: true});
224
+
225
+ timeline.add(tweens);
226
+ timelines[index] = timeline;
227
+ });
228
+ },
229
+ createTweens: function (animationObj) {
230
+ const {
231
+ widthRatio,
232
+ heightRatio,
233
+ scaleFactorWidth,
234
+ scaleFactorHeight
235
+ } = this.getFigmaDimensions();
236
+
237
+ return allElements
238
+ .map((elm) => {
239
+ const obj = animationObj.find(
240
+ (o) => o.name === elm.dataset.assetName
241
+ );
242
+ if (obj) {
243
+ if (figmaTransformOrigin == '__top-left') {
244
+ return TweenLite.to(elm, {
245
+ x: obj.x,
246
+ y: obj.y,
247
+ scaleX: obj.width / elm.width,
248
+ scaleY: obj.height / elm.height,
249
+ opacity: obj.opacity,
250
+ duration: obj.duration,
251
+ backfaceVisibility: {
252
+ visible: false
253
+ }
254
+ });
255
+ } else if (figmaTransformOrigin == '__center') {
256
+ return TweenLite.to(elm, {
257
+ x:
258
+ obj.x *
259
+ widthRatio *
260
+ scaleFactorWidth,
261
+ y:
262
+ obj.y *
263
+ heightRatio *
264
+ scaleFactorHeight,
265
+ scale: Math.min(
266
+ obj.width,
267
+ obj.height,
268
+ scaleFactorWidth,
269
+ scaleFactorHeight
270
+ ),
271
+ opacity: obj.opacity,
272
+ duration: obj.duration,
273
+ backfaceVisibility: {
274
+ visible: false
275
+ }
276
+ });
277
+ }
278
+
279
+ return TweenLite.to(elm, {
280
+ x: newX,
281
+ y: newY,
282
+ scaleX: obj.width / elm.width,
283
+ scaleY: obj.height / elm.height,
284
+ opacity: obj.opacity,
285
+ duration: obj.duration,
286
+ // display: displayValue,
287
+ backfaceVisibility: {
288
+ visible: false
289
+ }
290
+ });
291
+ }
292
+
293
+ return null;
294
+ })
295
+ .filter((tween) => tween !== null);
296
+ },
297
+ animationFrame: function (now) {
298
+ if (!lastTime) {
299
+ lastTime = now;
300
+ }
301
+ const deltaTime = now - lastTime;
302
+ if (deltaTime >= 16) {
303
+ timelines[getState('currentTimelineIndex')].time(
304
+ timelines[getState('currentTimelineIndex')].time() +
305
+ deltaTime / 1000
306
+ );
307
+ lastTime = now;
308
+ }
309
+ requestAnimationFrame(animationFrame);
310
+ },
311
+ changeTimeline: function (timelineIndex) {
312
+ if (!getState('canSwipe')) {
313
+ return;
314
+ }
315
+ setState('canSwipe', false);
316
+
317
+ const currentTimelineIndex = getState(
318
+ 'currentTimelineIndex'
319
+ );
320
+ const nextTimelineIndex =
321
+ currentTimelineIndex + timelineIndex;
322
+ const isMovingBackwards = timelineIndex < 0;
323
+ const currentTimeline = timelines[currentTimelineIndex];
324
+
325
+ const tweensElements = currentTimeline.getChildren();
326
+
327
+ let tweenElementType;
328
+
329
+ tweensElements.forEach((tween) => {
330
+ tween._targets.forEach((target) => {
331
+ if (target.tagName == 'IMG') {
332
+ tweenElementType = 'IMAGE';
333
+ } else if (target.tagName == 'VIDEO') {
334
+ tweenElementType = 'VIDEO';
335
+ }
336
+ });
337
+ });
338
+
339
+ const nextTimeline = timelines[nextTimelineIndex];
340
+ if (
341
+ nextTimelineIndex >= 0 &&
342
+ nextTimelineIndex < timelineElements.length
343
+ ) {
344
+ if (isMovingBackwards) {
345
+ if (window.innerWidth <= MOBILE_BREAKPOINT) {
346
+ currentTimeline.pause();
347
+ setTimeout(() => {
348
+ currentTimeline.reverse();
349
+ }, 1000);
350
+
351
+ setState(
352
+ 'currentTimelineIndex',
353
+ parseInt(nextTimelineIndex)
354
+ );
355
+
356
+ setTimeout(() => {
357
+ this.updateToNextTimeline();
358
+ }, 100);
359
+ VideoUtils.playReverseVideo(
360
+ parseInt(nextTimelineIndex),
361
+ () => {
362
+ allElements.forEach(
363
+ (elm) =>
364
+ (elm.style.display = 'block')
365
+ );
366
+ nextTimeline.play();
367
+ }
368
+ );
369
+ } else {
370
+ if (tweenElementType == 'VIDEO') {
371
+ currentTimeline.pause();
372
+ setTimeout(() => {
373
+ currentTimeline.reverse();
374
+ }, 1000);
375
+
376
+ setState(
377
+ 'currentTimelineIndex',
378
+ parseInt(nextTimelineIndex)
379
+ );
380
+ setTimeout(() => {
381
+ this.updateToNextTimeline();
382
+ }, 100);
383
+ VideoUtils.playReverseVideo(
384
+ parseInt(nextTimelineIndex),
385
+ () => {
386
+ allElements.forEach(
387
+ (elm) =>
388
+ (elm.style.display =
389
+ 'block')
390
+ );
391
+ nextTimeline.play();
392
+ }
393
+ );
394
+ } else if (tweenElementType == 'IMAGE') {
395
+ currentTimeline.pause();
396
+ currentTimeline.reverse();
397
+ setState(
398
+ 'currentTimelineIndex',
399
+ parseInt(nextTimelineIndex)
400
+ );
401
+ this.updateToNextTimeline();
402
+ nextTimeline.play();
403
+ }
404
+ }
405
+ } else {
406
+ if (tweenElementType == 'VIDEO') {
407
+ setState(
408
+ 'currentTimelineIndex',
409
+ parseInt(nextTimelineIndex)
410
+ );
411
+
412
+ VideoUtils.handleVideoForward(false, () => {
413
+ setTimeout(() => {
414
+ this.updateToNextTimeline();
415
+ }, 100);
416
+
417
+ currentTimeline.pause();
418
+ nextTimeline.play(0);
419
+ });
420
+ } else if (tweenElementType == 'IMAGE') {
421
+ setState(
422
+ 'currentTimelineIndex',
423
+ parseInt(nextTimelineIndex)
424
+ );
425
+ this.updateToNextTimeline();
426
+ currentTimeline.pause();
427
+ nextTimeline.play(0);
428
+ }
429
+ }
430
+ }
431
+
432
+ //Temporary Scroll Out Approach
433
+ if (nextTimelineIndex === timelines.length - 1) {
434
+ if (block.dataset.enableScrollOut == 1) {
435
+ setTimeout(() => {
436
+ setState('timelinesVisited', true);
437
+ TouchScrollEventManager.removeScrollLockScreen();
438
+ smoothScrollToTarget(block.nextElementSibling);
439
+ }, block.dataset.scrollOutDelay * 1000);
440
+ }
441
+ }
442
+
443
+ setTimeout(() => {
444
+ if (nextTimelineIndex === timelineElements.length - 1) {
445
+ return;
446
+ }
447
+ setState('canSwipe', true);
448
+ }, 3000);
449
+ },
450
+ fadeToBlack: function (callback) {
451
+ let overlay = block.querySelector(
452
+ '.animated-sections__transition-overlay'
453
+ );
454
+ overlay.classList.add('active');
455
+ setTimeout(() => {
456
+ callback();
457
+ setTimeout(() => {
458
+ overlay.classList.remove('active');
459
+ }, 1000);
460
+ }, 500);
461
+ },
462
+ rebuildTweens: function () {
463
+ this.createTimelinesAndNavigation();
464
+ this.navigateToTimeline(getState('currentTimelineIndex'));
465
+ },
466
+ getFigmaDimensions: function () {
467
+ let figmaWidth,
468
+ figmaHeight,
469
+ widthRatio,
470
+ heightRatio,
471
+ scaleFactorWidth,
472
+ scaleFactorHeight;
473
+
474
+ let actualCanvasWidth = elementCanvas.offsetWidth;
475
+ let actualCanvasHeight = elementCanvas.offsetHeight;
476
+
477
+ if (window.innerWidth <= MOBILE_BREAKPOINT) {
478
+ figmaWidth = figmaMobileWidth;
479
+ figmaHeight = figmaMobileHeight;
480
+ } else {
481
+ figmaWidth = figmaDesktopWidth;
482
+ figmaHeight = figmaDesktopHeight;
483
+ }
484
+
485
+ widthRatio = actualCanvasWidth / figmaWidth;
486
+ heightRatio = actualCanvasHeight / figmaHeight;
487
+
488
+ scaleFactorWidth = actualCanvasWidth / figmaWidth;
489
+ scaleFactorHeight = actualCanvasHeight / figmaHeight;
490
+
491
+ return {
492
+ figmaWidth,
493
+ figmaHeight,
494
+ widthRatio,
495
+ heightRatio,
496
+ scaleFactorWidth,
497
+ scaleFactorHeight
498
+ };
499
+ },
500
+ navigateToTimeline: function (index) {
501
+ if (index >= 0 && index < timelineElements.length) {
502
+ timelines.forEach((timeline) => timeline.pause());
503
+ const increment =
504
+ index - getState('currentTimelineIndex');
505
+ this.changeTimeline(increment);
506
+ } else {
507
+ this.changeTimeline(index);
508
+ }
509
+ },
510
+ updateToNextTimeline: function () {
511
+ ContentManager.contentFrame();
512
+
513
+ if (swiperEnabled == 'true') {
514
+ this.handleSwiper(getState('currentTimelineIndex'));
515
+ ContentManager.swiperFrame();
516
+ }
517
+
518
+ createBackButton(getState('currentTimelineIndex'));
519
+ // updateUrl('currentTimelineIndex');
520
+ this.timelineNavUpdateNavigation(
521
+ getState('currentTimelineIndex')
522
+ );
523
+ },
524
+ timelineNavUpdateNavigation: function (timelineIndex) {
525
+ dots.forEach((dot, index) => {
526
+ dot.classList.toggle('active', index === timelineIndex);
527
+
528
+ if (
529
+ dot.classList.contains(
530
+ 'hide_from_timeline_navigation'
531
+ )
532
+ ) {
533
+ dot.remove();
534
+ } else {
535
+ dot.style.display = 'block';
536
+ }
537
+ });
538
+
539
+ menuItems.forEach((name, index) => {
540
+ if (!name) {
541
+ console.error(
542
+ "Error: Found undefined 'menuItem' at index",
543
+ index
544
+ );
545
+ } else {
546
+ name.classList.toggle(
547
+ 'selected',
548
+ index === timelineIndex
549
+ );
550
+ name.style.display =
551
+ index === timelineIndex ||
552
+ index === timelineIndex - 1 ||
553
+ (index === timelineIndex + 1 &&
554
+ timelineIndex !== menuItems.length - 1)
555
+ ? 'flex'
556
+ : 'none';
557
+ }
558
+ });
559
+
560
+ if (timelineNavWrapper && dots[timelineIndex]) {
561
+ timelineNavWrapper.style.opacity = dots[
562
+ timelineIndex
563
+ ].classList.contains('hide_from_timeline_navigation')
564
+ ? 0
565
+ : 'var(--timeline-nav-opacity)';
566
+ }
567
+ },
568
+ handleSwiper: function () {
569
+ const swiperSlides = SwiperManager.swiper.slides;
570
+ swiperSlides.forEach((slide) => {
571
+ if (
572
+ parseInt(slide.dataset.slideId) ===
573
+ getState('currentTimelineIndex')
574
+ ) {
575
+ SwiperManager.swiper.slideTo(slide.currentIndex);
576
+ const overlayColor = slide.dataset.color;
577
+ swiperOverlay.className = '';
578
+ swiperOverlay.classList.add(
579
+ 'animated-sections__swiper-content-overlay'
580
+ );
581
+ swiperOverlay.classList.add(
582
+ 'animated-sections__swiper-content-overlay--' +
583
+ overlayColor
584
+ );
585
+ }
586
+ });
587
+ }
588
+ };
589
+ const VideoUtils = {
590
+ calculateSeconds: function (timeString, defaultSeconds = 0) {
591
+ if (timeString) {
592
+ let timeParts = timeString.split(':');
593
+ return (
594
+ parseInt(timeParts[0]) * 60 + parseInt(timeParts[1])
595
+ );
596
+ }
597
+ return defaultSeconds;
598
+ },
599
+ pauseAllVideos: function () {
600
+ allElements.forEach((elm) => {
601
+ if (elm.tagName === 'VIDEO') {
602
+ elm.pause();
603
+ }
604
+ });
605
+ },
606
+ saveVideoData: function () {
607
+ const videoElementData = [];
608
+
609
+ timelineElements.forEach((step, index) => {
610
+ const stepData = {
611
+ stepIndex: index,
612
+ videoElements: []
613
+ };
614
+
615
+ allElements.forEach((elm) => {
616
+ const animation = step.dataset.animation;
617
+ const animationObj = JSON.parse(animation);
618
+ const obj = animationObj.find(
619
+ (o) => o.name === elm.dataset.assetName
620
+ );
621
+
622
+ if (obj) {
623
+ let animationName = obj.name;
624
+ let animationUrl = elm.src;
625
+
626
+ let isLoaded = elm.dataset.isLoaded === 'true';
627
+
628
+ stepData.videoElements.push({
629
+ name: animationName,
630
+ autoplay: obj.autoplay,
631
+ url: animationUrl,
632
+ startpos: obj.startpos,
633
+ loop: obj.loop,
634
+ endpos: obj.endpos,
635
+ reversevideo: obj.reversevideo,
636
+ activevideo: obj.enable_video_slide,
637
+ isLoaded: isLoaded
638
+ });
639
+ }
640
+ });
641
+
642
+ videoElementData.push(stepData);
643
+ });
644
+
645
+ return videoElementData;
646
+ },
647
+ addVideoSource: function (videoElement, sourceUrl, type) {
648
+ let source = document.createElement('source');
649
+ source.src = sourceUrl;
650
+ source.type = type;
651
+ videoElement.appendChild(source);
652
+ },
653
+ handleVideoForward: function (fromReverse = false, callback) {
654
+ this.pauseAllVideos();
655
+ let nestedVideoData = this.saveVideoData();
656
+ let currentStepData =
657
+ nestedVideoData[getState('currentTimelineIndex')];
658
+
659
+ if (currentStepData && currentStepData.videoElements) {
660
+ allElements.forEach(async (element) => {
661
+ let foundElement =
662
+ currentStepData.videoElements.find(
663
+ (data) =>
664
+ element.dataset.assetName === data.name
665
+ );
666
+
667
+ if (foundElement) {
668
+ let videoElement;
669
+ if (foundElement.autoplay) {
670
+ videoElement = allElements.find(
671
+ (el) =>
672
+ el.dataset.assetName ===
673
+ foundElement.name
674
+ );
675
+
676
+ if (videoElement) {
677
+ videoElement.loop = foundElement.loop;
678
+ videoElement.muted = true;
679
+ videoElement._currentAnimation =
680
+ foundElement.name;
681
+
682
+ if (
683
+ videoElement.currentSrc !==
684
+ foundElement.url
685
+ ) {
686
+ videoElement.load();
687
+ }
688
+
689
+ videoElement.onloadeddata = () => {
690
+ if (foundElement.autoplay) {
691
+ if (
692
+ videoElement.readyState >= 2
693
+ ) {
694
+ setTimeout(() => {
695
+ videoElement.play();
696
+ }, 250);
697
+ }
698
+ }
699
+
700
+ if (
701
+ typeof callback === 'function'
702
+ ) {
703
+ callback();
704
+ }
705
+ };
706
+
707
+ videoElement.ontimeupdate = () => {
708
+ let secondsEnd =
709
+ this.calculateSeconds(
710
+ foundElement.endpos,
711
+ videoElement.duration
712
+ );
713
+ if (
714
+ videoElement.currentTime >=
715
+ secondsEnd
716
+ ) {
717
+ if (foundElement.loop) {
718
+ videoElement.currentTime =
719
+ this.calculateSeconds(
720
+ foundElement.startpos
721
+ );
722
+ } else {
723
+ videoElement.pause();
724
+ }
725
+ }
726
+ };
727
+
728
+ if (fromReverse) {
729
+ this.setVideoToEnd(videoElement);
730
+ }
731
+ }
732
+ }
733
+ }
734
+ });
735
+ }
736
+ },
737
+ playReverseVideo: function (timelineIndex, callback) {
738
+ let nestedVideoData = this.saveVideoData();
739
+ let relevantStepData = nestedVideoData[timelineIndex + 1];
740
+
741
+ let activeVideoElement =
742
+ relevantStepData.videoElements.find(
743
+ (ve) => ve.autoplay
744
+ );
745
+
746
+ if (activeVideoElement) {
747
+ let originalVideoElement;
748
+ if (window.innerWidth >= MOBILE_BREAKPOINT) {
749
+ originalVideoElement = document.querySelector(
750
+ `.animated-sections__foreground-element--desktop[data-asset-name="${activeVideoElement.name}"]`
751
+ );
752
+ } else {
753
+ originalVideoElement = document.querySelector(
754
+ `.animated-sections__foreground-element--mobile[data-asset-name="${activeVideoElement.name}"]`
755
+ );
756
+ }
757
+ let reverseVideoElement = document.querySelector(
758
+ `[data-asset-name="${activeVideoElement.name}_reverse"]`
759
+ );
760
+
761
+ if (reverseVideoElement && originalVideoElement) {
762
+ let computedStyle =
763
+ window.getComputedStyle(originalVideoElement);
764
+ for (let key of computedStyle) {
765
+ reverseVideoElement.style[key] =
766
+ computedStyle[key];
767
+ }
768
+
769
+ reverseVideoElement.style.opacity = '1';
770
+ reverseVideoElement.style.visibility = 'visible';
771
+ reverseVideoElement.muted = true;
772
+ reverseVideoElement.autoplay = true;
773
+ reverseVideoElement.load();
774
+ reverseVideoElement.onloadedmetadata = () => {
775
+ reverseVideoElement.currentTime = 0;
776
+ reverseVideoElement.play();
777
+ allElements.forEach(
778
+ (elm) => (elm.style.display = 'none')
779
+ );
780
+ this.handleVideoForward(true);
781
+ };
782
+
783
+ reverseVideoElement.onended = () => {
784
+ reverseVideoElement.style.visibility = 'hidden';
785
+ originalVideoElement.currentTime = 0;
786
+
787
+ if (typeof callback === 'function') {
788
+ callback();
789
+ }
790
+ };
791
+ } else {
792
+ if (typeof callback === 'function') {
793
+ callback();
794
+ }
795
+ }
796
+ }
797
+ },
798
+ setVideoToEnd: function (videoElement) {
799
+ return new Promise((resolve, reject) => {
800
+ if (!videoElement)
801
+ return reject('Video element not provided');
802
+
803
+ const setEndPosition = () => {
804
+ if (videoElement.seekable.length === 0) {
805
+ setTimeout(setEndPosition, 100);
806
+ } else {
807
+ videoElement.currentTime = Math.max(
808
+ 0,
809
+ videoElement.duration - 0.1
810
+ );
811
+ resolve();
812
+ }
813
+ };
814
+
815
+ setEndPosition();
816
+ });
817
+ },
818
+ preloadAllVideoSources: function () {
819
+ let nestedVideoData = this.saveVideoData();
820
+ let timelineIndex = getState('currentTimelineIndex');
821
+
822
+ if (nestedVideoData[timelineIndex]) {
823
+ let stepData = nestedVideoData[timelineIndex];
824
+
825
+ if (stepData && stepData.videoElements) {
826
+ stepData.videoElements.forEach((videoData) => {
827
+ let videoElement;
828
+ if (window.innerWidth >= MOBILE_BREAKPOINT) {
829
+ videoElement = document.querySelector(
830
+ `.animated-sections__foreground-element--desktop[data-asset-name="${videoData.name}"]`
831
+ );
832
+ } else {
833
+ videoElement = document.querySelector(
834
+ `.animated-sections__foreground-element--mobile[data-asset-name="${videoData.name}"]`
835
+ );
836
+ }
837
+
838
+ if (videoElement) {
839
+ if (
840
+ videoElement &&
841
+ videoElement.dataset.originalSource
842
+ ) {
843
+ if (isSafari()) {
844
+ let safariSource =
845
+ videoElement.dataset
846
+ .safariSource;
847
+ if (safariSource) {
848
+ this.addVideoSource(
849
+ videoElement,
850
+ safariSource,
851
+ 'video/mp4; codecs="hvc1"'
852
+ );
853
+ }
854
+ } else {
855
+ let sourceType =
856
+ videoElement.dataset.originalSource.endsWith(
857
+ '.webm'
858
+ )
859
+ ? 'video/webm'
860
+ : 'video/mp4';
861
+ this.addVideoSource(
862
+ videoElement,
863
+ videoElement.dataset
864
+ .originalSource,
865
+ sourceType
866
+ );
867
+ }
868
+ }
869
+
870
+ if (
871
+ videoElement &&
872
+ videoElement.dataset.reverseSource
873
+ ) {
874
+ let reverseElement =
875
+ document.createElement('video');
876
+ reverseElement.muted = true;
877
+ reverseElement.dataset.assetName =
878
+ videoData.name + '_reverse';
879
+ reverseElement.preload = 'auto';
880
+ reverseElement.style.opacity = '0';
881
+ reverseElement.playsInline = true;
882
+ reverseElement.setAttribute(
883
+ 'muted',
884
+ ''
885
+ );
886
+ reverseElement.setAttribute(
887
+ 'autoplay',
888
+ 'autoplay'
889
+ );
890
+
891
+ if (isSafari()) {
892
+ let safariSource =
893
+ videoElement.dataset
894
+ .reverseSourceSafari;
895
+ if (safariSource) {
896
+ this.addVideoSource(
897
+ reverseElement,
898
+ safariSource,
899
+ 'video/mp4; codecs="hvc1"'
900
+ );
901
+ }
902
+ } else {
903
+ let sourceType =
904
+ videoElement.dataset.reverseSource.endsWith(
905
+ '.webm'
906
+ )
907
+ ? 'video/webm'
908
+ : 'video/mp4';
909
+ this.addVideoSource(
910
+ reverseElement,
911
+ videoElement.dataset
912
+ .reverseSource,
913
+ sourceType
914
+ );
915
+ }
916
+
917
+ if (elementCanvas) {
918
+ elementCanvas.appendChild(
919
+ reverseElement
920
+ );
921
+ }
922
+ }
923
+ }
924
+ });
925
+ }
926
+ }
927
+ }
928
+ };
929
+ const TimelineNavigation = {
930
+ init: function () {
931
+ const hideFromNavData = JSON.parse(
932
+ block.dataset.hideFromNavSlides
933
+ );
934
+ this.timelineIdsToHide = hideFromNavData;
935
+
936
+ this.toggleItemVisibility(this.timelineIdsToHide);
937
+ this.toggleFirstThreeItems();
938
+ this.timelineNavClickListener();
939
+ this.updateAllNavTimelines();
940
+ },
941
+ toggleItemVisibility: function (timelineIdsToHide) {
942
+ dots.forEach((dot, index) => {
943
+ const stringIndex = (index + 1).toString();
944
+ if (timelineIdsToHide.includes(stringIndex)) {
945
+ dot.classList.add('hide_from_timeline_navigation');
946
+ }
947
+ });
948
+ menuItems.forEach((item, index) => {
949
+ const stringIndex = (index + 1).toString();
950
+ if (timelineIdsToHide.includes(stringIndex)) {
951
+ item.classList.add('hide_from_timeline_navigation');
952
+ }
953
+ });
954
+ },
955
+ toggleFirstThreeItems: function () {
956
+ const firstThreeItems = [...menuItems].slice(0, 3);
957
+ firstThreeItems.forEach(
958
+ (name) => (name.style.display = 'flex')
959
+ );
960
+ },
961
+ timelineNavClickListener: function () {
962
+ const items = [...dots, ...menuItems];
963
+ items.forEach((item, index) => {
964
+ item.addEventListener('click', () =>
965
+ this.timelineNavHandleClick(item, index, items)
966
+ );
967
+ });
968
+ },
969
+ timelineNavHandleClick: function (item) {
970
+ if (!getState('canSwipe')) {
971
+ return;
972
+ }
973
+ const targetStepIndex =
974
+ parseInt(item.getAttribute('data-step')) - 1;
975
+ const currentStepIndex = getState('currentTimelineIndex');
976
+ const stepDifference = targetStepIndex - currentStepIndex;
977
+
978
+ if (
979
+ Math.abs(stepDifference) > 1 ||
980
+ Math.abs(stepDifference) < -1
981
+ ) {
982
+ TimelineManager.fadeToBlack(() => {
983
+ TimelineManager.navigateToTimeline(targetStepIndex);
984
+ });
985
+ } else if (Math.abs(stepDifference) == 0) {
986
+ return;
987
+ } else {
988
+ TimelineManager.changeTimeline(stepDifference);
989
+ }
990
+ },
991
+ updateAllNavTimelines: function () {
992
+ allNavTimelines = Array.from(menuItems)
993
+ .filter(
994
+ (item) =>
995
+ !item.classList.contains(
996
+ 'hide_from_timeline_navigation'
997
+ )
998
+ )
999
+ .map(
1000
+ (item) =>
1001
+ parseInt(item.getAttribute('data-step')) - 1
1002
+ );
1003
+ }
1004
+ };
1005
+ const ContentManager = {
1006
+ contentFrame: function () {
1007
+ const currentTimelineIndex = getState(
1008
+ 'currentTimelineIndex'
1009
+ );
1010
+ contentElements.forEach((elm) => {
1011
+ const contentDelay = elm.dataset.slideDelay;
1012
+ const parts = contentDelay.split(':');
1013
+ const seconds =
1014
+ parseInt(parts[0], 10) * 60 +
1015
+ parseInt(parts[1], 10);
1016
+ const delay = seconds * 200;
1017
+
1018
+ const contentActiveSlidesValue = elm.dataset.slideId;
1019
+ const contentActiveSlidesArray = JSON.parse(
1020
+ contentActiveSlidesValue
1021
+ );
1022
+ const parsedContentSlidesArray =
1023
+ contentActiveSlidesArray.map((value) =>
1024
+ parseInt(value)
1025
+ );
1026
+ const isActive = parsedContentSlidesArray.includes(
1027
+ currentTimelineIndex + 1
1028
+ );
1029
+
1030
+ setTimeout(() => {
1031
+ elm.classList.toggle('active', isActive);
1032
+ }, delay);
1033
+ });
1034
+ },
1035
+ swiperFrame: function () {
1036
+ const currentTimelineIndex = getState(
1037
+ 'currentTimelineIndex'
1038
+ );
1039
+ const swiperSlides = SwiperManager.swiper.slides;
1040
+
1041
+ swiperSlides.forEach((slide) => {
1042
+ if (slide.dataset.slideId == currentTimelineIndex + 1) {
1043
+ SwiperManager.swiper.slideTo(
1044
+ slide.dataset.swiperSlideId - 1
1045
+ );
1046
+ }
1047
+ });
1048
+
1049
+ const swiperActiveSlidesValue =
1050
+ swiperWrapper.dataset.swiperActiveSlides;
1051
+
1052
+ const swiperDelay = swiperWrapper.dataset.swiperDelay;
1053
+ const swiperParts = swiperDelay.split(':');
1054
+ const swiperSeconds =
1055
+ parseInt(swiperParts[0], 10) * 60 +
1056
+ parseInt(swiperParts[1], 10);
1057
+ const swiperDelayTimeout = swiperSeconds * 2500;
1058
+
1059
+ const swiperActiveSlidesArray = JSON.parse(
1060
+ swiperActiveSlidesValue
1061
+ );
1062
+ const parsedSwiperActiveSlidesArray =
1063
+ swiperActiveSlidesArray.map((value) => parseInt(value));
1064
+ const isActive = parsedSwiperActiveSlidesArray.includes(
1065
+ currentTimelineIndex + 1
1066
+ );
1067
+
1068
+ if (isActive) {
1069
+ setTimeout(() => {
1070
+ swiperWrapper.classList.add('active');
1071
+ }, swiperDelayTimeout);
1072
+ } else {
1073
+ swiperWrapper.classList.remove('active');
1074
+ }
1075
+ }
1076
+ };
1077
+ const ScrollTypeSwitch = {
1078
+ init: function (block) {
1079
+ const isFullScreen =
1080
+ parseFloat(block.dataset.fullscreen) === 1;
1081
+
1082
+ if (isFullScreen) {
1083
+ document.body.classList.add(
1084
+ 'animated-sections-fullscreen'
1085
+ );
1086
+ startBlock();
1087
+ TouchScrollEventManager.addScrollLockScreen();
1088
+ } else {
1089
+ document.body.classList.remove(
1090
+ 'animated-sections-fullscreen'
1091
+ );
1092
+ startBlock();
1093
+ }
1094
+ }
1095
+ };
1096
+ const TouchScrollEventManager = {
1097
+ decelerateScroll: function () {
1098
+ this.scrollVelocity *= 0.9;
1099
+
1100
+ if (Math.abs(this.scrollVelocity) < 1) {
1101
+ this.isDecelerating = false;
1102
+ return;
1103
+ }
1104
+
1105
+ window.scrollBy(0, this.scrollVelocity);
1106
+
1107
+ requestAnimationFrame(this.decelerateScroll.bind(this));
1108
+ },
1109
+ isElementAtTop: function (element) {
1110
+ const headerHeight = siteHeader.offsetHeight;
1111
+ const bounding = element.getBoundingClientRect();
1112
+ return bounding.top <= headerHeight; // Adjusted to account for header height
1113
+ },
1114
+ isElementAtBottom: function (element) {
1115
+ const bounding = element.getBoundingClientRect();
1116
+ return bounding.bottom >= window.innerHeight;
1117
+ },
1118
+ addScrollLockScreen: function () {
1119
+ if (window.innerWidth <= MOBILE_BREAKPOINT) {
1120
+ isTouching = false;
1121
+ window.removeEventListener(
1122
+ 'touchstart',
1123
+ handleTouchStart
1124
+ );
1125
+ window.removeEventListener(
1126
+ 'touchmove',
1127
+ handleTouchMove
1128
+ );
1129
+ window.removeEventListener('touchend', handleTouchEnd);
1130
+ window.removeEventListener('wheel', handleWheelEvent);
1131
+
1132
+ TimelineManager.navigateToTimeline(
1133
+ getState('currentTimelineIndex')
1134
+ );
1135
+ } else {
1136
+ window.removeEventListener('wheel', handleWheelEvent);
1137
+ }
1138
+
1139
+ document.body.classList.add(
1140
+ 'animated-sections-scroll-lock'
1141
+ );
1142
+ // siteHeader.classList.add('animated-sections-header-lock');
1143
+ smoothScrollToTarget(block);
1144
+
1145
+ setTimeout(() => {
1146
+ if (window.innerWidth <= MOBILE_BREAKPOINT) {
1147
+ block.addEventListener(
1148
+ 'touchstart',
1149
+ handleTimelineTouchStart
1150
+ );
1151
+ block.addEventListener(
1152
+ 'touchmove',
1153
+ handleTimelineTouchMove
1154
+ );
1155
+ block.addEventListener(
1156
+ 'touchend',
1157
+ handleTimelineTouchEnd
1158
+ );
1159
+ block.addEventListener(
1160
+ 'wheel',
1161
+ handleTimelineScrollControl
1162
+ );
1163
+ } else {
1164
+ block.addEventListener(
1165
+ 'wheel',
1166
+ handleTimelineScrollControl
1167
+ );
1168
+ }
1169
+ }, 100);
1170
+ },
1171
+ removeScrollLockScreen: function () {
1172
+ document.body.classList.remove(
1173
+ 'animated-sections-scroll-lock'
1174
+ );
1175
+ // siteHeader.classList.remove('animated-sections-header-lock');
1176
+
1177
+ setState('canSwipe', false);
1178
+
1179
+ if (window.innerWidth <= MOBILE_BREAKPOINT) {
1180
+ block.removeEventListener(
1181
+ 'touchstart',
1182
+ handleTimelineTouchStart
1183
+ );
1184
+ block.removeEventListener(
1185
+ 'touchmove',
1186
+ handleTimelineTouchMove
1187
+ );
1188
+ block.removeEventListener(
1189
+ 'touchend',
1190
+ handleTimelineTouchEnd
1191
+ );
1192
+ block.removeEventListener(
1193
+ 'wheel',
1194
+ handleTimelineScrollControl
1195
+ );
1196
+ } else {
1197
+ block.removeEventListener(
1198
+ 'wheel',
1199
+ handleTimelineScrollControl
1200
+ );
1201
+ }
1202
+
1203
+ setTimeout(() => {
1204
+ if (window.innerWidth <= MOBILE_BREAKPOINT) {
1205
+ window.addEventListener(
1206
+ 'touchstart',
1207
+ handleTouchStart
1208
+ );
1209
+ window.addEventListener(
1210
+ 'touchmove',
1211
+ handleTouchMove
1212
+ );
1213
+ window.addEventListener('touchend', handleTouchEnd);
1214
+ window.addEventListener('wheel', handleWheelEvent);
1215
+ } else {
1216
+ window.addEventListener('wheel', handleWheelEvent);
1217
+ }
1218
+ }, 2000);
1219
+ }
1220
+ };
1221
+ const addEventListeners = {
1222
+ init: function () {
1223
+ backButton.addEventListener('click', handleBackButtonClick);
1224
+ nextButton.addEventListener('click', handleNextButtonClick);
1225
+ if (window.innerWidth <= MOBILE_BREAKPOINT) {
1226
+ window.addEventListener(
1227
+ 'touchstart',
1228
+ handleTouchStart,
1229
+ {passive: true}
1230
+ );
1231
+ window.addEventListener('touchmove', handleTouchMove, {
1232
+ passive: true
1233
+ });
1234
+ window.addEventListener('touchend', handleTouchEnd, {
1235
+ passive: true
1236
+ });
1237
+ window.addEventListener('wheel', handleWheelEvent);
1238
+ } else {
1239
+ window.addEventListener(
1240
+ 'resize',
1241
+ debounce(handleResize, 100)
1242
+ );
1243
+ window.addEventListener('wheel', handleWheelEvent);
1244
+ }
1245
+
1246
+ if (contentButtons) {
1247
+ contentButtons.forEach((button) => {
1248
+ button.addEventListener(
1249
+ 'click',
1250
+ handleContentButtonClick
1251
+ );
1252
+ });
1253
+ }
1254
+ }
1255
+ };
1256
+
1257
+ // Initialize
1258
+ function init() {
1259
+ setState('canSwipe', false);
1260
+ setState('currentTimelineIndex', 0);
1261
+ setState('timelinesVisited', false);
1262
+ setState('lastSwipeFalseTime', 0);
1263
+
1264
+ addEventListeners.init();
1265
+ VideoUtils.preloadAllVideoSources();
1266
+
1267
+ TimelineManager.createTimelinesAndNavigation();
1268
+ console.log('init');
1269
+ TimelineNavigation.init();
1270
+ ScrollTypeSwitch.init(block);
1271
+
1272
+ if (swiperEnabled == 'true') {
1273
+ SwiperManager.init();
1274
+ SwiperManager.initSwiperPaginationListener();
1275
+ }
1276
+ }
1277
+
1278
+ // Utility Functions
1279
+ function getState(key) {
1280
+ return state[key];
1281
+ }
1282
+ function setState(key, value) {
1283
+ console.log(key);
1284
+ if (key === 'canSwipe') {
1285
+ if (value === false) {
1286
+ state[key] = value;
1287
+ updateScrollWrapperClass(value);
1288
+ state.lastSwipeFalseTime = Date.now();
1289
+ } else if (value === true) {
1290
+ const timeSinceLastFalse =
1291
+ Date.now() - state.lastSwipeFalseTime;
1292
+ if (timeSinceLastFalse >= 2000) {
1293
+ state[key] = value;
1294
+ updateScrollWrapperClass(value);
1295
+ }
1296
+ }
1297
+ } else {
1298
+ state[key] = value;
1299
+ }
1300
+ }
1301
+ function debounce(func, wait) {
1302
+ let timeout;
1303
+ return function executedFunction(...args) {
1304
+ const later = () => {
1305
+ clearTimeout(timeout);
1306
+ func(...args);
1307
+ };
1308
+ clearTimeout(timeout);
1309
+ timeout = setTimeout(later, wait);
1310
+ };
1311
+ }
1312
+ function smoothScrollToTarget(target) {
1313
+ let targetPosition = target.offsetTop;
1314
+ const startPosition = window.pageYOffset;
1315
+ const distance = targetPosition - startPosition;
1316
+ let startTime = null;
1317
+
1318
+ const scrollSpeed = Math.abs(scrollVelocity);
1319
+ const dynamicDurationFactor = 250;
1320
+ const duration = Math.max(
1321
+ 300,
1322
+ Math.min(
1323
+ 1000,
1324
+ (distance / (scrollSpeed + 1)) * dynamicDurationFactor
1325
+ )
1326
+ );
1327
+
1328
+ function animation(currentTime) {
1329
+ if (startTime === null) startTime = currentTime;
1330
+ const timeElapsed = currentTime - startTime;
1331
+ let run = easeOutCubic(
1332
+ timeElapsed,
1333
+ startPosition,
1334
+ distance,
1335
+ duration
1336
+ );
1337
+
1338
+ if (
1339
+ (distance > 0 && run > targetPosition) ||
1340
+ (distance < 0 && run < targetPosition)
1341
+ ) {
1342
+ run = targetPosition;
1343
+ }
1344
+
1345
+ window.scrollTo(0, run);
1346
+ if (timeElapsed < duration && run !== targetPosition) {
1347
+ requestAnimationFrame(animation);
1348
+ }
1349
+ }
1350
+
1351
+ function easeOutCubic(t, b, c, d) {
1352
+ t /= d;
1353
+ t--;
1354
+ return c * (t * t * t + 1) + b;
1355
+ }
1356
+
1357
+ requestAnimationFrame(animation);
1358
+ }
1359
+ function isSafari() {
1360
+ return (
1361
+ /^((?!chrome|android).)*safari/i.test(
1362
+ navigator.userAgent
1363
+ ) ||
1364
+ (/iPad|iPhone|iPod/.test(navigator.userAgent) &&
1365
+ !window.MSStream)
1366
+ );
1367
+ }
1368
+ function handleWheelEvent(event) {
1369
+ let currentScrollTop =
1370
+ window.pageYOffset || document.documentElement.scrollTop;
1371
+ let wheelScrollDelta = event.deltaY;
1372
+ checkBlockPosition(wheelScrollDelta, currentScrollTop);
1373
+ }
1374
+ function handleTimelineScrollControl() {
1375
+ if (!getState('canSwipe')) {
1376
+ return;
1377
+ }
1378
+
1379
+ scrollAmount += event.deltaY;
1380
+
1381
+ const currentTimelineIndex = getState('currentTimelineIndex');
1382
+ const totalTimelines = timelineElements.length;
1383
+
1384
+ if (scrollAmount >= 100) {
1385
+ // Move forward
1386
+ if (currentTimelineIndex === totalTimelines - 1) {
1387
+ TouchScrollEventManager.removeScrollLockScreen();
1388
+ setState('timelinesVisited', true);
1389
+ } else {
1390
+ TimelineManager.changeTimeline(1);
1391
+ scrollAmount = 5;
1392
+ }
1393
+ } else if (scrollAmount <= -100) {
1394
+ // Move backward
1395
+ if (currentTimelineIndex === 0) {
1396
+ TouchScrollEventManager.removeScrollLockScreen();
1397
+ setState('timelinesVisited', false);
1398
+ } else {
1399
+ TimelineManager.changeTimeline(-1);
1400
+ scrollAmount = -5;
1401
+ }
1402
+ }
1403
+
1404
+ if (scrollAmount > 0) {
1405
+ scrollBar.style.top = '0%';
1406
+ scrollBar.style.bottom = '';
1407
+ } else {
1408
+ scrollBar.style.top = '';
1409
+ scrollBar.style.bottom = '0%';
1410
+ }
1411
+
1412
+ const scrollPercentage = (Math.abs(scrollAmount) / 100) * 100;
1413
+
1414
+ scrollBar.style.height = `${scrollPercentage}%`;
1415
+ }
1416
+ function handleTouchStart(event) {
1417
+ if (event.touches.length === 1) {
1418
+ lastTouchY = event.touches[0].clientY;
1419
+ isTouching = true;
1420
+ }
1421
+ }
1422
+ function handleTouchMove(event) {
1423
+ if (isTouching) {
1424
+ let currentScrollTop =
1425
+ window.pageYOffset ||
1426
+ document.documentElement.scrollTop;
1427
+ let touchScrollDelta =
1428
+ event.touches[0].clientY - lastTouchY;
1429
+ if (
1430
+ checkBlockPosition(touchScrollDelta, currentScrollTop)
1431
+ ) {
1432
+ if (event.cancelable) {
1433
+ event.preventDefault();
1434
+ event.stopPropagation(); // Stop event from propagating
1435
+ }
1436
+ isTouching = false;
1437
+ return;
1438
+ }
1439
+ lastTouchY = event.touches[0].clientY;
1440
+ }
1441
+ }
1442
+
1443
+ function handleTouchEnd() {
1444
+ isTouching = false;
1445
+ // Start listening to scroll events
1446
+ window.addEventListener('scroll', handleScroll, {
1447
+ passive: true
1448
+ });
1449
+ }
1450
+
1451
+ function handleScroll() {
1452
+ let currentScrollTop =
1453
+ window.pageYOffset || document.documentElement.scrollTop;
1454
+ if (checkBlockPosition(0, currentScrollTop)) {
1455
+ // Take action if the block position is exceeded
1456
+ // For example, scroll back to a safe position
1457
+ window.removeEventListener('scroll', handleScroll); // Remove the event listener if needed
1458
+ }
1459
+ }
1460
+
1461
+ function handleTimelineTouchStart(e) {
1462
+ if (!getState('canSwipe')) {
1463
+ return;
1464
+ }
1465
+ e.preventDefault();
1466
+ e.stopPropagation();
1467
+ touchStartY = e.touches[0].screenY;
1468
+ }
1469
+ function handleTimelineTouchMove(e) {
1470
+ // if (!getState('canSwipe')) {
1471
+ // return;
1472
+ // }
1473
+ // e.preventDefault();
1474
+ // e.stopPropagation();
1475
+ }
1476
+ function handleTimelineTouchEnd(e) {
1477
+ if (!getState('canSwipe')) {
1478
+ return;
1479
+ }
1480
+ touchEndY = e.changedTouches[0].screenY;
1481
+
1482
+ e.preventDefault();
1483
+ e.stopPropagation();
1484
+ const currentTimelineIndex = getState('currentTimelineIndex');
1485
+ const totalTimelines = timelineElements.length;
1486
+
1487
+ if (touchEndY < touchStartY) {
1488
+ if (currentTimelineIndex === totalTimelines - 1) {
1489
+ TouchScrollEventManager.removeScrollLockScreen();
1490
+ setState('timelinesVisited', true);
1491
+ } else {
1492
+ TimelineManager.changeTimeline(1);
1493
+ }
1494
+ } else if (touchEndY > touchStartY) {
1495
+ if (currentTimelineIndex === 0) {
1496
+ TouchScrollEventManager.removeScrollLockScreen();
1497
+ setState('timelinesVisited', false);
1498
+ } else {
1499
+ TimelineManager.changeTimeline(-1);
1500
+ }
1501
+ }
1502
+
1503
+ const scrollPercentage = Math.abs(touchEndY) * 100;
1504
+ scrollBar.style.height = `${scrollPercentage}%`;
1505
+ if (touchEndY > 0) {
1506
+ scrollBar.style.left = '0%';
1507
+ scrollBar.style.right = '';
1508
+ } else {
1509
+ scrollBar.style.left = '';
1510
+ scrollBar.style.right = '0%';
1511
+ }
1512
+ }
1513
+
1514
+ //UI Functions
1515
+ function createBackButton() {
1516
+ const slidesJson = JSON.parse(
1517
+ block.dataset.slidesToHaveBackButton
1518
+ );
1519
+ const slides_to_have_back_button = slidesJson;
1520
+
1521
+ let showBackButton = false;
1522
+ slides_to_have_back_button.forEach((slide) => {
1523
+ const stepId = slide;
1524
+ if (
1525
+ stepId &&
1526
+ parseInt(stepId) ===
1527
+ getState('currentTimelineIndex') + 1
1528
+ ) {
1529
+ showBackButton = true;
1530
+ }
1531
+ });
1532
+ if (showBackButton) {
1533
+ backButton.style.visibility = 'visible';
1534
+ backButton.style.opacity = '1';
1535
+ } else {
1536
+ backButton.style.opacity = '0';
1537
+ backButton.style.visibility = 'hidden';
1538
+ }
1539
+ }
1540
+ function updateScrollWrapperClass(canSwipe) {
1541
+ const scrollWrapper = block.querySelector(
1542
+ '.animated-sections__progress-inner'
1543
+ );
1544
+ if (scrollWrapper) {
1545
+ if (canSwipe) {
1546
+ scrollWrapper.classList.remove('loading');
1547
+ if (SwiperManager.swiper) {
1548
+ SwiperManager.swiper.pagination.el.classList.remove(
1549
+ 'loading'
1550
+ );
1551
+ }
1552
+ } else {
1553
+ scrollWrapper.classList.add('loading');
1554
+ if (SwiperManager.swiper) {
1555
+ SwiperManager.swiper.pagination.el.classList.add(
1556
+ 'loading'
1557
+ );
1558
+ }
1559
+ }
1560
+ }
1561
+ }
1562
+
1563
+ //Event Listener Functions
1564
+ function handleResize() {
1565
+ TimelineManager.rebuildTweens();
1566
+ if (getState('canSwipe')) {
1567
+ smoothScrollToTarget(block);
1568
+ }
1569
+ }
1570
+ function handleBackButtonClick() {
1571
+ if (getState('canSwipe')) {
1572
+ TimelineManager.navigateToTimeline(
1573
+ backButton.dataset.backButton
1574
+ );
1575
+ }
1576
+ }
1577
+ function handleNextButtonClick() {
1578
+ if (getState('canSwipe')) {
1579
+ TimelineManager.changeTimeline(1);
1580
+ }
1581
+ }
1582
+ function handleContentButtonClick() {
1583
+ if (getState('canSwipe')) {
1584
+ TimelineManager.navigateToTimeline(
1585
+ this.dataset.contentButton
1586
+ );
1587
+ }
1588
+ }
1589
+
1590
+ function startBlock() {
1591
+ setState('canSwipe', true);
1592
+ TimelineManager.navigateToTimeline(
1593
+ getState('currentTimelineIndex')
1594
+ );
1595
+ // splashScreen.classList.remove('active');
1596
+ // uiElementsContainer.classList.remove('disabled');
1597
+ }
1598
+
1599
+ //Dev Zone
1600
+ function checkBlockPosition(scrollDelta, currentScrollTop) {
1601
+ TouchScrollEventManager.scrollVelocity = scrollDelta;
1602
+ if (currentScrollTop > lastScrollTop) {
1603
+ if (!getState('timelinesVisited')) {
1604
+ if (TouchScrollEventManager.isElementAtTop(block)) {
1605
+ TouchScrollEventManager.addScrollLockScreen(true);
1606
+
1607
+ if (!isDecelerating && scrollVelocity !== 0) {
1608
+ isDecelerating = true;
1609
+ TouchScrollEventManager.decelerateScroll();
1610
+ }
1611
+ if (!getState('canSwipe')) {
1612
+ setTimeout(() => {
1613
+ setState('canSwipe', true);
1614
+ }, 1000);
1615
+ }
1616
+ return true;
1617
+ }
1618
+ }
1619
+ } else {
1620
+ if (getState('timelinesVisited')) {
1621
+ if (TouchScrollEventManager.isElementAtBottom(block)) {
1622
+ TouchScrollEventManager.addScrollLockScreen();
1623
+
1624
+ setTimeout(() => {
1625
+ setState('canSwipe', true);
1626
+ }, 1000);
1627
+ return true;
1628
+ }
1629
+ }
1630
+ }
1631
+ lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop;
1632
+ return false;
1633
+ }
1634
+
1635
+ // Make the magic happen
1636
+ init();
1637
+ // fadeIn(block);
1638
+ });
1639
+ } catch (error) {
1640
+ console.error(error);
1641
+ }
1642
+ }