@blotoutio/providers-shop-gpt-sdk 1.22.2 → 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.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', 'United Kingdom of Great Britain and Northern Ireland'],
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
  });
@@ -5898,12 +5911,26 @@ class ProductItem extends TWLitElement$3 {
5898
5911
  this.isStylesheetInjected = true;
5899
5912
  }
5900
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
+ }
5901
5928
  getLocalPrice(price) {
5902
- if (!this.siteCurrency) {
5929
+ if (!this.resolvedCurrency) {
5903
5930
  return price;
5904
5931
  }
5905
- const localPrice = parseFloat(price) * this.siteCurrency.rate;
5906
- return formatMoney(localPrice, this.siteCurrency.currency);
5932
+ const localPrice = parseFloat(price) * this.resolvedCurrency.rate;
5933
+ return formatMoney(localPrice, this.resolvedCurrency.currency);
5907
5934
  }
5908
5935
  getComparedAtPrice(comparedAtPrice, price) {
5909
5936
  if (!comparedAtPrice ||
@@ -6051,6 +6078,10 @@ __decorate([
6051
6078
  n$1({ type: String }),
6052
6079
  __metadata("design:type", String)
6053
6080
  ], ProductItem.prototype, "css", void 0);
6081
+ __decorate([
6082
+ r$1(),
6083
+ __metadata("design:type", Object)
6084
+ ], ProductItem.prototype, "resolvedCurrency", void 0);
6054
6085
  if (!customElements.get('product-item')) {
6055
6086
  customElements.define('product-item', ProductItem);
6056
6087
  }
@@ -10085,6 +10116,7 @@ const parseMessage = (message, parseDataAsJSON) => {
10085
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';
10086
10117
 
10087
10118
  const DIALOG_DELAY = 1000;
10119
+ const SUPPORT_PROMPTS = 'Where is my order,Tracking link for my order,Return my order,Cancel my order';
10088
10120
  const normalizePath = (path) => path.replace(/\/$/, '');
10089
10121
  class ShopGPT extends i$1 {
10090
10122
  constructor() {
@@ -10106,6 +10138,7 @@ class ShopGPT extends i$1 {
10106
10138
  this.hasUserInteracted = false;
10107
10139
  this.showNudge = false;
10108
10140
  this.shouldAskUserEmail = false;
10141
+ this.supportRequested = false;
10109
10142
  this.loadData = async () => {
10110
10143
  if (!this.shopGPTAPI) {
10111
10144
  return;
@@ -10333,6 +10366,9 @@ class ShopGPT extends i$1 {
10333
10366
  this.isFailed = false;
10334
10367
  const currentThreadId = this.selectedThreadId;
10335
10368
  this.selectedThreadId = threadId;
10369
+ if (!threadId) {
10370
+ this.supportRequested = false;
10371
+ }
10336
10372
  if (threadId && !silent) {
10337
10373
  this.shopGPTAPI.sendEvent('switchThread', undefined, undefined, {
10338
10374
  previousThread: currentThreadId,
@@ -10531,7 +10567,8 @@ class ShopGPT extends i$1 {
10531
10567
  try {
10532
10568
  this.isPreviousMessagePrompt = isPrompt;
10533
10569
  if (!isPrompt) {
10534
- this.shopGPTAPI.sendEvent('queryInteractions', this.getSiteCurrency().currency, undefined, {
10570
+ const siteCurrency = await this.getSiteCurrency();
10571
+ this.shopGPTAPI.sendEvent('queryInteractions', siteCurrency.currency, undefined, {
10535
10572
  query: message,
10536
10573
  threadId: this.selectedThreadId,
10537
10574
  });
@@ -10564,9 +10601,10 @@ class ShopGPT extends i$1 {
10564
10601
  })
10565
10602
  .catch(logger.error);
10566
10603
  }
10567
- sendEvent(e) {
10604
+ async sendEvent(e) {
10568
10605
  e.stopPropagation();
10569
- this.shopGPTAPI.sendEvent(e.detail.action, this.getSiteCurrency().currency, e.detail.actionData, e.detail.clickData);
10606
+ const siteCurrency = await this.getSiteCurrency();
10607
+ this.shopGPTAPI.sendEvent(e.detail.action, siteCurrency.currency, e.detail.actionData, e.detail.clickData);
10570
10608
  }
10571
10609
  closeNudge(e) {
10572
10610
  e.stopPropagation();
@@ -10575,12 +10613,15 @@ class ShopGPT extends i$1 {
10575
10613
  }
10576
10614
  async handleNudgePromptClick(e) {
10577
10615
  e.stopPropagation();
10578
- this.openModal();
10579
10616
  await this.setSelectedThreadId('');
10580
10617
  await this.createChatThread({ title: '' }, false);
10581
10618
  if (e.detail.id === 'query') {
10582
10619
  this.sendMessageToServer(e, e.detail.message, true);
10583
10620
  }
10621
+ if (e.detail.id === 'support') {
10622
+ this.supportRequested = true;
10623
+ }
10624
+ this.openModal();
10584
10625
  }
10585
10626
  submitUserData(e) {
10586
10627
  e.stopPropagation();
@@ -10591,11 +10632,12 @@ class ShopGPT extends i$1 {
10591
10632
  });
10592
10633
  this.shouldAskUserEmail = false;
10593
10634
  }
10594
- productClicked(e) {
10635
+ async productClicked(e) {
10595
10636
  var _a, _b;
10596
10637
  e.stopPropagation();
10597
10638
  setProductAction(this.destination, this.sessionId, e.detail.id, 'clicked', true);
10598
- this.shopGPTAPI.sendEvent('productRecommendationClicked', this.getSiteCurrency().currency, {
10639
+ const siteCurrency = await this.getSiteCurrency();
10640
+ this.shopGPTAPI.sendEvent('productRecommendationClicked', siteCurrency.currency, {
10599
10641
  productId: e.detail.id,
10600
10642
  value: e.detail.value,
10601
10643
  isPrompt: this.isPreviousMessagePrompt,
@@ -10603,15 +10645,15 @@ class ShopGPT extends i$1 {
10603
10645
  threadId: this.selectedThreadId,
10604
10646
  query: (_a = e.detail.query) !== null && _a !== void 0 ? _a : '',
10605
10647
  response: (_b = e.detail.response) !== null && _b !== void 0 ? _b : '',
10606
- currency: this.getSiteCurrency().currency,
10648
+ currency: siteCurrency.currency,
10607
10649
  variantId: e.detail.variantId,
10608
10650
  url: e.detail.url,
10609
10651
  title: e.detail.title,
10610
10652
  rank: e.detail.rank,
10611
10653
  }, true);
10612
10654
  }
10613
- getSiteCurrency() {
10614
- return this.storeAPI.getSiteCurrency();
10655
+ async getSiteCurrency() {
10656
+ return await this.storeAPI.getSiteCurrency();
10615
10657
  }
10616
10658
  overlayMode() {
10617
10659
  const thread = this.chatThreads.get(this.selectedThreadId);
@@ -10681,6 +10723,7 @@ class ShopGPT extends i$1 {
10681
10723
  const thread = this.chatThreads.get(this.selectedThreadId);
10682
10724
  const closeModal = () => {
10683
10725
  this.modalState = 'close';
10726
+ this.supportRequested = false;
10684
10727
  this.shopGPTAPI.sendEvent('chatbotClosed');
10685
10728
  };
10686
10729
  return x `
@@ -10696,7 +10739,9 @@ class ShopGPT extends i$1 {
10696
10739
  @submit-user-data=${this.submitUserData}
10697
10740
  >
10698
10741
  <popup-view
10699
- .prompts=${this.quickPrompts}
10742
+ .prompts=${this.supportRequested
10743
+ ? SUPPORT_PROMPTS
10744
+ : this.quickPrompts}
10700
10745
  .brandName=${this.brandName}
10701
10746
  .isFailed=${this.isFailed}
10702
10747
  .isLoadingHistory=${this.isLoadingHistory}
@@ -10736,7 +10781,7 @@ class ShopGPT extends i$1 {
10736
10781
  >
10737
10782
  <chatbot-icon .css=${this.css}></chatbot-icon>
10738
10783
  </button>
10739
- ${((_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
10740
10785
  ? x ` <div class="nudge">
10741
10786
  <chat-nudge
10742
10787
  .brandName=${this.brandName}
@@ -10761,6 +10806,13 @@ class ShopGPT extends i$1 {
10761
10806
  }
10762
10807
  startNudgeTimer() {
10763
10808
  var _a, _b;
10809
+ if (hasNudgeOverride()) {
10810
+ this.nudgeTimer = window.setTimeout(() => {
10811
+ this.playNudgeSound();
10812
+ this.showNudge = true;
10813
+ }, 2000);
10814
+ return;
10815
+ }
10764
10816
  if (this.view !== 'modal' || !((_a = this.nudge) === null || _a === void 0 ? void 0 : _a.show)) {
10765
10817
  return;
10766
10818
  }
@@ -10777,6 +10829,13 @@ class ShopGPT extends i$1 {
10777
10829
  }
10778
10830
  playNudgeSound() {
10779
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
+ }
10780
10839
  if (!((_a = this.nudge) === null || _a === void 0 ? void 0 : _a.sound) || !navigator.userActivation.hasBeenActive) {
10781
10840
  return;
10782
10841
  }
@@ -10867,6 +10926,10 @@ __decorate([
10867
10926
  r$1(),
10868
10927
  __metadata("design:type", Object)
10869
10928
  ], ShopGPT.prototype, "shouldAskUserEmail", void 0);
10929
+ __decorate([
10930
+ r$1(),
10931
+ __metadata("design:type", Object)
10932
+ ], ShopGPT.prototype, "supportRequested", void 0);
10870
10933
  if (!customElements.get('shop-gpt')) {
10871
10934
  customElements.define('shop-gpt', ShopGPT);
10872
10935
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blotoutio/providers-shop-gpt-sdk",
3
- "version": "1.22.2",
3
+ "version": "1.22.3",
4
4
  "description": "Shop GPT SDK for EdgeTag",
5
5
  "author": "Blotout",
6
6
  "license": "MIT",
@@ -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: ((_b = (_a = window.Shopify) === null || _a === void 0 ? void 0 : _a.currency) === null || _b === void 0 ? void 0 : _b.active) || 'USD',
32
- rate: parseFloat(((_d = (_c = window.Shopify) === null || _c === void 0 ? void 0 : _c.currency) === null || _d === void 0 ? void 0 : _d.rate) || '1'),
139
+ currency: 'USD',
140
+ rate: 1,
33
141
  };
34
142
  },
35
143
  getCurrentProductHandle() {
@@ -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: ((_b = (_a = window.Shopify) === null || _a === void 0 ? void 0 : _a.currency) === null || _b === void 0 ? void 0 : _b.active) || 'USD',
33
- rate: parseFloat(((_d = (_c = window.Shopify) === null || _c === void 0 ? void 0 : _c.currency) === null || _d === void 0 ? void 0 : _d.rate) || '1'),
140
+ currency: 'USD',
141
+ rate: 1,
34
142
  };
35
143
  },
36
144
  getCurrentProductHandle() {