{"version":3,"sources":["jsdelivr-header.js","/npm/jquery-ui-themeroller@0.0.9/lib/themeroller.js"],"names":[],"mappings":"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","file":"/npm/jquery-ui-themeroller@0.0.9/lib/themeroller.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/jquery-ui-themeroller@0.0.9/lib/themeroller.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var colorVars, textureVars,\n\tasync = require( \"async\" ),\n\textend = require( \"util\" )._extend,\n\tImage = require( \"./themeroller-image\" ),\n\tquerystring = require( \"querystring\" ),\n\tsemver = require( \"semver\" ),\n\ttextures = require( \"./themeroller-textures\" );\n\ncolorVars = \"bgColorActive bgColorContent bgColorDefault bgColorError bgColorHeader bgColorHighlight bgColorHover bgColorOverlay bgColorShadow borderColorActive borderColorContent borderColorDefault borderColorError borderColorHeader borderColorHighlight borderColorHover fcActive fcContent fcDefault fcError fcHeader fcHighlight fcHover iconColorActive iconColorContent iconColorDefault iconColorError iconColorHeader iconColorHighlight iconColorHover\".split( \" \" );\ntextureVars = \"bgTextureDefault bgTextureHover bgTextureActive bgTextureHeader bgTextureContent bgTextureHighlight bgTextureError bgTextureOverlay bgTextureShadow\".split( \" \" );\n\n// Hard coded css Y image positioning - context accepts button or panel\nfunction cssYPos( texture, context ) {\n\tvar YPos;\n\tif ( texture === \"flat\" ) {\n\t\treturn \"\";\n\t}\n\tYPos = \"50%\";\n\tif ( context === \"panel\" ) {\n\t\tif ( texture === \"highlight_soft\" || texture === \"highlight_hard\" || texture === \"gloss_wave\" ) {\n\t\t\tYPos = \"top\";\n\t\t} else if ( texture === \"inset_soft\" || texture === \"inset_hard\" ) {\n\t\t\tYPos = \"bottom\";\n\t\t} else if ( texture === \"glow_ball\" ) {\n\t\t\tYPos = \"35%\";\n\t\t} else if ( texture === \"spotlight\" ) {\n\t\t\tYPos = \"2%\";\n\t\t}\n\t}\n\treturn YPos;\n}\n\n// Hard coded css X image positioning - context accepts button or panel\nfunction cssXPos( texture ) {\n\tif ( texture === \"flat\" ) {\n\t\treturn \"\";\n\t}\n\n\t// No conditions yet, may need some for vertical slider patterns.\n\t// XPos = \"50%\";\n\treturn \"50%\";\n}\n\n// Add '#' in the beginning of the colors if needed\nfunction hashColor( color ) {\n\t\tif ( color && ( color.length === 3 || color.length === 6 ) && /^[0-9a-f]+$/i.test( color ) ) {\n\t\t\tcolor = \"#\" + color;\n\t\t}\n\t\treturn color;\n}\n\n// Update textureVars from previous filename format (eg. 02_glass.png) to type-only format (eg. glass). Changed on images generation rewrite (port to nodejs).\nfunction oldImagesBackCompat( vars ) {\n\ttextureVars.forEach( function( textureVar ) {\n\t\tvar newValue, value;\n\t\tif ( textureVar in vars ) {\n\t\t\tvalue = vars[ textureVar ];\n\t\t\tnewValue = value.replace( /[0-9]*_([^\\.]*).png/, \"$1\" );\n\t\t\tif ( value !== newValue ) {\n\t\t\t\tvars[ textureVar ] = newValue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\ntextures = textures.reduce( function( sum, texture ) {\n\tsum[ texture.type ] = texture;\n\treturn sum;\n}, {} );\n\n/**\n * ThemeRoller\n */\nfunction ThemeRoller( baseThemeCss, vars, options ) {\n\tvar opacityFilter, opacityFix;\n\tif ( typeof baseThemeCss !== \"string\" ) {\n\t\tbaseThemeCss = baseThemeCss.toString( \"utf-8\" );\n\t}\n\tthis.baseThemeCss = baseThemeCss;\n\toptions = options || {};\n\tif ( typeof vars !== \"object\" ) {\n\t\tthrow new Error( \"Wrong type `vars`\" );\n\t}\n\tif ( typeof options !== \"object\" ) {\n\t\tthrow new Error( \"Wrong type `options`\" );\n\t}\n\tthis.vars = vars = extend( {}, vars );\n\tif ( vars.zThemeParams ) {\n\t\tthrow new Error( \"vars.zThemeParams unsupported at the moment. Unzipped vars only.\" );\n\t}\n\toldImagesBackCompat( vars || {} );\n\tthis.serializedVars = querystring.stringify( vars );\n\tthis.images = [];\n\n\t// Opacity fix\n\t// TODO: Remove `filter` style when dropping support for IE8 and earlier.\n\tvars.opacityOverlayPerc = vars.opacityOverlay;\n\tvars.opacityShadowPerc = vars.opacityShadow;\n\tif ( options.version && semver.lt( options.version, \"1.10.0\" ) ) {\n\n\t\t// For version <1.10.0, `opacity` (W3C) and `filter` (IE) are combined\n\t\t// into the same line.\n\t\topacityFix = function( opacity ) {\n\t\t\treturn /* w3c */ ( opacity / 100 ).toString().replace( /^0\\./, \".\" ) + /* IE */ \";filter:Alpha(Opacity=\" + opacity + \")\";\n\t\t};\n\t\tvars.opacityOverlay = opacityFix( vars.opacityOverlay );\n\t\tvars.opacityShadow = opacityFix( vars.opacityShadow );\n\n\t} else if ( options.version && semver.lt( options.version, \"1.13.0\" ) ) {\n\n\t\t// For version >=1.10.0 <1.13.0, `filter` has its own separate line\n\t\t// and variable name.\n\t\topacityFix = function( opacity ) {\n\t\t\treturn ( opacity / 100 ).toString().replace( /^0\\./, \".\" );\n\t\t};\n\t\topacityFilter = function( opacity ) {\n\t\t\treturn \"Alpha(Opacity=\" + opacity + \")\";\n\t\t};\n\t\tvars.opacityFilterOverlay = opacityFilter( vars.opacityOverlay );\n\t\tvars.opacityFilterShadow = opacityFilter( vars.opacityShadow );\n\t\tvars.opacityOverlay = opacityFix( vars.opacityOverlay );\n\t\tvars.opacityShadow = opacityFix( vars.opacityShadow );\n\n\t} else {\n\n\t\t// For version >=1.13.0, `-ms-filter` has its own separate line\n\t\t// and variable name.\n\t\topacityFix = function( opacity ) {\n\t\t\treturn ( opacity / 100 ).toString().replace( /^0\\./, \".\" );\n\t\t};\n\t\topacityFilter = function( opacity ) {\n\t\t\treturn \"\\\"alpha(opacity=\" + opacity + \")\\\"\";\n\t\t};\n\t\tvars.opacityFilterOverlay = opacityFilter( vars.opacityOverlay );\n\t\tvars.opacityFilterShadow = opacityFilter( vars.opacityShadow );\n\t\tvars.opacityOverlay = opacityFix( vars.opacityOverlay );\n\t\tvars.opacityShadow = opacityFix( vars.opacityShadow );\n\t}\n\n\t// Add '#' in the beginning of the colors if needed\n\tcolorVars.forEach( function( colorVar ) {\n\t\tvars[ colorVar ] = hashColor( vars[ colorVar ] );\n\t} );\n\n\t// Set hard coded image url\n\tvars.bgImgUrlActive = this._textureUrl( vars.bgColorActive, vars.bgTextureActive, vars.bgImgOpacityActive );\n\tvars.bgImgUrlContent = this._textureUrl( vars.bgColorContent, vars.bgTextureContent, vars.bgImgOpacityContent );\n\tvars.bgImgUrlDefault = this._textureUrl( vars.bgColorDefault, vars.bgTextureDefault, vars.bgImgOpacityDefault );\n\tvars.bgImgUrlError = this._textureUrl( vars.bgColorError, vars.bgTextureError, vars.bgImgOpacityError );\n\tvars.bgImgUrlHeader = this._textureUrl( vars.bgColorHeader, vars.bgTextureHeader, vars.bgImgOpacityHeader );\n\tvars.bgImgUrlHighlight = this._textureUrl( vars.bgColorHighlight, vars.bgTextureHighlight, vars.bgImgOpacityHighlight );\n\tvars.bgImgUrlHover = this._textureUrl( vars.bgColorHover, vars.bgTextureHover, vars.bgImgOpacityHover );\n\tvars.bgImgUrlOverlay = this._textureUrl( vars.bgColorOverlay, vars.bgTextureOverlay, vars.bgImgOpacityOverlay );\n\tvars.bgImgUrlShadow = this._textureUrl( vars.bgColorShadow, vars.bgTextureShadow, vars.bgImgOpacityShadow );\n\tvars.iconsActive = this._iconUrl( vars.iconColorActive );\n\tvars.iconsContent = this._iconUrl( vars.iconColorContent );\n\tvars.iconsDefault = this._iconUrl( vars.iconColorDefault );\n\tvars.iconsError = this._iconUrl( vars.iconColorError );\n\tvars.iconsHeader = this._iconUrl( vars.iconColorHeader );\n\tvars.iconsHighlight = this._iconUrl( vars.iconColorHighlight );\n\tvars.iconsHover = this._iconUrl( vars.iconColorHover );\n\n\t// Set hard coded css image repeats\n\tvars.bgDefaultRepeat = this._cssRepeat( vars.bgTextureDefault );\n\tvars.bgHoverRepeat = this._cssRepeat( vars.bgTextureHover );\n\tvars.bgActiveRepeat = this._cssRepeat( vars.bgTextureActive );\n\tvars.bgHeaderRepeat = this._cssRepeat( vars.bgTextureHeader );\n\tvars.bgContentRepeat = this._cssRepeat( vars.bgTextureContent );\n\tvars.bgHighlightRepeat = this._cssRepeat( vars.bgTextureHighlight );\n\tvars.bgErrorRepeat = this._cssRepeat( vars.bgTextureError );\n\tvars.bgOverlayRepeat = this._cssRepeat( vars.bgTextureOverlay );\n\tvars.bgShadowRepeat = this._cssRepeat( vars.bgTextureShadow );\n\n\t// Set hard coded css Y image positioning\n\tvars.bgDefaultYPos = cssYPos( vars.bgTextureDefault, \"button\" );\n\tvars.bgHoverYPos = cssYPos( vars.bgTextureHover, \"button\" );\n\tvars.bgActiveYPos = cssYPos( vars.bgTextureActive, \"button\" );\n\tvars.bgHeaderYPos = cssYPos( vars.bgTextureHeader, \"button\" );\n\tvars.bgContentYPos = cssYPos( vars.bgTextureContent, \"panel\" );\n\tvars.bgHighlightYPos = cssYPos( vars.bgTextureHighlight, \"panel\" );\n\tvars.bgErrorYPos = cssYPos( vars.bgTextureError, \"panel\" );\n\tvars.bgOverlayYPos = cssYPos( vars.bgTextureOverlay, \"panel\" );\n\tvars.bgShadowYPos = cssYPos( vars.bgTextureShadow, \"panel\" );\n\n\t// Set hard coded css X image positioning\n\tvars.bgDefaultXPos = cssXPos( vars.bgTextureDefault, \"button\" );\n\tvars.bgHoverXPos = cssXPos( vars.bgTextureHover, \"button\" );\n\tvars.bgActiveXPos = cssXPos( vars.bgTextureActive, \"button\" );\n\tvars.bgHeaderXPos = cssXPos( vars.bgTextureHeader, \"button\" );\n\tvars.bgContentXPos = cssXPos( vars.bgTextureContent, \"panel\" );\n\tvars.bgHighlightXPos = cssXPos( vars.bgTextureHighlight, \"panel\" );\n\tvars.bgErrorXPos = cssXPos( vars.bgTextureError, \"panel\" );\n\tvars.bgOverlayXPos = cssXPos( vars.bgTextureOverlay, \"panel\" );\n\tvars.bgShadowXPos = cssXPos( vars.bgTextureShadow, \"panel\" );\n\n\t// This is the fix for when no font-family is specified\n\tif ( vars.ffDefault === \"\" || !vars.ffDefault ) {\n\t\tvars.ffDefault = \"inherit\";\n\t}\n}\n\nThemeRoller.prototype = {\n\t_cssRepeat: function( textureType ) {\n\t\tvar texture;\n\t\tif ( textureType === \"flat\" ) {\n\t\t\treturn \"\";\n\t\t}\n\t\ttexture = textures[ textureType ];\n\t\tif ( typeof texture === \"undefined\" ) {\n\t\t\tthrow new Error( \"Texture \\\"\" + textureType + \"\\\" not defined\" );\n\t\t}\n\t\treturn texture.repeat;\n\t},\n\n\t_iconUrl: function( color ) {\n\t\tvar image = new Image( {\n\t\t\ticon: { color: color }\n\t\t} );\n\t\tthis.images.push( image );\n\t\treturn this._imageUrl( image.filename() );\n\t},\n\n\t_imageUrl: function( filename ) {\n\t\tif ( this.vars.dynamicImage ) {\n\t\t\treturn \"url(\\\"\" + this.vars.dynamicImageHost + \"/themeroller/images/\" + filename + \"\\\")\";\n\t\t} else {\n\t\t\treturn \"url(\\\"images/\" + filename + \"\\\")\";\n\t\t}\n\t},\n\n\t_textureUrl: function( color, textureType, opacity ) {\n\t\tvar image, texture;\n\t\tif ( !textureType || textureType === \"flat\" ) {\n\t\t\treturn \"\";\n\t\t}\n\t\ttexture = textures[ textureType ];\n\t\tif ( typeof texture === \"undefined\" ) {\n\t\t\tthrow new Error( \"No dimensions set for texture \\\"\" + textureType + \"\\\"\" );\n\t\t}\n\t\timage = new Image( {\n\t\t\ttexture: {\n\t\t\t\tcolor: color,\n\t\t\t\theight: texture.height,\n\t\t\t\topacity: opacity,\n\t\t\t\ttexture: true,\n\t\t\t\ttype: texture.type,\n\t\t\t\twidth: texture.width\n\t\t\t}\n\t\t} );\n\t\tthis.images.push( image );\n\t\treturn this._imageUrl( image.filename() );\n\t},\n\n\tcss: function() {\n\t\tif ( !this._css ) {\n\t\t\tvar vars = this.vars;\n\t\t\tthis._css = this.baseThemeCss.replace( /([\\s]+[\\S]+| )\\/\\*\\{([^\\}\\*\\/]+)\\}\\*\\//g, function( _match, _g1, p1 ) {\n\t\t\t\treturn \" \" + vars[ p1 ];\n\t\t\t} ).replace( /[\\s]+;/g, \";\" );\n\t\t\tif ( this.serializedVars.length > 0 ) {\n\n\t\t\t\t// Theme url\n\t\t\t\tthis._css = this._css.replace( /\\/themeroller\\//, this.url() );\n\t\t\t}\n\t\t}\n\t\treturn this._css;\n\t},\n\n\tgenerateImages: function( callback ) {\n\t\tvar generated = {};\n\t\tasync.parallel( this.images.map( function( image ) {\n\t\t\treturn function( callback ) {\n\t\t\t\timage.get( function( error, filename, data ) {\n\t\t\t\t\tif ( generated[ filename ] ) {\n\t\t\t\t\t\treturn callback();\n\t\t\t\t\t}\n\t\t\t\t\tgenerated[ filename ] = true;\n\t\t\t\t\tcallback( error, {\n\t\t\t\t\t\tpath: filename,\n\t\t\t\t\t\tdata: data\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t};\n\t\t} ), function( error, results ) {\n\t\t\tvar imageFiles = {};\n\t\t\tif ( error ) {\n\t\t\t\treturn callback( error );\n\t\t\t}\n\t\t\tresults.forEach( function( file ) {\n\t\t\t\tif ( file && file.path && file.data ) {\n\t\t\t\t\timageFiles[ file.path ] = file.data;\n\t\t\t\t}\n\t\t\t} );\n\t\t\tcallback( null, imageFiles );\n\t\t} );\n\t},\n\n\tisEqual: function( theme ) {\n\t\tvar self = this;\n\t\treturn Object.keys( this.vars ).every( function( key ) {\n\t\t\treturn self.vars[ key ] === theme.vars[ key ];\n\t\t} );\n\t},\n\n\turl: function() {\n\t\tvar querystring = this.serializedVars;\n\t\treturn \"/themeroller/\" + ( querystring.length ? \"?\" + querystring : querystring );\n\t}\n};\n\nmodule.exports = ThemeRoller;\n"]}