@xapp/chat-widget 1.54.3 → 1.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.css CHANGED
@@ -1,7 +1,7 @@
1
- .chat-card-container{border-radius:10px;position:relative;overflow:hidden;color:#fff;background:#f6f6f6}.chat-card-container .chat-card-img{border-radius:0}.chat-card-container__img{min-width:220px;height:120px}.chat-card-container .chat-card-title{padding:2px 10px;color:#2e375a;font-family:RobotoMedium,serif;font-size:12px;line-height:14px;font-weight:bold}.chat-card-container .chat-card-title span{display:inline-block;white-space:pre-wrap}.chat-card-container .chat-card-sub-title{padding:2px 10px;color:#2e375a;font-family:RobotoRegular,serif;font-size:10px;line-height:14px}.chat-card-container .chat-card-sub-title span{display:inline-block;white-space:pre-wrap}.chat-card-container .action-button{display:inline-block;padding:0 10px;margin:3px;height:25px;font-size:12px;line-height:25px;border-radius:25px;background-color:var(--xapp-primary-color, #616161);color:#d5d9e7;cursor:pointer}.chat-card-container .action-button:focus-visible{outline:none;filter:invert(100%)}.xappw-chat-msg-part{display:inline-block;position:relative;word-wrap:break-word}.xappw-chat-msg-part+.xappw-chat-msg-part{margin-top:4px}.xappw-chat-msg-part+.xappw-chat-msg-part .chat-card-img{border-radius:12px 12px 12px 0}.xappw-chat-msg-part__avatar{position:absolute;bottom:0;z-index:10}.xappw-chat-msg-part ul{list-style-position:inside;padding:0;margin:0 0 8px 0}.xappw-chat-msg-part li{padding:0;margin:0}.xappw-carousel{display:flex;flex-flow:row nowrap;align-items:center;justify-content:center}.xappw-carousel__prev,.xappw-carousel__next{flex:0 0 48px;height:30px;cursor:pointer}.xappw-carousel__prev svg,.xappw-carousel__next svg{display:block;margin:auto;height:100%}.xappw-carousel-items{display:flex;position:relative;height:auto;align-items:stretch;white-space:nowrap;overflow-x:hidden;overflow-y:hidden;scroll-behavior:smooth;-ms-overflow-style:none;-moz-overflow-style:none;-webkit-overflow-scrolling:touch}@media(hover: none)and (pointer: coarse){.xappw-carousel-items{overflow-x:auto}}.xappw-carousel-items__item{display:inline-flex;flex-direction:column;padding-right:10px;flex-shrink:0}.xappw-carousel-items__item:last-child{padding-right:0}@media(max-width: 640px){.xappw-carousel-items__item{min-width:100%}}.xappw-carousel-items--one-item{margin-left:48px}.xappw-vlist{display:flex;flex-flow:column nowrap}.xappw-vlist__header{padding:16px 8px;font-family:"RobotoRegular","serif";font-weight:bold;font-size:16px}.xappw-vlist-container{display:flex;flex-flow:column nowrap;flex:0 0 auto;justify-content:flex-start;max-width:100%;position:relative;white-space:nowrap;border:solid 1px #ccc;border-radius:12px;overflow:hidden}.xappw-vlist-container .xappw-vlist-container__item{display:inline-block;border-top:solid 1px #ccc}.xappw-vlist-container .xappw-vlist-container__item:first-child{border-top:none}.action-button{border:1px solid #ddd;border-radius:4px;text-align:center;opacity:1;outline:none;font-size:14px;padding:8px;text-align:center}.action-button:hover{opacity:.8;cursor:pointer}.action-button:focus-visible{outline:none;filter:invert(100%)}@media screen and (max-width: 640px){.action-button{box-sizing:border-box;height:44px}}.xappw-multiselect{list-style:none;padding:0;margin:0}.xappw-multiselect li{padding:0;margin:0}.chat-card-img{display:block;width:100%;height:100%}.chat-card-img__content{background-position:center;background-size:cover;width:100%;height:100%}.avatar{border-radius:16px;color:#fff;background-color:#fff;background-position:center;background-size:cover;background-repeat:no-repeat;width:100%;height:100%}.avatar--agent{background-color:#fff}.avatar--visitor{background-color:var(--xapp-primary-color, #616161);display:flex;align-items:center;height:100%}.avatar--empty{background-color:rgba(0,0,0,0)}.chat-list-item{display:flex;flex-direction:column;align-items:flex-start;min-width:220px;min-height:120px;flex:1 1 auto;border:solid 1px #ccc;border-radius:12px}.chat-list-item-container{display:flex;flex-direction:column;flex:1 1 auto}.chat-list-item__img{border-radius:12px 12px 0 0;width:100%;height:120px;overflow:hidden}.chat-list-item__title{text-align:left;font-family:var(--xapp-carousel-title-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-carousel-title-font-weight, bold);font-size:var(--xapp-carousel-title-font-size, 14px);font-style:var(--xapp-carousel-title-font-style, normal);color:var(--xapp-carousel-title-text-color, #000);line-height:1.3;padding:2px}.chat-list-item__title span{display:inline-block;white-space:pre-wrap}.chat-list-item__subtitle{text-align:left;font-family:var(--xapp-carousel-subtitle-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-carousel-subtitle-font-weight, normal);font-size:var(--xapp-carousel-subtitle-font-size, 12px);font-style:var(--xapp-carousel-subtitle-font-style, italic);color:var(--xapp-carousel-subtitle-text-color, #979797);line-height:1.3;max-width:200px;padding:2px}.chat-list-item__subtitle span{display:inline-block;white-space:pre-wrap}.chat-list-item__actions{margin-top:auto}.chat-list-item .action-button{display:inline-block;padding:0 10px;margin:3px;height:25px;font-size:12px;line-height:25px;border-radius:25px;background-color:var(--xapp-carousel-action-button-color, var(--xapp-primary-color, #616161));color:#d5d9e7;cursor:pointer}.xappw-vlist-item{display:flex;flex-direction:row;flex:0 0 auto;min-width:100%;min-height:56px;padding:8px;box-sizing:border-box;cursor:pointer}.xappw-vlist-item--normal{align-items:flex-start}.xappw-vlist-item--titles{align-items:center}.xappw-vlist-item:hover{background-color:#eee}.xappw-vlist-item__description{display:flex;flex-direction:column;flex:1 1 auto;overflow:hidden}.xappw-vlist-item__side{flex:0 0 auto;display:flex;flex-direction:column}.xappw-vlist-item__img{border-radius:12px;width:40px;height:40px;overflow:hidden}.xappw-vlist-item__external-link{width:20px;margin:0 4px 4px auto;display:inline-block}.xappw-vlist-item__title{text-align:left;font-family:var(--xapp-carousel-title-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-carousel-title-font-weight, bold);font-size:var(--xapp-carousel-title-font-size, 14px);font-style:var(--xapp-carousel-title-font-style, normal);color:var(--xapp-carousel-title-text-color, #000);line-height:1.3}.xappw-vlist-item__title span{display:inline-block;white-space:pre-wrap}.xappw-vlist-item__link{font-family:var(--xapp-carousel-link-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-carousel-link-font-weight, normal);font-size:var(--xapp-carousel-link-font-size, 12px);font-style:var(--xapp-carousel-link-font-style, normal);color:var(--xapp-carousel-link-text-color, #666);line-height:1.3;overflow:hidden;text-overflow:ellipsis;max-width:100%}.xappw-vlist-item__subtitle{text-align:left;font-family:var(--xapp-carousel-subtitle-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-carousel-subtitle-font-weight, normal);font-size:var(--xapp-carousel-subtitle-font-size, 12px);font-style:var(--xapp-carousel-subtitle-font-style, italic);color:var(--xapp-carousel-subtitle-text-color, #979797);line-height:1.3}.xappw-vlist-item__subtitle span{display:inline-block;white-space:pre-wrap}.xappw-vlist-item .action-button{display:inline-block;padding:0 10px;margin:3px;height:25px;font-size:12px;line-height:25px;border-radius:25px;background-color:var(--xapp-carousel-action-button-color, var(--xapp-primary-color, #616161));color:#d5d9e7;cursor:pointer}.xappw-vlist-item .action-button:focus-visible{outline:none;filter:invert(100%)}.xappw-chat-action-item{text-decoration:none}.xappw-chat-action-item--action{cursor:pointer}.xapp-chat-button{position:fixed;bottom:0;right:0;cursor:pointer;margin-top:var(--xapp-chat-button-margin-top, var(--xapp-widget-margin-top, 16px));margin-right:var(--xapp-chat-button-margin-right, var(--xapp-widget-margin-right, 16px));margin-bottom:var(--xapp-chat-button-margin-bottom, var(--xapp-widget-margin-bottom, 16px));margin-left:var(--xapp-chat-button-margin-left, var(--xapp-widget-margin-left, 16px));display:block;opacity:1;animation:widget-show-grow .5s backwards;width:48px;height:48px;border-radius:24px;z-index:var(--xapp-widget-z-index, 1000);background-color:rgba(0,0,0,0);padding:0;border-width:0px}.xapp-chat-button.visible{animation:widget-hide-shrink .5s forwards}.xapp-chat-button:focus-visible{outline:none;box-shadow:0 0 4px 4px rgba(0,0,0,.3)}.xapp-chat-button__btn{position:absolute;width:48px;height:48px;border-radius:24px;background-color:var(--xapp-chat-button-background, var(--xapp-primary-color, #616161));box-shadow:0 0 8px 0 rgba(0,0,0,.3);bottom:0px;right:0px}.xapp-chat-button__btn svg{display:block;margin:auto;height:100%}.xapp-chat-button__cta{position:absolute;bottom:56px;right:24px;white-space:nowrap;font-size:16px;font-family:RobotoRegular,serif}.xapp-chat-button:hover{background:rgba(0,0,0,0) !important}.cta-bubble{position:relative;border-radius:50%;background:var(--xapp-cta-background, #e1e2e1);display:flex;align-items:center;justify-content:center;padding:16px;box-sizing:border-box;text-align:center;max-width:192px}.cta-bubble__tail{position:absolute;left:-16px;right:-16px;top:-16px;bottom:-16px;z-index:1;color:var(--xapp-cta-background, #e1e2e1)}.cta-bubble__tail svg{width:100%;height:100%;margin:0;padding:0}.cta-bubble__content{font-family:var(--xapp-cta-font-family, 14px);font-size:var(--xapp-cta-font-size, 14px);color:var(--xapp-cta-text-color, var(--xapp-primary-color, #616161));z-index:2}.chat-msg-container-wrapper{display:flex;margin-bottom:16px}.chat-msg-container-wrapper.visitor{justify-content:flex-end}.chat-msg-container-wrapper.agent{justify-content:flex-start}.chat-msg-container-wrapper.sibling{margin-bottom:8px}.chat-msg-container-wrapper.sibling .avatar{display:none}.chat-msg-container{display:flex;flex-flow:column nowrap;flex:0 0 auto;justify-content:flex-start;max-width:100%;position:relative}.chat-msg-container.visitor{align-items:flex-end}.chat-msg-container.visitor .xappw-chat-msg-part__avatar{right:0;display:none}.chat-msg-container.agent{align-items:stretch}.chat-msg-container.agent .xappw-chat-msg-part__avatar{width:40px;height:40px;left:0}.message-sr-only{display:none}.chat-text-container p{margin:0 0 8px 0;padding:0}.chat-msg-agent-typing{margin-top:auto;padding-bottom:16px;font-family:var(--xapp-text-typing-status-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-text-typing-status-font-weight, normal);font-size:var(--xapp-text-typing-status-font-size, 14px);font-style:var(--xapp-text-typing-status-font-style, normal);color:var(--xapp-text-typing-status-text-color, #bfbfbf)}.chat-msg-agent-typing::after{display:inline-block;animation:dots steps(1, end) 1.5s infinite;content:""}@keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}100%{content:""}}.chat-text-bubble{border-radius:10px;padding:10px;position:relative;overflow:visible}.chat-text-bubble--mine{font-family:var(--xapp-messages-mine-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-messages-mine-font-weight, normal);font-size:var(--xapp-messages-mine-font-size, 14px);font-style:var(--xapp-messages-mine-font-style, normal);color:var(--xapp-messages-mine-text-color, #ffffff);background:var(--xapp-messages-mine-bubble-color, hsl(120, 75%, 50%));border-bottom-right-radius:0}.chat-text-bubble--mine .chat-text-bubble__tail{right:-8px;color:var(--xapp-messages-mine-bubble-color, hsl(120, 75%, 50%))}.chat-text-bubble--others{font-family:var(--xapp-messages-others-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-messages-others-font-weight, normal);font-size:var(--xapp-messages-others-font-size, 14px);font-style:var(--xapp-messages-others-font-style, normal);color:var(--xapp-messages-others-text-color, #262726);background:var(--xapp-messages-others-bubble-color, #e1e2e1);border-bottom-left-radius:0}.chat-text-bubble--others .chat-text-bubble__tail{left:-8px;color:var(--xapp-messages-others-bubble-color, #e1e2e1)}.chat-text-bubble span{white-space:pre-wrap}.chat-typing-progress .chat-text-bubble{padding:8px 10px;margin-top:4px}.chat-text-bubble__tail{position:absolute;width:8px;height:24px;bottom:0}.chat-chip{display:inline-block;padding:0 10px;margin:3px;height:25px;font-size:12px;color:#2f385a;line-height:25px;border-radius:25px;border:thin solid #aeb3be;cursor:pointer;user-select:none}.chat-chip-link{text-decoration:underline}@media screen and (max-width: 640px){.chat-chip{min-height:44px;padding:8px}}.chat-chips{width:100%;overflow-x:auto;overflow-y:hidden;white-space:nowrap;box-sizing:border-box;margin:0 auto;padding:10px;scroll-behavior:smooth;-ms-overflow-style:none;-moz-overflow-style:none;-webkit-overflow-scrolling:touch}.chat-chips::-webkit-scrollbar{background-color:#fff;height:10px}.chat-chips::-webkit-scrollbar-track{background-color:#fff}.chat-chips::-webkit-scrollbar-button{display:none}.chat-chips::-webkit-scrollbar-thumb{background-color:#babac0;border-radius:10px;border:2.5px solid #fff}.chat-menu{display:flex;flex-flow:column;flex-shrink:0;z-index:999;overflow-y:hidden}.chat-menu-bottom--closed{max-height:0}.chat-menu-bottom--opened{max-height:calc(var(--xapp-widget-height, 500px) - 40)}.chat-menu-left{position:absolute;top:40px;left:0;width:auto;max-width:var(--xapp-widget-width, 400px);background:var(--xapp-menu-item-background, #efefef);height:100%;overflow:hidden;-webkit-transition:left 1.5s ease-out;-moz-transition:left 1.5s ease-out;-o-transition:left 1.5s ease-out;transition:left 1.5s ease-out}.chat-menu-left--closed{left:-var(--xapp-widget-width, 400px)}.chat-menu-item{border:var(--xapp-chat-menu-item-border-width, #fff) solid var(--xapp-chat-menu-item-border-color, #fff);border-radius:var(--xapp-chat-menu-item-border-radius, 0px);opacity:1;background:var(--xapp-menu-item-background, #efefef);font-family:var(--xapp-menu-item-font-family, 14px);font-weight:var(--xapp-menu-item-font-weight, normal);font-size:var(--xapp-menu-item-font-size, 14px);font-style:var(--xapp-menu-item-font-style, normal);color:var(--xapp-menu-item-text-color, var(--xapp-primary-color, #616161));height:var(--xapp-menu-item-height, 24px);width:100%;max-width:100%;box-sizing:border-box;padding:4px 4px 4px 30px;text-align:left}.chat-menu-item:hover{opacity:.8;cursor:pointer}.chat-menu-item--subtitle{font-family:var(--xapp-menu-item-subtitle-font-family, 14px);font-weight:var(--xapp-menu-item-subtitle-font-weight, normal);font-size:var(--xapp-menu-item-subtitle-font-size, 14px);font-style:var(--xapp-menu-item-subtitle-font-style, normal);color:var(--xapp-menu-item-text-subtitle-color, var(--xapp-primary-color, #616161))}.chat-menu-item:focus-visible{outline:none;filter:invert(100%)}.chat-menu-item-static{border:var(--xapp-chat-menu-item-border-width, #fff) solid var(--xapp-chat-menu-item-border-color, #fff);border-radius:var(--xapp-chat-menu-item-border-radius, 0px);background:var(--xapp-menu-item-background, #efefef);font-family:var(--xapp-menu-item-font-family, 14px);font-weight:var(--xapp-menu-item-font-weight, normal);font-size:var(--xapp-menu-item-font-size, 14px);font-style:var(--xapp-menu-item-font-style, normal);color:var(--xapp-menu-item-text-color, var(--xapp-primary-color, #616161));height:var(--xapp-menu-item-height, 24px);display:flex;justify-content:center;text-align:center;padding:4px 4px 4px 30px}.chat-menu-item-static--body{font-family:var(--xapp-menu-item-subtitle-font-family, 14px);font-weight:var(--xapp-menu-item-subtitle-font-weight, normal);font-size:var(--xapp-menu-item-subtitle-font-size, 14px);font-style:var(--xapp-menu-item-subtitle-font-style, normal);color:var(--xapp-menu-item-text-subtitle-color, var(--xapp-primary-color, #616161))}.chat-menu-item-static-text{border:var(--xapp-chat-menu-item-border-width, #fff) solid var(--xapp-chat-menu-item-border-color, #fff);border-radius:var(--xapp-chat-menu-item-border-radius, 0px);background:var(--xapp-menu-item-background, #efefef);font-family:var(--xapp-menu-item-font-family, 14px);font-weight:var(--xapp-menu-item-font-weight, normal);font-size:var(--xapp-menu-item-font-size, 14px);font-style:var(--xapp-menu-item-font-style, normal);color:var(--xapp-menu-item-text-color, var(--xapp-primary-color, #616161));max-height:100%;max-width:auto;display:flex;justify-content:center;text-align:center;padding:4px 4px 4px 30px}.chat-menu-item-static-text--body{font-family:var(--xapp-menu-item-subtitle-font-family, 14px);font-weight:var(--xapp-menu-item-subtitle-font-weight, normal);font-size:var(--xapp-menu-item-subtitle-font-size, 14px);font-style:var(--xapp-menu-item-subtitle-font-style, normal);color:var(--xapp-menu-item-text-subtitle-color, var(--xapp-primary-color, #616161))}.message-list-container{position:relative;flex-grow:1;flex-shrink:1;overflow-y:scroll;display:flex;flex-direction:column;background:var(--xapp-content-background, #fff)}.message-list-container__msgs{display:flex;flex-direction:column;flex-grow:1;flex-shrink:1;padding-top:var(--xapp-messages-padding-top, 16px);padding-right:var(--xapp-messages-padding-right, 16px);padding-bottom:var(--xapp-messages-padding-bottom, 0);padding-left:var(--xapp-messages-padding-left, 20px)}.message-list-container__chips{flex:0 0 auto;border-top:solid 1px #ccc;margin-top:auto}.message-list-container__chips--empty{flex-basis:0;border:none;overflow:hidden}.message-form .section{margin-bottom:16px}.message-form .label{display:block;margin-bottom:4px;color:var(--xapp-primary-color, #616161)}.message-form input,.message-form textarea{border:1px solid #ddd;border-radius:4px;outline-width:0;width:100%;font-size:14px;box-sizing:border-box}.message-form input{height:32px;padding:0 10px}.message-form textarea{padding:8px 10px;min-height:100px;resize:none;overflow-y:auto}.message-form__submit{width:100%;background-color:var(--xapp-primary-color, #616161);color:#fff}.message-form--shrink-enter{opacity:.01;position:relative;top:100px}.message-form--shrink-enter-active{position:relative;top:0;opacity:1;transition:opacity 500ms,top 500ms;transition-delay:500ms}.message-form--shrink-exit{opacity:.5;position:relative;top:0}.message-form--shrink-exit-active{top:-200px;opacity:.01;transition:top 500ms,opacity 500ms}.message-form--grow-enter{opacity:.5;position:relative;top:-200px}.message-form--grow-enter-active{position:relative;top:0;opacity:1;transition:opacity 500ms,top 500ms}.message-form--grow-exit{opacity:.5;position:relative;top:0;height:50px}.message-form--grow-exit-active{top:-100px;height:0;opacity:.01;transition:top 500ms,opacity 500ms,height 500ms}.message-form--sent .button-resend{width:100%;margin-top:16px;background-color:var(--xapp-primary-color, #616161);color:#fff}.card-container{padding-top:16px;position:relative}.card-container__content{color:#555;border-radius:8px;border:1px solid #ddd;padding:24px 16px 16px 16px;font-size:14px}.card-container__title{text-align:center;color:var(--xapp-primary-color, #616161);margin-bottom:8px}.card-container__icon{width:32px;height:32px;position:relative;background-color:#fff;border:1px solid #e0e0e0;border-radius:50%;box-shadow:0 2px 4px 0 rgba(0,0,0,.1);margin:-16px auto;z-index:999}.card-container__icon svg{display:block;margin:auto;height:100%}@keyframes typing-animation{0%{transform:translateY(0px)}28%{transform:translateY(-5px)}44%{transform:translateY(0px)}}.typing-indicator{height:20px;display:inline-flex;align-items:center}.typing-indicator-part:nth-child(1){animation-delay:200ms}.typing-indicator-part:nth-child(2){animation-delay:300ms}.typing-indicator-part:nth-child(3){animation-delay:400ms}.typing-indicator-part{display:inline-block;animation:typing-animation 1.5s infinite ease-in-out;border-radius:50%;width:7px;height:7px;margin:0 3px;background-color:#7a7a7a}@font-face{font-family:OpenSansSemibold;font-style:normal;font-weight:600;font-display:swap;src:local("Open Sans SemiBold"),local("OpenSans-SemiBold"),url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UNirkOUuhpKKSTjw.woff2) format("woff2")}@font-face{font-family:RobotoRegular;font-style:normal;font-weight:400;font-display:swap;src:local("Roboto"),local("Roboto-Regular"),url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2) format("woff2")}@font-face{font-family:RobotoMedium;font-style:oblique;font-weight:500;font-display:swap;src:local("Roboto Medium"),local("Roboto-Medium"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2) format("woff2")}.widget-container{background:#fff;display:flex;flex-flow:column nowrap;width:100%;height:100%;visibility:hidden;font-family:RobotoRegular,serif;box-shadow:0 5px 40px rgba(0,0,0,.16);overflow:hidden;border-radius:var(--xapp-widget-border-radius, 10px);border:var(--xapp-widget-border-width, 0px) solid var(--xapp-widget-border-color, var(--xapp-primary-color, #616161));box-sizing:border-box}.widget-container *,.widget-container *:before,.widget-container *:after{box-sizing:border-box}.widget-container--normal,.widget-container--static{position:fixed;z-index:var(--xapp-widget-z-index, 1000);right:var(--xapp-widget-margin-right, 10px);bottom:var(--xapp-widget-margin-bottom, 10px)}.widget-container--normal.visible,.widget-container--static.visible{width:min(
1
+ .chat-card-container{border-radius:10px;position:relative;overflow:hidden;color:#fff;background:#f6f6f6}.chat-card-container .chat-card-img{border-radius:0}.chat-card-container__img{min-width:220px;height:120px}.chat-card-container .chat-card-title{padding:2px 10px;color:#2e375a;font-family:RobotoMedium,serif;font-size:12px;line-height:14px;font-weight:bold}.chat-card-container .chat-card-title span{display:inline-block;white-space:pre-wrap}.chat-card-container .chat-card-sub-title{padding:2px 10px;color:#2e375a;font-family:RobotoRegular,serif;font-size:10px;line-height:14px}.chat-card-container .chat-card-sub-title span{display:inline-block;white-space:pre-wrap}.chat-card-container .action-button{display:inline-block;padding:0 10px;margin:3px;height:25px;font-size:12px;line-height:25px;border-radius:25px;background-color:var(--xapp-primary-color, #616161);color:#d5d9e7;cursor:pointer}.chat-card-container .action-button:focus-visible{outline:none;filter:invert(100%)}.xappw-chat-msg-part{display:inline-block;position:relative;word-wrap:break-word}.xappw-chat-msg-part+.xappw-chat-msg-part{margin-top:4px}.xappw-chat-msg-part+.xappw-chat-msg-part .chat-card-img{border-radius:12px 12px 12px 0}.xappw-chat-msg-part__avatar{position:absolute;bottom:0;z-index:10}.xappw-chat-msg-part ul{list-style-position:inside;padding:0;margin:0 0 8px 0}.xappw-chat-msg-part li{padding:0;margin:0}.xappw-carousel{display:flex;flex-flow:row nowrap;align-items:center;justify-content:center}.xappw-carousel__prev,.xappw-carousel__next{flex:0 0 48px;height:30px;cursor:pointer}.xappw-carousel__prev svg,.xappw-carousel__next svg{display:block;margin:auto;height:100%}.xappw-carousel-items{display:flex;position:relative;height:auto;align-items:stretch;white-space:nowrap;overflow-x:hidden;overflow-y:hidden;scroll-behavior:smooth;-ms-overflow-style:none;-moz-overflow-style:none;-webkit-overflow-scrolling:touch}@media(hover: none)and (pointer: coarse){.xappw-carousel-items{overflow-x:auto}}.xappw-carousel-items__item{display:inline-flex;flex-direction:column;padding-right:10px;flex-shrink:0}.xappw-carousel-items__item:last-child{padding-right:0}@media(max-width: 640px){.xappw-carousel-items__item{min-width:100%}}.xappw-carousel-items--one-item{margin-left:48px}.action-button{border:1px solid #ddd;border-radius:4px;text-align:center;opacity:1;outline:none;font-size:14px;padding:8px;text-align:center}.action-button:hover{opacity:.8;cursor:pointer}.action-button:focus-visible{outline:none;filter:invert(100%)}@media screen and (max-width: 640px){.action-button{box-sizing:border-box;height:44px}}.xappw-vlist{display:flex;flex-flow:column nowrap}.xappw-vlist__header{padding:16px 8px;font-family:"RobotoRegular","serif";font-weight:bold;font-size:16px}.xappw-vlist-container{display:flex;flex-flow:column nowrap;flex:0 0 auto;justify-content:flex-start;max-width:100%;position:relative;white-space:nowrap;border:solid 1px #ccc;border-radius:12px;overflow:hidden}.xappw-vlist-container .xappw-vlist-container__item{display:inline-block;border-top:solid 1px #ccc}.xappw-vlist-container .xappw-vlist-container__item:first-child{border-top:none}.xappw-multiselect{list-style:none;padding:0;margin:0}.xappw-multiselect li{padding:0;margin:0}.chat-card-img{display:block;width:100%;height:100%}.chat-card-img__content{background-position:center;background-size:cover;width:100%;height:100%}.avatar{border-radius:20px;color:#fff;background-color:#fff;background-position:center;background-size:cover;background-repeat:no-repeat;width:100%;height:100%}.avatar--agent{background-color:#fff}.avatar--visitor{background-color:var(--xapp-primary-color, #616161);display:flex;align-items:center;height:100%}.avatar--empty{background-color:rgba(0,0,0,0)}.chat-list-item{display:flex;flex-direction:column;align-items:flex-start;min-width:220px;min-height:120px;flex:1 1 auto;border:solid 1px #ccc;border-radius:12px}.chat-list-item-container{display:flex;flex-direction:column;flex:1 1 auto}.chat-list-item__img{border-radius:12px 12px 0 0;width:100%;height:120px;overflow:hidden}.chat-list-item__title{text-align:left;font-family:var(--xapp-carousel-title-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-carousel-title-font-weight, bold);font-size:var(--xapp-carousel-title-font-size, 14px);font-style:var(--xapp-carousel-title-font-style, normal);color:var(--xapp-carousel-title-text-color, #000);line-height:1.3;padding:2px}.chat-list-item__title span{display:inline-block;white-space:pre-wrap}.chat-list-item__subtitle{text-align:left;font-family:var(--xapp-carousel-subtitle-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-carousel-subtitle-font-weight, normal);font-size:var(--xapp-carousel-subtitle-font-size, 12px);font-style:var(--xapp-carousel-subtitle-font-style, italic);color:var(--xapp-carousel-subtitle-text-color, #979797);line-height:1.3;max-width:200px;padding:2px}.chat-list-item__subtitle span{display:inline-block;white-space:pre-wrap}.chat-list-item__actions{margin-top:auto}.chat-list-item .action-button{display:inline-block;padding:0 10px;margin:3px;height:25px;font-size:12px;line-height:25px;border-radius:25px;background-color:var(--xapp-carousel-action-button-color, var(--xapp-primary-color, #616161));color:#d5d9e7;cursor:pointer}.xappw-vlist-item{display:flex;flex-direction:row;flex:0 0 auto;min-width:100%;min-height:56px;padding:8px;box-sizing:border-box;cursor:pointer}.xappw-vlist-item--normal{align-items:flex-start}.xappw-vlist-item--titles{align-items:center}.xappw-vlist-item:hover{background-color:#eee}.xappw-vlist-item__description{display:flex;flex-direction:column;flex:1 1 auto;overflow:hidden}.xappw-vlist-item__side{flex:0 0 auto;display:flex;flex-direction:column}.xappw-vlist-item__img{border-radius:12px;width:40px;height:40px;overflow:hidden}.xappw-vlist-item__external-link{width:20px;margin:0 4px 4px auto;display:inline-block}.xappw-vlist-item__title{text-align:left;font-family:var(--xapp-carousel-title-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-carousel-title-font-weight, bold);font-size:var(--xapp-carousel-title-font-size, 14px);font-style:var(--xapp-carousel-title-font-style, normal);color:var(--xapp-carousel-title-text-color, #000);line-height:1.3}.xappw-vlist-item__title span{display:inline-block;white-space:pre-wrap}.xappw-vlist-item__link{font-family:var(--xapp-carousel-link-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-carousel-link-font-weight, normal);font-size:var(--xapp-carousel-link-font-size, 12px);font-style:var(--xapp-carousel-link-font-style, normal);color:var(--xapp-carousel-link-text-color, #666);line-height:1.3;overflow:hidden;text-overflow:ellipsis;max-width:100%}.xappw-vlist-item__subtitle{text-align:left;font-family:var(--xapp-carousel-subtitle-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-carousel-subtitle-font-weight, normal);font-size:var(--xapp-carousel-subtitle-font-size, 12px);font-style:var(--xapp-carousel-subtitle-font-style, italic);color:var(--xapp-carousel-subtitle-text-color, #979797);line-height:1.3}.xappw-vlist-item__subtitle span{display:inline-block;white-space:pre-wrap}.xappw-vlist-item .action-button{display:inline-block;padding:0 10px;margin:3px;height:25px;font-size:12px;line-height:25px;border-radius:25px;background-color:var(--xapp-carousel-action-button-color, var(--xapp-primary-color, #616161));color:#d5d9e7;cursor:pointer}.xappw-vlist-item .action-button:focus-visible{outline:none;filter:invert(100%)}.xappw-chat-action-item{text-decoration:none}.xappw-chat-action-item--action{cursor:pointer}.xapp-chat-button{position:fixed;bottom:0;right:0;cursor:pointer;margin-top:var(--xapp-chat-button-margin-top, var(--xapp-widget-margin-top, 16px));margin-right:var(--xapp-chat-button-margin-right, var(--xapp-widget-margin-right, 16px));margin-bottom:var(--xapp-chat-button-margin-bottom, var(--xapp-widget-margin-bottom, 16px));margin-left:var(--xapp-chat-button-margin-left, var(--xapp-widget-margin-left, 16px));display:block;opacity:1;animation:widget-show-grow .5s backwards;width:48px;height:48px;border-radius:24px;z-index:var(--xapp-widget-z-index, 1000);background-color:rgba(0,0,0,0);padding:0;border-width:0px}.xapp-chat-button.visible{animation:widget-hide-shrink .5s forwards}.xapp-chat-button:focus-visible{outline:none;box-shadow:0 0 4px 4px rgba(0,0,0,.3)}.xapp-chat-button__btn{position:absolute;width:48px;height:48px;border-radius:24px;background-color:var(--xapp-chat-button-background, var(--xapp-primary-color, #616161));box-shadow:0 0 8px 0 rgba(0,0,0,.3);bottom:0px;right:0px}.xapp-chat-button__btn svg{display:block;margin:auto;height:100%}.xapp-chat-button__cta{position:absolute;bottom:56px;right:24px;white-space:nowrap;font-size:16px;font-family:RobotoRegular,serif}.xapp-chat-button:hover{background:rgba(0,0,0,0) !important}.cta-bubble{position:relative;border-radius:50%;background:var(--xapp-cta-background, #e1e2e1);display:flex;align-items:center;justify-content:center;padding:16px;box-sizing:border-box;text-align:center;max-width:192px}.cta-bubble__tail{position:absolute;left:-16px;right:-16px;top:-16px;bottom:-16px;z-index:1;color:var(--xapp-cta-background, #e1e2e1)}.cta-bubble__tail svg{width:100%;height:100%;margin:0;padding:0}.cta-bubble__content{font-family:var(--xapp-cta-font-family, 14px);font-size:var(--xapp-cta-font-size, 14px);color:var(--xapp-cta-text-color, var(--xapp-primary-color, #616161));z-index:2}.chat-chip{display:inline-block;padding:0 10px;margin:3px;height:25px;font-size:12px;color:#2f385a;line-height:25px;border-radius:25px;border:thin solid #aeb3be;cursor:pointer;user-select:none}.chat-chip-link{text-decoration:underline}@media screen and (max-width: 640px){.chat-chip{min-height:44px;padding:8px}}.chat-chips{width:100%;overflow-x:auto;overflow-y:hidden;white-space:nowrap;box-sizing:border-box;margin:0 auto;padding:10px;scroll-behavior:smooth;-ms-overflow-style:none;-moz-overflow-style:none;-webkit-overflow-scrolling:touch}.chat-chips::-webkit-scrollbar{background-color:#fff;height:10px}.chat-chips::-webkit-scrollbar-track{background-color:#fff}.chat-chips::-webkit-scrollbar-button{display:none}.chat-chips::-webkit-scrollbar-thumb{background-color:#babac0;border-radius:10px;border:2.5px solid #fff}.chat-menu{display:flex;flex-flow:column;flex-shrink:0;z-index:999;overflow-y:hidden}.chat-menu-bottom--closed{max-height:0}.chat-menu-bottom--opened{max-height:calc(var(--xapp-widget-height, 500px) - 40)}.chat-menu-left{position:absolute;top:40px;left:0;width:auto;max-width:var(--xapp-widget-width, 400px);background:var(--xapp-menu-item-background, #efefef);height:100%;overflow:hidden;-webkit-transition:left 1.5s ease-out;-moz-transition:left 1.5s ease-out;-o-transition:left 1.5s ease-out;transition:left 1.5s ease-out}.chat-menu-left--closed{left:-var(--xapp-widget-width, 400px)}.chat-menu-item{border:var(--xapp-chat-menu-item-border-width, #fff) solid var(--xapp-chat-menu-item-border-color, #fff);border-radius:var(--xapp-chat-menu-item-border-radius, 0px);opacity:1;background:var(--xapp-menu-item-background, #efefef);font-family:var(--xapp-menu-item-font-family, 14px);font-weight:var(--xapp-menu-item-font-weight, normal);font-size:var(--xapp-menu-item-font-size, 14px);font-style:var(--xapp-menu-item-font-style, normal);color:var(--xapp-menu-item-text-color, var(--xapp-primary-color, #616161));height:var(--xapp-menu-item-height, 24px);width:100%;max-width:100%;box-sizing:border-box;padding:4px 4px 4px 30px;text-align:left}.chat-menu-item:hover{opacity:.8;cursor:pointer}.chat-menu-item--subtitle{font-family:var(--xapp-menu-item-subtitle-font-family, 14px);font-weight:var(--xapp-menu-item-subtitle-font-weight, normal);font-size:var(--xapp-menu-item-subtitle-font-size, 14px);font-style:var(--xapp-menu-item-subtitle-font-style, normal);color:var(--xapp-menu-item-text-subtitle-color, var(--xapp-primary-color, #616161))}.chat-menu-item:focus-visible{outline:none;filter:invert(100%)}.chat-menu-item-static{border:var(--xapp-chat-menu-item-border-width, #fff) solid var(--xapp-chat-menu-item-border-color, #fff);border-radius:var(--xapp-chat-menu-item-border-radius, 0px);background:var(--xapp-menu-item-background, #efefef);font-family:var(--xapp-menu-item-font-family, 14px);font-weight:var(--xapp-menu-item-font-weight, normal);font-size:var(--xapp-menu-item-font-size, 14px);font-style:var(--xapp-menu-item-font-style, normal);color:var(--xapp-menu-item-text-color, var(--xapp-primary-color, #616161));height:var(--xapp-menu-item-height, 24px);display:flex;justify-content:center;text-align:center;padding:4px 4px 4px 30px}.chat-menu-item-static--body{font-family:var(--xapp-menu-item-subtitle-font-family, 14px);font-weight:var(--xapp-menu-item-subtitle-font-weight, normal);font-size:var(--xapp-menu-item-subtitle-font-size, 14px);font-style:var(--xapp-menu-item-subtitle-font-style, normal);color:var(--xapp-menu-item-text-subtitle-color, var(--xapp-primary-color, #616161))}.chat-menu-item-static-text{border:var(--xapp-chat-menu-item-border-width, #fff) solid var(--xapp-chat-menu-item-border-color, #fff);border-radius:var(--xapp-chat-menu-item-border-radius, 0px);background:var(--xapp-menu-item-background, #efefef);font-family:var(--xapp-menu-item-font-family, 14px);font-weight:var(--xapp-menu-item-font-weight, normal);font-size:var(--xapp-menu-item-font-size, 14px);font-style:var(--xapp-menu-item-font-style, normal);color:var(--xapp-menu-item-text-color, var(--xapp-primary-color, #616161));max-height:100%;max-width:auto;display:flex;justify-content:center;text-align:center;padding:4px 4px 4px 30px}.chat-menu-item-static-text--body{font-family:var(--xapp-menu-item-subtitle-font-family, 14px);font-weight:var(--xapp-menu-item-subtitle-font-weight, normal);font-size:var(--xapp-menu-item-subtitle-font-size, 14px);font-style:var(--xapp-menu-item-subtitle-font-style, normal);color:var(--xapp-menu-item-text-subtitle-color, var(--xapp-primary-color, #616161))}.chat-text-bubble{border-radius:10px;padding:10px;position:relative;overflow:visible}.chat-text-bubble--mine{font-family:var(--xapp-messages-mine-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-messages-mine-font-weight, normal);font-size:var(--xapp-messages-mine-font-size, 14px);font-style:var(--xapp-messages-mine-font-style, normal);color:var(--xapp-messages-mine-text-color, #ffffff);background:var(--xapp-messages-mine-bubble-color, hsl(120, 75%, 50%));border-bottom-right-radius:0}.chat-text-bubble--mine .chat-text-bubble__tail{right:-8px;color:var(--xapp-messages-mine-bubble-color, hsl(120, 75%, 50%))}.chat-text-bubble--others{font-family:var(--xapp-messages-others-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-messages-others-font-weight, normal);font-size:var(--xapp-messages-others-font-size, 14px);font-style:var(--xapp-messages-others-font-style, normal);color:var(--xapp-messages-others-text-color, #262726);background:var(--xapp-messages-others-bubble-color, #e1e2e1);border-bottom-left-radius:0}.chat-text-bubble--others .chat-text-bubble__tail{left:-8px;color:var(--xapp-messages-others-bubble-color, #e1e2e1)}.chat-text-bubble span{white-space:pre-wrap}.chat-typing-progress .chat-text-bubble{padding:8px 10px;margin-top:4px}.chat-text-bubble__tail{position:absolute;width:8px;height:24px;bottom:0}.chat-msg-container-wrapper{display:flex;margin-bottom:16px}.chat-msg-container-wrapper.visitor{justify-content:flex-end}.chat-msg-container-wrapper.agent{justify-content:flex-start}.chat-msg-container-wrapper.sibling{margin-bottom:8px}.chat-msg-container-wrapper.sibling .avatar{display:none}.chat-msg-container{display:flex;flex-flow:column nowrap;flex:0 0 auto;justify-content:flex-start;max-width:100%;position:relative}.chat-msg-container.visitor{align-items:flex-end}.chat-msg-container.visitor .xappw-chat-msg-part__avatar{right:0;display:none}.chat-msg-container.agent{align-items:stretch}.chat-msg-container.agent .xappw-chat-msg-part__avatar{width:36px;height:36px;left:0}.message-sr-only{display:none}.chat-text-container p{margin:0 0 8px 0;padding:0}.chat-msg-agent-typing{margin-top:auto;padding-bottom:16px;font-family:var(--xapp-text-typing-status-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-text-typing-status-font-weight, normal);font-size:var(--xapp-text-typing-status-font-size, 14px);font-style:var(--xapp-text-typing-status-font-style, normal);color:var(--xapp-text-typing-status-text-color, #bfbfbf)}.chat-msg-agent-typing::after{display:inline-block;animation:dots steps(1, end) 1.5s infinite;content:""}@keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}100%{content:""}}.message-list-container{position:relative;flex-grow:1;flex-shrink:1;overflow-y:scroll;display:flex;flex-direction:column;background:var(--xapp-content-background, #fff)}.message-list-container__msgs{display:flex;flex-direction:column;flex-grow:1;flex-shrink:1;padding-top:var(--xapp-messages-padding-top, 16px);padding-right:var(--xapp-messages-padding-right, 16px);padding-bottom:var(--xapp-messages-padding-bottom, 0);padding-left:var(--xapp-messages-padding-left, 20px)}.message-list-container__chips{flex:0 0 auto;border-top:solid 1px #ccc;margin-top:auto}.message-list-container__chips--empty{flex-basis:0;border:none;overflow:hidden}.message-form .section{margin-bottom:16px}.message-form .label{display:block;margin-bottom:4px;color:var(--xapp-primary-color, #616161)}.message-form input,.message-form textarea{border:1px solid #ddd;border-radius:4px;outline-width:0;width:100%;font-size:14px;box-sizing:border-box}.message-form input{height:32px;padding:0 10px}.message-form textarea{padding:8px 10px;min-height:100px;resize:none;overflow-y:auto}.message-form__submit{width:100%;background-color:var(--xapp-primary-color, #616161);color:#fff}.message-form--shrink-enter{opacity:.01;position:relative;top:100px}.message-form--shrink-enter-active{position:relative;top:0;opacity:1;transition:opacity 500ms,top 500ms;transition-delay:500ms}.message-form--shrink-exit{opacity:.5;position:relative;top:0}.message-form--shrink-exit-active{top:-200px;opacity:.01;transition:top 500ms,opacity 500ms}.message-form--grow-enter{opacity:.5;position:relative;top:-200px}.message-form--grow-enter-active{position:relative;top:0;opacity:1;transition:opacity 500ms,top 500ms}.message-form--grow-exit{opacity:.5;position:relative;top:0;height:50px}.message-form--grow-exit-active{top:-100px;height:0;opacity:.01;transition:top 500ms,opacity 500ms,height 500ms}.message-form--sent .button-resend{width:100%;margin-top:16px;background-color:var(--xapp-primary-color, #616161);color:#fff}@keyframes typing-animation{0%{transform:translateY(0px)}28%{transform:translateY(-5px)}44%{transform:translateY(0px)}}.typing-indicator{height:20px;display:inline-flex;align-items:center}.typing-indicator-part:nth-child(1){animation-delay:200ms}.typing-indicator-part:nth-child(2){animation-delay:300ms}.typing-indicator-part:nth-child(3){animation-delay:400ms}.typing-indicator-part{display:inline-block;animation:typing-animation 1.5s infinite ease-in-out;border-radius:50%;width:7px;height:7px;margin:0 3px;background-color:#7a7a7a}.card-container{padding-top:16px;position:relative}.card-container__content{color:#555;border-radius:8px;border:1px solid #ddd;padding:24px 16px 16px 16px;font-size:14px}.card-container__title{text-align:center;color:var(--xapp-primary-color, #616161);margin-bottom:8px}.card-container__icon{width:32px;height:32px;position:relative;background-color:#fff;border:1px solid #e0e0e0;border-radius:50%;box-shadow:0 2px 4px 0 rgba(0,0,0,.1);margin:-16px auto;z-index:999}.card-container__icon svg{display:block;margin:auto;height:100%}@font-face{font-family:OpenSansSemibold;font-style:normal;font-weight:600;font-display:swap;src:local("Open Sans SemiBold"),local("OpenSans-SemiBold"),url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UNirkOUuhpKKSTjw.woff2) format("woff2")}@font-face{font-family:RobotoRegular;font-style:normal;font-weight:400;font-display:swap;src:local("Roboto"),local("Roboto-Regular"),url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2) format("woff2")}@font-face{font-family:RobotoMedium;font-style:oblique;font-weight:500;font-display:swap;src:local("Roboto Medium"),local("Roboto-Medium"),url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2) format("woff2")}.widget-container{background:#fff;display:flex;flex-flow:column nowrap;width:100%;height:100%;visibility:hidden;font-family:RobotoRegular,serif;box-shadow:0 5px 40px rgba(0,0,0,.16);overflow:hidden;border-radius:var(--xapp-widget-border-radius, 10px);border:var(--xapp-widget-border-width, 0px) solid var(--xapp-widget-border-color, var(--xapp-primary-color, #616161));box-sizing:border-box}.widget-container *,.widget-container *:before,.widget-container *:after{box-sizing:border-box}.widget-container--normal,.widget-container--static{position:fixed;z-index:var(--xapp-widget-z-index, 1000);right:var(--xapp-widget-margin-right, 10px);bottom:var(--xapp-widget-margin-bottom, 10px)}.widget-container--normal.visible,.widget-container--static.visible{width:min(
2
2
  var(--xapp-widget-width, 400px),
3
3
  100vw - var(--xapp-widget-margin-left, 10px) - var(--xapp-widget-margin-right, 10px)
4
4
  );height:min(
5
5
  var(--xapp-widget-height, 500px),
6
6
  100vh - var(--xapp-widget-margin-top, 10px) - var(--xapp-widget-margin-bottom, 10px)
7
- )}.widget-container--docked{width:100%;height:100%;border-radius:0}.widget-container:not(.visible){animation:widget-hide .5s backwards;width:64px;height:64px}.widget-container.visible{animation:widget-show .5s forwards}.message-svg path{fill:var(--xapp-primary-color, #616161)}.chat-msg{line-height:20px;font-size:14px;margin-left:48px;max-width:var(--xapp-messages-max-width, 240px)}.chat-msg--expand{max-width:calc(100% - 48px);width:calc(100% - 48px)}.chat-msg__fullwidth{max-width:100%;width:100%}.chat-msg--no-ava{margin-left:0}.chat-typing-progress .chat-msg{color:#30375b}.visitor .chat-text-container{padding-right:20px}.chat-media-container{border-radius:8px;border:1px solid #ddd;overflow:hidden}.chat-img{min-width:180px;min-height:120px;background-position:center;background-size:cover}.system-msg-container{text-align:center;margin-bottom:16px}.system-msg{font-size:14px;color:#bfbfbf}.chat-rating-card{padding-bottom:16px;text-align:center}.buttons-container{display:flex;flex-flow:row nowrap;align-items:center;justify-content:center;width:100%}.buttons-container .button{flex-grow:1}.buttons-container .button:not(:last-child){margin-right:8px}.buttons-container .button-card{flex-grow:0}.buttons-container .button-card:not(:last-child){margin-right:8px}@keyframes widget-show{0%{visibility:hidden;opacity:0}1%{visibility:visible;opacity:0;transform:translateY(50%)}100%{visibility:visible;opacity:1;transform:translateY(0)}}@keyframes widget-hide{0%{transform:translateY(0)}99%{opacity:0;transform:translateY(50%)}100%{visibility:hidden;opacity:0}}@keyframes widget-show-grow{0%{visibility:hidden;opacity:0}1%{visibility:visible;opacity:0;transform:scale(0.5)}100%{visibility:visible;opacity:1;transform:scale(1)}}@keyframes widget-hide-shrink{0%{visibility:visible;opacity:1;transform:scale(1)}99%{visibility:visible;opacity:0;transform:scale(0.5)}100%{visibility:hidden;opacity:0}}.spinner-container{z-index:var(--xapp-widget-z-index, 1000);position:absolute;width:100%;height:100%;display:flex;align-items:center;background:#fff;transition:visibility 500ms,opacity 500ms;visibility:hidden;opacity:0;top:0;left:0}.spinner-container.visible{visibility:visible;opacity:1}.spinner{width:40px;height:40px;margin:100px auto;background-color:var(--xapp-primary-color, #616161);border-radius:100%;-webkit-animation:sk-scaleout 1s infinite ease-in-out;animation:sk-scaleout 1s infinite ease-in-out}.chevron{width:100%;height:100%;background:unset;border:unset;padding:unset}@-webkit-keyframes sk-scaleout{0%{transform:scale(0)}100%{transform:scale(1);opacity:0}}@keyframes sk-scaleout{0%{transform:scale(0)}100%{transform:scale(1);opacity:0}}@media screen and (max-width: 640px){.chevron{height:44px;height:44px}}.restartModal{display:none;position:fixed;z-index:100;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#000;background-color:rgba(0,0,0,.4);-webkit-animation-name:fadeIn;-webkit-animation-duration:.4s;animation-name:fadeIn;animation-duration:.4s}.modalContent{border-radius:20px;box-shadow:rgba(100,100,111,.2) 0px 7px 29px 0px;position:fixed;bottom:-10px;z-index:200;padding:20px;background-color:#fff;width:100%;-webkit-animation-name:slideIn;-webkit-animation-duration:.4s;animation-name:slideIn;animation-duration:.4s}.modalBody h2{color:#027db6;text-align:center;font-weight:700}.modalBody p{color:rgba(98,98,98,.6666666667)}.modalActions{margin:25px 0;justify-content:center;display:flex;gap:1em}.modalActions button{padding:10px 20px;border-radius:10px;transition:all .5s;cursor:pointer}.modalActions button:hover{opacity:.7}.modalActions .cancelBtn{color:#027db6;border:solid 1px #027db6;background:rgba(0,0,0,0)}.modalActions .restartBtn{background:#027db6;color:#fff;border:none}@-webkit-keyframes slideIn{from{bottom:-300px;opacity:0}to{bottom:-10px;opacity:1}}@keyframes slideIn{from{bottom:-300px;opacity:0}to{bottom:-10px;opacity:1}}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.chat-footer{position:relative;background-color:var(--xapp-footer-background, var(--xapp-primary-color, #616161)) !important}.chat-footer__menu-icon{border-top:solid var(--xapp-footer-border-width, 0px) var(--xapp-footer-border-color, var(--xapp-primary-color, #616161));z-index:999;padding:6px 0;flex-shrink:0;display:flex;justify-content:center}.chat-footer__menu-icon+.chat-footer__input{margin-top:-6px}.chat-footer__input{margin-top:6px;margin-bottom:6px}.xappw-chat-footer__suggestions{position:absolute;bottom:100%;left:0;right:0;overflow:hidden;z-index:100}.background-footer .chat-footer{background-color:#616161 !important}.server-offline{position:absolute;top:0;right:0;left:0;bottom:0;z-index:5000;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center}.status-container{display:flex;flex-flow:row nowrap;justify-content:space-between;padding-left:10px;z-index:999;line-height:40px;height:40px;flex-shrink:0;color:#fff;position:relative;width:100%;background-color:var(--xapp-header-background, var(--xapp-primary-color, #616161)) !important;border-bottom:solid var(--xapp-header-border-width, 0px) var(--xapp-header-border-color, var(--xapp-primary-color, #616161));align-items:center}.status-container__avatar{width:30px;height:30px}.status-container__avatar .avatar:not(.avatar--empty){background-color:#a4a7b6}.status-text{display:inline-flex;flex-direction:column;position:absolute;line-height:100%}.status-text-positionLeft{left:48px}.status-text-positionCenter{left:50%;transform:translateX(-50%);align-items:center}.status-text-title{font-family:var(--xapp-header-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-header-font-weight, normal);font-size:var(--xapp-header-font-size, 16px);font-style:var(--xapp-header-font-style, normal);color:var(--xapp-header-text-color, rgba(255, 255, 255, 0.87))}.status-text-subtitle{margin-top:2px;font-family:var(--xapp-header-subtitle-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-header-subtitle-font-weight, normal);font-size:var(--xapp-header-subtitle-font-size, 10px);font-style:var(--xapp-header-subtitle-font-style, normal);color:var(--xapp-header-subtitle-text-color, rgba(255, 255, 255, 0.5))}.xa-chat-menu-container{z-index:100}.background-header .status-container{background-color:#616161 !important}@media screen and (max-width: 640px){.status-container{line-height:44px;height:44px}}.xappw-admin-input-container{flex-shrink:0;z-index:999;padding-left:20px;padding-right:20px;padding-bottom:0;padding-top:10px}.xappw-admin-input-container:not(.visible){display:none}.xappw-admin-input-container.drag-drop-zone{outline:3px dashed gray;outline-offset:-3px}.xappw-admin-input-form{display:flex;align-items:center;overflow:hidden;line-height:48px;position:relative}.xappw-admin-input-form__buttons{display:flex;align-items:center;right:10px;z-index:2;margin-right:10px}.xappw-admin-input-form__btn{width:56px}.xappw-admin-input{width:calc(100% - 60px);min-height:32px;padding:7px 10px;line-height:normal;display:inline-block;box-sizing:border-box;font-family:var(--xapp-input-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-font-weight, normal);font-size:var(--xapp-input-font-size, 14px);font-style:var(--xapp-input-font-style, normal);color:var(--xapp-input-text-color, #000);outline-width:0;border:var(--xapp-input-border-width, #fff) solid var(--xapp-input-border-color, #fff);border-radius:var(--xapp-input-border-radius, 20px);background:var(--xapp-input-background, #fff);margin:auto}.xappw-admin-input input:focus::placeholder{color:rgba(0,0,0,0)}.xappw-admin-input input::-webkit-input-placeholder{font-family:var(--xapp-input-placeholder-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-placeholder-font-weight, normal);font-size:var(--xapp-input-placeholder-font-size, 14px);font-style:var(--xapp-input-placeholder-font-style, normal);color:var(--xapp-input-placeholder-text-color, #e1e2e1)}.xappw-admin-input input:-moz-placeholder{font-family:var(--xapp-input-placeholder-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-placeholder-font-weight, normal);font-size:var(--xapp-input-placeholder-font-size, 14px);font-style:var(--xapp-input-placeholder-font-style, normal);color:var(--xapp-input-placeholder-text-color, #e1e2e1)}.xappw-admin-input input::-moz-placeholder{font-family:var(--xapp-input-placeholder-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-placeholder-font-weight, normal);font-size:var(--xapp-input-placeholder-font-size, 14px);font-style:var(--xapp-input-placeholder-font-style, normal);color:var(--xapp-input-placeholder-text-color, #e1e2e1)}.xappw-admin-input input:-ms-input-placeholder{font-family:var(--xapp-input-placeholder-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-placeholder-font-weight, normal);font-size:var(--xapp-input-placeholder-font-size, 14px);font-style:var(--xapp-input-placeholder-font-style, normal);color:var(--xapp-input-placeholder-text-color, #e1e2e1)}.xappw-admin-input input::placeholder{font-family:var(--xapp-input-placeholder-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-placeholder-font-weight, normal);font-size:var(--xapp-input-placeholder-font-size, 14px);font-style:var(--xapp-input-placeholder-font-style, normal);color:var(--xapp-input-placeholder-text-color, #e1e2e1)}.xappw-admin-input__input{border:none;outline:none;font-size:inherit;line-height:inherit}.xappw-admin-input{z-index:1}@media screen and (max-width: 640px){.xappw-admin-input-form{height:44px}}.chat-footer__branding{text-align:end;padding-right:20px;padding-bottom:12px;font-family:var(--xapp-footer-branding-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-footer-branding-font-weight, normal);font-size:var(--xapp-footer-branding-font-size, 14px);font-style:var(--xapp-footer-branding-font-style, normal);color:var(--xapp-footer-branding-text-color, rgba(255, 255, 255, 0.87))}.xappw-suggestions{display:flex;flex-direction:column;font-family:RobotoRegular,serif}.xappw-suggestions__answer{background-color:#d9d9d9;padding:8px 11px;border-radius:12px}.xappw-suggestions__groups{background-color:#f3f3f3;padding:8px 0}.xappw-suggestions__use{width:28px;padding:4px;color:inherit}.xappw-suggestions__use svg{display:block;margin:auto;height:100%}.xapp-search-icon-button{border:none;background:none;cursor:pointer;padding:0;display:flex;align-items:center}.xapp-search-icon-button svg{display:block;margin:auto;height:100%}.xapp-search-icon-button__content{display:flex;width:100%}.xapp-search-icon-button:focus-visible{outline:none;filter:invert(100%)}@media screen and (max-width: 640px){.xapp-search-icon-button{box-sizing:border-box;padding:12px;min-height:44px;min-width:44px}}.xappw-message-bubble{border-radius:10px;padding:10px;background:var(--xapp-bubble-background, #fff)}.xappw-rich-input__input{display:block !important;width:calc(100% - 50px) !important;border:none;outline:none !important;box-sizing:border-box !important;margin:0 !important;font-size:inherit !important;line-height:inherit;color:inherit !important;background-color:inherit !important}@media screen and (max-width: 640px){.xappw-rich-input__input{width:calc(100% - 90px)}}.xapp-search-rich-text{display:inline-block;max-width:100%;overflow:hidden;white-space:pre-wrap}.xappw-suggestions-group__items{display:flex;flex-direction:column;padding:2px 0}.xappw-suggestions-group__heading{margin:0 16px}.xappw-suggestions-group-heading{display:flex;align-items:center;font-size:12px;padding:2px 0;color:#061739}.xappw-suggestions-group-heading:after{content:"";border-top:solid 1px #d4d4d4;flex:1 1 auto;margin-left:8px}.xappw-suggestions-item{padding:0 0 0 24px;box-sizing:border-box;width:100%;white-space:nowrap;display:flex;align-items:center;overflow:hidden;font-size:15px;cursor:pointer;border-bottom:solid 1px rgba(0,0,0,0);color:#061739}.xappw-suggestions-item--current,.xappw-suggestions-item:hover{background-color:#3395d2;color:#fff;text-decoration:underline}@media(hover: hover){.xappw-suggestions-item--current .xappw-suggestions-item__actions,.xappw-suggestions-item:hover .xappw-suggestions-item__actions{visibility:visible;color:#fff}}.xappw-suggestions-item__texts{padding:3px 0;flex:1 1 auto;overflow:hidden}.xappw-suggestions-item__actions{flex:0 0 auto;display:flex;margin-left:8px}@media(hover: hover){.xappw-suggestions-item__actions{visibility:hidden}}.xappw-suggestions-list{display:flex;flex-direction:column}.xapp-search-rich-text-span{flex:0 1 auto;display:inline-block;max-width:100%}.xapp-search-rich-text-span:last-child{overflow:hidden;white-space:pre;text-overflow:ellipsis}.xapp-search-rich-text-bold-span{font-weight:bold}.xapp-search-rich-text-input-span{text-decoration:none;font-size:inherit;height:calc(1.5em - 2px);line-height:1em;width:8em;color:inherit}.xapp-search-rich-text-input-span--readonly{border:dashed 1px green;color:green;height:calc(1em - 2px)}.xapp-search-rich-text-normal-span{font-weight:normal}.drawer-bars{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:rgba(0,0,0,0);border:none;padding:6px 0;cursor:pointer}.drawer-bar{flex:0 0 5px;border-radius:5px;background-color:var(--xapp-menu-button-color, #fff);width:25px;margin:2.5px}.drawer-bar:first-child{margin-top:0}.drawer-bar:last-child{margin-bottom:0}@media screen and (max-width: 640px){.drawer-bars{height:44px;width:44px;line-height:44px}}.xappw-input-container{flex-shrink:0;z-index:999;padding:6px 20px}.xappw-input-container:not(.visible){display:none}.xappw-input-container.drag-drop-zone{outline:3px dashed gray;outline-offset:-3px}.xappw-input-form{display:flex;align-items:center;overflow:hidden;line-height:48px;position:relative;border-radius:var(--xapp-input-border-radius, 20px);background:var(--xapp-input-background, #fff)}.xappw-input-form__buttons{display:flex;align-items:center;position:absolute;right:10px;z-index:2}.xappw-input-form__btn{width:20px;height:16px}.xappw-input{min-height:32px;padding:7px 10px;line-height:normal;display:inline-block;box-sizing:border-box;font-family:var(--xapp-input-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-font-weight, normal);font-size:var(--xapp-input-font-size, 14px);font-style:var(--xapp-input-font-style, normal);color:var(--xapp-input-text-color, #000);outline-width:0;flex-grow:1;border:var(--xapp-input-border-width, #fff) solid var(--xapp-input-border-color, #fff);background:rgba(0,0,0,0)}.xappw-input input:focus::placeholder{color:rgba(0,0,0,0)}.xappw-input input::-webkit-input-placeholder{font-family:var(--xapp-input-placeholder-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-placeholder-font-weight, normal);font-size:var(--xapp-input-placeholder-font-size, 14px);font-style:var(--xapp-input-placeholder-font-style, normal);color:var(--xapp-input-placeholder-text-color, #e1e2e1)}.xappw-input input:-moz-placeholder{font-family:var(--xapp-input-placeholder-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-placeholder-font-weight, normal);font-size:var(--xapp-input-placeholder-font-size, 14px);font-style:var(--xapp-input-placeholder-font-style, normal);color:var(--xapp-input-placeholder-text-color, #e1e2e1)}.xappw-input input::-moz-placeholder{font-family:var(--xapp-input-placeholder-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-placeholder-font-weight, normal);font-size:var(--xapp-input-placeholder-font-size, 14px);font-style:var(--xapp-input-placeholder-font-style, normal);color:var(--xapp-input-placeholder-text-color, #e1e2e1)}.xappw-input input:-ms-input-placeholder{font-family:var(--xapp-input-placeholder-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-placeholder-font-weight, normal);font-size:var(--xapp-input-placeholder-font-size, 14px);font-style:var(--xapp-input-placeholder-font-style, normal);color:var(--xapp-input-placeholder-text-color, #e1e2e1)}.xappw-input input::placeholder{font-family:var(--xapp-input-placeholder-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-placeholder-font-weight, normal);font-size:var(--xapp-input-placeholder-font-size, 14px);font-style:var(--xapp-input-placeholder-font-style, normal);color:var(--xapp-input-placeholder-text-color, #e1e2e1)}.xappw-input{z-index:1}@media screen and (max-width: 640px){.xappw-input-form{height:44px}}.cancel-button{position:absolute;margin:0px;width:48px;top:0;right:0;height:100%;border:none;outline:none;display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:20px;color:var(--xapp-cancel-button-color, #a3a6b4);background-color:rgba(0,0,0,0);background-image:none;transition:none}.cancel-button:hover{transition:none}.cancel-button:after{content:"⨉" !important;opacity:inherit !important}.cancel-button:focus-visible{outline:none;filter:invert(100%)}.cancel-button:hover{background-color:rgba(0,0,0,0)}.minimize-button{position:absolute;margin:0px;width:48px;top:0;right:48px;height:100%;border:none;outline:none;display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:20px;color:var(--xapp-minimize-button-color, #a3a6b4);background-color:rgba(0,0,0,0);background-image:none;transition:none}.minimize-button:hover{transition:none}.minimize-button:after{content:"─" !important;opacity:inherit !important}.minimize-button.positionRight{right:0}.minimize-button:focus-visible{outline:none;filter:invert(100%)}.minimize-button:hover{background-color:rgba(0,0,0,0)}.refresh-button{position:absolute;margin:0px;width:48px;top:0;right:48px;height:100%;border:none;outline:none;display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:20px;color:var(--xapp-refresh-button-color, #a3a6b4);background-color:var(--xapp-header-background, var(--xapp-primary-color, #616161));background-image:none;transition:none}.refresh-button:hover{transition:none}.refresh-button:after{content:"⟳" !important;opacity:inherit !important}.refresh-button.positionLeft{right:96px}.refresh-button.positionRight{right:0}.refresh-button:focus-visible{outline:none;filter:invert(100%)}.xappw-send-button{color:var(--xapp-send-button-color, #505050);margin:0}.xappw-custom-send-button{display:inline-flex;cursor:pointer;user-select:none;width:var(--xapp-send-button-width, 20px);border:unset;background:unset;padding:unset}.xappw-custom-send-button>img{width:100%;height:auto}@media screen and (max-width: 640px){.xappw-send-button{box-sizing:border-box !important;padding:12px !important;min-height:44px;min-width:44px;margin:0}.xappw-custom-send-button{box-sizing:border-box !important;padding:12px !important;min-height:44px;min-width:44px;margin:0}}
7
+ )}.widget-container--docked{width:100%;height:100%;border-radius:0}.widget-container:not(.visible){animation:widget-hide .5s backwards;width:64px;height:64px}.widget-container.visible{animation:widget-show .5s forwards}.message-svg path{fill:var(--xapp-primary-color, #616161)}.chat-msg{line-height:20px;font-size:14px;margin-left:48px;max-width:var(--xapp-messages-max-width, 240px)}.chat-msg--expand{max-width:calc(100% - 48px);width:calc(100% - 48px)}.chat-msg__fullwidth{max-width:100%;width:100%}.chat-msg--no-ava{margin-left:0}.chat-typing-progress .chat-msg{color:#30375b}.visitor .chat-text-container{padding-right:20px}.chat-media-container{border-radius:8px;border:1px solid #ddd;overflow:hidden}.chat-img{min-width:180px;min-height:120px;background-position:center;background-size:cover}.ts-msg-container{text-align:center;margin-bottom:16px}.ts-msg{font-size:12px;color:#bfbfbf}.system-msg-container{text-align:center;margin-bottom:16px}.system-msg{font-size:14px;color:#bfbfbf}.chat-rating-card{padding-bottom:16px;text-align:center}.buttons-container{display:flex;flex-flow:row nowrap;align-items:center;justify-content:center;width:100%}.buttons-container .button{flex-grow:1}.buttons-container .button:not(:last-child){margin-right:8px}.buttons-container .button-card{flex-grow:0}.buttons-container .button-card:not(:last-child){margin-right:8px}@keyframes widget-show{0%{visibility:hidden;opacity:0}1%{visibility:visible;opacity:0;transform:translateY(50%)}100%{visibility:visible;opacity:1;transform:translateY(0)}}@keyframes widget-hide{0%{transform:translateY(0)}99%{opacity:0;transform:translateY(50%)}100%{visibility:hidden;opacity:0}}@keyframes widget-show-grow{0%{visibility:hidden;opacity:0}1%{visibility:visible;opacity:0;transform:scale(0.5)}100%{visibility:visible;opacity:1;transform:scale(1)}}@keyframes widget-hide-shrink{0%{visibility:visible;opacity:1;transform:scale(1)}99%{visibility:visible;opacity:0;transform:scale(0.5)}100%{visibility:hidden;opacity:0}}.spinner-container{z-index:var(--xapp-widget-z-index, 1000);position:absolute;width:100%;height:100%;display:flex;align-items:center;background:#fff;transition:visibility 500ms,opacity 500ms;visibility:hidden;opacity:0;top:0;left:0}.spinner-container.visible{visibility:visible;opacity:1}.spinner{width:40px;height:40px;margin:100px auto;background-color:var(--xapp-primary-color, #616161);border-radius:100%;-webkit-animation:sk-scaleout 1s infinite ease-in-out;animation:sk-scaleout 1s infinite ease-in-out}.chevron{width:100%;height:100%;background:unset;border:unset;padding:unset}@-webkit-keyframes sk-scaleout{0%{transform:scale(0)}100%{transform:scale(1);opacity:0}}@keyframes sk-scaleout{0%{transform:scale(0)}100%{transform:scale(1);opacity:0}}@media screen and (max-width: 640px){.chevron{height:44px;height:44px}}.restartModal{display:none;position:fixed;z-index:100;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#000;background-color:rgba(0,0,0,.4);-webkit-animation-name:fadeIn;-webkit-animation-duration:.4s;animation-name:fadeIn;animation-duration:.4s}.modalContent{border-radius:20px;box-shadow:rgba(100,100,111,.2) 0px 7px 29px 0px;position:fixed;bottom:-10px;z-index:200;padding:20px;background-color:#fff;width:100%;-webkit-animation-name:slideIn;-webkit-animation-duration:.4s;animation-name:slideIn;animation-duration:.4s}.modalBody h2{color:#027db6;text-align:center;font-weight:700}.modalBody p{color:rgba(98,98,98,.6666666667)}.modalActions{margin:25px 0;justify-content:center;display:flex;gap:1em}.modalActions button{padding:10px 20px;border-radius:10px;transition:all .5s;cursor:pointer}.modalActions button:hover{opacity:.7}.modalActions .cancelBtn{color:#027db6;border:solid 1px #027db6;background:rgba(0,0,0,0)}.modalActions .restartBtn{background:#027db6;color:#fff;border:none}@-webkit-keyframes slideIn{from{bottom:-300px;opacity:0}to{bottom:-10px;opacity:1}}@keyframes slideIn{from{bottom:-300px;opacity:0}to{bottom:-10px;opacity:1}}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.chat-footer{position:relative;background-color:var(--xapp-footer-background, var(--xapp-primary-color, #616161)) !important}.chat-footer__menu-icon{border-top:solid var(--xapp-footer-border-width, 0px) var(--xapp-footer-border-color, var(--xapp-primary-color, #616161));z-index:999;padding:6px 0;flex-shrink:0;display:flex;justify-content:center}.chat-footer__menu-icon+.chat-footer__input{margin-top:-6px}.chat-footer__input{margin-top:6px;margin-bottom:6px}.xappw-chat-footer__suggestions{position:absolute;bottom:100%;left:0;right:0;overflow:hidden;z-index:100}.background-footer .chat-footer{background-color:#616161 !important}.server-offline{position:absolute;top:0;right:0;left:0;bottom:0;z-index:5000;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center}.status-container{display:flex;flex-flow:row nowrap;justify-content:space-between;padding-left:10px;z-index:999;line-height:40px;height:40px;flex-shrink:0;color:#fff;position:relative;width:100%;background-color:var(--xapp-header-background, var(--xapp-primary-color, #616161)) !important;border-bottom:solid var(--xapp-header-border-width, 0px) var(--xapp-header-border-color, var(--xapp-primary-color, #616161));align-items:center}.status-container__avatar{width:30px;height:30px}.status-container__avatar .avatar:not(.avatar--empty){background-color:#a4a7b6}.status-text{display:inline-flex;flex-direction:column;position:absolute;line-height:100%}.status-text-positionLeft{left:48px}.status-text-positionCenter{left:50%;transform:translateX(-50%);align-items:center}.status-text-title{font-family:var(--xapp-header-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-header-font-weight, normal);font-size:var(--xapp-header-font-size, 16px);font-style:var(--xapp-header-font-style, normal);color:var(--xapp-header-text-color, rgba(255, 255, 255, 0.87))}.status-text-subtitle{margin-top:2px;font-family:var(--xapp-header-subtitle-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-header-subtitle-font-weight, normal);font-size:var(--xapp-header-subtitle-font-size, 10px);font-style:var(--xapp-header-subtitle-font-style, normal);color:var(--xapp-header-subtitle-text-color, rgba(255, 255, 255, 0.5))}.xa-chat-menu-container{z-index:100}.background-header .status-container{background-color:#616161 !important}@media screen and (max-width: 640px){.status-container{line-height:44px;height:44px}}.xappw-admin-input-container{flex-shrink:0;z-index:999;padding-left:20px;padding-right:20px;padding-bottom:0;padding-top:10px}.xappw-admin-input-container:not(.visible){display:none}.xappw-admin-input-container.drag-drop-zone{outline:3px dashed gray;outline-offset:-3px}.xappw-admin-input-form{display:flex;align-items:center;overflow:hidden;line-height:48px;position:relative}.xappw-admin-input-form__buttons{display:flex;align-items:center;right:10px;z-index:2;margin-right:10px}.xappw-admin-input-form__btn{width:56px}.xappw-admin-input{width:calc(100% - 60px);min-height:32px;padding:7px 10px;line-height:normal;display:inline-block;box-sizing:border-box;font-family:var(--xapp-input-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-font-weight, normal);font-size:var(--xapp-input-font-size, 14px);font-style:var(--xapp-input-font-style, normal);color:var(--xapp-input-text-color, #000);outline-width:0;border:var(--xapp-input-border-width, #fff) solid var(--xapp-input-border-color, #fff);border-radius:var(--xapp-input-border-radius, 20px);background:var(--xapp-input-background, #fff);margin:auto}.xappw-admin-input input:focus::placeholder{color:rgba(0,0,0,0)}.xappw-admin-input input::-webkit-input-placeholder{font-family:var(--xapp-input-placeholder-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-placeholder-font-weight, normal);font-size:var(--xapp-input-placeholder-font-size, 14px);font-style:var(--xapp-input-placeholder-font-style, normal);color:var(--xapp-input-placeholder-text-color, #e1e2e1)}.xappw-admin-input input:-moz-placeholder{font-family:var(--xapp-input-placeholder-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-placeholder-font-weight, normal);font-size:var(--xapp-input-placeholder-font-size, 14px);font-style:var(--xapp-input-placeholder-font-style, normal);color:var(--xapp-input-placeholder-text-color, #e1e2e1)}.xappw-admin-input input::-moz-placeholder{font-family:var(--xapp-input-placeholder-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-placeholder-font-weight, normal);font-size:var(--xapp-input-placeholder-font-size, 14px);font-style:var(--xapp-input-placeholder-font-style, normal);color:var(--xapp-input-placeholder-text-color, #e1e2e1)}.xappw-admin-input input:-ms-input-placeholder{font-family:var(--xapp-input-placeholder-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-placeholder-font-weight, normal);font-size:var(--xapp-input-placeholder-font-size, 14px);font-style:var(--xapp-input-placeholder-font-style, normal);color:var(--xapp-input-placeholder-text-color, #e1e2e1)}.xappw-admin-input input::placeholder{font-family:var(--xapp-input-placeholder-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-placeholder-font-weight, normal);font-size:var(--xapp-input-placeholder-font-size, 14px);font-style:var(--xapp-input-placeholder-font-style, normal);color:var(--xapp-input-placeholder-text-color, #e1e2e1)}.xappw-admin-input__input{border:none;outline:none;font-size:inherit;line-height:inherit}.xappw-admin-input{z-index:1}@media screen and (max-width: 640px){.xappw-admin-input-form{height:44px}}.chat-footer__branding{text-align:end;padding-right:20px;padding-bottom:12px;font-family:var(--xapp-footer-branding-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-footer-branding-font-weight, normal);font-size:var(--xapp-footer-branding-font-size, 14px);font-style:var(--xapp-footer-branding-font-style, normal);color:var(--xapp-footer-branding-text-color, rgba(255, 255, 255, 0.87))}.xappw-rich-input__input{display:block !important;width:calc(100% - 50px) !important;border:none;outline:none !important;box-sizing:border-box !important;margin:0 !important;font-size:inherit !important;line-height:inherit;color:inherit !important;background-color:inherit !important}@media screen and (max-width: 640px){.xappw-rich-input__input{width:calc(100% - 90px)}}.xappw-message-bubble{border-radius:10px;padding:10px;background:var(--xapp-bubble-background, #fff)}.xapp-search-icon-button{border:none;background:none;cursor:pointer;padding:0;display:flex;align-items:center}.xapp-search-icon-button svg{display:block;margin:auto;height:100%}.xapp-search-icon-button__content{display:flex;width:100%}.xapp-search-icon-button:focus-visible{outline:none;filter:invert(100%)}@media screen and (max-width: 640px){.xapp-search-icon-button{box-sizing:border-box;padding:12px;min-height:44px;min-width:44px}}.xapp-search-rich-text{display:inline-block;max-width:100%;overflow:hidden;white-space:pre-wrap}.xappw-suggestions-list{display:flex;flex-direction:column}.xappw-suggestions-group__items{display:flex;flex-direction:column;padding:2px 0}.xappw-suggestions-group__heading{margin:0 16px}.xappw-suggestions-item{padding:0 0 0 24px;box-sizing:border-box;width:100%;white-space:nowrap;display:flex;align-items:center;overflow:hidden;font-size:15px;cursor:pointer;border-bottom:solid 1px rgba(0,0,0,0);color:#061739}.xappw-suggestions-item--current,.xappw-suggestions-item:hover{background-color:#3395d2;color:#fff;text-decoration:underline}@media(hover: hover){.xappw-suggestions-item--current .xappw-suggestions-item__actions,.xappw-suggestions-item:hover .xappw-suggestions-item__actions{visibility:visible;color:#fff}}.xappw-suggestions-item__texts{padding:3px 0;flex:1 1 auto;overflow:hidden}.xappw-suggestions-item__actions{flex:0 0 auto;display:flex;margin-left:8px}@media(hover: hover){.xappw-suggestions-item__actions{visibility:hidden}}.xappw-suggestions-group-heading{display:flex;align-items:center;font-size:12px;padding:2px 0;color:#061739}.xappw-suggestions-group-heading:after{content:"";border-top:solid 1px #d4d4d4;flex:1 1 auto;margin-left:8px}.xapp-search-rich-text-span{flex:0 1 auto;display:inline-block;max-width:100%}.xapp-search-rich-text-span:last-child{overflow:hidden;white-space:pre;text-overflow:ellipsis}.xapp-search-rich-text-normal-span{font-weight:normal}.xapp-search-rich-text-input-span{text-decoration:none;font-size:inherit;height:calc(1.5em - 2px);line-height:1em;width:8em;color:inherit}.xapp-search-rich-text-input-span--readonly{border:dashed 1px green;color:green;height:calc(1em - 2px)}.xapp-search-rich-text-bold-span{font-weight:bold}.xappw-suggestions{display:flex;flex-direction:column;font-family:RobotoRegular,serif}.xappw-suggestions__answer{background-color:#d9d9d9;padding:8px 11px;border-radius:12px}.xappw-suggestions__groups{background-color:#f3f3f3;padding:8px 0}.xappw-suggestions__use{width:28px;padding:4px;color:inherit}.xappw-suggestions__use svg{display:block;margin:auto;height:100%}.drawer-bars{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:rgba(0,0,0,0);border:none;padding:6px 0;cursor:pointer}.drawer-bar{flex:0 0 5px;border-radius:5px;background-color:var(--xapp-menu-button-color, #fff);width:25px;margin:2.5px}.drawer-bar:first-child{margin-top:0}.drawer-bar:last-child{margin-bottom:0}@media screen and (max-width: 640px){.drawer-bars{height:44px;width:44px;line-height:44px}}.xappw-input-container{flex-shrink:0;z-index:999;padding:6px 20px}.xappw-input-container:not(.visible){display:none}.xappw-input-container.drag-drop-zone{outline:3px dashed gray;outline-offset:-3px}.xappw-input-form{display:flex;align-items:center;overflow:hidden;line-height:48px;position:relative;border-radius:var(--xapp-input-border-radius, 20px);background:var(--xapp-input-background, #fff)}.xappw-input-form__buttons{display:flex;align-items:center;position:absolute;right:10px;z-index:2}.xappw-input-form__btn{width:20px;height:16px}.xappw-input{min-height:32px;padding:7px 10px;line-height:normal;display:inline-block;box-sizing:border-box;font-family:var(--xapp-input-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-font-weight, normal);font-size:var(--xapp-input-font-size, 14px);font-style:var(--xapp-input-font-style, normal);color:var(--xapp-input-text-color, #000);outline-width:0;flex-grow:1;border:var(--xapp-input-border-width, #fff) solid var(--xapp-input-border-color, #fff);background:rgba(0,0,0,0)}.xappw-input input:focus::placeholder{color:rgba(0,0,0,0)}.xappw-input input::-webkit-input-placeholder{font-family:var(--xapp-input-placeholder-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-placeholder-font-weight, normal);font-size:var(--xapp-input-placeholder-font-size, 14px);font-style:var(--xapp-input-placeholder-font-style, normal);color:var(--xapp-input-placeholder-text-color, #e1e2e1)}.xappw-input input:-moz-placeholder{font-family:var(--xapp-input-placeholder-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-placeholder-font-weight, normal);font-size:var(--xapp-input-placeholder-font-size, 14px);font-style:var(--xapp-input-placeholder-font-style, normal);color:var(--xapp-input-placeholder-text-color, #e1e2e1)}.xappw-input input::-moz-placeholder{font-family:var(--xapp-input-placeholder-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-placeholder-font-weight, normal);font-size:var(--xapp-input-placeholder-font-size, 14px);font-style:var(--xapp-input-placeholder-font-style, normal);color:var(--xapp-input-placeholder-text-color, #e1e2e1)}.xappw-input input:-ms-input-placeholder{font-family:var(--xapp-input-placeholder-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-placeholder-font-weight, normal);font-size:var(--xapp-input-placeholder-font-size, 14px);font-style:var(--xapp-input-placeholder-font-style, normal);color:var(--xapp-input-placeholder-text-color, #e1e2e1)}.xappw-input input::placeholder{font-family:var(--xapp-input-placeholder-font-family, "RobotoRegular", "serif");font-weight:var(--xapp-input-placeholder-font-weight, normal);font-size:var(--xapp-input-placeholder-font-size, 14px);font-style:var(--xapp-input-placeholder-font-style, normal);color:var(--xapp-input-placeholder-text-color, #e1e2e1)}.xappw-input{z-index:1}@media screen and (max-width: 640px){.xappw-input-form{height:44px}}.cancel-button{position:absolute;margin:0px;width:48px;top:0;right:0;height:100%;border:none;outline:none;display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:20px;color:var(--xapp-cancel-button-color, #a3a6b4);background-color:rgba(0,0,0,0);background-image:none;transition:none}.cancel-button:hover{transition:none}.cancel-button:after{content:"⨉" !important;opacity:inherit !important}.cancel-button:focus-visible{outline:none;filter:invert(100%)}.cancel-button:hover{background-color:rgba(0,0,0,0)}.minimize-button{position:absolute;margin:0px;width:48px;top:0;right:48px;height:100%;border:none;outline:none;display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:20px;color:var(--xapp-minimize-button-color, #a3a6b4);background-color:rgba(0,0,0,0);background-image:none;transition:none}.minimize-button:hover{transition:none}.minimize-button:after{content:"─" !important;opacity:inherit !important}.minimize-button.positionRight{right:0}.minimize-button:focus-visible{outline:none;filter:invert(100%)}.minimize-button:hover{background-color:rgba(0,0,0,0)}.refresh-button{position:absolute;margin:0px;width:48px;top:0;right:48px;height:100%;border:none;outline:none;display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:20px;color:var(--xapp-refresh-button-color, #a3a6b4);background-color:var(--xapp-header-background, var(--xapp-primary-color, #616161));background-image:none;transition:none}.refresh-button:hover{transition:none}.refresh-button:after{content:"⟳" !important;opacity:inherit !important}.refresh-button.positionLeft{right:96px}.refresh-button.positionRight{right:0}.refresh-button:focus-visible{outline:none;filter:invert(100%)}.xappw-send-button{color:var(--xapp-send-button-color, #505050);margin:0}.xappw-custom-send-button{display:inline-flex;cursor:pointer;user-select:none;width:var(--xapp-send-button-width, 20px);border:unset;background:unset;padding:unset}.xappw-custom-send-button>img{width:100%;height:auto}@media screen and (max-width: 640px){.xappw-send-button{box-sizing:border-box !important;padding:12px !important;min-height:44px;min-width:44px;margin:0}.xappw-custom-send-button{box-sizing:border-box !important;padding:12px !important;min-height:44px;min-width:44px;margin:0}}
package/dist/index.es.js CHANGED
@@ -1544,37 +1544,65 @@ var logOnce = function (key) {
1544
1544
  }
1545
1545
  };
1546
1546
 
1547
- function getVisitorSvg() {
1548
- return (React$1.createElement("svg", { width: "16", height: "19", viewBox: "0 0 16 19", style: { margin: "0 auto", display: "block" } },
1549
- React$1.createElement("path", { d: "M11.5 5c0-1.933-1.567-3.5-3.5-3.5S4.5 3.067 4.5 5 6.067 8.5 8 8.5s3.5-1.567 3.5-3.5zM3 5c0-2.76 2.24-5 5-5s5 2.24 5 5-2.24 5-5 5-5-2.24-5-5zM1.955 17.294c.21-.642.504-1.285.898-1.88C3.963 13.74 5.615 12.75 8 12.75c2.385 0 4.038.99 5.147 2.664.394.595.69 1.238.898 1.88.124.382.19.672.214.822.063.41.447.69.856.625.41-.063.69-.447.625-.856-.034-.225-.118-.59-.27-1.053-.247-.763-.598-1.527-1.073-2.244C13.024 12.51 10.917 11.25 8 11.25c-2.916 0-5.024 1.26-6.397 3.336-.475.717-.826 1.48-1.074 2.245-.152.463-.236.83-.27 1.054-.065.41.215.793.624.857.41.065.793-.215.857-.624.025-.15.09-.44.215-.822z", fill: "#FFF", fillRule: "evenodd" })));
1550
- }
1551
1547
  var Avatar = function (props) {
1552
1548
  var _a, _b;
1553
1549
  var style = {};
1554
1550
  var child;
1555
1551
  var entity = props.entity;
1552
+ var chatConfig = useContext(ChatConfigContext);
1556
1553
  var avatarPath = entity === null || entity === void 0 ? void 0 : entity.avatarPath;
1554
+ if (!avatarPath) {
1555
+ var avatarImage = GenerateAvatar({
1556
+ initials: entity.displayName ? entity.displayName.slice(0, 2) : "?",
1557
+ backgroundColor: (_b = (_a = chatConfig === null || chatConfig === void 0 ? void 0 : chatConfig.env) === null || _a === void 0 ? void 0 : _a.theme) === null || _b === void 0 ? void 0 : _b.primaryColor,
1558
+ size: 36,
1559
+ });
1560
+ avatarPath = avatarImage.src;
1561
+ }
1557
1562
  var agentAva = entity && isAgent(entity.nick);
1558
- var ctx = useContext(ChatConfigContext);
1559
1563
  if (agentAva) {
1560
- if (avatarPath) {
1561
- // absolute or relative url (chat server may send relative, if it hosts the file)
1562
- if (avatarPath.startsWith("http")) {
1563
- style.backgroundImage = "url('".concat(avatarPath, "')");
1564
- }
1565
- else if (ctx === null || ctx === void 0 ? void 0 : ctx.assetUrl) {
1566
- style.backgroundImage = "url('".concat(ctx === null || ctx === void 0 ? void 0 : ctx.assetUrl, "/").concat(avatarPath, "')");
1567
- }
1568
- style.backgroundColor = "none";
1569
- }
1570
- (_a = style.backgroundImage) !== null && _a !== void 0 ? _a : (style.backgroundImage = "url('".concat((_b = ctx === null || ctx === void 0 ? void 0 : ctx.env) === null || _b === void 0 ? void 0 : _b.avatarUrl, "')"));
1564
+ style.backgroundImage = "url('".concat(avatarPath, "')");
1565
+ style.backgroundColor = "none";
1571
1566
  }
1572
1567
  else {
1573
1568
  child = getVisitorSvg();
1574
1569
  }
1575
1570
  var hasImage = !!style.backgroundImage || !!child;
1576
1571
  return (React$1.createElement("div", { className: "avatar ".concat(agentAva ? "avatar--agent" : "avatar--visitor", " ").concat(!hasImage ? "avatar--empty" : ""), style: style, title: entity ? entity.display_name : "Agent" }, child));
1577
- };
1572
+ };
1573
+ function getVisitorSvg() {
1574
+ return (React$1.createElement("svg", { width: "16", height: "19", viewBox: "0 0 16 19", style: { margin: "0 auto", display: "block" } },
1575
+ React$1.createElement("path", { d: "M11.5 5c0-1.933-1.567-3.5-3.5-3.5S4.5 3.067 4.5 5 6.067 8.5 8 8.5s3.5-1.567 3.5-3.5zM3 5c0-2.76 2.24-5 5-5s5 2.24 5 5-2.24 5-5 5-5-2.24-5-5zM1.955 17.294c.21-.642.504-1.285.898-1.88C3.963 13.74 5.615 12.75 8 12.75c2.385 0 4.038.99 5.147 2.664.394.595.69 1.238.898 1.88.124.382.19.672.214.822.063.41.447.69.856.625.41-.063.69-.447.625-.856-.034-.225-.118-.59-.27-1.053-.247-.763-.598-1.527-1.073-2.244C13.024 12.51 10.917 11.25 8 11.25c-2.916 0-5.024 1.26-6.397 3.336-.475.717-.826 1.48-1.074 2.245-.152.463-.236.83-.27 1.054-.065.41.215.793.624.857.41.065.793-.215.857-.624.025-.15.09-.44.215-.822z", fill: "#FFF", fillRule: "evenodd" })));
1576
+ }
1577
+ function GenerateAvatar(props) {
1578
+ var initials = (props === null || props === void 0 ? void 0 : props.initials) || "?";
1579
+ var size = (props === null || props === void 0 ? void 0 : props.size) || 40;
1580
+ var backgroundColor = (props === null || props === void 0 ? void 0 : props.backgroundColor) || "#007bff";
1581
+ var textColor = (props === null || props === void 0 ? void 0 : props.textColor) || "#ffffff";
1582
+ var image = React$1.useMemo(function () {
1583
+ return generateImage(initials, size, backgroundColor, textColor);
1584
+ }, [initials, size, backgroundColor, textColor]);
1585
+ return image;
1586
+ }
1587
+ function generateImage(initials, size, backgroundColor, textColor) {
1588
+ var canvas = document.createElement("canvas");
1589
+ canvas.width = size;
1590
+ canvas.height = size;
1591
+ var context = canvas.getContext("2d");
1592
+ // Draw background
1593
+ context.fillStyle = backgroundColor;
1594
+ context.fillRect(0, 0, size, size);
1595
+ // Draw text
1596
+ context.fillStyle = textColor;
1597
+ context.font = "".concat(size / 2, "px Arial");
1598
+ context.textAlign = "center";
1599
+ context.textBaseline = "middle";
1600
+ context.fillText(initials, size / 2, size / 2);
1601
+ // Create image
1602
+ var image = new Image();
1603
+ image.src = canvas.toDataURL();
1604
+ return image;
1605
+ }
1578
1606
 
