@postnord/pn-marketweb-components 4.1.2 → 4.2.1

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.
Files changed (72) hide show
  1. package/cjs/pn-chat-message_2.cjs.entry.js +5 -5
  2. package/cjs/pn-chat-message_2.cjs.entry.js.map +1 -1
  3. package/cjs/pn-chat.cjs.entry.js +18 -6
  4. package/cjs/pn-chat.cjs.entry.js.map +1 -1
  5. package/cjs/pn-language-selector_9.cjs.entry.js +2 -2
  6. package/cjs/pn-language-selector_9.cjs.entry.js.map +1 -1
  7. package/cjs/pn-marketweb-siteheader-login-linklist.cjs.entry.js +1 -1
  8. package/cjs/pn-marketweb-siteheader-login-linklist.cjs.entry.js.map +1 -1
  9. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login-linklist.js +1 -1
  10. package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login-linklist.js.map +1 -1
  11. package/collection/components/navigation/pn-language-selector/pn-language-selector.js +1 -1
  12. package/collection/components/navigation/pn-language-selector/pn-language-selector.js.map +1 -1
  13. package/collection/components/navigation/pn-site-selector/pn-site-selector.js +1 -1
  14. package/collection/components/navigation/pn-site-selector/pn-site-selector.js.map +1 -1
  15. package/collection/components/widgets/pn-chat/pn-chat-message/pn-chat-message.css +27 -10
  16. package/collection/components/widgets/pn-chat/pn-chat-message/pn-chat-message.js +3 -3
  17. package/collection/components/widgets/pn-chat/pn-chat-message/pn-chat-message.js.map +1 -1
  18. package/collection/components/widgets/pn-chat/pn-chat-stories-constants.js +18 -0
  19. package/collection/components/widgets/pn-chat/pn-chat-stories-constants.js.map +1 -1
  20. package/collection/components/widgets/pn-chat/pn-chat.css +24 -13
  21. package/collection/components/widgets/pn-chat/pn-chat.js +17 -5
  22. package/collection/components/widgets/pn-chat/pn-chat.js.map +1 -1
  23. package/collection/components/widgets/pn-chat/pn-chat.stories.js +43 -0
  24. package/collection/components/widgets/pn-chat/pn-chat.stories.js.map +1 -1
  25. package/components/pn-chat-message2.js +5 -5
  26. package/components/pn-chat-message2.js.map +1 -1
  27. package/components/pn-chat.js +18 -6
  28. package/components/pn-chat.js.map +1 -1
  29. package/components/pn-language-selector2.js +1 -1
  30. package/components/pn-language-selector2.js.map +1 -1
  31. package/components/pn-marketweb-siteheader-login-linklist2.js +1 -1
  32. package/components/pn-marketweb-siteheader-login-linklist2.js.map +1 -1
  33. package/components/pn-site-selector2.js +1 -1
  34. package/components/pn-site-selector2.js.map +1 -1
  35. package/esm/pn-chat-message_2.entry.js +5 -5
  36. package/esm/pn-chat-message_2.entry.js.map +1 -1
  37. package/esm/pn-chat.entry.js +18 -6
  38. package/esm/pn-chat.entry.js.map +1 -1
  39. package/esm/pn-language-selector_9.entry.js +2 -2
  40. package/esm/pn-language-selector_9.entry.js.map +1 -1
  41. package/esm/pn-marketweb-siteheader-login-linklist.entry.js +1 -1
  42. package/esm/pn-marketweb-siteheader-login-linklist.entry.js.map +1 -1
  43. package/package.json +14 -17
  44. package/pn-market-web-components/{p-ab291285.entry.js → p-08c96012.entry.js} +2 -2
  45. package/pn-market-web-components/{p-ab291285.entry.js.map → p-08c96012.entry.js.map} +1 -1
  46. package/pn-market-web-components/p-4a8ef165.entry.js +2 -0
  47. package/pn-market-web-components/p-4a8ef165.entry.js.map +1 -0
  48. package/pn-market-web-components/{p-d5d1098a.entry.js → p-4c8bda8f.entry.js} +2 -2
  49. package/pn-market-web-components/{p-d5d1098a.entry.js.map → p-4c8bda8f.entry.js.map} +1 -1
  50. package/pn-market-web-components/p-6f6ed930.entry.js +2 -0
  51. package/pn-market-web-components/p-6f6ed930.entry.js.map +1 -0
  52. package/pn-market-web-components/pn-market-web-components.esm.js +1 -1
  53. package/types/components/widgets/pn-chat/pn-chat-stories-constants.d.ts +18 -0
  54. package/types/components/widgets/pn-chat/pn-chat.stories.d.ts +1 -0
  55. package/umd/modules/@postnord/web-components/cjs/pn-date-picker.cjs.entry.js +2 -2
  56. package/umd/modules/@postnord/web-components/collection/components/input/pn-date-picker/pn-date-picker.js +2 -2
  57. package/umd/modules/@postnord/web-components/components/pn-date-picker.js +1 -1
  58. package/umd/modules/@postnord/web-components/esm/pn-date-picker.entry.js +2 -2
  59. package/umd/modules/@postnord/web-components/hydrate/index.js +2 -2
  60. package/umd/modules/@postnord/web-components/hydrate/index.mjs +2 -2
  61. package/umd/modules/@postnord/web-components/package.json +1 -1
  62. package/umd/modules/@postnord/web-components/postnord-web-components/{p-c3e851f9.entry.js → p-153311c8.entry.js} +1 -1
  63. package/umd/modules/@postnord/web-components/postnord-web-components/postnord-web-components.esm.js +1 -1
  64. package/umd/pn-marketweb-init.js +1 -1
  65. package/umd/pn-marketweb-salesforce.js +1 -1
  66. package/collection/components/data-visualization/pn-stats-info/pn-stats-info-data/animationHelper.test.js +0 -95
  67. package/collection/components/data-visualization/pn-stats-info/pn-stats-info-data/animationHelper.test.js.map +0 -1
  68. package/pn-market-web-components/p-8afc2d30.entry.js +0 -2
  69. package/pn-market-web-components/p-8afc2d30.entry.js.map +0 -1
  70. package/pn-market-web-components/p-f97e58b8.entry.js +0 -2
  71. package/pn-market-web-components/p-f97e58b8.entry.js.map +0 -1
  72. package/types/components/data-visualization/pn-stats-info/pn-stats-info-data/animationHelper.test.d.ts +0 -1
@@ -6,10 +6,10 @@ const index = require('./index-9a9efa1c.js');
6
6
  const arrow_left = require('./arrow_left-71879efe.js');
7
7
  const arrow_right = require('./arrow_right-66958158.js');
8
8
 
9
- const icon = '<svg class="pn-icon-svg" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M2 12C2 6.477 6.477 2 12 2s10 4.477 10 10-4.477 10-10 10c-.97 0-1.908-.138-2.797-.397-1.242-.36-2.352-.61-3.409-.464l-2.095.29A1 1 0 0 1 2.572 20.3l.289-2.095c.146-1.057-.103-2.167-.464-3.41A10 10 0 0 1 2 12m10-8a8 8 0 0 0-7.683 10.239c.364 1.252.734 2.724.525 4.24l-.108.788.787-.11c1.516-.208 2.988.162 4.24.526.71.206 1.46.317 2.239.317a8 8 0 1 0 0-16m-.034 4.5c-.445 0-.84.285-.981.707l-.037.11a1 1 0 0 1-1.897-.633l.037-.11A3.03 3.03 0 0 1 11.966 6.5h.18C13.734 6.5 15 7.807 15 9.371a2.83 2.83 0 0 1-1.553 2.523.81.81 0 0 0-.447.724V13a1 1 0 1 1-2 0v-.382c0-1.064.6-2.037 1.553-2.512A.83.83 0 0 0 13 9.37a.87.87 0 0 0-.854-.871zm.034 6a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3" clip-rule="evenodd"/></svg>';
10
- const faq = icon;
9
+ const icon = '<svg class="pn-icon-svg" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" d="M16.035 5.52c.718-.705 1.75-.682 2.444 0 .692.678.693 1.688.014 2.326l-.021.02-1.68 1.68a1 1 0 0 0 1.415 1.414l1.669-1.669c1.544-1.466 1.452-3.779.003-5.2s-3.727-1.487-5.244 0l-4.507 4.42c-1.548 1.465-1.457 3.781-.007 5.203a1 1 0 1 0 1.4-1.428c-.692-.68-.692-1.688-.014-2.327l.014-.014z"/><path fill="#000" d="M14.762 10.254a1 1 0 1 0-1.33 1.492c.756.675.754 1.63.014 2.263l-.015.013-4.965 4.426a2.177 2.177 0 0 1-2.897 0c-.757-.675-.755-1.63-.015-2.262l.026-.024 2.097-1.926a1 1 0 1 0-1.353-1.472l-2.085 1.915c-1.704 1.471-1.6 3.837 0 5.262a4.177 4.177 0 0 0 5.558 0l4.958-4.42c1.71-1.47 1.607-3.841.007-5.267"/></svg>';
10
+ const link = icon;
11
11
 
12
- const pnChatMessageCss = "pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}@media screen and (max-width: 767px){.sr-only-mobile{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}}pn-chat-message{display:flex;text-align:left}pn-chat-message.user,pn-chat-message.buttonresponse{justify-content:flex-end}pn-chat-message.system-message{text-align:center;justify-content:center}pn-chat-message .message-container{border-radius:0.8rem;display:flex;gap:1rem;max-width:75%;overflow-x:hidden}pn-chat-message .message-container .category{width:2.6rem}pn-chat-message .message-container.bot .message,pn-chat-message .message-container.agent .message{background-color:#f3f2f2}pn-chat-message .message-container.link{flex-basis:100%}pn-chat-message .message-container.link .message{background-color:#effbff;box-shadow:0px 0.6px 1.8px 0px rgba(0, 0, 0, 0.1), 0px 3.2px 7.2px 0px rgba(0, 0, 0, 0.13);transition:box-shadow ease-in-out 0.5s;padding:0}pn-chat-message .message-container.link .message:hover{box-shadow:0px 0.6px 1.8px 0px rgba(0, 0, 0, 0.2), 0px 3.2px 7.2px 0px rgba(0, 0, 0, 0.23)}pn-chat-message .message-container.link .message a{color:#000000;display:flex;justify-content:space-between;padding:1rem 1.6rem;text-decoration:none}pn-chat-message .message-container.link .business.message{background-color:#fdefee}pn-chat-message .message-container.button{flex-basis:100%;text-align:center;max-width:unset}pn-chat-message .message-container.button .message{padding:0}pn-chat-message .message-container.card{border:solid 1px #d3cecb;border-radius:1.6rem;flex-basis:100%;max-width:100%}pn-chat-message .message-container.card .message{display:flex;flex-direction:column;gap:0.8rem;padding:1.6rem}pn-chat-message .message-container.card .card-heading{font-size:1.6rem;line-height:2.4rem;font-weight:700}pn-chat-message .message-container.card .cta{display:flex;flex-direction:row;gap:0.5rem}pn-chat-message .message-container.card .read-more{align-self:flex-start;margin-top:auto}pn-chat-message .message-container.user .message,pn-chat-message .message-container.buttonresponse .message{background-color:#e0f8ff;color:#2d2013;border-radius:0.8rem 0.8rem 0 0.8rem}pn-chat-message .message-container .message{border-radius:0 0.8rem 0.8rem 0.8rem;display:inline-block;flex:1 1 auto;font-size:1.4rem;line-height:2rem;padding:1rem 1.6rem;word-wrap:break-word;overflow-wrap:break-word;white-space:normal;word-break:break-word}@media (max-width: 767px){pn-chat-message .message-container .message{font-size:1.6rem}}pn-chat-message .message-container.agent .category .pn-icon{background-color:#00a0d6;color:#ffffff;text-align:center;border-radius:50%;display:inline-block;width:2.5rem;height:2.5rem;font-weight:500;font-size:1.2rem;line-height:2.6rem}pn-chat-message[data-card]{height:100%}";
12
+ const pnChatMessageCss = "pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}@media screen and (max-width: 767px){.sr-only-mobile{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}}pn-chat-message{display:flex;text-align:left}pn-chat-message.user,pn-chat-message.buttonresponse{justify-content:flex-end}pn-chat-message.system-message{text-align:center;justify-content:center}pn-chat-message .message-container{border-radius:0.8rem;display:flex;gap:1rem;max-width:85%;overflow-x:hidden}pn-chat-message .message-container .category{width:2.6rem}pn-chat-message .message-container.user{max-width:75%}pn-chat-message .message-container.bot .message,pn-chat-message .message-container.agent .message,pn-chat-message .message-container.link .message{background-color:#f3f2f2}pn-chat-message .message-container.bot .category,pn-chat-message .message-container.agent .category,pn-chat-message .message-container.link .category{align-self:flex-end}pn-chat-message .message-container.link{flex-basis:100%}pn-chat-message .message-container.link .category{align-self:center}pn-chat-message .message-container.link .content{line-height:1.5}pn-chat-message .message-container.link .message{padding:0}pn-chat-message .message-container.link .message a{color:#005d92;font-weight:500;display:flex;justify-content:space-between;padding:1rem 1.6rem;text-decoration:underline}pn-chat-message .message-container.link .business.message{background-color:#fdefee}pn-chat-message .message-container.button{flex-basis:100%;text-align:center;max-width:unset}pn-chat-message .message-container.button .message{padding:0}pn-chat-message .message-container.button .pn-button{min-width:18rem}pn-chat-message .message-container.button .pn-button:disabled{color:#969087}pn-chat-message .message-container.button .pn-button:disabled .pn-button-bg{border-color:#f3f2f2;background-color:#f3f2f2}pn-chat-message .message-container.card{border:solid 1px #d3cecb;border-radius:1.6rem;flex-basis:100%;max-width:100%}pn-chat-message .message-container.card .message{display:flex;flex-direction:column;gap:0.8rem;padding:1.6rem}pn-chat-message .message-container.card .card-heading{font-size:1.6rem;line-height:2.4rem;font-weight:700}pn-chat-message .message-container.card .cta{display:flex;flex-direction:row;gap:0.5rem}pn-chat-message .message-container.card .read-more{align-self:flex-start;margin-top:auto}pn-chat-message .message-container.user .message,pn-chat-message .message-container.buttonresponse .message{background-color:#e0f8ff;color:#2d2013;border-radius:0.8rem 0.8rem 0 0.8rem}pn-chat-message .message-container .message{border-radius:0 0.8rem 0.8rem 0.8rem;display:inline-block;flex:1 1 auto;font-size:1.4rem;line-height:2rem;padding:1rem 1.6rem;word-wrap:break-word;overflow-wrap:break-word;white-space:normal;word-break:break-word}@media (max-width: 767px){pn-chat-message .message-container .message{font-size:1.6rem}}pn-chat-message .message-container.agent .category .pn-icon{background-color:#00a0d6;color:#ffffff;text-align:center;border-radius:50%;display:inline-block;width:2.5rem;height:2.5rem;font-weight:500;font-size:1.2rem;line-height:2.6rem}pn-chat-message[data-card]{height:100%}";
13
13
  const PnChatMessageStyle0 = pnChatMessageCss;
14
14
 
15
15
  const PnChatMessage = class {
@@ -29,7 +29,7 @@ const PnChatMessage = class {
29
29
  case 'Agent':
30
30
  return this.agentName;
31
31
  case 'Link':
32
- return faq;
32
+ return link;
33
33
  }
34
34
  return icon;
35
35
  }
@@ -48,7 +48,7 @@ const PnChatMessage = class {
48
48
  render() {
49
49
  const segmentClass = this.customerSegment?.toLowerCase() || '';
50
50
  const categoryClass = this.category?.toLowerCase() || '';
51
- return (index.h(index.Host, { key: '0bd86ed5a6709fca909aa09b9b8bf6c497c230a2', class: this.getMessageClass() }, index.h("div", { key: '190cdd88c6b715022bad825d19f97ef2720005b9', class: `message-container ${categoryClass}` }, this.getIcon() && (index.h("span", { key: 'd7ae83dba633e39b5cc08e38526acd3f3b2f8427', class: "category" }, index.h("pn-icon", { key: '8331458b12bc1669cba3cfc637abc2280516feec', icon: this.getIcon(), color: this.blue700, "aria-hidden": "true", role: "presentation" }))), index.h("span", { key: '5aa89b7fe5ff9f65f69453b23d835aad16c68190', class: `message ${segmentClass}` }, index.h("slot", { key: '1565b98e7b83884d8bc30a5dfcd9fce88e607a1d' })))));
51
+ return (index.h(index.Host, { key: 'ecf8acc954eed04ff21f75c0a371f3014c3f157e', class: this.getMessageClass() }, index.h("div", { key: '116ef983feb42adec2ab216af8d91301308216a8', class: `message-container ${categoryClass}` }, this.getIcon() && (index.h("span", { key: 'aa873a62b005f0290d9c7b8f8b7194a29582d5a8', class: "category" }, index.h("pn-icon", { key: 'd0ffed7af74c0729cad09ec2a74feff48be31718', icon: this.getIcon(), color: this.blue700, "aria-hidden": "true", role: "presentation" }))), index.h("span", { key: '61c88e4e7febf6b3da957006c5409e927aad768d', class: `message ${segmentClass}` }, index.h("slot", { key: '95e479cc6a6b4940ac01275affc27cc99585b8eb' })))));
52
52
  }
53
53
  };
54
54
  PnChatMessage.style = PnChatMessageStyle0;
