UNPKG

@progress/kendo-ui

Version:

This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.

3 lines 6.87 kB
/* @license */ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("kendo.html.base.min.js")):typeof define==`function`&&define.amd?define([`exports`,`kendo.html.base.min`],t):(e=typeof globalThis<`u`?globalThis:e||self,t((e.kendo=e.kendo||{},e.kendo._globals=e.kendo._globals||{},e.kendo._globals.HtmlIcon={}),e.kendo._globals.HtmlBase))})(this,function(e,t){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});let n=new class{constructor(){this.overrides={},this._hasOverrides=!1,this.registry=new WeakMap,this._tokenCounter=0,this._activeContexts=new Map,this._contextOrder=[]}setIcons(e){let t=Object.keys(e);for(let n=0;n<t.length;n++){let r=t[n],i=e[r];if(typeof i==`string`||this.isSVGIcon(i))this.overrides[r]=i;else if(typeof i==`object`&&i){(!this.overrides[r]||this.isSVGIcon(this.overrides[r])||typeof this.overrides[r]==`string`)&&(this.overrides[r]={});let e=Object.keys(i);for(let t=0;t<e.length;t++)this.overrides[r][e[t]]=i[e[t]]}}this._hasOverrides=!0}beginInit(e,t){let n=++this._tokenCounter;return this._activeContexts.set(n,e),this._contextOrder.push(n),t&&this.registerElement(t,e),n}registerElement(e,t){let n=this._contextOrder.length>0?this._contextOrder[0]:null,r=n===null?t:this._activeContexts.get(n);this.registry.set(e,{root:r,self:t})}finalizeContext(e){this._activeContexts.delete(e);let t=this._contextOrder.indexOf(e);t!==-1&&this._contextOrder.splice(t,1)}resolve(e,t){if(!this._hasOverrides)return null;let n;if(this._contextOrder.length>0){n=[];for(let e=0;e<this._contextOrder.length;e++)n.push(this._activeContexts.get(this._contextOrder[e]))}else if(t){let e=this.registry.get(t)||this._findAncestorContext(t);e&&(n=e.root===e.self?[e.root]:[e.root,e.self])}if(n)for(let t=0;t<n.length;t++){let r=this.overrides[n[t]];if(r&&!this.isSVGIcon(r)&&typeof r!=`string`){let t=r[e];if(t)return t}}let r=this.overrides[e];return r&&(this.isSVGIcon(r)||typeof r==`string`)?r:null}reset(){this.overrides={},this._hasOverrides=!1,this._activeContexts.clear(),this._contextOrder=[],this._tokenCounter=0}_findAncestorContext(e){let t=e.parentElement;for(;t;){let e=this.registry.get(t);if(e)return e;t=t.parentElement}}isSVGIcon(e){return typeof e==`object`&&!!e&&`name`in e&&`viewBox`in e&&`content`in e}},r={id:`html.icon`,name:`Html.Icon`,category:`web`,description:`HTML font icon rendering utility for Kendo UI for jQuery.`,depends:[`html.base`]};(function(e,t){let r=window.kendo,i=e.extend,a=r.html.HTMLBase,o=`k-i-`,s=`k-svg-i-`;function c(e,t){let i=n.resolve(e,t);if(typeof i==`string`){let e=i.replace(/-./g,function(e){return e[1].toUpperCase()});return r.ui.svgIcons[e]||r.ui.svgIcons[e+`Icon`]||null}return i}let l=`k-flip-`,u=`${l}h`,d=`${l}v`,f={svg:(e,t)=>new y(e,t),font:(e,t)=>new v(e,t)},p={default:``,horizontal:u,vertical:d,both:`${u} ${d}`},m=[`solid`,`outline`,`duotone`],h=function(t,n){if((!t||e.isPlainObject(t)||r.isString(t))&&(n=t,t=e(`<span></span>`)),r.isString(n)){let e=n.split(`:`),t={icon:e[0]};e.length>1&&m.indexOf(e[1])>-1&&(t.variant=e[1]),n=t}return r.isPresent(n.type)||(n.type=r.defaults.iconType?r.defaults.iconType:`svg`),r.isFunction(n.type)?n.type(t,n):r.isFunction(f[n.type])?f[n.type](t,n).html():null};function g(e){let t=/^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/i;return e.replace(/<([a-z][a-z0-9:-]*)([^>]*)\/>/gi,(e,n,r)=>t.test(n)?`<${n}${r}/>`:`<${n}${r}></${n}>`)}let _=a.extend({init:function(e,t){let n=this;a.fn.init.call(n,e,t),n._wrapper()},options:{name:`HTMLIcon`,size:`none`,themeColor:`none`,flip:`default`,iconClass:``,stylingOptions:[`size`,`themeColor`,`fill`]},_wrapper:function(){this._addClasses()},_addClasses:function(){var e=this,t=e.options,n=t.stylingOptions,i=e.wrapper.data(`added-classes`);n=n.map(function(e){return e===`themeColor`?r.cssProperties.getValidClass({widget:t.name,propName:e,value:t[e],prefix:`k-color-`}):e===`fill`?p[t.flip]:r.cssProperties.getValidClass({widget:t.name,propName:e,value:t[e],fill:t.fillMode})}),i&&e.wrapper.removeClass(i.filter(t=>t!==e._className).join(` `)),e.wrapper.data(`added-classes`,n.concat([e._className])),e.wrapper.addClass(n.join(` `))}}),v=_.extend({init:function(e,t){_.fn.init.call(this,e,t)},options:i({},_.fn.options,{name:`HTMLFontIcon`,icon:null}),_wrapper:function(){let e=this,t=typeof e.options.icon==`string`?e.options.icon.replace(o,``):null,r=t&&n.resolve(t,e.element[0]),i=e.element[0].className.split(` `).find(e=>e.includes(o)),a=typeof r==`string`?r:e.options.icon,s=a?`${a.startsWith(o)?``:o}${a}`:``;e._className=s,e.wrapper=e.element.addClass(`k-icon k-font-icon`).removeClass(i).addClass(s).addClass(e.options.iconClass||``),_.fn._wrapper.call(this)}});var y=_.extend({init:function(e,t){e.empty(),_.fn.init.call(this,e,t)},options:i({},_.fn.options,{name:`HTMLSVGIcon`,icon:null,variant:null}),_wrapper:function(){let t=this,n=t.options.icon,i=t.options.iconClass,a=t.element[0].className.split(` `).find(e=>e.includes(s)),o=e(`<svg></svg>`),l;if(!n&&i){let e=i.match(/k-i-(\w+(?:-\w+)*)/);e&&(n=e[1],i=i.replace(e[0],``))}if(r.isString(n)){let e=n.replace(`k-i-`,``),i=e.match(/-(solid|outline|duotone)$/);i&&(e=e.replace(i[0],``),t.options.variant||(t.options.variant=i[1]));let a=c(e,t.element[0]);if(a)n=a;else{let t=e.replace(/-(solid|outline|duotone)/,``).replace(/-./g,e=>e[1].toUpperCase());n=r.ui.svgIcons[t]||r.ui.svgIcons[`${t}Icon`]}}else if(e.isPlainObject(n)&&n.name){let e=c(n.name,t.element[0]);e&&(n=e)}if(l=n&&n.name?`${s}${n.name}`:``,t._className=l,t.wrapper=t.element.addClass(`k-icon k-svg-icon`).removeClass(a).addClass(l).addClass(i||``).attr(`aria-hidden`,`true`),e.isPlainObject(n)){let e=n.content||``,r=t.options.variant;r&&n.variants&&n.variants[r]&&(e=n.variants[r]),o.attr(`viewBox`,n.viewBox||``).attr({viewBox:n.viewBox||``,"aria-hidden":`true`,focusable:`false`,xmlns:`http://www.w3.org/2000/svg`}).html(g(e)),t.wrapper.append(o[0].outerHTML)}_.fn._wrapper.call(this)}});e.extend(r.html,{renderIcon:h,HTMLFontIcon:v,HTMLSvgIcon:y,getIconRenderer:e=>f[e]}),r.cssProperties.registerPrefix(`HTMLFontIcon`,`k-icon-`),r.cssProperties.registerValues(`HTMLFontIcon`,[{prop:`size`,values:r.cssProperties.sizeValues.concat([[`xsmall`,`xs`],[`xlarge`,`xl`],[`xxlarge`,`xxl`],[`xxxlarge`,`xxxl`]])},{prop:`themeColor`,values:[`primary`,`secondary`,`tertiary`,`inherit`,`info`,`success`,`warning`,`error`,`inverse`]}]),r.cssProperties.registerPrefix(`HTMLSVGIcon`,`k-icon-`),r.cssProperties.registerValues(`HTMLSVGIcon`,[{prop:`size`,values:r.cssProperties.sizeValues.concat([[`xsmall`,`xs`],[`xlarge`,`xl`],[`xxlarge`,`xxl`],[`xxxlarge`,`xxxl`]])},{prop:`themeColor`,values:[`primary`,`secondary`,`tertiary`,`inherit`,`info`,`success`,`warning`,`error`,`inverse`]}])})(window.kendo.jQuery);var i=kendo;e.__meta__=r,e.default=i}); //# sourceMappingURL=kendo.html.icon.min.js.map