1579
1607
  function isChatServerActionLink(arg) {
1580
1608
  return arg.hasOwnProperty("label");
@@ -2009,7 +2037,7 @@ function writeMessage(msg, user) {
2009
2037
  type: "write_msg",
2010
2038
  user: user,
2011
2039
  msg: msg,
2012
- timestamp: +Date()
2040
+ timestamp: +new Date()
2013
2041
  }
2014
2042
  };
2015
2043
  }
@@ -2042,7 +2070,7 @@ function receiveToken(token) {
2042
2070
  type: "receiveToken",
2043
2071
  detail: {
2044
2072
  token: token,
2045
- timestamp: +Date(),
2073
+ timestamp: +new Date(),
2046
2074
  type: "receiveToken",
2047
2075
  user: undefined
2048
2076
  }
@@ -2083,7 +2111,7 @@ function sendFile(file) {
2083
2111
  nick: "",
2084
2112
  },
2085
2113
  attributes: { currentUrl: window.location.href },
2086
- timestamp: +Date()
2114
+ timestamp: +new Date()
2087
2115
  }
2088
2116
  });
2089
2117
  }; };
@@ -3785,7 +3813,7 @@ var StentorRouterChat = /** @class */ (function () {
3785
3813
  this.dispatch = dispatch;
3786
3814
  this.setAccountStatus("offline");
3787
3815
  // Register "handlers" for the incoming events
3788
- this.handlers["connection update"] = function (data, _sender) {
3816
+ this.handlers["connection update"] = function (data, _sender, _ts) {
3789
3817
  log("Connection update received. Session created: ".concat(data.sessionCreated, " Error: ").concat(data.errorMessage || ""));
3790
3818
  if (data.sessionCreated) {
3791
3819
  _this.sessionCreated = true;
@@ -3796,21 +3824,21 @@ var StentorRouterChat = /** @class */ (function () {
3796
3824
  _this.dispatch(setConnectionStatus("offline"));
3797
3825
  }
3798
3826
  };
3799
- this.handlers["account status"] = function (_data, _sender) {
3827
+ this.handlers["account status"] = function (_data, _sender, ts) {
3800
3828
  dispatch({
3801
3829
  type: "account_status",
3802
3830
  detail: {
3803
3831
  status: "online",
3804
- timestamp: +new Date(),
3832
+ timestamp: ts || new Date().getTime(),
3805
3833
  },
3806
3834
  });
3807
3835
  };
3808
- this.handlers["failure"] = function (data, sender) {
3836
+ this.handlers["failure"] = function (data, sender, _ts) {
3809
3837
  err("Router says something failed: type: ".concat(data.type, " tries: ").concat(data.tries, " error: ").concat(data.error));
3810
3838
  var _a = _this.configurableMessages[data.tries], retry = _a.retry, delay = _a.delay, text = _a.text;
3811
3839
  _this.sendFailureMessage(retry, data.delay || delay, text, sender);
3812
3840
  };
3813
- this.handlers["new message"] = function (data, sender) {
3841
+ this.handlers["new message"] = function (data, sender, ts) {
3814
3842
  // Because the router's internal message format is Stentor channel compatible.
3815
3843
  // So the data is either a stentor Request (from widget) or a stentor Response (from bot)
3816
3844
  var _a;
@@ -3836,11 +3864,11 @@ var StentorRouterChat = /** @class */ (function () {
3836
3864
  nick: senderToNick(sender),
3837
3865
  },
3838
3866
  msg: message.msg,
3839
- timestamp: +new Date(),
3867
+ timestamp: ts || new Date().getTime(),
3840
3868
  },
3841
3869
  });
3842
3870
  };
3843
- this.handlers["user joined"] = function (_data, sender) {
3871
+ this.handlers["user joined"] = function (_data, sender, ts) {
3844
3872
  _this.dispatch({
3845
3873
  type: "chat",
3846
3874
  detail: {
@@ -3850,11 +3878,11 @@ var StentorRouterChat = /** @class */ (function () {
3850
3878
  nick: senderToNick(sender),
3851
3879
  avatarPath: sender.avatarPath,
3852
3880
  },
3853
- timestamp: +new Date(),
3881
+ timestamp: ts || new Date().getTime(),
3854
3882
  },
3855
3883
  });
3856
3884
  };
3857
- this.handlers["user left"] = function (_data, sender) {
3885
+ this.handlers["user left"] = function (_data, sender, ts) {
3858
3886
  _this.dispatch({
3859
3887
  type: "chat",
3860
3888
  detail: {
@@ -3863,11 +3891,11 @@ var StentorRouterChat = /** @class */ (function () {
3863
3891
  displayName: sender.displayName,
3864
3892
  nick: senderToNick(sender),
3865
3893
  },
3866
- timestamp: +new Date(),
3894
+ timestamp: ts || new Date().getTime(),
3867
3895
  },
3868
3896
  });
3869
3897
  };
3870
- this.handlers["typing"] = function (_data, sender) {
3898
+ this.handlers["typing"] = function (_data, sender, ts) {
3871
3899
  _this.dispatch({
3872
3900
  type: "chat",
3873
3901
  detail: {
@@ -3876,11 +3904,11 @@ var StentorRouterChat = /** @class */ (function () {
3876
3904
  nick: senderToNick(sender),
3877
3905
  },
3878
3906
  typing: true,
3879
- timestamp: +new Date(),
3907
+ timestamp: ts || new Date().getTime(),
3880
3908
  },
3881
3909
  });
3882
3910
  };
3883
- this.handlers["stop typing"] = function (_data, sender) {
3911
+ this.handlers["stop typing"] = function (_data, sender, ts) {
3884
3912
  _this.dispatch({
3885
3913
  type: "chat",
3886
3914
  detail: {
@@ -3889,7 +3917,7 @@ var StentorRouterChat = /** @class */ (function () {
3889
3917
  nick: senderToNick(sender),
3890
3918
  },
3891
3919
  typing: false,
3892
- timestamp: +new Date(),
3920
+ timestamp: ts || new Date().getTime(),
3893
3921
  },
3894
3922
  });
3895
3923
  };
@@ -3954,7 +3982,7 @@ var StentorRouterChat = /** @class */ (function () {
3954
3982
  var message = JSON.parse(me.data);
3955
3983
  var handler = _this.handlers[message.event];
3956
3984
  if (handler) {
3957
- _this.handlers[message.event](message.data, message.sender);
3985
+ _this.handlers[message.event](message.data, message.sender, message.timeMs);
3958
3986
  }
3959
3987
  else {
3960
3988
  log("Unknown router message event: ".concat(message.event));
@@ -7751,6 +7779,7 @@ var StentorServerChat = /** @class */ (function () {
7751
7779
  return StentorServerChat;
7752
7780
  }());
7753
7781
 
7782
+ // import { useWhatChanged } from '@simbathesailor/use-what-changed';
7754
7783
  function createChatServerCore(config, options) {
7755
7784
  switch (config.type) {
7756
7785
  case "direct":
@@ -7779,6 +7808,9 @@ var ChatServerContext = createContext(null);
7779
7808
  function useChatServer(config, options) {
7780
7809
  var _a = useState(), server = _a[0], setServer = _a[1];
7781
7810
  var dispatch = useChatDispatch();
7811
+ var deps = [options, config, dispatch];
7812
+ // Log what caused the "effect"
7813
+ // useWhatChanged(deps, "options, config, dispatch");
7782
7814
  useEffect(function () {
7783
7815
  var newServer = createChatServer(config, options);
7784
7816
  newServer.init(dispatch);
@@ -7786,7 +7818,7 @@ function useChatServer(config, options) {
7786
7818
  return function () {
7787
7819
  newServer.dispose();
7788
7820
  };
7789
- }, [options, config, dispatch]);
7821
+ }, deps);
7790
7822
  return server;
7791
7823
  }
7792
7824
 
@@ -8533,30 +8565,42 @@ var ChatMessage = function (props) {
8533
8565
  /**
8534
8566
  * value must be like "60m", "2h" etc.
8535
8567
  */
8536
- function convertToSeconds(value) {
8537
- var unit = value === null || value === void 0 ? void 0 : value.slice(-1);
8538
- var number = parseFloat(value === null || value === void 0 ? void 0 : value.slice(0, -1));
8568
+ function convertToSeconds(s) {
8569
+ if (!s) {
8570
+ err("Empty time string");
8571
+ return 0;
8572
+ }
8573
+ var groups = s.match(/(\d+)([dhms]?)/);
8574
+ if (!groups) {
8575
+ err("Invalid time string: ".concat(s));
8576
+ return 0;
8577
+ }
8578
+ var number = parseInt(groups[1]);
8579
+ var unit = groups[2];
8539
8580
  switch (unit) {
8540
- case "d": {
8581
+ case "d":
8541
8582
  return number * 24 * 60 * 60;
8542
- }
8543
- case "h": {
8583
+ case "h":
8544
8584
  return number * 60 * 60;
8545
- }
8546
- case "m": {
8585
+ case "m":
8547
8586
  return number * 60;
8548
- }
8549
- case "s": {
8587
+ case "s":
8550
8588
  return number;
8551
- }
8552
- default: {
8589
+ default:
8590
+ // seconds (no unit)
8553
8591
  return number;
8554
- }
8555
8592
  }
8556
8593
  }
8557
8594
 
8558
- function checkSessionExpiration(duration, lastMessageTimestamp, lastTimestamp) {
8559
- return lastTimestamp - lastMessageTimestamp > convertToSeconds(duration);
8595
+ function checkSessionExpiration(duration, lastMessageTimestamp, _lastTimestamp) {
8596
+ var durationMs = convertToSeconds(duration) * 1000;
8597
+ // never if no session duration in config
8598
+ if (!duration) {
8599
+ return false;
8600
+ }
8601
+ // TODO: Why? Let's use the time passed since the last message timestamp
8602
+ // return lastTimestamp - lastMessageTimestamp > durationMs;
8603
+ return +new Date() - lastMessageTimestamp > durationMs;
8560
8604
  }
8561
8605
 
8562
8606
  function useExternalScript(url) {
@@ -31475,7 +31519,14 @@ var MessageList = function (props) {
31475
31519
  *
31476
31520
  */
31477
31521
  function renderAll() {
31478
- return props.messages.map(function (message /*, index: number*/) {
31522
+ var lastMsgIndex = -1;
31523
+ for (var i = props.messages.length - 1; i > 0; i--) {
31524
+ if (props.messages[i].type === "chat.msg") {
31525
+ lastMsgIndex = i;
31526
+ break;
31527
+ }
31528
+ }
31529
+ return props.messages.map(function (message, index) {
31479
31530
  // const next = props.messages[index + 1];
31480
31531
  // let sibling = false;
31481
31532
  // const currentNick = message.nick;
@@ -31484,7 +31535,37 @@ var MessageList = function (props) {
31484
31535
  // if (next && next.type === message.type && currentNick && currentNick === prevNick) {
31485
31536
  // sibling = true;
31486
31537
  // }
31487
- return renderByType(message, false);
31538
+ // Message types that will show time
31539
+ var tsTypes = [
31540
+ "chat.file",
31541
+ "chat.msg",
31542
+ // "chat.failureMsg",
31543
+ "chat.memberjoin",
31544
+ "chat.memberleave",
31545
+ "chat.rating",
31546
+ // "chat.typing",
31547
+ "chat.request.rating",
31548
+ "chat.offline",
31549
+ "chat.prechat"
31550
+ ];
31551
+ // show first and las TS and after at least 5 minutes gap
31552
+ var showTs = false;
31553
+ if (tsTypes.includes(message.type)) {
31554
+ if (index === 0 || index === props.messages.length - 1 || index === lastMsgIndex) {
31555
+ showTs = true;
31556
+ }
31557
+ else {
31558
+ var previous = props.messages[index - 1];
31559
+ if (message.timestamp && previous.timestamp) {
31560
+ showTs = (message.timestamp - previous.timestamp) > 300 * 1000; // 5 minutes
31561
+ }
31562
+ }
31563
+ }
31564
+ var ts = showTs ? new Date(message.timestamp).toLocaleString() : undefined;
31565
+ return (React$1.createElement(React$1.Fragment, null,
31566
+ showTs && (React$1.createElement("div", { className: "ts-msg-container" },
31567
+ React$1.createElement("span", { className: "ts-msg" }, ts))),
31568
+ renderByType(message, false)));
31488
31569
  });
31489
31570
  }
31490
31571
  var agents = props.agents, queuePosition = props.queuePosition;
@@ -31927,7 +32008,7 @@ var ChatWidget = function (props) {
31927
32008
  set$1("visible", newVisible);
31928
32009
  }, [staticMode]);
31929
32010
  useEffect(function () {
31930
- var _a;
32011
+ var _a, _b;
31931
32012
  document.addEventListener("keydown", function (event) {
31932
32013
  var body = document.getElementsByTagName("body")[0];
31933
32014
  body.tabIndex = -1;
@@ -31935,7 +32016,8 @@ var ChatWidget = function (props) {
31935
32016
  body.focus();
31936
32017
  }
31937
32018
  });
31938
- if (checkSessionExpiration(chatState === null || chatState === void 0 ? void 0 : chatState.sessionExpiration, (_a = chatState === null || chatState === void 0 ? void 0 : chatState.chats[chatState.chats.length - 1]) === null || _a === void 0 ? void 0 : _a.timestamp, chatState === null || chatState === void 0 ? void 0 : chatState.lastTimestamp)) {
32019
+ if (checkSessionExpiration((chatState === null || chatState === void 0 ? void 0 : chatState.sessionExpiration) || ((_a = props.config) === null || _a === void 0 ? void 0 : _a.sessionExpiration), (_b = chatState === null || chatState === void 0 ? void 0 : chatState.chats[chatState.chats.length - 1]) === null || _b === void 0 ? void 0 : _b.timestamp, chatState === null || chatState === void 0 ? void 0 : chatState.lastTimestamp)) {
32020
+ set$1("sessionId", ""); // force new session
31939
32021
  innerDispatch(reset());
31940
32022
  }
31941
32023
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -32054,10 +32136,13 @@ var ChatWidget = function (props) {
32054
32136
  }
32055
32137
  }, [connectionStatus, onConnectionStatusChange]);
32056
32138
  useExternalScript((_m = props.config) === null || _m === void 0 ? void 0 : _m.middlewareUrl);
32139
+ // This is a pseudo agent. It represent's the widget (shown in the header avatar for instance)
32140
+ var widgetAgent = ((_o = chatState.agents["agent:robot"]) === null || _o === void 0 ? void 0 : _o.user) || (config === null || config === void 0 ? void 0 : config.agent)
32141
+ || { nick: "agent:robot", avatarPath: config.avatarUrl, display_name: "Agent" };
32057
32142
  return (React$1.createElement(React$1.Fragment, null,
32058
32143
  React$1.createElement("div", { className: "widget-container ".concat(modeClass, " ").concat(getVisibilityClass()) },
32059
32144
  React$1.createElement(WidgetStylesheet, { theme: config === null || config === void 0 ? void 0 : config.theme }),
32060
- React$1.createElement(ChatHeader, { accountStatus: chatState.accountStatus, refreshOnClick: openModal, minimizeOnClick: minimizeOnClick, cancelOnClick: cancelOnClick, agent: ((_o = chatState.agents["agent:robot"]) === null || _o === void 0 ? void 0 : _o.user) || (config === null || config === void 0 ? void 0 : config.agent), canRefresh: canRefresh, canMinimize: canMinimize, canCancel: canCancel, config: config === null || config === void 0 ? void 0 : config.header, menuConfig: config.menu, onSubmit: handleOnSubmit }),
32145
+ React$1.createElement(ChatHeader, { accountStatus: chatState.accountStatus, refreshOnClick: openModal, minimizeOnClick: minimizeOnClick, cancelOnClick: cancelOnClick, agent: widgetAgent, canRefresh: canRefresh, canMinimize: canMinimize, canCancel: canCancel, config: config === null || config === void 0 ? void 0 : config.header, menuConfig: config.menu, onSubmit: handleOnSubmit }),
32061
32146
  React$1.createElement(MessageList, { visible: visible, queuePosition: chatState.queuePosition, isChatting: chatState.isChatting, isOffline: isOffline, messages: messages, agents: chatState.agents, agent: config === null || config === void 0 ? void 0 : config.agent, lastRatingRequestTimestamp: chatState.lastRatingRequestTimestamp, hasRating: chatState.hasRating, visitorId: chatState.visitorId, messageMiddleware: props.messageMiddleware, textTypingStatusEnabled: (_q = (_p = props.config) === null || _p === void 0 ? void 0 : _p.typingStatus) === null || _q === void 0 ? void 0 : _q.textTypingStatusEnabled, onSend: handleSendMessage, onWrite: handleWriteMessage, onOpenUrl: handleOpenUrl }),
32062
32147
  React$1.createElement("div", { className: "spinner-container ".concat(visible && connectionStatus === "pending" ? "visible" : "") },
32063
32148
  React$1.createElement("div", { className: "spinner" })),
@@ -32196,9 +32281,11 @@ function joinMessages(messages, msg) {
32196
32281
  }
32197
32282
 
32198
32283
  function memberJoin(state, detail) {
32199
- if (state.chats.length === 0) {
32200
- set$1("sessionId", "");
32201
- }
32284
+ // TODO: Why?
32285
+ // if (state.chats.length === 0) {
32286
+ // console.log(`######### No chats in member join action`);
32287
+ // set("sessionId", "");
32288
+ // }
32202
32289
  var agents = __assign({}, state.agents);
32203
32290
  var prevAgentInfo = state.agents[detail.user.nick];
32204
32291
  agents[detail.user.nick] = __assign(__assign({}, prevAgentInfo), { user: __assign(__assign({}, detail.user), { displayName: detail.user.displayName || "Agent" }), joined: true, typing: false });
@@ -32233,7 +32320,7 @@ function resetReducer(state) {
32233
32320
  userId: state.userId,
32234
32321
  attributes: state.attributes,
32235
32322
  sessionExpiration: state.sessionExpiration
32236
- })), { connection: __assign(__assign({}, state.connection), { greetingRequested: false, nonce: uuid_1() }), visitor: state.visitor, visitorId: state.visitorId });
32323
+ })), { connection: __assign(__assign({}, state.connection), { greetingRequested: false }), visitor: state.visitor, visitorId: state.visitorId });
32237
32324
  }
32238
32325
 
32239
32326
  // todo: create reducer (requires redux-thunk dependency)
@@ -32325,8 +32412,9 @@ function update(state, action) {
32325
32412
  }
32326
32413
  }
32327
32414
  function mapSynthetic(state, action) {
32415
+ var _a;
32328
32416
  if (state === void 0) { state = DEFAULT_STATE; }
32329
- var newTimestamp = state.lastTimestamp + 1;
32417
+ var newTimestamp = (((_a = action.detail) === null || _a === void 0 ? void 0 : _a.timestamp) || +new Date()) + 1; // state.lastTimestamp + 1;
32330
32418
  switch (action.detail.type) {
32331
32419
  case "write_msg":
32332
32420
  return {