@ordergroove/offers 2.24.0 → 2.24.1-alpha-PR-566-5.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.
package/src/index.js CHANGED
@@ -1,169 +1,207 @@
1
- const { offersLiveEditor } = require('@ordergroove/offers-live-editor');
2
-
3
- const { setStore } = require('./core/connect');
4
- const { getStore } = require('./core/store');
5
- const { listenLocalStorageChanges } = require('./core/localStorage');
6
- const adapters = require('./core/adapters');
7
- const actions = require('./core/actions');
8
- const { ConnectedWhen } = require('./components/When');
9
- const { ConnectedOptinButton } = require('./components/OptinButton');
10
- const { ConnectedOptoutButton } = require('./components/OptoutButton');
11
- const { ConnectedOptinSelect } = require('./components/OptinSelect');
12
- const { ConnectedUpsellButton } = require('./components/UpsellButton');
13
- const { ConnectedUpsellModal } = require('./components/UpsellModal');
14
- const { ConnectedOptinToggle } = require('./components/OptinToggle');
15
- const { ConnectedOptinStatus } = require('./components/OptinStatus');
16
- const { ConnectedText } = require('./components/Text');
17
- const { ConnectedIncentiveText } = require('./components/IncentiveText');
18
- const { ConnectedSelectFrequency } = require('./components/SelectFrequency');
19
- const { ConnectedNextUpcomingOrder } = require('./components/NextUpcomingOrder');
20
- const { ConnectedOffer } = require('./components/Offer');
21
- const { Modal } = require('./components/Modal');
22
- const { Select } = require('./components/Select');
23
- const { Tooltip } = require('./components/Tooltip');
24
- const { ConnectedFrequencyStatus } = require('./components/FrequencyStatus');
25
- const testMode = require('./test-mode');
26
- const { default: api } = require('./core/api');
27
- const { environment } = require('./core/reducer');
1
+ import { offersLiveEditor } from '@ordergroove/offers-live-editor';
2
+ import { setStore } from './core/connect';
3
+ import { getStore } from './core/store';
4
+ import { listenLocalStorageChanges } from './core/localStorage';
5
+ import * as adapters from './core/adapters';
6
+ import * as actions from './core/actions';
7
+ import { ConnectedWhen } from './components/When';
8
+ import { ConnectedOptinButton } from './components/OptinButton';
9
+ import { ConnectedOptoutButton } from './components/OptoutButton';
10
+ import { ConnectedOptinSelect } from './components/OptinSelect';
11
+ import { ConnectedUpsellButton } from './components/UpsellButton';
12
+ import { ConnectedUpsellModal } from './components/UpsellModal';
13
+ import { ConnectedOptinToggle } from './components/OptinToggle';
14
+ import { ConnectedOptinStatus } from './components/OptinStatus';
15
+ import { ConnectedText } from './components/Text';
16
+ import { ConnectedIncentiveText } from './components/IncentiveText';
17
+ import { ConnectedSelectFrequency } from './components/SelectFrequency';
18
+ import { ConnectedNextUpcomingOrder } from './components/NextUpcomingOrder';
19
+ import { ConnectedOffer } from './components/Offer';
20
+ import { Modal } from './components/Modal';
21
+ import { Select } from './components/Select';
22
+ import { Tooltip } from './components/Tooltip';
23
+ import { ConnectedFrequencyStatus } from './components/FrequencyStatus';
24
+ import * as testMode from './test-mode';
25
+ import { api } from './core/api';
26
+ import { environment, offer } from './core/reducer';
27
+ import { RECEIVE_PRODUCT_PLANS } from './core/constants';
28
+ import ConnectedPrice from './components/Price';
28
29
 
29
30
  testMode.enable();
30
31
  let store;