@@ -1 +1 @@
1
- {"file":"pn-chat-message.pn-marketweb-carousel.entry.cjs.js","mappings":"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","names":["h","Host","arrow_left","arrow_right","index"],"sources":["node_modules/pn-design-assets/pn-assets/icons/faq.js","src/components/widgets/pn-chat/pn-chat-message/pn-chat-message.scss?tag=pn-chat-message","src/components/widgets/pn-chat/pn-chat-message/pn-chat-message.tsx","src/components/widgets/pn-marketweb-carousel/pn-marketweb-carousel.scss?tag=pn-marketweb-carousel","src/components/widgets/pn-marketweb-carousel/pn-marketweb-carousel.tsx"],"sourcesContent":["const icon = '<svg class=\"pn-icon-svg\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"#000\" fill-rule=\"evenodd\" d=\"M2 12C2 6.477 6.477 2 12 2s10 4.477 10 10-4.477 10-10 10c-.97 0-1.908-.138-2.797-.397-1.242-.36-2.352-.61-3.409-.464l-2.095.29A1 1 0 0 1 2.572 20.3l.289-2.095c.146-1.057-.103-2.167-.464-3.41A10 10 0 0 1 2 12m10-8a8 8 0 0 0-7.683 10.239c.364 1.252.734 2.724.525 4.24l-.108.788.787-.11c1.516-.208 2.988.162 4.24.526.71.206 1.46.317 2.239.317a8 8 0 1 0 0-16m-.034 4.5c-.445 0-.84.285-.981.707l-.037.11a1 1 0 0 1-1.897-.633l.037-.11A3.03 3.03 0 0 1 11.966 6.5h.18C13.734 6.5 15 7.807 15 9.371a2.83 2.83 0 0 1-1.553 2.523.81.81 0 0 0-.447.724V13a1 1 0 1 1-2 0v-.382c0-1.064.6-2.037 1.553-2.512A.83.83 0 0 0 13 9.37a.87.87 0 0 0-.854-.871zm.034 6a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3\" clip-rule=\"evenodd\"/></svg>';\nexport const faq = icon;\n","@import '../../../../globals/main.scss';\n$userChatMessageBackgroundColor: $blue50;\n$userChatMessageTextColor: $gray900;\n$privateChatMessageLinkColor: $blue25;\n$businessChatMessageLinkColor: $coral50;\n\n$message-padding: 1rem 1.6rem;\n\npn-chat-message {\n display: flex;\n text-align: left;\n\n &.user,\n &.buttonresponse {\n justify-content: flex-end;\n }\n\n &.system-message {\n text-align: center;\n justify-content: center;\n }\n\n .message-container {\n border-radius: 0.8rem;\n display: flex;\n gap: 1rem;\n max-width: 75%;\n overflow-x: hidden;\n\n .category {\n width: 2.6rem;\n }\n\n &.bot,\n &.agent {\n .message {\n background-color: $gray50;\n }\n }\n\n &.link {\n flex-basis: 100%;\n\n .message {\n $box-shadow-offset-x: 0px 0.6px 1.8px 0px;\n $box-shadow-offset-y: 0px 3.2px 7.2px 0px;\n\n background-color: $privateChatMessageLinkColor;\n box-shadow: $box-shadow-offset-x rgba(0, 0, 0, 0.10), $box-shadow-offset-y rgba(0, 0, 0, 0.13);\n transition: box-shadow ease-in-out 0.5s;\n\n &:hover {\n box-shadow: $box-shadow-offset-x rgba(0, 0, 0, 0.2), $box-shadow-offset-y rgba(0, 0, 0, 0.23);\n }\n\n padding: 0;\n\n a {\n color: $black;\n display: flex;\n justify-content: space-between;\n padding: $message-padding;\n text-decoration: none;\n }\n }\n }\n\n &.link .business.message {\n background-color: $businessChatMessageLinkColor;\n }\n\n &.button {\n flex-basis: 100%;\n text-align: center;\n max-width: unset;\n\n .message {\n padding: 0;\n }\n }\n\n &.card {\n border: solid 1px $gray200;\n border-radius: 1.6rem;\n flex-basis: 100%;\n max-width: 100%;\n\n .message {\n display: flex;\n flex-direction: column;\n gap: 0.8rem;\n padding: 1.6rem;\n }\n\n .card-heading {\n font-size: 1.6rem;\n line-height: 2.4rem;\n font-weight: 700;\n }\n\n .cta {\n display: flex;\n flex-direction: row;\n gap: 0.5rem;\n }\n\n .read-more {\n align-self: flex-start;\n margin-top: auto;\n }\n }\n\n &.user,\n &.buttonresponse {\n .message {\n background-color: $userChatMessageBackgroundColor;\n color: $userChatMessageTextColor;\n border-radius: 0.8rem 0.8rem 0 0.8rem;\n }\n }\n\n .message {\n border-radius: 0 0.8rem 0.8rem 0.8rem;\n display: inline-block;\n flex: 1 1 auto;\n font-size: 1.4rem;\n line-height: 2rem;\n padding: $message-padding;\n word-wrap: break-word;\n overflow-wrap: break-word;\n white-space: normal;\n word-break: break-word;\n\n @media (max-width: 767px) {\n font-size: 1.6rem;\n }\n }\n\n &.agent {\n .category .pn-icon {\n background-color: $blue400;\n color: $white;\n text-align: center;\n border-radius: 50%;\n display: inline-block;\n width: 2.5rem;\n height: 2.5rem;\n font-weight: 500;\n font-size: 1.2rem;\n line-height: 2.6rem;\n }\n }\n }\n\n &[data-card] {\n height: 100%;\n }\n}","import { Component, Host, Prop, h } from '@stencil/core';\nimport { faq, user } from 'pn-design-assets/pn-assets/icons.js';\n\nimport { AgentMessage, CustomerSegment, MessageCategory } from '../types';\n\n@Component({\n tag: 'pn-chat-message',\n styleUrl: 'pn-chat-message.scss',\n})\nexport class PnChatMessage {\n @Prop() category!: MessageCategory;\n @Prop() customerSegment!: CustomerSegment;\n @Prop() agentName: string;\n\n private robotIcon: string = '<?xml version=\"1.0\" encoding=\"UTF-8\"?> <svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" viewBox=\"0 0 20 20\"> <!-- Generator: Adobe Illustrator 29.5.1, SVG Export Plug-In . SVG Version: 2.1.0 Build 141) --> <defs> <style> .st0 { fill: none; } .st1 { fill: #8eddf9; } .st2 { fill: #f3f2f2; } .st3 { fill: #0d234b; } .st4 { fill: #f06365; } .st5 { clip-path: url(#clippath); } .st6 { fill: #005d92; } </style> <clipPath id=\"clippath\"> <rect class=\"st0\" width=\"20\" height=\"20\"/> </clipPath> </defs> <g class=\"st5\"> <g> <path class=\"st2\" d=\"M10,20c5.5,0,10-4.5,10-10S15.5,0,10,0,0,4.5,0,10s4.5,10,10,10Z\"/> <path class=\"st3\" d=\"M10.5,4h-.5v2.8h.5v-2.8Z\"/> <path class=\"st3\" d=\"M10.2,4.3c.5,0,1-.4,1-1s-.4-1-1-1-1,.4-1,1,.4,1,1,1Z\"/> <path class=\"st3\" d=\"M9,5h2.4c1,0,1.8.8,1.8,1.8h-6c0-1,.8-1.8,1.8-1.8Z\"/> <path class=\"st4\" d=\"M17,10.3v-.8c0-1.9-1.5-3.5-3.5-3.5h-7.1c-1.9,0-3.5,1.6-3.5,3.5v.8h14.1Z\"/> <path d=\"M13.9,16.1l-3.7.4v-.4s3.6-.4,3.6-.4c.8,0,1.6-.4,2.1-1s.7-2.9.7-3.7h.4c0,.9-.2,3.3-.8,3.9-.6.7-1.4,1.1-2.3,1.2Z\"/> <path class=\"st4\" d=\"M16.3,12.1v-3.6h.2c1,0,1.8.8,1.8,1.8s-.8,1.8-1.8,1.8h-.2Z\"/> <path class=\"st4\" d=\"M3.7,8.5v3.6h-.2c-1,0-1.8-.8-1.8-1.8s.8-1.8,1.8-1.8h.2Z\"/> <path class=\"st3\" d=\"M13.1,6.6h-6.2c-1.8,0-3.3,1.5-3.3,3.3v2.1c0,1.8,1.5,3.3,3.3,3.3h6.2c1.8,0,3.3-1.5,3.3-3.3v-2.1c0-1.8-1.5-3.3-3.3-3.3Z\"/> <path class=\"st6\" d=\"M12.8,7.8h-5.6c-1.4,0-2.5,1.1-2.5,2.5v1.4c0,1.4,1.1,2.4,2.5,2.4h5.6c1.4,0,2.4-1.1,2.4-2.4v-1.4c0-1.4-1.1-2.5-2.4-2.5Z\"/> <path class=\"st1\" d=\"M12.3,11.9c.5,0,1-.4,1-1s-.4-1-1-1-1,.4-1,1,.4,1,1,1Z\"/> <path class=\"st1\" d=\"M7.7,11.9c.5,0,1-.4,1-1s-.4-1-1-1-1,.4-1,1,.4,1,1,1Z\"/> <path d=\"M11,15.8h-1.5c-.3,0-.5.2-.5.5h0c0,.3.2.5.5.5h1.5c.3,0,.5-.2.5-.5h0c0-.3-.2-.5-.5-.5Z\"/> </g> </g> </svg>';\n private blue700 = 'blue700';\n\n getIcon() {\n let icon = null;\n \n switch (this.category) {\n case 'Bot':\n return this.robotIcon;\n case 'Agent':\n return this.agentName;\n case 'Link':\n return faq;\n }\n\n return icon;\n }\n\n getMessageClass(): string {\n switch (this.category) {\n case 'ButtonResponse':\n return 'buttonresponse';\n case 'User':\n return 'user';\n case 'System':\n return 'system-message';\n default: \n return undefined;\n }\n }\n\n render() {\n const segmentClass = this.customerSegment?.toLowerCase() || '';\n const categoryClass = this.category?.toLowerCase() || '';\n return (\n <Host class={ this.getMessageClass() }>\n <div class={`message-container ${categoryClass}`}>\n {this.getIcon() && (\n <span class=\"category\">\n <pn-icon icon={this.getIcon()} color={this.blue700} aria-hidden=\"true\" role=\"presentation\"></pn-icon>\n </span>\n )}\n <span class={`message ${segmentClass}`}>\n <slot></slot>\n </span>\n </div>\n </Host>\n );\n }\n}\n","@import '../../../globals/main.scss';\n\npn-marketweb-carousel {\n display: inline-block;\n\n .pn-marketweb-carousel {\n .slider-wrapper {\n margin: 1rem;\n overflow: hidden;\n position: relative;\n touch-action: pan-y pinch-zoom;\n }\n\n .slides-container {\n display: flex;\n width: 100%;\n list-style: none;\n margin: 0;\n padding: 0;\n overflow: hidden;\n position: relative;\n touch-action: none;\n transition: transform 0.5s ease-in-out;\n user-select: none;\n\n &[data-partial='false'] .slide {\n width: 100%;\n }\n }\n\n [data-slide] {\n flex: 0 0 auto;\n transition: transform 0.5s ease-in-out;\n }\n\n .nav-button {\n cursor: pointer;\n display: flex;\n position: absolute;\n top: 0;\n bottom: 0;\n transform: translateY(-50%);\n height: 2rem;\n margin: auto;\n padding: 0;\n opacity: 0.85;\n transition: opacity 200ms;\n z-index: 1;\n\n &.invisible {\n opacity: 0;\n }\n\n &[data-show='false'] {\n display: none;\n }\n\n &:hover,\n &:focus {\n opacity: 1;\n }\n }\n\n [data-nav-button-prev] {\n left: 1.75rem;\n border-radius: 0 2rem 2rem 0;\n }\n\n [data-nav-button-next] {\n right: 1.75rem;\n border-radius: 2rem 0 0 2rem;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .slides-container {\n transition: none;\n }\n\n [data-slide] {\n transition: none;\n }\n }\n}\n","import { Component, Host, Prop, Element, State, h, Watch, Method } from '@stencil/core';\nimport { arrow_left, arrow_right } from 'pn-design-assets/pn-assets/icons.js';\n\ninterface CarouselData {\n slides: string[];\n}\n\ninterface EventListenerConfig {\n element: HTMLElement;\n event: string;\n handler: EventListener;\n}\n\n@Component({\n tag: 'pn-marketweb-carousel',\n styleUrl: 'pn-marketweb-carousel.scss',\n})\nexport class PnMarketwebCarousel {\n private static readonly DEFAULTS = {\n SWIPE_THRESHOLD_PX: 50,\n ANIMATION_DURATION_MS: 300,\n OVERSCROLL_LIMIT_PERCENT: 30,\n } as const;\n\n @Element() private hostElement!: HTMLElement;\n\n @Prop() previousButtonLabel!: string;\n @Prop() nextButtonLabel!: string;\n @Prop() ariaNavigationLabel!: string;\n @Prop() source!: string;\n @Prop() slidesToShow: number = 1;\n @Prop() showCarouselButtons: boolean = true;\n @Prop() showFirstSlidePrevButton: boolean = false;\n @Prop() showLastSlideNextButton: boolean = false;\n\n @State() private slidesData: string[] = [];\n @State() private currentSlide: number = 0;\n @State() private isDragging: boolean = false;\n @State() private slideWidth: number = 0;\n\n private slides: NodeListOf<HTMLElement> | null = null;\n private slidesContainer: HTMLElement | null = null;\n private totalSlides: number = 0;\n private prevButton: HTMLElement | null = null;\n private nextButton: HTMLElement | null = null;\n private dragStartX: number = 0;\n private listeners: EventListenerConfig[] = [];\n private memoizedSlideWidth: number | null = null;\n\n componentWillLoad(): void {\n this.setInitialValues();\n }\n\n componentDidLoad(): void {\n this.setupCarousel();\n window.addEventListener('resize', this.handleResize);\n }\n\n disconnectedCallback(): void {\n this.cleanup();\n window.removeEventListener('resize', this.handleResize);\n }\n\n @Method()\n async goToSlide(index: number): Promise<void> {\n if (index >= 0 && index < this.totalSlides) {\n this.currentSlide = index;\n this.moveSlides();\n this.updateNavButtons();\n }\n }\n\n @Method()\n async getCurrentSlide(): Promise<number> {\n return this.currentSlide;\n }\n\n @Watch('source')\n handleSourceChange(newValue: string): void {\n if (newValue) {\n this.setInitialValues();\n }\n }\n\n private setInitialValues(): void {\n if (!this.source?.trim()) {\n console.warn('No source provided for carousel');\n return;\n }\n\n try {\n const parsedData = JSON.parse(this.source) as CarouselData;\n\n if (!parsedData?.slides) {\n throw new Error('Invalid slides data structure');\n }\n\n if (Array.isArray(parsedData.slides)) {\n this.slidesData = parsedData.slides;\n this.showCarouselButtons = this.slidesData.length > 1;\n } else {\n throw new Error('Slides data is not an array');\n }\n } catch (error) {\n console.error('Error parsing carousel source:', error instanceof Error ? error.message : 'Unknown error');\n this.slidesData = [];\n }\n }\n\n private setupCarousel(): void {\n this.initializeElements();\n this.attachEventListeners();\n this.updateNavButtons();\n }\n\n private initializeElements(): void {\n this.slidesContainer = this.hostElement.querySelector<HTMLElement>('[data-slides-container]');\n this.slides = this.hostElement.querySelectorAll<HTMLElement>('[data-slide]');\n this.totalSlides = this.slides?.length ?? 0;\n\n if (this.showCarouselButtons) {\n this.prevButton = this.hostElement.querySelector<HTMLElement>('[data-nav-button-prev]');\n this.nextButton = this.hostElement.querySelector<HTMLElement>('[data-nav-button-next]');\n }\n\n this.slideWidth = 100 / this.slidesToShow;\n }\n\n private attachEventListeners(): void {\n if (!this.slidesContainer) return;\n\n const addListener = (element: HTMLElement, event: string, handler: EventListener, options?: AddEventListenerOptions) => {\n element.addEventListener(event, handler, options);\n this.listeners.push({ element, event, handler });\n };\n\n // Touch events\n addListener(this.slidesContainer, 'touchstart', this.handleTouchStart as EventListener, { passive: true });\n addListener(this.slidesContainer, 'touchmove', this.handleTouchMove as EventListener, { passive: false });\n addListener(this.slidesContainer, 'touchend', this.handleTouchEnd as EventListener, { passive: true });\n\n // Mouse events\n addListener(this.slidesContainer, 'mousedown', this.handleTouchStart as EventListener);\n addListener(this.slidesContainer, 'mousemove', this.handleTouchMove as EventListener);\n addListener(this.slidesContainer, 'mouseup', this.handleTouchEnd as EventListener);\n addListener(this.slidesContainer, 'mouseleave', this.handleTouchEnd as EventListener);\n\n if (this.showCarouselButtons) {\n this.nextButton && addListener(this.nextButton, 'click', this.handleNextClick);\n this.prevButton && addListener(this.prevButton, 'click', this.handlePrevClick);\n }\n }\n\n private cleanup(): void {\n this.listeners.forEach(({ element, event, handler }) => {\n element.removeEventListener(event, handler);\n });\n this.listeners = [];\n }\n\n private handleResize = (): void => {\n this.memoizedSlideWidth = null;\n };\n\n private getSlideWidth(): number {\n if (!this.memoizedSlideWidth && this.slidesContainer) {\n this.memoizedSlideWidth = this.slidesContainer.offsetWidth;\n }\n return this.memoizedSlideWidth ?? 0;\n }\n\n private handleNextClick = (e: Event): void => {\n e.stopPropagation();\n this.nextSlide();\n };\n\n private handlePrevClick = (e: Event): void => {\n e.stopPropagation();\n this.prevSlide();\n };\n\n private handleTouchStart = (e: TouchEvent | MouseEvent): void => {\n if ((e.target as HTMLElement).classList.contains('nav-button')) return;\n\n this.isDragging = true;\n this.dragStartX = 'touches' in e ? e.touches[0].clientX : e.clientX;\n };\n\n private handleTouchMove = (e: TouchEvent | MouseEvent): void => {\n if (!this.isDragging) return;\n\n if ('touches' in e) {\n e.preventDefault();\n }\n\n const currentPosition = 'touches' in e ? e.touches[0].clientX : e.clientX;\n const diff = currentPosition - this.dragStartX;\n const percentMove = (diff / this.getSlideWidth()) * 100;\n\n this.moveSlides(percentMove);\n };\n\n private handleTouchEnd = (e: TouchEvent | MouseEvent): void => {\n if (!this.isDragging) return;\n\n this.isDragging = false;\n\n const currentPosition = 'changedTouches' in e ? e.changedTouches[0].clientX : e.clientX;\n const diff = currentPosition - this.dragStartX;\n\n if (Math.abs(diff) > PnMarketwebCarousel.DEFAULTS.SWIPE_THRESHOLD_PX) {\n if (diff > 0 && this.currentSlide > 0) {\n this.currentSlide--;\n } else if (diff < 0 && this.currentSlide < this.totalSlides - 1) {\n this.currentSlide++;\n }\n }\n\n this.moveSlides();\n this.updateNavButtons();\n };\n\n private calculateProportionalTranslation(): number {\n // Calculate proportional translation based on slidesToShow\n return -200 + (this.slidesToShow - 1) * 100;\n }\n\n private moveSlides(extraTranslate: number = 0): void {\n if (!this.slides || !this.slidesContainer) {\n return;\n }\n\n try {\n this.slides.forEach((slide, index) => {\n if (slide) {\n // Set each slide's width\n slide.style.width = `${this.slideWidth}%`;\n\n let translation = 0;\n\n if (this.slidesToShow === 1) {\n // Full slide view\n translation = -100 * this.currentSlide;\n } else {\n // Partial slide view\n if (this.totalSlides === 2) {\n // Special case for 2 slides\n if (this.currentSlide === 1) {\n translation = -50; // Both slides move by -50%\n }\n } else {\n // 3 or more slides\n if (this.currentSlide === 1) {\n // Second slide showing - all slides move -100%\n translation = -100;\n } else if (this.currentSlide === 2) {\n // Third slide showing\n if (index === 0) {\n translation = -100; // First slide stays at -100%\n } else {\n // Calculate proportional translation\n translation = this.calculateProportionalTranslation();\n }\n }\n }\n }\n\n // Add any extra translation from dragging\n translation += extraTranslate;\n\n slide.style.transform = `translateX(${translation}%)`;\n slide.style.position = 'relative';\n\n // Update visibility for screen readers\n let isVisible;\n\n if (this.slidesToShow === 1) {\n isVisible = index === this.currentSlide;\n } else {\n isVisible =\n this.currentSlide === 0 || // First slide showing\n this.totalSlides === 2 || // Two slides - both visible\n (this.currentSlide === 1 && translation === -100) || // Second slide showing\n (this.currentSlide === 2 &&\n ((index === 0 && translation === -100) || // First slide still visible\n index > 0)); // Second and third slides visible\n }\n\n slide.setAttribute('aria-hidden', (!isVisible).toString());\n }\n });\n } catch (error) {\n console.error('Error moving slides:', error);\n }\n }\n\n private updateNavButtons(): void {\n if (!this.showCarouselButtons) return;\n\n const isFirstSlide = this.currentSlide === 0;\n const isLastSlide = this.currentSlide === this.totalSlides - 1;\n\n if (this.prevButton) {\n this.prevButton.classList.toggle('invisible', isFirstSlide && !this.showFirstSlidePrevButton);\n this.prevButton.dataset.show = isFirstSlide ? `${this.showFirstSlidePrevButton}` : 'true';\n }\n\n if (this.nextButton) {\n this.nextButton.classList.toggle('invisible', isLastSlide && !this.showLastSlideNextButton);\n this.nextButton.dataset.show = isLastSlide ? `${this.showLastSlideNextButton}` : 'true';\n }\n }\n\n private nextSlide(): void {\n if (this.currentSlide >= this.totalSlides - 1) {\n this.currentSlide = 0;\n } else {\n this.currentSlide++;\n }\n this.moveSlides();\n this.updateNavButtons();\n }\n\n private prevSlide(): void {\n if (this.currentSlide <= 0) {\n this.currentSlide = this.totalSlides - 1;\n } else {\n this.currentSlide--;\n }\n this.moveSlides();\n this.updateNavButtons();\n }\n\n render() {\n return (\n <Host>\n <div class=\"pn-marketweb-carousel\">\n <section class=\"slider-wrapper\">\n {this.showCarouselButtons && (\n <div class=\"nav-buttons\" role=\"group\" aria-label={this.ariaNavigationLabel}>\n <pn-button\n appearance=\"light\"\n icon={arrow_left}\n icon-only=\"true\"\n tooltip={this.previousButtonLabel}\n class={`nav-button ${this.currentSlide === 0 && !this.showFirstSlidePrevButton ? 'invisible' : ''}`}\n data-nav-button-prev\n area-label={this.previousButtonLabel}\n aria-disabled={this.currentSlide === 0 && !this.showFirstSlidePrevButton}>\n </pn-button>\n <pn-button\n appearance=\"light\"\n icon={arrow_right}\n icon-only=\"true\"\n tooltip={this.nextButtonLabel}\n class=\"nav-button\"\n data-nav-button-next\n area-label={this.nextButtonLabel}\n aria-disabled={this.currentSlide === this.totalSlides - 1 && !this.showLastSlideNextButton}>\n </pn-button>\n </div>\n )}\n {this.slidesData && (\n <ul\n class=\"slides-container\"\n data-slides-container\n data-partial={this.slidesToShow === 1 ? 'false' : 'true'}\n aria-live=\"polite\"\n style={{ display: 'flex', transform: 'none' }}\n >\n {this.slidesData.map((slide, index) => (\n <li class=\"slide\" data-slide innerHTML={slide} style={{ width: this.slideWidth + '%' }} aria-hidden={index !== this.currentSlide}></li>\n ))}\n </ul>\n )}\n </section>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"pn-chat-message.pn-marketweb-carousel.entry.cjs.js","mappings":"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","names":["h","Host","arrow_left","arrow_right","index"],"sources":["node_modules/pn-design-assets/pn-assets/icons/link.js","src/components/widgets/pn-chat/pn-chat-message/pn-chat-message.scss?tag=pn-chat-message","src/components/widgets/pn-chat/pn-chat-message/pn-chat-message.tsx","src/components/widgets/pn-marketweb-carousel/pn-marketweb-carousel.scss?tag=pn-marketweb-carousel","src/components/widgets/pn-marketweb-carousel/pn-marketweb-carousel.tsx"],"sourcesContent":["const icon = '<svg class=\"pn-icon-svg\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"#000\" d=\"M16.035 5.52c.718-.705 1.75-.682 2.444 0 .692.678.693 1.688.014 2.326l-.021.02-1.68 1.68a1 1 0 0 0 1.415 1.414l1.669-1.669c1.544-1.466 1.452-3.779.003-5.2s-3.727-1.487-5.244 0l-4.507 4.42c-1.548 1.465-1.457 3.781-.007 5.203a1 1 0 1 0 1.4-1.428c-.692-.68-.692-1.688-.014-2.327l.014-.014z\"/><path fill=\"#000\" d=\"M14.762 10.254a1 1 0 1 0-1.33 1.492c.756.675.754 1.63.014 2.263l-.015.013-4.965 4.426a2.177 2.177 0 0 1-2.897 0c-.757-.675-.755-1.63-.015-2.262l.026-.024 2.097-1.926a1 1 0 1 0-1.353-1.472l-2.085 1.915c-1.704 1.471-1.6 3.837 0 5.262a4.177 4.177 0 0 0 5.558 0l4.958-4.42c1.71-1.47 1.607-3.841.007-5.267\"/></svg>';\nexport const link = icon;\n","@import '../../../../globals/main.scss';\n$userChatMessageBackgroundColor: $blue50;\n$userChatMessageTextColor: $gray900;\n$privateChatMessageLinkColor: $blue25;\n$businessChatMessageLinkColor: $coral50;\n\n$message-padding: 1rem 1.6rem;\n\npn-chat-message {\n display: flex;\n text-align: left;\n\n &.user,\n &.buttonresponse {\n justify-content: flex-end;\n }\n\n &.system-message {\n text-align: center;\n justify-content: center;\n }\n\n .message-container {\n border-radius: 0.8rem;\n display: flex;\n gap: 1rem;\n max-width: 85%;\n overflow-x: hidden;\n\n .category {\n width: 2.6rem;\n }\n\n &.user {\n max-width: 75%;\n }\n\n &.bot,\n &.agent,\n &.link {\n .message {\n background-color: $gray50;\n }\n\n .category {\n align-self: flex-end;\n }\n }\n \n &.link {\n .category {\n align-self: center;\n }\n\n flex-basis: 100%;\n .content {\n line-height: 1.5;\n }\n\n .message {\n padding: 0;\n\n a {\n color: $blue700;\n font-weight: 500;\n display: flex;\n justify-content: space-between;\n padding: $message-padding;\n text-decoration: underline;\n }\n }\n }\n\n &.link .business.message {\n background-color: $businessChatMessageLinkColor;\n }\n\n &.button {\n flex-basis: 100%;\n text-align: center;\n max-width: unset;\n\n .message {\n padding: 0;\n }\n\n .pn-button {\n min-width: 18rem;\n\n &:disabled {\n color: $gray400;\n \n .pn-button-bg {\n border-color: $gray50;\n background-color: $gray50;\n }\n }\n }\n }\n\n &.card {\n border: solid 1px $gray200;\n border-radius: 1.6rem;\n flex-basis: 100%;\n max-width: 100%;\n\n .message {\n display: flex;\n flex-direction: column;\n gap: 0.8rem;\n padding: 1.6rem;\n }\n\n .card-heading {\n font-size: 1.6rem;\n line-height: 2.4rem;\n font-weight: 700;\n }\n\n .cta {\n display: flex;\n flex-direction: row;\n gap: 0.5rem;\n }\n\n .read-more {\n align-self: flex-start;\n margin-top: auto;\n }\n }\n\n &.user,\n &.buttonresponse {\n .message {\n background-color: $userChatMessageBackgroundColor;\n color: $userChatMessageTextColor;\n border-radius: 0.8rem 0.8rem 0 0.8rem;\n }\n }\n\n .message {\n border-radius: 0 0.8rem 0.8rem 0.8rem;\n display: inline-block;\n flex: 1 1 auto;\n font-size: 1.4rem;\n line-height: 2rem;\n padding: $message-padding;\n word-wrap: break-word;\n overflow-wrap: break-word;\n white-space: normal;\n word-break: break-word;\n\n @media (max-width: 767px) {\n font-size: 1.6rem;\n }\n }\n\n &.agent {\n .category .pn-icon {\n background-color: $blue400;\n color: $white;\n text-align: center;\n border-radius: 50%;\n display: inline-block;\n width: 2.5rem;\n height: 2.5rem;\n font-weight: 500;\n font-size: 1.2rem;\n line-height: 2.6rem;\n }\n }\n }\n\n &[data-card] {\n height: 100%;\n }\n}","import { Component, Host, Prop, h } from '@stencil/core';\nimport { link, user } from 'pn-design-assets/pn-assets/icons.js';\n\nimport { AgentMessage, CustomerSegment, MessageCategory } from '../types';\n\n@Component({\n tag: 'pn-chat-message',\n styleUrl: 'pn-chat-message.scss',\n})\nexport class PnChatMessage {\n @Prop() category!: MessageCategory;\n @Prop() customerSegment!: CustomerSegment;\n @Prop() agentName: string;\n\n private robotIcon: string = '<?xml version=\"1.0\" encoding=\"UTF-8\"?> <svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" viewBox=\"0 0 20 20\"> <!-- Generator: Adobe Illustrator 29.5.1, SVG Export Plug-In . SVG Version: 2.1.0 Build 141) --> <defs> <style> .st0 { fill: none; } .st1 { fill: #8eddf9; } .st2 { fill: #f3f2f2; } .st3 { fill: #0d234b; } .st4 { fill: #f06365; } .st5 { clip-path: url(#clippath); } .st6 { fill: #005d92; } </style> <clipPath id=\"clippath\"> <rect class=\"st0\" width=\"20\" height=\"20\"/> </clipPath> </defs> <g class=\"st5\"> <g> <path class=\"st2\" d=\"M10,20c5.5,0,10-4.5,10-10S15.5,0,10,0,0,4.5,0,10s4.5,10,10,10Z\"/> <path class=\"st3\" d=\"M10.5,4h-.5v2.8h.5v-2.8Z\"/> <path class=\"st3\" d=\"M10.2,4.3c.5,0,1-.4,1-1s-.4-1-1-1-1,.4-1,1,.4,1,1,1Z\"/> <path class=\"st3\" d=\"M9,5h2.4c1,0,1.8.8,1.8,1.8h-6c0-1,.8-1.8,1.8-1.8Z\"/> <path class=\"st4\" d=\"M17,10.3v-.8c0-1.9-1.5-3.5-3.5-3.5h-7.1c-1.9,0-3.5,1.6-3.5,3.5v.8h14.1Z\"/> <path d=\"M13.9,16.1l-3.7.4v-.4s3.6-.4,3.6-.4c.8,0,1.6-.4,2.1-1s.7-2.9.7-3.7h.4c0,.9-.2,3.3-.8,3.9-.6.7-1.4,1.1-2.3,1.2Z\"/> <path class=\"st4\" d=\"M16.3,12.1v-3.6h.2c1,0,1.8.8,1.8,1.8s-.8,1.8-1.8,1.8h-.2Z\"/> <path class=\"st4\" d=\"M3.7,8.5v3.6h-.2c-1,0-1.8-.8-1.8-1.8s.8-1.8,1.8-1.8h.2Z\"/> <path class=\"st3\" d=\"M13.1,6.6h-6.2c-1.8,0-3.3,1.5-3.3,3.3v2.1c0,1.8,1.5,3.3,3.3,3.3h6.2c1.8,0,3.3-1.5,3.3-3.3v-2.1c0-1.8-1.5-3.3-3.3-3.3Z\"/> <path class=\"st6\" d=\"M12.8,7.8h-5.6c-1.4,0-2.5,1.1-2.5,2.5v1.4c0,1.4,1.1,2.4,2.5,2.4h5.6c1.4,0,2.4-1.1,2.4-2.4v-1.4c0-1.4-1.1-2.5-2.4-2.5Z\"/> <path class=\"st1\" d=\"M12.3,11.9c.5,0,1-.4,1-1s-.4-1-1-1-1,.4-1,1,.4,1,1,1Z\"/> <path class=\"st1\" d=\"M7.7,11.9c.5,0,1-.4,1-1s-.4-1-1-1-1,.4-1,1,.4,1,1,1Z\"/> <path d=\"M11,15.8h-1.5c-.3,0-.5.2-.5.5h0c0,.3.2.5.5.5h1.5c.3,0,.5-.2.5-.5h0c0-.3-.2-.5-.5-.5Z\"/> </g> </g> </svg>';\n private blue700 = 'blue700';\n\n getIcon() {\n let icon = null;\n \n switch (this.category) {\n case 'Bot':\n return this.robotIcon;\n case 'Agent':\n return this.agentName;\n case 'Link':\n return link;\n }\n\n return icon;\n }\n\n getMessageClass(): string {\n switch (this.category) {\n case 'ButtonResponse':\n return 'buttonresponse';\n case 'User':\n return 'user';\n case 'System':\n return 'system-message';\n default: \n return undefined;\n }\n }\n\n render() {\n const segmentClass = this.customerSegment?.toLowerCase() || '';\n const categoryClass = this.category?.toLowerCase() || '';\n return (\n <Host class={ this.getMessageClass() }>\n <div class={`message-container ${categoryClass}`}>\n {this.getIcon() && (\n <span class=\"category\">\n <pn-icon icon={this.getIcon()} color={this.blue700} aria-hidden=\"true\" role=\"presentation\"></pn-icon>\n </span>\n )}\n <span class={`message ${segmentClass}`}>\n <slot></slot>\n </span>\n </div>\n </Host>\n );\n }\n}\n","@import '../../../globals/main.scss';\n\npn-marketweb-carousel {\n display: inline-block;\n\n .pn-marketweb-carousel {\n .slider-wrapper {\n margin: 1rem;\n overflow: hidden;\n position: relative;\n touch-action: pan-y pinch-zoom;\n }\n\n .slides-container {\n display: flex;\n width: 100%;\n list-style: none;\n margin: 0;\n padding: 0;\n overflow: hidden;\n position: relative;\n touch-action: none;\n transition: transform 0.5s ease-in-out;\n user-select: none;\n\n &[data-partial='false'] .slide {\n width: 100%;\n }\n }\n\n [data-slide] {\n flex: 0 0 auto;\n transition: transform 0.5s ease-in-out;\n }\n\n .nav-button {\n cursor: pointer;\n display: flex;\n position: absolute;\n top: 0;\n bottom: 0;\n transform: translateY(-50%);\n height: 2rem;\n margin: auto;\n padding: 0;\n opacity: 0.85;\n transition: opacity 200ms;\n z-index: 1;\n\n &.invisible {\n opacity: 0;\n }\n\n &[data-show='false'] {\n display: none;\n }\n\n &:hover,\n &:focus {\n opacity: 1;\n }\n }\n\n [data-nav-button-prev] {\n left: 1.75rem;\n border-radius: 0 2rem 2rem 0;\n }\n\n [data-nav-button-next] {\n right: 1.75rem;\n border-radius: 2rem 0 0 2rem;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .slides-container {\n transition: none;\n }\n\n [data-slide] {\n transition: none;\n }\n }\n}\n","import { Component, Host, Prop, Element, State, h, Watch, Method } from '@stencil/core';\nimport { arrow_left, arrow_right } from 'pn-design-assets/pn-assets/icons.js';\n\ninterface CarouselData {\n slides: string[];\n}\n\ninterface EventListenerConfig {\n element: HTMLElement;\n event: string;\n handler: EventListener;\n}\n\n@Component({\n tag: 'pn-marketweb-carousel',\n styleUrl: 'pn-marketweb-carousel.scss',\n})\nexport class PnMarketwebCarousel {\n private static readonly DEFAULTS = {\n SWIPE_THRESHOLD_PX: 50,\n ANIMATION_DURATION_MS: 300,\n OVERSCROLL_LIMIT_PERCENT: 30,\n } as const;\n\n @Element() private hostElement!: HTMLElement;\n\n @Prop() previousButtonLabel!: string;\n @Prop() nextButtonLabel!: string;\n @Prop() ariaNavigationLabel!: string;\n @Prop() source!: string;\n @Prop() slidesToShow: number = 1;\n @Prop() showCarouselButtons: boolean = true;\n @Prop() showFirstSlidePrevButton: boolean = false;\n @Prop() showLastSlideNextButton: boolean = false;\n\n @State() private slidesData: string[] = [];\n @State() private currentSlide: number = 0;\n @State() private isDragging: boolean = false;\n @State() private slideWidth: number = 0;\n\n private slides: NodeListOf<HTMLElement> | null = null;\n private slidesContainer: HTMLElement | null = null;\n private totalSlides: number = 0;\n private prevButton: HTMLElement | null = null;\n private nextButton: HTMLElement | null = null;\n private dragStartX: number = 0;\n private listeners: EventListenerConfig[] = [];\n private memoizedSlideWidth: number | null = null;\n\n componentWillLoad(): void {\n this.setInitialValues();\n }\n\n componentDidLoad(): void {\n this.setupCarousel();\n window.addEventListener('resize', this.handleResize);\n }\n\n disconnectedCallback(): void {\n this.cleanup();\n window.removeEventListener('resize', this.handleResize);\n }\n\n @Method()\n async goToSlide(index: number): Promise<void> {\n if (index >= 0 && index < this.totalSlides) {\n this.currentSlide = index;\n this.moveSlides();\n this.updateNavButtons();\n }\n }\n\n @Method()\n async getCurrentSlide(): Promise<number> {\n return this.currentSlide;\n }\n\n @Watch('source')\n handleSourceChange(newValue: string): void {\n if (newValue) {\n this.setInitialValues();\n }\n }\n\n private setInitialValues(): void {\n if (!this.source?.trim()) {\n console.warn('No source provided for carousel');\n return;\n }\n\n try {\n const parsedData = JSON.parse(this.source) as CarouselData;\n\n if (!parsedData?.slides) {\n throw new Error('Invalid slides data structure');\n }\n\n if (Array.isArray(parsedData.slides)) {\n this.slidesData = parsedData.slides;\n this.showCarouselButtons = this.slidesData.length > 1;\n } else {\n throw new Error('Slides data is not an array');\n }\n } catch (error) {\n console.error('Error parsing carousel source:', error instanceof Error ? error.message : 'Unknown error');\n this.slidesData = [];\n }\n }\n\n private setupCarousel(): void {\n this.initializeElements();\n this.attachEventListeners();\n this.updateNavButtons();\n }\n\n private initializeElements(): void {\n this.slidesContainer = this.hostElement.querySelector<HTMLElement>('[data-slides-container]');\n this.slides = this.hostElement.querySelectorAll<HTMLElement>('[data-slide]');\n this.totalSlides = this.slides?.length ?? 0;\n\n if (this.showCarouselButtons) {\n this.prevButton = this.hostElement.querySelector<HTMLElement>('[data-nav-button-prev]');\n this.nextButton = this.hostElement.querySelector<HTMLElement>('[data-nav-button-next]');\n }\n\n this.slideWidth = 100 / this.slidesToShow;\n }\n\n private attachEventListeners(): void {\n if (!this.slidesContainer) return;\n\n const addListener = (element: HTMLElement, event: string, handler: EventListener, options?: AddEventListenerOptions) => {\n element.addEventListener(event, handler, options);\n this.listeners.push({ element, event, handler });\n };\n\n // Touch events\n addListener(this.slidesContainer, 'touchstart', this.handleTouchStart as EventListener, { passive: true });\n addListener(this.slidesContainer, 'touchmove', this.handleTouchMove as EventListener, { passive: false });\n addListener(this.slidesContainer, 'touchend', this.handleTouchEnd as EventListener, { passive: true });\n\n // Mouse events\n addListener(this.slidesContainer, 'mousedown', this.handleTouchStart as EventListener);\n addListener(this.slidesContainer, 'mousemove', this.handleTouchMove as EventListener);\n addListener(this.slidesContainer, 'mouseup', this.handleTouchEnd as EventListener);\n addListener(this.slidesContainer, 'mouseleave', this.handleTouchEnd as EventListener);\n\n if (this.showCarouselButtons) {\n this.nextButton && addListener(this.nextButton, 'click', this.handleNextClick);\n this.prevButton && addListener(this.prevButton, 'click', this.handlePrevClick);\n }\n }\n\n private cleanup(): void {\n this.listeners.forEach(({ element, event, handler }) => {\n element.removeEventListener(event, handler);\n });\n this.listeners = [];\n }\n\n private handleResize = (): void => {\n this.memoizedSlideWidth = null;\n };\n\n private getSlideWidth(): number {\n if (!this.memoizedSlideWidth && this.slidesContainer) {\n this.memoizedSlideWidth = this.slidesContainer.offsetWidth;\n }\n return this.memoizedSlideWidth ?? 0;\n }\n\n private handleNextClick = (e: Event): void => {\n e.stopPropagation();\n this.nextSlide();\n };\n\n private handlePrevClick = (e: Event): void => {\n e.stopPropagation();\n this.prevSlide();\n };\n\n private handleTouchStart = (e: TouchEvent | MouseEvent): void => {\n if ((e.target as HTMLElement).classList.contains('nav-button')) return;\n\n this.isDragging = true;\n this.dragStartX = 'touches' in e ? e.touches[0].clientX : e.clientX;\n };\n\n private handleTouchMove = (e: TouchEvent | MouseEvent): void => {\n if (!this.isDragging) return;\n\n if ('touches' in e) {\n e.preventDefault();\n }\n\n const currentPosition = 'touches' in e ? e.touches[0].clientX : e.clientX;\n const diff = currentPosition - this.dragStartX;\n const percentMove = (diff / this.getSlideWidth()) * 100;\n\n this.moveSlides(percentMove);\n };\n\n private handleTouchEnd = (e: TouchEvent | MouseEvent): void => {\n if (!this.isDragging) return;\n\n this.isDragging = false;\n\n const currentPosition = 'changedTouches' in e ? e.changedTouches[0].clientX : e.clientX;\n const diff = currentPosition - this.dragStartX;\n\n if (Math.abs(diff) > PnMarketwebCarousel.DEFAULTS.SWIPE_THRESHOLD_PX) {\n if (diff > 0 && this.currentSlide > 0) {\n this.currentSlide--;\n } else if (diff < 0 && this.currentSlide < this.totalSlides - 1) {\n this.currentSlide++;\n }\n }\n\n this.moveSlides();\n this.updateNavButtons();\n };\n\n private calculateProportionalTranslation(): number {\n // Calculate proportional translation based on slidesToShow\n return -200 + (this.slidesToShow - 1) * 100;\n }\n\n private moveSlides(extraTranslate: number = 0): void {\n if (!this.slides || !this.slidesContainer) {\n return;\n }\n\n try {\n this.slides.forEach((slide, index) => {\n if (slide) {\n // Set each slide's width\n slide.style.width = `${this.slideWidth}%`;\n\n let translation = 0;\n\n if (this.slidesToShow === 1) {\n // Full slide view\n translation = -100 * this.currentSlide;\n } else {\n // Partial slide view\n if (this.totalSlides === 2) {\n // Special case for 2 slides\n if (this.currentSlide === 1) {\n translation = -50; // Both slides move by -50%\n }\n } else {\n // 3 or more slides\n if (this.currentSlide === 1) {\n // Second slide showing - all slides move -100%\n translation = -100;\n } else if (this.currentSlide === 2) {\n // Third slide showing\n if (index === 0) {\n translation = -100; // First slide stays at -100%\n } else {\n // Calculate proportional translation\n translation = this.calculateProportionalTranslation();\n }\n }\n }\n }\n\n // Add any extra translation from dragging\n translation += extraTranslate;\n\n slide.style.transform = `translateX(${translation}%)`;\n slide.style.position = 'relative';\n\n // Update visibility for screen readers\n let isVisible;\n\n if (this.slidesToShow === 1) {\n isVisible = index === this.currentSlide;\n } else {\n isVisible =\n this.currentSlide === 0 || // First slide showing\n this.totalSlides === 2 || // Two slides - both visible\n (this.currentSlide === 1 && translation === -100) || // Second slide showing\n (this.currentSlide === 2 &&\n ((index === 0 && translation === -100) || // First slide still visible\n index > 0)); // Second and third slides visible\n }\n\n slide.setAttribute('aria-hidden', (!isVisible).toString());\n }\n });\n } catch (error) {\n console.error('Error moving slides:', error);\n }\n }\n\n private updateNavButtons(): void {\n if (!this.showCarouselButtons) return;\n\n const isFirstSlide = this.currentSlide === 0;\n const isLastSlide = this.currentSlide === this.totalSlides - 1;\n\n if (this.prevButton) {\n this.prevButton.classList.toggle('invisible', isFirstSlide && !this.showFirstSlidePrevButton);\n this.prevButton.dataset.show = isFirstSlide ? `${this.showFirstSlidePrevButton}` : 'true';\n }\n\n if (this.nextButton) {\n this.nextButton.classList.toggle('invisible', isLastSlide && !this.showLastSlideNextButton);\n this.nextButton.dataset.show = isLastSlide ? `${this.showLastSlideNextButton}` : 'true';\n }\n }\n\n private nextSlide(): void {\n if (this.currentSlide >= this.totalSlides - 1) {\n this.currentSlide = 0;\n } else {\n this.currentSlide++;\n }\n this.moveSlides();\n this.updateNavButtons();\n }\n\n private prevSlide(): void {\n if (this.currentSlide <= 0) {\n this.currentSlide = this.totalSlides - 1;\n } else {\n this.currentSlide--;\n }\n this.moveSlides();\n this.updateNavButtons();\n }\n\n render() {\n return (\n <Host>\n <div class=\"pn-marketweb-carousel\">\n <section class=\"slider-wrapper\">\n {this.showCarouselButtons && (\n <div class=\"nav-buttons\" role=\"group\" aria-label={this.ariaNavigationLabel}>\n <pn-button\n appearance=\"light\"\n icon={arrow_left}\n icon-only=\"true\"\n tooltip={this.previousButtonLabel}\n class={`nav-button ${this.currentSlide === 0 && !this.showFirstSlidePrevButton ? 'invisible' : ''}`}\n data-nav-button-prev\n area-label={this.previousButtonLabel}\n aria-disabled={this.currentSlide === 0 && !this.showFirstSlidePrevButton}>\n </pn-button>\n <pn-button\n appearance=\"light\"\n icon={arrow_right}\n icon-only=\"true\"\n tooltip={this.nextButtonLabel}\n class=\"nav-button\"\n data-nav-button-next\n area-label={this.nextButtonLabel}\n aria-disabled={this.currentSlide === this.totalSlides - 1 && !this.showLastSlideNextButton}>\n </pn-button>\n </div>\n )}\n {this.slidesData && (\n <ul\n class=\"slides-container\"\n data-slides-container\n data-partial={this.slidesToShow === 1 ? 'false' : 'true'}\n aria-live=\"polite\"\n style={{ display: 'flex', transform: 'none' }}\n >\n {this.slidesData.map((slide, index) => (\n <li class=\"slide\" data-slide innerHTML={slide} style={{ width: this.slideWidth + '%' }} aria-hidden={index !== this.currentSlide}></li>\n ))}\n </ul>\n )}\n </section>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -94,7 +94,7 @@ const translations = {
94
94
  },
95
95
  };
