@paypal/checkout-components 5.0.252-alpha.2 → 5.0.252-alpha.3

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 (41) hide show
  1. package/dist/button.js +1 -1
  2. package/package.json +9 -3
  3. package/src/funding/applepay/config.jsx +2 -1
  4. package/src/funding/applepay/template.jsx +3 -1
  5. package/src/funding/bancontact/config.jsx +2 -1
  6. package/src/funding/blik/config.jsx +2 -1
  7. package/src/funding/boleto/config.jsx +2 -1
  8. package/src/funding/card/amex/config.js +2 -1
  9. package/src/funding/card/config.jsx +2 -3
  10. package/src/funding/card/discover/config.js +2 -1
  11. package/src/funding/card/elo/config.js +2 -1
  12. package/src/funding/card/hiper/config.js +2 -1
  13. package/src/funding/card/jcb/config.js +2 -1
  14. package/src/funding/card/mastercard/config.js +2 -1
  15. package/src/funding/card/visa/config.js +2 -1
  16. package/src/funding/credit/config.jsx +7 -4
  17. package/src/funding/eps/config.jsx +2 -1
  18. package/src/funding/giropay/config.jsx +2 -1
  19. package/src/funding/ideal/config.jsx +2 -11
  20. package/src/funding/itau/config.jsx +2 -1
  21. package/src/funding/maxima/config.jsx +2 -1
  22. package/src/funding/mercadopago/config.jsx +2 -1
  23. package/src/funding/multibanco/config.jsx +2 -1
  24. package/src/funding/mybank/config.jsx +2 -1
  25. package/src/funding/oxxo/config.jsx +2 -1
  26. package/src/funding/p24/config.jsx +2 -1
  27. package/src/funding/paylater/config.jsx +2 -1
  28. package/src/funding/paypal/template.jsx +12 -13
  29. package/src/funding/payu/config.jsx +2 -1
  30. package/src/funding/satispay/config.jsx +2 -1
  31. package/src/funding/sepa/config.jsx +2 -1
  32. package/src/funding/sofort/config.jsx +2 -1
  33. package/src/funding/trustly/config.jsx +2 -1
  34. package/src/funding/venmo/config.jsx +3 -1
  35. package/src/funding/venmo/template.jsx +3 -2
  36. package/src/funding/verkkopankki/config.jsx +2 -1
  37. package/src/funding/wechatpay/config.jsx +2 -1
  38. package/src/funding/zimpler/config.jsx +2 -1
  39. package/src/interface/card-fields.js +6 -0
  40. package/src/lib/getLogoCDNExperiment.js +15 -2
  41. package/src/zoid/buttons/prerender.jsx +0 -15
@@ -7,6 +7,7 @@ import { Fragment, node } from '@krakenjs/jsx-pragmatic/src';
7
7
  import { BUTTON_LAYOUT } from '../../constants';
8
8
  import { DEFAULT_APM_FUNDING_CONFIG, type FundingSourceConfig, BasicLabel } from '../common';
9
9
  import { Text, Space } from '../../ui/text';
10
+ import { enableLogoCDNExperiment } from '../../lib/getLogoCDNExperiment';
10
11
 
