{"version":3,"file":"kendo.html.icon.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendohtml","icon","js","this","$","undefined$1","kendo","window","extend","HTMLBase","html","KI_PREFFIX","KSVG_PREFFIX","FLIP_PREFIX","FLIP_HORIZONTAL","FLIP_VERTICAL","ICON_TYPES","svg","element","options","HTMLSvgIcon","font","HTMLFontIcon","FLIP_CLASSES","default","horizontal","vertical","both","HTMLBaseIcon","init","fn","call","_wrapper","name","size","themeColor","flip","iconClass","stylingOptions","_addClasses","that","previouslyAddedClasses","wrapper","data","map","option","cssProperties","getValidClass","widget","propName","value","prefix","fill","fillMode","removeClass","filter","x","_className","join","concat","addClass","currentIconClass","className","split","find","includes","startsWith","empty","svgElm","regex","iconNameMatch","match","replace","isString","toUpperCase","ui","svgIcons","attr","isPlainObject","viewBox","focusable","xmlns","content","append","outerHTML","renderIcon","isPresent","type","defaults","iconType","isFunction","getIconRenderer","registerPrefix","registerValues","prop","values","sizeValues","jQuery"],"sources":["kendo.html.icon.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.html.base.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.html.base'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendohtml = global.kendohtml || {}, global.kendohtml.icon = global.kendohtml.icon || {}, global.kendohtml.icon.js = factory()));\n})(this, (function () {\n var __meta__ = {\n id: \"html.icon\",\n name: \"Html.Icon\",\n category: \"web\",\n description: \"HTML font icon rendering utility for Kendo UI for jQuery.\",\n depends: [\"html.base\"]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n extend = $.extend,\n HTMLBase = kendo.html.HTMLBase;\n\n var KFONTICON = 'k-icon k-font-icon';\n var KI_PREFFIX = 'k-i-';\n var KSVGICON = 'k-icon k-svg-icon';\n var KSVG_PREFFIX = 'k-svg-i-';\n\n var FLIP_PREFIX = 'k-flip-';\n var FLIP_HORIZONTAL = `${FLIP_PREFIX}h`;\n var FLIP_VERTICAL = `${FLIP_PREFIX}v`;\n\n var THEME_COLOR_PREFIX = 'k-color-';\n\n var ICON_TYPES = {\n 'svg': (element, options) => new HTMLSvgIcon(element, options),\n 'font': (element, options) => new HTMLFontIcon(element, options)\n };\n\n var FLIP_CLASSES = {\n default: '',\n horizontal: FLIP_HORIZONTAL,\n vertical: FLIP_VERTICAL,\n both: `${FLIP_HORIZONTAL} ${FLIP_VERTICAL}`\n };\n\n var renderIcon = function(element, options) {\n if (!element || $.isPlainObject(element) || kendo.isString(element)) {\n options = element;\n element = $(\"\");\n }\n\n if (kendo.isString(options)) {\n options = {\n icon: options\n };\n }\n\n if (!kendo.isPresent(options.type)) {\n options.type = kendo.defaults.iconType ? kendo.defaults.iconType : 'svg';\n }\n\n if (kendo.isFunction(options.type)) {\n return options.type(element, options);\n }\n\n if (!kendo.isFunction(ICON_TYPES[options.type])) {\n return null;\n }\n\n return (ICON_TYPES[options.type](element, options)).html();\n };\n\n var HTMLBaseIcon = HTMLBase.extend({\n init: function(element, options) {\n var that = this;\n HTMLBase.fn.init.call(that, element, options);\n that._wrapper();\n },\n options: {\n name: 'HTMLIcon',\n size: 'none',\n themeColor: 'none',\n flip: 'default',\n iconClass: '',\n stylingOptions: [ 'size', 'themeColor', 'fill' ]\n },\n _wrapper: function() {\n var that = this;\n\n that._addClasses();\n },\n _addClasses: function() {\n var that = this,\n options = that.options,\n stylingOptions = options.stylingOptions,\n previouslyAddedClasses = that.wrapper.data(\"added-classes\");\n\n stylingOptions = stylingOptions.map(function(option) {\n if (option === 'themeColor') {\n return kendo.cssProperties.getValidClass({\n widget: options.name,\n propName: option,\n value: options[option],\n prefix: THEME_COLOR_PREFIX\n });\n }\n\n if (option === 'fill') {\n return FLIP_CLASSES[options.flip];\n }\n\n return kendo.cssProperties.getValidClass({\n widget: options.name,\n propName: option,\n value: options[option],\n fill: options.fillMode\n });\n });\n\n if (previouslyAddedClasses) {\n that.wrapper.removeClass(previouslyAddedClasses.filter(x => x !== that._className).join(\" \"));\n }\n\n that.wrapper.data(\"added-classes\", stylingOptions.concat([that._className]));\n that.wrapper.addClass(stylingOptions.join(\" \"));\n }\n });\n\n var HTMLFontIcon = HTMLBaseIcon.extend({\n init: function(element, options) {\n HTMLBaseIcon.fn.init.call(this, element, options);\n },\n options: extend({}, HTMLBaseIcon.fn.options, {\n name: 'HTMLFontIcon',\n icon: null\n }),\n _wrapper: function() {\n var that = this,\n // Find if there is an existing k-i- class appended to the element.\n currentIconClass = that.element[0].className.split(\" \").find(x => x.includes(KI_PREFFIX)),\n className = that.options.icon ? `${that.options.icon.startsWith(KI_PREFFIX) ? \"\" : KI_PREFFIX}${that.options.icon}` : \"\";\n\n that._className = className;\n that.wrapper = that.element\n .addClass(KFONTICON)\n .removeClass(currentIconClass) // Remove any existing icons.\n .addClass(className)\n .addClass(that.options.iconClass || '');\n\n HTMLBaseIcon.fn._wrapper.call(this);\n }\n });\n\n var HTMLSvgIcon = HTMLBaseIcon.extend({\n init: function(element, options) {\n // Ensure that the inner contents of the wrapping span element are always removed for re-rendering purposes.\n element.empty();\n HTMLBaseIcon.fn.init.call(this, element, options);\n },\n options: extend({}, HTMLBaseIcon.fn.options, {\n name: 'HTMLSVGIcon',\n icon: null\n }),\n _wrapper: function() {\n var that = this,\n icon = that.options.icon,\n iconClass = that.options.iconClass,\n // Find if there is an existing k-svg-i- class appended to the element.\n currentIconClass = that.element[0].className.split(\" \").find(x => x.includes(KSVG_PREFFIX)),\n svgElm = $(''),\n className;\n\n if (!icon && iconClass) {\n // match k-i-(some-icon-name)\n const regex = /k-i-(\\w+(?:-\\w+)*)/;\n let iconNameMatch = iconClass.match(regex);\n if (iconNameMatch) {\n icon = iconNameMatch[1];\n iconClass = iconClass.replace(iconNameMatch[0], \"\");\n }\n }\n\n if (kendo.isString(icon)) {\n // remove k-i- and convert kebab-case-icon to camelCaseIcon\n icon = icon.replace('k-i-', '').replace(/-./g, x=>x[1].toUpperCase());\n icon = kendo.ui.svgIcons[icon] || kendo.ui.svgIcons[`${icon}Icon`];\n }\n\n className = icon && icon.name ? `${KSVG_PREFFIX}${icon.name}` : '';\n that._className = className;\n\n that.wrapper = that.element\n .addClass(KSVGICON)\n .removeClass(currentIconClass) // Remove any existing icons.\n .addClass(className)\n .addClass(iconClass || '')\n .attr(\"aria-hidden\", true);\n\n if ($.isPlainObject(icon)) {\n svgElm.attr('viewBox', icon.viewBox || '')\n .attr({\n 'viewBox': icon.viewBox || '',\n 'focusable': 'false',\n 'xmlns': 'http://www.w3.org/2000/svg'\n })\n .html(icon.content || '');\n\n that.wrapper.append(svgElm[0].outerHTML);\n }\n\n HTMLBaseIcon.fn._wrapper.call(this);\n }\n });\n\n $.extend(kendo.html, {\n renderIcon: renderIcon,\n HTMLFontIcon: HTMLFontIcon,\n HTMLSvgIcon: HTMLSvgIcon,\n getIconRenderer: (type) => ICON_TYPES[type]\n });\n\n kendo.cssProperties.registerPrefix(\"HTMLFontIcon\", \"k-icon-\");\n\n kendo.cssProperties.registerValues(\"HTMLFontIcon\", [{\n prop: \"size\",\n values: kendo.cssProperties.sizeValues.concat([['xsmall', 'xs'], ['xlarge', 'xl'], ['xxlarge', 'xxl'], ['xxxlarge', 'xxxl']])\n }, {\n prop: \"themeColor\",\n values: ['primary', 'secondary', 'tertiary', 'inherit', 'info', 'success', 'warning', 'error', 'dark', 'light', 'inverse']\n }]);\n\n kendo.cssProperties.registerPrefix(\"HTMLSVGIcon\", \"k-icon-\");\n\n kendo.cssProperties.registerValues(\"HTMLSVGIcon\", [{\n prop: \"size\",\n values: kendo.cssProperties.sizeValues.concat([['xsmall', 'xs'], ['xlarge', 'xl'], ['xxlarge', 'xxl'], ['xxxlarge', 'xxxl']])\n }, {\n prop: \"themeColor\",\n values: ['primary', 'secondary', 'tertiary', 'inherit', 'info', 'success', 'warning', 'error', 'dark', 'light', 'inverse']\n }]);\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}