31
- const offers = {
32
- setEnvironment(e) {
33
- store.dispatch(actions.setEnvironment(e));
34
- return offers;
35
- },
36
- setMerchantId(m) {
37
- store.dispatch(actions.setMerchantId(m));
38
- return offers;
39
- },
40
- setAuthUrl(authUrl) {
41
- store.dispatch(actions.setAuthUrl(authUrl));
42
- return offers;
43
- },
44
- getProductsForPurchasePost(productIds = []) {
45
- return adapters.getProductsForPurchasePost(store.getState(), productIds);
46
- },
47
- getOptins(productIds = []) {
48
- return adapters.getProductsForPurchasePost(store.getState(), productIds);
49
- },
50
- clear() {
51
- store.dispatch(actions.checkout());
52
- },
53
- addOptinChangedCallback(fn) {
54
- if (typeof fn === 'function') document.addEventListener('optin-changed', e => fn(e.detail));
55
- },
56
- disableOptinChangedCallbacks() {
57
- document.addEventListener('optin-changed', e => e.stopPropagation(), true);
58
- },
59
- register() {
60
- try {
61
- customElements.define('og-when', ConnectedWhen);
62
- customElements.define('og-text', ConnectedText);
63
- customElements.define('og-incentive-text', ConnectedIncentiveText);
64
- customElements.define('og-offer', ConnectedOffer);
65
- customElements.define('og-select-frequency', ConnectedSelectFrequency);
66
- customElements.define('og-optout-button', ConnectedOptoutButton);
67
- customElements.define('og-optin-toggle', ConnectedOptinToggle);
68
- customElements.define('og-optin-status', ConnectedOptinStatus);
69
- customElements.define('og-optin-button', ConnectedOptinButton);
70
- customElements.define('og-optin-select', ConnectedOptinSelect);
71
- customElements.define('og-upsell-button', ConnectedUpsellButton);
72
- customElements.define('og-frequency-status', ConnectedFrequencyStatus);
73
- customElements.define('og-modal', Modal);
74
- customElements.define('og-select', Select);
75
- customElements.define('og-tooltip', Tooltip);
76
- customElements.define('og-upsell-modal', ConnectedUpsellModal);
77
- customElements.define('og-next-upcoming-order', ConnectedNextUpcomingOrder);
78
- } catch (err) {
79
- // eslint-disable-next-line no-console
80
- console.log('this?', err);
81
- }
82
- offers.register = () => 0;
83
- },
84
- previewMode(set) {
85
- window.og = window.og || {};
86
- if (set === false) {
87
- delete window.og;
88
- } else {
89
- window.og.previewMode = true;
32
+
33
+ export const offers = {};
34
+
35
+ export function setEnvironment(e) {
36
+ store.dispatch(actions.setEnvironment(e));
37
+ return offers;
38
+ }
39
+ export function setMerchantId(m) {
40
+ store.dispatch(actions.setMerchantId(m));
41
+ return offers;
42
+ }
43
+ export function setAuthUrl(authUrl) {
44
+ store.dispatch(actions.setAuthUrl(authUrl));
45
+ return offers;
46
+ }
47
+ export function getProductsForPurchasePost(productIds = []) {
48
+ return adapters.getProductsForPurchasePost(store.getState(), productIds);
49
+ }
50
+ export function getOptins(productIds = []) {
51
+ return adapters.getProductsForPurchasePost(store.getState(), productIds);
52
+ }
53
+ export function clear() {
54
+ store.dispatch(actions.checkout());
55
+ }
56
+ export function addOptinChangedCallback(fn) {
57
+ if (typeof fn === 'function') document.addEventListener('optin-changed', e => fn(e.detail));
58
+ }
59
+ export function disableOptinChangedCallbacks() {
60
+ document.addEventListener('optin-changed', e => e.stopPropagation(), true);
61
+ }
62
+ export function register() {
63
+ try {
64
+ customElements.define('og-when', ConnectedWhen);
65
+ customElements.define('og-text', ConnectedText);
66
+ customElements.define('og-incentive-text', ConnectedIncentiveText);
67
+ customElements.define('og-offer', ConnectedOffer);
68
+ customElements.define('og-select-frequency', ConnectedSelectFrequency);
69
+ customElements.define('og-optout-button', ConnectedOptoutButton);
70
+ customElements.define('og-optin-toggle', ConnectedOptinToggle);
71
+ customElements.define('og-optin-status', ConnectedOptinStatus);
72
+ customElements.define('og-optin-button', ConnectedOptinButton);
73
+ customElements.define('og-optin-select', ConnectedOptinSelect);
74
+ customElements.define('og-upsell-button', ConnectedUpsellButton);
75
+ customElements.define('og-frequency-status', ConnectedFrequencyStatus);
76
+ customElements.define('og-modal', Modal);
77
+ customElements.define('og-select', Select);
78
+ customElements.define('og-tooltip', Tooltip);
79
+ customElements.define('og-upsell-modal', ConnectedUpsellModal);
80
+ customElements.define('og-next-upcoming-order', ConnectedNextUpcomingOrder);
81
+ customElements.define('og-price', ConnectedPrice);
82
+ } catch (err) {
83
+ // eslint-disable-next-line no-console
84
+ console.warn(err);
85
+ }
86
+ offers.register = () => 0;
87
+ }
88
+ export function previewMode(set) {
89
+ window.og = window.og || {};
90
+ if (set === false) {
91
+ delete window.og;
92
+ } else {
93
+ window.og.previewMode = true;
94
+ }
95
+ return this;
96
+ }
97
+ export function config(configuration) {
98
+ store.dispatch(actions.setConfig(configuration));
99
+ return offers;
100
+ }
101
+ export function setLocale(locale) {
102
+ store.dispatch(actions.setLocale(locale));
103
+ return offers;
104
+ }
105
+ export function addTemplate(tagName, content, configOption) {
106
+ store.dispatch(actions.addTemplate(tagName, content, configOption));
107
+ return offers;
108
+ }
109
+ /**
110
+ * templates object where keys are selectors and values are content
111
+ */
112
+ export function setTemplates(templates) {
113
+ store.dispatch(actions.setTemplates(templates));
114
+ return offers;
115
+ }
116
+ export function setPublicPath(publicPath) {
117
+ return offers;
118
+ }
119
+ export function resolveSettings(merchantId, env, settings, storeInstance = store) {
120
+ if (merchantId && env && settings) {
121
+ let products = [];
122
+ if (settings.product) {
123
+ products.push(settings.product);
124
+ } else if (settings.cart && Array.isArray(settings.cart.products)) {
125
+ products = products.concat(settings.cart.products);
90
126
  }
91
- return this;
92
- },
93
- /**
94
- * Initialize OG object
95
- * @param {*} merchantId
96
- * @param {*} env
97
- * @param {*} authUrl
98
- */
99
- initialize(merchantId, env, authUrl) {
100
- if (offers.isReady) {
101
- console.warn('og.offers has been initialized already. Skipping.');
102
- return offers;
127
+ const { apiUrl } = environment({}, actions.setEnvironment(env));
128
+ const { sessionId } = storeInstance.getState();
129
+ if (sessionId) {
130
+ products.forEach(product => {
131
+ console.log(product);
132
+ api.fetchOffer(apiUrl, merchantId, sessionId, `${product}`, 'pdp');
133
+ });
103
134
  }
104
- store = getStore();
105
-
106
- const settings = window.og_settings;
107
- if (merchantId && env && settings) {
108
- let products = [];
109
- if (settings.product) {
110
- products.push(settings.product);
111
- } else if (settings.cart && Array.isArray(settings.cart.products)) {
112
- products = products.concat(settings.cart.products);
113
- }
114
- const { apiUrl } = environment({}, actions.setEnvironment(env));
115
- const { sessionId } = store.getState();
116
- if (sessionId) {
117
- products.forEach(product => api.fetchOffer(apiUrl, merchantId, sessionId, `${product}`, 'pdp'));
118
- }
135
+
136
+ if (settings.product_x_plans && typeof settings.product_x_plans === 'object') {
137
+ storeInstance.dispatch({ type: RECEIVE_PRODUCT_PLANS, payload: settings.product_x_plans });
119
138
  }
139
+ }
140
+ }
120
141
 
121
- setStore(store);
122
- if (merchantId) offers.setMerchantId(merchantId);
123
- if (env) offers.setEnvironment(env);
124
- if (authUrl) offers.setAuthUrl(authUrl);
142
+ /**
143
+ * Initialize OG object
144
+ * @param {*} merchantId
145
+ * @param {*} env
146
+ * @param {*} authUrl
147
+ */
148
+ export function initialize(merchantId, env, authUrl) {
149
+ if (offers.isReady) {
150
+ console.warn('og.offers has been initialized already. Skipping.');
151
+ return offers;
152
+ }
125
153
 
126
- window.addEventListener('storage', listenLocalStorageChanges(store));
154
+ store = getStore();
127
155
 
128
- if (merchantId && env) {
129
- store.dispatch(actions.requestSessionId());
130
- store.dispatch(actions.fetchAuth());
131
- offers.register();
132
- }
156
+ offers.store = store;
157
+ offers.resolveSettings(merchantId, env, window.og_settings, store);
133
158
 
134
- offers.isReady = true;
159
+ setStore(store);
135
160
 
136
- return offers;
137
- },
161
+ if (merchantId) offers.setMerchantId(merchantId);
162
+ if (env) offers.setEnvironment(env);
163
+ if (authUrl) offers.setAuthUrl(authUrl);
138
164
 
139
- config(configuration) {
140
- store.dispatch(actions.setConfig(configuration));
141
- return offers;
142
- },
143
- setLocale(locale) {
144
- store.dispatch(actions.setLocale(locale));
145
- return offers;
146
- },
147
- addTemplate(tagName, content, config) {
148
- store.dispatch(actions.addTemplate(tagName, content, config));
149
- return offers;
150
- },
151
- /**
152
- * templates object where keys are selectors and values are content
153
- */
154
- setTemplates(templates) {
155
- store.dispatch(actions.setTemplates(templates));
156
- return offers;
157
- },
158
- setPublicPath(publicPath) {
159
- return offers;
165
+ window.addEventListener('storage', listenLocalStorageChanges(store));
166
+
167
+ if (merchantId && env) {
168
+ store.dispatch(actions.requestSessionId());
169
+ store.dispatch(actions.fetchAuth());
170
+ offers.register();
160
171
  }
161
- };
172
+
173
+ offers.isReady = true;
174
+
175
+ return offers;
176
+ }
177
+
178
+ export default initialize;
179
+
180
+ Object.assign(offers, {
181
+ setEnvironment,
182
+ setMerchantId,
183
+ setAuthUrl,
184
+ getProductsForPurchasePost,
185
+ getOptins,
186
+ clear,
187
+ addOptinChangedCallback,
188
+ disableOptinChangedCallbacks,
189
+ register,
190
+ previewMode,
191
+ config,
192
+ setLocale,
193
+ addTemplate,
194
+ setTemplates,
195
+ setPublicPath,
196
+ resolveSettings,
197
+ initialize
198
+ });
199
+
162
200
  window.OG = window.OG || {};
163
201
  Object.assign(window.OG, offers);
164
202
  Object.assign(offers.initialize, offers);
165
203
 
166
204
  offersLiveEditor();
167
205
 
168
- // use this syntax to allow es6 module be called as default function og.offers(...)
169
- module.exports = offers.initialize;
206
+ // // use this syntax to allow es6 module be called as default function og.offers(...)
207
+ // module.exports = offers.initialize;
@@ -1,4 +1,4 @@
1
1
  window.OG_SAVE_TO_LOCAL_TIMEOUT = 1;
2
2
  window.merchantId = '12345678901234567890123456789012';
3
3
  window.env = 'staging';
4
- window.og.offers(window.merchantId, window.env, 0);
4
+ window.og.offers.initialize(window.merchantId, window.env, 0);
package/src/init-test.js CHANGED
@@ -1,3 +1,3 @@
1
- import og from './index';
1
+ import { initialize } from './index';
2
2
 
3
- og.initialize('some-merchant', 'staging');
3
+ initialize('some-merchant', 'staging');