@blotoutio/providers-shop-gpt-sdk 1.22.1 → 1.22.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.cjs.js +105 -16
- package/index.d.ts +1 -1
- package/index.js +105 -16
- package/index.mjs +105 -16
- package/package.json +1 -1
- package/stores/shopify/index.cjs.js +111 -3
- package/stores/shopify/index.js +111 -3
- package/stores/shopify/index.mjs +111 -3
package/index.mjs
CHANGED
@@ -122,7 +122,7 @@ const isoCountries = new Map([
|
|
122
122
|
['FO', 'Faroe Islands'],
|
123
123
|
['FR', 'France'],
|
124
124
|
['GA', 'Gabon'],
|
125
|
-
['GB', '
|
125
|
+
['GB', 'Great Britain'],
|
126
126
|
['GD', 'Grenada'],
|
127
127
|
['GE', 'Georgia'],
|
128
128
|
['GF', 'French Guiana'],
|
@@ -277,7 +277,7 @@ const isoCountries = new Map([
|
|
277
277
|
['TZ', 'Tanzania, United Republic of'],
|
278
278
|
['UA', 'Ukraine'],
|
279
279
|
['UG', 'Uganda'],
|
280
|
-
['UK', 'United Kingdom'],
|
280
|
+
['UK', 'United Kingdom of Great Britain and Northern Ireland'],
|
281
281
|
['UM', 'United States Minor Outlying Islands'],
|
282
282
|
['US', 'United States of America'],
|
283
283
|
['UY', 'Uruguay'],
|
@@ -463,6 +463,7 @@ const packageName = 'shopGPT';
|
|
463
463
|
const DEFAULT_MAX_THREAD_AGE = 14; // in days
|
464
464
|
const DEFAULT_NUDGE_TIMEOUT = 10; // in seconds
|
465
465
|
const previewKeyName = 'previewShopGPT';
|
466
|
+
const nudgeOverrideKeyName = 'showShopGPTNudge';
|
466
467
|
|
467
468
|
const keyPrefix = `_worker`;
|
468
469
|
|
@@ -606,6 +607,15 @@ const hasPreviewKey = () => {
|
|
606
607
|
return false;
|
607
608
|
}
|
608
609
|
};
|
610
|
+
const hasNudgeOverride = () => {
|
611
|
+
var _a;
|
612
|
+
try {
|
613
|
+
return ((_a = sessionStorage.getItem(nudgeOverrideKeyName)) !== null && _a !== void 0 ? _a : '0') == '1';
|
614
|
+
}
|
615
|
+
catch {
|
616
|
+
return false;
|
617
|
+
}
|
618
|
+
};
|
609
619
|
const isUserInteracted = (destination) => {
|
610
620
|
var _a;
|
611
621
|
const session = getSessionData(destination);
|
@@ -741,6 +751,7 @@ const createShopGPTAPI = ({ fetch: fetchImpl = window.fetch, baseURL, userId, st
|
|
741
751
|
return url;
|
742
752
|
};
|
743
753
|
const processQuery = async (query, threadId, productHandle) => {
|
754
|
+
const siteCurrency = await storeAPI.getSiteCurrency();
|
744
755
|
const response = await fetchImpl(getURL('/query'), {
|
745
756
|
method: 'POST',
|
746
757
|
headers: getHeaders(),
|
@@ -751,6 +762,8 @@ const createShopGPTAPI = ({ fetch: fetchImpl = window.fetch, baseURL, userId, st
|
|
751
762
|
threadId,
|
752
763
|
pageUrl: window.location.href,
|
753
764
|
customerId: storeAPI.getCustomerId(),
|
765
|
+
currencyFormat: siteCurrency.currency,
|
766
|
+
conversionRate: siteCurrency.rate,
|
754
767
|
}),
|
755
768
|
credentials: 'include',
|
756
769
|
});
|
@@ -5885,12 +5898,39 @@ if (!customElements.get('bt-card-wrapper')) {
|
|
5885
5898
|
|
5886
5899
|
const TWLitElement$3 = TW(i$1);
|
5887
5900
|
class ProductItem extends TWLitElement$3 {
|
5901
|
+
constructor() {
|
5902
|
+
super(...arguments);
|
5903
|
+
this.isStylesheetInjected = false;
|
5904
|
+
}
|
5905
|
+
connectedCallback() {
|
5906
|
+
super.connectedCallback();
|
5907
|
+
if (!this.isStylesheetInjected && this.css) {
|
5908
|
+
const sheet = new CSSStyleSheet();
|
5909
|
+
sheet.replaceSync(this.css);
|
5910
|
+
this.shadowRoot.adoptedStyleSheets.push(sheet);
|
5911
|
+
this.isStylesheetInjected = true;
|
5912
|
+
}
|
5913
|
+
}
|
5914
|
+
updated(changedProperties) {
|
5915
|
+
super.updated(changedProperties);
|
5916
|
+
if (changedProperties.has('siteCurrency') && this.siteCurrency) {
|
5917
|
+
this.resolveCurrency();
|
5918
|
+
}
|
5919
|
+
}
|
5920
|
+
async resolveCurrency() {
|
5921
|
+
if (this.siteCurrency instanceof Promise) {
|
5922
|
+
this.resolvedCurrency = await this.siteCurrency;
|
5923
|
+
}
|
5924
|
+
else {
|
5925
|
+
this.resolvedCurrency = this.siteCurrency;
|
5926
|
+
}
|
5927
|
+
}
|
5888
5928
|
getLocalPrice(price) {
|
5889
|
-
if (!this.
|
5929
|
+
if (!this.resolvedCurrency) {
|
5890
5930
|
return price;
|
5891
5931
|
}
|
5892
|
-
const localPrice = parseFloat(price) * this.
|
5893
|
-
return formatMoney(localPrice, this.
|
5932
|
+
const localPrice = parseFloat(price) * this.resolvedCurrency.rate;
|
5933
|
+
return formatMoney(localPrice, this.resolvedCurrency.currency);
|
5894
5934
|
}
|
5895
5935
|
getComparedAtPrice(comparedAtPrice, price) {
|
5896
5936
|
if (!comparedAtPrice ||
|
@@ -6034,6 +6074,14 @@ __decorate([
|
|
6034
6074
|
n$1({ type: String }),
|
6035
6075
|
__metadata("design:type", String)
|
6036
6076
|
], ProductItem.prototype, "viewType", void 0);
|
6077
|
+
__decorate([
|
6078
|
+
n$1({ type: String }),
|
6079
|
+
__metadata("design:type", String)
|
6080
|
+
], ProductItem.prototype, "css", void 0);
|
6081
|
+
__decorate([
|
6082
|
+
r$1(),
|
6083
|
+
__metadata("design:type", Object)
|
6084
|
+
], ProductItem.prototype, "resolvedCurrency", void 0);
|
6037
6085
|
if (!customElements.get('product-item')) {
|
6038
6086
|
customElements.define('product-item', ProductItem);
|
6039
6087
|
}
|
@@ -6206,6 +6254,7 @@ class ProductsList extends i$1 {
|
|
6206
6254
|
.userId=${this.userId}
|
6207
6255
|
.viewType=${this.viewType}
|
6208
6256
|
.metafieldDisplayName=${this.metafieldDisplayName}
|
6257
|
+
.css=${this.css}
|
6209
6258
|
></product-item>
|
6210
6259
|
</div>
|
6211
6260
|
`)}
|
@@ -6255,6 +6304,10 @@ __decorate([
|
|
6255
6304
|
n$1({ type: String }),
|
6256
6305
|
__metadata("design:type", String)
|
6257
6306
|
], ProductsList.prototype, "userId", void 0);
|
6307
|
+
__decorate([
|
6308
|
+
n$1({ type: String }),
|
6309
|
+
__metadata("design:type", String)
|
6310
|
+
], ProductsList.prototype, "css", void 0);
|
6258
6311
|
__decorate([
|
6259
6312
|
r$1(),
|
6260
6313
|
__metadata("design:type", Object)
|
@@ -6325,6 +6378,7 @@ class ProductsSection extends i$1 {
|
|
6325
6378
|
.rank=${1}
|
6326
6379
|
.userId=${this.userId}
|
6327
6380
|
.metafieldDisplayName=${this.metafieldDisplayName}
|
6381
|
+
.css=${this.css}
|
6328
6382
|
></product-item>
|
6329
6383
|
</div>
|
6330
6384
|
<span class="line"></span>
|
@@ -6338,6 +6392,7 @@ class ProductsSection extends i$1 {
|
|
6338
6392
|
.viewType=${'overlay'}
|
6339
6393
|
.userId=${this.userId}
|
6340
6394
|
.metafieldDisplayName=${this.metafieldDisplayName}
|
6395
|
+
.css=${this.css}
|
6341
6396
|
></products-list>
|
6342
6397
|
</div>
|
6343
6398
|
`;
|
@@ -7955,6 +8010,7 @@ class ChatSection extends i$1 {
|
|
7955
8010
|
.rank=${1}
|
7956
8011
|
.userId=${this.userId}
|
7957
8012
|
.metafieldDisplayName=${this.metafieldDisplayName}
|
8013
|
+
.css=${this.css}
|
7958
8014
|
@product-rendered=${() => {
|
7959
8015
|
// Scroll to show the product
|
7960
8016
|
this.scrollToBottom();
|
@@ -9371,6 +9427,7 @@ class PopupView extends TWLitElement$1 {
|
|
9371
9427
|
.viewType=${this.viewType}
|
9372
9428
|
.userId=${this.userId}
|
9373
9429
|
.metafieldDisplayName=${this.metafieldDisplayName}
|
9430
|
+
.css=${this.css}
|
9374
9431
|
@products-rendered=${() => {
|
9375
9432
|
this.scrollToBottom();
|
9376
9433
|
}}
|
@@ -10059,6 +10116,7 @@ const parseMessage = (message, parseDataAsJSON) => {
|
|
10059
10116
|
const soothingWaterDropSound = 'data:audio/mpeg;base64,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iBeym4zYFAAkYAVmuxNNv+v7c+5J93kKUxDKOKWyMt3ZVsrLlNp3Ib///////7s611TkOqXWZl3uhSiSOQewv1FYTZFKdhJVZBMgiKlDgeGlFFOoqUzGFzKYeAg0RO4QCQcFYedRiB5hURMHA6HQkKGqCXYGAAAAABGgApJl0h7bdv/r82S1SFSqqfmOjO4Wm5alsNMFG/////b9dVlyWpEKmqe9aHhMak+HhGsqBxxQOCxAeEChIKHAKEuwM4PIAACtABSTNSHt//uURO6CIqCNR2qAE/pZMgjtUAJ+DWJBF6oE2cG0yCL1QBX4t2rX16KCd9t30sqUWzrubZLKdC9a3az71olrf//////////T/t0Pp3IzIqdpblOje9GO7Vq6MhpGbRjEdEe4dgUA6KIBGwAq9dj2r///////////6W/eDhP1ZcjzJWbcDYTA0WE///////8uT5Zf9azM11Vxps81NTe63cJduNWlkq5ShrwPgRqhhppVlmu6EHCxk5tqaLA4HSCrD1D0gaM2QTGwJB4jiiCRsAKvXY9q7///////////8pPXQrb9l97FaKqad0uiKqLfVOqE////////W6JfMjW2K+v6bfFIfEspmm2OPb5lv/Z7llsUapI0XhNl30zkDXTZIq0aKBUSy9ImIjqwkOIZGymx8KTVFCDEAFAAbQAPquiW9Xb9v/+r///////X5cpV5I9ZjVCEsMyBIJ7LqqX//////Mv6JSLfFev2nda4Zrx8Km2io+FM1XRobWl0v4DX//uURNmGYkU6SHqAE/hREakPUAKbTLI/F6oFGcGhR6L1QRs5Ao+prOmkimTgXyZNBA1DB6wUnLlJJGijDhQCSMBRQIpycHiihiCAABxoAH1XRJfOdv2/f///////+1/PekqIdq7KiLDq7sOxJjr1q3O6Pf62///////6n2mfT7/m5GN2p2XnmlemqGhc2+zu+2KlsjnPBMFsfHHG0IcposI7mkSiMo6zJ8/UDkOe8jSY4aefp5AUQQCgVsAKrXRNN+3+n/////////5eAyMgGMzOqlnUebFkm5rRSdiUSHX///////8iM+fHvc/b/P3drfb+G3XZJqmV+sqzaxiSUGkD7zYktN+kcKPZZh0lEDTiybgbECfnAeO5Rjl7FbZAYQACi1sAKrXNS5v/+tvr6vIhqleWdHN22tT3b60XZ6ZE0VU///////3m9JJvsdKUs7I5M52kR2Z0UjRyHGGq4kwgOFmOwmUwDB9WExESOivUVYouLEMg0sTcOiAycKIY//ukRNOCI22QRWqBNnBvcgitUEbODTpBF6oE2cGUyCL1QBagWGgRQ4oYSjAAAACIgBTjQPba9f2lZF1qSU6EWjIc5mlMxtmV6HUrOdSMV3QtdVb////////+1eV3dWkZbkZjyDllIlWOplzrGMNynsyIVHMdDHOchzKQIoxhRBkXQxVYy3Rx9g8JEHEoAAAAAtgAU4zQq7a/99PZkdndankap3PkTmIJyUR56VnXRrV////////5fvyt+1L6OVKmWplIUtxJXj0UeR2PNO4kgmiJOQWOGjRyWMZWKxROY4aYzlcTDg8wmEhW4IABGwAq9cwapt9///////////oajVpKYiofa790LnJKO52cjGujXoxZVQs////////V8tJN9m7bt1nzMqHX3110dv6NVi+nmouWVGAqokJTckosMtmIQWSVPNCTjj5KUXBZBXVJpaBR9O5YJCRoNQrbEAAjQAVeuYNU2+///////////w1LsmB8PUySiIApz5pXEueQvL///////+oZBr5PMj9q25R7EantpRahl50b2unDPb6YZbjNWMWmIMZ1EM0nTgjkuZbkTRp+r50BQQsyY+HVGSFGu2nN6TTdEYYAAAAegD6rmDVd///////////9/Zn7//ukRNuCIw6QRuqAK/heEgjdUAV+Di5BFaoI2cG2SCK1QKc4vopluyIyIRjgjuRhyPT9+yZ/X//////b0Mnc5SF9bTxuv8x3b7TIIPb5VoVq3MQU6kDlEkkjzET0LWxJcL0GYEzSXsUes8UFGFkwoIBQesLIkmSOocchqWBgaRIjYgAAADoAfVcoNU3of//////////9k/KWWv/OGYSAzsXxKU4D6//z////+mdish1u/JQb2GVsH6rn8emS9X1iGEWpNqLZNE5A7uVblEsvWWTwSVznj0WXIJv16ZFiw20bUP2VXUExBHBlKqK8TtpicSjACyABTzsmZ7b////t7f/////skbIyzcvmO7kAxOZmFMONiogsDGSEkAZf///////5aMv8+cO5F5+Z1Vgd96JswiPNgwOh1CzUOochYq4d+I5M4A+B6sDGIXhhQCQwtFVKqCglEgowAAB6gFPO1e3oN907XqtPzOxGYqWndnVEqjmc7ohp6LJVZ7Vndf////////6+Wr6qrElOixGNY6TGQUdxIYxDVI5o4ysVqUZCniJhlo8PTDI8OCwmhzECDh1jxIimK4fEih/BQBuAALGAFOMfNEwq1f+hvTSX/VdkMWhU3m3NYhFFlW9Fot7L//ukROoEA5+QROKCNnBvkgicUCnODNZBGaoEecGPyCMxQBW8uZ1Wv//////+/6p96rRtKKiLSpVVplPIdXdlaYOB5GO7tlmF1FB0hiIZhylQxIi4Fh5Rx1FRYeOINMLDAcRUoiHCjXCgAAAAREAKSZZ1Vav7PVbNTNa9lqpKEVltRD6rZL+6J2RFT/////////p6du62ewPOqKxW3BsppGvO6IiCxRJpgamFsFSIAzIZArhGCqziTlKOrIRWLBuPKAABIiAFLMnHtV/95tGN6mfRCNOY102HIRndHoU6GVW3ya3ejU2b/////////6ptU+2l6UUWZCLVTVFHQqJdTEQyEbIOiysw0ggc4rkBCHKJOriaIg8SOPFJhpBASMDBUuAaMAGREmsMr/////7IdIDxh8owNTpM0LLMi8okxrBdE8//////+xt+1G4j9SgKi9i3JNykqKJFCIbC1RpAKAAAAI2AFTMn3U1fpVf//////////czlKQXntGnKNVMSoFpSEWiwjZFZf/////8PO5/3H3XGku1vWkaJLrzB++pZDtxRYrXSmvFb2IJUuzsSqoKixOKwaUo44sYzjAiYPaMH04c0SMQsaosgFAAAAEbACpmX6mr96v////////////uURPEEY0GQRmqALUBZEgjtUAJ/DAo9G6oArej0AaS9JIgEm7zzpZa8tDqh0YspmrZ0ZWVGop1cYm47B//////9PXdNzrfZvfkfXfS21te9i87xtU7m7Mmpi2PSIpnGF5Zvl0BAtJ7SoYdBygCieKTWmPqVFngcmoxCRM6SUiExSRg0kAAwCnmTle9//st2////////+/+EOfloy9FCeOQKHjY+dGzn///////+fj/f8l893LMZjUcjid21C9hvv5FPY7U8S1hS7g+Opw2XggyK4x0key5VXMk+C023IGFSFV+snynTukZQWugUABTzLlNrqS/V//////////yc1xk3S95nOjMHxSvQ0eJ2nP///////+cyq/+/zPjxr7H+ed+vpMrcb7h55+SReJ2SRMhLHaYUkWlqGlGn1BRx0iC2hSRg9iSZGL3ZIHEwSFkUMJoZ0AAAAACRgBTjJ1TWf////////////d3QjynB4DJKFkxsUTZW1Z6sxAn///////ukRO+DM2GQRWqBRnB10gitUEbODN5BFooFOcGfyCLRQJs4///qfmvuN/65eld5y/ypx6Xklc7ZpsozrhhtaqjXMy7NJxAFf52kCZepE9womyXLQWZ6OeG24aUolMe/AAAAARogBSTJ1SNB1f/3o0vS6EWzd70uhpmUYjFOjEdnorGZ2fZ2WitVf/////////1SRcp7MptCZSs9GWxmZ21VSzidBcg48YUP3LONGSEYhBKg5iDHJQWqOF2OwM5IZ2XAASQAKWZXd6VVeyuv75ddq6nI61cznMRrVnchZ1RZVViaM3///////sn/ptuqujo59KzjXkGsY5pRMpR67OPO4TEhw7ElDkzCphcaJoJKLCwsEVVRYTOQoSixBJQ4BzCrEFiCIztFAAsYAUszd3pVe3prWh08YzNszSIpmrQm7WTZz9e8jV////////tp0Oaq6tvdSIsjKs7HUqOQgo0hjpMRXJOIKJEOrRpFEiiruICjuODzud3ZCua4iNQcx2EzDXCFMgAAAOgCpmfXt///////////8/MiS5NKXgCdWeVyTrzQDo5SHB/////L/8srH5V7hDYX4+qncnZ9Y7pT1TXosbl5uxXqJWj8ZKzLZiBYdYmzkmjESxxDnYIM//uURPUCI0KQReqBNnBhkejdUAVvTNZBGaoAr8F9SCM1QBX4lJMsqjp6RM4e0gBGYVZRkSBCRRbEDkgAAAfAFTLn17V2r///////////0XR9LV7HWd1Ocp56OPkV7tVmTZkozp/T////+3VE1cpiu/2N7L+svbyZXZVJROcspHq9k93SklZKcgd+T5qclemWmUVUYWmoRzSH2JEeIh5kPQJkRwyK7ttRGIiZpCVvny6WEQskAAdAoACpEniCmxqkip1f/6yfUpa///zEYy////2W4doWS8C4DszAA2zMZnMDs5w6ep5////+8qRQwAfUPZSu/7pPJfMTYaMblJ1APmE0aBKaZCmsgbYRKLulJRa2B0uvbaFpZGVNK+KLzXKsNlSpGolJkeLqiojiPLoyxowJxdY0UQkwscAAlAoDZAAVIk8QU2NUlqdX/6k1l9Wr//+6nJ////Qmzre50qpjud6oFM5MjupkSb3SitRetX9P+n///rtuq3azK3xm19h8//u0RNsBA3KQRMqBTnB58gicUEnOELJBEaoFOcIjyCI1QSc4jN05t1bVPjsimzhHwlpZ2Et5FWc8iKlSza6OBE2oefFEQomyXzXJgqVZQCptpokVONECKbMyeCAtAo5cTEAmSWVRAAAQhlIAHYHhywnUgyKX//czJs4////Ohjf/6a5L07HLsmTuLJeqkspbSMzyN1Vn92S7o1VtJ3PT///W3ojVkndw4IqoJmC/as1+V0F0NhyExr8dXVEZ0scrQoLGRWeFds7ZZSKfPnWSebHrjhTHhe2VCQOCLGTx5IK0p6g2JooHlWiVoR0ifLLK8Okg/lI9XefLTuxZJBfClxgAAQAQBIAAegqF1QuEixql//1pk2c///85DG////+1HXLux8azIrh3Ei3IjGKRXmdWctF0tbv7M2j+/v/T9ur3dOplKbfcpB/t5r0MLPwu3on23Rw1Mmr3Pbtrjy7CWb38nHaxxtsO0kLB2fOqkQteq6+4pKy+wgvuJqxIRqhFYyEsKTgHiwPiozOyeJI+tHJ7TUIhWIAABgBeDtjyVkf//RUkv//+Yn////////wi3IXxOKH5Cfk/mv//////zCTCs8pSl/5S///tZFqsYxjnlqrKzUlorCpqiJq40RNUia9qylsalKSLLoiehQsrQFR0SiI1AVE0VASPuRTQodQs1vtDCMgAAIBgAAAUghyMUkf//qS///zEL///////81//f+zD5CNC4TRfn////kzXxM/E8lt/uPpEinGrqKFl//u0RO2DBNSQQuKCZnCVsghtUEzODe5BDIgFOcHeyCFw0Kc4ZFJbfGviyLVYYIg1NmSxoQvQpItuMcKkqSLbQoUKwqXFLpWhhGmvIqCJLhUMnGyUs24VHB4KmUSwWBIVKkxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//sUZOGP8AAAf4AAAAgAAA/wAAABAAABpAAAACAAADSAAAAEqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq';
|
10060
10117
|
|
10061
10118
|
const DIALOG_DELAY = 1000;
|
10119
|
+
const SUPPORT_PROMPTS = 'Where is my order,Tracking link for my order,Return my order,Cancel my order';
|
10062
10120
|
const normalizePath = (path) => path.replace(/\/$/, '');
|
10063
10121
|
class ShopGPT extends i$1 {
|
10064
10122
|
constructor() {
|
@@ -10080,6 +10138,7 @@ class ShopGPT extends i$1 {
|
|
10080
10138
|
this.hasUserInteracted = false;
|
10081
10139
|
this.showNudge = false;
|
10082
10140
|
this.shouldAskUserEmail = false;
|
10141
|
+
this.supportRequested = false;
|
10083
10142
|
this.loadData = async () => {
|
10084
10143
|
if (!this.shopGPTAPI) {
|
10085
10144
|
return;
|
@@ -10307,6 +10366,9 @@ class ShopGPT extends i$1 {
|
|
10307
10366
|
this.isFailed = false;
|
10308
10367
|
const currentThreadId = this.selectedThreadId;
|
10309
10368
|
this.selectedThreadId = threadId;
|
10369
|
+
if (!threadId) {
|
10370
|
+
this.supportRequested = false;
|
10371
|
+
}
|
10310
10372
|
if (threadId && !silent) {
|
10311
10373
|
this.shopGPTAPI.sendEvent('switchThread', undefined, undefined, {
|
10312
10374
|
previousThread: currentThreadId,
|
@@ -10505,7 +10567,8 @@ class ShopGPT extends i$1 {
|
|
10505
10567
|
try {
|
10506
10568
|
this.isPreviousMessagePrompt = isPrompt;
|
10507
10569
|
if (!isPrompt) {
|
10508
|
-
|
10570
|
+
const siteCurrency = await this.getSiteCurrency();
|
10571
|
+
this.shopGPTAPI.sendEvent('queryInteractions', siteCurrency.currency, undefined, {
|
10509
10572
|
query: message,
|
10510
10573
|
threadId: this.selectedThreadId,
|
10511
10574
|
});
|
@@ -10538,9 +10601,10 @@ class ShopGPT extends i$1 {
|
|
10538
10601
|
})
|
10539
10602
|
.catch(logger.error);
|
10540
10603
|
}
|
10541
|
-
sendEvent(e) {
|
10604
|
+
async sendEvent(e) {
|
10542
10605
|
e.stopPropagation();
|
10543
|
-
|
10606
|
+
const siteCurrency = await this.getSiteCurrency();
|
10607
|
+
this.shopGPTAPI.sendEvent(e.detail.action, siteCurrency.currency, e.detail.actionData, e.detail.clickData);
|
10544
10608
|
}
|
10545
10609
|
closeNudge(e) {
|
10546
10610
|
e.stopPropagation();
|
@@ -10549,12 +10613,15 @@ class ShopGPT extends i$1 {
|
|
10549
10613
|
}
|
10550
10614
|
async handleNudgePromptClick(e) {
|
10551
10615
|
e.stopPropagation();
|
10552
|
-
this.openModal();
|
10553
10616
|
await this.setSelectedThreadId('');
|
10554
10617
|
await this.createChatThread({ title: '' }, false);
|
10555
10618
|
if (e.detail.id === 'query') {
|
10556
10619
|
this.sendMessageToServer(e, e.detail.message, true);
|
10557
10620
|
}
|
10621
|
+
if (e.detail.id === 'support') {
|
10622
|
+
this.supportRequested = true;
|
10623
|
+
}
|
10624
|
+
this.openModal();
|
10558
10625
|
}
|
10559
10626
|
submitUserData(e) {
|
10560
10627
|
e.stopPropagation();
|
@@ -10565,11 +10632,12 @@ class ShopGPT extends i$1 {
|
|
10565
10632
|
});
|
10566
10633
|
this.shouldAskUserEmail = false;
|
10567
10634
|
}
|
10568
|
-
productClicked(e) {
|
10635
|
+
async productClicked(e) {
|
10569
10636
|
var _a, _b;
|
10570
10637
|
e.stopPropagation();
|
10571
10638
|
setProductAction(this.destination, this.sessionId, e.detail.id, 'clicked', true);
|
10572
|
-
|
10639
|
+
const siteCurrency = await this.getSiteCurrency();
|
10640
|
+
this.shopGPTAPI.sendEvent('productRecommendationClicked', siteCurrency.currency, {
|
10573
10641
|
productId: e.detail.id,
|
10574
10642
|
value: e.detail.value,
|
10575
10643
|
isPrompt: this.isPreviousMessagePrompt,
|
@@ -10577,15 +10645,15 @@ class ShopGPT extends i$1 {
|
|
10577
10645
|
threadId: this.selectedThreadId,
|
10578
10646
|
query: (_a = e.detail.query) !== null && _a !== void 0 ? _a : '',
|
10579
10647
|
response: (_b = e.detail.response) !== null && _b !== void 0 ? _b : '',
|
10580
|
-
currency:
|
10648
|
+
currency: siteCurrency.currency,
|
10581
10649
|
variantId: e.detail.variantId,
|
10582
10650
|
url: e.detail.url,
|
10583
10651
|
title: e.detail.title,
|
10584
10652
|
rank: e.detail.rank,
|
10585
10653
|
}, true);
|
10586
10654
|
}
|
10587
|
-
getSiteCurrency() {
|
10588
|
-
return this.storeAPI.getSiteCurrency();
|
10655
|
+
async getSiteCurrency() {
|
10656
|
+
return await this.storeAPI.getSiteCurrency();
|
10589
10657
|
}
|
10590
10658
|
overlayMode() {
|
10591
10659
|
const thread = this.chatThreads.get(this.selectedThreadId);
|
@@ -10655,6 +10723,7 @@ class ShopGPT extends i$1 {
|
|
10655
10723
|
const thread = this.chatThreads.get(this.selectedThreadId);
|
10656
10724
|
const closeModal = () => {
|
10657
10725
|
this.modalState = 'close';
|
10726
|
+
this.supportRequested = false;
|
10658
10727
|
this.shopGPTAPI.sendEvent('chatbotClosed');
|
10659
10728
|
};
|
10660
10729
|
return x `
|
@@ -10670,7 +10739,9 @@ class ShopGPT extends i$1 {
|
|
10670
10739
|
@submit-user-data=${this.submitUserData}
|
10671
10740
|
>
|
10672
10741
|
<popup-view
|
10673
|
-
.prompts=${this.
|
10742
|
+
.prompts=${this.supportRequested
|
10743
|
+
? SUPPORT_PROMPTS
|
10744
|
+
: this.quickPrompts}
|
10674
10745
|
.brandName=${this.brandName}
|
10675
10746
|
.isFailed=${this.isFailed}
|
10676
10747
|
.isLoadingHistory=${this.isLoadingHistory}
|
@@ -10710,7 +10781,7 @@ class ShopGPT extends i$1 {
|
|
10710
10781
|
>
|
10711
10782
|
<chatbot-icon .css=${this.css}></chatbot-icon>
|
10712
10783
|
</button>
|
10713
|
-
${((_a = this.nudge) === null || _a === void 0 ? void 0 : _a.show) && this.showNudge
|
10784
|
+
${(hasNudgeOverride() || ((_a = this.nudge) === null || _a === void 0 ? void 0 : _a.show)) && this.showNudge
|
10714
10785
|
? x ` <div class="nudge">
|
10715
10786
|
<chat-nudge
|
10716
10787
|
.brandName=${this.brandName}
|
@@ -10735,6 +10806,13 @@ class ShopGPT extends i$1 {
|
|
10735
10806
|
}
|
10736
10807
|
startNudgeTimer() {
|
10737
10808
|
var _a, _b;
|
10809
|
+
if (hasNudgeOverride()) {
|
10810
|
+
this.nudgeTimer = window.setTimeout(() => {
|
10811
|
+
this.playNudgeSound();
|
10812
|
+
this.showNudge = true;
|
10813
|
+
}, 2000);
|
10814
|
+
return;
|
10815
|
+
}
|
10738
10816
|
if (this.view !== 'modal' || !((_a = this.nudge) === null || _a === void 0 ? void 0 : _a.show)) {
|
10739
10817
|
return;
|
10740
10818
|
}
|
@@ -10751,6 +10829,13 @@ class ShopGPT extends i$1 {
|
|
10751
10829
|
}
|
10752
10830
|
playNudgeSound() {
|
10753
10831
|
var _a;
|
10832
|
+
if (hasNudgeOverride()) {
|
10833
|
+
const audio = new Audio(soothingWaterDropSound);
|
10834
|
+
audio
|
10835
|
+
.play()
|
10836
|
+
.catch((error) => logger.error('Error playing nudge sound', error));
|
10837
|
+
return;
|
10838
|
+
}
|
10754
10839
|
if (!((_a = this.nudge) === null || _a === void 0 ? void 0 : _a.sound) || !navigator.userActivation.hasBeenActive) {
|
10755
10840
|
return;
|
10756
10841
|
}
|
@@ -10841,6 +10926,10 @@ __decorate([
|
|
10841
10926
|
r$1(),
|
10842
10927
|
__metadata("design:type", Object)
|
10843
10928
|
], ShopGPT.prototype, "shouldAskUserEmail", void 0);
|
10929
|
+
__decorate([
|
10930
|
+
r$1(),
|
10931
|
+
__metadata("design:type", Object)
|
10932
|
+
], ShopGPT.prototype, "supportRequested", void 0);
|
10844
10933
|
if (!customElements.get('shop-gpt')) {
|
10845
10934
|
customElements.define('shop-gpt', ShopGPT);
|
10846
10935
|
}
|
package/package.json
CHANGED
@@ -6,6 +6,92 @@ if (typeof window != 'undefined') {
|
|
6
6
|
(_a$1 = window[registryKey]) !== null && _a$1 !== void 0 ? _a$1 : (window[registryKey] = {});
|
7
7
|
}
|
8
8
|
|
9
|
+
const CACHE_KEY = 'shop_gpt_currency_rates';
|
10
|
+
const CACHE_DURATION = 14400000; // 4 hours
|
11
|
+
let ratesCache = null;
|
12
|
+
let ratesPromise = null;
|
13
|
+
const getCachedRatesFromStorage = () => {
|
14
|
+
try {
|
15
|
+
const cached = localStorage.getItem(CACHE_KEY);
|
16
|
+
if (!cached) {
|
17
|
+
return null;
|
18
|
+
}
|
19
|
+
const data = JSON.parse(cached);
|
20
|
+
if (Date.now() > data.expiresAt) {
|
21
|
+
localStorage.removeItem(CACHE_KEY);
|
22
|
+
return null;
|
23
|
+
}
|
24
|
+
return data.rates;
|
25
|
+
}
|
26
|
+
catch (error) {
|
27
|
+
return null;
|
28
|
+
}
|
29
|
+
};
|
30
|
+
const setCachedRatesToStorage = (rates) => {
|
31
|
+
try {
|
32
|
+
const data = {
|
33
|
+
rates,
|
34
|
+
timestamp: Date.now(),
|
35
|
+
expiresAt: Date.now() + CACHE_DURATION,
|
36
|
+
};
|
37
|
+
localStorage.setItem(CACHE_KEY, JSON.stringify(data));
|
38
|
+
}
|
39
|
+
catch (error) {
|
40
|
+
// Storage might be full or disabled
|
41
|
+
}
|
42
|
+
};
|
43
|
+
const fetchRatesFromShopify = async () => {
|
44
|
+
try {
|
45
|
+
const response = await fetch('https://cdn.shopify.com/s/javascripts/currencies.js');
|
46
|
+
if (!response.ok) {
|
47
|
+
throw new Error(`HTTP error! status: ${response.status} ${response.statusText}`);
|
48
|
+
}
|
49
|
+
const text = await response.text();
|
50
|
+
const ratesMatch = text.match(/rates:\{([^}]+)\}/);
|
51
|
+
if (!ratesMatch) {
|
52
|
+
throw new Error('Could not parse currency rates from response');
|
53
|
+
}
|
54
|
+
const ratesString = ratesMatch[1];
|
55
|
+
const rates = {};
|
56
|
+
const ratePairs = ratesString.split(',');
|
57
|
+
for (const pair of ratePairs) {
|
58
|
+
const [currency, rate] = pair.split(':');
|
59
|
+
if (currency && rate) {
|
60
|
+
const rawRate = parseFloat(rate.trim());
|
61
|
+
rates[currency.trim()] = 1 / rawRate;
|
62
|
+
}
|
63
|
+
}
|
64
|
+
setCachedRatesToStorage(rates);
|
65
|
+
return rates;
|
66
|
+
}
|
67
|
+
catch (error) {
|
68
|
+
return {};
|
69
|
+
}
|
70
|
+
};
|
71
|
+
const getRatesLazy = async () => {
|
72
|
+
if (ratesCache) {
|
73
|
+
return ratesCache;
|
74
|
+
}
|
75
|
+
const storedRates = getCachedRatesFromStorage();
|
76
|
+
if (storedRates) {
|
77
|
+
ratesCache = storedRates;
|
78
|
+
return storedRates;
|
79
|
+
}
|
80
|
+
if (ratesPromise) {
|
81
|
+
return ratesPromise;
|
82
|
+
}
|
83
|
+
ratesPromise = fetchRatesFromShopify();
|
84
|
+
ratesCache = await ratesPromise;
|
85
|
+
return ratesCache;
|
86
|
+
};
|
87
|
+
const ensureRatesLoaded = async () => {
|
88
|
+
const rates = await getRatesLazy();
|
89
|
+
return rates;
|
90
|
+
};
|
91
|
+
if (typeof window !== 'undefined') {
|
92
|
+
getRatesLazy();
|
93
|
+
}
|
94
|
+
|
9
95
|
var _a, _b;
|
10
96
|
var _c;
|
11
97
|
const addItemToCart = (fetchOverride, itemsToAdd) => fetchOverride(`${window.Shopify.routes.root}cart/add.js`, {
|
@@ -25,11 +111,33 @@ const createShopApi = (fetchOverride = window.fetch) => ({
|
|
25
111
|
throw new Error(`Could not add items`, { cause: await response.text() });
|
26
112
|
}
|
27
113
|
},
|
28
|
-
getSiteCurrency() {
|
114
|
+
async getSiteCurrency() {
|
29
115
|
var _a, _b, _c, _d;
|
116
|
+
const currency = ((_b = (_a = window.Shopify) === null || _a === void 0 ? void 0 : _a.currency) === null || _b === void 0 ? void 0 : _b.active) || 'USD';
|
117
|
+
const shopifyRate = (_d = (_c = window.Shopify) === null || _c === void 0 ? void 0 : _c.currency) === null || _d === void 0 ? void 0 : _d.rate;
|
118
|
+
if (currency === 'USD') {
|
119
|
+
return {
|
120
|
+
currency: 'USD',
|
121
|
+
rate: 1,
|
122
|
+
};
|
123
|
+
}
|
124
|
+
if (shopifyRate) {
|
125
|
+
return {
|
126
|
+
currency,
|
127
|
+
rate: parseFloat(shopifyRate),
|
128
|
+
};
|
129
|
+
}
|
130
|
+
const rates = await ensureRatesLoaded();
|
131
|
+
if (rates === null || rates === void 0 ? void 0 : rates[currency]) {
|
132
|
+
const rate = rates[currency];
|
133
|
+
return {
|
134
|
+
currency,
|
135
|
+
rate,
|
136
|
+
};
|
137
|
+
}
|
30
138
|
return {
|
31
|
-
currency:
|
32
|
-
rate:
|
139
|
+
currency: 'USD',
|
140
|
+
rate: 1,
|
33
141
|
};
|
34
142
|
},
|
35
143
|
getCurrentProductHandle() {
|
package/stores/shopify/index.js
CHANGED
@@ -7,6 +7,92 @@
|
|
7
7
|
(_a$1 = window[registryKey]) !== null && _a$1 !== void 0 ? _a$1 : (window[registryKey] = {});
|
8
8
|
}
|
9
9
|
|
10
|
+
const CACHE_KEY = 'shop_gpt_currency_rates';
|
11
|
+
const CACHE_DURATION = 14400000; // 4 hours
|
12
|
+
let ratesCache = null;
|
13
|
+
let ratesPromise = null;
|
14
|
+
const getCachedRatesFromStorage = () => {
|
15
|
+
try {
|
16
|
+
const cached = localStorage.getItem(CACHE_KEY);
|
17
|
+
if (!cached) {
|
18
|
+
return null;
|
19
|
+
}
|
20
|
+
const data = JSON.parse(cached);
|
21
|
+
if (Date.now() > data.expiresAt) {
|
22
|
+
localStorage.removeItem(CACHE_KEY);
|
23
|
+
return null;
|
24
|
+
}
|
25
|
+
return data.rates;
|
26
|
+
}
|
27
|
+
catch (error) {
|
28
|
+
return null;
|
29
|
+
}
|
30
|
+
};
|
31
|
+
const setCachedRatesToStorage = (rates) => {
|
32
|
+
try {
|
33
|
+
const data = {
|
34
|
+
rates,
|
35
|
+
timestamp: Date.now(),
|
36
|
+
expiresAt: Date.now() + CACHE_DURATION,
|
37
|
+
};
|
38
|
+
localStorage.setItem(CACHE_KEY, JSON.stringify(data));
|
39
|
+
}
|
40
|
+
catch (error) {
|
41
|
+
// Storage might be full or disabled
|
42
|
+
}
|
43
|
+
};
|
44
|
+
const fetchRatesFromShopify = async () => {
|
45
|
+
try {
|
46
|
+
const response = await fetch('https://cdn.shopify.com/s/javascripts/currencies.js');
|
47
|
+
if (!response.ok) {
|
48
|
+
throw new Error(`HTTP error! status: ${response.status} ${response.statusText}`);
|
49
|
+
}
|
50
|
+
const text = await response.text();
|
51
|
+
const ratesMatch = text.match(/rates:\{([^}]+)\}/);
|
52
|
+
if (!ratesMatch) {
|
53
|
+
throw new Error('Could not parse currency rates from response');
|
54
|
+
}
|
55
|
+
const ratesString = ratesMatch[1];
|
56
|
+
const rates = {};
|
57
|
+
const ratePairs = ratesString.split(',');
|
58
|
+
for (const pair of ratePairs) {
|
59
|
+
const [currency, rate] = pair.split(':');
|
60
|
+
if (currency && rate) {
|
61
|
+
const rawRate = parseFloat(rate.trim());
|
62
|
+
rates[currency.trim()] = 1 / rawRate;
|
63
|
+
}
|
64
|
+
}
|
65
|
+
setCachedRatesToStorage(rates);
|
66
|
+
return rates;
|
67
|
+
}
|
68
|
+
catch (error) {
|
69
|
+
return {};
|
70
|
+
}
|
71
|
+
};
|
72
|
+
const getRatesLazy = async () => {
|
73
|
+
if (ratesCache) {
|
74
|
+
return ratesCache;
|
75
|
+
}
|
76
|
+
const storedRates = getCachedRatesFromStorage();
|
77
|
+
if (storedRates) {
|
78
|
+
ratesCache = storedRates;
|
79
|
+
return storedRates;
|
80
|
+
}
|
81
|
+
if (ratesPromise) {
|
82
|
+
return ratesPromise;
|
83
|
+
}
|
84
|
+
ratesPromise = fetchRatesFromShopify();
|
85
|
+
ratesCache = await ratesPromise;
|
86
|
+
return ratesCache;
|
87
|
+
};
|
88
|
+
const ensureRatesLoaded = async () => {
|
89
|
+
const rates = await getRatesLazy();
|
90
|
+
return rates;
|
91
|
+
};
|
92
|
+
if (typeof window !== 'undefined') {
|
93
|
+
getRatesLazy();
|
94
|
+
}
|
95
|
+
|
10
96
|
var _a, _b;
|
11
97
|
var _c;
|
12
98
|
const addItemToCart = (fetchOverride, itemsToAdd) => fetchOverride(`${window.Shopify.routes.root}cart/add.js`, {
|
@@ -26,11 +112,33 @@
|
|
26
112
|
throw new Error(`Could not add items`, { cause: await response.text() });
|
27
113
|
}
|
28
114
|
},
|
29
|
-
getSiteCurrency() {
|
115
|
+
async getSiteCurrency() {
|
30
116
|
var _a, _b, _c, _d;
|
117
|
+
const currency = ((_b = (_a = window.Shopify) === null || _a === void 0 ? void 0 : _a.currency) === null || _b === void 0 ? void 0 : _b.active) || 'USD';
|
118
|
+
const shopifyRate = (_d = (_c = window.Shopify) === null || _c === void 0 ? void 0 : _c.currency) === null || _d === void 0 ? void 0 : _d.rate;
|
119
|
+
if (currency === 'USD') {
|
120
|
+
return {
|
121
|
+
currency: 'USD',
|
122
|
+
rate: 1,
|
123
|
+
};
|
124
|
+
}
|
125
|
+
if (shopifyRate) {
|
126
|
+
return {
|
127
|
+
currency,
|
128
|
+
rate: parseFloat(shopifyRate),
|
129
|
+
};
|
130
|
+
}
|
131
|
+
const rates = await ensureRatesLoaded();
|
132
|
+
if (rates === null || rates === void 0 ? void 0 : rates[currency]) {
|
133
|
+
const rate = rates[currency];
|
134
|
+
return {
|
135
|
+
currency,
|
136
|
+
rate,
|
137
|
+
};
|
138
|
+
}
|
31
139
|
return {
|
32
|
-
currency:
|
33
|
-
rate:
|
140
|
+
currency: 'USD',
|
141
|
+
rate: 1,
|
34
142
|
};
|
35
143
|
},
|
36
144
|
getCurrentProductHandle() {
|