UNPKG

@miyagi/core

Version:

miyagi is a component development tool for JavaScript template engines.

2 lines (1 loc) 9.63 kB
function e(i,n){return this instanceof e?"object"==typeof i?i:(this.attachValues(function(e){var i,n,f,o,l,u,d,h,c,b=[],g=[],m=[];if(e=function(e){return e.replace(/^\s+|\s+$/g,"")}(e.toLowerCase()),u=1,"rgb"==e.substr(0,3)||"hsl"==e.substr(0,3)){if(i=e.substr(0,3),n=3,o=!1,"a"==(e=e.substr(3)).substr(0,1).toLowerCase()&&(n=4,o=!0,e=e.substr(1)),b=(e=(e=e.replace("(","")).replace(")","")).split(","),"rgb"==i){if(b.length!=n)return{red:0,green:0,blue:0,hue:0,sat:0,lightness:0,opacity:1,valid:!1};for(f=0;f<n;f++){if(""!=b[f]&&" "!=b[f]||(b[f]="0"),b[f].indexOf("%")>-1&&(b[f]=b[f].replace("%",""),b[f]=Number(b[f]/100),f<3&&(b[f]=Math.round(255*b[f]))),Number.isNaN(b[f]))return t();parseInt(b[f])>255&&(b[f]=255),f<3&&(b[f]=parseInt(b[f])),3==f&&Number(b[f])>1&&(b[f]=1)}c={r:b[0],g:b[1],b:b[2]},1==o&&(u=Number(b[3]))}if("hsl"==i){for(;b.length<n;)b.push("0");for("hsl"==i&&parseInt(b[0])>=360&&(b[0]=0),f=1;f<n;f++){if(b[f].indexOf("%")>-1){if(b[f]=b[f].replace("%",""),b[f]=Number(b[f]),Number.isNaN(b[f]))return t();b[f]=b[f]/100}else b[f]=Number(b[f]);Number(b[f])>1&&(b[f]=1),Number(b[f])<0&&(b[f]=0)}"hsl"==i&&(c=function(e,t,r){var i,s,n,f,o;e/=60,s=r<=.5?r*(t+1):r+t-r*t;return n=255*a(i=2*r-s,s,e+2),f=255*a(i,s,e),o=255*a(i,s,e-2),{r:n,g:f,b:o}}(b[0],b[1],b[2]),d=Number(b[0]),h=Number(b[1])),1==o&&(u=Number(b[3]))}}else{for(l=!1,g=r("names"),f=0;f<g.length;f++)if(e.toLowerCase()==g[f].toLowerCase()){m=r("hexs"),l=!0,c={r:parseInt(m[f].substr(0,2),16),g:parseInt(m[f].substr(2,2),16),b:parseInt(m[f].substr(4,2),16)};break}if(0==l){for(3==(e=e.replace("#","")).length&&(e=e.substr(0,1)+e.substr(0,1)+e.substr(1,1)+e.substr(1,1)+e.substr(2,1)+e.substr(2,1)),f=0;f<e.length;f++)if(!s(e.substr(f,1)))return t();for(b[0]=parseInt(e.substr(0,2),16),b[1]=parseInt(e.substr(2,2),16),b[2]=parseInt(e.substr(4,2),16),f=0;f<3;f++)if(Number.isNaN(b[f]))return t();c={r:b[0],g:b[1],b:b[2]}}}return function(e,t,r,a){var i,s,n,f;if(!e)return{red:0,green:0,blue:0,hue:0,sat:0,lightness:0,opacity:1,valid:!1};null===t&&(t=1);return i=function(e,t,r){var a,i,s,n,f,o,l,u=[];for(u[0]=e/255,u[1]=t/255,u[2]=r/255,a=u[0],i=u[0],o=0,s=0;s<u.length-1;s++)u[s+1]<=a&&(a=u[s+1]),u[s+1]>=i&&(i=u[s+1],o=s+1);0==o&&(l=(u[1]-u[2])/(i-a));1==o&&(l=2+(u[2]-u[0])/(i-a));2==o&&(l=4+(u[0]-u[1])/(i-a));Number.isNaN(l)&&(l=0);(l*=60)<0&&(l+=360);n=(a+i)/2,f=a==i?0:n<.5?(i-a)/(i+a):(i-a)/(2-i-a);return{h:l,s:f,l:n}}(e.r,e.g,e.b),n=r||i.h,f=a||i.s,s={red:e.r,green:e.g,blue:e.b,hue:n,sat:f,lightness:i.l,opacity:t,valid:!0},s=function(e){return e.red=Number(e.red.toFixed(0)),e.green=Number(e.green.toFixed(0)),e.blue=Number(e.blue.toFixed(0)),e.hue=Number(e.hue.toFixed(0)),e.sat=Number(e.sat.toFixed(2)),e.lightness=Number(e.lightness.toFixed(2)),e.opacity=Number(e.opacity.toFixed(2)),e}(s),s}(c,u,d,h)}(i)),void(n&&(n.style.backgroundColor=this.toRgbString()))):new e(i,n)}function t(){return{red:0,green:0,blue:0,hue:0,sat:0,lightness:0,opacity:1,valid:!1}}function r(e){return"names"==e?["AliceBlue","AntiqueWhite","Aqua","Aquamarine","Azure","Beige","Bisque","Black","BlanchedAlmond","Blue","BlueViolet","Brown","BurlyWood","CadetBlue","Chartreuse","Chocolate","Coral","CornflowerBlue","Cornsilk","Crimson","Cyan","DarkBlue","DarkCyan","DarkGoldenRod","DarkGray","DarkGrey","DarkGreen","DarkKhaki","DarkMagenta","DarkOliveGreen","DarkOrange","DarkOrchid","DarkRed","DarkSalmon","DarkSeaGreen","DarkSlateBlue","DarkSlateGray","DarkSlateGrey","DarkTurquoise","DarkViolet","DeepPink","DeepSkyBlue","DimGray","DimGrey","DodgerBlue","FireBrick","FloralWhite","ForestGreen","Fuchsia","Gainsboro","GhostWhite","Gold","GoldenRod","Gray","Grey","Green","GreenYellow","HoneyDew","HotPink","IndianRed","Indigo","Ivory","Khaki","Lavender","LavenderBlush","LawnGreen","LemonChiffon","LightBlue","LightCoral","LightCyan","LightGoldenRodYellow","LightGray","LightGrey","LightGreen","LightPink","LightSalmon","LightSeaGreen","LightSkyBlue","LightSlateGray","LightSlateGrey","LightSteelBlue","LightYellow","Lime","LimeGreen","Linen","Magenta","Maroon","MediumAquaMarine","MediumBlue","MediumOrchid","MediumPurple","MediumSeaGreen","MediumSlateBlue","MediumSpringGreen","MediumTurquoise","MediumVioletRed","MidnightBlue","MintCream","MistyRose","Moccasin","NavajoWhite","Navy","OldLace","Olive","OliveDrab","Orange","OrangeRed","Orchid","PaleGoldenRod","PaleGreen","PaleTurquoise","PaleVioletRed","PapayaWhip","PeachPuff","Peru","Pink","Plum","PowderBlue","Purple","RebeccaPurple","Red","RosyBrown","RoyalBlue","SaddleBrown","Salmon","SandyBrown","SeaGreen","SeaShell","Sienna","Silver","SkyBlue","SlateBlue","SlateGray","SlateGrey","Snow","SpringGreen","SteelBlue","Tan","Teal","Thistle","Tomato","Turquoise","Violet","Wheat","White","WhiteSmoke","Yellow","YellowGreen"]:"hexs"==e?["f0f8ff","faebd7","00ffff","7fffd4","f0ffff","f5f5dc","ffe4c4","000000","ffebcd","0000ff","8a2be2","a52a2a","deb887","5f9ea0","7fff00","d2691e","ff7f50","6495ed","fff8dc","dc143c","00ffff","00008b","008b8b","b8860b","a9a9a9","a9a9a9","006400","bdb76b","8b008b","556b2f","ff8c00","9932cc","8b0000","e9967a","8fbc8f","483d8b","2f4f4f","2f4f4f","00ced1","9400d3","ff1493","00bfff","696969","696969","1e90ff","b22222","fffaf0","228b22","ff00ff","dcdcdc","f8f8ff","ffd700","daa520","808080","808080","008000","adff2f","f0fff0","ff69b4","cd5c5c","4b0082","fffff0","f0e68c","e6e6fa","fff0f5","7cfc00","fffacd","add8e6","f08080","e0ffff","fafad2","d3d3d3","d3d3d3","90ee90","ffb6c1","ffa07a","20b2aa","87cefa","778899","778899","b0c4de","ffffe0","00ff00","32cd32","faf0e6","ff00ff","800000","66cdaa","0000cd","ba55d3","9370db","3cb371","7b68ee","00fa9a","48d1cc","c71585","191970","f5fffa","ffe4e1","ffe4b5","ffdead","000080","fdf5e6","808000","6b8e23","ffa500","ff4500","da70d6","eee8aa","98fb98","afeeee","db7093","ffefd5","ffdab9","cd853f","ffc0cb","dda0dd","b0e0e6","800080","663399","ff0000","bc8f8f","4169e1","8b4513","fa8072","f4a460","2e8b57","fff5ee","a0522d","c0c0c0","87ceeb","6a5acd","708090","708090","fffafa","00ff7f","4682b4","d2b48c","008080","d8bfd8","ff6347","40e0d0","ee82ee","f5deb3","ffffff","f5f5f5","ffff00","9acd32"]:void 0}function a(e,t,r){return r<0&&(r+=6),r>=6&&(r-=6),r<1?(t-e)*r+e:r<3?t:r<4?(t-e)*(4-r)+e:e}function i(e){for(var t=e.toString(16);t.length<2;)t="0"+t;return t}function s(e){return"0123456789ABCDEFabcdef".indexOf(e)>-1}e.prototype={toRgbString:function(){return"rgb("+this.red+", "+this.green+", "+this.blue+")"},toRgbaString:function(){return"rgba("+this.red+", "+this.green+", "+this.blue+", "+this.opacity+")"},toHslString:function(){return"hsl("+this.hue+", "+Math.round(100*this.sat)+"%, "+Math.round(100*this.lightness)+"%)"},toHslStringDecimal:function(){return"hsl("+this.hue+", "+this.sat+", "+this.lightness+")"},toHslaString:function(){return"hsla("+this.hue+", "+Math.round(100*this.sat)+"%, "+Math.round(100*this.lightness)+"%, "+this.opacity+")"},toName:function(){for(var e,t,a,i=r("hexs"),s=0;s<i.length;s++)if(e=parseInt(i[s].substr(0,2),16),t=parseInt(i[s].substr(2,2),16),a=parseInt(i[s].substr(4,2),16),this.red==e&&this.green==t&&this.blue==a)return r("names")[s];return"n/a"},toHexString:function(){return"#"+i(this.red)+i(this.green)+i(this.blue)},toRgb:function(){return{r:this.red,g:this.green,b:this.blue,a:this.opacity}},toHsl:function(){return{h:this.hue,s:this.sat,l:this.lightness,a:this.opacity}},attachValues:function(e){this.red=e.red,this.green=e.green,this.blue=e.blue,this.hue=e.hue,this.sat=e.sat,this.lightness=e.lightness,this.opacity=e.opacity,this.valid=e.valid}};class n{constructor(e){this.element=e,this.items=Array.from(this.element.querySelectorAll(".CustomProp")),this.colors=Array.from(this.element.querySelectorAll(".Colors-item")),this.fonts=Array.from(this.element.querySelectorAll(".Fonts-item")),this.spacings=Array.from(this.element.querySelectorAll(".Spacings-item")),this.buttons=Array.from(this.element.querySelectorAll(".CustomProp-button")),this.details=Array.from(this.element.querySelectorAll(".CustomProp-details")),this.renderValues(),this.element.dataset.mediaQueries.split(",").forEach(e=>{window.matchMedia(e).addEventListener("change",this.renderValues.bind(this))}),this.element.addEventListener("click",({target:e})=>{const t=e.closest(".CustomProp"),r=e.closest(".CustomProp-button"),a=e.closest(".CustomProp-details");if(r){this.items.forEach(e=>{e!==t&&e.setAttribute("aria-selected",!1)}),this.buttons.forEach(e=>{e!==r&&e.setAttribute("aria-expanded",!1)}),this.details.forEach(e=>{e!==a&&(e.hidden=!0)});const e="true"===r.getAttribute("aria-expanded");document.getElementById(r.getAttribute("aria-controls")).hidden=e,t.setAttribute("aria-selected",!e),r.setAttribute("aria-expanded",!e)}else t||(this.items.forEach(e=>{e.setAttribute("aria-selected",!1)}),this.buttons.forEach(e=>{e.setAttribute("aria-expanded",!1)}),this.details.forEach(e=>{e.hidden=!0}))})}renderValues(){this.renderColorValues(),this.renderFontValues(),this.renderSpacingValues()}renderColorValues(){this.colors.forEach(t=>{const r=getComputedStyle(t).getPropertyValue("--color").trim();t.querySelector('[data-value="RGB"]').textContent=e(r).toRgbString(),t.querySelector('[data-value="Hex"]').textContent=e(r).toHexString(),t.querySelector('[data-value="HSL"]').textContent=e(r).toHslString()})}renderFontValues(){this.fonts.forEach(e=>{Array.from(e.querySelectorAll("[data-value]")).forEach(e=>{e.textContent=getComputedStyle(e).getPropertyValue(e.dataset.value).trim()})})}renderSpacingValues(){this.spacings.forEach(e=>{Array.from(e.querySelectorAll("[data-value]")).forEach(e=>{e.textContent=getComputedStyle(e).getPropertyValue(e.dataset.value).trim()})})}}export{n as default};