96
96
 
97
- const pnChatCss = "pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}@media screen and (max-width: 767px){.sr-only-mobile{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}}.pn-chat{display:flex;flex-direction:column;height:600px;width:100%;max-width:400px;box-shadow:0 4px 12px rgba(0, 0, 0, 0.1);border-radius:1.6rem}@media (max-width: 768px){.pn-chat:not(.minimized){position:absolute;height:100dvh;width:100dvw;max-width:100%;top:0;left:0}.pn-chat.minimized{height:70px;border-radius:0.8rem 0.8rem 0 0}}@media (min-width: 768px) and (max-width: 1024px){.pn-chat{max-width:350px}}.pn-chat .chat-header{background-color:#005d92;color:#ffffff;padding:0.8rem;padding-left:1.6rem;display:flex;justify-content:space-between;align-items:center}@media (min-width: 768px){.pn-chat .chat-header{border-radius:1.6rem 1.6rem 0 0}}.pn-chat .chat-header .chat-controls{display:flex}.pn-chat .chat-header pn-button.minimize-btn button.pn-button{padding-bottom:0}.pn-chat .chat-header pn-button.minimize-btn button.pn-button .pn-button-content{align-items:flex-end}.pn-chat .chat-header #chat-title{margin:0;font-size:2rem;font-weight:400;line-height:1.4}.pn-chat .chat-main{display:flex;flex-direction:column;flex-grow:1;overflow-y:auto;gap:1.6rem;padding:1.6rem;padding-bottom:3.2rem;border-left:1px solid #d3cecb;border-right:1px solid #d3cecb;background-color:#ffffff}.pn-chat .chat-main.loading-chat-main{display:flex;justify-content:center;align-items:center;padding-bottom:1.6rem}.pn-chat .chat-loading-spinner{background-color:#005d92;width:4.8rem;height:4.8rem;border-radius:4.8rem;display:flex;align-items:center;justify-content:center}.pn-chat .chat-loading-content{color:#2d2013;font-size:1.6rem;font-weight:400}.pn-chat .chat-overview{text-align:center}.pn-chat .chat-messages{display:flex;flex-direction:column;gap:1.6rem;text-align:center}.pn-chat .card-container .slider-wrapper{margin:0}.pn-chat .card-container .slides-container{display:flex;gap:1rem}.pn-chat .card-container .slide:nth-child(even) [data-card]{width:calc(100% - 1rem)}@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:0.5;transform:scale(0.95)}}.pn-chat .chat-footer{background:#ffffff;border:1px solid #d3cecb;border-top:none}.pn-chat .chat-footer .form{display:flex;gap:0.7rem;padding:1rem}.pn-chat .chat-input-container{display:flex;flex-grow:1;justify-content:space-between;gap:0.7rem;background:#f9f8f8;border-radius:6.4rem}.pn-chat .chat-input-container .chat-text-input{text-indent:0.8rem;border:none;background:transparent;width:100%;outline:0.2rem solid transparent;outline-offset:0.2rem}.pn-chat .chat-input-container .chat-text-input:focus{border-radius:6.4rem}.pn-chat .chat-input-container .chat-text-input:focus-visible{outline-color:#005d92}.pn-chat .chat-input-container .chat-disabled-button{display:flex;width:3.5em;min-height:3em;min-width:0;align-items:center;justify-content:center}.pn-chat.minimized{background:transparent;border:initial;box-shadow:initial;max-width:50px;max-height:50px;min-width:initial;min-height:initial;transform:scale(0.95);cursor:pointer}.pn-chat.minimized .minimize-btn,.pn-chat.minimized .close-btn{position:absolute;top:0;right:0;bottom:0;left:0}.pn-chat.minimized .minimize-btn button,.pn-chat.minimized .close-btn button{display:none}.pn-chat.minimized .chat-main,.pn-chat.minimized .chat-footer{display:none}.pn-chat.closed{display:none}.pn-chat .open-chat-btn .pn-button{width:5.6rem;height:5.6rem}.pn-chat .open-chat-btn .pn-icon svg{width:3.2rem;height:3.2rem}.pn-chat .indicator-icon{padding:0.2rem 0.8rem;margin-right:auto;margin-top:1rem;margin-bottom:2rem;visibility:hidden}@media (max-width: 768px){body.chat-open{overflow:hidden}}";
97
+ const pnChatCss = "pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}@media screen and (max-width: 767px){.sr-only-mobile{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}}.pn-chat{display:flex;flex-direction:column;height:600px;width:400px;max-width:400px;box-shadow:0 4px 4px 0 rgba(0, 0, 0, 0.25), 0 -2px 4px 0 rgba(240, 240, 240, 0.55);border-radius:1.6rem}@media (max-width: 768px){.pn-chat:not(.minimized){position:absolute;height:100dvh;width:100dvw;max-width:100%;top:0;left:0}.pn-chat.minimized{height:70px;border-radius:0.8rem 0.8rem 0 0}}@media (min-width: 768px) and (max-width: 1024px){.pn-chat{max-width:350px}}.pn-chat .chat-header{background-color:#ffffff;padding:0.8rem;padding-left:1.6rem;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #f3f2f2}@media (min-width: 768px){.pn-chat .chat-header{border-radius:1.6rem 1.6rem 0 0}}.pn-chat .chat-header .chat-controls{display:flex}.pn-chat .chat-header pn-button.minimize-btn button.pn-button{padding-bottom:0;margin-right:1rem}.pn-chat .chat-header pn-button.minimize-btn button.pn-button .pn-button-content{align-items:flex-end;position:absolute;bottom:0px}.pn-chat .chat-header #chat-title{margin:0;font-size:1.6rem;font-weight:500;line-height:1;height:100%;align-content:center}.pn-chat .chat-main{display:flex;flex-direction:column;flex-grow:1;overflow-y:auto;gap:1.6rem;padding:1.6rem;padding-bottom:3.2rem;background-color:#ffffff}.pn-chat .chat-main.loading-chat-main{display:flex;justify-content:center;align-items:center}.pn-chat .chat-loading-spinner{background-color:#005d92;width:4.8rem;height:4.8rem;border-radius:4.8rem;display:flex;align-items:center;justify-content:center}.pn-chat .chat-loading-content{color:#2d2013;font-size:1.6rem;font-weight:400}.pn-chat .chat-overview{text-align:center}.pn-chat .chat-messages{display:flex;flex-direction:column;gap:1.6rem;text-align:center}.pn-chat .card-container .slider-wrapper{margin:0}.pn-chat .card-container .slides-container{display:flex;gap:1rem}.pn-chat .card-container .slide:nth-child(even) [data-card]{width:calc(100% - 1rem)}@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:0.5;transform:scale(0.95)}}.pn-chat .chat-footer{background:#ffffff;border-top:1px solid #f3f2f2;border-radius:0 0 1.6rem 1.6rem}.pn-chat .chat-footer .form{display:flex;gap:0.7rem;padding:1rem}.pn-chat .chat-input-container{display:flex;flex-grow:1;justify-content:space-between;gap:0.7rem;background:#f9f8f8;border-radius:6.4rem}.pn-chat .chat-input-container .chat-text-input{border:none;background:transparent;width:100%;outline:0.2rem solid transparent;outline-offset:0.2rem;padding-left:1.6rem}.pn-chat .chat-input-container .chat-text-input:focus{border-radius:6.4rem}.pn-chat .chat-input-container .chat-text-input:focus-visible{outline-color:#005d92}.pn-chat .chat-input-container .chat-text-input::placeholder{top:2px;position:relative;color:#969087}.pn-chat .chat-input-container .chat-disabled-button{display:flex;width:3.5em;min-height:3em;min-width:0;align-items:center;justify-content:center}.pn-chat.minimized{background:transparent;border:initial;box-shadow:initial;max-width:50px;max-height:50px;min-width:initial;min-height:initial;transform:scale(0.95);cursor:pointer}.pn-chat.minimized .minimize-btn,.pn-chat.minimized .close-btn{position:absolute;top:0;right:0;bottom:0;left:0}.pn-chat.minimized .minimize-btn button,.pn-chat.minimized .close-btn button{display:none}.pn-chat.minimized .chat-main,.pn-chat.minimized .chat-footer{display:none}.pn-chat.closed{display:none}.pn-chat .open-chat-btn .pn-button{width:5.6rem;height:5.6rem}.pn-chat .open-chat-btn .pn-icon svg{width:3.2rem;height:3.2rem}.pn-chat .indicator-icon{padding:0.2rem 0.8rem;margin-right:auto;margin-top:1rem;margin-bottom:2rem;visibility:hidden}.pn-chat .minimize-btn .pn-button pn-icon .pn-icon-svg path,.pn-chat .close-btn .pn-button pn-icon .pn-icon-svg path{fill:#005d92}@media (max-width: 768px){body.chat-open{overflow:hidden}}";
98
98
  const PnChatStyle0 = pnChatCss;
