@buddy-technology/offer-component 1.5.0 → 1.7.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 +38 -0
- package/README.md +113 -33
- package/dist/index.js +110 -65
- package/dist/index.js.map +1 -1
- package/dist/index.modern.mjs +79 -66
- package/dist/index.modern.mjs.map +1 -1
- package/lib/interface/index.d.ts +2 -0
- package/lib/interface/index.d.ts.map +1 -1
- package/lib/util/index.d.ts.map +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,41 @@
|
|
|
1
|
+
# [@buddy-technology/offer-component-v1.7.0](https://github.com/Buddy-Technology/ion-to-react/compare/@buddy-technology/offer-component-v1.6.0...@buddy-technology/offer-component-v1.7.0) (2026-02-03)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* simplify PR deploy yml; test both react versions locally via yarn test ([b014286](https://github.com/Buddy-Technology/ion-to-react/commit/b014286fda1884b3b0c677ead990aca8a8074ecf))
|
|
7
|
+
* update peerDependencies to include React 19; new tests for version switching; Update @testing-library/react to v16.1.0; 8. Fully backward compatible with React 16.8+, 17, and 18 ([411576b](https://github.com/Buddy-Technology/ion-to-react/commit/411576b7e229f70c91f1f0c6ed2dccbd5e96db21))
|
|
8
|
+
|
|
9
|
+
# [@buddy-technology/offer-component-v1.7.0](https://github.com/Buddy-Technology/ion-to-react/compare/@buddy-technology/offer-component-v1.6.0...@buddy-technology/offer-component-v1.7.0) (Unreleased)
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* Add React 19 support to peerDependencies
|
|
14
|
+
* Add multi-version testing infrastructure for React 18 and 19
|
|
15
|
+
* Update @testing-library/react to v16.1.0 for React 19 compatibility
|
|
16
|
+
|
|
17
|
+
### Notes
|
|
18
|
+
|
|
19
|
+
* Fully backward compatible with React 16.8+, 17, and 18
|
|
20
|
+
* No breaking changes for existing users
|
|
21
|
+
* CI now tests both React 18 and 19 in parallel
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# [@buddy-technology/offer-component-v1.6.0](https://github.com/Buddy-Technology/ion-to-react/compare/@buddy-technology/offer-component-v1.5.0...@buddy-technology/offer-component-v1.6.0) (2026-01-28)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### Bug Fixes
|
|
29
|
+
|
|
30
|
+
* bot callouts ([0075772](https://github.com/Buddy-Technology/ion-to-react/commit/00757729b761f6eb6371dcb9676f36ece5714971))
|
|
31
|
+
* eslint ts config ([15deb9e](https://github.com/Buddy-Technology/ion-to-react/commit/15deb9e4b15d89389dbf90a83fac1650f02bd67f))
|
|
32
|
+
* update interface ([d642cde](https://github.com/Buddy-Technology/ion-to-react/commit/d642cde171b6f6777aeeffad8e174ac36fdb5a79))
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
### Features
|
|
36
|
+
|
|
37
|
+
* update loader script to handle config scripts ([fcdb2e4](https://github.com/Buddy-Technology/ion-to-react/commit/fcdb2e4ea5aeeba5f4fefef4b4022116ace9c4ec))
|
|
38
|
+
|
|
1
39
|
# [@buddy-technology/offer-component-v1.5.0](https://github.com/Buddy-Technology/ion-to-react/compare/@buddy-technology/offer-component-v1.4.0...@buddy-technology/offer-component-v1.5.0) (2025-03-20)
|
|
2
40
|
|
|
3
41
|
|
package/README.md
CHANGED
|
@@ -2,8 +2,28 @@
|
|
|
2
2
|
---
|
|
3
3
|
React component for adding [Buddy's](https://buddy.insure) Insurance Gateway
|
|
4
4
|
|
|
5
|
+
## Table of Contents
|
|
6
|
+
- [Requirements](#requirements)
|
|
7
|
+
- [Installation](#installation)
|
|
8
|
+
- [Basic Usage](#basic-usage)
|
|
9
|
+
- [Props](#props)
|
|
10
|
+
- [Configuration Files](#configuration-files)
|
|
11
|
+
- [Version 2 configuration files (Recommended)](#version-2-configuration-files-recommended)
|
|
12
|
+
- [Version 1 configuration files](#version-1-configuration-files)
|
|
13
|
+
- [View Types](#view-types)
|
|
14
|
+
- [Checkout](#checkout)
|
|
15
|
+
- [For client-side only apps](#for-client-side-only-apps)
|
|
16
|
+
- [For full stack apps](#for-full-stack-apps)
|
|
17
|
+
- [Pre-filling Data](#pre-filling-data)
|
|
18
|
+
- [Styling](#styling)
|
|
19
|
+
- [Color Palettes](#color-palettes)
|
|
20
|
+
- [Overrides](#overrides)
|
|
21
|
+
- [Classes and Components](#classes-and-components)
|
|
22
|
+
- [Capturing Data](#capturing-data)
|
|
23
|
+
|
|
5
24
|
## Requirements
|
|
6
|
-
|
|
25
|
+
- React 16.8.0+
|
|
26
|
+
- Contact [Buddy](mailto:partners@buddy.insure) to obtain a `partnerID` and compatible `ions` for your specific use case.
|
|
7
27
|
|
|
8
28
|
---
|
|
9
29
|
## Installation
|
|
@@ -29,18 +49,95 @@ function App() {
|
|
|
29
49
|
}
|
|
30
50
|
export default App;
|
|
31
51
|
```
|
|
52
|
+
---
|
|
53
|
+
## Props
|
|
54
|
+
|
|
55
|
+
| Option Name | Type | Default | Description
|
|
56
|
+
| --- | --- | --- | --- |
|
|
57
|
+
| *partnerID | string | | The partnerID assigned to you from Buddy |
|
|
58
|
+
| *ion | string | | The ion ID for the product to be presented |
|
|
59
|
+
| stage | enum | "STAGING" | One of: `"STAGING"`, `"PRODUCTION"`. Set to `"STAGING"` (default) for testing and development. |
|
|
60
|
+
| configSrc | string | | The URL for pairing a configuration file with the offer element. |
|
|
61
|
+
| viewType | enum | `"paginated"` | Sets how the offer element is displayed. One of: `"paginated"`, `"single-form"`, `"offer-only"`. _See [View types](#view-types) for details._|
|
|
62
|
+
| data | object | | Customer or policy data to pre-load the offer with. Refer to specific ION documentation for the data structure. |
|
|
63
|
+
| theme | object | |The [theme](#styling) object for passing in styles and color palettes |
|
|
64
|
+
| onUserEvent | function | | A callback for tracking user behavioral data. See [Capturing Data](#capturing-data) for details. |
|
|
65
|
+
| includeCheckout | boolean | `true` | Toggles whether to render the secure checkout. |
|
|
66
|
+
| 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.|
|
|
67
|
+
| onOptOut | function | | The callback fired when a user opts out of the offer. |
|
|
68
|
+
|
|
69
|
+
_*required_
|
|
70
|
+
|
|
71
|
+
## Configuration Files
|
|
72
|
+
|
|
73
|
+
### Version 2 configuration files (Recommended)
|
|
74
|
+
For version 2 configuration files (that utilize `Buddy.embedOptions`), simply pass in the URL of the file to the `configSrc` prop. Properties defined in a configuration file will be merged with any props defined in this implementation.
|
|
75
|
+
|
|
76
|
+
**EXAMPLE**
|
|
77
|
+
```javascript
|
|
78
|
+
// config.js
|
|
79
|
+
|
|
80
|
+
const configTheme = {
|
|
81
|
+
baseTheme: 'base',
|
|
82
|
+
palette: 'base',
|
|
83
|
+
overrides: {
|
|
84
|
+
styles: {
|
|
85
|
+
h1: { color: 'blue' }
|
|
86
|
+
h2: { color: 'blue' }
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
window.Buddy.embedOptions.theme = configTheme // attach our theme to embedOptions.
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
```javascript
|
|
95
|
+
// React implementation
|
|
96
|
+
|
|
97
|
+
import React from 'react';
|
|
98
|
+
import BuddyOfferElement from '@buddy-technology/offer-component';
|
|
99
|
+
|
|
100
|
+
function App() {
|
|
101
|
+
const overrideConfigTheme = {
|
|
102
|
+
overrides: {
|
|
103
|
+
styles: {
|
|
104
|
+
h2: { color: 'red' }
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
return (
|
|
110
|
+
<div id="app">
|
|
111
|
+
<h1>My App</h1>
|
|
112
|
+
<BuddyOfferElement
|
|
113
|
+
ion="MY_ION"
|
|
114
|
+
partnerID="my-partner-id"
|
|
115
|
+
stage="staging"
|
|
116
|
+
configSrc="https://js.buddy.insure/config.js" // URL of our config file
|
|
117
|
+
theme={overrideConfigTheme} // deep merges our theme, h2's will now be red, but h1's are still blue.
|
|
118
|
+
/>
|
|
119
|
+
</div>
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
export default App;
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
### Version 1 configuration files
|
|
127
|
+
NOTE: This feature is useful pairing configuration files utilizing the `config` variable pattern. For information on how to implement newer configs see: [Version 2 Configuration Files](#version-2-configuration-files-recommended).
|
|
128
|
+
|
|
129
|
+
For configuration files utilizing the `config` variable pattern, we need to first pre-load our script using the `useConfig` hook, then pass our options to the implementation.
|
|
32
130
|
|
|
33
|
-
## Combined with useConfig hook
|
|
34
131
|
```javascript
|
|
35
132
|
import React from 'react';
|
|
36
133
|
import BuddyOfferElement, { useConfig } from '@buddy-technology/offer-component';
|
|
37
134
|
|
|
38
135
|
function App() {
|
|
39
|
-
|
|
136
|
+
const { config, isLoading } = useConfig('https://config-domain.com/config.js');
|
|
40
137
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
138
|
+
if (isLoading || !config) {
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
44
141
|
|
|
45
142
|
// grab relevant properties from config
|
|
46
143
|
const theme = config.themeBase;
|
|
@@ -63,23 +160,6 @@ function App() {
|
|
|
63
160
|
}
|
|
64
161
|
export default App;
|
|
65
162
|
```
|
|
66
|
-
---
|
|
67
|
-
## Props
|
|
68
|
-
|
|
69
|
-
| Option Name | Type | Default | Description
|
|
70
|
-
| --- | --- | --- | --- |
|
|
71
|
-
| *partnerID | string | | The partnerID assigned to you from Buddy |
|
|
72
|
-
| *ion | string | | The ion ID for the product to be presented |
|
|
73
|
-
| stage | enum | "STAGING" | One of: `"STAGING"`, `"PRODUCTION"`. Set to `"STAGING"` (default) for testing and development. |
|
|
74
|
-
| viewType | enum | `"paginated"` | Sets how the offer element is displayed. One of: `"paginated"`, `"single-form"`, `"offer-only"`. _See [View types](#view-types) for details._|
|
|
75
|
-
| data | object | | Customer or policy data to pre-load the offer with. Refer to specific ION documentation for the data structure. |
|
|
76
|
-
| theme | object | |The [theme](#styling) object for passing in styles and color palettes |
|
|
77
|
-
| onUserEvent | function | | A callback for tracking user behavioral data. See [Capturing Data](#capturing-data) for details. |
|
|
78
|
-
| includeCheckout | boolean | `true` | Toggles whether to render the secure checkout. |
|
|
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
|
-
_*required_
|
|
82
|
-
|
|
83
163
|
---
|
|
84
164
|
## View Types
|
|
85
165
|
|
|
@@ -292,15 +372,15 @@ __Base__:
|
|
|
292
372
|
|
|
293
373
|
__Buddy__:
|
|
294
374
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
375
|
+
primary: '#DC5648',
|
|
376
|
+
secondary: '#0A242D99',
|
|
377
|
+
tertiary: '#46460E33',
|
|
378
|
+
negative: '#D62719',
|
|
379
|
+
positive: '#A3D9B1',
|
|
380
|
+
textPrimary: '#0A242D',
|
|
381
|
+
textSecondary: '#0A242D99',
|
|
382
|
+
backgroundPrimary: 'linear-gradient(#D6F1F2, #F8F6D2)',
|
|
383
|
+
backgroundSecondary: '#FBF9EF',
|
|
304
384
|
|
|
305
385
|
### Overrides
|
|
306
386
|
|
|
@@ -471,7 +551,7 @@ _data returned_
|
|
|
471
551
|
| `error` | string | if unsuccessful, a message explaining the type of error encountered |
|
|
472
552
|
| `timestamp` | number | the timestamp when the event occurred in milliseconds |
|
|
473
553
|
|
|
474
|
-
|
|
554
|
+
|
|
475
555
|
#### `onFocus`
|
|
476
556
|
|
|
477
557
|
Triggers when an input is focused
|
package/dist/index.js
CHANGED
|
@@ -25,6 +25,17 @@ const SCRIPTS = {
|
|
|
25
25
|
};
|
|
26
26
|
const STAGES = Object.keys(SCRIPTS);
|
|
27
27
|
|
|
28
|
+
function _catch$1(body, recover) {
|
|
29
|
+
try {
|
|
30
|
+
var result = body();
|
|
31
|
+
} catch (e) {
|
|
32
|
+
return recover(e);
|
|
33
|
+
}
|
|
34
|
+
if (result && result.then) {
|
|
35
|
+
return result.then(void 0, recover);
|
|
36
|
+
}
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
28
39
|
const defaultOptions = {
|
|
29
40
|
stage: 'STAGING'
|
|
30
41
|
};
|
|
@@ -84,80 +95,114 @@ const createOffer = options => {
|
|
|
84
95
|
}
|
|
85
96
|
}
|
|
86
97
|
};
|
|
87
|
-
const
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
script.src = `${SCRIPTS[finalOptions.stage].URL}`;
|
|
94
|
-
script.onload = () => createOffer(finalOptions);
|
|
95
|
-
document.body.appendChild(script);
|
|
96
|
-
return script;
|
|
97
|
-
};
|
|
98
|
-
let scriptPromise = null;
|
|
99
|
-
const loadScript = options => {
|
|
100
|
-
// Ensure that we only attempt to script once
|
|
101
|
-
if (scriptPromise !== null) {
|
|
102
|
-
return scriptPromise;
|
|
98
|
+
const asyncLoadScript = src => new Promise((resolve, reject) => {
|
|
99
|
+
const existingScript = findScript(src);
|
|
100
|
+
if (existingScript) {
|
|
101
|
+
// eslint-disable-next-line no-console
|
|
102
|
+
console.warn(`Script with src [${src}] is already loaded!`);
|
|
103
|
+
resolve(existingScript);
|
|
103
104
|
}
|
|
104
|
-
|
|
105
|
+
const script = document.createElement('script');
|
|
106
|
+
script.src = src;
|
|
107
|
+
script.onload = resolve;
|
|
108
|
+
script.onerror = () => {
|
|
109
|
+
// bad script, so let's remove it in case folks want to retry.
|
|
110
|
+
document.head.removeChild(script);
|
|
111
|
+
reject(new Error(`Failed to load script with src: [${src}].`));
|
|
112
|
+
};
|
|
113
|
+
document.head.appendChild(script);
|
|
114
|
+
});
|
|
115
|
+
const createScriptPromise = function (options) {
|
|
116
|
+
try {
|
|
117
|
+
let _exit;
|
|
105
118
|
if (typeof window === 'undefined') {
|
|
106
119
|
// Resolve to null when imported server side. This makes the module
|
|
107
120
|
// safe to import in an isomorphic code base.
|
|
108
|
-
resolve(null);
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
if (window.Buddy?.createOffer) {
|
|
112
|
-
// eslint-disable-next-line no-console
|
|
113
|
-
console.warn(EXISTING_SCRIPT_MESSAGE);
|
|
114
|
-
window.Buddy?.createOffer(options);
|
|
115
|
-
resolve(window.Buddy);
|
|
116
|
-
return;
|
|
121
|
+
return Promise.resolve(null);
|
|
117
122
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
let script = findOfferScript(options?.stage);
|
|
136
|
-
if (script) {
|
|
137
|
-
// eslint-disable-next-line no-console
|
|
138
|
-
console.warn(EXISTING_SCRIPT_MESSAGE);
|
|
139
|
-
if (window.Buddy?.createOffer) {
|
|
140
|
-
resolve(window.Buddy);
|
|
141
|
-
} else {
|
|
142
|
-
reject(new Error('Buddy Offer Element not available'));
|
|
123
|
+
const finalOptions = {
|
|
124
|
+
...defaultOptions,
|
|
125
|
+
...options
|
|
126
|
+
};
|
|
127
|
+
return Promise.resolve(_catch$1(function () {
|
|
128
|
+
function _temp4(_result) {
|
|
129
|
+
if (_exit) return _result;
|
|
130
|
+
const requiredProps = ['ion', 'partnerID'];
|
|
131
|
+
const missingRequiredProps = validatePropertiesOfObject(requiredProps, options);
|
|
132
|
+
if (missingRequiredProps) {
|
|
133
|
+
throw new Error(missingRequiredProps);
|
|
134
|
+
}
|
|
135
|
+
if (!options?.stage) {
|
|
136
|
+
// eslint-disable-next-line no-console
|
|
137
|
+
console.warn(`No stage passed to BuddyOfferElement. Using default stage: ${defaultOptions.stage}`);
|
|
143
138
|
}
|
|
144
|
-
|
|
145
|
-
script
|
|
139
|
+
// If stage is passed, ensure it is one of the prescribed options.
|
|
140
|
+
// No existing loader script, so time to inject ours.
|
|
141
|
+
// if we have a config src, let's load that up too.
|
|
142
|
+
// Error out if any scripts fail to load. If someone meant to include a config, we treat that as a fatal issue.
|
|
143
|
+
if (options?.stage && !STAGES.includes(options.stage)) {
|
|
144
|
+
const msg = `The stage prop must be one of: [${STAGES.join(' , ')}], but received "${options.stage}."`;
|
|
145
|
+
throw new Error(msg);
|
|
146
|
+
}
|
|
147
|
+
const script = findOfferScript(options?.stage);
|
|
148
|
+
if (script) {
|
|
149
|
+
// eslint-disable-next-line no-console
|
|
150
|
+
console.warn(EXISTING_SCRIPT_MESSAGE);
|
|
151
|
+
if (window.Buddy?.createOffer) {
|
|
152
|
+
// createOffer will prevent any duplicate frames from mounting.
|
|
153
|
+
createOffer(finalOptions);
|
|
154
|
+
return window.Buddy;
|
|
155
|
+
}
|
|
156
|
+
// if we have a script loaded, but Buddy's not in the window, throw.
|
|
157
|
+
throw new Error('Buddy Offer Element not available');
|
|
158
|
+
}
|
|
159
|
+
const loaderSrc = `${SCRIPTS[finalOptions.stage].URL}`;
|
|
160
|
+
const scriptPromises = [asyncLoadScript(loaderSrc)];
|
|
161
|
+
if (finalOptions.configSrc) {
|
|
162
|
+
scriptPromises.push(asyncLoadScript(finalOptions.configSrc));
|
|
163
|
+
}
|
|
164
|
+
return Promise.resolve(Promise.all(scriptPromises)).then(function () {
|
|
165
|
+
createOffer(finalOptions);
|
|
166
|
+
return window.Buddy;
|
|
167
|
+
});
|
|
146
168
|
}
|
|
147
|
-
|
|
169
|
+
const _temp3 = function () {
|
|
148
170
|
if (window.Buddy?.createOffer) {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
171
|
+
function _temp2() {
|
|
172
|
+
// Instantiate the offer. createOffer will bail if frame is already mounted.
|
|
173
|
+
createOffer(finalOptions);
|
|
174
|
+
const _window$Buddy = window.Buddy;
|
|
175
|
+
_exit = 1;
|
|
176
|
+
return _window$Buddy;
|
|
177
|
+
}
|
|
178
|
+
// eslint-disable-next-line no-console
|
|
179
|
+
console.warn(EXISTING_SCRIPT_MESSAGE);
|
|
180
|
+
// Any config scripts might not actually be loaded though, so try and load.
|
|
181
|
+
const _temp = function () {
|
|
182
|
+
if (finalOptions.configSrc) {
|
|
183
|
+
// This helper function already checks if the script is loaded or not.
|
|
184
|
+
return Promise.resolve(asyncLoadScript(finalOptions.configSrc)).then(function () {});
|
|
185
|
+
}
|
|
186
|
+
}();
|
|
187
|
+
return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
|
|
152
188
|
}
|
|
153
|
-
});
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
189
|
+
}();
|
|
190
|
+
// if our createOffer method is available, then we're already instantiated.
|
|
191
|
+
return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
|
|
192
|
+
}, function (error) {
|
|
193
|
+
return Promise.reject(error);
|
|
194
|
+
}));
|
|
195
|
+
} catch (e) {
|
|
196
|
+
return Promise.reject(e);
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
let scriptPromise = null;
|
|
200
|
+
const loadScript = options => {
|
|
201
|
+
// Ensure that we only attempt to script once
|
|
202
|
+
if (scriptPromise !== null) {
|
|
203
|
+
return scriptPromise;
|
|
204
|
+
}
|
|
205
|
+
scriptPromise = createScriptPromise(options);
|
|
161
206
|
return scriptPromise;
|
|
162
207
|
};
|
|
163
208
|
// This is used to clear our reference to the script promise when the component is unmounted.
|
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","_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":"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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, BuddyOfferElementProps } from '../interface';\n\ntype IStages = keyof typeof SCRIPTS;\n\nconst defaultOptions: Partial<BuddyOfferElementProps> = {\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 asyncLoadScript = (src: string) => new Promise((resolve, reject) => {\n\tconst existingScript = findScript(src);\n\n\tif (existingScript) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.warn(`Script with src [${src}] is already loaded!`);\n\t\tresolve(existingScript);\n\t}\n\n\tconst script = document.createElement('script');\n\tscript.src = src;\n\tscript.onload = resolve;\n\tscript.onerror = () => {\n\t\t// bad script, so let's remove it in case folks want to retry.\n\t\tdocument.head.removeChild(script);\n\t\treject(new Error(`Failed to load script with src: [${src}].`));\n\t};\n\tdocument.head.appendChild(script);\n});\n\nconst createScriptPromise = async (options: Record<string, any>) => {\n\tif (typeof window === 'undefined') {\n\t\t// Resolve to null when imported server side. This makes the module\n\t\t// safe to import in an isomorphic code base.\n\t\treturn null;\n\t}\n\n\tconst finalOptions = { ...defaultOptions, ...options };\n\n\ttry {\n\t// if our createOffer method is available, then we're already instantiated.\n\t\tif ((window as IWindow).Buddy?.createOffer) {\n\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(EXISTING_SCRIPT_MESSAGE);\n\n\t\t\t// Any config scripts might not actually be loaded though, so try and load.\n\t\t\tif (finalOptions.configSrc) {\n\t\t\t\t// This helper function already checks if the script is loaded or not.\n\t\t\t\tawait asyncLoadScript(finalOptions.configSrc);\n\t\t\t}\n\t\t\t// Instantiate the offer. createOffer will bail if frame is already mounted.\n\t\t\tcreateOffer(finalOptions);\n\t\t\treturn (window as IWindow).Buddy!;\n\t\t}\n\n\t\tconst requiredProps = ['ion', 'partnerID'];\n\t\tconst missingRequiredProps = validatePropertiesOfObject(requiredProps, options);\n\n\t\tif (missingRequiredProps) {\n\t\t\tthrow new Error(missingRequiredProps);\n\t\t}\n\n\t\tif (!options?.stage) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(`No stage passed to BuddyOfferElement. Using default stage: ${defaultOptions.stage}`);\n\t\t}\n\n\t\t// If stage is passed, ensure it is one of the prescribed options.\n\t\tif (options?.stage && !STAGES.includes(options.stage)) {\n\t\t\tconst msg = `The stage prop must be one of: [${STAGES.join(' , ')}], but received \"${options.stage}.\"`;\n\t\t\tthrow new Error(msg);\n\t\t}\n\n\t\tconst script = findOfferScript(options?.stage);\n\n\t\tif (script) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(EXISTING_SCRIPT_MESSAGE);\n\t\t\tif ((window as IWindow).Buddy?.createOffer) {\n\t\t\t\t// createOffer will prevent any duplicate frames from mounting.\n\t\t\t\tcreateOffer(finalOptions);\n\t\t\t\treturn (window as IWindow).Buddy!;\n\t\t\t}\n\t\t\t// if we have a script loaded, but Buddy's not in the window, throw.\n\t\t\tthrow new Error('Buddy Offer Element not available');\n\t\t}\n\n\t\t// No existing loader script, so time to inject ours.\n\t\tconst loaderSrc = `${SCRIPTS[finalOptions.stage!].URL}`;\n\n\t\tconst scriptPromises = [asyncLoadScript(loaderSrc)];\n\n\t\t// if we have a config src, let's load that up too.\n\t\tif (finalOptions.configSrc) {\n\t\t\tscriptPromises.push(asyncLoadScript(finalOptions.configSrc));\n\t\t}\n\n\t\t// Error out if any scripts fail to load. If someone meant to include a config, we treat that as a fatal issue.\n\t\tawait Promise.all(scriptPromises);\n\t\tcreateOffer(finalOptions);\n\n\t\treturn (window as IWindow).Buddy!;\n\t} catch (error) {\n\t\treturn Promise.reject(error);\n\t}\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 = createScriptPromise(options);\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","asyncLoadScript","Promise","resolve","reject","existingScript","warn","script","createElement","onload","onerror","head","removeChild","Error","appendChild","createScriptPromise","_exit","finalOptions","_catch","_temp4","_result","requiredProps","missingRequiredProps","msg","join","loaderSrc","scriptPromises","configSrc","push","all","then","_temp3","_temp2","_window$Buddy","_temp","e","scriptPromise","loadScript","clearScriptPromise","useConfig","config","setConfig","useState","isLoading","setIsLoading","hasConfig","useEffect","body","useUpdateEffect","effect","deps","isFirstMount","useRef","BuddyOfferElement","getScript","React","id"],"mappings":"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"}
|
package/dist/index.modern.mjs
CHANGED
|
@@ -84,81 +84,94 @@ const createOffer = options => {
|
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
};
|
|
87
|
-
const
|
|
88
|
-
const
|
|
87
|
+
const asyncLoadScript = src => new Promise((resolve, reject) => {
|
|
88
|
+
const existingScript = findScript(src);
|
|
89
|
+
if (existingScript) {
|
|
90
|
+
// eslint-disable-next-line no-console
|
|
91
|
+
console.warn(`Script with src [${src}] is already loaded!`);
|
|
92
|
+
resolve(existingScript);
|
|
93
|
+
}
|
|
89
94
|
const script = document.createElement('script');
|
|
90
|
-
script.src =
|
|
91
|
-
script.onload =
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
95
|
+
script.src = src;
|
|
96
|
+
script.onload = resolve;
|
|
97
|
+
script.onerror = () => {
|
|
98
|
+
// bad script, so let's remove it in case folks want to retry.
|
|
99
|
+
document.head.removeChild(script);
|
|
100
|
+
reject(new Error(`Failed to load script with src: [${src}].`));
|
|
101
|
+
};
|
|
102
|
+
document.head.appendChild(script);
|
|
103
|
+
});
|
|
104
|
+
const createScriptPromise = async options => {
|
|
105
|
+
if (typeof window === 'undefined') {
|
|
106
|
+
// Resolve to null when imported server side. This makes the module
|
|
107
|
+
// safe to import in an isomorphic code base.
|
|
108
|
+
return null;
|
|
100
109
|
}
|
|
101
|
-
|
|
110
|
+
const finalOptions = _extends({}, defaultOptions, options);
|
|
111
|
+
try {
|
|
102
112
|
var _window$Buddy;
|
|
103
|
-
if
|
|
104
|
-
// Resolve to null when imported server side. This makes the module
|
|
105
|
-
// safe to import in an isomorphic code base.
|
|
106
|
-
resolve(null);
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
113
|
+
// if our createOffer method is available, then we're already instantiated.
|
|
109
114
|
if ((_window$Buddy = window.Buddy) != null && _window$Buddy.createOffer) {
|
|
110
|
-
var _window$Buddy2;
|
|
111
115
|
// eslint-disable-next-line no-console
|
|
112
116
|
console.warn(EXISTING_SCRIPT_MESSAGE);
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
try {
|
|
118
|
-
const requiredProps = ['ion', 'partnerID'];
|
|
119
|
-
const missingRequiredProps = validatePropertiesOfObject(requiredProps, options);
|
|
120
|
-
if (missingRequiredProps) {
|
|
121
|
-
reject(new Error(missingRequiredProps));
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
if (!(options != null && options.stage)) {
|
|
125
|
-
// eslint-disable-next-line no-console
|
|
126
|
-
console.warn(`No stage passed to BuddyOfferElement. Using default stage: ${defaultOptions.stage}`);
|
|
127
|
-
}
|
|
128
|
-
// If stage is passed, ensure it is one of the prescribed options.
|
|
129
|
-
if (options != null && options.stage && !STAGES.includes(options.stage)) {
|
|
130
|
-
const msg = `The stage prop must be one of: [${STAGES.join(' , ')}], but received "${options.stage}."`;
|
|
131
|
-
reject(new Error(msg));
|
|
132
|
-
return;
|
|
117
|
+
// Any config scripts might not actually be loaded though, so try and load.
|
|
118
|
+
if (finalOptions.configSrc) {
|
|
119
|
+
// This helper function already checks if the script is loaded or not.
|
|
120
|
+
await asyncLoadScript(finalOptions.configSrc);
|
|
133
121
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
122
|
+
// Instantiate the offer. createOffer will bail if frame is already mounted.
|
|
123
|
+
createOffer(finalOptions);
|
|
124
|
+
return window.Buddy;
|
|
125
|
+
}
|
|
126
|
+
const requiredProps = ['ion', 'partnerID'];
|
|
127
|
+
const missingRequiredProps = validatePropertiesOfObject(requiredProps, options);
|
|
128
|
+
if (missingRequiredProps) {
|
|
129
|
+
throw new Error(missingRequiredProps);
|
|
130
|
+
}
|
|
131
|
+
if (!(options != null && options.stage)) {
|
|
132
|
+
// eslint-disable-next-line no-console
|
|
133
|
+
console.warn(`No stage passed to BuddyOfferElement. Using default stage: ${defaultOptions.stage}`);
|
|
134
|
+
}
|
|
135
|
+
// If stage is passed, ensure it is one of the prescribed options.
|
|
136
|
+
if (options != null && options.stage && !STAGES.includes(options.stage)) {
|
|
137
|
+
const msg = `The stage prop must be one of: [${STAGES.join(' , ')}], but received "${options.stage}."`;
|
|
138
|
+
throw new Error(msg);
|
|
139
|
+
}
|
|
140
|
+
const script = findOfferScript(options == null ? void 0 : options.stage);
|
|
141
|
+
if (script) {
|
|
142
|
+
var _window$Buddy2;
|
|
143
|
+
// eslint-disable-next-line no-console
|
|
144
|
+
console.warn(EXISTING_SCRIPT_MESSAGE);
|
|
145
|
+
if ((_window$Buddy2 = window.Buddy) != null && _window$Buddy2.createOffer) {
|
|
146
|
+
// createOffer will prevent any duplicate frames from mounting.
|
|
147
|
+
createOffer(finalOptions);
|
|
148
|
+
return window.Buddy;
|
|
146
149
|
}
|
|
147
|
-
script
|
|
148
|
-
|
|
149
|
-
if ((_window$Buddy4 = window.Buddy) != null && _window$Buddy4.createOffer) {
|
|
150
|
-
resolve(window.Buddy);
|
|
151
|
-
} else {
|
|
152
|
-
reject(new Error('Buddy Offer Element not available'));
|
|
153
|
-
}
|
|
154
|
-
});
|
|
155
|
-
script.addEventListener('error', () => {
|
|
156
|
-
reject(new Error('Failed to load Buddy Offer Element'));
|
|
157
|
-
});
|
|
158
|
-
} catch (error) {
|
|
159
|
-
reject(error);
|
|
150
|
+
// if we have a script loaded, but Buddy's not in the window, throw.
|
|
151
|
+
throw new Error('Buddy Offer Element not available');
|
|
160
152
|
}
|
|
161
|
-
|
|
153
|
+
// No existing loader script, so time to inject ours.
|
|
154
|
+
const loaderSrc = `${SCRIPTS[finalOptions.stage].URL}`;
|
|
155
|
+
const scriptPromises = [asyncLoadScript(loaderSrc)];
|
|
156
|
+
// if we have a config src, let's load that up too.
|
|
157
|
+
if (finalOptions.configSrc) {
|
|
158
|
+
scriptPromises.push(asyncLoadScript(finalOptions.configSrc));
|
|
159
|
+
}
|
|
160
|
+
// Error out if any scripts fail to load. If someone meant to include a config, we treat that as a fatal issue.
|
|
161
|
+
await Promise.all(scriptPromises);
|
|
162
|
+
createOffer(finalOptions);
|
|
163
|
+
return window.Buddy;
|
|
164
|
+
} catch (error) {
|
|
165
|
+
return Promise.reject(error);
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
let scriptPromise = null;
|
|
169
|
+
const loadScript = options => {
|
|
170
|
+
// Ensure that we only attempt to script once
|
|
171
|
+
if (scriptPromise !== null) {
|
|
172
|
+
return scriptPromise;
|
|
173
|
+
}
|
|
174
|
+
scriptPromise = createScriptPromise(options);
|
|
162
175
|
return scriptPromise;
|
|
163
176
|
};
|
|
164
177
|
// This is used to clear our reference to the script promise when the component is unmounted.
|
|
@@ -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","_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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"}
|
|
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, BuddyOfferElementProps } from '../interface';\n\ntype IStages = keyof typeof SCRIPTS;\n\nconst defaultOptions: Partial<BuddyOfferElementProps> = {\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 asyncLoadScript = (src: string) => new Promise((resolve, reject) => {\n\tconst existingScript = findScript(src);\n\n\tif (existingScript) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.warn(`Script with src [${src}] is already loaded!`);\n\t\tresolve(existingScript);\n\t}\n\n\tconst script = document.createElement('script');\n\tscript.src = src;\n\tscript.onload = resolve;\n\tscript.onerror = () => {\n\t\t// bad script, so let's remove it in case folks want to retry.\n\t\tdocument.head.removeChild(script);\n\t\treject(new Error(`Failed to load script with src: [${src}].`));\n\t};\n\tdocument.head.appendChild(script);\n});\n\nconst createScriptPromise = async (options: Record<string, any>) => {\n\tif (typeof window === 'undefined') {\n\t\t// Resolve to null when imported server side. This makes the module\n\t\t// safe to import in an isomorphic code base.\n\t\treturn null;\n\t}\n\n\tconst finalOptions = { ...defaultOptions, ...options };\n\n\ttry {\n\t// if our createOffer method is available, then we're already instantiated.\n\t\tif ((window as IWindow).Buddy?.createOffer) {\n\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(EXISTING_SCRIPT_MESSAGE);\n\n\t\t\t// Any config scripts might not actually be loaded though, so try and load.\n\t\t\tif (finalOptions.configSrc) {\n\t\t\t\t// This helper function already checks if the script is loaded or not.\n\t\t\t\tawait asyncLoadScript(finalOptions.configSrc);\n\t\t\t}\n\t\t\t// Instantiate the offer. createOffer will bail if frame is already mounted.\n\t\t\tcreateOffer(finalOptions);\n\t\t\treturn (window as IWindow).Buddy!;\n\t\t}\n\n\t\tconst requiredProps = ['ion', 'partnerID'];\n\t\tconst missingRequiredProps = validatePropertiesOfObject(requiredProps, options);\n\n\t\tif (missingRequiredProps) {\n\t\t\tthrow new Error(missingRequiredProps);\n\t\t}\n\n\t\tif (!options?.stage) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(`No stage passed to BuddyOfferElement. Using default stage: ${defaultOptions.stage}`);\n\t\t}\n\n\t\t// If stage is passed, ensure it is one of the prescribed options.\n\t\tif (options?.stage && !STAGES.includes(options.stage)) {\n\t\t\tconst msg = `The stage prop must be one of: [${STAGES.join(' , ')}], but received \"${options.stage}.\"`;\n\t\t\tthrow new Error(msg);\n\t\t}\n\n\t\tconst script = findOfferScript(options?.stage);\n\n\t\tif (script) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(EXISTING_SCRIPT_MESSAGE);\n\t\t\tif ((window as IWindow).Buddy?.createOffer) {\n\t\t\t\t// createOffer will prevent any duplicate frames from mounting.\n\t\t\t\tcreateOffer(finalOptions);\n\t\t\t\treturn (window as IWindow).Buddy!;\n\t\t\t}\n\t\t\t// if we have a script loaded, but Buddy's not in the window, throw.\n\t\t\tthrow new Error('Buddy Offer Element not available');\n\t\t}\n\n\t\t// No existing loader script, so time to inject ours.\n\t\tconst loaderSrc = `${SCRIPTS[finalOptions.stage!].URL}`;\n\n\t\tconst scriptPromises = [asyncLoadScript(loaderSrc)];\n\n\t\t// if we have a config src, let's load that up too.\n\t\tif (finalOptions.configSrc) {\n\t\t\tscriptPromises.push(asyncLoadScript(finalOptions.configSrc));\n\t\t}\n\n\t\t// Error out if any scripts fail to load. If someone meant to include a config, we treat that as a fatal issue.\n\t\tawait Promise.all(scriptPromises);\n\t\tcreateOffer(finalOptions);\n\n\t\treturn (window as IWindow).Buddy!;\n\t} catch (error) {\n\t\treturn Promise.reject(error);\n\t}\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 = createScriptPromise(options);\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","asyncLoadScript","Promise","resolve","reject","existingScript","warn","script","createElement","onload","onerror","head","removeChild","Error","appendChild","createScriptPromise","finalOptions","_extends","_window$Buddy","configSrc","requiredProps","missingRequiredProps","msg","join","_window$Buddy2","loaderSrc","scriptPromises","push","all","scriptPromise","loadScript","clearScriptPromise","useConfig","config","setConfig","useState","isLoading","setIsLoading","hasConfig","useEffect","body","useUpdateEffect","effect","deps","isFirstMount","useRef","BuddyOfferElement","getScript","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,GAAoC;AACvDC,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,CAAC,CAAC;AAAEC,IAAAA,GAAAA;AAAK,GAAA,KAAKA,GAAG,CAACC,UAAU,CAACP,GAAG,CAAC,CAAC,CAAA;AACtD,CAAC,CAAA;AAEM,MAAMQ,eAAe,GAAGA,CAACnC,QAAiBD,cAAc,CAACC,KAAM,KAAI;EACzE,MAAM;AAAET,IAAAA,GAAAA;AAAK,GAAA,GAAGF,OAAO,CAACW,KAAK,CAAC,CAAA;AAC9B,EAAA,MAAMoC,aAAa,GAAGV,UAAU,CAACnC,GAAG,CAAC,CAAA;AACrC,EAAA,OAAO6C,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,eAAe,GAAIX,GAAW,IAAK,IAAIY,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAI;AACxE,EAAA,MAAMC,cAAc,GAAGtB,UAAU,CAACO,GAAG,CAAC,CAAA;AAEtC,EAAA,IAAIe,cAAc,EAAE;AACnB;AACAN,IAAAA,OAAO,CAACO,IAAI,CAAC,CAAoBhB,iBAAAA,EAAAA,GAAG,sBAAsB,CAAC,CAAA;IAC3Da,OAAO,CAACE,cAAc,CAAC,CAAA;AACxB,GAAA;AAEA,EAAA,MAAME,MAAM,GAAGpB,QAAQ,CAACqB,aAAa,CAAC,QAAQ,CAAC,CAAA;EAC/CD,MAAM,CAACjB,GAAG,GAAGA,GAAG,CAAA;EAChBiB,MAAM,CAACE,MAAM,GAAGN,OAAO,CAAA;EACvBI,MAAM,CAACG,OAAO,GAAG,MAAK;AACrB;AACAvB,IAAAA,QAAQ,CAACwB,IAAI,CAACC,WAAW,CAACL,MAAM,CAAC,CAAA;IACjCH,MAAM,CAAC,IAAIS,KAAK,CAAC,oCAAoCvB,GAAG,CAAA,EAAA,CAAI,CAAC,CAAC,CAAA;GAC9D,CAAA;AACDH,EAAAA,QAAQ,CAACwB,IAAI,CAACG,WAAW,CAACP,MAAM,CAAC,CAAA;AAClC,CAAC,CAAC,CAAA;AAEF,MAAMQ,mBAAmB,GAAG,MAAOpB,OAA4B,IAAI;AAClE,EAAA,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE;AAClC;AACA;AACA,IAAA,OAAO,IAAI,CAAA;AACZ,GAAA;AAEA,EAAA,MAAMoB,YAAY,GAAAC,QAAA,KAAQ7D,cAAc,EAAKuC,OAAO,CAAE,CAAA;EAEtD,IAAI;AAAA,IAAA,IAAAuB,aAAA,CAAA;AACJ;IACC,IAAAA,CAAAA,aAAA,GAAKtB,MAAkB,CAACC,KAAK,KAAxBqB,IAAAA,IAAAA,aAAA,CAA0BlB,WAAW,EAAE;AAC5C;AACCD,MAAAA,OAAO,CAACO,IAAI,CAAC7D,uBAAuB,CAAC,CAAA;AAErC;MACA,IAAIuE,YAAY,CAACG,SAAS,EAAE;AAC3B;AACA,QAAA,MAAMlB,eAAe,CAACe,YAAY,CAACG,SAAS,CAAC,CAAA;AAC9C,OAAA;AACA;MACAnB,WAAW,CAACgB,YAAY,CAAC,CAAA;MACzB,OAAQpB,MAAkB,CAACC,KAAM,CAAA;AAClC,KAAA;AAEA,IAAA,MAAMuB,aAAa,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;AAC1C,IAAA,MAAMC,oBAAoB,GAAGjD,0BAA0B,CAACgD,aAAa,EAAEzB,OAAO,CAAC,CAAA;AAE/E,IAAA,IAAI0B,oBAAoB,EAAE;AACzB,MAAA,MAAM,IAAIR,KAAK,CAACQ,oBAAoB,CAAC,CAAA;AACtC,KAAA;AAEA,IAAA,IAAI,EAAC1B,OAAO,IAAA,IAAA,IAAPA,OAAO,CAAEtC,KAAK,CAAE,EAAA;AACpB;MACA0C,OAAO,CAACO,IAAI,CAAC,CAAA,2DAAA,EAA8DlD,cAAc,CAACC,KAAK,EAAE,CAAC,CAAA;AACnG,KAAA;AAEA;AACA,IAAA,IAAIsC,OAAO,IAAA,IAAA,IAAPA,OAAO,CAAEtC,KAAK,IAAI,CAACJ,MAAM,CAACU,QAAQ,CAACgC,OAAO,CAACtC,KAAK,CAAC,EAAE;AACtD,MAAA,MAAMiE,GAAG,GAAG,CAAmCrE,gCAAAA,EAAAA,MAAM,CAACsE,IAAI,CAAC,KAAK,CAAC,CAAA,iBAAA,EAAoB5B,OAAO,CAACtC,KAAK,CAAI,EAAA,CAAA,CAAA;AACtG,MAAA,MAAM,IAAIwD,KAAK,CAACS,GAAG,CAAC,CAAA;AACrB,KAAA;IAEA,MAAMf,MAAM,GAAGf,eAAe,CAACG,OAAO,IAAPA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAO,CAAEtC,KAAK,CAAC,CAAA;AAE9C,IAAA,IAAIkD,MAAM,EAAE;AAAA,MAAA,IAAAiB,cAAA,CAAA;AACX;AACAzB,MAAAA,OAAO,CAACO,IAAI,CAAC7D,uBAAuB,CAAC,CAAA;MACrC,IAAA+E,CAAAA,cAAA,GAAK5B,MAAkB,CAACC,KAAK,KAAxB2B,IAAAA,IAAAA,cAAA,CAA0BxB,WAAW,EAAE;AAC3C;QACAA,WAAW,CAACgB,YAAY,CAAC,CAAA;QACzB,OAAQpB,MAAkB,CAACC,KAAM,CAAA;AAClC,OAAA;AACA;AACA,MAAA,MAAM,IAAIgB,KAAK,CAAC,mCAAmC,CAAC,CAAA;AACrD,KAAA;AAEA;IACA,MAAMY,SAAS,GAAG,CAAA,EAAG/E,OAAO,CAACsE,YAAY,CAAC3D,KAAM,CAAC,CAACT,GAAG,CAAE,CAAA,CAAA;AAEvD,IAAA,MAAM8E,cAAc,GAAG,CAACzB,eAAe,CAACwB,SAAS,CAAC,CAAC,CAAA;AAEnD;IACA,IAAIT,YAAY,CAACG,SAAS,EAAE;MAC3BO,cAAc,CAACC,IAAI,CAAC1B,eAAe,CAACe,YAAY,CAACG,SAAS,CAAC,CAAC,CAAA;AAC7D,KAAA;AAEA;AACA,IAAA,MAAMjB,OAAO,CAAC0B,GAAG,CAACF,cAAc,CAAC,CAAA;IACjC1B,WAAW,CAACgB,YAAY,CAAC,CAAA;IAEzB,OAAQpB,MAAkB,CAACC,KAAM,CAAA;GACjC,CAAC,OAAOC,KAAK,EAAE;AACf,IAAA,OAAOI,OAAO,CAACE,MAAM,CAACN,KAAK,CAAC,CAAA;AAC7B,GAAA;AACD,CAAC,CAAA;AAED,IAAI+B,aAAa,GAAuC,IAAI,CAAA;AAErD,MAAMC,UAAU,GAAInC,OAA4B,IAAI;AAC1D;EACA,IAAIkC,aAAa,KAAK,IAAI,EAAE;AAC3B,IAAA,OAAOA,aAAa,CAAA;AACrB,GAAA;AAEAA,EAAAA,aAAa,GAAGd,mBAAmB,CAACpB,OAAO,CAAC,CAAA;AAE5C,EAAA,OAAOkC,aAAa,CAAA;AACrB,CAAC,CAAA;AAED;AACO,MAAME,kBAAkB,GAAGA,MAAK;AACtCF,EAAAA,aAAa,GAAG,IAAI,CAAA;AACrB,CAAC;;AC3KD,SAASG,SAASA,CAAC1C,GAAW,EAAA;EAC7B,MAAM,CAAC2C,MAAM,EAAEC,SAAS,CAAC,GAAGC,QAAQ,CAAsB,IAAI,CAAC,CAAA;EAC/D,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAGF,QAAQ,CAAC,IAAI,CAAC,CAAA;AAEhD,EAAA,MAAMG,SAAS,GAAG,OAAO1C,MAAM,KAAK,WAAW,CAAA;AAE/C2C,EAAAA,SAAS,CAAC,MAAK;AACd,IAAA,IAAIhC,MAAM,GAAGxB,UAAU,CAACO,GAAG,CAAC,CAAA;IAE5B,IAAI,CAACiB,MAAM,EAAE;AACZA,MAAAA,MAAM,GAAGpB,QAAQ,CAACqB,aAAa,CAAC,QAAQ,CAAC,CAAA;MACzCD,MAAM,CAACjB,GAAG,GAAGA,GAAG,CAAA;MAEhBiB,MAAM,CAACE,MAAM,GAAG,MAAK;AACpB;AACA,QAAA,IAAI6B,SAAS,EAAE;AACdJ,UAAAA,SAAS,CAAEtC,MAAkB,CAACC,KAAM,CAACoC,MAAO,CAAC,CAAA;UAC7CI,YAAY,CAAC,KAAK,CAAC,CAAA;AACpB,SAAA;OACA,CAAA;AAEDlD,MAAAA,QAAQ,CAACqD,IAAI,CAAC1B,WAAW,CAACP,MAAM,CAAC,CAAA;AAClC,KAAC,MAAM;AACN;AACAR,MAAAA,OAAO,CAACO,IAAI,CAAC,kCAAkC,CAAC,CAAA;AAChD,MAAA,IAAIgC,SAAS,EAAE;AACdJ,QAAAA,SAAS,CAAEtC,MAAkB,CAACC,KAAM,CAACoC,MAAO,CAAC,CAAA;QAC7CI,YAAY,CAAC,KAAK,CAAC,CAAA;AACpB,OAAA;AACD,KAAA;AAEA,IAAA,OAAO,MAAK;AACX,MAAA,IAAI9B,MAAM,EAAE;AACXpB,QAAAA,QAAQ,CAACqD,IAAI,CAAC5B,WAAW,CAACL,MAAM,CAAC,CAAA;AAClC,OAAA;KACA,CAAA;AACF,GAAC,EAAE,CAACjB,GAAG,CAAC,CAAC,CAAA;EAET,OAAO;IAAE2C,MAAM;AAAEG,IAAAA,SAAAA;GAAW,CAAA;AAC7B;;ACzCA,MAAMK,eAAe,GAAqBA,CAACC,MAAM,EAAEC,IAAI,KAAI;AAC1D,EAAA,MAAMC,YAAY,GAAGC,MAAM,CAAU,IAAI,CAAC,CAAA;AAC1C;AACA;AACAN,EAAAA,SAAS,CAAC,MAAK;IACd,IAAIK,YAAY,CAAChE,OAAO,EAAE;MACzBgE,YAAY,CAAChE,OAAO,GAAG,KAAK,CAAA;AAC7B,KAAC,MAAM;MACN,OAAO8D,MAAM,EAAE,CAAA;AAChB,KAAA;GACA,EAAEC,IAAI,CAAC,CAAA;AACT,CAAC;;ACRD,SAASG,iBAAiBA,CAACnD,OAA+B,EAAA;AACzD4C,EAAAA,SAAS,CAAC,MAAK;AACd,IAAA,MAAMQ,SAAS,GAAG,YAAW;MAC5B,IAAI;QACH,MAAMjB,UAAU,CAACnC,OAAO,CAAC,CAAA;OACzB,CAAC,OAAOG,KAAK,EAAE;AAChB;AACCC,QAAAA,OAAO,CAACD,KAAK,CAACA,KAAK,CAAC,CAAA;AACrB,OAAA;KACA,CAAA;AACDiD,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;IACpB/C,WAAW,CAACC,OAAO,CAAC,CAAA;AACrB,GAAC,EAAE,CAACA,OAAO,CAAC,CAAC,CAAA;AAEb,EAAA,oBACCqD,KAAK,CAAAxC,aAAA,CAAA,KAAA,EAAA;AAAAyC,IAAAA,EAAE,EAAC,aAAA;AAAa,GAAA,CAAG,CAAA;AAE1B;;;;"}
|
package/lib/interface/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
type ConfigObject = Record<string, any>;
|
|
2
2
|
interface BuddyObject {
|
|
3
3
|
createOffer: (options: any) => void;
|
|
4
|
+
embedOptions: Partial<BuddyOfferElementProps>;
|
|
4
5
|
updateOffer: (options: any) => void;
|
|
5
6
|
config?: ConfigObject;
|
|
6
7
|
}
|
|
@@ -65,6 +66,7 @@ interface IEndorsementError {
|
|
|
65
66
|
interface BuddyOfferElementProps {
|
|
66
67
|
ion: string;
|
|
67
68
|
partnerID: string;
|
|
69
|
+
configSrc?: string;
|
|
68
70
|
data?: DataObject;
|
|
69
71
|
debug?: boolean;
|
|
70
72
|
includeCheckout?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interface/index.ts"],"names":[],"mappings":"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"}
|
|
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,
|
|
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,EAAmC,MAAM,cAAc,CAAC;AAEjF,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;AAgHF,eAAO,MAAM,UAAU,YAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gCAStD,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.7.0",
|
|
4
4
|
"author": "Buddy Technology",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.modern.mjs",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@testing-library/dom": "^10.4.0",
|
|
45
45
|
"@testing-library/jest-dom": "^6.4.8",
|
|
46
|
-
"@testing-library/react": "^16.
|
|
46
|
+
"@testing-library/react": "^16.1.0",
|
|
47
47
|
"@testing-library/user-event": "^14.5.2",
|
|
48
48
|
"@types/jest": "^29.5.10",
|
|
49
49
|
"eslint-config-custom": "*",
|
|
@@ -54,8 +54,8 @@
|
|
|
54
54
|
"typescript": "^5.3.2"
|
|
55
55
|
},
|
|
56
56
|
"peerDependencies": {
|
|
57
|
-
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
|
|
58
|
-
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
|
|
57
|
+
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
|
|
58
|
+
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
|
|
59
59
|
},
|
|
60
60
|
"publishConfig": {
|
|
61
61
|
"access": "public"
|