@telia-ace/widget-conversation-flamingo 1.1.70-rc.15 → 1.1.70-rc.17
Sign up to get free protection for your applications and to get access to all the features.
- package/conversation.d.ts +2 -1
- package/index.js +1 -1
- package/index.mjs +2 -2
- package/package.json +2 -2
package/conversation.d.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
import { LitElement } from 'lit';
|
2
2
|
import { Ref } from 'lit-html/directives/ref.js';
|
3
3
|
import { ConversationPlatform } from './conversation-platform';
|
4
|
-
import { Observable } from 'rxjs';
|
4
|
+
import { Observable, Subject } from 'rxjs';
|
5
5
|
import { ConversationEntry } from './models/conversation-entry';
|
6
6
|
declare const WidgetElement: (new (...args: any[]) => import("@telia-ace/widget-core-flamingo").WidgetComponentType) & typeof LitElement;
|
7
7
|
export declare class Conversation extends WidgetElement {
|
@@ -29,6 +29,7 @@ export declare class Conversation extends WidgetElement {
|
|
29
29
|
private conversationState$;
|
30
30
|
private stateMachine;
|
31
31
|
private provider$;
|
32
|
+
userTyping$: Subject<string>;
|
32
33
|
connectedCallback(): Promise<void>;
|
33
34
|
disconnectedCallback(): void;
|
34
35
|
_actionHandler(_e: CustomEvent<{
|
package/index.js
CHANGED
@@ -767,7 +767,7 @@ Please report this to https://github.com/markedjs/marked.`,e){const i="<p>An err
|
|
767
767
|
width: 80%;
|
768
768
|
max-width: 700px;
|
769
769
|
}
|
770
|
-
`];Tl([w({attribute:!0})],xn.prototype,"imageUrl",2);var Ll=Object.defineProperty,Ol=Object.getOwnPropertyDescriptor,G=(s,e,t,n)=>{for(var i=n>1?void 0:n?Ol(e,t):e,r=s.length-1,o;r>=0;r--)(o=s[r])&&(i=(n?o(e,t,i):o(i))||i);return n&&i&&Ll(e,t,i),i};customElements.get("conversation-entry")||customElements.define("conversation-entry",un);customElements.get("ace-conversation-feed")||customElements.define("ace-conversation-feed",mt);customElements.get("conversation-group")||customElements.define("conversation-group",pn);customElements.get("ace-typing-state")||customElements.define("ace-typing-state",pi);customElements.get("message-type-html")||customElements.define("message-type-html",dn);customElements.get("message-type-markdown")||customElements.define("message-type-markdown",bt);customElements.get("ace-lightbox")||customElements.define("ace-lightbox",xn);const Si=ci(k);class O extends Si{constructor(){super(...arguments),this.message="",this.disabledInput=!1,this.disabledSubmit=!1,this.chatOverlayActive=!1,this.textAreaLength=0,this.conversationContentRef=B(),this.conversationFeedRef=B(),this.formRef=B(),this.inputRef=B(),this.scrollRef=B(),this.chatScrollHeight=0,this.chatCurrentScrollPosition=0,this.toast=new Ea(this),this.messageMaxLength=1e3,this.skipToLatestMessageLabel="Skip to latest message",this.platform=null,this.entries=[],this.typing=!1,this.conversationState$=new M("waiting"),this.stateMachine=new La(this.conversationState$,this),this.provider$=this.stateMachine.session().pipe(pe(e=>e?e==null?void 0:e.provider$:It(null)))}async connectedCallback(){super.connectedCallback(),this.messageMaxLength=this.properties.messageMaxLength??this.messageMaxLength,this.skipToLatestMessageLabel=this.properties.skipToLatestMessageLabel??this.skipToLatestMessageLabel;const e=await this.application.container.get("conversation");this.platform=e||null;const t=this.application.trigger;t&&t.widgetActive$.pipe(zt(t.componentIsDestroyed$)).subscribe(n=>{const i=this.conversationContentRef.value;i&&(n?i.scrollTop=this.chatCurrentScrollPosition:this.chatCurrentScrollPosition=i.scrollTop)}),this.stateSubscription=dr([this.stateMachine.entries(),this.stateMachine.isTyping()]).subscribe(([n,i])=>{this.entries=n,this.typing=i}),this.userSubmitSubscription=Ke(this,"user-submit").pipe(Ut(this.provider$)).subscribe(([n,i])=>{i&&i.onUserSubmit(n.detail)}),this._addHeaderOptions(),this.provider$.pipe(Ut(this.provider$)).subscribe(([n,i])=>{i&&i.showChatOverlay$.pipe().subscribe(r=>{this.chatOverlayActive=r})})}disconnectedCallback(){var e,t;super.disconnectedCallback(),(e=this.userSubmitSubscription)==null||e.unsubscribe(),(t=this.stateSubscription)==null||t.unsubscribe()}_actionHandler(e){}isTypingState(){var t,n;const e=(n=(t=this.conversationFeedRef.value)==null?void 0:t.shadowRoot)==null?void 0:n.querySelector(".conversation-feed");if(e){const i=e.lastElementChild;if(i&&i.tagName.toLowerCase()==="ace-typing-state")return!0}return!1}isAtBottom(){const e=this.conversationContentRef.value;return e?e.scrollHeight-e.scrollTop-e.clientHeight<1:!1}scrollToBottom(){var e,t;(!this.isTypingState()||this.isAtBottom())&&(setTimeout(()=>{var n;return(n=this.scrollRef.value)==null?void 0:n.scrollIntoView({behavior:"smooth"})},300),this.chatScrollHeight=(e=this.scrollRef.value)==null?void 0:e.scrollHeight,this.chatCurrentScrollPosition=(t=this.scrollRef.value)==null?void 0:t.scrollTop)}onSessionUpdated(){this.scrollToBottom()}disableInput(){this.disabledInput=!0}enableInput(){this.disabledInput=!1}disableSubmit(){this.disabledSubmit=!0}enableSubmit(){this.disabledSubmit=!1}clearMessages(){var i,r;const e=(i=this.shadowRoot)==null?void 0:i.querySelector("ace-conversation-feed"),t=(r=e==null?void 0:e.shadowRoot)==null?void 0:r.querySelector(".conversation-feed"),n=t==null?void 0:t.querySelectorAll(".conversation-entry");n==null||n.forEach(o=>o.remove())}setToastMessage(e){this.toast.message=e}async _onSendMessage(e){var n;if(e.preventDefault(),this.message.length<=0){(n=this.formRef.value)==null||n.classList.add("shake"),setTimeout(()=>{var i;(i=this.formRef.value)==null||i.classList.remove("shake")},500);return}this.message=this.message.slice(0,this.messageMaxLength);const t=new CustomEvent("user-submit",{detail:{text:this.message}});this.dispatchEvent(t),this.message="",this.inputRef.value.style.height=this.style.getPropertyValue("--textarea-default-height")}_addHeaderOptions(){const e=this.application.getComponent("widget-header");if(!e)return;const t=this.application.texts,n=t.getOrFallback("conversation.mute","Mute"),i=t.getOrFallback("conversation.unmute","Unmute"),r=!!this.application.storage.get("muteAudioNotifications"),o=e.addOption({label:r?i:n,icon:r?Dn.svg:Hn.svg,closeOnClick:!1,datatestid:"options-mute-button",onClick:()=>{!!this.application.storage.get("muteAudioNotifications")?(this.application.unmute(),o.updateLabel(n),o.updateIcon(Hn.svg)):(this.application.mute(),o.updateLabel(i),o.updateIcon(Dn.svg))}})}_inputHandler(e){this.message=e.target.value,e.target.style.height=this.style.getPropertyValue("--textarea-default-height"),e.target.style.height=e.target.scrollHeight+"px",this.textAreaLength=e.target.value.length}_keyDownHandler(e){e.key==="Enter"&&!e.shiftKey&&!this.disabledSubmit&&(this._onSendMessage(e),e.preventDefault())}skipToLatestMessage(){var n,i;const e=(n=this.conversationFeedRef)==null?void 0:n.value,t=(i=e==null?void 0:e.shadowRoot)==null?void 0:i.querySelectorAll(".conversation-entry");t.length&&Array.from(t).pop().focus()}handover(e,t){this.enableInput(),this.setToastMessage(null);const n=new CustomEvent("handover",{detail:{providerKey:e,providerOptions:t}});return this.dispatchEvent(n),n.detail.complete||Pe}render(){var t;const e=this.application.texts;return this.conversationState$.value==="waiting"&&((t=this.application)!=null&&t.storage)&&this.platform&&(this.stateMachine.setStorage(this.application.storage),this.conversationState$.next("init")),m` <div
|
770
|
+
`];Tl([w({attribute:!0})],xn.prototype,"imageUrl",2);var Ll=Object.defineProperty,Ol=Object.getOwnPropertyDescriptor,G=(s,e,t,n)=>{for(var i=n>1?void 0:n?Ol(e,t):e,r=s.length-1,o;r>=0;r--)(o=s[r])&&(i=(n?o(e,t,i):o(i))||i);return n&&i&&Ll(e,t,i),i};customElements.get("conversation-entry")||customElements.define("conversation-entry",un);customElements.get("ace-conversation-feed")||customElements.define("ace-conversation-feed",mt);customElements.get("conversation-group")||customElements.define("conversation-group",pn);customElements.get("ace-typing-state")||customElements.define("ace-typing-state",pi);customElements.get("message-type-html")||customElements.define("message-type-html",dn);customElements.get("message-type-markdown")||customElements.define("message-type-markdown",bt);customElements.get("ace-lightbox")||customElements.define("ace-lightbox",xn);const Si=ci(k);class O extends Si{constructor(){super(...arguments),this.message="",this.disabledInput=!1,this.disabledSubmit=!1,this.chatOverlayActive=!1,this.textAreaLength=0,this.conversationContentRef=B(),this.conversationFeedRef=B(),this.formRef=B(),this.inputRef=B(),this.scrollRef=B(),this.chatScrollHeight=0,this.chatCurrentScrollPosition=0,this.toast=new Ea(this),this.messageMaxLength=1e3,this.skipToLatestMessageLabel="Skip to latest message",this.platform=null,this.entries=[],this.typing=!1,this.conversationState$=new M("waiting"),this.stateMachine=new La(this.conversationState$,this),this.provider$=this.stateMachine.session().pipe(pe(e=>e?e==null?void 0:e.provider$:It(null))),this.userTyping$=new _}async connectedCallback(){super.connectedCallback(),this.messageMaxLength=this.properties.messageMaxLength??this.messageMaxLength,this.skipToLatestMessageLabel=this.properties.skipToLatestMessageLabel??this.skipToLatestMessageLabel;const e=await this.application.container.get("conversation");this.platform=e||null;const t=this.application.trigger;t&&t.widgetActive$.pipe(zt(t.componentIsDestroyed$)).subscribe(n=>{const i=this.conversationContentRef.value;i&&(n?i.scrollTop=this.chatCurrentScrollPosition:this.chatCurrentScrollPosition=i.scrollTop)}),this.stateSubscription=dr([this.stateMachine.entries(),this.stateMachine.isTyping()]).subscribe(([n,i])=>{this.entries=n,this.typing=i}),this.userSubmitSubscription=Ke(this,"user-submit").pipe(Ut(this.provider$)).subscribe(([n,i])=>{i&&i.onUserSubmit(n.detail)}),this._addHeaderOptions(),this.provider$.pipe(Ut(this.provider$)).subscribe(([n,i])=>{i&&i.showChatOverlay$.pipe().subscribe(r=>{this.chatOverlayActive=r})})}disconnectedCallback(){var e,t;super.disconnectedCallback(),(e=this.userSubmitSubscription)==null||e.unsubscribe(),(t=this.stateSubscription)==null||t.unsubscribe()}_actionHandler(e){}isTypingState(){var t,n;const e=(n=(t=this.conversationFeedRef.value)==null?void 0:t.shadowRoot)==null?void 0:n.querySelector(".conversation-feed");if(e){const i=e.lastElementChild;if(i&&i.tagName.toLowerCase()==="ace-typing-state")return!0}return!1}isAtBottom(){const e=this.conversationContentRef.value;return e?e.scrollHeight-e.scrollTop-e.clientHeight<1:!1}scrollToBottom(){var e,t;(!this.isTypingState()||this.isAtBottom())&&(setTimeout(()=>{var n;return(n=this.scrollRef.value)==null?void 0:n.scrollIntoView({behavior:"smooth"})},300),this.chatScrollHeight=(e=this.scrollRef.value)==null?void 0:e.scrollHeight,this.chatCurrentScrollPosition=(t=this.scrollRef.value)==null?void 0:t.scrollTop)}onSessionUpdated(){this.scrollToBottom()}disableInput(){this.disabledInput=!0}enableInput(){this.disabledInput=!1}disableSubmit(){this.disabledSubmit=!0}enableSubmit(){this.disabledSubmit=!1}clearMessages(){var i,r;const e=(i=this.shadowRoot)==null?void 0:i.querySelector("ace-conversation-feed"),t=(r=e==null?void 0:e.shadowRoot)==null?void 0:r.querySelector(".conversation-feed"),n=t==null?void 0:t.querySelectorAll(".conversation-entry");n==null||n.forEach(o=>o.remove())}setToastMessage(e){this.toast.message=e}async _onSendMessage(e){var n;if(e.preventDefault(),this.message.length<=0){(n=this.formRef.value)==null||n.classList.add("shake"),setTimeout(()=>{var i;(i=this.formRef.value)==null||i.classList.remove("shake")},500);return}this.message=this.message.slice(0,this.messageMaxLength);const t=new CustomEvent("user-submit",{detail:{text:this.message}});this.dispatchEvent(t),this.message="",this.inputRef.value.style.height=this.style.getPropertyValue("--textarea-default-height")}_addHeaderOptions(){const e=this.application.getComponent("widget-header");if(!e)return;const t=this.application.texts,n=t.getOrFallback("conversation.mute","Mute"),i=t.getOrFallback("conversation.unmute","Unmute"),r=!!this.application.storage.get("muteAudioNotifications"),o=e.addOption({label:r?i:n,icon:r?Dn.svg:Hn.svg,closeOnClick:!1,datatestid:"options-mute-button",onClick:()=>{!!this.application.storage.get("muteAudioNotifications")?(this.application.unmute(),o.updateLabel(n),o.updateIcon(Hn.svg)):(this.application.mute(),o.updateLabel(i),o.updateIcon(Dn.svg))}})}_inputHandler(e){this.message=e.target.value,e.target.style.height=this.style.getPropertyValue("--textarea-default-height"),e.target.style.height=e.target.scrollHeight+"px",this.textAreaLength=e.target.value.length}_keyDownHandler(e){this.userTyping$.next(e.key),e.key==="Enter"&&!e.shiftKey&&!this.disabledSubmit&&(this._onSendMessage(e),e.preventDefault())}skipToLatestMessage(){var n,i;const e=(n=this.conversationFeedRef)==null?void 0:n.value,t=(i=e==null?void 0:e.shadowRoot)==null?void 0:i.querySelectorAll(".conversation-entry");t.length&&Array.from(t).pop().focus()}handover(e,t){this.enableInput(),this.setToastMessage(null);const n=new CustomEvent("handover",{detail:{providerKey:e,providerOptions:t}});return this.dispatchEvent(n),n.detail.complete||Pe}render(){var t;const e=this.application.texts;return this.conversationState$.value==="waiting"&&((t=this.application)!=null&&t.storage)&&this.platform&&(this.stateMachine.setStorage(this.application.storage),this.conversationState$.next("init")),m` <div
|
771
771
|
@action=${this._actionHandler}
|
772
772
|
class=${Te({conversation:!0,disabled:this.disabledInput,"conversation--has-toast":this.toast.hasMessage(),"conversation--input-has-text":this.message.length>0&&!this.disabledSubmit,"overlay-mode":this.chatOverlayActive})}
|
773
773
|
>
|
package/index.mjs
CHANGED
@@ -6105,7 +6105,7 @@ class R extends ki {
|
|
6105
6105
|
constructor() {
|
6106
6106
|
super(...arguments), this.message = "", this.disabledInput = !1, this.disabledSubmit = !1, this.chatOverlayActive = !1, this.textAreaLength = 0, this.conversationContentRef = B(), this.conversationFeedRef = B(), this.formRef = B(), this.inputRef = B(), this.scrollRef = B(), this.chatScrollHeight = 0, this.chatCurrentScrollPosition = 0, this.toast = new Ca(this), this.messageMaxLength = 1e3, this.skipToLatestMessageLabel = "Skip to latest message", this.platform = null, this.entries = [], this.typing = !1, this.conversationState$ = new M("waiting"), this.stateMachine = new Ea(this.conversationState$, this), this.provider$ = this.stateMachine.session().pipe(
|
6107
6107
|
pe((e) => e ? e == null ? void 0 : e.provider$ : It(null))
|
6108
|
-
);
|
6108
|
+
), this.userTyping$ = new _();
|
6109
6109
|
}
|
6110
6110
|
async connectedCallback() {
|
6111
6111
|
super.connectedCallback(), this.messageMaxLength = this.properties.messageMaxLength ?? this.messageMaxLength, this.skipToLatestMessageLabel = this.properties.skipToLatestMessageLabel ?? this.skipToLatestMessageLabel;
|
@@ -6226,7 +6226,7 @@ class R extends ki {
|
|
6226
6226
|
), e.target.style.height = e.target.scrollHeight + "px", this.textAreaLength = e.target.value.length;
|
6227
6227
|
}
|
6228
6228
|
_keyDownHandler(e) {
|
6229
|
-
e.key === "Enter" && !e.shiftKey && !this.disabledSubmit && (this._onSendMessage(e), e.preventDefault());
|
6229
|
+
this.userTyping$.next(e.key), e.key === "Enter" && !e.shiftKey && !this.disabledSubmit && (this._onSendMessage(e), e.preventDefault());
|
6230
6230
|
}
|
6231
6231
|
skipToLatestMessage() {
|
6232
6232
|
var n, i;
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@telia-ace/widget-conversation-flamingo",
|
3
|
-
"version": "1.1.70-rc.
|
3
|
+
"version": "1.1.70-rc.17",
|
4
4
|
"publishConfig": {
|
5
5
|
"registry": "https://registry.npmjs.org"
|
6
6
|
},
|
@@ -9,7 +9,7 @@
|
|
9
9
|
"@lit-labs/motion": "^1.0.4",
|
10
10
|
"@teliads/icons": "^8.4.0",
|
11
11
|
"@teliads/components": "^22.1.1",
|
12
|
-
"@telia-ace/widget-core-flamingo": "1.1.70-rc.
|
12
|
+
"@telia-ace/widget-core-flamingo": "1.1.70-rc.17",
|
13
13
|
"lit-html": "^3.0.2",
|
14
14
|
"rxjs": "^7.8.1",
|
15
15
|
"marked": "^12.0.2"
|