@total_onion/onion-library 3.0.49 → 3.2.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 (536) hide show
  1. package/index.js +10 -0
  2. package/onion-loader.js +22 -14
  3. package/onion-modalcontroller/README.md +2 -0
  4. package/onion-modalcontroller/onion-modalcontroller.js +183 -0
  5. package/onion-utils.mjs +18 -19
  6. package/onion-videocontroller/README.md +89 -0
  7. package/{components/fields-core-functions-v3 → onion-videocontroller}/core-functions-v3.scss +1 -1
  8. package/{components/fields-core-mixins-v3 → onion-videocontroller}/core-mixins-v3.scss +2 -2
  9. package/onion-videocontroller/onion-videocontroller.js +240 -0
  10. package/onion-videocontroller/upload-video.mjs +251 -0
  11. package/onion-videocontroller/vc-styles.scss +282 -0
  12. package/onion-videocontroller/vcUtils.mjs +281 -0
  13. package/onion-videocontroller/vimeo-video.mjs +106 -0
  14. package/onion-videocontroller/youtube-video.mjs +157 -0
  15. package/package.json +29 -7
  16. package/.github/workflows/npm-publish.yml +0 -38
  17. package/__spec__/copyBlockComponent.spec.js +0 -94
  18. package/__spec__/copyFile.spec.js +0 -78
  19. package/__spec__/copyFileKeeping.spec.js +0 -74
  20. package/__spec__/files/source.txt +0 -1
  21. package/__spec__/update-all-components.spec.js +0 -99
  22. package/__spec__/update-component.spec.js +0 -165
  23. package/assembleAssetList.js +0 -69
  24. package/build-library.js +0 -4
  25. package/checkBuildAssets.js +0 -18
  26. package/components/block-accent-image-v3/accent-image-v3.js +0 -7
  27. package/components/block-accent-image-v3/accent-image-v3.scss +0 -4
  28. package/components/block-accent-image-v3/accent-image-v3.twig +0 -137
  29. package/components/block-accent-image-v3/group_6890e1233ff2d.json +0 -81
  30. package/components/block-accordion-v3/accordion-v3.js +0 -119
  31. package/components/block-accordion-v3/accordion-v3.scss +0 -197
  32. package/components/block-accordion-v3/accordion-v3.twig +0 -51
  33. package/components/block-accordion-v3/group_6888d2f0b230b.json +0 -458
  34. package/components/block-back-to-top-button-v3/back-to-top-button-v3.js +0 -12
  35. package/components/block-back-to-top-button-v3/back-to-top-button-v3.scss +0 -68
  36. package/components/block-back-to-top-button-v3/back-to-top-button-v3.twig +0 -40
  37. package/components/block-back-to-top-button-v3/group_63e24e04a1e61.json +0 -323
  38. package/components/block-betterreviews-display-v3/betterreviews-display-v3.js +0 -10
  39. package/components/block-betterreviews-display-v3/betterreviews-display-v3.scss +0 -104
  40. package/components/block-betterreviews-display-v3/betterreviews-display-v3.twig +0 -24
  41. package/components/block-betterreviews-display-v3/group_6892880fc1a00.json +0 -182
  42. package/components/block-block-interactions-v3/block-interactions-v3.js +0 -53
  43. package/components/block-block-interactions-v3/block-interactions-v3.scss +0 -32
  44. package/components/block-block-interactions-v3/block-interactions-v3.twig +0 -55
  45. package/components/block-block-interactions-v3/group_687e1575ba23d.json +0 -700
  46. package/components/block-carousel-multi-layout-v3/carousel-multi-layout-v3.js +0 -243
  47. package/components/block-carousel-multi-layout-v3/carousel-multi-layout-v3.scss +0 -156
  48. package/components/block-carousel-multi-layout-v3/carousel-multi-layout-v3.twig +0 -146
  49. package/components/block-carousel-multi-layout-v3/group_686bd42e551d6.json +0 -578
  50. package/components/block-cocktail-recipe-v3/cocktail-recipe-v3.js +0 -127
  51. package/components/block-cocktail-recipe-v3/cocktail-recipe-v3.scss +0 -345
  52. package/components/block-cocktail-recipe-v3/cocktail-recipe-v3.twig +0 -93
  53. package/components/block-cocktail-recipe-v3/group_68fff19fa4dd0.json +0 -202
  54. package/components/block-cover-link-v3/cover-link-v3.js +0 -7
  55. package/components/block-cover-link-v3/cover-link-v3.scss +0 -10
  56. package/components/block-cover-link-v3/cover-link-v3.twig +0 -16
  57. package/components/block-cover-link-v3/group_687192c28b7eb.json +0 -96
  58. package/components/block-divider-v3/divider-v3.js +0 -8
  59. package/components/block-divider-v3/divider-v3.scss +0 -103
  60. package/components/block-divider-v3/divider-v3.twig +0 -45
  61. package/components/block-divider-v3/group_686b919696bfe.json +0 -891
  62. package/components/block-featured-image-gallery-v3/featured-image-gallery-v3.js +0 -44
  63. package/components/block-featured-image-gallery-v3/featured-image-gallery-v3.scss +0 -93
  64. package/components/block-featured-image-gallery-v3/featured-image-gallery-v3.twig +0 -43
  65. package/components/block-featured-image-gallery-v3/group_5f91897095b42.json +0 -88
  66. package/components/block-form-selection-v3/form-selection-v3.js +0 -78
  67. package/components/block-form-selection-v3/form-selection-v3.scss +0 -38
  68. package/components/block-form-selection-v3/form-selection-v3.twig +0 -84
  69. package/components/block-form-selection-v3/group_68752e7949e53.json +0 -351
  70. package/components/block-gradient-layer-v3/gradient-layer-v3.js +0 -7
  71. package/components/block-gradient-layer-v3/gradient-layer-v3.scss +0 -8
  72. package/components/block-gradient-layer-v3/gradient-layer-v3.twig +0 -78
  73. package/components/block-gradient-layer-v3/group_686fdadc85df4.json +0 -206
  74. package/components/block-group-container-v3/group-container-v3.js +0 -7
  75. package/components/block-group-container-v3/group-container-v3.php +0 -14
  76. package/components/block-group-container-v3/group-container-v3.scss +0 -45
  77. package/components/block-group-container-v3/group-container-v3.twig +0 -70
  78. package/components/block-group-container-v3/group_6865578ada499.json +0 -3660
  79. package/components/block-lottie-content-v3/group_687197027216d.json +0 -177
  80. package/components/block-lottie-content-v3/lottie-content-v3.js +0 -25
  81. package/components/block-lottie-content-v3/lottie-content-v3.scss +0 -2
  82. package/components/block-lottie-content-v3/lottie-content-v3.twig +0 -15
  83. package/components/block-market-selector-v3/group_68752075dd831.json +0 -129
  84. package/components/block-market-selector-v3/market-selector-v3.js +0 -7
  85. package/components/block-market-selector-v3/market-selector-v3.scss +0 -120
  86. package/components/block-market-selector-v3/market-selector-v3.twig +0 -40
  87. package/components/block-modal-form-v3/modal-form-v3.js +0 -59
  88. package/components/block-modal-form-v3/modal-form-v3.scss +0 -6
  89. package/components/block-modal-form-v3/modal-form-v3.twig +0 -30
  90. package/components/block-nav-menu-container-v3/group_687e00b45e9a3.json +0 -187
  91. package/components/block-nav-menu-container-v3/nav-menu-container-v3.js +0 -7
  92. package/components/block-nav-menu-container-v3/nav-menu-container-v3.scss +0 -3
  93. package/components/block-nav-menu-container-v3/nav-menu-container-v3.twig +0 -23
  94. package/components/block-post-info-v3/group_6866429531436.json +0 -3112
  95. package/components/block-post-info-v3/post-info-v3/bazaarvoice-inline.twig +0 -13
  96. package/components/block-post-info-v3/post-info-v3/better-reviews.twig +0 -15
  97. package/components/block-post-info-v3/post-info-v3/divider.twig +0 -8
  98. package/components/block-post-info-v3/post-info-v3/drink-description.twig +0 -10
  99. package/components/block-post-info-v3/post-info-v3/global-image.twig +0 -22
  100. package/components/block-post-info-v3/post-info-v3/gradient-layer.twig +0 -78
  101. package/components/block-post-info-v3/post-info-v3/gradient-overlay.twig +0 -10
  102. package/components/block-post-info-v3/post-info-v3/post-author.twig +0 -17
  103. package/components/block-post-info-v3/post-info-v3/post-buy-now.twig +0 -116
  104. package/components/block-post-info-v3/post-info-v3/post-categories.twig +0 -15
  105. package/components/block-post-info-v3/post-info-v3/post-headline.twig +0 -15
  106. package/components/block-post-info-v3/post-info-v3/post-image.twig +0 -47
  107. package/components/block-post-info-v3/post-info-v3/post-info-description.twig +0 -15
  108. package/components/block-post-info-v3/post-info-v3/post-info-subtitle.twig +0 -14
  109. package/components/block-post-info-v3/post-info-v3/post-link.twig +0 -42
  110. package/components/block-post-info-v3/post-info-v3/post-name.twig +0 -12
  111. package/components/block-post-info-v3/post-info-v3/post-publish-date.twig +0 -12
  112. package/components/block-post-info-v3/post-info-v3/post-tags.twig +0 -24
  113. package/components/block-post-info-v3/post-info-v3/post-text-alternative-style.twig +0 -16
  114. package/components/block-post-info-v3/post-info-v3/post-title.twig +0 -15
  115. package/components/block-post-info-v3/post-info-v3/post-video.twig +0 -27
  116. package/components/block-post-info-v3/post-info-v3/reservebar-add-to-cart.twig +0 -32
  117. package/components/block-post-info-v3/post-info-v3/shopify-add-to-cart.twig +0 -31
  118. package/components/block-post-info-v3/post-info-v3/social-networks.twig +0 -33
  119. package/components/block-post-info-v3/post-info-v3/spacer-v3.twig +0 -9
  120. package/components/block-post-info-v3/post-info-v3.js +0 -10
  121. package/components/block-post-info-v3/post-info-v3.scss +0 -210
  122. package/components/block-post-info-v3/post-info-v3.twig +0 -67
  123. package/components/block-product-info-v3/group_68909995b6550.json +0 -3544
  124. package/components/block-product-info-v3/product-info-v3/product-abv.twig +0 -14
  125. package/components/block-product-info-v3/product-info-v3/product-cask-type-label.twig +0 -14
  126. package/components/block-product-info-v3/product-info-v3/product-cask-type.twig +0 -14
  127. package/components/block-product-info-v3/product-info-v3/product-colour-label.twig +0 -14
  128. package/components/block-product-info-v3/product-info-v3/product-colour.twig +0 -14
  129. package/components/block-product-info-v3/product-info-v3/product-description.twig +0 -14
  130. package/components/block-product-info-v3/product-info-v3/product-finish-label.twig +0 -14
  131. package/components/block-product-info-v3/product-info-v3/product-finish.twig +0 -14
  132. package/components/block-product-info-v3/product-info-v3/product-headline.twig +0 -14
  133. package/components/block-product-info-v3/product-info-v3/product-image.twig +0 -43
  134. package/components/block-product-info-v3/product-info-v3/product-name.twig +0 -14
  135. package/components/block-product-info-v3/product-info-v3/product-nose-label.twig +0 -14
  136. package/components/block-product-info-v3/product-info-v3/product-nose.twig +0 -14
  137. package/components/block-product-info-v3/product-info-v3/product-pair-with-label.twig +0 -14
  138. package/components/block-product-info-v3/product-info-v3/product-pair-with.twig +0 -14
  139. package/components/block-product-info-v3/product-info-v3/product-palate-label.twig +0 -14
  140. package/components/block-product-info-v3/product-info-v3/product-palate.twig +0 -14
  141. package/components/block-product-info-v3/product-info-v3/product-taste-label.twig +0 -14
  142. package/components/block-product-info-v3/product-info-v3/product-taste.twig +0 -14
  143. package/components/block-product-info-v3/product-info-v3/product-volume.twig +0 -14
  144. package/components/block-product-info-v3/product-info-v3/spacer-v3.twig +0 -9
  145. package/components/block-product-info-v3/product-info-v3.js +0 -7
  146. package/components/block-product-info-v3/product-info-v3.scss +0 -171
  147. package/components/block-product-info-v3/product-info-v3.twig +0 -43
  148. package/components/block-raw-html-v3/group_686ba68d603a2.json +0 -212
  149. package/components/block-raw-html-v3/raw-html-v3.js +0 -7
  150. package/components/block-raw-html-v3/raw-html-v3.scss +0 -2
  151. package/components/block-raw-html-v3/raw-html-v3.twig +0 -17
  152. package/components/block-responsive-table-v3/group_6617ecc987ddd.json +0 -394
  153. package/components/block-responsive-table-v3/responsive-table-v3.js +0 -7
  154. package/components/block-responsive-table-v3/responsive-table-v3.scss +0 -49
  155. package/components/block-responsive-table-v3/responsive-table-v3.twig +0 -47
  156. package/components/block-scrolling-banner-v3/group_68e67fca1ec80.json +0 -664
  157. package/components/block-scrolling-banner-v3/scrolling-banner-v3.js +0 -144
  158. package/components/block-scrolling-banner-v3/scrolling-banner-v3.scss +0 -104
  159. package/components/block-scrolling-banner-v3/scrolling-banner-v3.twig +0 -72
  160. package/components/block-section-separator-v3/group_6874c8d79b84b.json +0 -576
  161. package/components/block-section-separator-v3/section-separator-v3.js +0 -7
  162. package/components/block-section-separator-v3/section-separator-v3.scss +0 -42
  163. package/components/block-section-separator-v3/section-separator-v3.twig +0 -46
  164. package/components/block-single-column-container-v3/group_6887640458d61.json +0 -481
  165. package/components/block-single-column-container-v3/single-column-container-v3.js +0 -7
  166. package/components/block-single-column-container-v3/single-column-container-v3.scss +0 -14
  167. package/components/block-single-column-container-v3/single-column-container-v3.twig +0 -30
  168. package/components/block-single-responsive-image-v3/group_6867bcf24c2fc.json +0 -128
  169. package/components/block-single-responsive-image-v3/single-responsive-image-v3.js +0 -7
  170. package/components/block-single-responsive-image-v3/single-responsive-image-v3.scss +0 -9
  171. package/components/block-single-responsive-image-v3/single-responsive-image-v3.twig +0 -24
  172. package/components/block-site-copyright-notice-v3/group_66296c3716b4f.json +0 -304
  173. package/components/block-site-copyright-notice-v3/index.html +0 -33
  174. package/components/block-site-copyright-notice-v3/site-copyright-notice-v3.js +0 -58
  175. package/components/block-site-copyright-notice-v3/site-copyright-notice-v3.scss +0 -21
  176. package/components/block-site-copyright-notice-v3/site-copyright-notice-v3.twig +0 -30
  177. package/components/block-site-logo-container-v3/group_687e3b887b508.json +0 -175
  178. package/components/block-site-logo-container-v3/site-logo-container-v3.js +0 -7
  179. package/components/block-site-logo-container-v3/site-logo-container-v3.scss +0 -29
  180. package/components/block-site-logo-container-v3/site-logo-container-v3.twig +0 -40
  181. package/components/block-site-title-and-tagline-v3/site-title-and-tagline-v3.js +0 -7
  182. package/components/block-site-title-and-tagline-v3/site-title-and-tagline-v3.scss +0 -16
  183. package/components/block-site-title-and-tagline-v3/site-title-and-tagline-v3.twig +0 -24
  184. package/components/block-smash-balloon-social-media-v3/smash-balloon-social-media-v3.js +0 -8
  185. package/components/block-smash-balloon-social-media-v3/smash-balloon-social-media-v3.scss +0 -31
  186. package/components/block-smash-balloon-social-media-v3/smash-balloon-social-media-v3.twig +0 -18
  187. package/components/block-social-networks-v3/group_6891d4d7db414.json +0 -146
  188. package/components/block-social-networks-v3/social-networks-v3.js +0 -7
  189. package/components/block-social-networks-v3/social-networks-v3.scss +0 -7
  190. package/components/block-social-networks-v3/social-networks-v3.twig +0 -24
  191. package/components/block-spacer-v3/group_686b8cb48c708.json +0 -131
  192. package/components/block-spacer-v3/spacer-v3.js +0 -8
  193. package/components/block-spacer-v3/spacer-v3.scss +0 -19
  194. package/components/block-spacer-v3/spacer-v3.twig +0 -13
  195. package/components/block-spotify-embed-v3/group_67d04c4c4cf78.json +0 -120
  196. package/components/block-spotify-embed-v3/spotify-embed-v3.js +0 -7
  197. package/components/block-spotify-embed-v3/spotify-embed-v3.scss +0 -11
  198. package/components/block-spotify-embed-v3/spotify-embed-v3.twig +0 -23
  199. package/components/block-standard-content-v3/group_68655756737c9.json +0 -344
  200. package/components/block-standard-content-v3/standard-content-v3.js +0 -39
  201. package/components/block-standard-content-v3/standard-content-v3.scss +0 -11
  202. package/components/block-standard-content-v3/standard-content-v3.twig +0 -46
  203. package/components/block-sticky-buy-cta-v3/group_68b061bb56543.json +0 -172
  204. package/components/block-sticky-buy-cta-v3/sticky-buy-cta-v3.js +0 -7
  205. package/components/block-sticky-buy-cta-v3/sticky-buy-cta-v3.scss +0 -2
  206. package/components/block-sticky-buy-cta-v3/sticky-buy-cta-v3.twig +0 -92
  207. package/components/block-sub-group-container-v3/group_686ceba7d6066.json +0 -2142
  208. package/components/block-sub-group-container-v3/sub-group-container-v3.js +0 -9
  209. package/components/block-sub-group-container-v3/sub-group-container-v3.scss +0 -27
  210. package/components/block-sub-group-container-v3/sub-group-container-v3.twig +0 -59
  211. package/components/block-video-content-v3/group_687190b8d26df.json +0 -169
  212. package/components/block-video-content-v3/video-content-v3.js +0 -12
  213. package/components/block-video-content-v3/video-content-v3.scss +0 -123
  214. package/components/block-video-content-v3/video-content-v3.twig +0 -26
  215. package/components/component-accent-image-v3/accent-image-v3.twig +0 -119
  216. package/components/component-accent-image-v3/group_686cd5547efd2.json +0 -975
  217. package/components/component-accent-text-v3/accent-text-v3-extra.scss +0 -2
  218. package/components/component-accent-text-v3/accent-text-v3.scss +0 -60
  219. package/components/component-accent-text-v3/group_686b91fed8f5f.json +0 -220
  220. package/components/component-accordion-v3/accordion-v3.js +0 -113
  221. package/components/component-accordion-v3/accordion-v3.scss +0 -189
  222. package/components/component-accordion-v3/accordion-v3.twig +0 -39
  223. package/components/component-accordion-v3/group_66ab7edfc6d63.json +0 -535
  224. package/components/component-animations-style-v3/animations-style-v3.twig +0 -5
  225. package/components/component-animations-v3/animations-v3.scss +0 -161
  226. package/components/component-animations-v3/animations-v3.twig +0 -19
  227. package/components/component-animations-v3/group_689f39c37980a.json +0 -499
  228. package/components/component-better-reviews-v3/better-reviews-v3.scss +0 -137
  229. package/components/component-block-padding-v3/block-padding-v3.scss +0 -64
  230. package/components/component-block-padding-v3/block-padding-v3.twig +0 -33
  231. package/components/component-block-padding-v3/group_689f66f3e26df.json +0 -535
  232. package/components/component-block-settings-v3/block-settings-v3.scss +0 -46
  233. package/components/component-block-settings-v3/block-settings-v3.twig +0 -34
  234. package/components/component-block-settings-v3/group_689f649af2ac4.json +0 -983
  235. package/components/component-blockquote-v3/blockquote-v3.scss +0 -54
  236. package/components/component-box-shadow-v3/box-shadow-v3.scss +0 -12
  237. package/components/component-buy-now-button-v3/buy-now-buttons-v3.twig +0 -69
  238. package/components/component-carousel-fields-v3/group_686fd30f4d873.json +0 -3025
  239. package/components/component-child-block-video-fields/group_6852a4f384204.json +0 -536
  240. package/components/component-content-box-settings-v3/content-box-settings-v3.scss +0 -205
  241. package/components/component-content-box-settings-v3/content-box-settings-v3.twig +0 -156
  242. package/components/component-content-box-settings-v3/group_686e6ec702acc.json +0 -1729
  243. package/components/component-content-box-v3/content-box-v3.js +0 -6
  244. package/components/component-content-box-v3/content-box-v3.scss +0 -28
  245. package/components/component-content-box-v3/content-box-v3.twig +0 -23
  246. package/components/component-content-box-v3/group_686b8a4f1fe5d.json +0 -568
  247. package/components/component-content-image-v3/content-image-v3.scss +0 -33
  248. package/components/component-content-image-v3/content-image-v3.twig +0 -77
  249. package/components/component-content-image-v3/group_68722935c428f.json +0 -647
  250. package/components/component-core-body-close-v3/core-body-close-v3.twig +0 -2
  251. package/components/component-core-body-open-v3/core-body-open-v3.twig +0 -32
  252. package/components/component-core-group-container-styles-v3/core-group-container-styles-v3.scss +0 -48
  253. package/components/component-core-head-v3/core-head-v3.twig +0 -62
  254. package/components/component-cta-selection-v3/cta-selection-v3.twig +0 -256
  255. package/components/component-cta-selection-v3/group_686e93eb832a6.json +0 -1117
  256. package/components/component-e-shop-settings-v3/e-shop-settings-v3.twig +0 -114
  257. package/components/component-element-positioning-v3/element-positioning-v3.scss +0 -41
  258. package/components/component-element-positioning-v3/element-positioning-v3.twig +0 -42
  259. package/components/component-element-positioning-v3/group_6882281544263.json +0 -635
  260. package/components/component-endpoints/endpoints.php +0 -32
  261. package/components/component-flex-layout-container-v3/flex-layout-container-v3.scss +0 -38
  262. package/components/component-flex-layout-container-v3/flex-layout-container-v3.twig +0 -28
  263. package/components/component-flex-layout-container-v3/group_6887a026bbc33.json +0 -773
  264. package/components/component-global-content-max-width-v3/global-content-max-width-v3.twig +0 -10
  265. package/components/component-global-content-max-width-v3/group_63c83de4f0a99.json +0 -58
  266. package/components/component-gradient-overlay-v3/gradient-overlay-v3.scss +0 -43
  267. package/components/component-gradient-overlay-v3/gradient-overlay-v3.twig +0 -58
  268. package/components/component-gradient-overlay-v3/group_686fd9ca50b63.json +0 -495
  269. package/components/component-grid-gap-mults-v3/grid-gap-mults-v3.twig +0 -10
  270. package/components/component-grid-gap-mults-v3/group_689221b94ce69.json +0 -220
  271. package/components/component-grid-layout-container-v3/grid-layout-container-v3.scss +0 -154
  272. package/components/component-grid-layout-container-v3/grid-layout-container-v3.twig +0 -88
  273. package/components/component-grid-layout-container-v3/group_6882282e65bf2.json +0 -1525
  274. package/components/component-grid-layout-element-v3/grid-layout-element-v3.scss +0 -47
  275. package/components/component-grid-layout-element-v3/grid-layout-element-v3.twig +0 -23
  276. package/components/component-grid-layout-element-v3/group_68822860bda9f.json +0 -728
  277. package/components/component-nav-menu-v3/group_68da703f710ff.json +0 -432
  278. package/components/component-nav-menu-v3/nav-menu-v3.scss +0 -43
  279. package/components/component-nav-menu-v3/nav-menu-v3.twig +0 -75
  280. package/components/component-responsive-image-v3/group_6867bc53f1da8.json +0 -1515
  281. package/components/component-responsive-image-v3/responsive-image-v3.scss +0 -63
  282. package/components/component-responsive-image-v3/responsive-image-v3.twig +0 -71
  283. package/components/component-responsive-picture-element-v3/responsive-picture-element-v3.twig +0 -35
  284. package/components/component-responsive-show-hide/responsive-show-hide-v3.twig +0 -9
  285. package/components/component-social-media-share-v3/social-media-share-v3-extra.scss +0 -6
  286. package/components/component-social-media-share-v3/social-media-share-v3.scss +0 -131
  287. package/components/component-social-networks-v3/social-networks-v3.scss +0 -73
  288. package/components/component-social-networks-v3/social-networks-v3.twig +0 -43
  289. package/components/component-text-editor-settings-container-classes-v3/text-editor-settings-container-classes-v3.twig +0 -9
  290. package/components/component-text-editor-settings-element-classes-v3/text-editor-settings-element-classes-v3.twig +0 -13
  291. package/components/component-text-editor-settings-v3/group_687a4e2334e37.json +0 -1377
  292. package/components/component-text-editor-settings-variables-v3/text-editor-settings-variables-v3.twig +0 -61
  293. package/components/component-video-component-v3/video-component-v3.twig +0 -90
  294. package/components/component-video-fields-v3/group_6872282f44634.json +0 -1013
  295. package/components/component-video-trigger-button-v3/video-trigger-button-v3.twig +0 -14
  296. package/components/component-wysiwyg-editor-v3/group_6867e153af466.json +0 -127
  297. package/components/component-wysiwyg-editor-v3/wysiwyg-editor-v3.twig +0 -18
  298. package/components/core-block-editor-assets-v3/core-block-editor-assets-v3.php +0 -14
  299. package/components/core-core-block-render-function-v3/core-block-render-function-v3.php +0 -39
  300. package/components/core-core-design-settings-v3/core-design-settings-v3.php +0 -43
  301. package/components/core-core-post-overrides-v3/core-post-overrides-v3.php +0 -21
  302. package/components/core-core-themes/core-themes-v3.php +0 -68
  303. package/components/core-core-typography-v3/core-typography-v3.php +0 -239
  304. package/components/core-globals/globals.php +0 -39
  305. package/components/entrypoint-entry-point-classes-v3/entry-point-classes-v3.twig +0 -12
  306. package/components/entrypoint-entry-point-html-v3/entry-point-html-v3.twig +0 -19
  307. package/components/entrypoint-entry-point-style-v3/entry-point-style-v3.twig +0 -11
  308. package/components/fields-acf-wysiwyg-options-v3/acf-wysiwyg-options-v3.php +0 -221
  309. package/components/fields-animations-v3/animations-v3.scss +0 -127
  310. package/components/fields-archive-pages-v3/group_635e777ce46d4.json +0 -150
  311. package/components/fields-cocktail-info-v3/group_64c29b7f188ca.json +0 -686
  312. package/components/fields-content-container-settings-v3/content-container-settings-v3.scss +0 -213
  313. package/components/fields-content-container-v3/content-container-v3.js +0 -96
  314. package/components/fields-content-container-v3/content-container-v3.scss +0 -31
  315. package/components/fields-core-critical-v3/core-critical-v3.scss +0 -13
  316. package/components/fields-core-css-modules-v3/core-css-modules-v3.scss +0 -13
  317. package/components/fields-core-css-sizing-vars-v3/core-css-sizing-vars-v3.scss +0 -125
  318. package/components/fields-core-cta-v3/core-cta-v3.scss +0 -276
  319. package/components/fields-core-generic-v3/core-generic-v3.scss +0 -299
  320. package/components/fields-core-root-variables-v3/core-root-variables-v3.scss +0 -47
  321. package/components/fields-core-typography-mixins-v3/core-typography-mixins-v3.scss +0 -1080
  322. package/components/fields-core-typography-v3/core-typography-v3.scss +0 -457
  323. package/components/fields-core-wordpress-block-editor-preview-v3/core-wordpress-block-editor-preview-v3.js +0 -270
  324. package/components/fields-core-wordpress-block-editor-preview-v3/core-wordpress-block-editor-preview-v3.scss +0 -106
  325. package/components/fields-drink-responsibly-notice-v3/group_68751257883ad.json +0 -266
  326. package/components/fields-dynamic-critical-css-v3/group_65abcd463e8d0.json +0 -126
  327. package/components/fields-e-shop-settings-v3/e-shop-settings-v3.twig +0 -87
  328. package/components/fields-e-shop-settings-v3/group_650b24b4e623d.json +0 -803
  329. package/components/fields-global-preload-v3/group_65e0bd35e781b.json +0 -289
  330. package/components/fields-image-management-service-v3/group_677813165b633.json +0 -149
  331. package/components/fields-ingredients-list/group_6900f19dadebf.json +0 -225
  332. package/components/fields-modal-popup-content-v3/group_689876f1ee3fc.json +0 -403
  333. package/components/fields-modal-popup-content-v3/modal-popup-content-v3.twig +0 -18
  334. package/components/fields-post-info-v3/group_6867bbe167dd2.json +0 -1089
  335. package/components/fields-product-info-v3/group_689098dd3a131.json +0 -721
  336. package/components/fields-upload-filesize-limit-v3/group_659d259760a1d.json +0 -56
  337. package/components/fields-video-management-services-v3/group_67b4cac05cb30.json +0 -146
  338. package/components/webc-counter-display/counter-display.css +0 -2
  339. package/components/webc-counter-display/counter-display.html +0 -5
  340. package/components/webc-counter-display/counter-display.js +0 -30
  341. package/components/webc-counter-display/index.html +0 -30
  342. package/components/webc-layout-container/index.html +0 -108
  343. package/components/webc-layout-container/layout-container.css +0 -9
  344. package/components/webc-layout-container/layout-container.html +0 -5
  345. package/components/webc-layout-container/layout-container.js +0 -22
  346. package/components/webc-loadmore-trigger/index.html +0 -30
  347. package/components/webc-loadmore-trigger/loadmore-trigger.css +0 -20
  348. package/components/webc-loadmore-trigger/loadmore-trigger.html +0 -6
  349. package/components/webc-loadmore-trigger/loadmore-trigger.js +0 -34
  350. package/components/webc-post-carousel-display-module/index.html +0 -30
  351. package/components/webc-post-carousel-display-module/post-carousel-display-module.css +0 -36
  352. package/components/webc-post-carousel-display-module/post-carousel-display-module.html +0 -5
  353. package/components/webc-post-carousel-display-module/post-carousel-display-module.js +0 -48
  354. package/components/webc-post-filter-module/dev-content/amber.webp +0 -0
  355. package/components/webc-post-filter-module/dev-content/bluey.webp +0 -0
  356. package/components/webc-post-filter-module/dev-content/chucky-vanille.webp +0 -0
  357. package/components/webc-post-filter-module/dev-content/dev-content.js +0 -347
  358. package/components/webc-post-filter-module/dev-content/dev-contentlocal.js +0 -362
  359. package/components/webc-post-filter-module/dev-content/fat-gigio-basket-life.webp +0 -0
  360. package/components/webc-post-filter-module/dev-content/fat-gigio-kitten.webp +0 -0
  361. package/components/webc-post-filter-module/dev-content/fat-gigio-sleepy.webp +0 -0
  362. package/components/webc-post-filter-module/dev-content/kai-lounging.webp +0 -0
  363. package/components/webc-post-filter-module/dev-content/kai-selfie.webp +0 -0
  364. package/components/webc-post-filter-module/dev-content/kai.webp +0 -0
  365. package/components/webc-post-filter-module/dev-content/lulu-mad.webp +0 -0
  366. package/components/webc-post-filter-module/dev-content/lulu-serious.webp +0 -0
  367. package/components/webc-post-filter-module/dev-content/martha-on-the-mat.webp +0 -0
  368. package/components/webc-post-filter-module/dev-content/max-on-the-mat.webp +0 -0
  369. package/components/webc-post-filter-module/dev-content/mephy-dreams-of-mice.webp +0 -0
  370. package/components/webc-post-filter-module/dev-content/mr-business-doing-work.webp +0 -0
  371. package/components/webc-post-filter-module/dev-content/mr-business-on-top.webp +0 -0
  372. package/components/webc-post-filter-module/dev-content/peanut-keeping-an-eye.webp +0 -0
  373. package/components/webc-post-filter-module/dev-content/pete-at-work.webp +0 -0
  374. package/components/webc-post-filter-module/dev-content/pete-bath.webp +0 -0
  375. package/components/webc-post-filter-module/dev-content/pete-dinosaur.webp +0 -0
  376. package/components/webc-post-filter-module/dev-content/pete-lawn.webp +0 -0
  377. package/components/webc-post-filter-module/dev-content/pete-snacks.webp +0 -0
  378. package/components/webc-post-filter-module/dev-content/ramses-kitten.webp +0 -0
  379. package/components/webc-post-filter-module/dev-content/ramses-school-day.webp +0 -0
  380. package/components/webc-post-filter-module/dev-content/ramses-tired.webp +0 -0
  381. package/components/webc-post-filter-module/dev-content/remy-garden-contemplation.webp +0 -0
  382. package/components/webc-post-filter-module/dev-content/sky-field.webp +0 -0
  383. package/components/webc-post-filter-module/dev-content/sky-luxury-2.webp +0 -0
  384. package/components/webc-post-filter-module/dev-content/sky-luxury.webp +0 -0
  385. package/components/webc-post-filter-module/dev-content/sky-puppy-good-dog.webp +0 -0
  386. package/components/webc-post-filter-module/dev-content/sky-puppy-pose.webp +0 -0
  387. package/components/webc-post-filter-module/dev-content/sky-security.webp +0 -0
  388. package/components/webc-post-filter-module/dev-content/vanille-asleep.webp +0 -0
  389. package/components/webc-post-filter-module/dev-content/vanille-bass.webp +0 -0
  390. package/components/webc-post-filter-module/dev-content/vanille-party.webp +0 -0
  391. package/components/webc-post-filter-module/dev-content/vanille-puppy-eyes.webp +0 -0
  392. package/components/webc-post-filter-module/dev-content/vanille-puppy.webp +0 -0
  393. package/components/webc-post-filter-module/index.html +0 -30
  394. package/components/webc-post-filter-module/post-filter-module.css +0 -59
  395. package/components/webc-post-filter-module/post-filter-module.html +0 -13
  396. package/components/webc-post-filter-module/post-filter-module.js +0 -359
  397. package/components/webc-post-filter-module-no-group/index.html +0 -30
  398. package/components/webc-post-filter-module-no-group/post-filter-module-no-group.css +0 -59
  399. package/components/webc-post-filter-module-no-group/post-filter-module-no-group.html +0 -13
  400. package/components/webc-post-filter-module-no-group/post-filter-module-no-group.js +0 -312
  401. package/components/webc-post-grid-display-module/index.html +0 -30
  402. package/components/webc-post-grid-display-module/post-grid-display-module.css +0 -42
  403. package/components/webc-post-grid-display-module/post-grid-display-module.html +0 -6
  404. package/components/webc-post-grid-display-module/post-grid-display-module.js +0 -48
  405. package/components/webc-ptfg-9000/index.html +0 -108
  406. package/components/webc-ptfg-9000/ptfg-9000.css +0 -14
  407. package/components/webc-ptfg-9000/ptfg-9000.html +0 -1
  408. package/components/webc-ptfg-9000/ptfg-9000.js +0 -42
  409. package/components/webc-responsive-image/index.html +0 -108
  410. package/components/webc-responsive-image/layout-container.css +0 -9
  411. package/components/webc-responsive-image/layout-container.js +0 -22
  412. package/components/webc-responsive-image/responsive-image.html +0 -15
  413. package/components/webc-slot-test/slot-test.html +0 -25
  414. package/components/webc-text-input-trigger/index.html +0 -30
  415. package/components/webc-text-input-trigger/text-input-trigger.css +0 -6
  416. package/components/webc-text-input-trigger/text-input-trigger.html +0 -4
  417. package/components/webc-text-input-trigger/text-input-trigger.js +0 -33
  418. package/components/webc-toggle-trigger/index.html +0 -30
  419. package/components/webc-toggle-trigger/toggle-trigger.css +0 -13
  420. package/components/webc-toggle-trigger/toggle-trigger.html +0 -8
  421. package/components/webc-toggle-trigger/toggle-trigger.js +0 -53
  422. package/createDynamicBlockScss-v3.js +0 -25
  423. package/createJsAssets-v3.js +0 -35
  424. package/createJsAssets.js +0 -31
  425. package/createNewBlock.js +0 -131
  426. package/createNewChildBlock2.js +0 -142
  427. package/createPreviewScss.js +0 -35
  428. package/datalayer-tools.mjs +0 -2
  429. package/duplicateBlock.js +0 -123
  430. package/esbuild.mjs +0 -87
  431. package/exportAllBlocks.js +0 -144
  432. package/exportBlock.js +0 -109
  433. package/exportChildBlock.js +0 -102
  434. package/exportCustomCachesToLibrary.js +0 -73
  435. package/exportEntrypointToLibrary.js +0 -76
  436. package/exportImagesToLibrary.js +0 -68
  437. package/exportSEOExtrasToLibrary.js +0 -73
  438. package/exportToLibrary.js +0 -548
  439. package/importBlock.js +0 -92
  440. package/importChildBlock.js +0 -76
  441. package/install-component.js +0 -204
  442. package/list-components.js +0 -9
  443. package/new-block-templates/template-block-json.js +0 -37
  444. package/new-block-templates/template-default.js +0 -21
  445. package/new-block-templates/template-js-blank.js +0 -12
  446. package/new-block-templates/template-scss-blank.js +0 -6
  447. package/no-audio.vtt +0 -4
  448. package/onion-loader-dev.js +0 -260
  449. package/onion-loader-local.js +0 -222
  450. package/public/.gitkeep +0 -0
  451. package/public/assetList.mjs +0 -3
  452. package/public/block-accent-image-v3/accent-image-v3.css +0 -2
  453. package/public/block-accent-image-v3/accent-image-v3.js +0 -7
  454. package/public/block-accordion-v3/accordion-v3.css +0 -380
  455. package/public/block-accordion-v3/accordion-v3.js +0 -117
  456. package/public/block-back-to-top-button-v3/back-to-top-button-v3.css +0 -64
  457. package/public/block-back-to-top-button-v3/back-to-top-button-v3.js +0 -12
  458. package/public/block-betterreviews-display-v3/betterreviews-display-v3.css +0 -95
  459. package/public/block-betterreviews-display-v3/betterreviews-display-v3.js +0 -7
  460. package/public/block-block-interactions-v3/block-interactions-v3.css +0 -36
  461. package/public/block-block-interactions-v3/block-interactions-v3.js +0 -44
  462. package/public/block-carousel-multi-layout-v3/carousel-multi-layout-v3.css +0 -187
  463. package/public/block-carousel-multi-layout-v3/carousel-multi-layout-v3.js +0 -185
  464. package/public/block-cocktail-recipe-v3/cocktail-recipe-v3.css +0 -268
  465. package/public/block-cocktail-recipe-v3/cocktail-recipe-v3.js +0 -93
  466. package/public/block-cover-link-v3/cover-link-v3.css +0 -8
  467. package/public/block-cover-link-v3/cover-link-v3.js +0 -7
  468. package/public/block-divider-v3/divider-v3.css +0 -74
  469. package/public/block-divider-v3/divider-v3.js +0 -7
  470. package/public/block-featured-image-gallery-v3/featured-image-gallery-v3.css +0 -98
  471. package/public/block-featured-image-gallery-v3/featured-image-gallery-v3.js +0 -44
  472. package/public/block-form-selection-v3/form-selection-v3.css +0 -31
  473. package/public/block-form-selection-v3/form-selection-v3.js +0 -61
  474. package/public/block-gradient-layer-v3/gradient-layer-v3.css +0 -45
  475. package/public/block-gradient-layer-v3/gradient-layer-v3.js +0 -7
  476. package/public/block-group-container-v3/group-container-v3.css +0 -303
  477. package/public/block-group-container-v3/group-container-v3.js +0 -7
  478. package/public/block-lottie-content-v3/lottie-content-v3.css +0 -0
  479. package/public/block-lottie-content-v3/lottie-content-v3.js +0 -25
  480. package/public/block-market-selector-v3/market-selector-v3.css +0 -136
  481. package/public/block-market-selector-v3/market-selector-v3.js +0 -7
  482. package/public/block-modal-form-v3/modal-form-v3.css +0 -0
  483. package/public/block-modal-form-v3/modal-form-v3.js +0 -44
  484. package/public/block-nav-menu-container-v3/nav-menu-container-v3.css +0 -3
  485. package/public/block-nav-menu-container-v3/nav-menu-container-v3.js +0 -7
  486. package/public/block-post-info-v3/post-info-v3.css +0 -1148
  487. package/public/block-post-info-v3/post-info-v3.js +0 -7
  488. package/public/block-post-type-filter-grid-v3/post-type-filter-grid-v3.css +0 -873
  489. package/public/block-post-type-filter-grid-v3/post-type-filter-grid-v3.js +0 -13
  490. package/public/block-product-info-v3/product-info-v3.css +0 -846
  491. package/public/block-product-info-v3/product-info-v3.js +0 -7
  492. package/public/block-raw-html-v3/raw-html-v3.css +0 -0
  493. package/public/block-raw-html-v3/raw-html-v3.js +0 -7
  494. package/public/block-responsive-table-v3/responsive-table-v3.css +0 -50
  495. package/public/block-responsive-table-v3/responsive-table-v3.js +0 -7
  496. package/public/block-scrolling-banner-v3/scrolling-banner-v3.css +0 -93
  497. package/public/block-scrolling-banner-v3/scrolling-banner-v3.js +0 -118
  498. package/public/block-section-separator-v3/section-separator-v3.css +0 -43
  499. package/public/block-section-separator-v3/section-separator-v3.js +0 -7
  500. package/public/block-single-column-container-v3/single-column-container-v3.css +0 -14
  501. package/public/block-single-column-container-v3/single-column-container-v3.js +0 -7
  502. package/public/block-single-responsive-image-v3/single-responsive-image-v3.css +0 -61
  503. package/public/block-single-responsive-image-v3/single-responsive-image-v3.js +0 -7
  504. package/public/block-site-copyright-notice-v3/site-copyright-notice-v3.css +0 -20
  505. package/public/block-site-copyright-notice-v3/site-copyright-notice-v3.js +0 -44
  506. package/public/block-site-logo-container-v3/site-logo-container-v3.css +0 -18
  507. package/public/block-site-logo-container-v3/site-logo-container-v3.js +0 -7
  508. package/public/block-site-title-and-tagline-v3/site-title-and-tagline-v3.css +0 -12
  509. package/public/block-site-title-and-tagline-v3/site-title-and-tagline-v3.js +0 -7
  510. package/public/block-smash-balloon-social-media-v3/smash-balloon-social-media-v3.css +0 -25
  511. package/public/block-smash-balloon-social-media-v3/smash-balloon-social-media-v3.js +0 -8
  512. package/public/block-social-networks-v3/social-networks-v3.css +0 -74
  513. package/public/block-social-networks-v3/social-networks-v3.js +0 -7
  514. package/public/block-spacer-v3/spacer-v3.css +0 -16
  515. package/public/block-spacer-v3/spacer-v3.js +0 -2
  516. package/public/block-spotify-embed-v3/spotify-embed-v3.css +0 -7
  517. package/public/block-spotify-embed-v3/spotify-embed-v3.js +0 -7
  518. package/public/block-standard-content-v3/standard-content-v3.css +0 -423
  519. package/public/block-standard-content-v3/standard-content-v3.js +0 -7
  520. package/public/block-sticky-buy-cta-v3/sticky-buy-cta-v3.css +0 -0
  521. package/public/block-sticky-buy-cta-v3/sticky-buy-cta-v3.js +0 -7
  522. package/public/block-sub-group-container-v3/sub-group-container-v3.css +0 -288
  523. package/public/block-sub-group-container-v3/sub-group-container-v3.js +0 -2
  524. package/public/block-video-content-v3/video-content-v3.css +0 -102
  525. package/public/block-video-content-v3/video-content-v3.js +0 -11
  526. package/public/dynamicBlockScss-v3.css +0 -6392
  527. package/public/dynamicBlockScss-v3.scss +0 -37
  528. package/public/jsAssets.mjs +0 -4
  529. package/public/publicBundleBase.css +0 -4742
  530. package/public/publicBundleBase.scss +0 -11
  531. package/removeBlock.js +0 -124
  532. package/update-all-components.js +0 -135
  533. package/update-component.js +0 -537
  534. package/update-template.js +0 -537
  535. /package/{.prettierrc → onion-videocontroller/.prettierrc} +0 -0
  536. /package/{breakpoints.scss → onion-videocontroller/breakpoints.scss} +0 -0
