@buddy-technology/offer-component 1.4.0 → 1.6.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 +26 -0
- package/README.md +135 -32
- 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 +3 -0
- package/lib/interface/index.d.ts.map +1 -1
- package/lib/util/index.d.ts.map +1 -1
- package/package.json +1 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,29 @@
|
|
|
1
|
+
# [@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)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* bot callouts ([0075772](https://github.com/Buddy-Technology/ion-to-react/commit/00757729b761f6eb6371dcb9676f36ece5714971))
|
|
7
|
+
* eslint ts config ([15deb9e](https://github.com/Buddy-Technology/ion-to-react/commit/15deb9e4b15d89389dbf90a83fac1650f02bd67f))
|
|
8
|
+
* update interface ([d642cde](https://github.com/Buddy-Technology/ion-to-react/commit/d642cde171b6f6777aeeffad8e174ac36fdb5a79))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* update loader script to handle config scripts ([fcdb2e4](https://github.com/Buddy-Technology/ion-to-react/commit/fcdb2e4ea5aeeba5f4fefef4b4022116ace9c4ec))
|
|
14
|
+
|
|
15
|
+
# [@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)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* typo in readme ([0c9e46b](https://github.com/Buddy-Technology/ion-to-react/commit/0c9e46b371238ff5216c58ff3a763528d7087d8f))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### Features
|
|
24
|
+
|
|
25
|
+
* add validate app editor on load option ([eac3fe4](https://github.com/Buddy-Technology/ion-to-react/commit/eac3fe426bcaaeae301be6e123f68b2b8ac334ba))
|
|
26
|
+
|
|
1
27
|
# [@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
28
|
|
|
3
29
|
|
package/README.md
CHANGED
|
@@ -2,6 +2,25 @@
|
|
|
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
|
Contact [Buddy](mailto:partners@buddy.insure) to obtain a `partnerID` and compatible `ions` for your specific use case.
|
|
7
26
|
|
|
@@ -29,18 +48,95 @@ function App() {
|
|
|
29
48
|
}
|
|
30
49
|
export default App;
|
|
31
50
|
```
|
|
51
|
+
---
|
|
52
|
+
## Props
|
|
53
|
+
|
|
54
|
+
| Option Name | Type | Default | Description
|
|
55
|
+
| --- | --- | --- | --- |
|
|
56
|
+
| *partnerID | string | | The partnerID assigned to you from Buddy |
|
|
57
|
+
| *ion | string | | The ion ID for the product to be presented |
|
|
58
|
+
| stage | enum | "STAGING" | One of: `"STAGING"`, `"PRODUCTION"`. Set to `"STAGING"` (default) for testing and development. |
|
|
59
|
+
| configSrc | string | | The URL for pairing a configuration file with the offer element. |
|
|
60
|
+
| viewType | enum | `"paginated"` | Sets how the offer element is displayed. One of: `"paginated"`, `"single-form"`, `"offer-only"`. _See [View types](#view-types) for details._|
|
|
61
|
+
| data | object | | Customer or policy data to pre-load the offer with. Refer to specific ION documentation for the data structure. |
|
|
62
|
+
| theme | object | |The [theme](#styling) object for passing in styles and color palettes |
|
|
63
|
+
| onUserEvent | function | | A callback for tracking user behavioral data. See [Capturing Data](#capturing-data) for details. |
|
|
64
|
+
| includeCheckout | boolean | `true` | Toggles whether to render the secure checkout. |
|
|
65
|
+
| 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.|
|
|
66
|
+
| onOptOut | function | | The callback fired when a user opts out of the offer. |
|
|
67
|
+
|
|
68
|
+
_*required_
|
|
69
|
+
|
|
70
|
+
## Configuration Files
|
|
71
|
+
|
|
72
|
+
### Version 2 configuration files (Recommended)
|
|
73
|
+
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.
|
|
74
|
+
|
|
75
|
+
**EXAMPLE**
|
|
76
|
+
```javascript
|
|
77
|
+
// config.js
|
|
78
|
+
|
|
79
|
+
const configTheme = {
|
|
80
|
+
baseTheme: 'base',
|
|
81
|
+
palette: 'base',
|
|
82
|
+
overrides: {
|
|
83
|
+
styles: {
|
|
84
|
+
h1: { color: 'blue' }
|
|
85
|
+
h2: { color: 'blue' }
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
window.Buddy.embedOptions.theme = configTheme // attach our theme to embedOptions.
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
```javascript
|
|
94
|
+
// React implementation
|
|
95
|
+
|
|
96
|
+
import React from 'react';
|
|
97
|
+
import BuddyOfferElement from '@buddy-technology/offer-component';
|
|
98
|
+
|
|
99
|
+
function App() {
|
|
100
|
+
const overrideConfigTheme = {
|
|
101
|
+
overrides: {
|
|
102
|
+
styles: {
|
|
103
|
+
h2: { color: 'red' }
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
return (
|
|
109
|
+
<div id="app">
|
|
110
|
+
<h1>My App</h1>
|
|
111
|
+
<BuddyOfferElement
|
|
112
|
+
ion="MY_ION"
|
|
113
|
+
partnerID="my-partner-id"
|
|
114
|
+
stage="staging"
|
|
115
|
+
configSrc="https://js.buddy.insure/config.js" // URL of our config file
|
|
116
|
+
theme={overrideConfigTheme} // deep merges our theme, h2's will now be red, but h1's are still blue.
|
|
117
|
+
/>
|
|
118
|
+
</div>
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
export default App;
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
### Version 1 configuration files
|
|
126
|
+
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).
|
|
127
|
+
|
|
128
|
+
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
129
|
|
|
33
|
-
## Combined with useConfig hook
|
|
34
130
|
```javascript
|
|
35
131
|
import React from 'react';
|
|
36
132
|
import BuddyOfferElement, { useConfig } from '@buddy-technology/offer-component';
|
|
37
133
|
|
|
38
134
|
function App() {
|
|
39
|
-
|
|
135
|
+
const { config, isLoading } = useConfig('https://config-domain.com/config.js');
|
|
40
136
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
137
|
+
if (isLoading || !config) {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
44
140
|
|
|
45
141
|
// grab relevant properties from config
|
|
46
142
|
const theme = config.themeBase;
|
|
@@ -63,23 +159,6 @@ function App() {
|
|
|
63
159
|
}
|
|
64
160
|
export default App;
|
|
65
161
|
```
|
|
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
162
|
---
|
|
84
163
|
## View Types
|
|
85
164
|
|
|
@@ -292,15 +371,15 @@ __Base__:
|
|
|
292
371
|
|
|
293
372
|
__Buddy__:
|
|
294
373
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
374
|
+
primary: '#DC5648',
|
|
375
|
+
secondary: '#0A242D99',
|
|
376
|
+
tertiary: '#46460E33',
|
|
377
|
+
negative: '#D62719',
|
|
378
|
+
positive: '#A3D9B1',
|
|
379
|
+
textPrimary: '#0A242D',
|
|
380
|
+
textSecondary: '#0A242D99',
|
|
381
|
+
backgroundPrimary: 'linear-gradient(#D6F1F2, #F8F6D2)',
|
|
382
|
+
backgroundSecondary: '#FBF9EF',
|
|
304
383
|
|
|
305
384
|
### Overrides
|
|
306
385
|
|
|
@@ -399,6 +478,30 @@ export default App;
|
|
|
399
478
|
### Event types and data fired:
|
|
400
479
|
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
480
|
|
|
481
|
+
#### `onOfferElementLoad`
|
|
482
|
+
|
|
483
|
+
Triggers when the offer element mounts
|
|
484
|
+
|
|
485
|
+
_data returned_
|
|
486
|
+
| Name | Type | Description |
|
|
487
|
+
|-----------|--------|---------------------------------------------------------|
|
|
488
|
+
| `timestamp` | number | the timestamp when the event occurred in milliseconds |
|
|
489
|
+
| `partnerId` | string | the partner identifier |
|
|
490
|
+
| `incomingDataFieldIds` | string[] | an array of the field ids included in the incoming data |
|
|
491
|
+
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
#### `onOfferElementUpdate`
|
|
495
|
+
|
|
496
|
+
Triggers when the `data` prop to the Offer Element is updated
|
|
497
|
+
|
|
498
|
+
_data returned_
|
|
499
|
+
| Name | Type | Description |
|
|
500
|
+
|-----------|--------|---------------------------------------------------------|
|
|
501
|
+
| `timestamp` | number | the timestamp when the event occurred in milliseconds |
|
|
502
|
+
| `partnerId` | string | the partner identifier |
|
|
503
|
+
| `updatedDataFieldIds` | string[] | an array of the field ids included in the updated data |
|
|
504
|
+
|
|
402
505
|
#### `onViewChange`
|
|
403
506
|
|
|
404
507
|
Triggers when users click to a new screen in a paginated view mode.
|
|
@@ -447,7 +550,7 @@ _data returned_
|
|
|
447
550
|
| `error` | string | if unsuccessful, a message explaining the type of error encountered |
|
|
448
551
|
| `timestamp` | number | the timestamp when the event occurred in milliseconds |
|
|
449
552
|
|
|
450
|
-
|
|
553
|
+
|
|
451
554
|
#### `onFocus`
|
|
452
555
|
|
|
453
556
|
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":";;;;;;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;;;;;"}
|
|
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":";;;;;;;;;;;;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,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,KAAK,KAAI;EACxE,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,YAAY,GAAIN,OAA4B,IAAI;AACrD,EAAA,MAAMO,YAAY,GAAAC,QAAA,KAAQ/C,cAAc,EAAKuC,OAAO,CAAE,CAAA;AACtD,EAAA,MAAMS,MAAM,GAAGjB,QAAQ,CAACkB,aAAa,CAAC,QAAQ,CAAC,CAAA;AAC/CD,EAAAA,MAAM,CAACd,GAAG,GAAG,CAAA,EAAG5C,OAAO,CAACwD,YAAY,CAAC7C,KAAK,CAAC,CAACT,GAAG,CAAE,CAAA,CAAA;AACjDwD,EAAAA,MAAM,CAACE,MAAM,GAAG,MAAMN,WAAW,CAACE,YAAY,CAAC,CAAA;AAC/Cf,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,GAAIf,OAA4B,IAAI;AAC1D;EACA,IAAIc,aAAa,KAAK,IAAI,EAAE;AAC3B,IAAA,OAAOA,aAAa,CAAA;AACrB,GAAA;EAEAA,aAAa,GAAG,IAAIE,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAI;AAAA,IAAA,IAAAC,aAAA,CAAA;AAC/C,IAAA,IAAI,OAAOlB,MAAM,KAAK,WAAW,EAAE;AAClC;AACA;MACAgB,OAAO,CAAC,IAAI,CAAC,CAAA;AACb,MAAA,OAAA;AACD,KAAA;IAEA,IAAAE,CAAAA,aAAA,GAAKlB,MAAkB,CAACC,KAAK,KAAxBiB,IAAAA,IAAAA,aAAA,CAA0Bd,WAAW,EAAE;AAAA,MAAA,IAAAe,cAAA,CAAA;AAC3C;AACAhB,MAAAA,OAAO,CAACiB,IAAI,CAACvE,uBAAuB,CAAC,CAAA;MACpC,CAAAsE,cAAA,GAAAnB,MAAkB,CAACC,KAAK,KAAxBkB,IAAAA,IAAAA,cAAA,CAA0Bf,WAAW,CAACL,OAAO,CAAC,CAAA;AAC/CiB,MAAAA,OAAO,CAAEhB,MAAkB,CAACC,KAAM,CAAC,CAAA;AACnC,MAAA,OAAA;AACD,KAAA;IAEA,IAAI;AACH,MAAA,MAAMoB,aAAa,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;AAC1C,MAAA,MAAMC,oBAAoB,GAAG9C,0BAA0B,CAAC6C,aAAa,EAAEtB,OAAO,CAAC,CAAA;AAE/E,MAAA,IAAIuB,oBAAoB,EAAE;AACzBL,QAAAA,MAAM,CAAC,IAAIM,KAAK,CAACD,oBAAoB,CAAC,CAAC,CAAA;AACvC,QAAA,OAAA;AACD,OAAA;AAEA,MAAA,IAAI,EAACvB,OAAO,IAAA,IAAA,IAAPA,OAAO,CAAEtC,KAAK,CAAE,EAAA;AACpB;QACA0C,OAAO,CAACiB,IAAI,CAAC,CAAA,2DAAA,EAA8D5D,cAAc,CAACC,KAAK,EAAE,CAAC,CAAA;AACnG,OAAA;AAEA;AACA,MAAA,IAAIsC,OAAO,IAAA,IAAA,IAAPA,OAAO,CAAEtC,KAAK,IAAI,CAACJ,MAAM,CAACU,QAAQ,CAACgC,OAAO,CAACtC,KAAK,CAAC,EAAE;AACtD,QAAA,MAAM+D,GAAG,GAAG,CAAmCnE,gCAAAA,EAAAA,MAAM,CAACoE,IAAI,CAAC,KAAK,CAAC,CAAA,iBAAA,EAAoB1B,OAAO,CAACtC,KAAK,CAAI,EAAA,CAAA,CAAA;AACtGwD,QAAAA,MAAM,CAAC,IAAIM,KAAK,CAACC,GAAG,CAAC,CAAC,CAAA;AACtB,QAAA,OAAA;AACD,OAAA;MAEA,IAAIhB,MAAM,GAAGZ,eAAe,CAACG,OAAO,IAAPA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAO,CAAEtC,KAAK,CAAC,CAAA;AAE5C,MAAA,IAAI+C,MAAM,EAAE;AAAA,QAAA,IAAAkB,cAAA,CAAA;AACX;AACAvB,QAAAA,OAAO,CAACiB,IAAI,CAACvE,uBAAuB,CAAC,CAAA;QACrC,IAAA6E,CAAAA,cAAA,GAAK1B,MAAkB,CAACC,KAAK,KAAxByB,IAAAA,IAAAA,cAAA,CAA0BtB,WAAW,EAAE;AAC3CY,UAAAA,OAAO,CAAEhB,MAAkB,CAACC,KAAM,CAAC,CAAA;AACpC,SAAC,MAAM;AACNgB,UAAAA,MAAM,CAAC,IAAIM,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAA;AACvD,SAAA;AACD,OAAC,MAAM,IAAI,CAACf,MAAM,EAAE;AACnBA,QAAAA,MAAM,GAAGH,YAAY,CAACN,OAAO,CAAC,CAAA;AAC/B,OAAA;AAEAS,MAAAA,MAAM,CAACmB,gBAAgB,CAAC,MAAM,EAAE,MAAK;AAAA,QAAA,IAAAC,cAAA,CAAA;QACpC,IAAAA,CAAAA,cAAA,GAAK5B,MAAkB,CAACC,KAAK,KAAxB2B,IAAAA,IAAAA,cAAA,CAA0BxB,WAAW,EAAE;AAC3CY,UAAAA,OAAO,CAAEhB,MAAkB,CAACC,KAAM,CAAC,CAAA;AACpC,SAAC,MAAM;AACNgB,UAAAA,MAAM,CAAC,IAAIM,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAA;AACvD,SAAA;AACD,OAAC,CAAC,CAAA;AAEFf,MAAAA,MAAM,CAACmB,gBAAgB,CAAC,OAAO,EAAE,MAAK;AACrCV,QAAAA,MAAM,CAAC,IAAIM,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAA;AACxD,OAAC,CAAC,CAAA;KACF,CAAC,OAAOrB,KAAK,EAAE;MACfe,MAAM,CAACf,KAAK,CAAC,CAAA;AACd,KAAA;AACD,GAAC,CAAC,CAAA;AAEF,EAAA,OAAOW,aAAa,CAAA;AACrB,CAAC,CAAA;AAED;AACO,MAAMgB,kBAAkB,GAAGA,MAAK;AACtChB,EAAAA,aAAa,GAAG,IAAI,CAAA;AACrB,CAAC;;ACpJD,SAASiB,SAASA,CAACpC,GAAW,EAAA;EAC7B,MAAM,CAACqC,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,OAAOpC,MAAM,KAAK,WAAW,CAAA;AAE/CqC,EAAAA,SAAS,CAAC,MAAK;AACd,IAAA,IAAI7B,MAAM,GAAGrB,UAAU,CAACO,GAAG,CAAC,CAAA;IAE5B,IAAI,CAACc,MAAM,EAAE;AACZA,MAAAA,MAAM,GAAGjB,QAAQ,CAACkB,aAAa,CAAC,QAAQ,CAAC,CAAA;MACzCD,MAAM,CAACd,GAAG,GAAGA,GAAG,CAAA;MAEhBc,MAAM,CAACE,MAAM,GAAG,MAAK;AACpB;AACA,QAAA,IAAI0B,SAAS,EAAE;AACdJ,UAAAA,SAAS,CAAEhC,MAAkB,CAACC,KAAM,CAAC8B,MAAO,CAAC,CAAA;UAC7CI,YAAY,CAAC,KAAK,CAAC,CAAA;AACpB,SAAA;OACA,CAAA;AAED5C,MAAAA,QAAQ,CAACoB,IAAI,CAACC,WAAW,CAACJ,MAAM,CAAC,CAAA;AAClC,KAAC,MAAM;AACN;AACAL,MAAAA,OAAO,CAACiB,IAAI,CAAC,kCAAkC,CAAC,CAAA;AAChD,MAAA,IAAIgB,SAAS,EAAE;AACdJ,QAAAA,SAAS,CAAEhC,MAAkB,CAACC,KAAM,CAAC8B,MAAO,CAAC,CAAA;QAC7CI,YAAY,CAAC,KAAK,CAAC,CAAA;AACpB,OAAA;AACD,KAAA;AAEA,IAAA,OAAO,MAAK;AACX,MAAA,IAAI3B,MAAM,EAAE;AACXjB,QAAAA,QAAQ,CAACoB,IAAI,CAAC2B,WAAW,CAAC9B,MAAM,CAAC,CAAA;AAClC,OAAA;KACA,CAAA;AACF,GAAC,EAAE,CAACd,GAAG,CAAC,CAAC,CAAA;EAET,OAAO;IAAEqC,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,CAAC1D,OAAO,EAAE;MACzB0D,YAAY,CAAC1D,OAAO,GAAG,KAAK,CAAA;AAC7B,KAAC,MAAM;MACN,OAAOwD,MAAM,EAAE,CAAA;AAChB,KAAA;GACA,EAAEC,IAAI,CAAC,CAAA;AACT,CAAC;;ACRD,SAASG,iBAAiBA,CAAC7C,OAA+B,EAAA;AACzDsC,EAAAA,SAAS,CAAC,MAAK;AACd,IAAA,MAAMQ,SAAS,GAAG,YAAW;MAC5B,IAAI;QACH,MAAM/B,UAAU,CAACf,OAAO,CAAC,CAAA;OACzB,CAAC,OAAOG,KAAK,EAAE;AAChB;AACCC,QAAAA,OAAO,CAACD,KAAK,CAACA,KAAK,CAAC,CAAA;AACrB,OAAA;KACA,CAAA;AACD2C,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;IACpBzC,WAAW,CAACC,OAAO,CAAC,CAAA;AACrB,GAAC,EAAE,CAACA,OAAO,CAAC,CAAC,CAAA;AAEb,EAAA,oBACC+C,KAAK,CAAArC,aAAA,CAAA,KAAA,EAAA;AAAAsC,IAAAA,EAAE,EAAC,aAAA;AAAa,GAAA,CAAG,CAAA;AAE1B;;;;"}
|
|
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":"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"}
|
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;
|
|
@@ -92,6 +94,7 @@ interface BuddyOfferElementProps {
|
|
|
92
94
|
placesApiKey?: string;
|
|
93
95
|
appEditorTitle?: string;
|
|
94
96
|
appEditorSubtitle?: string;
|
|
97
|
+
validateAppEditorOnLoad?: boolean;
|
|
95
98
|
}
|
|
96
99
|
export type { BuddyObject, BuddyOfferElementProps, ConfigObject, IWindow, };
|
|
97
100
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -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,12 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@buddy-technology/offer-component",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"author": "Buddy Technology",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.modern.mjs",
|
|
7
7
|
"types": "./lib/index.d.ts",
|
|
8
8
|
"license": "UNLICENSED",
|
|
9
|
-
"private": false,
|
|
10
9
|
"repository": {
|
|
11
10
|
"type": "git",
|
|
12
11
|
"url": "git://github.com/Buddy-Technology/ion-to-react.git",
|