@shopgate/pwa-common 7.25.1-beta.1 → 7.25.1-beta.2

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.
@@ -26,6 +26,12 @@ function _extends(){_extends=Object.assign||function(target){for(var i=1;i<argum
26
26
  * @param {boolean} [cookieConsentSettings.statisticsCookiesAccepted] Whether statistics cookies
27
27
  * are accepted.
28
28
  */},{key:"handleCookieConsent",value:function handleCookieConsent(container){var cookieConsentSettings=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var cookieConsent=_extends({comfortCookiesAccepted:false,statisticsCookiesAccepted:false},cookieConsentSettings);this.providers.forEach(function(provider){if(provider.handleCookieConsent){provider.handleCookieConsent(container,cookieConsent);}});}/**
29
+ * Applies optimizations to embedded media iframes within the given container.
30
+ * Common enhancements include adding responsive wrappers and appropriate
31
+ * sandbox attributes to improve security and layout behavior.
32
+ *
33
+ * @param {Document} document - The DOM document containing iframes to optimize.
34
+ */},{key:"applyIframeOptimizations",value:function applyIframeOptimizations(document){this.providers.forEach(function(provider){provider.applyIframeOptimizations(document);});}/**
29
35
  * Stops all playing media within the DOM containers.
30
36
  */},{key:"stop",value:function stop(){this.providers.forEach(function(provider){provider.stop();});}/**
31
37
  * Check if we have media providers with not-ready SDK
@@ -13,6 +13,13 @@ function _classCallCheck(instance,Constructor){if(!(instance instanceof Construc
13
13
  * @callback
14
14
  * @abstract
15
15
  */},{key:"getMediaContainers",value:function getMediaContainers(){logger.error('MediaProvider.getMediaContainers() needs to be implemented within an inheriting class');}/**
16
+ * Applies optimizations to embedded media iframes within the given container.
17
+ * Common enhancements include adding responsive wrappers and appropriate
18
+ * sandbox attributes to improve security and layout behavior.
19
+ *
20
+ * @param {Document} document - The DOM document containing iframes to optimize.
21
+ * @returns {MediaProvider}
22
+ */},{key:"applyIframeOptimizations",value:function applyIframeOptimizations(){return this;}/**
16
23
  * Optimizes video container to make it responsive.
17
24
  * @param {Element} container A DOM container.
18
25
  * @returns {MediaProvider}
@@ -19,12 +19,25 @@ _this2.isPending=true;_this2.remoteScriptUrl=scriptUrl;_this2.deferred=[];return
19
19
  * @override
20
20
  * @param {ParentNode} container A DOM container.
21
21
  * @returns {VimeoMediaProvider}
22
- */},{key:"add",value:function add(container){var _this4=this;if(!this.checkScriptLoadingStatus()){this.deferred.push(container);return this;}var iframes=this.getMediaContainers(container);if(!iframes.length){return this;}var players=[];iframes.forEach(function(iframe,index){// Block clicks on Vimeo icon
23
- iframes[index].sandbox='allow-forms allow-scripts allow-pointer-lock allow-same-origin allow-top-navigation';_this4.responsify(iframe);players.push(new window.Vimeo.Player(iframe));});this.containers.set(container,players);return this;}/**
22
+ */},{key:"add",value:function add(container){if(!this.checkScriptLoadingStatus()){this.deferred.push(container);return this;}var iframes=this.getMediaContainers(container);if(!iframes.length){return this;}var players=[];iframes.forEach(function(iframe){players.push(new window.Vimeo.Player(iframe));});this.containers.set(container,players);return this;}/**
23
+ * Applies optimizations to embedded media iframes within the given container.
24
+ * Common enhancements include adding responsive wrappers and appropriate
25
+ * sandbox attributes to improve security and layout behavior.
26
+ *
27
+ * @param {Document} document - The DOM document containing iframes to optimize.
28
+ * @returns {YouTubeMediaProvider}
29
+ */},{key:"applyIframeOptimizations",value:function applyIframeOptimizations(document){var _this4=this;var iframes=this.getMediaContainers(document);if(!iframes.length){return this;}iframes.forEach(function(iframe,index){// Block clicks on Vimeo icon
30
+ iframes[index].setAttribute('sandbox','allow-forms allow-scripts allow-pointer-lock allow-same-origin allow-top-navigation');_this4.responsify(iframe);});return this;}/**
24
31
  * Stops all playing videos within the DOM containers.
25
32
  * @override
26
33
  * @returns {VimeoMediaProvider}
27
- */},{key:"stop",value:function stop(){this.containers.forEach(function(players){players.forEach(function(player){player.pause();});});return this;}/**
34
+ */},{key:"stop",value:function stop(){// Select all iframes in the document. Actually this should be done via the iframes
35
+ // registered in this.containers, but that doesn't seem to work reliably anymore.
36
+ // Since we had to find a quick fix for CURB-5033 we now select all iframes in the document
37
+ // via the media container selector and then stop the videos.
38
+ var iframes=this.getMediaContainers(document);iframes.forEach(function(iframe){try{var player=new window.Vimeo.Player(iframe);player.pause()["catch"](function(){// Ignore errors
39
+ });}catch(e){// Ignore errors
40
+ }});return this;}/**
28
41
  * Searches for embedded media and replaces it with a placeholder element when comfort cookie
29
42
  * consent is not accepted.
30
43
  *
@@ -9,12 +9,23 @@ function _typeof(obj){if(typeof Symbol==="function"&&typeof Symbol.iterator==="s
9
9
  * @override
10
10
  * @param {ParentNode} container A DOM container.
11
11
  * @returns {YouTubeMediaProvider}
12
- */},{key:"add",value:function add(container){var _this2=this;var iframes=this.getMediaContainers(container);if(!iframes.length){return this;}// Update the video urls to enable stopping videos via the event API.
12
+ */},{key:"add",value:function add(container){var iframes=this.getMediaContainers(container);if(!iframes.length){return this;}this.containers.set(container,iframes);return this;}/**
13
+ * Applies optimizations to embedded media iframes within the given container.
14
+ * Common enhancements include adding responsive wrappers and appropriate
15
+ * sandbox attributes to improve security and layout behavior.
16
+ *
17
+ * @param {Document} document - The DOM document containing iframes to optimize.
18
+ * @returns {YouTubeMediaProvider}
19
+ */},{key:"applyIframeOptimizations",value:function applyIframeOptimizations(document){var _this2=this;var iframes=this.getMediaContainers(document);if(!iframes.length){return this;}// Update the video urls to enable stopping videos via the event API.
13
20
  iframes.forEach(function(iframe,index){// Block clicks on YouTube icon
14
- iframes[index].sandbox='allow-forms allow-scripts allow-pointer-lock allow-same-origin allow-top-navigation';_this2.responsify(iframe);var src=iframe.src;var _src$split=src.split('?'),_src$split2=_slicedToArray(_src$split,2),url=_src$split2[0],query=_src$split2[1];var urlParams=new URLSearchParams(query);// Enable the js api to allow sending events to the iframe.
21
+ iframes[index].setAttribute('sandbox','allow-forms allow-scripts allow-pointer-lock allow-same-origin allow-top-navigation');_this2.responsify(iframe);var src=iframe.getAttribute('src');var _src$split=src.split('?'),_src$split2=_slicedToArray(_src$split,2),url=_src$split2[0],query=_src$split2[1];var urlParams=new URLSearchParams(query);// Enable the js api to allow sending events to the iframe.
15
22
  urlParams.set('enablejsapi',1);// Enable controls to avoid the iframe not being resumable because of controls=0 param on ios.
16
- urlParams.set('controls',1);iframes[index].src="".concat(url,"?").concat(urlParams.toString());});this.containers.set(container,iframes);return this;}/**
23
+ urlParams.set('controls',1);iframes[index].setAttribute('src',"".concat(url,"?").concat(urlParams.toString()));});return this;}/**
17
24
  * Stops all playing videos within the DOM containers.
18
25
  * @override
19
26
  * @returns {YouTubeMediaProvider}
20
- */},{key:"stop",value:function stop(){this.containers.forEach(function(iframes){iframes.forEach(function(iframe){if(iframe.contentWindow&&iframe.contentWindow.postMessage){iframe.contentWindow.postMessage('{"event":"command","func":"stopVideo","args":""}','*');}});});return this;}}]);}(MediaProvider);export default YouTubeMediaProvider;/* eslint-enable class-methods-use-this */
27
+ */},{key:"stop",value:function stop(){// Select all iframes in the document. Actually this should be done via the iframes
28
+ // registered in this.containers, but that doesn't seem to work reliably anymore.
29
+ // Since we had to find a quick fix for CURB-5033 we now select all iframes in the document
30
+ // via the media container selector and then stop the videos.
31
+ var iframes=this.getMediaContainers(document);iframes.forEach(function(iframe){var _iframe$contentWindow;if(typeof(iframe===null||iframe===void 0?void 0:(_iframe$contentWindow=iframe.contentWindow)===null||_iframe$contentWindow===void 0?void 0:_iframe$contentWindow.postMessage)==='function'){iframe.contentWindow.postMessage(JSON.stringify({event:'command',func:'stopVideo',args:[]}),'*');}});return this;}}]);}(MediaProvider);export default YouTubeMediaProvider;/* eslint-enable class-methods-use-this */
@@ -1,4 +1,4 @@
1
1
  // FEATURES
