{"version":3,"file":"kendo.chat.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendochat","js","this","$","undefined$1","kendo","window","Widget","ui","extend","NS","keys","ChatMessageBox","init","element","options","fn","call","_wrapper","_attachEvents","_typing","events","messages","placeholder","toggleButton","sendButton","destroy","input","off","remove","empty","styles","inputId","guid","inputWrapper","addClass","appendTo","attr","separator","inputSuffix","toolbar","toggleable","buttons","length","html","renderButton","buttonToggle","toolbarId","icon","buttonToggleIcon","fillMode","size","buttonSend","buttonSendIcon","on","_keydown","bind","_input","_inputFocusout","_buttonClick","_toggleToolbar","start","val","_triggerTyping","e","keyCode","ENTER","preventDefault","_sendMessage","F10","trigger","value","args","text","ev","originalEvent","button","buttonFlat","iconButton","buttonIcon","hidden","chat","jQuery","DATA_K_BUTTON_NAME","SCROLL_LEFT_NAME","SCROLL_RIGHT_NAME","VISIBLE","TABINDEX","DEFAULT_ANIMATION","effects","duration","NO_ANIMATION","expand","show","collapse","hide","ChatToolBar","toolbarOptions","name","buttonsDefined","_createButtonList","scrollable","buttonsWidth","width","_initScrolling","_setupAnimation","toggle","_onClick","_onKeydown","buttonList","i","_createButton","append","first","removeAttr","btnOptions","attributes","buttonElm","title","type","tabindex","data","buttonDefaults","iconClass","prepend","renderIcon","target","closest","is","scrollButton","_scrolling","_scroll","key","LEFT","_focusButton","RIGHT","dir","current","not","candidate","index","removeAttribute","focus","scrollButtonLeft","scrollButtonLeftIcon","class","scrollButtonRight","scrollButtonRightIcon","_refreshScrollButtons","commandName","that","buttonWidth","maxScrollSize","scrollAmmount","scrollValue","currentScrollLeft","Math","min","max","scrollLeft","isNaN","parseInt","animation","defaultExpandAnimation","defaultCollapseAnimation","reverse","_animationComplete","_animationCompleteExpand","round","scrollWidth","clientWidth","children","last","outerWidth","skipAnimation","complete","kendoStop","kendoAnimate","encode","htmlEncode","DOT","AVATAR_TEMPLATE","url","IMG_TEMPLATE","MESSAGE_GROUP_TEMPLATE","messageGroup","noAvatar","author","SELF_MESSAGE_GROUP_TEMPLATE","TEXT_MESSAGE_TEMPLATE","timestamp","message","messageTime","toString","parseDate","bubble","TYPING_INDICATOR_TEMPLATE","messageListContent","typingIndicatorBubble","typingIndicator","CARD_ACTIONS_TEMPLATE","cardActions","cardActionsVertical","map","cardAction","buttonPrimary","CARD_ACTION_BUTTON_TEMPLATE","join","HERO_CARD_TEMPLATE","images","subtitle","card","cardRich","alt","cardMedia","HERO_IMG_TEMPLATE","cardBody","cardTitle","cardSubtitle","Templates","Components","registerTemplate","templateName","template","getTemplate","suggestedActions","action","suggestedAction","SUGGESTED_ACTION_TEMPLATE","registerComponent","componentName","component","getComponent","Component","Class","view","Calendar","kendoCalendar","change","viewStyles","wrapper","messageList","only","middle","avatar","scrollButtonIconLeft","scrollButtonIconRight","cardWrapper","cardDeckScrollWrap","cardDeck","cardList","cardActionsHorizontal","cardActionsStart","cardActionsCenter","cardActionsEnd","cardActionsStretched","selected","ChatView","_list","_lastSender","typingParticipants","_scrollable","isTyping","areTyping","and","_scrollDraggable","list","messageListLabel","_listClick","_messageClick","_suggestedActionClick","_cardActionClick","_suggestedActionKeydown","_scrollButtonClick","currentTarget","scrollToLeft","find","scrollContainer","siblings","cardWidth","renderMessage","sender","Date","bubbleElement","_renderTemplate","_renderBubble","_removeTypingParticipant","id","renderSuggestedActions","_removeSuggestedActions","_scrollToBottom","renderAttachments","_renderAttachmentWrapper","attachmentLayout","cardContainer","attachments","cardElement","contentType","content","_removeTypingIndicator","renderComponent","layout","buttonLeft","_renderScrollButton","buttonRight","directionClass","targetElement","hasClass","parents","_clearSelection","SPACEBAR","messageType","group","_getMessageGroup","_appendToGroup","componentType","templateOptions","_getMessageGroupTemplate","appendTarget","iconUrl","user","messageElement","childrenCount","filter","removeClass","_renderTypingIndicator","participants","indicator","_addTypingParticipant","_composeTypingParticipantsText","found","push","splice","typingAction","typingText","replace","trimRight","selectedClass","scrollTop","prop","chatStyles","canvas","viewWrapper","messageBoxWrapper","toolbarBoxWrapper","Chat","_events","_user","_view","_toolbar","_messageBox","notify","setOptions","_setEvents","messageBox","unbind","_resetToolbarButtons","getUser","height","uiElements","toolbarElement","css","postMessage","toggleToolbar","postArgs","from","renderUserTypingIndicator","clearUserTypingIndicator","removeTypingIndicator","plugin"],"sources":["kendo.chat.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.core.js'), require('kendo.html.button.js'), require('kendo.icons.js'), require('kendo.draganddrop.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.core', 'kendo.html.button', 'kendo.icons', 'kendo.draganddrop'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendochat = global.kendochat || {}, global.kendochat.js = factory()));\n})(this, (function () {\n (function($, undefined$1) {\n\n var kendo = window.kendo;\n var Widget = kendo.ui.Widget;\n var extend = $.extend;\n var DOT = \".\";\n var NS = \".kendoChat\";\n var keys = kendo.keys;\n\n var messageBoxStyles = {\n input: \"k-input-inner\",\n inputWrapper: \"k-textbox k-input k-input-md k-input-solid k-rounded-md\",\n button: \"k-button\",\n buttonFlat: \"k-button-lg k-button-flat k-button-flat-base\",\n iconButton: \"k-icon-button\",\n buttonIcon: \"k-button-icon\",\n buttonSend: \"k-chat-send\",\n buttonSendIcon: \"paper-plane\",\n buttonToggle: \"k-button-toggle\",\n buttonToggleIcon: \"more-horizontal\",\n hidden: \"k-hidden\",\n inputSuffix: \"k-input-suffix k-input-suffix-horizontal\",\n separator: \"k-input-separator k-input-separator-vertical\"\n };\n\n var ChatMessageBox = Widget.extend({\n init: function(element, options) {\n Widget.fn.init.call(this, element, options);\n\n this._wrapper();\n\n this._attachEvents();\n\n this._typing = false;\n },\n\n events: [\n \"focusToolbar\",\n \"sendMessage\",\n \"toggleToolbar\",\n \"typingEnd\",\n \"typingStart\"\n ],\n\n options: {\n messages: {\n placeholder: \"Type a message...\",\n toggleButton: \"Toggle toolbar\",\n sendButton: \"Send message\"\n }\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n\n if (this.input) {\n this.input.off(NS);\n this.input.remove();\n this.input = null;\n }\n\n this.element.off(NS);\n this.element.empty();\n },\n\n _wrapper: function() {\n var styles = ChatMessageBox.styles;\n var options = this.options;\n var messages = options.messages;\n var inputId = \"inputId_\" + kendo.guid();\n\n this.inputWrapper = this.element\n .addClass(styles.inputWrapper)\n .appendTo(this.element);\n\n this.input = $(\"\")\n .addClass(styles.input)\n .attr(\"id\", inputId)\n .attr(\"aria-label\", messages.placeholder)\n .attr(\"placeholder\", messages.placeholder)\n .appendTo(this.inputWrapper);\n\n this.separator = $(\"\")\n .addClass(styles.separator)\n .appendTo(this.inputWrapper);\n\n this.inputSuffix = $(\"\")\n .addClass(styles.inputSuffix)\n .appendTo(this.inputWrapper);\n\n if (options.toolbar && options.toolbar.toggleable && options.toolbar.buttons && options.toolbar.buttons.length) {\n $(kendo.html.renderButton(``,\n {\n icon: styles.buttonToggleIcon,\n fillMode: \"flat\",\n size: \"medium\"\n }))\n .appendTo(this.inputSuffix);\n }\n\n $(kendo.html.renderButton(``,\n {\n icon: styles.buttonSendIcon,\n fillMode: \"flat\",\n size: \"medium\"\n }))\n .appendTo(this.inputSuffix);\n },\n\n _attachEvents: function() {\n var styles = ChatMessageBox.styles;\n\n this.input\n .on(\"keydown\" + NS, this._keydown.bind(this))\n .on(\"input\" + NS, this._input.bind(this))\n .on(\"focusout\" + NS, this._inputFocusout.bind(this));\n\n this.element\n .on(\"click\" + NS, DOT + styles.buttonSend, this._buttonClick.bind(this));\n\n this.element\n .on(\"click\" + NS, DOT + styles.buttonToggle, this._toggleToolbar.bind(this));\n },\n\n _input: function() {\n var currentValue = this.input.val();\n var start = currentValue.length > 0;\n\n this._triggerTyping(start);\n },\n\n _keydown: function(e) {\n var key = e.keyCode;\n\n switch (key) {\n case keys.ENTER:\n e.preventDefault();\n\n this._sendMessage();\n break;\n case keys.F10:\n e.preventDefault();\n\n this.trigger(\"focusToolbar\");\n break;\n }\n },\n\n _buttonClick: function(e) {\n e.preventDefault();\n\n this._sendMessage();\n },\n\n _sendMessage: function() {\n var value = this.input.val();\n\n if (!value.length) {\n return;\n }\n\n this._triggerTyping(false);\n\n var args = {\n text: value\n };\n\n this.trigger(\"sendMessage\", args);\n\n this.input.val(\"\");\n },\n\n _inputFocusout: function() {\n this._triggerTyping(false);\n },\n\n _triggerTyping: function(start) {\n if (start) {\n if (!this._typing) {\n this.trigger(\"typingStart\", {});\n this._typing = true;\n }\n } else {\n if (this._typing) {\n this.trigger(\"typingEnd\", {});\n this._typing = false;\n }\n }\n },\n\n _toggleToolbar: function(ev) {\n this.trigger(\"toggleToolbar\", { originalEvent: ev });\n }\n });\n\n extend(true, ChatMessageBox, { styles: messageBoxStyles });\n extend(kendo, {\n chat: {\n ChatMessageBox: ChatMessageBox\n }\n });\n })(window.kendo.jQuery);\n\n (function($, undefined$1) {\n\n var kendo = window.kendo;\n var Widget = kendo.ui.Widget;\n var extend = $.extend;\n var DOT = \".\";\n var NS = \".kendoChat\";\n\n var DATA_K_BUTTON_NAME = \"kButtonName\";\n var SCROLL_LEFT_NAME = \"chatToolbarScrollLeft\";\n var SCROLL_RIGHT_NAME = \"chatToolbarScrollRight\";\n var VISIBLE = \":visible\";\n var TABINDEX = \"tabindex\";\n\n var DEFAULT_ANIMATION = {\n effects: \"expand:vertical\",\n duration: 200\n };\n var NO_ANIMATION = {\n expand: {\n show: true\n },\n collapse: {\n hide: true\n }\n };\n\n var toolbarStyles = {\n button: \"k-button\",\n buttonDefaults: \"k-button-md k-rounded-md k-button-solid k-button-solid-base\",\n buttonList: \"k-button-list k-toolbar-group\",\n scrollButton: \"k-scroll-button\",\n scrollButtonLeft: \"k-scroll-button-left\",\n scrollButtonRight: \"k-scroll-button-right\",\n scrollButtonLeftIcon: \"chevron-left\",\n scrollButtonRightIcon: \"chevron-right\",\n iconButton: \"k-icon-button\"\n };\n\n var ChatToolBar = Widget.extend({\n init: function(element, options) {\n options = extend({}, options, { name: \"ChatToolbar\" });\n var toolbarOptions = options.toolbar;\n var buttonsDefined = toolbarOptions.buttons && toolbarOptions.buttons.length;\n\n Widget.fn.init.call(this, element, options);\n\n if (buttonsDefined) {\n this._createButtonList();\n }\n\n if (buttonsDefined && toolbarOptions.scrollable &&\n this.buttonsWidth() > this.element.width()) {\n this._initScrolling();\n }\n\n this._setupAnimation();\n\n if (buttonsDefined && toolbarOptions.toggleable) {\n this.toggle(true);\n }\n\n this.element\n .on(\"click\" + NS, this._onClick.bind(this))\n .on(\"keydown\" + NS, this._onKeydown.bind(this));\n },\n\n events: [\n \"click\"\n ],\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n\n this.element.off(NS);\n this.element.empty();\n },\n\n _createButtonList: function() {\n var that = this;\n var styles = ChatToolBar.styles;\n var buttons = that.options.toolbar.buttons;\n var buttonList = $(\"
\");\n\n for (var i = 0; i < buttons.length; i++) {\n var button = that._createButton(buttons[i]);\n buttonList.append(button);\n }\n\n buttonList.appendTo(this.element);\n\n this.buttonList = buttonList;\n this.buttons().first().removeAttr(TABINDEX);\n },\n\n _createButton: function(btnOptions) {\n var styles = ChatToolBar.styles;\n var buttonElm = $(\"`;\n\n var CARD_ACTIONS_TEMPLATE = ({ styles, buttons }) => `
\n ${ buttons.map((button) => CARD_ACTION_BUTTON_TEMPLATE({ styles, button })).join('') }\n
`;\n\n var HERO_CARD_TEMPLATE = ({ styles, images, buttons, title, subtitle, text }) => `
\n ${ (typeof images !== \"undefined\" && images.length > 0) ? HERO_IMG_TEMPLATE({ images, styles }) : '' }\n
\n ${ typeof title !== \"undefined\" ? (() => `
${encode(title)}
`)() : '' }\n ${ typeof subtitle !== \"undefined\" ? (() => `
${encode(subtitle)}
`)() : '' }\n ${ typeof text !== \"undefined\" ? (() => `

${encode(text)}

`)() : '' }\n
\n ${ (typeof buttons !== \"undefined\" && buttons.length > 0) ? CARD_ACTIONS_TEMPLATE({ buttons, styles }) : ''}\n
`;\n\n extend(kendo.chat, {\n Templates: {},\n Components: {}\n });\n\n kendo.chat.registerTemplate = function(templateName, template) {\n kendo.chat.Templates[templateName] = kendo.template(template);\n };\n\n kendo.chat.getTemplate = function(templateName) {\n return kendo.chat.Templates[templateName] || TEXT_MESSAGE_TEMPLATE;\n };\n\n kendo.chat.registerTemplate(\"text\", TEXT_MESSAGE_TEMPLATE);\n kendo.chat.registerTemplate(\"message\", TEXT_MESSAGE_TEMPLATE);\n kendo.chat.registerTemplate(\"typing\", TYPING_INDICATOR_TEMPLATE);\n kendo.chat.registerTemplate(\"suggestedAction\", SUGGESTED_ACTIONS_TEMPLATE);\n kendo.chat.registerTemplate(\"heroCard\", HERO_CARD_TEMPLATE);\n kendo.chat.registerTemplate(\"application/vnd.microsoft.card.hero\", HERO_CARD_TEMPLATE);\n\n kendo.chat.registerComponent = function(componentName, component) {\n kendo.chat.Components[componentName] = component;\n };\n\n kendo.chat.getComponent = function(componentName) {\n return kendo.chat.Components[componentName] || null;\n };\n\n var Component = kendo.chat.Component = kendo.Class.extend({\n init: function(options, view) {\n this.element = $('
');\n this.options = options;\n this.view = view;\n },\n\n destroy: function() {\n kendo.destroy(this.element);\n }\n });\n\n var Calendar = Component.extend({\n init: function(options, view) {\n Component.fn.init.call(this, options, view);\n\n this.element.kendoCalendar({\n change: function() {\n view.trigger(\"suggestedAction\", { text: kendo.toString(this.value(), 'd'), type: \"message\" });\n }\n });\n },\n\n destroy: function() {\n }\n });\n kendo.chat.registerComponent(\"calendar\", Calendar);\n\n var viewStyles = {\n wrapper: \"k-chat\",\n messageList: \"k-avatars\",\n messageListContent: \"k-message-list-content\",\n messageTime: \"k-message-time\",\n messageGroup: \"k-message-group\",\n message: \"k-message\",\n only: \"k-only\",\n first: \"k-first\",\n middle: \"k-middle\",\n last: \"k-last\",\n author: \"k-author\",\n avatar: \"k-avatar\",\n noAvatar: \"k-no-avatar\",\n self: \"k-alt\",\n button: \"k-button\",\n buttonDefaults: \"k-button-md k-rounded-md k-button-solid k-button-solid-base\",\n iconButton: \"k-icon-button\",\n buttonIcon: \"k-button-icon\",\n buttonPrimary: \"k-button-md k-rounded-md k-button-flat k-button-flat-primary\",\n scrollButtonIconLeft: \"chevron-left\",\n scrollButtonIconRight: \"chevron-right\",\n typingIndicator: \"k-typing-indicator\",\n typingIndicatorBubble: \"k-typing-indicator-bubble\",\n bubble: \"k-chat-bubble\",\n suggestedActions: \"k-quick-replies\",\n suggestedAction: \"k-quick-reply\",\n cardWrapper: \"k-card-container\",\n cardDeckScrollWrap: \"k-card-deck-scrollwrap\",\n cardDeck: \"k-card-deck\",\n cardList: \"k-card-list\",\n card: \"k-card\",\n cardRich: \"k-card-type-rich\",\n cardBody: \"k-card-body\",\n cardMedia: \"k-card-media\",\n cardTitle: \"k-card-title\",\n cardSubtitle: \"k-card-subtitle\",\n cardActions: \"k-card-actions\",\n cardActionsVertical: \"k-actions-vertical\",\n cardActionsHorizontal: \"k-actions-horizontal\",\n cardActionsStart: \"k-actions-start\",\n cardActionsCenter: \"k-actions-center\",\n cardActionsEnd: \"k-actions-end\",\n cardActionsStretched: \"k-actions-stretched\",\n cardAction: \"k-card-action\",\n selected: \"k-selected\"\n };\n\n var ChatView = kendo.chat.ChatView = Widget.extend({\n init: function(element, options) {\n Widget.fn.init.call(this, element, options);\n\n this._list();\n\n this._lastSender = null;\n\n this.typingParticipants = [];\n\n this._attachEvents();\n\n this._scrollable();\n },\n\n events: [\n ],\n\n options: {\n messages: {\n isTyping: \" is typing.\",\n areTyping: \" are typing.\",\n and: \" and \"\n }\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n\n if (this._scrollDraggable) {\n this._scrollDraggable.destroy();\n }\n\n this.element.empty();\n this.element.off(NS);\n\n this.list = null;\n this._lastSender = null;\n },\n\n _list: function() {\n var viewStyles = ChatView.styles;\n\n this.element\n .addClass(viewStyles.messageList)\n .attr(\"role\", \"log\")\n .attr(\"aria-label\", this.options.messages.messageListLabel);\n\n this.list = $(\"
\")\n .addClass(viewStyles.messageListContent)\n .appendTo(this.element);\n },\n\n _attachEvents: function() {\n var styles = ChatView.styles;\n\n this.element\n .on(\"click\" + NS, this._listClick.bind(this))\n .on(\"click\" + NS, DOT + styles.message, this._messageClick.bind(this))\n .on(\"click\" + NS, DOT + styles.suggestedAction, this._suggestedActionClick.bind(this))\n .on(\"click\" + NS, DOT + styles.cardAction + SPACE + DOT + styles.button, this._cardActionClick.bind(this));\n\n this.element.on(\"keydown\" + NS, DOT + styles.suggestedAction, this._suggestedActionKeydown.bind(this));\n },\n\n _scrollable: function() {\n var viewStyles = ChatView.styles;\n\n this.element\n .on(\"click\" + NS, DOT + viewStyles.cardDeckScrollWrap + SPACE + DOT + viewStyles.button, this._scrollButtonClick.bind(this));\n },\n\n _scrollButtonClick: function(e) {\n var viewStyles = ChatView.styles;\n var button = $(e.currentTarget);\n var scrollToLeft = button.find(`${DOT + viewStyles.buttonIcon}[class*=${viewStyles.scrollButtonIconLeft}]`).length !== 0;\n var scrollContainer = button.siblings(DOT + viewStyles.cardDeck);\n var lastCard = scrollContainer.find(DOT + viewStyles.card).last();\n var cardWidth = lastCard.outerWidth(true);\n\n if (scrollToLeft) {\n kendo.scrollLeft(scrollContainer, kendo.scrollLeft(scrollContainer) - cardWidth);\n } else {\n kendo.scrollLeft(scrollContainer, kendo.scrollLeft(scrollContainer) + cardWidth);\n }\n },\n\n getTemplate: function(templateName) {\n return kendo.chat.getTemplate(templateName);\n },\n\n getComponent: function(type) {\n return kendo.chat.getComponent(type);\n },\n\n renderMessage: function(message, sender) {\n if (!message.timestamp) {\n message.timestamp = new Date();\n }\n\n if (!message.text) {\n message.text = \"\";\n }\n\n var bubbleElement = this._renderTemplate(message.type, message);\n\n this._renderBubble(message.type, bubbleElement, sender);\n\n if (message.type == \"typing\") {\n if (this.typingParticipants.length > 0) {\n this._removeTypingParticipant(sender);\n }\n } else {\n this._lastSender = sender.id;\n }\n },\n\n renderSuggestedActions: function(suggestedActions) {\n this._removeSuggestedActions();\n\n var element = this._renderTemplate(\"suggestedAction\", { suggestedActions: suggestedActions });\n\n this.list.append(element);\n\n this._scrollToBottom();\n },\n\n renderAttachments: function(options) {\n var wrapper = this._renderAttachmentWrapper(options.attachmentLayout);\n var cardContainer = options.attachmentLayout === \"carousel\" ? wrapper.find(DOT + ChatView.styles.cardDeck) : wrapper;\n var attachments = options.attachments;\n\n if (!attachments.length) {\n return;\n }\n\n for (var i = 0; i < attachments.length; i++) {\n var cardElement = this._renderTemplate(attachments[i].contentType, attachments[i].content);\n\n cardContainer.append(cardElement);\n }\n\n this._removeSuggestedActions();\n this._removeTypingIndicator();\n\n this.list.append(wrapper);\n\n this._lastSender = null;\n },\n\n renderComponent: function(type) {\n var componentType = this.getComponent(type);\n var component = new componentType({}, this);\n\n this.list.append(component.element);\n\n this._scrollToBottom();\n },\n\n _renderAttachmentWrapper: function(layout) {\n var viewStyles = ChatView.styles;\n var wrapper = $(\"
\");\n\n if (layout === \"carousel\") {\n wrapper.addClass(viewStyles.cardDeckScrollWrap);\n\n var buttonLeft = this._renderScrollButton(viewStyles.scrollButtonIconLeft);\n wrapper.append(buttonLeft);\n\n wrapper.append($(\"
\").addClass(viewStyles.cardDeck));\n\n var buttonRight = this._renderScrollButton(viewStyles.scrollButtonIconRight);\n wrapper.append(buttonRight);\n } else {\n wrapper.addClass(viewStyles.cardList);\n }\n\n return wrapper;\n },\n\n _renderScrollButton: function(directionClass) {\n var viewStyles = ChatView.styles;\n\n return $(\"