11
12
  export function getTrustlyConfig() : FundingSourceConfig {
12
13
  return {
@@ -20,7 +21,7 @@ export function getTrustlyConfig() : FundingSourceConfig {
20
21
  BUTTON_LAYOUT.VERTICAL
21
22
  ],
22
23
 
23
- Logo: ({ logoColor, optional }) => TrustlyLogo({ logoColor, optional }),
24
+ Logo: ({ logoColor, optional }) => enableLogoCDNExperiment(TrustlyLogo, { logoColor, optional }),
24
25
 
25
26
  Label: ({ logo, ...opts }) => {
26
27
  if (__WEB__) {
@@ -6,9 +6,11 @@ import { PLATFORM } from '@paypal/sdk-constants/src';
6
6
 
7
7
  import { BUTTON_COLOR, BUTTON_LAYOUT } from '../../constants';
8
8
  import { DEFAULT_FUNDING_CONFIG, type FundingSourceConfig } from '../common';
9
+ import { enableLogoCDNExperiment } from '../../lib/getLogoCDNExperiment';
9
10
 
10
11
  import { WalletLabel, Label, AppLabel } from './template';
11
12
 
13
+
12
14
  export function getVenmoConfig() : FundingSourceConfig {
13
15
  return {
14
16
  ...DEFAULT_FUNDING_CONFIG,
@@ -39,7 +41,7 @@ export function getVenmoConfig() : FundingSourceConfig {
39
41
  return {};
40
42
  },
41
43
 
42
- Logo: ({ logoColor, optional }) => VenmoLogo({ logoColor, optional }),
44
+ Logo: ({ logoColor, optional }) => enableLogoCDNExperiment(VenmoLogo, { logoColor, optional }),
43
45
 
44
46
  Label: ({ ...props }) => {
45
47
  if (props.experiment && props.experiment.enableVenmoAppLabel) {
@@ -9,6 +9,7 @@ import {
9
9
  BasicLabel
10
10
  } from '../common';
11
11
  import { Text, Space } from '../../ui/text';
12
+ import { enableLogoCDNExperiment } from '../../lib/getLogoCDNExperiment';
12
13
 
13
14
  import css from './style.scoped.scss';
14
15
 
@@ -17,7 +18,7 @@ export function AppLabel(opts : LabelOptions) : ChildType {
17
18
 
18
19
  const AppLogo : ChildType = (
19
20
  <Style css={ css }>
20
- <VenmoLogo logoColor={ logoColor } />
21
+ {enableLogoCDNExperiment(VenmoLogo, { logoColor })}
21
22
  <Text className={ [ 'app-label' ] }>
22
23
  App
23
24
  </Text>
@@ -38,7 +39,7 @@ export function Label(opts : LabelOptions) : ChildType {
38
39
  export function WalletLabel({ ...props } : WalletLabelOptions) : ChildType {
39
40
  const { instrument, logoColor } = props;
40
41
  let label;
41
- const logo = <VenmoLogo logoColor={ logoColor } />;
42
+ const logo = enableLogoCDNExperiment(VenmoLogo, { logoColor });
42
43
 
43
44
  if (instrument && instrument.label) {
44
45
  label = instrument.label;
@@ -7,6 +7,7 @@ import { Fragment, node } from '@krakenjs/jsx-pragmatic/src';
7
7
  import { BUTTON_LAYOUT } from '../../constants';
8
8
  import { DEFAULT_APM_FUNDING_CONFIG, type FundingSourceConfig, BasicLabel } from '../common';
9
9
  import { Text, Space } from '../../ui/text';
10
+ import { enableLogoCDNExperiment } from '../../lib/getLogoCDNExperiment';
10
11
 
11
12
  export function getVerkkopankkiConfig() : FundingSourceConfig {
12
13
  return {
@@ -20,7 +21,7 @@ export function getVerkkopankkiConfig() : FundingSourceConfig {
20
21
 
21
22
  shippingChange: false,
22
23
 
23
- Logo: ({ logoColor, optional }) => VerkkopankkiLogo({ logoColor, optional }),
24
+ Logo: ({ logoColor, optional }) => enableLogoCDNExperiment(VerkkopankkiLogo, { logoColor, optional }),
24
25
 
25
26
  Label: ({ logo, ...opts }) => {
26
27
  if (__WEB__) {
@@ -7,6 +7,7 @@ import { Fragment, node } from '@krakenjs/jsx-pragmatic/src';
7
7
  import { BUTTON_LAYOUT } from '../../constants';
8
8
  import { DEFAULT_APM_FUNDING_CONFIG, type FundingSourceConfig, BasicLabel } from '../common';
9
9
  import { Text, Space } from '../../ui/text';
10
+ import { enableLogoCDNExperiment } from '../../lib/getLogoCDNExperiment';
10
11
 
11
12
  export function getWechatpayConfig() : FundingSourceConfig {
12
13
  return {
@@ -18,7 +19,7 @@ export function getWechatpayConfig() : FundingSourceConfig {
18
19
  BUTTON_LAYOUT.VERTICAL
19
20
  ],
20
21
 
21
- Logo: ({ logoColor, optional }) => WechatpayLogo({ logoColor, optional }),
22
+ Logo: ({ logoColor, optional }) => enableLogoCDNExperiment(WechatpayLogo, { logoColor, optional }),
22
23
 
23
24
  Label: ({ logo, ...opts }) => {
24
25
  if (__WEB__) {
@@ -4,6 +4,7 @@
4
4
  import { ZimplerLogo } from '@paypal/sdk-logos/src';
5
5
 
6
6
  import { BUTTON_LAYOUT } from '../../constants';
7
+ import { enableLogoCDNExperiment } from '../../lib/getLogoCDNExperiment';
7
8
  import { DEFAULT_FUNDING_CONFIG, type FundingSourceConfig } from '../common';
8
9
 
9
10
  export function getZimplerConfig() : FundingSourceConfig {
@@ -16,6 +17,6 @@ export function getZimplerConfig() : FundingSourceConfig {
16
17
  BUTTON_LAYOUT.VERTICAL
17
18
  ],
18
19
 
19
- Logo: ({ logoColor, optional }) => ZimplerLogo({ logoColor, optional })
20
+ Logo: ({ logoColor, optional }) => enableLogoCDNExperiment(ZimplerLogo, { logoColor, optional })
20
21
  };
21
22
  }
@@ -1,5 +1,7 @@
1
1
  /* @flow */
2
2
 
3
+ import { destroy as zoidDestroy } from '@krakenjs/zoid/src';
4
+
3
5
  import type { LazyExport } from '../types';
4
6
  import { getCardFieldsComponent, type CardFieldsComponent } from '../zoid/card-fields/component';
5
7
  import { protectedExport } from '../lib';
@@ -7,3 +9,7 @@ import { protectedExport } from '../lib';
7
9
  export const CardFields : LazyExport<CardFieldsComponent> = {
8
10
  __get__: () => protectedExport(getCardFieldsComponent())
9
11
  };
12
+
13
+ export function destroy(err? : mixed) {
14
+ zoidDestroy(err);
15
+ }
@@ -2,11 +2,24 @@
2
2
 
3
3
  import { createExperiment } from "@paypal/sdk-client/src";
4
4
  import type { Experiment } from "@krakenjs/belter/src";
5
+ import type { ChildType } from "@krakenjs/jsx-pragmatic/src";
5
6
 
6
7
  export function getLogoCDNExperiment(): Experiment {
7
8
  return createExperiment("enable_logo_cdn", 100);
8
9
  }
9
10
 
10
- export function getPrefetchCDNExperiment(): Experiment {
11
- return createExperiment("enable_prefetch_cdn", 50);
11
+ export function enableLogoCDNExperiment<T>(
12
+ logo: (T) => ChildType,
13
+ logoOptions: T
14
+ ): ChildType {
15
+ // enable logo CDN experiment for first render only
16
+ if (__WEB__) {
17
+ const logoCDNExperiment = getLogoCDNExperiment();
18
+ const loadFromCDN = logoCDNExperiment.isEnabled();
19
+
20
+ return logo({ ...logoOptions, loadFromCDN });
21
+ }
22
+
23
+ // continue using inline svg for second render
24
+ return logo(logoOptions);
12
25
  }
@@ -13,7 +13,6 @@ import { DEFAULT_POPUP_SIZE } from '../checkout';
13
13
  import { EXPERIENCE } from '../../constants';
14
14
  import { Buttons } from '../../ui';
15
15
  import { type ButtonProps } from '../../ui/buttons/props';
16
- import { getPrefetchCDNExperiment } from '../../lib/getLogoCDNExperiment';
17
16
 
18
17
  type PrerenderedButtonsProps = {|
19
18
  nonce : ?string,
@@ -25,22 +24,8 @@ type PrerenderedButtonsProps = {|
25
24
  |}) => void
26
25
  |};
27
26
 
28
- function prefetchImage(src: string): void {
29
- const link = document.createElement("link");
30
- link.rel = "prefetch";
31
- link.as = "image";
32
- link.href = src;
33
- document.head?.append(link);
34
- }
35
-
36
27
  export function PrerenderedButtons({ nonce, onRenderCheckout, props } : PrerenderedButtonsProps) : ChildType {
37
28
  let win;
38
-
39
- if (getPrefetchCDNExperiment().isEnabled()) {
40
- prefetchImage('https://www.paypalobjects.com/js-sdk-logos/2.1.1/ideal-default.svg'
41
- )
42
- }
43
-
44
29
  const handleClick = (
45
30
  // eslint-disable-next-line no-undef
46
31
  event : SyntheticInputEvent<HTMLInputElement>,