2
2
  var APP='app';var APP_BAR='app-bar';var VIEW='view';var PAGE='page';var NAV_MENU='nav-menu';var NO_RESULTS='no-results';var USER_MENU='user-menu';var FORM='form';// CONTENTS
3
- var GLOBALS='globals';var ROUTES='routes';var CONTENT='content';var QUICK_LINKS='quick-links';var HOME='home';var LOGIN='login';var SCANNER='scanner';var REGISTER_LINK='register-link';var TERMS='terms';var PRIVACY='privacy';var PRIVACY_SETTINGS='privacy-settings';var IMPRINT='imprint';var STORE_INFORMATION='store-information';var STORE_INFORMATION_MORE='store-information-more';var STORE_INFORMATION_ABOUT='store-information-about';var MY_ACCOUNT='my-account';var LOGOUT='logout';var CONTAINER='container';var DEFAULT='default';var BACK='back';var CLOSE='close';var SIMPLE='simple';var CART_BUTTON='cart-button';var ITEMS='items';// POSITIONS
4
- export var BEFORE='before';export var AFTER='after';export var LEFT='left';export var CENTER='center';export var RIGHT='right';export var BELOW='below';export var APP_GLOBALS="".concat(APP,".").concat(GLOBALS);export var APP_ROUTES="".concat(APP,".").concat(ROUTES);export var VIEW_CONTENT_BEFORE="".concat(VIEW,".").concat(CONTENT,".").concat(BEFORE);export var VIEW_CONTENT="".concat(VIEW,".").concat(CONTENT);export var VIEW_CONTENT_AFTER="".concat(VIEW,".").concat(CONTENT,".").concat(AFTER);export var PAGE_CONTENT_BEFORE="".concat(PAGE,".").concat(CONTENT,".").concat(BEFORE);export var PAGE_CONTENT="".concat(PAGE,".").concat(CONTENT);export var PAGE_CONTENT_AFTER="".concat(PAGE,".").concat(CONTENT,".").concat(AFTER);export var PAGE_LOGIN_BEFORE="".concat(PAGE,".").concat(LOGIN,".").concat(BEFORE);export var PAGE_LOGIN="".concat(PAGE,".").concat(LOGIN);export var PAGE_LOGIN_AFTER="".concat(PAGE,".").concat(LOGIN,".").concat(AFTER);export var PAGE_LOGIN_FORM_BEFORE="".concat(PAGE,".").concat(LOGIN,".").concat(FORM,".").concat(BEFORE);export var PAGE_LOGIN_FORM="".concat(PAGE,".").concat(LOGIN,".").concat(FORM);export var PAGE_LOGIN_FORM_AFTER="".concat(PAGE,".").concat(LOGIN,".").concat(FORM,".").concat(AFTER);export var PAGE_LOGIN_REGISTER_LINK_BEFORE="".concat(PAGE,".").concat(LOGIN,".").concat(REGISTER_LINK,".").concat(BEFORE);export var PAGE_LOGIN_REGISTER_LINK="".concat(PAGE,".").concat(LOGIN,".").concat(REGISTER_LINK);export var PAGE_LOGIN_REGISTER_LINK_AFTER="".concat(PAGE,".").concat(LOGIN,".").concat(REGISTER_LINK,".").concat(AFTER);export var NAV_MENU_CONTENT_BEFORE="".concat(NAV_MENU,".").concat(CONTENT,".").concat(BEFORE);export var NAV_MENU_CONTENT_AFTER="".concat(NAV_MENU,".").concat(CONTENT,".").concat(AFTER);export var NAV_MENU_QUICK_LINKS="".concat(NAV_MENU,".").concat(QUICK_LINKS);export var NAV_MENU_QUICK_LINKS_BEFORE="".concat(NAV_MENU,".").concat(QUICK_LINKS,".").concat(BEFORE);export var NAV_MENU_QUICK_LINKS_AFTER="".concat(NAV_MENU,".").concat(QUICK_LINKS,".").concat(AFTER);export var NAV_MENU_QUICK_LINKS_ITEMS="".concat(NAV_MENU,".").concat(QUICK_LINKS,".").concat(ITEMS);export var NAV_MENU_QUICK_LINKS_ITEMS_BEFORE="".concat(NAV_MENU,".").concat(QUICK_LINKS,".").concat(ITEMS,".").concat(BEFORE);export var NAV_MENU_QUICK_LINKS_ITEMS_AFTER="".concat(NAV_MENU,".").concat(QUICK_LINKS,".").concat(ITEMS,".").concat(AFTER);export var NAV_MENU_HOME_BEFORE="".concat(NAV_MENU,".").concat(HOME,".").concat(BEFORE);export var NAV_MENU_HOME="".concat(NAV_MENU,".").concat(HOME);export var NAV_MENU_HOME_AFTER="".concat(NAV_MENU,".").concat(HOME,".").concat(AFTER);export var NAV_MENU_SCANNER_BEFORE="".concat(NAV_MENU,".").concat(SCANNER,".").concat(BEFORE);export var NAV_MENU_SCANNER="".concat(NAV_MENU,".").concat(SCANNER);export var NAV_MENU_SCANNER_AFTER="".concat(NAV_MENU,".").concat(SCANNER,".").concat(AFTER);export var NAV_MENU_TERMS_BEFORE="".concat(NAV_MENU,".").concat(TERMS,".").concat(BEFORE);export var NAV_MENU_TERMS="".concat(NAV_MENU,".").concat(TERMS);export var NAV_MENU_TERMS_AFTER="".concat(NAV_MENU,".").concat(TERMS,".").concat(AFTER);export var NAV_MENU_PRIVACY_BEFORE="".concat(NAV_MENU,".").concat(PRIVACY,".").concat(BEFORE);export var NAV_MENU_PRIVACY="".concat(NAV_MENU,".").concat(PRIVACY);export var NAV_MENU_PRIVACY_AFTER="".concat(NAV_MENU,".").concat(PRIVACY,".").concat(AFTER);export var NAV_MENU_PRIVACY_SETTINGS_BEFORE="".concat(NAV_MENU,".").concat(PRIVACY_SETTINGS,".").concat(BEFORE);export var NAV_MENU_PRIVACY_SETTINGS="".concat(NAV_MENU,".").concat(PRIVACY_SETTINGS);export var NAV_MENU_PRIVACY_SETTINGS_AFTER="".concat(NAV_MENU,".").concat(PRIVACY_SETTINGS,".").concat(AFTER);export var NAV_MENU_IMPRINT_BEFORE="".concat(NAV_MENU,".").concat(IMPRINT,".").concat(BEFORE);export var NAV_MENU_IMPRINT="".concat(NAV_MENU,".").concat(IMPRINT);export var NAV_MENU_IMPRINT_AFTER="".concat(NAV_MENU,".").concat(IMPRINT,".").concat(AFTER);export var NAV_MENU_STORE_INFORMATION_BEFORE="".concat(NAV_MENU,".").concat(STORE_INFORMATION,".").concat(BEFORE);export var NAV_MENU_STORE_INFORMATION="".concat(NAV_MENU,".").concat(STORE_INFORMATION);export var NAV_MENU_STORE_INFORMATION_AFTER="".concat(NAV_MENU,".").concat(STORE_INFORMATION,".").concat(AFTER);export var NAV_MENU_STORE_INFORMATION_MORE_BEFORE="".concat(NAV_MENU,".").concat(STORE_INFORMATION_MORE,".").concat(BEFORE);export var NAV_MENU_STORE_INFORMATION_MORE="".concat(NAV_MENU,".").concat(STORE_INFORMATION_MORE);export var NAV_MENU_STORE_INFORMATION_MORE_AFTER="".concat(NAV_MENU,".").concat(STORE_INFORMATION_MORE,".").concat(AFTER);export var NAV_MENU_STORE_INFORMATION_ABOUT_BEFORE="".concat(NAV_MENU,".").concat(STORE_INFORMATION_ABOUT,".").concat(BEFORE);export var NAV_MENU_STORE_INFORMATION_ABOUT="".concat(NAV_MENU,".").concat(STORE_INFORMATION_ABOUT);export var NAV_MENU_STORE_INFORMATION_ABOUT_AFTER="".concat(NAV_MENU,".").concat(STORE_INFORMATION_ABOUT,".").concat(AFTER);export var NAV_MENU_MY_ACCOUNT_BEFORE="".concat(NAV_MENU,".").concat(MY_ACCOUNT,".").concat(BEFORE);export var NAV_MENU_MY_ACCOUNT="".concat(NAV_MENU,".").concat(MY_ACCOUNT);export var NAV_MENU_MY_ACCOUNT_AFTER="".concat(NAV_MENU,".").concat(MY_ACCOUNT,".").concat(AFTER);export var NAV_MENU_LOGOUT_BEFORE="".concat(NAV_MENU,".").concat(LOGOUT,".").concat(BEFORE);export var NAV_MENU_LOGOUT="".concat(NAV_MENU,".").concat(LOGOUT);export var NAV_MENU_LOGOUT_AFTER="".concat(NAV_MENU,".").concat(LOGOUT,".").concat(AFTER);export var NO_RESULTS_CONTENT_BEFORE="".concat(NO_RESULTS,".").concat(CONTENT,".").concat(BEFORE);export var NO_RESULTS_CONTENT="".concat(NO_RESULTS,".").concat(CONTENT);export var NO_RESULTS_CONTENT_AFTER="".concat(NO_RESULTS,".").concat(CONTENT,".").concat(AFTER);export var USER_MENU_CONTAINER_BEFORE="".concat(USER_MENU,".").concat(CONTAINER,".").concat(BEFORE);export var USER_MENU_CONTAINER="".concat(USER_MENU,".").concat(CONTAINER);export var USER_MENU_CONTAINER_AFTER="".concat(USER_MENU,".").concat(CONTAINER,".").concat(AFTER);export var APP_BAR_DEFAULT_BEFORE="".concat(APP_BAR,".").concat(DEFAULT,".").concat(BEFORE);export var APP_BAR_DEFAULT="".concat(APP_BAR,".").concat(DEFAULT);export var APP_BAR_DEFAULT_AFTER="".concat(APP_BAR,".").concat(DEFAULT,".").concat(AFTER);export var APP_BAR_BACK_BEFORE="".concat(APP_BAR,".").concat(BACK,".").concat(BEFORE);export var APP_BAR_BACK="".concat(APP_BAR,".").concat(BACK);export var APP_BAR_BACK_AFTER="".concat(APP_BAR,".").concat(BACK,".").concat(AFTER);export var APP_BAR_CLOSE_BEFORE="".concat(APP_BAR,".").concat(CLOSE,".").concat(BEFORE);export var APP_BAR_CLOSE="".concat(APP_BAR,".").concat(CLOSE);export var APP_BAR_CLOSE_AFTER="".concat(APP_BAR,".").concat(CLOSE,".").concat(AFTER);export var APP_BAR_SIMPLE_BEFORE="".concat(APP_BAR,".").concat(SIMPLE,".").concat(BEFORE);export var APP_BAR_SIMPLE="".concat(APP_BAR,".").concat(SIMPLE);export var APP_BAR_SIMPLE_AFTER="".concat(APP_BAR,".").concat(SIMPLE,".").concat(AFTER);export var APP_BAR_LEFT="".concat(APP_BAR,".").concat(LEFT);export var APP_BAR_LEFT_BEFORE="".concat(APP_BAR,".").concat(LEFT,".").concat(BEFORE);export var APP_BAR_LEFT_AFTER="".concat(APP_BAR,".").concat(LEFT,".").concat(AFTER);export var APP_BAR_CENTER="".concat(APP_BAR,".").concat(CENTER);export var APP_BAR_CENTER_BEFORE="".concat(APP_BAR,".").concat(CENTER,".").concat(BEFORE);export var APP_BAR_CENTER_AFTER="".concat(APP_BAR,".").concat(CENTER,".").concat(AFTER);export var APP_BAR_RIGHT="".concat(APP_BAR,".").concat(RIGHT);export var APP_BAR_RIGHT_BEFORE="".concat(APP_BAR,".").concat(RIGHT,".").concat(BEFORE);export var APP_BAR_RIGHT_AFTER="".concat(APP_BAR,".").concat(RIGHT,".").concat(AFTER);export var APP_BAR_BELOW="".concat(APP_BAR,".").concat(BELOW);export var APP_BAR_BELOW_BEFORE="".concat(APP_BAR,".").concat(BELOW,".").concat(BEFORE);export var APP_BAR_BELOW_AFTER="".concat(APP_BAR,".").concat(BELOW,".").concat(AFTER);export var APP_BAR_CART_BUTTON="".concat(APP_BAR,".").concat(CART_BUTTON);export var APP_BAR_CART_BUTTON_BEFORE="".concat(APP_BAR,".").concat(CART_BUTTON,".").concat(BEFORE);export var APP_BAR_CART_BUTTON_AFTER="".concat(APP_BAR,".").concat(CART_BUTTON,".").concat(AFTER);export var APP_BAR_CONTENT="".concat(APP_BAR,".").concat(CONTENT);export var APP_BAR_CONTENT_BEFORE="".concat(APP_BAR_CONTENT,".").concat(BEFORE);export var APP_BAR_CONTENT_AFTER="".concat(APP_BAR_CONTENT,".").concat(AFTER);
3
+ var GLOBALS='globals';var ROUTES='routes';var FOOTER='footer';var CONTENT='content';var QUICK_LINKS='quick-links';var HOME='home';var LOGIN='login';var SCANNER='scanner';var REGISTER_LINK='register-link';var TERMS='terms';var PRIVACY='privacy';var PRIVACY_SETTINGS='privacy-settings';var IMPRINT='imprint';var STORE_INFORMATION='store-information';var STORE_INFORMATION_MORE='store-information-more';var STORE_INFORMATION_ABOUT='store-information-about';var MY_ACCOUNT='my-account';var LOGOUT='logout';var CONTAINER='container';var DEFAULT='default';var BACK='back';var CLOSE='close';var SIMPLE='simple';var CART_BUTTON='cart-button';var ITEMS='items';// POSITIONS
4
+ export var BEFORE='before';export var AFTER='after';export var LEFT='left';export var CENTER='center';export var RIGHT='right';export var BELOW='below';export var APP_GLOBALS="".concat(APP,".").concat(GLOBALS);export var APP_ROUTES="".concat(APP,".").concat(ROUTES);export var APP_FOOTER_CONTENT_BEFORE="".concat(APP,".").concat(FOOTER,".").concat(CONTENT,".").concat(BEFORE);export var APP_FOOTER_CONTENT_AFTER="".concat(APP,".").concat(FOOTER,".").concat(CONTENT,".").concat(AFTER);export var VIEW_CONTENT_BEFORE="".concat(VIEW,".").concat(CONTENT,".").concat(BEFORE);export var VIEW_CONTENT="".concat(VIEW,".").concat(CONTENT);export var VIEW_CONTENT_AFTER="".concat(VIEW,".").concat(CONTENT,".").concat(AFTER);export var PAGE_CONTENT_BEFORE="".concat(PAGE,".").concat(CONTENT,".").concat(BEFORE);export var PAGE_CONTENT="".concat(PAGE,".").concat(CONTENT);export var PAGE_CONTENT_AFTER="".concat(PAGE,".").concat(CONTENT,".").concat(AFTER);export var PAGE_LOGIN_BEFORE="".concat(PAGE,".").concat(LOGIN,".").concat(BEFORE);export var PAGE_LOGIN="".concat(PAGE,".").concat(LOGIN);export var PAGE_LOGIN_AFTER="".concat(PAGE,".").concat(LOGIN,".").concat(AFTER);export var PAGE_LOGIN_FORM_BEFORE="".concat(PAGE,".").concat(LOGIN,".").concat(FORM,".").concat(BEFORE);export var PAGE_LOGIN_FORM="".concat(PAGE,".").concat(LOGIN,".").concat(FORM);export var PAGE_LOGIN_FORM_AFTER="".concat(PAGE,".").concat(LOGIN,".").concat(FORM,".").concat(AFTER);export var PAGE_LOGIN_REGISTER_LINK_BEFORE="".concat(PAGE,".").concat(LOGIN,".").concat(REGISTER_LINK,".").concat(BEFORE);export var PAGE_LOGIN_REGISTER_LINK="".concat(PAGE,".").concat(LOGIN,".").concat(REGISTER_LINK);export var PAGE_LOGIN_REGISTER_LINK_AFTER="".concat(PAGE,".").concat(LOGIN,".").concat(REGISTER_LINK,".").concat(AFTER);export var NAV_MENU_CONTENT_BEFORE="".concat(NAV_MENU,".").concat(CONTENT,".").concat(BEFORE);export var NAV_MENU_CONTENT_AFTER="".concat(NAV_MENU,".").concat(CONTENT,".").concat(AFTER);export var NAV_MENU_QUICK_LINKS="".concat(NAV_MENU,".").concat(QUICK_LINKS);export var NAV_MENU_QUICK_LINKS_BEFORE="".concat(NAV_MENU,".").concat(QUICK_LINKS,".").concat(BEFORE);export var NAV_MENU_QUICK_LINKS_AFTER="".concat(NAV_MENU,".").concat(QUICK_LINKS,".").concat(AFTER);export var NAV_MENU_QUICK_LINKS_ITEMS="".concat(NAV_MENU,".").concat(QUICK_LINKS,".").concat(ITEMS);export var NAV_MENU_QUICK_LINKS_ITEMS_BEFORE="".concat(NAV_MENU,".").concat(QUICK_LINKS,".").concat(ITEMS,".").concat(BEFORE);export var NAV_MENU_QUICK_LINKS_ITEMS_AFTER="".concat(NAV_MENU,".").concat(QUICK_LINKS,".").concat(ITEMS,".").concat(AFTER);export var NAV_MENU_HOME_BEFORE="".concat(NAV_MENU,".").concat(HOME,".").concat(BEFORE);export var NAV_MENU_HOME="".concat(NAV_MENU,".").concat(HOME);export var NAV_MENU_HOME_AFTER="".concat(NAV_MENU,".").concat(HOME,".").concat(AFTER);export var NAV_MENU_SCANNER_BEFORE="".concat(NAV_MENU,".").concat(SCANNER,".").concat(BEFORE);export var NAV_MENU_SCANNER="".concat(NAV_MENU,".").concat(SCANNER);export var NAV_MENU_SCANNER_AFTER="".concat(NAV_MENU,".").concat(SCANNER,".").concat(AFTER);export var NAV_MENU_TERMS_BEFORE="".concat(NAV_MENU,".").concat(TERMS,".").concat(BEFORE);export var NAV_MENU_TERMS="".concat(NAV_MENU,".").concat(TERMS);export var NAV_MENU_TERMS_AFTER="".concat(NAV_MENU,".").concat(TERMS,".").concat(AFTER);export var NAV_MENU_PRIVACY_BEFORE="".concat(NAV_MENU,".").concat(PRIVACY,".").concat(BEFORE);export var NAV_MENU_PRIVACY="".concat(NAV_MENU,".").concat(PRIVACY);export var NAV_MENU_PRIVACY_AFTER="".concat(NAV_MENU,".").concat(PRIVACY,".").concat(AFTER);export var NAV_MENU_PRIVACY_SETTINGS_BEFORE="".concat(NAV_MENU,".").concat(PRIVACY_SETTINGS,".").concat(BEFORE);export var NAV_MENU_PRIVACY_SETTINGS="".concat(NAV_MENU,".").concat(PRIVACY_SETTINGS);export var NAV_MENU_PRIVACY_SETTINGS_AFTER="".concat(NAV_MENU,".").concat(PRIVACY_SETTINGS,".").concat(AFTER);export var NAV_MENU_IMPRINT_BEFORE="".concat(NAV_MENU,".").concat(IMPRINT,".").concat(BEFORE);export var NAV_MENU_IMPRINT="".concat(NAV_MENU,".").concat(IMPRINT);export var NAV_MENU_IMPRINT_AFTER="".concat(NAV_MENU,".").concat(IMPRINT,".").concat(AFTER);export var NAV_MENU_STORE_INFORMATION_BEFORE="".concat(NAV_MENU,".").concat(STORE_INFORMATION,".").concat(BEFORE);export var NAV_MENU_STORE_INFORMATION="".concat(NAV_MENU,".").concat(STORE_INFORMATION);export var NAV_MENU_STORE_INFORMATION_AFTER="".concat(NAV_MENU,".").concat(STORE_INFORMATION,".").concat(AFTER);export var NAV_MENU_STORE_INFORMATION_MORE_BEFORE="".concat(NAV_MENU,".").concat(STORE_INFORMATION_MORE,".").concat(BEFORE);export var NAV_MENU_STORE_INFORMATION_MORE="".concat(NAV_MENU,".").concat(STORE_INFORMATION_MORE);export var NAV_MENU_STORE_INFORMATION_MORE_AFTER="".concat(NAV_MENU,".").concat(STORE_INFORMATION_MORE,".").concat(AFTER);export var NAV_MENU_STORE_INFORMATION_ABOUT_BEFORE="".concat(NAV_MENU,".").concat(STORE_INFORMATION_ABOUT,".").concat(BEFORE);export var NAV_MENU_STORE_INFORMATION_ABOUT="".concat(NAV_MENU,".").concat(STORE_INFORMATION_ABOUT);export var NAV_MENU_STORE_INFORMATION_ABOUT_AFTER="".concat(NAV_MENU,".").concat(STORE_INFORMATION_ABOUT,".").concat(AFTER);export var NAV_MENU_MY_ACCOUNT_BEFORE="".concat(NAV_MENU,".").concat(MY_ACCOUNT,".").concat(BEFORE);export var NAV_MENU_MY_ACCOUNT="".concat(NAV_MENU,".").concat(MY_ACCOUNT);export var NAV_MENU_MY_ACCOUNT_AFTER="".concat(NAV_MENU,".").concat(MY_ACCOUNT,".").concat(AFTER);export var NAV_MENU_LOGOUT_BEFORE="".concat(NAV_MENU,".").concat(LOGOUT,".").concat(BEFORE);export var NAV_MENU_LOGOUT="".concat(NAV_MENU,".").concat(LOGOUT);export var NAV_MENU_LOGOUT_AFTER="".concat(NAV_MENU,".").concat(LOGOUT,".").concat(AFTER);export var NO_RESULTS_CONTENT_BEFORE="".concat(NO_RESULTS,".").concat(CONTENT,".").concat(BEFORE);export var NO_RESULTS_CONTENT="".concat(NO_RESULTS,".").concat(CONTENT);export var NO_RESULTS_CONTENT_AFTER="".concat(NO_RESULTS,".").concat(CONTENT,".").concat(AFTER);export var USER_MENU_CONTAINER_BEFORE="".concat(USER_MENU,".").concat(CONTAINER,".").concat(BEFORE);export var USER_MENU_CONTAINER="".concat(USER_MENU,".").concat(CONTAINER);export var USER_MENU_CONTAINER_AFTER="".concat(USER_MENU,".").concat(CONTAINER,".").concat(AFTER);export var APP_BAR_DEFAULT_BEFORE="".concat(APP_BAR,".").concat(DEFAULT,".").concat(BEFORE);export var APP_BAR_DEFAULT="".concat(APP_BAR,".").concat(DEFAULT);export var APP_BAR_DEFAULT_AFTER="".concat(APP_BAR,".").concat(DEFAULT,".").concat(AFTER);export var APP_BAR_BACK_BEFORE="".concat(APP_BAR,".").concat(BACK,".").concat(BEFORE);export var APP_BAR_BACK="".concat(APP_BAR,".").concat(BACK);export var APP_BAR_BACK_AFTER="".concat(APP_BAR,".").concat(BACK,".").concat(AFTER);export var APP_BAR_CLOSE_BEFORE="".concat(APP_BAR,".").concat(CLOSE,".").concat(BEFORE);export var APP_BAR_CLOSE="".concat(APP_BAR,".").concat(CLOSE);export var APP_BAR_CLOSE_AFTER="".concat(APP_BAR,".").concat(CLOSE,".").concat(AFTER);export var APP_BAR_SIMPLE_BEFORE="".concat(APP_BAR,".").concat(SIMPLE,".").concat(BEFORE);export var APP_BAR_SIMPLE="".concat(APP_BAR,".").concat(SIMPLE);export var APP_BAR_SIMPLE_AFTER="".concat(APP_BAR,".").concat(SIMPLE,".").concat(AFTER);export var APP_BAR_LEFT="".concat(APP_BAR,".").concat(LEFT);export var APP_BAR_LEFT_BEFORE="".concat(APP_BAR,".").concat(LEFT,".").concat(BEFORE);export var APP_BAR_LEFT_AFTER="".concat(APP_BAR,".").concat(LEFT,".").concat(AFTER);export var APP_BAR_CENTER="".concat(APP_BAR,".").concat(CENTER);export var APP_BAR_CENTER_BEFORE="".concat(APP_BAR,".").concat(CENTER,".").concat(BEFORE);export var APP_BAR_CENTER_AFTER="".concat(APP_BAR,".").concat(CENTER,".").concat(AFTER);export var APP_BAR_RIGHT="".concat(APP_BAR,".").concat(RIGHT);export var APP_BAR_RIGHT_BEFORE="".concat(APP_BAR,".").concat(RIGHT,".").concat(BEFORE);export var APP_BAR_RIGHT_AFTER="".concat(APP_BAR,".").concat(RIGHT,".").concat(AFTER);export var APP_BAR_BELOW="".concat(APP_BAR,".").concat(BELOW);export var APP_BAR_BELOW_BEFORE="".concat(APP_BAR,".").concat(BELOW,".").concat(BEFORE);export var APP_BAR_BELOW_AFTER="".concat(APP_BAR,".").concat(BELOW,".").concat(AFTER);export var APP_BAR_CART_BUTTON="".concat(APP_BAR,".").concat(CART_BUTTON);export var APP_BAR_CART_BUTTON_BEFORE="".concat(APP_BAR,".").concat(CART_BUTTON,".").concat(BEFORE);export var APP_BAR_CART_BUTTON_AFTER="".concat(APP_BAR,".").concat(CART_BUTTON,".").concat(AFTER);export var APP_BAR_CONTENT="".concat(APP_BAR,".").concat(CONTENT);export var APP_BAR_CONTENT_BEFORE="".concat(APP_BAR_CONTENT,".").concat(BEFORE);export var APP_BAR_CONTENT_AFTER="".concat(APP_BAR_CONTENT,".").concat(AFTER);
@@ -14,7 +14,8 @@ function _extends(){_extends=Object.assign||function(target){for(var i=1;i<argum
14
14
  */var parseHTML=function parseHTML(html,decode,settings){var processStyles=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;var cookieConsentSettings=arguments.length>4&&arguments[4]!==undefined?arguments[4]:{};var id=CryptoJs.MD5(JSON.stringify(settings)).toString();var container=getDOMContainer("html-sanitizer-".concat(id));var cookieConsent=_extends({comfortCookiesAccepted:false,statisticsCookiesAccepted:false},cookieConsentSettings);try{var parser=new DOMParser();var unparsedHTML=decode?decodeHTML(html):html;// Parse the html string to a DOM object.
15
15
  var dom=parser.parseFromString("<body>".concat(unparsedHTML,"</body>"),'text/html');// Run cookie consent logic from embedded media to remove markup that's not supposed to run
16
16
  // when consent is not accepted.
17
- embeddedMedia.handleCookieConsent(dom,cookieConsent);// How many onloads have been processed.
17
+ embeddedMedia.handleCookieConsent(dom,cookieConsent);// Optimize embedded media iframe markup before it's injected into the DOM.
18
+ embeddedMedia.applyIframeOptimizations(dom);// How many onloads have been processed.
18
19
  var onloads=0;var inlineScripts=[];var externalScripts=[];/**
19
20
  * Handles the onload events for external scripts.
20
21
  * @return {Array} The collection of external scripts.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shopgate/pwa-common",
3
- "version": "7.25.1-beta.1",
3
+ "version": "7.25.1-beta.2",
4
4
  "description": "Common library for the Shopgate Connect PWA.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Shopgate <support@shopgate.com>",
@@ -17,7 +17,7 @@
17
17
  "dependencies": {
18
18
  "@redux-devtools/extension": "^3.3.0",
19
19
  "@sentry/browser": "6.0.1",
20
- "@shopgate/pwa-benchmark": "7.25.1-beta.1",
20
+ "@shopgate/pwa-benchmark": "7.25.1-beta.2",
21
21
  "@virtuous/conductor": "~2.5.0",
22
22
  "@virtuous/react-conductor": "~2.5.0",
23
23
  "@virtuous/redux-persister": "1.1.0-beta.7",
@@ -43,7 +43,7 @@
43
43
  "url-search-params": "^0.10.0"
44
44
  },
45
45
  "devDependencies": {
46
- "@shopgate/pwa-core": "7.25.1-beta.1",
46
+ "@shopgate/pwa-core": "7.25.1-beta.2",
47
47
  "@types/react-portal": "^3.0.9",
48
48
  "lodash": "^4.17.4",
49
49
  "prop-types": "~15.8.1",
@@ -1,4 +1,4 @@
1
- import{createSelector}from'reselect';import MobileDetect from'mobile-detect';import{hasSGJavaScriptBridge}from'@shopgate/pwa-core/helpers';import{isVersionAtLeast}from'@shopgate/pwa-core/helpers/version';import{SCANNER_MIN_APP_LIB_VERSION}from'@shopgate/pwa-core/constants/Scanner';import{hasWebBridge}from'@shopgate/engage/core/helpers/bridge';import{getAreSimulatedInsetsInjected}from'@shopgate/engage/development/selectors';import{OS_ANDROID,OS_IOS,MODEL_NAMES_IPHONE_X,PAGE_INSETS_ANDROID,PAGE_INSETS_IOS,PAGE_INSETS_IPHONE_X,TYPE_TABLET}from"../constants/Device";var md=new MobileDetect(navigator.userAgent);/**
1
+ import{createSelector}from'reselect';import MobileDetect from'mobile-detect';import{hasSGJavaScriptBridge}from'@shopgate/pwa-core/helpers';import{isVersionAtLeast}from'@shopgate/pwa-core/helpers/version';import{SCANNER_MIN_APP_LIB_VERSION}from'@shopgate/pwa-core/constants/Scanner';import{hasWebBridge}from'@shopgate/engage/core/helpers/bridge';import{OS_ANDROID,OS_IOS,MODEL_NAMES_IPHONE_X,PAGE_INSETS_ANDROID,PAGE_INSETS_IOS,PAGE_INSETS_IPHONE_X,TYPE_TABLET}from"../constants/Device";var md=new MobileDetect(navigator.userAgent);/**
2
2
  * Returns the client state (state.client)
3
3
  * @param {Object} state The application state.
4
4
  * @returns {Object}
@@ -47,11 +47,10 @@ import{createSelector}from'reselect';import MobileDetect from'mobile-detect';imp
47
47
  */export var hasScannerSupport=createSelector(getClientInformation,getDeviceInformation,isIos,function(clientInformation,deviceInformation,deviceIsIos){var _ref4=deviceInformation||{},type=_ref4.type;var isIpad=type===TYPE_TABLET&&deviceIsIos;if(isVersionAtLeast('11.0.0',clientInformation.appVersion)){// scanner is supported on all apps based on the react-native based apps
48
48
  return true;}// scanner is not supported on iPads with the not react-native based app
49
49
  return isVersionAtLeast(SCANNER_MIN_APP_LIB_VERSION,clientInformation.libVersion)&&!isIpad;});/**
50
- * Determines page insets for the current device. Used as a fallback for the native insets.
50
+ * Determines page insets for the current device
51
51
  * @param {Object} state The application state.
52
52
  * @returns {Object}
53
- */export var getPageInsets=createSelector(getDeviceModel,isIos,getAreSimulatedInsetsInjected,function(model,iOS,injectSimulatedInsets){if(injectSimulatedInsets){// Simulate safe area insets in development when user agent is set to iOS device
54
- return PAGE_INSETS_IPHONE_X;}if(iOS){if(!hasSGJavaScriptBridge()){return PAGE_INSETS_ANDROID;}if(MODEL_NAMES_IPHONE_X.includes(model)){return PAGE_INSETS_IPHONE_X;}return PAGE_INSETS_IOS;}return PAGE_INSETS_ANDROID;});/**
53
+ */export var getPageInsets=createSelector(getClientInformation,getDeviceModel,isIos,function(clientInformation,model,iOS){if(iOS){if(!hasSGJavaScriptBridge()){return PAGE_INSETS_ANDROID;}if(MODEL_NAMES_IPHONE_X.includes(model)){return PAGE_INSETS_IPHONE_X;}return PAGE_INSETS_IOS;}return PAGE_INSETS_ANDROID;});/**
55
54
  * Determines what os version handles the insets differently compared to other os versions.
56
55
  * @returns {boolean}
57
56
  */export var considerNativeInset=createSelector(isIos,getOSVersion,function(ios,ver){return ios&&ver&&ver.indexOf('10.')===0;});/**
package/streams/view.js CHANGED
@@ -1,34 +1,12 @@
1
1
  import{Observable}from'rxjs/Observable';import{Subject}from'rxjs/Subject';import{async as asyncScheduler}from'rxjs/scheduler/async';import'rxjs/add/observable/from';import'rxjs/add/observable/fromEvent';import'rxjs/add/operator/do';import'rxjs/add/operator/throttleTime';export var eventsSubject=new Subject();/**
2
2
  * Cold observable for View scroll events
3
- * Use this to listen for scroll-related changes in any part of the app.
4
3
  * @type {Observable}
5
4
  */export var viewScroll$=Observable.from(eventsSubject);/**
6
- * Sets up throttled scroll event stream for a given element or window.
7
- * Emits enriched scroll info such as direction and distance.
8
- *
9
- * @param {HTMLElement|Window} element - DOM node or window to observe
10
- * @param {number} throttleTime - Time in ms to throttle scroll events
11
- * @returns {Observable} - Observable emitting scroll-related data
5
+ * @param {HTMLElement} element .
6
+ * @param {number} throttleTime .
7
+ * @returns {Observable}
12
8
  */export var emitScrollEvents=function emitScrollEvents(element){var throttleTime=arguments.length>1&&arguments[1]!==undefined?arguments[1]:250;// In rare situation during unmounting a react dom ref might
13
9
  // be null due to the execution order of events in fiber nodes.
14
- if(!element){return undefined;}var previousScrollTop=0;// Tracks scroll direction ('up' or 'down')
15
- var lastDirection=null;// Minimum distance to consider a real scroll
16
- var minDelta=10;// Pixels from bottom to consider "at bottom"
17
- var bottomThreshold=20;// Prevent scrollUp triggering in this zone
18
- var deadZoneThreshold=30;var scroll$=Observable.fromEvent(element,'scroll').throttleTime(throttleTime,asyncScheduler,{leading:false,trailing:true}).map(function(event){// Determine if element is the window/document or a scrollable container
19
- var isWindow=element===window||element===document.body||element===document.documentElement;// Get current scroll position
20
- var rawScrollTop=isWindow?window.scrollY||window.pageYOffset||0:element.scrollTop;// Compute max scroll value
21
- var maxScrollTop=isWindow?Math.max(document.documentElement.scrollHeight,document.body.scrollHeight)-window.innerHeight:element.scrollHeight-element.clientHeight;// Clamp scrollTop to prevent overshoot from iOS bounce
22
- var scrollTop=Math.min(rawScrollTop,maxScrollTop);var delta=scrollTop-previousScrollTop;var isScrollingDown=delta>0;var isScrollingUp=delta<0;// Determine direction
23
- var direction=lastDirection;if(isScrollingDown)direction='down';else if(isScrollingUp)direction='up';// Are we near the bottom of the scrollable area?
24
- var nearBottom=scrollTop>=maxScrollTop-bottomThreshold;var inDeadZone=scrollTop>=maxScrollTop-deadZoneThreshold;// Detect downward scroll beyond threshold and not near bottom
25
- var scrollDown=isScrollingDown&&delta>minDelta&&!nearBottom;// Detect upward scroll beyond threshold
26
- var scrollUp=isScrollingUp&&Math.abs(delta)>minDelta;// Suppress scrollUp events in dead zone to avoid iOS bounce
27
- if(scrollUp&&inDeadZone&&direction==='up'){scrollUp=false;}// Detect a bounce-back: scrollDown followed by a quick scrollUp at the bottom
28
- var bounced=lastDirection==='down'&&direction==='up'&&nearBottom;// Final scrolled flag — only emit if meaningful and not a bounce
29
- var scrolled=(scrollDown||scrollUp)&&!bounced;// Update direction and scrollTop memory
30
- lastDirection=direction;return{event:event,scrollTop:scrollTop,previousScrollTop:previousScrollTop,scrolled:scrolled,scrollUp:scrollUp,scrollDown:scrollDown&&!bounced,direction:direction,scrollOut:scrollDown&&!bounced,// legacy compatibility
31
- scrollIn:scrollUp// legacy compatibility
32
- };})["do"](function(event){// Store current scrollTop for next event comparison
33
- previousScrollTop=event.scrollTop;});// Pipe scroll data into the shared stream for global consumers
10
+ if(!element){return undefined;}var previousScrollTop=0;var scroll$=Observable.fromEvent(element,'scroll').throttleTime(throttleTime,asyncScheduler,{leading:false,trailing:true}).map(function(event){var scrollTop=element.scrollY||element.scrollTop||0;return{event:event,scrollTop:scrollTop,previousScrollTop:previousScrollTop,scrolled:previousScrollTop!==scrollTop,scrollOut:previousScrollTop<scrollTop,scrollIn:previousScrollTop>=scrollTop};})["do"](function(event){// Remember scroll position for next event
11
+ previousScrollTop=event.scrollTop;});// Copy all events to viewScroll$ stream
34
12
  scroll$.subscribe(viewScroll$);return scroll$;};