99
99
 
100
100
  const PnChat = class {
@@ -414,16 +414,28 @@ const PnChat = class {
414
414
  }
415
415
  catch (error) {
416
416
  console.error('Error parsing button props', error instanceof Error ? error.message : 'Unknown error');
417
+ return;
417
418
  }
418
419
  }
419
- const handleClick = () => {
420
+ const handleClick = (event) => {
421
+ const button = event.target.closest('button');
422
+ if (button === null || button?.hasAttribute('disabled')) {
423
+ event.preventDefault();
424
+ event.stopPropagation();
425
+ return;
426
+ }
420
427
  if (props['data-action'] === 'minimize') {
421
428
  this.toggleChat();
422
429
  }
423
- if (props['dataAction'] === 'choice' && props['dataOptionChoice']) {
430
+ if (props['data-action'] === 'choice') {
424
431
  (async () => {
425
- await this.handleSendChoice(props['dataOptionChoice'], message.content);
432
+ await this.handleSendChoice(props['data-option-choice'], message.content);
426
433
  })();
434
+ const choiceButtons = document.querySelectorAll('[data-action="choice"]');
435
+ choiceButtons.forEach(pnButton => {
436
+ const buttonInner = pnButton.querySelector('button');
437
+ buttonInner?.setAttribute('disabled', 'true');
438
+ });
427
439
  }
428
440
  };
429
441
  return (index.h("pn-chat-message", { customerSegment: this.customerSegment, category: message.category }, index.h("pn-button", { class: message.class, role: "button", ...props, onClick: handleClick, onKeyDown: e => this.handleButtonKeyDown(e) }, message.content)));
@@ -456,9 +468,9 @@ const PnChat = class {
456
468
  const mainId = 'chat-main';
457
469
  const inputId = 'chat-input';
458
470
  const headerButton = this.messagesData?.header.button;
459
- return (index.h(index.Host, { key: '0cf24e9474bc0e7e39ec51b8e9bf7646f4ac21d8', class: this.customerSegment }, !this.isClosed && this.messagesData && (index.h("div", { key: 'f275614056e1f2df7972377ae3041ab690eae830', class: `pn-chat ${this.isMinimized ? 'minimized' : ''} ${this.isClosed ? 'closed' : ''}`, ref: el => (this.chatRef = el), role: "region", "aria-label": this.mainHeading }, !this.isMinimized && (index.h(index.Fragment, { key: '8bc0f594242ab297bc95e091a95bd382c1ce0b31' }, index.h("header", { key: '7a20b62deac0cb3fa34bf3abf7dba3f8eccb94e7', class: "chat-header", role: "banner" }, index.h("h1", { key: '0dbe95cfd3ca8856fc95bfd3e0a6e970b87ec6df', id: "chat-title" }, this.mainHeading), index.h("div", { key: '3c7ecf77edb890a351882a22a0910cdc8e2abc7b', class: "chat-controls", role: "toolbar", "aria-label": this.getTranslation('chatControlsAriaLabel') }, index.h("pn-button", { key: '564dd6d3c7234356f3805b4e0808411d97e41292', icon: minus.minus, "icon-only": "true", class: "minimize-btn", onClick: this.toggleChat, "aria-expanded": !this.isMinimized, "aria-controls": mainId, "aria-label": this.getTranslation('minimizeChatAriaLabel'), variant: "borderless", tooltip: this.getTranslation('minimizeChatAriaLabel') }), index.h("pn-button", { key: '5d2873c2409d3caa7887bf9b99de5f64b5c8af22', icon: close.close, "icon-only": "true", class: "close-btn", onClick: this.closeChat, "aria-expanded": !this.isMinimized, "aria-label": this.getTranslation('closeChatAriaLabel'), variant: "borderless", tooltip: this.getTranslation('closeChatAriaLabel') }))), (this.messagesData?.messages?.length ?? 0) > 0 ?
471
+ return (index.h(index.Host, { key: 'd1b6d427a15513a46277479ece1bce7e20a1044b', class: this.customerSegment }, !this.isClosed && this.messagesData && (index.h("div", { key: 'ecee6b29d3730789fd4994d7a59d32166b68653e', class: `pn-chat ${this.isMinimized ? 'minimized' : ''} ${this.isClosed ? 'closed' : ''}`, ref: el => (this.chatRef = el), role: "region", "aria-label": this.mainHeading }, !this.isMinimized && (index.h(index.Fragment, { key: '5a4fe8af5e224b59dfb53fc4c24f84041c3f8742' }, index.h("header", { key: 'dad77c1594f447014fcfa02dd672eb7f55d8b0d4', class: "chat-header", role: "banner" }, index.h("h1", { key: '2db55d9cf2e638655d5b9eb8dba92e383b81699d', id: "chat-title" }, this.mainHeading), index.h("div", { key: 'd5a0b03b057e16af35fc9ea61cc4e278cb3d2068', class: "chat-controls", role: "toolbar", "aria-label": this.getTranslation('chatControlsAriaLabel') }, index.h("pn-button", { key: '992249d07b8f6f19d6fcdf9eb4fc11efe8f63e1f', icon: minus.minus, "icon-only": "true", class: "minimize-btn", onClick: this.toggleChat, "aria-expanded": !this.isMinimized, "aria-controls": mainId, "aria-label": this.getTranslation('minimizeChatAriaLabel'), appearance: "light", tooltip: this.getTranslation('minimizeChatAriaLabel'), small: "true" }), index.h("pn-button", { key: 'eeed9e762baf7ecb315e43300001f3279f14e563', icon: close.close, "icon-only": "true", class: "close-btn", onClick: this.closeChat, "aria-expanded": !this.isMinimized, "aria-label": this.getTranslation('closeChatAriaLabel'), appearance: "light", tooltip: this.getTranslation('closeChatAriaLabel'), small: "true" }))), (this.messagesData?.messages?.length ?? 0) > 0 ?
460
472
  (index.h("main", { id: mainId, class: "chat-main", role: "main", "aria-labelledby": "chat-title" }, this.messagesData.header && (index.h("div", { class: "chat-overview" }, index.h("div", { class: "body" }, this.messagesData.header.body), headerButton && (index.h("pn-button", { href: headerButton.href, class: headerButton.class, appearance: headerButton.appearance, variant: headerButton.variant, small: headerButton.small, role: "button", onKeyDown: e => this.handleButtonKeyDown(e) }, headerButton.content)))), index.h("div", { ref: el => (this.chatMessagesContainer = el), class: "chat-messages", role: "log", "aria-live": "polite", "aria-label": this.getTranslation('chatMessagesAriaLabel') }, this.groupMessages()), index.h("pn-icon", { class: "indicator-icon", "aria-label": this.getTranslation('waitingForAnswerLabel'), role: "presentation" })))
461
- : (index.h("main", { id: mainId, class: "chat-main loading-chat-main", role: "main", "aria-labelledby": "chat-title" }, index.h("div", { class: "chat-loading-spinner" }, index.h("pn-spinner", { light: "true", size: "1.5" })), index.h("span", { class: "chat-loading-content" }, this.getTranslation('loadingText')))), index.h("footer", { key: '6d8a4b4e0ce587c39f307f5ad37dd7498eaaaa4a', class: "chat-footer", role: "contentinfo" }, index.h("div", { key: 'b2879f8c86f2d01cd9563d21d9303b2e4d649503', class: "form", role: "form", "aria-labelledby": inputId }, index.h("label", { key: '9af815bef9cf42c18379839844bcf0101bd3921e', htmlFor: inputId, class: "sr-only" }, this.getTranslation('writeChatMessagePlaceholder')), index.h("div", { key: '97007d97f8fe0a7c5f8b8e9c25bbe20918679484', class: "chat-input-container" }, index.h("input", { key: '6e156d7ad63763316d2be89b925099fa03984232', id: inputId, class: "chat-text-input", ref: el => (this.inputRef = el), type: "text", placeholder: this.getTranslation('writeChatMessagePlaceholder'), value: this.message, onInput: (e) => (this.message = e.target.value), onKeyPress: this.handleKeyPress, maxLength: 3990 }), !this.message.trim() ? (index.h("div", { class: "chat-disabled-button", role: "button", "aria-label": this.getTranslation('sendButtonText'), "aria-disabled": "true", tabIndex: -1 }, index.h("pn-icon", { color: "gray400", icon: submit }))) : (index.h("pn-button", { "icon-only": "true", variant: "borderless", appearance: "light", icon: submit, onClick: this.handleSendMessage, disabled: !this.message.trim(), "aria-label": this.getTranslation('sendButtonText'), tooltip: this.getTranslation('sendButtonText') }))))))), this.isMinimized && (index.h("pn-button", { key: '98f1a01a3774b504c91e72279133f46d327c723f', icon: talk_bubble, "icon-only": "true", class: "open-chat-btn", onClick: this.toggleChat, tooltip: this.getTranslation('openChatAriaLabel'), "aria-label": this.getTranslation('openChatAriaLabel'), "aria-expanded": !this.isMinimized }))))));
473
+ : (index.h("main", { id: mainId, class: "chat-main loading-chat-main", role: "main", "aria-labelledby": "chat-title" }, index.h("div", { class: "chat-loading-spinner" }, index.h("pn-spinner", { light: "true", size: "1.5" })), index.h("span", { class: "chat-loading-content" }, this.getTranslation('loadingText')))), index.h("footer", { key: '151b8cb74adc00cc941c68c14e94236e458e5b93', class: "chat-footer", role: "contentinfo" }, index.h("div", { key: 'f9cae25c7fdb38877a0010d01e6845e778f4658c', class: "form", role: "form", "aria-labelledby": inputId }, index.h("label", { key: 'b34656f59997b0e9b24f3c1e4de6df6340b260e5', htmlFor: inputId, class: "sr-only" }, this.getTranslation('writeChatMessagePlaceholder')), index.h("div", { key: '8c63bca6b7d0f9e9e801b7b40dff4a8d9b26e49d', class: "chat-input-container" }, index.h("input", { key: 'e5882f25731916a0800f4efde9a2daea72fba76d', id: inputId, class: "chat-text-input", ref: el => (this.inputRef = el), type: "text", placeholder: this.getTranslation('writeChatMessagePlaceholder'), value: this.message, onInput: (e) => (this.message = e.target.value), onKeyPress: this.handleKeyPress, maxLength: 3990 }), !this.message.trim() ? (index.h("div", { class: "chat-disabled-button", role: "button", "aria-label": this.getTranslation('sendButtonText'), "aria-disabled": "true", tabIndex: -1 }, index.h("pn-icon", { color: "gray400", icon: submit }))) : (index.h("pn-button", { "icon-only": "true", variant: "borderless", appearance: "light", icon: submit, onClick: this.handleSendMessage, disabled: !this.message.trim(), "aria-label": this.getTranslation('sendButtonText'), tooltip: this.getTranslation('sendButtonText') }))))))), this.isMinimized && (index.h("pn-button", { key: '4022adb25d86961ba4f20efd52fa8d4938f81b76', icon: talk_bubble, "icon-only": "true", class: "open-chat-btn", onClick: this.toggleChat, tooltip: this.getTranslation('openChatAriaLabel'), "aria-label": this.getTranslation('openChatAriaLabel'), "aria-expanded": !this.isMinimized }))))));
462
474
  }
463
475
  static get watchers() { return {
464
476
  "messages": ["handleMessagesChange"],
@@ -1 +1 @@
1
- {"file":"pn-chat.entry.cjs.js","mappings":"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","names":["icon","LocalStorageService","PnChatService","h","arrow_right","Host","Fragment","minus","close"],"sources":["node_modules/pn-design-assets/pn-assets/icons/submit.js","node_modules/pn-design-assets/pn-assets/icons/talk_bubble.js","src/components/widgets/pn-chat/translations.ts","src/components/widgets/pn-chat/pn-chat.scss?tag=pn-chat","src/components/widgets/pn-chat/pn-chat.tsx"],"sourcesContent":["const icon = '<svg class=\"pn-icon-svg\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"#000\" fill-rule=\"evenodd\" d=\"M21 11.998a1 1 0 0 1-.577.908l-15 7a1 1 0 0 1-1.237-1.487l4.585-6.42-1.46-2.043A1 1 0 1 1 8.94 8.794l1.875 2.625a1 1 0 0 1 0 1.162l-2.788 3.903 9.599-4.48L6.58 6.909a1 1 0 1 1 .838-1.816l13 6a1 1 0 0 1 .581.906M5 4a1 1 0 0 1 1 1v.01a1 1 0 1 1-2 0V5a1 1 0 0 1 1-1\" clip-rule=\"evenodd\"/></svg>';\nexport const submit = icon;\n","const icon = '<svg class=\"pn-icon-svg\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"#000\" fill-rule=\"evenodd\" d=\"M12.388 2c5.522 0 10 4.477 10 10s-4.478 10-10 10H2l1.355-4.064-.798-3.987a8.8 8.8 0 0 1-.17-1.717V12c0-5.523 4.478-10 10-10m8 10a8 8 0 0 0-16 0v.232q0 .67.13 1.325l.902 4.507L4.775 20h7.612a8 8 0 0 0 8-8m-12.5-1.5a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3m6 1.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0m3-1.5a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3\" clip-rule=\"evenodd\"/></svg>';\nexport const talk_bubble = icon;\nexport const talkBubble = icon;\n","export const translations = {\n 'sv': {\n relatedContentAriaLabel: 'Relaterat innehåll',\n chatMinimizedAriaLabel: 'Chatten är minimerad',\n chatOpenedAriaLabel: 'Chatten är öppen',\n minimizeChatAriaLabel: 'Minimera chatten',\n closeChatAriaLabel: 'Stäng chatten',\n openChatAriaLabel: 'Öppna chatten',\n chatControlsAriaLabel: 'Chattkontroller',\n chatMessagesAriaLabel: 'Chattmeddelanden',\n sentMessageAriaLabel: 'Meddelande skickat',\n writeChatMessagePlaceholder: 'Skriv ett meddelande...',\n waitingForAnswerLabel: 'Väntar på svar',\n sendButtonText: 'Skicka',\n loadingText: 'Laddar...',\n },\n 'en': {\n relatedContentAriaLabel: 'Related content',\n chatMinimizedAriaLabel: 'Chat is minimized',\n chatOpenedAriaLabel: 'Chat is open',\n minimizeChatAriaLabel: 'Minimize chat',\n closeChatAriaLabel: 'Close chat',\n openChatAriaLabel: 'Open chat',\n chatControlsAriaLabel: 'Chat controls',\n chatMessagesAriaLabel: 'Chat messages',\n sentMessageAriaLabel: 'Message sent',\n writeChatMessagePlaceholder: 'Type a message...',\n waitingForAnswerLabel: 'Waiting for answer',\n sendButtonText: 'Send',\n loadingText: 'Loading...',\n },\n 'da': {\n relatedContentAriaLabel: 'Relateret indhold',\n chatMinimizedAriaLabel: 'Chatten er minimeret',\n chatOpenedAriaLabel: 'Chatten er åben',\n minimizeChatAriaLabel: 'Minimer chatten',\n closeChatAriaLabel: 'Luk chatten',\n openChatAriaLabel: 'Åbn chatten',\n chatControlsAriaLabel: 'Chatkontroller',\n chatMessagesAriaLabel: 'Chatbeskeder',\n sentMessageAriaLabel: 'Besked sendt',\n writeChatMessagePlaceholder: 'Skriv en besked...',\n waitingForAnswerLabel: 'Venter på svar',\n sendButtonText: 'Send',\n loadingText: 'Indlæser...',\n },\n 'no': {\n relatedContentAriaLabel: 'Relatert innhold',\n chatMinimizedAriaLabel: 'Chatten er minimert',\n chatOpenedAriaLabel: 'Chatten er åpen',\n minimizeChatAriaLabel: 'Minimer chatten',\n closeChatAriaLabel: 'Lukk chatten',\n openChatAriaLabel: 'Åpne chatten',\n chatControlsAriaLabel: 'Chatkontroller',\n chatMessagesAriaLabel: 'Chatmeldinger',\n sentMessageAriaLabel: 'Melding sendt',\n writeChatMessagePlaceholder: 'Skriv en melding...',\n waitingForAnswerLabel: 'Venter på svar',\n sendButtonText: 'Send',\n loadingText: 'Laster...',\n },\n 'fi': {\n relatedContentAriaLabel: 'Aiheeseen liittyvä sisältö',\n chatMinimizedAriaLabel: 'Keskustelu on pienennetty',\n chatOpenedAriaLabel: 'Keskustelu on auki',\n minimizeChatAriaLabel: 'Pienennä keskustelu',\n closeChatAriaLabel: 'Sulje keskustelu',\n openChatAriaLabel: 'Avaa keskustelu',\n chatControlsAriaLabel: 'Keskustelun hallinta',\n chatMessagesAriaLabel: 'Keskusteluviestit',\n sentMessageAriaLabel: 'Viesti lähetetty',\n writeChatMessagePlaceholder: 'Kirjoita viesti...',\n waitingForAnswerLabel: 'Odotetaan vastausta',\n sendButtonText: 'Lähetä',\n loadingText: 'Ladataan...',\n },\n};","@import '../../../globals/main.scss';\n$spacing: 1.6rem;\n\n.pn-chat {\n @media (max-width: 768px) {\n &:not(.minimized) {\n position: absolute;\n height: 100dvh;\n width: 100dvw;\n max-width: 100%;\n top: 0;\n left: 0;\n }\n\n &.minimized {\n height: 70px;\n border-radius: 0.8rem 0.8rem 0 0;\n }\n }\n\n @media (min-width: 768px) and (max-width: 1024px) {\n max-width: 350px;\n\n }\n\n display: flex;\n flex-direction: column;\n height: 600px;\n width: 100%;\n max-width: 400px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n border-radius: 1.6rem;\n\n .chat-header {\n background-color: $blue700;\n color: $white;\n padding: 0.8rem;\n padding-left: 1.6rem;\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n @media (min-width: 768px) {\n border-radius: 1.6rem 1.6rem 0 0;\n }\n\n .chat-controls {\n display: flex;\n }\n\n pn-button.minimize-btn {\n button.pn-button {\n padding-bottom: 0;\n\n .pn-button-content {\n align-items: flex-end;\n }\n }\n }\n }\n\n .chat-header #chat-title {\n margin: 0;\n font-size: 2rem;\n font-weight: 400;\n line-height: 1.4;\n }\n\n .chat-main {\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n overflow-y: auto;\n gap: $spacing;\n padding: $spacing;\n padding-bottom: $spacing * 2;\n border-left: 1px solid $gray200;\n border-right: 1px solid $gray200;\n background-color: $white;\n\n &.loading-chat-main {\n display: flex;\n justify-content: center;\n align-items: center;\n padding-bottom: 1.6rem;\n }\n }\n\n .chat-loading-spinner {\n background-color: $blue700;\n width: 4.8rem;\n height: 4.8rem;\n border-radius: 4.8rem;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .chat-loading-content {\n color: $gray900;\n font-size: 1.6rem;\n font-weight: 400;\n }\n\n .chat-overview {\n text-align: center;\n }\n\n .chat-messages {\n display: flex;\n flex-direction: column;\n gap: $spacing;\n text-align: center;\n }\n\n .card-container {\n .slider-wrapper {\n margin: 0;\n }\n\n $card-gap: 1rem;\n\n .slides-container {\n display: flex;\n gap: $card-gap;\n }\n\n .slide:nth-child(even) [data-card] {\n width: calc(100% - $card-gap);\n }\n }\n\n @keyframes pulse {\n\n 0%,\n 100% {\n opacity: 1;\n transform: scale(1);\n }\n\n 50% {\n opacity: 0.5;\n transform: scale(0.95);\n }\n }\n\n .chat-footer {\n background: $white;\n border: 1px solid $gray200;\n border-top: none;\n }\n\n .chat-footer .form {\n display: flex;\n gap: 0.7rem;\n padding: 1rem;\n }\n\n .chat-input-container {\n display: flex;\n flex-grow: 1;\n justify-content: space-between;\n gap: 0.7rem;\n background: $gray25;\n border-radius: 6.4rem;\n\n .chat-text-input {\n text-indent: 0.8rem;\n border: none;\n background: transparent;\n width: 100%;\n outline: 0.2rem solid transparent;\n outline-offset: 0.2rem;\n\n &:focus {\n border-radius: 6.4rem;\n }\n\n &:focus-visible {\n outline-color: $blue700;\n }\n }\n\n .chat-disabled-button {\n display: flex;\n width: 3.5em;\n min-height: 3em;\n min-width: 0;\n align-items: center;\n justify-content: center;\n }\n }\n\n &.minimized {\n background: transparent;\n border: initial;\n box-shadow: initial;\n max-width: 50px;\n max-height: 50px;\n min-width: initial;\n min-height: initial;\n transform: scale(0.95);\n\n cursor: pointer;\n\n .minimize-btn,\n .close-btn {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n button {\n display: none;\n }\n }\n\n .chat-main,\n .chat-footer {\n display: none;\n }\n }\n\n &.closed {\n display: none;\n }\n\n .open-chat-btn {\n .pn-button {\n width: 5.6rem;\n height: 5.6rem;\n }\n\n .pn-icon svg {\n width: 3.2rem;\n height: 3.2rem;\n }\n }\n\n .indicator-icon {\n padding: 0.2rem 0.8rem;\n margin-right: auto;\n margin-top: 1rem;\n margin-bottom: 2rem;\n visibility: hidden;\n }\n}\n\nbody.chat-open {\n @media (max-width: 768px) {\n overflow: hidden;\n }\n}","import { Component, h, Prop, State, Host, Watch, Listen, Fragment } from '@stencil/core';\nimport { minus, close, arrow_right, talk_bubble, submit } from 'pn-design-assets/pn-assets/icons.js';\nimport { AgentMessage, BaseMessage, ButtonMessage, CardMessage, ChatMessage, ChatMessages, CustomerSegment, LinkMessage } from './types';\nimport { LocalStorageService } from '@/globals/LocalStorageService';\nimport { JSX } from 'react';\nimport { PnChatService } from './pn-chat.service';\nimport { translations } from './translations';\nimport type { Translationsi18n } from './types';\n\n@Component({\n tag: 'pn-chat',\n styleUrl: 'pn-chat.scss',\n})\nexport class PnChat {\n @Prop() endpoint!: string;\n @Prop() customerSegment!: CustomerSegment;\n @Prop() mainHeading: string = '';\n @Prop() relatedContentAriaLabel: string;\n @Prop() chatMinimizedAriaLabel: string;\n @Prop() chatOpenedAriaLabel: string;\n @Prop() minimizeChatAriaLabel: string;\n @Prop() closeChatAriaLabel: string;\n @Prop() openChatAriaLabel: string;\n @Prop() chatControlsAriaLabel: string;\n @Prop() chatMessagesAriaLabel: string;\n @Prop() sentMessageAriaLabel: string;\n @Prop() writeChatMessagePlaceholder: string;\n @Prop() waitingForAnswerLabel: string;\n @Prop() sendButtonText: string;\n @Prop() loadingText: string;\n @Prop() carouselSlidesToShow: number = 1;\n @Prop() messages: string;\n @Prop() language: string = 'sv';\n @Prop() market: string = 'se';\n @Prop() itemId?: string = '';\n @Prop() pnChatId: string = '00000000-0000-0000-0000-000000000000';\n @Prop() forceOpen: boolean = false;\n @Prop() isLoggedIn: boolean = false;\n\n @State() private message: string = '';\n @State() private messagesData: ChatMessages;\n @State() private isMinimized: boolean = true;\n @State() private isClosed: boolean = false;\n @State() private lastMessageId: string = '';\n @State() i18n: any;\n\n private chatId: string;\n\n private readonly _defaultChatId: string = '00000000-0000-0000-0000-000000000000';\n private readonly _defaultAlternativeChatId: string = '1';\n private readonly chatLocalStorageKey = 'sf-chat-state';\n private chatMessagesContainer?: HTMLElement;\n private chatRef?: HTMLDivElement;\n private inputRef?: HTMLInputElement;\n private storage: LocalStorageService = new LocalStorageService();\n private _chatService: PnChatService;\n private _chatSegment: string = \"#chat\";\n private _forceClose: boolean = false;\n\n componentWillLoad(): void {\n this._forceClose = false;\n this._chatService = new PnChatService(this.endpoint, this.market, this.language);\n this.messagesData = {\n header: {},\n messages: [],\n };\n\n let storageId = this.storage.get(this.chatLocalStorageKey);\n\n if (storageId && storageId.isLoggedIn === !this.isLoggedIn) {\n this.storage.remove(this.chatLocalStorageKey);\n }\n else if (storageId && storageId.chatId) {\n this.chatId = storageId?.chatId ?? this.chatId;\n }\n\n this.setTranslations();\n\n setInterval(() => {\n this.updateChat();\n }, 1500);\n }\n\n setTranslations() {\n if (this.language && translations[this.language]) {\n this.i18n = translations[this.language];\n }\n }\n\nprivate getTranslation(key: keyof Translationsi18n): string {\n const value = this[key];\n if (value === undefined || value === null || value === '') {\n return translations[this.language]?.[key] ?? translations['en'][key];\n }\n return value;\n}\n\n private async updateChat() {\n if (this.isMinimized || this.isClosed) {\n return;\n }\n\n let prevLastMessageId = this.lastMessageId;\n\n await this._chatService.fetchMessages(this.chatId, this.messagesData).then(newMessages => {\n this.lastMessageId = this._chatService.GetLastMessageId(newMessages?.messages, this.lastMessageId);\n let htmlCollection = document.getElementsByClassName('pn-chat-before');\n let elements = Array.from(htmlCollection);\n\n newMessages.messages.forEach(message => {\n elements.forEach(element => {\n if (message.content != null && (element.textContent.trim() === message.content.trim() || element.textContent.trim().includes(message.content.trim()))) {\n element.remove();\n }\n });\n this.renderMessage(message);\n });\n\n if (prevLastMessageId !== this.lastMessageId) {\n this._chatService.updateLastMessageId(this.chatId, this.lastMessageId);\n this.messagesData = newMessages;\n newMessages.messages.forEach(message => {\n this.renderMessage(message);\n });\n }\n });\n }\n\n private async setStartValues() {\n if (this._forceClose) {\n this._forceClose = false;\n return;\n }\n\n if ((!this.chatId || this.chatId === this._defaultChatId || this.chatId === this._defaultAlternativeChatId) && !this.isMinimized) {\n this.chatId = await this._chatService.startChat(this.pnChatId, this.itemId);\n this.storage.set(this.chatLocalStorageKey, { chatId: this.chatId, isLoggedIn: this.isLoggedIn });\n }\n\n if (this.chatId) {\n this.storage.set(this.chatLocalStorageKey, { chatId: this.chatId, isLoggedIn: this.isLoggedIn });\n await this.fetchMessages();\n this.lastMessageId = this._chatService.GetLastMessageId(this.messagesData.messages, this.lastMessageId);\n }\n }\n\n private async fetchMessages() {\n let newMessages = await this._chatService.fetchMessages(this.chatId, this.messagesData).then(newMessages => {\n this.lastMessageId = this._chatService.GetLastMessageId(this.messagesData.messages, this.lastMessageId);\n this.messagesData = newMessages;\n let htmlCollection = document.getElementsByClassName('pn-chat-before');\n let elements = Array.from(htmlCollection);\n\n newMessages.messages.forEach(message => {\n elements.forEach(element => {\n if (element.textContent.trim() === message.content.trim() || element.textContent.trim().includes(message.content.trim())) {\n element.remove();\n }\n });\n this.renderMessage(message);\n });\n return newMessages;\n });\n }\n\n private async handleSend() {\n if (!this.message?.trim()) {\n return;\n }\n\n let message = this.message;\n this.message = '';\n this.createBeforeElement(message);\n\n let responseId = await this._chatService.sendMessage(message, this.itemId, this.chatId, this.lastMessageId, 'Text');\n this.lastMessageId = responseId;\n this.lastMessageId = this._chatService.GetLastMessageId(this.messagesData.messages, this.lastMessageId);\n\n this.announceToScreenReader(this.getTranslation('sentMessageAriaLabel'));\n };\n\n private groupMessages(): JSX.Element[] {\n const result: JSX.Element[] = [];\n let currentCardGroup: CardMessage[] = [];\n\n const flushCardGroup = () => {\n if (currentCardGroup.length > 0) {\n const carouselData = {\n slides: currentCardGroup.map(card => {\n const cardHtml = `\n <pn-chat-message customerSegment=${this.customerSegment} data-card role=\"article\" category=${card.category}>\n <h2 class=\"card-heading\">${card.heading}</h2>\n <p>${card.content}</p>\n ${card.buttons\n ?.map(\n button => `\n <pn-button\n href=\"${button.href}\"\n class=\"${button.class}\"\n appearance=\"${button.appearance}\"\n variant=\"${button.variant}\"\n small=\"${button.small}\"\n role=\"button\"\n >\n ${button.content}\n </pn-button>\n `,\n )\n .join('') || ''\n }\n </pn-chat-message>\n `;\n return cardHtml;\n }),\n };\n result.push(\n <pn-marketweb-carousel\n class=\"card-container\"\n nextButtonLabel=\"Next\"\n previousButtonLabel=\"Previous\"\n ariaNavigationLabel={this.getTranslation('relatedContentAriaLabel')}\n slidesToShow={this.carouselSlidesToShow}\n source={JSON.stringify(carouselData)}\n ></pn-marketweb-carousel>,\n );\n currentCardGroup = [];\n }\n };\n\n this.messagesData.messages.forEach((message, index) => {\n if (message.category === 'Card') {\n currentCardGroup.push(message as CardMessage);\n\n if (index === this.messagesData.messages.length - 1 || this.messagesData.messages[index + 1]?.category !== 'Card') {\n flushCardGroup();\n }\n } else {\n flushCardGroup();\n result.push(this.renderMessage(message));\n }\n });\n\n return result;\n }\n\n private handleKeyPress = (event: KeyboardEvent) => {\n if (event.key === 'Enter' && this.message.trim()) {\n event.preventDefault();\n this.handleSend();\n }\n };\n\n private handleSendMessage = (event: MouseEvent) => {\n if (this.message.trim()) {\n event.preventDefault();\n this.handleSend();\n }\n }\n\n private handleButtonKeyDown(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n (event.target as HTMLElement).click();\n }\n }\n\n @Listen('keydown')\n handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape' && this.isMinimized && !this.isClosed) {\n this.toggleChat();\n }\n }\n\n @Watch('messages')\n handleMessagesChange(newMessage: string): void {\n if (newMessage) {\n this.handleSend();\n }\n }\n\n @Watch('pnChatId')\n handleNewChatId() {\n this.chatId = this.pnChatId === this._defaultAlternativeChatId ? this._defaultChatId : this.pnChatId;\n this.messagesData.messages = [];\n this.isMinimized = false;\n this.setStartValues();\n }\n\n @Watch('forceOpen')\n handleSameChatId() {\n this.isMinimized = false;\n }\n\n @Watch('isMinimized')\n scrollToBottom() {\n const observer = new MutationObserver((_, obs) => {\n const chatMain = document.getElementById('chat-main');\n if (chatMain) {\n setTimeout(() => {\n chatMain.scrollTo({\n top: chatMain.scrollHeight,\n behavior: 'smooth'\n });\n }, 500)\n obs.disconnect();\n }\n });\n observer.observe(document.body, { childList: true, subtree: true, });\n }\n\n private closeChat = () => {\n this._forceClose = true;\n this.storage.remove(this.chatLocalStorageKey);\n this.chatId = null;\n this.pnChatId = this._defaultChatId;\n let chatElement = document.getElementsByTagName('pn-chat')[0];\n chatElement.setAttribute('item-id', '');\n\n let hasActiveShipmentInUrl = window.location.href.includes(this._chatSegment);\n if (hasActiveShipmentInUrl) {\n this.isMinimized = !this.isMinimized;\n this.announceToScreenReader(this.isMinimized ? this.getTranslation('chatMinimizedAriaLabel') : this.getTranslation('chatOpenedAriaLabel'));\n document.body.classList.toggle('chat-open');\n window.location.href = window.location.href.split(this._chatSegment)[0];\n }\n else {\n this._forceClose = false;\n this.toggleChat();\n }\n }\n\n private toggleChat = () => {\n this.isMinimized = !this.isMinimized;\n this.announceToScreenReader(this.isMinimized ? this.getTranslation('chatMinimizedAriaLabel') : this.getTranslation('chatOpenedAriaLabel'));\n document.body.classList.toggle('chat-open');\n\n if (!this.isMinimized && !this.chatId) {\n this.setStartValues();\n }\n };\n\n private announceToScreenReader(message: string) {\n const announcement = document.createElement('div');\n announcement.setAttribute('role', 'status');\n announcement.setAttribute('aria-live', 'polite');\n announcement.classList.add('sr-only');\n announcement.textContent = message;\n document.body.appendChild(announcement);\n setTimeout(() => announcement.remove(), 1000);\n }\n\n private renderMessage(message: ChatMessage): JSX.Element {\n switch (message.category) {\n case 'Bot':\n return this.renderBaseMessage(message);\n case 'Button':\n return this.renderButtonMessage(message);\n case 'ButtonResponse':\n return this.renderBaseMessage(message);\n case 'Link':\n return this.renderLinkMessage(message);\n case 'Card':\n return this.renderCardMessage(message);\n case 'User':\n return this.renderBaseMessage(message);\n case 'Agent':\n return this.renderAgentMessage(message);\n case 'System':\n return this.renderBaseMessage(message);\n }\n }\n\n private renderBaseMessage(message: BaseMessage): JSX.Element {\n return (\n <pn-chat-message customerSegment={this.customerSegment} category={message.category} agentName='' role=\"log\" aria-live=\"polite\">\n {message.content}\n </pn-chat-message>\n );\n }\n\n private renderAgentMessage(message: AgentMessage): JSX.Element {\n return (\n <pn-chat-message customerSegment={this.customerSegment} category={message.category} agentName={message.agentName} role=\"log\" aria-live=\"polite\">\n {message.content}\n </pn-chat-message>\n );\n }\n\n private renderButtonMessage(message: ButtonMessage): JSX.Element {\n let props = {};\n\n if (message?.props) {\n try {\n props = JSON.parse(message.props);\n } catch (error) {\n console.error('Error parsing button props', error instanceof Error ? error.message : 'Unknown error');\n }\n }\n\n const handleClick = () => {\n if (props['data-action'] === 'minimize') {\n this.toggleChat();\n }\n if (props['dataAction'] === 'choice' && props['dataOptionChoice']) {\n (async () => {\n await this.handleSendChoice(props['dataOptionChoice'], message.content);\n })();\n }\n };\n\n return (\n <pn-chat-message customerSegment={this.customerSegment} category={message.category}>\n <pn-button class={message.class} role=\"button\" {...props} onClick={handleClick} onKeyDown={e => this.handleButtonKeyDown(e)}>\n {message.content}\n </pn-button>\n </pn-chat-message>\n );\n }\n\n private createBeforeElement(content: string) {\n const targetElement = this.chatMessagesContainer;\n const chatMessage = document.createElement('pn-chat-message');\n chatMessage.setAttribute('customerSegment', this.customerSegment);\n chatMessage.setAttribute('category', 'User');\n chatMessage.classList.add('pn-chat-before');\n chatMessage.textContent = content;\n\n targetElement.appendChild(chatMessage);\n this.scrollToBottom();\n chatMessage.scrollIntoView();\n }\n\n private async handleSendChoice(choiceId: string, content: string) {\n this.createBeforeElement(content);\n\n let responseId = await this._chatService.sendMessage(choiceId, this.itemId, this.chatId, this.lastMessageId, 'Choice');\n this.lastMessageId = responseId;\n this.lastMessageId = this._chatService.GetLastMessageId(this.messagesData.messages, this.lastMessageId);\n\n this.announceToScreenReader(this.getTranslation('sentMessageAriaLabel'));\n }\n\n private renderLinkMessage(message: LinkMessage): JSX.Element {\n return (\n <pn-chat-message customerSegment={this.customerSegment} category={message.category}>\n <a href={message.href} role=\"link\" rel=\"noopener noreferrer\">\n <span class=\"content\">{message.content}</span>\n <pn-icon icon={arrow_right} color=\"blue700\" aria-hidden=\"true\" role=\"presentation\" />\n </a>\n </pn-chat-message>\n );\n }\n\n private renderCardMessage(message: CardMessage): JSX.Element {\n return (\n <pn-chat-message customerSegment={this.customerSegment} category={message.category} data-card role=\"article\">\n <h2 class=\"card-heading\">{message.heading}</h2>\n <p>{message.content}</p>\n {message.buttons && (\n <div class=\"cta\">\n {message.buttons?.map(button => (\n <pn-button\n href={button.href}\n class={button.class}\n appearance={button.appearance}\n variant={button.variant}\n small={button.small}\n role=\"button\"\n onKeyDown={e => this.handleButtonKeyDown(e)}\n >\n {button.content}\n </pn-button>\n ))}\n </div>\n )}\n </pn-chat-message>\n );\n }\n\n render() {\n const mainId = 'chat-main';\n const inputId = 'chat-input';\n const headerButton = this.messagesData?.header.button;\n\n return (\n <Host class={this.customerSegment}>\n {!this.isClosed && this.messagesData && (\n <div\n class={`pn-chat ${this.isMinimized ? 'minimized' : ''} ${this.isClosed ? 'closed' : ''}`}\n ref={el => (this.chatRef = el as HTMLDivElement)}\n role=\"region\"\n aria-label={this.mainHeading}\n >\n {!this.isMinimized && (\n <Fragment>\n <header class=\"chat-header\" role=\"banner\">\n <h1 id=\"chat-title\">{this.mainHeading}</h1>\n <div class=\"chat-controls\" role=\"toolbar\" aria-label={this.getTranslation('chatControlsAriaLabel')}>\n <pn-button\n icon={minus}\n icon-only=\"true\"\n class=\"minimize-btn\"\n onClick={this.toggleChat}\n aria-expanded={!this.isMinimized}\n aria-controls={mainId}\n aria-label={this.getTranslation('minimizeChatAriaLabel')}\n variant=\"borderless\"\n tooltip={this.getTranslation('minimizeChatAriaLabel')}\n />\n <pn-button\n icon={close}\n icon-only=\"true\"\n class=\"close-btn\"\n onClick={this.closeChat}\n aria-expanded={!this.isMinimized}\n aria-label={this.getTranslation('closeChatAriaLabel')}\n variant=\"borderless\"\n tooltip={this.getTranslation('closeChatAriaLabel')}\n />\n </div>\n </header>\n {(this.messagesData?.messages?.length ?? 0) > 0 ?\n (<main id={mainId} class=\"chat-main\" role=\"main\" aria-labelledby=\"chat-title\">\n {this.messagesData.header && (\n <div class=\"chat-overview\">\n <div class=\"body\">{this.messagesData.header.body}</div>\n {headerButton && (\n <pn-button\n href={headerButton.href}\n class={headerButton.class}\n appearance={headerButton.appearance}\n variant={headerButton.variant}\n small={headerButton.small}\n role=\"button\"\n onKeyDown={e => this.handleButtonKeyDown(e)}\n >\n {headerButton.content}\n </pn-button>\n )}\n </div>\n )}\n <div ref={el => (this.chatMessagesContainer = el as HTMLElement)} class=\"chat-messages\" role=\"log\" aria-live=\"polite\" aria-label={this.getTranslation('chatMessagesAriaLabel')}>\n {this.groupMessages()}\n </div>\n <pn-icon\n class=\"indicator-icon\"\n aria-label={this.getTranslation('waitingForAnswerLabel')}\n role=\"presentation\"\n ></pn-icon>\n </main>)\n : (<main id={mainId} class=\"chat-main loading-chat-main\" role=\"main\" aria-labelledby=\"chat-title\">\n <div class=\"chat-loading-spinner\">\n <pn-spinner light=\"true\" size=\"1.5\"></pn-spinner>\n </div>\n <span class=\"chat-loading-content\">{this.getTranslation('loadingText')}</span>\n </main>)}\n <footer class=\"chat-footer\" role=\"contentinfo\">\n <div class=\"form\" role=\"form\" aria-labelledby={inputId}>\n <label htmlFor={inputId} class=\"sr-only\">\n {this.getTranslation('writeChatMessagePlaceholder')}\n </label>\n <div class=\"chat-input-container\">\n <input\n id={inputId}\n class=\"chat-text-input\"\n ref={el => (this.inputRef = el as HTMLInputElement)}\n type=\"text\"\n placeholder={this.getTranslation('writeChatMessagePlaceholder')}\n value={this.message}\n onInput={(e: Event) => (this.message = (e.target as HTMLInputElement).value)}\n onKeyPress={this.handleKeyPress}\n maxLength={3990}\n />\n {!this.message.trim() ? (\n <div\n class=\"chat-disabled-button\"\n role=\"button\"\n aria-label={this.getTranslation('sendButtonText')}\n aria-disabled=\"true\"\n tabIndex={-1}>\n <pn-icon color=\"gray400\" icon={submit}></pn-icon>\n </div>\n ) : (\n <pn-button\n icon-only=\"true\"\n variant=\"borderless\"\n appearance=\"light\"\n icon={submit}\n onClick={this.handleSendMessage}\n disabled={!this.message.trim()}\n aria-label={this.getTranslation('sendButtonText')}\n tooltip={this.getTranslation('sendButtonText')}>\n </pn-button>\n )}\n </div>\n </div>\n </footer>\n </Fragment>\n )}\n {this.isMinimized && (\n <pn-button\n icon={talk_bubble}\n icon-only=\"true\"\n class=\"open-chat-btn\"\n onClick={this.toggleChat}\n tooltip={this.getTranslation('openChatAriaLabel')}\n aria-label={this.getTranslation('openChatAriaLabel')}\n aria-expanded={!this.isMinimized}\n ></pn-button>\n )}\n </div>\n )}\n </Host>\n );\n }\n}"],"version":3}
1
+ {"file":"pn-chat.entry.cjs.js","mappings":";;;;;;;;;;;;AAAA,MAAMA,MAAI,GAAG,0aAA0a,CAAC;AACjb,MAAM,MAAM,GAAGA,MAAI;;ACD1B,MAAM,IAAI,GAAG,ifAAif,CAAC;AACxf,MAAM,WAAW,GAAG,IAAI;;ACDxB,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE;QACJ,uBAAuB,EAAE,oBAAoB;QAC7C,sBAAsB,EAAE,sBAAsB;QAC9C,mBAAmB,EAAE,kBAAkB;QACvC,qBAAqB,EAAE,kBAAkB;QACzC,kBAAkB,EAAE,eAAe;QACnC,iBAAiB,EAAE,eAAe;QAClC,qBAAqB,EAAE,iBAAiB;QACxC,qBAAqB,EAAE,kBAAkB;QACzC,oBAAoB,EAAE,oBAAoB;QAC1C,2BAA2B,EAAE,yBAAyB;QACtD,qBAAqB,EAAE,gBAAgB;QACvC,cAAc,EAAE,QAAQ;QACxB,WAAW,EAAE,WAAW;KACzB;IACD,IAAI,EAAE;QACJ,uBAAuB,EAAE,iBAAiB;QAC1C,sBAAsB,EAAE,mBAAmB;QAC3C,mBAAmB,EAAE,cAAc;QACnC,qBAAqB,EAAE,eAAe;QACtC,kBAAkB,EAAE,YAAY;QAChC,iBAAiB,EAAE,WAAW;QAC9B,qBAAqB,EAAE,eAAe;QACtC,qBAAqB,EAAE,eAAe;QACtC,oBAAoB,EAAE,cAAc;QACpC,2BAA2B,EAAE,mBAAmB;QAChD,qBAAqB,EAAE,oBAAoB;QAC3C,cAAc,EAAE,MAAM;QACtB,WAAW,EAAE,YAAY;KAC1B;IACD,IAAI,EAAE;QACJ,uBAAuB,EAAE,mBAAmB;QAC5C,sBAAsB,EAAE,sBAAsB;QAC9C,mBAAmB,EAAE,iBAAiB;QACtC,qBAAqB,EAAE,iBAAiB;QACxC,kBAAkB,EAAE,aAAa;QACjC,iBAAiB,EAAE,aAAa;QAChC,qBAAqB,EAAE,gBAAgB;QACvC,qBAAqB,EAAE,cAAc;QACrC,oBAAoB,EAAE,cAAc;QACpC,2BAA2B,EAAE,oBAAoB;QACjD,qBAAqB,EAAE,gBAAgB;QACvC,cAAc,EAAE,MAAM;QACtB,WAAW,EAAE,aAAa;KAC3B;IACD,IAAI,EAAE;QACJ,uBAAuB,EAAE,kBAAkB;QAC3C,sBAAsB,EAAE,qBAAqB;QAC7C,mBAAmB,EAAE,iBAAiB;QACtC,qBAAqB,EAAE,iBAAiB;QACxC,kBAAkB,EAAE,cAAc;QAClC,iBAAiB,EAAE,cAAc;QACjC,qBAAqB,EAAE,gBAAgB;QACvC,qBAAqB,EAAE,eAAe;QACtC,oBAAoB,EAAE,eAAe;QACrC,2BAA2B,EAAE,qBAAqB;QAClD,qBAAqB,EAAE,gBAAgB;QACvC,cAAc,EAAE,MAAM;QACtB,WAAW,EAAE,WAAW;KACzB;IACD,IAAI,EAAE;QACJ,uBAAuB,EAAE,4BAA4B;QACrD,sBAAsB,EAAE,2BAA2B;QACnD,mBAAmB,EAAE,oBAAoB;QACzC,qBAAqB,EAAE,qBAAqB;QAC5C,kBAAkB,EAAE,kBAAkB;QACtC,iBAAiB,EAAE,iBAAiB;QACpC,qBAAqB,EAAE,sBAAsB;QAC7C,qBAAqB,EAAE,mBAAmB;QAC1C,oBAAoB,EAAE,kBAAkB;QACxC,2BAA2B,EAAE,oBAAoB;QACjD,qBAAqB,EAAE,qBAAqB;QAC5C,cAAc,EAAE,QAAQ;QACxB,WAAW,EAAE,aAAa;KAC3B;CACF;;AC5ED,MAAM,SAAS,GAAG,moIAAmoI,CAAC;AACtpI,qBAAe,SAAS;;MCYX,MAAM;;;;;2BAGa,EAAE;;;;;;;;;;;;;;oCAcO,CAAC;;wBAEb,IAAI;sBACN,IAAI;sBACH,EAAE;wBACD,sCAAsC;yBACpC,KAAK;0BACJ,KAAK;uBAEA,EAAE;;2BAEG,IAAI;wBACP,KAAK;6BACD,EAAE;;;IAGnC,MAAM,CAAS;IAEN,cAAc,GAAW,sCAAsC,CAAC;IAChE,yBAAyB,GAAW,GAAG,CAAC;IACxC,mBAAmB,GAAG,eAAe,CAAC;IAC/C,qBAAqB,CAAe;IACpC,OAAO,CAAkB;IACzB,QAAQ,CAAoB;IAC5B,OAAO,GAAwB,IAAIC,uCAAmB,EAAE,CAAC;IACzD,YAAY,CAAgB;IAC5B,YAAY,GAAW,OAAO,CAAC;IAC/B,WAAW,GAAY,KAAK,CAAC;IAErC,iBAAiB;QACf,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,IAAIC,4BAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjF,IAAI,CAAC,YAAY,GAAG;YAClB,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE;SACb,CAAC;QACF,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAE3D,IAAI,SAAS,IAAI,SAAS,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE;YAC1D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;SAC/C;aACI,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,EAAE;YACtC,IAAI,CAAC,MAAM,GAAG,SAAS,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;SAChD;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,WAAW,CAAC;YACV,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB,EAAE,IAAI,CAAC,CAAC;KACV;IAED,eAAe;QACb,IAAI,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAChD,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACzC;KACF;IAEO,cAAc,CAAC,GAA2B;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;YACzD,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;SACtE;QACD,OAAO,KAAK,CAAC;KACd;IAEO,MAAM,UAAU;QACtB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE;YACrC,OAAO;SACR;QAED,IAAI,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC;QAE3C,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,WAAW;YACpF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACnG,IAAI,cAAc,GAAG,QAAQ,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;YACvE,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAE1C,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO;gBAClC,QAAQ,CAAC,OAAO,CAAC,OAAO;oBACtB,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,KAAK,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;wBACrJ,OAAO,CAAC,MAAM,EAAE,CAAC;qBAClB;iBACF,CAAC,CAAC;gBACH,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;aAC7B,CAAC,CAAC;YAEH,IAAI,iBAAiB,KAAK,IAAI,CAAC,aAAa,EAAE;gBAC5C,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;gBACvE,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;gBAChC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO;oBAClC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;iBAC7B,CAAC,CAAC;aACJ;SACF,CAAC,CAAC;KACJ;IAEO,MAAM,cAAc;QAC1B,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,OAAO;SACR;QAED,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,yBAAyB,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE;YAChI,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SAClG;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YACjG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;SACzG;KACF;IAEO,MAAM,aAAa;QACP,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,WAAW;YACtG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACxG,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;YAChC,IAAI,cAAc,GAAG,QAAQ,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;YACvE,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAE1C,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO;gBAClC,QAAQ,CAAC,OAAO,CAAC,OAAO;oBACtB,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE;wBACxH,OAAO,CAAC,MAAM,EAAE,CAAC;qBAClB;iBACF,CAAC,CAAC;gBACH,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;aAC7B,CAAC,CAAC;YACH,OAAO,WAAW,CAAC;SACpB,EAAE;KACJ;IAEO,MAAM,UAAU;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;YACzB,OAAO;SACR;QAED,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAElC,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACpH,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAExG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC,CAAC;KAC1E;;IAEO,aAAa;QACnB,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,IAAI,gBAAgB,GAAkB,EAAE,CAAC;QAEzC,MAAM,cAAc,GAAG;YACrB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/B,MAAM,YAAY,GAAG;oBACnB,MAAM,EAAE,gBAAgB,CAAC,GAAG,CAAC,IAAI;wBAC/B,MAAM,QAAQ,GAAG;iDACoB,IAAI,CAAC,eAAe,sCAAsC,IAAI,CAAC,QAAQ;2CAC7E,IAAI,CAAC,OAAO;qBAClC,IAAI,CAAC,OAAO;kBACf,IAAI,CAAC,OAAO;8BACZ,GAAG,CACH,MAAM,IAAI;;4BAEA,MAAM,CAAC,IAAI;6BACV,MAAM,CAAC,KAAK;kCACP,MAAM,CAAC,UAAU;+BACpB,MAAM,CAAC,OAAO;6BAChB,MAAM,CAAC,KAAK;;;sBAGnB,MAAM,CAAC,OAAO;;iBAEnB,CACA;6BACA,IAAI,CAAC,EAAE,CAAC,IAAI,EACf;;aAED,CAAC;wBACF,OAAO,QAAQ,CAAC;qBACjB,CAAC;iBACH,CAAC;gBACF,MAAM,CAAC,IAAI,CACTC,mCACE,KAAK,EAAC,gBAAgB,EACtB,eAAe,EAAC,MAAM,EACtB,mBAAmB,EAAC,UAAU,EAC9B,mBAAmB,EAAE,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,EACnE,YAAY,EAAE,IAAI,CAAC,oBAAoB,EACvC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GACb,CAC1B,CAAC;gBACF,gBAAgB,GAAG,EAAE,CAAC;aACvB;SACF,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK;YAChD,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,EAAE;gBAC/B,gBAAgB,CAAC,IAAI,CAAC,OAAsB,CAAC,CAAC;gBAE9C,IAAI,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,QAAQ,KAAK,MAAM,EAAE;oBACjH,cAAc,EAAE,CAAC;iBAClB;aACF;iBAAM;gBACL,cAAc,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;aAC1C;SACF,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;KACf;IAEO,cAAc,GAAG,CAAC,KAAoB;QAC5C,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE;YAChD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;KACF,CAAC;IAEM,iBAAiB,GAAG,CAAC,KAAiB;QAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE;YACvB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;KACF,CAAA;IAEO,mBAAmB,CAAC,KAAoB;QAC9C,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YAC9C,KAAK,CAAC,cAAc,EAAE,CAAC;YACtB,KAAK,CAAC,MAAsB,CAAC,KAAK,EAAE,CAAC;SACvC;KACF;IAGD,aAAa,CAAC,KAAoB;QAChC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChE,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;KACF;IAGD,oBAAoB,CAAC,UAAkB;QACrC,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;KACF;IAGD,eAAe;QACb,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;QACrG,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,EAAE,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAGD,gBAAgB;QACd,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC1B;IAGD,cAAc;QACZ,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG;YAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YACtD,IAAI,QAAQ,EAAE;gBACZ,UAAU,CAAC;oBACT,QAAQ,CAAC,QAAQ,CAAC;wBAChB,GAAG,EAAE,QAAQ,CAAC,YAAY;wBAC1B,QAAQ,EAAE,QAAQ;qBACnB,CAAC,CAAC;iBACJ,EAAE,GAAG,CAAC,CAAA;gBACP,GAAG,CAAC,UAAU,EAAE,CAAC;aAClB;SACF,CAAC,CAAC;QACH,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC;KACtE;IAEO,SAAS,GAAG;QAClB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;QACpC,IAAI,WAAW,GAAG,QAAQ,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,WAAW,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAExC,IAAI,sBAAsB,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9E,IAAI,sBAAsB,EAAE;YAC1B,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;YACrC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC3I,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC5C,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;SACzE;aACI;YACH,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;KACF,CAAA;IAEO,UAAU,GAAG;QACnB,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC3I,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE5C,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACrC,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;KACF,CAAC;IAEM,sBAAsB,CAAC,OAAe;QAC5C,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACnD,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC5C,YAAY,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACjD,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACtC,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC;QACnC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACxC,UAAU,CAAC,MAAM,YAAY,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;KAC/C;IAEO,aAAa,CAAC,OAAoB;QACxC,QAAQ,OAAO,CAAC,QAAQ;YACtB,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACzC,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC3C,KAAK,gBAAgB;gBACnB,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACzC,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACzC,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACzC,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACzC,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC1C,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;SAC1C;KACF;IAEO,iBAAiB,CAAC,OAAoB;QAC5C,QACEA,6BAAiB,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAC,EAAE,EAAC,IAAI,EAAC,KAAK,eAAW,QAAQ,IAC3H,OAAO,CAAC,OAAO,CACA,EAClB;KACH;IAEO,kBAAkB,CAAC,OAAqB;QAC9C,QACEA,6BAAiB,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAC,KAAK,eAAW,QAAQ,IAC5I,OAAO,CAAC,OAAO,CACA,EAClB;KACH;IAEO,mBAAmB,CAAC,OAAsB;QAChD,IAAI,KAAK,GAAG,EAAE,CAAC;QAEf,IAAI,OAAO,EAAE,KAAK,EAAE;YAClB,IAAI;gBACF,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aACnC;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,eAAe,CAAC,CAAC;gBACtG,OAAO;aACR;SACF;QAED,MAAM,WAAW,GAAG,CAAC,KAAiB;YACpC,MAAM,MAAM,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAE/D,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE;gBACvD,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,OAAO;aACR;YAED,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,UAAU,EAAE;gBACvC,IAAI,CAAC,UAAU,EAAE,CAAC;aACnB;YAED,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,QAAQ,EAAE;gBACrC,CAAC;oBACC,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;iBAC3E,GAAG,CAAC;gBAEL,MAAM,aAAa,GAAG,QAAQ,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;gBAC1E,aAAa,CAAC,OAAO,CAAC,QAAQ;oBAC5B,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;oBACrD,WAAW,EAAE,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;iBAC/C,CAAC,CAAC;aACJ;SACF,CAAC;QAEF,QACEA,6BAAiB,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAChFA,uBAAW,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAC,QAAQ,KAAK,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IACxH,OAAO,CAAC,OAAO,CACN,CACI,EAClB;KACH;IAEO,mBAAmB,CAAC,OAAe;QACzC,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACjD,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAC9D,WAAW,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAClE,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC7C,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC5C,WAAW,CAAC,WAAW,GAAG,OAAO,CAAC;QAElC,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACvC,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,WAAW,CAAC,cAAc,EAAE,CAAC;KAC9B;IAEO,MAAM,gBAAgB,CAAC,QAAgB,EAAE,OAAe;QAC9D,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAElC,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACvH,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAExG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC,CAAC;KAC1E;IAEO,iBAAiB,CAAC,OAAoB;QAC5C,QACEA,6BAAiB,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAChFA,eAAG,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAC,MAAM,EAAC,GAAG,EAAC,qBAAqB,IAC1DA,kBAAM,KAAK,EAAC,SAAS,IAAE,OAAO,CAAC,OAAO,CAAQ,EAC9CA,qBAAS,IAAI,EAAEC,uBAAW,EAAE,KAAK,EAAC,SAAS,iBAAa,MAAM,EAAC,IAAI,EAAC,cAAc,GAAG,CACnF,CACY,EAClB;KACH;IAEO,iBAAiB,CAAC,OAAoB;QAC5C,QACED,6BAAiB,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,qBAAY,IAAI,EAAC,SAAS,IAC1GA,gBAAI,KAAK,EAAC,cAAc,IAAE,OAAO,CAAC,OAAO,CAAM,EAC/CA,mBAAI,OAAO,CAAC,OAAO,CAAK,EACvB,OAAO,CAAC,OAAO,KACdA,iBAAK,KAAK,EAAC,KAAK,IACb,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,KAC1BA,uBACE,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,UAAU,EAAE,MAAM,CAAC,UAAU,EAC7B,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAE1C,MAAM,CAAC,OAAO,CACL,CACb,CAAC,CACE,CACP,CACe,EAClB;KACH;IAED,MAAM;QACJ,MAAM,MAAM,GAAG,WAAW,CAAC;QAC3B,MAAM,OAAO,GAAG,YAAY,CAAC;QAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC;QAEtD,QACEA,QAACE,UAAI,qDAAC,KAAK,EAAE,IAAI,CAAC,eAAe,IAC9B,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,KAClCF,kEACE,KAAK,EAAE,WAAW,IAAI,CAAC,WAAW,GAAG,WAAW,GAAG,EAAE,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,EAAE,EAAE,EACxF,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,OAAO,GAAG,EAAoB,CAAC,EAChD,IAAI,EAAC,QAAQ,gBACD,IAAI,CAAC,WAAW,IAE3B,CAAC,IAAI,CAAC,WAAW,KAChBA,QAACG,cAAQ,uDACPH,qEAAQ,KAAK,EAAC,aAAa,EAAC,IAAI,EAAC,QAAQ,IACvCA,iEAAI,EAAE,EAAC,YAAY,IAAE,IAAI,CAAC,WAAW,CAAM,EAC3CA,kEAAK,KAAK,EAAC,eAAe,EAAC,IAAI,EAAC,SAAS,gBAAa,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,IAChGA,wEACE,IAAI,EAAEI,WAAK,eACD,MAAM,EAChB,KAAK,EAAC,cAAc,EACpB,OAAO,EAAE,IAAI,CAAC,UAAU,mBACT,CAAC,IAAI,CAAC,WAAW,mBACjB,MAAM,gBACT,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,EACxD,UAAU,EAAC,OAAO,EAClB,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,EACrD,KAAK,EAAC,MAAM,GACZ,EACFJ,wEACE,IAAI,EAAEK,WAAK,eACD,MAAM,EAChB,KAAK,EAAC,WAAW,EACjB,OAAO,EAAE,IAAI,CAAC,SAAS,mBACR,CAAC,IAAI,CAAC,WAAW,gBACpB,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,EACrD,UAAU,EAAC,OAAO,EAClB,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,EAClD,KAAK,EAAC,MAAM,GACZ,CACE,CACC,EACR,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC;aAC5CL,kBAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,qBAAiB,YAAY,IAC1E,IAAI,CAAC,YAAY,CAAC,MAAM,KACvBA,iBAAK,KAAK,EAAC,eAAe,IACxBA,iBAAK,KAAK,EAAC,MAAM,IAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAO,EACtD,YAAY,KACXA,uBACE,IAAI,EAAE,YAAY,CAAC,IAAI,EACvB,KAAK,EAAE,YAAY,CAAC,KAAK,EACzB,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,OAAO,EAAE,YAAY,CAAC,OAAO,EAC7B,KAAK,EAAE,YAAY,CAAC,KAAK,EACzB,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAE1C,YAAY,CAAC,OAAO,CACX,CACb,CACG,CACP,EACDA,iBAAK,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,qBAAqB,GAAG,EAAiB,CAAC,EAAE,KAAK,EAAC,eAAe,EAAC,IAAI,EAAC,KAAK,eAAW,QAAQ,gBAAa,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,IAC3K,IAAI,CAAC,aAAa,EAAE,CACjB,EACNA,qBACE,KAAK,EAAC,gBAAgB,gBACV,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,EACxD,IAAI,EAAC,cAAc,GACV,CACN;eACJA,kBAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAC,6BAA6B,EAAC,IAAI,EAAC,MAAM,qBAAiB,YAAY,IAC/FA,iBAAK,KAAK,EAAC,sBAAsB,IAC/BA,wBAAY,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,GAAc,CAC7C,EACNA,kBAAM,KAAK,EAAC,sBAAsB,IAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAQ,CACzE,CAAC,EACVA,qEAAQ,KAAK,EAAC,aAAa,EAAC,IAAI,EAAC,aAAa,IAC5CA,kEAAK,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,qBAAkB,OAAO,IACpDA,oEAAO,OAAO,EAAE,OAAO,EAAE,KAAK,EAAC,SAAS,IACrC,IAAI,CAAC,cAAc,CAAC,6BAA6B,CAAC,CAC7C,EACRA,kEAAK,KAAK,EAAC,sBAAsB,IAC/BA,oEACE,EAAE,EAAE,OAAO,EACX,KAAK,EAAC,iBAAiB,EACvB,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,QAAQ,GAAG,EAAsB,CAAC,EACnD,IAAI,EAAC,MAAM,EACX,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,6BAA6B,CAAC,EAC/D,KAAK,EAAE,IAAI,CAAC,OAAO,EACnB,OAAO,EAAE,CAAC,CAAQ,MAAM,IAAI,CAAC,OAAO,GAAI,CAAC,CAAC,MAA2B,CAAC,KAAK,CAAC,EAC5E,UAAU,EAAE,IAAI,CAAC,cAAc,EAC/B,SAAS,EAAE,IAAI,GACf,EACD,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IACnBA,iBACE,KAAK,EAAC,sBAAsB,EAC5B,IAAI,EAAC,QAAQ,gBACD,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,mBACnC,MAAM,EACpB,QAAQ,EAAE,CAAC,CAAC,IACZA,qBAAS,KAAK,EAAC,SAAS,EAAC,IAAI,EAAE,MAAM,GAAY,CAC7C,KAENA,oCACY,MAAM,EAChB,OAAO,EAAC,YAAY,EACpB,UAAU,EAAC,OAAO,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAC/B,QAAQ,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,gBAClB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,EACjD,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,GACpC,CACb,CACG,CACF,CACC,CACA,CACZ,EACA,IAAI,CAAC,WAAW,KACfA,wEACE,IAAI,EAAE,WAAW,eACP,MAAM,EAChB,KAAK,EAAC,eAAe,EACrB,OAAO,EAAE,IAAI,CAAC,UAAU,EACxB,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,gBACrC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,mBACrC,CAAC,IAAI,CAAC,WAAW,GACrB,CACd,CACG,CACP,CACI,EACP;KACH;;;;;;;;;;;;","names":["icon","LocalStorageService","PnChatService","h","arrow_right","Host","Fragment","minus","close"],"sources":["node_modules/pn-design-assets/pn-assets/icons/submit.js","node_modules/pn-design-assets/pn-assets/icons/talk_bubble.js","src/components/widgets/pn-chat/translations.ts","src/components/widgets/pn-chat/pn-chat.scss?tag=pn-chat","src/components/widgets/pn-chat/pn-chat.tsx"],"sourcesContent":["const icon = '<svg class=\"pn-icon-svg\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"#000\" fill-rule=\"evenodd\" d=\"M21 11.998a1 1 0 0 1-.577.908l-15 7a1 1 0 0 1-1.237-1.487l4.585-6.42-1.46-2.043A1 1 0 1 1 8.94 8.794l1.875 2.625a1 1 0 0 1 0 1.162l-2.788 3.903 9.599-4.48L6.58 6.909a1 1 0 1 1 .838-1.816l13 6a1 1 0 0 1 .581.906M5 4a1 1 0 0 1 1 1v.01a1 1 0 1 1-2 0V5a1 1 0 0 1 1-1\" clip-rule=\"evenodd\"/></svg>';\nexport const submit = icon;\n","const icon = '<svg class=\"pn-icon-svg\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"#000\" fill-rule=\"evenodd\" d=\"M12.388 2c5.522 0 10 4.477 10 10s-4.478 10-10 10H2l1.355-4.064-.798-3.987a8.8 8.8 0 0 1-.17-1.717V12c0-5.523 4.478-10 10-10m8 10a8 8 0 0 0-16 0v.232q0 .67.13 1.325l.902 4.507L4.775 20h7.612a8 8 0 0 0 8-8m-12.5-1.5a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3m6 1.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0m3-1.5a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3\" clip-rule=\"evenodd\"/></svg>';\nexport const talk_bubble = icon;\nexport const talkBubble = icon;\n","export const translations = {\n 'sv': {\n relatedContentAriaLabel: 'Relaterat innehåll',\n chatMinimizedAriaLabel: 'Chatten är minimerad',\n chatOpenedAriaLabel: 'Chatten är öppen',\n minimizeChatAriaLabel: 'Minimera chatten',\n closeChatAriaLabel: 'Stäng chatten',\n openChatAriaLabel: 'Öppna chatten',\n chatControlsAriaLabel: 'Chattkontroller',\n chatMessagesAriaLabel: 'Chattmeddelanden',\n sentMessageAriaLabel: 'Meddelande skickat',\n writeChatMessagePlaceholder: 'Skriv ett meddelande...',\n waitingForAnswerLabel: 'Väntar på svar',\n sendButtonText: 'Skicka',\n loadingText: 'Laddar...',\n },\n 'en': {\n relatedContentAriaLabel: 'Related content',\n chatMinimizedAriaLabel: 'Chat is minimized',\n chatOpenedAriaLabel: 'Chat is open',\n minimizeChatAriaLabel: 'Minimize chat',\n closeChatAriaLabel: 'Close chat',\n openChatAriaLabel: 'Open chat',\n chatControlsAriaLabel: 'Chat controls',\n chatMessagesAriaLabel: 'Chat messages',\n sentMessageAriaLabel: 'Message sent',\n writeChatMessagePlaceholder: 'Type a message...',\n waitingForAnswerLabel: 'Waiting for answer',\n sendButtonText: 'Send',\n loadingText: 'Loading...',\n },\n 'da': {\n relatedContentAriaLabel: 'Relateret indhold',\n chatMinimizedAriaLabel: 'Chatten er minimeret',\n chatOpenedAriaLabel: 'Chatten er åben',\n minimizeChatAriaLabel: 'Minimer chatten',\n closeChatAriaLabel: 'Luk chatten',\n openChatAriaLabel: 'Åbn chatten',\n chatControlsAriaLabel: 'Chatkontroller',\n chatMessagesAriaLabel: 'Chatbeskeder',\n sentMessageAriaLabel: 'Besked sendt',\n writeChatMessagePlaceholder: 'Skriv en besked...',\n waitingForAnswerLabel: 'Venter på svar',\n sendButtonText: 'Send',\n loadingText: 'Indlæser...',\n },\n 'no': {\n relatedContentAriaLabel: 'Relatert innhold',\n chatMinimizedAriaLabel: 'Chatten er minimert',\n chatOpenedAriaLabel: 'Chatten er åpen',\n minimizeChatAriaLabel: 'Minimer chatten',\n closeChatAriaLabel: 'Lukk chatten',\n openChatAriaLabel: 'Åpne chatten',\n chatControlsAriaLabel: 'Chatkontroller',\n chatMessagesAriaLabel: 'Chatmeldinger',\n sentMessageAriaLabel: 'Melding sendt',\n writeChatMessagePlaceholder: 'Skriv en melding...',\n waitingForAnswerLabel: 'Venter på svar',\n sendButtonText: 'Send',\n loadingText: 'Laster...',\n },\n 'fi': {\n relatedContentAriaLabel: 'Aiheeseen liittyvä sisältö',\n chatMinimizedAriaLabel: 'Keskustelu on pienennetty',\n chatOpenedAriaLabel: 'Keskustelu on auki',\n minimizeChatAriaLabel: 'Pienennä keskustelu',\n closeChatAriaLabel: 'Sulje keskustelu',\n openChatAriaLabel: 'Avaa keskustelu',\n chatControlsAriaLabel: 'Keskustelun hallinta',\n chatMessagesAriaLabel: 'Keskusteluviestit',\n sentMessageAriaLabel: 'Viesti lähetetty',\n writeChatMessagePlaceholder: 'Kirjoita viesti...',\n waitingForAnswerLabel: 'Odotetaan vastausta',\n sendButtonText: 'Lähetä',\n loadingText: 'Ladataan...',\n },\n};","@import '../../../globals/main.scss';\n$spacing: 1.6rem;\n\n.pn-chat {\n @media (max-width: 768px) {\n &:not(.minimized) {\n position: absolute;\n height: 100dvh;\n width: 100dvw;\n max-width: 100%;\n top: 0;\n left: 0;\n }\n\n &.minimized {\n height: 70px;\n border-radius: 0.8rem 0.8rem 0 0;\n }\n }\n\n @media (min-width: 768px) and (max-width: 1024px) {\n max-width: 350px;\n }\n\n display: flex;\n flex-direction: column;\n height: 600px;\n width: 400px;\n max-width: 400px;\n box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.25), 0 -2px 4px 0 rgba(240, 240, 240, 0.55);\n border-radius: 1.6rem;\n\n .chat-header {\n background-color: $white;\n padding: 0.8rem;\n padding-left: 1.6rem;\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid $gray50;\n\n @media (min-width: 768px) {\n border-radius: 1.6rem 1.6rem 0 0;\n }\n\n .chat-controls {\n display: flex;\n }\n\n pn-button.minimize-btn {\n button.pn-button {\n padding-bottom: 0;\n margin-right: 1rem;\n\n .pn-button-content {\n align-items: flex-end;\n position: absolute;\n bottom: 0px;\n }\n }\n }\n }\n\n .chat-header #chat-title {\n margin: 0;\n font-size: 1.6rem;\n font-weight: 500;\n line-height: 1;\n height: 100%;\n align-content: center;\n }\n\n .chat-main {\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n overflow-y: auto;\n gap: $spacing;\n padding: $spacing;\n padding-bottom: $spacing * 2;\n background-color: $white;\n\n &.loading-chat-main {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n }\n\n .chat-loading-spinner {\n background-color: $blue700;\n width: 4.8rem;\n height: 4.8rem;\n border-radius: 4.8rem;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .chat-loading-content {\n color: $gray900;\n font-size: 1.6rem;\n font-weight: 400;\n }\n\n .chat-overview {\n text-align: center;\n }\n\n .chat-messages {\n display: flex;\n flex-direction: column;\n gap: $spacing;\n text-align: center;\n }\n\n .card-container {\n .slider-wrapper {\n margin: 0;\n }\n\n $card-gap: 1rem;\n\n .slides-container {\n display: flex;\n gap: $card-gap;\n }\n\n .slide:nth-child(even) [data-card] {\n width: calc(100% - $card-gap);\n }\n }\n\n @keyframes pulse {\n\n 0%,\n 100% {\n opacity: 1;\n transform: scale(1);\n }\n\n 50% {\n opacity: 0.5;\n transform: scale(0.95);\n }\n }\n\n .chat-footer {\n background: $white;\n border-top: 1px solid $gray50;\n border-radius: 0 0 1.6rem 1.6rem;\n }\n\n .chat-footer .form {\n display: flex;\n gap: 0.7rem;\n padding: 1rem;\n }\n\n .chat-input-container {\n display: flex;\n flex-grow: 1;\n justify-content: space-between;\n gap: 0.7rem;\n background: $gray25;\n border-radius: 6.4rem;\n\n .chat-text-input {\n border: none;\n background: transparent;\n width: 100%;\n outline: 0.2rem solid transparent;\n outline-offset: 0.2rem;\n padding-left: 1.6rem;\n\n &:focus {\n border-radius: 6.4rem;\n }\n\n &:focus-visible {\n outline-color: $blue700;\n }\n\n &::placeholder {\n top: 2px;\n position: relative;\n color: $gray400;\n }\n }\n\n .chat-disabled-button {\n display: flex;\n width: 3.5em;\n min-height: 3em;\n min-width: 0;\n align-items: center;\n justify-content: center;\n }\n }\n\n &.minimized {\n background: transparent;\n border: initial;\n box-shadow: initial;\n max-width: 50px;\n max-height: 50px;\n min-width: initial;\n min-height: initial;\n transform: scale(0.95);\n\n cursor: pointer;\n\n .minimize-btn,\n .close-btn {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n button {\n display: none;\n }\n }\n\n .chat-main,\n .chat-footer {\n display: none;\n }\n }\n\n &.closed {\n display: none;\n }\n\n .open-chat-btn {\n .pn-button {\n width: 5.6rem;\n height: 5.6rem;\n }\n\n .pn-icon svg {\n width: 3.2rem;\n height: 3.2rem;\n }\n }\n\n .indicator-icon {\n padding: 0.2rem 0.8rem;\n margin-right: auto;\n margin-top: 1rem;\n margin-bottom: 2rem;\n visibility: hidden;\n }\n\n .minimize-btn,\n .close-btn {\n .pn-button pn-icon .pn-icon-svg path {\n fill: $blue700;\n }\n }\n}\n\nbody.chat-open {\n @media (max-width: 768px) {\n overflow: hidden;\n }\n}","import { Component, h, Prop, State, Host, Watch, Listen, Fragment } from '@stencil/core';\nimport { minus, close, arrow_right, talk_bubble, submit } from 'pn-design-assets/pn-assets/icons.js';\nimport { AgentMessage, BaseMessage, ButtonMessage, CardMessage, ChatMessage, ChatMessages, CustomerSegment, LinkMessage } from './types';\nimport { LocalStorageService } from '@/globals/LocalStorageService';\nimport { JSX } from 'react';\nimport { PnChatService } from './pn-chat.service';\nimport { translations } from './translations';\nimport type { Translationsi18n } from './types';\n\n@Component({\n tag: 'pn-chat',\n styleUrl: 'pn-chat.scss',\n})\nexport class PnChat {\n @Prop() endpoint!: string;\n @Prop() customerSegment!: CustomerSegment;\n @Prop() mainHeading: string = '';\n @Prop() relatedContentAriaLabel: string;\n @Prop() chatMinimizedAriaLabel: string;\n @Prop() chatOpenedAriaLabel: string;\n @Prop() minimizeChatAriaLabel: string;\n @Prop() closeChatAriaLabel: string;\n @Prop() openChatAriaLabel: string;\n @Prop() chatControlsAriaLabel: string;\n @Prop() chatMessagesAriaLabel: string;\n @Prop() sentMessageAriaLabel: string;\n @Prop() writeChatMessagePlaceholder: string;\n @Prop() waitingForAnswerLabel: string;\n @Prop() sendButtonText: string;\n @Prop() loadingText: string;\n @Prop() carouselSlidesToShow: number = 1;\n @Prop() messages: string;\n @Prop() language: string = 'sv';\n @Prop() market: string = 'se';\n @Prop() itemId?: string = '';\n @Prop() pnChatId: string = '00000000-0000-0000-0000-000000000000';\n @Prop() forceOpen: boolean = false;\n @Prop() isLoggedIn: boolean = false;\n\n @State() private message: string = '';\n @State() private messagesData: ChatMessages;\n @State() private isMinimized: boolean = true;\n @State() private isClosed: boolean = false;\n @State() private lastMessageId: string = '';\n @State() i18n: any;\n\n private chatId: string;\n\n private readonly _defaultChatId: string = '00000000-0000-0000-0000-000000000000';\n private readonly _defaultAlternativeChatId: string = '1';\n private readonly chatLocalStorageKey = 'sf-chat-state';\n private chatMessagesContainer?: HTMLElement;\n private chatRef?: HTMLDivElement;\n private inputRef?: HTMLInputElement;\n private storage: LocalStorageService = new LocalStorageService();\n private _chatService: PnChatService;\n private _chatSegment: string = \"#chat\";\n private _forceClose: boolean = false;\n\n componentWillLoad(): void {\n this._forceClose = false;\n this._chatService = new PnChatService(this.endpoint, this.market, this.language);\n this.messagesData = {\n header: {},\n messages: [],\n };\n let storageId = this.storage.get(this.chatLocalStorageKey);\n\n if (storageId && storageId.isLoggedIn === !this.isLoggedIn) {\n this.storage.remove(this.chatLocalStorageKey);\n }\n else if (storageId && storageId.chatId) {\n this.chatId = storageId?.chatId ?? this.chatId;\n }\n\n this.setTranslations();\n\n setInterval(() => {\n this.updateChat();\n }, 1500);\n }\n\n setTranslations() {\n if (this.language && translations[this.language]) {\n this.i18n = translations[this.language];\n }\n }\n\n private getTranslation(key: keyof Translationsi18n): string {\n const value = this[key];\n if (value === undefined || value === null || value === '') {\n return translations[this.language]?.[key] ?? translations['en'][key];\n }\n return value;\n }\n\n private async updateChat() {\n if (this.isMinimized || this.isClosed) {\n return;\n }\n\n let prevLastMessageId = this.lastMessageId;\n\n await this._chatService.fetchMessages(this.chatId, this.messagesData).then(newMessages => {\n this.lastMessageId = this._chatService.GetLastMessageId(newMessages?.messages, this.lastMessageId);\n let htmlCollection = document.getElementsByClassName('pn-chat-before');\n let elements = Array.from(htmlCollection);\n\n newMessages.messages.forEach(message => {\n elements.forEach(element => {\n if (message.content != null && (element.textContent.trim() === message.content.trim() || element.textContent.trim().includes(message.content.trim()))) {\n element.remove();\n }\n });\n this.renderMessage(message);\n });\n\n if (prevLastMessageId !== this.lastMessageId) {\n this._chatService.updateLastMessageId(this.chatId, this.lastMessageId);\n this.messagesData = newMessages;\n newMessages.messages.forEach(message => {\n this.renderMessage(message);\n });\n }\n });\n }\n\n private async setStartValues() {\n if (this._forceClose) {\n this._forceClose = false;\n return;\n }\n\n if ((!this.chatId || this.chatId === this._defaultChatId || this.chatId === this._defaultAlternativeChatId) && !this.isMinimized) {\n this.chatId = await this._chatService.startChat(this.pnChatId, this.itemId);\n this.storage.set(this.chatLocalStorageKey, { chatId: this.chatId, isLoggedIn: this.isLoggedIn });\n }\n\n if (this.chatId) {\n this.storage.set(this.chatLocalStorageKey, { chatId: this.chatId, isLoggedIn: this.isLoggedIn });\n await this.fetchMessages();\n this.lastMessageId = this._chatService.GetLastMessageId(this.messagesData.messages, this.lastMessageId);\n }\n }\n\n private async fetchMessages() {\n let newMessages = await this._chatService.fetchMessages(this.chatId, this.messagesData).then(newMessages => {\n this.lastMessageId = this._chatService.GetLastMessageId(this.messagesData.messages, this.lastMessageId);\n this.messagesData = newMessages;\n let htmlCollection = document.getElementsByClassName('pn-chat-before');\n let elements = Array.from(htmlCollection);\n\n newMessages.messages.forEach(message => {\n elements.forEach(element => {\n if (element.textContent.trim() === message.content.trim() || element.textContent.trim().includes(message.content.trim())) {\n element.remove();\n }\n });\n this.renderMessage(message);\n });\n return newMessages;\n });\n }\n\n private async handleSend() {\n if (!this.message?.trim()) {\n return;\n }\n\n let message = this.message;\n this.message = '';\n this.createBeforeElement(message);\n\n let responseId = await this._chatService.sendMessage(message, this.itemId, this.chatId, this.lastMessageId, 'Text');\n this.lastMessageId = responseId;\n this.lastMessageId = this._chatService.GetLastMessageId(this.messagesData.messages, this.lastMessageId);\n\n this.announceToScreenReader(this.getTranslation('sentMessageAriaLabel'));\n };\n\n private groupMessages(): JSX.Element[] {\n const result: JSX.Element[] = [];\n let currentCardGroup: CardMessage[] = [];\n\n const flushCardGroup = () => {\n if (currentCardGroup.length > 0) {\n const carouselData = {\n slides: currentCardGroup.map(card => {\n const cardHtml = `\n <pn-chat-message customerSegment=${this.customerSegment} data-card role=\"article\" category=${card.category}>\n <h2 class=\"card-heading\">${card.heading}</h2>\n <p>${card.content}</p>\n ${card.buttons\n ?.map(\n button => `\n <pn-button\n href=\"${button.href}\"\n class=\"${button.class}\"\n appearance=\"${button.appearance}\"\n variant=\"${button.variant}\"\n small=\"${button.small}\"\n role=\"button\"\n >\n ${button.content}\n </pn-button>\n `,\n )\n .join('') || ''\n }\n </pn-chat-message>\n `;\n return cardHtml;\n }),\n };\n result.push(\n <pn-marketweb-carousel\n class=\"card-container\"\n nextButtonLabel=\"Next\"\n previousButtonLabel=\"Previous\"\n ariaNavigationLabel={this.getTranslation('relatedContentAriaLabel')}\n slidesToShow={this.carouselSlidesToShow}\n source={JSON.stringify(carouselData)}\n ></pn-marketweb-carousel>,\n );\n currentCardGroup = [];\n }\n };\n\n this.messagesData.messages.forEach((message, index) => {\n if (message.category === 'Card') {\n currentCardGroup.push(message as CardMessage);\n\n if (index === this.messagesData.messages.length - 1 || this.messagesData.messages[index + 1]?.category !== 'Card') {\n flushCardGroup();\n }\n } else {\n flushCardGroup();\n result.push(this.renderMessage(message));\n }\n });\n\n return result;\n }\n\n private handleKeyPress = (event: KeyboardEvent) => {\n if (event.key === 'Enter' && this.message.trim()) {\n event.preventDefault();\n this.handleSend();\n }\n };\n\n private handleSendMessage = (event: MouseEvent) => {\n if (this.message.trim()) {\n event.preventDefault();\n this.handleSend();\n }\n }\n\n private handleButtonKeyDown(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n (event.target as HTMLElement).click();\n }\n }\n\n @Listen('keydown')\n handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape' && this.isMinimized && !this.isClosed) {\n this.toggleChat();\n }\n }\n\n @Watch('messages')\n handleMessagesChange(newMessage: string): void {\n if (newMessage) {\n this.handleSend();\n }\n }\n\n @Watch('pnChatId')\n handleNewChatId() {\n this.chatId = this.pnChatId === this._defaultAlternativeChatId ? this._defaultChatId : this.pnChatId;\n this.messagesData.messages = [];\n this.isMinimized = false;\n this.setStartValues();\n }\n\n @Watch('forceOpen')\n handleSameChatId() {\n this.isMinimized = false;\n }\n\n @Watch('isMinimized')\n scrollToBottom() {\n const observer = new MutationObserver((_, obs) => {\n const chatMain = document.getElementById('chat-main');\n if (chatMain) {\n setTimeout(() => {\n chatMain.scrollTo({\n top: chatMain.scrollHeight,\n behavior: 'smooth'\n });\n }, 500)\n obs.disconnect();\n }\n });\n observer.observe(document.body, { childList: true, subtree: true, });\n }\n\n private closeChat = () => {\n this._forceClose = true;\n this.storage.remove(this.chatLocalStorageKey);\n this.chatId = null;\n this.pnChatId = this._defaultChatId;\n let chatElement = document.getElementsByTagName('pn-chat')[0];\n chatElement.setAttribute('item-id', '');\n\n let hasActiveShipmentInUrl = window.location.href.includes(this._chatSegment);\n if (hasActiveShipmentInUrl) {\n this.isMinimized = !this.isMinimized;\n this.announceToScreenReader(this.isMinimized ? this.getTranslation('chatMinimizedAriaLabel') : this.getTranslation('chatOpenedAriaLabel'));\n document.body.classList.toggle('chat-open');\n window.location.href = window.location.href.split(this._chatSegment)[0];\n }\n else {\n this._forceClose = false;\n this.toggleChat();\n }\n }\n\n private toggleChat = () => {\n this.isMinimized = !this.isMinimized;\n this.announceToScreenReader(this.isMinimized ? this.getTranslation('chatMinimizedAriaLabel') : this.getTranslation('chatOpenedAriaLabel'));\n document.body.classList.toggle('chat-open');\n\n if (!this.isMinimized && !this.chatId) {\n this.setStartValues();\n }\n };\n\n private announceToScreenReader(message: string) {\n const announcement = document.createElement('div');\n announcement.setAttribute('role', 'status');\n announcement.setAttribute('aria-live', 'polite');\n announcement.classList.add('sr-only');\n announcement.textContent = message;\n document.body.appendChild(announcement);\n setTimeout(() => announcement.remove(), 1000);\n }\n\n private renderMessage(message: ChatMessage): JSX.Element {\n switch (message.category) {\n case 'Bot':\n return this.renderBaseMessage(message);\n case 'Button':\n return this.renderButtonMessage(message);\n case 'ButtonResponse':\n return this.renderBaseMessage(message);\n case 'Link':\n return this.renderLinkMessage(message);\n case 'Card':\n return this.renderCardMessage(message);\n case 'User':\n return this.renderBaseMessage(message);\n case 'Agent':\n return this.renderAgentMessage(message);\n case 'System':\n return this.renderBaseMessage(message);\n }\n }\n\n private renderBaseMessage(message: BaseMessage): JSX.Element {\n return (\n <pn-chat-message customerSegment={this.customerSegment} category={message.category} agentName='' role=\"log\" aria-live=\"polite\">\n {message.content}\n </pn-chat-message>\n );\n }\n\n private renderAgentMessage(message: AgentMessage): JSX.Element {\n return (\n <pn-chat-message customerSegment={this.customerSegment} category={message.category} agentName={message.agentName} role=\"log\" aria-live=\"polite\">\n {message.content}\n </pn-chat-message>\n );\n }\n\n private renderButtonMessage(message: ButtonMessage): JSX.Element {\n let props = {};\n\n if (message?.props) {\n try {\n props = JSON.parse(message.props);\n } catch (error) {\n console.error('Error parsing button props', error instanceof Error ? error.message : 'Unknown error');\n return;\n }\n }\n\n const handleClick = (event: MouseEvent) => {\n const button = (event.target as HTMLElement).closest('button');\n\n if (button === null || button?.hasAttribute('disabled')) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n if (props['data-action'] === 'minimize') {\n this.toggleChat();\n }\n\n if (props['data-action'] === 'choice') {\n (async () => {\n await this.handleSendChoice(props['data-option-choice'], message.content);\n })();\n\n const choiceButtons = document.querySelectorAll('[data-action=\"choice\"]');\n choiceButtons.forEach(pnButton => {\n const buttonInner = pnButton.querySelector('button');\n buttonInner?.setAttribute('disabled', 'true');\n });\n }\n };\n\n return (\n <pn-chat-message customerSegment={this.customerSegment} category={message.category}>\n <pn-button class={message.class} role=\"button\" {...props} onClick={handleClick} onKeyDown={e => this.handleButtonKeyDown(e)}>\n {message.content}\n </pn-button>\n </pn-chat-message>\n );\n }\n\n private createBeforeElement(content: string) {\n const targetElement = this.chatMessagesContainer;\n const chatMessage = document.createElement('pn-chat-message');\n chatMessage.setAttribute('customerSegment', this.customerSegment);\n chatMessage.setAttribute('category', 'User');\n chatMessage.classList.add('pn-chat-before');\n chatMessage.textContent = content;\n\n targetElement.appendChild(chatMessage);\n this.scrollToBottom();\n chatMessage.scrollIntoView();\n }\n\n private async handleSendChoice(choiceId: string, content: string) {\n this.createBeforeElement(content);\n\n let responseId = await this._chatService.sendMessage(choiceId, this.itemId, this.chatId, this.lastMessageId, 'Choice');\n this.lastMessageId = responseId;\n this.lastMessageId = this._chatService.GetLastMessageId(this.messagesData.messages, this.lastMessageId);\n\n this.announceToScreenReader(this.getTranslation('sentMessageAriaLabel'));\n }\n\n private renderLinkMessage(message: LinkMessage): JSX.Element {\n return (\n <pn-chat-message customerSegment={this.customerSegment} category={message.category}>\n <a href={message.href} role=\"link\" rel=\"noopener noreferrer\">\n <span class=\"content\">{message.content}</span>\n <pn-icon icon={arrow_right} color=\"blue700\" aria-hidden=\"true\" role=\"presentation\" />\n </a>\n </pn-chat-message>\n );\n }\n\n private renderCardMessage(message: CardMessage): JSX.Element {\n return (\n <pn-chat-message customerSegment={this.customerSegment} category={message.category} data-card role=\"article\">\n <h2 class=\"card-heading\">{message.heading}</h2>\n <p>{message.content}</p>\n {message.buttons && (\n <div class=\"cta\">\n {message.buttons?.map(button => (\n <pn-button\n href={button.href}\n class={button.class}\n appearance={button.appearance}\n variant={button.variant}\n small={button.small}\n role=\"button\"\n onKeyDown={e => this.handleButtonKeyDown(e)}\n >\n {button.content}\n </pn-button>\n ))}\n </div>\n )}\n </pn-chat-message>\n );\n }\n\n render() {\n const mainId = 'chat-main';\n const inputId = 'chat-input';\n const headerButton = this.messagesData?.header.button;\n\n return (\n <Host class={this.customerSegment}>\n {!this.isClosed && this.messagesData && (\n <div\n class={`pn-chat ${this.isMinimized ? 'minimized' : ''} ${this.isClosed ? 'closed' : ''}`}\n ref={el => (this.chatRef = el as HTMLDivElement)}\n role=\"region\"\n aria-label={this.mainHeading}\n >\n {!this.isMinimized && (\n <Fragment>\n <header class=\"chat-header\" role=\"banner\">\n <h1 id=\"chat-title\">{this.mainHeading}</h1>\n <div class=\"chat-controls\" role=\"toolbar\" aria-label={this.getTranslation('chatControlsAriaLabel')}>\n <pn-button\n icon={minus}\n icon-only=\"true\"\n class=\"minimize-btn\"\n onClick={this.toggleChat}\n aria-expanded={!this.isMinimized}\n aria-controls={mainId}\n aria-label={this.getTranslation('minimizeChatAriaLabel')}\n appearance=\"light\"\n tooltip={this.getTranslation('minimizeChatAriaLabel')}\n small=\"true\"\n />\n <pn-button\n icon={close}\n icon-only=\"true\"\n class=\"close-btn\"\n onClick={this.closeChat}\n aria-expanded={!this.isMinimized}\n aria-label={this.getTranslation('closeChatAriaLabel')}\n appearance=\"light\"\n tooltip={this.getTranslation('closeChatAriaLabel')}\n small=\"true\"\n />\n </div>\n </header>\n {(this.messagesData?.messages?.length ?? 0) > 0 ?\n (<main id={mainId} class=\"chat-main\" role=\"main\" aria-labelledby=\"chat-title\">\n {this.messagesData.header && (\n <div class=\"chat-overview\">\n <div class=\"body\">{this.messagesData.header.body}</div>\n {headerButton && (\n <pn-button\n href={headerButton.href}\n class={headerButton.class}\n appearance={headerButton.appearance}\n variant={headerButton.variant}\n small={headerButton.small}\n role=\"button\"\n onKeyDown={e => this.handleButtonKeyDown(e)}\n >\n {headerButton.content}\n </pn-button>\n )}\n </div>\n )}\n <div ref={el => (this.chatMessagesContainer = el as HTMLElement)} class=\"chat-messages\" role=\"log\" aria-live=\"polite\" aria-label={this.getTranslation('chatMessagesAriaLabel')}>\n {this.groupMessages()}\n </div>\n <pn-icon\n class=\"indicator-icon\"\n aria-label={this.getTranslation('waitingForAnswerLabel')}\n role=\"presentation\"\n ></pn-icon>\n </main>)\n : (<main id={mainId} class=\"chat-main loading-chat-main\" role=\"main\" aria-labelledby=\"chat-title\">\n <div class=\"chat-loading-spinner\">\n <pn-spinner light=\"true\" size=\"1.5\"></pn-spinner>\n </div>\n <span class=\"chat-loading-content\">{this.getTranslation('loadingText')}</span>\n </main>)}\n <footer class=\"chat-footer\" role=\"contentinfo\">\n <div class=\"form\" role=\"form\" aria-labelledby={inputId}>\n <label htmlFor={inputId} class=\"sr-only\">\n {this.getTranslation('writeChatMessagePlaceholder')}\n </label>\n <div class=\"chat-input-container\">\n <input\n id={inputId}\n class=\"chat-text-input\"\n ref={el => (this.inputRef = el as HTMLInputElement)}\n type=\"text\"\n placeholder={this.getTranslation('writeChatMessagePlaceholder')}\n value={this.message}\n onInput={(e: Event) => (this.message = (e.target as HTMLInputElement).value)}\n onKeyPress={this.handleKeyPress}\n maxLength={3990}\n />\n {!this.message.trim() ? (\n <div\n class=\"chat-disabled-button\"\n role=\"button\"\n aria-label={this.getTranslation('sendButtonText')}\n aria-disabled=\"true\"\n tabIndex={-1}>\n <pn-icon color=\"gray400\" icon={submit}></pn-icon>\n </div>\n ) : (\n <pn-button\n icon-only=\"true\"\n variant=\"borderless\"\n appearance=\"light\"\n icon={submit}\n onClick={this.handleSendMessage}\n disabled={!this.message.trim()}\n aria-label={this.getTranslation('sendButtonText')}\n tooltip={this.getTranslation('sendButtonText')}>\n </pn-button>\n )}\n </div>\n </div>\n </footer>\n </Fragment>\n )}\n {this.isMinimized && (\n <pn-button\n icon={talk_bubble}\n icon-only=\"true\"\n class=\"open-chat-btn\"\n onClick={this.toggleChat}\n tooltip={this.getTranslation('openChatAriaLabel')}\n aria-label={this.getTranslation('openChatAriaLabel')}\n aria-expanded={!this.isMinimized}\n ></pn-button>\n )}\n </div>\n )}\n </Host>\n );\n }\n}"],"version":3}