{"version":3,"file":"kendo.aiprompt.views.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendoaiprompt","views","js","this","$","Widget","kendo","ui","AIPromptBaseView","extend","init","element","options","that","fn","call","aiprompt","getKendoAIPrompt","contentElement","footerElement","buttonText","buttonIcon","name","render","_renderContent","_renderFooter","_renderContentElement","content","addClass","append","_renderFooterElement","footer","destroy","off","remove","DEFAULT_PROMPT_VIEW_TEMPLATE","suggestions","promptSuggestionItemTemplate","messages","length","promptSuggestions","map","suggestion","join","DEFAULT_PROMPT_VIEW_FOOTER_TEMPLATE","generateOutput","DEFAULT_PROMPT_VIEW_SUGGESTION_ITEM_TEMPLATE","AIPromptPromptView","template","viewTemplate","footerTemplate","setTextAreaValue","value","find","getKendoTextArea","_focusSuggestion","attr","trigger","initializeComponents","kendoTextArea","resize","placeholder","promptPlaceholder","kendoButton","icon","themeColor","rounded","click","e","isRetry","prompt","first","nextExpanderContentId","guid","expanderButton","next","fillMode","target","closest","iconEl","sender","is","toggle","on","text","keyCode","preventDefault","prev","siblings","last","DEFAULT_OUTPUT_CARD_TEMPLATE_FUNC","output","showOutputRating","id","outputTitle","copyOutput","retryGeneration","ratePositive","rateNegative","DEFAULT_OUTPUT_VIEW_TEMPLATE","promptOutputs","AIPromptOutputView","addPromptOutput","unshift","renderPromptOutput","card","outputsContainer","_getOutputFromElement","data","parentElement","promptOutput","navigator","clipboard","writeText","rateType","AIPromptCommandsView","promptCommands","commandItems","panelBarEl","kendoPanelBar","animation","dataSource","selectable","select","ev","item","dataItem","hasChildren","EMPTY_TEMPLATE","AIPromptCustomView","window","jQuery"],"sources":["kendo.aiprompt.views.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.icons.js'), require('kendo.textarea.js'), require('kendo.button.js'), require('kendo.panelbar.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.core', 'kendo.icons', 'kendo.textarea', 'kendo.button', 'kendo.panelbar'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendoaiprompt = global.kendoaiprompt || {}, global.kendoaiprompt.views = global.kendoaiprompt.views || {}, global.kendoaiprompt.views.js = factory()));\n})(this, (function () {\n (function($) {\n let Widget = kendo.ui.Widget;\n\n let AIPromptBaseView = kendo.ui.AIPromptBaseView = Widget.extend({\n init: function(element, options) {\n let that = this;\n\n Widget.fn.init.call(that, element, options);\n\n that.aiprompt = element.getKendoAIPrompt();\n\n that.contentElement = that.options.contentElement;\n that.footerElement = that.options.footerElement;\n that.buttonText = that.options.buttonText;\n that.buttonIcon = that.options.buttonIcon;\n },\n\n options: {\n name: \"AIPromptBaseView\",\n buttonText: \"\",\n buttonIcon: \"\",\n },\n\n render: function() {\n let that = this;\n\n that._renderContent();\n that._renderFooter();\n },\n\n _renderContentElement: function() {\n let that = this;\n let content = $(\"
\").addClass(\"k-prompt-content\");\n that.contentElement = content;\n that.element.append(content);\n\n return that.contentElement;\n },\n\n _renderFooterElement: function() {\n let that = this;\n let footer = $(\"
\").addClass(\"k-prompt-footer\");\n that.footerElement = footer;\n that.element.append(footer);\n\n return that.footerElement;\n },\n\n destroy: function() {\n let that = this;\n Widget.fn.destroy.call(that);\n\n if (that.contentElement) {\n that.contentElement.off();\n kendo.destroy(that.contentElement);\n that.contentElement.remove();\n }\n\n if (that.footerElement) {\n that.footerElement.off();\n kendo.destroy(that.footerElement);\n that.footerElement.remove();\n }\n }\n });\n\n let DEFAULT_PROMPT_VIEW_TEMPLATE = ({ suggestions, promptSuggestionItemTemplate, messages }) => `
\n \n ${suggestions?.length ?\n `
\n \n
\n ${suggestions.map(suggestion => promptSuggestionItemTemplate({ suggestion })).join(\"\")}\n
\n
` : ''\n }\n
`;\n\n let DEFAULT_PROMPT_VIEW_FOOTER_TEMPLATE = ({ messages }) => `
\n \n
`;\n\n let DEFAULT_PROMPT_VIEW_SUGGESTION_ITEM_TEMPLATE = ({ suggestion }) => `
${suggestion}
`;\n kendo.ui.AIPromptPromptView = AIPromptBaseView.extend({\n init: function(element, options) {\n let that = this;\n\n AIPromptBaseView.fn.init.call(that, element, options);\n that.promptSuggestions = that.options.promptSuggestions;\n that.promptSuggestionItemTemplate = kendo.template(that.options.promptSuggestionItemTemplate || DEFAULT_PROMPT_VIEW_SUGGESTION_ITEM_TEMPLATE);\n },\n options: {\n name: \"AIPromptPromptView\",\n buttonIcon: \"sparkles\",\n },\n\n _renderContent: function() {\n let that = this;\n let suggestions = that.promptSuggestions;\n let promptSuggestionItemTemplate = that.promptSuggestionItemTemplate;\n let content = kendo.template(that.options.viewTemplate || DEFAULT_PROMPT_VIEW_TEMPLATE)({ suggestions, promptSuggestionItemTemplate, messages: that.options.messages });\n\n that._renderContentElement();\n that.contentElement.append(content);\n },\n\n _renderFooter: function() {\n let that = this;\n let footer = kendo.template(that.options.footerTemplate || DEFAULT_PROMPT_VIEW_FOOTER_TEMPLATE)({ messages: that.options.messages });\n\n that._renderFooterElement();\n that.footerElement.append(footer);\n },\n\n setTextAreaValue: function(value) {\n let that = this;\n that.contentElement.find(\"textarea[ref-prompt-input]\").getKendoTextArea().value(value);\n },\n\n _focusSuggestion(element) {\n let that = this;\n if (!element || !element.length) {\n return;\n }\n\n that.contentElement.find(\".k-prompt-suggestion[tabindex=0]\").attr(\"tabindex\", \"-1\");\n element.attr(\"tabindex\", \"0\").trigger(\"focus\");\n },\n\n initializeComponents: function() {\n let that = this;\n let suggestions = that.promptSuggestions;\n\n that.contentElement.find(\"textarea[ref-prompt-input]\").kendoTextArea({\n resize: \"vertical\",\n placeholder: that.options.messages.promptPlaceholder\n });\n\n that.footerElement.find(\"button[ref-generate-output-button]\").kendoButton({\n icon: \"sparkles\",\n themeColor: \"primary\",\n rounded: \"full\",\n click: function(e) {\n that.aiprompt.trigger(\"promptRequest\", {\n isRetry: false,\n prompt: that.contentElement.find(\"textarea[ref-prompt-input]\").getKendoTextArea().value()\n });\n }\n });\n\n if (suggestions?.length) {\n that.contentElement.find(\".k-prompt-suggestion\").first().attr(\"tabindex\", \"0\");\n let nextExpanderContentId = kendo.guid();\n let expanderButton = that.contentElement.find(\".k-prompt-expander button[ref-prompt-suggestions-button]\");\n\n that.contentElement.find(\".k-prompt-expander button[ref-prompt-suggestions-button]\").attr(\"aria-controls\", nextExpanderContentId);\n expanderButton.next(\".k-prompt-expander-content\").attr(\"id\", nextExpanderContentId);\n\n that.contentElement.find(\".k-prompt-expander button[ref-prompt-suggestions-button]\").kendoButton({\n icon: \"chevron-up\",\n fillMode: \"flat\",\n click: function(e) {\n let expander = $(e.target).closest(\".k-prompt-expander\");\n let content = expander.find(\".k-prompt-expander-content\");\n let iconEl = e.sender.element.find(\".k-icon\");\n kendo.ui.icon(iconEl, content.is(\":visible\") ? \"chevron-down\" : \"chevron-up\");\n content.toggle();\n e.sender.element.attr(\"aria-expanded\", content.is(\":visible\"));\n }\n });\n\n that.contentElement.on(\"click\", \".k-prompt-suggestion\", function(e) {\n that.setTextAreaValue($(e.target).text());\n });\n\n that.contentElement.on(\"keydown\", \".k-prompt-suggestion\", function(e) {\n if (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 36 || e.keyCode === 35 || e.keyCode === 13 || e.keyCode === 32) {\n e.preventDefault();\n let target = $(e.target);\n let siblings = target.siblings();\n let next, prev;\n\n // down arrow\n if (e.keyCode === 40) {\n next = target.next();\n that._focusSuggestion(next);\n }\n\n // up arrow\n if (e.keyCode === 38) {\n prev = target.prev();\n that._focusSuggestion(prev);\n }\n\n // home\n if (e.keyCode === 36) {\n prev = siblings.first();\n that._focusSuggestion(prev);\n }\n\n // end\n if (e.keyCode === 35) {\n next = siblings.last();\n that._focusSuggestion(next);\n }\n\n // enter or space\n if (e.keyCode === 13 || e.keyCode === 32) {\n that.setTextAreaValue($(e.target).text());\n }\n }\n });\n }\n },\n\n render: function() {\n let that = this;\n\n that._renderContent();\n that._renderFooter();\n that.initializeComponents();\n },\n });\n\n let DEFAULT_OUTPUT_CARD_TEMPLATE_FUNC = ({ output, showOutputRating, messages }) => `\n
\n
\n
${messages.outputTitle}
\n
${output.prompt}
\n
\n
\n

${output.output}

\n
\n
\n \n \n\n \n ${showOutputRating ? `\n \n \n ` : \"\"}\n
\n
`;\n\n let DEFAULT_OUTPUT_VIEW_TEMPLATE = ({ promptOutputs, showOutputRating, messages }) => `
\n ${promptOutputs ? promptOutputs.map(output => DEFAULT_OUTPUT_CARD_TEMPLATE_FUNC({ output, showOutputRating, messages })).join(\"\") : ''}\n
`;\n\n kendo.ui.AIPromptOutputView = AIPromptBaseView.extend({\n init: function(element, options) {\n let that = this;\n\n AIPromptBaseView.fn.init.call(that, element, options);\n\n that.promptOutputs = (that.options.promptOutputs || []).map(output => {\n output.id = output.id || kendo.guid();\n return output;\n });\n\n that.showOutputRating = that.options.showOutputRating;\n },\n\n options: {\n name: \"AIPromptOutputView\",\n buttonIcon: \"comment\",\n promptOutputs: []\n },\n\n addPromptOutput: function(output) {\n let that = this;\n output.id = output.id || kendo.guid();\n that.promptOutputs.unshift(output);\n that.renderPromptOutput(output);\n },\n\n renderPromptOutput: function(output) {\n let that = this;\n let showOutputRating = that.options.showOutputRating;\n let messages = that.options.messages;\n\n let card = $(kendo.template(DEFAULT_OUTPUT_CARD_TEMPLATE_FUNC)({ output, showOutputRating, messages }));\n that.outputsContainer.append(card);\n that.initializeComponents(card);\n },\n\n _renderContent: function() {\n let that = this;\n let promptOutputs = that.promptOutputs;\n let showOutputRating = that.options.showOutputRating;\n let messages = that.options.messages;\n\n let outputsContainer = kendo.template(that.viewTemplate || DEFAULT_OUTPUT_VIEW_TEMPLATE)({ promptOutputs, showOutputRating, messages });\n that.outputsContainer = $(outputsContainer);\n that._renderContentElement();\n that.contentElement.append(that.outputsContainer);\n },\n\n _getOutputFromElement: function(element) {\n let that = this;\n let card = $(element).closest(\".k-card\");\n let id = card.data(\"id\");\n\n let promptOutput = that.promptOutputs.find(output => output.id === id);\n\n return promptOutput;\n },\n\n initializeComponents: function(parentElement) {\n let that = this;\n parentElement = parentElement || that.contentElement;\n\n parentElement.find(\"[ref-copy-button]\").kendoButton({\n icon: \"copy\",\n fillMode: \"flat\",\n themeColor: \"primary\",\n click: function(e) {\n let promptOutput = that._getOutputFromElement(e.target);\n if (!that.aiprompt.trigger(\"outputCopy\", { output: promptOutput, prompt: promptOutput.prompt })) {\n if (navigator.clipboard && typeof navigator.clipboard.writeText === \"function\") {\n navigator.clipboard.writeText(promptOutput.output);\n }\n }\n }\n });\n\n parentElement.find(\"[ref-retry-button]\").kendoButton({\n icon: \"arrow-rotate-cw\",\n fillMode: \"flat\",\n click: function(e) {\n let promptOutput = that._getOutputFromElement(e.target);\n\n that.aiprompt.trigger(\"promptRequest\", { isRetry: true, prompt: promptOutput.prompt, output: promptOutput });\n }\n });\n\n if (that.options.showOutputRating) {\n parentElement.find(\"[ref-rate-positive]\").kendoButton({\n icon: \"thumb-up-outline\",\n fillMode: \"flat\",\n click: function(e) {\n let promptOutput = that._getOutputFromElement(e.target);\n let rateType = \"positive\";\n\n that.aiprompt.trigger(\"outputRatingChange\", { rateType, output: promptOutput });\n\n kendo.ui.icon(e.sender.element.find(\".k-icon\"), \"thumb-up\");\n kendo.ui.icon(e.target.next(\"[ref-rate-negative]\").find(\".k-icon\"), \"thumb-down-outline\");\n }\n });\n\n parentElement.find(\"[ref-rate-negative]\").kendoButton({\n icon: \"thumb-down-outline\",\n fillMode: \"flat\",\n click: function(e) {\n let promptOutput = that._getOutputFromElement(e.target);\n let rateType = \"negative\";\n that.aiprompt.trigger(\"outputRatingChange\", { rateType, output: promptOutput });\n\n kendo.ui.icon(e.sender.element.find(\".k-icon\"), \"thumb-down\");\n kendo.ui.icon(e.target.prev(\"[ref-rate-positive]\").find(\".k-icon\"), \"thumb-up-outline\");\n }\n });\n }\n },\n\n render: function() {\n let that = this;\n that._renderContent();\n that.initializeComponents();\n\n that.contentElement.on(\"keydown\", \".k-card\", function(e) {\n let target = $(e.target);\n\n // if up or down arrow, focus next or previous card\n // if home or end, focus first or last card\n if (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 36 || e.keyCode === 35) {\n e.preventDefault();\n\n // down arrow\n if (e.keyCode === 40) {\n target.next(\".k-card\").trigger(\"focus\");\n }\n\n // up arrow\n if (e.keyCode === 38) {\n target.prev(\".k-card\").trigger(\"focus\");\n }\n\n // home\n if (e.keyCode === 36) {\n that.contentElement.find(\".k-card\").first().trigger(\"focus\");\n }\n\n // end\n if (e.keyCode === 35) {\n that.contentElement.find(\".k-card\").last().trigger(\"focus\");\n }\n }\n });\n }\n });\n\n kendo.ui.AIPromptCommandsView = AIPromptBaseView.extend({\n options: {\n name: \"AIPromptCommandsView\",\n buttonText: \"\",\n buttonIcon: \"more-horizontal\",\n promptCommands: []\n },\n\n initializeComponents: function() {\n let that = this;\n let commandItems = that.options.promptCommands;\n\n let panelBarEl = $(\"
\").kendoPanelBar({\n animation: false,\n dataSource: commandItems,\n selectable: false,\n select: function(ev) {\n let item = $(ev.item);\n let dataItem = this.dataItem(item);\n if (dataItem.hasChildren) {\n return;\n }\n\n that.aiprompt.trigger(\"commandExecute\", { sender: that.aiprompt, item: dataItem });\n }\n });\n\n that.contentElement.append(panelBarEl);\n },\n\n render: function() {\n let that = this;\n that._renderContentElement();\n that.initializeComponents();\n },\n });\n\n let EMPTY_TEMPLATE = () => \"\";\n kendo.ui.AIPromptCustomView = AIPromptBaseView.extend({\n options: {\n name: \"AIPromptCustomView\",\n buttonText: \"\",\n buttonIcon: \"\",\n viewTemplate: EMPTY_TEMPLATE,\n footerTemplate: EMPTY_TEMPLATE,\n },\n\n initializeComponents: function() {\n let that = this;\n if (typeof that.options.initializeComponents === \"function\") {\n that.options.initializeComponents.call(that);\n }\n },\n\n _renderContent: function() {\n let that = this;\n let content = kendo.template(that.options.viewTemplate)({ aiprompt: that });\n\n that._renderContentElement();\n that.contentElement.append(content);\n },\n\n _renderFooter: function() {\n let that = this;\n if (that.options.footerTemplate === EMPTY_TEMPLATE) {\n return;\n }\n\n let footer = kendo.template(that.options.footerTemplate)({ messages: that.options.messages });\n\n that._renderFooterElement();\n that.footerElement.append(footer);\n },\n render: function() {\n let that = this;\n that._renderContent();\n that._renderFooter();\n that.initializeComponents();\n },\n });\n\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}