{"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 = $(\"<span></span>\");\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 = $('<svg></svg>'),\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"]}