@shopgate/engage 6.23.0-beta.3 → 6.23.0-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +7 -7
- package/tracking/components/CookieConsentModal/index.js +1 -1
- package/tracking/components/CookieConsentModal/tracking-opt-in.svg +18 -0
- package/tracking/components/PrivacySettings/connector.js +2 -2
- package/tracking/selectors/cookieConsent.js +13 -9
- package/tracking/selectors/index.js +1 -1
- package/tracking/subscriptions/cookieConsent.js +2 -2
- package/tracking/components/CookieConsentModal/cookieConsent.svg +0 -62
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shopgate/engage",
|
|
3
|
-
"version": "6.23.0-beta.
|
|
3
|
+
"version": "6.23.0-beta.5",
|
|
4
4
|
"description": "Shopgate's ENGAGE library.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Shopgate <support@shopgate.com>",
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
"connect"
|
|
16
16
|
],
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@shopgate/pwa-common": "6.23.0-beta.
|
|
19
|
-
"@shopgate/pwa-common-commerce": "6.23.0-beta.
|
|
20
|
-
"@shopgate/pwa-core": "6.23.0-beta.
|
|
21
|
-
"@shopgate/pwa-ui-ios": "6.23.0-beta.
|
|
22
|
-
"@shopgate/pwa-ui-material": "6.23.0-beta.
|
|
23
|
-
"@shopgate/pwa-ui-shared": "6.23.0-beta.
|
|
18
|
+
"@shopgate/pwa-common": "6.23.0-beta.5",
|
|
19
|
+
"@shopgate/pwa-common-commerce": "6.23.0-beta.5",
|
|
20
|
+
"@shopgate/pwa-core": "6.23.0-beta.5",
|
|
21
|
+
"@shopgate/pwa-ui-ios": "6.23.0-beta.5",
|
|
22
|
+
"@shopgate/pwa-ui-material": "6.23.0-beta.5",
|
|
23
|
+
"@shopgate/pwa-ui-shared": "6.23.0-beta.5",
|
|
24
24
|
"@virtuous/conductor": "~2.4.0",
|
|
25
25
|
"babel-plugin-transform-es3-member-expression-literals": "^6.8.0",
|
|
26
26
|
"babel-plugin-transform-es3-property-literals": "^6.8.0",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React,{useMemo}from'react';import PropTypes from'prop-types';import{Grid,I18n,Button,Modal,Link}from'@shopgate/engage/components';import{appConfig}from'@shopgate/engage';import{PRIVACY_PATH}from'@shopgate/engage/page';import classNames from'classnames';import connect from"./connector";import cookieImage from"./
|
|
1
|
+
import React,{useMemo}from'react';import PropTypes from'prop-types';import{Grid,I18n,Button,Modal,Link}from'@shopgate/engage/components';import{appConfig}from'@shopgate/engage';import{PRIVACY_PATH}from'@shopgate/engage/page';import classNames from'classnames';import connect from"./connector";import cookieImage from"./tracking-opt-in.svg";import styles from"./style";/**
|
|
2
2
|
* The cookie consent modal component.
|
|
3
3
|
* @param {Object} props The component props.
|
|
4
4
|
* @returns {JSX.Element}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
3
|
+
<svg width="100%" height="100%" viewBox="0 0 895 895" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
|
4
|
+
<g transform="matrix(1,0,0,1,-197.772,-376.125)">
|
|
5
|
+
<g transform="matrix(1.28727,0,0,1.28727,-185.288,-236.524)">
|
|
6
|
+
<g transform="matrix(1.25456,0,0,1.25456,-164.192,-209.593)">
|
|
7
|
+
<circle cx="645" cy="823.354" r="276.929" style="fill:rgb(235,235,235);"/>
|
|
8
|
+
</g>
|
|
9
|
+
<g transform="matrix(17.6233,0,0,17.6233,433.521,611.874)">
|
|
10
|
+
<path d="M12,0C8.629,2.866 6.516,3 3,3L3,14.535C3,19.138 6.203,20.339 12,24C17.797,20.339 21,19.138 21,14.535L21,3C17.484,3 15.371,2.866 12,0Z" style="fill:rgb(255,115,115);fill-rule:nonzero;"/>
|
|
11
|
+
<path d="M12.99,-1.164C12.419,-1.649 11.581,-1.649 11.01,-1.164C8.014,1.383 6.125,1.472 3,1.472C2.156,1.472 1.472,2.156 1.472,3L1.472,14.535C1.472,17.357 2.45,19.137 4.32,20.771C5.891,22.144 8.2,23.407 11.184,25.292C11.682,25.607 12.318,25.607 12.816,25.292C15.8,23.407 18.109,22.144 19.68,20.771C21.55,19.137 22.528,17.357 22.528,14.535L22.528,3C22.528,2.156 21.844,1.472 21,1.472C17.875,1.472 15.986,1.383 12.99,-1.164ZM12,0C8.629,2.866 6.516,3 3,3L3,14.535C3,19.138 6.203,20.339 12,24C17.797,20.339 21,19.138 21,14.535L21,3C17.484,3 15.371,2.866 12,0Z" style="fill:rgb(216,216,216);"/>
|
|
12
|
+
</g>
|
|
13
|
+
<g transform="matrix(24.4351,0,0,24.4351,340.416,541.775)">
|
|
14
|
+
<path d="M15.762,8.047L11.381,12.522L9.166,10.399L7.93,11.638L11.381,15L17,9.285L15.762,8.047Z" style="fill:white;fill-rule:nonzero;"/>
|
|
15
|
+
</g>
|
|
16
|
+
</g>
|
|
17
|
+
</g>
|
|
18
|
+
</svg>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import{connect}from'react-redux';import{acceptAllCookies,acceptSelectedCookies}from"../../actions";import{
|
|
1
|
+
import{connect}from'react-redux';import{acceptAllCookies,acceptSelectedCookies}from"../../actions";import{getAreComfortCookiesAcceptedInternal,getAreStatisticsCookiesAcceptedInternal}from"../../selectors/cookieConsent";/**
|
|
2
2
|
* Maps the contents of the state to the component props.
|
|
3
3
|
* @param {Object} state The current application state.
|
|
4
4
|
* @return {Object} The extended component props.
|
|
5
|
-
*/var mapStateToProps=function mapStateToProps(state){return{comfortCookiesAcceptedState:
|
|
5
|
+
*/var mapStateToProps=function mapStateToProps(state){return{comfortCookiesAcceptedState:getAreComfortCookiesAcceptedInternal(state),statisticsCookiesAcceptedState:getAreStatisticsCookiesAcceptedInternal(state)};};/**
|
|
6
6
|
* Connects the dispatch function to a callable function in the props.
|
|
7
7
|
* @return {Object} The extended component props.
|
|
8
8
|
*/var mapDispatchToProps={acceptAllCookies:acceptAllCookies,acceptSelectedCookies:acceptSelectedCookies};export default connect(mapStateToProps,mapDispatchToProps);
|
|
@@ -8,22 +8,26 @@ import{createSelector}from'reselect';/**
|
|
|
8
8
|
* @returns {Object} whether cookies have been accepted by the user.
|
|
9
9
|
*/export var getCookieSettingsState=function getCookieSettingsState(state){var _state$tracking2;return(state===null||state===void 0?void 0:(_state$tracking2=state.tracking)===null||_state$tracking2===void 0?void 0:_state$tracking2.cookieSettings)||{};};/**
|
|
10
10
|
* Selects the property of the comfort cookie settings.
|
|
11
|
+
* @private This selector is intended to be used internally. When a cookie consent status needs
|
|
12
|
+
* to be checked for a feature, please use `getAreComfortCookiesAccepted` instead.
|
|
11
13
|
* @returns {boolean|null} whether comfort cookies have been selected by the user.
|
|
12
|
-
*/export var
|
|
14
|
+
*/export var getAreComfortCookiesAcceptedInternal=createSelector(getCookieSettingsState,function(settingsState){return settingsState.comfortCookiesAccepted;});/**
|
|
13
15
|
* Selects the property of the statistics cookie settings.
|
|
16
|
+
* @private This selector is intended to be used internally. When a cookie consent status needs
|
|
17
|
+
* to be checked for a feature, please use `getAreStatisticsCookiesAccepted` instead.
|
|
14
18
|
* @returns {boolean|null} whether statistics cookies have been selected by the user.
|
|
15
|
-
*/export var
|
|
16
|
-
*
|
|
17
|
-
*
|
|
19
|
+
*/export var getAreStatisticsCookiesAcceptedInternal=createSelector(getCookieSettingsState,function(settingsState){return settingsState.statisticsCookiesAccepted;});/**
|
|
20
|
+
* Determines if comfort cookies where accepted in the cookie consent process. When cookie
|
|
21
|
+
* consent is inactive, the selector will also return true.
|
|
18
22
|
* @returns {boolean} whether comfort cookies are set and should activate tracking.
|
|
19
|
-
*/export var
|
|
20
|
-
*
|
|
21
|
-
*
|
|
23
|
+
*/export var getAreComfortCookiesAccepted=createSelector(getCookieSettingsState,function(settingsState){if(settingsState.comfortCookiesAccepted===null)return true;return settingsState.comfortCookiesAccepted;});/**
|
|
24
|
+
* Determines if statistics cookies where accepted in the cookie consent process. When cookie
|
|
25
|
+
* consent is inactive, the selector will also return true.
|
|
22
26
|
* @returns {boolean} whether statistics cookies are set and should activate tracking.
|
|
23
|
-
*/export var
|
|
27
|
+
*/export var getAreStatisticsCookiesAccepted=createSelector(getCookieSettingsState,function(settingsState){if(settingsState.statisticsCookiesAccepted===null)return true;return settingsState.statisticsCookiesAccepted;});/**
|
|
24
28
|
* Selects the visibility property of the cookie consent modal.
|
|
25
29
|
* @returns {boolean} whether cookie consent modal is shown.
|
|
26
|
-
*/export var getIsCookieConsentModalVisible=createSelector(getCookieConsentModalState,
|
|
30
|
+
*/export var getIsCookieConsentModalVisible=createSelector(getCookieConsentModalState,getAreComfortCookiesAcceptedInternal,getAreStatisticsCookiesAcceptedInternal,function(modalState,comfortCookiesState,statisticsCookiesState){return modalState.isCookieConsentModalVisible&&comfortCookiesState===null&&statisticsCookiesState===null;});/**
|
|
27
31
|
* Selects the cookie consent settings property.
|
|
28
32
|
* @returns {boolean} whether cookie consent settings have been chosen by the user.
|
|
29
33
|
*/export var getIsCookieConsentHandled=createSelector(getCookieSettingsState,function(settingsState){return(settingsState===null||settingsState===void 0?void 0:settingsState.comfortCookiesAccepted)!==null||(settingsState===null||settingsState===void 0?void 0:settingsState.statisticsCookiesAccepted)!==null;});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{
|
|
1
|
+
export{getAreComfortCookiesAccepted}from"./cookieConsent";export{getAreStatisticsCookiesAccepted}from"./cookieConsent";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import _regeneratorRuntime from"@babel/runtime/regenerator";function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value;}catch(error){reject(error);return;}if(info.done){resolve(value);}else{Promise.resolve(value).then(_next,_throw);}}function _asyncToGenerator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value);}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err);}_next(undefined);});};}import{main$,appDidStart$}from'@shopgate/engage/core/streams';import{ROUTE_WILL_LEAVE}from'@shopgate/engage/core/constants';import{PRIVACY_SETTINGS_PATTERN}from'@shopgate/engage/tracking/constants';import{appSupportsCookieConsent}from'@shopgate/engage/core/helpers';import{grantAppTrackingTransparencyPermission}from'@shopgate/engage/core/actions';import{handleCookieConsent,showCookieConsentModal}from"../action-creators";import{getIsCookieConsentHandled,
|
|
1
|
+
import _regeneratorRuntime from"@babel/runtime/regenerator";function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value;}catch(error){reject(error);return;}if(info.done){resolve(value);}else{Promise.resolve(value).then(_next,_throw);}}function _asyncToGenerator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value);}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err);}_next(undefined);});};}import{main$,appDidStart$}from'@shopgate/engage/core/streams';import{ROUTE_WILL_LEAVE}from'@shopgate/engage/core/constants';import{PRIVACY_SETTINGS_PATTERN}from'@shopgate/engage/tracking/constants';import{appSupportsCookieConsent}from'@shopgate/engage/core/helpers';import{grantAppTrackingTransparencyPermission}from'@shopgate/engage/core/actions';import{handleCookieConsent,showCookieConsentModal}from"../action-creators";import{getIsCookieConsentHandled,getAreComfortCookiesAccepted,getAreStatisticsCookiesAccepted}from"../selectors/cookieConsent";import{appConfig}from"../../index";/**
|
|
2
2
|
* stream which gets triggered when the user navigates back from privacy settings page
|
|
3
3
|
* and cookie consent modal needs to be shown again.
|
|
4
4
|
* @type {Observable}
|
|
@@ -9,6 +9,6 @@ import _regeneratorRuntime from"@babel/runtime/regenerator";function asyncGenera
|
|
|
9
9
|
* if merchant has not activated the cookie feature OR if merchant has activated cookie feature
|
|
10
10
|
* and user has chosen cookies already trigger stream to run code that depends on the cookie
|
|
11
11
|
* consent.
|
|
12
|
-
*/if(!(!isCookieConsentActivated||isCookieConsentActivated&&isCookieConsentHandled||!appSupportsCookieConsent())){_context.next=12;break;}comfortCookiesAccepted=
|
|
12
|
+
*/if(!(!isCookieConsentActivated||isCookieConsentActivated&&isCookieConsentHandled||!appSupportsCookieConsent())){_context.next=12;break;}comfortCookiesAccepted=getAreComfortCookiesAccepted(state);statisticsCookiesAccepted=getAreStatisticsCookiesAccepted(state);dispatch(handleCookieConsent({comfortCookiesAccepted:comfortCookiesAccepted,statisticsCookiesAccepted:statisticsCookiesAccepted}));if(!(appSupportsCookieConsent()&&(comfortCookiesAccepted||statisticsCookiesAccepted))){_context.next=11;break;}_context.next=11;return dispatch(grantAppTrackingTransparencyPermission());case 11:return _context.abrupt("return");case 12:// if merchant has activated cookie feature but user has not chosen cookies yet:
|
|
13
13
|
// show cookie consent modal to make user choose them
|
|
14
14
|
if(isCookieConsentActivated&&!isCookieConsentHandled){dispatch(showCookieConsentModal());}case 13:case"end":return _context.stop();}}},_callee);}));return function(_x){return _ref4.apply(this,arguments);};}());subscribe(navigateBackToCookieModal$,function(_ref5){var dispatch=_ref5.dispatch,getState=_ref5.getState;var isCookieConsentActivated=appConfig.cookieConsent.isCookieConsentActivated;var isCookieConsentHandled=getIsCookieConsentHandled(getState());if(isCookieConsentActivated&&!isCookieConsentHandled){dispatch(showCookieConsentModal());}});}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
-
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
3
|
-
<svg width="100%" height="100%" viewBox="0 0 1107 791" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
|
4
|
-
<g transform="matrix(1,0,0,1,-88.9596,-502.577)">
|
|
5
|
-
<g transform="matrix(1.28381,0,0,1.28381,-145.009,-328.293)">
|
|
6
|
-
<g>
|
|
7
|
-
<g transform="matrix(0.738616,0,0,0.7166,142.625,351.19)">
|
|
8
|
-
<path d="M1052.9,1091.68C1052.9,1062.46 1029.88,1038.73 1001.53,1038.73L244.024,1038.73C215.667,1038.73 192.646,1062.46 192.646,1091.68L192.646,1219.08C192.646,1248.3 215.667,1272.03 244.024,1272.03L1001.53,1272.03C1029.88,1272.03 1052.9,1248.3 1052.9,1219.08L1052.9,1091.68Z" style="fill:rgb(193,193,193);"/>
|
|
9
|
-
</g>
|
|
10
|
-
<g transform="matrix(0.859568,0,0,0.833947,80.1965,145.713)">
|
|
11
|
-
<path d="M1052.9,1091.68C1052.9,1062.46 1029.88,1038.73 1001.53,1038.73L244.024,1038.73C215.667,1038.73 192.646,1062.46 192.646,1091.68L192.646,1219.08C192.646,1248.3 215.667,1272.03 244.024,1272.03L1001.53,1272.03C1029.88,1272.03 1052.9,1248.3 1052.9,1219.08L1052.9,1091.68Z" style="fill:rgb(216,216,216);"/>
|
|
12
|
-
</g>
|
|
13
|
-
<g transform="matrix(1.00203,0,0,0.972164,-10.791,-90.8989)">
|
|
14
|
-
<path d="M1052.9,1091.68C1052.9,1062.46 1029.88,1038.73 1001.53,1038.73L244.024,1038.73C215.667,1038.73 192.646,1062.46 192.646,1091.68L192.646,1219.08C192.646,1248.3 215.667,1272.03 244.024,1272.03L1001.53,1272.03C1029.88,1272.03 1052.9,1248.3 1052.9,1219.08L1052.9,1091.68Z" style="fill:rgb(235,235,235);"/>
|
|
15
|
-
</g>
|
|
16
|
-
<g transform="matrix(1.00203,0,0,0.972164,-10.791,-362.62)">
|
|
17
|
-
<path d="M1052.9,1091.68C1052.9,1062.46 1029.88,1038.73 1001.53,1038.73L244.024,1038.73C215.667,1038.73 192.646,1062.46 192.646,1091.68L192.646,1219.08C192.646,1248.3 215.667,1272.03 244.024,1272.03L1001.53,1272.03C1029.88,1272.03 1052.9,1248.3 1052.9,1219.08L1052.9,1091.68Z" style="fill:rgb(235,235,235);"/>
|
|
18
|
-
</g>
|
|
19
|
-
</g>
|
|
20
|
-
<g transform="matrix(1.00052,0,0,1,-19.3912,30.3377)">
|
|
21
|
-
<path d="M953.776,1037.91C953.776,1035.43 951.762,1033.42 949.281,1033.42L424.519,1033.42C422.039,1033.42 420.025,1035.43 420.025,1037.91L420.025,1061.27C420.025,1063.75 422.039,1065.77 424.519,1065.77L949.281,1065.77C951.762,1065.77 953.776,1063.75 953.776,1061.27L953.776,1037.91Z" style="fill:rgb(187,196,198);fill-opacity:0.65;"/>
|
|
22
|
-
</g>
|
|
23
|
-
<g transform="matrix(0.823791,0,0,1,54.8392,-16.3916)">
|
|
24
|
-
<path d="M953.776,1037.91C953.776,1035.43 951.33,1033.42 948.317,1033.42L425.484,1033.42C422.471,1033.42 420.025,1035.43 420.025,1037.91L420.025,1061.27C420.025,1063.75 422.471,1065.77 425.484,1065.77L948.317,1065.77C951.33,1065.77 953.776,1063.75 953.776,1061.27L953.776,1037.91Z" style="fill:rgb(187,196,198);fill-opacity:0.65;"/>
|
|
25
|
-
</g>
|
|
26
|
-
<g transform="matrix(0.904048,0,0,1,21.129,-67.1309)">
|
|
27
|
-
<path d="M953.776,1037.91C953.776,1035.43 951.547,1033.42 948.801,1033.42L424.999,1033.42C422.254,1033.42 420.025,1035.43 420.025,1037.91L420.025,1061.27C420.025,1063.75 422.254,1065.77 424.999,1065.77L948.801,1065.77C951.547,1065.77 953.776,1063.75 953.776,1061.27L953.776,1037.91Z" style="fill:rgb(187,196,198);fill-opacity:0.65;"/>
|
|
28
|
-
</g>
|
|
29
|
-
<g transform="matrix(1.02071,0,0,1.04641,-38.8586,-763.331)">
|
|
30
|
-
<path d="M393.702,1679.71C393.702,1660.56 377.767,1645.02 358.141,1645.02L287.019,1645.02C267.393,1645.02 251.458,1660.56 251.458,1679.71L251.458,1749.29C251.458,1768.44 267.393,1783.98 287.019,1783.98L358.141,1783.98C377.767,1783.98 393.702,1768.44 393.702,1749.29L393.702,1679.71Z" style="fill:rgb(255,115,115);"/>
|
|
31
|
-
<clipPath id="_clip1">
|
|
32
|
-
<path d="M393.702,1679.71C393.702,1660.56 377.767,1645.02 358.141,1645.02L287.019,1645.02C267.393,1645.02 251.458,1660.56 251.458,1679.71L251.458,1749.29C251.458,1768.44 267.393,1783.98 287.019,1783.98L358.141,1783.98C377.767,1783.98 393.702,1768.44 393.702,1749.29L393.702,1679.71Z"/>
|
|
33
|
-
</clipPath>
|
|
34
|
-
<g clip-path="url(#_clip1)">
|
|
35
|
-
<g transform="matrix(0.76313,0,0,0.744387,148.731,1102.32)">
|
|
36
|
-
<path d="M226.411,745.537L243.421,797.888L298.467,797.888L253.934,830.243L270.944,882.594L226.411,850.239L181.879,882.594L198.889,830.243L154.356,797.888L209.402,797.888L226.411,745.537Z" style="fill:white;"/>
|
|
37
|
-
</g>
|
|
38
|
-
</g>
|
|
39
|
-
</g>
|
|
40
|
-
<g transform="matrix(0.933678,0,0,1,8.6838,-241.981)">
|
|
41
|
-
<path d="M953.776,1037.91C953.776,1035.43 951.617,1033.42 948.959,1033.42L424.841,1033.42C422.183,1033.42 420.025,1035.43 420.025,1037.91L420.025,1061.27C420.025,1063.75 422.183,1065.77 424.841,1065.77L948.959,1065.77C951.617,1065.77 953.776,1063.75 953.776,1061.27L953.776,1037.91Z" style="fill:rgb(187,196,198);fill-opacity:0.65;"/>
|
|
42
|
-
</g>
|
|
43
|
-
<g transform="matrix(1,0,0,1,-19.173,-288.71)">
|
|
44
|
-
<path d="M953.776,1037.91C953.776,1035.43 951.761,1033.42 949.279,1033.42L424.522,1033.42C422.04,1033.42 420.025,1035.43 420.025,1037.91L420.025,1061.27C420.025,1063.75 422.04,1065.77 424.522,1065.77L949.279,1065.77C951.761,1065.77 953.776,1063.75 953.776,1061.27L953.776,1037.91Z" style="fill:rgb(187,196,198);fill-opacity:0.65;"/>
|
|
45
|
-
</g>
|
|
46
|
-
<g transform="matrix(0.844941,0,0,1,45.9556,-337.889)">
|
|
47
|
-
<path d="M953.776,1037.91C953.776,1035.43 951.391,1033.42 948.453,1033.42L425.347,1033.42C422.409,1033.42 420.025,1035.43 420.025,1037.91L420.025,1061.27C420.025,1063.75 422.409,1065.77 425.347,1065.77L948.453,1065.77C951.391,1065.77 953.776,1063.75 953.776,1061.27L953.776,1037.91Z" style="fill:rgb(187,196,198);fill-opacity:0.65;"/>
|
|
48
|
-
</g>
|
|
49
|
-
<g transform="matrix(1.02071,0,0,1.04641,-38.8586,-1035.65)">
|
|
50
|
-
<path d="M393.702,1679.71C393.702,1660.56 377.767,1645.02 358.141,1645.02L287.019,1645.02C267.393,1645.02 251.458,1660.56 251.458,1679.71L251.458,1749.29C251.458,1768.44 267.393,1783.98 287.019,1783.98L358.141,1783.98C377.767,1783.98 393.702,1768.44 393.702,1749.29L393.702,1679.71Z" style="fill:rgb(255,115,115);"/>
|
|
51
|
-
<clipPath id="_clip2">
|
|
52
|
-
<path d="M393.702,1679.71C393.702,1660.56 377.767,1645.02 358.141,1645.02L287.019,1645.02C267.393,1645.02 251.458,1660.56 251.458,1679.71L251.458,1749.29C251.458,1768.44 267.393,1783.98 287.019,1783.98L358.141,1783.98C377.767,1783.98 393.702,1768.44 393.702,1749.29L393.702,1679.71Z"/>
|
|
53
|
-
</clipPath>
|
|
54
|
-
<g clip-path="url(#_clip2)">
|
|
55
|
-
<g transform="matrix(0.979712,0,0,0.955649,69.3286,762.785)">
|
|
56
|
-
<text x="193.673px" y="1041.62px" style="font-family:'HelveticaNeue-Bold', 'Helvetica Neue';font-weight:700;font-size:128px;fill:white;">%</text>
|
|
57
|
-
</g>
|
|
58
|
-
</g>
|
|
59
|
-
</g>
|
|
60
|
-
</g>
|
|
61
|
-
</g>
|
|
62
|
-
</svg>
|