@buddy-technology/offer-component 1.3.0 → 1.4.0
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/CHANGELOG.md +12 -0
- package/README.md +33 -20
- package/dist/index.js +74 -144
- package/dist/index.js.map +1 -1
- package/dist/index.modern.mjs +13 -55
- package/dist/index.modern.mjs.map +1 -1
- package/lib/interface/index.d.ts +11 -4
- package/lib/interface/index.d.ts.map +1 -1
- package/lib/util/index.d.ts.map +1 -1
- package/package.json +7 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
# [@buddy-technology/offer-component-v1.4.0](https://github.com/Buddy-Technology/ion-to-react/compare/@buddy-technology/offer-component-v1.3.0...@buddy-technology/offer-component-v1.4.0) (2024-08-29)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* upgrade and align jest deps ([1f916bf](https://github.com/Buddy-Technology/ion-to-react/commit/1f916bf28837f4b466ede3a83f5a3b36f10b3093))
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* update offer component ([c52906d](https://github.com/Buddy-Technology/ion-to-react/commit/c52906da00705c7170a48b2ed7f8f7f785b14e92))
|
|
12
|
+
|
|
1
13
|
# [@buddy-technology/offer-component-v1.3.0](https://github.com/Buddy-Technology/ion-to-react/compare/@buddy-technology/offer-component-v1.2.0...@buddy-technology/offer-component-v1.3.0) (2024-06-10)
|
|
2
14
|
|
|
3
15
|
|
package/README.md
CHANGED
|
@@ -76,8 +76,8 @@ export default App;
|
|
|
76
76
|
| theme | object | |The [theme](#styling) object for passing in styles and color palettes |
|
|
77
77
|
| onUserEvent | function | | A callback for tracking user behavioral data. See [Capturing Data](#capturing-data) for details. |
|
|
78
78
|
| includeCheckout | boolean | `true` | Toggles whether to render the secure checkout. |
|
|
79
|
-
|
|
|
80
|
-
|
|
|
79
|
+
| onOptIn | function | | The callback fired when a user opts into an offer. See Buddy's Partner API docs for details on how to complete the transaction.|
|
|
80
|
+
| onOptOut | function | | The callback fired when a user opts out of the offer. |
|
|
81
81
|
_*required_
|
|
82
82
|
|
|
83
83
|
---
|
|
@@ -87,7 +87,7 @@ Buddy's Offer Element comes in three different view types:
|
|
|
87
87
|
|
|
88
88
|
- __paginated__ (default) - A paginated form where users click through to the next section.
|
|
89
89
|
- __single form__ - A single form where all fields are displayed in the same, scrollable view.
|
|
90
|
-
- __offer only__ - View for displaying just the insurance offer with a quote and checkbox that fires `
|
|
90
|
+
- __offer only__ - View for displaying just the insurance offer with a quote and checkbox that fires `onOptIn` when checked and `onOptOut` when unchecked (see [For full stack apps](#for-full-stack-apps) for more info).
|
|
91
91
|
**NOTE**: Offer-Only implementations are meant to be rendered in a controlled environment with necessary data passed into it, and will require a payment integration for checkout (see Buddy's [Partner API docs](https://buddyinsurance.stoplight.io/docs/partner-api-documentation/ZG9jOjE1NDc1MzQx)). If any fields are missing or invalid, a step-through form will render with the individual views that include the needed fields. Views with satisfied fields will be skipped. Once users rectify any needed info, they will land on the offer only screen.
|
|
92
92
|
|
|
93
93
|
---
|
|
@@ -103,7 +103,7 @@ In server side and full-stack applications where customers are already purchasin
|
|
|
103
103
|
|
|
104
104
|
To use this mode, set `includeCheckout` to `false`, or set viewType to `offer-only`.
|
|
105
105
|
|
|
106
|
-
When users opt in, the `
|
|
106
|
+
When users opt in, the `onOptIn` callback is fired with the completed application object. If a user opts out, `onOptOut` will be called.
|
|
107
107
|
|
|
108
108
|
```javascript
|
|
109
109
|
// simple paginated example to collect data
|
|
@@ -128,8 +128,8 @@ function App() {
|
|
|
128
128
|
partnerID="my-partner-id"
|
|
129
129
|
viewType="paginated"
|
|
130
130
|
includeCheckout={false}
|
|
131
|
-
|
|
132
|
-
|
|
131
|
+
onOptIn={handleAddToCart}
|
|
132
|
+
onOptOut={handleRemoveFromCart}
|
|
133
133
|
stage="PRODUCTION"
|
|
134
134
|
/>
|
|
135
135
|
</div>
|
|
@@ -162,8 +162,8 @@ function App({ userAndPolicyData }) {
|
|
|
162
162
|
partnerID="my-partner-id"
|
|
163
163
|
viewType="offer-only"
|
|
164
164
|
data={userAndPolicyData} // data is passed in, if any fields are invalid, they will be displayed to user to rectify before purchasing.
|
|
165
|
-
|
|
166
|
-
|
|
165
|
+
onOptIn={handleAddToCart}
|
|
166
|
+
onOptOut={handleRemoveFromCart}
|
|
167
167
|
stage="PRODUCTION"
|
|
168
168
|
/>
|
|
169
169
|
</div>
|
|
@@ -399,7 +399,7 @@ export default App;
|
|
|
399
399
|
### Event types and data fired:
|
|
400
400
|
We capture several user-driven events and each has different available pieces of data associated with it. Look closely at the list below to determine which events you want to capture and how to use the data.
|
|
401
401
|
|
|
402
|
-
|
|
402
|
+
#### `onViewChange`
|
|
403
403
|
|
|
404
404
|
Triggers when users click to a new screen in a paginated view mode.
|
|
405
405
|
|
|
@@ -410,7 +410,7 @@ _data returned_
|
|
|
410
410
|
| `timestamp` | number | the timestamp when the event occurred in milliseconds |
|
|
411
411
|
|
|
412
412
|
|
|
413
|
-
|
|
413
|
+
#### `onScrollToView`
|
|
414
414
|
|
|
415
415
|
Triggers when or scroll to a section in single-page view mode.
|
|
416
416
|
|
|
@@ -421,7 +421,7 @@ _data returned_
|
|
|
421
421
|
| `viewId` | string | the id of the current view |
|
|
422
422
|
| `timestamp` | number | the timestamp when the event occurred in milliseconds |
|
|
423
423
|
|
|
424
|
-
|
|
424
|
+
#### `onQuote`
|
|
425
425
|
|
|
426
426
|
Triggers when the app displays retrieves a quote for the policy
|
|
427
427
|
|
|
@@ -434,7 +434,7 @@ _data returned_
|
|
|
434
434
|
| `timestamp` | number | the timestamp when the event occurred in milliseconds |
|
|
435
435
|
|
|
436
436
|
|
|
437
|
-
|
|
437
|
+
#### `onCheckout`
|
|
438
438
|
|
|
439
439
|
Triggers during the check out process
|
|
440
440
|
|
|
@@ -448,7 +448,7 @@ _data returned_
|
|
|
448
448
|
| `timestamp` | number | the timestamp when the event occurred in milliseconds |
|
|
449
449
|
|
|
450
450
|
|
|
451
|
-
|
|
451
|
+
#### `onFocus`
|
|
452
452
|
|
|
453
453
|
Triggers when an input is focused
|
|
454
454
|
|
|
@@ -460,7 +460,7 @@ _data returned_
|
|
|
460
460
|
| `timestamp` | number | the timestamp when the event occurred in milliseconds |
|
|
461
461
|
|
|
462
462
|
|
|
463
|
-
|
|
463
|
+
#### `onBlur`
|
|
464
464
|
|
|
465
465
|
Triggers when an input is blurred
|
|
466
466
|
|
|
@@ -471,7 +471,7 @@ _data returned_
|
|
|
471
471
|
| `elementId` | string | the id of the invalid field/input |
|
|
472
472
|
| `timestamp` | number | the timestamp when the event occurred in milliseconds |
|
|
473
473
|
|
|
474
|
-
|
|
474
|
+
#### `onRadioSelection`
|
|
475
475
|
|
|
476
476
|
Triggers when a radio button is selected
|
|
477
477
|
|
|
@@ -483,7 +483,7 @@ _data returned_
|
|
|
483
483
|
| `value` | any | the value of the selected radio |
|
|
484
484
|
| `timestamp` | number | the timestamp when the event occurred in milliseconds |
|
|
485
485
|
|
|
486
|
-
|
|
486
|
+
#### `onSlide`
|
|
487
487
|
|
|
488
488
|
Triggers when a slider input is changed
|
|
489
489
|
|
|
@@ -495,7 +495,7 @@ _data returned_
|
|
|
495
495
|
| `value` | any | the value of the selected radio |
|
|
496
496
|
| `timestamp` | number | the timestamp when the event occurred in milliseconds |
|
|
497
497
|
|
|
498
|
-
|
|
498
|
+
#### `onCheckboxSelection`
|
|
499
499
|
|
|
500
500
|
Triggers when a checkbox is selected
|
|
501
501
|
|
|
@@ -508,7 +508,7 @@ _data returned_
|
|
|
508
508
|
| `value` | string | the label of the selected checkbox |
|
|
509
509
|
| `timestamp` | number | the timestamp when the event occurred in milliseconds |
|
|
510
510
|
|
|
511
|
-
|
|
511
|
+
#### `onBlur`
|
|
512
512
|
|
|
513
513
|
Triggers when an input is blurred
|
|
514
514
|
|
|
@@ -519,7 +519,7 @@ _data returned_
|
|
|
519
519
|
| `elementId` | string | the id of the invalid field/input |
|
|
520
520
|
| `timestamp` | number | the timestamp when the event occurred in milliseconds |
|
|
521
521
|
|
|
522
|
-
|
|
522
|
+
#### `onValidationError`
|
|
523
523
|
|
|
524
524
|
Triggers when an input is triggered as invalid
|
|
525
525
|
|
|
@@ -531,7 +531,7 @@ _data returned_
|
|
|
531
531
|
| `validationError` | string | the type of validation error encountered |
|
|
532
532
|
| `timestamp` | number | the timestamp when the event occurred in milliseconds |
|
|
533
533
|
|
|
534
|
-
|
|
534
|
+
#### `onExternalLink`
|
|
535
535
|
|
|
536
536
|
Triggers when an input is triggered as invalid
|
|
537
537
|
|
|
@@ -542,6 +542,19 @@ _data returned_
|
|
|
542
542
|
| `externalLinkUrl` | string | the url of the link |
|
|
543
543
|
| `timestamp` | number | the timestamp when the event occurred in milliseconds |
|
|
544
544
|
|
|
545
|
+
#### `onOptIn`
|
|
546
|
+
|
|
547
|
+
Triggers when a user opts into an 'offer-only' insurance offer
|
|
548
|
+
|
|
549
|
+
_data returned_
|
|
550
|
+
|
|
551
|
+
| Name | Type | Description |
|
|
552
|
+
|----------------------|--------|---------------------------------------------------------|
|
|
553
|
+
| `viewId` | string | the id of the view: 'offer-only' |
|
|
554
|
+
| `premium` | number | the total premium of the purchase |
|
|
555
|
+
| `partnerId` | string | the partner id used for the offer |
|
|
556
|
+
| `timestamp` | number | the timestamp when the event occurred in milliseconds |
|
|
557
|
+
|
|
545
558
|
### Google Analytics example
|
|
546
559
|
|
|
547
560
|
```javascript
|
package/dist/index.js
CHANGED
|
@@ -4,26 +4,8 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
4
4
|
|
|
5
5
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
10
|
-
var source = arguments[i];
|
|
11
|
-
|
|
12
|
-
for (var key in source) {
|
|
13
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
14
|
-
target[key] = source[key];
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
return target;
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
return _extends.apply(this, arguments);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
var EXISTING_SCRIPT_MESSAGE = 'Buddy Offer Script is already loaded.';
|
|
26
|
-
var SCRIPTS = {
|
|
7
|
+
const EXISTING_SCRIPT_MESSAGE = 'Buddy Offer Script is already loaded.';
|
|
8
|
+
const SCRIPTS = {
|
|
27
9
|
LOCAL: {
|
|
28
10
|
URL: 'http://localhost:8008/index.js'
|
|
29
11
|
},
|
|
@@ -41,61 +23,48 @@ var SCRIPTS = {
|
|
|
41
23
|
URL: 'https://js.buddy.insure/v2/index.js'
|
|
42
24
|
}
|
|
43
25
|
};
|
|
44
|
-
|
|
26
|
+
const STAGES = Object.keys(SCRIPTS);
|
|
45
27
|
|
|
46
|
-
|
|
28
|
+
const defaultOptions = {
|
|
47
29
|
stage: 'STAGING'
|
|
48
30
|
};
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
var isEmptyStr = function isEmptyStr(str) {
|
|
56
|
-
return typeof str === 'string' && str.trim().length === 0;
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
var isEmptyObjOrArr = function isEmptyObjOrArr(obj) {
|
|
60
|
-
return typeof obj === 'object' && obj.length === undefined && Object.keys(obj).length === 0 || Array.isArray(obj) && obj.length === 0;
|
|
61
|
-
};
|
|
62
|
-
|
|
31
|
+
const isEmptyOrNil = value => {
|
|
32
|
+
const isNil = val => [undefined, null].includes(val);
|
|
33
|
+
const isEmptyStr = str => typeof str === 'string' && str.trim().length === 0;
|
|
34
|
+
const isEmptyObjOrArr = obj => typeof obj === 'object' && obj.length === undefined && Object.keys(obj).length === 0 || Array.isArray(obj) && obj.length === 0;
|
|
63
35
|
return isNil(value) || isEmptyStr(value) || isEmptyObjOrArr(value);
|
|
64
36
|
};
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
var emptyProps = propsToCheck.filter(function (prop) {
|
|
68
|
-
return isEmptyOrNil(obj[prop]);
|
|
69
|
-
});
|
|
70
|
-
|
|
37
|
+
const validatePropertiesOfObject = (propsToCheck, obj) => {
|
|
38
|
+
const emptyProps = propsToCheck.filter(prop => isEmptyOrNil(obj[prop]));
|
|
71
39
|
if (emptyProps.length) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
return isLastEl ?
|
|
40
|
+
const displayMissingProps = emptyProps.reduce((prev, current, i) => {
|
|
41
|
+
const isLastEl = i === emptyProps.length - 1;
|
|
42
|
+
return isLastEl ? `${prev}${current}.` : `${prev}${current}, `;
|
|
75
43
|
}, '');
|
|
76
|
-
return
|
|
44
|
+
return `The following props are required: ${displayMissingProps}`;
|
|
77
45
|
}
|
|
78
|
-
|
|
79
46
|
return null;
|
|
80
47
|
};
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
48
|
+
const findScript = url => {
|
|
49
|
+
const scripts = Array.from(document.querySelectorAll('script'));
|
|
50
|
+
return scripts.find(_ref => {
|
|
51
|
+
let {
|
|
52
|
+
src
|
|
53
|
+
} = _ref;
|
|
86
54
|
return src.startsWith(url);
|
|
87
55
|
});
|
|
88
56
|
};
|
|
89
|
-
|
|
57
|
+
const findOfferScript = function (stage) {
|
|
90
58
|
if (stage === void 0) {
|
|
91
59
|
stage = defaultOptions.stage;
|
|
92
60
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
61
|
+
const {
|
|
62
|
+
URL
|
|
63
|
+
} = SCRIPTS[stage];
|
|
64
|
+
const matchedScript = findScript(URL);
|
|
96
65
|
return matchedScript;
|
|
97
66
|
};
|
|
98
|
-
|
|
67
|
+
const updateOffer = options => {
|
|
99
68
|
if (window.Buddy) {
|
|
100
69
|
try {
|
|
101
70
|
window.Buddy.updateOffer(options);
|
|
@@ -105,8 +74,7 @@ var updateOffer = function updateOffer(options) {
|
|
|
105
74
|
}
|
|
106
75
|
}
|
|
107
76
|
};
|
|
108
|
-
|
|
109
|
-
var createOffer = function createOffer(options) {
|
|
77
|
+
const createOffer = options => {
|
|
110
78
|
if (window.Buddy) {
|
|
111
79
|
try {
|
|
112
80
|
window.Buddy.createOffer(options);
|
|
@@ -116,78 +84,59 @@ var createOffer = function createOffer(options) {
|
|
|
116
84
|
}
|
|
117
85
|
}
|
|
118
86
|
};
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
var script = document.createElement('script');
|
|
124
|
-
script.src = "" + SCRIPTS[finalOptions.stage].URL;
|
|
125
|
-
|
|
126
|
-
script.onload = function () {
|
|
127
|
-
return createOffer(finalOptions);
|
|
87
|
+
const injectScript = options => {
|
|
88
|
+
const finalOptions = {
|
|
89
|
+
...defaultOptions,
|
|
90
|
+
...options
|
|
128
91
|
};
|
|
129
|
-
|
|
92
|
+
const script = document.createElement('script');
|
|
93
|
+
script.src = `${SCRIPTS[finalOptions.stage].URL}`;
|
|
94
|
+
script.onload = () => createOffer(finalOptions);
|
|
130
95
|
document.body.appendChild(script);
|
|
131
96
|
return script;
|
|
132
97
|
};
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
var loadScript = function loadScript(options) {
|
|
98
|
+
let scriptPromise = null;
|
|
99
|
+
const loadScript = options => {
|
|
136
100
|
// Ensure that we only attempt to script once
|
|
137
101
|
if (scriptPromise !== null) {
|
|
138
102
|
return scriptPromise;
|
|
139
103
|
}
|
|
140
|
-
|
|
141
|
-
scriptPromise = new Promise(function (resolve, reject) {
|
|
142
|
-
var _window$Buddy;
|
|
143
|
-
|
|
104
|
+
scriptPromise = new Promise((resolve, reject) => {
|
|
144
105
|
if (typeof window === 'undefined') {
|
|
145
106
|
// Resolve to null when imported server side. This makes the module
|
|
146
107
|
// safe to import in an isomorphic code base.
|
|
147
108
|
resolve(null);
|
|
148
109
|
return;
|
|
149
110
|
}
|
|
150
|
-
|
|
151
|
-
if ((_window$Buddy = window.Buddy) != null && _window$Buddy.createOffer) {
|
|
152
|
-
var _window$Buddy2;
|
|
153
|
-
|
|
111
|
+
if (window.Buddy?.createOffer) {
|
|
154
112
|
// eslint-disable-next-line no-console
|
|
155
113
|
console.warn(EXISTING_SCRIPT_MESSAGE);
|
|
156
|
-
|
|
114
|
+
window.Buddy?.createOffer(options);
|
|
157
115
|
resolve(window.Buddy);
|
|
158
116
|
return;
|
|
159
117
|
}
|
|
160
|
-
|
|
161
118
|
try {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
119
|
+
const requiredProps = ['ion', 'partnerID'];
|
|
120
|
+
const missingRequiredProps = validatePropertiesOfObject(requiredProps, options);
|
|
165
121
|
if (missingRequiredProps) {
|
|
166
122
|
reject(new Error(missingRequiredProps));
|
|
167
123
|
return;
|
|
168
124
|
}
|
|
169
|
-
|
|
170
|
-
if (!(options != null && options.stage)) {
|
|
125
|
+
if (!options?.stage) {
|
|
171
126
|
// eslint-disable-next-line no-console
|
|
172
|
-
console.warn(
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
var msg = "The stage prop must be one of: [" + STAGES.join(' , ') + "], but received \"" + options.stage + ".\"";
|
|
127
|
+
console.warn(`No stage passed to BuddyOfferElement. Using default stage: ${defaultOptions.stage}`);
|
|
128
|
+
}
|
|
129
|
+
// If stage is passed, ensure it is one of the prescribed options.
|
|
130
|
+
if (options?.stage && !STAGES.includes(options.stage)) {
|
|
131
|
+
const msg = `The stage prop must be one of: [${STAGES.join(' , ')}], but received "${options.stage}."`;
|
|
178
132
|
reject(new Error(msg));
|
|
179
133
|
return;
|
|
180
134
|
}
|
|
181
|
-
|
|
182
|
-
var script = findOfferScript(options == null ? void 0 : options.stage);
|
|
183
|
-
|
|
135
|
+
let script = findOfferScript(options?.stage);
|
|
184
136
|
if (script) {
|
|
185
|
-
var _window$Buddy3;
|
|
186
|
-
|
|
187
137
|
// eslint-disable-next-line no-console
|
|
188
138
|
console.warn(EXISTING_SCRIPT_MESSAGE);
|
|
189
|
-
|
|
190
|
-
if ((_window$Buddy3 = window.Buddy) != null && _window$Buddy3.createOffer) {
|
|
139
|
+
if (window.Buddy?.createOffer) {
|
|
191
140
|
resolve(window.Buddy);
|
|
192
141
|
} else {
|
|
193
142
|
reject(new Error('Buddy Offer Element not available'));
|
|
@@ -195,17 +144,14 @@ var loadScript = function loadScript(options) {
|
|
|
195
144
|
} else if (!script) {
|
|
196
145
|
script = injectScript(options);
|
|
197
146
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
var _window$Buddy4;
|
|
201
|
-
|
|
202
|
-
if ((_window$Buddy4 = window.Buddy) != null && _window$Buddy4.createOffer) {
|
|
147
|
+
script.addEventListener('load', () => {
|
|
148
|
+
if (window.Buddy?.createOffer) {
|
|
203
149
|
resolve(window.Buddy);
|
|
204
150
|
} else {
|
|
205
151
|
reject(new Error('Buddy Offer Element not available'));
|
|
206
152
|
}
|
|
207
153
|
});
|
|
208
|
-
script.addEventListener('error',
|
|
154
|
+
script.addEventListener('error', () => {
|
|
209
155
|
reject(new Error('Failed to load Buddy Offer Element'));
|
|
210
156
|
});
|
|
211
157
|
} catch (error) {
|
|
@@ -213,65 +159,54 @@ var loadScript = function loadScript(options) {
|
|
|
213
159
|
}
|
|
214
160
|
});
|
|
215
161
|
return scriptPromise;
|
|
216
|
-
};
|
|
217
|
-
|
|
218
|
-
|
|
162
|
+
};
|
|
163
|
+
// This is used to clear our reference to the script promise when the component is unmounted.
|
|
164
|
+
const clearScriptPromise = () => {
|
|
219
165
|
scriptPromise = null;
|
|
220
166
|
};
|
|
221
167
|
|
|
222
168
|
function useConfig(src) {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
isLoading = _useState2[0],
|
|
229
|
-
setIsLoading = _useState2[1];
|
|
230
|
-
|
|
231
|
-
var hasConfig = typeof window !== 'undefined';
|
|
232
|
-
React.useEffect(function () {
|
|
233
|
-
var script = findScript(src);
|
|
234
|
-
|
|
169
|
+
const [config, setConfig] = React.useState(null);
|
|
170
|
+
const [isLoading, setIsLoading] = React.useState(true);
|
|
171
|
+
const hasConfig = typeof window !== 'undefined';
|
|
172
|
+
React.useEffect(() => {
|
|
173
|
+
let script = findScript(src);
|
|
235
174
|
if (!script) {
|
|
236
175
|
script = document.createElement('script');
|
|
237
176
|
script.src = src;
|
|
238
|
-
|
|
239
|
-
script.onload = function () {
|
|
177
|
+
script.onload = () => {
|
|
240
178
|
// Assuming the script sets a global variable named 'config'
|
|
241
179
|
if (hasConfig) {
|
|
242
180
|
setConfig(window.Buddy.config);
|
|
243
181
|
setIsLoading(false);
|
|
244
182
|
}
|
|
245
183
|
};
|
|
246
|
-
|
|
247
184
|
document.body.appendChild(script);
|
|
248
185
|
} else {
|
|
249
186
|
// eslint-disable-next-line no-console
|
|
250
187
|
console.warn('Config script is already loaded.');
|
|
251
|
-
|
|
252
188
|
if (hasConfig) {
|
|
253
189
|
setConfig(window.Buddy.config);
|
|
254
190
|
setIsLoading(false);
|
|
255
191
|
}
|
|
256
192
|
}
|
|
257
|
-
|
|
258
|
-
return function () {
|
|
193
|
+
return () => {
|
|
259
194
|
if (script) {
|
|
260
195
|
document.body.removeChild(script);
|
|
261
196
|
}
|
|
262
197
|
};
|
|
263
198
|
}, [src]);
|
|
264
199
|
return {
|
|
265
|
-
config
|
|
266
|
-
isLoading
|
|
200
|
+
config,
|
|
201
|
+
isLoading
|
|
267
202
|
};
|
|
268
203
|
}
|
|
269
204
|
|
|
270
|
-
|
|
271
|
-
|
|
205
|
+
const useUpdateEffect = (effect, deps) => {
|
|
206
|
+
const isFirstMount = React.useRef(true);
|
|
207
|
+
// need to return only in the else condition in case a cleanup func is passed in effect.
|
|
272
208
|
// eslint-disable-next-line consistent-return
|
|
273
|
-
|
|
274
|
-
React.useEffect(function () {
|
|
209
|
+
React.useEffect(() => {
|
|
275
210
|
if (isFirstMount.current) {
|
|
276
211
|
isFirstMount.current = false;
|
|
277
212
|
} else {
|
|
@@ -286,37 +221,32 @@ function _catch(body, recover) {
|
|
|
286
221
|
} catch (e) {
|
|
287
222
|
return recover(e);
|
|
288
223
|
}
|
|
289
|
-
|
|
290
224
|
if (result && result.then) {
|
|
291
225
|
return result.then(void 0, recover);
|
|
292
226
|
}
|
|
293
|
-
|
|
294
227
|
return result;
|
|
295
228
|
}
|
|
296
|
-
|
|
297
229
|
function BuddyOfferElement(options) {
|
|
298
|
-
React.useEffect(
|
|
299
|
-
|
|
230
|
+
React.useEffect(() => {
|
|
231
|
+
const getScript = function () {
|
|
300
232
|
try {
|
|
301
|
-
|
|
233
|
+
const _temp = _catch(function () {
|
|
302
234
|
return Promise.resolve(loadScript(options)).then(function () {});
|
|
303
235
|
}, function (error) {
|
|
304
236
|
// eslint-disable-next-line no-console
|
|
305
237
|
console.error(error);
|
|
306
238
|
});
|
|
307
|
-
|
|
308
|
-
return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
|
|
239
|
+
return Promise.resolve(_temp && _temp.then ? _temp.then(function () {}) : void 0);
|
|
309
240
|
} catch (e) {
|
|
310
241
|
return Promise.reject(e);
|
|
311
242
|
}
|
|
312
243
|
};
|
|
313
|
-
|
|
314
244
|
getScript();
|
|
315
|
-
return
|
|
245
|
+
return () => {
|
|
316
246
|
clearScriptPromise();
|
|
317
247
|
};
|
|
318
248
|
}, []);
|
|
319
|
-
useUpdateEffect(
|
|
249
|
+
useUpdateEffect(() => {
|
|
320
250
|
updateOffer(options);
|
|
321
251
|
}, [options]);
|
|
322
252
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/util/dictionary.ts","../src/util/index.ts","../src/hooks/useConfig.tsx","../src/hooks/useUpdateEffect.tsx","../src/components/BuddyOfferElement.tsx"],"sourcesContent":["const EXISTING_SCRIPT_MESSAGE = 'Buddy Offer Script is already loaded.';\n\nconst SCRIPTS = {\n\tLOCAL: {\n\t\tURL: 'http://localhost:8008/index.js',\n\t},\n\t// TODO: Delete this in favor of \"testing\", once we're sure nothing is using it.\n\tDEVELOPMENT: {\n\t\tURL: 'https://js.buddy.insure/v2/dev/index.js',\n\t},\n\tTESTING: {\n\t\tURL: 'https://js.buddy.insure/v2/testing/index.js',\n\t},\n\tSTAGING: {\n\t\tURL: 'https://js.buddy.insure/v2/staging/index.js',\n\t},\n\tPRODUCTION: {\n\t\tURL: 'https://js.buddy.insure/v2/index.js',\n\t},\n} as const;\n\nconst STAGES = Object.keys(SCRIPTS);\n\nexport {\n\tEXISTING_SCRIPT_MESSAGE,\n\tSCRIPTS,\n\tSTAGES,\n};\n","import { EXISTING_SCRIPT_MESSAGE, SCRIPTS, STAGES } from './dictionary';\nimport type { BuddyObject, IWindow } from '../interface';\n\ntype IStages = keyof typeof SCRIPTS;\n\nconst defaultOptions = {\n\tstage: 'STAGING',\n} as const;\n\nconst isEmptyOrNil = (value: any) => {\n\tconst isNil = (val: any) => [undefined, null].includes(val);\n\tconst isEmptyStr = (str: any) => typeof str === 'string' && str.trim().length === 0;\n\tconst isEmptyObjOrArr = (obj: any) => (typeof obj === 'object' && obj.length === undefined &&\n\t\tObject.keys(obj).length === 0) || (Array.isArray(obj) && obj.length === 0);\n\treturn (isNil(value) || isEmptyStr(value) || isEmptyObjOrArr(value));\n};\n\nconst validatePropertiesOfObject = (propsToCheck: string[], obj: Record<string, any>) => {\n\tconst emptyProps = propsToCheck.filter((prop) => isEmptyOrNil(obj[prop]));\n\tif (emptyProps.length) {\n\t\tconst displayMissingProps = emptyProps.reduce((prev, current, i) => {\n\t\t\tconst isLastEl = i === emptyProps.length - 1;\n\t\t\treturn isLastEl ? `${prev}${current}.` : `${prev}${current}, `;\n\t\t}, '');\n\t\treturn `The following props are required: ${displayMissingProps}`;\n\t}\n\treturn null;\n};\n\nexport const findScript = (url: string) => {\n\tconst scripts = Array.from(document.querySelectorAll('script'));\n\treturn scripts.find(({ src }) => src.startsWith(url));\n};\n\nexport const findOfferScript = (stage: IStages = defaultOptions.stage) => {\n\tconst { URL } = SCRIPTS[stage];\n\tconst matchedScript = findScript(URL);\n\treturn matchedScript;\n};\n\nexport const updateOffer = (options: Record<string, any>) => {\n\tif ((window as IWindow).Buddy) {\n\t\ttry {\n\t\t\t(window as IWindow).Buddy!.updateOffer(options);\n\t\t} catch (error) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error(error);\n\t\t}\n\t}\n};\n\nconst createOffer = (options: Record<string, any>) => {\n\tif ((window as IWindow).Buddy) {\n\t\ttry {\n\t\t\t(window as IWindow).Buddy!.createOffer(options);\n\t\t} catch (error) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error(error);\n\t\t}\n\t}\n};\n\nconst injectScript = (options: Record<string, any>) => {\n\tconst finalOptions = { ...defaultOptions, ...options };\n\tconst script = document.createElement('script');\n\tscript.src = `${SCRIPTS[finalOptions.stage].URL}`;\n\tscript.onload = () => createOffer(finalOptions);\n\tdocument.body.appendChild(script);\n\treturn script;\n};\n\nlet scriptPromise: Promise<BuddyObject | null> | null = null;\n\nexport const loadScript = (options: Record<string, any>) => {\n\t// Ensure that we only attempt to script once\n\tif (scriptPromise !== null) {\n\t\treturn scriptPromise;\n\t}\n\n\tscriptPromise = new Promise((resolve, reject) => {\n\t\tif (typeof window === 'undefined') {\n\t\t\t// Resolve to null when imported server side. This makes the module\n\t\t\t// safe to import in an isomorphic code base.\n\t\t\tresolve(null);\n\t\t\treturn;\n\t\t}\n\n\t\tif ((window as IWindow).Buddy?.createOffer) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(EXISTING_SCRIPT_MESSAGE);\n\t\t\t(window as IWindow).Buddy?.createOffer(options);\n\t\t\tresolve((window as IWindow).Buddy!);\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst requiredProps = ['ion', 'partnerID'];\n\t\t\tconst missingRequiredProps = validatePropertiesOfObject(requiredProps, options);\n\n\t\t\tif (missingRequiredProps) {\n\t\t\t\treject(new Error(missingRequiredProps));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!options?.stage) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.warn(`No stage passed to BuddyOfferElement. Using default stage: ${defaultOptions.stage}`);\n\t\t\t}\n\n\t\t\t// If stage is passed, ensure it is one of the prescribed options.\n\t\t\tif (options?.stage && !STAGES.includes(options.stage)) {\n\t\t\t\tconst msg = `The stage prop must be one of: [${STAGES.join(' , ')}], but received \"${options.stage}.\"`;\n\t\t\t\treject(new Error(msg));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet script = findOfferScript(options?.stage);\n\n\t\t\tif (script) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.warn(EXISTING_SCRIPT_MESSAGE);\n\t\t\t\tif ((window as IWindow).Buddy?.createOffer) {\n\t\t\t\t\tresolve((window as IWindow).Buddy!);\n\t\t\t\t} else {\n\t\t\t\t\treject(new Error('Buddy Offer Element not available'));\n\t\t\t\t}\n\t\t\t} else if (!script) {\n\t\t\t\tscript = injectScript(options);\n\t\t\t}\n\n\t\t\tscript.addEventListener('load', () => {\n\t\t\t\tif ((window as IWindow).Buddy?.createOffer) {\n\t\t\t\t\tresolve((window as IWindow).Buddy!);\n\t\t\t\t} else {\n\t\t\t\t\treject(new Error('Buddy Offer Element not available'));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tscript.addEventListener('error', () => {\n\t\t\t\treject(new Error('Failed to load Buddy Offer Element'));\n\t\t\t});\n\t\t} catch (error) {\n\t\t\treject(error);\n\t\t}\n\t});\n\n\treturn scriptPromise;\n};\n\n// This is used to clear our reference to the script promise when the component is unmounted.\nexport const clearScriptPromise = () => {\n\tscriptPromise = null;\n};\n","import { useEffect, useState } from 'react';\nimport { findScript } from '../util';\nimport type { IWindow, ConfigObject } from '../interface';\n\nfunction useConfig(src: string) {\n\tconst [config, setConfig] = useState<ConfigObject | null>(null);\n\tconst [isLoading, setIsLoading] = useState(true);\n\n\tconst hasConfig = typeof window !== 'undefined';\n\n\tuseEffect(() => {\n\t\tlet script = findScript(src);\n\n\t\tif (!script) {\n\t\t\tscript = document.createElement('script');\n\t\t\tscript.src = src;\n\n\t\t\tscript.onload = () => {\n\t\t\t\t// Assuming the script sets a global variable named 'config'\n\t\t\t\tif (hasConfig) {\n\t\t\t\t\tsetConfig((window as IWindow).Buddy!.config!);\n\t\t\t\t\tsetIsLoading(false);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdocument.body.appendChild(script);\n\t\t} else {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('Config script is already loaded.');\n\t\t\tif (hasConfig) {\n\t\t\t\tsetConfig((window as IWindow).Buddy!.config!);\n\t\t\t\tsetIsLoading(false);\n\t\t\t}\n\t\t}\n\n\t\treturn () => {\n\t\t\tif (script) {\n\t\t\t\tdocument.body.removeChild(script);\n\t\t\t}\n\t\t};\n\t}, [src]);\n\n\treturn { config, isLoading };\n}\n\nexport default useConfig;\n","import { useEffect, useRef } from 'react';\n\nconst useUpdateEffect: typeof useEffect = (effect, deps) => {\n\tconst isFirstMount = useRef<boolean>(true);\n\t// need to return only in the else condition in case a cleanup func is passed in effect.\n\t// eslint-disable-next-line consistent-return\n\tuseEffect(() => {\n\t\tif (isFirstMount.current) {\n\t\t\tisFirstMount.current = false;\n\t\t} else {\n\t\t\treturn effect();\n\t\t}\n\t}, deps);\n};\n\nexport default useUpdateEffect;\n","import React, { useEffect } from 'react';\nimport { useUpdateEffect } from '../hooks';\nimport { loadScript, clearScriptPromise, updateOffer } from '../util';\nimport type { BuddyOfferElementProps } from '../interface';\n\nfunction BuddyOfferElement(options: BuddyOfferElementProps) {\n\tuseEffect(() => {\n\t\tconst getScript = async () => {\n\t\t\ttry {\n\t\t\t\tawait loadScript(options);\n\t\t\t} catch (error) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.error(error);\n\t\t\t}\n\t\t};\n\t\tgetScript();\n\t\treturn () => {\n\t\t\tclearScriptPromise();\n\t\t};\n\t}, []);\n\n\tuseUpdateEffect(() => {\n\t\tupdateOffer(options);\n\t}, [options]);\n\n\treturn (\n\t\t<div id=\"buddy_offer\" />\n\t);\n}\n\nexport default BuddyOfferElement;\n"],"names":["EXISTING_SCRIPT_MESSAGE","SCRIPTS","LOCAL","URL","DEVELOPMENT","TESTING","STAGING","PRODUCTION","STAGES","Object","keys","defaultOptions","stage","isEmptyOrNil","value","isNil","val","undefined","includes","isEmptyStr","str","trim","length","isEmptyObjOrArr","obj","Array","isArray","validatePropertiesOfObject","propsToCheck","emptyProps","filter","prop","displayMissingProps","reduce","prev","current","i","isLastEl","findScript","url","scripts","from","document","querySelectorAll","find","src","startsWith","findOfferScript","matchedScript","updateOffer","options","window","Buddy","error","console","createOffer","injectScript","finalOptions","script","createElement","onload","body","appendChild","scriptPromise","loadScript","Promise","resolve","reject","warn","requiredProps","missingRequiredProps","Error","msg","join","addEventListener","clearScriptPromise","useConfig","useState","config","setConfig","isLoading","setIsLoading","hasConfig","useEffect","removeChild","useUpdateEffect","effect","deps","isFirstMount","useRef","BuddyOfferElement","getScript","React","id"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/util/dictionary.ts","../src/util/index.ts","../src/hooks/useConfig.tsx","../src/hooks/useUpdateEffect.tsx","../src/components/BuddyOfferElement.tsx"],"sourcesContent":["const EXISTING_SCRIPT_MESSAGE = 'Buddy Offer Script is already loaded.';\n\nconst SCRIPTS = {\n\tLOCAL: {\n\t\tURL: 'http://localhost:8008/index.js',\n\t},\n\t// TODO: Delete this in favor of \"testing\", once we're sure nothing is using it.\n\tDEVELOPMENT: {\n\t\tURL: 'https://js.buddy.insure/v2/dev/index.js',\n\t},\n\tTESTING: {\n\t\tURL: 'https://js.buddy.insure/v2/testing/index.js',\n\t},\n\tSTAGING: {\n\t\tURL: 'https://js.buddy.insure/v2/staging/index.js',\n\t},\n\tPRODUCTION: {\n\t\tURL: 'https://js.buddy.insure/v2/index.js',\n\t},\n} as const;\n\nconst STAGES = Object.keys(SCRIPTS);\n\nexport {\n\tEXISTING_SCRIPT_MESSAGE,\n\tSCRIPTS,\n\tSTAGES,\n};\n","import { EXISTING_SCRIPT_MESSAGE, SCRIPTS, STAGES } from './dictionary';\nimport type { BuddyObject, IWindow } from '../interface';\n\ntype IStages = keyof typeof SCRIPTS;\n\nconst defaultOptions = {\n\tstage: 'STAGING',\n} as const;\n\nconst isEmptyOrNil = (value: any) => {\n\tconst isNil = (val: any) => [undefined, null].includes(val);\n\tconst isEmptyStr = (str: any) => typeof str === 'string' && str.trim().length === 0;\n\tconst isEmptyObjOrArr = (obj: any) => (typeof obj === 'object' && obj.length === undefined &&\n\t\tObject.keys(obj).length === 0) || (Array.isArray(obj) && obj.length === 0);\n\treturn (isNil(value) || isEmptyStr(value) || isEmptyObjOrArr(value));\n};\n\nconst validatePropertiesOfObject = (propsToCheck: string[], obj: Record<string, any>) => {\n\tconst emptyProps = propsToCheck.filter((prop) => isEmptyOrNil(obj[prop]));\n\tif (emptyProps.length) {\n\t\tconst displayMissingProps = emptyProps.reduce((prev, current, i) => {\n\t\t\tconst isLastEl = i === emptyProps.length - 1;\n\t\t\treturn isLastEl ? `${prev}${current}.` : `${prev}${current}, `;\n\t\t}, '');\n\t\treturn `The following props are required: ${displayMissingProps}`;\n\t}\n\treturn null;\n};\n\nexport const findScript = (url: string) => {\n\tconst scripts = Array.from(document.querySelectorAll('script'));\n\treturn scripts.find(({ src }) => src.startsWith(url));\n};\n\nexport const findOfferScript = (stage: IStages = defaultOptions.stage) => {\n\tconst { URL } = SCRIPTS[stage];\n\tconst matchedScript = findScript(URL);\n\treturn matchedScript;\n};\n\nexport const updateOffer = (options: Record<string, any>) => {\n\tif ((window as IWindow).Buddy) {\n\t\ttry {\n\t\t\t(window as IWindow).Buddy!.updateOffer(options);\n\t\t} catch (error) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error(error);\n\t\t}\n\t}\n};\n\nconst createOffer = (options: Record<string, any>) => {\n\tif ((window as IWindow).Buddy) {\n\t\ttry {\n\t\t\t(window as IWindow).Buddy!.createOffer(options);\n\t\t} catch (error) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error(error);\n\t\t}\n\t}\n};\n\nconst injectScript = (options: Record<string, any>) => {\n\tconst finalOptions = { ...defaultOptions, ...options };\n\tconst script = document.createElement('script');\n\tscript.src = `${SCRIPTS[finalOptions.stage].URL}`;\n\tscript.onload = () => createOffer(finalOptions);\n\tdocument.body.appendChild(script);\n\treturn script;\n};\n\nlet scriptPromise: Promise<BuddyObject | null> | null = null;\n\nexport const loadScript = (options: Record<string, any>) => {\n\t// Ensure that we only attempt to script once\n\tif (scriptPromise !== null) {\n\t\treturn scriptPromise;\n\t}\n\n\tscriptPromise = new Promise((resolve, reject) => {\n\t\tif (typeof window === 'undefined') {\n\t\t\t// Resolve to null when imported server side. This makes the module\n\t\t\t// safe to import in an isomorphic code base.\n\t\t\tresolve(null);\n\t\t\treturn;\n\t\t}\n\n\t\tif ((window as IWindow).Buddy?.createOffer) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(EXISTING_SCRIPT_MESSAGE);\n\t\t\t(window as IWindow).Buddy?.createOffer(options);\n\t\t\tresolve((window as IWindow).Buddy!);\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst requiredProps = ['ion', 'partnerID'];\n\t\t\tconst missingRequiredProps = validatePropertiesOfObject(requiredProps, options);\n\n\t\t\tif (missingRequiredProps) {\n\t\t\t\treject(new Error(missingRequiredProps));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!options?.stage) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.warn(`No stage passed to BuddyOfferElement. Using default stage: ${defaultOptions.stage}`);\n\t\t\t}\n\n\t\t\t// If stage is passed, ensure it is one of the prescribed options.\n\t\t\tif (options?.stage && !STAGES.includes(options.stage)) {\n\t\t\t\tconst msg = `The stage prop must be one of: [${STAGES.join(' , ')}], but received \"${options.stage}.\"`;\n\t\t\t\treject(new Error(msg));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet script = findOfferScript(options?.stage);\n\n\t\t\tif (script) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.warn(EXISTING_SCRIPT_MESSAGE);\n\t\t\t\tif ((window as IWindow).Buddy?.createOffer) {\n\t\t\t\t\tresolve((window as IWindow).Buddy!);\n\t\t\t\t} else {\n\t\t\t\t\treject(new Error('Buddy Offer Element not available'));\n\t\t\t\t}\n\t\t\t} else if (!script) {\n\t\t\t\tscript = injectScript(options);\n\t\t\t}\n\n\t\t\tscript.addEventListener('load', () => {\n\t\t\t\tif ((window as IWindow).Buddy?.createOffer) {\n\t\t\t\t\tresolve((window as IWindow).Buddy!);\n\t\t\t\t} else {\n\t\t\t\t\treject(new Error('Buddy Offer Element not available'));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tscript.addEventListener('error', () => {\n\t\t\t\treject(new Error('Failed to load Buddy Offer Element'));\n\t\t\t});\n\t\t} catch (error) {\n\t\t\treject(error);\n\t\t}\n\t});\n\n\treturn scriptPromise;\n};\n\n// This is used to clear our reference to the script promise when the component is unmounted.\nexport const clearScriptPromise = () => {\n\tscriptPromise = null;\n};\n","import { useEffect, useState } from 'react';\nimport { findScript } from '../util';\nimport type { IWindow, ConfigObject } from '../interface';\n\nfunction useConfig(src: string) {\n\tconst [config, setConfig] = useState<ConfigObject | null>(null);\n\tconst [isLoading, setIsLoading] = useState(true);\n\n\tconst hasConfig = typeof window !== 'undefined';\n\n\tuseEffect(() => {\n\t\tlet script = findScript(src);\n\n\t\tif (!script) {\n\t\t\tscript = document.createElement('script');\n\t\t\tscript.src = src;\n\n\t\t\tscript.onload = () => {\n\t\t\t\t// Assuming the script sets a global variable named 'config'\n\t\t\t\tif (hasConfig) {\n\t\t\t\t\tsetConfig((window as IWindow).Buddy!.config!);\n\t\t\t\t\tsetIsLoading(false);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdocument.body.appendChild(script);\n\t\t} else {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('Config script is already loaded.');\n\t\t\tif (hasConfig) {\n\t\t\t\tsetConfig((window as IWindow).Buddy!.config!);\n\t\t\t\tsetIsLoading(false);\n\t\t\t}\n\t\t}\n\n\t\treturn () => {\n\t\t\tif (script) {\n\t\t\t\tdocument.body.removeChild(script);\n\t\t\t}\n\t\t};\n\t}, [src]);\n\n\treturn { config, isLoading };\n}\n\nexport default useConfig;\n","import { useEffect, useRef } from 'react';\n\nconst useUpdateEffect: typeof useEffect = (effect, deps) => {\n\tconst isFirstMount = useRef<boolean>(true);\n\t// need to return only in the else condition in case a cleanup func is passed in effect.\n\t// eslint-disable-next-line consistent-return\n\tuseEffect(() => {\n\t\tif (isFirstMount.current) {\n\t\t\tisFirstMount.current = false;\n\t\t} else {\n\t\t\treturn effect();\n\t\t}\n\t}, deps);\n};\n\nexport default useUpdateEffect;\n","import React, { useEffect } from 'react';\nimport { useUpdateEffect } from '../hooks';\nimport { loadScript, clearScriptPromise, updateOffer } from '../util';\nimport type { BuddyOfferElementProps } from '../interface';\n\nfunction BuddyOfferElement(options: BuddyOfferElementProps) {\n\tuseEffect(() => {\n\t\tconst getScript = async () => {\n\t\t\ttry {\n\t\t\t\tawait loadScript(options);\n\t\t\t} catch (error) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.error(error);\n\t\t\t}\n\t\t};\n\t\tgetScript();\n\t\treturn () => {\n\t\t\tclearScriptPromise();\n\t\t};\n\t}, []);\n\n\tuseUpdateEffect(() => {\n\t\tupdateOffer(options);\n\t}, [options]);\n\n\treturn (\n\t\t<div id=\"buddy_offer\" />\n\t);\n}\n\nexport default BuddyOfferElement;\n"],"names":["EXISTING_SCRIPT_MESSAGE","SCRIPTS","LOCAL","URL","DEVELOPMENT","TESTING","STAGING","PRODUCTION","STAGES","Object","keys","defaultOptions","stage","isEmptyOrNil","value","isNil","val","undefined","includes","isEmptyStr","str","trim","length","isEmptyObjOrArr","obj","Array","isArray","validatePropertiesOfObject","propsToCheck","emptyProps","filter","prop","displayMissingProps","reduce","prev","current","i","isLastEl","findScript","url","scripts","from","document","querySelectorAll","find","_ref","src","startsWith","findOfferScript","matchedScript","updateOffer","options","window","Buddy","error","console","createOffer","injectScript","finalOptions","script","createElement","onload","body","appendChild","scriptPromise","loadScript","Promise","resolve","reject","warn","requiredProps","missingRequiredProps","Error","msg","join","addEventListener","clearScriptPromise","useConfig","config","setConfig","useState","isLoading","setIsLoading","hasConfig","useEffect","removeChild","useUpdateEffect","effect","deps","isFirstMount","useRef","BuddyOfferElement","getScript","_temp","_catch","then","e","React","id"],"mappings":";;;;;;AAAA,MAAMA,uBAAuB,GAAG,uCAAuC,CAAA;AAEvE,MAAMC,OAAO,GAAG;AACfC,EAAAA,KAAK,EAAE;AACNC,IAAAA,GAAG,EAAE,gCAAA;GACL;AACD;AACAC,EAAAA,WAAW,EAAE;AACZD,IAAAA,GAAG,EAAE,yCAAA;GACL;AACDE,EAAAA,OAAO,EAAE;AACRF,IAAAA,GAAG,EAAE,6CAAA;GACL;AACDG,EAAAA,OAAO,EAAE;AACRH,IAAAA,GAAG,EAAE,6CAAA;GACL;AACDI,EAAAA,UAAU,EAAE;AACXJ,IAAAA,GAAG,EAAE,qCAAA;AACL,GAAA;CACQ,CAAA;AAEV,MAAMK,MAAM,GAAGC,MAAM,CAACC,IAAI,CAACT,OAAO,CAAC;;AChBnC,MAAMU,cAAc,GAAG;AACtBC,EAAAA,KAAK,EAAE,SAAA;CACE,CAAA;AAEV,MAAMC,YAAY,GAAIC,KAAU,IAAI;AACnC,EAAA,MAAMC,KAAK,GAAIC,GAAQ,IAAK,CAACC,SAAS,EAAE,IAAI,CAAC,CAACC,QAAQ,CAACF,GAAG,CAAC,CAAA;AAC3D,EAAA,MAAMG,UAAU,GAAIC,GAAQ,IAAK,OAAOA,GAAG,KAAK,QAAQ,IAAIA,GAAG,CAACC,IAAI,EAAE,CAACC,MAAM,KAAK,CAAC,CAAA;AACnF,EAAA,MAAMC,eAAe,GAAIC,GAAQ,IAAM,OAAOA,GAAG,KAAK,QAAQ,IAAIA,GAAG,CAACF,MAAM,KAAKL,SAAS,IACzFR,MAAM,CAACC,IAAI,CAACc,GAAG,CAAC,CAACF,MAAM,KAAK,CAAC,IAAMG,KAAK,CAACC,OAAO,CAACF,GAAG,CAAC,IAAIA,GAAG,CAACF,MAAM,KAAK,CAAE,CAAA;AAC3E,EAAA,OAAQP,KAAK,CAACD,KAAK,CAAC,IAAIK,UAAU,CAACL,KAAK,CAAC,IAAIS,eAAe,CAACT,KAAK,CAAC,CAAA;AACpE,CAAC,CAAA;AAED,MAAMa,0BAA0B,GAAGA,CAACC,YAAsB,EAAEJ,GAAwB,KAAI;AACvF,EAAA,MAAMK,UAAU,GAAGD,YAAY,CAACE,MAAM,CAAEC,IAAI,IAAKlB,YAAY,CAACW,GAAG,CAACO,IAAI,CAAC,CAAC,CAAC,CAAA;EACzE,IAAIF,UAAU,CAACP,MAAM,EAAE;AACtB,IAAA,MAAMU,mBAAmB,GAAGH,UAAU,CAACI,MAAM,CAAC,CAACC,IAAI,EAAEC,OAAO,EAAEC,CAAC,KAAI;MAClE,MAAMC,QAAQ,GAAGD,CAAC,KAAKP,UAAU,CAACP,MAAM,GAAG,CAAC,CAAA;AAC5C,MAAA,OAAOe,QAAQ,GAAG,CAAGH,EAAAA,IAAI,CAAGC,EAAAA,OAAO,CAAG,CAAA,CAAA,GAAG,CAAGD,EAAAA,IAAI,CAAGC,EAAAA,OAAO,CAAI,EAAA,CAAA,CAAA;KAC9D,EAAE,EAAE,CAAC,CAAA;IACN,OAAO,CAAA,kCAAA,EAAqCH,mBAAmB,CAAE,CAAA,CAAA;AAClE,GAAA;AACA,EAAA,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA;AAEM,MAAMM,UAAU,GAAIC,GAAW,IAAI;AACzC,EAAA,MAAMC,OAAO,GAAGf,KAAK,CAACgB,IAAI,CAACC,QAAQ,CAACC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAA;AAC/D,EAAA,OAAOH,OAAO,CAACI,IAAI,CAACC,IAAA,IAAA;IAAA,IAAC;AAAEC,MAAAA,GAAAA;AAAK,KAAA,GAAAD,IAAA,CAAA;AAAA,IAAA,OAAKC,GAAG,CAACC,UAAU,CAACR,GAAG,CAAC,CAAA;GAAC,CAAA,CAAA;AACtD,CAAC,CAAA;AAEM,MAAMS,eAAe,GAAG,UAACpC,OAAyC;AAAA,EAAA,IAAzCA;IAAAA,QAAiBD,cAAc,CAACC,KAAK,CAAA;AAAA,GAAA;EACpE,MAAM;AAAET,IAAAA,GAAAA;AAAK,GAAA,GAAGF,OAAO,CAACW,KAAK,CAAC,CAAA;AAC9B,EAAA,MAAMqC,aAAa,GAAGX,UAAU,CAACnC,GAAG,CAAC,CAAA;AACrC,EAAA,OAAO8C,aAAa,CAAA;AACrB,CAAC,CAAA;AAEM,MAAMC,WAAW,GAAIC,OAA4B,IAAI;EAC3D,IAAKC,MAAkB,CAACC,KAAK,EAAE;IAC9B,IAAI;AACFD,MAAAA,MAAkB,CAACC,KAAM,CAACH,WAAW,CAACC,OAAO,CAAC,CAAA;KAC/C,CAAC,OAAOG,KAAK,EAAE;AACf;AACAC,MAAAA,OAAO,CAACD,KAAK,CAACA,KAAK,CAAC,CAAA;AACrB,KAAA;AACD,GAAA;AACD,CAAC,CAAA;AAED,MAAME,WAAW,GAAIL,OAA4B,IAAI;EACpD,IAAKC,MAAkB,CAACC,KAAK,EAAE;IAC9B,IAAI;AACFD,MAAAA,MAAkB,CAACC,KAAM,CAACG,WAAW,CAACL,OAAO,CAAC,CAAA;KAC/C,CAAC,OAAOG,KAAK,EAAE;AACf;AACAC,MAAAA,OAAO,CAACD,KAAK,CAACA,KAAK,CAAC,CAAA;AACrB,KAAA;AACD,GAAA;AACD,CAAC,CAAA;AAED,MAAMG,YAAY,GAAIN,OAA4B,IAAI;AACrD,EAAA,MAAMO,YAAY,GAAG;AAAE,IAAA,GAAG/C,cAAc;IAAE,GAAGwC,OAAAA;GAAS,CAAA;AACtD,EAAA,MAAMQ,MAAM,GAAGjB,QAAQ,CAACkB,aAAa,CAAC,QAAQ,CAAC,CAAA;AAC/CD,EAAAA,MAAM,CAACb,GAAG,GAAG,CAAA,EAAG7C,OAAO,CAACyD,YAAY,CAAC9C,KAAK,CAAC,CAACT,GAAG,CAAE,CAAA,CAAA;AACjDwD,EAAAA,MAAM,CAACE,MAAM,GAAG,MAAML,WAAW,CAACE,YAAY,CAAC,CAAA;AAC/ChB,EAAAA,QAAQ,CAACoB,IAAI,CAACC,WAAW,CAACJ,MAAM,CAAC,CAAA;AACjC,EAAA,OAAOA,MAAM,CAAA;AACd,CAAC,CAAA;AAED,IAAIK,aAAa,GAAuC,IAAI,CAAA;AAErD,MAAMC,UAAU,GAAId,OAA4B,IAAI;AAC1D;EACA,IAAIa,aAAa,KAAK,IAAI,EAAE;AAC3B,IAAA,OAAOA,aAAa,CAAA;AACrB,GAAA;EAEAA,aAAa,GAAG,IAAIE,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAI;AAC/C,IAAA,IAAI,OAAOhB,MAAM,KAAK,WAAW,EAAE;AAClC;AACA;MACAe,OAAO,CAAC,IAAI,CAAC,CAAA;AACb,MAAA,OAAA;AACD,KAAA;AAEA,IAAA,IAAKf,MAAkB,CAACC,KAAK,EAAEG,WAAW,EAAE;AAC3C;AACAD,MAAAA,OAAO,CAACc,IAAI,CAACrE,uBAAuB,CAAC,CAAA;AACpCoD,MAAAA,MAAkB,CAACC,KAAK,EAAEG,WAAW,CAACL,OAAO,CAAC,CAAA;AAC/CgB,MAAAA,OAAO,CAAEf,MAAkB,CAACC,KAAM,CAAC,CAAA;AACnC,MAAA,OAAA;AACD,KAAA;IAEA,IAAI;AACH,MAAA,MAAMiB,aAAa,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;AAC1C,MAAA,MAAMC,oBAAoB,GAAG5C,0BAA0B,CAAC2C,aAAa,EAAEnB,OAAO,CAAC,CAAA;AAE/E,MAAA,IAAIoB,oBAAoB,EAAE;AACzBH,QAAAA,MAAM,CAAC,IAAII,KAAK,CAACD,oBAAoB,CAAC,CAAC,CAAA;AACvC,QAAA,OAAA;AACD,OAAA;AAEA,MAAA,IAAI,CAACpB,OAAO,EAAEvC,KAAK,EAAE;AACpB;QACA2C,OAAO,CAACc,IAAI,CAAC,CAAA,2DAAA,EAA8D1D,cAAc,CAACC,KAAK,EAAE,CAAC,CAAA;AACnG,OAAA;AAEA;AACA,MAAA,IAAIuC,OAAO,EAAEvC,KAAK,IAAI,CAACJ,MAAM,CAACU,QAAQ,CAACiC,OAAO,CAACvC,KAAK,CAAC,EAAE;AACtD,QAAA,MAAM6D,GAAG,GAAG,CAAmCjE,gCAAAA,EAAAA,MAAM,CAACkE,IAAI,CAAC,KAAK,CAAC,CAAA,iBAAA,EAAoBvB,OAAO,CAACvC,KAAK,CAAI,EAAA,CAAA,CAAA;AACtGwD,QAAAA,MAAM,CAAC,IAAII,KAAK,CAACC,GAAG,CAAC,CAAC,CAAA;AACtB,QAAA,OAAA;AACD,OAAA;AAEA,MAAA,IAAId,MAAM,GAAGX,eAAe,CAACG,OAAO,EAAEvC,KAAK,CAAC,CAAA;AAE5C,MAAA,IAAI+C,MAAM,EAAE;AACX;AACAJ,QAAAA,OAAO,CAACc,IAAI,CAACrE,uBAAuB,CAAC,CAAA;AACrC,QAAA,IAAKoD,MAAkB,CAACC,KAAK,EAAEG,WAAW,EAAE;AAC3CW,UAAAA,OAAO,CAAEf,MAAkB,CAACC,KAAM,CAAC,CAAA;AACpC,SAAC,MAAM;AACNe,UAAAA,MAAM,CAAC,IAAII,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAA;AACvD,SAAA;AACD,OAAC,MAAM,IAAI,CAACb,MAAM,EAAE;AACnBA,QAAAA,MAAM,GAAGF,YAAY,CAACN,OAAO,CAAC,CAAA;AAC/B,OAAA;AAEAQ,MAAAA,MAAM,CAACgB,gBAAgB,CAAC,MAAM,EAAE,MAAK;AACpC,QAAA,IAAKvB,MAAkB,CAACC,KAAK,EAAEG,WAAW,EAAE;AAC3CW,UAAAA,OAAO,CAAEf,MAAkB,CAACC,KAAM,CAAC,CAAA;AACpC,SAAC,MAAM;AACNe,UAAAA,MAAM,CAAC,IAAII,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAA;AACvD,SAAA;AACD,OAAC,CAAC,CAAA;AAEFb,MAAAA,MAAM,CAACgB,gBAAgB,CAAC,OAAO,EAAE,MAAK;AACrCP,QAAAA,MAAM,CAAC,IAAII,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAA;AACxD,OAAC,CAAC,CAAA;KACF,CAAC,OAAOlB,KAAK,EAAE;MACfc,MAAM,CAACd,KAAK,CAAC,CAAA;AACd,KAAA;AACD,GAAC,CAAC,CAAA;AAEF,EAAA,OAAOU,aAAa,CAAA;AACrB,CAAC,CAAA;AAED;AACO,MAAMY,kBAAkB,GAAGA,MAAK;AACtCZ,EAAAA,aAAa,GAAG,IAAI,CAAA;AACrB,CAAC;;ACpJD,SAASa,SAASA,CAAC/B,GAAW,EAAA;EAC7B,MAAM,CAACgC,MAAM,EAAEC,SAAS,CAAC,GAAGC,cAAQ,CAAsB,IAAI,CAAC,CAAA;EAC/D,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAGF,cAAQ,CAAC,IAAI,CAAC,CAAA;AAEhD,EAAA,MAAMG,SAAS,GAAG,OAAO/B,MAAM,KAAK,WAAW,CAAA;AAE/CgC,EAAAA,eAAS,CAAC,MAAK;AACd,IAAA,IAAIzB,MAAM,GAAGrB,UAAU,CAACQ,GAAG,CAAC,CAAA;IAE5B,IAAI,CAACa,MAAM,EAAE;AACZA,MAAAA,MAAM,GAAGjB,QAAQ,CAACkB,aAAa,CAAC,QAAQ,CAAC,CAAA;MACzCD,MAAM,CAACb,GAAG,GAAGA,GAAG,CAAA;MAEhBa,MAAM,CAACE,MAAM,GAAG,MAAK;AACpB;AACA,QAAA,IAAIsB,SAAS,EAAE;AACdJ,UAAAA,SAAS,CAAE3B,MAAkB,CAACC,KAAM,CAACyB,MAAO,CAAC,CAAA;UAC7CI,YAAY,CAAC,KAAK,CAAC,CAAA;AACpB,SAAA;OACA,CAAA;AAEDxC,MAAAA,QAAQ,CAACoB,IAAI,CAACC,WAAW,CAACJ,MAAM,CAAC,CAAA;AAClC,KAAC,MAAM;AACN;AACAJ,MAAAA,OAAO,CAACc,IAAI,CAAC,kCAAkC,CAAC,CAAA;AAChD,MAAA,IAAIc,SAAS,EAAE;AACdJ,QAAAA,SAAS,CAAE3B,MAAkB,CAACC,KAAM,CAACyB,MAAO,CAAC,CAAA;QAC7CI,YAAY,CAAC,KAAK,CAAC,CAAA;AACpB,OAAA;AACD,KAAA;AAEA,IAAA,OAAO,MAAK;AACX,MAAA,IAAIvB,MAAM,EAAE;AACXjB,QAAAA,QAAQ,CAACoB,IAAI,CAACuB,WAAW,CAAC1B,MAAM,CAAC,CAAA;AAClC,OAAA;KACA,CAAA;AACF,GAAC,EAAE,CAACb,GAAG,CAAC,CAAC,CAAA;EAET,OAAO;IAAEgC,MAAM;AAAEG,IAAAA,SAAAA;GAAW,CAAA;AAC7B;;ACzCA,MAAMK,eAAe,GAAqBA,CAACC,MAAM,EAAEC,IAAI,KAAI;AAC1D,EAAA,MAAMC,YAAY,GAAGC,YAAM,CAAU,IAAI,CAAC,CAAA;AAC1C;AACA;AACAN,EAAAA,eAAS,CAAC,MAAK;IACd,IAAIK,YAAY,CAACtD,OAAO,EAAE;MACzBsD,YAAY,CAACtD,OAAO,GAAG,KAAK,CAAA;AAC7B,KAAC,MAAM;MACN,OAAOoD,MAAM,EAAE,CAAA;AAChB,KAAA;GACA,EAAEC,IAAI,CAAC,CAAA;AACT,CAAC;;;;;;;;;;;;;ACRD,SAASG,iBAAiBA,CAACxC,OAA+B,EAAA;AACzDiC,EAAAA,eAAS,CAAC,MAAK;IACd,MAAMQ,SAAS,eAAA;MAAA,IAAc;QAAA,MAAAC,KAAA,GAAAC,MAAA,CACxB,YAAA;UAAA,OAAA5B,OAAA,CAAAC,OAAA,CACGF,UAAU,CAACd,OAAO,CAAC,CAAA,CAAA4C,IAAA,CAAA,YAAA,EAAA,CAAA,CAAA;SACzB,EAAA,UAAQzC,KAAK,EAAE;AAChB;AACCC,UAAAA,OAAO,CAACD,KAAK,CAACA,KAAK,CAAC,CAAA;SACpB,CAAA,CAAA;AAAA,QAAA,OAAAY,OAAA,CAAAC,OAAA,CAAA0B,KAAA,IAAAA,KAAA,CAAAE,IAAA,GAAAF,KAAA,CAAAE,IAAA,CAAA,YAAA,EAAA,CAAA,GAAA,KAAA,CAAA,CAAA,CAAA;AACF,OAAC,QAAAC,CAAA,EAAA;AAAA,QAAA,OAAA9B,OAAA,CAAAE,MAAA,CAAA4B,CAAA,CAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA;AACDJ,IAAAA,SAAS,EAAE,CAAA;AACX,IAAA,OAAO,MAAK;AACXhB,MAAAA,kBAAkB,EAAE,CAAA;KACpB,CAAA;GACD,EAAE,EAAE,CAAC,CAAA;AAENU,EAAAA,eAAe,CAAC,MAAK;IACpBpC,WAAW,CAACC,OAAO,CAAC,CAAA;AACrB,GAAC,EAAE,CAACA,OAAO,CAAC,CAAC,CAAA;AAEb,EAAA,oBACC8C,yBAAK,CAAArC,aAAA,CAAA,KAAA,EAAA;AAAAsC,IAAAA,EAAE,EAAC,aAAA;AAAa,GAAA,CAAG,CAAA;AAE1B;;;;;"}
|
package/dist/index.modern.mjs
CHANGED
|
@@ -1,21 +1,13 @@
|
|
|
1
1
|
import React, { useState, useEffect, useRef } from 'react';
|
|
2
2
|
|
|
3
3
|
function _extends() {
|
|
4
|
-
_extends = Object.assign
|
|
5
|
-
for (var
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
for (var key in source) {
|
|
9
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
10
|
-
target[key] = source[key];
|
|
11
|
-
}
|
|
12
|
-
}
|
|
4
|
+
return _extends = Object.assign ? Object.assign.bind() : function (n) {
|
|
5
|
+
for (var e = 1; e < arguments.length; e++) {
|
|
6
|
+
var t = arguments[e];
|
|
7
|
+
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
|
|
13
8
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
return _extends.apply(this, arguments);
|
|
9
|
+
return n;
|
|
10
|
+
}, _extends.apply(null, arguments);
|
|
19
11
|
}
|
|
20
12
|
|
|
21
13
|
const EXISTING_SCRIPT_MESSAGE = 'Buddy Offer Script is already loaded.';
|
|
@@ -42,20 +34,14 @@ const STAGES = Object.keys(SCRIPTS);
|
|
|
42
34
|
const defaultOptions = {
|
|
43
35
|
stage: 'STAGING'
|
|
44
36
|
};
|
|
45
|
-
|
|
46
37
|
const isEmptyOrNil = value => {
|
|
47
38
|
const isNil = val => [undefined, null].includes(val);
|
|
48
|
-
|
|
49
39
|
const isEmptyStr = str => typeof str === 'string' && str.trim().length === 0;
|
|
50
|
-
|
|
51
40
|
const isEmptyObjOrArr = obj => typeof obj === 'object' && obj.length === undefined && Object.keys(obj).length === 0 || Array.isArray(obj) && obj.length === 0;
|
|
52
|
-
|
|
53
41
|
return isNil(value) || isEmptyStr(value) || isEmptyObjOrArr(value);
|
|
54
42
|
};
|
|
55
|
-
|
|
56
43
|
const validatePropertiesOfObject = (propsToCheck, obj) => {
|
|
57
44
|
const emptyProps = propsToCheck.filter(prop => isEmptyOrNil(obj[prop]));
|
|
58
|
-
|
|
59
45
|
if (emptyProps.length) {
|
|
60
46
|
const displayMissingProps = emptyProps.reduce((prev, current, i) => {
|
|
61
47
|
const isLastEl = i === emptyProps.length - 1;
|
|
@@ -63,10 +49,8 @@ const validatePropertiesOfObject = (propsToCheck, obj) => {
|
|
|
63
49
|
}, '');
|
|
64
50
|
return `The following props are required: ${displayMissingProps}`;
|
|
65
51
|
}
|
|
66
|
-
|
|
67
52
|
return null;
|
|
68
53
|
};
|
|
69
|
-
|
|
70
54
|
const findScript = url => {
|
|
71
55
|
const scripts = Array.from(document.querySelectorAll('script'));
|
|
72
56
|
return scripts.find(({
|
|
@@ -90,7 +74,6 @@ const updateOffer = options => {
|
|
|
90
74
|
}
|
|
91
75
|
}
|
|
92
76
|
};
|
|
93
|
-
|
|
94
77
|
const createOffer = options => {
|
|
95
78
|
if (window.Buddy) {
|
|
96
79
|
try {
|
|
@@ -101,75 +84,58 @@ const createOffer = options => {
|
|
|
101
84
|
}
|
|
102
85
|
}
|
|
103
86
|
};
|
|
104
|
-
|
|
105
87
|
const injectScript = options => {
|
|
106
88
|
const finalOptions = _extends({}, defaultOptions, options);
|
|
107
|
-
|
|
108
89
|
const script = document.createElement('script');
|
|
109
90
|
script.src = `${SCRIPTS[finalOptions.stage].URL}`;
|
|
110
|
-
|
|
111
91
|
script.onload = () => createOffer(finalOptions);
|
|
112
|
-
|
|
113
92
|
document.body.appendChild(script);
|
|
114
93
|
return script;
|
|
115
94
|
};
|
|
116
|
-
|
|
117
95
|
let scriptPromise = null;
|
|
118
96
|
const loadScript = options => {
|
|
119
97
|
// Ensure that we only attempt to script once
|
|
120
98
|
if (scriptPromise !== null) {
|
|
121
99
|
return scriptPromise;
|
|
122
100
|
}
|
|
123
|
-
|
|
124
101
|
scriptPromise = new Promise((resolve, reject) => {
|
|
125
102
|
var _window$Buddy;
|
|
126
|
-
|
|
127
103
|
if (typeof window === 'undefined') {
|
|
128
104
|
// Resolve to null when imported server side. This makes the module
|
|
129
105
|
// safe to import in an isomorphic code base.
|
|
130
106
|
resolve(null);
|
|
131
107
|
return;
|
|
132
108
|
}
|
|
133
|
-
|
|
134
109
|
if ((_window$Buddy = window.Buddy) != null && _window$Buddy.createOffer) {
|
|
135
110
|
var _window$Buddy2;
|
|
136
|
-
|
|
137
111
|
// eslint-disable-next-line no-console
|
|
138
112
|
console.warn(EXISTING_SCRIPT_MESSAGE);
|
|
139
|
-
(_window$Buddy2 = window.Buddy) == null
|
|
113
|
+
(_window$Buddy2 = window.Buddy) == null || _window$Buddy2.createOffer(options);
|
|
140
114
|
resolve(window.Buddy);
|
|
141
115
|
return;
|
|
142
116
|
}
|
|
143
|
-
|
|
144
117
|
try {
|
|
145
118
|
const requiredProps = ['ion', 'partnerID'];
|
|
146
119
|
const missingRequiredProps = validatePropertiesOfObject(requiredProps, options);
|
|
147
|
-
|
|
148
120
|
if (missingRequiredProps) {
|
|
149
121
|
reject(new Error(missingRequiredProps));
|
|
150
122
|
return;
|
|
151
123
|
}
|
|
152
|
-
|
|
153
124
|
if (!(options != null && options.stage)) {
|
|
154
125
|
// eslint-disable-next-line no-console
|
|
155
126
|
console.warn(`No stage passed to BuddyOfferElement. Using default stage: ${defaultOptions.stage}`);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
|
|
127
|
+
}
|
|
128
|
+
// If stage is passed, ensure it is one of the prescribed options.
|
|
159
129
|
if (options != null && options.stage && !STAGES.includes(options.stage)) {
|
|
160
130
|
const msg = `The stage prop must be one of: [${STAGES.join(' , ')}], but received "${options.stage}."`;
|
|
161
131
|
reject(new Error(msg));
|
|
162
132
|
return;
|
|
163
133
|
}
|
|
164
|
-
|
|
165
134
|
let script = findOfferScript(options == null ? void 0 : options.stage);
|
|
166
|
-
|
|
167
135
|
if (script) {
|
|
168
136
|
var _window$Buddy3;
|
|
169
|
-
|
|
170
137
|
// eslint-disable-next-line no-console
|
|
171
138
|
console.warn(EXISTING_SCRIPT_MESSAGE);
|
|
172
|
-
|
|
173
139
|
if ((_window$Buddy3 = window.Buddy) != null && _window$Buddy3.createOffer) {
|
|
174
140
|
resolve(window.Buddy);
|
|
175
141
|
} else {
|
|
@@ -178,10 +144,8 @@ const loadScript = options => {
|
|
|
178
144
|
} else if (!script) {
|
|
179
145
|
script = injectScript(options);
|
|
180
146
|
}
|
|
181
|
-
|
|
182
147
|
script.addEventListener('load', () => {
|
|
183
148
|
var _window$Buddy4;
|
|
184
|
-
|
|
185
149
|
if ((_window$Buddy4 = window.Buddy) != null && _window$Buddy4.createOffer) {
|
|
186
150
|
resolve(window.Buddy);
|
|
187
151
|
} else {
|
|
@@ -196,8 +160,8 @@ const loadScript = options => {
|
|
|
196
160
|
}
|
|
197
161
|
});
|
|
198
162
|
return scriptPromise;
|
|
199
|
-
};
|
|
200
|
-
|
|
163
|
+
};
|
|
164
|
+
// This is used to clear our reference to the script promise when the component is unmounted.
|
|
201
165
|
const clearScriptPromise = () => {
|
|
202
166
|
scriptPromise = null;
|
|
203
167
|
};
|
|
@@ -208,11 +172,9 @@ function useConfig(src) {
|
|
|
208
172
|
const hasConfig = typeof window !== 'undefined';
|
|
209
173
|
useEffect(() => {
|
|
210
174
|
let script = findScript(src);
|
|
211
|
-
|
|
212
175
|
if (!script) {
|
|
213
176
|
script = document.createElement('script');
|
|
214
177
|
script.src = src;
|
|
215
|
-
|
|
216
178
|
script.onload = () => {
|
|
217
179
|
// Assuming the script sets a global variable named 'config'
|
|
218
180
|
if (hasConfig) {
|
|
@@ -220,18 +182,15 @@ function useConfig(src) {
|
|
|
220
182
|
setIsLoading(false);
|
|
221
183
|
}
|
|
222
184
|
};
|
|
223
|
-
|
|
224
185
|
document.body.appendChild(script);
|
|
225
186
|
} else {
|
|
226
187
|
// eslint-disable-next-line no-console
|
|
227
188
|
console.warn('Config script is already loaded.');
|
|
228
|
-
|
|
229
189
|
if (hasConfig) {
|
|
230
190
|
setConfig(window.Buddy.config);
|
|
231
191
|
setIsLoading(false);
|
|
232
192
|
}
|
|
233
193
|
}
|
|
234
|
-
|
|
235
194
|
return () => {
|
|
236
195
|
if (script) {
|
|
237
196
|
document.body.removeChild(script);
|
|
@@ -245,9 +204,9 @@ function useConfig(src) {
|
|
|
245
204
|
}
|
|
246
205
|
|
|
247
206
|
const useUpdateEffect = (effect, deps) => {
|
|
248
|
-
const isFirstMount = useRef(true);
|
|
207
|
+
const isFirstMount = useRef(true);
|
|
208
|
+
// need to return only in the else condition in case a cleanup func is passed in effect.
|
|
249
209
|
// eslint-disable-next-line consistent-return
|
|
250
|
-
|
|
251
210
|
useEffect(() => {
|
|
252
211
|
if (isFirstMount.current) {
|
|
253
212
|
isFirstMount.current = false;
|
|
@@ -267,7 +226,6 @@ function BuddyOfferElement(options) {
|
|
|
267
226
|
console.error(error);
|
|
268
227
|
}
|
|
269
228
|
};
|
|
270
|
-
|
|
271
229
|
getScript();
|
|
272
230
|
return () => {
|
|
273
231
|
clearScriptPromise();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.modern.mjs","sources":["../src/util/dictionary.ts","../src/util/index.ts","../src/hooks/useConfig.tsx","../src/hooks/useUpdateEffect.tsx","../src/components/BuddyOfferElement.tsx"],"sourcesContent":["const EXISTING_SCRIPT_MESSAGE = 'Buddy Offer Script is already loaded.';\n\nconst SCRIPTS = {\n\tLOCAL: {\n\t\tURL: 'http://localhost:8008/index.js',\n\t},\n\t// TODO: Delete this in favor of \"testing\", once we're sure nothing is using it.\n\tDEVELOPMENT: {\n\t\tURL: 'https://js.buddy.insure/v2/dev/index.js',\n\t},\n\tTESTING: {\n\t\tURL: 'https://js.buddy.insure/v2/testing/index.js',\n\t},\n\tSTAGING: {\n\t\tURL: 'https://js.buddy.insure/v2/staging/index.js',\n\t},\n\tPRODUCTION: {\n\t\tURL: 'https://js.buddy.insure/v2/index.js',\n\t},\n} as const;\n\nconst STAGES = Object.keys(SCRIPTS);\n\nexport {\n\tEXISTING_SCRIPT_MESSAGE,\n\tSCRIPTS,\n\tSTAGES,\n};\n","import { EXISTING_SCRIPT_MESSAGE, SCRIPTS, STAGES } from './dictionary';\nimport type { BuddyObject, IWindow } from '../interface';\n\ntype IStages = keyof typeof SCRIPTS;\n\nconst defaultOptions = {\n\tstage: 'STAGING',\n} as const;\n\nconst isEmptyOrNil = (value: any) => {\n\tconst isNil = (val: any) => [undefined, null].includes(val);\n\tconst isEmptyStr = (str: any) => typeof str === 'string' && str.trim().length === 0;\n\tconst isEmptyObjOrArr = (obj: any) => (typeof obj === 'object' && obj.length === undefined &&\n\t\tObject.keys(obj).length === 0) || (Array.isArray(obj) && obj.length === 0);\n\treturn (isNil(value) || isEmptyStr(value) || isEmptyObjOrArr(value));\n};\n\nconst validatePropertiesOfObject = (propsToCheck: string[], obj: Record<string, any>) => {\n\tconst emptyProps = propsToCheck.filter((prop) => isEmptyOrNil(obj[prop]));\n\tif (emptyProps.length) {\n\t\tconst displayMissingProps = emptyProps.reduce((prev, current, i) => {\n\t\t\tconst isLastEl = i === emptyProps.length - 1;\n\t\t\treturn isLastEl ? `${prev}${current}.` : `${prev}${current}, `;\n\t\t}, '');\n\t\treturn `The following props are required: ${displayMissingProps}`;\n\t}\n\treturn null;\n};\n\nexport const findScript = (url: string) => {\n\tconst scripts = Array.from(document.querySelectorAll('script'));\n\treturn scripts.find(({ src }) => src.startsWith(url));\n};\n\nexport const findOfferScript = (stage: IStages = defaultOptions.stage) => {\n\tconst { URL } = SCRIPTS[stage];\n\tconst matchedScript = findScript(URL);\n\treturn matchedScript;\n};\n\nexport const updateOffer = (options: Record<string, any>) => {\n\tif ((window as IWindow).Buddy) {\n\t\ttry {\n\t\t\t(window as IWindow).Buddy!.updateOffer(options);\n\t\t} catch (error) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error(error);\n\t\t}\n\t}\n};\n\nconst createOffer = (options: Record<string, any>) => {\n\tif ((window as IWindow).Buddy) {\n\t\ttry {\n\t\t\t(window as IWindow).Buddy!.createOffer(options);\n\t\t} catch (error) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error(error);\n\t\t}\n\t}\n};\n\nconst injectScript = (options: Record<string, any>) => {\n\tconst finalOptions = { ...defaultOptions, ...options };\n\tconst script = document.createElement('script');\n\tscript.src = `${SCRIPTS[finalOptions.stage].URL}`;\n\tscript.onload = () => createOffer(finalOptions);\n\tdocument.body.appendChild(script);\n\treturn script;\n};\n\nlet scriptPromise: Promise<BuddyObject | null> | null = null;\n\nexport const loadScript = (options: Record<string, any>) => {\n\t// Ensure that we only attempt to script once\n\tif (scriptPromise !== null) {\n\t\treturn scriptPromise;\n\t}\n\n\tscriptPromise = new Promise((resolve, reject) => {\n\t\tif (typeof window === 'undefined') {\n\t\t\t// Resolve to null when imported server side. This makes the module\n\t\t\t// safe to import in an isomorphic code base.\n\t\t\tresolve(null);\n\t\t\treturn;\n\t\t}\n\n\t\tif ((window as IWindow).Buddy?.createOffer) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(EXISTING_SCRIPT_MESSAGE);\n\t\t\t(window as IWindow).Buddy?.createOffer(options);\n\t\t\tresolve((window as IWindow).Buddy!);\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst requiredProps = ['ion', 'partnerID'];\n\t\t\tconst missingRequiredProps = validatePropertiesOfObject(requiredProps, options);\n\n\t\t\tif (missingRequiredProps) {\n\t\t\t\treject(new Error(missingRequiredProps));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!options?.stage) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.warn(`No stage passed to BuddyOfferElement. Using default stage: ${defaultOptions.stage}`);\n\t\t\t}\n\n\t\t\t// If stage is passed, ensure it is one of the prescribed options.\n\t\t\tif (options?.stage && !STAGES.includes(options.stage)) {\n\t\t\t\tconst msg = `The stage prop must be one of: [${STAGES.join(' , ')}], but received \"${options.stage}.\"`;\n\t\t\t\treject(new Error(msg));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet script = findOfferScript(options?.stage);\n\n\t\t\tif (script) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.warn(EXISTING_SCRIPT_MESSAGE);\n\t\t\t\tif ((window as IWindow).Buddy?.createOffer) {\n\t\t\t\t\tresolve((window as IWindow).Buddy!);\n\t\t\t\t} else {\n\t\t\t\t\treject(new Error('Buddy Offer Element not available'));\n\t\t\t\t}\n\t\t\t} else if (!script) {\n\t\t\t\tscript = injectScript(options);\n\t\t\t}\n\n\t\t\tscript.addEventListener('load', () => {\n\t\t\t\tif ((window as IWindow).Buddy?.createOffer) {\n\t\t\t\t\tresolve((window as IWindow).Buddy!);\n\t\t\t\t} else {\n\t\t\t\t\treject(new Error('Buddy Offer Element not available'));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tscript.addEventListener('error', () => {\n\t\t\t\treject(new Error('Failed to load Buddy Offer Element'));\n\t\t\t});\n\t\t} catch (error) {\n\t\t\treject(error);\n\t\t}\n\t});\n\n\treturn scriptPromise;\n};\n\n// This is used to clear our reference to the script promise when the component is unmounted.\nexport const clearScriptPromise = () => {\n\tscriptPromise = null;\n};\n","import { useEffect, useState } from 'react';\nimport { findScript } from '../util';\nimport type { IWindow, ConfigObject } from '../interface';\n\nfunction useConfig(src: string) {\n\tconst [config, setConfig] = useState<ConfigObject | null>(null);\n\tconst [isLoading, setIsLoading] = useState(true);\n\n\tconst hasConfig = typeof window !== 'undefined';\n\n\tuseEffect(() => {\n\t\tlet script = findScript(src);\n\n\t\tif (!script) {\n\t\t\tscript = document.createElement('script');\n\t\t\tscript.src = src;\n\n\t\t\tscript.onload = () => {\n\t\t\t\t// Assuming the script sets a global variable named 'config'\n\t\t\t\tif (hasConfig) {\n\t\t\t\t\tsetConfig((window as IWindow).Buddy!.config!);\n\t\t\t\t\tsetIsLoading(false);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdocument.body.appendChild(script);\n\t\t} else {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('Config script is already loaded.');\n\t\t\tif (hasConfig) {\n\t\t\t\tsetConfig((window as IWindow).Buddy!.config!);\n\t\t\t\tsetIsLoading(false);\n\t\t\t}\n\t\t}\n\n\t\treturn () => {\n\t\t\tif (script) {\n\t\t\t\tdocument.body.removeChild(script);\n\t\t\t}\n\t\t};\n\t}, [src]);\n\n\treturn { config, isLoading };\n}\n\nexport default useConfig;\n","import { useEffect, useRef } from 'react';\n\nconst useUpdateEffect: typeof useEffect = (effect, deps) => {\n\tconst isFirstMount = useRef<boolean>(true);\n\t// need to return only in the else condition in case a cleanup func is passed in effect.\n\t// eslint-disable-next-line consistent-return\n\tuseEffect(() => {\n\t\tif (isFirstMount.current) {\n\t\t\tisFirstMount.current = false;\n\t\t} else {\n\t\t\treturn effect();\n\t\t}\n\t}, deps);\n};\n\nexport default useUpdateEffect;\n","import React, { useEffect } from 'react';\nimport { useUpdateEffect } from '../hooks';\nimport { loadScript, clearScriptPromise, updateOffer } from '../util';\nimport type { BuddyOfferElementProps } from '../interface';\n\nfunction BuddyOfferElement(options: BuddyOfferElementProps) {\n\tuseEffect(() => {\n\t\tconst getScript = async () => {\n\t\t\ttry {\n\t\t\t\tawait loadScript(options);\n\t\t\t} catch (error) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.error(error);\n\t\t\t}\n\t\t};\n\t\tgetScript();\n\t\treturn () => {\n\t\t\tclearScriptPromise();\n\t\t};\n\t}, []);\n\n\tuseUpdateEffect(() => {\n\t\tupdateOffer(options);\n\t}, [options]);\n\n\treturn (\n\t\t<div id=\"buddy_offer\" />\n\t);\n}\n\nexport default BuddyOfferElement;\n"],"names":["EXISTING_SCRIPT_MESSAGE","SCRIPTS","LOCAL","URL","DEVELOPMENT","TESTING","STAGING","PRODUCTION","STAGES","Object","keys","defaultOptions","stage","isEmptyOrNil","value","isNil","val","undefined","includes","isEmptyStr","str","trim","length","isEmptyObjOrArr","obj","Array","isArray","validatePropertiesOfObject","propsToCheck","emptyProps","filter","prop","displayMissingProps","reduce","prev","current","i","isLastEl","findScript","url","scripts","from","document","querySelectorAll","find","src","startsWith","findOfferScript","matchedScript","updateOffer","options","window","Buddy","error","console","createOffer","injectScript","finalOptions","script","createElement","onload","body","appendChild","scriptPromise","loadScript","Promise","resolve","reject","warn","requiredProps","missingRequiredProps","Error","msg","join","addEventListener","clearScriptPromise","useConfig","config","setConfig","useState","isLoading","setIsLoading","hasConfig","useEffect","removeChild","useUpdateEffect","effect","deps","isFirstMount","useRef","BuddyOfferElement","getScript","React","id"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.modern.mjs","sources":["../src/util/dictionary.ts","../src/util/index.ts","../src/hooks/useConfig.tsx","../src/hooks/useUpdateEffect.tsx","../src/components/BuddyOfferElement.tsx"],"sourcesContent":["const EXISTING_SCRIPT_MESSAGE = 'Buddy Offer Script is already loaded.';\n\nconst SCRIPTS = {\n\tLOCAL: {\n\t\tURL: 'http://localhost:8008/index.js',\n\t},\n\t// TODO: Delete this in favor of \"testing\", once we're sure nothing is using it.\n\tDEVELOPMENT: {\n\t\tURL: 'https://js.buddy.insure/v2/dev/index.js',\n\t},\n\tTESTING: {\n\t\tURL: 'https://js.buddy.insure/v2/testing/index.js',\n\t},\n\tSTAGING: {\n\t\tURL: 'https://js.buddy.insure/v2/staging/index.js',\n\t},\n\tPRODUCTION: {\n\t\tURL: 'https://js.buddy.insure/v2/index.js',\n\t},\n} as const;\n\nconst STAGES = Object.keys(SCRIPTS);\n\nexport {\n\tEXISTING_SCRIPT_MESSAGE,\n\tSCRIPTS,\n\tSTAGES,\n};\n","import { EXISTING_SCRIPT_MESSAGE, SCRIPTS, STAGES } from './dictionary';\nimport type { BuddyObject, IWindow } from '../interface';\n\ntype IStages = keyof typeof SCRIPTS;\n\nconst defaultOptions = {\n\tstage: 'STAGING',\n} as const;\n\nconst isEmptyOrNil = (value: any) => {\n\tconst isNil = (val: any) => [undefined, null].includes(val);\n\tconst isEmptyStr = (str: any) => typeof str === 'string' && str.trim().length === 0;\n\tconst isEmptyObjOrArr = (obj: any) => (typeof obj === 'object' && obj.length === undefined &&\n\t\tObject.keys(obj).length === 0) || (Array.isArray(obj) && obj.length === 0);\n\treturn (isNil(value) || isEmptyStr(value) || isEmptyObjOrArr(value));\n};\n\nconst validatePropertiesOfObject = (propsToCheck: string[], obj: Record<string, any>) => {\n\tconst emptyProps = propsToCheck.filter((prop) => isEmptyOrNil(obj[prop]));\n\tif (emptyProps.length) {\n\t\tconst displayMissingProps = emptyProps.reduce((prev, current, i) => {\n\t\t\tconst isLastEl = i === emptyProps.length - 1;\n\t\t\treturn isLastEl ? `${prev}${current}.` : `${prev}${current}, `;\n\t\t}, '');\n\t\treturn `The following props are required: ${displayMissingProps}`;\n\t}\n\treturn null;\n};\n\nexport const findScript = (url: string) => {\n\tconst scripts = Array.from(document.querySelectorAll('script'));\n\treturn scripts.find(({ src }) => src.startsWith(url));\n};\n\nexport const findOfferScript = (stage: IStages = defaultOptions.stage) => {\n\tconst { URL } = SCRIPTS[stage];\n\tconst matchedScript = findScript(URL);\n\treturn matchedScript;\n};\n\nexport const updateOffer = (options: Record<string, any>) => {\n\tif ((window as IWindow).Buddy) {\n\t\ttry {\n\t\t\t(window as IWindow).Buddy!.updateOffer(options);\n\t\t} catch (error) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error(error);\n\t\t}\n\t}\n};\n\nconst createOffer = (options: Record<string, any>) => {\n\tif ((window as IWindow).Buddy) {\n\t\ttry {\n\t\t\t(window as IWindow).Buddy!.createOffer(options);\n\t\t} catch (error) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error(error);\n\t\t}\n\t}\n};\n\nconst injectScript = (options: Record<string, any>) => {\n\tconst finalOptions = { ...defaultOptions, ...options };\n\tconst script = document.createElement('script');\n\tscript.src = `${SCRIPTS[finalOptions.stage].URL}`;\n\tscript.onload = () => createOffer(finalOptions);\n\tdocument.body.appendChild(script);\n\treturn script;\n};\n\nlet scriptPromise: Promise<BuddyObject | null> | null = null;\n\nexport const loadScript = (options: Record<string, any>) => {\n\t// Ensure that we only attempt to script once\n\tif (scriptPromise !== null) {\n\t\treturn scriptPromise;\n\t}\n\n\tscriptPromise = new Promise((resolve, reject) => {\n\t\tif (typeof window === 'undefined') {\n\t\t\t// Resolve to null when imported server side. This makes the module\n\t\t\t// safe to import in an isomorphic code base.\n\t\t\tresolve(null);\n\t\t\treturn;\n\t\t}\n\n\t\tif ((window as IWindow).Buddy?.createOffer) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(EXISTING_SCRIPT_MESSAGE);\n\t\t\t(window as IWindow).Buddy?.createOffer(options);\n\t\t\tresolve((window as IWindow).Buddy!);\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst requiredProps = ['ion', 'partnerID'];\n\t\t\tconst missingRequiredProps = validatePropertiesOfObject(requiredProps, options);\n\n\t\t\tif (missingRequiredProps) {\n\t\t\t\treject(new Error(missingRequiredProps));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!options?.stage) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.warn(`No stage passed to BuddyOfferElement. Using default stage: ${defaultOptions.stage}`);\n\t\t\t}\n\n\t\t\t// If stage is passed, ensure it is one of the prescribed options.\n\t\t\tif (options?.stage && !STAGES.includes(options.stage)) {\n\t\t\t\tconst msg = `The stage prop must be one of: [${STAGES.join(' , ')}], but received \"${options.stage}.\"`;\n\t\t\t\treject(new Error(msg));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet script = findOfferScript(options?.stage);\n\n\t\t\tif (script) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.warn(EXISTING_SCRIPT_MESSAGE);\n\t\t\t\tif ((window as IWindow).Buddy?.createOffer) {\n\t\t\t\t\tresolve((window as IWindow).Buddy!);\n\t\t\t\t} else {\n\t\t\t\t\treject(new Error('Buddy Offer Element not available'));\n\t\t\t\t}\n\t\t\t} else if (!script) {\n\t\t\t\tscript = injectScript(options);\n\t\t\t}\n\n\t\t\tscript.addEventListener('load', () => {\n\t\t\t\tif ((window as IWindow).Buddy?.createOffer) {\n\t\t\t\t\tresolve((window as IWindow).Buddy!);\n\t\t\t\t} else {\n\t\t\t\t\treject(new Error('Buddy Offer Element not available'));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tscript.addEventListener('error', () => {\n\t\t\t\treject(new Error('Failed to load Buddy Offer Element'));\n\t\t\t});\n\t\t} catch (error) {\n\t\t\treject(error);\n\t\t}\n\t});\n\n\treturn scriptPromise;\n};\n\n// This is used to clear our reference to the script promise when the component is unmounted.\nexport const clearScriptPromise = () => {\n\tscriptPromise = null;\n};\n","import { useEffect, useState } from 'react';\nimport { findScript } from '../util';\nimport type { IWindow, ConfigObject } from '../interface';\n\nfunction useConfig(src: string) {\n\tconst [config, setConfig] = useState<ConfigObject | null>(null);\n\tconst [isLoading, setIsLoading] = useState(true);\n\n\tconst hasConfig = typeof window !== 'undefined';\n\n\tuseEffect(() => {\n\t\tlet script = findScript(src);\n\n\t\tif (!script) {\n\t\t\tscript = document.createElement('script');\n\t\t\tscript.src = src;\n\n\t\t\tscript.onload = () => {\n\t\t\t\t// Assuming the script sets a global variable named 'config'\n\t\t\t\tif (hasConfig) {\n\t\t\t\t\tsetConfig((window as IWindow).Buddy!.config!);\n\t\t\t\t\tsetIsLoading(false);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdocument.body.appendChild(script);\n\t\t} else {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('Config script is already loaded.');\n\t\t\tif (hasConfig) {\n\t\t\t\tsetConfig((window as IWindow).Buddy!.config!);\n\t\t\t\tsetIsLoading(false);\n\t\t\t}\n\t\t}\n\n\t\treturn () => {\n\t\t\tif (script) {\n\t\t\t\tdocument.body.removeChild(script);\n\t\t\t}\n\t\t};\n\t}, [src]);\n\n\treturn { config, isLoading };\n}\n\nexport default useConfig;\n","import { useEffect, useRef } from 'react';\n\nconst useUpdateEffect: typeof useEffect = (effect, deps) => {\n\tconst isFirstMount = useRef<boolean>(true);\n\t// need to return only in the else condition in case a cleanup func is passed in effect.\n\t// eslint-disable-next-line consistent-return\n\tuseEffect(() => {\n\t\tif (isFirstMount.current) {\n\t\t\tisFirstMount.current = false;\n\t\t} else {\n\t\t\treturn effect();\n\t\t}\n\t}, deps);\n};\n\nexport default useUpdateEffect;\n","import React, { useEffect } from 'react';\nimport { useUpdateEffect } from '../hooks';\nimport { loadScript, clearScriptPromise, updateOffer } from '../util';\nimport type { BuddyOfferElementProps } from '../interface';\n\nfunction BuddyOfferElement(options: BuddyOfferElementProps) {\n\tuseEffect(() => {\n\t\tconst getScript = async () => {\n\t\t\ttry {\n\t\t\t\tawait loadScript(options);\n\t\t\t} catch (error) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.error(error);\n\t\t\t}\n\t\t};\n\t\tgetScript();\n\t\treturn () => {\n\t\t\tclearScriptPromise();\n\t\t};\n\t}, []);\n\n\tuseUpdateEffect(() => {\n\t\tupdateOffer(options);\n\t}, [options]);\n\n\treturn (\n\t\t<div id=\"buddy_offer\" />\n\t);\n}\n\nexport default BuddyOfferElement;\n"],"names":["EXISTING_SCRIPT_MESSAGE","SCRIPTS","LOCAL","URL","DEVELOPMENT","TESTING","STAGING","PRODUCTION","STAGES","Object","keys","defaultOptions","stage","isEmptyOrNil","value","isNil","val","undefined","includes","isEmptyStr","str","trim","length","isEmptyObjOrArr","obj","Array","isArray","validatePropertiesOfObject","propsToCheck","emptyProps","filter","prop","displayMissingProps","reduce","prev","current","i","isLastEl","findScript","url","scripts","from","document","querySelectorAll","find","src","startsWith","findOfferScript","matchedScript","updateOffer","options","window","Buddy","error","console","createOffer","injectScript","finalOptions","_extends","script","createElement","onload","body","appendChild","scriptPromise","loadScript","Promise","resolve","reject","_window$Buddy","_window$Buddy2","warn","requiredProps","missingRequiredProps","Error","msg","join","_window$Buddy3","addEventListener","_window$Buddy4","clearScriptPromise","useConfig","config","setConfig","useState","isLoading","setIsLoading","hasConfig","useEffect","removeChild","useUpdateEffect","effect","deps","isFirstMount","useRef","BuddyOfferElement","getScript","React","id"],"mappings":"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"}
|
package/lib/interface/index.d.ts
CHANGED
|
@@ -52,8 +52,7 @@ interface CustomMessagePayload {
|
|
|
52
52
|
id: string;
|
|
53
53
|
data: DataObject;
|
|
54
54
|
}
|
|
55
|
-
type
|
|
56
|
-
type OnRemoveFromCart = (data: DataObject) => void;
|
|
55
|
+
type OfferSelectionHandler = (data: DataObject) => void;
|
|
57
56
|
type onCustomMessage = (payload: CustomMessagePayload) => void;
|
|
58
57
|
type ScrollToTopOverride = () => void;
|
|
59
58
|
type OnUserEvent = (event: EventObject) => void;
|
|
@@ -73,8 +72,16 @@ interface BuddyOfferElementProps {
|
|
|
73
72
|
stage?: Stages;
|
|
74
73
|
theme?: ThemeObject;
|
|
75
74
|
viewType?: ViewTypes;
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
/**
|
|
76
|
+
* @deprecated This property is deprecated and will be removed in future versions. Use onOptIn instead.
|
|
77
|
+
*/
|
|
78
|
+
onAddToCart?: OfferSelectionHandler;
|
|
79
|
+
/**
|
|
80
|
+
* @deprecated This property is deprecated and will be removed in future versions. Use onOptIn instead.
|
|
81
|
+
*/
|
|
82
|
+
onRemoveFromCart?: OfferSelectionHandler;
|
|
83
|
+
onOptIn?: OfferSelectionHandler;
|
|
84
|
+
onOptOut?: OfferSelectionHandler;
|
|
78
85
|
onCustomMessage?: onCustomMessage;
|
|
79
86
|
onUserEvent?: OnUserEvent;
|
|
80
87
|
overrideScrollToTop?: ScrollToTopOverride;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interface/index.ts"],"names":[],"mappings":"AAAA,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACxC,UAAU,WAAW;IACpB,WAAW,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IACpC,WAAW,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IACpC,MAAM,CAAC,EAAE,YAAY,CAAA;CACrB;AAED,UAAU,OAAQ,SAAQ,MAAM;IAC/B,KAAK,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,KAAK,MAAM,GAAG,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC;AAEnE,KAAK,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,YAAY,CAAC;AAC5D,UAAU,UAAU;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC7B;AAED,UAAU,WAAW;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,UAAU,cAAc;IACvB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,UAAU,WAAW;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,UAAU,YAAY;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED,UAAU,SAAS;IAClB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,WAAW;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;CAChB;AAED,UAAU,oBAAoB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;CACjB;AAED,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interface/index.ts"],"names":[],"mappings":"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"}
|
package/lib/util/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,OAAO,EAAU,MAAM,cAAc,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAW,MAAM,cAAc,CAAC;AAEzD,KAAK,OAAO,GAAG,MAAM,OAAO,OAAO,CAAC;AA0BpC,eAAO,MAAM,UAAU,QAAS,MAAM,kCAGrC,CAAC;AAEF,eAAO,MAAM,eAAe,WAAW,OAAO,kCAI7C,CAAC;AAEF,eAAO,MAAM,WAAW,YAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,OAAO,EAAU,MAAM,cAAc,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAW,MAAM,cAAc,CAAC;AAEzD,KAAK,OAAO,GAAG,MAAM,OAAO,OAAO,CAAC;AA0BpC,eAAO,MAAM,UAAU,QAAS,MAAM,kCAGrC,CAAC;AAEF,eAAO,MAAM,eAAe,WAAW,OAAO,kCAI7C,CAAC;AAEF,eAAO,MAAM,WAAW,YAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,SASvD,CAAC;AAwBF,eAAO,MAAM,UAAU,YAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gCA0EtD,CAAC;AAGF,eAAO,MAAM,kBAAkB,YAE9B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@buddy-technology/offer-component",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"author": "Buddy Technology",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.modern.mjs",
|
|
@@ -41,12 +41,14 @@
|
|
|
41
41
|
]
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@testing-library/dom": "^
|
|
45
|
-
"@testing-library/jest-dom": "^6.
|
|
46
|
-
"@testing-library/react": "^
|
|
47
|
-
"@testing-library/user-event": "^14.5.
|
|
44
|
+
"@testing-library/dom": "^10.4.0",
|
|
45
|
+
"@testing-library/jest-dom": "^6.4.8",
|
|
46
|
+
"@testing-library/react": "^16.0.0",
|
|
47
|
+
"@testing-library/user-event": "^14.5.2",
|
|
48
48
|
"@types/jest": "^29.5.10",
|
|
49
49
|
"eslint-config-custom": "*",
|
|
50
|
+
"jest": "^29.7.0",
|
|
51
|
+
"jest-environment-jsdom": "^29.7.0",
|
|
50
52
|
"microbundle": "^0.15.1",
|
|
51
53
|
"ts-jest": "^29.1.1",
|
|
52
54
|
"typescript": "^5.3.2"
|