package/index.js ADDED
@@ -0,0 +1,10 @@
1
+ import VideoController from './onion-videocontroller/onion-videocontroller.js';
2
+ import ModalController from './onion-modalcontroller/onion-modalcontroller.js';
3
+ export * from './onion-utils.mjs';
4
+ export * from './entry-animation-observer.js';
5
+
6
+ export default VideoController;
7
+ export { VideoController, ModalController };
8
+ export { default as modalController } from './onion-modalcontroller/onion-modalcontroller.js';
9
+ export { default as videoController } from './onion-videocontroller/onion-videocontroller.js';
10
+ export { default as onionLoader } from './onion-loader.js';
package/onion-loader.js CHANGED
@@ -52,27 +52,35 @@ function lazyloaderInit() {
52
52
  options.debugLogMessages && console.log('Lazy Loader initialized!');
53
53
  options.lazyBlocksToSearchFor = [];
54
54
  assetArray.forEach((asset) => {
55
- if (
56
- options.filePrefix === 'nodemodules' &&
57
- asset.assetKey.includes('-v3')
58
- ) {
55
+ // if (
56
+ // asset.assetKey.includes('-v3') &&
57
+ // !asset.assetKey.includes('sub-block')
58
+ // ) {
59
+ // options.assetMap[asset.assetKey] = {
60
+ // js: () =>
61
+ // import(
62
+ // `Assets/blocks/${asset.assetKey}/${asset.assetKey}${options.fileSuffixJs}`
63
+ // ),
64
+ // // import(
65
+ // // `NodeModules/@total_onion/onion-library/components/block-${asset.assetKey}/${asset.assetKey}${options.fileSuffixJs}`
66
+ // // ),
67
+ // css: options.ignoreCss === true
68
+ // };
69
+ // }
70
+ if (asset.assetKey.includes('-v3')) {
59
71
  options.assetMap[asset.assetKey] = {
60
72
  js: () =>
61
73
  import(
62
- `NodeModules/@total_onion/onion-library/components/block-${asset.assetKey}/${asset.assetKey}${options.fileSuffixJs}`
74
+ `Assets/sub-blocks/${asset.assetKey}/${asset.assetKey}${options.fileSuffixJs}`
63
75
  ),
64
- css: options.ignoreCss === true
76
+ css: options.ignoreCss === false
65
77
  };
66
- } else {
67
78
  }
68
- if (
69
- options.filePrefix === 'nodemodules' &&
70
- !asset.assetKey.includes('-v3')
71
- ) {
79
+ if (!asset.assetKey.includes('-v3')) {
72
80
  options.assetMap[asset.assetKey] = {
73
81
  js: () =>
74
82
  import(
75
- `Assets/js/blocks/${asset.assetKey}${options.fileSuffixJs}`
83
+ `Assets/blocks/${asset.assetKey}/${asset.assetKey}${options.fileSuffixJs}`
76
84
  ),
77
85
  css: options.ignoreCss === false
78
86
  };
@@ -236,7 +244,7 @@ export function loadCss(assetKey) {
236
244
  assetKey.includes('-v3')
237
245
  ) {
238
246
  import(
239
- /* webpackChunkName: "[request]" */ `NodeModules/@total_onion/onion-library/components/block-${assetKey}/${assetKey}${options.fileSuffixCss}`
247
+ /* webpackChunkName: "[request]" */ `Assets/sub-blocks/${assetKey}/${assetKey}${options.fileSuffixCss}`
240
248
  ).then(() => resolve(true));
241
249
  } else if (
242
250
  options.css === true &&
@@ -244,7 +252,7 @@ export function loadCss(assetKey) {
244
252
  !assetKey.includes('-v3')
245
253
  ) {
246
254
  import(
247
- /* webpackChunkName: "[request]" */ `Assets/scss/blocks/${assetKey}${options.fileSuffixCss}`
255
+ /* webpackChunkName: "[request]" */ `Assets/blocks/${assetKey}/${assetKey}${options.fileSuffixCss}`
248
256
  ).then(() => resolve(true));
249
257
  } else {
250
258
  return resolve(true);
@@ -0,0 +1,2 @@
1
+ # onion-modalcontroller
2
+ Pop up modal controller
@@ -0,0 +1,183 @@
1
+ export default class modalController {
2
+ constructor(settings = {}) {
3
+ let defaultGlobalSettings = {
4
+ bodyClass: "modal-active",
5
+ activeStateClass: "modal-active",
6
+ enableDebugLogs: true,
7
+ userInteracted: false,
8
+ addCloseButton: true,
9
+ closeSelector: "#modal-controller-popup__close-btn",
10
+ closeDelay: 1,
11
+ closingClass: "something",
12
+ activateDelay: 0,
13
+ lenis: false,
14
+ };
15
+ this.scanForNewTriggers();
16
+
17
+ console.log("hello!");
18
+
19
+ if (modalController.instance instanceof modalController) {
20
+ return modalController.instance;
21
+ }
22
+ modalController.instance = this;
23
+ this.globalSettings = { ...defaultGlobalSettings, ...settings };
24
+ this.enableDebugLogs = this.globalSettings.enableDebugLogs;
25
+ this.handleModalTriggers();
26
+ this.handleBgClicks();
27
+ }
28
+
29
+ scanForNewTriggers() {
30
+ this.globalModalTriggers = document.body.querySelectorAll(
31
+ "[data-modalpopuptrigger]",
32
+ );
33
+ }
34
+ handleBgClicks() {
35
+ window.addEventListener("click", (event) => {
36
+ const modalPopup = document.getElementById("modal-controller-popup");
37
+ this.closePopupOnClickOutside(event, modalPopup);
38
+ });
39
+ }
40
+ handleCloseButtonClicks() {
41
+ const modalPopup = document.getElementById("modal-controller-popup");
42
+ if (!modalPopup) {
43
+ return;
44
+ }
45
+ const closeButtons = modalPopup.querySelectorAll(
46
+ this.globalSettings.closeSelector || "#modal-controller-popup__close-btn",
47
+ );
48
+ closeButtons.forEach((closeButton) => {
49
+ if (closeButton.dataset.modalpopupCloseBound === "true") {
50
+ return;
51
+ }
52
+ closeButton.dataset.modalpopupCloseBound = "true";
53
+ closeButton.addEventListener("click", () => {
54
+ const modalPopup = document.getElementById("modal-controller-popup");
55
+ this.closePopup(modalPopup);
56
+ });
57
+ });
58
+ }
59
+ handleModalTriggers() {
60
+ this.globalModalTriggers.forEach((trigger) => {
61
+ trigger.addEventListener("click", () => {
62
+ this.triggerModalPopup(trigger.dataset.modalpopuptrigger);
63
+ });
64
+ });
65
+ }
66
+ triggerModalPopup(triggerName) {
67
+ let modalPopup = document.getElementById("modal-controller-popup");
68
+ if (!modalPopup) {
69
+ const modalPopupHtml = `<div class="modal-controller-popup" id="modal-controller-popup">
70
+ <div class="modal-controller-popup__container">
71
+ ${this.globalSettings.addCloseButton ? '<span class="modal-controller-popup__close-btn" id="modal-controller-popup__close-btn"></span>' : ""}
72
+ <div class="modal-controller-popup__content"></div>
73
+ </div>
74
+ </div>`;
75
+ document.body.insertAdjacentHTML("beforeend", modalPopupHtml);
76
+ modalPopup = document.getElementById("modal-controller-popup");
77
+ }
78
+
79
+ if (!modalPopup) {
80
+ return;
81
+ }
82
+
83
+ const popupContent = document.querySelector(
84
+ ".modal-controller-popup__content",
85
+ );
86
+
87
+ if (!popupContent) {
88
+ return;
89
+ }
90
+
91
+ let templateContent;
92
+
93
+ const modalPopupContent = document.querySelector(
94
+ `[data-modalpopupcontent=${triggerName}]`,
95
+ );
96
+
97
+ if (!modalPopupContent) {
98
+ this.closePopup(modalPopup);
99
+ return;
100
+ }
101
+
102
+ //Check if the actual content element is already in the popup content container, if not - move it there.
103
+ if (
104
+ !popupContent.querySelector(`[data-modalpopupcontent=${triggerName}]`)
105
+ ) {
106
+ if (modalPopupContent) {
107
+ templateContent = modalPopupContent;
108
+ }
109
+
110
+ if (modalPopupContent.nodeName === "TEMPLATE") {
111
+ templateContent = modalPopupContent.content;
112
+ }
113
+
114
+ popupContent.appendChild(templateContent);
115
+ } else {
116
+ templateContent = popupContent.querySelector(
117
+ `[data-modalpopupcontent=${triggerName}]`,
118
+ );
119
+ }
120
+
121
+ const activateDelay = Number(this.globalSettings.activateDelay) || 0;
122
+ if (activateDelay > 0) {
123
+ templateContent.classList.remove("active");
124
+ window.setTimeout(() => {
125
+ templateContent.classList.add("active");
126
+ }, activateDelay);
127
+ } else {
128
+ templateContent.classList.add("active");
129
+ }
130
+ requestAnimationFrame(() => {
131
+ modalPopup.classList.add("open");
132
+ document.documentElement.classList.add("lock-position");
133
+ if (this.globalSettings.lenis) {
134
+ document.body.dataset.lenisPrevent = "true";
135
+ }
136
+ });
137
+ this.handleCloseButtonClicks();
138
+ }
139
+ closePopup(modalPopup) {
140
+ if (!modalPopup) {
141
+ return;
142
+ }
143
+ modalPopup.classList.remove("open");
144
+ document.documentElement.classList.remove("lock-position");
145
+ if (this.globalSettings.lenis) {
146
+ delete document.body.dataset.lenisPrevent;
147
+ }
148
+ const popupContent = modalPopup.querySelector(
149
+ ".modal-controller-popup__content",
150
+ );
151
+
152
+ if (popupContent) {
153
+ const activeContents = popupContent.querySelectorAll(
154
+ "[data-modalpopupcontent].active",
155
+ );
156
+ const closeDelay = Number(this.globalSettings.closeDelay) || 0;
157
+ const closingClass = this.globalSettings.closingClass;
158
+
159
+ if (closeDelay > 0 && closingClass) {
160
+ activeContents.forEach((activeContent) => {
161
+ activeContent.classList.add(closingClass);
162
+ });
163
+ setTimeout(() => {
164
+ activeContents.forEach((activeContent) => {
165
+ activeContent.classList.remove(closingClass);
166
+ });
167
+ }, closeDelay);
168
+ }
169
+
170
+ activeContents.forEach((activeContent) => {
171
+ activeContent.classList.remove("active");
172
+ });
173
+ }
174
+ }
175
+ closePopupOnClickOutside(event, modalPopup) {
176
+ if (event.target === modalPopup) {
177
+ this.closePopup(modalPopup);
178
+ }
179
+ }
180
+ setGlobalSettings(settings = {}) {
181
+ this.globalSettings = { ...this.globalSettings, ...settings };
182
+ }
183
+ }
package/onion-utils.mjs CHANGED
@@ -88,24 +88,24 @@ export function inCriticalCssConfig(assetKey) {
88
88
  return true;
89
89
  }
90
90
 
91
- /**
92
- * Dynamically loads the css for the block if it has not already been included in critical css or the css property is set to false.
93
- * @param {string} assetKey The assetkey string of the block.
94
- * @param {object} options The options object which will at the very least contain the css property set to true.
95
- * @returns {promise}
96
- */
97
- export function loadCss(assetKey, options = { css: true }) {
98
- const promise = new Promise((resolve) => {
99
- if (options.css === true && !inCriticalCssConfig(assetKey)) {
100
- import(
101
- /* webpackChunkName: "[request]" */ `Assets/scss/blocks/${assetKey}.scss`
102
- ).then(() => resolve(true));
103
- } else {
104
- return resolve(true);
105
- }
106
- });
107
- return promise;
108
- }
91
+ // /**
92
+ // * Dynamically loads the css for the block if it has not already been included in critical css or the css property is set to false.
93
+ // * @param {string} assetKey The assetkey string of the block.
94
+ // * @param {object} options The options object which will at the very least contain the css property set to true.
95
+ // * @returns {promise}
96
+ // */
97
+ // export function loadCss(assetKey, options = { css: true }) {
98
+ // const promise = new Promise((resolve) => {
99
+ // if (options.css === true && !inCriticalCssConfig(assetKey)) {
100
+ // import(
101
+ // /* webpackChunkName: "[request]" */ `Assets/scss/blocks/${assetKey}.scss`
102
+ // ).then(() => resolve(true));
103
+ // } else {
104
+ // return resolve(true);
105
+ // }
106
+ // });
107
+ // return promise;
108
+ // }
109
109
 
110
110
  /**
111
111
  * Checks for browser, device and OS and then adds the relevant classes to the html tag.
@@ -680,7 +680,6 @@ const api = {
680
680
  isEmailValid,
681
681
  isInViewport,
682
682
  isTablet,
683
- loadCss,
684
683
  mobileCheck,
685
684
  resizeDebouncer,
686
685
  supportsWebp,
@@ -0,0 +1,89 @@
1
+ # onion-videocontroller
2
+
3
+ Multi format video player with optional modal pop up.
4
+ The videocontroller houses multiple video implementations as modules which it calls upon depending on the type of video the user wishes to play. This way all the necessary code plus lazyloading optimisations can be implemented separately for each video type.
5
+ Given that the videocontroller builds a dictionary of all the video containers and video triggers that have been passed to it, it can do things like stop currently playing videos when a new video is started, regardless of which type of video they might be.
6
+
7
+ ## Install via npm or yarn with:
8
+
9
+ `npm install @pernod-ricard-global-cms/onion-videocontroller`
10
+ or
11
+ `yarn add @pernod-ricard-global-cms/onion-videocontroller`
12
+
13
+ ## Import the module in your js file with:
14
+
15
+ `import onion-videocontroller from '@pernod-ricard-global-cms/onion-videocontroller';`
16
+
17
+ Instantiate the class in your js file and pass a reference to an html element that is a parent of the video container.
18
+ In a typical cbl block js file this would be the block element, so it might look something like this.
19
+
20
+ `const videoController = new onion-videocontroller(block);`
21
+
22
+ ## HTML/Twig
23
+
24
+ To get the most functionality out of the box, this package should be installed along with the the cbl component library.
25
+
26
+ https://github.com/Chivas-Brothers/cbl-component-library
27
+
28
+ If you install the fields: video from the component library you will receive 2 twig files with the standardized selection of variables already wired up to attributes in the html. By default they will be copied to the views/components folder but you can choose to not run the install command for the video fields and copy the twigs to wherever you would prefer.
29
+
30
+ `video-component.twig`
31
+ `video-trigger-button.twig`
32
+
33
+ You can then call the twig snippets with an include like this.
34
+
35
+ `<section>`
36
+
37
+ {{ include("components/video-trigger-button.twig", {fields : fields, block : block, blockClassName: blockClassName}, with_context = false) }}
38
+
39
+ {{ include("components/video-component.twig", {fields : fields, block : block, blockClassName: blockClassName}, with_context = false) }}
40
+
41
+ `</section>`
42
+
43
+ The snippets don't need to be positioned in any special relationship to each other except that you need to put them somewhere within the container you intend to pass to the video controller.
44
+
45
+ The included twig files will receive the acf fields that are being passed to the block. Although it can work fine as it is, it is advisable to pass another variable with the classname of your block which will make handling the styling a little easier. You can do this by assigning the string of the classname to the blockClassName twig variable.
46
+ eg:
47
+
48
+ `<section>`
49
+
50
+ {% set blockClassName = 'simple-video-block' %}
51
+
52
+ {{ include("components/video-trigger-button.twig", {fields : fields, block : block, blockClassName: blockClassName}, with_context = false) }}
53
+
54
+ {{ include("components/video-component.twig", {fields : fields, block : block, blockClassName: blockClassName}, with_context = false) }}
55
+
56
+ `</section>`
57
+
58
+ ## Styling
59
+
60
+ You can choose to do all the styling yourself in which case there is nothing left to import. However, there are some basic styles exported as mixins which are very easy to override and can get you to a workable result very quickly. You can import them directly from the package folder into your scss file and then include the mixin in the scope of your parent block class.
61
+
62
+ `@use 'NodeModules/@pernod-ricard-global-cms/onion-videocontroller/vc-styles';`
63
+
64
+ `.parent-block-class { @include vc-styles.basic(); }`
65
+
66
+ There is also a mixin for adding default styling to the pop up modal which can be very handy. You can import that in a similar way, only this time it should be scoped to the html. The modal will be added and removed from the body tag, but overflow will need to added to the html in order to prevent scrolling. This is all build in to the modal styles
67
+
68
+ `@use 'NodeModules/@pernod-ricard-global-cms/onion-videocontroller/vc-styles';`
69
+
70
+ `html { @include vc-styles.modal(); }`
71
+
72
+ ## ACF Fields
73
+
74
+ All the fields in the twig video-component template are intended to correspond to the fields in the generic video field group in the acf custom field groups. This video group can be injected into blocks within a tab or cloned into more nested sections of blocks.
75
+ It is recommended to use this field group as otherwise some of the features of the controller may not work. If you can't use the acf field group for some reason you can still hard code all the variables into the html attribute slots on the video component and trigger. It won't be dynamic but it can still work.
76
+
77
+ ## Other useful features
78
+
79
+ Because it works as a singleton you can instantiate the videocontroller anywhere in your site and access some global methods.
80
+ Eg. Anywhere in the javascript on the page you can do,
81
+
82
+ `const videoController = new videcontroller();`
83
+ `videoController.stopAllVideos();`
84
+
85
+ These methods include:
86
+
87
+ - stopAllVideos(): This will stop all the videos on the page except for ones that have been assigned to autoplay.
88
+ - getGlobalSettings(): Returns the global videcontroller settings.
89
+ - getObjects(): Returns the collection of video containers and triggers that have been found by the controller.
@@ -1,4 +1,4 @@
1
- @use '../../breakpoints';
1
+ @use './breakpoints';
2
2
  @use 'sass:math';
3
3
 
4
4
  @function fontSize($size-px, $screen: '') {
@@ -1,5 +1,5 @@
1
- @use '../../breakpoints';
2
- @use '../fields-core-functions-v3/core-functions-v3';
1
+ @use './breakpoints';
2
+ @use './core-functions-v3';
3
3
  @use 'sass:math';
4
4
 
5
5
  @mixin textStyle() {
@@ -0,0 +1,240 @@
1
+ import youtubeVideo from './youtube-video.mjs';
2
+ import uploadVideo from './upload-video.mjs';
3
+ import vimeoVideo from './vimeo-video.mjs';
4
+ import {revealVideoElement, stopVideos, isWpAdmin} from './vcUtils.mjs';
5
+
6
+ export default class videoController {
7
+ constructor(parentContainer) {
8
+ const SRC_BREAKPOINT = 768;
9
+ let defaultGlobalSettings = {
10
+ srcBreakpoint: SRC_BREAKPOINT,
11
+ bodyClass: 'video-playing',
12
+ playingState: false,
13
+ playingStateClass: 'video-playing',
14
+ originDomain: globalThis.location?.origin,
15
+ enableDebugLogs: false,
16
+ isMobileSize: window.innerWidth < SRC_BREAKPOINT
17
+ };
18
+ if (parentContainer) {
19
+ this.videoContainers =
20
+ parentContainer.querySelectorAll('[data-videoid]');
21
+ }
22
+ this.videoReadyState = false;
23
+ if (videoController.instance instanceof videoController) {
24
+ videoController.instance.setVideoObjects(
25
+ this.videoReadyState,
26
+ this.videoContainers,
27
+ parentContainer
28
+ );
29
+ return videoController.instance;
30
+ }
31
+ videoController.instance = this;
32
+ this.globalSettings = defaultGlobalSettings;
33
+ this.enableDebugLogs = this.globalSettings.enableDebugLogs;
34
+ this.containerCollection = {};
35
+ this.setVideoObjects(
36
+ this.videoReadyState,
37
+ this.videoContainers,
38
+ this.triggers,
39
+ parentContainer
40
+ );
41
+ }
42
+ /**
43
+ * Method for setting up the video container objects and adding the listeners to the triggers
44
+ * @param {array} videoContainers - The video containers you want to add to the controller
45
+ * @param {array} triggers - The triggers you want to add to the controller
46
+ * @param {HTMLElement} parentContainer - The parent container of the video containers/triggers
47
+ */
48
+ setVideoObjects(videoReadyState, videoContainers, parentContainer) {
49
+ this.enableDebugLogs && console.log('Setting video Objects');
50
+ if (!videoContainers) {
51
+ this.enableDebugLogs &&
52
+ console.info(`Did not look for video containers`);
53
+ return;
54
+ }
55
+ if (videoContainers.length === 0) {
56
+ this.enableDebugLogs &&
57
+ console.info(
58
+ `could not find any video containers in ${parentContainer}`
59
+ );
60
+ return;
61
+ }
62
+
63
+ videoContainers.forEach((container) => {
64
+ if (!container) {
65
+ return;
66
+ }
67
+ const videoObject = {
68
+ videocontainer: container,
69
+ videotype: container.dataset?.videotype,
70
+ videoid: container.dataset?.videoid,
71
+ videoReadyState: videoReadyState,
72
+ videoplayer: false,
73
+ youtubeplayer: false,
74
+ vimeoplayer: false,
75
+ parentcontainer: parentContainer,
76
+ modalcontainer: '',
77
+ dataLayerPush: container.dataset.datalayerpush,
78
+ modal: Number(container.dataset?.modal),
79
+ isAdmin: isWpAdmin(),
80
+ fullscreen: Number(container.dataset?.fullscreen),
81
+ autoplay: this.setVideoAutoplay(container),
82
+ controls: Number(container.dataset?.controls),
83
+ loop: Number(container.dataset?.loop) || 0,
84
+ muted: Number(container.dataset?.muted) || 0,
85
+ sources: {
86
+ desktop: container.dataset?.desktopvideo,
87
+ mobile: container.dataset?.mobilevideo
88
+ },
89
+ instance: this,
90
+ globalSettings: this.getGlobalSettings()
91
+ };
92
+
93
+ if (this.containerCollection[videoObject.videoid]) {
94
+ let suffix = 1;
95
+ while (this.containerCollection[videoObject.videoid]) {
96
+ videoObject.videoid = videoObject.videoid + '-' + suffix;
97
+ suffix++;
98
+ }
99
+ }
100
+
101
+ let scopeEl = container.parentElement;
102
+ while (scopeEl && !scopeEl.hasAttribute('parentcontainer')) {
103
+ scopeEl = scopeEl.parentElement;
104
+ }
105
+
106
+ const triggerScope = scopeEl ?? document;
107
+ const triggers = triggerScope.querySelectorAll(
108
+ `[data-triggerid='${container.dataset?.videoid}']`
109
+ );
110
+
111
+ videoObject.triggerScope = triggerScope;
112
+
113
+ if (triggers.length === 0) {
114
+ this.enableDebugLogs &&
115
+ console.log(
116
+ `could not find any triggers in ${parentContainer}`
117
+ );
118
+ }
119
+
120
+ triggers.forEach((trigger) => {
121
+ if (trigger?.dataset?.triggerid) {
122
+ trigger.dataset.triggerid = videoObject.videoid;
123
+ trigger.addEventListener('click', () => {
124
+ this.triggerVideo(
125
+ this.containerCollection[trigger.dataset.triggerid]
126
+ );
127
+ });
128
+ } else {
129
+ this.enableDebugLogs &&
130
+ console.log(
131
+ trigger,
132
+ `was missing an id so the listener could not be attached`
133
+ );
134
+ }
135
+ });
136
+ videoObject.trigger = triggers;
137
+ this.containerCollection[videoObject.videoid] = videoObject;
138
+
139
+ if (!videoObject.videoReadyState) {
140
+ if (videoObject.autoplay == 1) {
141
+ this.loadingSpinner(videoObject);
142
+ }
143
+ if (videoObject.videotype === 'upload') {
144
+ console.log('id', videoObject.videoid);
145
+
146
+ uploadVideo.uploadedVideoInit(videoObject);
147
+ }
148
+ if (videoObject.videotype === 'youtube') {
149
+ youtubeVideo.youtubeInit(videoObject);
150
+ }
151
+ if (videoObject.videotype === 'vimeo') {
152
+ vimeoVideo.vimeoInit(videoObject);
153
+ }
154
+ }
155
+ });
156
+ }
157
+ setVideoReadyState(videoObject, isLoaded) {
158
+ videoObject.videoReadyState = isLoaded;
159
+ }
160
+ setVideoAutoplay(container) {
161
+ if (document.body.classList.contains('wp-admin')) {
162
+ return 0;
163
+ }
164
+
165
+ return this.globalSettings.isMobileSize
166
+ ? Number(container.dataset?.autoplayMobile) || 0
167
+ : Number(container.dataset?.autoplay) || 0;
168
+ }
169
+ /**
170
+ * Method to return the global settings for the video controller.
171
+ * @returns {Object} - the global settings object.
172
+ */
173
+ getGlobalSettings() {
174
+ return this.globalSettings;
175
+ }
176
+ /**
177
+ * Method to add or override the global controller settings.
178
+ * @param {Object} settings - Settings object that will be merged with the controller's existing settings.
179
+ */
180
+ setGlobalSettings(settings = {}) {
181
+ this.globalSettings = {...this.globalSettings, ...settings};
182
+ }
183
+ /**
184
+ * Method for getting the current collection of containers and triggers.
185
+ * @returns {Object} - Object container the container and triggers collections.
186
+ */
187
+ getObjects() {
188
+ const data = {
189
+ videos: this.containerCollection,
190
+ triggers: this.triggers
191
+ };
192
+ return data;
193
+ }
194
+ /**
195
+ * Method to determine which video to play and what type it is.
196
+ * @param {Object} videoObject - The video/trigger object that is used to identify which video element is being triggered.
197
+ */
198
+ triggerVideo(videoObject) {
199
+ if (!videoObject.instance) {
200
+ videoObject.instance = this;
201
+ }
202
+ if (!videoObject.globalSettings) {
203
+ videoObject.globalSettings = this.getGlobalSettings();
204
+ }
205
+ this.loadingSpinner(videoObject);
206
+ stopVideos(videoObject);
207
+ switch (videoObject.videotype) {
208
+ case 'upload':
209
+ uploadVideo.triggerUploadedVideo(videoObject);
210
+ break;
211
+ case 'youtube':
212
+ youtubeVideo.triggerYoutube(videoObject);
213
+ break;
214
+ case 'vimeo':
215
+ vimeoVideo.triggerVimeo(videoObject);
216
+ break;
217
+ default:
218
+ break;
219
+ }
220
+ }
221
+ stopAllVideos() {
222
+ stopVideos({videoid: '', instance: this}, true);
223
+ }
224
+ loadingSpinner(videoObject) {
225
+ const loadingWrapper = document.createElement('div');
226
+ loadingWrapper.className = 'loading-wrapper';
227
+ if (!videoObject.videocontainer) {
228
+ return;
229
+ }
230
+ videoObject.videocontainer.appendChild(loadingWrapper);
231
+ revealVideoElement(videoObject);
232
+
233
+ const checkVideoReadyState = setInterval(() => {
234
+ if (videoObject.videoReadyState === true) {
235
+ clearInterval(checkVideoReadyState);
236
+ videoObject.videocontainer.removeChild(loadingWrapper);
237
+ }
238
+ }, 100);
239
+ }
240
+ }