@rebilly/instruments 1.0.1-beta → 1.0.2-beta.10
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/.babelrc +23 -5
- package/.eslintrc.js +27 -0
- package/.prettierrc.js +11 -0
- package/CONTRIBUTING.md +4 -0
- package/README.md +361 -2
- package/dist/events/base-event.js +51 -37
- package/dist/events/events.spec.js +18 -0
- package/dist/events/index.js +11 -8
- package/dist/functions/destroy.js +27 -5
- package/dist/functions/destroy.spec.js +69 -0
- package/dist/functions/initialize.js +60 -41
- package/dist/functions/initialize.spec.js +13 -13
- package/dist/functions/mount/fetch-summary-data.js +46 -0
- package/dist/functions/mount/fetch-summary-data.spec.js +44 -0
- package/dist/functions/mount/index.js +346 -0
- package/dist/functions/mount/mount.spec.js +135 -0
- package/dist/functions/on.js +26 -18
- package/dist/functions/on.spec.js +45 -63
- package/dist/functions/purchase.js +41 -154
- package/dist/functions/purchase.spec.js +60 -76
- package/dist/functions/show.js +39 -43
- package/dist/functions/show.spec.js +57 -0
- package/dist/functions/update.js +60 -5
- package/dist/functions/update.spec.js +100 -0
- package/dist/i18n/en.json +19 -0
- package/dist/i18n/es.json +19 -0
- package/dist/i18n/i18n.spec.js +6 -23
- package/dist/i18n/index.js +44 -67
- package/dist/index.js +70 -71
- package/dist/index.spec.js +24 -44
- package/dist/loader/index.js +63 -62
- package/dist/loader/loader.spec.js +14 -11
- package/dist/storefront/index.js +28 -39
- package/dist/storefront/models/plan-model.js +37 -54
- package/dist/storefront/models/product-model.js +25 -36
- package/dist/storefront/models/ready-to-pay-model.js +38 -42
- package/dist/storefront/models/summary-model.js +72 -99
- package/dist/storefront/plans.js +37 -84
- package/dist/storefront/plans.spec.js +61 -151
- package/dist/storefront/products.js +35 -83
- package/dist/storefront/products.spec.js +60 -150
- package/dist/storefront/purchase.js +27 -64
- package/dist/storefront/purchase.spec.js +51 -87
- package/dist/storefront/ready-to-pay.js +45 -107
- package/dist/storefront/ready-to-pay.spec.js +72 -147
- package/dist/storefront/storefront.spec.js +6 -6
- package/dist/storefront/summary.js +37 -84
- package/dist/storefront/summary.spec.js +135 -240
- package/dist/style/base/__snapshots__/theme.spec.js.snap +52 -0
- package/dist/style/base/index.js +72 -0
- package/dist/style/base/theme.js +73 -0
- package/dist/style/base/theme.spec.js +30 -0
- package/dist/style/browserslist.js +8 -0
- package/dist/style/components/address.js +64 -0
- package/dist/style/components/button.js +61 -0
- package/dist/style/components/divider.js +48 -0
- package/dist/style/components/forms/checkbox.js +83 -0
- package/dist/style/components/forms/field.js +53 -0
- package/dist/style/components/forms/form.js +28 -0
- package/dist/style/components/forms/input.js +45 -0
- package/dist/style/components/forms/label.js +43 -0
- package/dist/style/components/forms/select.js +63 -0
- package/dist/style/components/forms/validation.js +34 -0
- package/dist/style/components/icons.js +22 -0
- package/dist/style/components/index.js +57 -0
- package/dist/style/components/loader.js +48 -0
- package/dist/style/components/methods.js +104 -0
- package/dist/style/components/overlay.js +33 -0
- package/dist/style/helpers/index.js +59 -0
- package/dist/style/index.js +48 -0
- package/dist/style/payment-instruments/content.js +17 -0
- package/dist/style/payment-instruments/index.js +20 -0
- package/dist/style/payment-instruments/payment-card.js +35 -0
- package/dist/style/utils/color-values.js +22 -0
- package/dist/style/vendor/framepay.js +34 -0
- package/dist/style/vendor/postmate.js +17 -0
- package/dist/style/views/confirmation.js +85 -0
- package/dist/style/views/index.js +29 -0
- package/dist/style/views/method-selector.js +20 -0
- package/dist/style/views/modal.js +93 -0
- package/dist/style/views/result.js +61 -0
- package/dist/style/views/summary.js +123 -0
- package/dist/utils/add-dom-element.js +12 -34
- package/dist/utils/format-currency.js +4 -4
- package/dist/utils/has-valid-css-selector.js +2 -2
- package/dist/utils/index.js +15 -31
- package/dist/utils/is-dom-element.js +1 -1
- package/dist/utils/process-property-as-dom-element.js +12 -17
- package/dist/utils/sleep.js +10 -0
- package/{src/components → dist/views}/__snapshots__/summary.spec.js.snap +7 -3
- package/dist/views/common/iframe/base-iframe.js +57 -0
- package/dist/views/common/iframe/event-listeners.js +50 -0
- package/dist/views/common/iframe/index.js +19 -0
- package/dist/views/common/iframe/method-iframe.js +33 -0
- package/dist/views/common/iframe/modal-iframe.js +38 -0
- package/dist/views/common/iframe/view-iframe.js +31 -0
- package/dist/views/common/render-utilities.js +11 -0
- package/dist/views/confirmation.js +82 -0
- package/dist/views/method-selector/__snapshots__/method-selector.spec.js.snap +3 -0
- package/dist/views/method-selector/express-methods/apple-pay.js +92 -0
- package/dist/views/method-selector/express-methods/google-pay.js +32 -0
- package/dist/views/method-selector/express-methods/paypal.js +19 -0
- package/dist/views/method-selector/generate-digital-wallet.js +59 -0
- package/dist/views/method-selector/generate-digital-wallet.spec.js +132 -0
- package/dist/views/method-selector/get-method-data.js +25 -0
- package/dist/views/method-selector/get-payment-methods.js +55 -0
- package/dist/views/method-selector/get-payment-methods.spec.js +44 -0
- package/dist/views/method-selector/index.js +133 -0
- package/dist/views/method-selector/method-selector.spec.js +139 -0
- package/dist/views/method-selector/mount-express-methods.js +69 -0
- package/dist/views/method-selector/mount-methods.js +78 -0
- package/dist/views/modal.js +83 -0
- package/dist/views/result.js +42 -0
- package/dist/views/summary.js +162 -0
- package/dist/views/summary.spec.js +148 -0
- package/package.json +12 -6
- package/src/events/base-event.js +35 -12
- package/src/events/events.spec.js +11 -0
- package/src/events/index.js +12 -6
- package/src/functions/destroy.js +22 -3
- package/src/functions/destroy.spec.js +63 -0
- package/src/functions/initialize.js +43 -20
- package/src/functions/initialize.spec.js +9 -7
- package/src/functions/mount/fetch-summary-data.js +29 -0
- package/src/functions/mount/fetch-summary-data.spec.js +41 -0
- package/src/functions/mount/index.js +312 -0
- package/src/functions/mount/mount.spec.js +171 -0
- package/src/functions/on.js +17 -14
- package/src/functions/on.spec.js +39 -29
- package/src/functions/purchase.js +24 -64
- package/src/functions/purchase.spec.js +19 -17
- package/src/functions/show.js +27 -7
- package/src/functions/show.spec.js +61 -0
- package/src/functions/update.js +50 -3
- package/src/functions/update.spec.js +107 -0
- package/src/i18n/i18n.spec.js +6 -4
- package/src/i18n/index.js +20 -12
- package/src/index.js +43 -49
- package/src/index.spec.js +11 -42
- package/src/loader/index.js +55 -39
- package/src/loader/loader.spec.js +30 -23
- package/src/storefront/index.js +9 -7
- package/src/storefront/models/plan-model.js +1 -1
- package/src/storefront/models/product-model.js +1 -1
- package/src/storefront/models/ready-to-pay-model.js +10 -4
- package/src/storefront/models/summary-model.js +8 -15
- package/src/storefront/plans.js +16 -12
- package/src/storefront/plans.spec.js +29 -37
- package/src/storefront/products.js +16 -12
- package/src/storefront/products.spec.js +28 -39
- package/src/storefront/purchase.js +8 -6
- package/src/storefront/purchase.spec.js +18 -17
- package/src/storefront/ready-to-pay.js +19 -13
- package/src/storefront/ready-to-pay.spec.js +41 -41
- package/src/storefront/storefront.spec.js +1 -1
- package/src/storefront/summary.js +14 -12
- package/src/storefront/summary.spec.js +37 -50
- package/src/style/base/__snapshots__/theme.spec.js.snap +52 -0
- package/src/style/base/index.js +63 -0
- package/src/style/base/theme.js +61 -0
- package/src/style/base/theme.spec.js +32 -0
- package/src/style/browserslist.js +1 -0
- package/src/style/components/address.js +55 -0
- package/src/style/components/button.js +54 -0
- package/src/style/components/divider.js +39 -0
- package/src/style/components/forms/checkbox.js +76 -0
- package/src/style/components/forms/field.js +44 -0
- package/src/style/components/forms/form.js +19 -0
- package/src/style/components/forms/input.js +36 -0
- package/src/style/components/forms/label.js +34 -0
- package/src/style/components/forms/select.js +54 -0
- package/src/style/components/forms/validation.js +25 -0
- package/src/style/components/icons.js +13 -0
- package/src/style/components/index.js +35 -0
- package/src/style/components/loader.js +41 -0
- package/src/style/components/methods.js +93 -0
- package/src/style/components/overlay.js +24 -0
- package/src/style/helpers/index.js +51 -0
- package/src/style/index.js +30 -0
- package/src/style/payment-instruments/content.js +8 -0
- package/src/style/payment-instruments/index.js +10 -0
- package/src/style/payment-instruments/payment-card.js +26 -0
- package/src/style/utils/color-values.js +9 -0
- package/src/style/vendor/framepay.js +25 -0
- package/src/style/vendor/postmate.js +8 -0
- package/src/style/views/confirmation.js +76 -0
- package/src/style/views/index.js +16 -0
- package/src/style/views/method-selector.js +11 -0
- package/src/style/views/modal.js +84 -0
- package/src/style/views/result.js +52 -0
- package/src/style/views/summary.js +114 -0
- package/src/utils/add-dom-element.js +12 -13
- package/src/utils/format-currency.js +4 -1
- package/src/utils/has-valid-css-selector.js +2 -2
- package/src/utils/index.js +2 -6
- package/src/utils/is-dom-element.js +1 -1
- package/src/utils/process-property-as-dom-element.js +27 -24
- package/src/utils/sleep.js +3 -0
- package/src/views/__snapshots__/summary.spec.js.snap +292 -0
- package/src/views/common/iframe/base-iframe.js +46 -0
- package/src/views/common/iframe/event-listeners.js +27 -0
- package/src/views/common/iframe/index.js +7 -0
- package/src/views/common/iframe/method-iframe.js +21 -0
- package/src/views/common/iframe/modal-iframe.js +27 -0
- package/src/views/common/iframe/view-iframe.js +18 -0
- package/src/views/common/render-utilities.js +4 -0
- package/src/views/confirmation.js +57 -0
- package/src/views/method-selector/__snapshots__/method-selector.spec.js.snap +3 -0
- package/src/views/method-selector/express-methods/apple-pay.js +78 -0
- package/src/views/method-selector/express-methods/google-pay.js +25 -0
- package/src/views/method-selector/express-methods/paypal.js +7 -0
- package/src/views/method-selector/generate-digital-wallet.js +44 -0
- package/src/views/method-selector/generate-digital-wallet.spec.js +131 -0
- package/src/{components/form → views/method-selector}/get-method-data.js +9 -5
- package/src/views/method-selector/get-payment-methods.js +40 -0
- package/src/views/method-selector/get-payment-methods.spec.js +40 -0
- package/src/views/method-selector/index.js +110 -0
- package/src/views/method-selector/method-selector.spec.js +146 -0
- package/src/views/method-selector/mount-express-methods.js +53 -0
- package/src/views/method-selector/mount-methods.js +71 -0
- package/src/views/modal.js +84 -0
- package/src/views/result.js +30 -0
- package/src/{components → views}/summary.js +90 -21
- package/src/views/summary.spec.js +170 -0
- package/tests/async-utilities.js +22 -0
- package/tests/mocks/rebilly-instruments-mock.js +105 -7
- package/dist/components/confirmation.js +0 -103
- package/dist/components/form/form.js +0 -110
- package/dist/components/form/form.spec.js +0 -135
- package/dist/components/form/get-method-data.js +0 -21
- package/dist/components/form/get-payment-methods.js +0 -42
- package/dist/components/form/method-selector.js +0 -61
- package/dist/components/form/mount-express-payment-methods.js +0 -102
- package/dist/components/form/process-digital-wallet-options.js +0 -20
- package/dist/components/form/zoid-helpers.js +0 -130
- package/dist/components/result.js +0 -66
- package/dist/components/summary.js +0 -60
- package/dist/components/summary.spec.js +0 -144
- package/dist/events/instrument-ready.js +0 -51
- package/dist/events/purchase-complete.js +0 -51
- package/dist/functions/mount.js +0 -311
- package/dist/functions/mount.spec.js +0 -203
- package/dist/styles/base-styles.js +0 -12
- package/dist/styles/flat-theme-object.js +0 -42
- package/dist/styles/framepay.js +0 -15
- package/dist/styles/main.js +0 -25
- package/dist/styles/payment-card.js +0 -12
- package/dist/styles/shade-tint-values-helper.js +0 -28
- package/dist/styles/style-variables.js +0 -43
- package/dist/utils/camel-case.js +0 -12
- package/dist/utils/kebab-case.js +0 -10
- package/dist/utils/un-kebab-case.js +0 -10
- package/src/components/confirmation.js +0 -77
- package/src/components/form/__snapshots__/form.spec.js.snap +0 -43
- package/src/components/form/form.js +0 -88
- package/src/components/form/form.spec.js +0 -109
- package/src/components/form/get-payment-methods.js +0 -32
- package/src/components/form/method-selector.js +0 -47
- package/src/components/form/mount-express-payment-methods.js +0 -84
- package/src/components/form/process-digital-wallet-options.js +0 -11
- package/src/components/form/zoid-helpers.js +0 -114
- package/src/components/result.js +0 -50
- package/src/components/summary.spec.js +0 -106
- package/src/events/instrument-ready.js +0 -11
- package/src/events/purchase-complete.js +0 -11
- package/src/functions/mount.js +0 -204
- package/src/functions/mount.spec.js +0 -172
- package/src/styles/base-styles.js +0 -741
- package/src/styles/flat-theme-object.js +0 -12
- package/src/styles/framepay.js +0 -30
- package/src/styles/main.js +0 -17
- package/src/styles/payment-card.js +0 -18
- package/src/styles/shade-tint-values-helper.js +0 -13
- package/src/styles/style-variables.js +0 -34
- package/src/utils/camel-case.js +0 -3
- package/src/utils/kebab-case.js +0 -3
- package/src/utils/un-kebab-case.js +0 -3
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _events = _interopRequireWildcard(require("../events"));
|
|
4
|
+
|
|
5
|
+
var _baseEvent = _interopRequireDefault(require("../events/base-event"));
|
|
6
|
+
|
|
7
|
+
var _rebillyInstrumentsMock = require("../../tests/mocks/rebilly-instruments-mock");
|
|
8
|
+
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
|
|
11
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
12
|
+
|
|
13
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
14
|
+
|
|
15
|
+
describe('RebillyInstruments Destroy', () => {
|
|
16
|
+
it('should be able to destroy instance', async () => {
|
|
17
|
+
const rebillyInstruments = await (0, _rebillyInstrumentsMock.RenderMockRebillyInstruments)();
|
|
18
|
+
const formElement = document.querySelector('.form-selector');
|
|
19
|
+
const summaryElement = document.querySelector('.summary-selector');
|
|
20
|
+
expect(formElement.innerHTML).not.toEqual('');
|
|
21
|
+
expect(summaryElement.innerHTML).not.toEqual('');
|
|
22
|
+
await rebillyInstruments.destroy();
|
|
23
|
+
expect(formElement.innerHTML).toEqual('');
|
|
24
|
+
expect(summaryElement.innerHTML).toEqual('');
|
|
25
|
+
});
|
|
26
|
+
it('should remove registered listeners', async () => {
|
|
27
|
+
const rebillyInstruments = await (0, _rebillyInstrumentsMock.RenderMockRebillyInstruments)();
|
|
28
|
+
const fakeEventListener = jest.fn();
|
|
29
|
+
_events.default.fakeEvent = new _baseEvent.default('fake-event');
|
|
30
|
+
|
|
31
|
+
_events.publicEventNames.push('fake-event');
|
|
32
|
+
|
|
33
|
+
rebillyInstruments.on('fake-event', fakeEventListener);
|
|
34
|
+
|
|
35
|
+
_events.default.fakeEvent.dispatch();
|
|
36
|
+
|
|
37
|
+
expect(fakeEventListener).toHaveBeenCalledTimes(1);
|
|
38
|
+
fakeEventListener.mockClear();
|
|
39
|
+
await rebillyInstruments.destroy();
|
|
40
|
+
|
|
41
|
+
_events.default.fakeEvent.dispatch();
|
|
42
|
+
|
|
43
|
+
expect(fakeEventListener).not.toHaveBeenCalled();
|
|
44
|
+
});
|
|
45
|
+
it('should remove multiple listeners on the same event', async () => {
|
|
46
|
+
const rebillyInstruments = await (0, _rebillyInstrumentsMock.RenderMockRebillyInstruments)();
|
|
47
|
+
const fakeEventListener = jest.fn();
|
|
48
|
+
const anotherFakeEventListener = jest.fn();
|
|
49
|
+
_events.default.fakeEvent = new _baseEvent.default('fake-event');
|
|
50
|
+
|
|
51
|
+
_events.publicEventNames.push('fake-event');
|
|
52
|
+
|
|
53
|
+
rebillyInstruments.on('fake-event', fakeEventListener);
|
|
54
|
+
rebillyInstruments.on('fake-event', anotherFakeEventListener);
|
|
55
|
+
|
|
56
|
+
_events.default.fakeEvent.dispatch();
|
|
57
|
+
|
|
58
|
+
expect(fakeEventListener).toHaveBeenCalledTimes(1);
|
|
59
|
+
expect(anotherFakeEventListener).toHaveBeenCalledTimes(1);
|
|
60
|
+
fakeEventListener.mockClear();
|
|
61
|
+
anotherFakeEventListener.mockClear();
|
|
62
|
+
await rebillyInstruments.destroy();
|
|
63
|
+
|
|
64
|
+
_events.default.fakeEvent.dispatch();
|
|
65
|
+
|
|
66
|
+
expect(fakeEventListener).not.toHaveBeenCalled();
|
|
67
|
+
expect(anotherFakeEventListener).not.toHaveBeenCalled();
|
|
68
|
+
});
|
|
69
|
+
});
|
|
@@ -3,14 +3,30 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.initialize = initialize;
|
|
7
7
|
|
|
8
8
|
var _storefront = _interopRequireDefault(require("../storefront"));
|
|
9
9
|
|
|
10
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : {
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
|
-
* @typedef {
|
|
13
|
+
* @typedef {Object} Typeography
|
|
14
|
+
* @param {string} fontFamily - Same as CSS property "font-family". Will be used thoughout the library ui
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @typedef {Object} Color
|
|
19
|
+
* @param {string} primary - CSS hexcode or color name, used to draw user attention
|
|
20
|
+
* @param {string} errorText - CSS hexcode or color name, used to display error messages
|
|
21
|
+
* @param {string} text - CSS hexcode or color name, used to display font color
|
|
22
|
+
* @param {string} buttonText - CSS hexcode or color name, used for buttons text, primary will be it's background
|
|
23
|
+
* @param {string} background - CSS hexcode or color name, the color used for the background of the forms
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @typedef {Object} Theme
|
|
28
|
+
* @param {Color} color - object with color properties
|
|
29
|
+
* @param {Typeography} typography - object with typography options
|
|
14
30
|
*/
|
|
15
31
|
|
|
16
32
|
/**
|
|
@@ -18,53 +34,56 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
|
|
|
18
34
|
* @property {string} organizationId - The Rebilly organization id that all api requests will be associated with.
|
|
19
35
|
* @property {string} publishableKey - The Rebilly publishable api key used to access the storefront api's.
|
|
20
36
|
* @property {string} websiteId - The Rebilly website api.
|
|
21
|
-
* @property {
|
|
37
|
+
* @property {"live" | "sandbox"} apiMode - default "live". The mode for the Rebilly api. default "live".
|
|
22
38
|
* @property {string} css - CSS string that overrides any styles.
|
|
39
|
+
* @property {Theme} theme - CSS string that overrides any styles.
|
|
40
|
+
* @property {object} i18n - object containing the language defintions. (or overrides for existing languages)
|
|
23
41
|
*/
|
|
24
42
|
|
|
25
43
|
/**
|
|
26
|
-
*
|
|
44
|
+
* @typedef {Object} InitializeParams
|
|
45
|
+
* @param {Object} state - The global state.
|
|
27
46
|
* @param {Configs} configs - The configurations that are to be passed to the library for use.
|
|
28
47
|
*/
|
|
29
|
-
function Initialize() {
|
|
30
|
-
var configs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
31
|
-
|
|
32
|
-
var organizationId = configs.organizationId,
|
|
33
|
-
publishableKey = configs.publishableKey,
|
|
34
|
-
websiteId = configs.websiteId,
|
|
35
|
-
_configs$apiMode = configs.apiMode,
|
|
36
|
-
apiMode = _configs$apiMode === void 0 ? 'live' : _configs$apiMode,
|
|
37
|
-
i18n = configs.i18n,
|
|
38
|
-
theme = configs.theme,
|
|
39
|
-
css = configs.css,
|
|
40
|
-
_configs$_dev = configs._dev,
|
|
41
|
-
_dev = _configs$_dev === void 0 ? {
|
|
42
|
-
liveUrl: null,
|
|
43
|
-
sandboxUrl: null
|
|
44
|
-
} : _configs$_dev;
|
|
45
48
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
49
|
+
/**
|
|
50
|
+
* Initialize library with configurations.
|
|
51
|
+
* @param {InitializeParams} params
|
|
52
|
+
*/
|
|
53
|
+
function initialize({
|
|
54
|
+
state,
|
|
55
|
+
configs
|
|
56
|
+
}) {
|
|
57
|
+
const {
|
|
58
|
+
organizationId,
|
|
59
|
+
publishableKey,
|
|
60
|
+
websiteId,
|
|
61
|
+
apiMode = 'live',
|
|
62
|
+
i18n,
|
|
63
|
+
theme,
|
|
64
|
+
css,
|
|
65
|
+
_dev = null
|
|
66
|
+
} = configs;
|
|
67
|
+
state.configs = {
|
|
68
|
+
organizationId,
|
|
69
|
+
publishableKey,
|
|
70
|
+
websiteId,
|
|
71
|
+
apiMode,
|
|
72
|
+
i18n,
|
|
73
|
+
theme,
|
|
74
|
+
css
|
|
55
75
|
};
|
|
56
|
-
|
|
57
|
-
publishableKey:
|
|
58
|
-
orgnizationId:
|
|
59
|
-
mode:
|
|
76
|
+
const storefront = {
|
|
77
|
+
publishableKey: state.configs.publishableKey,
|
|
78
|
+
orgnizationId: state.configs.orgnizationId,
|
|
79
|
+
mode: state.configs.apiMode || 'live'
|
|
60
80
|
};
|
|
61
81
|
|
|
62
|
-
if (_dev
|
|
63
|
-
|
|
64
|
-
storefront.
|
|
82
|
+
if (_dev) {
|
|
83
|
+
state.configs._dev = _dev;
|
|
84
|
+
storefront.liveUrl = _dev.liveUrl || 'https://api.local.rebilly.dev';
|
|
85
|
+
storefront.sandboxUrl = _dev.sandboxUrl || 'https://api-sandbox.local.rebilly.dev';
|
|
65
86
|
}
|
|
66
87
|
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
;
|
|
88
|
+
state.storefront = (0, _storefront.default)(storefront);
|
|
89
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _rebillyInstrumentsMock = require("tests/mocks/rebilly-instruments-mock");
|
|
3
|
+
var _rebillyInstrumentsMock = require("../../tests/mocks/rebilly-instruments-mock");
|
|
4
4
|
|
|
5
|
-
describe('RebillyInstruments instance',
|
|
6
|
-
it('should should set configs',
|
|
7
|
-
|
|
5
|
+
describe('RebillyInstruments instance', () => {
|
|
6
|
+
it('should should set configs', () => {
|
|
7
|
+
const testConfigs = {
|
|
8
8
|
apiMode: 'live',
|
|
9
9
|
organizationId: 'test-organization-id',
|
|
10
10
|
publishableKey: 'test-publishable-key',
|
|
@@ -14,21 +14,21 @@ describe('RebillyInstruments instance', function () {
|
|
|
14
14
|
sandboxUrl: null
|
|
15
15
|
}
|
|
16
16
|
};
|
|
17
|
-
|
|
18
|
-
expect(rebillyInstruments.configs).toEqual(testConfigs);
|
|
17
|
+
const rebillyInstruments = (0, _rebillyInstrumentsMock.MockRebillyInstruments)(testConfigs);
|
|
18
|
+
expect(rebillyInstruments.state.configs).toEqual(testConfigs);
|
|
19
19
|
});
|
|
20
|
-
it('should setup api instance',
|
|
21
|
-
|
|
22
|
-
expect(rebillyInstruments.storefront).toHaveProperty('setPublishableKey');
|
|
20
|
+
it('should setup api instance', () => {
|
|
21
|
+
const rebillyInstruments = (0, _rebillyInstrumentsMock.MockRebillyInstruments)();
|
|
22
|
+
expect(rebillyInstruments.state.storefront).toHaveProperty('setPublishableKey');
|
|
23
23
|
});
|
|
24
|
-
it('should have the right developer settings',
|
|
25
|
-
|
|
24
|
+
it('should have the right developer settings', () => {
|
|
25
|
+
const devOptions = {
|
|
26
26
|
_dev: {
|
|
27
27
|
liveUrl: 'https://api.rebilly.com',
|
|
28
28
|
sandboxUrl: 'https://api-sandbox.rebilly.com'
|
|
29
29
|
}
|
|
30
30
|
};
|
|
31
|
-
|
|
32
|
-
expect(rebillyInstruments.configs._dev).toEqual(devOptions._dev);
|
|
31
|
+
const rebillyInstruments = (0, _rebillyInstrumentsMock.MockRebillyInstruments)(devOptions);
|
|
32
|
+
expect(rebillyInstruments.state.configs._dev).toEqual(devOptions._dev);
|
|
33
33
|
});
|
|
34
34
|
});
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.fetchSummaryData = fetchSummaryData;
|
|
7
|
+
|
|
8
|
+
var _plans = require("../../storefront/plans");
|
|
9
|
+
|
|
10
|
+
var _products = require("../../storefront/products");
|
|
11
|
+
|
|
12
|
+
var _readyToPay = require("../../storefront/ready-to-pay");
|
|
13
|
+
|
|
14
|
+
var _summary = require("../../storefront/summary");
|
|
15
|
+
|
|
16
|
+
async function fetchSummaryData({
|
|
17
|
+
state = null,
|
|
18
|
+
riskMetadata = null,
|
|
19
|
+
summaryPayload = null
|
|
20
|
+
}) {
|
|
21
|
+
if (!riskMetadata) {
|
|
22
|
+
throw new Error('riskMetadata is required for FetchSummaryData');
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const [readyToPay, summary] = await Promise.all([(0, _readyToPay.fetchReadyToPay)({
|
|
26
|
+
riskMetadata,
|
|
27
|
+
state
|
|
28
|
+
}), (0, _summary.fetchSummary)({
|
|
29
|
+
data: summaryPayload,
|
|
30
|
+
state
|
|
31
|
+
})]);
|
|
32
|
+
const plans = await (0, _plans.fetchPlans)({
|
|
33
|
+
data: summary,
|
|
34
|
+
state
|
|
35
|
+
});
|
|
36
|
+
const products = await (0, _products.fetchProducts)({
|
|
37
|
+
data: plans,
|
|
38
|
+
state
|
|
39
|
+
});
|
|
40
|
+
return {
|
|
41
|
+
readyToPay,
|
|
42
|
+
summary,
|
|
43
|
+
plans,
|
|
44
|
+
products
|
|
45
|
+
};
|
|
46
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _fetchSummaryData = require("./fetch-summary-data");
|
|
4
|
+
|
|
5
|
+
describe.skip('Fetch Summary Data function helper', () => {
|
|
6
|
+
class TestInstance {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.storefront = jest.fn();
|
|
9
|
+
this.configs = jest.fn();
|
|
10
|
+
this.options = jest.fn();
|
|
11
|
+
this._fetchSummary = jest.fn(() => {
|
|
12
|
+
return new Promise(resolve => resolve({}));
|
|
13
|
+
});
|
|
14
|
+
this._fetchProducts = jest.fn();
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
it.skip('should fetch all the data', async () => {
|
|
20
|
+
const instance = new TestInstance();
|
|
21
|
+
await (0, _fetchSummaryData.fetchSummaryData)({
|
|
22
|
+
riskMetadata: {},
|
|
23
|
+
state: instance
|
|
24
|
+
});
|
|
25
|
+
expect(fetchReadyToPay).toBeCalledTimes(1);
|
|
26
|
+
expect(instance._fetchSummary).toBeCalledTimes(1);
|
|
27
|
+
expect(instance._fetchPlans).toBeCalledTimes(1);
|
|
28
|
+
expect(instance._fetchProducts).toBeCalledTimes(1);
|
|
29
|
+
});
|
|
30
|
+
it('should pass riskMetadata to ready to pay', async () => {
|
|
31
|
+
const testRiskMetadata = {};
|
|
32
|
+
const instance = new TestInstance();
|
|
33
|
+
await (0, _fetchSummaryData.fetchSummaryData)({
|
|
34
|
+
riskMetadata: testRiskMetadata,
|
|
35
|
+
state: instance
|
|
36
|
+
});
|
|
37
|
+
expect(instance._fetchReadyToPay).toBeCalledWith(testRiskMetadata);
|
|
38
|
+
expect(async () => {
|
|
39
|
+
await (0, _fetchSummaryData.fetchSummaryData)({
|
|
40
|
+
state: instance
|
|
41
|
+
});
|
|
42
|
+
}).rejects.toEqual(new Error('riskMetadata is required for FetchSummaryData'));
|
|
43
|
+
});
|
|
44
|
+
});
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.mount = mount;
|
|
7
|
+
|
|
8
|
+
var _riskDataCollector = require("@rebilly/risk-data-collector");
|
|
9
|
+
|
|
10
|
+
var _lodash = _interopRequireDefault(require("lodash.merge"));
|
|
11
|
+
|
|
12
|
+
var _summary = require("../../views/summary");
|
|
13
|
+
|
|
14
|
+
var _methodSelector = require("../../views/method-selector");
|
|
15
|
+
|
|
16
|
+
var _style = require("../../style");
|
|
17
|
+
|
|
18
|
+
var _utils = require("../../utils");
|
|
19
|
+
|
|
20
|
+
var _fetchSummaryData = require("./fetch-summary-data");
|
|
21
|
+
|
|
22
|
+
var _show = require("../show");
|
|
23
|
+
|
|
24
|
+
var _on = require("../on");
|
|
25
|
+
|
|
26
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
|
+
|
|
28
|
+
/* eslint-disable max-len */
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @typedef {object} Item
|
|
32
|
+
* @property {string} planId - The Rebilly id of the plan.
|
|
33
|
+
* @property {number} quantity - The number of the plans to be purchased.
|
|
34
|
+
* @property {string} thumbnail - The source img for the product. Recommend 100px by 100px.
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @typedef {object} Intent
|
|
39
|
+
* @property {"purchase" | "vault"} mode - Which mode the mount is usings. Default "purchase".
|
|
40
|
+
* @property {Array.<Item>} items - Which plans the customer is purchasing.
|
|
41
|
+
* @property {string} customerId - Which customer is associated with the instrument.
|
|
42
|
+
* @property {string} countryCode - The country code for the transaction
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* @typedef {GooglePayDisplayOptions} GooglePay
|
|
47
|
+
* @param {"back" | "white"} buttonColor - default "black". Color of google pay button
|
|
48
|
+
* @param {"short" | "long"} buttonType - default "short". The length of the button
|
|
49
|
+
* @param {string} buttonHeight - The value and units of the button to match other payment buttons
|
|
50
|
+
* <br>example: "44px", "1rem" etc.
|
|
51
|
+
*/
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* @typedef {object} GooglePay
|
|
55
|
+
* @param {GooglePayDisplayOptions} displayOptions - display options for google pay instrument
|
|
56
|
+
*/
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @typedef {object} PaymentCard
|
|
60
|
+
* @param {boolean} popup - default: false. Show method as a button with a form popup
|
|
61
|
+
* <br>Otherwise the form will be mounted inline.
|
|
62
|
+
*/
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* @typedef {object} Address
|
|
66
|
+
* @param {string} name - default: default. One of default, combined, or stacked.
|
|
67
|
+
* @param {string} region - default: default. One of default, split, or stacked.
|
|
68
|
+
* @param {Array.<"organization" | "phoneNumber">} show. Show extra fields listed.
|
|
69
|
+
* @param {Array.<"address" | "address2" | "email | "country" | "region" | "postalCode"">} hide. Hide the listed fields.
|
|
70
|
+
* @param {Array.<"organization" | "address" | "address2" | "email" | "phoneNumber" | "country" | "region" | "postalCode">} require.
|
|
71
|
+
* <br>If the field name is included, enforce the data for those inputs to be included.
|
|
72
|
+
* <br>First name and last name are always required. Country is always required if the products require shipping.
|
|
73
|
+
*/
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* @typedef {object} PaymentInstruments
|
|
77
|
+
* @param {boolean} compactExpressInstruments - default: true. Show express methods as
|
|
78
|
+
* <br>inline pill buttons, or list of full width button.
|
|
79
|
+
* @param {PaymentCard} paymentCard - settings for payment card instruments
|
|
80
|
+
* @param {GooglePay} googlePay - settings for google pay instruments
|
|
81
|
+
* @param {Address} address - customization for address components for all payment instruments.
|
|
82
|
+
*/
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* @typedef {object} Features
|
|
86
|
+
* @param {boolean} autoConfirmation - default: true. Will mount the confirmation screen after `instrument-ready`
|
|
87
|
+
* <br>event is triggered. Will need to trigger purchase manually if set to false.
|
|
88
|
+
* <br>Can use RebillyInstruments.show('confirmation', options) to mount defautl component
|
|
89
|
+
* @param {boolean} autoResult - default: true. Show results of transaction after `purchase-completed` event is triggered
|
|
90
|
+
* <br>Will need to handle purchase result manually if set to false.
|
|
91
|
+
* <br>Can use RebillyInstruments.show('result', options) to display default component
|
|
92
|
+
*/
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* @typedef {object} Options
|
|
96
|
+
* @property {Intent} intent - The information required for purchaseing or vaulting an instrument
|
|
97
|
+
* @property {PaymentInstruments} paymentInstruments - settings for various payment instruments
|
|
98
|
+
* @property {Features} features - flags to enable and disable different features
|
|
99
|
+
* @property {string} locale - default: auto. Language to render component text
|
|
100
|
+
*/
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Mount library with configurations.
|
|
104
|
+
* @typedef {object} MountParams
|
|
105
|
+
* @property {Object} state - Global state
|
|
106
|
+
* @property {string | HTMLElement} form - The CSS class or HTML element were the form will be mounted.
|
|
107
|
+
* @property {string | HTMLElement} form - The CSS class or HTML element were the form will be mounted.
|
|
108
|
+
* @property {string | HTMLElement} summary - The CSS class or HTML element were the summary will be mounted.
|
|
109
|
+
* @property {Options} options - The configurations that are to be passed to the library for use.
|
|
110
|
+
*/
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Mount library with configurations.
|
|
114
|
+
* @param {MountParams} params
|
|
115
|
+
*/
|
|
116
|
+
async function mount({
|
|
117
|
+
state,
|
|
118
|
+
form = '.rebilly-instruments',
|
|
119
|
+
summary = '.rebilly-instruments-summary',
|
|
120
|
+
options = {},
|
|
121
|
+
_dev = null
|
|
122
|
+
}) {
|
|
123
|
+
var _state$configs, _state$configs3;
|
|
124
|
+
|
|
125
|
+
state.form = form;
|
|
126
|
+
state.summary = summary;
|
|
127
|
+
state.mainStyle = null;
|
|
128
|
+
state._dev = _dev;
|
|
129
|
+
const framePayUrls = {
|
|
130
|
+
script: _dev ? _dev.framePayScriptLink || 'https://framepay.rebilly.com/rebilly.js' : 'https://framepay.rebilly.com/rebilly.js',
|
|
131
|
+
style: _dev ? _dev.framePayStyleLink || 'https://framepay.rebilly.com/rebilly.css' : 'https://framepay.rebilly.com/rebilly.css'
|
|
132
|
+
};
|
|
133
|
+
const _computed = {
|
|
134
|
+
paymentMethodsUrl: _dev ? _dev.paymentMethodsUrl || 'https://forms.local.rebilly.dev:3000' : 'https://forms.secure-payments.app'
|
|
135
|
+
};
|
|
136
|
+
const OPTIONS_DEFAULTS = {
|
|
137
|
+
intent: {
|
|
138
|
+
countryCode: 'US'
|
|
139
|
+
},
|
|
140
|
+
locale: 'auto',
|
|
141
|
+
paymentInstruments: {
|
|
142
|
+
address: {
|
|
143
|
+
name: 'default',
|
|
144
|
+
region: 'default',
|
|
145
|
+
hide: [],
|
|
146
|
+
show: [],
|
|
147
|
+
require: []
|
|
148
|
+
},
|
|
149
|
+
compactExpressInstruments: true,
|
|
150
|
+
googlePay: {
|
|
151
|
+
displayOptions: {
|
|
152
|
+
buttonColor: 'black',
|
|
153
|
+
buttonType: 'short',
|
|
154
|
+
buttonHeight: '44px'
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
applePay: {
|
|
158
|
+
displayOptions: {
|
|
159
|
+
buttonColor: 'black',
|
|
160
|
+
buttonType: 'plain',
|
|
161
|
+
buttonHeight: '44px'
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
paymentCard: {
|
|
165
|
+
popup: false
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
features: {
|
|
169
|
+
autoConfirmation: true,
|
|
170
|
+
autoResult: true
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
const combinedOptions = { ...options,
|
|
174
|
+
_computed
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
if (_dev) {
|
|
178
|
+
combinedOptions._dev = _dev;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
state.options = (0, _lodash.default)(OPTIONS_DEFAULTS, combinedOptions);
|
|
182
|
+
state.form = (0, _utils.processPropertyAsDOMElement)({
|
|
183
|
+
prop: state.form,
|
|
184
|
+
propName: 'form'
|
|
185
|
+
});
|
|
186
|
+
state.summary = (0, _utils.processPropertyAsDOMElement)({
|
|
187
|
+
prop: state.summary,
|
|
188
|
+
propName: 'summary',
|
|
189
|
+
isRequired: false
|
|
190
|
+
}); // Setup loader
|
|
191
|
+
|
|
192
|
+
state.loader.addDOMElement({
|
|
193
|
+
el: state.form
|
|
194
|
+
});
|
|
195
|
+
state.loader.addDOMElement({
|
|
196
|
+
section: 'summary',
|
|
197
|
+
el: state.summary
|
|
198
|
+
}); // Adds base stylesheet
|
|
199
|
+
|
|
200
|
+
state.mainStyle = await (0, _style.mainStyle)(((_state$configs = state.configs) === null || _state$configs === void 0 ? void 0 : _state$configs.theme) || {});
|
|
201
|
+
(0, _utils.addDOMElement)({
|
|
202
|
+
element: 'style',
|
|
203
|
+
attributes: {
|
|
204
|
+
type: 'text/css'
|
|
205
|
+
},
|
|
206
|
+
content: state.mainStyle,
|
|
207
|
+
target: 'head'
|
|
208
|
+
}); // Adds configs CSS to override any styles
|
|
209
|
+
|
|
210
|
+
if (state.configs.css) {
|
|
211
|
+
(0, _utils.addDOMElement)({
|
|
212
|
+
element: 'style',
|
|
213
|
+
attributes: {
|
|
214
|
+
type: 'text/css'
|
|
215
|
+
},
|
|
216
|
+
content: state.configs.css,
|
|
217
|
+
target: 'head'
|
|
218
|
+
});
|
|
219
|
+
} // Adds FramePay
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
if (!document.querySelectorAll('[framepay*="script"]').length) {
|
|
223
|
+
(0, _utils.addDOMElement)({
|
|
224
|
+
element: 'script',
|
|
225
|
+
attributes: {
|
|
226
|
+
framepay: 'script',
|
|
227
|
+
src: framePayUrls.script
|
|
228
|
+
},
|
|
229
|
+
target: 'head'
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
if (!document.querySelectorAll('[framepay*="stylesheet"]').length) {
|
|
234
|
+
(0, _utils.addDOMElement)({
|
|
235
|
+
element: 'link',
|
|
236
|
+
attributes: {
|
|
237
|
+
framepay: 'stylesheet',
|
|
238
|
+
href: framePayUrls.style,
|
|
239
|
+
rel: 'stylesheet'
|
|
240
|
+
},
|
|
241
|
+
target: 'head'
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
try {
|
|
246
|
+
var _riskMetadata$browser, _state$configs2;
|
|
247
|
+
|
|
248
|
+
state.loader.startLoading({
|
|
249
|
+
section: 'summary',
|
|
250
|
+
id: 'initSummary'
|
|
251
|
+
});
|
|
252
|
+
state.loader.startLoading({
|
|
253
|
+
id: 'initForm'
|
|
254
|
+
});
|
|
255
|
+
const {
|
|
256
|
+
riskMetadata
|
|
257
|
+
} = await (0, _riskDataCollector.collectData)();
|
|
258
|
+
|
|
259
|
+
if (state.options.locale === 'auto' && riskMetadata !== null && riskMetadata !== void 0 && (_riskMetadata$browser = riskMetadata.browserData) !== null && _riskMetadata$browser !== void 0 && _riskMetadata$browser.language) {
|
|
260
|
+
const {
|
|
261
|
+
browserData: {
|
|
262
|
+
language
|
|
263
|
+
}
|
|
264
|
+
} = riskMetadata;
|
|
265
|
+
state.options.locale = language;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
const i18n = ((_state$configs2 = state.configs) === null || _state$configs2 === void 0 ? void 0 : _state$configs2.i18n) || {};
|
|
269
|
+
state.translate.init(state.options.locale, i18n);
|
|
270
|
+
const {
|
|
271
|
+
readyToPay,
|
|
272
|
+
summary: summaryData,
|
|
273
|
+
plans,
|
|
274
|
+
products
|
|
275
|
+
} = await (0, _fetchSummaryData.fetchSummaryData)({
|
|
276
|
+
riskMetadata,
|
|
277
|
+
state
|
|
278
|
+
});
|
|
279
|
+
state.hasMounted = true;
|
|
280
|
+
|
|
281
|
+
if (state.form) {
|
|
282
|
+
const formOptions = {
|
|
283
|
+
summary: summaryData,
|
|
284
|
+
mainStyle: state.mainStyle,
|
|
285
|
+
readyToPay,
|
|
286
|
+
plans,
|
|
287
|
+
products
|
|
288
|
+
};
|
|
289
|
+
(0, _methodSelector.mountMethodSelector)({
|
|
290
|
+
state,
|
|
291
|
+
formOptions
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
if (state.summary) {
|
|
296
|
+
const summaryOptions = {
|
|
297
|
+
summary: summaryData,
|
|
298
|
+
readyToPay,
|
|
299
|
+
plans,
|
|
300
|
+
products
|
|
301
|
+
};
|
|
302
|
+
(0, _summary.mountSummary)({
|
|
303
|
+
state,
|
|
304
|
+
summaryOptions
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
} catch (error) {
|
|
308
|
+
throw error;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
const i18n = ((_state$configs3 = state.configs) === null || _state$configs3 === void 0 ? void 0 : _state$configs3.i18n) || {};
|
|
312
|
+
state.translate.init(state.options.locale, i18n);
|
|
313
|
+
state.translate.translateItems();
|
|
314
|
+
|
|
315
|
+
if (state.options.features.autoConfirmation) {
|
|
316
|
+
(0, _on.on)({
|
|
317
|
+
eventName: 'instrument-ready',
|
|
318
|
+
callback: instrument => {
|
|
319
|
+
(0, _show.show)({
|
|
320
|
+
componentName: 'confirmation',
|
|
321
|
+
payload: {
|
|
322
|
+
instrument,
|
|
323
|
+
mainStyle: state.mainStyle
|
|
324
|
+
},
|
|
325
|
+
state
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
if (state.options.features.autoResult) {
|
|
332
|
+
(0, _on.on)({
|
|
333
|
+
eventName: 'purchase-completed',
|
|
334
|
+
callback: purchase => {
|
|
335
|
+
(0, _show.show)({
|
|
336
|
+
componentName: 'result',
|
|
337
|
+
payload: {
|
|
338
|
+
purchase,
|
|
339
|
+
mainStyle: state.mainStyle
|
|
340
|
+
},
|
|
341
|
+
state
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
}
|